@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.
- package/dist/cli/commands/mfe-check.d.ts.map +1 -1
- package/dist/cli/commands/mfe-check.js +12 -2
- package/dist/cli/commands/mfe-check.js.map +1 -1
- package/dist/cli/commands/mfe-generate-metadata.d.ts.map +1 -1
- package/dist/cli/commands/mfe-generate-metadata.js +3 -1
- package/dist/cli/commands/mfe-generate-metadata.js.map +1 -1
- package/dist/utils/find-up.js +4 -4
- package/dist/utils/find-up.js.map +1 -1
- package/dist/utils/get-package-data.d.ts +0 -1
- package/dist/utils/get-package-data.d.ts.map +1 -1
- package/dist/utils/get-package-data.js +3 -22
- package/dist/utils/get-package-data.js.map +1 -1
- package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.d.ts.map +1 -1
- package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js +9 -5
- package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js.map +1 -1
- package/dist/webpack/configs/plugins/define-exposed-instance-dependencies-plugin.js +1 -1
- package/dist/webpack/configs/plugins/define-exposed-instance-dependencies-plugin.js.map +1 -1
- package/dist/webpack/configs/utils/build-metadata.d.ts +2 -0
- package/dist/webpack/configs/utils/build-metadata.d.ts.map +1 -1
- package/dist/webpack/configs/utils/build-metadata.js +3 -3
- package/dist/webpack/configs/utils/build-metadata.js.map +1 -1
- package/dist/webpack/configs/utils/generate-metadata.d.ts.map +1 -1
- package/dist/webpack/configs/utils/generate-metadata.js +3 -2
- package/dist/webpack/configs/utils/generate-metadata.js.map +1 -1
- package/dist/webpack/configs/utils/get-launchdarkly-sdk-version.d.ts +2 -1
- package/dist/webpack/configs/utils/get-launchdarkly-sdk-version.d.ts.map +1 -1
- package/dist/webpack/configs/utils/get-launchdarkly-sdk-version.js +5 -13
- package/dist/webpack/configs/utils/get-launchdarkly-sdk-version.js.map +1 -1
- package/dist/webpack/configs/utils/get-web-components-version.d.ts +2 -1
- package/dist/webpack/configs/utils/get-web-components-version.d.ts.map +1 -1
- package/dist/webpack/configs/utils/get-web-components-version.js +10 -9
- package/dist/webpack/configs/utils/get-web-components-version.js.map +1 -1
- package/package.json +11 -11
- package/src/cli/commands/__tests__/mfe-check.test.ts +16 -10
- package/src/cli/commands/mfe-check.ts +13 -6
- package/src/cli/commands/mfe-generate-metadata.ts +2 -0
- package/src/utils/__tests__/get-package-data.test.ts +1 -45
- package/src/utils/find-up.ts +1 -1
- package/src/utils/get-package-data.ts +0 -14
- package/src/webpack/__tests__/create-webpack-config-shared-dependencies.test.ts +10 -6
- package/src/webpack/__tests__/create-webpack-config.test.ts +0 -5
- package/src/webpack/configs/plugins/define-exposed-dependencies-plugin.ts +7 -4
- package/src/webpack/configs/plugins/define-exposed-instance-dependencies-plugin.ts +1 -1
- package/src/webpack/configs/utils/__tests__/get-launchdarkly-sdk-version.test.ts +33 -15
- package/src/webpack/configs/utils/__tests__/get-web-components-version.test.ts +36 -12
- package/src/webpack/configs/utils/build-metadata.ts +5 -3
- package/src/webpack/configs/utils/generate-metadata.ts +2 -1
- package/src/webpack/configs/utils/get-launchdarkly-sdk-version.ts +6 -13
- 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":"
|
|
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
|
|
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[]):
|
|
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":";;;;+BAyCaA;;;eAAAA;;;yBAzCqB;8BACG;iEACpB;uBAQV;wBAEgC;uBAEf;;;;;;;;;;;;;;;AA2BjB,MAAMA,iBAAiBC,cAAO;IACjC,MACMC,UAAU;QACZ,MAAM,EAAEC,UAAUC,YAAY,EAAEC,eAAe,EAAEC,IAAI,EAAE,GAAG,IAAI,CAACC,IAAI;QACnE,MAAMC,cAAcC,IAAAA,eAAQ,EAAWC,iBAAI,CAACC,OAAO,CAACP;QACpD,MAAMQ,uBAAuBC,IAAAA,cAAO,EAACR;QACrC,MAAMS,WAAW,IAAI,CAACC,kBAAkB,CAACH;QACzC,MAAMI,SAAS,IAAI,CAACC,kBAAkB,CAACT,aAAaM;QAEpD,IAAIR,MAAM;YACN,IAAI,CAACY,UAAU,CAACF;QACpB,OAAO;YACH,IAAI,CAACG,mBAAmB,CAACH;QAC7B;QAEA,IAAI,CAACA,OAAOI,UAAU,EAAE;YACpBC,QAAQC,QAAQ,GAAG;QACvB;QAEA,OAAOC,QAAQZ,OAAO;IAC1B;IAEQI,mBAAmBS,gBAA0B,EAAY;QAC7D,MAAMC,WAAWD,iBAAiBE,GAAG,CAACC,CAAAA,kBAClClB,IAAAA,eAAQ,EAAkBC,iBAAI,CAACC,OAAO,CAACgB;QAE3C,MAAMC,qBAAqBH,SAASI,WAAW,CAC3C,CAACb,QAAQc,iBAAmBC,OAAOC,MAAM,CAAChB,QAAQc,eAAeG,YAAY,GAC7E,CAAC;QAEL,MAAMC,cAAcT,QAAQ,CAAC,EAAE;QAE/B,OAAO;YACHU,MAAMD,YAAYC,IAAI;YACtBC,KAAKF,YAAYE,GAAG;YACpBH,cAAcL;YACdS,UAAU3B,iBAAI,CAAC4B,OAAO,CAAC5B,iBAAI,CAACC,OAAO,CAACa,gBAAgB,CAAC,EAAE;QAC3D;IACJ;IAEQP,mBAAmBT,WAAqB,EAAEM,QAAkB,EAAuB;YAInFA,uBAAAA,eAkBAA,wBAAAA;QArBJ,MAAMyB,wBAAwB/B,YAAYgC,kBAAkB;QAC5D,MAAMC,yBAAyBC,IAAAA,6BAAsB,EACjD5B,SAASmB,YAAY,GACrBnB,gBAAAA,SAASsB,GAAG,cAAZtB,qCAAAA,wBAAAA,cAAc6B,OAAO,cAArB7B,4CAAAA,qBAAuB,CAAC,sBAAsB;QAElD,MAAM8B,iBAAiBC,IAAAA,0BAAiB;QACxC,MAAMC,mBAAmBF,eAAeG,mBAAmB,CAACjC,SAASuB,QAAQ;QAC7E,MAAMW,sBAAsBC,IAAAA,8BAAsB,EAC9CR,wBACAS,CAAAA;gBACIN;oBAAAA,qCAAAA,eAAeO,kBAAkB,CAAC;gBAAEL;gBAAkBI;YAAW,gBAAjEN,gDAAAA,qCACA9B,SAASmB,YAAY,CAACiB,WAAW;;QAEzC,MAAME,iBAAiBC,IAAAA,kCAAoB,EACvCL,qBACAxC,YAAYyB,YAAY,EACxBM;QAGJ,MAAMe,YAAYC,IAAAA,qBAAc,EAACzC;QACjC,MAAM0C,8BACF1C,EAAAA,iBAAAA,SAASsB,GAAG,cAAZtB,sCAAAA,yBAAAA,eAAc6B,OAAO,cAArB7B,6CAAAA,sBAAuB,CAAC,6BAA6B,MAAK;QAC9D,MAAMM,aAAa,CAACkC,aAAa,CAACF,kBAAkBI;QAEpD,OAAO;YACHrB,MAAM3B,YAAY2B,IAAI;YACtBf;YACAqC,YAAYrC,aAAa,UAAU;YACnCoC;YACAF;YACA,GAAIF,iBAAiB;gBAAEM,YAAYN;YAAe,IAAI,CAAC,CAAC;QAC5D;IACJ;IAEQlC,WAAWF,MAA2B,EAAE;QAC5CK,QAAQsC,MAAM,CAACC,KAAK,CAACC,KAAKC,SAAS,CAAC9C,QAAQ,MAAM,KAAK;IAC3D;IAEQG,oBAAoBH,MAA2B,EAAE;QACrD+C,UAAG,CAACC,IAAI,CAAC,CAAC,SAAS,EAAEhD,OAAOmB,IAAI,CAAC,GAAG,CAAC;QAErC,IAAInB,OAAOsC,SAAS,EAAE;YAClBS,UAAG,CAACE,KAAK,CAAC;YACV;QACJ;QAEA,IAAIjD,OAAOI,UAAU,EAAE;YACnB2C,UAAG,CAACC,IAAI,CAAC;YACT;QACJ;QAEA,IAAIhD,OAAO0C,UAAU,EAAE;YACnBK,UAAG,CAACE,KAAK,CAAC;YAEV,KAAK,MAAM,CAACC,KAAKC,SAAS,IAAIpC,OAAOqC,OAAO,CAACpD,OAAO0C,UAAU,EAAG;gBAC7DK,UAAG,CAACE,KAAK,CAAC,CAAC,EAAE,EAAEC,IAAI,OAAO,EAAEC,SAASE,IAAI,CAAC,UAAU,EAAEF,SAASG,OAAO,EAAE;YAC5E;QACJ;QAEA,IAAI,CAACtD,OAAOwC,2BAA2B,EAAE;YACrCO,UAAG,CAACE,KAAK,CAAC;QACd;QAEAF,UAAG,CAACE,KAAK,CAAC;IACd;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mfe-generate-metadata.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-generate-metadata.ts"],"names":[],"mappings":"
|
|
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":";;;;+
|
|
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"}
|
package/dist/utils/find-up.js
CHANGED
|
@@ -8,21 +8,21 @@ Object.defineProperty(exports, "findUp", {
|
|
|
8
8
|
return findUp;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const
|
|
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 =
|
|
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 =
|
|
25
|
-
}while (
|
|
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;;;
|
|
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
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
|
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;
|
|
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("
|
|
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
|
|
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 (
|
|
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 {
|
|
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;
|
|
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":"
|
|
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":";;;;+
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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":"
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-web-components-version.d.ts","sourceRoot":"","sources":["../../../../src/webpack/configs/utils/get-web-components-version.ts"],"names":[],"mappings":"
|
|
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
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
|
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.
|
|
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.
|
|
101
|
-
"@servicetitan/install": "36.3.
|
|
102
|
-
"@servicetitan/startup-utils": "36.3.
|
|
103
|
-
"@servicetitan/stylelint-config": "36.3.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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": "
|
|
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": "
|
|
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[]):
|
|
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
|
-
|
|
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
|
|
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
|
});
|
package/src/utils/find-up.ts
CHANGED
|
@@ -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:
|
|
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
|
|
14
|
-
|
|
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 {
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
18
|
+
const subject = () => getLaunchDarklySdkVersion(packageManager);
|
|
19
|
+
|
|
20
|
+
describe('when package is resolved', () => {
|
|
16
21
|
beforeEach(() => {
|
|
17
|
-
|
|
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
|
-
|
|
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
|
|
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 {
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
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
|
-
|
|
39
|
+
describe('when package is not resolved', () => {
|
|
40
|
+
beforeEach(() => {
|
|
41
|
+
getResolvedVersion.mockReturnValue(undefined);
|
|
42
|
+
});
|
|
20
43
|
|
|
21
|
-
|
|
22
|
-
|
|
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
|
|
2
|
-
import { readJson } from '../../../utils';
|
|
1
|
+
import type { PackageManager } from '@servicetitan/install';
|
|
3
2
|
|
|
4
|
-
export function getLaunchDarklySdkVersion() {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
|
2
|
-
import { readJson } from '../../../utils';
|
|
1
|
+
import type { PackageManager } from '@servicetitan/install';
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
}
|