@tanstack/start-plugin-core 1.121.0-alpha.2 → 1.121.0-alpha.21

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 (137) hide show
  1. package/dist/cjs/constants.cjs +4 -0
  2. package/dist/cjs/constants.cjs.map +1 -1
  3. package/dist/cjs/constants.d.cts +2 -0
  4. package/dist/cjs/{extractHtmlScripts.cjs → dev-server-plugin/extract-html-scripts.cjs} +1 -1
  5. package/dist/cjs/dev-server-plugin/extract-html-scripts.cjs.map +1 -0
  6. package/dist/cjs/{nitro/dev-server-plugin.cjs → dev-server-plugin/plugin.cjs} +2 -2
  7. package/dist/cjs/dev-server-plugin/plugin.cjs.map +1 -0
  8. package/dist/cjs/index.cjs +2 -0
  9. package/dist/cjs/index.cjs.map +1 -1
  10. package/dist/cjs/index.d.cts +1 -0
  11. package/dist/cjs/load-env-plugin/plugin.cjs +34 -0
  12. package/dist/cjs/load-env-plugin/plugin.cjs.map +1 -0
  13. package/dist/cjs/load-env-plugin/plugin.d.cts +3 -0
  14. package/dist/cjs/nitro-plugin/build-sitemap.cjs +138 -0
  15. package/dist/cjs/nitro-plugin/build-sitemap.cjs.map +1 -0
  16. package/dist/cjs/nitro-plugin/build-sitemap.d.cts +31 -0
  17. package/dist/cjs/{nitro/nitro-plugin.cjs → nitro-plugin/plugin.cjs} +77 -54
  18. package/dist/cjs/nitro-plugin/plugin.cjs.map +1 -0
  19. package/dist/cjs/{prerender.cjs → nitro-plugin/prerender.cjs} +12 -17
  20. package/dist/cjs/nitro-plugin/prerender.cjs.map +1 -0
  21. package/dist/cjs/{prerender.d.cts → nitro-plugin/prerender.d.cts} +1 -1
  22. package/dist/cjs/nitro-plugin/queue.cjs.map +1 -0
  23. package/dist/cjs/plugin.cjs +38 -27
  24. package/dist/cjs/plugin.cjs.map +1 -1
  25. package/dist/cjs/plugin.d.cts +25 -3064
  26. package/dist/cjs/resolve-virtual-entries-plugin/plugin.cjs +66 -0
  27. package/dist/cjs/resolve-virtual-entries-plugin/plugin.cjs.map +1 -0
  28. package/dist/cjs/resolve-virtual-entries-plugin/plugin.d.cts +3 -0
  29. package/dist/cjs/schema.cjs +6 -4
  30. package/dist/cjs/schema.cjs.map +1 -1
  31. package/dist/cjs/schema.d.cts +530 -1656
  32. package/dist/cjs/start-compiler-plugin.cjs +2 -2
  33. package/dist/cjs/start-compiler-plugin.cjs.map +1 -1
  34. package/dist/cjs/start-compiler-plugin.d.cts +1 -1
  35. package/dist/cjs/{routesManifestPlugin.cjs → start-routes-manifest-plugin/plugin.cjs} +86 -44
  36. package/dist/cjs/start-routes-manifest-plugin/plugin.cjs.map +1 -0
  37. package/dist/cjs/start-routes-manifest-plugin/plugin.d.cts +3 -0
  38. package/dist/cjs/start-server-routes-plugin/plugin.cjs +4 -2
  39. package/dist/cjs/start-server-routes-plugin/plugin.cjs.map +1 -1
  40. package/dist/cjs/utils.cjs +18 -0
  41. package/dist/cjs/utils.cjs.map +1 -0
  42. package/dist/cjs/utils.d.cts +8 -0
  43. package/dist/esm/constants.d.ts +2 -0
  44. package/dist/esm/constants.js +4 -0
  45. package/dist/esm/constants.js.map +1 -1
  46. package/dist/esm/{extractHtmlScripts.js → dev-server-plugin/extract-html-scripts.js} +1 -1
  47. package/dist/esm/dev-server-plugin/extract-html-scripts.js.map +1 -0
  48. package/dist/esm/{nitro/dev-server-plugin.js → dev-server-plugin/plugin.js} +2 -2
  49. package/dist/esm/dev-server-plugin/plugin.js.map +1 -0
  50. package/dist/esm/index.d.ts +1 -0
  51. package/dist/esm/index.js +3 -1
  52. package/dist/esm/index.js.map +1 -1
  53. package/dist/esm/load-env-plugin/plugin.d.ts +3 -0
  54. package/dist/esm/load-env-plugin/plugin.js +17 -0
  55. package/dist/esm/load-env-plugin/plugin.js.map +1 -0
  56. package/dist/esm/nitro-plugin/build-sitemap.d.ts +31 -0
  57. package/dist/esm/nitro-plugin/build-sitemap.js +138 -0
  58. package/dist/esm/nitro-plugin/build-sitemap.js.map +1 -0
  59. package/dist/esm/nitro-plugin/plugin.js +181 -0
  60. package/dist/esm/nitro-plugin/plugin.js.map +1 -0
  61. package/dist/esm/{prerender.d.ts → nitro-plugin/prerender.d.ts} +1 -1
  62. package/dist/esm/{prerender.js → nitro-plugin/prerender.js} +12 -17
  63. package/dist/esm/nitro-plugin/prerender.js.map +1 -0
  64. package/dist/esm/nitro-plugin/queue.js.map +1 -0
  65. package/dist/esm/plugin.d.ts +25 -3064
  66. package/dist/esm/plugin.js +39 -28
  67. package/dist/esm/plugin.js.map +1 -1
  68. package/dist/esm/resolve-virtual-entries-plugin/plugin.d.ts +3 -0
  69. package/dist/esm/resolve-virtual-entries-plugin/plugin.js +49 -0
  70. package/dist/esm/resolve-virtual-entries-plugin/plugin.js.map +1 -0
  71. package/dist/esm/schema.d.ts +530 -1656
  72. package/dist/esm/schema.js +6 -4
  73. package/dist/esm/schema.js.map +1 -1
  74. package/dist/esm/start-compiler-plugin.d.ts +1 -1
  75. package/dist/esm/start-compiler-plugin.js +2 -2
  76. package/dist/esm/start-compiler-plugin.js.map +1 -1
  77. package/dist/esm/start-routes-manifest-plugin/plugin.d.ts +3 -0
  78. package/dist/esm/{routesManifestPlugin.js → start-routes-manifest-plugin/plugin.js} +87 -45
  79. package/dist/esm/start-routes-manifest-plugin/plugin.js.map +1 -0
  80. package/dist/esm/start-server-routes-plugin/plugin.js +4 -2
  81. package/dist/esm/start-server-routes-plugin/plugin.js.map +1 -1
  82. package/dist/esm/utils.d.ts +8 -0
  83. package/dist/esm/utils.js +18 -0
  84. package/dist/esm/utils.js.map +1 -0
  85. package/package.json +6 -6
  86. package/src/constants.ts +3 -0
  87. package/src/{nitro/dev-server-plugin.ts → dev-server-plugin/plugin.ts} +11 -1
  88. package/src/index.ts +1 -0
  89. package/src/load-env-plugin/plugin.ts +17 -0
  90. package/src/nitro-plugin/build-sitemap.ts +213 -0
  91. package/src/nitro-plugin/plugin.ts +244 -0
  92. package/src/{prerender.ts → nitro-plugin/prerender.ts} +14 -21
  93. package/src/plugin.ts +57 -29
  94. package/src/resolve-virtual-entries-plugin/plugin.ts +63 -0
  95. package/src/schema.ts +11 -9
  96. package/src/start-compiler-plugin.ts +1 -1
  97. package/src/{routesManifestPlugin.ts → start-routes-manifest-plugin/plugin.ts} +111 -45
  98. package/src/start-server-routes-plugin/plugin.ts +4 -2
  99. package/src/utils.ts +14 -0
  100. package/dist/cjs/extractHtmlScripts.cjs.map +0 -1
  101. package/dist/cjs/nitro/build-nitro.cjs +0 -18
  102. package/dist/cjs/nitro/build-nitro.cjs.map +0 -1
  103. package/dist/cjs/nitro/build-nitro.d.cts +0 -2
  104. package/dist/cjs/nitro/build-sitemap.d.cts +0 -9
  105. package/dist/cjs/nitro/dev-server-plugin.cjs.map +0 -1
  106. package/dist/cjs/nitro/nitro-plugin.cjs.map +0 -1
  107. package/dist/cjs/prerender.cjs.map +0 -1
  108. package/dist/cjs/queue.cjs.map +0 -1
  109. package/dist/cjs/routesManifestPlugin.cjs.map +0 -1
  110. package/dist/cjs/routesManifestPlugin.d.cts +0 -3
  111. package/dist/esm/extractHtmlScripts.js.map +0 -1
  112. package/dist/esm/nitro/build-nitro.d.ts +0 -2
  113. package/dist/esm/nitro/build-nitro.js +0 -18
  114. package/dist/esm/nitro/build-nitro.js.map +0 -1
  115. package/dist/esm/nitro/build-sitemap.d.ts +0 -9
  116. package/dist/esm/nitro/dev-server-plugin.js.map +0 -1
  117. package/dist/esm/nitro/nitro-plugin.js +0 -158
  118. package/dist/esm/nitro/nitro-plugin.js.map +0 -1
  119. package/dist/esm/prerender.js.map +0 -1
  120. package/dist/esm/queue.js.map +0 -1
  121. package/dist/esm/routesManifestPlugin.d.ts +0 -3
  122. package/dist/esm/routesManifestPlugin.js.map +0 -1
  123. package/src/nitro/build-nitro.ts +0 -27
  124. package/src/nitro/build-sitemap.ts +0 -79
  125. package/src/nitro/nitro-plugin.ts +0 -199
  126. /package/dist/cjs/{extractHtmlScripts.d.cts → dev-server-plugin/extract-html-scripts.d.cts} +0 -0
  127. /package/dist/cjs/{nitro/dev-server-plugin.d.cts → dev-server-plugin/plugin.d.cts} +0 -0
  128. /package/dist/cjs/{nitro/nitro-plugin.d.cts → nitro-plugin/plugin.d.cts} +0 -0
  129. /package/dist/cjs/{queue.cjs → nitro-plugin/queue.cjs} +0 -0
  130. /package/dist/cjs/{queue.d.cts → nitro-plugin/queue.d.cts} +0 -0
  131. /package/dist/esm/{extractHtmlScripts.d.ts → dev-server-plugin/extract-html-scripts.d.ts} +0 -0
  132. /package/dist/esm/{nitro/dev-server-plugin.d.ts → dev-server-plugin/plugin.d.ts} +0 -0
  133. /package/dist/esm/{nitro/nitro-plugin.d.ts → nitro-plugin/plugin.d.ts} +0 -0
  134. /package/dist/esm/{queue.d.ts → nitro-plugin/queue.d.ts} +0 -0
  135. /package/dist/esm/{queue.js → nitro-plugin/queue.js} +0 -0
  136. /package/src/{extractHtmlScripts.ts → dev-server-plugin/extract-html-scripts.ts} +0 -0
  137. /package/src/{queue.ts → nitro-plugin/queue.ts} +0 -0
