@servicetitan/startup 36.3.0 → 36.3.1

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 (49) hide show
  1. package/dist/cli/commands/mfe-check.d.ts.map +1 -1
  2. package/dist/cli/commands/mfe-check.js +12 -2
  3. package/dist/cli/commands/mfe-check.js.map +1 -1
  4. package/dist/cli/commands/mfe-generate-metadata.d.ts.map +1 -1
  5. package/dist/cli/commands/mfe-generate-metadata.js +3 -1
  6. package/dist/cli/commands/mfe-generate-metadata.js.map +1 -1
  7. package/dist/utils/find-up.js +4 -4
  8. package/dist/utils/find-up.js.map +1 -1
  9. package/dist/utils/get-package-data.d.ts +0 -1
  10. package/dist/utils/get-package-data.d.ts.map +1 -1
  11. package/dist/utils/get-package-data.js +3 -22
  12. package/dist/utils/get-package-data.js.map +1 -1
  13. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.d.ts.map +1 -1
  14. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js +9 -5
  15. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js.map +1 -1
  16. package/dist/webpack/configs/plugins/define-exposed-instance-dependencies-plugin.js +1 -1
  17. package/dist/webpack/configs/plugins/define-exposed-instance-dependencies-plugin.js.map +1 -1
  18. package/dist/webpack/configs/utils/build-metadata.d.ts +2 -0
  19. package/dist/webpack/configs/utils/build-metadata.d.ts.map +1 -1
  20. package/dist/webpack/configs/utils/build-metadata.js +3 -3
  21. package/dist/webpack/configs/utils/build-metadata.js.map +1 -1
  22. package/dist/webpack/configs/utils/generate-metadata.d.ts.map +1 -1
  23. package/dist/webpack/configs/utils/generate-metadata.js +3 -2
  24. package/dist/webpack/configs/utils/generate-metadata.js.map +1 -1
  25. package/dist/webpack/configs/utils/get-launchdarkly-sdk-version.d.ts +2 -1
  26. package/dist/webpack/configs/utils/get-launchdarkly-sdk-version.d.ts.map +1 -1
  27. package/dist/webpack/configs/utils/get-launchdarkly-sdk-version.js +5 -13
  28. package/dist/webpack/configs/utils/get-launchdarkly-sdk-version.js.map +1 -1
  29. package/dist/webpack/configs/utils/get-web-components-version.d.ts +2 -1
  30. package/dist/webpack/configs/utils/get-web-components-version.d.ts.map +1 -1
  31. package/dist/webpack/configs/utils/get-web-components-version.js +10 -9
  32. package/dist/webpack/configs/utils/get-web-components-version.js.map +1 -1
  33. package/package.json +11 -11
  34. package/src/cli/commands/__tests__/mfe-check.test.ts +16 -10
  35. package/src/cli/commands/mfe-check.ts +13 -6
  36. package/src/cli/commands/mfe-generate-metadata.ts +2 -0
  37. package/src/utils/__tests__/get-package-data.test.ts +1 -45
  38. package/src/utils/find-up.ts +1 -1
  39. package/src/utils/get-package-data.ts +0 -14
  40. package/src/webpack/__tests__/create-webpack-config-shared-dependencies.test.ts +10 -6
  41. package/src/webpack/__tests__/create-webpack-config.test.ts +0 -5
  42. package/src/webpack/configs/plugins/define-exposed-dependencies-plugin.ts +7 -4
  43. package/src/webpack/configs/plugins/define-exposed-instance-dependencies-plugin.ts +1 -1
  44. package/src/webpack/configs/utils/__tests__/get-launchdarkly-sdk-version.test.ts +33 -15
  45. package/src/webpack/configs/utils/__tests__/get-web-components-version.test.ts +36 -12
  46. package/src/webpack/configs/utils/build-metadata.ts +5 -3
  47. package/src/webpack/configs/utils/generate-metadata.ts +2 -1
  48. package/src/webpack/configs/utils/get-launchdarkly-sdk-version.ts +6 -13
  49. package/src/webpack/configs/utils/get-web-components-version.ts +14 -6
@@ -1 +1 @@
1
- {"version":3,"file":"mfe-check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-check.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAuBlC,qBAAa,QAAS,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAEzC,OAAO;IAoBb,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,mBAAmB;CA2B9B"}
1
+ {"version":3,"file":"mfe-check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-check.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA2BlC,qBAAa,QAAS,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAEzC,OAAO;IAoBb,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,mBAAmB;CA2B9B"}
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "MfeCheck", {
8
8
  return MfeCheck;
9
9
  }
10
10
  });
11
+ const _install = require("@servicetitan/install");
11
12
  const _startuputils = require("@servicetitan/startup-utils");
12
13
  const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
13
14
  const _utils = require("../../utils");
@@ -51,14 +52,23 @@ class MfeCheck extends _types.Command {
51
52
  return {
52
53
  name: mainPackage.name,
53
54
  cli: mainPackage.cli,
54
- dependencies: mergedDependencies
55
+ dependencies: mergedDependencies,
56
+ location: _nodepath.default.dirname(_nodepath.default.resolve(packageJsonPaths[0]))
55
57
  };
56
58
  }
57
59
  checkCompatibility(mfeMetadata, hostData) {
58
60
  var _hostData_cli_webpack, _hostData_cli, _hostData_cli_webpack1, _hostData_cli1;
59
61
  const mfeSharedDependencies = mfeMetadata.sharedDependencies;
60
62
  const hostSharedDependencies = (0, _utils.loadSharedDependencies)(hostData.dependencies, (_hostData_cli = hostData.cli) === null || _hostData_cli === void 0 ? void 0 : (_hostData_cli_webpack = _hostData_cli.webpack) === null || _hostData_cli_webpack === void 0 ? void 0 : _hostData_cli_webpack['shared-dependencies']);
61
- const exposedDependencies = (0, _utils1.getExposedDependencies)(hostSharedDependencies, hostData.dependencies);
63
+ const packageManager = (0, _install.getPackageManager)();
64
+ const workspacePackage = packageManager.getWorkspacePackage(hostData.location);
65
+ const exposedDependencies = (0, _utils1.getExposedDependencies)(hostSharedDependencies, (dependency)=>{
66
+ var _packageManager_getResolvedVersion;
67
+ return (_packageManager_getResolvedVersion = packageManager.getResolvedVersion({
68
+ workspacePackage,
69
+ dependency
70
+ })) !== null && _packageManager_getResolvedVersion !== void 0 ? _packageManager_getResolvedVersion : hostData.dependencies[dependency];
71
+ });
62
72
  const mismatchResult = (0, _startuputils.getVersionMismatches)(exposedDependencies, mfeMetadata.dependencies, mfeSharedDependencies);
63
73
  const isHostMfe = (0, _utils.isWebComponent)(hostData);
64
74
  const isSharedDependenciesEnabled = ((_hostData_cli1 = hostData.cli) === null || _hostData_cli1 === void 0 ? void 0 : (_hostData_cli_webpack1 = _hostData_cli1.webpack) === null || _hostData_cli_webpack1 === void 0 ? void 0 : _hostData_cli_webpack1['expose-shared-dependencies']) === true;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/mfe-check.ts"],"sourcesContent":["import { getVersionMismatches } from '@servicetitan/startup-utils';\nimport path from 'node:path';\nimport {\n isWebComponent,\n loadSharedDependencies,\n log,\n logErrors,\n readJson,\n toArray,\n} from '../../utils';\nimport { Metadata } from '../../webpack/configs/types';\nimport { getExposedDependencies } from '../../webpack/configs/utils';\nimport type { entry } from './registry/mfe-check';\nimport { Command } from './types';\n\ninterface HostPackageJSON {\n name: string;\n dependencies: Record<string, string>;\n cli?: {\n 'web-component'?: boolean | string | object;\n 'webpack'?: {\n 'expose-shared-dependencies'?: boolean;\n 'shared-dependencies'?: Record<string, string>;\n };\n };\n}\n\ninterface CompatibilityResult {\n name: string;\n compatible: boolean;\n bundleType: 'light' | 'full';\n mismatches?: Record<string, { host: string; package: string }>;\n isSharedDependenciesEnabled: boolean;\n isHostMfe: boolean;\n}\n\nexport class MfeCheck extends Command<typeof entry> {\n @logErrors\n async execute() {\n const { metadata: metadataPath, hostPackageJson, json } = this.args;\n const mfeMetadata = readJson<Metadata>(path.resolve(metadataPath));\n const hostPackageJsonPaths = toArray(hostPackageJson);\n const hostData = this.getHostPackageData(hostPackageJsonPaths);\n const result = this.checkCompatibility(mfeMetadata, hostData);\n\n if (json) {\n this.outputJson(result);\n } else {\n this.outputHumanReadable(result);\n }\n\n if (!result.compatible) {\n process.exitCode = 1;\n }\n\n return Promise.resolve();\n }\n\n private getHostPackageData(packageJsonPaths: string[]): HostPackageJSON {\n const packages = packageJsonPaths.map(packageJsonPath =>\n readJson<HostPackageJSON>(path.resolve(packageJsonPath))\n );\n const mergedDependencies = packages.reduceRight<HostPackageJSON['dependencies']>(\n (result, currentPackage) => Object.assign(result, currentPackage.dependencies),\n {}\n );\n const mainPackage = packages[0];\n\n return {\n name: mainPackage.name,\n cli: mainPackage.cli,\n dependencies: mergedDependencies,\n };\n }\n\n private checkCompatibility(\n mfeMetadata: Metadata,\n hostData: HostPackageJSON\n ): CompatibilityResult {\n const mfeSharedDependencies = mfeMetadata.sharedDependencies;\n const hostSharedDependencies = loadSharedDependencies(\n hostData.dependencies,\n hostData.cli?.webpack?.['shared-dependencies']\n );\n const exposedDependencies = getExposedDependencies(\n hostSharedDependencies,\n hostData.dependencies\n );\n const mismatchResult = getVersionMismatches(\n exposedDependencies,\n mfeMetadata.dependencies,\n mfeSharedDependencies\n );\n\n const isHostMfe = isWebComponent(hostData);\n const isSharedDependenciesEnabled =\n hostData.cli?.webpack?.['expose-shared-dependencies'] === true;\n const compatible = !isHostMfe && !mismatchResult && isSharedDependenciesEnabled;\n\n return {\n name: mfeMetadata.name,\n compatible,\n bundleType: compatible ? 'light' : 'full',\n isSharedDependenciesEnabled,\n isHostMfe,\n ...(mismatchResult ? { mismatches: mismatchResult } : {}),\n };\n }\n\n private outputJson(result: CompatibilityResult) {\n process.stdout.write(JSON.stringify(result, null, 2) + '\\n');\n }\n\n private outputHumanReadable(result: CompatibilityResult) {\n log.info(`Checking ${result.name}...`);\n\n if (result.isHostMfe) {\n log.error('Skipping compatibility check because host is an MFE');\n return;\n }\n\n if (result.compatible) {\n log.info('Compatible: light bundle can be used');\n return;\n }\n\n if (result.mismatches) {\n log.error('Dependency mismatch found:');\n\n for (const [dep, versions] of Object.entries(result.mismatches)) {\n log.error(` ${dep}: host=${versions.host}, package=${versions.package}`);\n }\n }\n\n if (!result.isSharedDependenciesEnabled) {\n log.error('expose-shared-dependencies is not enabled in host package.json');\n }\n\n log.error('Result: full bundle required');\n }\n}\n"],"names":["MfeCheck","Command","execute","metadata","metadataPath","hostPackageJson","json","args","mfeMetadata","readJson","path","resolve","hostPackageJsonPaths","toArray","hostData","getHostPackageData","result","checkCompatibility","outputJson","outputHumanReadable","compatible","process","exitCode","Promise","packageJsonPaths","packages","map","packageJsonPath","mergedDependencies","reduceRight","currentPackage","Object","assign","dependencies","mainPackage","name","cli","mfeSharedDependencies","sharedDependencies","hostSharedDependencies","loadSharedDependencies","webpack","exposedDependencies","getExposedDependencies","mismatchResult","getVersionMismatches","isHostMfe","isWebComponent","isSharedDependenciesEnabled","bundleType","mismatches","stdout","write","JSON","stringify","log","info","error","dep","versions","entries","host","package"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/cli/commands/mfe-check.ts"],"sourcesContent":["import { getPackageManager } from '@servicetitan/install';\nimport { getVersionMismatches } from '@servicetitan/startup-utils';\nimport path from 'node:path';\nimport {\n isWebComponent,\n loadSharedDependencies,\n log,\n logErrors,\n readJson,\n toArray,\n} from '../../utils';\nimport { Metadata } from '../../webpack/configs/types';\nimport { getExposedDependencies } from '../../webpack/configs/utils';\nimport type { entry } from './registry/mfe-check';\nimport { Command } from './types';\n\ninterface HostPackageJSON {\n name: string;\n dependencies: Record<string, string>;\n cli?: {\n 'web-component'?: boolean | string | object;\n 'webpack'?: {\n 'expose-shared-dependencies'?: boolean;\n 'shared-dependencies'?: Record<string, string>;\n };\n };\n}\n\ninterface HostData extends HostPackageJSON {\n location: string;\n}\n\ninterface CompatibilityResult {\n name: string;\n compatible: boolean;\n bundleType: 'light' | 'full';\n mismatches?: Record<string, { host: string; package: string }>;\n isSharedDependenciesEnabled: boolean;\n isHostMfe: boolean;\n}\n\nexport class MfeCheck extends Command<typeof entry> {\n @logErrors\n async execute() {\n const { metadata: metadataPath, hostPackageJson, json } = this.args;\n const mfeMetadata = readJson<Metadata>(path.resolve(metadataPath));\n const hostPackageJsonPaths = toArray(hostPackageJson);\n const hostData = this.getHostPackageData(hostPackageJsonPaths);\n const result = this.checkCompatibility(mfeMetadata, hostData);\n\n if (json) {\n this.outputJson(result);\n } else {\n this.outputHumanReadable(result);\n }\n\n if (!result.compatible) {\n process.exitCode = 1;\n }\n\n return Promise.resolve();\n }\n\n private getHostPackageData(packageJsonPaths: string[]): HostData {\n const packages = packageJsonPaths.map(packageJsonPath =>\n readJson<HostPackageJSON>(path.resolve(packageJsonPath))\n );\n const mergedDependencies = packages.reduceRight<HostPackageJSON['dependencies']>(\n (result, currentPackage) => Object.assign(result, currentPackage.dependencies),\n {}\n );\n const mainPackage = packages[0];\n\n return {\n name: mainPackage.name,\n cli: mainPackage.cli,\n dependencies: mergedDependencies,\n location: path.dirname(path.resolve(packageJsonPaths[0])),\n };\n }\n\n private checkCompatibility(mfeMetadata: Metadata, hostData: HostData): CompatibilityResult {\n const mfeSharedDependencies = mfeMetadata.sharedDependencies;\n const hostSharedDependencies = loadSharedDependencies(\n hostData.dependencies,\n hostData.cli?.webpack?.['shared-dependencies']\n );\n const packageManager = getPackageManager();\n const workspacePackage = packageManager.getWorkspacePackage(hostData.location);\n const exposedDependencies = getExposedDependencies(\n hostSharedDependencies,\n dependency =>\n packageManager.getResolvedVersion({ workspacePackage, dependency }) ??\n hostData.dependencies[dependency]\n );\n const mismatchResult = getVersionMismatches(\n exposedDependencies,\n mfeMetadata.dependencies,\n mfeSharedDependencies\n );\n\n const isHostMfe = isWebComponent(hostData);\n const isSharedDependenciesEnabled =\n hostData.cli?.webpack?.['expose-shared-dependencies'] === true;\n const compatible = !isHostMfe && !mismatchResult && isSharedDependenciesEnabled;\n\n return {\n name: mfeMetadata.name,\n compatible,\n bundleType: compatible ? 'light' : 'full',\n isSharedDependenciesEnabled,\n isHostMfe,\n ...(mismatchResult ? { mismatches: mismatchResult } : {}),\n };\n }\n\n private outputJson(result: CompatibilityResult) {\n process.stdout.write(JSON.stringify(result, null, 2) + '\\n');\n }\n\n private outputHumanReadable(result: CompatibilityResult) {\n log.info(`Checking ${result.name}...`);\n\n if (result.isHostMfe) {\n log.error('Skipping compatibility check because host is an MFE');\n return;\n }\n\n if (result.compatible) {\n log.info('Compatible: light bundle can be used');\n return;\n }\n\n if (result.mismatches) {\n log.error('Dependency mismatch found:');\n\n for (const [dep, versions] of Object.entries(result.mismatches)) {\n log.error(` ${dep}: host=${versions.host}, package=${versions.package}`);\n }\n }\n\n if (!result.isSharedDependenciesEnabled) {\n log.error('expose-shared-dependencies is not enabled in host package.json');\n }\n\n log.error('Result: full bundle required');\n }\n}\n"],"names":["MfeCheck","Command","execute","metadata","metadataPath","hostPackageJson","json","args","mfeMetadata","readJson","path","resolve","hostPackageJsonPaths","toArray","hostData","getHostPackageData","result","checkCompatibility","outputJson","outputHumanReadable","compatible","process","exitCode","Promise","packageJsonPaths","packages","map","packageJsonPath","mergedDependencies","reduceRight","currentPackage","Object","assign","dependencies","mainPackage","name","cli","location","dirname","mfeSharedDependencies","sharedDependencies","hostSharedDependencies","loadSharedDependencies","webpack","packageManager","getPackageManager","workspacePackage","getWorkspacePackage","exposedDependencies","getExposedDependencies","dependency","getResolvedVersion","mismatchResult","getVersionMismatches","isHostMfe","isWebComponent","isSharedDependenciesEnabled","bundleType","mismatches","stdout","write","JSON","stringify","log","info","error","dep","versions","entries","host","package"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mfe-generate-metadata.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-generate-metadata.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,qBAAa,mBAAoB,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAEpD,OAAO;CAyChB"}
1
+ {"version":3,"file":"mfe-generate-metadata.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-generate-metadata.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,qBAAa,mBAAoB,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAEpD,OAAO;CA0ChB"}
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "MfeGenerateMetadata", {
8
8
  return MfeGenerateMetadata;
9
9
  }
10
10
  });
