mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-20 02:08:47 +00:00
move strict tsconfig closer to the prompt files source code and add missing documentation comments
This commit is contained in:
@@ -1445,10 +1445,7 @@ export default tseslint.config(
|
|||||||
languageOptions: {
|
languageOptions: {
|
||||||
parser: tseslint.parser,
|
parser: tseslint.parser,
|
||||||
parserOptions: {
|
parserOptions: {
|
||||||
project: [
|
project: 'src/vs/platform/prompts/tsconfig.strict.json',
|
||||||
// TODO: @lego - check if needed
|
|
||||||
'src/tsconfig.strict.json',
|
|
||||||
],
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
plugins: {
|
plugins: {
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
|
|
||||||
import { ITextModel } from '../../model.js';
|
import { ITextModel } from '../../model.js';
|
||||||
import { VSBuffer } from '../../../../base/common/buffer.js';
|
import { VSBuffer } from '../../../../base/common/buffer.js';
|
||||||
|
import { assert, assertNever } from '../../../../base/common/assert.js';
|
||||||
import { CancellationToken } from '../../../../base/common/cancellation.js';
|
import { CancellationToken } from '../../../../base/common/cancellation.js';
|
||||||
import { assertNever } from '../../../../base/common/assert.js';
|
|
||||||
import { ObservableDisposable } from '../../../../base/common/observableDisposable.js';
|
import { ObservableDisposable } from '../../../../base/common/observableDisposable.js';
|
||||||
import { newWriteableStream, WriteableStream, ReadableStream } from '../../../../base/common/stream.js';
|
import { newWriteableStream, WriteableStream, ReadableStream } from '../../../../base/common/stream.js';
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ import { newWriteableStream, WriteableStream, ReadableStream } from '../../../..
|
|||||||
*/
|
*/
|
||||||
export class Stream<T extends object> extends ObservableDisposable implements ReadableStream<T> {
|
export class Stream<T extends object> extends ObservableDisposable implements ReadableStream<T> {
|
||||||
/**
|
/**
|
||||||
* TODO: @legomushroom
|
* Flag that indicates whether the stream has ended.
|
||||||
*/
|
*/
|
||||||
private ended: boolean = false;
|
private ended: boolean = false;
|
||||||
|
|
||||||
@@ -40,24 +40,26 @@ export class Stream<T extends object> extends ObservableDisposable implements Re
|
|||||||
|
|
||||||
if (cancellationToken?.isCancellationRequested) {
|
if (cancellationToken?.isCancellationRequested) {
|
||||||
this.end();
|
this.end();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// send couple of tokens immediately
|
// send a first batch of tokens immediately
|
||||||
this.send(false);
|
this.send(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: @legomushroom
|
* Starts process of sending tokens to the stream.
|
||||||
|
*
|
||||||
|
* @param stopAfterFirstSend whether to continue sending data to the stream or
|
||||||
|
* stop sending after the first batch of data is sent
|
||||||
*/
|
*/
|
||||||
public send(
|
public send(
|
||||||
play: boolean = true,
|
stopAfterFirstSend: boolean = false,
|
||||||
): void {
|
): void {
|
||||||
// TODO: @legomushroom - throw instead?
|
assert(
|
||||||
if (this.ended) {
|
this.ended === false,
|
||||||
return;
|
'Cannot send on already ended stream.',
|
||||||
}
|
);
|
||||||
|
|
||||||
this.sendTokens()
|
this.sendTokens()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
@@ -73,17 +75,16 @@ export class Stream<T extends object> extends ObservableDisposable implements Re
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (play === false) {
|
if (stopAfterFirstSend === true) {
|
||||||
this.stopStream();
|
this.stopStream();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.interval = setImmediate(this.send.bind(this));
|
this.interval = setImmediate(this.send.bind(this));
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch((error) => {
|
||||||
this.stream.destroy();
|
this.stream.error(error);
|
||||||
this.stream.end();
|
this.dispose();
|
||||||
this.stopStream();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,18 +120,16 @@ export class Stream<T extends object> extends ObservableDisposable implements Re
|
|||||||
|
|
||||||
await this.stream.write(token.value);
|
await this.stream.write(token.value);
|
||||||
tokensCount--;
|
tokensCount--;
|
||||||
} catch {
|
} catch (error) {
|
||||||
this.stopStream();
|
this.stream.error(error);
|
||||||
this.stream.destroy();
|
this.dispose();
|
||||||
// TODO: @legomushroom - needed?
|
|
||||||
this.stream.end();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: @legomushroom
|
* Ends the stream and stops sending tokens.
|
||||||
*/
|
*/
|
||||||
private end(): this {
|
private end(): this {
|
||||||
this.ended = true;
|
this.ended = true;
|
||||||
@@ -203,7 +202,7 @@ export class Stream<T extends object> extends ObservableDisposable implements Re
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: @legomushroom
|
* Create new instance of the stream from a provided array.
|
||||||
*/
|
*/
|
||||||
public static fromArray<T extends object>(
|
public static fromArray<T extends object>(
|
||||||
array: T[],
|
array: T[],
|
||||||
@@ -213,7 +212,7 @@ export class Stream<T extends object> extends ObservableDisposable implements Re
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: @legomushroom
|
* Create new instance of the stream from a provided text model.
|
||||||
*/
|
*/
|
||||||
public static fromTextModel(
|
public static fromTextModel(
|
||||||
model: ITextModel,
|
model: ITextModel,
|
||||||
@@ -224,7 +223,7 @@ export class Stream<T extends object> extends ObservableDisposable implements Re
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: @legomushroom
|
* Create a generator out of a provided array.
|
||||||
*/
|
*/
|
||||||
export const arrayToGenerator = <T extends NonNullable<unknown>>(array: T[]): Generator<T, undefined> => {
|
export const arrayToGenerator = <T extends NonNullable<unknown>>(array: T[]): Generator<T, undefined> => {
|
||||||
return (function* (): Generator<T, undefined> {
|
return (function* (): Generator<T, undefined> {
|
||||||
@@ -235,7 +234,7 @@ export const arrayToGenerator = <T extends NonNullable<unknown>>(array: T[]): Ge
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: @legomushroom
|
* Create a generator out of a provided text model.
|
||||||
*/
|
*/
|
||||||
export const modelToGenerator = (model: ITextModel): Generator<VSBuffer, undefined> => {
|
export const modelToGenerator = (model: ITextModel): Generator<VSBuffer, undefined> => {
|
||||||
return (function* (): Generator<VSBuffer, undefined> {
|
return (function* (): Generator<VSBuffer, undefined> {
|
||||||
|
|||||||
@@ -7,13 +7,13 @@ import * as assert from 'assert';
|
|||||||
import { URI } from '../../../../../base/common/uri.js';
|
import { URI } from '../../../../../base/common/uri.js';
|
||||||
import { createTextModel } from '../../testTextModel.js';
|
import { createTextModel } from '../../testTextModel.js';
|
||||||
import { randomTokens } from '../testUtils/randomTokens.js';
|
import { randomTokens } from '../testUtils/randomTokens.js';
|
||||||
|
import { randomInt } from '../../../../../base/common/numbers.js';
|
||||||
import { Stream } from '../../../../common/codecs/utils/stream.js';
|
import { Stream } from '../../../../common/codecs/utils/stream.js';
|
||||||
import { BaseToken } from '../../../../common/codecs/baseToken.js';
|
import { BaseToken } from '../../../../common/codecs/baseToken.js';
|
||||||
import { assertDefined } from '../../../../../base/common/types.js';
|
import { assertDefined } from '../../../../../base/common/types.js';
|
||||||
import { randomBoolean } from '../../../../../base/test/common/testUtils.js';
|
import { randomBoolean } from '../../../../../base/test/common/testUtils.js';
|
||||||
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';
|
|
||||||
import { CancellationTokenSource } from '../../../../../base/common/cancellation.js';
|
import { CancellationTokenSource } from '../../../../../base/common/cancellation.js';
|
||||||
import { randomInt } from '../../../../../base/common/numbers.js';
|
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';
|
||||||
|
|
||||||
suite('Stream', () => {
|
suite('Stream', () => {
|
||||||
const disposables = ensureNoDisposablesAreLeakedInTestSuite();
|
const disposables = ensureNoDisposablesAreLeakedInTestSuite();
|
||||||
@@ -122,7 +122,7 @@ suite('Stream', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: @legomushroom
|
* Asserts that two tokens lists are equal.
|
||||||
*/
|
*/
|
||||||
const assertTokensEqual = (
|
const assertTokensEqual = (
|
||||||
receivedTokens: BaseToken[],
|
receivedTokens: BaseToken[],
|
||||||
@@ -144,7 +144,7 @@ const assertTokensEqual = (
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: @legomushroom
|
* Consume a provided stream and return a list of received data objects.
|
||||||
*/
|
*/
|
||||||
const consume = <T extends object>(stream: Stream<T>): Promise<T[]> => {
|
const consume = <T extends object>(stream: Stream<T>): Promise<T[]> => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"extends": "./tsconfig.json",
|
"extends": "../../../tsconfig.json",
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
|
"strict": true,
|
||||||
"allowUnusedLabels": false,
|
"allowUnusedLabels": false,
|
||||||
"allowUnreachableCode": false,
|
"allowUnreachableCode": false,
|
||||||
"alwaysStrict": true,
|
"alwaysStrict": true,
|
||||||
@@ -14,6 +15,5 @@
|
|||||||
"noUncheckedIndexedAccess": true,
|
"noUncheckedIndexedAccess": true,
|
||||||
"noUnusedLocals": true,
|
"noUnusedLocals": true,
|
||||||
"noUnusedParameters": true,
|
"noUnusedParameters": true,
|
||||||
"strict": true,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -39,8 +39,6 @@ export class TextModelContentsProvider extends PromptContentsProviderBase<IModel
|
|||||||
private readonly model: ITextModel,
|
private readonly model: ITextModel,
|
||||||
options: Partial<IPromptContentsProviderOptions>,
|
options: Partial<IPromptContentsProviderOptions>,
|
||||||
@IInstantiationService private readonly initService: IInstantiationService,
|
@IInstantiationService private readonly initService: IInstantiationService,
|
||||||
// TODO: @legomushroom - use the log service?
|
|
||||||
// @ILogService private readonly logService: ILogService,
|
|
||||||
) {
|
) {
|
||||||
super(options);
|
super(options);
|
||||||
|
|
||||||
@@ -63,7 +61,6 @@ export class TextModelContentsProvider extends PromptContentsProviderBase<IModel
|
|||||||
_event: IModelContentChangedEvent | 'full',
|
_event: IModelContentChangedEvent | 'full',
|
||||||
cancellationToken?: CancellationToken,
|
cancellationToken?: CancellationToken,
|
||||||
): Promise<ReadableStream<VSBuffer>> {
|
): Promise<ReadableStream<VSBuffer>> {
|
||||||
// TODO: @legomushroom - do we need `IModelContentChangedEvent` here?
|
|
||||||
return Stream.fromTextModel(this.model, cancellationToken);
|
return Stream.fromTextModel(this.model, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -982,8 +982,8 @@ class FirstParseResult extends DeferredPromise<void> {
|
|||||||
this._gotResult = true;
|
this._gotResult = true;
|
||||||
super.complete(void 0)
|
super.complete(void 0)
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
// noop
|
// the complete method is never fails
|
||||||
// TODO: @legomushroom
|
// so we can ignore the error here
|
||||||
});
|
});
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user