@teambit/dependency-resolver 1.0.108 → 1.0.110
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/artifacts/__bit_junit.xml +55 -0
- package/artifacts/preview/teambit_dependencies_dependency_resolver-preview.js +1 -0
- package/dist/{preview-1703647408454.js → preview-1703733956734.js} +2 -2
- package/package.json +24 -20
- package/apply-updates.spec.ts +0 -215
- package/apply-updates.ts +0 -81
- package/dependency-detector.ts +0 -5
- package/dependency-env.ts +0 -6
- package/dependency-installer.ts +0 -347
- package/dependency-linker.ts +0 -719
- package/dependency-resolver.aspect.ts +0 -7
- package/dependency-resolver.graphql.ts +0 -99
- package/dependency-resolver.main.runtime.spec.ts +0 -530
- package/dependency-resolver.main.runtime.ts +0 -1797
- package/dependency-version-resolver.ts +0 -42
- package/extend-with-components-from-dir.ts +0 -29
- package/get-all-policy-pkgs.spec.ts +0 -82
- package/get-all-policy-pkgs.ts +0 -126
- package/index.ts +0 -70
- package/package-manager-legacy.ts +0 -137
- package/package-manager.ts +0 -174
- package/types.ts +0 -77
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { Component } from '@teambit/component';
|
|
2
|
-
import { Schema } from '@teambit/graphql';
|
|
3
|
-
import gql from 'graphql-tag';
|
|
4
|
-
|
|
5
|
-
import { DependencyResolverMain } from './dependency-resolver.main.runtime';
|
|
6
|
-
import { Dependency } from './dependencies';
|
|
7
|
-
|
|
8
|
-
enum DependencyTypes {
|
|
9
|
-
component = 'ComponentDependency',
|
|
10
|
-
package = 'PackageDependency',
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export function dependencyResolverSchema(dependencyResolver: DependencyResolverMain): Schema {
|
|
14
|
-
return {
|
|
15
|
-
typeDefs: gql`
|
|
16
|
-
interface Dependency {
|
|
17
|
-
id: String!
|
|
18
|
-
version: String!
|
|
19
|
-
lifecycle: String!
|
|
20
|
-
type: String!
|
|
21
|
-
packageName: String # TODO - remove this after resolving the issue with apollo client when packages dont get packageName
|
|
22
|
-
}
|
|
23
|
-
# union Dependency = PackageDependency | ComponentDependency
|
|
24
|
-
|
|
25
|
-
type ComponentIdObject {
|
|
26
|
-
scope: String!
|
|
27
|
-
name: String!
|
|
28
|
-
version: String!
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
type PackageDependency implements Dependency {
|
|
32
|
-
id: String!
|
|
33
|
-
version: String!
|
|
34
|
-
lifecycle: String!
|
|
35
|
-
type: String!
|
|
36
|
-
packageName: String # TODO - remove this after resolving the issue with apollo client when packages dont get packageName
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
type ComponentDependency implements Dependency {
|
|
40
|
-
id: String!
|
|
41
|
-
version: String!
|
|
42
|
-
lifecycle: String!
|
|
43
|
-
isExtension: Boolean!
|
|
44
|
-
packageName: String!
|
|
45
|
-
type: String!
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
type PolicyValue {
|
|
49
|
-
version: String!
|
|
50
|
-
resolveFromEnv: Boolean
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
type Policy {
|
|
54
|
-
dependencyId: String!
|
|
55
|
-
lifecycleType: String!
|
|
56
|
-
value: PolicyValue!
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
extend type Component {
|
|
60
|
-
dependencies: [Dependency]
|
|
61
|
-
componentPolicy: [Policy]
|
|
62
|
-
}
|
|
63
|
-
`,
|
|
64
|
-
resolvers: {
|
|
65
|
-
Component: {
|
|
66
|
-
componentPolicy: async (component: Component) => {
|
|
67
|
-
const variantPolicy = await dependencyResolver.getPolicy(component);
|
|
68
|
-
return variantPolicy.serialize();
|
|
69
|
-
},
|
|
70
|
-
dependencies: async (component: Component) => {
|
|
71
|
-
const dependenciesList = await dependencyResolver.getDependencies(component);
|
|
72
|
-
const serialized = dependenciesList.serialize();
|
|
73
|
-
return serialized
|
|
74
|
-
.map((serialize) => {
|
|
75
|
-
const type = DependencyTypes[serialize.__type];
|
|
76
|
-
// @ts-ignore
|
|
77
|
-
serialize.type = serialize.__type;
|
|
78
|
-
// @ts-ignore
|
|
79
|
-
delete serialize.__type;
|
|
80
|
-
return {
|
|
81
|
-
__typename: type,
|
|
82
|
-
...serialize,
|
|
83
|
-
};
|
|
84
|
-
})
|
|
85
|
-
.sort((serializedDepA, serializedDepB) => {
|
|
86
|
-
const propToCompareA = serializedDepA.packageName || serializedDepA.id;
|
|
87
|
-
const propToCompareB = serializedDepB.packageName || serializedDepB.id;
|
|
88
|
-
return propToCompareA.localeCompare(propToCompareB);
|
|
89
|
-
});
|
|
90
|
-
},
|
|
91
|
-
Dependency: {
|
|
92
|
-
__resolveType: (dependency: Dependency) => {
|
|
93
|
-
return DependencyTypes[dependency.type];
|
|
94
|
-
},
|
|
95
|
-
},
|
|
96
|
-
},
|
|
97
|
-
},
|
|
98
|
-
};
|
|
99
|
-
}
|
|
@@ -1,530 +0,0 @@
|
|
|
1
|
-
// @ts-ignore
|
|
2
|
-
jest.mock('@teambit/legacy/dist/scope/network/http', () => ({
|
|
3
|
-
Http: {
|
|
4
|
-
// @ts-ignore
|
|
5
|
-
getNetworkConfig: jest.fn(),
|
|
6
|
-
// @ts-ignore
|
|
7
|
-
getProxyConfig: jest.fn(),
|
|
8
|
-
},
|
|
9
|
-
}));
|
|
10
|
-
|
|
11
|
-
/* eslint-disable import/first */
|
|
12
|
-
import { ComponentID } from '@teambit/component';
|
|
13
|
-
import path from 'path';
|
|
14
|
-
import { Http } from '@teambit/legacy/dist/scope/network/http';
|
|
15
|
-
import { DependencyResolverMain } from './dependency-resolver.main.runtime';
|
|
16
|
-
|
|
17
|
-
const logger = {
|
|
18
|
-
debug: () => {},
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
describe('DepenendencyResolverMain.getNetworkConfig()', () => {
|
|
22
|
-
const packageManagerSlot = {
|
|
23
|
-
// @ts-ignore
|
|
24
|
-
get: jest.fn(() => ({
|
|
25
|
-
getNetworkConfig: () => ({}),
|
|
26
|
-
})),
|
|
27
|
-
};
|
|
28
|
-
it('should return settings from global config', async () => {
|
|
29
|
-
const depResolver = new DependencyResolverMain(
|
|
30
|
-
{} as any,
|
|
31
|
-
{} as any,
|
|
32
|
-
{} as any,
|
|
33
|
-
{} as any,
|
|
34
|
-
logger as any,
|
|
35
|
-
{} as any,
|
|
36
|
-
{} as any,
|
|
37
|
-
{} as any,
|
|
38
|
-
{} as any,
|
|
39
|
-
packageManagerSlot as any,
|
|
40
|
-
{} as any,
|
|
41
|
-
{} as any,
|
|
42
|
-
{} as any
|
|
43
|
-
);
|
|
44
|
-
const globalConfig = {
|
|
45
|
-
fetchTimeout: 1,
|
|
46
|
-
fetchRetries: 2,
|
|
47
|
-
fetchRetryFactor: 3,
|
|
48
|
-
fetchRetryMintimeout: 4,
|
|
49
|
-
fetchRetryMaxtimeout: 5,
|
|
50
|
-
networkConcurrency: 6,
|
|
51
|
-
maxSockets: 7,
|
|
52
|
-
};
|
|
53
|
-
// @ts-ignore
|
|
54
|
-
Http.getNetworkConfig.mockReturnValue(Promise.resolve(globalConfig));
|
|
55
|
-
expect(await depResolver.getNetworkConfig()).toEqual(globalConfig);
|
|
56
|
-
});
|
|
57
|
-
it('should return settings from package manager config', async () => {
|
|
58
|
-
const depResolver = new DependencyResolverMain(
|
|
59
|
-
{} as any,
|
|
60
|
-
{} as any,
|
|
61
|
-
{} as any,
|
|
62
|
-
{} as any,
|
|
63
|
-
logger as any,
|
|
64
|
-
{} as any,
|
|
65
|
-
{} as any,
|
|
66
|
-
{} as any,
|
|
67
|
-
{} as any,
|
|
68
|
-
packageManagerSlot as any,
|
|
69
|
-
{} as any,
|
|
70
|
-
{} as any,
|
|
71
|
-
{} as any
|
|
72
|
-
);
|
|
73
|
-
const pmConfig = {
|
|
74
|
-
fetchTimeout: 11,
|
|
75
|
-
fetchRetries: 22,
|
|
76
|
-
fetchRetryFactor: 33,
|
|
77
|
-
fetchRetryMintimeout: 44,
|
|
78
|
-
fetchRetryMaxtimeout: 55,
|
|
79
|
-
networkConcurrency: 66,
|
|
80
|
-
maxSockets: 77,
|
|
81
|
-
};
|
|
82
|
-
packageManagerSlot.get.mockReturnValue({
|
|
83
|
-
getNetworkConfig: () => pmConfig,
|
|
84
|
-
});
|
|
85
|
-
// @ts-ignore
|
|
86
|
-
Http.getNetworkConfig.mockReturnValue(Promise.resolve({}));
|
|
87
|
-
expect(await depResolver.getNetworkConfig()).toEqual(pmConfig);
|
|
88
|
-
});
|
|
89
|
-
it('should return settings from aspect config', async () => {
|
|
90
|
-
const config = {
|
|
91
|
-
fetchTimeout: 111,
|
|
92
|
-
fetchRetries: 222,
|
|
93
|
-
fetchRetryFactor: 333,
|
|
94
|
-
fetchRetryMintimeout: 444,
|
|
95
|
-
fetchRetryMaxtimeout: 555,
|
|
96
|
-
networkConcurrency: 666,
|
|
97
|
-
maxSockets: 777,
|
|
98
|
-
} as any;
|
|
99
|
-
// @ts-ignore
|
|
100
|
-
Http.getNetworkConfig.mockReturnValue(Promise.resolve({}));
|
|
101
|
-
const depResolver = new DependencyResolverMain(
|
|
102
|
-
config,
|
|
103
|
-
{} as any,
|
|
104
|
-
{} as any,
|
|
105
|
-
{} as any,
|
|
106
|
-
logger as any,
|
|
107
|
-
{} as any,
|
|
108
|
-
{} as any,
|
|
109
|
-
{} as any,
|
|
110
|
-
{} as any,
|
|
111
|
-
packageManagerSlot as any,
|
|
112
|
-
{} as any,
|
|
113
|
-
{} as any,
|
|
114
|
-
{} as any
|
|
115
|
-
);
|
|
116
|
-
expect(await depResolver.getNetworkConfig()).toEqual(config);
|
|
117
|
-
});
|
|
118
|
-
it('should merge settings from global config, package manager config, and aspect config', async () => {
|
|
119
|
-
const globalConfig = {
|
|
120
|
-
fetchTimeout: 1,
|
|
121
|
-
fetchRetries: 2,
|
|
122
|
-
};
|
|
123
|
-
const pmConfig = {
|
|
124
|
-
fetchRetryFactor: 33,
|
|
125
|
-
fetchRetryMintimeout: 44,
|
|
126
|
-
};
|
|
127
|
-
const config = {
|
|
128
|
-
fetchRetryMaxtimeout: 555,
|
|
129
|
-
networkConcurrency: 666,
|
|
130
|
-
maxSockets: 777,
|
|
131
|
-
} as any;
|
|
132
|
-
// @ts-ignore
|
|
133
|
-
Http.getNetworkConfig.mockReturnValue(Promise.resolve(globalConfig));
|
|
134
|
-
packageManagerSlot.get.mockReturnValue({
|
|
135
|
-
getNetworkConfig: () => pmConfig,
|
|
136
|
-
});
|
|
137
|
-
const depResolver = new DependencyResolverMain(
|
|
138
|
-
config,
|
|
139
|
-
{} as any,
|
|
140
|
-
{} as any,
|
|
141
|
-
{} as any,
|
|
142
|
-
logger as any,
|
|
143
|
-
{} as any,
|
|
144
|
-
{} as any,
|
|
145
|
-
{} as any,
|
|
146
|
-
{} as any,
|
|
147
|
-
packageManagerSlot as any,
|
|
148
|
-
{} as any,
|
|
149
|
-
{} as any,
|
|
150
|
-
{} as any
|
|
151
|
-
);
|
|
152
|
-
expect(await depResolver.getNetworkConfig()).toEqual({
|
|
153
|
-
fetchTimeout: 1,
|
|
154
|
-
fetchRetries: 2,
|
|
155
|
-
fetchRetryFactor: 33,
|
|
156
|
-
fetchRetryMintimeout: 44,
|
|
157
|
-
fetchRetryMaxtimeout: 555,
|
|
158
|
-
networkConcurrency: 666,
|
|
159
|
-
maxSockets: 777,
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
it('should read cafile when it is returned by the global config', async () => {
|
|
163
|
-
const depResolver = new DependencyResolverMain(
|
|
164
|
-
{} as any,
|
|
165
|
-
{} as any,
|
|
166
|
-
{} as any,
|
|
167
|
-
{} as any,
|
|
168
|
-
{ debug: jest.fn() } as any,
|
|
169
|
-
{} as any,
|
|
170
|
-
{} as any,
|
|
171
|
-
{} as any,
|
|
172
|
-
{} as any,
|
|
173
|
-
packageManagerSlot as any,
|
|
174
|
-
{} as any,
|
|
175
|
-
{} as any,
|
|
176
|
-
{} as any
|
|
177
|
-
);
|
|
178
|
-
// @ts-ignore
|
|
179
|
-
Http.getNetworkConfig.mockReturnValue(
|
|
180
|
-
Promise.resolve({
|
|
181
|
-
cafile: path.join(__dirname, 'fixtures/cafile.txt'),
|
|
182
|
-
})
|
|
183
|
-
);
|
|
184
|
-
// @ts-ignore
|
|
185
|
-
expect((await depResolver.getNetworkConfig()).ca).toStrictEqual([
|
|
186
|
-
`-----BEGIN CERTIFICATE-----
|
|
187
|
-
XXXX
|
|
188
|
-
-----END CERTIFICATE-----`,
|
|
189
|
-
]);
|
|
190
|
-
});
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
describe('DepenendencyResolverMain.getOutdatedPkgsFromPolicies()', () => {
|
|
194
|
-
function createDependencyResolverMain(
|
|
195
|
-
resolveRemoteVersion: (spec: string) => { version: string | undefined },
|
|
196
|
-
policy: any
|
|
197
|
-
) {
|
|
198
|
-
const packageManagerSlot = {
|
|
199
|
-
// @ts-ignore
|
|
200
|
-
get: () => ({
|
|
201
|
-
resolveRemoteVersion,
|
|
202
|
-
getNetworkConfig: () => ({}),
|
|
203
|
-
}),
|
|
204
|
-
};
|
|
205
|
-
return new DependencyResolverMain(
|
|
206
|
-
{ policy } as any,
|
|
207
|
-
{} as any,
|
|
208
|
-
{} as any,
|
|
209
|
-
{} as any,
|
|
210
|
-
{
|
|
211
|
-
// @ts-ignore
|
|
212
|
-
debug: jest.fn(),
|
|
213
|
-
// @ts-ignore
|
|
214
|
-
setStatusLine: jest.fn(),
|
|
215
|
-
// @ts-ignore
|
|
216
|
-
consoleSuccess: jest.fn(),
|
|
217
|
-
} as any,
|
|
218
|
-
{} as any,
|
|
219
|
-
{} as any,
|
|
220
|
-
{
|
|
221
|
-
getSync: () => false,
|
|
222
|
-
} as any,
|
|
223
|
-
{} as any,
|
|
224
|
-
packageManagerSlot as any,
|
|
225
|
-
{} as any,
|
|
226
|
-
{} as any,
|
|
227
|
-
{} as any
|
|
228
|
-
);
|
|
229
|
-
}
|
|
230
|
-
describe('without options', () => {
|
|
231
|
-
function resolveRemoteVersion(spec: string): { version: string | undefined } {
|
|
232
|
-
if (spec === 'cannot-resolve@latest') throw new Error('Cannot resolve latest');
|
|
233
|
-
return {
|
|
234
|
-
version: {
|
|
235
|
-
'root-runtime-dep1@latest': '2.0.0',
|
|
236
|
-
'root-peer-dep1@latest': '2.0.0',
|
|
237
|
-
'variant1-runtime-dep1@latest': '2.0.0',
|
|
238
|
-
'variant1-runtime-dep3@latest': '2.0.0',
|
|
239
|
-
'variant1-dev-dep1@latest': '2.0.0',
|
|
240
|
-
'variant1-dev-dep3@latest': '2.0.0',
|
|
241
|
-
'variant1-peer-dep1@latest': '2.0.0',
|
|
242
|
-
'variant1-peer-dep3@latest': '2.0.0',
|
|
243
|
-
'component1-runtime-dep1@latest': '2.0.0',
|
|
244
|
-
'component1-runtime-dep3@latest': '2.0.0',
|
|
245
|
-
'component1-dev-dep1@latest': '2.0.0',
|
|
246
|
-
'component1-dev-dep3@latest': '2.0.0',
|
|
247
|
-
'component1-peer-dep1@latest': '2.0.0',
|
|
248
|
-
'component1-peer-dep3@latest': '2.0.0',
|
|
249
|
-
'pkg-with-old-latest@latest': '0.0.0',
|
|
250
|
-
}[spec],
|
|
251
|
-
};
|
|
252
|
-
}
|
|
253
|
-
const policy = {
|
|
254
|
-
dependencies: {
|
|
255
|
-
'root-runtime-dep1': '1.0.0',
|
|
256
|
-
'root-runtime-dep2': '1.0.0',
|
|
257
|
-
},
|
|
258
|
-
peerDependencies: {
|
|
259
|
-
'root-peer-dep1': '1.0.0',
|
|
260
|
-
'root-peer-dep2': '1.0.0',
|
|
261
|
-
},
|
|
262
|
-
};
|
|
263
|
-
const depResolver = createDependencyResolverMain(resolveRemoteVersion, policy);
|
|
264
|
-
it('should return outdated dependencies', async () => {
|
|
265
|
-
const outdatedPkgs = await depResolver.getOutdatedPkgsFromPolicies({
|
|
266
|
-
rootDir: '',
|
|
267
|
-
variantPoliciesByPatterns: {
|
|
268
|
-
'{variant1/*}': {
|
|
269
|
-
dependencies: {
|
|
270
|
-
'variant1-runtime-dep1': '1.0.0',
|
|
271
|
-
'variant1-runtime-dep2': '1.0.0',
|
|
272
|
-
'variant1-runtime-dep3': '-',
|
|
273
|
-
},
|
|
274
|
-
devDependencies: {
|
|
275
|
-
'variant1-dev-dep1': '1.0.0',
|
|
276
|
-
'variant1-dev-dep2': '1.0.0',
|
|
277
|
-
'variant1-dev-dep3': '-',
|
|
278
|
-
},
|
|
279
|
-
peerDependencies: {
|
|
280
|
-
'variant1-peer-dep1': '1.0.0',
|
|
281
|
-
'variant1-peer-dep2': '1.0.0',
|
|
282
|
-
'variant1-peer-dep3': '-',
|
|
283
|
-
},
|
|
284
|
-
},
|
|
285
|
-
},
|
|
286
|
-
componentPolicies: [
|
|
287
|
-
{
|
|
288
|
-
componentId: ComponentID.fromString('scope/component1'),
|
|
289
|
-
policy: {
|
|
290
|
-
dependencies: {
|
|
291
|
-
'pkg-with-old-latest': '1.0.0',
|
|
292
|
-
'cannot-resolve': '1.0.0',
|
|
293
|
-
'component1-runtime-dep1': '1.0.0',
|
|
294
|
-
'component1-runtime-dep2': '1.0.0',
|
|
295
|
-
'component1-runtime-dep3': '-',
|
|
296
|
-
},
|
|
297
|
-
devDependencies: {
|
|
298
|
-
'component1-dev-dep1': '1.0.0',
|
|
299
|
-
'component1-dev-dep2': '1.0.0',
|
|
300
|
-
'component1-dev-dep3': '-',
|
|
301
|
-
},
|
|
302
|
-
peerDependencies: {
|
|
303
|
-
'component1-peer-dep1': '1.0.0',
|
|
304
|
-
'component1-peer-dep2': '1.0.0',
|
|
305
|
-
'component1-peer-dep3': '-',
|
|
306
|
-
},
|
|
307
|
-
},
|
|
308
|
-
},
|
|
309
|
-
],
|
|
310
|
-
components: [],
|
|
311
|
-
});
|
|
312
|
-
// @ts-ignore
|
|
313
|
-
expect(outdatedPkgs).toStrictEqual([
|
|
314
|
-
{
|
|
315
|
-
currentRange: '1.0.0',
|
|
316
|
-
latestRange: '2.0.0',
|
|
317
|
-
name: 'root-runtime-dep1',
|
|
318
|
-
source: 'rootPolicy',
|
|
319
|
-
variantPattern: null,
|
|
320
|
-
targetField: 'dependencies',
|
|
321
|
-
},
|
|
322
|
-
{
|
|
323
|
-
currentRange: '1.0.0',
|
|
324
|
-
latestRange: '2.0.0',
|
|
325
|
-
name: 'root-peer-dep1',
|
|
326
|
-
source: 'rootPolicy',
|
|
327
|
-
variantPattern: null,
|
|
328
|
-
targetField: 'peerDependencies',
|
|
329
|
-
},
|
|
330
|
-
{
|
|
331
|
-
currentRange: '1.0.0',
|
|
332
|
-
latestRange: '2.0.0',
|
|
333
|
-
name: 'variant1-runtime-dep1',
|
|
334
|
-
source: 'variants',
|
|
335
|
-
variantPattern: '{variant1/*}',
|
|
336
|
-
targetField: 'dependencies',
|
|
337
|
-
},
|
|
338
|
-
{
|
|
339
|
-
currentRange: '1.0.0',
|
|
340
|
-
latestRange: '2.0.0',
|
|
341
|
-
name: 'variant1-dev-dep1',
|
|
342
|
-
source: 'variants',
|
|
343
|
-
variantPattern: '{variant1/*}',
|
|
344
|
-
targetField: 'devDependencies',
|
|
345
|
-
},
|
|
346
|
-
{
|
|
347
|
-
currentRange: '1.0.0',
|
|
348
|
-
latestRange: '2.0.0',
|
|
349
|
-
name: 'variant1-peer-dep1',
|
|
350
|
-
source: 'variants',
|
|
351
|
-
variantPattern: '{variant1/*}',
|
|
352
|
-
targetField: 'peerDependencies',
|
|
353
|
-
},
|
|
354
|
-
{
|
|
355
|
-
currentRange: '1.0.0',
|
|
356
|
-
latestRange: '2.0.0',
|
|
357
|
-
name: 'component1-runtime-dep1',
|
|
358
|
-
source: 'component',
|
|
359
|
-
componentId: ComponentID.fromString('scope/component1'),
|
|
360
|
-
targetField: 'dependencies',
|
|
361
|
-
},
|
|
362
|
-
{
|
|
363
|
-
currentRange: '1.0.0',
|
|
364
|
-
latestRange: '2.0.0',
|
|
365
|
-
name: 'component1-dev-dep1',
|
|
366
|
-
source: 'component',
|
|
367
|
-
componentId: ComponentID.fromString('scope/component1'),
|
|
368
|
-
targetField: 'devDependencies',
|
|
369
|
-
},
|
|
370
|
-
{
|
|
371
|
-
currentRange: '1.0.0',
|
|
372
|
-
latestRange: '2.0.0',
|
|
373
|
-
name: 'component1-peer-dep1',
|
|
374
|
-
source: 'component',
|
|
375
|
-
componentId: ComponentID.fromString('scope/component1'),
|
|
376
|
-
targetField: 'peerDependencies',
|
|
377
|
-
},
|
|
378
|
-
]);
|
|
379
|
-
});
|
|
380
|
-
});
|
|
381
|
-
describe('forced version bump', () => {
|
|
382
|
-
function resolveRemoteVersion(spec: string): { version: string | undefined } {
|
|
383
|
-
return {
|
|
384
|
-
version: {
|
|
385
|
-
'dep1@>=0.0.1 <0.1.0': '0.0.2',
|
|
386
|
-
'dep1@>=0.0.1 <1.0.0': '0.0.2',
|
|
387
|
-
'dep1@latest': '0.0.2',
|
|
388
|
-
|
|
389
|
-
'dep2@>=0.1.0 <0.2.0': '0.1.0',
|
|
390
|
-
'dep2@>=0.1.0 <1.0.0': '0.2.0',
|
|
391
|
-
'dep2@latest': '0.2.0',
|
|
392
|
-
|
|
393
|
-
'dep3@>=1.0.0 <1.1.0': '1.0.0',
|
|
394
|
-
'dep3@>=1.0.0 <2.0.0': '1.0.0',
|
|
395
|
-
'dep3@latest': '2.0.0',
|
|
396
|
-
}[spec],
|
|
397
|
-
};
|
|
398
|
-
}
|
|
399
|
-
const policy = {
|
|
400
|
-
dependencies: {
|
|
401
|
-
dep1: '0.0.1',
|
|
402
|
-
dep2: '^0.1.0',
|
|
403
|
-
dep3: '^1.0.0',
|
|
404
|
-
},
|
|
405
|
-
};
|
|
406
|
-
const depResolver = createDependencyResolverMain(resolveRemoteVersion, policy);
|
|
407
|
-
it('should return outdated dependencies when forcedVersionBump is set to patch', async () => {
|
|
408
|
-
const outdatedPkgs = await depResolver.getOutdatedPkgsFromPolicies({
|
|
409
|
-
rootDir: '',
|
|
410
|
-
variantPoliciesByPatterns: {},
|
|
411
|
-
componentPolicies: [],
|
|
412
|
-
components: [],
|
|
413
|
-
forceVersionBump: 'patch',
|
|
414
|
-
});
|
|
415
|
-
// @ts-ignore
|
|
416
|
-
expect(outdatedPkgs).toStrictEqual([
|
|
417
|
-
{
|
|
418
|
-
currentRange: '0.0.1',
|
|
419
|
-
latestRange: '0.0.2',
|
|
420
|
-
name: 'dep1',
|
|
421
|
-
source: 'rootPolicy',
|
|
422
|
-
variantPattern: null,
|
|
423
|
-
targetField: 'dependencies',
|
|
424
|
-
},
|
|
425
|
-
]);
|
|
426
|
-
});
|
|
427
|
-
it('should return outdated dependencies when forcedVersionBump is set to minor', async () => {
|
|
428
|
-
const outdatedPkgs = await depResolver.getOutdatedPkgsFromPolicies({
|
|
429
|
-
rootDir: '',
|
|
430
|
-
variantPoliciesByPatterns: {},
|
|
431
|
-
componentPolicies: [],
|
|
432
|
-
components: [],
|
|
433
|
-
forceVersionBump: 'minor',
|
|
434
|
-
});
|
|
435
|
-
// @ts-ignore
|
|
436
|
-
expect(outdatedPkgs).toStrictEqual([
|
|
437
|
-
{
|
|
438
|
-
currentRange: '0.0.1',
|
|
439
|
-
latestRange: '0.0.2',
|
|
440
|
-
name: 'dep1',
|
|
441
|
-
source: 'rootPolicy',
|
|
442
|
-
variantPattern: null,
|
|
443
|
-
targetField: 'dependencies',
|
|
444
|
-
},
|
|
445
|
-
{
|
|
446
|
-
currentRange: '^0.1.0',
|
|
447
|
-
latestRange: '^0.2.0',
|
|
448
|
-
name: 'dep2',
|
|
449
|
-
source: 'rootPolicy',
|
|
450
|
-
variantPattern: null,
|
|
451
|
-
targetField: 'dependencies',
|
|
452
|
-
},
|
|
453
|
-
]);
|
|
454
|
-
});
|
|
455
|
-
it('should return outdated dependencies when forcedVersionBump is set to major', async () => {
|
|
456
|
-
const outdatedPkgs = await depResolver.getOutdatedPkgsFromPolicies({
|
|
457
|
-
rootDir: '',
|
|
458
|
-
variantPoliciesByPatterns: {},
|
|
459
|
-
componentPolicies: [],
|
|
460
|
-
components: [],
|
|
461
|
-
forceVersionBump: 'major',
|
|
462
|
-
});
|
|
463
|
-
// @ts-ignore
|
|
464
|
-
expect(outdatedPkgs).toStrictEqual([
|
|
465
|
-
{
|
|
466
|
-
currentRange: '0.0.1',
|
|
467
|
-
latestRange: '0.0.2',
|
|
468
|
-
name: 'dep1',
|
|
469
|
-
source: 'rootPolicy',
|
|
470
|
-
variantPattern: null,
|
|
471
|
-
targetField: 'dependencies',
|
|
472
|
-
},
|
|
473
|
-
{
|
|
474
|
-
currentRange: '^0.1.0',
|
|
475
|
-
latestRange: '^0.2.0',
|
|
476
|
-
name: 'dep2',
|
|
477
|
-
source: 'rootPolicy',
|
|
478
|
-
variantPattern: null,
|
|
479
|
-
targetField: 'dependencies',
|
|
480
|
-
},
|
|
481
|
-
{
|
|
482
|
-
currentRange: '^1.0.0',
|
|
483
|
-
latestRange: '^2.0.0',
|
|
484
|
-
name: 'dep3',
|
|
485
|
-
source: 'rootPolicy',
|
|
486
|
-
variantPattern: null,
|
|
487
|
-
targetField: 'dependencies',
|
|
488
|
-
},
|
|
489
|
-
]);
|
|
490
|
-
});
|
|
491
|
-
});
|
|
492
|
-
});
|
|
493
|
-
|
|
494
|
-
describe('DepenendencyResolverMain.getComponentEnvPolicyFromEnv()', () => {
|
|
495
|
-
it('should throw an error if the env policy has a peer with an empty string set for the supportedRange', async () => {
|
|
496
|
-
const depResolver = new DependencyResolverMain(
|
|
497
|
-
{} as any,
|
|
498
|
-
{} as any,
|
|
499
|
-
{} as any,
|
|
500
|
-
{
|
|
501
|
-
isCoreEnv: () => false,
|
|
502
|
-
} as any,
|
|
503
|
-
{} as any,
|
|
504
|
-
{} as any,
|
|
505
|
-
{} as any,
|
|
506
|
-
{} as any,
|
|
507
|
-
{} as any,
|
|
508
|
-
{} as any,
|
|
509
|
-
{} as any,
|
|
510
|
-
{} as any,
|
|
511
|
-
{} as any
|
|
512
|
-
);
|
|
513
|
-
await expect(
|
|
514
|
-
depResolver.getComponentEnvPolicyFromEnv(
|
|
515
|
-
{
|
|
516
|
-
getDependencies: () => ({
|
|
517
|
-
peers: [
|
|
518
|
-
{
|
|
519
|
-
name: '@teambit/community.ui.bit-cli.commands-provider',
|
|
520
|
-
supportedRange: '',
|
|
521
|
-
version: '',
|
|
522
|
-
},
|
|
523
|
-
],
|
|
524
|
-
}),
|
|
525
|
-
},
|
|
526
|
-
{ envId: 'teambit.test/test' }
|
|
527
|
-
) // @ts-ignore
|
|
528
|
-
).rejects.toThrowError('Peer "@teambit/community.ui.bit-cli.commands-provider" has an empty supportedRange');
|
|
529
|
-
});
|
|
530
|
-
});
|