11
+ const _install = require("@servicetitan/install");
11
12
  const _nodefs = /*#__PURE__*/ _interop_require_default(require("node:fs"));
12
13
  const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
13
14
  const _utils = require("../../utils");
@@ -42,7 +43,8 @@ class MfeGenerateMetadata extends _types.Command {
42
43
  name,
43
44
  version: packageData.version,
44
45
  dependencies: packageData.dependencies,
45
- sharedDependencies
46
+ sharedDependencies,
47
+ packageManager: (0, _install.getPackageManager)()
46
48
  });
47
49
  const jsonOutput = JSON.stringify(metadata, null, 2);
48
50
  if (output) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/mfe-generate-metadata.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport {\n getFolders,\n getPackageData,\n getPackageName,\n isWebComponent,\n loadSharedDependencies,\n log,\n logErrors,\n} from '../../utils';\nimport { buildMetadata } from '../../webpack/configs/utils/build-metadata';\nimport type { entry } from './registry/mfe-generate-metadata';\nimport { Command } from './types';\n\nexport class MfeGenerateMetadata extends Command<typeof entry> {\n @logErrors\n async execute() {\n if (!isWebComponent()) {\n throw new Error('this command must be run inside a web-component directory');\n }\n\n const { output } = this.args;\n\n const { destination } = getFolders();\n const name = getPackageName();\n const packageData = getPackageData();\n const sharedDependencies = loadSharedDependencies(\n packageData.dependencies,\n packageData.sharedDependencies\n );\n\n const metadata = buildMetadata({\n destination,\n name,\n version: packageData.version,\n dependencies: packageData.dependencies,\n sharedDependencies,\n });\n\n const jsonOutput = JSON.stringify(metadata, null, 2);\n\n if (output) {\n const outputPath = path.resolve(output);\n const outputDir = path.dirname(outputPath);\n\n if (!fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, { recursive: true });\n }\n\n fs.writeFileSync(outputPath, jsonOutput, 'utf8');\n log.info(`Metadata written to ${outputPath}`);\n } else {\n process.stdout.write(jsonOutput + '\\n');\n }\n\n return Promise.resolve();\n }\n}\n"],"names":["MfeGenerateMetadata","Command","execute","isWebComponent","Error","output","args","destination","getFolders","name","getPackageName","packageData","getPackageData","sharedDependencies","loadSharedDependencies","dependencies","metadata","buildMetadata","version","jsonOutput","JSON","stringify","outputPath","path","resolve","outputDir","dirname","fs","existsSync","mkdirSync","recursive","writeFileSync","log","info","process","stdout","write","Promise"],"mappings":";;;;+BAeaA;;;eAAAA;;;+DAfE;iEACE;uBASV;+BACuB;uBAEN;;;;;;;;;;;;;;;AAEjB,MAAMA,4BAA4BC,cAAO;IAC5C,MACMC,UAAU;QACZ,IAAI,CAACC,IAAAA,qBAAc,KAAI;YACnB,MAAM,IAAIC,MAAM;QACpB;QAEA,MAAM,EAAEC,MAAM,EAAE,GAAG,IAAI,CAACC,IAAI;QAE5B,MAAM,EAAEC,WAAW,EAAE,GAAGC,IAAAA,iBAAU;QAClC,MAAMC,OAAOC,IAAAA,qBAAc;QAC3B,MAAMC,cAAcC,IAAAA,qBAAc;QAClC,MAAMC,qBAAqBC,IAAAA,6BAAsB,EAC7CH,YAAYI,YAAY,EACxBJ,YAAYE,kBAAkB;QAGlC,MAAMG,WAAWC,IAAAA,4BAAa,EAAC;YAC3BV;YACAE;YACAS,SAASP,YAAYO,OAAO;YAC5BH,cAAcJ,YAAYI,YAAY;YACtCF;QACJ;QAEA,MAAMM,aAAaC,KAAKC,SAAS,CAACL,UAAU,MAAM;QAElD,IAAIX,QAAQ;YACR,MAAMiB,aAAaC,iBAAI,CAACC,OAAO,CAACnB;YAChC,MAAMoB,YAAYF,iBAAI,CAACG,OAAO,CAACJ;YAE/B,IAAI,CAACK,eAAE,CAACC,UAAU,CAACH,YAAY;gBAC3BE,eAAE,CAACE,SAAS,CAACJ,WAAW;oBAAEK,WAAW;gBAAK;YAC9C;YAEAH,eAAE,CAACI,aAAa,CAACT,YAAYH,YAAY;YACzCa,UAAG,CAACC,IAAI,CAAC,CAAC,oBAAoB,EAAEX,YAAY;QAChD,OAAO;YACHY,QAAQC,MAAM,CAACC,KAAK,CAACjB,aAAa;QACtC;QAEA,OAAOkB,QAAQb,OAAO;IAC1B;AACJ"}
