veryfront 0.1.1114 → 0.1.1116
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/deploy/command.d.ts +3 -0
- package/esm/cli/commands/deploy/command.d.ts.map +1 -1
- package/esm/cli/commands/deploy/command.js +4 -4
- package/esm/cli/commands/up/command.d.ts +3 -0
- package/esm/cli/commands/up/command.d.ts.map +1 -1
- package/esm/cli/commands/up/command.js +4 -2
- package/esm/cli/skills/loader.d.ts +4 -4
- package/esm/cli/skills/loader.d.ts.map +1 -1
- package/esm/cli/skills/loader.js +6 -6
- package/esm/deno.js +1 -1
- package/esm/src/agent/hosted/chat-preparation.d.ts.map +1 -1
- package/esm/src/agent/hosted/chat-preparation.js +1 -0
- package/esm/src/agent/hosted/chat-request-parser.d.ts +1 -0
- package/esm/src/agent/hosted/chat-request-parser.d.ts.map +1 -1
- package/esm/src/agent/hosted/chat-request-parser.js +42 -7
- package/esm/src/agent/hosted/chat-runtime-contract.d.ts +1 -0
- package/esm/src/agent/hosted/chat-runtime-contract.d.ts.map +1 -1
- package/esm/src/agent/hosted/default-chat-runtime.d.ts +1 -0
- package/esm/src/agent/hosted/default-chat-runtime.d.ts.map +1 -1
- package/esm/src/agent/hosted/default-chat-runtime.js +16 -1
- package/esm/src/agent/runtime/index.d.ts.map +1 -1
- package/esm/src/agent/runtime/index.js +4 -8
- package/esm/src/agent/service/auth.d.ts +1 -0
- package/esm/src/agent/service/auth.d.ts.map +1 -1
- package/esm/src/agent/service/auth.js +14 -0
- package/esm/src/agent/service/routes.d.ts +1 -0
- package/esm/src/agent/service/routes.d.ts.map +1 -1
- package/esm/src/data/server-data-fetcher.d.ts.map +1 -1
- package/esm/src/data/server-data-fetcher.js +5 -1
- package/esm/src/html/hydration-script-builder/templates/router.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/templates/router.js +87 -24
- package/esm/src/integrations/remote-tools.d.ts.map +1 -1
- package/esm/src/integrations/remote-tools.js +5 -2
- package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/pipeline.js +26 -8
- package/esm/src/rendering/script-page-handling.js +1 -1
- package/esm/src/routing/api/module-loader/external-import-rewriter.js +1 -1
- package/esm/src/sandbox/lazy-sandbox.d.ts +1 -0
- package/esm/src/sandbox/lazy-sandbox.d.ts.map +1 -1
- package/esm/src/sandbox/lazy-sandbox.js +21 -5
- package/esm/src/server/handlers/request/module/page-data-endpoint-handler.d.ts.map +1 -1
- package/esm/src/server/handlers/request/module/page-data-endpoint-handler.js +6 -3
- package/esm/src/transforms/npm-import-rewrites.d.ts +3 -3
- package/esm/src/transforms/npm-import-rewrites.d.ts.map +1 -1
- package/esm/src/transforms/npm-import-rewrites.js +29 -14
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +5 -5
|
@@ -72,6 +72,18 @@ function decodeBase64Url(input) {
|
|
|
72
72
|
function isRecord(value) {
|
|
73
73
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
74
74
|
}
|
|
75
|
+
async function readProjectSlugFromAccessResponse(response) {
|
|
76
|
+
try {
|
|
77
|
+
const body = await response.json();
|
|
78
|
+
if (!isRecord(body))
|
|
79
|
+
return undefined;
|
|
80
|
+
const slug = typeof body.slug === "string" ? body.slug.trim() : "";
|
|
81
|
+
return slug || undefined;
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
75
87
|
function parseJsonObject(json) {
|
|
76
88
|
const parsed = JSON.parse(json);
|
|
77
89
|
return isRecord(parsed) ? parsed : null;
|
|
@@ -262,9 +274,11 @@ export function createHostedServiceAuth(options) {
|
|
|
262
274
|
},
|
|
263
275
|
};
|
|
264
276
|
}
|
|
277
|
+
const projectSlug = await readProjectSlugFromAccessResponse(response);
|
|
265
278
|
return {
|
|
266
279
|
success: true,
|
|
267
280
|
projectId,
|
|
281
|
+
...(projectSlug ? { projectSlug } : {}),
|
|
268
282
|
};
|
|
269
283
|
}
|
|
270
284
|
catch (error) {
|
|
@@ -50,6 +50,7 @@ export type HostedAgentServiceRouteSetOptions<TExecution extends object> = {
|
|
|
50
50
|
authenticateRequest: (request: Request) => Promise<HostedServiceAuthenticatedRequest | Response>;
|
|
51
51
|
verifyProjectAccess: (projectId: string, authToken: string) => Promise<{
|
|
52
52
|
success: true;
|
|
53
|
+
projectSlug?: string;
|
|
53
54
|
} | {
|
|
54
55
|
success: false;
|
|
55
56
|
error: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/service/routes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/service/routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-data-fetcher.d.ts","sourceRoot":"","sources":["../../../src/src/data/server-data-fetcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAcxE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,iBAAiB;IAC5B,KAAK,CACH,UAAU,EAAE,YAAY,EACxB,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"server-data-fetcher.d.ts","sourceRoot":"","sources":["../../../src/src/data/server-data-fetcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAcxE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,iBAAiB;IAC5B,KAAK,CACH,UAAU,EAAE,YAAY,EACxB,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,UAAU,CAAC;IA2FtB;;OAEG;YACW,aAAa;IAqE3B;;;OAGG;IACH,OAAO,CAAC,QAAQ;CAGjB"}
|
|
@@ -15,7 +15,9 @@ export class ServerDataFetcher {
|
|
|
15
15
|
}
|
|
16
16
|
const pathname = context.url?.pathname ?? "unknown";
|
|
17
17
|
const projectId = context.request?.headers?.get("x-project-id") ?? "default";
|
|
18
|
-
const
|
|
18
|
+
const isPrefetch = context.request?.headers?.get("x-veryfront-prefetch") === "1";
|
|
19
|
+
const breakerNamespace = isPrefetch ? "data-prefetch" : "data-fetch";
|
|
20
|
+
const circuitBreaker = getCircuitBreaker(`${breakerNamespace}:${projectId}`, {
|
|
19
21
|
failureThreshold: 5,
|
|
20
22
|
resetTimeoutMs: 30_000,
|
|
21
23
|
successThreshold: 2,
|
|
@@ -55,6 +57,7 @@ export class ServerDataFetcher {
|
|
|
55
57
|
serverLogger.warn("DATA_FETCH_CIRCUIT_OPEN circuit breaker open, failing fast", {
|
|
56
58
|
pathname,
|
|
57
59
|
projectId,
|
|
60
|
+
breakerNamespace,
|
|
58
61
|
retryAfterMs: error.nextAttemptMs,
|
|
59
62
|
});
|
|
60
63
|
throw error;
|
|
@@ -79,6 +82,7 @@ export class ServerDataFetcher {
|
|
|
79
82
|
"data.pathname": pathname,
|
|
80
83
|
"data.timeout_ms": DATA_FETCH_TIMEOUT_MS,
|
|
81
84
|
"data.project_id": projectId,
|
|
85
|
+
"data.prefetch": isPrefetch,
|
|
82
86
|
"data.isolated": useIsolation,
|
|
83
87
|
});
|
|
84
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../../../src/src/html/hydration-script-builder/templates/router.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../../../src/src/html/hydration-script-builder/templates/router.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,cA4sC3B,CAAC"}
|
|
@@ -39,6 +39,7 @@ export const getRouterScript = () => `
|
|
|
39
39
|
const IDLE_PREFETCH_DELAY_MS = 1200;
|
|
40
40
|
const IDLE_PREFETCH_MAX_LINKS = 4;
|
|
41
41
|
const VIEWPORT_PREFETCH_MAX_LINKS = 8;
|
|
42
|
+
const PAGE_DATA_PREFETCH_CONCURRENCY = 2;
|
|
42
43
|
const VIEWPORT_PREFETCH_ROOT_MARGIN = '200px';
|
|
43
44
|
const MAX_ROUTE_TIMINGS = 100;
|
|
44
45
|
const MAX_SERVER_TIMING_LENGTH = 1024;
|
|
@@ -54,6 +55,10 @@ export const getRouterScript = () => `
|
|
|
54
55
|
log(reason + ' failed:', path, message);
|
|
55
56
|
}
|
|
56
57
|
|
|
58
|
+
function isAbortError(error) {
|
|
59
|
+
return error?.name === 'AbortError';
|
|
60
|
+
}
|
|
61
|
+
|
|
57
62
|
function getDocumentNonce() {
|
|
58
63
|
const element = document.querySelector('script[nonce], style[nonce], link[nonce]');
|
|
59
64
|
if (!element) return undefined;
|
|
@@ -407,11 +412,16 @@ export const getRouterScript = () => `
|
|
|
407
412
|
async function fetchWithRetry(url, options, maxRetries = MAX_RETRIES) {
|
|
408
413
|
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
409
414
|
const controller = new AbortController();
|
|
415
|
+
const callerSignal = options.signal;
|
|
416
|
+
const abortFromCaller = () => controller.abort();
|
|
417
|
+
if (callerSignal?.aborted) controller.abort();
|
|
418
|
+
callerSignal?.addEventListener('abort', abortFromCaller, { once: true });
|
|
410
419
|
const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
|
|
411
420
|
|
|
412
421
|
try {
|
|
413
422
|
const response = await fetch(url, { ...options, signal: controller.signal });
|
|
414
423
|
clearTimeout(timeout);
|
|
424
|
+
callerSignal?.removeEventListener('abort', abortFromCaller);
|
|
415
425
|
|
|
416
426
|
if (response.ok) return response;
|
|
417
427
|
|
|
@@ -424,8 +434,9 @@ export const getRouterScript = () => `
|
|
|
424
434
|
return response;
|
|
425
435
|
} catch (error) {
|
|
426
436
|
clearTimeout(timeout);
|
|
437
|
+
callerSignal?.removeEventListener('abort', abortFromCaller);
|
|
427
438
|
|
|
428
|
-
if (error.name === 'AbortError' &&
|
|
439
|
+
if (error.name === 'AbortError' && callerSignal?.aborted) throw error;
|
|
429
440
|
if (attempt === maxRetries) throw error;
|
|
430
441
|
|
|
431
442
|
log('Fetch failed, retrying...', error.message);
|
|
@@ -450,10 +461,13 @@ export const getRouterScript = () => `
|
|
|
450
461
|
log('Fetching page data:', path);
|
|
451
462
|
perfStart('fetch:' + path);
|
|
452
463
|
|
|
464
|
+
const headers = options.prefetch
|
|
465
|
+
? { 'X-Veryfront-Prefetch': '1' }
|
|
466
|
+
: { 'X-Veryfront-Navigation': 'spa' };
|
|
453
467
|
const response = await fetchWithRetry(endpoint, {
|
|
454
|
-
headers
|
|
468
|
+
headers,
|
|
455
469
|
signal
|
|
456
|
-
});
|
|
470
|
+
}, options.prefetch ? 0 : MAX_RETRIES);
|
|
457
471
|
|
|
458
472
|
if (!response.ok) {
|
|
459
473
|
perfEnd('fetch:' + path);
|
|
@@ -504,11 +518,13 @@ export const getRouterScript = () => `
|
|
|
504
518
|
|
|
505
519
|
function startPageDataFetch(path, signal, options = {}) {
|
|
506
520
|
const request = fetchPageDataFresh(path, signal, options).finally(() => {
|
|
507
|
-
if (pendingPageDataFetches.get(path) === request) {
|
|
521
|
+
if (options.trackPending !== false && pendingPageDataFetches.get(path) === request) {
|
|
508
522
|
pendingPageDataFetches.delete(path);
|
|
509
523
|
}
|
|
510
524
|
});
|
|
511
|
-
|
|
525
|
+
if (options.trackPending !== false) {
|
|
526
|
+
pendingPageDataFetches.set(path, request);
|
|
527
|
+
}
|
|
512
528
|
return request;
|
|
513
529
|
}
|
|
514
530
|
|
|
@@ -555,12 +571,15 @@ export const getRouterScript = () => `
|
|
|
555
571
|
});
|
|
556
572
|
}
|
|
557
573
|
|
|
558
|
-
async function fetchPageDataForPrefetch(path) {
|
|
574
|
+
async function fetchPageDataForPrefetch(path, signal) {
|
|
559
575
|
if (getCachedPageData(path)) return;
|
|
560
|
-
return
|
|
576
|
+
return startPageDataFetch(path, signal, { prefetch: true, trackPending: false })
|
|
561
577
|
.then((data) => preloadModulesForPageData(data, path))
|
|
562
578
|
.catch((error) => {
|
|
563
|
-
|
|
579
|
+
if (!isAbortError(error)) {
|
|
580
|
+
logBackgroundFetchFailure('Page data prefetch', path, error);
|
|
581
|
+
}
|
|
582
|
+
throw error;
|
|
564
583
|
});
|
|
565
584
|
}
|
|
566
585
|
|
|
@@ -578,6 +597,9 @@ export const getRouterScript = () => `
|
|
|
578
597
|
|
|
579
598
|
if (isNavigating) return;
|
|
580
599
|
isNavigating = true;
|
|
600
|
+
const [navigationPath] = href.split('#');
|
|
601
|
+
removeQueuedPrefetch(navigationPath || href);
|
|
602
|
+
abortActiveSpeculativePrefetches();
|
|
581
603
|
|
|
582
604
|
currentAbortController = new AbortController();
|
|
583
605
|
const signal = currentAbortController.signal;
|
|
@@ -654,6 +676,7 @@ export const getRouterScript = () => `
|
|
|
654
676
|
} finally {
|
|
655
677
|
isNavigating = false;
|
|
656
678
|
currentAbortController = null;
|
|
679
|
+
processPageDataPrefetchQueue();
|
|
657
680
|
}
|
|
658
681
|
}
|
|
659
682
|
|
|
@@ -810,6 +833,9 @@ export const getRouterScript = () => `
|
|
|
810
833
|
const observedPrefetchLinks = new WeakSet();
|
|
811
834
|
const prefetchedPaths = new Set();
|
|
812
835
|
const inFlightPrefetches = new Set();
|
|
836
|
+
const queuedPrefetchPaths = new Set();
|
|
837
|
+
const pageDataPrefetchQueue = [];
|
|
838
|
+
const activePageDataPrefetchControllers = new Map();
|
|
813
839
|
|
|
814
840
|
function cancelScheduledPrefetch() {
|
|
815
841
|
if (prefetchTimeout) {
|
|
@@ -895,9 +921,58 @@ export const getRouterScript = () => `
|
|
|
895
921
|
}
|
|
896
922
|
}
|
|
897
923
|
|
|
924
|
+
function removeQueuedPrefetch(path) {
|
|
925
|
+
queuedPrefetchPaths.delete(path);
|
|
926
|
+
for (let i = pageDataPrefetchQueue.length - 1; i >= 0; i--) {
|
|
927
|
+
if (pageDataPrefetchQueue[i] === path) pageDataPrefetchQueue.splice(i, 1);
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
function abortActiveSpeculativePrefetches() {
|
|
932
|
+
for (const controller of activePageDataPrefetchControllers.values()) {
|
|
933
|
+
controller.abort();
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
function processPageDataPrefetchQueue() {
|
|
938
|
+
if (isNavigating) return;
|
|
939
|
+
|
|
940
|
+
while (
|
|
941
|
+
activePageDataPrefetchControllers.size < PAGE_DATA_PREFETCH_CONCURRENCY &&
|
|
942
|
+
pageDataPrefetchQueue.length > 0
|
|
943
|
+
) {
|
|
944
|
+
const href = pageDataPrefetchQueue.shift();
|
|
945
|
+
queuedPrefetchPaths.delete(href);
|
|
946
|
+
|
|
947
|
+
if (prefetchedPaths.has(href) || inFlightPrefetches.has(href) || getCachedPageData(href)) {
|
|
948
|
+
continue;
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
if (prefetchedPaths.size >= MAX_PREFETCH_PATHS) {
|
|
952
|
+
const oldest = prefetchedPaths.values().next().value;
|
|
953
|
+
if (oldest) prefetchedPaths.delete(oldest);
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
const controller = new AbortController();
|
|
957
|
+
prefetchedPaths.add(href);
|
|
958
|
+
inFlightPrefetches.add(href);
|
|
959
|
+
activePageDataPrefetchControllers.set(href, controller);
|
|
960
|
+
|
|
961
|
+
fetchPageDataForPrefetch(href, controller.signal)
|
|
962
|
+
.catch(() => {
|
|
963
|
+
prefetchedPaths.delete(href);
|
|
964
|
+
})
|
|
965
|
+
.finally(() => {
|
|
966
|
+
inFlightPrefetches.delete(href);
|
|
967
|
+
activePageDataPrefetchControllers.delete(href);
|
|
968
|
+
processPageDataPrefetchQueue();
|
|
969
|
+
});
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
|
|
898
973
|
function prefetchPage(href) {
|
|
899
974
|
if (isNavigating) return;
|
|
900
|
-
if (prefetchedPaths.has(href) || inFlightPrefetches.has(href)) return;
|
|
975
|
+
if (prefetchedPaths.has(href) || inFlightPrefetches.has(href) || queuedPrefetchPaths.has(href)) return;
|
|
901
976
|
|
|
902
977
|
const cachedPageData = getCachedPageData(href);
|
|
903
978
|
if (cachedPageData) {
|
|
@@ -907,21 +982,9 @@ export const getRouterScript = () => `
|
|
|
907
982
|
return;
|
|
908
983
|
}
|
|
909
984
|
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
}
|
|
914
|
-
|
|
915
|
-
prefetchedPaths.add(href);
|
|
916
|
-
inFlightPrefetches.add(href);
|
|
917
|
-
|
|
918
|
-
fetchPageDataForPrefetch(href)
|
|
919
|
-
.catch(() => {
|
|
920
|
-
prefetchedPaths.delete(href);
|
|
921
|
-
})
|
|
922
|
-
.finally(() => {
|
|
923
|
-
inFlightPrefetches.delete(href);
|
|
924
|
-
});
|
|
985
|
+
queuedPrefetchPaths.add(href);
|
|
986
|
+
pageDataPrefetchQueue.push(href);
|
|
987
|
+
processPageDataPrefetchQueue();
|
|
925
988
|
}
|
|
926
989
|
|
|
927
990
|
function prefetchEligibleRouteLinks(limit) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-tools.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/remote-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAYH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAsBvD,KAAK,qCAAqC,GAAG;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;
|
|
1
|
+
{"version":3,"file":"remote-tools.d.ts","sourceRoot":"","sources":["../../../src/src/integrations/remote-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAYH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAsBvD,KAAK,qCAAqC,GAAG;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AA2KF;;;;;;;GAOG;AACH,wBAAsB,mCAAmC,IAAI,OAAO,CAClE,cAAc,EAAE,CACjB,CAwBA;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,qCAAqC,GAC9C,OAAO,CAAC,OAAO,CAAC,CA4BlB"}
|
|
@@ -45,8 +45,11 @@ function normalizeProjectSlug(projectSlug) {
|
|
|
45
45
|
return normalized || undefined;
|
|
46
46
|
}
|
|
47
47
|
function resolveRequestProjectSlug() {
|
|
48
|
-
const
|
|
49
|
-
|
|
48
|
+
const requestContext = getCurrentRequestContext();
|
|
49
|
+
if (requestContext) {
|
|
50
|
+
return normalizeProjectSlug(requestContext.projectSlug);
|
|
51
|
+
}
|
|
52
|
+
return normalizeProjectSlug(getEnvironmentConfig().projectSlug);
|
|
50
53
|
}
|
|
51
54
|
// ---------------------------------------------------------------------------
|
|
52
55
|
// API communication
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AASzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA4DhF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxE,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,eAAe,EAAE,eAAe,CAAC;IACjC,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,OAAO,qBAAqB,EAAE,sBAAsB,CAAC;CAC1E;
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,iCAAiC,CAAC;AASzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA4DhF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACxE,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,eAAe,EAAE,eAAe,CAAC;IACjC,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,OAAO,qBAAqB,EAAE,sBAAsB,CAAC;CAC1E;AAqCD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,mBAAmB,CAAgC;gBAE/C,MAAM,EAAE,oBAAoB;IAcxC,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,oBAAoB;IA0B5B;;;;OAIG;YACW,yBAAyB;IAWvC;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAKxB,OAAO,CAAC,UAAU;YAOJ,0BAA0B;IAaxC;;;;;;;;;OASG;YACW,qBAAqB;IA6EnC;;;OAGG;YACW,mBAAmB;IAoHjC,OAAO,CAAC,uBAAuB;IAkCzB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAqU9E,+EAA+E;IACzE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAsHzE,kBAAkB;YA2ClB,cAAc;IAW5B,OAAO,CAAC,uBAAuB;YAYjB,kBAAkB;IA6FhC,OAAO,CAAC,kBAAkB;YAQZ,uBAAuB;IAmBrC;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;CAStB"}
|
|
@@ -51,6 +51,11 @@ const renderPipelineLog = logger.component("render-pipeline");
|
|
|
51
51
|
const resolvePageDataLog = logger.component("resolve-page-data");
|
|
52
52
|
// Re-export test helper for backward compatibility
|
|
53
53
|
export { __injectCssCacheForTests } from "./css-cache.js";
|
|
54
|
+
const PRE_RESOLVED_DATA = Symbol("veryfront.preResolvedData");
|
|
55
|
+
function stripInternalRenderOptions(options) {
|
|
56
|
+
const { [PRE_RESOLVED_DATA]: _preResolvedData, ...publicOptions } = options;
|
|
57
|
+
return publicOptions;
|
|
58
|
+
}
|
|
54
59
|
export class RenderPipeline {
|
|
55
60
|
config;
|
|
56
61
|
dataFetcher;
|
|
@@ -336,7 +341,18 @@ export class RenderPipeline {
|
|
|
336
341
|
: {};
|
|
337
342
|
let layoutDataMap = new Map();
|
|
338
343
|
const dataFetchStart = performance.now();
|
|
339
|
-
|
|
344
|
+
const internalPreResolvedData = options?.[PRE_RESOLVED_DATA];
|
|
345
|
+
const renderInputOptions = internalPreResolvedData && options
|
|
346
|
+
? stripInternalRenderOptions(options)
|
|
347
|
+
: options;
|
|
348
|
+
if (internalPreResolvedData) {
|
|
349
|
+
resolvedParams = internalPreResolvedData.params;
|
|
350
|
+
dataFetchingProps = Object.keys(internalPreResolvedData.pageProps).length > 0
|
|
351
|
+
? internalPreResolvedData.pageProps
|
|
352
|
+
: undefined;
|
|
353
|
+
layoutDataMap = internalPreResolvedData.layoutProps;
|
|
354
|
+
}
|
|
355
|
+
else if (options?.url && (options.request || options.staticDataOnly)) {
|
|
340
356
|
await profilePhase("render.data_fetching", () => withSpan("render.data_fetching", async () => {
|
|
341
357
|
try {
|
|
342
358
|
const dataResolution = await this.resolveDataFetching(slug, pageInfo.entity.path, layoutResult.nestedLayouts, options);
|
|
@@ -361,13 +377,13 @@ export class RenderPipeline {
|
|
|
361
377
|
const hasResolvedParams = Object.keys(resolvedParams).length > 0;
|
|
362
378
|
const mergedOptions = (dataFetchingProps || hasResolvedParams)
|
|
363
379
|
? {
|
|
364
|
-
...
|
|
380
|
+
...renderInputOptions,
|
|
365
381
|
...(hasResolvedParams ? { params: resolvedParams } : {}),
|
|
366
382
|
...(dataFetchingProps
|
|
367
|
-
? { props: { ...
|
|
383
|
+
? { props: { ...renderInputOptions?.props, ...dataFetchingProps } }
|
|
368
384
|
: {}),
|
|
369
385
|
}
|
|
370
|
-
:
|
|
386
|
+
: renderInputOptions;
|
|
371
387
|
const bundlePrepStart = performance.now();
|
|
372
388
|
const pageBundleResult = await profilePhase("render.prepare_bundles", () => withSpan("render.prepare_bundles", () => this.config.pageRenderer.preparePageBundles(pageInfo, slug, cacheResult?.cachedModule, mergedOptions), { "render.slug": slug }));
|
|
373
389
|
timing.bundlePrep = Math.round(performance.now() - bundlePrepStart);
|
|
@@ -512,7 +528,7 @@ export class RenderPipeline {
|
|
|
512
528
|
const appPath = pageIslandPlan
|
|
513
529
|
? undefined
|
|
514
530
|
: await profilePhase("page_data.resolve_app_path", () => this.resolveAppPath());
|
|
515
|
-
const { css, cssAction, cssError } = await profilePhase("page_data.resolve_css", () => this.resolvePageDataCss(slug, options, projectUpdatedAt));
|
|
531
|
+
const { css, cssAction, cssError } = await profilePhase("page_data.resolve_css", () => this.resolvePageDataCss(slug, options, projectUpdatedAt, dataResolution));
|
|
516
532
|
resolvePageDataLog.debug("Resolved page data", {
|
|
517
533
|
slug,
|
|
518
534
|
pagePath,
|
|
@@ -593,7 +609,7 @@ export class RenderPipeline {
|
|
|
593
609
|
const wrappedAdapter = fs.getUnderlyingAdapter();
|
|
594
610
|
return wrappedAdapter.getProjectData?.()?.updated_at;
|
|
595
611
|
}
|
|
596
|
-
async resolvePageDataCss(slug, options, projectUpdatedAt) {
|
|
612
|
+
async resolvePageDataCss(slug, options, projectUpdatedAt, dataResolution) {
|
|
597
613
|
if (this.hasReadyReleaseCss(options)) {
|
|
598
614
|
return { css: undefined, cssAction: "clear", cssError: undefined };
|
|
599
615
|
}
|
|
@@ -604,12 +620,14 @@ export class RenderPipeline {
|
|
|
604
620
|
return { css: cachedCss, cssAction: undefined, cssError: undefined };
|
|
605
621
|
}
|
|
606
622
|
try {
|
|
607
|
-
const
|
|
623
|
+
const cssRenderOptions = {
|
|
608
624
|
...options,
|
|
609
625
|
delivery: "string",
|
|
610
626
|
skipCacheCheck: true,
|
|
611
627
|
skipCachePersist: true,
|
|
612
|
-
|
|
628
|
+
[PRE_RESOLVED_DATA]: dataResolution,
|
|
629
|
+
};
|
|
630
|
+
const renderResult = await profilePhase("page_data.css.render_html", () => withTimeout(this.renderPage(slug, cssRenderOptions), CSS_SSR_TIMEOUT_MS, `CSS SSR for ${slug}`));
|
|
613
631
|
if (!renderResult?.html) {
|
|
614
632
|
return { css: undefined, cssAction: undefined, cssError: undefined };
|
|
615
633
|
}
|
|
@@ -261,5 +261,5 @@ async function loadScriptModule(modulePath, projectDir, adapter) {
|
|
|
261
261
|
const resolveDir = dirname(normalizedPath) || projectDir;
|
|
262
262
|
const transpiled = await transpileWithEsbuild(source, modulePath, resolveDir);
|
|
263
263
|
logger.debug(`Transpiled ${modulePath}`);
|
|
264
|
-
return importFromTempFile(fs, rewriteNpmImports(transpiled));
|
|
264
|
+
return importFromTempFile(fs, rewriteNpmImports(transpiled, projectDir));
|
|
265
265
|
}
|
|
@@ -419,7 +419,7 @@ export async function rewriteExternalImports(code, projectDir, fs, userDeps = ne
|
|
|
419
419
|
}
|
|
420
420
|
}
|
|
421
421
|
if (isDeno) {
|
|
422
|
-
transformed = rewriteNpmImports(transformed);
|
|
422
|
+
transformed = rewriteNpmImports(transformed, projectDir);
|
|
423
423
|
transformed = rewriteDenoNodeBuiltinImports(transformed);
|
|
424
424
|
// Rewrite user-installed npm dependencies.
|
|
425
425
|
// In non-compiled Deno: use npm: specifiers (resolved by Deno's npm support).
|
|
@@ -99,6 +99,7 @@ export declare class LazySandbox {
|
|
|
99
99
|
private waitForExecStartRetry;
|
|
100
100
|
private reprovisionAfterExecStartFailure;
|
|
101
101
|
private resolveRuntimeEndpointFor;
|
|
102
|
+
private shouldUseInternalDataPlane;
|
|
102
103
|
private resolveDataPlaneRoute;
|
|
103
104
|
private requireSessionId;
|
|
104
105
|
private authHeaders;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lazy-sandbox.d.ts","sourceRoot":"","sources":["../../../src/src/sandbox/lazy-sandbox.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"lazy-sandbox.d.ts","sourceRoot":"","sources":["../../../src/src/sandbox/lazy-sandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -422,7 +422,9 @@ export class LazySandbox {
|
|
|
422
422
|
const readySession = session.status === "running"
|
|
423
423
|
? session
|
|
424
424
|
: await this.waitForReadySession(session.id);
|
|
425
|
-
|
|
425
|
+
if (this.shouldUseInternalDataPlane(readySession.endpoint, readySession.id)) {
|
|
426
|
+
await this.waitForRuntimeDataPlaneReady(readySession);
|
|
427
|
+
}
|
|
426
428
|
return readySession.endpoint;
|
|
427
429
|
}
|
|
428
430
|
async attachExistingSession(sessionId) {
|
|
@@ -653,14 +655,28 @@ export class LazySandbox {
|
|
|
653
655
|
return this.resolveRuntimeEndpointOption?.({ endpoint, sessionId }) ??
|
|
654
656
|
resolveDefaultSandboxRuntimeEndpoint({ endpoint });
|
|
655
657
|
}
|
|
658
|
+
shouldUseInternalDataPlane(endpoint, sessionId) {
|
|
659
|
+
if (!this.resolveRuntimeEndpointOption) {
|
|
660
|
+
return false;
|
|
661
|
+
}
|
|
662
|
+
const runtimeEndpoint = this.resolveRuntimeEndpointFor(endpoint, sessionId);
|
|
663
|
+
return normalizeDataPlaneBaseUrl(runtimeEndpoint) !== normalizeDataPlaneBaseUrl(endpoint);
|
|
664
|
+
}
|
|
656
665
|
resolveDataPlaneRoute() {
|
|
657
666
|
const endpoint = this.requireEndpoint();
|
|
658
667
|
const sessionId = this.requireSessionId();
|
|
668
|
+
if (!this.resolveRuntimeEndpointOption) {
|
|
669
|
+
return {
|
|
670
|
+
baseUrl: sandboxSessionRoute(this.apiUrl, sessionId),
|
|
671
|
+
kind: "proxy",
|
|
672
|
+
};
|
|
673
|
+
}
|
|
659
674
|
const runtimeEndpoint = this.resolveRuntimeEndpointFor(endpoint, sessionId);
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
675
|
+
if (normalizeDataPlaneBaseUrl(runtimeEndpoint) !== normalizeDataPlaneBaseUrl(endpoint)) {
|
|
676
|
+
return {
|
|
677
|
+
baseUrl: normalizeDataPlaneBaseUrl(runtimeEndpoint),
|
|
678
|
+
kind: "internal",
|
|
679
|
+
};
|
|
664
680
|
}
|
|
665
681
|
return {
|
|
666
682
|
baseUrl: sandboxSessionRoute(this.apiUrl, sessionId),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-data-endpoint-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/src/server/handlers/request/module/page-data-endpoint-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AA8EhE,wBAAgB,oCAAoC,IAAI,IAAI,CAE3D;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,cAAc,EACnB,qBAAqB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,eAAe,EAC/D,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,aAAa,EAC9C,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,GAC1C,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"page-data-endpoint-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/src/server/handlers/request/module/page-data-endpoint-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AA8EhE,wBAAgB,oCAAoC,IAAI,IAAI,CAE3D;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,cAAc,EACnB,qBAAqB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,eAAe,EAC/D,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,aAAa,EAC9C,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,GAC1C,OAAO,CAAC,aAAa,CAAC,CAgHxB"}
|
|
@@ -58,9 +58,12 @@ export function handlePageDataEndpoint(req, pathname, ctx, createResponseBuilder
|
|
|
58
58
|
.replace(/\.json$/, "") || "";
|
|
59
59
|
const url = new URL(req.url);
|
|
60
60
|
const renderer = await getRendererForProject(ctx);
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
const isSpeculativePrefetch = req.headers.get("x-veryfront-prefetch") === "1";
|
|
62
|
+
// The request reaches server-data hooks, so prefetch work cannot safely
|
|
63
|
+
// populate or join the foreground response cache/singleflight.
|
|
64
|
+
const canUsePageDataCache = isPageDataCacheEnabled() &&
|
|
65
|
+
!requestHasCacheSensitiveState(req) && !isSpeculativePrefetch;
|
|
66
|
+
const cacheKey = canUsePageDataCache ? buildPageDataCacheKey(ctx, slug, url) : null;
|
|
64
67
|
const cachePolicy = cacheKey ? getPageDataCachePolicy(ctx) : null;
|
|
65
68
|
const payload = cacheKey
|
|
66
69
|
? await resolveCachedPageData(cacheKey, () => withTimeoutThrow(renderer.resolvePageData(slug, { request: req, url }), PAGE_DATA_TIMEOUT_MS, `resolvePageData for ${slug}`), cachePolicy)
|
|
@@ -10,15 +10,15 @@ interface RewriteRule {
|
|
|
10
10
|
declare function buildRules(importMap: Record<string, string>): RewriteRule[];
|
|
11
11
|
/**
|
|
12
12
|
* Returns rewrite rules derived from deno.json's import map.
|
|
13
|
-
* Rules are cached
|
|
13
|
+
* Rules are cached per resolved project directory.
|
|
14
14
|
*/
|
|
15
|
-
export declare function getNpmRewriteRules(): RewriteRule[];
|
|
15
|
+
export declare function getNpmRewriteRules(baseDir?: string): RewriteRule[];
|
|
16
16
|
/**
|
|
17
17
|
* Apply npm import rewrites to source code.
|
|
18
18
|
* Rewrites bare specifiers to pinned npm: versions from deno.json.
|
|
19
19
|
* No-op on Node.js where bare specifiers resolve via node_modules.
|
|
20
20
|
*/
|
|
21
|
-
export declare function rewriteNpmImports(source: string): string;
|
|
21
|
+
export declare function rewriteNpmImports(source: string, baseDir?: string): string;
|
|
22
22
|
/** Exported for testing */
|
|
23
23
|
export { buildRules, REWRITABLE_PACKAGES };
|
|
24
24
|
/** @internal Reset cached rules — only for testing */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm-import-rewrites.d.ts","sourceRoot":"","sources":["../../../src/src/transforms/npm-import-rewrites.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,QAAA,MAAM,mBAAmB,aAAc,CAAC;AAExC,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAQD,iBAAS,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,EAAE,CA6BpE;
|
|
1
|
+
{"version":3,"file":"npm-import-rewrites.d.ts","sourceRoot":"","sources":["../../../src/src/transforms/npm-import-rewrites.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,QAAA,MAAM,mBAAmB,aAAc,CAAC;AAExC,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAQD,iBAAS,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,EAAE,CA6BpE;AAyBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,MAAc,GAAG,WAAW,EAAE,CASzE;AAID;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc,GAAG,MAAM,CAOjF;AAED,2BAA2B;AAC3B,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC;AAE3C,sDAAsD;AACtD,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
|