vite-plugin-react-server 1.4.2 → 1.4.3

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 (73) hide show
  1. package/README.md +48 -313
  2. package/dist/package.json +123 -13
  3. package/dist/plugin/bundle/deferredStaticGeneration.js +14 -39
  4. package/dist/plugin/bundle/manifests.js +30 -48
  5. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.d.ts.map +1 -1
  6. package/dist/plugin/config/autoDiscover/resolveAutoDiscover.js +4 -1
  7. package/dist/plugin/config/envPrefixFromConfig.js +12 -7
  8. package/dist/plugin/config/getCondition.d.ts.map +1 -1
  9. package/dist/plugin/config/getCondition.js +7 -5
  10. package/dist/plugin/dev-server/virtualRscHmrPlugin.js +23 -23
  11. package/dist/plugin/environments/createBuildEventPlugin.js +88 -98
  12. package/dist/plugin/environments/createEnvironmentPlugin.js +222 -250
  13. package/dist/plugin/helpers/createRscRenderHelpers.js +33 -34
  14. package/dist/plugin/helpers/createSharedLoader.d.ts.map +1 -1
  15. package/dist/plugin/helpers/createSharedLoader.js +4 -2
  16. package/dist/plugin/helpers/headlessStreamReuseHandler.js +30 -22
  17. package/dist/plugin/helpers/headlessStreamState.js +15 -28
  18. package/dist/plugin/helpers/resolveComponent.d.ts.map +1 -1
  19. package/dist/plugin/helpers/resolveComponent.js +4 -2
  20. package/dist/plugin/index.client.d.ts +5 -0
  21. package/dist/plugin/index.client.d.ts.map +1 -0
  22. package/dist/plugin/index.client.js +4 -0
  23. package/dist/plugin/index.d.ts +4 -3
  24. package/dist/plugin/index.d.ts.map +1 -1
  25. package/dist/plugin/index.js +10 -5
  26. package/dist/plugin/index.server.d.ts +5 -0
  27. package/dist/plugin/index.server.d.ts.map +1 -0
  28. package/dist/plugin/index.server.js +4 -0
  29. package/dist/plugin/metrics/createWorkerStartupMetrics.js +31 -13
  30. package/dist/plugin/orchestrator/createPluginOrchestrator.client.js +41 -38
  31. package/dist/plugin/orchestrator/createPluginOrchestrator.server.js +43 -46
  32. package/dist/plugin/plugin.client.js +2 -2
  33. package/dist/plugin/plugin.server.js +2 -2
  34. package/dist/plugin/react-static/createBuildLoader.client.js +12 -6
  35. package/dist/plugin/react-static/createBuildLoader.server.js +255 -235
  36. package/dist/plugin/react-static/plugin.client.js +684 -770
  37. package/dist/plugin/react-static/plugin.server.js +517 -603
  38. package/dist/plugin/react-static/processCssFilesForPages.js +103 -88
  39. package/dist/plugin/react-static/renderPage.client.js +455 -529
  40. package/dist/plugin/react-static/renderPage.server.js +485 -508
  41. package/dist/plugin/react-static/renderPagesBatched.js +277 -275
  42. package/dist/plugin/react-static/rscToHtmlStream.client.js +48 -29
  43. package/dist/plugin/react-static/rscToHtmlStream.server.js +62 -37
  44. package/dist/plugin/react-static/temporaryReferences.server.js +11 -2
  45. package/dist/plugin/stream/createMainThreadHandlers.js +40 -31
  46. package/dist/plugin/stream/renderRscStream.server.d.ts.map +1 -1
  47. package/dist/plugin/stream/renderRscStream.server.js +127 -144
  48. package/dist/plugin/transformer/createTransformerPlugin.js +226 -265
  49. package/dist/plugin/utils/checkReactVersion.d.ts +7 -0
  50. package/dist/plugin/utils/checkReactVersion.d.ts.map +1 -0
  51. package/dist/plugin/utils/checkReactVersion.js +23 -0
  52. package/dist/plugin/utils/envUrls.node.js +12 -11
  53. package/dist/plugin/vendor/vendor-alias.js +84 -114
  54. package/dist/plugin/vendor/vendor.client.d.ts.map +1 -1
  55. package/dist/plugin/vendor/vendor.client.js +1 -3
  56. package/dist/plugin/worker/rsc/handleRscRender.d.ts.map +1 -1
  57. package/dist/plugin/worker/rsc/handleRscRender.js +3 -1
  58. package/dist/tsconfig.tsbuildinfo +1 -1
  59. package/package.json +123 -13
  60. package/plugin/config/autoDiscover/resolveAutoDiscover.ts +4 -0
  61. package/plugin/config/getCondition.ts +6 -4
  62. package/plugin/helpers/createSharedLoader.ts +6 -1
  63. package/plugin/helpers/resolveComponent.ts +6 -1
  64. package/plugin/index.client.ts +4 -0
  65. package/plugin/index.server.ts +4 -0
  66. package/plugin/index.ts +12 -5
  67. package/plugin/plugin.client.ts +1 -1
  68. package/plugin/plugin.server.ts +1 -1
  69. package/plugin/stream/renderRscStream.server.ts +3 -0
  70. package/plugin/utils/checkReactVersion.ts +28 -0
  71. package/plugin/vendor/vendor.client.ts +0 -2
  72. package/plugin/worker/rsc/handleRscRender.ts +2 -0
  73. package/scripts/generate-toc.mjs +27 -294
@@ -1,257 +1,229 @@
1
- import { resolveAutoDiscover } from "../config/autoDiscover/resolveAutoDiscover.js";
2
- import { resolveUserConfig } from "../config/resolveUserConfig.js";
3
- import { resolveOptions } from "../config/resolveOptions.js";
4
- import { handleError } from "../error/handleError.js";
5
- import { createDefaultModuleID } from "../config/createModuleID.js";
6
- import { createLogger } from "vite";
7
- import { join } from "node:path";
8
- import { DEFAULT_LOADER_CONFIG } from "../config/defaults.js";
9
- import { runDeferredStaticGeneration } from "../bundle/deferredStaticGeneration.js";
10
1
  /**
11
- * Creates a plugin that ensures consistent hash generation across environments
12
- * by using the original source file content as the basis for hash generation.
13
-
14
- */
15
- // Note: Path normalization should be handled in the file naming functions, not in writeBundle
16
- /**
17
- * Environment Configuration Plugin
18
- *
19
- * This plugin configures Vite Environment API environments for React Server Components.
20
- * It's separate from the env plugin which handles process environment variables.
21
- *
22
- * Environment mapping:
23
- * - client (Vite client = browser) → dist/client (React client components - real implementations)
24
- * - ssr (Vite SSR = SSR-safe) → dist/static (SSR-compatible static files)
25
- * - server (custom) → dist/server (React server components with registerClientReference)
2
+ * vite-plugin-react-server
3
+ * Copyright (c) Nico Brinkkemper
4
+ * MIT License
26
5
  */
