veryfront 0.1.83 → 0.1.85

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.
Files changed (56) hide show
  1. package/esm/cli/commands/knowledge/command.d.ts +10 -13
  2. package/esm/cli/commands/knowledge/command.d.ts.map +1 -1
  3. package/esm/cli/commands/knowledge/command.js +294 -110
  4. package/esm/cli/commands/knowledge/parser-source.d.ts.map +1 -1
  5. package/esm/cli/commands/knowledge/parser-source.js +52 -0
  6. package/esm/cli/commands/knowledge/result.d.ts +54 -0
  7. package/esm/cli/commands/knowledge/result.d.ts.map +1 -0
  8. package/esm/cli/commands/knowledge/result.js +22 -0
  9. package/esm/cli/commands/knowledge/source-policy.d.ts +11 -0
  10. package/esm/cli/commands/knowledge/source-policy.d.ts.map +1 -0
  11. package/esm/cli/commands/knowledge/source-policy.js +135 -0
  12. package/esm/deno.js +1 -1
  13. package/esm/src/jobs/index.d.ts +1 -1
  14. package/esm/src/jobs/index.d.ts.map +1 -1
  15. package/esm/src/jobs/index.js +1 -1
  16. package/esm/src/jobs/schemas.d.ts +1104 -185
  17. package/esm/src/jobs/schemas.d.ts.map +1 -1
  18. package/esm/src/jobs/schemas.js +81 -8
  19. package/esm/src/proxy/error-response.d.ts +7 -0
  20. package/esm/src/proxy/error-response.d.ts.map +1 -0
  21. package/esm/src/proxy/error-response.js +26 -0
  22. package/esm/src/proxy/handler.d.ts.map +1 -1
  23. package/esm/src/proxy/handler.js +25 -0
  24. package/esm/src/proxy/main.js +2 -23
  25. package/esm/src/rendering/orchestrator/css-candidate-manifest.d.ts +11 -0
  26. package/esm/src/rendering/orchestrator/css-candidate-manifest.d.ts.map +1 -1
  27. package/esm/src/rendering/orchestrator/css-candidate-manifest.js +23 -12
  28. package/esm/src/server/handlers/dev/styles-candidate-scanner.d.ts.map +1 -1
  29. package/esm/src/server/handlers/dev/styles-candidate-scanner.js +25 -8
  30. package/esm/src/server/handlers/dev/styles-css.handler.d.ts +1 -0
  31. package/esm/src/server/handlers/dev/styles-css.handler.d.ts.map +1 -1
  32. package/esm/src/server/handlers/dev/styles-css.handler.js +15 -5
  33. package/esm/src/transforms/esm/http-cache-helpers.d.ts.map +1 -1
  34. package/esm/src/transforms/esm/http-cache-helpers.js +7 -1
  35. package/esm/src/transforms/import-rewriter/strategies/bare-strategy.d.ts.map +1 -1
  36. package/esm/src/transforms/import-rewriter/strategies/bare-strategy.js +11 -8
  37. package/esm/src/transforms/shared/package-specifier.d.ts +7 -0
  38. package/esm/src/transforms/shared/package-specifier.d.ts.map +1 -0
  39. package/esm/src/transforms/shared/package-specifier.js +19 -0
  40. package/package.json +1 -1
  41. package/src/cli/commands/knowledge/command.ts +375 -139
  42. package/src/cli/commands/knowledge/parser-source.ts +52 -0
  43. package/src/cli/commands/knowledge/result.ts +88 -0
  44. package/src/cli/commands/knowledge/source-policy.ts +164 -0
  45. package/src/deno.js +1 -1
  46. package/src/src/jobs/index.ts +16 -0
  47. package/src/src/jobs/schemas.ts +105 -8
  48. package/src/src/proxy/error-response.ts +33 -0
  49. package/src/src/proxy/handler.ts +43 -0
  50. package/src/src/proxy/main.ts +2 -27
  51. package/src/src/rendering/orchestrator/css-candidate-manifest.ts +40 -14
  52. package/src/src/server/handlers/dev/styles-candidate-scanner.ts +37 -11
  53. package/src/src/server/handlers/dev/styles-css.handler.ts +25 -4
  54. package/src/src/transforms/esm/http-cache-helpers.ts +12 -1
  55. package/src/src/transforms/import-rewriter/strategies/bare-strategy.ts +11 -12
  56. 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":"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"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/src/jobs/schemas.ts"],"names":[],"mappings":"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"}
