oidc-spa 10.2.7 → 10.2.8

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.
@@ -76,7 +76,7 @@ const StateDataCookie_1 = require("./StateDataCookie");
76
76
  const loadWebcryptoLinerShim_1 = require("../tools/loadWebcryptoLinerShim");
77
77
  const lazySessionStorage_2 = require("../tools/lazySessionStorage");
78
78
  // NOTE: Replaced at build time
79
- const VERSION = "10.2.7";
79
+ const VERSION = "10.2.8";
80
80
  const globalContext = {
81
81
  prOidcByConfigId: new Map(),
82
82
  hasLogoutBeenCalled: (0, id_1.id)(false),
@@ -36,7 +36,7 @@ import { setStateDataCookieIfEnabled, clearStateDataCookie, getIsStateDataCookie
36
36
  import { loadWebcryptoLinerShim, hasLoadWebcryptoLinerShimBeenCalled } from "../tools/loadWebcryptoLinerShim.mjs";
37
37
  import { SESSION_STORAGE_GLOBAL_PREFIX } from "../tools/lazySessionStorage.mjs";
38
38
  // NOTE: Replaced at build time
39
- const VERSION = "10.2.7";
39
+ const VERSION = "10.2.8";
40
40
  const globalContext = {
41
41
  prOidcByConfigId: new Map(),
42
42
  hasLogoutBeenCalled: id(false),
@@ -10,5 +10,10 @@ export declare function createHandleClientEntrypoint(params: {
10
10
  load_handleClientEntrypoint: (params: {
11
11
  id: string;
12
12
  pluginContext: PluginContext;
13
+ doUseOriginalEntrypoint: boolean;
14
+ buildMarker?: string;
13
15
  }) => Promise<null | string>;
16
+ getClientEntrypointSource: (params: {
17
+ applicationEntrypointImportSpecifier: string;
18
+ }) => string;
14
19
  };
@@ -16,20 +16,8 @@ export function createHandleClientEntrypoint(params) {
16
16
  config: resolvedConfig,
17
17
  projectType
18
18
  });
19
- async function load_handleClientEntrypoint(params) {
20
- const { id, pluginContext } = params;
21
- const { path: rawPath, queryParams } = splitId(id);
22
- const normalizedRequestPath = normalizeRequestPath(rawPath);
23
- const isMatch = normalizedRequestPath && normalizedRequestPath === entryResolution.normalizedPath;
24
- if (!isMatch) {
25
- return null;
26
- }
27
- const isOriginalRequest = queryParams.getAll(ORIGINAL_QUERY_PARAM).includes("true");
28
- if (isOriginalRequest) {
29
- entryResolution.watchFiles.forEach(file => pluginContext.addWatchFile(file));
30
- return fs.readFile(entryResolution.absolutePath, "utf8");
31
- }
32
- entryResolution.watchFiles.forEach(file => pluginContext.addWatchFile(file));
19
+ function getClientEntrypointSource(params) {
20
+ const { applicationEntrypointImportSpecifier } = params;
33
21
  const { browserRuntimeFreeze, tokenSubstitution, DPoP, sessionRestorationMethod } = oidcSpaVitePluginParams ?? {};
34
22
  return [
35
23
  `import { oidcEarlyInit } from "oidc-spa/entrypoint";`,
@@ -60,8 +48,7 @@ export function createHandleClientEntrypoint(params) {
60
48
  `});`,
61
49
  ``,
62
50
  `if (shouldLoadApp) {`,
63
- // prettier-ignore
64
- `import("./${path.basename(entryResolution.absolutePath)}?${ORIGINAL_QUERY_PARAM}=true");`,
51
+ `import(${JSON.stringify(applicationEntrypointImportSpecifier)});`,
65
52
  `}`
66
53
  ].join("\n");
67
54
  function paramsToJsLiteral(params) {
@@ -85,7 +72,26 @@ export function createHandleClientEntrypoint(params) {
85
72
  ].join(" ");
86
73
  }
87
74
  }
88
- return { load_handleClientEntrypoint };
75
+ async function load_handleClientEntrypoint(params) {
76
+ const { id, pluginContext, doUseOriginalEntrypoint, buildMarker } = params;
77
+ const { path: rawPath, queryParams } = splitId(id);
78
+ const normalizedRequestPath = normalizeRequestPath(rawPath);
79
+ const isMatch = normalizedRequestPath && normalizedRequestPath === entryResolution.normalizedPath;
80
+ if (!isMatch) {
81
+ return null;
82
+ }
83
+ const isOriginalRequest = doUseOriginalEntrypoint || queryParams.getAll(ORIGINAL_QUERY_PARAM).includes("true");
84
+ if (isOriginalRequest) {
85
+ entryResolution.watchFiles.forEach(file => pluginContext.addWatchFile(file));
86
+ const originalSource = await fs.readFile(entryResolution.absolutePath, "utf8");
87
+ return buildMarker === undefined ? originalSource : `${buildMarker}\n${originalSource}`;
88
+ }
89
+ entryResolution.watchFiles.forEach(file => pluginContext.addWatchFile(file));
90
+ return getClientEntrypointSource({
91
+ applicationEntrypointImportSpecifier: `./${path.basename(entryResolution.absolutePath)}?${ORIGINAL_QUERY_PARAM}=true`
92
+ });
93
+ }
94
+ return { load_handleClientEntrypoint, getClientEntrypointSource };
89
95
  }
90
96
  function resolveEntryForProject({ config, projectType }) {
91
97
  const root = config.root;
@@ -1 +1 @@
1
- {"version":3,"file":"handleClientEntrypoint.mjs","sourceRoot":"","sources":["../../src/vite-plugin/handleClientEntrypoint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handleClientEntrypoint.mjs","sourceRoot":"","sources":["../../src/vite-plugin/handleClientEntrypoint.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C,OAAO,EACH,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,OAAO,EACP,oBAAoB,EACvB,MAAM,SAAS,CAAC;AAQjB,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAEjD,MAAM,6BAA6B,GAAG;IAClC,kBAAkB;IAClB,iBAAiB;IACjB,kBAAkB;IAClB,iBAAiB;CACpB,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;AAEzF,MAAM,UAAU,4BAA4B,CAAC,MAI5C;IACG,MAAM,EAAE,uBAAuB,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAExE,MAAM,eAAe,GAAG,sBAAsB,CAAC;QAC3C,MAAM,EAAE,cAAc;QACtB,WAAW;KACd,CAAC,CAAC;IAEH,SAAS,yBAAyB,CAAC,MAElC;QACG,MAAM,EAAE,oCAAoC,EAAE,GAAG,MAAM,CAAC;QACxD,MAAM,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,IAAI,EAAE,wBAAwB,EAAE,GAC7E,uBAAuB,IAAI,EAAE,CAAC;QAElC,OAAO;YACH,sDAAsD;YACtD,kBAAkB;YAClB,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yEAAyE;YACtG,kBAAkB;YAClB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uCAAuC;YACpD,kBAAkB;YAClB,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kEAAkE;YAC5F,2CAA2C;YAC3C,kBAAkB;YAClB,aAAa,CAAC,GAAG,EAAE,GAAG,QAAQ,WAAW,EAAE,CAAC;gBAAC,KAAK,MAAM,CAAC,CAAC,OAAO,6BAA6B,CAAC;gBAAC,OAAO,CAAC,CAAC,OAAO,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC;YAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG;YACrJ,kBAAkB;YAClB,wBAAwB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,8BAA8B,wBAAwB,IAAI;YACxG,qBAAqB;YACrB,kBAAkB;YAClB,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,iBAAiB,CAAC,oBAAoB,CAAC,IAAI;YACnG,kBAAkB;YAClB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,iBAAiB,CAAC,IAAI,CAAC,IAAI;YACnD,kBAAkB;YAClB,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,mCAAmC,CAAC,iBAAiB,CAAC,GAAG;YAC3G,GAAG;YACH,KAAK;YACL,EAAE;YACF,sBAAsB;YACtB,UAAU,IAAI,CAAC,SAAS,CAAC,oCAAoC,CAAC,IAAI;YAClE,GAAG;SACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,SAAS,iBAAiB,CACtB,MAE6C;YAE7C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;YACpC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAED,SAAS,mCAAmC,CACxC,MAA4D;YAE5D,MAAM,EACF,OAAO,EACP,8BAA8B,GAAG,EAAE,EACnC,mCAAmC,GAAG,EAAE,EACxC,GAAG,IAAI,EACV,GAAG,MAAM,CAAC;YAEX,MAA+B,CAAC;YAEhC,MAAM,oCAAoC,GAAG,CAAC,WAAmB,EAAE,EAAE,CACjE,KAAK,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC;YAElE,MAAM,cAAc,GAAG,CAAC,GAAa,EAAE,EAAE,CACrC;gBACI,GAAG;gBACH,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC3E,GAAG;aACN,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEhB,OAAO;gBACH,GAAG;gBACH,mCAAmC,cAAc,CAAC,8BAA8B,CAAC,GAAG;gBACpF,wCAAwC,cAAc,CAClD,mCAAmC,CACtC,GAAG;gBACJ,GAAG;aACN,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACL,CAAC;IAED,KAAK,UAAU,2BAA2B,CAAC,MAK1C;QACG,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,uBAAuB,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAC3E,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QAEnD,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,OAAO,GACT,qBAAqB,IAAI,qBAAqB,KAAK,eAAe,CAAC,cAAc,CAAC;QAEtF,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,iBAAiB,GACnB,uBAAuB,IAAI,WAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEzF,IAAI,iBAAiB,EAAE,CAAC;YACpB,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7E,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YAC/E,OAAO,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,WAAW,KAAK,cAAc,EAAE,CAAC;QAC5F,CAAC;QAED,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAE7E,OAAO,yBAAyB,CAAC;YAC7B,oCAAoC,EAAE,KAAK,IAAI,CAAC,QAAQ,CACpD,eAAe,CAAC,YAAY,CAC/B,IAAI,oBAAoB,OAAO;SACnC,CAAC,CAAC;IACP,CAAC;IAED,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,sBAAsB,CAAC,EAC5B,MAAM,EACN,WAAW,EAId;IACG,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAEzB,QAAQ,WAAW,EAAE,CAAC;QAClB,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACpB,MAAM,SAAS,GAAG,gBAAgB,CAAC;gBAC/B,IAAI;gBACJ,cAAc,EAAE,CAAC,KAAK,CAAC;gBACvB,SAAS,EAAE,yBAAyB;aACvC,CAAC,CAAC;YAEH,MAAM,SAAS,GACX,SAAS;gBACT,kBAAkB,CAAC,uBAAuB,EAAE;oBACxC,MAAM;oBACN,QAAQ;oBACR,eAAe;oBACf,YAAY;iBACf,CAAC,CAAC;YAEP,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,UAAU,GAAoB;gBAChC,YAAY,EAAE,SAAS;gBACvB,cAAc,EAAE,UAAU;gBAC1B,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;aAC3C,CAAC;YAEF,OAAO,UAAU,CAAC;QACtB,CAAC;QAED,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC5B,MAAM,SAAS,GAAG,gBAAgB,CAAC;gBAC/B,IAAI;gBACJ,cAAc,EAAE,CAAC,KAAK,CAAC;gBACvB,SAAS,EAAE,6BAA6B;aAC3C,CAAC,CAAC;YAEH,MAAM,SAAS,GACX,SAAS;gBACT,kBAAkB,CAAC,mBAAmB,EAAE;oBACpC,MAAM;oBACN,QAAQ;oBACR,UAAU;oBACV,kBAAkB;iBACrB,CAAC,CAAC;YAEP,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEhD,MAAM,UAAU,GAAoB;gBAChC,YAAY,EAAE,SAAS;gBACvB,cAAc,EAAE,UAAU;gBAC1B,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;aAC3C,CAAC;YAEF,OAAO,UAAU,CAAC;QACtB,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACV,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC;YAEtD,IAAI,SAAiB,CAAC;YAEtB,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAClC,SAAS,GAAG,WAAW,CAAC;YAC5B,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,yCAAyC,CAAC,CAAC;gBAC1E,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACxD,MAAM,WAAW,GAAG,WAAW,CAAC;gBAChC,MAAM,CACF,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EACnC,iEAAiE,CACpE,CAAC;gBACF,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CACX,uDAAuD;oBACnD,6DAA6D,CACpE,CAAC;YACN,CAAC;YAED,mDAAmD;YACnD,uFAAuF;YACvF,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAChD,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAEpC,MAAM,UAAU,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;YAExD,MAAM,UAAU,GAAoB;gBAChC,YAAY,EAAE,iBAAiB;gBAC/B,cAAc,EAAE,UAAU;gBAC1B,gFAAgF;gBAChF,UAAU,EAAE,EAAE;aACjB,CAAC;YAEF,OAAO,UAAU,CAAC;QACtB,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACX,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE;gBACxB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC;gBAEtD,MAAM,cAAc,GAAa,EAAE,CAAC;gBAEpC,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAE,EAAE;oBACvC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;wBACxC,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;oBAEpC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC;wBACpD,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACnC,CAAC;gBACL,CAAC,CAAC;gBAEF,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;oBAClC,YAAY,CAAC,WAAW,CAAC,CAAC;gBAC9B,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;oBACpC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBACtC,CAAC;qBAAM,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;oBACxD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBACrD,CAAC;gBAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CACX;wBACI,gEAAgE;wBAChE,UAAU,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;wBACtC,uGAAuG;wBACvG,qDAAqD;qBACxD,CAAC,IAAI,CAAC,GAAG,CAAC,CACd,CAAC;gBACN,CAAC;gBAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBAE1D,MAAM,aAAa,GACf,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAEvF,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,IAAI,KAAK,CACX;wBACI,wCAAwC;wBACxC,mGAAmG;wBACnG,uGAAuG;wBACvG,qDAAqD;qBACxD,CAAC,IAAI,CAAC,GAAG,CAAC,CACd,CAAC;gBACN,CAAC;gBAED,OAAO,aAAa,CAAC;YACzB,CAAC,CAAC,EAAE,CAAC;YAEL,MAAM,gBAAgB,GAAG,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAE7D,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAC3E,MAAM,WAAW,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC;YAEvD,MAAM,gBAAgB,GAAa,EAAE,CAAC;YACtC,MAAM,WAAW,GACb,oFAAoF,CAAC;YAEzF,IAAI,KAA6B,CAAC;YAClC,0CAA0C;YAC1C,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACtD,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;gBACtB,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;YAED,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CACX;oBACI,gFAAgF;oBAChF,uGAAuG;oBACvG,qDAAqD;iBACxD,CAAC,IAAI,CAAC,GAAG,CAAC,CACd,CAAC;YACN,CAAC;YAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CACX;oBACI,2EAA2E;oBAC3E,6DAA6D,gBAAgB,CAAC,IAAI,CAC9E,IAAI,CACP,GAAG;oBACJ,uGAAuG;oBACvG,qDAAqD;iBACxD,CAAC,IAAI,CAAC,GAAG,CAAC,CACd,CAAC;YACN,CAAC;YAED,MAAM,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC;YAClC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAEjD,IAAI,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CACX;oBACI,0EAA0E;oBAC1E,QAAQ,MAAM,IAAI;oBAClB,yGAAyG;oBACzG,qDAAqD;iBACxD,CAAC,IAAI,CAAC,GAAG,CAAC,CACd,CAAC;YACN,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAE7C,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE;gBAC7B,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;oBAC3C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAChD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAEzC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gBAEvD,IAAI,YAAY,EAAE,CAAC;oBACf,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC1B,CAAC;gBAED,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;gBAElD,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,GAAG,GAAG,EAAE,CAAC,CAAC;YAC1D,CAAC,CAAC,EAAE,CAAC;YAEL,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;YAEtF,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CACX;oBACI,4EAA4E;oBAC5E,cAAc,MAAM,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;oBACpE,4EAA4E;oBAC5E,yGAAyG;oBACzG,qDAAqD;iBACxD,CAAC,IAAI,CAAC,GAAG,CAAC,CACd,CAAC;YACN,CAAC;YAED,OAAO;gBACH,YAAY,EAAE,iBAAiB;gBAC/B,cAAc,EAAE,iBAAiB,CAAC,iBAAiB,CAAC;gBACpD,UAAU,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC;aACjD,CAAC;QACN,CAAC;QAED;YACI,MAAM,CAAoC,KAAK,CAAC,CAAC;IACzD,CAAC;AACL,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { ResolvedConfig, Rollup } from "vite";
2
+ export declare function createHandleTanstackStartClientOutput(params: {
3
+ resolvedConfig: ResolvedConfig;
4
+ getClientEntrypointSource: (params: {
5
+ applicationEntrypointImportSpecifier: string;
6
+ }) => string;
7
+ }): {
8
+ resolveId: (id: string) => null | string | {
9
+ id: string;
10
+ external: true;
11
+ };
12
+ load: (id: string) => null | string;
13
+ buildStart: (this: Rollup.PluginContext) => void;
14
+ generateBundle: (this: Rollup.PluginContext, _options: Rollup.NormalizedOutputOptions, bundle: Rollup.OutputBundle) => Promise<void>;
15
+ applicationEntryBuildMarker: string;
16
+ };
@@ -0,0 +1,277 @@
1
+ import * as path from "node:path";
2
+ import { createHash } from "node:crypto";
3
+ import { existsSync, readFileSync } from "node:fs";
4
+ import { fileURLToPath } from "node:url";
5
+ const BOOTSTRAP_ENTRY_ID = "virtual:oidc-spa/tanstack-start-client-bootstrap";
6
+ const RESOLVED_BOOTSTRAP_ENTRY_ID = `\0${BOOTSTRAP_ENTRY_ID}`;
7
+ const APPLICATION_ENTRY_PLACEHOLDER = "oidc-spa:tanstack-start-application-entry";
8
+ export function createHandleTanstackStartClientOutput(params) {
9
+ const { resolvedConfig, getClientEntrypointSource } = params;
10
+ const bootstrapSource = getClientEntrypointSource({
11
+ applicationEntrypointImportSpecifier: APPLICATION_ENTRY_PLACEHOLDER
12
+ });
13
+ const applicationEntryBuildMarker = getApplicationEntryBuildMarker({ bootstrapSource });
14
+ function resolveId(id) {
15
+ if (id === BOOTSTRAP_ENTRY_ID) {
16
+ return RESOLVED_BOOTSTRAP_ENTRY_ID;
17
+ }
18
+ if (id === APPLICATION_ENTRY_PLACEHOLDER) {
19
+ return { id, external: true };
20
+ }
21
+ return null;
22
+ }
23
+ function load(id) {
24
+ return id === RESOLVED_BOOTSTRAP_ENTRY_ID ? bootstrapSource : null;
25
+ }
26
+ function buildStart() {
27
+ if (!isClientEnvironment({ pluginContext: this, resolvedConfig })) {
28
+ return;
29
+ }
30
+ // This keeps the bootstrap independent from the application graph. The
31
+ // temporary entry is finalized and removed before TanStack captures it.
32
+ this.emitFile({
33
+ type: "chunk",
34
+ id: BOOTSTRAP_ENTRY_ID,
35
+ name: "oidc-spa-bootstrap",
36
+ preserveSignature: false
37
+ });
38
+ }
39
+ async function generateBundle(_options, bundle) {
40
+ if (!isClientEnvironment({ pluginContext: this, resolvedConfig })) {
41
+ return;
42
+ }
43
+ const bootstrapChunk = Object.values(bundle).find((output) => output.type === "chunk" && output.moduleIds.includes(RESOLVED_BOOTSTRAP_ENTRY_ID));
44
+ if (bootstrapChunk === undefined) {
45
+ this.error("oidc-spa: The TanStack Start client bootstrap chunk was not emitted.");
46
+ }
47
+ const applicationEntryChunks = Object.values(bundle).filter((output) => output.type === "chunk" && output.isEntry && output !== bootstrapChunk);
48
+ if (applicationEntryChunks.length !== 1) {
49
+ this.error(`oidc-spa: Expected exactly one TanStack Start client entry chunk, found ${applicationEntryChunks.length}.`);
50
+ }
51
+ const [entryChunk] = applicationEntryChunks;
52
+ assertBootstrapSynchronousGraphIsIsolated({
53
+ pluginContext: this,
54
+ bundle,
55
+ bootstrapChunk,
56
+ applicationEntryChunk: entryChunk
57
+ });
58
+ const applicationEntryFileName = getApplicationEntryFileName({
59
+ entryFileName: entryChunk.fileName,
60
+ bundle
61
+ });
62
+ for (const output of Object.values(bundle)) {
63
+ if (output.type !== "chunk") {
64
+ continue;
65
+ }
66
+ rewriteChunkEntryReferences({
67
+ chunk: output,
68
+ previousEntryFileName: entryChunk.fileName,
69
+ applicationEntryFileName
70
+ });
71
+ }
72
+ const applicationEntryCode = entryChunk.code;
73
+ const applicationEntryMap = entryChunk.map;
74
+ const outputHash = createHash("sha256")
75
+ .update(applicationEntryCode)
76
+ .update("\0")
77
+ .update(bootstrapChunk.code)
78
+ .digest("base64url")
79
+ .slice(0, 12);
80
+ const finalizedBootstrapFileName = addFileNameSuffix({
81
+ fileName: bootstrapChunk.fileName,
82
+ suffix: outputHash
83
+ });
84
+ const finalizedBootstrapCode = replaceApplicationEntryPlaceholder({
85
+ code: bootstrapChunk.code,
86
+ applicationEntryImportSpecifier: toRelativeImportSpecifier({
87
+ importerFileName: finalizedBootstrapFileName,
88
+ importedFileName: applicationEntryFileName
89
+ })
90
+ });
91
+ delete bundle[bootstrapChunk.fileName];
92
+ this.emitFile({
93
+ type: "prebuilt-chunk",
94
+ fileName: finalizedBootstrapFileName,
95
+ code: finalizedBootstrapCode,
96
+ exports: bootstrapChunk.exports
97
+ });
98
+ this.emitFile({
99
+ type: "prebuilt-chunk",
100
+ fileName: applicationEntryFileName,
101
+ code: applicationEntryCode,
102
+ exports: entryChunk.exports,
103
+ map: applicationEntryMap === null
104
+ ? undefined
105
+ : {
106
+ ...applicationEntryMap,
107
+ file: path.posix.basename(applicationEntryFileName)
108
+ }
109
+ });
110
+ const bootstrapImportSpecifier = toRelativeImportSpecifier({
111
+ importerFileName: entryChunk.fileName,
112
+ importedFileName: finalizedBootstrapFileName
113
+ });
114
+ entryChunk.code = `import ${JSON.stringify(bootstrapImportSpecifier)};\n`;
115
+ const mutableEntryChunk = entryChunk;
116
+ mutableEntryChunk.map = null;
117
+ }
118
+ return { resolveId, load, buildStart, generateBundle, applicationEntryBuildMarker };
119
+ }
120
+ function getApplicationEntryBuildMarker(params) {
121
+ const { bootstrapSource } = params;
122
+ const packageVersion = findOidcSpaPackageVersion();
123
+ const fingerprint = createHash("sha256")
124
+ .update(packageVersion)
125
+ .update("\0")
126
+ .update(bootstrapSource)
127
+ .digest("hex")
128
+ .slice(0, 16);
129
+ // This property read survives tree-shaking and executes only after the
130
+ // security bootstrap elects to load the application.
131
+ return `globalThis[${JSON.stringify(`__oidcSpaBuild_${fingerprint}`)}];`;
132
+ }
133
+ function findOidcSpaPackageVersion() {
134
+ let directory = path.dirname(fileURLToPath(import.meta.url));
135
+ while (true) {
136
+ const packageJsonPath = path.join(directory, "package.json");
137
+ if (existsSync(packageJsonPath)) {
138
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf8"));
139
+ if (packageJson.name === "oidc-spa" && typeof packageJson.version === "string") {
140
+ return packageJson.version;
141
+ }
142
+ }
143
+ const parentDirectory = path.dirname(directory);
144
+ if (parentDirectory === directory) {
145
+ throw new Error("oidc-spa: Could not read the package version for the build marker.");
146
+ }
147
+ directory = parentDirectory;
148
+ }
149
+ }
150
+ function assertBootstrapSynchronousGraphIsIsolated(params) {
151
+ const { pluginContext, bundle, bootstrapChunk, applicationEntryChunk } = params;
152
+ const allowedModuleIds = new Set();
153
+ const pendingModuleIds = [RESOLVED_BOOTSTRAP_ENTRY_ID];
154
+ while (pendingModuleIds.length !== 0) {
155
+ const moduleId = pendingModuleIds.pop();
156
+ if (moduleId === undefined || allowedModuleIds.has(moduleId)) {
157
+ continue;
158
+ }
159
+ allowedModuleIds.add(moduleId);
160
+ const moduleInfo = pluginContext.getModuleInfo(moduleId);
161
+ if (moduleInfo === null) {
162
+ continue;
163
+ }
164
+ pendingModuleIds.push(...moduleInfo.importedIds);
165
+ }
166
+ const chunksByFileName = new Map(Object.values(bundle)
167
+ .filter((output) => output.type === "chunk")
168
+ .map(chunk => [chunk.fileName, chunk]));
169
+ const pendingChunks = [bootstrapChunk];
170
+ const visitedChunkFileNames = new Set();
171
+ while (pendingChunks.length !== 0) {
172
+ const chunk = pendingChunks.pop();
173
+ if (chunk === undefined || visitedChunkFileNames.has(chunk.fileName)) {
174
+ continue;
175
+ }
176
+ visitedChunkFileNames.add(chunk.fileName);
177
+ if (chunk === applicationEntryChunk) {
178
+ throw new Error("oidc-spa: TanStack Start placed the application entry in the synchronous bootstrap graph.");
179
+ }
180
+ const unexpectedModuleId = chunk.moduleIds.find(moduleId => !allowedModuleIds.has(moduleId) && !isViteRuntimeModule(moduleId));
181
+ if (unexpectedModuleId !== undefined) {
182
+ throw new Error(`oidc-spa: TanStack Start placed an application module in the synchronous bootstrap graph: ${unexpectedModuleId}`);
183
+ }
184
+ for (const importedFileName of chunk.imports) {
185
+ const importedChunk = chunksByFileName.get(importedFileName);
186
+ if (importedChunk !== undefined) {
187
+ pendingChunks.push(importedChunk);
188
+ }
189
+ }
190
+ }
191
+ }
192
+ function isViteRuntimeModule(moduleId) {
193
+ return (moduleId.startsWith("\0vite/") ||
194
+ moduleId.startsWith("\0rolldown/") ||
195
+ moduleId.startsWith("\0commonjsHelpers") ||
196
+ moduleId.includes("vite/preload-helper"));
197
+ }
198
+ function addFileNameSuffix(params) {
199
+ const { fileName, suffix } = params;
200
+ const extension = path.posix.extname(fileName);
201
+ if (extension === "") {
202
+ return `${fileName}-${suffix}`;
203
+ }
204
+ return `${fileName.slice(0, -extension.length)}-${suffix}${extension}`;
205
+ }
206
+ function isClientEnvironment(params) {
207
+ const { pluginContext, resolvedConfig } = params;
208
+ const environmentName = pluginContext.environment?.name;
209
+ if (environmentName !== undefined) {
210
+ return environmentName === "client";
211
+ }
212
+ return !resolvedConfig.build.ssr;
213
+ }
214
+ function getApplicationEntryFileName(params) {
215
+ const { entryFileName, bundle } = params;
216
+ const directory = path.posix.dirname(entryFileName);
217
+ const basename = path.posix.basename(entryFileName);
218
+ for (let index = 0; index < basename.length; index++) {
219
+ if (basename[index] !== "-") {
220
+ continue;
221
+ }
222
+ const candidateBasename = `${basename.slice(0, index)}_${basename.slice(index + 1)}`;
223
+ const candidate = path.posix.join(directory === "." ? "" : directory, candidateBasename);
224
+ if (bundle[candidate] === undefined) {
225
+ return candidate;
226
+ }
227
+ }
228
+ for (let index = 0; index < basename.length; index++) {
229
+ if (basename[index] === "_") {
230
+ continue;
231
+ }
232
+ const candidateBasename = `${basename.slice(0, index)}_${basename.slice(index + 1)}`;
233
+ const candidate = path.posix.join(directory === "." ? "" : directory, candidateBasename);
234
+ if (bundle[candidate] === undefined) {
235
+ return candidate;
236
+ }
237
+ }
238
+ throw new Error(`oidc-spa: Could not allocate an application entry beside "${entryFileName}".`);
239
+ }
240
+ function rewriteChunkEntryReferences(params) {
241
+ const { chunk, previousEntryFileName, applicationEntryFileName } = params;
242
+ const previousRelativeSpecifier = toRelativeImportSpecifier({
243
+ importerFileName: chunk.fileName,
244
+ importedFileName: previousEntryFileName
245
+ });
246
+ const applicationRelativeSpecifier = toRelativeImportSpecifier({
247
+ importerFileName: chunk.fileName,
248
+ importedFileName: applicationEntryFileName
249
+ });
250
+ const replacements = new Map([
251
+ [previousEntryFileName, applicationEntryFileName],
252
+ [previousRelativeSpecifier, applicationRelativeSpecifier]
253
+ ]);
254
+ for (const [from, to] of replacements) {
255
+ if (from === to) {
256
+ continue;
257
+ }
258
+ if (from.length !== to.length) {
259
+ throw new Error("oidc-spa: Internal entry rewrite changed generated code offsets.");
260
+ }
261
+ chunk.code = chunk.code.split(from).join(to);
262
+ }
263
+ }
264
+ function replaceApplicationEntryPlaceholder(params) {
265
+ const { code, applicationEntryImportSpecifier } = params;
266
+ const occurrences = code.split(APPLICATION_ENTRY_PLACEHOLDER).length - 1;
267
+ if (occurrences !== 1) {
268
+ throw new Error(`oidc-spa: Expected one application entry placeholder in the generated bootstrap, found ${occurrences}.`);
269
+ }
270
+ return code.replace(APPLICATION_ENTRY_PLACEHOLDER, applicationEntryImportSpecifier);
271
+ }
272
+ function toRelativeImportSpecifier(params) {
273
+ const { importerFileName, importedFileName } = params;
274
+ const relativePath = path.posix.relative(path.posix.dirname(importerFileName), importedFileName);
275
+ return relativePath.startsWith(".") ? relativePath : `./${relativePath}`;
276
+ }
277
+ //# sourceMappingURL=handleTanstackStartClientOutput.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleTanstackStartClientOutput.mjs","sourceRoot":"","sources":["../../src/vite-plugin/handleTanstackStartClientOutput.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,17 @@ import { createHandleServerEntrypoint } from "./handleServerEntrypoint.mjs";
4
4
  import { manageOptimizedDeps } from "./manageOptimizedDeps.mjs";
5
5
  import { transformCreateFileRoute } from "./transformTanstackRouterCreateFileRoute.mjs";
6
6
  import { getProjectType } from "./projectType.mjs";
7
+ import { createHandleTanstackStartClientOutput } from "./handleTanstackStartClientOutput.mjs";
7
8
  export function oidcSpa(params = {}) {
8
9
  let load_handleClientEntrypoint = undefined;
10
+ let resolveId_handleTanstackStartClientOutput = undefined;
11
+ let load_handleTanstackStartClientOutput = undefined;
12
+ let buildStart_handleTanstackStartClientOutput = undefined;
13
+ let generateBundle_handleTanstackStartClientOutput = undefined;
14
+ let tanstackStartApplicationEntryBuildMarker = undefined;
9
15
  let load_handleServerEntrypoint = undefined;
10
16
  let projectType = undefined;
17
+ let isBuild = false;
11
18
  const plugin = {
12
19
  name: "oidc-spa",
13
20
  enforce: "pre",
@@ -23,14 +30,29 @@ export function oidcSpa(params = {}) {
23
30
  return userConfig;
24
31
  },
25
32
  configResolved(resolvedConfig) {
33
+ isBuild = resolvedConfig.command === "build";
26
34
  projectType = getProjectType({
27
35
  pluginNames: resolvedConfig.plugins.map(({ name }) => name)
28
36
  });
29
- load_handleClientEntrypoint = createHandleClientEntrypoint({
37
+ const clientEntrypointHandler = createHandleClientEntrypoint({
30
38
  oidcSpaVitePluginParams: params,
31
39
  resolvedConfig,
32
40
  projectType
33
- }).load_handleClientEntrypoint;
41
+ });
42
+ load_handleClientEntrypoint = clientEntrypointHandler.load_handleClientEntrypoint;
43
+ if (projectType === "tanstack-start" && isBuild) {
44
+ const tanstackStartClientOutputHandler = createHandleTanstackStartClientOutput({
45
+ resolvedConfig,
46
+ getClientEntrypointSource: clientEntrypointHandler.getClientEntrypointSource
47
+ });
48
+ resolveId_handleTanstackStartClientOutput = tanstackStartClientOutputHandler.resolveId;
49
+ load_handleTanstackStartClientOutput = tanstackStartClientOutputHandler.load;
50
+ buildStart_handleTanstackStartClientOutput = tanstackStartClientOutputHandler.buildStart;
51
+ generateBundle_handleTanstackStartClientOutput =
52
+ tanstackStartClientOutputHandler.generateBundle;
53
+ tanstackStartApplicationEntryBuildMarker =
54
+ tanstackStartClientOutputHandler.applicationEntryBuildMarker;
55
+ }
34
56
  load_handleServerEntrypoint = createHandleServerEntrypoint({
35
57
  resolvedConfig,
36
58
  projectType
@@ -50,12 +72,32 @@ export function oidcSpa(params = {}) {
50
72
  }
51
73
  return transformed;
52
74
  },
75
+ resolveId(id) {
76
+ return resolveId_handleTanstackStartClientOutput?.(id) ?? null;
77
+ },
78
+ buildStart() {
79
+ buildStart_handleTanstackStartClientOutput?.call(this);
80
+ },
53
81
  async load(id) {
82
+ {
83
+ const r = load_handleTanstackStartClientOutput?.(id) ?? null;
84
+ if (r !== null) {
85
+ return r;
86
+ }
87
+ }
54
88
  {
55
89
  assert(load_handleClientEntrypoint !== undefined);
90
+ const doUseOriginalEntrypoint = projectType === "tanstack-start" &&
91
+ isBuild &&
92
+ (this.environment?.name ??
93
+ "client") === "client";
56
94
  const r = await load_handleClientEntrypoint({
57
95
  id,
58
- pluginContext: this
96
+ pluginContext: this,
97
+ doUseOriginalEntrypoint,
98
+ buildMarker: doUseOriginalEntrypoint
99
+ ? tanstackStartApplicationEntryBuildMarker
100
+ : undefined
59
101
  });
60
102
  if (r !== null) {
61
103
  return r;
@@ -72,6 +114,12 @@ export function oidcSpa(params = {}) {
72
114
  }
73
115
  }
74
116
  return null;
117
+ },
118
+ generateBundle: {
119
+ order: "pre",
120
+ async handler(options, bundle) {
121
+ await generateBundle_handleTanstackStartClientOutput?.call(this, options, bundle);
122
+ }
75
123
  }
76
124
  };
77
125
  return plugin;
@@ -1 +1 @@
1
- {"version":3,"file":"vite-plugin.mjs","sourceRoot":"","sources":["../../src/vite-plugin/vite-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vite-plugin.mjs","sourceRoot":"","sources":["../../src/vite-plugin/vite-plugin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oidc-spa",
3
- "version": "10.2.7",
3
+ "version": "10.2.8",
4
4
  "description": "OpenID Connect / OAuth2 solution for client-first Web Applications",
5
5
  "repository": {
6
6
  "type": "git",
@@ -43,30 +43,10 @@ export function createHandleClientEntrypoint(params: {
43
43
  projectType
44
44
  });
45
45
 
46
- async function load_handleClientEntrypoint(params: {
47
- id: string;
48
- pluginContext: PluginContext;
49
- }): Promise<null | string> {
50
- const { id, pluginContext } = params;
51
- const { path: rawPath, queryParams } = splitId(id);
52
-
53
- const normalizedRequestPath = normalizeRequestPath(rawPath);
54
- const isMatch =
55
- normalizedRequestPath && normalizedRequestPath === entryResolution.normalizedPath;
56
-
57
- if (!isMatch) {
58
- return null;
59
- }
60
-
61
- const isOriginalRequest = queryParams.getAll(ORIGINAL_QUERY_PARAM).includes("true");
62
-
63
- if (isOriginalRequest) {
64
- entryResolution.watchFiles.forEach(file => pluginContext.addWatchFile(file));
65
- return fs.readFile(entryResolution.absolutePath, "utf8");
66
- }
67
-
68
- entryResolution.watchFiles.forEach(file => pluginContext.addWatchFile(file));
69
-
46
+ function getClientEntrypointSource(params: {
47
+ applicationEntrypointImportSpecifier: string;
48
+ }): string {
49
+ const { applicationEntrypointImportSpecifier } = params;
70
50
  const { browserRuntimeFreeze, tokenSubstitution, DPoP, sessionRestorationMethod } =
71
51
  oidcSpaVitePluginParams ?? {};
72
52
 
@@ -94,8 +74,7 @@ export function createHandleClientEntrypoint(params: {
94
74
  `});`,
95
75
  ``,
96
76
  `if (shouldLoadApp) {`,
97
- // prettier-ignore
98
- `import("./${path.basename(entryResolution.absolutePath)}?${ORIGINAL_QUERY_PARAM}=true");`,
77
+ `import(${JSON.stringify(applicationEntrypointImportSpecifier)});`,
99
78
  `}`
100
79
  ].join("\n");
101
80
 
@@ -141,7 +120,42 @@ export function createHandleClientEntrypoint(params: {
141
120
  }
142
121
  }
143
122
 
144
- return { load_handleClientEntrypoint };
123
+ async function load_handleClientEntrypoint(params: {
124
+ id: string;
125
+ pluginContext: PluginContext;
126
+ doUseOriginalEntrypoint: boolean;
127
+ buildMarker?: string;
128
+ }): Promise<null | string> {
129
+ const { id, pluginContext, doUseOriginalEntrypoint, buildMarker } = params;
130
+ const { path: rawPath, queryParams } = splitId(id);
131
+
132
+ const normalizedRequestPath = normalizeRequestPath(rawPath);
133
+ const isMatch =
134
+ normalizedRequestPath && normalizedRequestPath === entryResolution.normalizedPath;
135
+
136
+ if (!isMatch) {
137
+ return null;
138
+ }
139
+
140
+ const isOriginalRequest =
141
+ doUseOriginalEntrypoint || queryParams.getAll(ORIGINAL_QUERY_PARAM).includes("true");
142
+
143
+ if (isOriginalRequest) {
144
+ entryResolution.watchFiles.forEach(file => pluginContext.addWatchFile(file));
145
+ const originalSource = await fs.readFile(entryResolution.absolutePath, "utf8");
146
+ return buildMarker === undefined ? originalSource : `${buildMarker}\n${originalSource}`;
147
+ }
148
+
149
+ entryResolution.watchFiles.forEach(file => pluginContext.addWatchFile(file));
150
+
151
+ return getClientEntrypointSource({
152
+ applicationEntrypointImportSpecifier: `./${path.basename(
153
+ entryResolution.absolutePath
154
+ )}?${ORIGINAL_QUERY_PARAM}=true`
155
+ });
156
+ }
157
+
158
+ return { load_handleClientEntrypoint, getClientEntrypointSource };
145
159
  }
146
160
 
147
161
  function resolveEntryForProject({
@@ -0,0 +1,415 @@
1
+ import * as path from "node:path";
2
+ import { createHash } from "node:crypto";
3
+ import { existsSync, readFileSync } from "node:fs";
4
+ import { fileURLToPath } from "node:url";
5
+ import type { ResolvedConfig, Rollup } from "vite";
6
+
7
+ const BOOTSTRAP_ENTRY_ID = "virtual:oidc-spa/tanstack-start-client-bootstrap";
8
+ const RESOLVED_BOOTSTRAP_ENTRY_ID = `\0${BOOTSTRAP_ENTRY_ID}`;
9
+ const APPLICATION_ENTRY_PLACEHOLDER = "oidc-spa:tanstack-start-application-entry";
10
+
11
+ type PluginContextWithEnvironment = Rollup.PluginContext & {
12
+ environment?: {
13
+ name?: string;
14
+ };
15
+ };
16
+
17
+ type MutableOutputChunk = {
18
+ map: Rollup.SourceMap | null;
19
+ };
20
+
21
+ export function createHandleTanstackStartClientOutput(params: {
22
+ resolvedConfig: ResolvedConfig;
23
+ getClientEntrypointSource: (params: { applicationEntrypointImportSpecifier: string }) => string;
24
+ }) {
25
+ const { resolvedConfig, getClientEntrypointSource } = params;
26
+
27
+ const bootstrapSource = getClientEntrypointSource({
28
+ applicationEntrypointImportSpecifier: APPLICATION_ENTRY_PLACEHOLDER
29
+ });
30
+ const applicationEntryBuildMarker = getApplicationEntryBuildMarker({ bootstrapSource });
31
+
32
+ function resolveId(id: string): null | string | { id: string; external: true } {
33
+ if (id === BOOTSTRAP_ENTRY_ID) {
34
+ return RESOLVED_BOOTSTRAP_ENTRY_ID;
35
+ }
36
+
37
+ if (id === APPLICATION_ENTRY_PLACEHOLDER) {
38
+ return { id, external: true };
39
+ }
40
+
41
+ return null;
42
+ }
43
+
44
+ function load(id: string): null | string {
45
+ return id === RESOLVED_BOOTSTRAP_ENTRY_ID ? bootstrapSource : null;
46
+ }
47
+
48
+ function buildStart(this: Rollup.PluginContext): void {
49
+ if (!isClientEnvironment({ pluginContext: this, resolvedConfig })) {
50
+ return;
51
+ }
52
+
53
+ // This keeps the bootstrap independent from the application graph. The
54
+ // temporary entry is finalized and removed before TanStack captures it.
55
+ this.emitFile({
56
+ type: "chunk",
57
+ id: BOOTSTRAP_ENTRY_ID,
58
+ name: "oidc-spa-bootstrap",
59
+ preserveSignature: false
60
+ });
61
+ }
62
+
63
+ async function generateBundle(
64
+ this: Rollup.PluginContext,
65
+ _options: Rollup.NormalizedOutputOptions,
66
+ bundle: Rollup.OutputBundle
67
+ ): Promise<void> {
68
+ if (!isClientEnvironment({ pluginContext: this, resolvedConfig })) {
69
+ return;
70
+ }
71
+
72
+ const bootstrapChunk = Object.values(bundle).find(
73
+ (output): output is Rollup.OutputChunk =>
74
+ output.type === "chunk" && output.moduleIds.includes(RESOLVED_BOOTSTRAP_ENTRY_ID)
75
+ );
76
+
77
+ if (bootstrapChunk === undefined) {
78
+ this.error("oidc-spa: The TanStack Start client bootstrap chunk was not emitted.");
79
+ }
80
+
81
+ const applicationEntryChunks = Object.values(bundle).filter(
82
+ (output): output is Rollup.OutputChunk =>
83
+ output.type === "chunk" && output.isEntry && output !== bootstrapChunk
84
+ );
85
+
86
+ if (applicationEntryChunks.length !== 1) {
87
+ this.error(
88
+ `oidc-spa: Expected exactly one TanStack Start client entry chunk, found ${applicationEntryChunks.length}.`
89
+ );
90
+ }
91
+
92
+ const [entryChunk] = applicationEntryChunks;
93
+
94
+ assertBootstrapSynchronousGraphIsIsolated({
95
+ pluginContext: this,
96
+ bundle,
97
+ bootstrapChunk,
98
+ applicationEntryChunk: entryChunk
99
+ });
100
+
101
+ const applicationEntryFileName = getApplicationEntryFileName({
102
+ entryFileName: entryChunk.fileName,
103
+ bundle
104
+ });
105
+
106
+ for (const output of Object.values(bundle)) {
107
+ if (output.type !== "chunk") {
108
+ continue;
109
+ }
110
+
111
+ rewriteChunkEntryReferences({
112
+ chunk: output,
113
+ previousEntryFileName: entryChunk.fileName,
114
+ applicationEntryFileName
115
+ });
116
+ }
117
+
118
+ const applicationEntryCode = entryChunk.code;
119
+ const applicationEntryMap = entryChunk.map;
120
+ const outputHash = createHash("sha256")
121
+ .update(applicationEntryCode)
122
+ .update("\0")
123
+ .update(bootstrapChunk.code)
124
+ .digest("base64url")
125
+ .slice(0, 12);
126
+ const finalizedBootstrapFileName = addFileNameSuffix({
127
+ fileName: bootstrapChunk.fileName,
128
+ suffix: outputHash
129
+ });
130
+
131
+ const finalizedBootstrapCode = replaceApplicationEntryPlaceholder({
132
+ code: bootstrapChunk.code,
133
+ applicationEntryImportSpecifier: toRelativeImportSpecifier({
134
+ importerFileName: finalizedBootstrapFileName,
135
+ importedFileName: applicationEntryFileName
136
+ })
137
+ });
138
+
139
+ delete bundle[bootstrapChunk.fileName];
140
+
141
+ this.emitFile({
142
+ type: "prebuilt-chunk",
143
+ fileName: finalizedBootstrapFileName,
144
+ code: finalizedBootstrapCode,
145
+ exports: bootstrapChunk.exports
146
+ });
147
+
148
+ this.emitFile({
149
+ type: "prebuilt-chunk",
150
+ fileName: applicationEntryFileName,
151
+ code: applicationEntryCode,
152
+ exports: entryChunk.exports,
153
+ map:
154
+ applicationEntryMap === null
155
+ ? undefined
156
+ : {
157
+ ...applicationEntryMap,
158
+ file: path.posix.basename(applicationEntryFileName)
159
+ }
160
+ });
161
+
162
+ const bootstrapImportSpecifier = toRelativeImportSpecifier({
163
+ importerFileName: entryChunk.fileName,
164
+ importedFileName: finalizedBootstrapFileName
165
+ });
166
+
167
+ entryChunk.code = `import ${JSON.stringify(bootstrapImportSpecifier)};\n`;
168
+
169
+ const mutableEntryChunk = entryChunk as unknown as MutableOutputChunk;
170
+ mutableEntryChunk.map = null;
171
+ }
172
+
173
+ return { resolveId, load, buildStart, generateBundle, applicationEntryBuildMarker };
174
+ }
175
+
176
+ function getApplicationEntryBuildMarker(params: { bootstrapSource: string }): string {
177
+ const { bootstrapSource } = params;
178
+ const packageVersion = findOidcSpaPackageVersion();
179
+
180
+ const fingerprint = createHash("sha256")
181
+ .update(packageVersion)
182
+ .update("\0")
183
+ .update(bootstrapSource)
184
+ .digest("hex")
185
+ .slice(0, 16);
186
+
187
+ // This property read survives tree-shaking and executes only after the
188
+ // security bootstrap elects to load the application.
189
+ return `globalThis[${JSON.stringify(`__oidcSpaBuild_${fingerprint}`)}];`;
190
+ }
191
+
192
+ function findOidcSpaPackageVersion(): string {
193
+ let directory = path.dirname(fileURLToPath(import.meta.url));
194
+
195
+ while (true) {
196
+ const packageJsonPath = path.join(directory, "package.json");
197
+
198
+ if (existsSync(packageJsonPath)) {
199
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf8")) as {
200
+ name?: unknown;
201
+ version?: unknown;
202
+ };
203
+
204
+ if (packageJson.name === "oidc-spa" && typeof packageJson.version === "string") {
205
+ return packageJson.version;
206
+ }
207
+ }
208
+
209
+ const parentDirectory = path.dirname(directory);
210
+
211
+ if (parentDirectory === directory) {
212
+ throw new Error("oidc-spa: Could not read the package version for the build marker.");
213
+ }
214
+
215
+ directory = parentDirectory;
216
+ }
217
+ }
218
+
219
+ function assertBootstrapSynchronousGraphIsIsolated(params: {
220
+ pluginContext: Rollup.PluginContext;
221
+ bundle: Rollup.OutputBundle;
222
+ bootstrapChunk: Rollup.OutputChunk;
223
+ applicationEntryChunk: Rollup.OutputChunk;
224
+ }): void {
225
+ const { pluginContext, bundle, bootstrapChunk, applicationEntryChunk } = params;
226
+ const allowedModuleIds = new Set<string>();
227
+ const pendingModuleIds = [RESOLVED_BOOTSTRAP_ENTRY_ID];
228
+
229
+ while (pendingModuleIds.length !== 0) {
230
+ const moduleId = pendingModuleIds.pop();
231
+
232
+ if (moduleId === undefined || allowedModuleIds.has(moduleId)) {
233
+ continue;
234
+ }
235
+
236
+ allowedModuleIds.add(moduleId);
237
+
238
+ const moduleInfo = pluginContext.getModuleInfo(moduleId);
239
+
240
+ if (moduleInfo === null) {
241
+ continue;
242
+ }
243
+
244
+ pendingModuleIds.push(...moduleInfo.importedIds);
245
+ }
246
+
247
+ const chunksByFileName = new Map(
248
+ Object.values(bundle)
249
+ .filter((output): output is Rollup.OutputChunk => output.type === "chunk")
250
+ .map(chunk => [chunk.fileName, chunk])
251
+ );
252
+ const pendingChunks = [bootstrapChunk];
253
+ const visitedChunkFileNames = new Set<string>();
254
+
255
+ while (pendingChunks.length !== 0) {
256
+ const chunk = pendingChunks.pop();
257
+
258
+ if (chunk === undefined || visitedChunkFileNames.has(chunk.fileName)) {
259
+ continue;
260
+ }
261
+
262
+ visitedChunkFileNames.add(chunk.fileName);
263
+
264
+ if (chunk === applicationEntryChunk) {
265
+ throw new Error(
266
+ "oidc-spa: TanStack Start placed the application entry in the synchronous bootstrap graph."
267
+ );
268
+ }
269
+
270
+ const unexpectedModuleId = chunk.moduleIds.find(
271
+ moduleId => !allowedModuleIds.has(moduleId) && !isViteRuntimeModule(moduleId)
272
+ );
273
+
274
+ if (unexpectedModuleId !== undefined) {
275
+ throw new Error(
276
+ `oidc-spa: TanStack Start placed an application module in the synchronous bootstrap graph: ${unexpectedModuleId}`
277
+ );
278
+ }
279
+
280
+ for (const importedFileName of chunk.imports) {
281
+ const importedChunk = chunksByFileName.get(importedFileName);
282
+
283
+ if (importedChunk !== undefined) {
284
+ pendingChunks.push(importedChunk);
285
+ }
286
+ }
287
+ }
288
+ }
289
+
290
+ function isViteRuntimeModule(moduleId: string): boolean {
291
+ return (
292
+ moduleId.startsWith("\0vite/") ||
293
+ moduleId.startsWith("\0rolldown/") ||
294
+ moduleId.startsWith("\0commonjsHelpers") ||
295
+ moduleId.includes("vite/preload-helper")
296
+ );
297
+ }
298
+
299
+ function addFileNameSuffix(params: { fileName: string; suffix: string }): string {
300
+ const { fileName, suffix } = params;
301
+ const extension = path.posix.extname(fileName);
302
+ if (extension === "") {
303
+ return `${fileName}-${suffix}`;
304
+ }
305
+ return `${fileName.slice(0, -extension.length)}-${suffix}${extension}`;
306
+ }
307
+
308
+ function isClientEnvironment(params: {
309
+ pluginContext: Rollup.PluginContext;
310
+ resolvedConfig: ResolvedConfig;
311
+ }): boolean {
312
+ const { pluginContext, resolvedConfig } = params;
313
+ const environmentName = (pluginContext as PluginContextWithEnvironment).environment?.name;
314
+
315
+ if (environmentName !== undefined) {
316
+ return environmentName === "client";
317
+ }
318
+
319
+ return !resolvedConfig.build.ssr;
320
+ }
321
+
322
+ function getApplicationEntryFileName(params: {
323
+ entryFileName: string;
324
+ bundle: Rollup.OutputBundle;
325
+ }): string {
326
+ const { entryFileName, bundle } = params;
327
+ const directory = path.posix.dirname(entryFileName);
328
+ const basename = path.posix.basename(entryFileName);
329
+
330
+ for (let index = 0; index < basename.length; index++) {
331
+ if (basename[index] !== "-") {
332
+ continue;
333
+ }
334
+
335
+ const candidateBasename = `${basename.slice(0, index)}_${basename.slice(index + 1)}`;
336
+ const candidate = path.posix.join(directory === "." ? "" : directory, candidateBasename);
337
+
338
+ if (bundle[candidate] === undefined) {
339
+ return candidate;
340
+ }
341
+ }
342
+
343
+ for (let index = 0; index < basename.length; index++) {
344
+ if (basename[index] === "_") {
345
+ continue;
346
+ }
347
+
348
+ const candidateBasename = `${basename.slice(0, index)}_${basename.slice(index + 1)}`;
349
+ const candidate = path.posix.join(directory === "." ? "" : directory, candidateBasename);
350
+
351
+ if (bundle[candidate] === undefined) {
352
+ return candidate;
353
+ }
354
+ }
355
+
356
+ throw new Error(`oidc-spa: Could not allocate an application entry beside "${entryFileName}".`);
357
+ }
358
+
359
+ function rewriteChunkEntryReferences(params: {
360
+ chunk: Rollup.OutputChunk;
361
+ previousEntryFileName: string;
362
+ applicationEntryFileName: string;
363
+ }): void {
364
+ const { chunk, previousEntryFileName, applicationEntryFileName } = params;
365
+ const previousRelativeSpecifier = toRelativeImportSpecifier({
366
+ importerFileName: chunk.fileName,
367
+ importedFileName: previousEntryFileName
368
+ });
369
+ const applicationRelativeSpecifier = toRelativeImportSpecifier({
370
+ importerFileName: chunk.fileName,
371
+ importedFileName: applicationEntryFileName
372
+ });
373
+
374
+ const replacements = new Map([
375
+ [previousEntryFileName, applicationEntryFileName],
376
+ [previousRelativeSpecifier, applicationRelativeSpecifier]
377
+ ]);
378
+
379
+ for (const [from, to] of replacements) {
380
+ if (from === to) {
381
+ continue;
382
+ }
383
+
384
+ if (from.length !== to.length) {
385
+ throw new Error("oidc-spa: Internal entry rewrite changed generated code offsets.");
386
+ }
387
+
388
+ chunk.code = chunk.code.split(from).join(to);
389
+ }
390
+ }
391
+
392
+ function replaceApplicationEntryPlaceholder(params: {
393
+ code: string;
394
+ applicationEntryImportSpecifier: string;
395
+ }): string {
396
+ const { code, applicationEntryImportSpecifier } = params;
397
+ const occurrences = code.split(APPLICATION_ENTRY_PLACEHOLDER).length - 1;
398
+
399
+ if (occurrences !== 1) {
400
+ throw new Error(
401
+ `oidc-spa: Expected one application entry placeholder in the generated bootstrap, found ${occurrences}.`
402
+ );
403
+ }
404
+
405
+ return code.replace(APPLICATION_ENTRY_PLACEHOLDER, applicationEntryImportSpecifier);
406
+ }
407
+
408
+ function toRelativeImportSpecifier(params: {
409
+ importerFileName: string;
410
+ importedFileName: string;
411
+ }): string {
412
+ const { importerFileName, importedFileName } = params;
413
+ const relativePath = path.posix.relative(path.posix.dirname(importerFileName), importedFileName);
414
+ return relativePath.startsWith(".") ? relativePath : `./${relativePath}`;
415
+ }
@@ -6,6 +6,7 @@ import { createHandleServerEntrypoint } from "./handleServerEntrypoint";
6
6
  import { manageOptimizedDeps } from "./manageOptimizedDeps";
7
7
  import { transformCreateFileRoute } from "./transformTanstackRouterCreateFileRoute";
8
8
  import { getProjectType, type ProjectType } from "./projectType";
9
+ import { createHandleTanstackStartClientOutput } from "./handleTanstackStartClientOutput";
9
10
 
10
11
  export type OidcSpaVitePluginParams = {
11
12
  /** See: https://docs.oidc-spa.dev/v/v10/security-features/browser-runtime-freeze */
@@ -67,11 +68,25 @@ export function oidcSpa(params: OidcSpaVitePluginParams = {}) {
67
68
  let load_handleClientEntrypoint:
68
69
  | ReturnType<typeof createHandleClientEntrypoint>["load_handleClientEntrypoint"]
69
70
  | undefined = undefined;
71
+ let resolveId_handleTanstackStartClientOutput:
72
+ | ReturnType<typeof createHandleTanstackStartClientOutput>["resolveId"]
73
+ | undefined = undefined;
74
+ let load_handleTanstackStartClientOutput:
75
+ | ReturnType<typeof createHandleTanstackStartClientOutput>["load"]
76
+ | undefined = undefined;
77
+ let buildStart_handleTanstackStartClientOutput:
78
+ | ReturnType<typeof createHandleTanstackStartClientOutput>["buildStart"]
79
+ | undefined = undefined;
80
+ let generateBundle_handleTanstackStartClientOutput:
81
+ | ReturnType<typeof createHandleTanstackStartClientOutput>["generateBundle"]
82
+ | undefined = undefined;
83
+ let tanstackStartApplicationEntryBuildMarker: string | undefined = undefined;
70
84
  let load_handleServerEntrypoint:
71
85
  | ReturnType<typeof createHandleServerEntrypoint>["load_handleServerEntrypoint"]
72
86
  | undefined = undefined;
73
87
 
74
88
  let projectType: ProjectType | undefined = undefined;
89
+ let isBuild = false;
75
90
 
76
91
  const plugin: Plugin = {
77
92
  name: "oidc-spa",
@@ -90,15 +105,33 @@ export function oidcSpa(params: OidcSpaVitePluginParams = {}) {
90
105
  return userConfig;
91
106
  },
92
107
  configResolved(resolvedConfig) {
108
+ isBuild = resolvedConfig.command === "build";
93
109
  projectType = getProjectType({
94
110
  pluginNames: resolvedConfig.plugins.map(({ name }) => name)
95
111
  });
96
112
 
97
- load_handleClientEntrypoint = createHandleClientEntrypoint({
113
+ const clientEntrypointHandler = createHandleClientEntrypoint({
98
114
  oidcSpaVitePluginParams: params,
99
115
  resolvedConfig,
100
116
  projectType
101
- }).load_handleClientEntrypoint;
117
+ });
118
+
119
+ load_handleClientEntrypoint = clientEntrypointHandler.load_handleClientEntrypoint;
120
+
121
+ if (projectType === "tanstack-start" && isBuild) {
122
+ const tanstackStartClientOutputHandler = createHandleTanstackStartClientOutput({
123
+ resolvedConfig,
124
+ getClientEntrypointSource: clientEntrypointHandler.getClientEntrypointSource
125
+ });
126
+
127
+ resolveId_handleTanstackStartClientOutput = tanstackStartClientOutputHandler.resolveId;
128
+ load_handleTanstackStartClientOutput = tanstackStartClientOutputHandler.load;
129
+ buildStart_handleTanstackStartClientOutput = tanstackStartClientOutputHandler.buildStart;
130
+ generateBundle_handleTanstackStartClientOutput =
131
+ tanstackStartClientOutputHandler.generateBundle;
132
+ tanstackStartApplicationEntryBuildMarker =
133
+ tanstackStartClientOutputHandler.applicationEntryBuildMarker;
134
+ }
102
135
 
103
136
  load_handleServerEntrypoint = createHandleServerEntrypoint({
104
137
  resolvedConfig,
@@ -123,13 +156,37 @@ export function oidcSpa(params: OidcSpaVitePluginParams = {}) {
123
156
 
124
157
  return transformed;
125
158
  },
159
+ resolveId(id) {
160
+ return resolveId_handleTanstackStartClientOutput?.(id) ?? null;
161
+ },
162
+ buildStart() {
163
+ buildStart_handleTanstackStartClientOutput?.call(this);
164
+ },
126
165
  async load(id) {
166
+ {
167
+ const r = load_handleTanstackStartClientOutput?.(id) ?? null;
168
+
169
+ if (r !== null) {
170
+ return r;
171
+ }
172
+ }
173
+
127
174
  {
128
175
  assert(load_handleClientEntrypoint !== undefined);
129
176
 
177
+ const doUseOriginalEntrypoint =
178
+ projectType === "tanstack-start" &&
179
+ isBuild &&
180
+ ((this as typeof this & { environment?: { name?: string } }).environment?.name ??
181
+ "client") === "client";
182
+
130
183
  const r = await load_handleClientEntrypoint({
131
184
  id,
132
- pluginContext: this
185
+ pluginContext: this,
186
+ doUseOriginalEntrypoint,
187
+ buildMarker: doUseOriginalEntrypoint
188
+ ? tanstackStartApplicationEntryBuildMarker
189
+ : undefined
133
190
  });
134
191
 
135
192
  if (r !== null) {
@@ -149,8 +206,13 @@ export function oidcSpa(params: OidcSpaVitePluginParams = {}) {
149
206
  return r;
150
207
  }
151
208
  }
152
-
153
209
  return null;
210
+ },
211
+ generateBundle: {
212
+ order: "pre",
213
+ async handler(options, bundle) {
214
+ await generateBundle_handleTanstackStartClientOutput?.call(this, options, bundle);
215
+ }
154
216
  }
155
217
  };
156
218