1
+ {"version":3,"sources":["../../../src/cli/commands/mfe-generate-metadata.ts"],"sourcesContent":["import { getPackageManager } from '@servicetitan/install';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport {\n getFolders,\n getPackageData,\n getPackageName,\n isWebComponent,\n loadSharedDependencies,\n log,\n logErrors,\n} from '../../utils';\nimport { buildMetadata } from '../../webpack/configs/utils/build-metadata';\nimport type { entry } from './registry/mfe-generate-metadata';\nimport { Command } from './types';\n\nexport class MfeGenerateMetadata extends Command<typeof entry> {\n @logErrors\n async execute() {\n if (!isWebComponent()) {\n throw new Error('this command must be run inside a web-component directory');\n }\n\n const { output } = this.args;\n\n const { destination } = getFolders();\n const name = getPackageName();\n const packageData = getPackageData();\n const sharedDependencies = loadSharedDependencies(\n packageData.dependencies,\n packageData.sharedDependencies\n );\n\n const metadata = buildMetadata({\n destination,\n name,\n version: packageData.version,\n dependencies: packageData.dependencies,\n sharedDependencies,\n packageManager: getPackageManager(),\n });\n\n const jsonOutput = JSON.stringify(metadata, null, 2);\n\n if (output) {\n const outputPath = path.resolve(output);\n const outputDir = path.dirname(outputPath);\n\n if (!fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, { recursive: true });\n }\n\n fs.writeFileSync(outputPath, jsonOutput, 'utf8');\n log.info(`Metadata written to ${outputPath}`);\n } else {\n process.stdout.write(jsonOutput + '\\n');\n }\n\n return Promise.resolve();\n }\n}\n"],"names":["MfeGenerateMetadata","Command","execute","isWebComponent","Error","output","args","destination","getFolders","name","getPackageName","packageData","getPackageData","sharedDependencies","loadSharedDependencies","dependencies","metadata","buildMetadata","version","packageManager","getPackageManager","jsonOutput","JSON","stringify","outputPath","path","resolve","outputDir","dirname","fs","existsSync","mkdirSync","recursive","writeFileSync","log","info","process","stdout","write","Promise"],"mappings":";;;;+BAgBaA;;;eAAAA;;;yBAhBqB;+DACnB;iEACE;uBASV;+BACuB;uBAEN;;;;;;;;;;;;;;;AAEjB,MAAMA,4BAA4BC,cAAO;IAC5C,MACMC,UAAU;QACZ,IAAI,CAACC,IAAAA,qBAAc,KAAI;YACnB,MAAM,IAAIC,MAAM;QACpB;QAEA,MAAM,EAAEC,MAAM,EAAE,GAAG,IAAI,CAACC,IAAI;QAE5B,MAAM,EAAEC,WAAW,EAAE,GAAGC,IAAAA,iBAAU;QAClC,MAAMC,OAAOC,IAAAA,qBAAc;QAC3B,MAAMC,cAAcC,IAAAA,qBAAc;QAClC,MAAMC,qBAAqBC,IAAAA,6BAAsB,EAC7CH,YAAYI,YAAY,EACxBJ,YAAYE,kBAAkB;QAGlC,MAAMG,WAAWC,IAAAA,4BAAa,EAAC;YAC3BV;YACAE;YACAS,SAASP,YAAYO,OAAO;YAC5BH,cAAcJ,YAAYI,YAAY;YACtCF;YACAM,gBAAgBC,IAAAA,0BAAiB;QACrC;QAEA,MAAMC,aAAaC,KAAKC,SAAS,CAACP,UAAU,MAAM;QAElD,IAAIX,QAAQ;YACR,MAAMmB,aAAaC,iBAAI,CAACC,OAAO,CAACrB;YAChC,MAAMsB,YAAYF,iBAAI,CAACG,OAAO,CAACJ;YAE/B,IAAI,CAACK,eAAE,CAACC,UAAU,CAACH,YAAY;gBAC3BE,eAAE,CAACE,SAAS,CAACJ,WAAW;oBAAEK,WAAW;gBAAK;YAC9C;YAEAH,eAAE,CAACI,aAAa,CAACT,YAAYH,YAAY;YACzCa,UAAG,CAACC,IAAI,CAAC,CAAC,oBAAoB,EAAEX,YAAY;QAChD,OAAO;YACHY,QAAQC,MAAM,CAACC,KAAK,CAACjB,aAAa;QACtC;QAEA,OAAOkB,QAAQb,OAAO;IAC1B;AACJ"}
@@ -8,21 +8,21 @@ Object.defineProperty(exports, "findUp", {
8
8
  return findUp;
9
9
  }
10
10
  });
11
- const _path = /*#__PURE__*/ _interop_require_default(require("path"));
11
+ const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
12
12
  function _interop_require_default(obj) {
13
13
  return obj && obj.__esModule ? obj : {
14
14
  default: obj
15
15
  };
16
16
  }
17
17
  function findUp(callback) {
18
- let directory = _path.default.resolve('./');
18
+ let directory = _nodepath.default.resolve('./');
19
19
  do {
20
20
  const result = callback(directory);
21
21
  if (result) {
22
22
  return result;
23
23
  }
24
- directory = _path.default.resolve(_path.default.join(directory, '../'));
25
- }while (_path.default.parse(directory).name)
24
+ directory = _nodepath.default.resolve(_nodepath.default.join(directory, '../'));
25
+ }while (_nodepath.default.parse(directory).name)
26
26
  }
27
27
 
28
28
  //# sourceMappingURL=find-up.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/find-up.ts"],"sourcesContent":["import path from 'path';\n\nexport function findUp<T>(callback: (directory: string) => T | undefined) {\n let directory = path.resolve('./');\n do {\n const result = callback(directory);\n if (result) {\n return result;\n }\n directory = path.resolve(path.join(directory, '../'));\n } while (path.parse(directory).name);\n}\n"],"names":["findUp","callback","directory","path","resolve","result","join","parse","name"],"mappings":";;;;+BAEgBA;;;eAAAA;;;6DAFC;;;;;;AAEV,SAASA,OAAUC,QAA8C;IACpE,IAAIC,YAAYC,aAAI,CAACC,OAAO,CAAC;IAC7B,GAAG;QACC,MAAMC,SAASJ,SAASC;QACxB,IAAIG,QAAQ;YACR,OAAOA;QACX;QACAH,YAAYC,aAAI,CAACC,OAAO,CAACD,aAAI,CAACG,IAAI,CAACJ,WAAW;IAClD,QAASC,aAAI,CAACI,KAAK,CAACL,WAAWM,IAAI,CAAE;AACzC"}
1
+ {"version":3,"sources":["../../src/utils/find-up.ts"],"sourcesContent":["import path from 'node:path';\n\nexport function findUp<T>(callback: (directory: string) => T | undefined) {\n let directory = path.resolve('./');\n do {\n const result = callback(directory);\n if (result) {\n return result;\n }\n directory = path.resolve(path.join(directory, '../'));\n } while (path.parse(directory).name);\n}\n"],"names":["findUp","callback","directory","path","resolve","result","join","parse","name"],"mappings":";;;;+BAEgBA;;;eAAAA;;;iEAFC;;;;;;AAEV,SAASA,OAAUC,QAA8C;IACpE,IAAIC,YAAYC,iBAAI,CAACC,OAAO,CAAC;IAC7B,GAAG;QACC,MAAMC,SAASJ,SAASC;QACxB,IAAIG,QAAQ;YACR,OAAOA;QACX;QACAH,YAAYC,iBAAI,CAACC,OAAO,CAACD,iBAAI,CAACG,IAAI,CAACJ,WAAW;IAClD,QAASC,iBAAI,CAACI,KAAK,CAACL,WAAWM,IAAI,CAAE;AACzC"}
@@ -5,6 +5,5 @@ interface PackageData {
5
5
  sharedDependencies?: Record<string, string>;
6
6
  }
7
7
  export declare function getPackageData(): PackageData;
8
- export declare function getPackageDependencyVersion(dependency: string, defaultVersion?: string): any;
9
8
  export {};
10
9
  //# sourceMappingURL=get-package-data.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-package-data.d.ts","sourceRoot":"","sources":["../../src/utils/get-package-data.ts"],"names":[],"mappings":"AAEA,UAAU,WAAW;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/C;AAED,wBAAgB,cAAc,IAAI,WAAW,CAY5C;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,OAYtF"}
1
+ {"version":3,"file":"get-package-data.d.ts","sourceRoot":"","sources":["../../src/utils/get-package-data.ts"],"names":[],"mappings":"AAEA,UAAU,WAAW;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/C;AAED,wBAAgB,cAAc,IAAI,WAAW,CAY5C"}
@@ -2,18 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get getPackageData () {
5
+ Object.defineProperty(exports, "getPackageData", {
6
+ enumerable: true,
7
+ get: function() {
13
8
  return getPackageData;
14
- },
15
- get getPackageDependencyVersion () {
16
- return getPackageDependencyVersion;
17
9
  }
18
10
  });
19
11
  const _readjson = require("./read-json");
@@ -30,16 +22,5 @@ function getPackageData() {
30
22
  sharedDependencies: (_packageJson_cli = packageJson.cli) === null || _packageJson_cli === void 0 ? void 0 : (_packageJson_cli_webpack = _packageJson_cli.webpack) === null || _packageJson_cli_webpack === void 0 ? void 0 : _packageJson_cli_webpack['shared-dependencies']
31
23
  };
32
24
  }
33
- function getPackageDependencyVersion(dependency, defaultVersion) {
34
- try {
35
- const { version } = require(`${dependency}/package.json`);
36
- if (version) {
37
- return version;
38
- }
39
- } catch (unused) {
40
- // skip error
41
- }
42
- return defaultVersion;
43
- }
44
25
 
45
26
  //# sourceMappingURL=get-package-data.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/get-package-data.ts"],"sourcesContent":["import { readJson } from './read-json';\n\ninterface PackageData {\n name: string;\n version: string;\n dependencies: Record<string, string>;\n sharedDependencies?: Record<string, string>;\n}\n\nexport function getPackageData(): PackageData {\n const packageJson = readJson('./package.json');\n\n return {\n name: packageJson.name,\n version: packageJson.version,\n dependencies: {\n ...readJson('../../package.json').dependencies,\n ...packageJson.dependencies,\n },\n sharedDependencies: packageJson.cli?.webpack?.['shared-dependencies'],\n };\n}\n\nexport function getPackageDependencyVersion(dependency: string, defaultVersion?: string) {\n try {\n const { version } = require(`${dependency}/package.json`);\n\n if (version) {\n return version;\n }\n } catch {\n // skip error\n }\n\n return defaultVersion;\n}\n"],"names":["getPackageData","getPackageDependencyVersion","packageJson","readJson","name","version","dependencies","sharedDependencies","cli","webpack","dependency","defaultVersion","require"],"mappings":";;;;;;;;;;;QASgBA;eAAAA;;QAcAC;eAAAA;;;0BAvBS;AASlB,SAASD;QAUYE,0BAAAA;IATxB,MAAMA,cAAcC,IAAAA,kBAAQ,EAAC;IAE7B,OAAO;QACHC,MAAMF,YAAYE,IAAI;QACtBC,SAASH,YAAYG,OAAO;QAC5BC,cAAc;YACV,GAAGH,IAAAA,kBAAQ,EAAC,sBAAsBG,YAAY;YAC9C,GAAGJ,YAAYI,YAAY;QAC/B;QACAC,kBAAkB,GAAEL,mBAAAA,YAAYM,GAAG,cAAfN,wCAAAA,2BAAAA,iBAAiBO,OAAO,cAAxBP,+CAAAA,wBAA0B,CAAC,sBAAsB;IACzE;AACJ;AAEO,SAASD,4BAA4BS,UAAkB,EAAEC,cAAuB;IACnF,IAAI;QACA,MAAM,EAAEN,OAAO,EAAE,GAAGO,QAAQ,GAAGF,WAAW,aAAa,CAAC;QAExD,IAAIL,SAAS;YACT,OAAOA;QACX;IACJ,EAAE,eAAM;IACJ,aAAa;IACjB;IAEA,OAAOM;AACX"}
