@servicetitan/startup 36.3.0-far-1776.3 → 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/bin/_run.js +19 -8
- package/dist/cli/commands/mfe-check.d.ts.map +1 -1
- package/dist/cli/commands/mfe-check.js +10 -4
- 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/get-jest-config.js +1 -1
- package/dist/utils/get-jest-config.js.map +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.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 -7
- 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 -3
- 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 +7 -4
- package/dist/webpack/configs/utils/get-web-components-version.js.map +1 -1
- package/package.json +18 -17
- package/src/cli/commands/__tests__/mfe-check.test.ts +6 -2
- package/src/cli/commands/mfe-check.ts +12 -9
- package/src/cli/commands/mfe-generate-metadata.ts +2 -0
- package/src/utils/__tests__/get-jest-config.test.ts +1 -1
- package/src/utils/get-jest-config.ts +1 -1
- package/src/utils/index.ts +0 -1
- package/src/webpack/__tests__/create-webpack-config-shared-dependencies.test.ts +9 -3
- package/src/webpack/__tests__/create-webpack-config.test.ts +0 -3
- package/src/webpack/configs/plugins/define-exposed-dependencies-plugin.ts +4 -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 +30 -29
- package/src/webpack/configs/utils/__tests__/get-web-components-version.test.ts +30 -31
- 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 -3
- package/src/webpack/configs/utils/get-web-components-version.ts +11 -6
- package/dist/utils/package-lock/find-package-lock.d.ts +0 -2
- package/dist/utils/package-lock/find-package-lock.d.ts.map +0 -1
- package/dist/utils/package-lock/find-package-lock.js +0 -26
- package/dist/utils/package-lock/find-package-lock.js.map +0 -1
- package/dist/utils/package-lock/get-lock-file-entry.d.ts +0 -3
- package/dist/utils/package-lock/get-lock-file-entry.d.ts.map +0 -1
- package/dist/utils/package-lock/get-lock-file-entry.js +0 -22
- package/dist/utils/package-lock/get-lock-file-entry.js.map +0 -1
- package/dist/utils/package-lock/get-lock-file-version.d.ts +0 -3
- package/dist/utils/package-lock/get-lock-file-version.d.ts.map +0 -1
- package/dist/utils/package-lock/get-lock-file-version.js +0 -16
- package/dist/utils/package-lock/get-lock-file-version.js.map +0 -1
- package/dist/utils/package-lock/index.d.ts +0 -6
- package/dist/utils/package-lock/index.d.ts.map +0 -1
- package/dist/utils/package-lock/index.js +0 -23
- package/dist/utils/package-lock/index.js.map +0 -1
- package/dist/utils/package-lock/read-package-lock.d.ts +0 -3
- package/dist/utils/package-lock/read-package-lock.d.ts.map +0 -1
- package/dist/utils/package-lock/read-package-lock.js +0 -22
- package/dist/utils/package-lock/read-package-lock.js.map +0 -1
- package/dist/utils/package-lock/types.d.ts +0 -12
- package/dist/utils/package-lock/types.d.ts.map +0 -1
- package/dist/utils/package-lock/types.js +0 -6
- package/dist/utils/package-lock/types.js.map +0 -1
- package/src/utils/package-lock/__tests__/find-package-lock.test.ts +0 -35
- package/src/utils/package-lock/__tests__/get-lock-file-entry.test.ts +0 -97
- package/src/utils/package-lock/__tests__/get-lock-file-version.test.ts +0 -32
- package/src/utils/package-lock/__tests__/read-package-lock.test.ts +0 -47
- package/src/utils/package-lock/find-package-lock.ts +0 -10
- package/src/utils/package-lock/get-lock-file-entry.ts +0 -14
- package/src/utils/package-lock/get-lock-file-version.ts +0 -6
- package/src/utils/package-lock/index.ts +0 -5
- package/src/utils/package-lock/read-package-lock.ts +0 -13
- package/src/utils/package-lock/types.ts +0 -13
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": {
|
|
@@ -94,19 +94,19 @@
|
|
|
94
94
|
},
|
|
95
95
|
"dependencies": {
|
|
96
96
|
"@babel/preset-env": "~7.29.5",
|
|
97
|
-
"@jest/core": "~30.
|
|
98
|
-
"@jest/types": "~30.
|
|
97
|
+
"@jest/core": "~30.4.2",
|
|
98
|
+
"@jest/types": "~30.4.1",
|
|
99
99
|
"@jsdevtools/coverage-istanbul-loader": "^3.0.5",
|
|
100
|
-
"@servicetitan/eslint-config": "36.
|
|
101
|
-
"@servicetitan/install": "36.
|
|
102
|
-
"@servicetitan/startup-utils": "36.
|
|
103
|
-
"@servicetitan/stylelint-config": "36.
|
|
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",
|
|
@@ -120,9 +120,9 @@
|
|
|
120
120
|
"html-webpack-plugin": "~5.6.7",
|
|
121
121
|
"html-webpack-tags-plugin": "^3.0.2",
|
|
122
122
|
"identity-obj-proxy": "~3.0.0",
|
|
123
|
-
"jest": "~30.
|
|
124
|
-
"jest-circus": "~30.
|
|
125
|
-
"jest-environment-jsdom": "
|
|
123
|
+
"jest": "~30.4.2",
|
|
124
|
+
"jest-circus": "~30.4.2",
|
|
125
|
+
"jest-environment-jsdom": "~30.4.1",
|
|
126
126
|
"jest-fetch-mock": "~3.0.3",
|
|
127
127
|
"js-yaml": "~4.1.1",
|
|
128
128
|
"json5": "^2.2.3",
|
|
@@ -141,23 +141,23 @@
|
|
|
141
141
|
"postcss": "~8.5.14",
|
|
142
142
|
"prettier": "~3.8.3",
|
|
143
143
|
"sass": "~1.99.0",
|
|
144
|
-
"sass-loader": "~16.0.
|
|
145
|
-
"semver": "~7.
|
|
144
|
+
"sass-loader": "~16.0.8",
|
|
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",
|
|
@@ -184,5 +184,6 @@
|
|
|
184
184
|
},
|
|
185
185
|
"cli": {
|
|
186
186
|
"webpack": false
|
|
187
|
-
}
|
|
187
|
+
},
|
|
188
|
+
"gitHead": "93a049ba1e5cb737afb7bc95c06020736bc61a38"
|
|
188
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,10 +6,10 @@ 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
|
-
readPackageLock: jest.fn(),
|
|
12
13
|
}));
|
|
13
14
|
|
|
14
15
|
describe(`[startup] ${MfeCheck.name}`, () => {
|
|
@@ -55,7 +56,10 @@ describe(`[startup] ${MfeCheck.name}`, () => {
|
|
|
55
56
|
mfeCheckArgs = undefined;
|
|
56
57
|
stdoutWriteSpy = jest.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
|
57
58
|
processExitCodeSpy = jest.spyOn(process, 'exitCode', 'set').mockImplementation(() => {});
|
|
58
|
-
jest.mocked(
|
|
59
|
+
jest.mocked(getPackageManager).mockReturnValue({
|
|
60
|
+
getResolvedVersion: jest.fn().mockReturnValue(undefined),
|
|
61
|
+
getWorkspacePackage: jest.fn().mockReturnValue(''),
|
|
62
|
+
} as any);
|
|
59
63
|
|
|
60
64
|
vol.fromJSON({
|
|
61
65
|
'/path/to/metadata.json': JSON.stringify(mockMetadata),
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
+
import { getPackageManager } from '@servicetitan/install';
|
|
1
2
|
import { getVersionMismatches } from '@servicetitan/startup-utils';
|
|
2
3
|
import path from 'node:path';
|
|
3
4
|
import {
|
|
4
|
-
getLockFileVersion,
|
|
5
5
|
isWebComponent,
|
|
6
6
|
loadSharedDependencies,
|
|
7
7
|
log,
|
|
8
8
|
logErrors,
|
|
9
9
|
readJson,
|
|
10
|
-
readPackageLock,
|
|
11
10
|
toArray,
|
|
12
11
|
} from '../../utils';
|
|
13
12
|
import { Metadata } from '../../webpack/configs/types';
|
|
@@ -27,6 +26,10 @@ interface HostPackageJSON {
|
|
|
27
26
|
};
|
|
28
27
|
}
|
|
29
28
|
|
|
29
|
+
interface HostData extends HostPackageJSON {
|
|
30
|
+
location: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
30
33
|
interface CompatibilityResult {
|
|
31
34
|
name: string;
|
|
32
35
|
compatible: boolean;
|
|
@@ -58,7 +61,7 @@ export class MfeCheck extends Command<typeof entry> {
|
|
|
58
61
|
return Promise.resolve();
|
|
59
62
|
}
|
|
60
63
|
|
|
61
|
-
private getHostPackageData(packageJsonPaths: string[]):
|
|
64
|
+
private getHostPackageData(packageJsonPaths: string[]): HostData {
|
|
62
65
|
const packages = packageJsonPaths.map(packageJsonPath =>
|
|
63
66
|
readJson<HostPackageJSON>(path.resolve(packageJsonPath))
|
|
64
67
|
);
|
|
@@ -72,23 +75,23 @@ export class MfeCheck extends Command<typeof entry> {
|
|
|
72
75
|
name: mainPackage.name,
|
|
73
76
|
cli: mainPackage.cli,
|
|
74
77
|
dependencies: mergedDependencies,
|
|
78
|
+
location: path.dirname(path.resolve(packageJsonPaths[0])),
|
|
75
79
|
};
|
|
76
80
|
}
|
|
77
81
|
|
|
78
|
-
private checkCompatibility(
|
|
79
|
-
mfeMetadata: Metadata,
|
|
80
|
-
hostData: HostPackageJSON
|
|
81
|
-
): CompatibilityResult {
|
|
82
|
+
private checkCompatibility(mfeMetadata: Metadata, hostData: HostData): CompatibilityResult {
|
|
82
83
|
const mfeSharedDependencies = mfeMetadata.sharedDependencies;
|
|
83
84
|
const hostSharedDependencies = loadSharedDependencies(
|
|
84
85
|
hostData.dependencies,
|
|
85
86
|
hostData.cli?.webpack?.['shared-dependencies']
|
|
86
87
|
);
|
|
87
|
-
const
|
|
88
|
+
const packageManager = getPackageManager();
|
|
89
|
+
const workspacePackage = packageManager.getWorkspacePackage(hostData.location);
|
|
88
90
|
const exposedDependencies = getExposedDependencies(
|
|
89
91
|
hostSharedDependencies,
|
|
90
92
|
dependency =>
|
|
91
|
-
|
|
93
|
+
packageManager.getResolvedVersion({ workspacePackage, dependency }) ??
|
|
94
|
+
hostData.dependencies[dependency]
|
|
92
95
|
);
|
|
93
96
|
const mismatchResult = getVersionMismatches(
|
|
94
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);
|
|
@@ -20,7 +20,7 @@ describe('[startup] Utils', () => {
|
|
|
20
20
|
'\\.(css|scss|less|png|jpg|jpeg|gif|woff|woff2|eot|ttf|otf)$': 'identity-obj-proxy',
|
|
21
21
|
},
|
|
22
22
|
modulePathIgnorePatterns: ['<rootDir>/.*/__mocks__'],
|
|
23
|
-
preset:
|
|
23
|
+
preset: '@servicetitan/startup',
|
|
24
24
|
resolver: '@servicetitan/startup/jest-resolver',
|
|
25
25
|
setupFiles: [expect.stringContaining(path.join('jest', 'setup.js'))],
|
|
26
26
|
testEnvironment: 'jsdom',
|
|
@@ -16,7 +16,7 @@ function getDefaultJestConfiguration() {
|
|
|
16
16
|
coverageReporters: ['html-spa', 'text', 'json', 'cobertura', 'lcov'],
|
|
17
17
|
moduleNameMapper,
|
|
18
18
|
modulePathIgnorePatterns: ['<rootDir>/.*/__mocks__'],
|
|
19
|
-
preset:
|
|
19
|
+
preset: '@servicetitan/startup',
|
|
20
20
|
resolver: '@servicetitan/startup/jest-resolver',
|
|
21
21
|
setupFiles: [path.join(__dirname, '../../jest/setup.js')],
|
|
22
22
|
testEnvironment: 'jsdom',
|
package/src/utils/index.ts
CHANGED
|
@@ -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';
|
|
@@ -20,7 +21,6 @@ import {
|
|
|
20
21
|
loadSharedDependencies,
|
|
21
22
|
log,
|
|
22
23
|
pick,
|
|
23
|
-
readPackageLock,
|
|
24
24
|
} from '../../utils';
|
|
25
25
|
import { miniCssPluginStyleRules } from '../__mocks__';
|
|
26
26
|
import { getLaunchDarklySdkVersion } from '../configs/utils/get-launchdarkly-sdk-version';
|
|
@@ -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
|
-
readPackageLock: jest.fn(),
|
|
50
51
|
getPackages: jest.fn(),
|
|
51
52
|
getTsConfig: jest.fn(),
|
|
52
53
|
isCustomStyleRules: jest.fn(),
|
|
@@ -113,10 +114,15 @@ describe(`[startup] ${createWebpackConfig.name}`, () => {
|
|
|
113
114
|
dependencies,
|
|
114
115
|
sharedDependencies,
|
|
115
116
|
});
|
|
116
|
-
jest.mocked(readPackageLock).mockReturnValue({ packages: {} });
|
|
117
117
|
jest.mocked(getPackages).mockReturnValue([]);
|
|
118
118
|
jest.mocked(getTsConfig).mockReturnValue(tsConfig);
|
|
119
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);
|
|
120
126
|
|
|
121
127
|
volumeFromJSON();
|
|
122
128
|
});
|
|
@@ -26,7 +26,6 @@ import {
|
|
|
26
26
|
loadSharedDependencies,
|
|
27
27
|
log,
|
|
28
28
|
Package,
|
|
29
|
-
readPackageLock,
|
|
30
29
|
WebpackConfiguration,
|
|
31
30
|
} from '../../utils';
|
|
32
31
|
import { fileRules, productionStyleRules, styleRules } from '../__mocks__';
|
|
@@ -60,7 +59,6 @@ jest.mock('../../utils', () => ({
|
|
|
60
59
|
getConfiguration: jest.fn(),
|
|
61
60
|
getFolders: jest.fn(),
|
|
62
61
|
getPackageData: jest.fn(),
|
|
63
|
-
readPackageLock: jest.fn(),
|
|
64
62
|
getPackages: jest.fn(),
|
|
65
63
|
getTsConfig: jest.fn(),
|
|
66
64
|
getWebpackConfiguration: jest.fn(),
|
|
@@ -146,7 +144,6 @@ describe(`[startup] ${createWebpackConfig.name}`, () => {
|
|
|
146
144
|
dependencies,
|
|
147
145
|
sharedDependencies,
|
|
148
146
|
});
|
|
149
|
-
jest.mocked(readPackageLock).mockReturnValue({ packages: {} });
|
|
150
147
|
jest.mocked(getPackages).mockImplementation(() => packages);
|
|
151
148
|
jest.mocked(getTsConfig).mockReturnValue(tsConfig);
|
|
152
149
|
jest.mocked(loadSharedDependencies).mockReturnValue(sharedDependencies);
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { DefinePlugin } from 'webpack';
|
|
2
|
-
import { getLockFileVersion, readPackageLock } from '../../../utils';
|
|
3
2
|
import { Context, Overrides } from '../types';
|
|
4
3
|
import { getExposedDependencies } from '../utils';
|
|
5
4
|
|
|
@@ -9,12 +8,13 @@ export function defineExposedDependenciesPlugin(context: Context, _: Overrides)
|
|
|
9
8
|
return;
|
|
10
9
|
}
|
|
11
10
|
|
|
12
|
-
const { packageData, sharedDependencies } = context;
|
|
13
|
-
const
|
|
11
|
+
const { packageData, packageManager, sharedDependencies } = context;
|
|
12
|
+
const workspacePackage = packageManager.getWorkspacePackage();
|
|
14
13
|
const exposedDependencies = getExposedDependencies(
|
|
15
14
|
sharedDependencies,
|
|
16
15
|
dependency =>
|
|
17
|
-
|
|
16
|
+
packageManager.getResolvedVersion({ workspacePackage, dependency }) ??
|
|
17
|
+
packageData.dependencies?.[dependency]
|
|
18
18
|
);
|
|
19
19
|
|
|
20
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,47 +1,48 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { PackageManager } from '@servicetitan/install';
|
|
2
|
+
import { getLaunchDarklySdkVersion } from '../get-launchdarkly-sdk-version';
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
describe('[startup] getLaunchDarklySdkVersion', () => {
|
|
4
|
+
describe(`[startup] ${getLaunchDarklySdkVersion.name}`, () => {
|
|
6
5
|
const launchDarklySdkVersion = '1.2.3';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
const workspacePackage = 'packages/foo';
|
|
7
|
+
let getResolvedVersion: jest.Mock;
|
|
8
|
+
let packageManager: PackageManager;
|
|
9
|
+
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
getResolvedVersion = jest.fn();
|
|
12
|
+
packageManager = {
|
|
13
|
+
getResolvedVersion,
|
|
14
|
+
getWorkspacePackage: jest.fn().mockReturnValue(workspacePackage),
|
|
15
|
+
} as unknown as PackageManager;
|
|
11
16
|
});
|
|
12
17
|
|
|
13
|
-
const subject =
|
|
14
|
-
const { getLaunchDarklySdkVersion } = await import('../get-launchdarkly-sdk-version');
|
|
15
|
-
return getLaunchDarklySdkVersion();
|
|
16
|
-
};
|
|
18
|
+
const subject = () => getLaunchDarklySdkVersion(packageManager);
|
|
17
19
|
|
|
18
|
-
describe('when package is
|
|
20
|
+
describe('when package is resolved', () => {
|
|
19
21
|
beforeEach(() => {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
getResolvedVersion.mockReturnValue(launchDarklySdkVersion);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
test('queries the launchdarkly sdk package version', () => {
|
|
26
|
+
subject();
|
|
27
|
+
|
|
28
|
+
expect(getResolvedVersion).toHaveBeenCalledWith({
|
|
29
|
+
workspacePackage,
|
|
30
|
+
dependency: 'launchdarkly-js-client-sdk',
|
|
22
31
|
});
|
|
23
32
|
});
|
|
24
33
|
|
|
25
|
-
test('returns
|
|
26
|
-
expect(
|
|
34
|
+
test('returns version from package manager', () => {
|
|
35
|
+
expect(subject()).toEqual(launchDarklySdkVersion);
|
|
27
36
|
});
|
|
28
37
|
});
|
|
29
38
|
|
|
30
|
-
describe('when package is
|
|
39
|
+
describe('when package is not resolved', () => {
|
|
31
40
|
beforeEach(() => {
|
|
32
|
-
|
|
33
|
-
'./package-lock.json': JSON.stringify({
|
|
34
|
-
packages: {
|
|
35
|
-
'node_modules/launchdarkly-js-client-sdk': {
|
|
36
|
-
version: launchDarklySdkVersion,
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
}),
|
|
40
|
-
});
|
|
41
|
+
getResolvedVersion.mockReturnValue(undefined);
|
|
41
42
|
});
|
|
42
43
|
|
|
43
|
-
test('returns
|
|
44
|
-
expect(
|
|
44
|
+
test('returns undefined', () => {
|
|
45
|
+
expect(subject()).toBeUndefined();
|
|
45
46
|
});
|
|
46
47
|
});
|
|
47
48
|
});
|
|
@@ -1,49 +1,48 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { PackageManager } from '@servicetitan/install';
|
|
2
|
+
import { getWebComponentsVersion } from '../get-web-components-version';
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
describe('[startup] getWebComponentsVersion', () => {
|
|
4
|
+
describe(`[startup] ${getWebComponentsVersion.name}`, () => {
|
|
6
5
|
const webComponentsVersion = '1.2.3';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
const workspacePackage = 'packages/foo';
|
|
7
|
+
let getResolvedVersion: jest.Mock;
|
|
8
|
+
let packageManager: PackageManager;
|
|
9
|
+
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
getResolvedVersion = jest.fn();
|
|
12
|
+
packageManager = {
|
|
13
|
+
getResolvedVersion,
|
|
14
|
+
getWorkspacePackage: jest.fn().mockReturnValue(workspacePackage),
|
|
15
|
+
} as unknown as PackageManager;
|
|
11
16
|
});
|
|
12
17
|
|
|
13
|
-
const subject =
|
|
14
|
-
const { getWebComponentsVersion } = await import('../get-web-components-version');
|
|
15
|
-
return getWebComponentsVersion();
|
|
16
|
-
};
|
|
18
|
+
const subject = () => getWebComponentsVersion(packageManager);
|
|
17
19
|
|
|
18
|
-
describe('when package is
|
|
20
|
+
describe('when package is resolved', () => {
|
|
19
21
|
beforeEach(() => {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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',
|
|
28
31
|
});
|
|
29
32
|
});
|
|
30
33
|
|
|
31
|
-
test('returns version from package
|
|
32
|
-
expect(
|
|
34
|
+
test('returns version from package manager', () => {
|
|
35
|
+
expect(subject()).toEqual(webComponentsVersion);
|
|
33
36
|
});
|
|
34
37
|
});
|
|
35
38
|
|
|
36
|
-
describe('when package is not
|
|
39
|
+
describe('when package is not resolved', () => {
|
|
37
40
|
beforeEach(() => {
|
|
38
|
-
|
|
39
|
-
'./package-lock.json': JSON.stringify({ packages: {} }),
|
|
40
|
-
});
|
|
41
|
+
getResolvedVersion.mockReturnValue(undefined);
|
|
41
42
|
});
|
|
42
43
|
|
|
43
|
-
test('throws',
|
|
44
|
-
|
|
45
|
-
'Unable to resolve @servicetitan/web-components version from package-lock.json'
|
|
46
|
-
);
|
|
44
|
+
test('throws error', () => {
|
|
45
|
+
expect(subject).toThrow('Unable to resolve @servicetitan/web-components version');
|
|
47
46
|
});
|
|
48
47
|
});
|
|
49
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,5 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { PackageManager } from '@servicetitan/install';
|
|
2
2
|
|
|
3
|
-
export function getLaunchDarklySdkVersion() {
|
|
4
|
-
return
|
|
3
|
+
export function getLaunchDarklySdkVersion(packageManager: PackageManager) {
|
|
4
|
+
return packageManager.getResolvedVersion({
|
|
5
|
+
workspacePackage: packageManager.getWorkspacePackage(),
|
|
6
|
+
dependency: 'launchdarkly-js-client-sdk',
|
|
7
|
+
});
|
|
5
8
|
}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { PackageManager } from '@servicetitan/install';
|
|
2
|
+
|
|
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
|
+
});
|
|
2
10
|
|
|
3
|
-
export function getWebComponentsVersion() {
|
|
4
|
-
const version = getLockFileVersion(readPackageLock(), '@servicetitan/web-components');
|
|
5
11
|
if (!version) {
|
|
6
|
-
throw new Error(
|
|
7
|
-
'Unable to resolve @servicetitan/web-components version from package-lock.json'
|
|
8
|
-
);
|
|
12
|
+
throw new Error(`Unable to resolve ${PACKAGE_NAME} version`);
|
|
9
13
|
}
|
|
14
|
+
|
|
10
15
|
return version;
|
|
11
16
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"find-package-lock.d.ts","sourceRoot":"","sources":["../../../src/utils/package-lock/find-package-lock.ts"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,uBAK9B"}
|
|
@@ -1,26 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/package-lock/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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-lock-file-entry.d.ts","sourceRoot":"","sources":["../../../src/utils/package-lock/get-lock-file-entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,sCAW1F"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "getLockFileEntry", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return getLockFileEntry;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
function getLockFileEntry(lockFile, packageName, scope) {
|
|
12
|
-
var _ref;
|
|
13
|
-
const { packages } = lockFile;
|
|
14
|
-
const entry = (_ref = scope ? packages === null || packages === void 0 ? void 0 : packages[`node_modules/${scope}/node_modules/${packageName}`] : undefined) !== null && _ref !== void 0 ? _ref : packages === null || packages === void 0 ? void 0 : packages[`node_modules/${packageName}`];
|
|
15
|
-
if ((entry === null || entry === void 0 ? void 0 : entry.link) && entry.resolved) {
|
|
16
|
-
var _ref1;
|
|
17
|
-
return (_ref1 = packages === null || packages === void 0 ? void 0 : packages[entry.resolved]) !== null && _ref1 !== void 0 ? _ref1 : {};
|
|
18
|
-
}
|
|
19
|
-
return entry !== null && entry !== void 0 ? entry : {};
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
//# sourceMappingURL=get-lock-file-entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/package-lock/get-lock-file-entry.ts"],"sourcesContent":["import type { PackageLock } from './types';\n\nexport function getLockFileEntry(lockFile: PackageLock, packageName: string, scope?: string) {\n const { packages } = lockFile;\n const entry =\n (scope ? packages?.[`node_modules/${scope}/node_modules/${packageName}`] : undefined) ??\n packages?.[`node_modules/${packageName}`];\n\n if (entry?.link && entry.resolved) {\n return packages?.[entry.resolved] ?? {};\n }\n\n return entry ?? {};\n}\n"],"names":["getLockFileEntry","lockFile","packageName","scope","packages","entry","undefined","link","resolved"],"mappings":";;;;+BAEgBA;;;eAAAA;;;AAAT,SAASA,iBAAiBC,QAAqB,EAAEC,WAAmB,EAAEC,KAAc;QAGlFA;IAFL,MAAM,EAAEC,QAAQ,EAAE,GAAGH;IACrB,MAAMI,SACDF,OAAAA,QAAQC,qBAAAA,+BAAAA,QAAU,CAAC,CAAC,aAAa,EAAED,MAAM,cAAc,EAAED,aAAa,CAAC,GAAGI,uBAA1EH,kBAAAA,OACDC,qBAAAA,+BAAAA,QAAU,CAAC,CAAC,aAAa,EAAEF,aAAa,CAAC;IAE7C,IAAIG,CAAAA,kBAAAA,4BAAAA,MAAOE,IAAI,KAAIF,MAAMG,QAAQ,EAAE;;QAC/B,gBAAOJ,qBAAAA,+BAAAA,QAAU,CAACC,MAAMG,QAAQ,CAAC,yCAAI,CAAC;IAC1C;IAEA,OAAOH,kBAAAA,mBAAAA,QAAS,CAAC;AACrB"}
|