veryfront 0.1.83 → 0.1.84
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/esm/cli/commands/knowledge/command.d.ts +10 -13
- package/esm/cli/commands/knowledge/command.d.ts.map +1 -1
- package/esm/cli/commands/knowledge/command.js +294 -110
- package/esm/cli/commands/knowledge/parser-source.d.ts.map +1 -1
- package/esm/cli/commands/knowledge/parser-source.js +52 -0
- package/esm/cli/commands/knowledge/result.d.ts +54 -0
- package/esm/cli/commands/knowledge/result.d.ts.map +1 -0
- package/esm/cli/commands/knowledge/result.js +22 -0
- package/esm/cli/commands/knowledge/source-policy.d.ts +11 -0
- package/esm/cli/commands/knowledge/source-policy.d.ts.map +1 -0
- package/esm/cli/commands/knowledge/source-policy.js +135 -0
- package/esm/deno.js +1 -1
- package/esm/src/jobs/index.d.ts +1 -1
- package/esm/src/jobs/index.d.ts.map +1 -1
- package/esm/src/jobs/index.js +1 -1
- package/esm/src/jobs/schemas.d.ts +1104 -185
- package/esm/src/jobs/schemas.d.ts.map +1 -1
- package/esm/src/jobs/schemas.js +81 -8
- package/esm/src/proxy/error-response.d.ts +7 -0
- package/esm/src/proxy/error-response.d.ts.map +1 -0
- package/esm/src/proxy/error-response.js +26 -0
- package/esm/src/proxy/handler.d.ts.map +1 -1
- package/esm/src/proxy/handler.js +25 -0
- package/esm/src/proxy/main.js +2 -23
- package/esm/src/transforms/esm/http-cache-helpers.d.ts.map +1 -1
- package/esm/src/transforms/esm/http-cache-helpers.js +7 -1
- package/esm/src/transforms/import-rewriter/strategies/bare-strategy.d.ts.map +1 -1
- package/esm/src/transforms/import-rewriter/strategies/bare-strategy.js +11 -8
- package/esm/src/transforms/shared/package-specifier.d.ts +7 -0
- package/esm/src/transforms/shared/package-specifier.d.ts.map +1 -0
- package/esm/src/transforms/shared/package-specifier.js +19 -0
- package/package.json +1 -1
- package/src/cli/commands/knowledge/command.ts +375 -139
- package/src/cli/commands/knowledge/parser-source.ts +52 -0
- package/src/cli/commands/knowledge/result.ts +88 -0
- package/src/cli/commands/knowledge/source-policy.ts +164 -0
- package/src/deno.js +1 -1
- package/src/src/jobs/index.ts +16 -0
- package/src/src/jobs/schemas.ts +105 -8
- package/src/src/proxy/error-response.ts +33 -0
- package/src/src/proxy/handler.ts +43 -0
- package/src/src/proxy/main.ts +2 -27
- package/src/src/transforms/esm/http-cache-helpers.ts +12 -1
- package/src/src/transforms/import-rewriter/strategies/bare-strategy.ts +11 -12
- package/src/src/transforms/shared/package-specifier.ts +29 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/src/jobs/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe,wEAM1B,CAAC;AAEH,eAAO,MAAM,mBAAmB,6CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/src/jobs/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe,wEAM1B,CAAC;AAEH,eAAO,MAAM,mBAAmB,6CAA2C,CAAC;AAC5E,eAAO,MAAM,aAAa,gDAA0C,CAAC;AAErE,eAAO,MAAM,6BAA6B,iDAA+C,CAAC;AAE1F,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;EAKzB,CAAC;AAUH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU1C,CAAC;AAEH,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;EAKjD,CAAC;AAEH,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;EAKhD,CAAC;AAEH,eAAO,MAAM,sCAAsC;;;;;;;;;;;;EAIjD,CAAC;AAEH,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;EAK/C,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQzC,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAYf,CAAC;AAEd,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkBtB,CAAC;AAwBd,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMpB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI5B,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGtC,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;EAQzB,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQlC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;EAEhC,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;EAM3C,CAAC;AAEH,eAAO,MAAM,2CAA2C;;;;;;;;;;;;;;;;;;;;;;EAEtD,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;EAMrC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgBpB,CAAC;AAEd,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASzB,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;EAMpC,CAAC;AAEH,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG7C,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBxB,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG1C,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CACpD,OAAO,sCAAsC,CAC9C,CAAC;AACF,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC;AACpG,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CACpD,OAAO,sCAAsC,CAC9C,CAAC;AACF,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC;AAClG,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AACtF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAC5C,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAC1F,MAAM,MAAM,qCAAqC,GAAG,CAAC,CAAC,KAAK,CACzD,OAAO,2CAA2C,CACnD,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAE9F,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC"}
|
package/esm/src/jobs/schemas.js
CHANGED
|
@@ -7,6 +7,7 @@ export const JobStatusSchema = z.enum([
|
|
|
7
7
|
"canceled",
|
|
8
8
|
]);
|
|
9
9
|
export const CronJobStatusSchema = z.enum(["active", "paused", "deleting"]);
|
|
10
|
+
export const JobKindSchema = z.enum(["knowledge_ingest"]).nullable();
|
|
10
11
|
export const ReservedJobTargetFamilySchema = z.enum(["task:*", "workflow:*", "deploy:*"]);
|
|
11
12
|
export const PageInfoSchema = z.object({
|
|
12
13
|
self: z.string().nullable(),
|
|
@@ -15,6 +16,12 @@ export const PageInfoSchema = z.object({
|
|
|
15
16
|
prev: z.string().nullable(),
|
|
16
17
|
});
|
|
17
18
|
const JsonObjectSchema = z.record(z.unknown());
|
|
19
|
+
const KnowledgeIngestSkipReasonSchema = z.enum([
|
|
20
|
+
"hidden_path",
|
|
21
|
+
"ignored_directory",
|
|
22
|
+
"unsupported_file_type",
|
|
23
|
+
]);
|
|
24
|
+
const KnowledgeIngestFailureReasonSchema = z.enum(["parser_error", "upload_error"]);
|
|
18
25
|
export const KnowledgeIngestFileResultSchema = z.object({
|
|
19
26
|
source: z.string(),
|
|
20
27
|
localSourcePath: z.string(),
|
|
@@ -26,26 +33,75 @@ export const KnowledgeIngestFileResultSchema = z.object({
|
|
|
26
33
|
stats: JsonObjectSchema,
|
|
27
34
|
warnings: z.array(z.string()),
|
|
28
35
|
});
|
|
36
|
+
export const KnowledgeIngestSkippedFileResultSchema = z.object({
|
|
37
|
+
source: z.string(),
|
|
38
|
+
localSourcePath: z.string().nullable(),
|
|
39
|
+
reason: KnowledgeIngestSkipReasonSchema,
|
|
40
|
+
message: z.string(),
|
|
41
|
+
});
|
|
42
|
+
export const KnowledgeIngestFailedFileResultSchema = z.object({
|
|
43
|
+
source: z.string(),
|
|
44
|
+
localSourcePath: z.string(),
|
|
45
|
+
reason: KnowledgeIngestFailureReasonSchema,
|
|
46
|
+
message: z.string(),
|
|
47
|
+
});
|
|
48
|
+
export const KnowledgeIngestJobResultMetadataSchema = z.object({
|
|
49
|
+
requested_count: z.number().int().nonnegative(),
|
|
50
|
+
source_mode: z.enum(["explicit_sources", "path_prefix"]),
|
|
51
|
+
knowledge_path: z.string(),
|
|
52
|
+
});
|
|
53
|
+
export const KnowledgeIngestJobResultCountsSchema = z.object({
|
|
54
|
+
requested_count: z.number().int().nonnegative(),
|
|
55
|
+
ingested_count: z.number().int().nonnegative(),
|
|
56
|
+
skipped_count: z.number().int().nonnegative(),
|
|
57
|
+
failed_count: z.number().int().nonnegative(),
|
|
58
|
+
});
|
|
59
|
+
export const KnowledgeIngestJobResultSchema = z.object({
|
|
60
|
+
kind: z.literal("knowledge_ingest"),
|
|
61
|
+
version: z.literal(1),
|
|
62
|
+
metadata: KnowledgeIngestJobResultMetadataSchema,
|
|
63
|
+
summary: KnowledgeIngestJobResultCountsSchema,
|
|
64
|
+
ingested: z.array(KnowledgeIngestFileResultSchema),
|
|
65
|
+
skipped: z.array(KnowledgeIngestSkippedFileResultSchema),
|
|
66
|
+
failed: z.array(KnowledgeIngestFailedFileResultSchema),
|
|
67
|
+
});
|
|
29
68
|
export const JobResultSchema = z
|
|
69
|
+
.discriminatedUnion("kind", [
|
|
70
|
+
KnowledgeIngestJobResultSchema,
|
|
71
|
+
z.object({
|
|
72
|
+
kind: z.literal("value"),
|
|
73
|
+
value: z.unknown(),
|
|
74
|
+
}),
|
|
75
|
+
z.object({
|
|
76
|
+
kind: z.literal("artifacts"),
|
|
77
|
+
artifacts: z.array(z.unknown()),
|
|
78
|
+
}),
|
|
79
|
+
])
|
|
80
|
+
.nullable();
|
|
81
|
+
export const JobResultSummarySchema = z
|
|
30
82
|
.discriminatedUnion("kind", [
|
|
31
83
|
z.object({
|
|
32
84
|
kind: z.literal("knowledge_ingest"),
|
|
33
|
-
|
|
85
|
+
state: z.enum(["success", "partial_success", "failed"]),
|
|
86
|
+
requested_count: z.number().int().nonnegative(),
|
|
87
|
+
ingested_count: z.number().int().nonnegative(),
|
|
88
|
+
skipped_count: z.number().int().nonnegative(),
|
|
89
|
+
failed_count: z.number().int().nonnegative(),
|
|
34
90
|
}),
|
|
35
91
|
z.object({
|
|
36
92
|
kind: z.literal("value"),
|
|
37
|
-
value: z.unknown(),
|
|
38
93
|
}),
|
|
39
94
|
z.object({
|
|
40
95
|
kind: z.literal("artifacts"),
|
|
41
|
-
|
|
96
|
+
artifact_count: z.number().int().nonnegative(),
|
|
42
97
|
}),
|
|
43
98
|
])
|
|
44
99
|
.nullable();
|
|
45
|
-
|
|
100
|
+
const BaseJobSchema = z.object({
|
|
46
101
|
id: z.string().uuid(),
|
|
47
102
|
project_id: z.string().uuid(),
|
|
48
103
|
environment_id: z.string().uuid().nullable(),
|
|
104
|
+
branch_id: z.string().nullable().optional().default(null),
|
|
49
105
|
cron_job_id: z.string().uuid().nullable(),
|
|
50
106
|
batch_id: z.string().uuid().nullable(),
|
|
51
107
|
name: z.string(),
|
|
@@ -56,17 +112,26 @@ export const JobSchema = z.object({
|
|
|
56
112
|
timeout_seconds: z.number(),
|
|
57
113
|
backoff_limit: z.number(),
|
|
58
114
|
exit_code: z.number().nullable(),
|
|
59
|
-
failed_reason: z.string().nullable(),
|
|
60
|
-
failure_detail: z.string().nullable(),
|
|
61
|
-
result: JobResultSchema,
|
|
62
115
|
started_at: z.string().nullable(),
|
|
63
116
|
completed_at: z.string().nullable(),
|
|
64
117
|
created_by: z.string().uuid().nullable(),
|
|
65
118
|
created_at: z.string(),
|
|
66
119
|
updated_at: z.string(),
|
|
67
120
|
});
|
|
121
|
+
export const JobSchema = BaseJobSchema.extend({
|
|
122
|
+
failed_reason: z.string().nullable().optional().default(null),
|
|
123
|
+
kind: JobKindSchema.optional().default(null),
|
|
124
|
+
failure_detail: z.string().nullable().optional().default(null),
|
|
125
|
+
result_summary: JobResultSummarySchema.optional().default(null),
|
|
126
|
+
result: JobResultSchema.optional().default(null),
|
|
127
|
+
});
|
|
128
|
+
export const JobListItemSchema = BaseJobSchema.extend({
|
|
129
|
+
kind: JobKindSchema.optional().default(null),
|
|
130
|
+
failure_detail: z.string().nullable().optional().default(null),
|
|
131
|
+
result_summary: JobResultSummarySchema.optional().default(null),
|
|
132
|
+
});
|
|
68
133
|
export const PaginatedJobsResponseSchema = z.object({
|
|
69
|
-
data: z.array(
|
|
134
|
+
data: z.array(JobListItemSchema),
|
|
70
135
|
page_info: PageInfoSchema,
|
|
71
136
|
});
|
|
72
137
|
export const JobEventSchema = z.object({
|
|
@@ -97,6 +162,9 @@ export const KnowledgeIngestBatchSourceSchema = z.object({
|
|
|
97
162
|
remote_path: z.string().nullable(),
|
|
98
163
|
warning_count: z.number().int().nonnegative(),
|
|
99
164
|
});
|
|
165
|
+
export const KnowledgeIngestBatchSourceWithMessageSchema = KnowledgeIngestBatchSourceSchema.extend({
|
|
166
|
+
message: z.string(),
|
|
167
|
+
});
|
|
100
168
|
export const JobBatchStatusCountsSchema = z.object({
|
|
101
169
|
submitted: z.number().int().nonnegative(),
|
|
102
170
|
working: z.number().int().nonnegative(),
|
|
@@ -110,8 +178,12 @@ export const JobBatchResultSchema = z
|
|
|
110
178
|
kind: z.literal("knowledge_ingest"),
|
|
111
179
|
total_count: z.number().int().nonnegative(),
|
|
112
180
|
completed_count: z.number().int().nonnegative(),
|
|
181
|
+
skipped_count: z.number().int().nonnegative(),
|
|
182
|
+
failed_count: z.number().int().nonnegative(),
|
|
113
183
|
processing: z.array(KnowledgeIngestBatchSourceSchema),
|
|
114
184
|
completed: z.array(KnowledgeIngestBatchSourceSchema),
|
|
185
|
+
skipped: z.array(KnowledgeIngestBatchSourceWithMessageSchema),
|
|
186
|
+
failed: z.array(KnowledgeIngestBatchSourceWithMessageSchema),
|
|
115
187
|
remaining: z.array(KnowledgeIngestBatchSourceSchema),
|
|
116
188
|
remaining_label: z.enum(["Remaining Files", "Not Ingested Files"]),
|
|
117
189
|
}),
|
|
@@ -142,6 +214,7 @@ export const CronJobSchema = z.object({
|
|
|
142
214
|
id: z.string().uuid(),
|
|
143
215
|
project_id: z.string().uuid(),
|
|
144
216
|
environment_id: z.string().uuid().nullable(),
|
|
217
|
+
branch_id: z.string().nullable().optional().default(null),
|
|
145
218
|
name: z.string(),
|
|
146
219
|
status: CronJobStatusSchema,
|
|
147
220
|
target: z.string(),
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as dntShim from "../../_dnt.shims.js";
|
|
2
|
+
import type { ProxyContext } from "./handler.js";
|
|
3
|
+
type ProxyError = NonNullable<ProxyContext["error"]>;
|
|
4
|
+
export declare function jsonErrorResponse(status: number, body: Record<string, unknown>): dntShim.Response;
|
|
5
|
+
export declare function createProxyErrorResponse(error: ProxyError): dntShim.Response;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=error-response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-response.d.ts","sourceRoot":"","sources":["../../../src/src/proxy/error-response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,KAAK,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AAErD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,QAAQ,CAKjG;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAmB5E"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as dntShim from "../../_dnt.shims.js";
|
|
2
|
+
import { ErrorPages } from "../server/utils/error-html.js";
|
|
3
|
+
export function jsonErrorResponse(status, body) {
|
|
4
|
+
return new dntShim.Response(JSON.stringify(body), {
|
|
5
|
+
status,
|
|
6
|
+
headers: { "Content-Type": "application/json" },
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
export function createProxyErrorResponse(error) {
|
|
10
|
+
if (error.redirectUrl) {
|
|
11
|
+
return new dntShim.Response(null, {
|
|
12
|
+
status: 302,
|
|
13
|
+
headers: { Location: error.redirectUrl },
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
if (error.slug === "release-not-found" || error.slug === "project-not-found") {
|
|
17
|
+
return new dntShim.Response(ErrorPages.notFound(), {
|
|
18
|
+
status: 404,
|
|
19
|
+
headers: { "Content-Type": "text/html; charset=utf-8" },
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return jsonErrorResponse(error.status, {
|
|
23
|
+
error: error.message,
|
|
24
|
+
status: error.status,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/src/proxy/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,kCAAkC,CAAC;AACzF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAQnD,eAAO,MAAM,sBAAsB,0MAYzB,CAAC;AAoGX,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,SAAS,GAAG,YAAY,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC9D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7D,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC9E;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/src/proxy/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,kCAAkC,CAAC;AACzF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAQnD,eAAO,MAAM,sBAAsB,0MAYzB,CAAC;AAoGX,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,SAAS,GAAG,YAAY,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,YAAY,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC9D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7D,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC9E;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAoFD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB;0BAiL1B,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,YAAY,CAAC;0BAoQvC,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;;;;;;;;0BA1XrD,MAAM,EAAE;;EAwapC;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEjE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAwB7F"}
|
package/esm/src/proxy/handler.js
CHANGED
|
@@ -90,6 +90,11 @@ function extractUserToken(cookieHeader) {
|
|
|
90
90
|
const match = cookieHeader.match(/(?:^|;\s*)authToken=([^;]+)/);
|
|
91
91
|
return match?.[1] ? decodeURIComponent(match[1]) : undefined;
|
|
92
92
|
}
|
|
93
|
+
function getStatusFromError(error) {
|
|
94
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
95
|
+
const match = message.match(/failed: (\d+)/);
|
|
96
|
+
return match ? Number(match[1]) : null;
|
|
97
|
+
}
|
|
93
98
|
async function extractUserIdFromToken(token, apiBaseUrl, log) {
|
|
94
99
|
let algorithm;
|
|
95
100
|
try {
|
|
@@ -304,6 +309,7 @@ export function createProxyHandler(options) {
|
|
|
304
309
|
const cookieHeader = req.headers.get("cookie") ?? "";
|
|
305
310
|
const userToken = extractUserToken(cookieHeader);
|
|
306
311
|
let token;
|
|
312
|
+
let tokenFetchError;
|
|
307
313
|
if (isLocalProject) {
|
|
308
314
|
logger?.debug("Local project, skipping token fetch", { localPath });
|
|
309
315
|
}
|
|
@@ -319,6 +325,7 @@ export function createProxyHandler(options) {
|
|
|
319
325
|
token = await tokenManager.getToken(scope, projectSlug, customDomain);
|
|
320
326
|
}
|
|
321
327
|
catch (error) {
|
|
328
|
+
tokenFetchError = error;
|
|
322
329
|
logger?.error("Token fetch failed", error, { projectSlug, customDomain });
|
|
323
330
|
}
|
|
324
331
|
}
|
|
@@ -328,6 +335,20 @@ export function createProxyHandler(options) {
|
|
|
328
335
|
logger?.debug("Using static API token fallback");
|
|
329
336
|
}
|
|
330
337
|
const base = { scope, host, parsedDomain };
|
|
338
|
+
if (projectSlug && scope === "preview" && !token) {
|
|
339
|
+
const status = getStatusFromError(tokenFetchError);
|
|
340
|
+
if (status === 404) {
|
|
341
|
+
logger?.info("Preview project not found", { projectSlug, host });
|
|
342
|
+
return makeErrorContext(base, 404, "Preview project not found", undefined, undefined, "project-not-found");
|
|
343
|
+
}
|
|
344
|
+
logger?.warn("Preview request has no usable token", {
|
|
345
|
+
projectSlug,
|
|
346
|
+
host,
|
|
347
|
+
hadUserToken: !!userToken,
|
|
348
|
+
hadTokenFetchError: !!tokenFetchError,
|
|
349
|
+
});
|
|
350
|
+
return makeErrorContext(base, 502, "Failed to authenticate preview request");
|
|
351
|
+
}
|
|
331
352
|
if (isCustomDomain && !projectSlug) {
|
|
332
353
|
if (!token) {
|
|
333
354
|
logger?.error("Cannot process custom domain without token", undefined, { domain: host });
|
|
@@ -380,6 +401,10 @@ export function createProxyHandler(options) {
|
|
|
380
401
|
if ("error" in resolved) {
|
|
381
402
|
return makeErrorContext(base, resolved.error.status, resolved.error.message, token, resolved.error.redirectUrl);
|
|
382
403
|
}
|
|
404
|
+
if (!resolved.projectId) {
|
|
405
|
+
logger?.info("Preview project not found after lookup", { projectSlug, host });
|
|
406
|
+
return makeErrorContext(base, 404, "Preview project not found", token, undefined, "project-not-found");
|
|
407
|
+
}
|
|
383
408
|
projectId = resolved.projectId;
|
|
384
409
|
environmentId = resolved.environmentId;
|
|
385
410
|
if (projectId) {
|
package/esm/src/proxy/main.js
CHANGED
|
@@ -25,12 +25,12 @@ import { createCacheFromEnv } from "./cache/index.js";
|
|
|
25
25
|
import { isRetryableConnectionError } from "./retry.js";
|
|
26
26
|
import { endSpan, extractContext, initializeOTLPWithApis, injectContext, ProxySpanNames, shutdownOTLP, startServerSpan, withContext, withSpan, } from "./tracing.js";
|
|
27
27
|
import { proxyLogger, runWithProxyRequestContext } from "./logger.js";
|
|
28
|
-
import { ErrorPages } from "../server/utils/error-html.js";
|
|
29
28
|
import { RendererRouter } from "./renderer-router.js";
|
|
30
29
|
import { ServerResolver } from "./server-resolver.js";
|
|
31
30
|
import { parseProjectDomain } from "../server/utils/domain-parser.js";
|
|
32
31
|
import { exit, getEnv, onSignal } from "../platform/compat/process.js";
|
|
33
32
|
import { createHttpServer, upgradeWebSocket } from "../platform/compat/http/index.js";
|
|
33
|
+
import { createProxyErrorResponse, jsonErrorResponse } from "./error-response.js";
|
|
34
34
|
function getLocalProjects() {
|
|
35
35
|
const raw = getEnv("LOCAL_PROJECTS");
|
|
36
36
|
return raw ? JSON.parse(raw) : {};
|
|
@@ -223,12 +223,6 @@ function handleWebSocketUpgrade(req) {
|
|
|
223
223
|
};
|
|
224
224
|
return response;
|
|
225
225
|
}
|
|
226
|
-
function jsonErrorResponse(status, body) {
|
|
227
|
-
return new dntShim.Response(JSON.stringify(body), {
|
|
228
|
-
status,
|
|
229
|
-
headers: { "Content-Type": "application/json" },
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
226
|
function forwardToServer(req) {
|
|
233
227
|
const startTime = performance.now();
|
|
234
228
|
const url = new URL(req.url);
|
|
@@ -254,22 +248,7 @@ function forwardToServer(req) {
|
|
|
254
248
|
const logLevel = ctx.error.status < 500 ? "warn" : "error";
|
|
255
249
|
proxyLogger[logLevel](`${ctx.error.status} ${req.method} ${url.pathname}`, { ms });
|
|
256
250
|
endSpan(spanInfo?.span, ctx.error.status);
|
|
257
|
-
|
|
258
|
-
return new dntShim.Response(null, {
|
|
259
|
-
status: 302,
|
|
260
|
-
headers: { Location: ctx.error.redirectUrl },
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
if (ctx.error.slug === "release-not-found") {
|
|
264
|
-
return new dntShim.Response(ErrorPages.notFound(), {
|
|
265
|
-
status: 404,
|
|
266
|
-
headers: { "Content-Type": "text/html; charset=utf-8" },
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
return jsonErrorResponse(ctx.error.status, {
|
|
270
|
-
error: ctx.error.message,
|
|
271
|
-
status: ctx.error.status,
|
|
272
|
-
});
|
|
251
|
+
return createProxyErrorResponse(ctx.error);
|
|
273
252
|
}
|
|
274
253
|
const reqLogger = proxyLogger.child({
|
|
275
254
|
...(ctx.projectSlug && { project: ctx.projectSlug }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-cache-helpers.d.ts","sourceRoot":"","sources":["../../../../src/src/transforms/esm/http-cache-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"http-cache-helpers.d.ts","sourceRoot":"","sources":["../../../../src/src/transforms/esm/http-cache-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAOzE;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,EAAE,CAAC;IACjC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAC3B,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC;IACvB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACpB,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,eAAe,CAAC;IAC3B,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAK3D;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEvE;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAQzD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAqBhD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA2BpD;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,eAAe,EAC1B,YAAY,GAAE,MAA8B,GAC3C,MAAM,CA4BR;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAkBrF"}
|
|
@@ -7,6 +7,8 @@ import { isAbsolute, join } from "../../platform/compat/path/index.js";
|
|
|
7
7
|
import { cwd } from "../../platform/compat/process.js";
|
|
8
8
|
import { rendererLogger } from "../../utils/index.js";
|
|
9
9
|
import { resolveImport } from "../../modules/import-map/resolver.js";
|
|
10
|
+
import { buildEsmShUrl } from "../import-rewriter/url-builder.js";
|
|
11
|
+
import { parseBarePackageSpecifier } from "../shared/package-specifier.js";
|
|
10
12
|
import { DEFAULT_REACT_VERSION, getReactImportMap } from "./package-registry.js";
|
|
11
13
|
const logger = rendererLogger.component("http-cache");
|
|
12
14
|
export function ensureAbsoluteDir(path) {
|
|
@@ -100,7 +102,11 @@ export function resolveBareSpecifier(specifier, importMap, reactVersion = DEFAUL
|
|
|
100
102
|
const mapped = resolveImport(specifier, importMap);
|
|
101
103
|
if (mapped !== specifier)
|
|
102
104
|
return mapped;
|
|
103
|
-
|
|
105
|
+
const parsed = parseBarePackageSpecifier(specifier);
|
|
106
|
+
if (parsed == null) {
|
|
107
|
+
return `https://esm.sh/${specifier}?target=es2022`;
|
|
108
|
+
}
|
|
109
|
+
return buildEsmShUrl(parsed.packageName, parsed.version ?? undefined, parsed.subpath ?? undefined);
|
|
104
110
|
}
|
|
105
111
|
/**
|
|
106
112
|
* Check if cached HTTP bundle code has file:// paths from a different environment.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bare-strategy.d.ts","sourceRoot":"","sources":["../../../../../src/src/transforms/import-rewriter/strategies/bare-strategy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACd,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"bare-strategy.d.ts","sourceRoot":"","sources":["../../../../../src/src/transforms/import-rewriter/strategies/bare-strategy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACd,MAAM,aAAa,CAAC;AA8BrB,qBAAa,YAAa,YAAW,qBAAqB;IACxD,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,QAAQ,KAAK;IAEtB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO;IAsBzD,OAAO,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,cAAc,GAAG,aAAa;CAwBvE;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
|
@@ -6,14 +6,12 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { rendererLogger } from "../../../utils/index.js";
|
|
8
8
|
import { buildEsmShUrl, TAILWIND_VERSION } from "../url-builder.js";
|
|
9
|
+
import { parseBarePackageSpecifier } from "../../shared/package-specifier.js";
|
|
9
10
|
const logger = rendererLogger.component("esm");
|
|
10
11
|
const unversionedImportsWarned = new Set();
|
|
11
12
|
function hasVersionSpecifier(specifier) {
|
|
12
13
|
return /@[\d^~x][\d.x^~-]*(?=\/|$)/.test(specifier);
|
|
13
14
|
}
|
|
14
|
-
function normalizeVersionedSpecifier(specifier) {
|
|
15
|
-
return specifier.replace(/@[\d^~x][\d.x^~-]*(?=\/|$)/, "");
|
|
16
|
-
}
|
|
17
15
|
function warnUnversionedImport(specifier, projectId) {
|
|
18
16
|
const key = `${projectId}:${specifier}`;
|
|
19
17
|
if (unversionedImportsWarned.has(key))
|
|
@@ -53,15 +51,20 @@ export class BareStrategy {
|
|
|
53
51
|
rewrite(info, ctx) {
|
|
54
52
|
if (ctx.target === "ssr")
|
|
55
53
|
return { specifier: null };
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
const parsed = parseBarePackageSpecifier(info.specifier);
|
|
55
|
+
if (parsed == null) {
|
|
56
|
+
return { specifier: null };
|
|
57
|
+
}
|
|
58
|
+
const packageName = parsed.packageName;
|
|
59
|
+
let version = parsed.version ?? undefined;
|
|
60
|
+
const subpath = parsed.subpath ?? undefined;
|
|
61
|
+
if (packageName === "tailwindcss") {
|
|
62
|
+
version = TAILWIND_VERSION;
|
|
60
63
|
}
|
|
61
64
|
else if (!hasVersionSpecifier(info.specifier)) {
|
|
62
65
|
warnUnversionedImport(info.specifier, ctx.projectId);
|
|
63
66
|
}
|
|
64
|
-
const url = buildEsmShUrl(
|
|
67
|
+
const url = buildEsmShUrl(packageName, version, subpath, {
|
|
65
68
|
external: ["react"],
|
|
66
69
|
});
|
|
67
70
|
return { specifier: url };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface ParsedBarePackageSpecifier {
|
|
2
|
+
packageName: string;
|
|
3
|
+
version: string | null;
|
|
4
|
+
subpath: string | null;
|
|
5
|
+
}
|
|
6
|
+
export declare function parseBarePackageSpecifier(specifier: string): ParsedBarePackageSpecifier | null;
|
|
7
|
+
//# sourceMappingURL=package-specifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-specifier.d.ts","sourceRoot":"","sources":["../../../../src/src/transforms/shared/package-specifier.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,GAChB,0BAA0B,GAAG,IAAI,CAoBnC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export function parseBarePackageSpecifier(specifier) {
|
|
2
|
+
const scopedMatch = specifier.match(/^(@[^/]+\/[^/@]+)(?:@([^/]+))?(\/.*)?$/);
|
|
3
|
+
if (scopedMatch?.[1]) {
|
|
4
|
+
return {
|
|
5
|
+
packageName: scopedMatch[1],
|
|
6
|
+
version: scopedMatch[2] ?? null,
|
|
7
|
+
subpath: scopedMatch[3] ?? null,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
const unscopedMatch = specifier.match(/^([^/@][^/@]*?)(?:@([^/]+))?(\/.*)?$/);
|
|
11
|
+
if (unscopedMatch?.[1]) {
|
|
12
|
+
return {
|
|
13
|
+
packageName: unscopedMatch[1],
|
|
14
|
+
version: unscopedMatch[2] ?? null,
|
|
15
|
+
subpath: unscopedMatch[3] ?? null,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
return null;
|
|
19
|
+
}
|