@@ -1,18 +1,19 @@
1
1
  import path from "node:path";
2
2
  import { createNitro } from "nitropack";
3
+ import { trimPathRight } from "@tanstack/router-core";
3
4
  import { tanstackRouter } from "@tanstack/router-plugin/vite";
4
5
  import { TanStackServerFnPluginEnv } from "@tanstack/server-functions-plugin";
5
6
  import * as vite from "vite";
6
- import { createTanStackStartOptionsSchema, createTanStackConfig } from "./schema.js";
7
- import { nitroPlugin } from "./nitro/nitro-plugin.js";
8
- import { startManifestPlugin } from "./routesManifestPlugin.js";
9
- import { TanStackStartCompilerPlugin } from "./start-compiler-plugin.js";
10
- import { VITE_ENVIRONMENT_NAMES } from "./constants.js";
7
+ import { createTanStackConfig } from "./schema.js";
8
+ import { nitroPlugin } from "./nitro-plugin/plugin.js";
9
+ import { startRoutesManifestPlugin } from "./start-routes-manifest-plugin/plugin.js";
10
+ import { startCompilerPlugin } from "./start-compiler-plugin.js";
11
+ import { SSR_ENTRY_FILE, VITE_ENVIRONMENT_NAMES, CLIENT_DIST_DIR } from "./constants.js";
11
12
  import { TanStackStartServerRoutesVite } from "./start-server-routes-plugin/plugin.js";