1
+ {"version":3,"sources":["../../src/utils/get-package-data.ts"],"sourcesContent":["import { readJson } from './read-json';\n\ninterface PackageData {\n name: string;\n version: string;\n dependencies: Record<string, string>;\n sharedDependencies?: Record<string, string>;\n}\n\nexport function getPackageData(): PackageData {\n const packageJson = readJson('./package.json');\n\n return {\n name: packageJson.name,\n version: packageJson.version,\n dependencies: {\n ...readJson('../../package.json').dependencies,\n ...packageJson.dependencies,\n },\n sharedDependencies: packageJson.cli?.webpack?.['shared-dependencies'],\n };\n}\n"],"names":["getPackageData","packageJson","readJson","name","version","dependencies","sharedDependencies","cli","webpack"],"mappings":";;;;+BASgBA;;;eAAAA;;;0BATS;AASlB,SAASA;QAUYC,0BAAAA;IATxB,MAAMA,cAAcC,IAAAA,kBAAQ,EAAC;IAE7B,OAAO;QACHC,MAAMF,YAAYE,IAAI;QACtBC,SAASH,YAAYG,OAAO;QAC5BC,cAAc;YACV,GAAGH,IAAAA,kBAAQ,EAAC,sBAAsBG,YAAY;YAC9C,GAAGJ,YAAYI,YAAY;QAC/B;QACAC,kBAAkB,GAAEL,mBAAAA,YAAYM,GAAG,cAAfN,wCAAAA,2BAAAA,iBAAiBO,OAAO,cAAxBP,+CAAAA,wBAA0B,CAAC,sBAAsB;IACzE;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"define-exposed-dependencies-plugin.d.ts","sourceRoot":"","sources":["../../../../src/webpack/configs/plugins/define-exposed-dependencies-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG9C,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,4BAe7E"}
1
+ {"version":3,"file":"define-exposed-dependencies-plugin.d.ts","sourceRoot":"","sources":["../../../../src/webpack/configs/plugins/define-exposed-dependencies-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG9C,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,4BAmB7E"}
@@ -9,17 +9,21 @@ Object.defineProperty(exports, "defineExposedDependenciesPlugin", {
9
9
  }
10
10
  });
11
11
  const _webpack = require("webpack");
12
- const _utils = require("../../../utils");
13
- const _utils1 = require("../utils");
12
+ const _utils = require("../utils");
14
13
  function defineExposedDependenciesPlugin(context, _) {
15
14
  const { emitExposedDependencies, isExposeSharedDependencies } = context;
16
15
  if (!isExposeSharedDependencies || emitExposedDependencies) {
17
16
  return;
18
17
  }
19
- const { packageData, sharedDependencies } = context;
20
- const exposedDependencies = (0, _utils1.getExposedDependencies)(sharedDependencies, (dependency)=>{
18
+ const { packageData, packageManager, sharedDependencies } = context;
19
+ const workspacePackage = packageManager.getWorkspacePackage();
20
+ const exposedDependencies = (0, _utils.getExposedDependencies)(sharedDependencies, (dependency)=>{
21
+ var _packageManager_getResolvedVersion;
21
22
  var _packageData_dependencies;
22
- return (0, _utils.getPackageDependencyVersion)(dependency, (_packageData_dependencies = packageData.dependencies) === null || _packageData_dependencies === void 0 ? void 0 : _packageData_dependencies[dependency]);
23
+ return (_packageManager_getResolvedVersion = packageManager.getResolvedVersion({
24
+ workspacePackage,
25
+ dependency
26
+ })) !== null && _packageManager_getResolvedVersion !== void 0 ? _packageManager_getResolvedVersion : (_packageData_dependencies = packageData.dependencies) === null || _packageData_dependencies === void 0 ? void 0 : _packageData_dependencies[dependency];
23
27
  });
24
28
  return new _webpack.DefinePlugin({
25
29
  // eslint-disable-next-line @typescript-eslint/naming-convention
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/webpack/configs/plugins/define-exposed-dependencies-plugin.ts"],"sourcesContent":["import { DefinePlugin } from 'webpack';\nimport { getPackageDependencyVersion } from '../../../utils';\nimport { Context, Overrides } from '../types';\nimport { getExposedDependencies } from '../utils';\n\nexport function defineExposedDependenciesPlugin(context: Context, _: Overrides) {\n const { emitExposedDependencies, isExposeSharedDependencies } = context;\n if (!isExposeSharedDependencies || emitExposedDependencies) {\n return;\n }\n\n const { packageData, sharedDependencies } = context;\n const exposedDependencies = getExposedDependencies(sharedDependencies, dependency =>\n getPackageDependencyVersion(dependency, packageData.dependencies?.[dependency])\n );\n\n return new DefinePlugin({\n // eslint-disable-next-line @typescript-eslint/naming-convention\n EXPOSED_DEPENDENCIES: JSON.stringify(exposedDependencies),\n });\n}\n"],"names":["defineExposedDependenciesPlugin","context","_","emitExposedDependencies","isExposeSharedDependencies","packageData","sharedDependencies","exposedDependencies","getExposedDependencies","dependency","getPackageDependencyVersion","dependencies","DefinePlugin","EXPOSED_DEPENDENCIES","JSON","stringify"],"mappings":";;;;+BAKgBA;;;eAAAA;;;yBALa;uBACe;wBAEL;AAEhC,SAASA,gCAAgCC,OAAgB,EAAEC,CAAY;IAC1E,MAAM,EAAEC,uBAAuB,EAAEC,0BAA0B,EAAE,GAAGH;IAChE,IAAI,CAACG,8BAA8BD,yBAAyB;QACxD;IACJ;IAEA,MAAM,EAAEE,WAAW,EAAEC,kBAAkB,EAAE,GAAGL;IAC5C,MAAMM,sBAAsBC,IAAAA,8BAAsB,EAACF,oBAAoBG,CAAAA;YAC3BJ;eAAxCK,IAAAA,kCAA2B,EAACD,aAAYJ,4BAAAA,YAAYM,YAAY,cAAxBN,gDAAAA,yBAA0B,CAACI,WAAW;;IAGlF,OAAO,IAAIG,qBAAY,CAAC;QACpB,gEAAgE;QAChEC,sBAAsBC,KAAKC,SAAS,CAACR;IACzC;AACJ"}
1
+ {"version":3,"sources":["../../../../src/webpack/configs/plugins/define-exposed-dependencies-plugin.ts"],"sourcesContent":["import { DefinePlugin } from 'webpack';\nimport { Context, Overrides } from '../types';\nimport { getExposedDependencies } from '../utils';\n\nexport function defineExposedDependenciesPlugin(context: Context, _: Overrides) {\n const { emitExposedDependencies, isExposeSharedDependencies } = context;\n if (!isExposeSharedDependencies || emitExposedDependencies) {\n return;\n }\n\n const { packageData, packageManager, sharedDependencies } = context;\n const workspacePackage = packageManager.getWorkspacePackage();\n const exposedDependencies = getExposedDependencies(\n sharedDependencies,\n dependency =>\n packageManager.getResolvedVersion({ workspacePackage, dependency }) ??\n packageData.dependencies?.[dependency]\n );\n\n return new DefinePlugin({\n // eslint-disable-next-line @typescript-eslint/naming-convention\n EXPOSED_DEPENDENCIES: JSON.stringify(exposedDependencies),\n });\n}\n"],"names":["defineExposedDependenciesPlugin","context","_","emitExposedDependencies","isExposeSharedDependencies","packageData","packageManager","sharedDependencies","workspacePackage","getWorkspacePackage","exposedDependencies","getExposedDependencies","dependency","getResolvedVersion","dependencies","DefinePlugin","EXPOSED_DEPENDENCIES","JSON","stringify"],"mappings":";;;;+BAIgBA;;;eAAAA;;;yBAJa;uBAEU;AAEhC,SAASA,gCAAgCC,OAAgB,EAAEC,CAAY;IAC1E,MAAM,EAAEC,uBAAuB,EAAEC,0BAA0B,EAAE,GAAGH;IAChE,IAAI,CAACG,8BAA8BD,yBAAyB;QACxD;IACJ;IAEA,MAAM,EAAEE,WAAW,EAAEC,cAAc,EAAEC,kBAAkB,EAAE,GAAGN;IAC5D,MAAMO,mBAAmBF,eAAeG,mBAAmB;IAC3D,MAAMC,sBAAsBC,IAAAA,6BAAsB,EAC9CJ,oBACAK,CAAAA;YACIN;YACAD;gBADAC,qCAAAA,eAAeO,kBAAkB,CAAC;YAAEL;YAAkBI;QAAW,gBAAjEN,gDAAAA,sCACAD,4BAAAA,YAAYS,YAAY,cAAxBT,gDAAAA,yBAA0B,CAACO,WAAW;;IAG9C,OAAO,IAAIG,qBAAY,CAAC;QACpB,gEAAgE;QAChEC,sBAAsBC,KAAKC,SAAS,CAACR;IACzC;AACJ"}
@@ -17,7 +17,7 @@ function defineExposedInstanceDependenciesPlugin(context, _) {
17
17
  }
18
18
  const instanceDependencies = {
19
19
  launchDarkly: {
20
- version: (0, _getlaunchdarklysdkversion.getLaunchDarklySdkVersion)()
20
+ version: (0, _getlaunchdarklysdkversion.getLaunchDarklySdkVersion)(context.packageManager)
21
21
  }
22
22
  };
23
23
  return new _webpack.DefinePlugin({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/webpack/configs/plugins/define-exposed-instance-dependencies-plugin.ts"],"sourcesContent":["import { DefinePlugin } from 'webpack';\nimport { Context, Overrides } from '../types';\nimport { getLaunchDarklySdkVersion } from '../utils/get-launchdarkly-sdk-version';\n\nexport function defineExposedInstanceDependenciesPlugin(context: Context, _: Overrides) {\n const { emitExposedDependencies, isExposeSharedDependencies } = context;\n if (!isExposeSharedDependencies || emitExposedDependencies) {\n return;\n }\n\n const instanceDependencies = {\n launchDarkly: { version: getLaunchDarklySdkVersion() },\n };\n\n return new DefinePlugin({\n // eslint-disable-next-line @typescript-eslint/naming-convention\n EXPOSED_INSTANCE_DEPENDENCIES: JSON.stringify(instanceDependencies),\n });\n}\n"],"names":["defineExposedInstanceDependenciesPlugin","context","_","emitExposedDependencies","isExposeSharedDependencies","instanceDependencies","launchDarkly","version","getLaunchDarklySdkVersion","DefinePlugin","EXPOSED_INSTANCE_DEPENDENCIES","JSON","stringify"],"mappings":";;;;+BAIgBA;;;eAAAA;;;yBAJa;2CAEa;AAEnC,SAASA,wCAAwCC,OAAgB,EAAEC,CAAY;IAClF,MAAM,EAAEC,uBAAuB,EAAEC,0BAA0B,EAAE,GAAGH;IAChE,IAAI,CAACG,8BAA8BD,yBAAyB;QACxD;IACJ;IAEA,MAAME,uBAAuB;QACzBC,cAAc;YAAEC,SAASC,IAAAA,oDAAyB;QAAG;IACzD;IAEA,OAAO,IAAIC,qBAAY,CAAC;QACpB,gEAAgE;QAChEC,+BAA+BC,KAAKC,SAAS,CAACP;IAClD;AACJ"}
1
+ {"version":3,"sources":["../../../../src/webpack/configs/plugins/define-exposed-instance-dependencies-plugin.ts"],"sourcesContent":["import { DefinePlugin } from 'webpack';\nimport { Context, Overrides } from '../types';\nimport { getLaunchDarklySdkVersion } from '../utils/get-launchdarkly-sdk-version';\n\nexport function defineExposedInstanceDependenciesPlugin(context: Context, _: Overrides) {\n const { emitExposedDependencies, isExposeSharedDependencies } = context;\n if (!isExposeSharedDependencies || emitExposedDependencies) {\n return;\n }\n\n const instanceDependencies = {\n launchDarkly: { version: getLaunchDarklySdkVersion(context.packageManager) },\n };\n\n return new DefinePlugin({\n // eslint-disable-next-line @typescript-eslint/naming-convention\n EXPOSED_INSTANCE_DEPENDENCIES: JSON.stringify(instanceDependencies),\n });\n}\n"],"names":["defineExposedInstanceDependenciesPlugin","context","_","emitExposedDependencies","isExposeSharedDependencies","instanceDependencies","launchDarkly","version","getLaunchDarklySdkVersion","packageManager","DefinePlugin","EXPOSED_INSTANCE_DEPENDENCIES","JSON","stringify"],"mappings":";;;;+BAIgBA;;;eAAAA;;;yBAJa;2CAEa;AAEnC,SAASA,wCAAwCC,OAAgB,EAAEC,CAAY;IAClF,MAAM,EAAEC,uBAAuB,EAAEC,0BAA0B,EAAE,GAAGH;IAChE,IAAI,CAACG,8BAA8BD,yBAAyB;QACxD;IACJ;IAEA,MAAME,uBAAuB;QACzBC,cAAc;YAAEC,SAASC,IAAAA,oDAAyB,EAACP,QAAQQ,cAAc;QAAE;IAC/E;IAEA,OAAO,IAAIC,qBAAY,CAAC;QACpB,gEAAgE;QAChEC,+BAA+BC,KAAKC,SAAS,CAACR;IAClD;AACJ"}
@@ -1,3 +1,4 @@
1
+ import type { PackageManager } from '@servicetitan/install';
1
2
  import { Metadata } from '../types';
2
3
  export interface BuildMetadataParams {
3
4
  destination: string;
@@ -5,6 +6,7 @@ export interface BuildMetadataParams {
5
6
  version: string;
6
7
  dependencies: Record<string, string>;
7
8
  sharedDependencies: Record<string, string>;
9
+ packageManager: PackageManager;
8
10
  }
9
11
  export declare function buildMetadata(params: BuildMetadataParams): Metadata;
10
12
  //# sourceMappingURL=build-metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-metadata.d.ts","sourceRoot":"","sources":["../../../../src/webpack/configs/utils/build-metadata.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIjD,MAAM,WAAW,mBAAmB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9C;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,QAAQ,CAyBnE"}
1
+ {"version":3,"file":"build-metadata.d.ts","sourceRoot":"","sources":["../../../../src/webpack/configs/utils/build-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAAe,QAAQ,EAAE,MAAM,UAAU,CAAC;AAIjD,MAAM,WAAW,mBAAmB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,cAAc,EAAE,cAAc,CAAC;CAClC;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,QAAQ,CAyBnE"}
@@ -18,7 +18,7 @@ function _interop_require_default(obj) {
18
18
  };
19
19
  }
20
20
  function buildMetadata(params) {
21
- const { destination, name, version, dependencies, sharedDependencies } = params;
21
+ const { destination, name, version, dependencies, sharedDependencies, packageManager } = params;
22
22
  const full = (0, _utils.readJsonSafe)(_path.default.join(destination, 'bundle', 'full', 'entrypoints.json'));
23
23
  const light = (0, _utils.readJsonSafe)(_path.default.join(destination, 'bundle', 'light', 'entrypoints.json'));
24
24
  const headless = (0, _utils.readJsonSafe)(_path.default.join(destination, 'bundle', 'headless', 'entrypoints.json'));
@@ -38,8 +38,8 @@ function buildMetadata(params) {
38
38
  version,
39
39
  bundledWith: {
40
40
  '@servicetitan/startup': (0, _utils.getStartupVersion)(),
41
- '@servicetitan/web-components': (0, _getwebcomponentsversion.getWebComponentsVersion)(),
42
- 'launchdarkly-js-client-sdk': (0, _getlaunchdarklysdkversion.getLaunchDarklySdkVersion)()
41
+ '@servicetitan/web-components': (0, _getwebcomponentsversion.getWebComponentsVersion)(packageManager),
42
+ 'launchdarkly-js-client-sdk': (0, _getlaunchdarklysdkversion.getLaunchDarklySdkVersion)(packageManager)
43
43
  },
44
44
  sharedDependencies,
45
45
  dependencies,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/webpack/configs/utils/build-metadata.ts"],"sourcesContent":["import path from 'path';\nimport { getStartupVersion, readJsonSafe } from '../../../utils';\nimport { EntryPoints, Metadata } from '../types';\nimport { getLaunchDarklySdkVersion } from './get-launchdarkly-sdk-version';\nimport { getWebComponentsVersion } from './get-web-components-version';\n\nexport interface BuildMetadataParams {\n destination: string;\n name: string;\n version: string;\n dependencies: Record<string, string>;\n sharedDependencies: Record<string, string>;\n}\n\nexport function buildMetadata(params: BuildMetadataParams): Metadata {\n const { destination, name, version, dependencies, sharedDependencies } = params;\n\n const full = readJsonSafe(path.join(destination, 'bundle', 'full', 'entrypoints.json'));\n const light = readJsonSafe(path.join(destination, 'bundle', 'light', 'entrypoints.json'));\n const headless = readJsonSafe(path.join(destination, 'bundle', 'headless', 'entrypoints.json'));\n\n const entrypoints: EntryPoints = {\n ...(full ? { full } : {}),\n ...(light ? { light } : {}),\n ...(headless ? { headless } : {}),\n };\n\n return {\n name,\n version,\n bundledWith: {\n '@servicetitan/startup': getStartupVersion(),\n '@servicetitan/web-components': getWebComponentsVersion(),\n 'launchdarkly-js-client-sdk': getLaunchDarklySdkVersion(),\n },\n sharedDependencies,\n dependencies,\n entrypoints,\n };\n}\n"],"names":["buildMetadata","params","destination","name","version","dependencies","sharedDependencies","full","readJsonSafe","path","join","light","headless","entrypoints","bundledWith","getStartupVersion","getWebComponentsVersion","getLaunchDarklySdkVersion"],"mappings":";;;;+BAcgBA;;;eAAAA;;;6DAdC;uBAC+B;2CAEN;yCACF;;;;;;AAUjC,SAASA,cAAcC,MAA2B;IACrD,MAAM,EAAEC,WAAW,EAAEC,IAAI,EAAEC,OAAO,EAAEC,YAAY,EAAEC,kBAAkB,EAAE,GAAGL;IAEzE,MAAMM,OAAOC,IAAAA,mBAAY,EAACC,aAAI,CAACC,IAAI,CAACR,aAAa,UAAU,QAAQ;IACnE,MAAMS,QAAQH,IAAAA,mBAAY,EAACC,aAAI,CAACC,IAAI,CAACR,aAAa,UAAU,SAAS;IACrE,MAAMU,WAAWJ,IAAAA,mBAAY,EAACC,aAAI,CAACC,IAAI,CAACR,aAAa,UAAU,YAAY;IAE3E,MAAMW,cAA2B;QAC7B,GAAIN,OAAO;YAAEA;QAAK,IAAI,CAAC,CAAC;QACxB,GAAII,QAAQ;YAAEA;QAAM,IAAI,CAAC,CAAC;QAC1B,GAAIC,WAAW;YAAEA;QAAS,IAAI,CAAC,CAAC;IACpC;IAEA,OAAO;QACHT;QACAC;QACAU,aAAa;YACT,yBAAyBC,IAAAA,wBAAiB;YAC1C,gCAAgCC,IAAAA,gDAAuB;YACvD,8BAA8BC,IAAAA,oDAAyB;QAC3D;QACAX;QACAD;QACAQ;IACJ;AACJ"}
1
+ {"version":3,"sources":["../../../../src/webpack/configs/utils/build-metadata.ts"],"sourcesContent":["import type { PackageManager } from '@servicetitan/install';\nimport path from 'path';\nimport { getStartupVersion, readJsonSafe } from '../../../utils';\nimport { EntryPoints, Metadata } from '../types';\nimport { getLaunchDarklySdkVersion } from './get-launchdarkly-sdk-version';\nimport { getWebComponentsVersion } from './get-web-components-version';\n\nexport interface BuildMetadataParams {\n destination: string;\n name: string;\n version: string;\n dependencies: Record<string, string>;\n sharedDependencies: Record<string, string>;\n packageManager: PackageManager;\n}\n\nexport function buildMetadata(params: BuildMetadataParams): Metadata {\n const { destination, name, version, dependencies, sharedDependencies, packageManager } = params;\n\n const full = readJsonSafe(path.join(destination, 'bundle', 'full', 'entrypoints.json'));\n const light = readJsonSafe(path.join(destination, 'bundle', 'light', 'entrypoints.json'));\n const headless = readJsonSafe(path.join(destination, 'bundle', 'headless', 'entrypoints.json'));\n\n const entrypoints: EntryPoints = {\n ...(full ? { full } : {}),\n ...(light ? { light } : {}),\n ...(headless ? { headless } : {}),\n };\n\n return {\n name,\n version,\n bundledWith: {\n '@servicetitan/startup': getStartupVersion(),\n '@servicetitan/web-components': getWebComponentsVersion(packageManager),\n 'launchdarkly-js-client-sdk': getLaunchDarklySdkVersion(packageManager),\n },\n sharedDependencies,\n dependencies,\n entrypoints,\n };\n}\n"],"names":["buildMetadata","params","destination","name","version","dependencies","sharedDependencies","packageManager","full","readJsonSafe","path","join","light","headless","entrypoints","bundledWith","getStartupVersion","getWebComponentsVersion","getLaunchDarklySdkVersion"],"mappings":";;;;+BAgBgBA;;;eAAAA;;;6DAfC;uBAC+B;2CAEN;yCACF;;;;;;AAWjC,SAASA,cAAcC,MAA2B;IACrD,MAAM,EAAEC,WAAW,EAAEC,IAAI,EAAEC,OAAO,EAAEC,YAAY,EAAEC,kBAAkB,EAAEC,cAAc,EAAE,GAAGN;IAEzF,MAAMO,OAAOC,IAAAA,mBAAY,EAACC,aAAI,CAACC,IAAI,CAACT,aAAa,UAAU,QAAQ;IACnE,MAAMU,QAAQH,IAAAA,mBAAY,EAACC,aAAI,CAACC,IAAI,CAACT,aAAa,UAAU,SAAS;IACrE,MAAMW,WAAWJ,IAAAA,mBAAY,EAACC,aAAI,CAACC,IAAI,CAACT,aAAa,UAAU,YAAY;IAE3E,MAAMY,cAA2B;QAC7B,GAAIN,OAAO;YAAEA;QAAK,IAAI,CAAC,CAAC;QACxB,GAAII,QAAQ;YAAEA;QAAM,IAAI,CAAC,CAAC;QAC1B,GAAIC,WAAW;YAAEA;QAAS,IAAI,CAAC,CAAC;IACpC;IAEA,OAAO;QACHV;QACAC;QACAW,aAAa;YACT,yBAAyBC,IAAAA,wBAAiB;YAC1C,gCAAgCC,IAAAA,gDAAuB,EAACV;YACxD,8BAA8BW,IAAAA,oDAAyB,EAACX;QAC5D;QACAD;QACAD;QACAS;IACJ;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate-metadata.d.ts","sourceRoot":"","sources":["../../../../src/webpack/configs/utils/generate-metadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,QAoBhD"}
1
+ {"version":3,"file":"generate-metadata.d.ts","sourceRoot":"","sources":["../../../../src/webpack/configs/utils/generate-metadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,QAqBhD"}
@@ -18,7 +18,7 @@ function _interop_require_default(obj) {
18
18
  };
19
19
  }
20
20
  function generateMetadata(context) {
21
- const { destination, name, packageData, sharedDependencies } = context;
21
+ const { destination, name, packageData, packageManager, sharedDependencies } = context;
22
22
  if (!_fs.default.existsSync(destination)) {
23
23
  _fs.default.mkdirSync(destination, {
24
24
  recursive: true
@@ -29,7 +29,8 @@ function generateMetadata(context) {
29
29
  name,
30
30
  version: packageData.version,
31
31
  dependencies: packageData.dependencies,
32
- sharedDependencies
32
+ sharedDependencies,
33
+ packageManager
33
34
  });
34
35
  const outputFile = _path.default.join(destination, 'metadata.json');
35
36
  _fs.default.writeFileSync(outputFile, JSON.stringify(metadata, null, 2), 'utf8');
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/webpack/configs/utils/generate-metadata.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { log } from '../../../utils';\nimport { Context } from '../types';\nimport { buildMetadata } from './build-metadata';\n\nexport function generateMetadata(context: Context) {\n const { destination, name, packageData, sharedDependencies } = context;\n\n if (!fs.existsSync(destination)) {\n fs.mkdirSync(destination, { recursive: true });\n }\n\n const metadata = buildMetadata({\n destination,\n name,\n version: packageData.version,\n dependencies: packageData.dependencies,\n sharedDependencies,\n });\n\n const outputFile = path.join(destination, 'metadata.json');\n fs.writeFileSync(outputFile, JSON.stringify(metadata, null, 2), 'utf8');\n\n /* istanbul ignore next: debug only */\n log.debug('generate-metadata', `${outputFile}:`, () => JSON.stringify(metadata));\n}\n"],"names":["generateMetadata","context","destination","name","packageData","sharedDependencies","fs","existsSync","mkdirSync","recursive","metadata","buildMetadata","version","dependencies","outputFile","path","join","writeFileSync","JSON","stringify","log","debug"],"mappings":";;;;+BAMgBA;;;eAAAA;;;2DAND;6DACE;uBACG;+BAEU;;;;;;AAEvB,SAASA,iBAAiBC,OAAgB;IAC7C,MAAM,EAAEC,WAAW,EAAEC,IAAI,EAAEC,WAAW,EAAEC,kBAAkB,EAAE,GAAGJ;IAE/D,IAAI,CAACK,WAAE,CAACC,UAAU,CAACL,cAAc;QAC7BI,WAAE,CAACE,SAAS,CAACN,aAAa;YAAEO,WAAW;QAAK;IAChD;IAEA,MAAMC,WAAWC,IAAAA,4BAAa,EAAC;QAC3BT;QACAC;QACAS,SAASR,YAAYQ,OAAO;QAC5BC,cAAcT,YAAYS,YAAY;QACtCR;IACJ;IAEA,MAAMS,aAAaC,aAAI,CAACC,IAAI,CAACd,aAAa;IAC1CI,WAAE,CAACW,aAAa,CAACH,YAAYI,KAAKC,SAAS,CAACT,UAAU,MAAM,IAAI;IAEhE,oCAAoC,GACpCU,UAAG,CAACC,KAAK,CAAC,qBAAqB,GAAGP,WAAW,CAAC,CAAC,EAAE,IAAMI,KAAKC,SAAS,CAACT;AAC1E"}
1
+ {"version":3,"sources":["../../../../src/webpack/configs/utils/generate-metadata.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { log } from '../../../utils';\nimport { Context } from '../types';\nimport { buildMetadata } from './build-metadata';\n\nexport function generateMetadata(context: Context) {\n const { destination, name, packageData, packageManager, sharedDependencies } = context;\n\n if (!fs.existsSync(destination)) {\n fs.mkdirSync(destination, { recursive: true });\n }\n\n const metadata = buildMetadata({\n destination,\n name,\n version: packageData.version,\n dependencies: packageData.dependencies,\n sharedDependencies,\n packageManager,\n });\n\n const outputFile = path.join(destination, 'metadata.json');\n fs.writeFileSync(outputFile, JSON.stringify(metadata, null, 2), 'utf8');\n\n /* istanbul ignore next: debug only */\n log.debug('generate-metadata', `${outputFile}:`, () => JSON.stringify(metadata));\n}\n"],"names":["generateMetadata","context","destination","name","packageData","packageManager","sharedDependencies","fs","existsSync","mkdirSync","recursive","metadata","buildMetadata","version","dependencies","outputFile","path","join","writeFileSync","JSON","stringify","log","debug"],"mappings":";;;;+BAMgBA;;;eAAAA;;;2DAND;6DACE;uBACG;+BAEU;;;;;;AAEvB,SAASA,iBAAiBC,OAAgB;IAC7C,MAAM,EAAEC,WAAW,EAAEC,IAAI,EAAEC,WAAW,EAAEC,cAAc,EAAEC,kBAAkB,EAAE,GAAGL;IAE/E,IAAI,CAACM,WAAE,CAACC,UAAU,CAACN,cAAc;QAC7BK,WAAE,CAACE,SAAS,CAACP,aAAa;YAAEQ,WAAW;QAAK;IAChD;IAEA,MAAMC,WAAWC,IAAAA,4BAAa,EAAC;QAC3BV;QACAC;QACAU,SAAST,YAAYS,OAAO;QAC5BC,cAAcV,YAAYU,YAAY;QACtCR;QACAD;IACJ;IAEA,MAAMU,aAAaC,aAAI,CAACC,IAAI,CAACf,aAAa;IAC1CK,WAAE,CAACW,aAAa,CAACH,YAAYI,KAAKC,SAAS,CAACT,UAAU,MAAM,IAAI;IAEhE,oCAAoC,GACpCU,UAAG,CAACC,KAAK,CAAC,qBAAqB,GAAGP,WAAW,CAAC,CAAC,EAAE,IAAMI,KAAKC,SAAS,CAACT;AAC1E"}
@@ -1,2 +1,3 @@
1
- export declare function getLaunchDarklySdkVersion(): string | undefined;
1
+ import type { PackageManager } from '@servicetitan/install';
2
+ export declare function getLaunchDarklySdkVersion(packageManager: PackageManager): string | undefined;
2
3
  //# sourceMappingURL=get-launchdarkly-sdk-version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-launchdarkly-sdk-version.d.ts","sourceRoot":"","sources":["../../../../src/webpack/configs/utils/get-launchdarkly-sdk-version.ts"],"names":[],"mappings":"AAGA,wBAAgB,yBAAyB,uBAWxC"}
1
+ {"version":3,"file":"get-launchdarkly-sdk-version.d.ts","sourceRoot":"","sources":["../../../../src/webpack/configs/utils/get-launchdarkly-sdk-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,cAAc,sBAKvE"}
@@ -8,19 +8,11 @@ Object.defineProperty(exports, "getLaunchDarklySdkVersion", {
8
8
  return getLaunchDarklySdkVersion;
9
9
  }
10
10
  });
11
- const _path = /*#__PURE__*/ _interop_require_default(require("path"));
12
- const _utils = require("../../../utils");
13
- function _interop_require_default(obj) {
14
- return obj && obj.__esModule ? obj : {
15
- default: obj
16
- };
17
- }
18
- function getLaunchDarklySdkVersion() {
19
- try {
20
- return (0, _utils.readJson)(_path.default.join(_path.default.dirname(require.resolve('launchdarkly-js-client-sdk')), '../package.json')).version;
21
- } catch (unused) {
22
- // ignore
23
- }
11
+ function getLaunchDarklySdkVersion(packageManager) {
12
+ return packageManager.getResolvedVersion({
13
+ workspacePackage: packageManager.getWorkspacePackage(),
14
+ dependency: 'launchdarkly-js-client-sdk'
15
+ });
24
16
  }
25
17
 
26
18
  //# sourceMappingURL=get-launchdarkly-sdk-version.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/webpack/configs/utils/get-launchdarkly-sdk-version.ts"],"sourcesContent":["import path from 'path';\nimport { readJson } from '../../../utils';\n\nexport function getLaunchDarklySdkVersion() {\n try {\n return readJson<{ version: string }>(\n path.join(\n path.dirname(require.resolve('launchdarkly-js-client-sdk')),\n '../package.json'\n )\n ).version;\n } catch {\n // ignore\n }\n}\n"],"names":["getLaunchDarklySdkVersion","readJson","path","join","dirname","require","resolve","version"],"mappings":";;;;+BAGgBA;;;eAAAA;;;6DAHC;uBACQ;;;;;;AAElB,SAASA;IACZ,IAAI;QACA,OAAOC,IAAAA,eAAQ,EACXC,aAAI,CAACC,IAAI,CACLD,aAAI,CAACE,OAAO,CAACC,QAAQC,OAAO,CAAC,gCAC7B,oBAENC,OAAO;IACb,EAAE,eAAM;IACJ,SAAS;IACb;AACJ"}
1
+ {"version":3,"sources":["../../../../src/webpack/configs/utils/get-launchdarkly-sdk-version.ts"],"sourcesContent":["import type { PackageManager } from '@servicetitan/install';\n\nexport function getLaunchDarklySdkVersion(packageManager: PackageManager) {\n return packageManager.getResolvedVersion({\n workspacePackage: packageManager.getWorkspacePackage(),\n dependency: 'launchdarkly-js-client-sdk',\n });\n}\n"],"names":["getLaunchDarklySdkVersion","packageManager","getResolvedVersion","workspacePackage","getWorkspacePackage","dependency"],"mappings":";;;;+BAEgBA;;;eAAAA;;;AAAT,SAASA,0BAA0BC,cAA8B;IACpE,OAAOA,eAAeC,kBAAkB,CAAC;QACrCC,kBAAkBF,eAAeG,mBAAmB;QACpDC,YAAY;IAChB;AACJ"}
@@ -1,2 +1,3 @@
1
- export declare function getWebComponentsVersion(): string;
1
+ import type { PackageManager } from '@servicetitan/install';
2
+ export declare function getWebComponentsVersion(packageManager: PackageManager): string;
2
3
  //# sourceMappingURL=get-web-components-version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-web-components-version.d.ts","sourceRoot":"","sources":["../../../../src/webpack/configs/utils/get-web-components-version.ts"],"names":[],"mappings":"AAGA,wBAAgB,uBAAuB,WAItC"}
1
+ {"version":3,"file":"get-web-components-version.d.ts","sourceRoot":"","sources":["../../../../src/webpack/configs/utils/get-web-components-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,cAAc,UAWrE"}
@@ -8,15 +8,16 @@ Object.defineProperty(exports, "getWebComponentsVersion", {
8
8
  return getWebComponentsVersion;
9
9
  }
10
10
  });
11
- const _path = /*#__PURE__*/ _interop_require_default(require("path"));
12
- const _utils = require("../../../utils");
13
- function _interop_require_default(obj) {
14
- return obj && obj.__esModule ? obj : {
15
- default: obj
16
- };
17
- }
18
- function getWebComponentsVersion() {
19
- return (0, _utils.readJson)(_path.default.join(_path.default.dirname(require.resolve('@servicetitan/web-components')), '../package.json')).version;
11
+ const PACKAGE_NAME = '@servicetitan/web-components';
12
+ function getWebComponentsVersion(packageManager) {
13
+ const version = packageManager.getResolvedVersion({
14
+ workspacePackage: packageManager.getWorkspacePackage(),
15
+ dependency: PACKAGE_NAME
16
+ });
17
+ if (!version) {
18
+ throw new Error(`Unable to resolve ${PACKAGE_NAME} version`);
19
+ }
20
+ return version;
20
21
  }
21
22
 
22
23
  //# sourceMappingURL=get-web-components-version.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/webpack/configs/utils/get-web-components-version.ts"],"sourcesContent":["import path from 'path';\nimport { readJson } from '../../../utils';\n\nexport function getWebComponentsVersion() {\n return readJson<{ version: string }>(\n path.join(path.dirname(require.resolve('@servicetitan/web-components')), '../package.json')\n ).version;\n}\n"],"names":["getWebComponentsVersion","readJson","path","join","dirname","require","resolve","version"],"mappings":";;;;+BAGgBA;;;eAAAA;;;6DAHC;uBACQ;;;;;;AAElB,SAASA;IACZ,OAAOC,IAAAA,eAAQ,EACXC,aAAI,CAACC,IAAI,CAACD,aAAI,CAACE,OAAO,CAACC,QAAQC,OAAO,CAAC,kCAAkC,oBAC3EC,OAAO;AACb"}
1
+ {"version":3,"sources":["../../../../src/webpack/configs/utils/get-web-components-version.ts"],"sourcesContent":["import type { PackageManager } from '@servicetitan/install';\n\nconst PACKAGE_NAME = '@servicetitan/web-components';\n\nexport function getWebComponentsVersion(packageManager: PackageManager) {\n const version = packageManager.getResolvedVersion({\n workspacePackage: packageManager.getWorkspacePackage(),\n dependency: PACKAGE_NAME,\n });\n\n if (!version) {\n throw new Error(`Unable to resolve ${PACKAGE_NAME} version`);\n }\n\n return version;\n}\n"],"names":["getWebComponentsVersion","PACKAGE_NAME","packageManager","version","getResolvedVersion","workspacePackage","getWorkspacePackage","dependency","Error"],"mappings":";;;;+BAIgBA;;;eAAAA;;;AAFhB,MAAMC,eAAe;AAEd,SAASD,wBAAwBE,cAA8B;IAClE,MAAMC,UAAUD,eAAeE,kBAAkB,CAAC;QAC9CC,kBAAkBH,eAAeI,mBAAmB;QACpDC,YAAYN;IAChB;IAEA,IAAI,CAACE,SAAS;QACV,MAAM,IAAIK,MAAM,CAAC,kBAAkB,EAAEP,aAAa,QAAQ,CAAC;IAC/D;IAEA,OAAOE;AACX"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/startup",
3
- "version": "36.3.0",
3
+ "version": "36.3.1",
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": {
@@ -97,16 +97,16 @@
97
97
  "@jest/core": "~30.4.2",
98
98
  "@jest/types": "~30.4.1",
99
99
  "@jsdevtools/coverage-istanbul-loader": "^3.0.5",
100
- "@servicetitan/eslint-config": "36.3.0",
101
- "@servicetitan/install": "36.3.0",
102
- "@servicetitan/startup-utils": "36.3.0",
103
- "@servicetitan/stylelint-config": "36.3.0",
100
+ "@servicetitan/eslint-config": "36.3.1",
101
+ "@servicetitan/install": "36.3.1",
102
+ "@servicetitan/startup-utils": "36.3.1",
103
+ "@servicetitan/stylelint-config": "36.3.1",
104
104
  "@svgr/webpack": "^8.1.0",
105
105
  "@swc/cli": "^0.8.1",
106
106
  "@swc/core": "1.15.33",
107
107
  "@types/debug": "^4.1.12",
108
108
  "@types/jest": "~30.0.0",
109
- "@vitest/coverage-v8": "^4.1.5",
109
+ "@vitest/coverage-v8": "^4.1.6",
110
110
  "chalk": "~4.1.2",
111
111
  "cli-table3": "^0.6.5",
112
112
  "cpx2": "8.0.2",
@@ -142,22 +142,22 @@
142
142
  "prettier": "~3.8.3",
143
143
  "sass": "~1.99.0",
144
144
  "sass-loader": "~16.0.8",
145
- "semver": "~7.7.4",
145
+ "semver": "~7.8.0",
146
146
  "source-map-loader": "~5.0.0",
147
147
  "style-loader": "~4.0.0",
148
148
  "stylelint": "~16.26.1",
149
149
  "swc-loader": "^0.2.7",
150
150
  "terminal-link": "^5.0.0",
151
- "terser-webpack-plugin": "^5.5.0",
151
+ "terser-webpack-plugin": "^5.6.0",
152
152
  "ts-jest": "29.4.9",
153
153
  "ts-node": "~10.9.2",
154
154
  "typed-css-modules": "~0.9.1",
155
155
  "typescript": "5.9.3",
156
- "vitest": "^4.1.5",
156
+ "vitest": "^4.1.6",
157
157
  "webpack": "~5.106.2",
158
158
  "webpack-assets-manifest": "~6.5.1",
159
159
  "webpack-bundle-analyzer": "^5.3.0",
160
- "webpack-dev-server": "~5.2.3",
160
+ "webpack-dev-server": "^5.2.4",
161
161
  "webpack-filter-warnings-plugin": "~1.2.1",
162
162
  "webpack-merge": "~6.0.1",
163
163
  "webpack-remove-empty-scripts": "^1.1.1",
@@ -185,5 +185,5 @@
185
185
  "cli": {
186
186
  "webpack": false
187
187
  },
188
- "gitHead": "5c664540fe1fa530da3b311b28941e2fb26c6cff"
188
+ "gitHead": "93a049ba1e5cb737afb7bc95c06020736bc61a38"
189
189
  }
@@ -1,3 +1,4 @@
1
+ import { getPackageManager } from '@servicetitan/install';
1
2
  import { fs, vol } from 'memfs';
2
3
  import path from 'node:path';
3
4
  import * as utils from '../../../utils';
@@ -5,22 +6,13 @@ import { MfeCheck } from '../mfe-check';
5
6
  import { entry } from '../registry/mfe-check';
6
7
 
7
8
  jest.mock('fs', () => fs);
9
+ jest.mock('@servicetitan/install', () => ({ getPackageManager: jest.fn() }));
8
10
  jest.mock('../../../utils', () => ({
9
11
  ...jest.requireActual('../../../utils'),
10
12
  log: { info: jest.fn(), error: jest.fn(), warning: jest.fn() },
11
13
  }));
12
14
 
13
15
  describe(`[startup] ${MfeCheck.name}`, () => {
14
- let stdoutWriteSpy: jest.SpyInstance;
15
- let processExitCodeSpy: jest.SpyInstance;
16
- let mfeCheckArgs:
17
- | {
18
- metadata?: string;
19
- hostPackageJson?: string[];
20
- json?: boolean;
21
- }
22
- | undefined;
23
-
24
16
  const defaultMfeCheckArgs = {
25
17
  metadata: '/path/to/metadata.json',
26
18
  hostPackageJson: ['/path/to/host/package.json'],
@@ -48,12 +40,26 @@ describe(`[startup] ${MfeCheck.name}`, () => {
48
40
  },
49
41
  };
50
42
 
43
+ let stdoutWriteSpy: jest.SpyInstance;
44
+ let processExitCodeSpy: jest.SpyInstance;
45
+ let mfeCheckArgs:
46
+ | {
47
+ metadata?: string;
48
+ hostPackageJson?: string[];
49
+ json?: boolean;
50
+ }
51
+ | undefined;
52
+
51
53
  beforeEach(() => {
52
54
  jest.clearAllMocks();
53
55
 
54
56
  mfeCheckArgs = undefined;
55
57
  stdoutWriteSpy = jest.spyOn(process.stdout, 'write').mockImplementation(() => true);
56
58
  processExitCodeSpy = jest.spyOn(process, 'exitCode', 'set').mockImplementation(() => {});
59
+ jest.mocked(getPackageManager).mockReturnValue({
60
+ getResolvedVersion: jest.fn().mockReturnValue(undefined),
61
+ getWorkspacePackage: jest.fn().mockReturnValue(''),
62
+ } as any);
57
63
 
58
64
  vol.fromJSON({
59
65
  '/path/to/metadata.json': JSON.stringify(mockMetadata),
@@ -1,3 +1,4 @@
1
+ import { getPackageManager } from '@servicetitan/install';
1
2
  import { getVersionMismatches } from '@servicetitan/startup-utils';
2
3
  import path from 'node:path';
3
4
  import {
@@ -25,6 +26,10 @@ interface HostPackageJSON {
25
26
  };
26
27
  }
27
28
 
29
+ interface HostData extends HostPackageJSON {
30
+ location: string;
31
+ }
32
+
28
33
  interface CompatibilityResult {
29
34
  name: string;
30
35
  compatible: boolean;
@@ -56,7 +61,7 @@ export class MfeCheck extends Command<typeof entry> {
56
61
  return Promise.resolve();
57
62
  }
58
63
 
59
- private getHostPackageData(packageJsonPaths: string[]): HostPackageJSON {
64
+ private getHostPackageData(packageJsonPaths: string[]): HostData {
60
65
  const packages = packageJsonPaths.map(packageJsonPath =>
61
66
  readJson<HostPackageJSON>(path.resolve(packageJsonPath))
62
67
  );
@@ -70,21 +75,23 @@ export class MfeCheck extends Command<typeof entry> {
70
75
  name: mainPackage.name,
71
76
  cli: mainPackage.cli,
72
77
  dependencies: mergedDependencies,
78
+ location: path.dirname(path.resolve(packageJsonPaths[0])),
73
79
  };
74
80
  }
75
81
 
76
- private checkCompatibility(
77
- mfeMetadata: Metadata,
78
- hostData: HostPackageJSON
79
- ): CompatibilityResult {
82
+ private checkCompatibility(mfeMetadata: Metadata, hostData: HostData): CompatibilityResult {
80
83
  const mfeSharedDependencies = mfeMetadata.sharedDependencies;
81
84
  const hostSharedDependencies = loadSharedDependencies(
82
85
  hostData.dependencies,
83
86
  hostData.cli?.webpack?.['shared-dependencies']
84
87
  );
88
+ const packageManager = getPackageManager();
89
+ const workspacePackage = packageManager.getWorkspacePackage(hostData.location);
85
90
  const exposedDependencies = getExposedDependencies(
86
91
  hostSharedDependencies,
87
- hostData.dependencies
92
+ dependency =>
93
+ packageManager.getResolvedVersion({ workspacePackage, dependency }) ??
94
+ hostData.dependencies[dependency]
88
95
  );
89
96
  const mismatchResult = getVersionMismatches(
90
97
  exposedDependencies,
@@ -1,3 +1,4 @@
1
+ import { getPackageManager } from '@servicetitan/install';
1
2
  import fs from 'node:fs';
2
3
  import path from 'node:path';
3
4
  import {
@@ -36,6 +37,7 @@ export class MfeGenerateMetadata extends Command<typeof entry> {
36
37
  version: packageData.version,
37
38
  dependencies: packageData.dependencies,
38
39
  sharedDependencies,
40
+ packageManager: getPackageManager(),
39
41
  });
40
42
 
41
43
  const jsonOutput = JSON.stringify(metadata, null, 2);
@@ -1,4 +1,4 @@
1
- import { getPackageData, getPackageDependencyVersion } from '../get-package-data';
1
+ import { getPackageData } from '../get-package-data';
2
2
  import { readJson } from '../read-json';
3
3
 
4
4
  jest.mock('../read-json', () => ({ readJson: jest.fn() }));
@@ -46,48 +46,4 @@ describe(`[startup] Utils`, () => {
46
46
  });
47
47
  });
48
48
  });
49
-
50
- describe(`${getPackageDependencyVersion.name}`, () => {
51
- const dependency = 'foo';
52
- let defaultVersion: string | undefined;
53
-
54
- beforeEach(() => (defaultVersion = undefined));
55
-
56
- const subject = () => getPackageDependencyVersion(dependency, defaultVersion);
57
-
58
- function itReturnsUndefinedOrDefaultVersion() {
59
- test('returns undefined', () => {
60
- expect(subject()).toBe(undefined);
61
- });
62
-
63
- describe('with a default version', () => {
64
- beforeEach(() => (defaultVersion = '1.2.3'));
65
-
66
- test('returns default version', () => {
67
- expect(subject()).toBe(defaultVersion);
68
- });
69
- });
70
- }
71
-
72
- itReturnsUndefinedOrDefaultVersion();
73
-
74
- describe('when dependency exists', () => {
75
- const module: Record<string, any> = {};
76
-
77
- beforeEach(() => {
78
- module.version = '2.3.4';
79
- jest.doMock(`${dependency}/package.json`, () => module, { virtual: true });
80
- });
81
-
82
- test('returns dependency version', () => {
83
- expect(subject()).toBe(module.version);
84
- });
85
-
86
- describe('when dependency has no version', () => {
87
- beforeEach(() => delete module.version);
88
-
89
- itReturnsUndefinedOrDefaultVersion();
90
- });
91
- });
92
- });
93
49
  });
@@ -1,4 +1,4 @@
1
- import path from 'path';
1
+ import path from 'node:path';
2
2
 
3
3
  export function findUp<T>(callback: (directory: string) => T | undefined) {
4
4
  let directory = path.resolve('./');
@@ -20,17 +20,3 @@ export function getPackageData(): PackageData {
20
20
  sharedDependencies: packageJson.cli?.webpack?.['shared-dependencies'],
21
21
  };
22
22
  }
23
-
24
- export function getPackageDependencyVersion(dependency: string, defaultVersion?: string) {
25
- try {
26
- const { version } = require(`${dependency}/package.json`);
27
-
28
- if (version) {
29
- return version;
30
- }
31
- } catch {
32
- // skip error
33
- }
34
-
35
- return defaultVersion;
36
- }
@@ -1,3 +1,4 @@
1
+ import { getPackageManager } from '@servicetitan/install';
1
2
  import { fs, vol } from 'memfs';
2
3
 
3
4
  import * as mockFS from 'fs';
@@ -13,7 +14,6 @@ import yargs from 'yargs';
13
14
  import {
14
15
  getFolders,
15
16
  getPackageData,
16
- getPackageDependencyVersion,
17
17
  getPackages,
18
18
  getTsConfig,
19
19
  isCustomStyleRules,
@@ -42,11 +42,12 @@ jest.mock('webpack-assets-manifest', () => ({ WebpackAssetsManifest: jest.fn() }
42
42
  jest.mock('webpack-remove-empty-scripts', () => jest.fn());
43
43
  jest.mock('webpack-virtual-modules', () => jest.fn());
44
44
 
45
+ jest.mock('@servicetitan/install', () => ({ getPackageManager: jest.fn() }));
46
+
45
47
  jest.mock('../../utils', () => ({
46
48
  ...jest.requireActual('../../utils'),
47
49
  getFolders: jest.fn(),
48
50
  getPackageData: jest.fn(),
49
- getPackageDependencyVersion: jest.fn(),
50
51
  getPackages: jest.fn(),
51
52
  getTsConfig: jest.fn(),
52
53
  isCustomStyleRules: jest.fn(),
@@ -113,12 +114,15 @@ describe(`[startup] ${createWebpackConfig.name}`, () => {
113
114
  dependencies,
114
115
  sharedDependencies,
115
116
  });
116
- jest.mocked(getPackageDependencyVersion).mockImplementation(
117
- (_, defaultVersion) => defaultVersion
118
- );
119
117
  jest.mocked(getPackages).mockReturnValue([]);
120
118
  jest.mocked(getTsConfig).mockReturnValue(tsConfig);
121
119
  jest.mocked(loadSharedDependencies).mockReturnValue(sharedDependencies);
120
+ jest.mocked(getPackageManager).mockReturnValue({
121
+ command: 'npm',
122
+ lockFileName: 'package-lock.json',
123
+ getResolvedVersion: jest.fn().mockReturnValue(undefined),
124
+ getWorkspacePackage: jest.fn().mockReturnValue(''),
125
+ } as any);
122
126
 
123
127
  volumeFromJSON();
124
128
  });
@@ -162,7 +166,7 @@ describe(`[startup] ${createWebpackConfig.name}`, () => {
162
166
  Object.entries(sharedDependencies).map(([name, variable]) => [
163
167
  name,
164
168
  {
165
- version: getPackageDependencyVersion(name, dependencies[name]),
169
+ version: dependencies[name],
166
170
  variable,
167
171
  },
168
172
  ])
@@ -17,7 +17,6 @@ import {
17
17
  getConfiguration,
18
18
  getFolders,
19
19
  getPackageData,
20
- getPackageDependencyVersion,
21
20
  getPackages,
22
21
  getTsConfig,
23
22
  getWebpackConfiguration,
@@ -60,7 +59,6 @@ jest.mock('../../utils', () => ({
60
59
  getConfiguration: jest.fn(),
61
60
  getFolders: jest.fn(),
62
61
  getPackageData: jest.fn(),
63
- getPackageDependencyVersion: jest.fn(),
64
62
  getPackages: jest.fn(),
65
63
  getTsConfig: jest.fn(),
66
64
  getWebpackConfiguration: jest.fn(),
@@ -146,9 +144,6 @@ describe(`[startup] ${createWebpackConfig.name}`, () => {
146
144
  dependencies,
147
145
  sharedDependencies,
148
146
  });
149
- jest.mocked(getPackageDependencyVersion).mockImplementation(
150
- (_, defaultVersion) => defaultVersion
151
- );
152
147
  jest.mocked(getPackages).mockImplementation(() => packages);
153
148
  jest.mocked(getTsConfig).mockReturnValue(tsConfig);
154
149
  jest.mocked(loadSharedDependencies).mockReturnValue(sharedDependencies);
@@ -1,5 +1,4 @@
1
1
  import { DefinePlugin } from 'webpack';
2
- import { getPackageDependencyVersion } from '../../../utils';
3
2
  import { Context, Overrides } from '../types';
4
3
  import { getExposedDependencies } from '../utils';
5
4
 
@@ -9,9 +8,13 @@ export function defineExposedDependenciesPlugin(context: Context, _: Overrides)
9
8
  return;
10
9
  }
11
10
 
12
- const { packageData, sharedDependencies } = context;
13
- const exposedDependencies = getExposedDependencies(sharedDependencies, dependency =>
14
- getPackageDependencyVersion(dependency, packageData.dependencies?.[dependency])
11
+ const { packageData, packageManager, sharedDependencies } = context;
12
+ const workspacePackage = packageManager.getWorkspacePackage();
13
+ const exposedDependencies = getExposedDependencies(
14
+ sharedDependencies,
15
+ dependency =>
16
+ packageManager.getResolvedVersion({ workspacePackage, dependency }) ??
17
+ packageData.dependencies?.[dependency]
15
18
  );
16
19
 
17
20
  return new DefinePlugin({
@@ -9,7 +9,7 @@ export function defineExposedInstanceDependenciesPlugin(context: Context, _: Ove
9
9
  }
10
10
 
11
11
  const instanceDependencies = {
12
- launchDarkly: { version: getLaunchDarklySdkVersion() },
12
+ launchDarkly: { version: getLaunchDarklySdkVersion(context.packageManager) },
13
13
  };
14
14
 
15
15
  return new DefinePlugin({
@@ -1,30 +1,48 @@
1
- import { fs, vol } from 'memfs';
1
+ import type { PackageManager } from '@servicetitan/install';
2
2
  import { getLaunchDarklySdkVersion } from '../get-launchdarkly-sdk-version';
3
3
 
4
- jest.mock('fs', () => fs);
5
-
6
4
  describe(`[startup] ${getLaunchDarklySdkVersion.name}`, () => {
7
5
  const launchDarklySdkVersion = '1.2.3';
6
+ const workspacePackage = 'packages/foo';
7
+ let getResolvedVersion: jest.Mock;
8
+ let packageManager: PackageManager;
8
9
 
9
- const subject = () => getLaunchDarklySdkVersion();
10
-
11
- test('returns undefined', () => {
12
- expect(subject()).toBeUndefined();
10
+ beforeEach(() => {
11
+ getResolvedVersion = jest.fn();
12
+ packageManager = {
13
+ getResolvedVersion,
14
+ getWorkspacePackage: jest.fn().mockReturnValue(workspacePackage),
15
+ } as unknown as PackageManager;
13
16
  });
14
17
 
15
- describe('when package is present', () => {
18
+ const subject = () => getLaunchDarklySdkVersion(packageManager);
19
+
20
+ describe('when package is resolved', () => {
16
21
  beforeEach(() => {
17
- vol.fromJSON({
18
- 'node_modules/launchdarkly-js-client-sdk/package.json': JSON.stringify({
19
- version: launchDarklySdkVersion,
20
- }),
21
- });
22
+ getResolvedVersion.mockReturnValue(launchDarklySdkVersion);
22
23
  });
23
24
 
24
- afterEach(() => vol.reset());
25
+ test('queries the launchdarkly sdk package version', () => {
26
+ subject();
27
+
28
+ expect(getResolvedVersion).toHaveBeenCalledWith({
29
+ workspacePackage,
30
+ dependency: 'launchdarkly-js-client-sdk',
31
+ });
32
+ });
25
33
 
26
- test('returns version from launchdarkly-js-client-sdk package', () => {
34
+ test('returns version from package manager', () => {
27
35
  expect(subject()).toEqual(launchDarklySdkVersion);
28
36
  });
29
37
  });
38
+
39
+ describe('when package is not resolved', () => {
40
+ beforeEach(() => {
41
+ getResolvedVersion.mockReturnValue(undefined);
42
+ });
43
+
44
+ test('returns undefined', () => {
45
+ expect(subject()).toBeUndefined();
46
+ });
47
+ });
30
48
  });
@@ -1,24 +1,48 @@
1
- import { fs, vol } from 'memfs';
1
+ import type { PackageManager } from '@servicetitan/install';
2
2
  import { getWebComponentsVersion } from '../get-web-components-version';
3
3
 
4
- jest.mock('fs', () => fs);
5
-
6
4
  describe(`[startup] ${getWebComponentsVersion.name}`, () => {
7
5
  const webComponentsVersion = '1.2.3';
6
+ const workspacePackage = 'packages/foo';
7
+ let getResolvedVersion: jest.Mock;
8
+ let packageManager: PackageManager;
8
9
 
9
10
  beforeEach(() => {
10
- vol.fromJSON({
11
- 'packages/web-components/package.json': JSON.stringify({
12
- version: webComponentsVersion,
13
- }),
14
- });
11
+ getResolvedVersion = jest.fn();
12
+ packageManager = {
13
+ getResolvedVersion,
14
+ getWorkspacePackage: jest.fn().mockReturnValue(workspacePackage),
15
+ } as unknown as PackageManager;
15
16
  });
16
17
 
17
- afterEach(() => vol.reset());
18
+ const subject = () => getWebComponentsVersion(packageManager);
19
+
20
+ describe('when package is resolved', () => {
21
+ beforeEach(() => {
22
+ getResolvedVersion.mockReturnValue(webComponentsVersion);
23
+ });
24
+
25
+ test('queries the web-components package version', () => {
26
+ subject();
27
+
28
+ expect(getResolvedVersion).toHaveBeenCalledWith({
29
+ workspacePackage,
30
+ dependency: '@servicetitan/web-components',
31
+ });
32
+ });
33
+
34
+ test('returns version from package manager', () => {
35
+ expect(subject()).toEqual(webComponentsVersion);
36
+ });
37
+ });
18
38
 
19
- const subject = () => getWebComponentsVersion();
39
+ describe('when package is not resolved', () => {
40
+ beforeEach(() => {
41
+ getResolvedVersion.mockReturnValue(undefined);
42
+ });
20
43
 
21
- test('returns version from @servicetitan/web-components package', () => {
22
- expect(subject()).toEqual(webComponentsVersion);
44
+ test('throws error', () => {
45
+ expect(subject).toThrow('Unable to resolve @servicetitan/web-components version');
46
+ });
23
47
  });
24
48
  });
@@ -1,3 +1,4 @@
1
+ import type { PackageManager } from '@servicetitan/install';
1
2
  import path from 'path';
2
3
  import { getStartupVersion, readJsonSafe } from '../../../utils';
3
4
  import { EntryPoints, Metadata } from '../types';
@@ -10,10 +11,11 @@ export interface BuildMetadataParams {
10
11
  version: string;
11
12
  dependencies: Record<string, string>;
12
13
  sharedDependencies: Record<string, string>;
14
+ packageManager: PackageManager;
13
15
  }
14
16
 
15
17
  export function buildMetadata(params: BuildMetadataParams): Metadata {
16
- const { destination, name, version, dependencies, sharedDependencies } = params;
18
+ const { destination, name, version, dependencies, sharedDependencies, packageManager } = params;
17
19
 
18
20
  const full = readJsonSafe(path.join(destination, 'bundle', 'full', 'entrypoints.json'));
19
21
  const light = readJsonSafe(path.join(destination, 'bundle', 'light', 'entrypoints.json'));
@@ -30,8 +32,8 @@ export function buildMetadata(params: BuildMetadataParams): Metadata {
30
32
  version,
31
33
  bundledWith: {
32
34
  '@servicetitan/startup': getStartupVersion(),
33
- '@servicetitan/web-components': getWebComponentsVersion(),
34
- 'launchdarkly-js-client-sdk': getLaunchDarklySdkVersion(),
35
+ '@servicetitan/web-components': getWebComponentsVersion(packageManager),
36
+ 'launchdarkly-js-client-sdk': getLaunchDarklySdkVersion(packageManager),
35
37
  },
36
38
  sharedDependencies,
37
39
  dependencies,
@@ -5,7 +5,7 @@ import { Context } from '../types';
5
5
  import { buildMetadata } from './build-metadata';
6
6
 
7
7
  export function generateMetadata(context: Context) {
8
- const { destination, name, packageData, sharedDependencies } = context;
8
+ const { destination, name, packageData, packageManager, sharedDependencies } = context;
9
9
 
10
10
  if (!fs.existsSync(destination)) {
11
11
  fs.mkdirSync(destination, { recursive: true });
@@ -17,6 +17,7 @@ export function generateMetadata(context: Context) {
17
17
  version: packageData.version,
18
18
  dependencies: packageData.dependencies,
19
19
  sharedDependencies,
20
+ packageManager,
20
21
  });
21
22
 
22
23
  const outputFile = path.join(destination, 'metadata.json');
@@ -1,15 +1,8 @@
1
- import path from 'path';
2
- import { readJson } from '../../../utils';
1
+ import type { PackageManager } from '@servicetitan/install';
3
2
 
4
- export function getLaunchDarklySdkVersion() {
5
- try {
6
- return readJson<{ version: string }>(
7
- path.join(
8
- path.dirname(require.resolve('launchdarkly-js-client-sdk')),
9
- '../package.json'
10
- )
11
- ).version;
12
- } catch {
13
- // ignore
14
- }
3
+ export function getLaunchDarklySdkVersion(packageManager: PackageManager) {
4
+ return packageManager.getResolvedVersion({
5
+ workspacePackage: packageManager.getWorkspacePackage(),
6
+ dependency: 'launchdarkly-js-client-sdk',
7
+ });
15
8
  }
@@ -1,8 +1,16 @@
1
- import path from 'path';
2
- import { readJson } from '../../../utils';
1
+ import type { PackageManager } from '@servicetitan/install';
3
2
 
4
- export function getWebComponentsVersion() {
5
- return readJson<{ version: string }>(
6
- path.join(path.dirname(require.resolve('@servicetitan/web-components')), '../package.json')
7
- ).version;
3
+ const PACKAGE_NAME = '@servicetitan/web-components';
4
+
5
+ export function getWebComponentsVersion(packageManager: PackageManager) {
6
+ const version = packageManager.getResolvedVersion({
7
+ workspacePackage: packageManager.getWorkspacePackage(),
8
+ dependency: PACKAGE_NAME,
9
+ });
10
+
11
+ if (!version) {
12
+ throw new Error(`Unable to resolve ${PACKAGE_NAME} version`);
13
+ }
14
+
15
+ return version;
8
16
  }