@servicetitan/startup 35.1.0 → 35.2.0-far-1776.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/mfe-generate-metadata.d.ts.map +1 -1
- package/dist/cli/commands/mfe-generate-metadata.js +6 -4
- package/dist/cli/commands/mfe-generate-metadata.js.map +1 -1
- package/dist/utils/find-package-lock.d.ts +2 -0
- package/dist/utils/find-package-lock.d.ts.map +1 -0
- package/dist/utils/find-package-lock.js +26 -0
- package/dist/utils/find-package-lock.js.map +1 -0
- 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.map +1 -1
- package/dist/utils/get-package-data.js +28 -1
- package/dist/utils/get-package-data.js.map +1 -1
- package/dist/utils/get-package-version.d.ts +2 -0
- package/dist/utils/get-package-version.d.ts.map +1 -0
- package/dist/utils/get-package-version.js +31 -0
- package/dist/utils/get-package-version.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/webpack/configs/cache-config.d.ts.map +1 -1
- package/dist/webpack/configs/cache-config.js +1 -14
- package/dist/webpack/configs/cache-config.js.map +1 -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 +1 -11
- package/dist/webpack/configs/utils/get-launchdarkly-sdk-version.js.map +1 -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 +5 -7
- package/dist/webpack/configs/utils/get-web-components-version.js.map +1 -1
- package/package.json +2 -3
- package/src/cli/commands/__tests__/mfe-generate-metadata.test.ts +23 -4
- package/src/cli/commands/mfe-generate-metadata.ts +6 -6
- package/src/utils/__tests__/find-package-lock.test.ts +35 -0
- package/src/utils/__tests__/get-package-data.test.ts +97 -26
- package/src/utils/__tests__/get-package-version.test.ts +120 -0
- package/src/utils/find-package-lock.ts +10 -0
- package/src/utils/find-up.ts +1 -1
- package/src/utils/get-package-data.ts +27 -2
- package/src/utils/get-package-version.ts +31 -0
- package/src/utils/index.ts +2 -0
- package/src/webpack/configs/cache-config.ts +1 -10
- package/src/webpack/configs/utils/__tests__/get-launchdarkly-sdk-version.test.ts +24 -8
- package/src/webpack/configs/utils/__tests__/get-web-components-version.test.ts +30 -10
- package/src/webpack/configs/utils/get-launchdarkly-sdk-version.ts +2 -12
- package/src/webpack/configs/utils/get-web-components-version.ts +8 -5
|
@@ -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":"AAWA,OAAO,EAAE,OAAO,EAAkB,MAAM,SAAS,CAAC;AAElD,QAAA,MAAM,OAAO;;;;;CAKa,CAAC;AAE3B,qBAAa,mBAAoB,SAAQ,OAAO,CAAC,OAAO,OAAO,CAAC;IAC5D,MAAM,CAAC,QAAQ,CAAC,kBAAkB,QAAQ;IAC1C,MAAM,CAAC,QAAQ,CAAC,WAAW,sDAAsD;IACjF,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;;MAAW;IAG5B,OAAO;CA0ChB"}
|
|
@@ -48,11 +48,13 @@ const options = {
|
|
|
48
48
|
};
|
|
49
49
|
class MfeGenerateMetadata extends _types.Command {
|
|
50
50
|
async execute() {
|
|
51
|
-
if (!(0, _utils.isWebComponent)()) {
|
|
52
|
-
throw new Error('this command must be run inside a web-component directory');
|
|
53
|
-
}
|
|
54
51
|
const { output } = this.args;
|
|
55
|
-
|
|
52
|
+
let destination;
|
|
53
|
+
try {
|
|
54
|
+
({ destination } = (0, _utils.getFolders)());
|
|
55
|
+
} catch (unused) {
|
|
56
|
+
destination = 'dist';
|
|
57
|
+
}
|
|
56
58
|
const name = (0, _utils.getPackageName)();
|
|
57
59
|
const packageData = (0, _utils.getPackageData)();
|
|
58
60
|
const sharedDependencies = (0, _utils.loadSharedDependencies)(packageData.dependencies, packageData.sharedDependencies);
|
|
@@ -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
|
|
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 loadSharedDependencies,\n log,\n logErrors,\n} from '../../utils';\nimport { buildMetadata } from '../../webpack/configs/utils/build-metadata';\nimport { Command, CommandOptions } from './types';\n\nconst options = {\n output: {\n description: 'Output file path (outputs to stdout if not specified)',\n string: true,\n },\n} satisfies CommandOptions;\n\nexport class MfeGenerateMetadata extends Command<typeof options> {\n static readonly allowRunFromGlobal = true;\n static readonly description = 'Generate MFE metadata for compatibility checking';\n static readonly options = options;\n\n @logErrors\n async execute() {\n const { output } = this.args;\n\n let destination: string;\n try {\n ({ destination } = getFolders());\n } catch {\n destination = 'dist';\n }\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","options","output","description","string","Command","execute","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","allowRunFromGlobal"],"mappings":";;;;+BAoBaA;;;eAAAA;;;+DApBE;iEACE;uBAQV;+BACuB;uBACU;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAExC,MAAMC,UAAU;IACZC,QAAQ;QACJC,aAAa;QACbC,QAAQ;IACZ;AACJ;AAEO,MAAMJ,4BAA4BK,cAAO;IAK5C,MACMC,UAAU;QACZ,MAAM,EAAEJ,MAAM,EAAE,GAAG,IAAI,CAACK,IAAI;QAE5B,IAAIC;QACJ,IAAI;YACC,CAAA,EAAEA,WAAW,EAAE,GAAGC,IAAAA,iBAAU,GAAC;QAClC,EAAE,eAAM;YACJD,cAAc;QAClB;QACA,MAAME,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,IAAIf,QAAQ;YACR,MAAMqB,aAAaC,iBAAI,CAACC,OAAO,CAACvB;YAChC,MAAMwB,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;AA/CI,iBADSzB,qBACOuC,sBAAqB;AACrC,iBAFSvC,qBAEOG,eAAc;AAC9B,iBAHSH,qBAGOC,WAAUA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-package-lock.d.ts","sourceRoot":"","sources":["../../src/utils/find-package-lock.ts"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,uBAK9B"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "findPackageLock", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return findPackageLock;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _nodefs = /*#__PURE__*/ _interop_require_default(require("node:fs"));
|
|
12
|
+
const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
|
|
13
|
+
const _findup = require("./find-up");
|
|
14
|
+
function _interop_require_default(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function findPackageLock() {
|
|
20
|
+
return (0, _findup.findUp)((directory)=>{
|
|
21
|
+
const lockFile = _nodepath.default.resolve(directory, 'package-lock.json');
|
|
22
|
+
return _nodefs.default.existsSync(lockFile) ? lockFile : undefined;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=find-package-lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/find-package-lock.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport { findUp } from './find-up';\n\nexport function findPackageLock() {\n return findUp(directory => {\n const lockFile = path.resolve(directory, 'package-lock.json');\n return fs.existsSync(lockFile) ? lockFile : undefined;\n });\n}\n"],"names":["findPackageLock","findUp","directory","lockFile","path","resolve","fs","existsSync","undefined"],"mappings":";;;;+BAIgBA;;;eAAAA;;;+DAJD;iEACE;wBACM;;;;;;AAEhB,SAASA;IACZ,OAAOC,IAAAA,cAAM,EAACC,CAAAA;QACV,MAAMC,WAAWC,iBAAI,CAACC,OAAO,CAACH,WAAW;QACzC,OAAOI,eAAE,CAACC,UAAU,CAACJ,YAAYA,WAAWK;IAChD;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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-package-data.d.ts","sourceRoot":"","sources":["../../src/utils/get-package-data.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-package-data.d.ts","sourceRoot":"","sources":["../../src/utils/get-package-data.ts"],"names":[],"mappings":"AAIA,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;AAyBD,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,OAYtF"}
|
|
@@ -16,7 +16,14 @@ _export(exports, {
|
|
|
16
16
|
return getPackageDependencyVersion;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
|
+
const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
|
|
20
|
+
const _findup = require("./find-up");
|
|
19
21
|
const _readjson = require("./read-json");
|
|
22
|
+
function _interop_require_default(obj) {
|
|
23
|
+
return obj && obj.__esModule ? obj : {
|
|
24
|
+
default: obj
|
|
25
|
+
};
|
|
26
|
+
}
|
|
20
27
|
function getPackageData() {
|
|
21
28
|
var _packageJson_cli_webpack, _packageJson_cli;
|
|
22
29
|
const packageJson = (0, _readjson.readJson)('./package.json');
|
|
@@ -24,12 +31,32 @@ function getPackageData() {
|
|
|
24
31
|
name: packageJson.name,
|
|
25
32
|
version: packageJson.version,
|
|
26
33
|
dependencies: {
|
|
27
|
-
...(
|
|
34
|
+
...findRootDependencies(),
|
|
28
35
|
...packageJson.dependencies
|
|
29
36
|
},
|
|
30
37
|
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
38
|
};
|
|
32
39
|
}
|
|
40
|
+
function findRootDependencies() {
|
|
41
|
+
var _ref;
|
|
42
|
+
const cwd = _nodepath.default.resolve('./');
|
|
43
|
+
const root = (0, _findup.findUp)((directory)=>{
|
|
44
|
+
var _readJsonSafe;
|
|
45
|
+
if (directory === cwd) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
const pkgPath = _nodepath.default.join(directory, 'package.json');
|
|
49
|
+
const pkg = (0, _readjson.readJsonSafe)(pkgPath);
|
|
50
|
+
if (pkg === null || pkg === void 0 ? void 0 : pkg.workspaces) {
|
|
51
|
+
return pkg;
|
|
52
|
+
}
|
|
53
|
+
const lernaPath = _nodepath.default.join(directory, 'lerna.json');
|
|
54
|
+
if ((_readJsonSafe = (0, _readjson.readJsonSafe)(lernaPath)) === null || _readJsonSafe === void 0 ? void 0 : _readJsonSafe.packages) {
|
|
55
|
+
return pkg !== null && pkg !== void 0 ? pkg : {};
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return (_ref = root === null || root === void 0 ? void 0 : root.dependencies) !== null && _ref !== void 0 ? _ref : {};
|
|
59
|
+
}
|
|
33
60
|
function getPackageDependencyVersion(dependency, defaultVersion) {
|
|
34
61
|
try {
|
|
35
62
|
const { version } = require(`${dependency}/package.json`);
|
|
@@ -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 ...
|
|
1
|
+
{"version":3,"sources":["../../src/utils/get-package-data.ts"],"sourcesContent":["import path from 'node:path';\nimport { findUp } from './find-up';\nimport { readJson, readJsonSafe } 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 ...findRootDependencies(),\n ...packageJson.dependencies,\n },\n sharedDependencies: packageJson.cli?.webpack?.['shared-dependencies'],\n };\n}\n\nfunction findRootDependencies() {\n const cwd = path.resolve('./');\n const root = findUp(directory => {\n if (directory === cwd) {\n return undefined;\n }\n const pkgPath = path.join(directory, 'package.json');\n const pkg = readJsonSafe<{ workspaces?: string[]; dependencies?: Record<string, string> }>(\n pkgPath\n );\n if (pkg?.workspaces) {\n return pkg;\n }\n\n const lernaPath = path.join(directory, 'lerna.json');\n if (readJsonSafe<{ packages?: string[] }>(lernaPath)?.packages) {\n return pkg ?? {};\n }\n });\n\n return root?.dependencies ?? {};\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","findRootDependencies","sharedDependencies","cli","webpack","cwd","path","resolve","root","findUp","directory","readJsonSafe","undefined","pkgPath","join","pkg","workspaces","lernaPath","packages","dependency","defaultVersion","require"],"mappings":";;;;;;;;;;;QAWgBA;eAAAA;;QAqCAC;eAAAA;;;iEAhDC;wBACM;0BACgB;;;;;;AAShC,SAASD;QAUYE,0BAAAA;IATxB,MAAMA,cAAcC,IAAAA,kBAAQ,EAAC;IAE7B,OAAO;QACHC,MAAMF,YAAYE,IAAI;QACtBC,SAASH,YAAYG,OAAO;QAC5BC,cAAc;YACV,GAAGC,sBAAsB;YACzB,GAAGL,YAAYI,YAAY;QAC/B;QACAE,kBAAkB,GAAEN,mBAAAA,YAAYO,GAAG,cAAfP,wCAAAA,2BAAAA,iBAAiBQ,OAAO,cAAxBR,+CAAAA,wBAA0B,CAAC,sBAAsB;IACzE;AACJ;AAEA,SAASK;;IACL,MAAMI,MAAMC,iBAAI,CAACC,OAAO,CAAC;IACzB,MAAMC,OAAOC,IAAAA,cAAM,EAACC,CAAAA;YAaZC;QAZJ,IAAID,cAAcL,KAAK;YACnB,OAAOO;QACX;QACA,MAAMC,UAAUP,iBAAI,CAACQ,IAAI,CAACJ,WAAW;QACrC,MAAMK,MAAMJ,IAAAA,sBAAY,EACpBE;QAEJ,IAAIE,gBAAAA,0BAAAA,IAAKC,UAAU,EAAE;YACjB,OAAOD;QACX;QAEA,MAAME,YAAYX,iBAAI,CAACQ,IAAI,CAACJ,WAAW;QACvC,KAAIC,gBAAAA,IAAAA,sBAAY,EAA0BM,wBAAtCN,oCAAAA,cAAkDO,QAAQ,EAAE;YAC5D,OAAOH,gBAAAA,iBAAAA,MAAO,CAAC;QACnB;IACJ;IAEA,eAAOP,iBAAAA,2BAAAA,KAAMR,YAAY,uCAAI,CAAC;AAClC;AAEO,SAASL,4BAA4BwB,UAAkB,EAAEC,cAAuB;IACnF,IAAI;QACA,MAAM,EAAErB,OAAO,EAAE,GAAGsB,QAAQ,GAAGF,WAAW,aAAa,CAAC;QAExD,IAAIpB,SAAS;YACT,OAAOA;QACX;IACJ,EAAE,eAAM;IACJ,aAAa;IACjB;IAEA,OAAOqB;AACX"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-package-version.d.ts","sourceRoot":"","sources":["../../src/utils/get-package-version.ts"],"names":[],"mappings":"AAaA,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,sBAiBpD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "getPackageVersion", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return getPackageVersion;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _findpackagelock = require("./find-package-lock");
|
|
12
|
+
const _readjson = require("./read-json");
|
|
13
|
+
function getPackageVersion(packageName) {
|
|
14
|
+
var _lockFile_packages;
|
|
15
|
+
const lockFilePath = (0, _findpackagelock.findPackageLock)();
|
|
16
|
+
if (!lockFilePath) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
const lockFile = (0, _readjson.readJsonSafe)(lockFilePath);
|
|
20
|
+
const entry = lockFile === null || lockFile === void 0 ? void 0 : (_lockFile_packages = lockFile.packages) === null || _lockFile_packages === void 0 ? void 0 : _lockFile_packages[`node_modules/${packageName}`];
|
|
21
|
+
if (!entry) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
if (entry.link && entry.resolved) {
|
|
25
|
+
var _lockFile_packages_entry_resolved, _lockFile_packages1;
|
|
26
|
+
return lockFile === null || lockFile === void 0 ? void 0 : (_lockFile_packages1 = lockFile.packages) === null || _lockFile_packages1 === void 0 ? void 0 : (_lockFile_packages_entry_resolved = _lockFile_packages1[entry.resolved]) === null || _lockFile_packages_entry_resolved === void 0 ? void 0 : _lockFile_packages_entry_resolved.version;
|
|
27
|
+
}
|
|
28
|
+
return entry.version;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=get-package-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/get-package-version.ts"],"sourcesContent":["import { findPackageLock } from './find-package-lock';\nimport { readJsonSafe } from './read-json';\n\ninterface PackageLockEntry {\n version?: string;\n resolved?: string;\n link?: boolean;\n}\n\ninterface PackageLock {\n packages: Record<string, PackageLockEntry>;\n}\n\nexport function getPackageVersion(packageName: string) {\n const lockFilePath = findPackageLock();\n if (!lockFilePath) {\n return undefined;\n }\n\n const lockFile = readJsonSafe<PackageLock>(lockFilePath);\n const entry = lockFile?.packages?.[`node_modules/${packageName}`];\n if (!entry) {\n return undefined;\n }\n\n if (entry.link && entry.resolved) {\n return lockFile?.packages?.[entry.resolved]?.version;\n }\n\n return entry.version;\n}\n"],"names":["getPackageVersion","packageName","lockFile","lockFilePath","findPackageLock","undefined","readJsonSafe","entry","packages","link","resolved","version"],"mappings":";;;;+BAagBA;;;eAAAA;;;iCAbgB;0BACH;AAYtB,SAASA,kBAAkBC,WAAmB;QAOnCC;IANd,MAAMC,eAAeC,IAAAA,gCAAe;IACpC,IAAI,CAACD,cAAc;QACf,OAAOE;IACX;IAEA,MAAMH,WAAWI,IAAAA,sBAAY,EAAcH;IAC3C,MAAMI,QAAQL,qBAAAA,gCAAAA,qBAAAA,SAAUM,QAAQ,cAAlBN,yCAAAA,kBAAoB,CAAC,CAAC,aAAa,EAAED,aAAa,CAAC;IACjE,IAAI,CAACM,OAAO;QACR,OAAOF;IACX;IAEA,IAAIE,MAAME,IAAI,IAAIF,MAAMG,QAAQ,EAAE;YACvBR,mCAAAA;QAAP,OAAOA,qBAAAA,gCAAAA,sBAAAA,SAAUM,QAAQ,cAAlBN,2CAAAA,oCAAAA,mBAAoB,CAACK,MAAMG,QAAQ,CAAC,cAApCR,wDAAAA,kCAAsCS,OAAO;IACxD;IAEA,OAAOJ,MAAMI,OAAO;AACxB"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from './find-package-lock';
|
|
1
2
|
export * from './find-packages';
|
|
2
3
|
export * from './find-up';
|
|
3
4
|
export * from './format-duration';
|
|
@@ -10,6 +11,7 @@ export * from './get-folders';
|
|
|
10
11
|
export * from './get-jest-config';
|
|
11
12
|
export * from './get-package-data';
|
|
12
13
|
export * from './get-package-name';
|
|
14
|
+
export * from './get-package-version';
|
|
13
15
|
export * from './get-packages';
|
|
14
16
|
export * from './get-startup-version';
|
|
15
17
|
export * from './get-tsconfig';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
+
_export_star(require("./find-package-lock"), exports);
|
|
5
6
|
_export_star(require("./find-packages"), exports);
|
|
6
7
|
_export_star(require("./find-up"), exports);
|
|
7
8
|
_export_star(require("./format-duration"), exports);
|
|
@@ -14,6 +15,7 @@ _export_star(require("./get-folders"), exports);
|
|
|
14
15
|
_export_star(require("./get-jest-config"), exports);
|
|
15
16
|
_export_star(require("./get-package-data"), exports);
|
|
16
17
|
_export_star(require("./get-package-name"), exports);
|
|
18
|
+
_export_star(require("./get-package-version"), exports);
|
|
17
19
|
_export_star(require("./get-packages"), exports);
|
|
18
20
|
_export_star(require("./get-startup-version"), exports);
|
|
19
21
|
_export_star(require("./get-tsconfig"), exports);
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/index.ts"],"sourcesContent":["export * from './find-packages';\nexport * from './find-up';\nexport * from './format-duration';\nexport * from './format-relative-date';\nexport * from './get-base-tsconfig';\nexport * from './get-branch-configs';\nexport * from './get-configuration';\nexport * from './get-destination-folders';\nexport * from './get-folders';\nexport * from './get-jest-config';\nexport * from './get-package-data';\nexport * from './get-package-name';\nexport * from './get-packages';\nexport * from './get-startup-version';\nexport * from './get-tsconfig';\nexport * from './get-tsconfig-with-fallback';\nexport * from './load-shared-dependencies';\nexport * from './log';\nexport * from './log-errors';\nexport * from './omit';\nexport * from './pick';\nexport * from './prettify';\nexport * from './read-json';\nexport * from './to-array';\n"],"names":[],"mappings":";;;;qBAAc;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA"}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/index.ts"],"sourcesContent":["export * from './find-package-lock';\nexport * from './find-packages';\nexport * from './find-up';\nexport * from './format-duration';\nexport * from './format-relative-date';\nexport * from './get-base-tsconfig';\nexport * from './get-branch-configs';\nexport * from './get-configuration';\nexport * from './get-destination-folders';\nexport * from './get-folders';\nexport * from './get-jest-config';\nexport * from './get-package-data';\nexport * from './get-package-name';\nexport * from './get-package-version';\nexport * from './get-packages';\nexport * from './get-startup-version';\nexport * from './get-tsconfig';\nexport * from './get-tsconfig-with-fallback';\nexport * from './load-shared-dependencies';\nexport * from './log';\nexport * from './log-errors';\nexport * from './omit';\nexport * from './pick';\nexport * from './prettify';\nexport * from './read-json';\nexport * from './to-array';\n"],"names":[],"mappings":";;;;qBAAc;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA;qBACA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-config.d.ts","sourceRoot":"","sources":["../../../src/webpack/configs/cache-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache-config.d.ts","sourceRoot":"","sources":["../../../src/webpack/configs/cache-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG7C,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,uBAAuB,CAAC,GAAG,SAAS,CAAC;AAIjF,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,GAAG,MAAM,CAkB3E"}
|
|
@@ -8,21 +8,14 @@ Object.defineProperty(exports, "cacheConfig", {
|
|
|
8
8
|
return cacheConfig;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
12
|
-
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
13
11
|
const _utils = require("../../utils");
|
|
14
|
-
function _interop_require_default(obj) {
|
|
15
|
-
return obj && obj.__esModule ? obj : {
|
|
16
|
-
default: obj
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
12
|
const CACHE_VERSION = '1';
|
|
20
13
|
function cacheConfig(context, _overrides) {
|
|
21
14
|
const { emitExposedDependencies } = context;
|
|
22
15
|
if (!emitExposedDependencies) {
|
|
23
16
|
return;
|
|
24
17
|
}
|
|
25
|
-
const packageLock = findPackageLock();
|
|
18
|
+
const packageLock = (0, _utils.findPackageLock)();
|
|
26
19
|
const cache = {
|
|
27
20
|
type: 'filesystem',
|
|
28
21
|
version: CACHE_VERSION,
|
|
@@ -42,11 +35,5 @@ function cacheConfig(context, _overrides) {
|
|
|
42
35
|
}
|
|
43
36
|
};
|
|
44
37
|
}
|
|
45
|
-
function findPackageLock() {
|
|
46
|
-
return (0, _utils.findUp)((directory)=>{
|
|
47
|
-
const lockFile = _path.default.resolve(_path.default.join(directory), 'package-lock.json');
|
|
48
|
-
return _fs.default.existsSync(lockFile) ? lockFile : undefined;
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
38
|
|
|
52
39
|
//# sourceMappingURL=cache-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/webpack/configs/cache-config.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../src/webpack/configs/cache-config.ts"],"sourcesContent":["import { Configuration } from 'webpack';\nimport { findPackageLock } from '../../utils';\nimport { Context, Overrides } from './types';\n\ntype Config = Configuration['cache'];\ntype Result = Pick<Configuration, 'cache' | 'infrastructureLogging'> | undefined;\n\nconst CACHE_VERSION = '1';\n\nexport function cacheConfig(context: Context, _overrides: Overrides): Result {\n const { emitExposedDependencies } = context;\n if (!emitExposedDependencies) {\n return;\n }\n\n const packageLock = findPackageLock();\n const cache: Config = {\n type: 'filesystem',\n version: CACHE_VERSION,\n ...(packageLock ? { buildDependencies: { packageLock: [packageLock] } } : {}),\n };\n\n return {\n cache,\n // Suppress \"Serializing big strings impacts deserialization performance\" warnings\n infrastructureLogging: { level: 'error' },\n };\n}\n"],"names":["cacheConfig","CACHE_VERSION","context","_overrides","emitExposedDependencies","packageLock","findPackageLock","cache","type","version","buildDependencies","infrastructureLogging","level"],"mappings":";;;;+BASgBA;;;eAAAA;;;uBARgB;AAMhC,MAAMC,gBAAgB;AAEf,SAASD,YAAYE,OAAgB,EAAEC,UAAqB;IAC/D,MAAM,EAAEC,uBAAuB,EAAE,GAAGF;IACpC,IAAI,CAACE,yBAAyB;QAC1B;IACJ;IAEA,MAAMC,cAAcC,IAAAA,sBAAe;IACnC,MAAMC,QAAgB;QAClBC,MAAM;QACNC,SAASR;QACT,GAAII,cAAc;YAAEK,mBAAmB;gBAAEL,aAAa;oBAACA;iBAAY;YAAC;QAAE,IAAI,CAAC,CAAC;IAChF;IAEA,OAAO;QACHE;QACA,kFAAkF;QAClFI,uBAAuB;YAAEC,OAAO;QAAQ;IAC5C;AACJ"}
|
|
@@ -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":"AAEA,wBAAgB,yBAAyB,uBAExC"}
|
|
@@ -8,19 +8,9 @@ Object.defineProperty(exports, "getLaunchDarklySdkVersion", {
|
|
|
8
8
|
return getLaunchDarklySdkVersion;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
12
11
|
const _utils = require("../../../utils");
|
|
13
|
-
function _interop_require_default(obj) {
|
|
14
|
-
return obj && obj.__esModule ? obj : {
|
|
15
|
-
default: obj
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
12
|
function getLaunchDarklySdkVersion() {
|
|
19
|
-
|
|
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
|
-
}
|
|
13
|
+
return (0, _utils.getPackageVersion)('launchdarkly-js-client-sdk');
|
|
24
14
|
}
|
|
25
15
|
|
|
26
16
|
//# 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 { getPackageVersion } from '../../../utils';\n\nexport function getLaunchDarklySdkVersion() {\n return getPackageVersion('launchdarkly-js-client-sdk');\n}\n"],"names":["getLaunchDarklySdkVersion","getPackageVersion"],"mappings":";;;;+BAEgBA;;;eAAAA;;;uBAFkB;AAE3B,SAASA;IACZ,OAAOC,IAAAA,wBAAiB,EAAC;AAC7B"}
|
|
@@ -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":"AAEA,wBAAgB,uBAAuB,WAQtC"}
|
|
@@ -8,15 +8,13 @@ Object.defineProperty(exports, "getWebComponentsVersion", {
|
|
|
8
8
|
return getWebComponentsVersion;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
12
11
|
const _utils = require("../../../utils");
|
|
13
|
-
function _interop_require_default(obj) {
|
|
14
|
-
return obj && obj.__esModule ? obj : {
|
|
15
|
-
default: obj
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
12
|
function getWebComponentsVersion() {
|
|
19
|
-
|
|
13
|
+
const version = (0, _utils.getPackageVersion)('@servicetitan/web-components');
|
|
14
|
+
if (!version) {
|
|
15
|
+
throw new Error('Unable to resolve @servicetitan/web-components version from package-lock.json');
|
|
16
|
+
}
|
|
17
|
+
return version;
|
|
20
18
|
}
|
|
21
19
|
|
|
22
20
|
//# 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 { getPackageVersion } from '../../../utils';\n\nexport function getWebComponentsVersion() {\n const version = getPackageVersion('@servicetitan/web-components');\n if (!version) {\n throw new Error(\n 'Unable to resolve @servicetitan/web-components version from package-lock.json'\n );\n }\n return version;\n}\n"],"names":["getWebComponentsVersion","version","getPackageVersion","Error"],"mappings":";;;;+BAEgBA;;;eAAAA;;;uBAFkB;AAE3B,SAASA;IACZ,MAAMC,UAAUC,IAAAA,wBAAiB,EAAC;IAClC,IAAI,CAACD,SAAS;QACV,MAAM,IAAIE,MACN;IAER;IACA,OAAOF;AACX"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@servicetitan/startup",
|
|
3
|
-
"version": "35.
|
|
3
|
+
"version": "35.2.0-far-1776.0",
|
|
4
4
|
"description": "CLI to create multi-package Lerna projects with TypeScript and React",
|
|
5
5
|
"homepage": "https://docs.st.dev/docs/frontend/uikit/startup",
|
|
6
6
|
"repository": {
|
|
@@ -145,6 +145,5 @@
|
|
|
145
145
|
},
|
|
146
146
|
"cli": {
|
|
147
147
|
"webpack": false
|
|
148
|
-
}
|
|
149
|
-
"gitHead": "f1d49b43f27789cf5cd4bea3e065cd9e33bf5876"
|
|
148
|
+
}
|
|
150
149
|
}
|
|
@@ -35,6 +35,7 @@ describe(`[startup] ${MfeGenerateMetadata.name}`, () => {
|
|
|
35
35
|
|
|
36
36
|
const mockParentPackageJson = {
|
|
37
37
|
name: 'parent-package',
|
|
38
|
+
workspaces: ['packages/*'],
|
|
38
39
|
dependencies: { 'some-dep': '^1.0.0' },
|
|
39
40
|
};
|
|
40
41
|
|
|
@@ -109,10 +110,28 @@ describe(`[startup] ${MfeGenerateMetadata.name}`, () => {
|
|
|
109
110
|
});
|
|
110
111
|
});
|
|
111
112
|
|
|
112
|
-
test('
|
|
113
|
-
await expect(subject()).
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
test('does not throw error', async () => {
|
|
114
|
+
await expect(subject()).resolves.not.toThrow();
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
describe('when tsconfig.json does not exist', () => {
|
|
119
|
+
beforeEach(() => {
|
|
120
|
+
vol.reset();
|
|
121
|
+
vol.fromJSON({
|
|
122
|
+
'./package.json': JSON.stringify(mockPackageJson),
|
|
123
|
+
'../../package.json': JSON.stringify(mockParentPackageJson),
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
test('does not throw error', async () => {
|
|
128
|
+
await expect(subject()).resolves.not.toThrow();
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
test('outputs metadata with empty entrypoints', async () => {
|
|
132
|
+
await subject();
|
|
133
|
+
|
|
134
|
+
expect(getMetadataFromStdout().entrypoints).toEqual({});
|
|
116
135
|
});
|
|
117
136
|
});
|
|
118
137
|
|
|
@@ -4,7 +4,6 @@ import {
|
|
|
4
4
|
getFolders,
|
|
5
5
|
getPackageData,
|
|
6
6
|
getPackageName,
|
|
7
|
-
isWebComponent,
|
|
8
7
|
loadSharedDependencies,
|
|
9
8
|
log,
|
|
10
9
|
logErrors,
|
|
@@ -26,13 +25,14 @@ export class MfeGenerateMetadata extends Command<typeof options> {
|
|
|
26
25
|
|
|
27
26
|
@logErrors
|
|
28
27
|
async execute() {
|
|
29
|
-
if (!isWebComponent()) {
|
|
30
|
-
throw new Error('this command must be run inside a web-component directory');
|
|
31
|
-
}
|
|
32
|
-
|
|
33
28
|
const { output } = this.args;
|
|
34
29
|
|
|
35
|
-
|
|
30
|
+
let destination: string;
|
|
31
|
+
try {
|
|
32
|
+
({ destination } = getFolders());
|
|
33
|
+
} catch {
|
|
34
|
+
destination = 'dist';
|
|
35
|
+
}
|
|
36
36
|
const name = getPackageName();
|
|
37
37
|
const packageData = getPackageData();
|
|
38
38
|
const sharedDependencies = loadSharedDependencies(
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { fs, vol } from 'memfs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { findPackageLock } from '../find-package-lock';
|
|
4
|
+
|
|
5
|
+
jest.mock('fs', () => fs);
|
|
6
|
+
|
|
7
|
+
describe(`[startup] ${findPackageLock.name}`, () => {
|
|
8
|
+
afterEach(() => vol.reset());
|
|
9
|
+
|
|
10
|
+
const subject = () => findPackageLock();
|
|
11
|
+
|
|
12
|
+
describe('when package-lock.json exists in cwd', () => {
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
vol.fromJSON({ './package-lock.json': '{}' });
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
test('returns path', () => {
|
|
18
|
+
expect(subject()).toBe(path.resolve('./package-lock.json'));
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
describe('when package-lock.json exists in parent directory', () => {
|
|
23
|
+
beforeEach(() => {
|
|
24
|
+
vol.fromJSON({ '../package-lock.json': '{}' });
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
test('returns path', () => {
|
|
28
|
+
expect(subject()).toBe(path.resolve('../package-lock.json'));
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test('returns undefined when no package-lock.json exists', () => {
|
|
33
|
+
expect(subject()).toBeUndefined();
|
|
34
|
+
});
|
|
35
|
+
});
|
|
@@ -1,47 +1,118 @@
|
|
|
1
|
+
import { fs, vol } from 'memfs';
|
|
1
2
|
import { getPackageData, getPackageDependencyVersion } from '../get-package-data';
|
|
2
|
-
import { readJson } from '../read-json';
|
|
3
3
|
|
|
4
|
-
jest.mock('
|
|
4
|
+
jest.mock('fs', () => fs);
|
|
5
5
|
|
|
6
6
|
describe(`[startup] Utils`, () => {
|
|
7
7
|
describe(`${getPackageData.name}`, () => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
afterEach(() => vol.reset());
|
|
9
|
+
|
|
10
|
+
const subject = () => getPackageData();
|
|
11
|
+
|
|
12
|
+
describe('when root package.json with workspaces exists', () => {
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
vol.fromJSON({
|
|
15
|
+
'./package.json': JSON.stringify({
|
|
16
|
+
name: 'packageName',
|
|
17
|
+
dependencies: { foo: '1.1.0', baz: '3.0.0' },
|
|
18
|
+
}),
|
|
19
|
+
'../package.json': JSON.stringify({
|
|
20
|
+
workspaces: ['packages/*'],
|
|
21
|
+
dependencies: { foo: '1.0.0', bar: '2.0.0' },
|
|
22
|
+
}),
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
test('returns merged dependencies (local overrides root)', () => {
|
|
27
|
+
expect(subject()).toEqual({
|
|
16
28
|
name: 'packageName',
|
|
17
|
-
dependencies: { foo: '1.1.0', baz: '3.0.0' },
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
jest.mocked(readJson).mockImplementation(path => packages[path] ?? {});
|
|
29
|
+
dependencies: { foo: '1.1.0', bar: '2.0.0', baz: '3.0.0' },
|
|
30
|
+
});
|
|
31
|
+
});
|
|
21
32
|
});
|
|
22
33
|
|
|
23
|
-
|
|
34
|
+
describe('when no root package.json found', () => {
|
|
35
|
+
beforeEach(() => {
|
|
36
|
+
vol.fromJSON({
|
|
37
|
+
'./package.json': JSON.stringify({
|
|
38
|
+
name: 'rootPackage',
|
|
39
|
+
workspaces: ['packages/*'],
|
|
40
|
+
dependencies: { foo: '1.0.0' },
|
|
41
|
+
}),
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
test('returns only local dependencies', () => {
|
|
46
|
+
expect(subject()).toEqual({
|
|
47
|
+
name: 'rootPackage',
|
|
48
|
+
dependencies: { foo: '1.0.0' },
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
describe('when root has lerna.json with packages instead of workspaces', () => {
|
|
54
|
+
beforeEach(() => {
|
|
55
|
+
vol.fromJSON({
|
|
56
|
+
'./package.json': JSON.stringify({
|
|
57
|
+
name: 'packageName',
|
|
58
|
+
version: '2.0.0',
|
|
59
|
+
dependencies: { foo: '1.0.0' },
|
|
60
|
+
}),
|
|
61
|
+
'../package.json': JSON.stringify({
|
|
62
|
+
dependencies: { bar: '2.0.0' },
|
|
63
|
+
}),
|
|
64
|
+
'../lerna.json': JSON.stringify({
|
|
65
|
+
packages: ['packages/*'],
|
|
66
|
+
}),
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
test('returns dependencies from root discovered via lerna.json', () => {
|
|
71
|
+
expect(subject()).toEqual({
|
|
72
|
+
name: 'packageName',
|
|
73
|
+
version: '2.0.0',
|
|
74
|
+
dependencies: { bar: '2.0.0', foo: '1.0.0' },
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
describe('when root has lerna.json but no package.json at root level', () => {
|
|
80
|
+
beforeEach(() => {
|
|
81
|
+
vol.fromJSON({
|
|
82
|
+
'./package.json': JSON.stringify({
|
|
83
|
+
name: 'packageName',
|
|
84
|
+
version: '3.0.0',
|
|
85
|
+
dependencies: { foo: '1.0.0' },
|
|
86
|
+
}),
|
|
87
|
+
'../lerna.json': JSON.stringify({
|
|
88
|
+
packages: ['packages/*'],
|
|
89
|
+
}),
|
|
90
|
+
});
|
|
91
|
+
});
|
|
24
92
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
},
|
|
93
|
+
test('returns only local dependencies', () => {
|
|
94
|
+
expect(subject()).toEqual({
|
|
95
|
+
name: 'packageName',
|
|
96
|
+
version: '3.0.0',
|
|
97
|
+
dependencies: { foo: '1.0.0' },
|
|
98
|
+
});
|
|
32
99
|
});
|
|
33
100
|
});
|
|
34
101
|
|
|
35
|
-
describe(
|
|
102
|
+
describe('when package.json contains sharedDependencies', () => {
|
|
36
103
|
const sharedDependencies = { react: 'SharedDependencies.React' };
|
|
37
104
|
|
|
38
105
|
beforeEach(() => {
|
|
39
|
-
|
|
40
|
-
|
|
106
|
+
vol.fromJSON({
|
|
107
|
+
'./package.json': JSON.stringify({
|
|
108
|
+
name: 'packageName',
|
|
109
|
+
dependencies: { foo: '1.0.0' },
|
|
110
|
+
cli: { webpack: { 'shared-dependencies': sharedDependencies } },
|
|
111
|
+
}),
|
|
41
112
|
});
|
|
42
113
|
});
|
|
43
114
|
|
|
44
|
-
test('
|
|
115
|
+
test('result contains sharedDependencies', () => {
|
|
45
116
|
expect(subject()).toEqual(expect.objectContaining({ sharedDependencies }));
|
|
46
117
|
});
|
|
47
118
|
});
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { fs, vol } from 'memfs';
|
|
2
|
+
import { getPackageVersion } from '../get-package-version';
|
|
3
|
+
|
|
4
|
+
jest.mock('fs', () => fs);
|
|
5
|
+
|
|
6
|
+
describe(`[startup] ${getPackageVersion.name}`, () => {
|
|
7
|
+
afterEach(() => vol.reset());
|
|
8
|
+
|
|
9
|
+
const subject = (packageName: string) => getPackageVersion(packageName);
|
|
10
|
+
|
|
11
|
+
describe('when package-lock.json exists', () => {
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
vol.fromJSON({
|
|
14
|
+
'./package-lock.json': JSON.stringify({
|
|
15
|
+
packages: {
|
|
16
|
+
'node_modules/@servicetitan/web-components': { version: '1.2.3' },
|
|
17
|
+
'node_modules/launchdarkly-js-client-sdk': { version: '4.5.6' },
|
|
18
|
+
},
|
|
19
|
+
}),
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('returns version for a found package', () => {
|
|
24
|
+
expect(subject('@servicetitan/web-components')).toBe('1.2.3');
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
test('returns version for another found package', () => {
|
|
28
|
+
expect(subject('launchdarkly-js-client-sdk')).toBe('4.5.6');
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
test('returns undefined for a package not in lock file', () => {
|
|
32
|
+
expect(subject('nonexistent-package')).toBeUndefined();
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
describe('when package is a linked workspace package', () => {
|
|
37
|
+
beforeEach(() => {
|
|
38
|
+
vol.fromJSON({
|
|
39
|
+
'./package-lock.json': JSON.stringify({
|
|
40
|
+
packages: {
|
|
41
|
+
'node_modules/@servicetitan/web-components': {
|
|
42
|
+
resolved: 'packages/web-components',
|
|
43
|
+
link: true,
|
|
44
|
+
},
|
|
45
|
+
'packages/web-components': {
|
|
46
|
+
version: '35.1.0',
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
}),
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
test('follows link to resolve version from source path', () => {
|
|
54
|
+
expect(subject('@servicetitan/web-components')).toBe('35.1.0');
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
describe('when entry has link but no resolved path', () => {
|
|
59
|
+
beforeEach(() => {
|
|
60
|
+
vol.fromJSON({
|
|
61
|
+
'./package-lock.json': JSON.stringify({
|
|
62
|
+
packages: {
|
|
63
|
+
'node_modules/some-package': { link: true, version: '1.0.0' },
|
|
64
|
+
},
|
|
65
|
+
}),
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
test('returns entry version', () => {
|
|
70
|
+
expect(subject('some-package')).toBe('1.0.0');
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
describe('when linked package resolved path does not exist in packages', () => {
|
|
75
|
+
beforeEach(() => {
|
|
76
|
+
vol.fromJSON({
|
|
77
|
+
'./package-lock.json': JSON.stringify({
|
|
78
|
+
packages: {
|
|
79
|
+
'node_modules/some-package': {
|
|
80
|
+
resolved: 'packages/some-package',
|
|
81
|
+
link: true,
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
}),
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
test('returns undefined', () => {
|
|
89
|
+
expect(subject('some-package')).toBeUndefined();
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
describe('when lock file contains invalid JSON', () => {
|
|
94
|
+
beforeEach(() => {
|
|
95
|
+
vol.fromJSON({
|
|
96
|
+
'./package-lock.json': 'not valid json',
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
test('returns undefined', () => {
|
|
101
|
+
expect(subject('some-package')).toBeUndefined();
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
describe('when lock file has no packages property', () => {
|
|
106
|
+
beforeEach(() => {
|
|
107
|
+
vol.fromJSON({
|
|
108
|
+
'./package-lock.json': JSON.stringify({}),
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
test('returns undefined', () => {
|
|
113
|
+
expect(subject('some-package')).toBeUndefined();
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
test('returns undefined when no package-lock.json exists', () => {
|
|
118
|
+
expect(subject('@servicetitan/web-components')).toBeUndefined();
|
|
119
|
+
});
|
|
120
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { findUp } from './find-up';
|
|
4
|
+
|
|
5
|
+
export function findPackageLock() {
|
|
6
|
+
return findUp(directory => {
|
|
7
|
+
const lockFile = path.resolve(directory, 'package-lock.json');
|
|
8
|
+
return fs.existsSync(lockFile) ? lockFile : undefined;
|
|
9
|
+
});
|
|
10
|
+
}
|
package/src/utils/find-up.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { findUp } from './find-up';
|
|
3
|
+
import { readJson, readJsonSafe } from './read-json';
|
|
2
4
|
|
|
3
5
|
interface PackageData {
|
|
4
6
|
name: string;
|
|
@@ -14,13 +16,36 @@ export function getPackageData(): PackageData {
|
|
|
14
16
|
name: packageJson.name,
|
|
15
17
|
version: packageJson.version,
|
|
16
18
|
dependencies: {
|
|
17
|
-
...
|
|
19
|
+
...findRootDependencies(),
|
|
18
20
|
...packageJson.dependencies,
|
|
19
21
|
},
|
|
20
22
|
sharedDependencies: packageJson.cli?.webpack?.['shared-dependencies'],
|
|
21
23
|
};
|
|
22
24
|
}
|
|
23
25
|
|
|
26
|
+
function findRootDependencies() {
|
|
27
|
+
const cwd = path.resolve('./');
|
|
28
|
+
const root = findUp(directory => {
|
|
29
|
+
if (directory === cwd) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
const pkgPath = path.join(directory, 'package.json');
|
|
33
|
+
const pkg = readJsonSafe<{ workspaces?: string[]; dependencies?: Record<string, string> }>(
|
|
34
|
+
pkgPath
|
|
35
|
+
);
|
|
36
|
+
if (pkg?.workspaces) {
|
|
37
|
+
return pkg;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const lernaPath = path.join(directory, 'lerna.json');
|
|
41
|
+
if (readJsonSafe<{ packages?: string[] }>(lernaPath)?.packages) {
|
|
42
|
+
return pkg ?? {};
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
return root?.dependencies ?? {};
|
|
47
|
+
}
|
|
48
|
+
|
|
24
49
|
export function getPackageDependencyVersion(dependency: string, defaultVersion?: string) {
|
|
25
50
|
try {
|
|
26
51
|
const { version } = require(`${dependency}/package.json`);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { findPackageLock } from './find-package-lock';
|
|
2
|
+
import { readJsonSafe } from './read-json';
|
|
3
|
+
|
|
4
|
+
interface PackageLockEntry {
|
|
5
|
+
version?: string;
|
|
6
|
+
resolved?: string;
|
|
7
|
+
link?: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface PackageLock {
|
|
11
|
+
packages: Record<string, PackageLockEntry>;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function getPackageVersion(packageName: string) {
|
|
15
|
+
const lockFilePath = findPackageLock();
|
|
16
|
+
if (!lockFilePath) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const lockFile = readJsonSafe<PackageLock>(lockFilePath);
|
|
21
|
+
const entry = lockFile?.packages?.[`node_modules/${packageName}`];
|
|
22
|
+
if (!entry) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (entry.link && entry.resolved) {
|
|
27
|
+
return lockFile?.packages?.[entry.resolved]?.version;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return entry.version;
|
|
31
|
+
}
|
package/src/utils/index.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from './find-package-lock';
|
|
1
2
|
export * from './find-packages';
|
|
2
3
|
export * from './find-up';
|
|
3
4
|
export * from './format-duration';
|
|
@@ -10,6 +11,7 @@ export * from './get-folders';
|
|
|
10
11
|
export * from './get-jest-config';
|
|
11
12
|
export * from './get-package-data';
|
|
12
13
|
export * from './get-package-name';
|
|
14
|
+
export * from './get-package-version';
|
|
13
15
|
export * from './get-packages';
|
|
14
16
|
export * from './get-startup-version';
|
|
15
17
|
export * from './get-tsconfig';
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
1
|
import { Configuration } from 'webpack';
|
|
4
|
-
import {
|
|
2
|
+
import { findPackageLock } from '../../utils';
|
|
5
3
|
import { Context, Overrides } from './types';
|
|
6
4
|
|
|
7
5
|
type Config = Configuration['cache'];
|
|
@@ -28,10 +26,3 @@ export function cacheConfig(context: Context, _overrides: Overrides): Result {
|
|
|
28
26
|
infrastructureLogging: { level: 'error' },
|
|
29
27
|
};
|
|
30
28
|
}
|
|
31
|
-
|
|
32
|
-
function findPackageLock() {
|
|
33
|
-
return findUp(directory => {
|
|
34
|
-
const lockFile = path.resolve(path.join(directory), 'package-lock.json');
|
|
35
|
-
return fs.existsSync(lockFile) ? lockFile : undefined;
|
|
36
|
-
});
|
|
37
|
-
}
|
|
@@ -6,25 +6,41 @@ jest.mock('fs', () => fs);
|
|
|
6
6
|
describe(`[startup] ${getLaunchDarklySdkVersion.name}`, () => {
|
|
7
7
|
const launchDarklySdkVersion = '1.2.3';
|
|
8
8
|
|
|
9
|
+
afterEach(() => vol.reset());
|
|
10
|
+
|
|
9
11
|
const subject = () => getLaunchDarklySdkVersion();
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
describe('when package is not in package-lock.json', () => {
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
vol.fromJSON({
|
|
16
|
+
'./package-lock.json': JSON.stringify({ packages: {} }),
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
test('returns undefined', () => {
|
|
21
|
+
expect(subject()).toBeUndefined();
|
|
22
|
+
});
|
|
13
23
|
});
|
|
14
24
|
|
|
15
|
-
describe('when package is
|
|
25
|
+
describe('when package is in package-lock.json', () => {
|
|
16
26
|
beforeEach(() => {
|
|
17
27
|
vol.fromJSON({
|
|
18
|
-
'
|
|
19
|
-
|
|
28
|
+
'./package-lock.json': JSON.stringify({
|
|
29
|
+
packages: {
|
|
30
|
+
'node_modules/launchdarkly-js-client-sdk': {
|
|
31
|
+
version: launchDarklySdkVersion,
|
|
32
|
+
},
|
|
33
|
+
},
|
|
20
34
|
}),
|
|
21
35
|
});
|
|
22
36
|
});
|
|
23
37
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
test('returns version from launchdarkly-js-client-sdk package', () => {
|
|
38
|
+
test('returns version from package-lock.json', () => {
|
|
27
39
|
expect(subject()).toEqual(launchDarklySdkVersion);
|
|
28
40
|
});
|
|
29
41
|
});
|
|
42
|
+
|
|
43
|
+
test('returns undefined when no package-lock.json exists', () => {
|
|
44
|
+
expect(subject()).toBeUndefined();
|
|
45
|
+
});
|
|
30
46
|
});
|
|
@@ -6,19 +6,39 @@ jest.mock('fs', () => fs);
|
|
|
6
6
|
describe(`[startup] ${getWebComponentsVersion.name}`, () => {
|
|
7
7
|
const webComponentsVersion = '1.2.3';
|
|
8
8
|
|
|
9
|
-
beforeEach(() => {
|
|
10
|
-
vol.fromJSON({
|
|
11
|
-
'packages/web-components/package.json': JSON.stringify({
|
|
12
|
-
version: webComponentsVersion,
|
|
13
|
-
}),
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
|
|
17
9
|
afterEach(() => vol.reset());
|
|
18
10
|
|
|
19
11
|
const subject = () => getWebComponentsVersion();
|
|
20
12
|
|
|
21
|
-
|
|
22
|
-
|
|
13
|
+
describe('when package is in package-lock.json', () => {
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
vol.fromJSON({
|
|
16
|
+
'./package-lock.json': JSON.stringify({
|
|
17
|
+
packages: {
|
|
18
|
+
'node_modules/@servicetitan/web-components': {
|
|
19
|
+
version: webComponentsVersion,
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
}),
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
test('returns version from package-lock.json', () => {
|
|
27
|
+
expect(subject()).toEqual(webComponentsVersion);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
describe('when package is not in package-lock.json', () => {
|
|
32
|
+
beforeEach(() => {
|
|
33
|
+
vol.fromJSON({
|
|
34
|
+
'./package-lock.json': JSON.stringify({ packages: {} }),
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
test('throws', () => {
|
|
39
|
+
expect(subject).toThrow(
|
|
40
|
+
'Unable to resolve @servicetitan/web-components version from package-lock.json'
|
|
41
|
+
);
|
|
42
|
+
});
|
|
23
43
|
});
|
|
24
44
|
});
|
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { readJson } from '../../../utils';
|
|
1
|
+
import { getPackageVersion } from '../../../utils';
|
|
3
2
|
|
|
4
3
|
export function getLaunchDarklySdkVersion() {
|
|
5
|
-
|
|
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
|
-
}
|
|
4
|
+
return getPackageVersion('launchdarkly-js-client-sdk');
|
|
15
5
|
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { readJson } from '../../../utils';
|
|
1
|
+
import { getPackageVersion } from '../../../utils';
|
|
3
2
|
|
|
4
3
|
export function getWebComponentsVersion() {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
const version = getPackageVersion('@servicetitan/web-components');
|
|
5
|
+
if (!version) {
|
|
6
|
+
throw new Error(
|
|
7
|
+
'Unable to resolve @servicetitan/web-components version from package-lock.json'
|
|
8
|
+
);
|
|
9
|
+
}
|
|
10
|
+
return version;
|
|
8
11
|
}
|