12
- createTanStackStartOptionsSchema();
13
+ import { loadEnvPlugin } from "./load-env-plugin/plugin.js";
14
+ import { devServerPlugin } from "./dev-server-plugin/plugin.js";
15
+ import { resolveVirtualEntriesPlugin } from "./resolve-virtual-entries-plugin/plugin.js";
13
16
  createTanStackConfig();
14
- const clientDistDir = ".tanstack-start/build/client-dist";
15
- const ssrEntryFile = "ssr.mjs";
16
17
  let ssrBundle;
17
18
  function TanStackStartVitePluginCore(opts, startConfig) {
18
19
  return [
@@ -23,9 +24,12 @@ function TanStackStartVitePluginCore(opts, startConfig) {
23
24
  enableRouteGeneration: true,
24
25
  autoCodeSplitting: true
25
26
  }),
27
+ resolveVirtualEntriesPlugin(opts, startConfig),
26
28
  {
27
29
  name: "tanstack-start-core:config-client",
28
- async config() {
30
+ async config(viteConfig) {
31
+ const viteAppBase = trimPathRight(viteConfig.base || "/");
32
+ globalThis.TSS_APP_BASE = viteAppBase;
29
33
  const nitroOutputPublicDir = await (async () => {
30
34
  const dummyNitroApp = await createNitro({
31
35
  preset: startConfig.target,
@@ -39,11 +43,15 @@ function TanStackStartVitePluginCore(opts, startConfig) {
39
43
  const entry = startConfig2.clientEntryPath.startsWith(
40
44
  "/~start/default-client-entry"
41
45
  ) ? startConfig2.clientEntryPath : vite.normalizePath(
42
- path.resolve(startConfig2.root, startConfig2.clientEntryPath)
46
+ path.join(
47
+ "/@fs",
48
+ path.resolve(startConfig2.root, startConfig2.clientEntryPath)
49
+ )
43
50
  );
44
51
  return entry;
45
52
  };
46
53
  return {
54
+ base: viteAppBase,
47
55
  environments: {
48
56
  [VITE_ENVIRONMENT_NAMES.client]: {
49
57
  consumer: "client",
@@ -54,9 +62,9 @@ function TanStackStartVitePluginCore(opts, startConfig) {
54
62
  main: getClientEntryPath(startConfig)
55
63
  },
56
64
  output: {
57
- dir: path.resolve(startConfig.root, clientDistDir)
65
+ dir: path.resolve(startConfig.root, CLIENT_DIST_DIR)
58
66
  },
59
- // TODO this should be removed
67
+ // TODO: this should be removed
60
68
  external: ["node:fs", "node:path", "node:os", "node:crypto"]
61
69
  }
62
70
  }
@@ -71,12 +79,12 @@ function TanStackStartVitePluginCore(opts, startConfig) {
71
79
  copyPublicDir: false,
72
80
  rollupOptions: {
73
81
  output: {
74
- entryFileNames: ssrEntryFile
82
+ entryFileNames: SSR_ENTRY_FILE
75
83
  },
76
84
  plugins: [
77
85
  {
78
86
  name: "capture-output",
79
- generateBundle(options, bundle) {
87
+ generateBundle(_options, bundle) {
80
88
  ssrBundle = bundle;
81
89
  }
82
90
  }
@@ -100,33 +108,36 @@ function TanStackStartVitePluginCore(opts, startConfig) {
100
108
  "@tanstack/start-router-manifest",
101
109
  "@tanstack/start-config",
102
110
  "@tanstack/server-functions-plugin",
103
- "tanstack:start-manifest",
104
- "tanstack:server-fn-manifest",
111
+ "tanstack-start-router-manifest:v",
112
+ "tanstack-start-server-fn-manifest:v",
105
113
  "nitropack",
106
114
  "@tanstack/**"
107
115
  ]
108
116
  },
109
117
  /* prettier-ignore */
110
118
  define: {
111
- ...injectDefineEnv("TSS_PUBLIC_BASE", startConfig.public.base),
112
- ...injectDefineEnv("TSS_CLIENT_BASE", startConfig.client.base),
113
- ...injectDefineEnv("TSS_CLIENT_ENTRY", getClientEntryPath(startConfig)),
119
+ // define is an esbuild function that replaces the any instances of given keys with the given values
120
+ // i.e: __FRAMEWORK_NAME__ can be replaced with JSON.stringify("TanStack Start")
121
+ // This is not the same as injecting environment variables.
122
+ ...defineReplaceEnv("TSS_CLIENT_ENTRY", getClientEntryPath(startConfig)),
114
123
  // This is consumed by the router-manifest, where the entry point is imported after the dev refresh runtime is resolved
115
- ...injectDefineEnv("TSS_SERVER_FN_BASE", startConfig.serverFns.base),
116
- ...injectDefineEnv("TSS_OUTPUT_PUBLIC_DIR", nitroOutputPublicDir)
124
+ ...defineReplaceEnv("TSS_SERVER_FN_BASE", startConfig.serverFns.base),
125
+ ...defineReplaceEnv("TSS_OUTPUT_PUBLIC_DIR", nitroOutputPublicDir),
126
+ ...defineReplaceEnv("TSS_APP_BASE", viteAppBase)
117
127
  }
118
128
  };
119
129
  }
120
130
  },
121
131
  // N.B. TanStackStartCompilerPlugin must be before the TanStackServerFnPluginEnv
122
- TanStackStartCompilerPlugin(opts.framework, {
132
+ startCompilerPlugin(opts.framework, {
123
133
  client: { envName: VITE_ENVIRONMENT_NAMES.client },
124
134
  server: { envName: VITE_ENVIRONMENT_NAMES.server }
125
135
  }),
126
136
  TanStackServerFnPluginEnv({
127
137
  // This is the ID that will be available to look up and import
128
138
  // our server function manifest and resolve its module
129
- manifestVirtualImportId: "tanstack:server-fn-manifest",
139
+ manifestVirtualImportId: "tanstack-start-server-fn-manifest:v",
140
+ manifestOutputFilename: ".tanstack-start/build/server/server-functions-manifest.json",
130
141
  client: {
131
142
  getRuntimeCode: () => `import { createClientRpc } from '@tanstack/${opts.framework}-start/server-functions-client'`,
132
143
  replacer: (d) => `createClientRpc('${d.functionId}', '${startConfig.serverFns.base}')`,
@@ -145,7 +156,9 @@ function TanStackStartVitePluginCore(opts, startConfig) {
145
156
  return serverEnv.runner.import(fn.extractedFilename);
146
157
  }
147
158
  }),
148
- startManifestPlugin(startConfig),
159
+ loadEnvPlugin(startConfig),
160
+ startRoutesManifestPlugin(startConfig),
161
+ devServerPlugin(),
149
162
  nitroPlugin(startConfig, () => ssrBundle),
150
163
  TanStackStartServerRoutesVite({
151
164
  ...startConfig.tsr,
@@ -153,15 +166,13 @@ function TanStackStartVitePluginCore(opts, startConfig) {
153
166
  })
154
167
  ];
155
168
  }
156
- function injectDefineEnv(key, value) {
169
+ function defineReplaceEnv(key, value) {
157
170
  return {
158
171
  [`process.env.${key}`]: JSON.stringify(value),
159
172
  [`import.meta.env.${key}`]: JSON.stringify(value)
160
173
  };
161
174
  }
162
175
  export {
163
- TanStackStartVitePluginCore,
164
- clientDistDir,
165
- ssrEntryFile
176
+ TanStackStartVitePluginCore
166
177
  };
167
178
  //# sourceMappingURL=plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["../../src/plugin.ts"],"sourcesContent":["import path from 'node:path'\nimport { createNitro } from 'nitropack'\nimport { tanstackRouter } from '@tanstack/router-plugin/vite'\nimport { TanStackServerFnPluginEnv } from '@tanstack/server-functions-plugin'\nimport * as vite from 'vite'\nimport {\n createTanStackConfig,\n createTanStackStartOptionsSchema,\n} from './schema'\nimport { nitroPlugin } from './nitro/nitro-plugin'\nimport { startManifestPlugin } from './routesManifestPlugin'\nimport { TanStackStartCompilerPlugin } from './start-compiler-plugin'\nimport { VITE_ENVIRONMENT_NAMES } from './constants'\nimport { TanStackStartServerRoutesVite } from './start-server-routes-plugin/plugin'\nimport type { PluginOption, Rollup } from 'vite'\nimport type { z } from 'zod'\nimport type { CompileStartFrameworkOptions } from './compilers'\n\nconst TanStackStartOptionsSchema = createTanStackStartOptionsSchema()\nexport type TanStackStartInputConfig = z.input<\n typeof TanStackStartOptionsSchema\n>\n\nconst defaultConfig = createTanStackConfig()\nexport function getTanStackStartOptions(opts?: TanStackStartInputConfig) {\n return defaultConfig.parse(opts)\n}\n\nexport type TanStackStartOutputConfig = ReturnType<\n typeof getTanStackStartOptions\n>\n\nexport const clientDistDir = '.tanstack-start/build/client-dist'\nexport const ssrEntryFile = 'ssr.mjs'\n\nexport interface TanStackStartVitePluginCoreOptions {\n framework: CompileStartFrameworkOptions\n}\n// this needs to live outside of the TanStackStartVitePluginCore since it will be invoked multiple times by vite\nlet ssrBundle: Rollup.OutputBundle\n\nexport function TanStackStartVitePluginCore(\n opts: TanStackStartVitePluginCoreOptions,\n startConfig: TanStackStartOutputConfig,\n): Array<PluginOption> {\n return [\n tanstackRouter({\n verboseFileRoutes: false,\n ...startConfig.tsr,\n target: opts.framework,\n enableRouteGeneration: true,\n autoCodeSplitting: true,\n }),\n {\n name: 'tanstack-start-core:config-client',\n async config() {\n const nitroOutputPublicDir = await (async () => {\n // Create a dummy nitro app to get the resolved public output path\n const dummyNitroApp = await createNitro({\n preset: startConfig.target,\n compatibilityDate: '2024-12-01',\n })\n\n const nitroOutputPublicDir = dummyNitroApp.options.output.publicDir\n await dummyNitroApp.close()\n\n return nitroOutputPublicDir\n })()\n\n const getClientEntryPath = (startConfig: TanStackStartOutputConfig) => {\n // when the user specifies a custom client entry path, we need to resolve it\n // relative to the root of the project, keeping in mind that if not specified\n // it will be /~start/default-client-entry which is a virtual path\n // that is resolved by vite to the actual client entry path\n const entry = startConfig.clientEntryPath.startsWith(\n '/~start/default-client-entry',\n )\n ? startConfig.clientEntryPath\n : vite.normalizePath(\n path.resolve(startConfig.root, startConfig.clientEntryPath),\n )\n\n return entry\n }\n\n return {\n environments: {\n [VITE_ENVIRONMENT_NAMES.client]: {\n consumer: 'client',\n build: {\n manifest: true,\n rollupOptions: {\n input: {\n main: getClientEntryPath(startConfig),\n },\n output: {\n dir: path.resolve(startConfig.root, clientDistDir),\n },\n // TODO this should be removed\n external: ['node:fs', 'node:path', 'node:os', 'node:crypto'],\n },\n },\n },\n [VITE_ENVIRONMENT_NAMES.server]: {\n consumer: 'server',\n build: {\n ssr: true,\n // we don't write to the file system as the below 'capture-output' plugin will\n // capture the output and write it to the virtual file system\n write: false,\n copyPublicDir: false,\n rollupOptions: {\n output: {\n entryFileNames: ssrEntryFile,\n },\n plugins: [\n {\n name: 'capture-output',\n generateBundle(options, bundle) {\n // TODO can this hook be called more than once?\n ssrBundle = bundle\n },\n },\n ],\n },\n commonjsOptions: {\n include: [/node_modules/],\n },\n },\n },\n },\n resolve: {\n noExternal: [\n '@tanstack/start-client',\n '@tanstack/start-client-core',\n '@tanstack/start-server',\n '@tanstack/start-server-core',\n '@tanstack/start-server-functions-fetcher',\n '@tanstack/start-server-functions-client',\n '@tanstack/start-server-functions-server',\n '@tanstack/start-router-manifest',\n '@tanstack/start-config',\n '@tanstack/server-functions-plugin',\n 'tanstack:start-manifest',\n 'tanstack:server-fn-manifest',\n 'nitropack',\n '@tanstack/**',\n ],\n },\n /* prettier-ignore */\n define: {\n ...injectDefineEnv('TSS_PUBLIC_BASE', startConfig.public.base),\n ...injectDefineEnv('TSS_CLIENT_BASE', startConfig.client.base),\n ...injectDefineEnv('TSS_CLIENT_ENTRY', getClientEntryPath(startConfig)), // This is consumed by the router-manifest, where the entry point is imported after the dev refresh runtime is resolved\n ...injectDefineEnv('TSS_SERVER_FN_BASE', startConfig.serverFns.base),\n ...injectDefineEnv('TSS_OUTPUT_PUBLIC_DIR', nitroOutputPublicDir),\n },\n }\n },\n },\n // N.B. TanStackStartCompilerPlugin must be before the TanStackServerFnPluginEnv\n TanStackStartCompilerPlugin(opts.framework, {\n client: { envName: VITE_ENVIRONMENT_NAMES.client },\n server: { envName: VITE_ENVIRONMENT_NAMES.server },\n }),\n TanStackServerFnPluginEnv({\n // This is the ID that will be available to look up and import\n // our server function manifest and resolve its module\n manifestVirtualImportId: 'tanstack:server-fn-manifest',\n client: {\n getRuntimeCode: () =>\n `import { createClientRpc } from '@tanstack/${opts.framework}-start/server-functions-client'`,\n replacer: (d) =>\n `createClientRpc('${d.functionId}', '${startConfig.serverFns.base}')`,\n envName: VITE_ENVIRONMENT_NAMES.client,\n },\n server: {\n getRuntimeCode: () =>\n `import { createServerRpc } from '@tanstack/${opts.framework}-start/server-functions-server'`,\n replacer: (d) =>\n `createServerRpc('${d.functionId}', '${startConfig.serverFns.base}', ${d.fn})`,\n envName: VITE_ENVIRONMENT_NAMES.server,\n },\n importer: (fn) => {\n const serverEnv = (globalThis as any).viteDevServer.environments[\n VITE_ENVIRONMENT_NAMES.server\n ]\n if (!serverEnv) {\n throw new Error(`'ssr' vite dev environment not found`)\n }\n return serverEnv.runner.import(fn.extractedFilename)\n },\n }),\n startManifestPlugin(startConfig),\n nitroPlugin(startConfig, () => ssrBundle),\n TanStackStartServerRoutesVite({\n ...startConfig.tsr,\n target: opts.framework,\n }),\n ]\n}\n\nfunction injectDefineEnv<TKey extends string, TValue extends string>(\n key: TKey,\n value: TValue,\n): { [P in `process.env.${TKey}` | `import.meta.env.${TKey}`]: TValue } {\n return {\n [`process.env.${key}`]: JSON.stringify(value),\n [`import.meta.env.${key}`]: JSON.stringify(value),\n } as { [P in `process.env.${TKey}` | `import.meta.env.${TKey}`]: TValue }\n}\n"],"names":["nitroOutputPublicDir","startConfig"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["../../src/plugin.ts"],"sourcesContent":["import path from 'node:path'\nimport { createNitro } from 'nitropack'\nimport { trimPathRight } from '@tanstack/router-core'\nimport { tanstackRouter } from '@tanstack/router-plugin/vite'\nimport { TanStackServerFnPluginEnv } from '@tanstack/server-functions-plugin'\nimport * as vite from 'vite'\nimport { createTanStackConfig } from './schema'\nimport { nitroPlugin } from './nitro-plugin/plugin'\nimport { startRoutesManifestPlugin } from './start-routes-manifest-plugin/plugin'\nimport { startCompilerPlugin } from './start-compiler-plugin'\nimport {\n CLIENT_DIST_DIR,\n SSR_ENTRY_FILE,\n VITE_ENVIRONMENT_NAMES,\n} from './constants'\nimport { TanStackStartServerRoutesVite } from './start-server-routes-plugin/plugin'\nimport { loadEnvPlugin } from './load-env-plugin/plugin'\nimport { devServerPlugin } from './dev-server-plugin/plugin'\nimport { resolveVirtualEntriesPlugin } from './resolve-virtual-entries-plugin/plugin'\nimport type { createTanStackStartOptionsSchema } from './schema'\nimport type { PluginOption, Rollup } from 'vite'\nimport type { z } from 'zod'\nimport type { CompileStartFrameworkOptions } from './compilers'\n\nexport type TanStackStartInputConfig = z.input<\n ReturnType<typeof createTanStackStartOptionsSchema>\n>\n\nconst defaultConfig = createTanStackConfig()\nexport function getTanStackStartOptions(opts?: TanStackStartInputConfig) {\n return defaultConfig.parse(opts)\n}\n\nexport type TanStackStartOutputConfig = ReturnType<\n typeof getTanStackStartOptions\n>\n\ndeclare global {\n // eslint-disable-next-line no-var\n var TSS_APP_BASE: string\n}\n\nexport interface TanStackStartVitePluginCoreOptions {\n framework: CompileStartFrameworkOptions\n getVirtualServerRootHandler: (ctx: {\n routerFilepath: string\n serverEntryFilepath: string\n }) => string\n getVirtualServerEntry: (ctx: { routerFilepath: string }) => string\n getVirtualClientEntry: (ctx: { routerFilepath: string }) => string\n}\n// this needs to live outside of the TanStackStartVitePluginCore since it will be invoked multiple times by vite\nlet ssrBundle: Rollup.OutputBundle\n\nexport function TanStackStartVitePluginCore(\n opts: TanStackStartVitePluginCoreOptions,\n startConfig: TanStackStartOutputConfig,\n): Array<PluginOption> {\n return [\n tanstackRouter({\n verboseFileRoutes: false,\n ...startConfig.tsr,\n target: opts.framework,\n enableRouteGeneration: true,\n autoCodeSplitting: true,\n }),\n resolveVirtualEntriesPlugin(opts, startConfig),\n {\n name: 'tanstack-start-core:config-client',\n async config(viteConfig) {\n const viteAppBase = trimPathRight(viteConfig.base || '/')\n globalThis.TSS_APP_BASE = viteAppBase\n\n const nitroOutputPublicDir = await (async () => {\n // Create a dummy nitro app to get the resolved public output path\n const dummyNitroApp = await createNitro({\n preset: startConfig.target,\n compatibilityDate: '2024-12-01',\n })\n\n const nitroOutputPublicDir = dummyNitroApp.options.output.publicDir\n await dummyNitroApp.close()\n\n return nitroOutputPublicDir\n })()\n\n const getClientEntryPath = (startConfig: TanStackStartOutputConfig) => {\n // when the user specifies a custom client entry path, we need to resolve it\n // relative to the root of the project, keeping in mind that if not specified\n // it will be /~start/default-client-entry which is a virtual path\n // that is resolved by vite to the actual client entry path\n const entry = startConfig.clientEntryPath.startsWith(\n '/~start/default-client-entry',\n )\n ? startConfig.clientEntryPath\n : vite.normalizePath(\n path.join(\n '/@fs',\n path.resolve(startConfig.root, startConfig.clientEntryPath),\n ),\n )\n\n return entry\n }\n\n return {\n base: viteAppBase,\n environments: {\n [VITE_ENVIRONMENT_NAMES.client]: {\n consumer: 'client',\n build: {\n manifest: true,\n rollupOptions: {\n input: {\n main: getClientEntryPath(startConfig),\n },\n output: {\n dir: path.resolve(startConfig.root, CLIENT_DIST_DIR),\n },\n // TODO: this should be removed\n external: ['node:fs', 'node:path', 'node:os', 'node:crypto'],\n },\n },\n },\n [VITE_ENVIRONMENT_NAMES.server]: {\n consumer: 'server',\n build: {\n ssr: true,\n // we don't write to the file system as the below 'capture-output' plugin will\n // capture the output and write it to the virtual file system\n write: false,\n copyPublicDir: false,\n rollupOptions: {\n output: {\n entryFileNames: SSR_ENTRY_FILE,\n },\n plugins: [\n {\n name: 'capture-output',\n generateBundle(_options, bundle) {\n // TODO: can this hook be called more than once?\n ssrBundle = bundle\n },\n },\n ],\n },\n commonjsOptions: {\n include: [/node_modules/],\n },\n },\n },\n },\n resolve: {\n noExternal: [\n '@tanstack/start-client',\n '@tanstack/start-client-core',\n '@tanstack/start-server',\n '@tanstack/start-server-core',\n '@tanstack/start-server-functions-fetcher',\n '@tanstack/start-server-functions-client',\n '@tanstack/start-server-functions-server',\n '@tanstack/start-router-manifest',\n '@tanstack/start-config',\n '@tanstack/server-functions-plugin',\n 'tanstack-start-router-manifest:v',\n 'tanstack-start-server-fn-manifest:v',\n 'nitropack',\n '@tanstack/**',\n ],\n },\n /* prettier-ignore */\n define: {\n // define is an esbuild function that replaces the any instances of given keys with the given values\n // i.e: __FRAMEWORK_NAME__ can be replaced with JSON.stringify(\"TanStack Start\")\n // This is not the same as injecting environment variables.\n\n ...defineReplaceEnv('TSS_CLIENT_ENTRY', getClientEntryPath(startConfig)), // This is consumed by the router-manifest, where the entry point is imported after the dev refresh runtime is resolved\n ...defineReplaceEnv('TSS_SERVER_FN_BASE', startConfig.serverFns.base),\n ...defineReplaceEnv('TSS_OUTPUT_PUBLIC_DIR', nitroOutputPublicDir),\n ...defineReplaceEnv('TSS_APP_BASE', viteAppBase)\n },\n }\n },\n },\n // N.B. TanStackStartCompilerPlugin must be before the TanStackServerFnPluginEnv\n startCompilerPlugin(opts.framework, {\n client: { envName: VITE_ENVIRONMENT_NAMES.client },\n server: { envName: VITE_ENVIRONMENT_NAMES.server },\n }),\n TanStackServerFnPluginEnv({\n // This is the ID that will be available to look up and import\n // our server function manifest and resolve its module\n manifestVirtualImportId: 'tanstack-start-server-fn-manifest:v',\n manifestOutputFilename:\n '.tanstack-start/build/server/server-functions-manifest.json',\n client: {\n getRuntimeCode: () =>\n `import { createClientRpc } from '@tanstack/${opts.framework}-start/server-functions-client'`,\n replacer: (d) =>\n `createClientRpc('${d.functionId}', '${startConfig.serverFns.base}')`,\n envName: VITE_ENVIRONMENT_NAMES.client,\n },\n server: {\n getRuntimeCode: () =>\n `import { createServerRpc } from '@tanstack/${opts.framework}-start/server-functions-server'`,\n replacer: (d) =>\n `createServerRpc('${d.functionId}', '${startConfig.serverFns.base}', ${d.fn})`,\n envName: VITE_ENVIRONMENT_NAMES.server,\n },\n importer: (fn) => {\n const serverEnv = (globalThis as any).viteDevServer.environments[\n VITE_ENVIRONMENT_NAMES.server\n ]\n if (!serverEnv) {\n throw new Error(`'ssr' vite dev environment not found`)\n }\n return serverEnv.runner.import(fn.extractedFilename)\n },\n }),\n loadEnvPlugin(startConfig),\n startRoutesManifestPlugin(startConfig),\n devServerPlugin(),\n nitroPlugin(startConfig, () => ssrBundle),\n TanStackStartServerRoutesVite({\n ...startConfig.tsr,\n target: opts.framework,\n }),\n ]\n}\n\nfunction defineReplaceEnv<TKey extends string, TValue extends string>(\n key: TKey,\n value: TValue,\n): { [P in `process.env.${TKey}` | `import.meta.env.${TKey}`]: TValue } {\n return {\n [`process.env.${key}`]: JSON.stringify(value),\n [`import.meta.env.${key}`]: JSON.stringify(value),\n } as { [P in `process.env.${TKey}` | `import.meta.env.${TKey}`]: TValue }\n}\n"],"names":["nitroOutputPublicDir","startConfig"],"mappings":";;;;;;;;;;;;;;;AA4BsB,qBAAqB;AAwB3C,IAAI;AAEY,SAAA,4BACd,MACA,aACqB;AACd,SAAA;AAAA,IACL,eAAe;AAAA,MACb,mBAAmB;AAAA,MACnB,GAAG,YAAY;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,uBAAuB;AAAA,MACvB,mBAAmB;AAAA,IAAA,CACpB;AAAA,IACD,4BAA4B,MAAM,WAAW;AAAA,IAC7C;AAAA,MACE,MAAM;AAAA,MACN,MAAM,OAAO,YAAY;AACvB,cAAM,cAAc,cAAc,WAAW,QAAQ,GAAG;AACxD,mBAAW,eAAe;AAEpB,cAAA,uBAAuB,OAAO,YAAY;AAExC,gBAAA,gBAAgB,MAAM,YAAY;AAAA,YACtC,QAAQ,YAAY;AAAA,YACpB,mBAAmB;AAAA,UAAA,CACpB;AAEKA,gBAAAA,wBAAuB,cAAc,QAAQ,OAAO;AAC1D,gBAAM,cAAc,MAAM;AAEnBA,iBAAAA;AAAAA,QAAAA,GACN;AAEG,cAAA,qBAAqB,CAACC,iBAA2C;AAK/D,gBAAA,QAAQA,aAAY,gBAAgB;AAAA,YACxC;AAAA,UAAA,IAEEA,aAAY,kBACZ,KAAK;AAAA,YACH,KAAK;AAAA,cACH;AAAA,cACA,KAAK,QAAQA,aAAY,MAAMA,aAAY,eAAe;AAAA,YAAA;AAAA,UAE9D;AAEG,iBAAA;AAAA,QACT;AAEO,eAAA;AAAA,UACL,MAAM;AAAA,UACN,cAAc;AAAA,YACZ,CAAC,uBAAuB,MAAM,GAAG;AAAA,cAC/B,UAAU;AAAA,cACV,OAAO;AAAA,gBACL,UAAU;AAAA,gBACV,eAAe;AAAA,kBACb,OAAO;AAAA,oBACL,MAAM,mBAAmB,WAAW;AAAA,kBACtC;AAAA,kBACA,QAAQ;AAAA,oBACN,KAAK,KAAK,QAAQ,YAAY,MAAM,eAAe;AAAA,kBACrD;AAAA;AAAA,kBAEA,UAAU,CAAC,WAAW,aAAa,WAAW,aAAa;AAAA,gBAAA;AAAA,cAC7D;AAAA,YAEJ;AAAA,YACA,CAAC,uBAAuB,MAAM,GAAG;AAAA,cAC/B,UAAU;AAAA,cACV,OAAO;AAAA,gBACL,KAAK;AAAA;AAAA;AAAA,gBAGL,OAAO;AAAA,gBACP,eAAe;AAAA,gBACf,eAAe;AAAA,kBACb,QAAQ;AAAA,oBACN,gBAAgB;AAAA,kBAClB;AAAA,kBACA,SAAS;AAAA,oBACP;AAAA,sBACE,MAAM;AAAA,sBACN,eAAe,UAAU,QAAQ;AAEnB,oCAAA;AAAA,sBAAA;AAAA,oBACd;AAAA,kBACF;AAAA,gBAEJ;AAAA,gBACA,iBAAiB;AAAA,kBACf,SAAS,CAAC,cAAc;AAAA,gBAAA;AAAA,cAC1B;AAAA,YACF;AAAA,UAEJ;AAAA,UACA,SAAS;AAAA,YACP,YAAY;AAAA,cACV;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,UAEJ;AAAA;AAAA,UAEA,QAAQ;AAAA;AAAA;AAAA;AAAA,YAKN,GAAG,iBAAiB,oBAAoB,mBAAmB,WAAW,CAAC;AAAA;AAAA,YACvE,GAAG,iBAAiB,sBAAsB,YAAY,UAAU,IAAI;AAAA,YACpE,GAAG,iBAAiB,yBAAyB,oBAAoB;AAAA,YACjE,GAAG,iBAAiB,gBAAgB,WAAW;AAAA,UAAA;AAAA,QAEnD;AAAA,MAAA;AAAA,IAEJ;AAAA;AAAA,IAEA,oBAAoB,KAAK,WAAW;AAAA,MAClC,QAAQ,EAAE,SAAS,uBAAuB,OAAO;AAAA,MACjD,QAAQ,EAAE,SAAS,uBAAuB,OAAO;AAAA,IAAA,CAClD;AAAA,IACD,0BAA0B;AAAA;AAAA;AAAA,MAGxB,yBAAyB;AAAA,MACzB,wBACE;AAAA,MACF,QAAQ;AAAA,QACN,gBAAgB,MACd,8CAA8C,KAAK,SAAS;AAAA,QAC9D,UAAU,CAAC,MACT,oBAAoB,EAAE,UAAU,OAAO,YAAY,UAAU,IAAI;AAAA,QACnE,SAAS,uBAAuB;AAAA,MAClC;AAAA,MACA,QAAQ;AAAA,QACN,gBAAgB,MACd,8CAA8C,KAAK,SAAS;AAAA,QAC9D,UAAU,CAAC,MACT,oBAAoB,EAAE,UAAU,OAAO,YAAY,UAAU,IAAI,MAAM,EAAE,EAAE;AAAA,QAC7E,SAAS,uBAAuB;AAAA,MAClC;AAAA,MACA,UAAU,CAAC,OAAO;AAChB,cAAM,YAAa,WAAmB,cAAc,aAClD,uBAAuB,MACzB;AACA,YAAI,CAAC,WAAW;AACR,gBAAA,IAAI,MAAM,sCAAsC;AAAA,QAAA;AAExD,eAAO,UAAU,OAAO,OAAO,GAAG,iBAAiB;AAAA,MAAA;AAAA,IACrD,CACD;AAAA,IACD,cAAc,WAAW;AAAA,IACzB,0BAA0B,WAAW;AAAA,IACrC,gBAAgB;AAAA,IAChB,YAAY,aAAa,MAAM,SAAS;AAAA,IACxC,8BAA8B;AAAA,MAC5B,GAAG,YAAY;AAAA,MACf,QAAQ,KAAK;AAAA,IACd,CAAA;AAAA,EACH;AACF;AAEA,SAAS,iBACP,KACA,OACsE;AAC/D,SAAA;AAAA,IACL,CAAC,eAAe,GAAG,EAAE,GAAG,KAAK,UAAU,KAAK;AAAA,IAC5C,CAAC,mBAAmB,GAAG,EAAE,GAAG,KAAK,UAAU,KAAK;AAAA,EAClD;AACF;"}
@@ -0,0 +1,3 @@
1
+ import { TanStackStartOutputConfig, TanStackStartVitePluginCoreOptions } from '../plugin.js';
2
+ import * as vite from 'vite';
3
+ export declare function resolveVirtualEntriesPlugin(opts: TanStackStartVitePluginCoreOptions, startConfig: TanStackStartOutputConfig): vite.Plugin;
@@ -0,0 +1,49 @@
1
+ import path from "node:path";
2
+ import * as vite from "vite";
3
+ function resolveVirtualEntriesPlugin(opts, startConfig) {
4
+ let resolvedConfig;
5
+ const modules = /* @__PURE__ */ new Set([
6
+ "/~start/server-entry",
7
+ "/~start/default-server-entry",
8
+ "/~start/default-client-entry"
9
+ ]);
10
+ return {
11
+ name: "tanstack-start-core:resolve-virtual-entries",
12
+ configResolved(config) {
13
+ resolvedConfig = config;
14
+ },
15
+ resolveId(id) {
16
+ if (modules.has(id)) {
17
+ return `${id}.tsx`;
18
+ }
19
+ return void 0;
20
+ },
21
+ load(id) {
22
+ const routerFilepath = vite.normalizePath(
23
+ path.resolve(startConfig.root, startConfig.tsr.srcDirectory, "router")
24
+ );
25
+ if (id === "/~start/server-entry.tsx") {
26
+ const ssrEntryFilepath = startConfig.serverEntryPath.startsWith(
27
+ "/~start/default-server-entry"
28
+ ) ? startConfig.serverEntryPath : vite.normalizePath(
29
+ path.resolve(resolvedConfig.root, startConfig.serverEntryPath)
30
+ );
31
+ return opts.getVirtualServerRootHandler({
32
+ routerFilepath,
33
+ serverEntryFilepath: ssrEntryFilepath
34
+ });
35
+ }
36
+ if (id === "/~start/default-client-entry.tsx") {
37
+ return opts.getVirtualClientEntry({ routerFilepath });
38
+ }
39
+ if (id === "/~start/default-server-entry.tsx") {
40
+ return opts.getVirtualServerEntry({ routerFilepath });
41
+ }
42
+ return void 0;
43
+ }
44
+ };
45
+ }
46
+ export {
47
+ resolveVirtualEntriesPlugin
48
+ };
49
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sources":["../../../src/resolve-virtual-entries-plugin/plugin.ts"],"sourcesContent":["import path from 'node:path'\nimport * as vite from 'vite'\nimport type {\n TanStackStartOutputConfig,\n TanStackStartVitePluginCoreOptions,\n} from '../plugin'\n\nexport function resolveVirtualEntriesPlugin(\n opts: TanStackStartVitePluginCoreOptions,\n startConfig: TanStackStartOutputConfig,\n): vite.Plugin {\n let resolvedConfig: vite.ResolvedConfig\n\n const modules = new Set<string>([\n '/~start/server-entry',\n '/~start/default-server-entry',\n '/~start/default-client-entry',\n ])\n\n return {\n name: 'tanstack-start-core:resolve-virtual-entries',\n configResolved(config) {\n resolvedConfig = config\n },\n resolveId(id) {\n if (modules.has(id)) {\n return `${id}.tsx`\n }\n\n return undefined\n },\n load(id) {\n const routerFilepath = vite.normalizePath(\n path.resolve(startConfig.root, startConfig.tsr.srcDirectory, 'router'),\n )\n\n if (id === '/~start/server-entry.tsx') {\n const ssrEntryFilepath = startConfig.serverEntryPath.startsWith(\n '/~start/default-server-entry',\n )\n ? startConfig.serverEntryPath\n : vite.normalizePath(\n path.resolve(resolvedConfig.root, startConfig.serverEntryPath),\n )\n\n return opts.getVirtualServerRootHandler({\n routerFilepath,\n serverEntryFilepath: ssrEntryFilepath,\n })\n }\n\n if (id === '/~start/default-client-entry.tsx') {\n return opts.getVirtualClientEntry({ routerFilepath })\n }\n\n if (id === '/~start/default-server-entry.tsx') {\n return opts.getVirtualServerEntry({ routerFilepath })\n }\n\n return undefined\n },\n }\n}\n"],"names":[],"mappings":";;AAOgB,SAAA,4BACd,MACA,aACa;AACT,MAAA;AAEE,QAAA,8BAAc,IAAY;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAEM,SAAA;AAAA,IACL,MAAM;AAAA,IACN,eAAe,QAAQ;AACJ,uBAAA;AAAA,IACnB;AAAA,IACA,UAAU,IAAI;AACR,UAAA,QAAQ,IAAI,EAAE,GAAG;AACnB,eAAO,GAAG,EAAE;AAAA,MAAA;AAGP,aAAA;AAAA,IACT;AAAA,IACA,KAAK,IAAI;AACP,YAAM,iBAAiB,KAAK;AAAA,QAC1B,KAAK,QAAQ,YAAY,MAAM,YAAY,IAAI,cAAc,QAAQ;AAAA,MACvE;AAEA,UAAI,OAAO,4BAA4B;AAC/B,cAAA,mBAAmB,YAAY,gBAAgB;AAAA,UACnD;AAAA,QAAA,IAEE,YAAY,kBACZ,KAAK;AAAA,UACH,KAAK,QAAQ,eAAe,MAAM,YAAY,eAAe;AAAA,QAC/D;AAEJ,eAAO,KAAK,4BAA4B;AAAA,UACtC;AAAA,UACA,qBAAqB;AAAA,QAAA,CACtB;AAAA,MAAA;AAGH,UAAI,OAAO,oCAAoC;AAC7C,eAAO,KAAK,sBAAsB,EAAE,gBAAgB;AAAA,MAAA;AAGtD,UAAI,OAAO,oCAAoC;AAC7C,eAAO,KAAK,sBAAsB,EAAE,gBAAgB;AAAA,MAAA;AAG/C,aAAA;AAAA,IAAA;AAAA,EAEX;AACF;"}