@servicetitan/startup 39.2.0 → 39.3.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.
@@ -143,7 +143,7 @@ function createBaseConfig(context) {
143
143
  ...importMetaRemap((0, _core.defineExposedDependencies)(context), (0, _core.defineExposedInstanceDependencies)(context), (0, _core.defineWebComponentName)(context)),
144
144
  ...(_getProcessEnv = (0, _core.getProcessEnv)(context)) !== null && _getProcessEnv !== void 0 ? _getProcessEnv : {}
145
145
  },
146
- resolve: (0, _createresolveconfig.createResolveConfig)(context, optimizedStartupDependencies),
146
+ resolve: (0, _createresolveconfig.createResolveConfig)(optimizedStartupDependencies),
147
147
  optimizeDeps: {
148
148
  include: [
149
149
  ...optimizedStartupDependencies,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/vite/config/base-config.ts"],"sourcesContent":["import type { InlineConfig, Plugin } from 'vite';\nimport {\n bundleConstants,\n defineExposedDependencies,\n defineExposedInstanceDependencies,\n defineWebComponentName,\n getBundleType,\n getCdnPath,\n getProcessEnv,\n} from '../../core';\nimport { omit } from '../../utils';\nimport {\n bundleStatPlugin,\n chainSourceMapsPlugin,\n cleanPlugin,\n cssInjectorPlugin,\n designSystemGuardPlugin,\n devServerRoutingPlugin,\n externalsPlugin,\n htmlPlugin,\n ignoreModulesPlugin,\n istanbulPlugin,\n magicCommentsPlugin,\n metadataPlugin,\n momentLocalesPlugin,\n reactRefreshPlugin,\n styleUrlsPlugin,\n svgrPlugin,\n virtualModulesPlugin,\n} from '../plugins';\nimport { ViteBuildContext } from '../types';\nimport { assetFileNames } from './asset-file-names';\nimport { getCodeSplitting } from './code-splitting';\nimport { createCssConfig } from './create-css-config';\nimport { createFilteringLogger } from './create-filtering-logger';\nimport { createResolveConfig } from './create-resolve-config';\n\nfunction importMetaRemap(\n ...definitions: (Record<string, string> | undefined)[]\n): Record<string, string> {\n const result: Record<string, string> = {};\n\n definitions\n .filter(definition => definition !== undefined)\n .forEach(definition =>\n Object.keys(definition).forEach(item => {\n result[`import.meta.env.${item}`] = definition[item];\n })\n );\n\n return result;\n}\n\nfunction createPlugins(context: ViteBuildContext) {\n const entries: [string, Plugin[] | Plugin | Promise<Plugin> | undefined][] = [\n ['reactRefresh', reactRefreshPlugin(context)],\n ['bundleStat', bundleStatPlugin(context)],\n ['clean', cleanPlugin(context)],\n ['cssInjector', cssInjectorPlugin(context)],\n ['designSystemGuard', designSystemGuardPlugin(context)],\n ['devServerRouting', devServerRoutingPlugin(context)],\n ['externals', externalsPlugin(context)],\n ['html', htmlPlugin(context)],\n ['ignoreModules', ignoreModulesPlugin(context)],\n ['istanbul', istanbulPlugin(context)],\n ['magicComments', magicCommentsPlugin(context)],\n ['metadata', metadataPlugin(context)],\n ['momentLocales', momentLocalesPlugin(context)],\n ['styleUrls', styleUrlsPlugin(context)],\n ['svgr', svgrPlugin(context)],\n ['virtualModules', virtualModulesPlugin(context)],\n ];\n\n return entries\n .filter(\n ([name, plugin]) =>\n plugin && !context.bundlerConfig.omitDefault?.includes(`plugins.${name}`)\n )\n .flatMap(([, plugin]) => plugin);\n}\n\nexport function createBaseConfig(context: ViteBuildContext): InlineConfig {\n const optimizedStartupDependencies = ['@servicetitan/startup-utils', 'react-refresh/runtime'];\n const { isProduction } = context.build;\n const { isWebComponent } = context.package;\n\n let config: InlineConfig = {\n cacheDir: `node_modules/.vite/${getBundleType(context) ?? 'host'}`,\n customLogger: createFilteringLogger(),\n server: {\n // Windows machines can fail to connect to \"localhost\"; bind to a fixed address instead.\n host: '127.0.0.1',\n port: context.bundlerConfig.port ?? (isWebComponent ? 8888 : 8080),\n },\n mode: isProduction ? bundleConstants.mode.production : bundleConstants.mode.development,\n configFile: false,\n oxc: { legalComments: 'none' },\n base: getCdnPath(context) || './', // eslint-disable-line @typescript-eslint/prefer-nullish-coalescing\n css: createCssConfig(isProduction),\n build: {\n /*\n * MFEs render inside shadow DOM — lazy CSS chunks would inject into document.head,\n * leaking styles into the host. Bundling all CSS into one file avoids this.\n */\n cssCodeSplit: !isWebComponent,\n sourcemap: true,\n rolldownOptions: {\n output: { assetFileNames, codeSplitting: getCodeSplitting(context) },\n plugins: [chainSourceMapsPlugin()],\n },\n },\n define: {\n /*\n * Some dependencies assume Node's `global` exists (webpack polyfills this\n * automatically for browser targets; Vite does not).\n */\n global: 'globalThis',\n ...importMetaRemap(\n defineExposedDependencies(context),\n defineExposedInstanceDependencies(context),\n defineWebComponentName(context)\n ),\n ...(getProcessEnv(context) ?? {}),\n },\n resolve: createResolveConfig(context, optimizedStartupDependencies),\n optimizeDeps: {\n include: [\n ...optimizedStartupDependencies,\n 'react/jsx-runtime',\n 'react/jsx-dev-runtime',\n ],\n /*\n * Top-level plugins don't run during dependency pre-bundling, so\n * register ignoreModulesPlugin again here. Without this, missing\n * optional peer dependencies inside pre-bundled packages throw at\n * runtime instead of resolving to an empty module.\n */\n rolldownOptions: {\n plugins: [ignoreModulesPlugin(context)],\n },\n },\n plugins: createPlugins(context),\n };\n\n const omitKeys = context.bundlerConfig.omitDefault?.filter(k => !k.startsWith('plugins.'));\n if (omitKeys?.length) {\n config = omit({ ...config }, omitKeys);\n }\n\n if (context.bundlerConfig.minify.js !== undefined) {\n config.build = { ...config.build, minify: !!context.bundlerConfig.minify.js };\n }\n if (context.bundlerConfig.minify.css !== undefined) {\n config.build = { ...config.build, cssMinify: !!context.bundlerConfig.minify.css };\n }\n\n // Minified output can't be mapped back to source, so skip it when instrumenting.\n if (context.options.codeCoverage) {\n config.build = { ...config.build, minify: false };\n }\n\n return config;\n}\n"],"names":["createBaseConfig","importMetaRemap","definitions","result","filter","definition","undefined","forEach","Object","keys","item","createPlugins","context","entries","reactRefreshPlugin","bundleStatPlugin","cleanPlugin","cssInjectorPlugin","designSystemGuardPlugin","devServerRoutingPlugin","externalsPlugin","htmlPlugin","ignoreModulesPlugin","istanbulPlugin","magicCommentsPlugin","metadataPlugin","momentLocalesPlugin","styleUrlsPlugin","svgrPlugin","virtualModulesPlugin","name","plugin","bundlerConfig","omitDefault","includes","flatMap","getBundleType","getProcessEnv","optimizedStartupDependencies","isProduction","build","isWebComponent","package","config","cacheDir","customLogger","createFilteringLogger","server","host","port","mode","bundleConstants","production","development","configFile","oxc","legalComments","base","getCdnPath","css","createCssConfig","cssCodeSplit","sourcemap","rolldownOptions","output","assetFileNames","codeSplitting","getCodeSplitting","plugins","chainSourceMapsPlugin","define","global","defineExposedDependencies","defineExposedInstanceDependencies","defineWebComponentName","resolve","createResolveConfig","optimizeDeps","include","omitKeys","k","startsWith","length","omit","minify","js","cssMinify","options","codeCoverage"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/vite/config/base-config.ts"],"sourcesContent":["import type { InlineConfig, Plugin } from 'vite';\nimport {\n bundleConstants,\n defineExposedDependencies,\n defineExposedInstanceDependencies,\n defineWebComponentName,\n getBundleType,\n getCdnPath,\n getProcessEnv,\n} from '../../core';\nimport { omit } from '../../utils';\nimport {\n bundleStatPlugin,\n chainSourceMapsPlugin,\n cleanPlugin,\n cssInjectorPlugin,\n designSystemGuardPlugin,\n devServerRoutingPlugin,\n externalsPlugin,\n htmlPlugin,\n ignoreModulesPlugin,\n istanbulPlugin,\n magicCommentsPlugin,\n metadataPlugin,\n momentLocalesPlugin,\n reactRefreshPlugin,\n styleUrlsPlugin,\n svgrPlugin,\n virtualModulesPlugin,\n} from '../plugins';\nimport { ViteBuildContext } from '../types';\nimport { assetFileNames } from './asset-file-names';\nimport { getCodeSplitting } from './code-splitting';\nimport { createCssConfig } from './create-css-config';\nimport { createFilteringLogger } from './create-filtering-logger';\nimport { createResolveConfig } from './create-resolve-config';\n\nfunction importMetaRemap(\n ...definitions: (Record<string, string> | undefined)[]\n): Record<string, string> {\n const result: Record<string, string> = {};\n\n definitions\n .filter(definition => definition !== undefined)\n .forEach(definition =>\n Object.keys(definition).forEach(item => {\n result[`import.meta.env.${item}`] = definition[item];\n })\n );\n\n return result;\n}\n\nfunction createPlugins(context: ViteBuildContext) {\n const entries: [string, Plugin[] | Plugin | Promise<Plugin> | undefined][] = [\n ['reactRefresh', reactRefreshPlugin(context)],\n ['bundleStat', bundleStatPlugin(context)],\n ['clean', cleanPlugin(context)],\n ['cssInjector', cssInjectorPlugin(context)],\n ['designSystemGuard', designSystemGuardPlugin(context)],\n ['devServerRouting', devServerRoutingPlugin(context)],\n ['externals', externalsPlugin(context)],\n ['html', htmlPlugin(context)],\n ['ignoreModules', ignoreModulesPlugin(context)],\n ['istanbul', istanbulPlugin(context)],\n ['magicComments', magicCommentsPlugin(context)],\n ['metadata', metadataPlugin(context)],\n ['momentLocales', momentLocalesPlugin(context)],\n ['styleUrls', styleUrlsPlugin(context)],\n ['svgr', svgrPlugin(context)],\n ['virtualModules', virtualModulesPlugin(context)],\n ];\n\n return entries\n .filter(\n ([name, plugin]) =>\n plugin && !context.bundlerConfig.omitDefault?.includes(`plugins.${name}`)\n )\n .flatMap(([, plugin]) => plugin);\n}\n\nexport function createBaseConfig(context: ViteBuildContext): InlineConfig {\n const optimizedStartupDependencies = ['@servicetitan/startup-utils', 'react-refresh/runtime'];\n const { isProduction } = context.build;\n const { isWebComponent } = context.package;\n\n let config: InlineConfig = {\n cacheDir: `node_modules/.vite/${getBundleType(context) ?? 'host'}`,\n customLogger: createFilteringLogger(),\n server: {\n // Windows machines can fail to connect to \"localhost\"; bind to a fixed address instead.\n host: '127.0.0.1',\n port: context.bundlerConfig.port ?? (isWebComponent ? 8888 : 8080),\n },\n mode: isProduction ? bundleConstants.mode.production : bundleConstants.mode.development,\n configFile: false,\n oxc: { legalComments: 'none' },\n base: getCdnPath(context) || './', // eslint-disable-line @typescript-eslint/prefer-nullish-coalescing\n css: createCssConfig(isProduction),\n build: {\n /*\n * MFEs render inside shadow DOM — lazy CSS chunks would inject into document.head,\n * leaking styles into the host. Bundling all CSS into one file avoids this.\n */\n cssCodeSplit: !isWebComponent,\n sourcemap: true,\n rolldownOptions: {\n output: { assetFileNames, codeSplitting: getCodeSplitting(context) },\n plugins: [chainSourceMapsPlugin()],\n },\n },\n define: {\n /*\n * Some dependencies assume Node's `global` exists (webpack polyfills this\n * automatically for browser targets; Vite does not).\n */\n global: 'globalThis',\n ...importMetaRemap(\n defineExposedDependencies(context),\n defineExposedInstanceDependencies(context),\n defineWebComponentName(context)\n ),\n ...(getProcessEnv(context) ?? {}),\n },\n resolve: createResolveConfig(optimizedStartupDependencies),\n optimizeDeps: {\n include: [\n ...optimizedStartupDependencies,\n 'react/jsx-runtime',\n 'react/jsx-dev-runtime',\n ],\n /*\n * Top-level plugins don't run during dependency pre-bundling, so\n * register ignoreModulesPlugin again here. Without this, missing\n * optional peer dependencies inside pre-bundled packages throw at\n * runtime instead of resolving to an empty module.\n */\n rolldownOptions: {\n plugins: [ignoreModulesPlugin(context)],\n },\n },\n plugins: createPlugins(context),\n };\n\n const omitKeys = context.bundlerConfig.omitDefault?.filter(k => !k.startsWith('plugins.'));\n if (omitKeys?.length) {\n config = omit({ ...config }, omitKeys);\n }\n\n if (context.bundlerConfig.minify.js !== undefined) {\n config.build = { ...config.build, minify: !!context.bundlerConfig.minify.js };\n }\n if (context.bundlerConfig.minify.css !== undefined) {\n config.build = { ...config.build, cssMinify: !!context.bundlerConfig.minify.css };\n }\n\n // Minified output can't be mapped back to source, so skip it when instrumenting.\n if (context.options.codeCoverage) {\n config.build = { ...config.build, minify: false };\n }\n\n return config;\n}\n"],"names":["createBaseConfig","importMetaRemap","definitions","result","filter","definition","undefined","forEach","Object","keys","item","createPlugins","context","entries","reactRefreshPlugin","bundleStatPlugin","cleanPlugin","cssInjectorPlugin","designSystemGuardPlugin","devServerRoutingPlugin","externalsPlugin","htmlPlugin","ignoreModulesPlugin","istanbulPlugin","magicCommentsPlugin","metadataPlugin","momentLocalesPlugin","styleUrlsPlugin","svgrPlugin","virtualModulesPlugin","name","plugin","bundlerConfig","omitDefault","includes","flatMap","getBundleType","getProcessEnv","optimizedStartupDependencies","isProduction","build","isWebComponent","package","config","cacheDir","customLogger","createFilteringLogger","server","host","port","mode","bundleConstants","production","development","configFile","oxc","legalComments","base","getCdnPath","css","createCssConfig","cssCodeSplit","sourcemap","rolldownOptions","output","assetFileNames","codeSplitting","getCodeSplitting","plugins","chainSourceMapsPlugin","define","global","defineExposedDependencies","defineExposedInstanceDependencies","defineWebComponentName","resolve","createResolveConfig","optimizeDeps","include","omitKeys","k","startsWith","length","omit","minify","js","cssMinify","options","codeCoverage"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import type { InlineConfig } from 'vite';
2
- import type { ViteBuildContext } from '../types';
3
2
  type Result = InlineConfig['resolve'];
4
- export declare function createResolveConfig(context: ViteBuildContext, specifiers: string[]): Result;
3
+ export declare function createResolveConfig(specifiers: string[]): Result;
5
4
  export {};
6
5
  //# sourceMappingURL=create-resolve-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-resolve-config.d.ts","sourceRoot":"","sources":["../../../src/vite/config/create-resolve-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,KAAK,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAQtC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAW3F"}
1
+ {"version":3,"file":"create-resolve-config.d.ts","sourceRoot":"","sources":["../../../src/vite/config/create-resolve-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAGzC,KAAK,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAStC,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAOhE"}
@@ -9,17 +9,10 @@ Object.defineProperty(exports, "createResolveConfig", {
9
9
  }
10
10
  });
11
11
  const _module = require("module");
12
- const _path = /*#__PURE__*/ _interop_require_default(require("path"));
13
12
  const _buildescapedregexp = require("../build-escaped-reg-exp");
14
- function _interop_require_default(obj) {
15
- return obj && obj.__esModule ? obj : {
16
- default: obj
17
- };
18
- }
19
13
  const startupRequire = (0, _module.createRequire)(__filename);
20
- function createResolveConfig(context, specifiers) {
21
- const source = _path.default.resolve(context.package.source);
22
- const alias = specifiers.filter((specifier)=>!isResolvableFrom(specifier, source)).map((specifier)=>({
14
+ function createResolveConfig(specifiers) {
15
+ const alias = specifiers.map((specifier)=>({
23
16
  find: (0, _buildescapedregexp.buildEscapedRegExp)(specifier),
24
17
  replacement: resolveFromStartup(specifier)
25
18
  }));
@@ -27,18 +20,6 @@ function createResolveConfig(context, specifiers) {
27
20
  alias
28
21
  };
29
22
  }
30
- function isResolvableFrom(specifier, source) {
31
- try {
32
- require.resolve(specifier, {
33
- paths: [
34
- source
35
- ]
36
- });
37
- return true;
38
- } catch (unused) {
39
- return false;
40
- }
41
- }
42
23
  function resolveFromStartup(specifier) {
43
24
  try {
44
25
  return startupRequire.resolve(specifier);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/vite/config/create-resolve-config.ts"],"sourcesContent":["import { createRequire } from 'module';\nimport path from 'path';\nimport type { InlineConfig } from 'vite';\nimport { buildEscapedRegExp } from '../build-escaped-reg-exp';\nimport type { ViteBuildContext } from '../types';\n\ntype Result = InlineConfig['resolve'];\n\nconst startupRequire = createRequire(__filename);\n\n/*\n * Returns a resolver that, when normal resolution fails for a specifier,\n * tries resolving from startup's location.\n */\nexport function createResolveConfig(context: ViteBuildContext, specifiers: string[]): Result {\n const source = path.resolve(context.package.source);\n\n const alias = specifiers\n .filter(specifier => !isResolvableFrom(specifier, source))\n .map(specifier => ({\n find: buildEscapedRegExp(specifier),\n replacement: resolveFromStartup(specifier),\n }));\n\n return { alias };\n}\n\nfunction isResolvableFrom(specifier: string, source: string): boolean {\n try {\n require.resolve(specifier, { paths: [source] });\n return true;\n } catch {\n return false;\n }\n}\n\nfunction resolveFromStartup(specifier: string): string {\n try {\n return startupRequire.resolve(specifier);\n } catch (cause) {\n throw new Error(`[startup] Cannot resolve ${specifier}`, { cause });\n }\n}\n"],"names":["createResolveConfig","startupRequire","createRequire","__filename","context","specifiers","source","path","resolve","package","alias","filter","specifier","isResolvableFrom","map","find","buildEscapedRegExp","replacement","resolveFromStartup","require","paths","cause","Error"],"mappings":";;;;+BAcgBA;;;eAAAA;;;wBAdc;6DACb;oCAEkB;;;;;;AAKnC,MAAMC,iBAAiBC,IAAAA,qBAAa,EAACC;AAM9B,SAASH,oBAAoBI,OAAyB,EAAEC,UAAoB;IAC/E,MAAMC,SAASC,aAAI,CAACC,OAAO,CAACJ,QAAQK,OAAO,CAACH,MAAM;IAElD,MAAMI,QAAQL,WACTM,MAAM,CAACC,CAAAA,YAAa,CAACC,iBAAiBD,WAAWN,SACjDQ,GAAG,CAACF,CAAAA,YAAc,CAAA;YACfG,MAAMC,IAAAA,sCAAkB,EAACJ;YACzBK,aAAaC,mBAAmBN;QACpC,CAAA;IAEJ,OAAO;QAAEF;IAAM;AACnB;AAEA,SAASG,iBAAiBD,SAAiB,EAAEN,MAAc;IACvD,IAAI;QACAa,QAAQX,OAAO,CAACI,WAAW;YAAEQ,OAAO;gBAACd;aAAO;QAAC;QAC7C,OAAO;IACX,EAAE,eAAM;QACJ,OAAO;IACX;AACJ;AAEA,SAASY,mBAAmBN,SAAiB;IACzC,IAAI;QACA,OAAOX,eAAeO,OAAO,CAACI;IAClC,EAAE,OAAOS,OAAO;QACZ,MAAM,IAAIC,MAAM,CAAC,yBAAyB,EAAEV,WAAW,EAAE;YAAES;QAAM;IACrE;AACJ"}
1
+ {"version":3,"sources":["../../../src/vite/config/create-resolve-config.ts"],"sourcesContent":["import { createRequire } from 'module';\nimport type { InlineConfig } from 'vite';\nimport { buildEscapedRegExp } from '../build-escaped-reg-exp';\n\ntype Result = InlineConfig['resolve'];\n\nconst startupRequire = createRequire(__filename);\n\n/*\n * Returns a resolver that resolves from startup's location. Use only for\n * startup's internal dependencies that may not be directly resolvable by\n * consumers using pnpm.\n */\nexport function createResolveConfig(specifiers: string[]): Result {\n const alias = specifiers.map(specifier => ({\n find: buildEscapedRegExp(specifier),\n replacement: resolveFromStartup(specifier),\n }));\n\n return { alias };\n}\n\nfunction resolveFromStartup(specifier: string): string {\n try {\n return startupRequire.resolve(specifier);\n } catch (cause) {\n throw new Error(`[startup] Cannot resolve ${specifier}`, { cause });\n }\n}\n"],"names":["createResolveConfig","startupRequire","createRequire","__filename","specifiers","alias","map","specifier","find","buildEscapedRegExp","replacement","resolveFromStartup","resolve","cause","Error"],"mappings":";;;;+BAagBA;;;eAAAA;;;wBAbc;oCAEK;AAInC,MAAMC,iBAAiBC,IAAAA,qBAAa,EAACC;AAO9B,SAASH,oBAAoBI,UAAoB;IACpD,MAAMC,QAAQD,WAAWE,GAAG,CAACC,CAAAA,YAAc,CAAA;YACvCC,MAAMC,IAAAA,sCAAkB,EAACF;YACzBG,aAAaC,mBAAmBJ;QACpC,CAAA;IAEA,OAAO;QAAEF;IAAM;AACnB;AAEA,SAASM,mBAAmBJ,SAAiB;IACzC,IAAI;QACA,OAAON,eAAeW,OAAO,CAACL;IAClC,EAAE,OAAOM,OAAO;QACZ,MAAM,IAAIC,MAAM,CAAC,yBAAyB,EAAEP,WAAW,EAAE;YAAEM;QAAM;IACrE;AACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/startup",
3
- "version": "39.2.0",
3
+ "version": "39.3.0",
4
4
  "description": "CLI to create multi-package Lerna projects with TypeScript and React",
5
5
  "homepage": "https://docs.st.dev/docs/frontend/uikit/startup",
6
6
  "repository": {
@@ -100,13 +100,13 @@
100
100
  },
101
101
  "dependencies": {
102
102
  "@babel/preset-env": "~7.29.7",
103
- "@jest/core": "~30.4.2",
104
- "@jest/types": "~30.4.1",
103
+ "@jest/core": "~30.5.1",
104
+ "@jest/types": "~30.5.1",
105
105
  "@jsdevtools/coverage-istanbul-loader": "^3.0.5",
106
- "@servicetitan/eslint-config": "39.2.0",
107
- "@servicetitan/install": "39.2.0",
108
- "@servicetitan/startup-utils": "39.2.0",
109
- "@servicetitan/stylelint-config": "39.2.0",
106
+ "@servicetitan/eslint-config": "39.3.0",
107
+ "@servicetitan/install": "39.3.0",
108
+ "@servicetitan/startup-utils": "39.3.0",
109
+ "@servicetitan/stylelint-config": "39.3.0",
110
110
  "@svgr/webpack": "^8.1.0",
111
111
  "@swc/cli": "^0.8.1",
112
112
  "@swc/core": "1.16.1",
@@ -128,9 +128,9 @@
128
128
  "html-webpack-plugin": "~5.6.8",
129
129
  "html-webpack-tags-plugin": "^3.0.2",
130
130
  "identity-obj-proxy": "~3.0.0",
131
- "jest": "~30.4.2",
132
- "jest-circus": "~30.4.2",
133
- "jest-environment-jsdom": "~30.4.1",
131
+ "jest": "~30.5.1",
132
+ "jest-circus": "~30.5.1",
133
+ "jest-environment-jsdom": "~30.5.1",
134
134
  "jest-fetch-mock": "~4.2.0",
135
135
  "js-yaml": "~5.4.1",
136
136
  "json5": "^2.2.3",
@@ -152,7 +152,7 @@
152
152
  "prettier": "~3.9.6",
153
153
  "react-refresh": "^0.18.0",
154
154
  "sass": "~1.102.0",
155
- "sass-loader": "~17.0.0",
155
+ "sass-loader": "~17.0.1",
156
156
  "semver": "~7.8.5",
157
157
  "source-map-js": "^1.2.1",
158
158
  "source-map-loader": "~5.0.0",
@@ -1,9 +1,5 @@
1
1
  import { createRequire } from 'module';
2
- import fs from 'node:fs';
3
- import os from 'node:os';
4
- import path from 'node:path';
5
2
  import { buildEscapedRegExp } from '../../build-escaped-reg-exp';
6
- import { ViteBuildContext } from '../../types';
7
3
  import { createResolveConfig } from '../create-resolve-config';
8
4
 
9
5
  jest.mock('module', () => ({
@@ -13,7 +9,6 @@ jest.mock('module', () => ({
13
9
 
14
10
  describe(`[startup] ${createResolveConfig.name}`, () => {
15
11
  let startupRequire: { resolve: (specifier: string) => string };
16
- let context: Partial<ViteBuildContext>;
17
12
  let specifiers: string[];
18
13
 
19
14
  beforeAll(() => {
@@ -25,23 +20,11 @@ describe(`[startup] ${createResolveConfig.name}`, () => {
25
20
  jest.mocked(startupRequire.resolve).mockImplementation(() => {
26
21
  throw new Error('Module not found');
27
22
  });
28
- const source = fs.mkdtempSync(path.join(os.tmpdir(), 'create-resolve-config-'));
29
- context = { package: { source } as any };
30
23
  specifiers = ['a', '@b/c'];
31
24
  });
32
25
 
33
- afterEach(() => fs.rmSync(context.package!.source, { recursive: true, force: true }));
34
-
35
- function mockNodeModules(root: string, modules: string[]) {
36
- modules.forEach(name => {
37
- const dir = path.join(root, 'node_modules', ...name.split('/'));
38
- fs.mkdirSync(dir, { recursive: true });
39
- fs.writeFileSync(path.join(dir, 'index.js'), '');
40
- });
41
- }
42
-
43
26
  const subject = () =>
44
- createResolveConfig(context as any, specifiers) as {
27
+ createResolveConfig(specifiers) as {
45
28
  alias: { find: RegExp; replacement: string }[];
46
29
  };
47
30
 
@@ -49,14 +32,6 @@ describe(`[startup] ${createResolveConfig.name}`, () => {
49
32
  expect(() => subject()).toThrow(/cannot resolve/i);
50
33
  });
51
34
 
52
- describe('when specifier is resolvable', () => {
53
- beforeEach(() => mockNodeModules(context.package!.source, specifiers));
54
-
55
- test('does nothing', () => {
56
- expect(subject().alias).toEqual([]);
57
- });
58
- });
59
-
60
35
  describe('when specifier is resolvable from startup', () => {
61
36
  beforeEach(() => {
62
37
  jest.mocked(startupRequire.resolve).mockImplementation(
@@ -65,20 +40,14 @@ describe(`[startup] ${createResolveConfig.name}`, () => {
65
40
  });
66
41
 
67
42
  test('emits alias', () => {
68
- const { alias } = subject();
69
-
70
- specifiers.forEach(specifier => {
71
- expect(alias.find(({ find }) => find.test(specifier))?.replacement).toEqual(
72
- `startup/${specifier}`
73
- );
74
- });
43
+ expect(subject().alias.map(({ replacement }) => replacement)).toEqual(
44
+ specifiers.map(specifier => `startup/${specifier}`)
45
+ );
75
46
  });
76
47
 
77
48
  test('alias matches whole specifier', () => {
78
- const { alias } = subject();
79
-
80
- specifiers.forEach((specifier, i) =>
81
- expect(alias[i].find).toEqual(buildEscapedRegExp(specifier))
49
+ expect(subject().alias.map(({ find }) => find)).toEqual(
50
+ specifiers.map(specifier => buildEscapedRegExp(specifier))
82
51
  );
83
52
  });
84
53
  });
@@ -122,7 +122,7 @@ export function createBaseConfig(context: ViteBuildContext): InlineConfig {
122
122
  ),
123
123
  ...(getProcessEnv(context) ?? {}),
124
124
  },
125
- resolve: createResolveConfig(context, optimizedStartupDependencies),
125
+ resolve: createResolveConfig(optimizedStartupDependencies),
126
126
  optimizeDeps: {
127
127
  include: [
128
128
  ...optimizedStartupDependencies,
@@ -1,39 +1,25 @@
1
1
  import { createRequire } from 'module';
2
- import path from 'path';
3
2
  import type { InlineConfig } from 'vite';
4
3
  import { buildEscapedRegExp } from '../build-escaped-reg-exp';
5
- import type { ViteBuildContext } from '../types';
6
4
 
7
5
  type Result = InlineConfig['resolve'];
8
6
 
9
7
  const startupRequire = createRequire(__filename);
10
8
 
11
9
  /*
12
- * Returns a resolver that, when normal resolution fails for a specifier,
13
- * tries resolving from startup's location.
10
+ * Returns a resolver that resolves from startup's location. Use only for
11
+ * startup's internal dependencies that may not be directly resolvable by
12
+ * consumers using pnpm.
14
13
  */
15
- export function createResolveConfig(context: ViteBuildContext, specifiers: string[]): Result {
16
- const source = path.resolve(context.package.source);
17
-
18
- const alias = specifiers
19
- .filter(specifier => !isResolvableFrom(specifier, source))
20
- .map(specifier => ({
21
- find: buildEscapedRegExp(specifier),
22
- replacement: resolveFromStartup(specifier),
23
- }));
14
+ export function createResolveConfig(specifiers: string[]): Result {
15
+ const alias = specifiers.map(specifier => ({
16
+ find: buildEscapedRegExp(specifier),
17
+ replacement: resolveFromStartup(specifier),
18
+ }));
24
19
 
25
20
  return { alias };
26
21
  }
27
22
 
28
- function isResolvableFrom(specifier: string, source: string): boolean {
29
- try {
30
- require.resolve(specifier, { paths: [source] });
31
- return true;
32
- } catch {
33
- return false;
34
- }
35
- }
36
-
37
23
  function resolveFromStartup(specifier: string): string {
38
24
  try {
39
25
  return startupRequire.resolve(specifier);