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: {
|
||||
parser: tseslint.parser,
|
||||
parserOptions: {
|
||||
project: [
|
||||
// TODO: @lego - check if needed
|
||||
'src/tsconfig.strict.json',
|
||||
],
|
||||
project: 'src/vs/platform/prompts/tsconfig.strict.json',
|
||||
}
|
||||
},
|
||||
plugins: {
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
|
||||
import { ITextModel } from '../../model.js';
|
||||
import { VSBuffer } from '../../../../base/common/buffer.js';
|
||||
import { assert, assertNever } from '../../../../base/common/assert.js';
|
||||
import { CancellationToken } from '../../../../base/common/cancellation.js';
|
||||
import { assertNever } from '../../../../base/common/assert.js';
|
||||
import { ObservableDisposable } from '../../../../base/common/observableDisposable.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> {
|
||||
/**
|
||||
* TODO: @legomushroom
|
||||
* Flag that indicates whether the stream has ended.
|
||||
*/
|
||||
private ended: boolean = false;
|
||||
|
||||
@@ -40,24 +40,26 @@ export class Stream<T extends object> extends ObservableDisposable implements Re
|
||||
|
||||
if (cancellationToken?.isCancellationRequested) {
|
||||
this.end();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// send couple of tokens immediately
|
||||
this.send(false);
|
||||
// send a first batch of tokens immediately
|
||||
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(
|
||||
play: boolean = true,
|
||||
stopAfterFirstSend: boolean = false,
|
||||
): void {
|
||||
// TODO: @legomushroom - throw instead?
|
||||
if (this.ended) {
|
||||
return;
|
||||
}
|
||||
assert(
|
||||
this.ended === false,
|
||||
'Cannot send on already ended stream.',
|
||||
);
|
||||
|
||||
this.sendTokens()
|
||||
.then(() => {
|
||||
@@ -73,17 +75,16 @@ export class Stream<T extends object> extends ObservableDisposable implements Re
|
||||
return;
|
||||
}
|
||||
|
||||
if (play === false) {
|
||||
if (stopAfterFirstSend === true) {
|
||||
this.stopStream();
|
||||
return;
|
||||
}
|
||||
|
||||
this.interval = setImmediate(this.send.bind(this));
|
||||
})
|
||||
.catch(() => {
|
||||
this.stream.destroy();
|
||||
this.stream.end();
|
||||
this.stopStream();
|
||||
.catch((error) => {
|
||||
this.stream.error(error);
|
||||
this.dispose();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -119,18 +120,16 @@ export class Stream<T extends object> extends ObservableDisposable implements Re
|
||||
|
||||
await this.stream.write(token.value);
|
||||
tokensCount--;
|
||||
} catch {
|
||||
this.stopStream();
|
||||
this.stream.destroy();
|
||||
// TODO: @legomushroom - needed?
|
||||
this.stream.end();
|
||||
} catch (error) {
|
||||
this.stream.error(error);
|
||||
this.dispose();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: @legomushroom
|
||||
* Ends the stream and stops sending tokens.
|
||||
*/
|
||||
private end(): this {
|
||||
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>(
|
||||
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(
|
||||
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> => {
|
||||
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> => {
|
||||
return (function* (): Generator<VSBuffer, undefined> {
|
||||
|
||||
@@ -7,13 +7,13 @@ import * as assert from 'assert';
|
||||
import { URI } from '../../../../../base/common/uri.js';
|
||||
import { createTextModel } from '../../testTextModel.js';
|
||||
import { randomTokens } from '../testUtils/randomTokens.js';
|
||||
import { randomInt } from '../../../../../base/common/numbers.js';
|
||||
import { Stream } from '../../../../common/codecs/utils/stream.js';
|
||||
import { BaseToken } from '../../../../common/codecs/baseToken.js';
|
||||
import { assertDefined } from '../../../../../base/common/types.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 { randomInt } from '../../../../../base/common/numbers.js';
|
||||
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../../base/test/common/utils.js';
|
||||
|
||||
suite('Stream', () => {
|
||||
const disposables = ensureNoDisposablesAreLeakedInTestSuite();
|
||||
@@ -122,7 +122,7 @@ suite('Stream', () => {
|
||||
});
|
||||
|
||||
/**
|
||||
* TODO: @legomushroom
|
||||
* Asserts that two tokens lists are equal.
|
||||
*/
|
||||
const assertTokensEqual = (
|
||||
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[]> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"extends": "../../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"strict": true,
|
||||
"allowUnusedLabels": false,
|
||||
"allowUnreachableCode": false,
|
||||
"alwaysStrict": true,
|
||||
@@ -14,6 +15,5 @@
|
||||
"noUncheckedIndexedAccess": true,
|
||||
"noUnusedLocals": true,
|
||||
"noUnusedParameters": true,
|
||||
"strict": true,
|
||||
}
|
||||
}
|
||||
@@ -39,8 +39,6 @@ export class TextModelContentsProvider extends PromptContentsProviderBase<IModel
|
||||
private readonly model: ITextModel,
|
||||
options: Partial<IPromptContentsProviderOptions>,
|
||||
@IInstantiationService private readonly initService: IInstantiationService,
|
||||
// TODO: @legomushroom - use the log service?
|
||||
// @ILogService private readonly logService: ILogService,
|
||||
) {
|
||||
super(options);
|
||||
|
||||
@@ -63,7 +61,6 @@ export class TextModelContentsProvider extends PromptContentsProviderBase<IModel
|
||||
_event: IModelContentChangedEvent | 'full',
|
||||
cancellationToken?: CancellationToken,
|
||||
): Promise<ReadableStream<VSBuffer>> {
|
||||
// TODO: @legomushroom - do we need `IModelContentChangedEvent` here?
|
||||
return Stream.fromTextModel(this.model, cancellationToken);
|
||||
}
|
||||
|
||||
|
||||
@@ -982,8 +982,8 @@ class FirstParseResult extends DeferredPromise<void> {
|
||||
this._gotResult = true;
|
||||
super.complete(void 0)
|
||||
.catch(() => {
|
||||
// noop
|
||||
// TODO: @legomushroom
|
||||
// the complete method is never fails
|
||||
// so we can ignore the error here
|
||||
});
|
||||
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user