sku 16.5.0 → 16.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/dist/@loadable/component.mjs +1 -2
- package/dist/_virtual/_rolldown/runtime.mjs +2 -3
- package/dist/bin/sku.mjs +1 -2
- package/dist/config/babel.mjs +1 -2
- package/dist/config/eslint/ignores.mjs +1 -2
- package/dist/config/eslint/importOrder.mjs +1 -2
- package/dist/config/eslint/jsonFiles.mjs +1 -2
- package/dist/config/eslint/plugins/package-json.mjs +1 -2
- package/dist/config/eslint.d.mts +0 -2
- package/dist/config/eslint.mjs +2 -3
- package/dist/config/fileResolutionExtensions.mjs +1 -2
- package/dist/config/prettier.d.mts +0 -2
- package/dist/config/prettier.mjs +1 -2
- package/dist/config/storybook/viteConfig.d.mts +0 -2
- package/dist/config/storybook/viteConfig.mjs +1 -2
- package/dist/config/storybook/webpackConfig.d.mts +0 -2
- package/dist/config/storybook/webpackConfig.mjs +3 -4
- package/dist/config/targets.mjs +1 -2
- package/dist/context/cjsInteropDeps.mjs +1 -2
- package/dist/context/configPath.mjs +1 -2
- package/dist/context/configSchema.mjs +2 -2
- package/dist/context/createSkuContext.mjs +4 -3
- package/dist/context/defaultClientEntry.mjs +1 -2
- package/dist/context/defaultCompilePackages.mjs +1 -2
- package/dist/context/defaultSkuConfig.mjs +2 -2
- package/dist/context/getSiteForHost.mjs +1 -2
- package/dist/context/hosts.mjs +3 -4
- package/dist/context/hostsFile.mjs +2 -3
- package/dist/context/resolveEnvironment.mjs +1 -2
- package/dist/context/validateConfig.mjs +10 -4
- package/dist/context/validatePathAliases.mjs +1 -2
- package/dist/entries/ssr-client.dev.mjs +1 -2
- package/dist/entries/ssr-client.mjs +1 -2
- package/dist/entries/ssr-server.d.mts +0 -2
- package/dist/entries/ssr-server.mjs +2 -3
- package/dist/entries/vite-client.mjs +1 -2
- package/dist/entries/vite-render.d.mts +0 -2
- package/dist/entries/vite-render.mjs +1 -2
- package/dist/jest/file-mock.d.mts +0 -2
- package/dist/jest/file-mock.mjs +1 -2
- package/dist/jest/js-transform.d.mts +0 -2
- package/dist/jest/js-transform.mjs +1 -2
- package/dist/jest/ts-transform.d.mts +0 -2
- package/dist/jest/ts-transform.mjs +1 -2
- package/dist/jest-preset.d.mts +0 -2
- package/dist/jest-preset.mjs +1 -2
- package/dist/node_modules/.pnpm/ansi-regex@6.5.0/node_modules/ansi-regex/index.mjs +9 -0
- package/dist/node_modules/.pnpm/ansi-styles@6.2.3/node_modules/ansi-styles/index.mjs +1 -2
- package/dist/node_modules/.pnpm/emoji-regex@10.6.0/node_modules/emoji-regex/index.mjs +1 -2
- package/dist/node_modules/.pnpm/{get-east-asian-width@1.6.0 → get-east-asian-width@1.7.0}/node_modules/get-east-asian-width/index.mjs +3 -4
- package/dist/node_modules/.pnpm/{get-east-asian-width@1.6.0 → get-east-asian-width@1.7.0}/node_modules/get-east-asian-width/lookup-data.mjs +18 -13
- package/dist/node_modules/.pnpm/{get-east-asian-width@1.6.0 → get-east-asian-width@1.7.0}/node_modules/get-east-asian-width/lookup.mjs +3 -4
- package/dist/node_modules/.pnpm/{get-east-asian-width@1.6.0 → get-east-asian-width@1.7.0}/node_modules/get-east-asian-width/utilities.mjs +1 -2
- package/dist/node_modules/.pnpm/indent-string@5.0.0/node_modules/indent-string/index.mjs +1 -2
- package/dist/node_modules/.pnpm/package-manager-detector@0.2.11/node_modules/package-manager-detector/dist/commands.mjs +1 -2
- package/dist/node_modules/.pnpm/package-manager-detector@0.2.11/node_modules/package-manager-detector/dist/constants.mjs +1 -2
- package/dist/node_modules/.pnpm/package-manager-detector@0.2.11/node_modules/package-manager-detector/dist/detect.mjs +2 -3
- package/dist/node_modules/.pnpm/quansync@0.2.11/node_modules/quansync/dist/index.mjs +1 -2
- package/dist/node_modules/.pnpm/quansync@0.2.11/node_modules/quansync/dist/macro.mjs +1 -2
- package/dist/node_modules/.pnpm/{rolldown@1.2.2 → rolldown@1.2.16}/node_modules/rolldown/dist/filter-index.mjs +1 -2
- package/dist/node_modules/.pnpm/string-width@7.2.0/node_modules/string-width/index.mjs +2 -3
- package/dist/node_modules/.pnpm/strip-ansi@7.2.0/node_modules/strip-ansi/index.mjs +2 -3
- package/dist/node_modules/.pnpm/wrap-ansi@9.0.2/node_modules/wrap-ansi/index.mjs +2 -3
- package/dist/openBrowser.mjs +2 -3
- package/dist/package.mjs +1 -2
- package/dist/packages/sku/package.mjs +2 -3
- package/dist/private/utils/src/console/banner.mjs +2 -3
- package/dist/private/utils/src/console/styles.mjs +1 -2
- package/dist/private/utils/src/filesystem/cwd.mjs +1 -2
- package/dist/private/utils/src/filesystem/index.mjs +1 -2
- package/dist/private/utils/src/packageManager/index.mjs +1 -2
- package/dist/private/utils/src/packageManager/packageManager.mjs +1 -2
- package/dist/private/utils/src/packageManager/skuPackageManager.mjs +0 -1
- package/dist/private/utils/src/path/toPosixPath.mjs +1 -2
- package/dist/private/utils/src/serverUrls.mjs +1 -2
- package/dist/program/commands/build/build.action.mjs +1 -2
- package/dist/program/commands/build/build.command.mjs +1 -2
- package/dist/program/commands/build/vite-build-handler.mjs +6 -7
- package/dist/program/commands/build/webpack-build-handler.mjs +18 -10
- package/dist/program/commands/build-ssr/build-ssr.action.mjs +14 -7
- package/dist/program/commands/build-ssr/build-ssr.command.mjs +1 -2
- package/dist/program/commands/configure/configure.action.mjs +1 -2
- package/dist/program/commands/configure/configure.command.mjs +1 -2
- package/dist/program/commands/format/format.action.mjs +3 -4
- package/dist/program/commands/format/format.command.mjs +1 -2
- package/dist/program/commands/index.mjs +1 -2
- package/dist/program/commands/lint/lint.action.mjs +5 -6
- package/dist/program/commands/lint/lint.command.mjs +1 -2
- package/dist/program/commands/serve/serve.action.mjs +42 -18
- package/dist/program/commands/serve/serve.command.mjs +1 -2
- package/dist/program/commands/setup-hosts/setup-hosts.action.mjs +2 -3
- package/dist/program/commands/setup-hosts/setup-hosts.command.mjs +1 -2
- package/dist/program/commands/start/start.action.mjs +5 -6
- package/dist/program/commands/start/start.command.mjs +2 -3
- package/dist/program/commands/start/vite-start-handler.mjs +2 -3
- package/dist/program/commands/start/webpack-start-handler.mjs +6 -7
- package/dist/program/commands/start-ssr/start-ssr.action.mjs +1 -2
- package/dist/program/commands/start-ssr/start-ssr.command.mjs +1 -2
- package/dist/program/commands/start-ssr/webpack-start-ssr-handler.mjs +8 -9
- package/dist/program/commands/test/jest-test-handler.mjs +1 -2
- package/dist/program/commands/test/test.action.mjs +1 -2
- package/dist/program/commands/test/test.command.mjs +1 -2
- package/dist/program/commands/test/vitest-test-handler.mjs +2 -3
- package/dist/program/commands/translations/commands/compile/compile.action.mjs +3 -4
- package/dist/program/commands/translations/commands/compile/compile.command.mjs +1 -2
- package/dist/program/commands/translations/commands/index.mjs +1 -2
- package/dist/program/commands/translations/commands/pull/pull.action.mjs +3 -4
- package/dist/program/commands/translations/commands/pull/pull.command.mjs +1 -2
- package/dist/program/commands/translations/commands/push/auto-translate.option.mjs +1 -2
- package/dist/program/commands/translations/commands/push/delete-unused-keys.option.mjs +1 -2
- package/dist/program/commands/translations/commands/push/push.action.mjs +3 -4
- package/dist/program/commands/translations/commands/push/push.command.mjs +1 -2
- package/dist/program/commands/translations/commands/validate/validate.action.mjs +3 -4
- package/dist/program/commands/translations/commands/validate/validate.command.mjs +1 -2
- package/dist/program/commands/translations/helpers/translation-helpers.mjs +1 -2
- package/dist/program/commands/translations/translations.command.mjs +1 -2
- package/dist/program/hooks/preAction/preAction.hook.mjs +1 -2
- package/dist/program/index.mjs +2 -3
- package/dist/program/options/config.option.mjs +1 -2
- package/dist/program/options/convertLoadable.option.mjs +1 -2
- package/dist/program/options/debug.option.mjs +1 -2
- package/dist/program/options/environment.option.mjs +1 -2
- package/dist/program/options/list-urls.mjs +1 -2
- package/dist/program/options/port.option.mjs +1 -2
- package/dist/program/options/site.option.mjs +1 -2
- package/dist/program/options/stats.option.mjs +0 -1
- package/dist/program/options/watch.option.mjs +1 -2
- package/dist/runtime.d.mts +1 -1
- package/dist/services/bundlerConstants.mjs +1 -2
- package/dist/services/eslint/lint.mjs +1 -2
- package/dist/services/eslint/runESLint.mjs +2 -3
- package/dist/services/packageManager/getPnpmConfigDependencies.mjs +1 -2
- package/dist/services/packageManager/pnpmConfig.mjs +1 -2
- package/dist/services/prettier.mjs +4 -5
- package/dist/services/serverManager.mjs +1 -2
- package/dist/services/telemetry/index.mjs +1 -2
- package/dist/services/telemetry/metricsMeasurers.mjs +1 -2
- package/dist/services/telemetry/provider.mjs +1 -2
- package/dist/services/typescript/runTsc.mjs +2 -3
- package/dist/services/typescript/tsconfig.mjs +35 -26
- package/dist/services/vite/helpers/allocateClientPort.mjs +1 -2
- package/dist/services/vite/helpers/browserslist-to-esbuild.mjs +1 -2
- package/dist/services/vite/helpers/bundleConfig.mjs +11 -6
- package/dist/services/vite/helpers/config/createConfig.mjs +1 -2
- package/dist/services/vite/helpers/config/dependencyGraph.mjs +1 -2
- package/dist/services/vite/helpers/html/createPreRenderedHtml.mjs +1 -2
- package/dist/services/vite/helpers/makePluginName.mjs +1 -2
- package/dist/services/vite/helpers/prerender/prerenderConcurrently.mjs +15 -8
- package/dist/services/vite/helpers/printServerUrls.mjs +2 -3
- package/dist/services/vite/helpers/resolveManifestModuleId.mjs +1 -2
- package/dist/services/vite/helpers/serializeConfig.mjs +1 -2
- package/dist/services/vite/index.mjs +1 -2
- package/dist/services/vite/plugins/build.mjs +11 -9
- package/dist/services/vite/plugins/bundleAnalyzer.mjs +1 -2
- package/dist/services/vite/plugins/config.mjs +2 -3
- package/dist/services/vite/plugins/dangerouslySetViteConfig.mjs +1 -2
- package/dist/services/vite/plugins/devServer.mjs +2 -3
- package/dist/services/vite/plugins/entrySideEffects.mjs +2 -3
- package/dist/services/vite/plugins/esbuild/convertLoadableDepOptimizePlugin.mjs +2 -3
- package/dist/services/vite/plugins/esbuild/fixViteVanillaExtractDepScanPlugin.mjs +1 -2
- package/dist/services/vite/plugins/httpsDevServer.mjs +1 -2
- package/dist/services/vite/plugins/lazyRouteModuleId/injectLazyRouteModuleId.mjs +1 -2
- package/dist/services/vite/plugins/lazyRouteModuleId/lazyRouteModuleIdPlugin.mjs +1 -2
- package/dist/services/vite/plugins/middleware.mjs +4 -5
- package/dist/services/vite/plugins/polyfills.mjs +2 -3
- package/dist/services/vite/plugins/preloadPlugin/helpers/constants.mjs +1 -2
- package/dist/services/vite/plugins/preloadPlugin/helpers/convertWebpackToViteImport.mjs +1 -2
- package/dist/services/vite/plugins/preloadPlugin/helpers/getViteLoadableSpecifierName.mjs +1 -2
- package/dist/services/vite/plugins/preloadPlugin/helpers/getWebpackLoadableSpecifierName.mjs +1 -2
- package/dist/services/vite/plugins/preloadPlugin/helpers/injectModuleID.mjs +1 -2
- package/dist/services/vite/plugins/preloadPlugin/helpers/rewriteWebpackLoadableImports.mjs +1 -2
- package/dist/services/vite/plugins/preloadPlugin/preloadPlugin.mjs +2 -3
- package/dist/services/vite/plugins/setNoExternal.mjs +2 -3
- package/dist/services/vite/plugins/ssr.mjs +10 -8
- package/dist/services/vite/plugins/ssrCss/collect.mjs +1 -2
- package/dist/services/vite/plugins/ssrCss/constants.mjs +1 -2
- package/dist/services/vite/plugins/ssrCss/plugin.mjs +2 -3
- package/dist/services/vite/plugins/static.mjs +8 -6
- package/dist/services/vite/plugins/stripServerConfig.mjs +1 -2
- package/dist/services/vite/plugins/telemetry.mjs +2 -3
- package/dist/services/vite/plugins/telemetryClients.mjs +2 -3
- package/dist/services/vite/plugins/telemetryEvents.mjs +1 -2
- package/dist/services/vite/skuPlugin.mjs +1 -2
- package/dist/services/vite/ssr/abortReason.mjs +1 -2
- package/dist/services/vite/ssr/bindCommit.mjs +1 -2
- package/dist/services/vite/ssr/bootstrap.mjs +1 -2
- package/dist/services/vite/ssr/build.mjs +8 -6
- package/dist/services/vite/ssr/buildSiteRouteTrees.mjs +1 -2
- package/dist/services/vite/ssr/buildSiteStaticHandlers.mjs +1 -2
- package/dist/services/vite/ssr/clientManifestPath.mjs +3 -4
- package/dist/services/vite/ssr/collectRouteHeaders.mjs +1 -2
- package/dist/services/vite/ssr/createDevSsrServer.mjs +3 -4
- package/dist/services/vite/ssr/createDocumentAttempt.mjs +1 -2
- package/dist/services/vite/ssr/createHtmlRenderMiddleware.mjs +2 -3
- package/dist/services/vite/ssr/createInsertHtmlTransform.mjs +1 -2
- package/dist/services/vite/ssr/createSsrRequestContextStore.mjs +1 -2
- package/dist/services/vite/ssr/createWebRequest.mjs +1 -2
- package/dist/services/vite/ssr/csp.mjs +1 -2
- package/dist/services/vite/ssr/defineEntry.d.mts +0 -2
- package/dist/services/vite/ssr/defineEntry.mjs +1 -2
- package/dist/services/vite/ssr/documentAssets.d.mts +0 -2
- package/dist/services/vite/ssr/documentAssets.mjs +1 -2
- package/dist/services/vite/ssr/entryTypeExtractors.d.mts +0 -2
- package/dist/services/vite/ssr/getModuleIds.mjs +1 -2
- package/dist/services/vite/ssr/getStaticContextFromError.mjs +1 -2
- package/dist/services/vite/ssr/insertHtml.d.mts +0 -2
- package/dist/services/vite/ssr/insertHtml.mjs +1 -2
- package/dist/services/vite/ssr/installSsrRequestContextStorage.mjs +1 -2
- package/dist/services/vite/ssr/listen.mjs +1 -2
- package/dist/services/vite/ssr/normaliseClientContext.mjs +1 -2
- package/dist/services/vite/ssr/preloadRoute.d.mts +0 -2
- package/dist/services/vite/ssr/preloadRoute.mjs +1 -2
- package/dist/services/vite/ssr/readRoutesEntry.mjs +1 -2
- package/dist/services/vite/ssr/render.mjs +2 -3
- package/dist/services/vite/ssr/requestContext.d.mts +0 -2
- package/dist/services/vite/ssr/requestContext.mjs +1 -2
- package/dist/services/vite/ssr/resolveAssets.d.mts +0 -2
- package/dist/services/vite/ssr/resolveAssets.mjs +2 -3
- package/dist/services/vite/ssr/resolveConfigSiteNames.mjs +1 -2
- package/dist/services/vite/ssr/selectForSite.mjs +1 -2
- package/dist/services/vite/ssr/sendResponse.mjs +1 -2
- package/dist/services/vite/ssr/skuContext.d.mts +0 -2
- package/dist/services/vite/ssr/skuContext.mjs +1 -2
- package/dist/services/vite/ssr/ssrRequestContextMiddleware.mjs +1 -2
- package/dist/services/vite/ssr/ssrServerShared.mjs +0 -1
- package/dist/services/vite/ssr/start.mjs +1 -2
- package/dist/services/vite/ssr/startProductionSsrServer.mjs +2 -3
- package/dist/services/vite/ssr/streamDocument.mjs +1 -2
- package/dist/services/vite/ssr/types.d.mts +1 -3
- package/dist/services/vite/ssr/wrapPipeWithInsertHtml.mjs +1 -2
- package/dist/services/vite/static/build.mjs +18 -6
- package/dist/services/vite/static/start.mjs +2 -3
- package/dist/services/vocab/config.mjs +1 -2
- package/dist/services/vocab/runVocab.mjs +1 -2
- package/dist/services/webpack/config/cache.mjs +1 -2
- package/dist/services/webpack/config/plugins/bundleAnalyzer.mjs +1 -2
- package/dist/services/webpack/config/plugins/createHtmlRenderPlugin.mjs +8 -4
- package/dist/services/webpack/config/plugins/metricsPlugin.mjs +1 -2
- package/dist/services/webpack/config/plugins/validateOptions.d.mts +0 -2
- package/dist/services/webpack/config/plugins/validateOptions.mjs +1 -2
- package/dist/services/webpack/config/resolveModules.mjs +1 -2
- package/dist/services/webpack/config/sourceMaps.mjs +1 -2
- package/dist/services/webpack/config/statsConfig.mjs +1 -2
- package/dist/services/webpack/config/utils/index.mjs +1 -2
- package/dist/services/webpack/config/utils/loaders.mjs +1 -2
- package/dist/services/webpack/config/utils/resolvePackage.mjs +1 -2
- package/dist/services/webpack/config/webpack.config.mjs +12 -8
- package/dist/services/webpack/config/webpack.config.ssr.mjs +15 -11
- package/dist/services/webpack/entry/csp.mjs +1 -2
- package/dist/services/webpack/entry/makeExtractor.mjs +1 -2
- package/dist/services/webpack/entry/render/render-to-string.mjs +1 -2
- package/dist/services/webpack/entry/server/server.mjs +2 -3
- package/dist/services/webpack/runWebpack.mjs +1 -2
- package/dist/types/types.d.mts +18 -3
- package/dist/utils/allocatePort.mjs +1 -2
- package/dist/utils/buildFileUtils.mjs +17 -7
- package/dist/utils/certificate.mjs +2 -3
- package/dist/utils/configure.mjs +3 -4
- package/dist/utils/configureApp.mjs +3 -4
- package/dist/utils/constants/clientContextKey.mjs +1 -2
- package/dist/utils/copyDirContents.mjs +1 -2
- package/dist/utils/coverageFolder.mjs +3 -0
- package/dist/utils/createServer.mjs +1 -2
- package/dist/utils/csp.mjs +1 -2
- package/dist/utils/debug.mjs +1 -2
- package/dist/utils/detectUnnecessaryPolyfillsFromConfig.mjs +1 -2
- package/dist/utils/detectUnnecessaryPolyfillsFromDependencies.mjs +1 -2
- package/dist/utils/distDirectories.mjs +17 -0
- package/dist/utils/error-guards.mjs +1 -2
- package/dist/utils/execAsync.mjs +1 -2
- package/dist/utils/exists.mjs +1 -2
- package/dist/utils/formatMs.mjs +1 -2
- package/dist/utils/isCI.mjs +1 -2
- package/dist/utils/language-utils.mjs +6 -5
- package/dist/utils/pathAliasImports.mjs +2 -3
- package/dist/utils/polyfillDetector.mjs +1 -2
- package/dist/utils/polyfillRegistry.mjs +1 -2
- package/dist/utils/polyfillWarnings.mjs +3 -4
- package/dist/utils/resolvePolyfills.mjs +1 -2
- package/dist/utils/routeMatcher.mjs +1 -2
- package/dist/utils/runBin.mjs +1 -2
- package/dist/utils/runLintChecks.mjs +1 -2
- package/dist/utils/suggestScript.mjs +1 -2
- package/dist/utils/validatePeerDeps.mjs +1 -2
- package/dist/utils/validateSkuConfigFormat.mjs +1 -2
- package/dist/utils/warnOnLegacyReact.mjs +1 -2
- package/dist/vite/prerender-worker.mjs +8 -6
- package/dist/webpack/client.mjs +1 -2
- package/dist/webpack/library-render.d.mts +0 -2
- package/dist/webpack/library-render.mjs +1 -2
- package/dist/webpack/render.d.mts +0 -2
- package/dist/webpack/render.mjs +3 -4
- package/dist/webpack/server.mjs +1 -2
- package/dist/webpack-plugin.d.mts +0 -2
- package/dist/webpack-plugin.mjs +3 -4
- package/package.json +2 -2
- package/dist/node_modules/.pnpm/ansi-regex@6.2.2/node_modules/ansi-regex/index.mjs +0 -6
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import telemetry_default from "../../telemetry/index.mjs";
|
|
2
|
+
import { metricsMeasurers } from "../../telemetry/metricsMeasurers.mjs";
|
|
2
3
|
import { makePluginName } from "../helpers/makePluginName.mjs";
|
|
3
4
|
import { SKU_INITIAL_PAGE_LOAD_EVENT, SKU_VITE_HMR_EVENT } from "./telemetryEvents.mjs";
|
|
4
|
-
import { metricsMeasurers } from "../../telemetry/metricsMeasurers.mjs";
|
|
5
5
|
import { createDebug } from "obug";
|
|
6
6
|
import dedent from "dedent";
|
|
7
|
-
|
|
7
|
+
// src/services/vite/plugins/telemetry.ts
|
|
8
8
|
const log = createDebug("sku:metrics");
|
|
9
9
|
const telemetryPlugin = ({ target, type, injectHtml = true }) => {
|
|
10
10
|
const hmrUpdateTimestamps = /* @__PURE__ */ new Set();
|
|
@@ -88,5 +88,4 @@ const handleCustomHmrEvent = (timestamps, tags) => (data) => {
|
|
|
88
88
|
telemetry_default.timing("start.rebuild", durationInMs, tags);
|
|
89
89
|
}
|
|
90
90
|
};
|
|
91
|
-
//#endregion
|
|
92
91
|
export { telemetryPlugin };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SKU_INITIAL_PAGE_LOAD_EVENT, SKU_VITE_HMR_EVENT } from "./telemetryEvents.mjs";
|
|
2
|
-
|
|
2
|
+
// src/services/vite/plugins/telemetryClients.ts
|
|
3
3
|
/**
|
|
4
4
|
* Browser-side telemetry clients for Vite start.
|
|
5
5
|
* Imported by the SSR start-only client entry (not via transformIndexHtml).
|
|
@@ -29,5 +29,4 @@ const installSkuHmrTelemetry = () => {
|
|
|
29
29
|
};
|
|
30
30
|
installSkuPageLoadTelemetry();
|
|
31
31
|
installSkuHmrTelemetry();
|
|
32
|
-
|
|
33
|
-
export { installSkuHmrTelemetry, installSkuPageLoadTelemetry };
|
|
32
|
+
export {};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
// src/services/vite/plugins/telemetryEvents.ts
|
|
2
2
|
/** Event names shared by telemetryPlugin WS handlers and browser clients. */
|
|
3
3
|
const SKU_INITIAL_PAGE_LOAD_EVENT = "sku:initialPageLoad";
|
|
4
4
|
const SKU_VITE_HMR_EVENT = "sku:vite-hmr";
|
|
5
|
-
//#endregion
|
|
6
5
|
export { SKU_INITIAL_PAGE_LOAD_EVENT, SKU_VITE_HMR_EVENT };
|
|
@@ -11,7 +11,7 @@ import { bundleAnalyzerPlugin } from "./plugins/bundleAnalyzer.mjs";
|
|
|
11
11
|
import { stripServerConfigPlugin } from "./plugins/stripServerConfig.mjs";
|
|
12
12
|
import { ssrPlugins } from "./plugins/ssr.mjs";
|
|
13
13
|
import { staticPlugins } from "./plugins/static.mjs";
|
|
14
|
-
|
|
14
|
+
// src/services/vite/skuPlugin.ts
|
|
15
15
|
/**
|
|
16
16
|
* All sku related functionality and customization as a vite plugin.
|
|
17
17
|
*/
|
|
@@ -39,5 +39,4 @@ const skuPlugin = ({ skuContext, environment }) => {
|
|
|
39
39
|
stripServerConfigPlugin({ apply: Boolean(skuContext.commandName?.startsWith("build")) })
|
|
40
40
|
];
|
|
41
41
|
};
|
|
42
|
-
//#endregion
|
|
43
42
|
export { skuPlugin };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { wrapPipeWithInsertHtml } from "./wrapPipeWithInsertHtml.mjs";
|
|
2
|
-
|
|
2
|
+
// src/services/vite/ssr/bindCommit.ts
|
|
3
3
|
const bindCommit = ({ pipe, abort, queue }) => {
|
|
4
4
|
const run = queue ? wrapPipeWithInsertHtml(pipe, queue, abort) : pipe;
|
|
5
5
|
return (destination, options = {}) => {
|
|
@@ -28,5 +28,4 @@ const bindCommit = ({ pipe, abort, queue }) => {
|
|
|
28
28
|
run(destination);
|
|
29
29
|
};
|
|
30
30
|
};
|
|
31
|
-
//#endregion
|
|
32
31
|
export { bindCommit };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import serializeJavascript from "serialize-javascript";
|
|
2
2
|
import { isRouteErrorResponse } from "react-router";
|
|
3
|
-
|
|
3
|
+
// src/services/vite/ssr/bootstrap.ts
|
|
4
4
|
const escapeScriptValue = (value) => serializeJavascript(value, { isJSON: true });
|
|
5
5
|
const replacePromises = (value) => {
|
|
6
6
|
if (value instanceof Promise) return;
|
|
@@ -40,5 +40,4 @@ const buildBootstrapScriptContent = (assets, context, { development = false, cli
|
|
|
40
40
|
`window.__staticRouterHydrationData=${escapeScriptValue(hydrationData)}`
|
|
41
41
|
].join(";");
|
|
42
42
|
};
|
|
43
|
-
//#endregion
|
|
44
43
|
export { buildBootstrapScriptContent };
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import { createOutDir } from "../helpers/bundleConfig.mjs";
|
|
2
|
-
import exists from "../../../utils/exists.mjs";
|
|
3
1
|
import { cleanTargetDirectory } from "../../../utils/buildFileUtils.mjs";
|
|
4
|
-
import
|
|
2
|
+
import exists from "../../../utils/exists.mjs";
|
|
3
|
+
import { createOutDir } from "../helpers/bundleConfig.mjs";
|
|
5
4
|
import { createConfig } from "../helpers/config/createConfig.mjs";
|
|
5
|
+
import { moveClientManifestToServer } from "./clientManifestPath.mjs";
|
|
6
6
|
import { createBuilder } from "vite";
|
|
7
|
-
|
|
7
|
+
// src/services/vite/ssr/build.ts
|
|
8
8
|
const buildSsr = async (skuContext) => {
|
|
9
9
|
if (await exists(skuContext.paths.target)) await cleanTargetDirectory(skuContext.paths.target);
|
|
10
10
|
await (await createBuilder(createConfig(skuContext))).buildApp();
|
|
11
|
-
await moveClientManifestToServer(createOutDir(
|
|
11
|
+
await moveClientManifestToServer(createOutDir({
|
|
12
|
+
targetPath: skuContext.paths.target,
|
|
13
|
+
useSubfolders: true
|
|
14
|
+
}));
|
|
12
15
|
};
|
|
13
|
-
//#endregion
|
|
14
16
|
export { buildSsr };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/services/vite/ssr/buildSiteRouteTrees.ts
|
|
2
2
|
function assertMapRoutePathReturn(value, path, site) {
|
|
3
3
|
if (!Array.isArray(value) || value.some((entry) => typeof entry !== "string")) throw new Error(`SSR routesEntry mapRoutePath must return string[]. Invalid return for path '${path}' on site '${site}'.`);
|
|
4
4
|
}
|
|
@@ -53,5 +53,4 @@ const buildRoutesForSite = (routes, site, mapRoutePath, parentSegments = []) =>
|
|
|
53
53
|
* module init and nothing here touches the per-request path.
|
|
54
54
|
*/
|
|
55
55
|
const buildSiteRouteTrees = (routes, siteNames, mapRoutePath) => Object.fromEntries(siteNames.map((name) => [name, buildRoutesForSite(routes, name, mapRoutePath)]));
|
|
56
|
-
//#endregion
|
|
57
56
|
export { buildRoutesForSite, buildSiteRouteTrees };
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { createStaticHandler } from "react-router";
|
|
2
|
-
|
|
2
|
+
// src/services/vite/ssr/buildSiteStaticHandlers.ts
|
|
3
3
|
/**
|
|
4
4
|
* Create one React Router static handler per pre-built site tree at module init.
|
|
5
5
|
*/
|
|
6
6
|
const buildSiteStaticHandlers = (siteRouteTrees, instrumentations) => Object.fromEntries(Object.entries(siteRouteTrees).map(([site, routes]) => [site, instrumentations === void 0 ? createStaticHandler(routes) : createStaticHandler(routes, { instrumentations })]));
|
|
7
|
-
//#endregion
|
|
8
7
|
export { buildSiteStaticHandlers };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { rename } from "node:fs/promises";
|
|
3
|
-
|
|
3
|
+
// src/services/vite/ssr/clientManifestPath.ts
|
|
4
4
|
/**
|
|
5
5
|
* Vite client manifest filename (relative to client/server outDirs). Production
|
|
6
6
|
* loads it from server/.
|
|
@@ -10,8 +10,7 @@ const CLIENT_MANIFEST_RELATIVE_PATH = "manifest.json";
|
|
|
10
10
|
* Move the Vite client manifest into server/ so production can
|
|
11
11
|
* resolve Document assets without sibling client/
|
|
12
12
|
*/
|
|
13
|
-
const moveClientManifestToServer = async ({
|
|
14
|
-
await rename(path.join(
|
|
13
|
+
const moveClientManifestToServer = async ({ distClient, distServer }) => {
|
|
14
|
+
await rename(path.join(distClient, CLIENT_MANIFEST_RELATIVE_PATH), path.join(distServer, CLIENT_MANIFEST_RELATIVE_PATH));
|
|
15
15
|
};
|
|
16
|
-
//#endregion
|
|
17
16
|
export { CLIENT_MANIFEST_RELATIVE_PATH, moveClientManifestToServer };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/services/vite/ssr/collectRouteHeaders.ts
|
|
2
2
|
/** Merge RR loader/action headers from all matches (append for Set-Cookie). */
|
|
3
3
|
const collectRouteHeaders = (context) => {
|
|
4
4
|
const headers = new Headers();
|
|
@@ -16,5 +16,4 @@ const collectRouteHeaders = (context) => {
|
|
|
16
16
|
}
|
|
17
17
|
return headers;
|
|
18
18
|
};
|
|
19
|
-
//#endregion
|
|
20
19
|
export { collectRouteHeaders };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getAppHosts } from "../../../context/hosts.mjs";
|
|
2
|
-
import { SSR_CSS_VIRTUAL_HREF } from "../plugins/ssrCss/constants.mjs";
|
|
3
|
-
import { metricsMeasurers } from "../../telemetry/metricsMeasurers.mjs";
|
|
4
2
|
import { createConfig } from "../helpers/config/createConfig.mjs";
|
|
5
3
|
import createServer$1 from "../../../utils/createServer.mjs";
|
|
4
|
+
import { metricsMeasurers } from "../../telemetry/metricsMeasurers.mjs";
|
|
5
|
+
import { SSR_CSS_VIRTUAL_HREF } from "../plugins/ssrCss/constants.mjs";
|
|
6
6
|
import { createSsrRequestContextMiddleware } from "./ssrRequestContextMiddleware.mjs";
|
|
7
7
|
import { createHtmlRenderMiddleware } from "./createHtmlRenderMiddleware.mjs";
|
|
8
8
|
import { mountConsumerMiddleware, resolveBoundPort } from "./listen.mjs";
|
|
@@ -11,7 +11,7 @@ import { createRequire } from "node:module";
|
|
|
11
11
|
import { createDebug } from "obug";
|
|
12
12
|
import { createServer } from "vite";
|
|
13
13
|
import express from "express";
|
|
14
|
-
|
|
14
|
+
// src/services/vite/ssr/createDevSsrServer.ts
|
|
15
15
|
const log = createDebug("sku:vite-ssr:dev-server");
|
|
16
16
|
const require = createRequire(import.meta.url);
|
|
17
17
|
const mountStartSsrMiddleware = ({ app, viteMiddlewares, loadDevServerMiddleware, consumerMiddleware, htmlMiddleware }) => {
|
|
@@ -102,5 +102,4 @@ const createDevSsrServer = async ({ skuContext, environment }) => {
|
|
|
102
102
|
vite
|
|
103
103
|
};
|
|
104
104
|
};
|
|
105
|
-
//#endregion
|
|
106
105
|
export { createDevSsrServer, mountStartSsrMiddleware };
|
|
@@ -7,7 +7,7 @@ import { StaticRouterProvider, createStaticRouter } from "react-router";
|
|
|
7
7
|
import { SkuProvider } from "#runtime/skuContext";
|
|
8
8
|
import { DocumentAssetLinks } from "#runtime/documentAssets";
|
|
9
9
|
import { InsertHtmlProvider, createInsertHtmlQueue } from "#runtime/insertHtml";
|
|
10
|
-
|
|
10
|
+
// src/services/vite/ssr/createDocumentAttempt.tsx
|
|
11
11
|
const createDocumentAttempt = ({ renderContext, dataRoutes, documentAssets, assets, site, clientContext, reactContext, routeHeaders, waitForAll, nonce, options }) => {
|
|
12
12
|
const { promise: ready, resolve, reject } = Promise.withResolvers();
|
|
13
13
|
let phase = "open";
|
|
@@ -92,5 +92,4 @@ const createDocumentAttempt = ({ renderContext, dataRoutes, documentAssets, asse
|
|
|
92
92
|
abort
|
|
93
93
|
};
|
|
94
94
|
};
|
|
95
|
-
//#endregion
|
|
96
95
|
export { createDocumentAttempt };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { buildCspHeaders } from "./csp.mjs";
|
|
2
|
-
import { createSsrRequestContextStore } from "./createSsrRequestContextStore.mjs";
|
|
3
2
|
import { getRequestContextStore } from "./ssrRequestContextMiddleware.mjs";
|
|
3
|
+
import { createSsrRequestContextStore } from "./createSsrRequestContextStore.mjs";
|
|
4
4
|
import { createWebRequest } from "./createWebRequest.mjs";
|
|
5
5
|
import { sendResponse } from "./sendResponse.mjs";
|
|
6
|
-
|
|
6
|
+
// src/services/vite/ssr/createHtmlRenderMiddleware.ts
|
|
7
7
|
const createHtmlRenderMiddleware = ({ render, assets, manifest, cspEnabled, cspExtraScriptSrcHosts, cspReportTo, cspReportOnlyEnabled, cspReportOnlyExtraScriptSrcHosts, cspReportOnlyReportTo, development = false, onRenderError }) => async (req, res, next) => {
|
|
8
8
|
const controller = new AbortController();
|
|
9
9
|
const onClose = () => {
|
|
@@ -57,5 +57,4 @@ const createHtmlRenderMiddleware = ({ render, assets, manifest, cspEnabled, cspE
|
|
|
57
57
|
next(error);
|
|
58
58
|
}
|
|
59
59
|
};
|
|
60
|
-
//#endregion
|
|
61
60
|
export { createHtmlRenderMiddleware };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Transform } from "node:stream";
|
|
2
2
|
import { renderToStaticMarkup } from "react-dom/server";
|
|
3
3
|
import { Fragment, createElement } from "react";
|
|
4
|
-
|
|
4
|
+
// src/services/vite/ssr/createInsertHtmlTransform.ts
|
|
5
5
|
const HEAD_END = "</head>";
|
|
6
6
|
const renderQueuedMarkup = (callbacks) => {
|
|
7
7
|
if (callbacks.length === 0) return "";
|
|
@@ -63,5 +63,4 @@ const createInsertHtmlTransform = (queue) => {
|
|
|
63
63
|
}
|
|
64
64
|
});
|
|
65
65
|
};
|
|
66
|
-
//#endregion
|
|
67
66
|
export { createInsertHtmlTransform };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createCspNonce } from "./csp.mjs";
|
|
2
2
|
import "./installSsrRequestContextStorage.mjs";
|
|
3
|
-
|
|
3
|
+
// src/services/vite/ssr/createSsrRequestContextStore.ts
|
|
4
4
|
const createSsrRequestContextStore = (initialNonce) => {
|
|
5
5
|
let nonce = initialNonce;
|
|
6
6
|
return {
|
|
@@ -11,5 +11,4 @@ const createSsrRequestContextStore = (initialNonce) => {
|
|
|
11
11
|
peekCspNonce: () => nonce
|
|
12
12
|
};
|
|
13
13
|
};
|
|
14
|
-
//#endregion
|
|
15
14
|
export { createSsrRequestContextStore };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/services/vite/ssr/createWebRequest.ts
|
|
2
2
|
const toFetchHeaders = (headers) => {
|
|
3
3
|
const result = new Headers();
|
|
4
4
|
for (const [name, value] of Object.entries(headers)) {
|
|
@@ -55,5 +55,4 @@ const createWebRequest = (req, signal) => {
|
|
|
55
55
|
...bodyInit
|
|
56
56
|
});
|
|
57
57
|
};
|
|
58
|
-
//#endregion
|
|
59
58
|
export { createWebRequest };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { stringifyReportingEndpoints } from "../../../utils/csp.mjs";
|
|
2
2
|
import { createHash, randomBytes } from "node:crypto";
|
|
3
|
-
|
|
3
|
+
// src/services/vite/ssr/csp.ts
|
|
4
4
|
const createCspNonce = () => process.env.SKU_CSP_NONCE ?? randomBytes(16).toString("base64url");
|
|
5
5
|
const hashScript = (body) => `'sha256-${createHash("sha256").update(body, "utf8").digest("base64")}'`;
|
|
6
6
|
const buildContentSecurityPolicy = ({ inlineScripts, nonce, extraHosts = [], development = false, reportTo }) => {
|
|
@@ -50,5 +50,4 @@ const buildCspHeaders = ({ enabled, reportOnlyEnabled, inlineScripts, nonce, ext
|
|
|
50
50
|
if (reportingEndpoints.length) headers["Reporting-Endpoints"] = stringifyReportingEndpoints(reportingEndpoints);
|
|
51
51
|
return headers;
|
|
52
52
|
};
|
|
53
|
-
//#endregion
|
|
54
53
|
export { buildContentSecurityPolicy, buildCspHeaders, createCspNonce };
|
|
@@ -2,7 +2,6 @@ import { ClientContextOf, SiteOf } from "./entryTypeExtractors.mjs";
|
|
|
2
2
|
import { JsonValue, SkuMiddleware, SkuOnListen } from "./types.mjs";
|
|
3
3
|
import { ClientInstrumentation, RouterContextProvider, ServerInstrumentation } from "react-router";
|
|
4
4
|
import { Request as Request$1 } from "express";
|
|
5
|
-
//#region src/services/vite/ssr/defineEntry.d.ts
|
|
6
5
|
type ServerEntryBody<Site extends string = string, Language extends string | undefined = string | undefined, ClientContext extends JsonValue | undefined = undefined, ReactContext = undefined> = {
|
|
7
6
|
/** Resolves the active site name for this request */
|
|
8
7
|
getSite?: (args: {
|
|
@@ -79,5 +78,4 @@ type NoServerEntry = {
|
|
|
79
78
|
*/
|
|
80
79
|
declare function defineClientEntry<ServerEntry>(): <ReactContext = undefined>(entry: ClientEntryBody<ServerEntry, ReactContext>) => ClientEntryBody<ServerEntry, ReactContext>;
|
|
81
80
|
declare function defineClientEntry<ReactContext = undefined>(entry: ClientEntryBody<NoServerEntry, ReactContext>): ClientEntryBody<NoServerEntry, ReactContext>;
|
|
82
|
-
//#endregion
|
|
83
81
|
export { ServerEntryBody, defineClientEntry, defineServerEntry };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/services/vite/ssr/defineEntry.ts
|
|
2
2
|
/**
|
|
3
3
|
* Zero-runtime identity helper — creates a TypeScript inference scope so
|
|
4
4
|
* getter returns type later sibling args.
|
|
@@ -10,5 +10,4 @@ function defineClientEntry(entry) {
|
|
|
10
10
|
if (entry === void 0) return (innerEntry) => innerEntry;
|
|
11
11
|
return entry;
|
|
12
12
|
}
|
|
13
|
-
//#endregion
|
|
14
13
|
export { defineClientEntry, defineServerEntry };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { DocumentAssets } from "./types.mjs";
|
|
2
|
-
//#region src/services/vite/ssr/documentAssets.d.ts
|
|
3
2
|
declare const SKU_STYLESHEET_PRECEDENCE = "sku";
|
|
4
3
|
/**
|
|
5
4
|
* Sku-owned CSS and modulepreload links. Mounted beside the router so React
|
|
@@ -8,5 +7,4 @@ declare const SKU_STYLESHEET_PRECEDENCE = "sku";
|
|
|
8
7
|
declare const DocumentAssetLinks: ({ assets }: {
|
|
9
8
|
assets: DocumentAssets;
|
|
10
9
|
}) => import("react").JSX.Element;
|
|
11
|
-
//#endregion
|
|
12
10
|
export { DocumentAssetLinks, SKU_STYLESHEET_PRECEDENCE };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
|
|
2
|
+
// src/services/vite/ssr/documentAssets.tsx
|
|
3
3
|
const SKU_STYLESHEET_PRECEDENCE = "sku";
|
|
4
4
|
/**
|
|
5
5
|
* Sku-owned CSS and modulepreload links. Mounted beside the router so React
|
|
@@ -14,5 +14,4 @@ const DocumentAssetLinks = ({ assets }) => /* @__PURE__ */ jsxs(Fragment, { chil
|
|
|
14
14
|
precedence: "sku",
|
|
15
15
|
...href === assets.ssrCssHref ? { "data-ssr-css": true } : {}
|
|
16
16
|
}, href))] });
|
|
17
|
-
//#endregion
|
|
18
17
|
export { DocumentAssetLinks, SKU_STYLESHEET_PRECEDENCE };
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/services/vite/ssr/entryTypeExtractors.d.ts
|
|
2
1
|
/**
|
|
3
2
|
* Entry objects from `define*Entry` keep getters optional on the type, so
|
|
4
3
|
* extract via `keyof` + `NonNullable` rather than `extends { getX: … }`.
|
|
@@ -7,5 +6,4 @@
|
|
|
7
6
|
type SiteOf<ServerEntry> = 'getSite' extends keyof ServerEntry ? NonNullable<ServerEntry['getSite']> extends ((...args: never[]) => infer S) ? S extends string ? S : string : string : string;
|
|
8
7
|
type ClientContextOf<ServerEntry> = 'getClientContext' extends keyof ServerEntry ? NonNullable<ServerEntry['getClientContext']> extends ((...args: never[]) => infer C) ? Awaited<C> : undefined : undefined;
|
|
9
8
|
type ReactContextOf<Entry> = 'getReactContext' extends keyof Entry ? NonNullable<Entry['getReactContext']> extends ((...args: never[]) => infer R) ? Awaited<R> : undefined : undefined;
|
|
10
|
-
//#endregion
|
|
11
9
|
export { ClientContextOf, ReactContextOf, SiteOf };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getChunkName } from "@vocab/vite/chunks";
|
|
2
|
-
|
|
2
|
+
// src/services/vite/ssr/getModuleIds.ts
|
|
3
3
|
const getModuleIds = (matches, { development, requestLanguage }) => {
|
|
4
4
|
const moduleIds = matches.flatMap(({ route }) => {
|
|
5
5
|
const moduleId = route.handle?.moduleId;
|
|
@@ -9,5 +9,4 @@ const getModuleIds = (matches, { development, requestLanguage }) => {
|
|
|
9
9
|
if (requestLanguage) moduleIds.push(getChunkName(requestLanguage));
|
|
10
10
|
return moduleIds;
|
|
11
11
|
};
|
|
12
|
-
//#endregion
|
|
13
12
|
export { getModuleIds };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isRouteErrorResponse } from "react-router";
|
|
2
|
-
|
|
2
|
+
// src/services/vite/ssr/getStaticContextFromError.ts
|
|
3
3
|
/**
|
|
4
4
|
* Build a static render context that already carries a route error.
|
|
5
5
|
* Used after a Component or Suspense throw during the first SSR stream so a
|
|
@@ -15,5 +15,4 @@ const getStaticContextFromError = (routes, handlerContext, error) => {
|
|
|
15
15
|
errors: { [errorBoundaryId]: error }
|
|
16
16
|
};
|
|
17
17
|
};
|
|
18
|
-
//#endregion
|
|
19
18
|
export { getStaticContextFromError };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ReactNode } from "react";
|
|
2
|
-
//#region src/services/vite/ssr/insertHtml.d.ts
|
|
3
2
|
type InsertHtmlCallback = () => ReactNode;
|
|
4
3
|
type InsertHtml = (callback: InsertHtmlCallback) => void;
|
|
5
4
|
type InsertHtmlQueue = {
|
|
@@ -18,5 +17,4 @@ declare const InsertHtmlProvider: ({ insertHtml, children }: {
|
|
|
18
17
|
* wire this hook at module scope.
|
|
19
18
|
*/
|
|
20
19
|
declare const useInsertHtml: () => InsertHtml;
|
|
21
|
-
//#endregion
|
|
22
20
|
export { InsertHtml, InsertHtmlCallback, InsertHtmlProvider, InsertHtmlQueue, createInsertHtmlQueue, useInsertHtml };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { createContext, useContext } from "react";
|
|
3
|
-
|
|
3
|
+
// src/services/vite/ssr/insertHtml.tsx
|
|
4
4
|
const createInsertHtmlQueue = () => {
|
|
5
5
|
const queue = [];
|
|
6
6
|
return {
|
|
@@ -23,5 +23,4 @@ const noopInsertHtml = () => {};
|
|
|
23
23
|
* wire this hook at module scope.
|
|
24
24
|
*/
|
|
25
25
|
const useInsertHtml = () => useContext(InsertHtmlContext) ?? noopInsertHtml;
|
|
26
|
-
//#endregion
|
|
27
26
|
export { InsertHtmlProvider, createInsertHtmlQueue, useInsertHtml };
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { installSsrRequestContextStorage } from "#runtime/requestContext";
|
|
2
2
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
3
|
-
|
|
3
|
+
// src/services/vite/ssr/installSsrRequestContextStorage.ts
|
|
4
4
|
/**
|
|
5
5
|
* Side-effect import from SSR server entry points. Installs Node
|
|
6
6
|
* AsyncLocalStorage into the shared requestContext module without pulling
|
|
7
7
|
* `node:async_hooks` into the client bundle.
|
|
8
8
|
*/
|
|
9
9
|
installSsrRequestContextStorage(new AsyncLocalStorage());
|
|
10
|
-
//#endregion
|
|
11
10
|
export {};
|
|
@@ -2,7 +2,7 @@ import { createSsrRequestContextMiddleware } from "./ssrRequestContextMiddleware
|
|
|
2
2
|
import { createHtmlRenderMiddleware } from "./createHtmlRenderMiddleware.mjs";
|
|
3
3
|
import { createServer } from "node:http";
|
|
4
4
|
import express from "express";
|
|
5
|
-
|
|
5
|
+
// src/services/vite/ssr/listen.ts
|
|
6
6
|
/** Bound listen port from `httpServer.address()`, else the configured fallback. */
|
|
7
7
|
const resolveBoundPort = (httpServer, fallbackPort) => {
|
|
8
8
|
const address = httpServer.address();
|
|
@@ -54,5 +54,4 @@ const listen = async (options) => {
|
|
|
54
54
|
httpServer
|
|
55
55
|
};
|
|
56
56
|
};
|
|
57
|
-
//#endregion
|
|
58
57
|
export { listen, mountConsumerMiddleware, resolveBoundPort };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/services/vite/ssr/normaliseClientContext.ts
|
|
2
2
|
/**
|
|
3
3
|
* JSON-compatible walk of `getClientContext` after it resolves.
|
|
4
4
|
* Drops `undefined` object keys and coerces `undefined` array elements to `null`.
|
|
@@ -10,5 +10,4 @@ const normaliseClientContext = (clientContext) => {
|
|
|
10
10
|
if (clientContext === void 0) return;
|
|
11
11
|
return JSON.parse(JSON.stringify(clientContext));
|
|
12
12
|
};
|
|
13
|
-
//#endregion
|
|
14
13
|
export { normaliseClientContext };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { RouteObject, To } from "react-router";
|
|
2
|
-
//#region src/services/vite/ssr/preloadRoute.d.ts
|
|
3
2
|
declare const registerSiteRouteTree: (routes: RouteObject[]) => void;
|
|
4
3
|
/** Warm every lazy module a href matches within `routes`. */
|
|
5
4
|
declare const preloadMatchedRoutes: (routes: RouteObject[], href: string) => void;
|
|
@@ -13,5 +12,4 @@ declare const preloadHref: (href: string, warn?: (message: string) => void) => v
|
|
|
13
12
|
* site never warms. Outside SSR (and during server render) it is a no-op.
|
|
14
13
|
*/
|
|
15
14
|
declare const usePreloadRoute: (to: To) => (() => void);
|
|
16
|
-
//#endregion
|
|
17
15
|
export { preloadHref, preloadMatchedRoutes, registerSiteRouteTree, usePreloadRoute };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { matchRoutes, useHref } from "react-router";
|
|
2
|
-
|
|
2
|
+
// src/services/vite/ssr/preloadRoute.ts
|
|
3
3
|
let siteRouteTree = null;
|
|
4
4
|
let warnedWithoutRouteTree = false;
|
|
5
5
|
const registerSiteRouteTree = (routes) => {
|
|
@@ -41,5 +41,4 @@ const usePreloadRoute = (to) => {
|
|
|
41
41
|
const href = useHref(to);
|
|
42
42
|
return () => preloadHref(href);
|
|
43
43
|
};
|
|
44
|
-
//#endregion
|
|
45
44
|
export { preloadHref, preloadMatchedRoutes, registerSiteRouteTree, usePreloadRoute };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/services/vite/ssr/readRoutesEntry.ts
|
|
2
2
|
const readRoutesEntry = (mod) => {
|
|
3
3
|
const { routes, mapRoutePath } = mod;
|
|
4
4
|
if (!Array.isArray(routes)) throw new Error(`routesEntry must export named 'routes' as an array. Missing or non-array 'routes' export.`);
|
|
@@ -8,5 +8,4 @@ const readRoutesEntry = (mod) => {
|
|
|
8
8
|
mapRoutePath
|
|
9
9
|
};
|
|
10
10
|
};
|
|
11
|
-
//#endregion
|
|
12
11
|
export { readRoutesEntry };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { selectForSite } from "./selectForSite.mjs";
|
|
2
1
|
import { abortReason } from "./abortReason.mjs";
|
|
3
2
|
import { collectRouteHeaders } from "./collectRouteHeaders.mjs";
|
|
4
3
|
import { createSsrRequestContextStore } from "./createSsrRequestContextStore.mjs";
|
|
5
4
|
import { getModuleIds } from "./getModuleIds.mjs";
|
|
6
5
|
import { resolveAssets, warnUnknownModuleIdsWithoutManifest } from "./resolveAssets.mjs";
|
|
7
6
|
import { normaliseClientContext } from "./normaliseClientContext.mjs";
|
|
7
|
+
import { selectForSite } from "./selectForSite.mjs";
|
|
8
8
|
import { streamDocument } from "./streamDocument.mjs";
|
|
9
9
|
import { getCspNonce, runWithSsrRequestContext } from "#runtime/requestContext";
|
|
10
|
-
|
|
10
|
+
// src/services/vite/ssr/render.tsx
|
|
11
11
|
const renderDocument = async ({ siteStaticHandlers, request, req, assets, getSite, getLanguage, getClientContext, getReactContext, options = {}, renderManifest, getRouterContext }) => {
|
|
12
12
|
if (options.signal?.aborted) throw abortReason(options.signal);
|
|
13
13
|
const site = getSite ? getSite({ req }) : Object.keys(siteStaticHandlers)[0];
|
|
@@ -74,5 +74,4 @@ const render = ({ options = {}, ...args }) => {
|
|
|
74
74
|
}
|
|
75
75
|
}));
|
|
76
76
|
};
|
|
77
|
-
//#endregion
|
|
78
77
|
export { render };
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/services/vite/ssr/requestContext.d.ts
|
|
2
1
|
type SsrRequestContextStore = {
|
|
3
2
|
/** Mint at most one nonce for this request, then reuse it. */
|
|
4
3
|
getCspNonce: () => string;
|
|
@@ -27,5 +26,4 @@ declare const getCspNonce: () => string | undefined;
|
|
|
27
26
|
/** Returns the request nonce only if one was already requested. */
|
|
28
27
|
declare const peekCspNonce: () => string | undefined;
|
|
29
28
|
declare const runWithSsrRequestContext: <T>(context: SsrRequestContextStore, fn: () => T) => T;
|
|
30
|
-
//#endregion
|
|
31
29
|
export { SsrRequestContextStore, getCspNonce, installSsrRequestContextStorage, peekCspNonce, runWithSsrRequestContext };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/services/vite/ssr/requestContext.ts
|
|
2
2
|
let storage = {
|
|
3
3
|
getStore: () => void 0,
|
|
4
4
|
run: (_context, fn) => fn()
|
|
@@ -23,5 +23,4 @@ const getCspNonce = () => storage.getStore()?.getCspNonce();
|
|
|
23
23
|
/** Returns the request nonce only if one was already requested. */
|
|
24
24
|
const peekCspNonce = () => storage.getStore()?.peekCspNonce();
|
|
25
25
|
const runWithSsrRequestContext = (context, fn) => storage.run(context, fn);
|
|
26
|
-
//#endregion
|
|
27
26
|
export { getCspNonce, installSsrRequestContextStorage, peekCspNonce, runWithSsrRequestContext };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { posix, resolve } from "node:path";
|
|
2
2
|
import { existsSync } from "node:fs";
|
|
3
|
-
|
|
3
|
+
// src/services/vite/ssr/resolveAssets.ts
|
|
4
4
|
/** Join a URL `publicPath` prefix with a manifest file. Always posix; never OS paths. */
|
|
5
5
|
const joinPublicPath = (publicPath, file) => posix.join(publicPath, file);
|
|
6
6
|
/** Source-path shaped ids (cwd-relative), not vocab chunk names like `en-translations`. */
|
|
@@ -53,5 +53,4 @@ const resolveAssets = ({ manifest, publicPath, entry, moduleIds = [], developmen
|
|
|
53
53
|
modulePreloads: [...modulePreloads]
|
|
54
54
|
};
|
|
55
55
|
};
|
|
56
|
-
|
|
57
|
-
export { SSR_CLIENT_CHUNK_NAME, findEntryChunk, findManifestChunk, joinPublicPath, resolveAssets, warnUnknownModuleId, warnUnknownModuleIdsWithoutManifest };
|
|
56
|
+
export { SSR_CLIENT_CHUNK_NAME, findEntryChunk, joinPublicPath, resolveAssets, warnUnknownModuleIdsWithoutManifest };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/services/vite/ssr/resolveConfigSiteNames.ts
|
|
2
2
|
/**
|
|
3
3
|
* Config site names used to pre-build SSR route trees.
|
|
4
4
|
* Empty or omitted `sites` soft-defaults to a single synthetic name `'default'`.
|
|
@@ -7,5 +7,4 @@ const resolveConfigSiteNames = (sites) => {
|
|
|
7
7
|
if (sites.length === 0) return ["default"];
|
|
8
8
|
return sites.map((site) => site.name);
|
|
9
9
|
};
|
|
10
|
-
//#endregion
|
|
11
10
|
export { resolveConfigSiteNames };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/services/vite/ssr/selectForSite.ts
|
|
2
2
|
/** Narrow an incoming `site` to a usable name, failing closed when it is not. */
|
|
3
3
|
function assertSiteName(site, source) {
|
|
4
4
|
if (typeof site !== "string" || site.length === 0) throw new Error(`SSR ${source} must provide a non-empty string 'site'. Missing or invalid 'site'.`);
|
|
@@ -12,5 +12,4 @@ const selectForSite = (siteMap, site, source) => {
|
|
|
12
12
|
if (!Object.hasOwn(siteMap, site)) throw new Error(`SSR has no pre-built route tree for site '${site}'. Unknown or invalid 'site'.`);
|
|
13
13
|
return siteMap[site];
|
|
14
14
|
};
|
|
15
|
-
//#endregion
|
|
16
15
|
export { assertSiteName, selectForSite };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/services/vite/ssr/sendResponse.ts
|
|
2
2
|
const sendResponse = async (response, res, signal) => {
|
|
3
3
|
const body = response.body ? Buffer.from(await response.arrayBuffer()) : void 0;
|
|
4
4
|
if (signal?.aborted) return;
|
|
@@ -8,5 +8,4 @@ const sendResponse = async (response, res, signal) => {
|
|
|
8
8
|
res.status(response.status);
|
|
9
9
|
res.end(body);
|
|
10
10
|
};
|
|
11
|
-
//#endregion
|
|
12
11
|
export { sendResponse };
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ClientContextOf, ReactContextOf, SiteOf } from "./entryTypeExtractors.mjs";
|
|
2
2
|
import { ReactNode } from "react";
|
|
3
|
-
//#region src/services/vite/ssr/skuContext.d.ts
|
|
4
3
|
declare const SkuProvider: ({ site, clientContext, reactContext, children }: {
|
|
5
4
|
site: string;
|
|
6
5
|
clientContext: unknown;
|
|
@@ -22,5 +21,4 @@ declare function createSkuContexts<ServerEntry, ClientEntry = unknown>(): {
|
|
|
22
21
|
useClientContext: () => ClientContextOf<ServerEntry>;
|
|
23
22
|
useReactContext: () => ReactContextUnion<ServerEntry, ClientEntry>;
|
|
24
23
|
};
|
|
25
|
-
//#endregion
|
|
26
24
|
export { SkuProvider, createSkuContexts };
|