27
- export const createEnvironmentPlugin = (options) => {
28
- const environmentPlugin = {
29
- name: "vite:plugin-react-server/environments",
30
- enforce: "pre",
31
- async config(config, configEnv) {
32
- // Resolve plugin options
33
- const resolvedOptionsResult = resolveOptions(options);
34
- if (resolvedOptionsResult.type === "error") {
35
- throw resolvedOptionsResult.error;
36
- }
37
- const userOptions = resolvedOptionsResult.userOptions;
38
- // Add transformer plugins at the Vite level with proper environment filtering
39
- if (!config.plugins) {
40
- config.plugins = [];
41
- }
42
- // Note: Transformer is now added via orchestrator, so skip adding it here
43
- // to avoid duplicates and ensure proper registration
44
- // Note: Hash coordination is handled by the sequential build approach
45
- // Each environment will use the manifest from the previous build
46
- // Set up logger and moduleID
47
- const logger = config.customLogger || createLogger();
48
- if (typeof userOptions.moduleID !== "function") {
49
- userOptions.moduleID = createDefaultModuleID(userOptions, configEnv, userOptions.loader?.mode);
50
- }
51
- // Always override the moduleID function to ensure it has the forTransformer logic
52
- if (!userOptions.loader) {
53
- userOptions.loader = DEFAULT_LOADER_CONFIG;
54
- }
55
- userOptions.loader.moduleID = createDefaultModuleID(userOptions, configEnv, userOptions.loader?.mode);
56
- // Run auto-discovery once to get all files - we don't need separate calls since
57
- // the file discovery process is identical, only the organization differs
58
- const autoDiscoverResult = await resolveAutoDiscover({
59
- config,
60
- configEnv,
61
- userOptions,
62
- logger,
63
- });
64
- if (autoDiscoverResult.type === "error") {
65
- const panicError = handleError({
66
- error: autoDiscoverResult.error,
67
- logger,
68
- context: "createEnvironmentPlugin(autoDiscover)",
69
- panicThreshold: userOptions.panicThreshold,
70
- critical: true, // Auto-discovery is critical for environment setup
71
- });
72
- if (panicError != null) {
73
- throw panicError;
6
+ import { resolveAutoDiscover } from '../config/autoDiscover/resolveAutoDiscover.js';
7
+ import { resolveUserConfig } from '../config/resolveUserConfig.js';
8
+ import { resolveOptions } from '../config/resolveOptions.js';
9
+ import { handleError } from '../error/handleError.js';
10
+ import { createDefaultModuleID } from '../config/createModuleID.js';
11
+ import { createLogger } from 'vite';
12
+ import { join } from 'node:path';
13
+ import { DEFAULT_LOADER_CONFIG } from '../config/defaults.js';
14
+ import { runDeferredStaticGeneration } from '../bundle/deferredStaticGeneration.js';
15
+
16
+ const createEnvironmentPlugin = (options) => {
17
+ const environmentPlugin = {
18
+ name: "vite:plugin-react-server/environments",
19
+ enforce: "pre",
20
+ async config(config, configEnv) {
21
+ const resolvedOptionsResult = resolveOptions(options);
22
+ if (resolvedOptionsResult.type === "error") {
23
+ throw resolvedOptionsResult.error;
24
+ }
25
+ const userOptions = resolvedOptionsResult.userOptions;
26
+ if (!config.plugins) {
27
+ config.plugins = [];
28
+ }
29
+ const logger = config.customLogger || createLogger();
30
+ if (typeof userOptions.moduleID !== "function") {
31
+ userOptions.moduleID = createDefaultModuleID(
32
+ userOptions,
33
+ configEnv,
34
+ userOptions.loader?.mode
35
+ );
36
+ }
37
+ if (!userOptions.loader) {
38
+ userOptions.loader = DEFAULT_LOADER_CONFIG;
39
+ }
40
+ userOptions.loader.moduleID = createDefaultModuleID(
41
+ userOptions,
42
+ configEnv,
43
+ userOptions.loader?.mode
44
+ );
45
+ const autoDiscoverResult = await resolveAutoDiscover({
46
+ config,
47
+ configEnv,
48
+ userOptions,
49
+ logger
50
+ });
51
+ if (autoDiscoverResult.type === "error") {
52
+ const panicError = handleError({
53
+ error: autoDiscoverResult.error,
54
+ logger,
55
+ panicThreshold: userOptions.panicThreshold,
56
+ critical: true
57
+ // Auto-discovery is critical for environment setup
58
+ });
59
+ if (panicError != null) {
60
+ throw panicError;
61
+ } else {
62
+ throw new Error("Cannot continue without auto-discovery");
63
+ }
64
+ }
65
+ const autoDiscoveredFiles = autoDiscoverResult.autoDiscoveredFiles;
66
+ const allEnvironmentConfigs = [
67
+ {
68
+ name: "client",
69
+ condition: "react-client",
70
+ ssr: false,
71
+ outDir: join(userOptions.build.outDir, userOptions.build.static)
72
+ },
73
+ {
74
+ name: "ssr",
75
+ condition: "react-client",
76
+ ssr: true,
77
+ outDir: join(userOptions.build.outDir, userOptions.build.client)
78
+ },
79
+ {
80
+ name: "server",
81
+ condition: "react-server",
82
+ ssr: true,
83
+ outDir: join(userOptions.build.outDir, userOptions.build.server)
84
+ }
85
+ ];
86
+ const availableEnvironments = userOptions.availableEnvironments || ["client", "ssr", "server"];
87
+ const environmentConfigs = allEnvironmentConfigs.filter(
88
+ (config2) => availableEnvironments.includes(config2.name)
89
+ );
90
+ const environments = {};
91
+ const sortedEnvConfigs = environmentConfigs;
92
+ for (const envConfig of sortedEnvConfigs) {
93
+ const configResult = resolveUserConfig({
94
+ condition: envConfig.condition,
95
+ config,
96
+ configEnv,
97
+ userOptions,
98
+ autoDiscoveredFiles,
99
+ ssr: envConfig.ssr
100
+ });
101
+ if (configResult.type === "error") {
102
+ const panicError = handleError({
103
+ error: configResult.error,
104
+ logger,
105
+ context: `createEnvironmentPlugin(${envConfig.name}Config)`,
106
+ panicThreshold: userOptions.panicThreshold,
107
+ critical: true
108
+ });
109
+ if (panicError != null) {
110
+ throw panicError;
111
+ } else {
112
+ throw new Error(
113
+ `Cannot continue without ${envConfig.name} environment configuration`
114
+ );
115
+ }
116
+ }
117
+ const userConfig = configResult.userConfig;
118
+ if (userOptions.verbose) {
119
+ logger?.info(
120
+ `${envConfig.name} environment rollup inputs: ${JSON.stringify(
121
+ userConfig.build.rollupOptions.input,
122
+ null,
123
+ 2
124
+ )}`
125
+ );
126
+ logger?.info(
127
+ `${envConfig.name} environment output preserveModulesRoot: ${JSON.stringify(
128
+ userConfig.build.rollupOptions.output,
129
+ null,
130
+ 2
131
+ )}`
132
+ );
133
+ }
134
+ if (userOptions.verbose) {
135
+ logger?.info(
136
+ `${envConfig.name} userConfig.resolve: ${JSON.stringify(
137
+ userConfig.resolve,
138
+ null,
139
+ 2
140
+ )}`
141
+ );
142
+ logger?.info(
143
+ `${envConfig.name} userConfig.build.rollupOptions.external: ${JSON.stringify(
144
+ userConfig.build.rollupOptions.external,
145
+ null,
146
+ 2
147
+ )}`
148
+ );
149
+ }
150
+ const legacyBuild = userOptions.strategy?.legacyBuilder && !config?.builder;
151
+ const implicitSsr = userOptions.strategy?.mainThreadCondition === "react-server" && userOptions.strategy?.legacyBuilder;
152
+ const implicitViteBuildName = userOptions.strategy?.legacyBuilder && !config.build?.ssr ? "client" : "ssr";
153
+ const consumer = legacyBuild ? implicitViteBuildName === "ssr" ? "server" : "client" : envConfig.name === "server" || envConfig.name === "ssr" ? "server" : "client";
154
+ environments[envConfig.name] = {
155
+ keepProcessEnv: envConfig.name === "server" ? true : false,
156
+ define: userConfig.define,
157
+ consumer,
158
+ resolve: {
159
+ ...userConfig.resolve,
160
+ // IMPORTANT: Map externals from resolveUserConfig (rollupOptions.external) to Environment API format
161
+ // In Environment API, externals go in resolve.external, not build.rollupOptions.external
162
+ // For static builds (browser/ESM): don't externalize anything - bundle everything to avoid _virtual files
163
+ // For client/server builds (SSR): externalize as configured
164
+ external: (() => {
165
+ const isStaticBuild = envConfig.name === "static" || !envConfig.ssr && envConfig.name === "client";
166
+ if (isStaticBuild) {
167
+ return [];
168
+ }
169
+ return Array.isArray(userConfig.build.rollupOptions.external) ? userConfig.build.rollupOptions.external.filter(
170
+ (item) => typeof item === "string"
171
+ ) : [];
172
+ })()
173
+ },
174
+ build: {
175
+ ...userConfig.build,
176
+ ssr: envConfig.name === "server" ? true : legacyBuild ? implicitSsr : envConfig.name === "ssr",
177
+ target: userConfig.build.target,
178
+ // Remove externals from rollupOptions since they should be in resolve.external for Environment API
179
+ rollupOptions: {
180
+ ...userConfig.build.rollupOptions,
181
+ external: void 0,
182
+ // Remove external from rollupOptions, it's now in resolve.external
183
+ // Set preserveModules in the output configuration, not at the top level
184
+ output: (() => {
185
+ const output = userConfig.build.rollupOptions.output;
186
+ if (Array.isArray(output)) {
187
+ const pluginOutput = output.find((o) => o && typeof o === "object" && "preserveModulesRoot" in o);
188
+ if (pluginOutput) {
189
+ return pluginOutput;
190
+ }
191
+ if (output.length > 0) {
192
+ return output[0];
193
+ }
74
194
  }
75
- else {
76
- // If handleError returns null but this is critical, we can't continue
77
- throw new Error("Cannot continue without auto-discovery");
195
+ if (output && typeof output === "object" && !Array.isArray(output)) {
196
+ const hasPreserveModulesRoot = "preserveModulesRoot" in output;
197
+ if (hasPreserveModulesRoot) {
198
+ return output;
199
+ } else {
200
+ const preserveModulesRootString = userOptions.build.preserveModulesRoot === false ? userOptions.moduleBase : void 0;
201
+ return { ...output, preserveModulesRoot: preserveModulesRootString };
202
+ }
78
203
  }
204
+ return output;
205
+ })()
79
206
  }
80
- // Get the auto-discovered files (safe to access since we checked for errors above)
81
- const autoDiscoveredFiles = autoDiscoverResult.autoDiscoveredFiles;
82
- // Define environment configurations
83
- const allEnvironmentConfigs = [
84
- {
85
- name: "client",
86
- condition: "react-client",
87
- ssr: false,
88
- outDir: join(userOptions.build.outDir, userOptions.build.static),
89
- },
90
- {
91
- name: "ssr",
92
- condition: "react-client",
93
- ssr: true,
94
- outDir: join(userOptions.build.outDir, userOptions.build.client),
95
- },
96
- {
97
- name: "server",
98
- condition: "react-server",
99
- ssr: true,
100
- outDir: join(userOptions.build.outDir, userOptions.build.server),
101
- },
102
- ];
103
- // Filter environments based on availableEnvironments from orchestrator
104
- const availableEnvironments = userOptions
105
- .availableEnvironments || ["client", "ssr", "server"];
106
- const environmentConfigs = allEnvironmentConfigs.filter((config) => availableEnvironments.includes(config.name));
107
- // Resolve all environment configurations using resolveUserConfig
108
- const environments = {};
109
- // Sort environments to process static first (to establish hashes)
110
- // Use the environment configs as-is
111
- const sortedEnvConfigs = environmentConfigs;
112
- for (const envConfig of sortedEnvConfigs) {
113
- const configResult = resolveUserConfig({
114
- condition: envConfig.condition,
115
- config,
116
- configEnv,
117
- userOptions,
118
- autoDiscoveredFiles,
119
- ssr: envConfig.ssr,
120
- });
121
- if (configResult.type === "error") {
122
- const panicError = handleError({
123
- error: configResult.error,
124
- logger,
125
- context: `createEnvironmentPlugin(${envConfig.name}Config)`,
126
- panicThreshold: userOptions.panicThreshold,
127
- critical: true,
128
- });
129
- if (panicError != null) {
130
- throw panicError;
131
- }
132
- else {
133
- throw new Error(`Cannot continue without ${envConfig.name} environment configuration`);
134
- }
135
- }
136
- // Map the resolved user config to Environment API compatible options
137
- const userConfig = configResult.userConfig;
138
- // Log the rollup inputs for this environment (only in verbose mode)
139
- if (userOptions.verbose) {
140
- logger?.info(`${envConfig.name} environment rollup inputs: ${JSON.stringify(userConfig.build.rollupOptions.input, null, 2)}`);
141
- logger?.info(`${envConfig.name} environment output preserveModulesRoot: ${JSON.stringify(userConfig.build.rollupOptions.output, null, 2)}`);
142
- }
143
- // Debug: Log what resolveUserConfig provided
144
- if (userOptions.verbose) {
145
- logger?.info(`${envConfig.name} userConfig.resolve: ${JSON.stringify(userConfig.resolve, null, 2)}`);
146
- logger?.info(`${envConfig.name} userConfig.build.rollupOptions.external: ${JSON.stringify(userConfig.build.rollupOptions.external, null, 2)}`);
147
- }
148
- // detect if legacy build or not
149
- const legacyBuild = userOptions.strategy?.legacyBuilder && !config?.builder;
150
- const implicitSsr = userOptions.strategy?.mainThreadCondition === "react-server" &&
151
- userOptions.strategy?.legacyBuilder;
152
- // this follows vite's logic for legacy builds
153
- const implicitViteBuildName = userOptions.strategy?.legacyBuilder && !config.build?.ssr
154
- ? "client"
155
- : "ssr";
156
- const consumer = legacyBuild
157
- ? implicitViteBuildName === "ssr"
158
- ? "server"
159
- : "client"
160
- : envConfig.name === "server" || envConfig.name === "ssr"
161
- ? "server"
162
- : "client";
163
- // Note: Path normalization should be handled in the file naming functions
164
- environments[envConfig.name] = {
165
- keepProcessEnv: envConfig.name === "server" ? true : false,
166
- define: userConfig.define,
167
- consumer: consumer,
168
- resolve: {
169
- ...userConfig.resolve,
170
- // IMPORTANT: Map externals from resolveUserConfig (rollupOptions.external) to Environment API format
171
- // In Environment API, externals go in resolve.external, not build.rollupOptions.external
172
- // For static builds (browser/ESM): don't externalize anything - bundle everything to avoid _virtual files
173
- // For client/server builds (SSR): externalize as configured
174
- external: (() => {
175
- const isStaticBuild = envConfig.name === "static" || (!envConfig.ssr && envConfig.name === "client");
176
- if (isStaticBuild) {
177
- // For static builds, don't externalize anything (bundle everything)
178
- return [];
179
- }
180
- // For SSR builds, use configured externals
181
- return Array.isArray(userConfig.build.rollupOptions.external)
182
- ? userConfig.build.rollupOptions.external.filter((item) => typeof item === "string")
183
- : [];
184
- })(),
185
- },
186
- build: {
187
- ...userConfig.build,
188
- ssr: envConfig.name === "server"
189
- ? true
190
- : legacyBuild
191
- ? implicitSsr
192
- : envConfig.name === "ssr",
193
- target: userConfig.build.target,
194
- // Remove externals from rollupOptions since they should be in resolve.external for Environment API
195
- rollupOptions: {
196
- ...userConfig.build.rollupOptions,
197
- external: undefined, // Remove external from rollupOptions, it's now in resolve.external
198
- // Set preserveModules in the output configuration, not at the top level
199
- output: (() => {
200
- const output = userConfig.build.rollupOptions.output;
201
- // Handle array output configuration - extract the plugin output that contains preserveModulesRoot
202
- if (Array.isArray(output)) {
203
- const pluginOutput = output.find(o => o && typeof o === 'object' && 'preserveModulesRoot' in o);
204
- if (pluginOutput) {
205
- return pluginOutput;
206
- }
207
- // If no pluginOutput found, use the first output configuration
208
- if (output.length > 0) {
209
- return output[0];
210
- }
211
- }
212
- // Ensure preserveModulesRoot is always present in the output configuration
213
- if (output && typeof output === 'object' && !Array.isArray(output)) {
214
- // Check if the property exists in the object (not just checking the value)
215
- const hasPreserveModulesRoot = 'preserveModulesRoot' in output;
216
- if (hasPreserveModulesRoot) {
217
- // Property exists, preserve the preserveModules value from the output (don't override it)
218
- // This is critical for static builds where preserveModules: false is set
219
- return output; // Return as-is, preserveModules is already set correctly
220
- }
221
- else {
222
- // Property missing, add it based on user options
223
- const preserveModulesRootString = userOptions.build.preserveModulesRoot === false
224
- ? userOptions.moduleBase
225
- : undefined;
226
- return { ...output, preserveModulesRoot: preserveModulesRootString };
227
- }
228
- }
229
- return output;
230
- })(),
231
- },
232
- },
233
- };
207
+ }
208
+ };
209
+ }
210
+ return {
211
+ root: userOptions.projectRoot,
212
+ ...config,
213
+ environments,
214
+ builder: {
215
+ async buildApp(builder) {
216
+ for (const environment of Object.values(builder.environments)) {
217
+ await builder.build(environment);
234
218
  }
235
- // Return the configuration with all environments
236
- // Build order: client → ssr → server → static generation (step 4)
237
- // Server build runs LAST so dist/client exists when HTML rendering references client components
238
- // Static generation is deferred to run after ALL environments complete (needs server manifest)
239
- return {
240
- root: userOptions.projectRoot,
241
- ...config,
242
- environments,
243
- builder: {
244
- async buildApp(builder) {
245
- // Build all environments in definition order
246
- for (const environment of Object.values(builder.environments)) {
247
- await builder.build(environment);
248
- }
249
- // Step 4: Run deferred static generation now that all manifests are available
250
- await runDeferredStaticGeneration();
251
- },
252
- },
253
- };
254
- },
255
- };
256
- return environmentPlugin;
219
+ await runDeferredStaticGeneration();
220
+ }
221
+ }
222
+ };
223
+ }
224
+ };
225
+ return environmentPlugin;
257
226
  };
227
+
228
+ export { createEnvironmentPlugin };
229
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlRW52aXJvbm1lbnRQbHVnaW4uanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BsdWdpbi9lbnZpcm9ubWVudHMvY3JlYXRlRW52aXJvbm1lbnRQbHVnaW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQbHVnaW4sIFVzZXJDb25maWcsIFZpdGVCdWlsZGVyIH0gZnJvbSBcInZpdGVcIjtcbmltcG9ydCB0eXBlIHsgVml0ZVBsdWdpbkZuIH0gZnJvbSBcIi4uL3R5cGVzLmpzXCI7XG5cbmltcG9ydCB7IHJlc29sdmVBdXRvRGlzY292ZXIgfSBmcm9tIFwiLi4vY29uZmlnL2F1dG9EaXNjb3Zlci9yZXNvbHZlQXV0b0Rpc2NvdmVyLmpzXCI7XG5pbXBvcnQgeyByZXNvbHZlVXNlckNvbmZpZyB9IGZyb20gXCIuLi9jb25maWcvcmVzb2x2ZVVzZXJDb25maWcuanNcIjtcbmltcG9ydCB7IHJlc29sdmVPcHRpb25zIH0gZnJvbSBcIi4uL2NvbmZpZy9yZXNvbHZlT3B0aW9ucy5qc1wiO1xuaW1wb3J0IHsgaGFuZGxlRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvaGFuZGxlRXJyb3IuanNcIjtcbmltcG9ydCB7IGNyZWF0ZURlZmF1bHRNb2R1bGVJRCB9IGZyb20gXCIuLi9jb25maWcvY3JlYXRlTW9kdWxlSUQuanNcIjtcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gXCJ2aXRlXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgREVGQVVMVF9MT0FERVJfQ09ORklHIH0gZnJvbSBcIi4uL2NvbmZpZy9kZWZhdWx0cy5qc1wiO1xuaW1wb3J0IHsgcnVuRGVmZXJyZWRTdGF0aWNHZW5lcmF0aW9uIH0gZnJvbSBcIi4uL2J1bmRsZS9kZWZlcnJlZFN0YXRpY0dlbmVyYXRpb24uanNcIjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgcGx1Z2luIHRoYXQgZW5zdXJlcyBjb25zaXN0ZW50IGhhc2ggZ2VuZXJhdGlvbiBhY3Jvc3MgZW52aXJvbm1lbnRzXG4gKiBieSB1c2luZyB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUgY29udGVudCBhcyB0aGUgYmFzaXMgZm9yIGhhc2ggZ2VuZXJhdGlvbi5cblxuKi9cbi8vIE5vdGU6IFBhdGggbm9ybWFsaXphdGlvbiBzaG91bGQgYmUgaGFuZGxlZCBpbiB0aGUgZmlsZSBuYW1pbmcgZnVuY3Rpb25zLCBub3QgaW4gd3JpdGVCdW5kbGVcblxuLyoqXG4gKiBFbnZpcm9ubWVudCBDb25maWd1cmF0aW9uIFBsdWdpblxuICpcbiAqIFRoaXMgcGx1Z2luIGNvbmZpZ3VyZXMgVml0ZSBFbnZpcm9ubWVudCBBUEkgZW52aXJvbm1lbnRzIGZvciBSZWFjdCBTZXJ2ZXIgQ29tcG9uZW50cy5cbiAqIEl0J3Mgc2VwYXJhdGUgZnJvbSB0aGUgZW52IHBsdWdpbiB3aGljaCBoYW5kbGVzIHByb2Nlc3MgZW52aXJvbm1lbnQgdmFyaWFibGVzLlxuICpcbiAqIEVudmlyb25tZW50IG1hcHBpbmc6XG4gKiAtIGNsaWVudCAoVml0ZSBjbGllbnQgPSBicm93c2VyKSDihpIgZGlzdC9jbGllbnQgKFJlYWN0IGNsaWVudCBjb21wb25lbnRzIC0gcmVhbCBpbXBsZW1lbnRhdGlvbnMpXG4gKiAtIHNzciAoVml0ZSBTU1IgPSBTU1Itc2FmZSkg4oaSIGRpc3Qvc3RhdGljIChTU1ItY29tcGF0aWJsZSBzdGF0aWMgZmlsZXMpXG4gKiAtIHNlcnZlciAoY3VzdG9tKSDihpIgZGlzdC9zZXJ2ZXIgKFJlYWN0IHNlcnZlciBjb21wb25lbnRzIHdpdGggcmVnaXN0ZXJDbGllbnRSZWZlcmVuY2UpXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVFbnZpcm9ubWVudFBsdWdpbjogVml0ZVBsdWdpbkZuID0gKG9wdGlvbnMpOiBQbHVnaW4gPT4ge1xuICBjb25zdCBlbnZpcm9ubWVudFBsdWdpbjogUGx1Z2luID0ge1xuICAgIG5hbWU6IFwidml0ZTpwbHVnaW4tcmVhY3Qtc2VydmVyL2Vudmlyb25tZW50c1wiLFxuICAgIGVuZm9yY2U6IFwicHJlXCIsXG5cbiAgICBhc3luYyBjb25maWcoY29uZmlnOiBVc2VyQ29uZmlnLCBjb25maWdFbnYpIHtcbiAgICAgIC8vIFJlc29sdmUgcGx1Z2luIG9wdGlvbnNcbiAgICAgIGNvbnN0IHJlc29sdmVkT3B0aW9uc1Jlc3VsdCA9IHJlc29sdmVPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgaWYgKHJlc29sdmVkT3B0aW9uc1Jlc3VsdC50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgdGhyb3cgcmVzb2x2ZWRPcHRpb25zUmVzdWx0LmVycm9yO1xuICAgICAgfVxuICAgICAgY29uc3QgdXNlck9wdGlvbnMgPSByZXNvbHZlZE9wdGlvbnNSZXN1bHQudXNlck9wdGlvbnM7XG5cbiAgICAgIC8vIEFkZCB0cmFuc2Zvcm1lciBwbHVnaW5zIGF0IHRoZSBWaXRlIGxldmVsIHdpdGggcHJvcGVyIGVudmlyb25tZW50IGZpbHRlcmluZ1xuICAgICAgaWYgKCFjb25maWcucGx1Z2lucykge1xuICAgICAgICBjb25maWcucGx1Z2lucyA9IFtdO1xuICAgICAgfVxuXG4gICAgICAvLyBOb3RlOiBUcmFuc2Zvcm1lciBpcyBub3cgYWRkZWQgdmlhIG9yY2hlc3RyYXRvciwgc28gc2tpcCBhZGRpbmcgaXQgaGVyZVxuICAgICAgLy8gdG8gYXZvaWQgZHVwbGljYXRlcyBhbmQgZW5zdXJlIHByb3BlciByZWdpc3RyYXRpb25cblxuICAgICAgLy8gTm90ZTogSGFzaCBjb29yZGluYXRpb24gaXMgaGFuZGxlZCBieSB0aGUgc2VxdWVudGlhbCBidWlsZCBhcHByb2FjaFxuICAgICAgLy8gRWFjaCBlbnZpcm9ubWVudCB3aWxsIHVzZSB0aGUgbWFuaWZlc3QgZnJvbSB0aGUgcHJldmlvdXMgYnVpbGRcblxuICAgICAgLy8gU2V0IHVwIGxvZ2dlciBhbmQgbW9kdWxlSURcbiAgICAgIGNvbnN0IGxvZ2dlciA9IGNvbmZpZy5jdXN0b21Mb2dnZXIgfHwgY3JlYXRlTG9nZ2VyKCk7XG4gICAgICBpZiAodHlwZW9mIHVzZXJPcHRpb25zLm1vZHVsZUlEICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdXNlck9wdGlvbnMubW9kdWxlSUQgPSBjcmVhdGVEZWZhdWx0TW9kdWxlSUQoXG4gICAgICAgICAgdXNlck9wdGlvbnMsXG4gICAgICAgICAgY29uZmlnRW52LFxuICAgICAgICAgIHVzZXJPcHRpb25zLmxvYWRlcj8ubW9kZVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgLy8gQWx3YXlzIG92ZXJyaWRlIHRoZSBtb2R1bGVJRCBmdW5jdGlvbiB0byBlbnN1cmUgaXQgaGFzIHRoZSBmb3JUcmFuc2Zvcm1lciBsb2dpY1xuICAgICAgaWYgKCF1c2VyT3B0aW9ucy5sb2FkZXIpIHtcbiAgICAgICAgdXNlck9wdGlvbnMubG9hZGVyID0gREVGQVVMVF9MT0FERVJfQ09ORklHO1xuICAgICAgfVxuICAgICAgdXNlck9wdGlvbnMubG9hZGVyLm1vZHVsZUlEID0gY3JlYXRlRGVmYXVsdE1vZHVsZUlEKFxuICAgICAgICB1c2VyT3B0aW9ucyxcbiAgICAgICAgY29uZmlnRW52LFxuICAgICAgICB1c2VyT3B0aW9ucy5sb2FkZXI/Lm1vZGVcbiAgICAgICk7XG5cbiAgICAgIC8vIFJ1biBhdXRvLWRpc2NvdmVyeSBvbmNlIHRvIGdldCBhbGwgZmlsZXMgLSB3ZSBkb24ndCBuZWVkIHNlcGFyYXRlIGNhbGxzIHNpbmNlXG4gICAgICAvLyB0aGUgZmlsZSBkaXNjb3ZlcnkgcHJvY2VzcyBpcyBpZGVudGljYWwsIG9ubHkgdGhlIG9yZ2FuaXphdGlvbiBkaWZmZXJzXG4gICAgICBjb25zdCBhdXRvRGlzY292ZXJSZXN1bHQgPSBhd2FpdCByZXNvbHZlQXV0b0Rpc2NvdmVyKHtcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBjb25maWdFbnYsXG4gICAgICAgIHVzZXJPcHRpb25zLFxuICAgICAgICBsb2dnZXIsXG4gICAgICB9KTtcblxuICAgICAgaWYgKGF1dG9EaXNjb3ZlclJlc3VsdC50eXBlID09PSBcImVycm9yXCIpIHtcbiAgICAgICAgY29uc3QgcGFuaWNFcnJvciA9IGhhbmRsZUVycm9yKHtcbiAgICAgICAgICBlcnJvcjogYXV0b0Rpc2NvdmVyUmVzdWx0LmVycm9yLFxuICAgICAgICAgIGxvZ2dlcixcbiAgICAgICAgICBjb250ZXh0OiBcImNyZWF0ZUVudmlyb25tZW50UGx1Z2luKGF1dG9EaXNjb3ZlcilcIixcbiAgICAgICAgICBwYW5pY1RocmVzaG9sZDogdXNlck9wdGlvbnMucGFuaWNUaHJlc2hvbGQsXG4gICAgICAgICAgY3JpdGljYWw6IHRydWUsIC8vIEF1dG8tZGlzY292ZXJ5IGlzIGNyaXRpY2FsIGZvciBlbnZpcm9ubWVudCBzZXR1cFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHBhbmljRXJyb3IgIT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IHBhbmljRXJyb3I7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSWYgaGFuZGxlRXJyb3IgcmV0dXJucyBudWxsIGJ1dCB0aGlzIGlzIGNyaXRpY2FsLCB3ZSBjYW4ndCBjb250aW51ZVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBjb250aW51ZSB3aXRob3V0IGF1dG8tZGlzY292ZXJ5XCIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEdldCB0aGUgYXV0by1kaXNjb3ZlcmVkIGZpbGVzIChzYWZlIHRvIGFjY2VzcyBzaW5jZSB3ZSBjaGVja2VkIGZvciBlcnJvcnMgYWJvdmUpXG4gICAgICBjb25zdCBhdXRvRGlzY292ZXJlZEZpbGVzID0gYXV0b0Rpc2NvdmVyUmVzdWx0LmF1dG9EaXNjb3ZlcmVkRmlsZXMhO1xuXG4gICAgICAvLyBEZWZpbmUgZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbnNcbiAgICAgIGNvbnN0IGFsbEVudmlyb25tZW50Q29uZmlncyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiY2xpZW50XCIsXG4gICAgICAgICAgY29uZGl0aW9uOiBcInJlYWN0LWNsaWVudFwiIGFzIGNvbnN0LFxuICAgICAgICAgIHNzcjogZmFsc2UsXG4gICAgICAgICAgb3V0RGlyOiBqb2luKHVzZXJPcHRpb25zLmJ1aWxkLm91dERpciwgdXNlck9wdGlvbnMuYnVpbGQuc3RhdGljKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwic3NyXCIsXG4gICAgICAgICAgY29uZGl0aW9uOiBcInJlYWN0LWNsaWVudFwiIGFzIGNvbnN0LFxuICAgICAgICAgIHNzcjogdHJ1ZSxcbiAgICAgICAgICBvdXREaXI6IGpvaW4odXNlck9wdGlvbnMuYnVpbGQub3V0RGlyLCB1c2VyT3B0aW9ucy5idWlsZC5jbGllbnQpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJzZXJ2ZXJcIixcbiAgICAgICAgICBjb25kaXRpb246IFwicmVhY3Qtc2VydmVyXCIgYXMgY29uc3QsXG4gICAgICAgICAgc3NyOiB0cnVlLFxuICAgICAgICAgIG91dERpcjogam9pbih1c2VyT3B0aW9ucy5idWlsZC5vdXREaXIsIHVzZXJPcHRpb25zLmJ1aWxkLnNlcnZlciksXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICAvLyBGaWx0ZXIgZW52aXJvbm1lbnRzIGJhc2VkIG9uIGF2YWlsYWJsZUVudmlyb25tZW50cyBmcm9tIG9yY2hlc3RyYXRvclxuXG4gICAgICBjb25zdCBhdmFpbGFibGVFbnZpcm9ubWVudHMgPSAodXNlck9wdGlvbnMgYXMgYW55KVxuICAgICAgICAuYXZhaWxhYmxlRW52aXJvbm1lbnRzIHx8IFtcImNsaWVudFwiLCBcInNzclwiLCBcInNlcnZlclwiXTtcblxuICAgICAgY29uc3QgZW52aXJvbm1lbnRDb25maWdzID0gYWxsRW52aXJvbm1lbnRDb25maWdzLmZpbHRlcigoY29uZmlnKSA9PlxuICAgICAgICBhdmFpbGFibGVFbnZpcm9ubWVudHMuaW5jbHVkZXMoY29uZmlnLm5hbWUpXG4gICAgICApO1xuXG5cbiAgICAgIC8vIFJlc29sdmUgYWxsIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb25zIHVzaW5nIHJlc29sdmVVc2VyQ29uZmlnXG4gICAgICBjb25zdCBlbnZpcm9ubWVudHM6IFJlY29yZDxzdHJpbmcsIGltcG9ydChcInZpdGVcIikuRW52aXJvbm1lbnRPcHRpb25zPiA9XG4gICAgICAgIHt9O1xuXG4gICAgICAvLyBTb3J0IGVudmlyb25tZW50cyB0byBwcm9jZXNzIHN0YXRpYyBmaXJzdCAodG8gZXN0YWJsaXNoIGhhc2hlcylcbiAgICAgIC8vIFVzZSB0aGUgZW52aXJvbm1lbnQgY29uZmlncyBhcy1pc1xuICAgICAgY29uc3Qgc29ydGVkRW52Q29uZmlncyA9IGVudmlyb25tZW50Q29uZmlncztcblxuICAgICAgZm9yIChjb25zdCBlbnZDb25maWcgb2Ygc29ydGVkRW52Q29uZmlncykge1xuICAgICAgICBjb25zdCBjb25maWdSZXN1bHQgPSByZXNvbHZlVXNlckNvbmZpZyh7XG4gICAgICAgICAgY29uZGl0aW9uOiBlbnZDb25maWcuY29uZGl0aW9uLFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBjb25maWdFbnYsXG4gICAgICAgICAgdXNlck9wdGlvbnMsXG4gICAgICAgICAgYXV0b0Rpc2NvdmVyZWRGaWxlcyxcbiAgICAgICAgICBzc3I6IGVudkNvbmZpZy5zc3IsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjb25maWdSZXN1bHQudHlwZSA9PT0gXCJlcnJvclwiKSB7XG4gICAgICAgICAgY29uc3QgcGFuaWNFcnJvciA9IGhhbmRsZUVycm9yKHtcbiAgICAgICAgICAgIGVycm9yOiBjb25maWdSZXN1bHQuZXJyb3IsXG4gICAgICAgICAgICBsb2dnZXIsXG4gICAgICAgICAgICBjb250ZXh0OiBgY3JlYXRlRW52aXJvbm1lbnRQbHVnaW4oJHtlbnZDb25maWcubmFtZX1Db25maWcpYCxcbiAgICAgICAgICAgIHBhbmljVGhyZXNob2xkOiB1c2VyT3B0aW9ucy5wYW5pY1RocmVzaG9sZCxcbiAgICAgICAgICAgIGNyaXRpY2FsOiB0cnVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChwYW5pY0Vycm9yICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IHBhbmljRXJyb3I7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgYENhbm5vdCBjb250aW51ZSB3aXRob3V0ICR7ZW52Q29uZmlnLm5hbWV9IGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb25gXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1hcCB0aGUgcmVzb2x2ZWQgdXNlciBjb25maWcgdG8gRW52aXJvbm1lbnQgQVBJIGNvbXBhdGlibGUgb3B0aW9uc1xuICAgICAgICBjb25zdCB1c2VyQ29uZmlnID0gY29uZmlnUmVzdWx0LnVzZXJDb25maWc7XG5cbiAgICAgICAgLy8gTG9nIHRoZSByb2xsdXAgaW5wdXRzIGZvciB0aGlzIGVudmlyb25tZW50IChvbmx5IGluIHZlcmJvc2UgbW9kZSlcbiAgICAgICAgaWYgKHVzZXJPcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBsb2dnZXI/LmluZm8oXG4gICAgICAgICAgICBgJHtlbnZDb25maWcubmFtZX0gZW52aXJvbm1lbnQgcm9sbHVwIGlucHV0czogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgdXNlckNvbmZpZy5idWlsZC5yb2xsdXBPcHRpb25zLmlucHV0LFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAyXG4gICAgICAgICAgICApfWBcbiAgICAgICAgICApO1xuICAgICAgICAgIGxvZ2dlcj8uaW5mbyhcbiAgICAgICAgICAgIGAke1xuICAgICAgICAgICAgICBlbnZDb25maWcubmFtZVxuICAgICAgICAgICAgfSBlbnZpcm9ubWVudCBvdXRwdXQgcHJlc2VydmVNb2R1bGVzUm9vdDogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgdXNlckNvbmZpZy5idWlsZC5yb2xsdXBPcHRpb25zLm91dHB1dCxcbiAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgKX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERlYnVnOiBMb2cgd2hhdCByZXNvbHZlVXNlckNvbmZpZyBwcm92aWRlZFxuICAgICAgICBpZiAodXNlck9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGxvZ2dlcj8uaW5mbyhcbiAgICAgICAgICAgIGAke2VudkNvbmZpZy5uYW1lfSB1c2VyQ29uZmlnLnJlc29sdmU6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgIHVzZXJDb25maWcucmVzb2x2ZSxcbiAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgKX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsb2dnZXI/LmluZm8oXG4gICAgICAgICAgICBgJHtcbiAgICAgICAgICAgICAgZW52Q29uZmlnLm5hbWVcbiAgICAgICAgICAgIH0gdXNlckNvbmZpZy5idWlsZC5yb2xsdXBPcHRpb25zLmV4dGVybmFsOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICB1c2VyQ29uZmlnLmJ1aWxkLnJvbGx1cE9wdGlvbnMuZXh0ZXJuYWwsXG4gICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICl9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZGV0ZWN0IGlmIGxlZ2FjeSBidWlsZCBvciBub3RcbiAgICAgICAgY29uc3QgbGVnYWN5QnVpbGQgPSB1c2VyT3B0aW9ucy5zdHJhdGVneT8ubGVnYWN5QnVpbGRlciAmJiAhY29uZmlnPy5idWlsZGVyO1xuICAgICAgICBjb25zdCBpbXBsaWNpdFNzciA9XG4gICAgICAgICAgdXNlck9wdGlvbnMuc3RyYXRlZ3k/Lm1haW5UaHJlYWRDb25kaXRpb24gPT09IFwicmVhY3Qtc2VydmVyXCIgJiZcbiAgICAgICAgICB1c2VyT3B0aW9ucy5zdHJhdGVneT8ubGVnYWN5QnVpbGRlcjtcbiAgICAgICAgLy8gdGhpcyBmb2xsb3dzIHZpdGUncyBsb2dpYyBmb3IgbGVnYWN5IGJ1aWxkc1xuICAgICAgICBjb25zdCBpbXBsaWNpdFZpdGVCdWlsZE5hbWUgPVxuICAgICAgICAgIHVzZXJPcHRpb25zLnN0cmF0ZWd5Py5sZWdhY3lCdWlsZGVyICYmICFjb25maWcuYnVpbGQ/LnNzclxuICAgICAgICAgICAgPyBcImNsaWVudFwiXG4gICAgICAgICAgICA6IFwic3NyXCI7XG4gICAgICAgIGNvbnN0IGNvbnN1bWVyID0gbGVnYWN5QnVpbGRcbiAgICAgICAgICA/IGltcGxpY2l0Vml0ZUJ1aWxkTmFtZSA9PT0gXCJzc3JcIlxuICAgICAgICAgICAgPyBcInNlcnZlclwiXG4gICAgICAgICAgICA6IFwiY2xpZW50XCJcbiAgICAgICAgICA6IGVudkNvbmZpZy5uYW1lID09PSBcInNlcnZlclwiIHx8IGVudkNvbmZpZy5uYW1lID09PSBcInNzclwiXG4gICAgICAgICAgPyBcInNlcnZlclwiXG4gICAgICAgICAgOiBcImNsaWVudFwiO1xuXG4gICAgICAgIC8vIE5vdGU6IFBhdGggbm9ybWFsaXphdGlvbiBzaG91bGQgYmUgaGFuZGxlZCBpbiB0aGUgZmlsZSBuYW1pbmcgZnVuY3Rpb25zXG4gICAgICAgIGVudmlyb25tZW50c1tlbnZDb25maWcubmFtZV0gPSB7XG4gICAgICAgICAga2VlcFByb2Nlc3NFbnY6IGVudkNvbmZpZy5uYW1lID09PSBcInNlcnZlclwiID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgIGRlZmluZTogdXNlckNvbmZpZy5kZWZpbmUsXG4gICAgICAgICAgY29uc3VtZXI6IGNvbnN1bWVyLFxuICAgICAgICAgIHJlc29sdmU6IHtcbiAgICAgICAgICAgIC4uLnVzZXJDb25maWcucmVzb2x2ZSxcbiAgICAgICAgICAgIC8vIElNUE9SVEFOVDogTWFwIGV4dGVybmFscyBmcm9tIHJlc29sdmVVc2VyQ29uZmlnIChyb2xsdXBPcHRpb25zLmV4dGVybmFsKSB0byBFbnZpcm9ubWVudCBBUEkgZm9ybWF0XG4gICAgICAgICAgICAvLyBJbiBFbnZpcm9ubWVudCBBUEksIGV4dGVybmFscyBnbyBpbiByZXNvbHZlLmV4dGVybmFsLCBub3QgYnVpbGQucm9sbHVwT3B0aW9ucy5leHRlcm5hbFxuICAgICAgICAgICAgLy8gRm9yIHN0YXRpYyBidWlsZHMgKGJyb3dzZXIvRVNNKTogZG9uJ3QgZXh0ZXJuYWxpemUgYW55dGhpbmcgLSBidW5kbGUgZXZlcnl0aGluZyB0byBhdm9pZCBfdmlydHVhbCBmaWxlc1xuICAgICAgICAgICAgLy8gRm9yIGNsaWVudC9zZXJ2ZXIgYnVpbGRzIChTU1IpOiBleHRlcm5hbGl6ZSBhcyBjb25maWd1cmVkXG4gICAgICAgICAgICBleHRlcm5hbDogKCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXNTdGF0aWNCdWlsZCA9IGVudkNvbmZpZy5uYW1lID09PSBcInN0YXRpY1wiIHx8ICghZW52Q29uZmlnLnNzciAmJiBlbnZDb25maWcubmFtZSA9PT0gXCJjbGllbnRcIik7XG4gICAgICAgICAgICAgIGlmIChpc1N0YXRpY0J1aWxkKSB7XG4gICAgICAgICAgICAgICAgLy8gRm9yIHN0YXRpYyBidWlsZHMsIGRvbid0IGV4dGVybmFsaXplIGFueXRoaW5nIChidW5kbGUgZXZlcnl0aGluZylcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gRm9yIFNTUiBidWlsZHMsIHVzZSBjb25maWd1cmVkIGV4dGVybmFsc1xuICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh1c2VyQ29uZmlnLmJ1aWxkLnJvbGx1cE9wdGlvbnMuZXh0ZXJuYWwpXG4gICAgICAgICAgICAgICAgPyB1c2VyQ29uZmlnLmJ1aWxkLnJvbGx1cE9wdGlvbnMuZXh0ZXJuYWwuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbSk6IGl0ZW0gaXMgc3RyaW5nID0+IHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBbXTtcbiAgICAgICAgICAgIH0pKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBidWlsZDoge1xuICAgICAgICAgICAgLi4udXNlckNvbmZpZy5idWlsZCxcbiAgICAgICAgICAgIHNzcjpcbiAgICAgICAgICAgICAgZW52Q29uZmlnLm5hbWUgPT09IFwic2VydmVyXCJcbiAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICA6IGxlZ2FjeUJ1aWxkXG4gICAgICAgICAgICAgICAgPyBpbXBsaWNpdFNzclxuICAgICAgICAgICAgICAgIDogZW52Q29uZmlnLm5hbWUgPT09IFwic3NyXCIsXG4gICAgICAgICAgICB0YXJnZXQ6IHVzZXJDb25maWcuYnVpbGQudGFyZ2V0LFxuICAgICAgICAgICAgLy8gUmVtb3ZlIGV4dGVybmFscyBmcm9tIHJvbGx1cE9wdGlvbnMgc2luY2UgdGhleSBzaG91bGQgYmUgaW4gcmVzb2x2ZS5leHRlcm5hbCBmb3IgRW52aXJvbm1lbnQgQVBJXG4gICAgICAgICAgICByb2xsdXBPcHRpb25zOiB7XG4gICAgICAgICAgICAgIC4uLnVzZXJDb25maWcuYnVpbGQucm9sbHVwT3B0aW9ucyxcbiAgICAgICAgICAgICAgZXh0ZXJuYWw6IHVuZGVmaW5lZCwgLy8gUmVtb3ZlIGV4dGVybmFsIGZyb20gcm9sbHVwT3B0aW9ucywgaXQncyBub3cgaW4gcmVzb2x2ZS5leHRlcm5hbFxuICAgICAgICAgICAgICAvLyBTZXQgcHJlc2VydmVNb2R1bGVzIGluIHRoZSBvdXRwdXQgY29uZmlndXJhdGlvbiwgbm90IGF0IHRoZSB0b3AgbGV2ZWxcbiAgICAgICAgICAgICAgb3V0cHV0OiAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dCA9IHVzZXJDb25maWcuYnVpbGQucm9sbHVwT3B0aW9ucy5vdXRwdXQ7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLy8gSGFuZGxlIGFycmF5IG91dHB1dCBjb25maWd1cmF0aW9uIC0gZXh0cmFjdCB0aGUgcGx1Z2luIG91dHB1dCB0aGF0IGNvbnRhaW5zIHByZXNlcnZlTW9kdWxlc1Jvb3RcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvdXRwdXQpKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBwbHVnaW5PdXRwdXQgPSBvdXRwdXQuZmluZChvID0+IG8gJiYgdHlwZW9mIG8gPT09ICdvYmplY3QnICYmICdwcmVzZXJ2ZU1vZHVsZXNSb290JyBpbiBvKTtcbiAgICAgICAgICAgICAgICAgIGlmIChwbHVnaW5PdXRwdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBsdWdpbk91dHB1dDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8vIElmIG5vIHBsdWdpbk91dHB1dCBmb3VuZCwgdXNlIHRoZSBmaXJzdCBvdXRwdXQgY29uZmlndXJhdGlvblxuICAgICAgICAgICAgICAgICAgaWYgKG91dHB1dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdXRwdXRbMF07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIEVuc3VyZSBwcmVzZXJ2ZU1vZHVsZXNSb290IGlzIGFsd2F5cyBwcmVzZW50IGluIHRoZSBvdXRwdXQgY29uZmlndXJhdGlvblxuICAgICAgICAgICAgICAgIGlmIChvdXRwdXQgJiYgdHlwZW9mIG91dHB1dCA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkob3V0cHV0KSkge1xuICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHByb3BlcnR5IGV4aXN0cyBpbiB0aGUgb2JqZWN0IChub3QganVzdCBjaGVja2luZyB0aGUgdmFsdWUpXG4gICAgICAgICAgICAgICAgICBjb25zdCBoYXNQcmVzZXJ2ZU1vZHVsZXNSb290ID0gJ3ByZXNlcnZlTW9kdWxlc1Jvb3QnIGluIG91dHB1dDtcbiAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgaWYgKGhhc1ByZXNlcnZlTW9kdWxlc1Jvb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUHJvcGVydHkgZXhpc3RzLCBwcmVzZXJ2ZSB0aGUgcHJlc2VydmVNb2R1bGVzIHZhbHVlIGZyb20gdGhlIG91dHB1dCAoZG9uJ3Qgb3ZlcnJpZGUgaXQpXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgY3JpdGljYWwgZm9yIHN0YXRpYyBidWlsZHMgd2hlcmUgcHJlc2VydmVNb2R1bGVzOiBmYWxzZSBpcyBzZXRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dDsgLy8gUmV0dXJuIGFzLWlzLCBwcmVzZXJ2ZU1vZHVsZXMgaXMgYWxyZWFkeSBzZXQgY29ycmVjdGx5XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBQcm9wZXJ0eSBtaXNzaW5nLCBhZGQgaXQgYmFzZWQgb24gdXNlciBvcHRpb25zXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXNlcnZlTW9kdWxlc1Jvb3RTdHJpbmcgPSB1c2VyT3B0aW9ucy5idWlsZC5wcmVzZXJ2ZU1vZHVsZXNSb290ID09PSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgID8gdXNlck9wdGlvbnMubW9kdWxlQmFzZVxuICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5vdXRwdXQsIHByZXNlcnZlTW9kdWxlc1Jvb3Q6IHByZXNlcnZlTW9kdWxlc1Jvb3RTdHJpbmcgfTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgICAgICAgfSkoKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIHdpdGggYWxsIGVudmlyb25tZW50c1xuICAgICAgLy8gQnVpbGQgb3JkZXI6IGNsaWVudCDihpIgc3NyIOKGkiBzZXJ2ZXIg4oaSIHN0YXRpYyBnZW5lcmF0aW9uIChzdGVwIDQpXG4gICAgICAvLyBTZXJ2ZXIgYnVpbGQgcnVucyBMQVNUIHNvIGRpc3QvY2xpZW50IGV4aXN0cyB3aGVuIEhUTUwgcmVuZGVyaW5nIHJlZmVyZW5jZXMgY2xpZW50IGNvbXBvbmVudHNcbiAgICAgIC8vIFN0YXRpYyBnZW5lcmF0aW9uIGlzIGRlZmVycmVkIHRvIHJ1biBhZnRlciBBTEwgZW52aXJvbm1lbnRzIGNvbXBsZXRlIChuZWVkcyBzZXJ2ZXIgbWFuaWZlc3QpXG4gICAgICByZXR1cm4ge1xuICAgICAgICByb290OiB1c2VyT3B0aW9ucy5wcm9qZWN0Um9vdCxcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICBlbnZpcm9ubWVudHMsXG4gICAgICAgIGJ1aWxkZXI6IHtcbiAgICAgICAgICBhc3luYyBidWlsZEFwcChidWlsZGVyOiBWaXRlQnVpbGRlcikge1xuICAgICAgICAgICAgLy8gQnVpbGQgYWxsIGVudmlyb25tZW50cyBpbiBkZWZpbml0aW9uIG9yZGVyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVudmlyb25tZW50IG9mIE9iamVjdC52YWx1ZXMoYnVpbGRlci5lbnZpcm9ubWVudHMpKSB7XG4gICAgICAgICAgICAgIGF3YWl0IGJ1aWxkZXIuYnVpbGQoZW52aXJvbm1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU3RlcCA0OiBSdW4gZGVmZXJyZWQgc3RhdGljIGdlbmVyYXRpb24gbm93IHRoYXQgYWxsIG1hbmlmZXN0cyBhcmUgYXZhaWxhYmxlXG4gICAgICAgICAgICBhd2FpdCBydW5EZWZlcnJlZFN0YXRpY0dlbmVyYXRpb24oKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBlbnZpcm9ubWVudFBsdWdpbjtcbn07XG4iXSwibmFtZXMiOlsiY29uZmlnIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUErQmEsTUFBQSx1QkFBQSxHQUF3QyxDQUFDLE9BQW9CLEtBQUE7QUFDeEUsRUFBQSxNQUFNLGlCQUE0QixHQUFBO0FBQUEsSUFDaEMsSUFBTSxFQUFBLHVDQUFBO0FBQUEsSUFDTixPQUFTLEVBQUEsS0FBQTtBQUFBLElBRVQsTUFBTSxNQUFPLENBQUEsTUFBQSxFQUFvQixTQUFXLEVBQUE7QUFFMUMsTUFBTSxNQUFBLHFCQUFBLEdBQXdCLGVBQWUsT0FBTyxDQUFBO0FBQ3BELE1BQUksSUFBQSxxQkFBQSxDQUFzQixTQUFTLE9BQVMsRUFBQTtBQUMxQyxRQUFBLE1BQU0scUJBQXNCLENBQUEsS0FBQTtBQUFBO0FBRTlCLE1BQUEsTUFBTSxjQUFjLHFCQUFzQixDQUFBLFdBQUE7QUFHMUMsTUFBSSxJQUFBLENBQUMsT0FBTyxPQUFTLEVBQUE7QUFDbkIsUUFBQSxNQUFBLENBQU8sVUFBVSxFQUFDO0FBQUE7QUFVcEIsTUFBTSxNQUFBLE1BQUEsR0FBUyxNQUFPLENBQUEsWUFBQSxJQUFnQixZQUFhLEVBQUE7QUFDbkQsTUFBSSxJQUFBLE9BQU8sV0FBWSxDQUFBLFFBQUEsS0FBYSxVQUFZLEVBQUE7QUFDOUMsUUFBQSxXQUFBLENBQVksUUFBVyxHQUFBLHFCQUFBO0FBQUEsVUFDckIsV0FBQTtBQUFBLFVBQ0EsU0FBQTtBQUFBLFVBQ0EsWUFBWSxNQUFRLEVBQUE7QUFBQSxTQUN0QjtBQUFBO0FBR0YsTUFBSSxJQUFBLENBQUMsWUFBWSxNQUFRLEVBQUE7QUFDdkIsUUFBQSxXQUFBLENBQVksTUFBUyxHQUFBLHFCQUFBO0FBQUE7QUFFdkIsTUFBQSxXQUFBLENBQVksT0FBTyxRQUFXLEdBQUEscUJBQUE7QUFBQSxRQUM1QixXQUFBO0FBQUEsUUFDQSxTQUFBO0FBQUEsUUFDQSxZQUFZLE1BQVEsRUFBQTtBQUFBLE9BQ3RCO0FBSUEsTUFBTSxNQUFBLGtCQUFBLEdBQXFCLE1BQU0sbUJBQW9CLENBQUE7QUFBQSxRQUNuRCxNQUFBO0FBQUEsUUFDQSxTQUFBO0FBQUEsUUFDQSxXQUFBO0FBQUEsUUFDQTtBQUFBLE9BQ0QsQ0FBQTtBQUVELE1BQUksSUFBQSxrQkFBQSxDQUFtQixTQUFTLE9BQVMsRUFBQTtBQUN2QyxRQUFBLE1BQU0sYUFBYSxXQUFZLENBQUE7QUFBQSxVQUM3QixPQUFPLGtCQUFtQixDQUFBLEtBQUE7QUFBQSxVQUMxQixNQUFBO0FBQUEsVUFFQSxnQkFBZ0IsV0FBWSxDQUFBLGNBQUE7QUFBQSxVQUM1QixRQUFVLEVBQUE7QUFBQTtBQUFBLFNBQ1gsQ0FBQTtBQUNELFFBQUEsSUFBSSxjQUFjLElBQU0sRUFBQTtBQUN0QixVQUFNLE1BQUEsVUFBQTtBQUFBLFNBQ0QsTUFBQTtBQUVMLFVBQU0sTUFBQSxJQUFJLE1BQU0sd0NBQXdDLENBQUE7QUFBQTtBQUMxRDtBQUlGLE1BQUEsTUFBTSxzQkFBc0Isa0JBQW1CLENBQUEsbUJBQUE7QUFHL0MsTUFBQSxNQUFNLHFCQUF3QixHQUFBO0FBQUEsUUFDNUI7QUFBQSxVQUNFLElBQU0sRUFBQSxRQUFBO0FBQUEsVUFDTixTQUFXLEVBQUEsY0FBQTtBQUFBLFVBQ1gsR0FBSyxFQUFBLEtBQUE7QUFBQSxVQUNMLFFBQVEsSUFBSyxDQUFBLFdBQUEsQ0FBWSxNQUFNLE1BQVEsRUFBQSxXQUFBLENBQVksTUFBTSxNQUFNO0FBQUEsU0FDakU7QUFBQSxRQUNBO0FBQUEsVUFDRSxJQUFNLEVBQUEsS0FBQTtBQUFBLFVBQ04sU0FBVyxFQUFBLGNBQUE7QUFBQSxVQUNYLEdBQUssRUFBQSxJQUFBO0FBQUEsVUFDTCxRQUFRLElBQUssQ0FBQSxXQUFBLENBQVksTUFBTSxNQUFRLEVBQUEsV0FBQSxDQUFZLE1BQU0sTUFBTTtBQUFBLFNBQ2pFO0FBQUEsUUFDQTtBQUFBLFVBQ0UsSUFBTSxFQUFBLFFBQUE7QUFBQSxVQUNOLFNBQVcsRUFBQSxjQUFBO0FBQUEsVUFDWCxHQUFLLEVBQUEsSUFBQTtBQUFBLFVBQ0wsUUFBUSxJQUFLLENBQUEsV0FBQSxDQUFZLE1BQU0sTUFBUSxFQUFBLFdBQUEsQ0FBWSxNQUFNLE1BQU07QUFBQTtBQUNqRSxPQUNGO0FBSUEsTUFBQSxNQUFNLHdCQUF5QixXQUM1QixDQUFBLHFCQUFBLElBQXlCLENBQUMsUUFBQSxFQUFVLE9BQU8sUUFBUSxDQUFBO0FBRXRELE1BQUEsTUFBTSxxQkFBcUIscUJBQXNCLENBQUEsTUFBQTtBQUFBLFFBQU8sQ0FBQ0EsT0FBQUEsS0FDdkQscUJBQXNCLENBQUEsUUFBQSxDQUFTQSxRQUFPLElBQUk7QUFBQSxPQUM1QztBQUlBLE1BQUEsTUFBTSxlQUNKLEVBQUM7QUFJSCxNQUFBLE1BQU0sZ0JBQW1CLEdBQUEsa0JBQUE7QUFFekIsTUFBQSxLQUFBLE1BQVcsYUFBYSxnQkFBa0IsRUFBQTtBQUN4QyxRQUFBLE1BQU0sZUFBZSxpQkFBa0IsQ0FBQTtBQUFBLFVBQ3JDLFdBQVcsU0FBVSxDQUFBLFNBQUE7QUFBQSxVQUNyQixNQUFBO0FBQUEsVUFDQSxTQUFBO0FBQUEsVUFDQSxXQUFBO0FBQUEsVUFDQSxtQkFBQTtBQUFBLFVBQ0EsS0FBSyxTQUFVLENBQUE7QUFBQSxTQUNoQixDQUFBO0FBRUQsUUFBSSxJQUFBLFlBQUEsQ0FBYSxTQUFTLE9BQVMsRUFBQTtBQUNqQyxVQUFBLE1BQU0sYUFBYSxXQUFZLENBQUE7QUFBQSxZQUM3QixPQUFPLFlBQWEsQ0FBQSxLQUFBO0FBQUEsWUFDcEIsTUFBQTtBQUFBLFlBQ0EsT0FBQSxFQUFTLENBQTJCLHdCQUFBLEVBQUEsU0FBQSxDQUFVLElBQUksQ0FBQSxPQUFBLENBQUE7QUFBQSxZQUNsRCxnQkFBZ0IsV0FBWSxDQUFBLGNBQUE7QUFBQSxZQUM1QixRQUFVLEVBQUE7QUFBQSxXQUNYLENBQUE7QUFDRCxVQUFBLElBQUksY0FBYyxJQUFNLEVBQUE7QUFDdEIsWUFBTSxNQUFBLFVBQUE7QUFBQSxXQUNELE1BQUE7QUFDTCxZQUFBLE1BQU0sSUFBSSxLQUFBO0FBQUEsY0FDUixDQUFBLHdCQUFBLEVBQTJCLFVBQVUsSUFBSSxDQUFBLDBCQUFBO0FBQUEsYUFDM0M7QUFBQTtBQUNGO0FBSUYsUUFBQSxNQUFNLGFBQWEsWUFBYSxDQUFBLFVBQUE7QUFHaEMsUUFBQSxJQUFJLFlBQVksT0FBUyxFQUFBO0FBQ3ZCLFVBQVEsTUFBQSxFQUFBLElBQUE7QUFBQSxZQUNOLENBQUcsRUFBQSxTQUFBLENBQVUsSUFBSSxDQUFBLDRCQUFBLEVBQStCLElBQUssQ0FBQSxTQUFBO0FBQUEsY0FDbkQsVUFBQSxDQUFXLE1BQU0sYUFBYyxDQUFBLEtBQUE7QUFBQSxjQUMvQixJQUFBO0FBQUEsY0FDQTtBQUFBLGFBQ0QsQ0FBQTtBQUFBLFdBQ0g7QUFDQSxVQUFRLE1BQUEsRUFBQSxJQUFBO0FBQUEsWUFDTixDQUNFLEVBQUEsU0FBQSxDQUFVLElBQ1osQ0FBQSx5Q0FBQSxFQUE0QyxJQUFLLENBQUEsU0FBQTtBQUFBLGNBQy9DLFVBQUEsQ0FBVyxNQUFNLGFBQWMsQ0FBQSxNQUFBO0FBQUEsY0FDL0IsSUFBQTtBQUFBLGNBQ0E7QUFBQSxhQUNELENBQUE7QUFBQSxXQUNIO0FBQUE7QUFJRixRQUFBLElBQUksWUFBWSxPQUFTLEVBQUE7QUFDdkIsVUFBUSxNQUFBLEVBQUEsSUFBQTtBQUFBLFlBQ04sQ0FBRyxFQUFBLFNBQUEsQ0FBVSxJQUFJLENBQUEscUJBQUEsRUFBd0IsSUFBSyxDQUFBLFNBQUE7QUFBQSxjQUM1QyxVQUFXLENBQUEsT0FBQTtBQUFBLGNBQ1gsSUFBQTtBQUFBLGNBQ0E7QUFBQSxhQUNELENBQUE7QUFBQSxXQUNIO0FBQ0EsVUFBUSxNQUFBLEVBQUEsSUFBQTtBQUFBLFlBQ04sQ0FDRSxFQUFBLFNBQUEsQ0FBVSxJQUNaLENBQUEsMENBQUEsRUFBNkMsSUFBSyxDQUFBLFNBQUE7QUFBQSxjQUNoRCxVQUFBLENBQVcsTUFBTSxhQUFjLENBQUEsUUFBQTtBQUFBLGNBQy9CLElBQUE7QUFBQSxjQUNBO0FBQUEsYUFDRCxDQUFBO0FBQUEsV0FDSDtBQUFBO0FBR0YsUUFBQSxNQUFNLFdBQWMsR0FBQSxXQUFBLENBQVksUUFBVSxFQUFBLGFBQUEsSUFBaUIsQ0FBQyxNQUFRLEVBQUEsT0FBQTtBQUNwRSxRQUFBLE1BQU0sY0FDSixXQUFZLENBQUEsUUFBQSxFQUFVLG1CQUF3QixLQUFBLGNBQUEsSUFDOUMsWUFBWSxRQUFVLEVBQUEsYUFBQTtBQUV4QixRQUFNLE1BQUEscUJBQUEsR0FDSixZQUFZLFFBQVUsRUFBQSxhQUFBLElBQWlCLENBQUMsTUFBTyxDQUFBLEtBQUEsRUFBTyxNQUNsRCxRQUNBLEdBQUEsS0FBQTtBQUNOLFFBQUEsTUFBTSxRQUFXLEdBQUEsV0FBQSxHQUNiLHFCQUEwQixLQUFBLEtBQUEsR0FDeEIsUUFDQSxHQUFBLFFBQUEsR0FDRixTQUFVLENBQUEsSUFBQSxLQUFTLFFBQVksSUFBQSxTQUFBLENBQVUsSUFBUyxLQUFBLEtBQUEsR0FDbEQsUUFDQSxHQUFBLFFBQUE7QUFHSixRQUFhLFlBQUEsQ0FBQSxTQUFBLENBQVUsSUFBSSxDQUFJLEdBQUE7QUFBQSxVQUM3QixjQUFnQixFQUFBLFNBQUEsQ0FBVSxJQUFTLEtBQUEsUUFBQSxHQUFXLElBQU8sR0FBQSxLQUFBO0FBQUEsVUFDckQsUUFBUSxVQUFXLENBQUEsTUFBQTtBQUFBLFVBQ25CLFFBQUE7QUFBQSxVQUNBLE9BQVMsRUFBQTtBQUFBLFlBQ1AsR0FBRyxVQUFXLENBQUEsT0FBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsWUFLZCxXQUFXLE1BQU07QUFDZixjQUFNLE1BQUEsYUFBQSxHQUFnQixVQUFVLElBQVMsS0FBQSxRQUFBLElBQWEsQ0FBQyxTQUFVLENBQUEsR0FBQSxJQUFPLFVBQVUsSUFBUyxLQUFBLFFBQUE7QUFDM0YsY0FBQSxJQUFJLGFBQWUsRUFBQTtBQUVqQixnQkFBQSxPQUFPLEVBQUM7QUFBQTtBQUdWLGNBQU8sT0FBQSxLQUFBLENBQU0sT0FBUSxDQUFBLFVBQUEsQ0FBVyxLQUFNLENBQUEsYUFBQSxDQUFjLFFBQVEsQ0FDeEQsR0FBQSxVQUFBLENBQVcsS0FBTSxDQUFBLGFBQUEsQ0FBYyxRQUFTLENBQUEsTUFBQTtBQUFBLGdCQUN0QyxDQUFDLElBQXlCLEtBQUEsT0FBTyxJQUFTLEtBQUE7QUFBQSxrQkFFNUMsRUFBQztBQUFBLGFBQ0o7QUFBQSxXQUNMO0FBQUEsVUFDQSxLQUFPLEVBQUE7QUFBQSxZQUNMLEdBQUcsVUFBVyxDQUFBLEtBQUE7QUFBQSxZQUNkLEdBQUEsRUFDRSxVQUFVLElBQVMsS0FBQSxRQUFBLEdBQ2YsT0FDQSxXQUNBLEdBQUEsV0FBQSxHQUNBLFVBQVUsSUFBUyxLQUFBLEtBQUE7QUFBQSxZQUN6QixNQUFBLEVBQVEsV0FBVyxLQUFNLENBQUEsTUFBQTtBQUFBO0FBQUEsWUFFekIsYUFBZSxFQUFBO0FBQUEsY0FDYixHQUFHLFdBQVcsS0FBTSxDQUFBLGFBQUE7QUFBQSxjQUNwQixRQUFVLEVBQUEsTUFBQTtBQUFBO0FBQUE7QUFBQSxjQUVWLFNBQVMsTUFBTTtBQUNiLGdCQUFNLE1BQUEsTUFBQSxHQUFTLFVBQVcsQ0FBQSxLQUFBLENBQU0sYUFBYyxDQUFBLE1BQUE7QUFHOUMsZ0JBQUksSUFBQSxLQUFBLENBQU0sT0FBUSxDQUFBLE1BQU0sQ0FBRyxFQUFBO0FBQ3pCLGtCQUFNLE1BQUEsWUFBQSxHQUFlLE9BQU8sSUFBSyxDQUFBLENBQUEsQ0FBQSxLQUFLLEtBQUssT0FBTyxDQUFBLEtBQU0sUUFBWSxJQUFBLHFCQUFBLElBQXlCLENBQUMsQ0FBQTtBQUM5RixrQkFBQSxJQUFJLFlBQWMsRUFBQTtBQUNoQixvQkFBTyxPQUFBLFlBQUE7QUFBQTtBQUdULGtCQUFJLElBQUEsTUFBQSxDQUFPLFNBQVMsQ0FBRyxFQUFBO0FBQ3JCLG9CQUFBLE9BQU8sT0FBTyxDQUFDLENBQUE7QUFBQTtBQUNqQjtBQUlGLGdCQUFJLElBQUEsTUFBQSxJQUFVLE9BQU8sTUFBVyxLQUFBLFFBQUEsSUFBWSxDQUFDLEtBQU0sQ0FBQSxPQUFBLENBQVEsTUFBTSxDQUFHLEVBQUE7QUFFbEUsa0JBQUEsTUFBTSx5QkFBeUIscUJBQXlCLElBQUEsTUFBQTtBQUV4RCxrQkFBQSxJQUFJLHNCQUF3QixFQUFBO0FBRzFCLG9CQUFPLE9BQUEsTUFBQTtBQUFBLG1CQUNGLE1BQUE7QUFFTCxvQkFBQSxNQUFNLDRCQUE0QixXQUFZLENBQUEsS0FBQSxDQUFNLG1CQUF3QixLQUFBLEtBQUEsR0FDeEUsWUFBWSxVQUNaLEdBQUEsTUFBQTtBQUNKLG9CQUFBLE9BQU8sRUFBRSxHQUFHLE1BQVEsRUFBQSxtQkFBQSxFQUFxQix5QkFBMEIsRUFBQTtBQUFBO0FBQ3JFO0FBR0YsZ0JBQU8sT0FBQSxNQUFBO0FBQUEsZUFDTjtBQUFBO0FBQ0w7QUFDRixTQUNGO0FBQUE7QUFPRixNQUFPLE9BQUE7QUFBQSxRQUNMLE1BQU0sV0FBWSxDQUFBLFdBQUE7QUFBQSxRQUNsQixHQUFHLE1BQUE7QUFBQSxRQUNILFlBQUE7QUFBQSxRQUNBLE9BQVMsRUFBQTtBQUFBLFVBQ1AsTUFBTSxTQUFTLE9BQXNCLEVBQUE7QUFFbkMsWUFBQSxLQUFBLE1BQVcsV0FBZSxJQUFBLE1BQUEsQ0FBTyxNQUFPLENBQUEsT0FBQSxDQUFRLFlBQVksQ0FBRyxFQUFBO0FBQzdELGNBQU0sTUFBQSxPQUFBLENBQVEsTUFBTSxXQUFXLENBQUE7QUFBQTtBQUdqQyxZQUFBLE1BQU0sMkJBQTRCLEVBQUE7QUFBQTtBQUNwQztBQUNGLE9BQ0Y7QUFBQTtBQUNGLEdBQ0Y7QUFFQSxFQUFPLE9BQUEsaUJBQUE7QUFDVDs7OzsifQ==
@@ -1,38 +1,37 @@
1
- import { createElementWithReact } from "./createElementWithReact.js";
2
- import { React } from "../vendor/vendor.server.js";
3
- import { createHeadlessReusePageComponent } from "./headlessStreamReuseHandler.js";
4
1
  /**
5
- * Pure function for creating React element
6
- * This is environment-agnostic and can be used in both client and server
2
+ * vite-plugin-react-server
3
+ * Copyright (c) Nico Brinkkemper
4
+ * MIT License
7
5
  */
8
- export function createReactElement(options, context) {
9
- // Determine if this is a headless stream by checking if htmlPath is empty
10
- // This is more reliable than checking the ID
11
- const isHeadless = options.htmlPath === "";
12
- // Handle headless stream reuse for full streams
13
- let finalOptions = options;
14
- if (!isHeadless && context.reuseHeadlessStreamId) {
15
- const reusePageComponent = createHeadlessReusePageComponent({
16
- reuseHeadlessStreamId: context.reuseHeadlessStreamId,
17
- headlessStreamElements: context.headlessStreamElements || new Map(),
18
- headlessStreamErrors: context.headlessStreamErrors || new Map(),
19
- route: context.route,
20
- verbose: context.verbose,
21
- logger: context.logger,
22
- });
23
- if (reusePageComponent !== undefined) {
24
- finalOptions = {
25
- ...options,
26
- PageComponent: reusePageComponent,
27
- };
28
- }
29
- }
30
- return createElementWithReact(React, {
31
- ...finalOptions,
32
- Html: isHeadless ? React.Fragment : finalOptions.HtmlComponent,
33
- as: isHeadless ? React.Fragment : "div",
6
+ import { createElementWithReact } from './createElementWithReact.js';
7
+ import { React } from '../vendor/vendor.server.js';
8
+ import { createHeadlessReusePageComponent } from './headlessStreamReuseHandler.js';
9
+
10
+ function createReactElement(options, context) {
11
+ const isHeadless = options.htmlPath === "";
12
+ let finalOptions = options;
13
+ if (!isHeadless && context.reuseHeadlessStreamId) {
14
+ const reusePageComponent = createHeadlessReusePageComponent({
15
+ reuseHeadlessStreamId: context.reuseHeadlessStreamId,
16
+ headlessStreamElements: context.headlessStreamElements || /* @__PURE__ */ new Map(),
17
+ headlessStreamErrors: context.headlessStreamErrors || /* @__PURE__ */ new Map(),
18
+ route: context.route,
19
+ verbose: context.verbose,
20
+ logger: context.logger
34
21
  });
22
+ if (reusePageComponent !== void 0) {
23
+ finalOptions = {
24
+ ...options,
25
+ PageComponent: reusePageComponent
26
+ };
27
+ }
28
+ }
29
+ return createElementWithReact(React, {
30
+ ...finalOptions,
31
+ Html: isHeadless ? React.Fragment : finalOptions.HtmlComponent,
32
+ as: isHeadless ? React.Fragment : "div"
33
+ });
35
34
  }
36
- /**
37
- * Pure function for storing headless stream data
38
- */
35
+
36
+ export { createReactElement };
37
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUnNjUmVuZGVySGVscGVycy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGx1Z2luL2hlbHBlcnMvY3JlYXRlUnNjUmVuZGVySGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENyZWF0ZUhhbmRsZXJPcHRpb25zIH0gZnJvbSBcIi4uL3R5cGVzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFJzY1JlbmRlckNvbnRleHQgfSBmcm9tIFwiLi4vc3RyZWFtL3JlbmRlclJzY1N0cmVhbS50eXBlcy5qc1wiO1xuaW1wb3J0IHsgY3JlYXRlRWxlbWVudFdpdGhSZWFjdCB9IGZyb20gXCIuL2NyZWF0ZUVsZW1lbnRXaXRoUmVhY3QuanNcIjtcbmltcG9ydCB7IFJlYWN0IH0gZnJvbSBcIi4uL3ZlbmRvci92ZW5kb3Iuc2VydmVyLmpzXCI7XG5pbXBvcnQgeyBjcmVhdGVIZWFkbGVzc1JldXNlUGFnZUNvbXBvbmVudCB9IGZyb20gXCIuL2hlYWRsZXNzU3RyZWFtUmV1c2VIYW5kbGVyLmpzXCI7XG5cbi8qKlxuICogUHVyZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgUmVhY3QgZWxlbWVudFxuICogVGhpcyBpcyBlbnZpcm9ubWVudC1hZ25vc3RpYyBhbmQgY2FuIGJlIHVzZWQgaW4gYm90aCBjbGllbnQgYW5kIHNlcnZlclxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVhY3RFbGVtZW50KFxuICBvcHRpb25zOiBDcmVhdGVIYW5kbGVyT3B0aW9ucyxcbiAgY29udGV4dDogUnNjUmVuZGVyQ29udGV4dCxcbikge1xuICAvLyBEZXRlcm1pbmUgaWYgdGhpcyBpcyBhIGhlYWRsZXNzIHN0cmVhbSBieSBjaGVja2luZyBpZiBodG1sUGF0aCBpcyBlbXB0eVxuICAvLyBUaGlzIGlzIG1vcmUgcmVsaWFibGUgdGhhbiBjaGVja2luZyB0aGUgSURcbiAgY29uc3QgaXNIZWFkbGVzcyA9IG9wdGlvbnMuaHRtbFBhdGggPT09IFwiXCI7XG5cbiAgLy8gSGFuZGxlIGhlYWRsZXNzIHN0cmVhbSByZXVzZSBmb3IgZnVsbCBzdHJlYW1zXG4gIGxldCBmaW5hbE9wdGlvbnMgPSBvcHRpb25zO1xuICBpZiAoIWlzSGVhZGxlc3MgJiYgY29udGV4dC5yZXVzZUhlYWRsZXNzU3RyZWFtSWQpIHtcbiAgICBjb25zdCByZXVzZVBhZ2VDb21wb25lbnQgPSBjcmVhdGVIZWFkbGVzc1JldXNlUGFnZUNvbXBvbmVudCh7XG4gICAgICByZXVzZUhlYWRsZXNzU3RyZWFtSWQ6IGNvbnRleHQucmV1c2VIZWFkbGVzc1N0cmVhbUlkLFxuICAgICAgaGVhZGxlc3NTdHJlYW1FbGVtZW50czogY29udGV4dC5oZWFkbGVzc1N0cmVhbUVsZW1lbnRzIHx8IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCksXG4gICAgICBoZWFkbGVzc1N0cmVhbUVycm9yczogY29udGV4dC5oZWFkbGVzc1N0cmVhbUVycm9ycyB8fCBuZXcgTWFwPHN0cmluZywgYW55PigpLFxuICAgICAgcm91dGU6IGNvbnRleHQucm91dGUsXG4gICAgICB2ZXJib3NlOiBjb250ZXh0LnZlcmJvc2UsXG4gICAgICBsb2dnZXI6IGNvbnRleHQubG9nZ2VyLFxuICAgIH0pO1xuICAgIFxuICAgIGlmIChyZXVzZVBhZ2VDb21wb25lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZmluYWxPcHRpb25zID0ge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBQYWdlQ29tcG9uZW50OiByZXVzZVBhZ2VDb21wb25lbnQsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjcmVhdGVFbGVtZW50V2l0aFJlYWN0KFJlYWN0LCB7XG4gICAgLi4uZmluYWxPcHRpb25zLFxuICAgIEh0bWw6IGlzSGVhZGxlc3MgPyBSZWFjdC5GcmFnbWVudCA6IGZpbmFsT3B0aW9ucy5IdG1sQ29tcG9uZW50LFxuICAgIGFzOiBpc0hlYWRsZXNzID8gUmVhY3QuRnJhZ21lbnQgOiBcImRpdlwiLFxuICB9KTtcbn1cblxuLyoqXG4gKiBQdXJlIGZ1bmN0aW9uIGZvciBzdG9yaW5nIGhlYWRsZXNzIHN0cmVhbSBkYXRhXG4gKi9cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFVTyxTQUFTLGtCQUFBLENBQ2QsU0FDQSxPQUNBLEVBQUE7QUFHQSxFQUFNLE1BQUEsVUFBQSxHQUFhLFFBQVEsUUFBYSxLQUFBLEVBQUE7QUFHeEMsRUFBQSxJQUFJLFlBQWUsR0FBQSxPQUFBO0FBQ25CLEVBQUksSUFBQSxDQUFDLFVBQWMsSUFBQSxPQUFBLENBQVEscUJBQXVCLEVBQUE7QUFDaEQsSUFBQSxNQUFNLHFCQUFxQixnQ0FBaUMsQ0FBQTtBQUFBLE1BQzFELHVCQUF1QixPQUFRLENBQUEscUJBQUE7QUFBQSxNQUMvQixzQkFBd0IsRUFBQSxPQUFBLENBQVEsc0JBQTBCLG9CQUFBLElBQUksR0FBaUIsRUFBQTtBQUFBLE1BQy9FLG9CQUFzQixFQUFBLE9BQUEsQ0FBUSxvQkFBd0Isb0JBQUEsSUFBSSxHQUFpQixFQUFBO0FBQUEsTUFDM0UsT0FBTyxPQUFRLENBQUEsS0FBQTtBQUFBLE1BQ2YsU0FBUyxPQUFRLENBQUEsT0FBQTtBQUFBLE1BQ2pCLFFBQVEsT0FBUSxDQUFBO0FBQUEsS0FDakIsQ0FBQTtBQUVELElBQUEsSUFBSSx1QkFBdUIsTUFBVyxFQUFBO0FBQ3BDLE1BQWUsWUFBQSxHQUFBO0FBQUEsUUFDYixHQUFHLE9BQUE7QUFBQSxRQUNILGFBQWUsRUFBQTtBQUFBLE9BQ2pCO0FBQUE7QUFDRjtBQUdGLEVBQUEsT0FBTyx1QkFBdUIsS0FBTyxFQUFBO0FBQUEsSUFDbkMsR0FBRyxZQUFBO0FBQUEsSUFDSCxJQUFNLEVBQUEsVUFBQSxHQUFhLEtBQU0sQ0FBQSxRQUFBLEdBQVcsWUFBYSxDQUFBLGFBQUE7QUFBQSxJQUNqRCxFQUFBLEVBQUksVUFBYSxHQUFBLEtBQUEsQ0FBTSxRQUFXLEdBQUE7QUFBQSxHQUNuQyxDQUFBO0FBQ0g7Ozs7In0=
@@ -1 +1 @@
1
- {"version":3,"file":"createSharedLoader.d.ts","sourceRoot":"","sources":["../../../plugin/helpers/createSharedLoader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,QAAQ,EACR,UAAU,EACV,OAAe,EACf,MAAM,EAEN,cAAqB,EAErB,QAAQ,EACR,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,cAAc,EAEd,WAAmB,EACnB,WAAW,EAAE,YAAoB,EACjC,oBAAoB,EACpB,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IACxD,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAoF/B"}
1
+ {"version":3,"file":"createSharedLoader.d.ts","sourceRoot":"","sources":["../../../plugin/helpers/createSharedLoader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,QAAQ,EACR,UAAU,EACV,OAAe,EACf,MAAM,EAEN,cAAqB,EAErB,QAAQ,EACR,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,cAAc,EAEd,WAAmB,EACnB,WAAW,EAAE,YAAoB,EACjC,oBAAoB,EACpB,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC,CAAC;IACxD,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAyF/B"}