typebulb 0.19.3 → 0.19.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/claude/client.js +245 -250
- package/dist/agents/pi/client.js +251 -256
- package/dist/ai/aiProvider.d.ts +3 -6
- package/dist/ai/aiProvider.d.ts.map +1 -1
- package/dist/ai/aiProvider.js +5 -9
- package/dist/ai/aiProvider.js.map +1 -1
- package/dist/ai/aiProviders.d.ts +0 -1
- package/dist/ai/aiProviders.d.ts.map +1 -1
- package/dist/ai/aiProviders.js +2 -2
- package/dist/ai/aiProviders.js.map +1 -1
- package/dist/ai/index.d.ts +1 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +1 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/protocol.d.ts +43 -2
- package/dist/ai/protocol.d.ts.map +1 -1
- package/dist/ai/protocol.js +2 -2
- package/dist/ai/protocol.js.map +1 -1
- package/dist/ai/providers/anthropic.d.ts +1 -2
- package/dist/ai/providers/anthropic.d.ts.map +1 -1
- package/dist/ai/providers/anthropic.js +2 -12
- package/dist/ai/providers/anthropic.js.map +1 -1
- package/dist/ai/providers/chatCompletions.d.ts +38 -0
- package/dist/ai/providers/chatCompletions.d.ts.map +1 -0
- package/dist/ai/providers/chatCompletions.js +34 -0
- package/dist/ai/providers/chatCompletions.js.map +1 -0
- package/dist/ai/providers/gemini.d.ts.map +1 -1
- package/dist/ai/providers/gemini.js +4 -17
- package/dist/ai/providers/gemini.js.map +1 -1
- package/dist/ai/providers/ollama.d.ts +5 -31
- package/dist/ai/providers/ollama.d.ts.map +1 -1
- package/dist/ai/providers/ollama.js +2 -35
- package/dist/ai/providers/ollama.js.map +1 -1
- package/dist/ai/providers/openAI.d.ts +3 -53
- package/dist/ai/providers/openAI.d.ts.map +1 -1
- package/dist/ai/providers/openAI.js +2 -22
- package/dist/ai/providers/openAI.js.map +1 -1
- package/dist/ai/providers/openRouter.d.ts +6 -39
- package/dist/ai/providers/openRouter.d.ts.map +1 -1
- package/dist/ai/providers/openRouter.js +5 -37
- package/dist/ai/providers/openRouter.js.map +1 -1
- package/dist/ai/sseParser.d.ts +3 -2
- package/dist/ai/sseParser.d.ts.map +1 -1
- package/dist/ai/sseParser.js +20 -47
- package/dist/ai/sseParser.js.map +1 -1
- package/dist/dts/definitelyTypedProvider.d.ts +8 -9
- package/dist/dts/definitelyTypedProvider.d.ts.map +1 -1
- package/dist/dts/definitelyTypedProvider.js +9 -15
- package/dist/dts/definitelyTypedProvider.js.map +1 -1
- package/dist/dts/dtsConfig.d.ts +4 -0
- package/dist/dts/dtsConfig.d.ts.map +1 -1
- package/dist/dts/dtsConfig.js +15 -10
- package/dist/dts/dtsConfig.js.map +1 -1
- package/dist/dts/dtsResolver.d.ts +2 -7
- package/dist/dts/dtsResolver.d.ts.map +1 -1
- package/dist/dts/dtsResolver.js +18 -28
- package/dist/dts/dtsResolver.js.map +1 -1
- package/dist/dts/fetchDts.d.ts.map +1 -1
- package/dist/dts/fetchDts.js +4 -4
- package/dist/dts/fetchDts.js.map +1 -1
- package/dist/dts/index.d.ts +2 -10
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/index.js +2 -10
- package/dist/dts/index.js.map +1 -1
- package/dist/dts/libManifest.d.ts +0 -5
- package/dist/dts/libManifest.d.ts.map +1 -1
- package/dist/dts/libManifest.js +0 -5
- package/dist/dts/libManifest.js.map +1 -1
- package/dist/dts/tarballFetcher.d.ts +0 -1
- package/dist/dts/tarballFetcher.d.ts.map +1 -1
- package/dist/dts/tarballFetcher.js +0 -1
- package/dist/dts/tarballFetcher.js.map +1 -1
- package/dist/dts/typeProvider.d.ts +2 -14
- package/dist/dts/typeProvider.d.ts.map +1 -1
- package/dist/dts/typeProvider.js +1 -29
- package/dist/dts/typeProvider.js.map +1 -1
- package/dist/dts/typeRefScanner.d.ts +0 -1
- package/dist/dts/typeRefScanner.d.ts.map +1 -1
- package/dist/dts/typeRefScanner.js +12 -17
- package/dist/dts/typeRefScanner.js.map +1 -1
- package/dist/dts/typescriptProvider.d.ts +5 -3
- package/dist/dts/typescriptProvider.d.ts.map +1 -1
- package/dist/dts/typescriptProvider.js +30 -22
- package/dist/dts/typescriptProvider.js.map +1 -1
- package/dist/dts/virtualFs.d.ts +1 -4
- package/dist/dts/virtualFs.d.ts.map +1 -1
- package/dist/dts/virtualFs.js +1 -19
- package/dist/dts/virtualFs.js.map +1 -1
- package/dist/index.js +226 -229
- package/dist/lint/index.d.ts +1 -3
- package/dist/lint/index.d.ts.map +1 -1
- package/dist/lint/index.js +26 -33
- package/dist/lint/index.js.map +1 -1
- package/dist/render.js +137 -142
- package/dist/resolver/cdnClient.d.ts +2 -6
- package/dist/resolver/cdnClient.d.ts.map +1 -1
- package/dist/resolver/cdnClient.js +12 -20
- package/dist/resolver/cdnClient.js.map +1 -1
- package/dist/resolver/index.d.ts +1 -1
- package/dist/resolver/index.d.ts.map +1 -1
- package/dist/resolver/index.js +2 -2
- package/dist/resolver/index.js.map +1 -1
- package/dist/resolver/packageRef.d.ts +0 -2
- package/dist/resolver/packageRef.d.ts.map +1 -1
- package/dist/resolver/packageRef.js +0 -8
- package/dist/resolver/packageRef.js.map +1 -1
- package/dist/resolver/packageService.d.ts +5 -3
- package/dist/resolver/packageService.d.ts.map +1 -1
- package/dist/resolver/packageService.js +13 -22
- package/dist/resolver/packageService.js.map +1 -1
- package/dist/resolver/semver.d.ts +0 -3
- package/dist/resolver/semver.d.ts.map +1 -1
- package/dist/resolver/semver.js +1 -16
- package/dist/resolver/semver.js.map +1 -1
- package/dist/resolver/versionResolver.d.ts +0 -1
- package/dist/resolver/versionResolver.d.ts.map +1 -1
- package/dist/resolver/versionResolver.js +17 -21
- package/dist/resolver/versionResolver.js.map +1 -1
- package/dist/servers.js +59 -59
- package/package.json +1 -1
- package/dist/ai/chat.d.ts +0 -32
- package/dist/ai/chat.d.ts.map +0 -1
- package/dist/ai/chat.js +0 -5
- package/dist/ai/chat.js.map +0 -1
- package/dist/ai/stream.d.ts +0 -20
- package/dist/ai/stream.d.ts.map +0 -1
- package/dist/ai/stream.js +0 -6
- package/dist/ai/stream.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export class OllamaProvider extends
|
|
1
|
+
import { ChatCompletionsProvider } from './chatCompletions.js';
|
|
2
|
+
export class OllamaProvider extends ChatCompletionsProvider {
|
|
3
3
|
constructor() {
|
|
4
4
|
super(...arguments);
|
|
5
5
|
this.providerName = 'Ollama';
|
|
@@ -31,38 +31,5 @@ export class OllamaProvider extends AIProvider {
|
|
|
31
31
|
buildPayload(messages, model, _opts, stream) {
|
|
32
32
|
return { model, messages, stream };
|
|
33
33
|
}
|
|
34
|
-
parseError(errorText, status) {
|
|
35
|
-
return this.parseJsonError(errorText, status, true);
|
|
36
|
-
}
|
|
37
|
-
// ── Response parsing ─────────────────────────────────────────────
|
|
38
|
-
parseNonStreamingResponse(json) {
|
|
39
|
-
if (!this.hasChoices(json))
|
|
40
|
-
return { text: '' };
|
|
41
|
-
const choice = json.choices[0];
|
|
42
|
-
const msg = choice?.message;
|
|
43
|
-
const text = msg?.content ?? '';
|
|
44
|
-
const reasoning = msg?.reasoning ?? msg?.reasoning_content;
|
|
45
|
-
return { text, reasoning };
|
|
46
|
-
}
|
|
47
|
-
parseProviderStreamChunk(json) {
|
|
48
|
-
if (!this.hasChoices(json))
|
|
49
|
-
return null;
|
|
50
|
-
const choice = json.choices[0];
|
|
51
|
-
if (!choice)
|
|
52
|
-
return null;
|
|
53
|
-
const delta = choice.delta || choice.message;
|
|
54
|
-
if (!delta)
|
|
55
|
-
return null;
|
|
56
|
-
const text = delta.content || undefined;
|
|
57
|
-
const reasoning = delta.reasoning || delta.reasoning_content || undefined;
|
|
58
|
-
if (!text && !reasoning)
|
|
59
|
-
return null;
|
|
60
|
-
return { text, reasoning };
|
|
61
|
-
}
|
|
62
|
-
// ── Private helpers ──────────────────────────────────────────────
|
|
63
|
-
hasChoices(json) {
|
|
64
|
-
return typeof json === 'object' && json !== null
|
|
65
|
-
&& 'choices' in json && Array.isArray(json.choices);
|
|
66
|
-
}
|
|
67
34
|
}
|
|
68
35
|
//# sourceMappingURL=ollama.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../ai/src/providers/ollama.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../ai/src/providers/ollama.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAS9D,MAAM,OAAO,cAAe,SAAQ,uBAAuB;IAA3D;;QACqB,iBAAY,GAAG,QAAQ,CAAA;QAC1C,gGAAgG;QAChG,gGAAgG;QAChG,iGAAiG;QACjG,gGAAgG;QAChG,qGAAqG;QACrG,kGAAkG;QAClG,6DAA6D;QACpD,mBAAc,GAAG,wBAAwB,CAAA;QACzC,SAAI,GAAG,mBAAmB,CAAA;IA0BrC,CAAC;IAxBC,oEAAoE;IAEpE,gGAAgG;IAChG,2FAA2F;IAC3F,YAAY,CAAC,MAAc;QACzB,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,QAAQ,EAAE,kBAAkB;SAC7B,CAAA;QACD,IAAI,MAAM;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,MAAM,EAAE,CAAA;QACzD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,6FAA6F;IAC7F,8FAA8F;IAC9F,oGAAoG;IACpG,YAAY,CACV,QAA0B,EAC1B,KAAa,EACb,KAAsB,EACtB,MAAe;QAEf,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;IACpC,CAAC;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OpenAI Responses API (/v1/responses, not Chat Completions) — wire types and provider implementation.
|
|
3
3
|
*/
|
|
4
|
-
import type { ChatMessageDto,
|
|
4
|
+
import type { ChatMessageDto, ChatStreamPieceDto, ChatResponseDto, ProviderResponseDto, ProviderStreamEventDto } from '../protocol.js';
|
|
5
5
|
import { AIProvider, type ChatRequestOpts } from '../aiProvider.js';
|
|
6
6
|
export type OpenAIReasoningEffort = 'none' | 'low' | 'medium' | 'high';
|
|
7
7
|
export type OpenAIReasoningSummary = 'auto' | 'concise' | 'detailed';
|
|
@@ -51,54 +51,15 @@ interface OpenAIResponseItemLocation {
|
|
|
51
51
|
interface OpenAIResponseContentLocation extends OpenAIResponseItemLocation {
|
|
52
52
|
content_index: number;
|
|
53
53
|
}
|
|
54
|
-
export type OpenAIResponseCreatedEvent = OpenAIResponseEventBase & {
|
|
55
|
-
type: 'response.created';
|
|
56
|
-
response: {
|
|
57
|
-
id: string;
|
|
58
|
-
object: 'response';
|
|
59
|
-
created_at: number;
|
|
60
|
-
model: string;
|
|
61
|
-
};
|
|
62
|
-
};
|
|
63
|
-
export type OpenAIResponseInProgressEvent = OpenAIResponseEventBase & {
|
|
64
|
-
type: 'response.in_progress';
|
|
65
|
-
};
|
|
66
|
-
export type OpenAIResponseOutputItemAddedEvent = OpenAIResponseEventBase & {
|
|
67
|
-
type: 'response.output_item.added';
|
|
68
|
-
output_index: number;
|
|
69
|
-
item: OpenAIResponseOutputItem;
|
|
70
|
-
};
|
|
71
|
-
export type OpenAIResponseOutputItemDoneEvent = OpenAIResponseEventBase & {
|
|
72
|
-
type: 'response.output_item.done';
|
|
73
|
-
output_index: number;
|
|
74
|
-
item: OpenAIResponseOutputItem;
|
|
75
|
-
};
|
|
76
|
-
export type OpenAIResponseContentPartAddedEvent = OpenAIResponseEventBase & OpenAIResponseContentLocation & {
|
|
77
|
-
type: 'response.content_part.added';
|
|
78
|
-
part: OpenAIResponseOutputText;
|
|
79
|
-
};
|
|
80
|
-
export type OpenAIResponseContentPartDoneEvent = OpenAIResponseEventBase & OpenAIResponseContentLocation & {
|
|
81
|
-
type: 'response.content_part.done';
|
|
82
|
-
part: OpenAIResponseOutputText;
|
|
83
|
-
};
|
|
84
54
|
export type OpenAIResponseOutputTextDeltaEvent = OpenAIResponseEventBase & OpenAIResponseContentLocation & {
|
|
85
55
|
type: 'response.output_text.delta';
|
|
86
56
|
delta: string;
|
|
87
57
|
};
|
|
88
|
-
export type OpenAIResponseOutputTextDoneEvent = OpenAIResponseEventBase & OpenAIResponseContentLocation & {
|
|
89
|
-
type: 'response.output_text.done';
|
|
90
|
-
text: string;
|
|
91
|
-
};
|
|
92
58
|
export type OpenAIResponseReasoningSummaryTextDeltaEvent = OpenAIResponseEventBase & OpenAIResponseItemLocation & {
|
|
93
59
|
type: 'response.reasoning_summary_text.delta';
|
|
94
60
|
delta: string;
|
|
95
61
|
summary_index: number;
|
|
96
62
|
};
|
|
97
|
-
export type OpenAIResponseReasoningSummaryTextDoneEvent = OpenAIResponseEventBase & OpenAIResponseItemLocation & {
|
|
98
|
-
type: 'response.reasoning_summary_text.done';
|
|
99
|
-
text: string;
|
|
100
|
-
summary_index: number;
|
|
101
|
-
};
|
|
102
63
|
export type OpenAIResponseCompletedEvent = OpenAIResponseEventBase & {
|
|
103
64
|
type: 'response.completed';
|
|
104
65
|
response: OpenAIResponsesApiResponseDto;
|
|
@@ -115,19 +76,9 @@ export type OpenAIResponseErrorEvent = OpenAIResponseEventBase & {
|
|
|
115
76
|
export type OpenAIResponseFailedEvent = OpenAIResponseEventBase & {
|
|
116
77
|
type: 'response.failed';
|
|
117
78
|
};
|
|
118
|
-
export type
|
|
119
|
-
type:
|
|
120
|
-
};
|
|
121
|
-
export type OpenAIResponseWebSearchSearchingEvent = OpenAIResponseEventBase & {
|
|
122
|
-
type: 'response.web_search_call.searching';
|
|
123
|
-
};
|
|
124
|
-
export type OpenAIResponseWebSearchCompletedEvent = OpenAIResponseEventBase & {
|
|
125
|
-
type: 'response.web_search_call.completed';
|
|
126
|
-
};
|
|
127
|
-
export type OpenAIResponseAnnotationAddedEvent = OpenAIResponseEventBase & OpenAIResponseContentLocation & {
|
|
128
|
-
type: 'response.output_text.annotation.added';
|
|
79
|
+
export type OpenAIResponseSseEventDto = OpenAIResponseOutputTextDeltaEvent | OpenAIResponseReasoningSummaryTextDeltaEvent | OpenAIResponseCompletedEvent | OpenAIResponseErrorEvent | OpenAIResponseFailedEvent | {
|
|
80
|
+
type: string;
|
|
129
81
|
};
|
|
130
|
-
export type OpenAIResponseSseEventDto = OpenAIResponseCreatedEvent | OpenAIResponseInProgressEvent | OpenAIResponseOutputItemAddedEvent | OpenAIResponseOutputItemDoneEvent | OpenAIResponseContentPartAddedEvent | OpenAIResponseContentPartDoneEvent | OpenAIResponseOutputTextDeltaEvent | OpenAIResponseOutputTextDoneEvent | OpenAIResponseAnnotationAddedEvent | OpenAIResponseReasoningSummaryTextDeltaEvent | OpenAIResponseReasoningSummaryTextDoneEvent | OpenAIResponseWebSearchInProgressEvent | OpenAIResponseWebSearchSearchingEvent | OpenAIResponseWebSearchCompletedEvent | OpenAIResponseCompletedEvent | OpenAIResponseErrorEvent | OpenAIResponseFailedEvent;
|
|
131
82
|
export declare class OpenAIProvider extends AIProvider {
|
|
132
83
|
protected readonly providerName = "OpenAI";
|
|
133
84
|
readonly defaultBaseUrl = "https://api.openai.com";
|
|
@@ -135,7 +86,6 @@ export declare class OpenAIProvider extends AIProvider {
|
|
|
135
86
|
private readonly effortMap;
|
|
136
87
|
buildHeaders(apiKey: string): Record<string, string>;
|
|
137
88
|
buildPayload(messages: ChatMessageDto[], model: string, opts: ChatRequestOpts, stream: boolean): OpenAIResponsesApiRequestDto;
|
|
138
|
-
parseError(errorText: string, status: number): UpstreamErrorDto;
|
|
139
89
|
parseNonStreamingResponse(json: ProviderResponseDto): ChatResponseDto;
|
|
140
90
|
protected parseProviderStreamChunk(json: ProviderStreamEventDto): ChatStreamPieceDto | null;
|
|
141
91
|
private convertMessagesToInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openAI.d.ts","sourceRoot":"","sources":["../../../ai/src/providers/openAI.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EACV,cAAc,
|
|
1
|
+
{"version":3,"file":"openAI.d.ts","sourceRoot":"","sources":["../../../ai/src/providers/openAI.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,16 +33,13 @@ export class OpenAIProvider extends AIProvider {
|
|
|
33
33
|
if (opts?.webSearch !== false) {
|
|
34
34
|
payload.tools = [{ type: 'web_search' }];
|
|
35
35
|
}
|
|
36
|
-
if (
|
|
36
|
+
if (opts?.effort !== undefined) {
|
|
37
37
|
const effort = this.effortMap[opts.effort];
|
|
38
38
|
// `summary: 'auto'` requests a reasoning summary; at `none` there's no reasoning to summarize.
|
|
39
39
|
payload.reasoning = effort === 'none' ? { effort } : { effort, summary: 'auto' };
|
|
40
40
|
}
|
|
41
41
|
return payload;
|
|
42
42
|
}
|
|
43
|
-
parseError(errorText, status) {
|
|
44
|
-
return this.parseJsonError(errorText, status, true);
|
|
45
|
-
}
|
|
46
43
|
// ── Response parsing ─────────────────────────────────────────────
|
|
47
44
|
parseNonStreamingResponse(json) {
|
|
48
45
|
if (!this.isResponsesApiResponse(json)) {
|
|
@@ -69,10 +66,7 @@ export class OpenAIProvider extends AIProvider {
|
|
|
69
66
|
parseProviderStreamChunk(json) {
|
|
70
67
|
if (!this.isResponsesApiEvent(json))
|
|
71
68
|
return null;
|
|
72
|
-
|
|
73
|
-
switch (eventType) {
|
|
74
|
-
case 'error':
|
|
75
|
-
return null;
|
|
69
|
+
switch (json.type) {
|
|
76
70
|
case 'response.failed': {
|
|
77
71
|
const resp = json.response;
|
|
78
72
|
const errObj = resp?.error;
|
|
@@ -84,20 +78,6 @@ export class OpenAIProvider extends AIProvider {
|
|
|
84
78
|
return { text: json.delta };
|
|
85
79
|
case 'response.reasoning_summary_text.delta':
|
|
86
80
|
return { reasoning: json.delta };
|
|
87
|
-
case 'response.created':
|
|
88
|
-
case 'response.in_progress':
|
|
89
|
-
case 'response.output_item.added':
|
|
90
|
-
case 'response.output_item.done':
|
|
91
|
-
case 'response.content_part.added':
|
|
92
|
-
case 'response.content_part.done':
|
|
93
|
-
case 'response.output_text.done':
|
|
94
|
-
case 'response.output_text.annotation.added':
|
|
95
|
-
case 'response.reasoning_summary_text.done':
|
|
96
|
-
case 'response.completed':
|
|
97
|
-
case 'response.web_search_call.in_progress':
|
|
98
|
-
case 'response.web_search_call.searching':
|
|
99
|
-
case 'response.web_search_call.completed':
|
|
100
|
-
return null;
|
|
101
81
|
default:
|
|
102
82
|
return null;
|
|
103
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openAI.js","sourceRoot":"","sources":["../../../ai/src/providers/openAI.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openAI.js","sourceRoot":"","sources":["../../../ai/src/providers/openAI.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OpenRouter API (Chat Completions style with choices[]) — wire types and
|
|
2
|
+
* OpenRouter API (Chat Completions style with choices[]) — request building; wire types and
|
|
3
|
+
* parsing shared via ChatCompletionsProvider.
|
|
3
4
|
*/
|
|
4
|
-
import type { ChatMessageDto
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
content: string;
|
|
8
|
-
reasoning?: string;
|
|
9
|
-
}
|
|
10
|
-
export interface OpenRouterChoiceDto {
|
|
11
|
-
message?: OpenRouterMessageDto;
|
|
12
|
-
text?: string;
|
|
13
|
-
}
|
|
14
|
-
export interface OpenRouterResponseDto extends ProviderResponseDto {
|
|
15
|
-
choices: OpenRouterChoiceDto[];
|
|
16
|
-
reasoning?: string;
|
|
17
|
-
}
|
|
18
|
-
export interface OpenRouterDeltaDto {
|
|
19
|
-
content?: string;
|
|
20
|
-
reasoning?: string;
|
|
21
|
-
}
|
|
22
|
-
export interface OpenRouterStreamChoiceDto {
|
|
23
|
-
delta?: OpenRouterDeltaDto;
|
|
24
|
-
message?: OpenRouterDeltaDto;
|
|
25
|
-
}
|
|
26
|
-
export interface OpenRouterStreamEventDto extends ProviderStreamEventDto {
|
|
27
|
-
choices: OpenRouterStreamChoiceDto[];
|
|
28
|
-
}
|
|
29
|
-
export interface OpenRouterErrorResponseDto {
|
|
30
|
-
error: {
|
|
31
|
-
message: string;
|
|
32
|
-
type?: string;
|
|
33
|
-
code?: string;
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
export type OpenRouterSseEventDto = OpenRouterStreamEventDto | OpenRouterErrorResponseDto;
|
|
5
|
+
import type { ChatMessageDto } from '../protocol.js';
|
|
6
|
+
import type { ChatRequestOpts } from '../aiProvider.js';
|
|
7
|
+
import { ChatCompletionsProvider } from './chatCompletions.js';
|
|
37
8
|
/** OpenRouter web search plugin */
|
|
38
9
|
interface OpenRouterWebPlugin {
|
|
39
10
|
id: 'web';
|
|
@@ -49,17 +20,13 @@ export type OpenRouterRequestPayload = {
|
|
|
49
20
|
};
|
|
50
21
|
plugins?: OpenRouterWebPlugin[];
|
|
51
22
|
};
|
|
52
|
-
export declare class OpenRouterProvider extends
|
|
23
|
+
export declare class OpenRouterProvider extends ChatCompletionsProvider {
|
|
53
24
|
protected readonly providerName = "OpenRouter";
|
|
54
25
|
readonly defaultBaseUrl = "https://openrouter.ai";
|
|
55
26
|
readonly path: string;
|
|
56
27
|
private readonly effortMap;
|
|
57
28
|
buildHeaders(apiKey: string, origin?: string): Record<string, string>;
|
|
58
29
|
buildPayload(messages: ChatMessageDto[], model: string, opts: ChatRequestOpts, stream: boolean): OpenRouterRequestPayload;
|
|
59
|
-
parseError(errorText: string, status: number): UpstreamErrorDto;
|
|
60
|
-
parseNonStreamingResponse(json: ProviderResponseDto): ChatResponseDto;
|
|
61
|
-
protected parseProviderStreamChunk(json: ProviderStreamEventDto): ChatStreamPieceDto | null;
|
|
62
|
-
private hasChoices;
|
|
63
30
|
}
|
|
64
31
|
export {};
|
|
65
32
|
//# sourceMappingURL=openRouter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openRouter.d.ts","sourceRoot":"","sources":["../../../ai/src/providers/openRouter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"openRouter.d.ts","sourceRoot":"","sources":["../../../ai/src/providers/openRouter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,gBAAgB,CAAA;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAE9D,mCAAmC;AACnC,UAAU,mBAAmB;IAC3B,EAAE,EAAE,KAAK,CAAA;IACT,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,iCAAiC;AACjC,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAA;KAAE,CAAA;IAC1D,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAA;CAChC,CAAA;AAED,qBAAa,kBAAmB,SAAQ,uBAAuB;IAC7D,SAAS,CAAC,QAAQ,CAAC,YAAY,gBAAe;IAO9C,QAAQ,CAAC,cAAc,2BAA0B;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAA6B;IAIlD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAKzB;IAID,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAkBrE,YAAY,CACV,QAAQ,EAAE,cAAc,EAAE,EAC1B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,OAAO,GACd,wBAAwB;CAqB5B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export class OpenRouterProvider extends
|
|
1
|
+
import { ChatCompletionsProvider } from './chatCompletions.js';
|
|
2
|
+
export class OpenRouterProvider extends ChatCompletionsProvider {
|
|
3
3
|
constructor() {
|
|
4
4
|
super(...arguments);
|
|
5
5
|
this.providerName = 'OpenRouter';
|
|
@@ -46,45 +46,13 @@ export class OpenRouterProvider extends AIProvider {
|
|
|
46
46
|
if (opts?.webSearch === true) {
|
|
47
47
|
payload.plugins = [{ id: 'web' }];
|
|
48
48
|
}
|
|
49
|
-
|
|
49
|
+
const effort = opts?.effort;
|
|
50
|
+
if (effort !== undefined) {
|
|
50
51
|
payload.reasoning = {
|
|
51
|
-
effort: this.effortMap[
|
|
52
|
+
effort: this.effortMap[effort]
|
|
52
53
|
};
|
|
53
54
|
}
|
|
54
55
|
return payload;
|
|
55
56
|
}
|
|
56
|
-
parseError(errorText, status) {
|
|
57
|
-
return this.parseJsonError(errorText, status, true);
|
|
58
|
-
}
|
|
59
|
-
// ── Response parsing ─────────────────────────────────────────────
|
|
60
|
-
parseNonStreamingResponse(json) {
|
|
61
|
-
if (!this.hasChoices(json)) {
|
|
62
|
-
return { text: '' };
|
|
63
|
-
}
|
|
64
|
-
const resp = json;
|
|
65
|
-
const choice = resp.choices[0];
|
|
66
|
-
const text = choice?.message?.content ?? choice?.text ?? '';
|
|
67
|
-
const reasoning = choice?.message?.reasoning ?? resp.reasoning;
|
|
68
|
-
return { text, reasoning };
|
|
69
|
-
}
|
|
70
|
-
parseProviderStreamChunk(json) {
|
|
71
|
-
if (!this.hasChoices(json))
|
|
72
|
-
return null;
|
|
73
|
-
const choice = json.choices[0];
|
|
74
|
-
if (!choice)
|
|
75
|
-
return null;
|
|
76
|
-
const delta = choice.delta || choice.message;
|
|
77
|
-
if (!delta)
|
|
78
|
-
return null;
|
|
79
|
-
const text = delta.content || undefined;
|
|
80
|
-
const reasoning = delta.reasoning || undefined;
|
|
81
|
-
if (!text && !reasoning)
|
|
82
|
-
return null;
|
|
83
|
-
return { text, reasoning };
|
|
84
|
-
}
|
|
85
|
-
// ── Private helpers ──────────────────────────────────────────────
|
|
86
|
-
hasChoices(json) {
|
|
87
|
-
return typeof json === 'object' && json !== null && 'choices' in json && Array.isArray(json.choices);
|
|
88
|
-
}
|
|
89
57
|
}
|
|
90
58
|
//# sourceMappingURL=openRouter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openRouter.js","sourceRoot":"","sources":["../../../ai/src/providers/openRouter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openRouter.js","sourceRoot":"","sources":["../../../ai/src/providers/openRouter.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAiB9D,MAAM,OAAO,kBAAmB,SAAQ,uBAAuB;IAA/D;;QACqB,iBAAY,GAAG,YAAY,CAAA;QAC9C,6FAA6F;QAC7F,iGAAiG;QACjG,gGAAgG;QAChG,gGAAgG;QAChG,iGAAiG;QACjG,uGAAuG;QAC9F,mBAAc,GAAG,uBAAuB,CAAA;QACxC,SAAI,GAAW,0BAA0B,CAAA;QAElD,qGAAqG;QACrG,gFAAgF;QAC/D,cAAS,GAA4D;YACpF,CAAC,EAAE,MAAM;YACT,CAAC,EAAE,KAAK;YACR,CAAC,EAAE,QAAQ;YACX,CAAC,EAAE,MAAM;SACV,CAAA;IAgDH,CAAC;IA9CC,oEAAoE;IAEpE,YAAY,CAAC,MAAc,EAAE,MAAe;QAC1C,MAAM,OAAO,GAA2B;YACtC,eAAe,EAAE,UAAU,MAAM,EAAE;YACnC,WAAW,EAAE,MAAM;YACnB,cAAc,EAAE,kBAAkB;YAClC,QAAQ,EAAE,kBAAkB;YAC5B,SAAS,EAAE,UAAU;SACtB,CAAA;QAED,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,cAAc,CAAC,GAAG,MAAM,CAAA;YAChC,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAAA;YAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAA;QAC5B,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,YAAY,CACV,QAA0B,EAC1B,KAAa,EACb,IAAqB,EACrB,MAAe;QAEf,MAAM,OAAO,GAA6B;YACxC,KAAK;YACL,QAAQ;YACR,MAAM;SACP,CAAA;QAED,6EAA6E;QAC7E,IAAI,IAAI,EAAE,SAAS,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QACnC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,CAAA;QAC3B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,SAAS,GAAG;gBAClB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;aAC/B,CAAA;QACH,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CACF"}
|
package/dist/ai/sseParser.d.ts
CHANGED
|
@@ -23,9 +23,10 @@ export declare function consumeSseStream<T = any>(reader: ReadableStreamDefaultR
|
|
|
23
23
|
/**
|
|
24
24
|
* Pull-based twin of {@link consumeSseStream}: yields each parsed SSE block as it arrives so a
|
|
25
25
|
* caller can `for await` the stream (and tear it down by breaking the loop). Same framing and
|
|
26
|
-
* `[DONE]` handling; single-sources the SSE parsing. Cancels the reader on early exit
|
|
26
|
+
* `[DONE]` handling; single-sources the SSE parsing. Cancels the reader on early exit; throws
|
|
27
|
+
* on abort so callers' error paths fire.
|
|
27
28
|
*/
|
|
28
|
-
export declare function consumeSseStreamGen<T = any>(reader: ReadableStreamDefaultReader<Uint8Array>, signal?: AbortSignal): AsyncGenerator<T>;
|
|
29
|
+
export declare function consumeSseStreamGen<T = any>(reader: ReadableStreamDefaultReader<Uint8Array>, signal?: AbortSignal, onBytes?: () => void): AsyncGenerator<T>;
|
|
29
30
|
/**
|
|
30
31
|
* Consume a provider SSE stream into a single text string.
|
|
31
32
|
* Handles protocol detection, chunk parsing, and reasoning token filtering.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sseParser.d.ts","sourceRoot":"","sources":["../../ai/src/sseParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAsB,MAAM,eAAe,CAAA;AAYlF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAmBvE;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAC5C,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAC/C,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAC3B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,eAAe,EAAE,OAAO,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"sseParser.d.ts","sourceRoot":"","sources":["../../ai/src/sseParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAsB,MAAM,eAAe,CAAA;AAYlF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAmBvE;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAC5C,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAC/C,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAC3B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,eAAe,EAAE,OAAO,CAAA;CAAE,CAAC,CAQvC;AAED;;;;;GAKG;AACH,wBAAuB,mBAAmB,CAAC,CAAC,GAAG,GAAG,EAChD,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAC/C,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,MAAM,IAAI,GACnB,cAAc,CAAC,CAAC,CAAC,CAwCnB;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CASjB;AAED;;;;;;;;GAQG;AACH,wBAAuB,cAAc,CACnC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,CAAC,EAAE,gBAAgB,GAC1B,cAAc,CAAC,OAAO,CAAC,CAazB"}
|
package/dist/ai/sseParser.js
CHANGED
|
@@ -47,66 +47,38 @@ export function parseSseBlock(block) {
|
|
|
47
47
|
* @returns Object with whether any data was received
|
|
48
48
|
*/
|
|
49
49
|
export async function consumeSseStream(reader, onChunk, signal) {
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
// "Any bytes read", not "any chunk parsed" — callers use it to tell a dead connection
|
|
51
|
+
// (failed) from a stream that died mid-flight (interrupted).
|
|
52
52
|
let receivedAnyData = false;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
? new Promise((_, reject) => {
|
|
56
|
-
if (signal.aborted)
|
|
57
|
-
reject(new Error('Aborted'));
|
|
58
|
-
signal.addEventListener('abort', () => reject(new Error('Aborted')), { once: true });
|
|
59
|
-
})
|
|
60
|
-
: null;
|
|
61
|
-
while (true) {
|
|
62
|
-
const readResult = abortPromise
|
|
63
|
-
? await Promise.race([reader.read(), abortPromise])
|
|
64
|
-
: await reader.read();
|
|
65
|
-
const { done, value } = readResult;
|
|
66
|
-
if (done) {
|
|
67
|
-
// Process any remaining buffer content
|
|
68
|
-
if (buffer.trim()) {
|
|
69
|
-
const parsed = parseSseBlock(buffer);
|
|
70
|
-
if (parsed !== null && parsed !== 'done') {
|
|
71
|
-
onChunk(parsed);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
break;
|
|
75
|
-
}
|
|
76
|
-
receivedAnyData = true;
|
|
77
|
-
buffer += decoder.decode(value, { stream: true });
|
|
78
|
-
let { pos: sep, len: sepLen } = findSeparator(buffer);
|
|
79
|
-
while (sep !== -1) {
|
|
80
|
-
const block = buffer.slice(0, sep);
|
|
81
|
-
buffer = buffer.slice(sep + sepLen);
|
|
82
|
-
const parsed = parseSseBlock(block);
|
|
83
|
-
if (parsed === 'done') {
|
|
84
|
-
buffer = '';
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
87
|
-
if (parsed !== null) {
|
|
88
|
-
onChunk(parsed);
|
|
89
|
-
}
|
|
90
|
-
;
|
|
91
|
-
({ pos: sep, len: sepLen } = findSeparator(buffer));
|
|
92
|
-
}
|
|
53
|
+
for await (const chunk of consumeSseStreamGen(reader, signal, () => { receivedAnyData = true; })) {
|
|
54
|
+
onChunk(chunk);
|
|
93
55
|
}
|
|
94
56
|
return { receivedAnyData };
|
|
95
57
|
}
|
|
96
58
|
/**
|
|
97
59
|
* Pull-based twin of {@link consumeSseStream}: yields each parsed SSE block as it arrives so a
|
|
98
60
|
* caller can `for await` the stream (and tear it down by breaking the loop). Same framing and
|
|
99
|
-
* `[DONE]` handling; single-sources the SSE parsing. Cancels the reader on early exit
|
|
61
|
+
* `[DONE]` handling; single-sources the SSE parsing. Cancels the reader on early exit; throws
|
|
62
|
+
* on abort so callers' error paths fire.
|
|
100
63
|
*/
|
|
101
|
-
export async function* consumeSseStreamGen(reader, signal) {
|
|
64
|
+
export async function* consumeSseStreamGen(reader, signal, onBytes) {
|
|
102
65
|
const decoder = new TextDecoder();
|
|
103
66
|
let buffer = '';
|
|
67
|
+
// reader.read() can block for seconds after cancel; race against abort for immediate exit
|
|
68
|
+
const abortPromise = signal
|
|
69
|
+
? new Promise((_, reject) => {
|
|
70
|
+
if (signal.aborted)
|
|
71
|
+
reject(new Error('Aborted'));
|
|
72
|
+
signal.addEventListener('abort', () => reject(new Error('Aborted')), { once: true });
|
|
73
|
+
})
|
|
74
|
+
: null;
|
|
104
75
|
try {
|
|
105
76
|
while (true) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
77
|
+
const { done, value } = abortPromise
|
|
78
|
+
? await Promise.race([reader.read(), abortPromise])
|
|
79
|
+
: await reader.read();
|
|
109
80
|
if (done) {
|
|
81
|
+
// Process any remaining buffer content
|
|
110
82
|
if (buffer.trim()) {
|
|
111
83
|
const parsed = parseSseBlock(buffer);
|
|
112
84
|
if (parsed !== null && parsed !== 'done')
|
|
@@ -114,6 +86,7 @@ export async function* consumeSseStreamGen(reader, signal) {
|
|
|
114
86
|
}
|
|
115
87
|
return;
|
|
116
88
|
}
|
|
89
|
+
onBytes?.();
|
|
117
90
|
buffer += decoder.decode(value, { stream: true });
|
|
118
91
|
let { pos: sep, len: sepLen } = findSeparator(buffer);
|
|
119
92
|
while (sep !== -1) {
|
package/dist/ai/sseParser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sseParser.js","sourceRoot":"","sources":["../../ai/src/sseParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,sFAAsF;AACtF,SAAS,aAAa,CAAC,MAAc;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACvC,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACjC,IAAI,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;IACzE,IAAI,EAAE,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;IACzC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAU,KAAa;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAClC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;IAE1D,IAAI,CAAC,SAAS,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAElC,MAAM,UAAU,GAAG,SAAS;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SACpC,IAAI,CAAC,IAAI,CAAC;SACV,IAAI,EAAE,CAAA;IAET,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IAC5B,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAA;IAE1C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAM,CAAA;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAA+C,EAC/C,OAA2B,EAC3B,MAAoB;IAEpB,
|
|
1
|
+
{"version":3,"file":"sseParser.js","sourceRoot":"","sources":["../../ai/src/sseParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
import { type CdnClient } from 'typebulb/resolver';
|
|
2
|
-
import { TypeProvider } from './typeProvider.js';
|
|
2
|
+
import type { TypeProvider } from './typeProvider.js';
|
|
3
3
|
import { TarballFetcher } from './tarballFetcher.js';
|
|
4
4
|
import type { DtsCache } from './cache.js';
|
|
5
|
-
|
|
6
|
-
export declare class DefinitelyTypedProvider extends TypeProvider {
|
|
5
|
+
export declare class DefinitelyTypedProvider implements TypeProvider {
|
|
7
6
|
private cdnClient;
|
|
8
7
|
private cache;
|
|
9
8
|
private tarballFetcher;
|
|
10
|
-
constructor(
|
|
9
|
+
constructor(cdnClient: CdnClient, cache: DtsCache, tarballFetcher?: TarballFetcher);
|
|
11
10
|
private typesNameCandidates;
|
|
12
11
|
private selectTypesVersion;
|
|
13
12
|
/**
|
|
14
13
|
* Declaration-file candidates for a subpath, keyed as the tarball stores them
|
|
15
|
-
* (package-relative, no leading `./`).
|
|
16
|
-
* `examples/jsm/controls/OrbitControls.js` lives at
|
|
17
|
-
* `OrbitControls.js.d.ts
|
|
18
|
-
*
|
|
19
|
-
*
|
|
14
|
+
* (package-relative, no leading `./`). `declarationCandidatesFor` strips a
|
|
15
|
+
* runtime extension first — `examples/jsm/controls/OrbitControls.js` lives at
|
|
16
|
+
* `OrbitControls.d.ts`, not `OrbitControls.js.d.ts`. The raw-subpath forms are
|
|
17
|
+
* kept as a fallback for paths whose dot isn't a JS extension (e.g. a literal
|
|
18
|
+
* `foo.bar` directory).
|
|
20
19
|
*/
|
|
21
20
|
private subpathCandidates;
|
|
22
21
|
private fetchFromVersionedRoot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitelyTypedProvider.d.ts","sourceRoot":"","sources":["../../dts/src/definitelyTypedProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"definitelyTypedProvider.d.ts","sourceRoot":"","sources":["../../dts/src/definitelyTypedProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C,qBAAa,uBAAwB,YAAW,YAAY;IAExD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,cAAc;gBAFd,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,QAAQ,EACf,cAAc,iBAAuB;IAG/C,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,kBAAkB;IAe1B;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;YAOX,sBAAsB;IAgC9B,OAAO,CAAC,GAAG,EAAE,MAAM;;;;;CAiB1B"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { PackageRef, semverService } from 'typebulb/resolver';
|
|
2
|
-
import {
|
|
3
|
-
import { makeDeclarationCandidates } from './dtsConfig.js';
|
|
2
|
+
import { declarationCandidatesFor } from './dtsConfig.js';
|
|
4
3
|
import { TarballFetcher } from './tarballFetcher.js';
|
|
5
|
-
export class DefinitelyTypedProvider
|
|
6
|
-
constructor(
|
|
7
|
-
super(fetchDts);
|
|
4
|
+
export class DefinitelyTypedProvider {
|
|
5
|
+
constructor(cdnClient, cache, tarballFetcher = new TarballFetcher()) {
|
|
8
6
|
this.cdnClient = cdnClient;
|
|
9
7
|
this.cache = cache;
|
|
10
8
|
this.tarballFetcher = tarballFetcher;
|
|
@@ -34,19 +32,15 @@ export class DefinitelyTypedProvider extends TypeProvider {
|
|
|
34
32
|
}
|
|
35
33
|
/**
|
|
36
34
|
* Declaration-file candidates for a subpath, keyed as the tarball stores them
|
|
37
|
-
* (package-relative, no leading `./`).
|
|
38
|
-
* `examples/jsm/controls/OrbitControls.js` lives at
|
|
39
|
-
* `OrbitControls.js.d.ts
|
|
40
|
-
*
|
|
41
|
-
*
|
|
35
|
+
* (package-relative, no leading `./`). `declarationCandidatesFor` strips a
|
|
36
|
+
* runtime extension first — `examples/jsm/controls/OrbitControls.js` lives at
|
|
37
|
+
* `OrbitControls.d.ts`, not `OrbitControls.js.d.ts`. The raw-subpath forms are
|
|
38
|
+
* kept as a fallback for paths whose dot isn't a JS extension (e.g. a literal
|
|
39
|
+
* `foo.bar` directory).
|
|
42
40
|
*/
|
|
43
41
|
subpathCandidates(subpath) {
|
|
44
42
|
const base = subpath.replace(/\.(mjs|cjs|js|mts|cts|ts)$/i, '');
|
|
45
|
-
const out =
|
|
46
|
-
...makeDeclarationCandidates(base),
|
|
47
|
-
`${base}/index.d.ts`,
|
|
48
|
-
`${base}/index.d.mts`,
|
|
49
|
-
];
|
|
43
|
+
const out = declarationCandidatesFor(subpath);
|
|
50
44
|
if (base !== subpath)
|
|
51
45
|
out.push(`${subpath}.d.ts`, `${subpath}/index.d.ts`);
|
|
52
46
|
return out;
|