@@ -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
- files: z.array(KnowledgeIngestFileResultSchema),
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
- artifacts: z.array(z.unknown()),
96
+ artifact_count: z.number().int().nonnegative(),
42
97
  }),
43
98
  ])
44
99
  .nullable();
45
- export const JobSchema = z.object({
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(JobSchema),
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;AA8ED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB;0BAiL1B,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,YAAY,CAAC;0BA+NvC,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;;;;;;;;0BArVrD,MAAM,EAAE;;EAmYpC;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"}
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"}
@@ -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) {
@@ -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
- if (ctx.error.redirectUrl) {
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 }),
@@ -11,10 +11,21 @@ interface RouteCandidateOptions {
11
11
  files: SourceFileLike[];
12
12
  developmentMode: boolean;
13
13
  }
14
+ interface ProjectCandidateOptions {
15
+ projectScope: string;
16
+ projectVersion: string;
17
+ projectDir: string;
18
+ files: SourceFileLike[];
19
+ developmentMode: boolean;
20
+ }
14
21
  /**
15
22
  * Resolve route-scoped Tailwind candidates from a precomputed per-project manifest.
16
23
  */
17
24
  export declare function getRouteCandidates(options: RouteCandidateOptions): Set<string>;
25
+ /**
26
+ * Resolve full-project Tailwind candidates from a precomputed per-project manifest.
27
+ */
28
+ export declare function getProjectCandidates(options: ProjectCandidateOptions): Set<string>;
18
29
  /**
19
30
  * Invalidate cached candidate manifests for one project scope (or all scopes).
20
31
  */
@@ -1 +1 @@
1
- {"version":3,"file":"css-candidate-manifest.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/css-candidate-manifest.ts"],"names":[],"mappings":"AAIA,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAQD,UAAU,qBAAqB;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAmFD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,qBAAqB,GAAG,GAAG,CAAC,MAAM,CAAC,CA+C9E;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAc/E"}
1
+ {"version":3,"file":"css-candidate-manifest.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/css-candidate-manifest.ts"],"names":[],"mappings":"AAIA,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAQD,UAAU,qBAAqB;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,UAAU,uBAAuB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;CAC1B;AA0GD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,qBAAqB,GAAG,GAAG,CAAC,MAAM,CAAC,CAkC9E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,uBAAuB,GAAG,GAAG,CAAC,MAAM,CAAC,CAGlF;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAc/E"}
@@ -58,6 +58,21 @@ function buildCandidateManifest(files, projectDir) {
58
58
  }
59
59
  return { fileCandidates, allCandidates, builtAt: Date.now() };
60
60
  }
61
+ function getOrBuildManifest(options) {
62
+ const manifestKey = buildManifestCacheKey(options.projectScope, options.projectVersion);
63
+ const existingManifest = manifestCache.get(manifestKey);
64
+ const manifest = shouldRebuildManifest(existingManifest, options.developmentMode)
65
+ ? buildCandidateManifest(options.files, options.projectDir)
66
+ : existingManifest;
67
+ if (manifest !== existingManifest) {
68
+ manifestCache.set(manifestKey, manifest);
69
+ for (const key of routeCandidateCache.keys()) {
70
+ if (key.startsWith(`${manifestKey}:`))
71
+ routeCandidateCache.delete(key);
72
+ }
73
+ }
74
+ return manifest;
75
+ }
61
76
  function addCandidatesForPath(target, manifest, path, projectDir) {
62
77
  const absolutePath = normalizePath(path);
63
78
  const relativePath = toRelativeProjectPath(path, projectDir);
@@ -73,18 +88,7 @@ function addCandidatesForPath(target, manifest, path, projectDir) {
73
88
  */
74
89
  export function getRouteCandidates(options) {
75
90
  const manifestKey = buildManifestCacheKey(options.projectScope, options.projectVersion);
76
- const existingManifest = manifestCache.get(manifestKey);
77
- const manifest = shouldRebuildManifest(existingManifest, options.developmentMode)
78
- ? buildCandidateManifest(options.files, options.projectDir)
79
- : existingManifest;
80
- if (manifest !== existingManifest) {
81
- manifestCache.set(manifestKey, manifest);
82
- // Clear route subsets when project-level file manifest is rebuilt.
83
- for (const key of routeCandidateCache.keys()) {
84
- if (key.startsWith(`${manifestKey}:`))
85
- routeCandidateCache.delete(key);
86
- }
87
- }
91
+ const manifest = getOrBuildManifest(options);
88
92
  const routeCacheKey = `${manifestKey}:${options.routeKey}`;
89
93
  const cachedRoute = routeCandidateCache.get(routeCacheKey);
90
94
  if (cachedRoute)
@@ -112,6 +116,13 @@ export function getRouteCandidates(options) {
112
116
  });
113
117
  return new Set(routeCandidates);
114
118
  }
119
+ /**
120
+ * Resolve full-project Tailwind candidates from a precomputed per-project manifest.
121
+ */
122
+ export function getProjectCandidates(options) {
123
+ const manifest = getOrBuildManifest(options);
124
+ return new Set(manifest.allCandidates);
125
+ }
115
126
  /**
116
127
  * Invalidate cached candidate manifests for one project scope (or all scopes).
117
128
  */
@@ -1 +1 @@
1
- {"version":3,"file":"styles-candidate-scanner.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/dev/styles-candidate-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAWlD;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAqCxF"}
1
+ {"version":3,"file":"styles-candidate-scanner.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/dev/styles-candidate-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA8BlD;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CA0CxF"}
@@ -11,12 +11,26 @@ import { extractCandidates } from "../../../html/styles-builder/tailwind-compile
11
11
  import { serverLogger } from "../../../utils/index.js";
12
12
  import { createFileSystem } from "../../../platform/compat/fs.js";
13
13
  import { join } from "../../../platform/compat/path/index.js";
14
+ import { getProjectCandidates } from "../../../rendering/orchestrator/css-candidate-manifest.js";
14
15
  import { FRAMEWORK_CANDIDATES } from "./framework-candidates.generated.js";
15
16
  const logger = serverLogger.component("styles-candidate-scanner");
16
17
  const SOURCE_EXTENSIONS = [".tsx", ".jsx", ".mdx", ".ts", ".js"];
17
18
  const SKIP_DIRS = new Set(["node_modules", ".cache", ".git", "dist", "build", ".vscode"]);
18
19
  /** De-duplicated set of framework candidates, computed once at import time. */
19
20
  const frameworkCandidates = new Set(FRAMEWORK_CANDIDATES);
21
+ function resolveProjectVersion(ctx, contentContext) {
22
+ if (contentContext?.releaseId)
23
+ return `release:${contentContext.releaseId}`;
24
+ if (contentContext?.branch)
25
+ return `branch:${contentContext.branch}`;
26
+ if (contentContext?.environmentName)
27
+ return `environment:${contentContext.environmentName}`;
28
+ if (ctx.releaseId)
29
+ return `release:${ctx.releaseId}`;
30
+ if (ctx.parsedDomain?.branch)
31
+ return `branch:${ctx.parsedDomain.branch}`;
32
+ return "live";
33
+ }
20
34
  /**
21
35
  * Extract Tailwind CSS candidate class names from all project source files.
22
36
  *
@@ -38,14 +52,17 @@ export async function extractProjectCandidates(ctx) {
38
52
  }
39
53
  const candidates = new Set(frameworkCandidates);
40
54
  const files = await fsAdapter.getAllSourceFiles();
41
- for (const file of files) {
42
- if (!file.content)
43
- continue;
44
- if (!SOURCE_EXTENSIONS.some((ext) => file.path.endsWith(ext)))
45
- continue;
46
- for (const cls of extractCandidates(file.content)) {
47
- candidates.add(cls);
48
- }
55
+ const contentContext = typeof fsAdapter.getContentContext === "function"
56
+ ? fsAdapter.getContentContext()
57
+ : null;
58
+ for (const cls of getProjectCandidates({
59
+ projectScope: ctx.projectSlug ?? contentContext?.projectSlug ?? ctx.projectDir,
60
+ projectVersion: resolveProjectVersion(ctx, contentContext),
61
+ projectDir: ctx.projectDir,
62
+ files,
63
+ developmentMode: contentContext?.sourceType === "branch",
64
+ })) {
65
+ candidates.add(cls);
49
66
  }
50
67
  return candidates;
51
68
  }
@@ -11,5 +11,6 @@ export declare class StylesCSSHandler extends BaseHandler {
11
11
  metadata: HandlerMetadata;
12
12
  handle(req: dntShim.Request, ctx: HandlerContext): Promise<HandlerResult>;
13
13
  private loadStylesheet;
14
+ private generateStylesheet;
14
15
  }
15
16
  //# sourceMappingURL=styles-css.handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles-css.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/dev/styles-css.handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,OAAO,MAAM,2BAA2B,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAanG,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,QAAQ,EAAE,eAAe,CAKvB;IAEI,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;YAkGjE,cAAc;CAiB7B"}
1
+ {"version":3,"file":"styles-css.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/dev/styles-css.handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,OAAO,MAAM,2BAA2B,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAkBnG,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,QAAQ,EAAE,eAAe,CAKvB;IAEI,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;YAkGjE,cAAc;IAkB5B,OAAO,CAAC,kBAAkB;CAe3B"}
@@ -1,7 +1,7 @@
1
1
  import { BaseHandler } from "../response/base.js";
2
2
  import { HTTP_OK, PRIORITY_HIGH_DEV } from "../../../utils/constants/index.js";
3
3
  import { joinPath } from "../../../utils/path-utils.js";
4
- import { formatCSSError, generateTailwindCSS, } from "../../../html/styles-builder/tailwind-compiler.js";
4
+ import { formatCSSError, generateTailwindCSS, getProjectCSS, } from "../../../html/styles-builder/tailwind-compiler.js";
5
5
  import { DEFAULT_STYLESHEET } from "../../../html/styles-builder/css-hash-cache.js";
6
6
  import { serverLogger } from "../../../utils/index.js";
7
7
  import { extractProjectCandidates } from "./styles-candidate-scanner.js";
@@ -39,10 +39,8 @@ export class StylesCSSHandler extends BaseHandler {
39
39
  });
40
40
  candidates = new Set();
41
41
  }
42
- const result = await generateTailwindCSS(rawCss, candidates, {
43
- projectSlug: ctx.projectSlug,
44
- });
45
- if (result.error) {
42
+ const result = await this.generateStylesheet(ctx, rawCss, candidates);
43
+ if ("error" in result && result.error) {
46
44
  const formatted = formatCSSError(result.error);
47
45
  logger.error("Tailwind error", {
48
46
  error: formatted.message,
@@ -82,6 +80,8 @@ body::before {
82
80
  logger.debug("CSS generated", {
83
81
  candidates: candidates.size,
84
82
  cssLength: result.css.length,
83
+ fromCache: "fromCache" in result ? result.fromCache : false,
84
+ cssHash: "hash" in result ? result.hash : undefined,
85
85
  });
86
86
  return this.respond(responseBuilder.withContentType("text/css; charset=utf-8", result.css, HTTP_OK));
87
87
  });
@@ -114,4 +114,14 @@ body::before {
114
114
  return DEFAULT_STYLESHEET;
115
115
  }
116
116
  }
117
+ generateStylesheet(ctx, rawCss, candidates) {
118
+ if (!ctx.projectSlug) {
119
+ return generateTailwindCSS(rawCss, candidates);
120
+ }
121
+ return getProjectCSS(ctx.projectSlug, rawCss, candidates, {
122
+ minify: true,
123
+ environment: "preview",
124
+ buildMode: "production",
125
+ });
126
+ }
117
127
  }
@@ -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;AAKzE;;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,CAmBR;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAkBrF"}
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
- return `https://esm.sh/${specifier}?target=es2022`;
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;AAiCrB,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;CAsBvE;AAED,eAAO,MAAM,YAAY,cAAqB,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 normalized = normalizeVersionedSpecifier(info.specifier);
57
- let finalSpecifier = normalized;
58
- if (normalized === "tailwindcss" || normalized.startsWith("tailwindcss/")) {
59
- finalSpecifier = normalized.replace(/^tailwindcss/, `tailwindcss@${TAILWIND_VERSION}`);
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(finalSpecifier, undefined, undefined, {
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