@teambit/snapping 1.0.1236 → 1.0.1238
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/plus-range-versions.d.ts +11 -0
- package/dist/plus-range-versions.js +109 -0
- package/dist/plus-range-versions.js.map +1 -0
- package/dist/plus-range-versions.spec.d.ts +1 -0
- package/dist/plus-range-versions.spec.js +140 -0
- package/dist/plus-range-versions.spec.js.map +1 -0
- package/dist/snapping.main.runtime.js +5 -2
- package/dist/snapping.main.runtime.js.map +1 -1
- package/dist/version-maker.js +9 -0
- package/dist/version-maker.js.map +1 -1
- package/package.json +43 -42
- /package/dist/{preview-1792527927744.js → preview-1792591009402.js} +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ConsumerComponent } from '@teambit/legacy.consumer-component';
|
|
2
|
+
/**
|
|
3
|
+
* returns a description of every "+^"/"+~" version the component uses: in its dependencies (e.g. an env.jsonc
|
|
4
|
+
* supportedRange or `bit deps set`), in its dependency-resolver policy, and in its own env.jsonc if it's an env.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getPlusRangeVersionsUsage(component: ConsumerComponent): string[];
|
|
7
|
+
/**
|
|
8
|
+
* "+^" and "+~" are not supported by older bit versions (including the one bit.cloud may run), which write them
|
|
9
|
+
* as is to the package.json. until it's safe to use them, they're blocked from leaving the workspace.
|
|
10
|
+
*/
|
|
11
|
+
export declare function throwForPlusRangeVersions(components: ConsumerComponent[]): void;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getPlusRangeVersionsUsage = getPlusRangeVersionsUsage;
|
|
7
|
+
exports.throwForPlusRangeVersions = throwForPlusRangeVersions;
|
|
8
|
+
function _commentJson() {
|
|
9
|
+
const data = require("comment-json");
|
|
10
|
+
_commentJson = function () {
|
|
11
|
+
return data;
|
|
12
|
+
};
|
|
13
|
+
return data;
|
|
14
|
+
}
|
|
15
|
+
function _bitError() {
|
|
16
|
+
const data = require("@teambit/bit-error");
|
|
17
|
+
_bitError = function () {
|
|
18
|
+
return data;
|
|
19
|
+
};
|
|
20
|
+
return data;
|
|
21
|
+
}
|
|
22
|
+
function _legacy() {
|
|
23
|
+
const data = require("@teambit/legacy.constants");
|
|
24
|
+
_legacy = function () {
|
|
25
|
+
return data;
|
|
26
|
+
};
|
|
27
|
+
return data;
|
|
28
|
+
}
|
|
29
|
+
function _dependencyResolver() {
|
|
30
|
+
const data = require("@teambit/dependency-resolver");
|
|
31
|
+
_dependencyResolver = function () {
|
|
32
|
+
return data;
|
|
33
|
+
};
|
|
34
|
+
return data;
|
|
35
|
+
}
|
|
36
|
+
function _harmonyModules() {
|
|
37
|
+
const data = require("@teambit/harmony.modules.feature-toggle");
|
|
38
|
+
_harmonyModules = function () {
|
|
39
|
+
return data;
|
|
40
|
+
};
|
|
41
|
+
return data;
|
|
42
|
+
}
|
|
43
|
+
const isPlusRangeVersion = version => version !== _legacy().MANUALLY_ADD_DEPENDENCY && (0, _dependencyResolver().isPlusVersion)(version);
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* returns a description of every "+^"/"+~" version the component uses: in its dependencies (e.g. an env.jsonc
|
|
47
|
+
* supportedRange or `bit deps set`), in its dependency-resolver policy, and in its own env.jsonc if it's an env.
|
|
48
|
+
*/
|
|
49
|
+
function getPlusRangeVersionsUsage(component) {
|
|
50
|
+
const usages = [];
|
|
51
|
+
component.getAllDependencies().forEach(dep => {
|
|
52
|
+
if (isPlusRangeVersion(dep.versionRange)) usages.push(`${dep.packageName || dep.id.toStringWithoutVersion()}: "${dep.versionRange}"`);
|
|
53
|
+
});
|
|
54
|
+
const policy = component.extensions.findCoreExtension(_dependencyResolver().DependencyResolverAspect.id)?.data?.policy || [];
|
|
55
|
+
policy.forEach(entry => {
|
|
56
|
+
if (isPlusRangeVersion(entry.value?.version)) usages.push(`${entry.dependencyId}: "${entry.value.version}"`);
|
|
57
|
+
});
|
|
58
|
+
const envJsonc = component.files.find(file => ['env.jsonc', 'env.json'].includes(file.relative));
|
|
59
|
+
if (envJsonc) {
|
|
60
|
+
let envJsoncPolicy;
|
|
61
|
+
try {
|
|
62
|
+
envJsoncPolicy = (0, _commentJson().parse)(envJsonc.contents.toString())?.policy;
|
|
63
|
+
} catch {
|
|
64
|
+
// an invalid env.jsonc is reported when the env is loaded
|
|
65
|
+
}
|
|
66
|
+
const addUsage = (field, name, version) => {
|
|
67
|
+
if (isPlusRangeVersion(version)) usages.push(`env.jsonc policy.${field} ${name}: "${version}"`);
|
|
68
|
+
};
|
|
69
|
+
Object.entries(envJsoncPolicy || {}).forEach(([field, entries]) => {
|
|
70
|
+
if (Array.isArray(entries)) {
|
|
71
|
+
entries.forEach(entry => {
|
|
72
|
+
addUsage(field, entry?.name, entry?.version);
|
|
73
|
+
addUsage(field, entry?.name, entry?.supportedRange);
|
|
74
|
+
});
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
// the legacy format, e.g. "peerDependencies": { "pkg": "1.0.0" } or { "pkg": { "version": "1.0.0" } }
|
|
78
|
+
Object.entries(entries || {}).forEach(([name, value]) => {
|
|
79
|
+
addUsage(field, name, typeof value === 'string' ? value : value?.version);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return [...new Set(usages)];
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* "+^" and "+~" are not supported by older bit versions (including the one bit.cloud may run), which write them
|
|
88
|
+
* as is to the package.json. until it's safe to use them, they're blocked from leaving the workspace.
|
|
89
|
+
*/
|
|
90
|
+
function throwForPlusRangeVersions(components) {
|
|
91
|
+
if ((0, _harmonyModules().isFeatureEnabled)(_harmonyModules().PLUS_RANGE_VERSIONS_FEATURE)) return;
|
|
92
|
+
const usagePerComp = components.map(component => ({
|
|
93
|
+
id: component.id.toStringWithoutVersion(),
|
|
94
|
+
usages: getPlusRangeVersionsUsage(component)
|
|
95
|
+
})).filter(({
|
|
96
|
+
usages
|
|
97
|
+
}) => usages.length);
|
|
98
|
+
if (!usagePerComp.length) return;
|
|
99
|
+
const details = usagePerComp.map(({
|
|
100
|
+
id,
|
|
101
|
+
usages
|
|
102
|
+
}) => `${id}\n${usages.map(u => ` ${u}`).join('\n')}`).join('\n');
|
|
103
|
+
throw new (_bitError().BitError)(`the following components use "+^"/"+~" versions, which are not supported yet:
|
|
104
|
+
${details}
|
|
105
|
+
older bit versions, including the one that builds and releases on bit.cloud, write them as is to the package.json.
|
|
106
|
+
use "+" or a semver range instead. to use them anyway, run "bit config set features=${_harmonyModules().PLUS_RANGE_VERSIONS_FEATURE}"`);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
//# sourceMappingURL=plus-range-versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_commentJson","data","require","_bitError","_legacy","_dependencyResolver","_harmonyModules","isPlusRangeVersion","version","MANUALLY_ADD_DEPENDENCY","isPlusVersion","getPlusRangeVersionsUsage","component","usages","getAllDependencies","forEach","dep","versionRange","push","packageName","id","toStringWithoutVersion","policy","extensions","findCoreExtension","DependencyResolverAspect","entry","value","dependencyId","envJsonc","files","find","file","includes","relative","envJsoncPolicy","parse","contents","toString","addUsage","field","name","Object","entries","Array","isArray","supportedRange","Set","throwForPlusRangeVersions","components","isFeatureEnabled","PLUS_RANGE_VERSIONS_FEATURE","usagePerComp","map","filter","length","details","u","join","BitError"],"sources":["plus-range-versions.ts"],"sourcesContent":["import { parse } from 'comment-json';\nimport { BitError } from '@teambit/bit-error';\nimport { MANUALLY_ADD_DEPENDENCY } from '@teambit/legacy.constants';\nimport type { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport { DependencyResolverAspect, isPlusVersion } from '@teambit/dependency-resolver';\nimport { PLUS_RANGE_VERSIONS_FEATURE, isFeatureEnabled } from '@teambit/harmony.modules.feature-toggle';\n\nconst isPlusRangeVersion = (version?: string) => version !== MANUALLY_ADD_DEPENDENCY && isPlusVersion(version);\n\n/**\n * returns a description of every \"+^\"/\"+~\" version the component uses: in its dependencies (e.g. an env.jsonc\n * supportedRange or `bit deps set`), in its dependency-resolver policy, and in its own env.jsonc if it's an env.\n */\nexport function getPlusRangeVersionsUsage(component: ConsumerComponent): string[] {\n const usages: string[] = [];\n component.getAllDependencies().forEach((dep) => {\n if (isPlusRangeVersion(dep.versionRange))\n usages.push(`${dep.packageName || dep.id.toStringWithoutVersion()}: \"${dep.versionRange}\"`);\n });\n const policy = component.extensions.findCoreExtension(DependencyResolverAspect.id)?.data?.policy || [];\n policy.forEach((entry) => {\n if (isPlusRangeVersion(entry.value?.version)) usages.push(`${entry.dependencyId}: \"${entry.value.version}\"`);\n });\n const envJsonc = component.files.find((file) => ['env.jsonc', 'env.json'].includes(file.relative));\n if (envJsonc) {\n let envJsoncPolicy: Record<string, any> | undefined;\n try {\n envJsoncPolicy = (parse(envJsonc.contents.toString()) as Record<string, any>)?.policy;\n } catch {\n // an invalid env.jsonc is reported when the env is loaded\n }\n const addUsage = (field: string, name: string, version: any) => {\n if (isPlusRangeVersion(version)) usages.push(`env.jsonc policy.${field} ${name}: \"${version}\"`);\n };\n Object.entries(envJsoncPolicy || {}).forEach(([field, entries]) => {\n if (Array.isArray(entries)) {\n entries.forEach((entry) => {\n addUsage(field, entry?.name, entry?.version);\n addUsage(field, entry?.name, entry?.supportedRange);\n });\n return;\n }\n // the legacy format, e.g. \"peerDependencies\": { \"pkg\": \"1.0.0\" } or { \"pkg\": { \"version\": \"1.0.0\" } }\n Object.entries(entries || {}).forEach(([name, value]: [string, any]) => {\n addUsage(field, name, typeof value === 'string' ? value : value?.version);\n });\n });\n }\n return [...new Set(usages)];\n}\n\n/**\n * \"+^\" and \"+~\" are not supported by older bit versions (including the one bit.cloud may run), which write them\n * as is to the package.json. until it's safe to use them, they're blocked from leaving the workspace.\n */\nexport function throwForPlusRangeVersions(components: ConsumerComponent[]) {\n if (isFeatureEnabled(PLUS_RANGE_VERSIONS_FEATURE)) return;\n const usagePerComp = components\n .map((component) => ({ id: component.id.toStringWithoutVersion(), usages: getPlusRangeVersionsUsage(component) }))\n .filter(({ usages }) => usages.length);\n if (!usagePerComp.length) return;\n const details = usagePerComp.map(({ id, usages }) => `${id}\\n${usages.map((u) => ` ${u}`).join('\\n')}`).join('\\n');\n throw new BitError(`the following components use \"+^\"/\"+~\" versions, which are not supported yet:\n${details}\nolder bit versions, including the one that builds and releases on bit.cloud, write them as is to the package.json.\nuse \"+\" or a semver range instead. to use them anyway, run \"bit config set features=${PLUS_RANGE_VERSIONS_FEATURE}\"`);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _chai() {
|
|
4
|
+
const data = require("chai");
|
|
5
|
+
_chai = function () {
|
|
6
|
+
return data;
|
|
7
|
+
};
|
|
8
|
+
return data;
|
|
9
|
+
}
|
|
10
|
+
function _componentId() {
|
|
11
|
+
const data = require("@teambit/component-id");
|
|
12
|
+
_componentId = function () {
|
|
13
|
+
return data;
|
|
14
|
+
};
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
function _legacy() {
|
|
18
|
+
const data = require("@teambit/legacy.extension-data");
|
|
19
|
+
_legacy = function () {
|
|
20
|
+
return data;
|
|
21
|
+
};
|
|
22
|
+
return data;
|
|
23
|
+
}
|
|
24
|
+
function _dependencyResolver() {
|
|
25
|
+
const data = require("@teambit/dependency-resolver");
|
|
26
|
+
_dependencyResolver = function () {
|
|
27
|
+
return data;
|
|
28
|
+
};
|
|
29
|
+
return data;
|
|
30
|
+
}
|
|
31
|
+
function _plusRangeVersions() {
|
|
32
|
+
const data = require("./plus-range-versions");
|
|
33
|
+
_plusRangeVersions = function () {
|
|
34
|
+
return data;
|
|
35
|
+
};
|
|
36
|
+
return data;
|
|
37
|
+
}
|
|
38
|
+
function createComponent({
|
|
39
|
+
depVersionRange,
|
|
40
|
+
policyVersion,
|
|
41
|
+
envJsonc
|
|
42
|
+
}) {
|
|
43
|
+
const policy = policyVersion ? [{
|
|
44
|
+
dependencyId: 'my-pkg',
|
|
45
|
+
lifecycleType: 'runtime',
|
|
46
|
+
value: {
|
|
47
|
+
version: policyVersion
|
|
48
|
+
}
|
|
49
|
+
}] : [];
|
|
50
|
+
const extensions = new (_legacy().ExtensionDataList)(new (_legacy().ExtensionDataEntry)(undefined, undefined, _dependencyResolver().DependencyResolverAspect.id, undefined, {
|
|
51
|
+
policy
|
|
52
|
+
}));
|
|
53
|
+
const files = envJsonc ? [{
|
|
54
|
+
relative: 'env.jsonc',
|
|
55
|
+
contents: Buffer.from(JSON.stringify(envJsonc))
|
|
56
|
+
}] : [];
|
|
57
|
+
return {
|
|
58
|
+
id: _componentId().ComponentID.fromString('my-scope/my-comp@0.0.1'),
|
|
59
|
+
getAllDependencies: () => [{
|
|
60
|
+
id: _componentId().ComponentID.fromString('my-scope/dep@0.0.1'),
|
|
61
|
+
packageName: '@my-scope/dep',
|
|
62
|
+
versionRange: depVersionRange
|
|
63
|
+
}],
|
|
64
|
+
extensions,
|
|
65
|
+
files
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
describe('getPlusRangeVersionsUsage()', () => {
|
|
69
|
+
it('should find a "+^" range of a dependency', () => {
|
|
70
|
+
(0, _chai().expect)((0, _plusRangeVersions().getPlusRangeVersionsUsage)(createComponent({
|
|
71
|
+
depVersionRange: '+^'
|
|
72
|
+
}))).to.deep.equal(['@my-scope/dep: "+^"']);
|
|
73
|
+
});
|
|
74
|
+
it('should find a "+~" version in the policy', () => {
|
|
75
|
+
(0, _chai().expect)((0, _plusRangeVersions().getPlusRangeVersionsUsage)(createComponent({
|
|
76
|
+
policyVersion: '+~'
|
|
77
|
+
}))).to.deep.equal(['my-pkg: "+~"']);
|
|
78
|
+
});
|
|
79
|
+
it('should find a "+^" supportedRange in the env.jsonc of an env', () => {
|
|
80
|
+
const envJsonc = {
|
|
81
|
+
policy: {
|
|
82
|
+
peers: [{
|
|
83
|
+
name: 'my-pkg',
|
|
84
|
+
version: '+',
|
|
85
|
+
supportedRange: '+^'
|
|
86
|
+
}]
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
(0, _chai().expect)((0, _plusRangeVersions().getPlusRangeVersionsUsage)(createComponent({
|
|
90
|
+
envJsonc
|
|
91
|
+
}))).to.deep.equal(['env.jsonc policy.peers my-pkg: "+^"']);
|
|
92
|
+
});
|
|
93
|
+
it('should find a "+^" version in the legacy format of the env.jsonc policy', () => {
|
|
94
|
+
const envJsonc = {
|
|
95
|
+
policy: {
|
|
96
|
+
peerDependencies: {
|
|
97
|
+
'my-pkg': '+^',
|
|
98
|
+
'other-pkg': {
|
|
99
|
+
version: '+~'
|
|
100
|
+
},
|
|
101
|
+
'ok-pkg': '+'
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
(0, _chai().expect)((0, _plusRangeVersions().getPlusRangeVersionsUsage)(createComponent({
|
|
106
|
+
envJsonc
|
|
107
|
+
}))).to.deep.equal(['env.jsonc policy.peerDependencies my-pkg: "+^"', 'env.jsonc policy.peerDependencies other-pkg: "+~"']);
|
|
108
|
+
});
|
|
109
|
+
it('should ignore "+" and regular versions', () => {
|
|
110
|
+
const envJsonc = {
|
|
111
|
+
policy: {
|
|
112
|
+
peers: [{
|
|
113
|
+
name: 'my-pkg',
|
|
114
|
+
version: '+',
|
|
115
|
+
supportedRange: '^1.0.0'
|
|
116
|
+
}]
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
const component = createComponent({
|
|
120
|
+
depVersionRange: '+',
|
|
121
|
+
policyVersion: '1.0.0',
|
|
122
|
+
envJsonc
|
|
123
|
+
});
|
|
124
|
+
(0, _chai().expect)((0, _plusRangeVersions().getPlusRangeVersionsUsage)(component)).to.deep.equal([]);
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
describe('throwForPlusRangeVersions()', () => {
|
|
128
|
+
it('should throw when the feature is not enabled', () => {
|
|
129
|
+
(0, _chai().expect)(() => (0, _plusRangeVersions().throwForPlusRangeVersions)([createComponent({
|
|
130
|
+
depVersionRange: '+^'
|
|
131
|
+
})])).to.throw('plus-range-versions');
|
|
132
|
+
});
|
|
133
|
+
it('should not throw when no "+^"/"+~" is used', () => {
|
|
134
|
+
(0, _chai().expect)(() => (0, _plusRangeVersions().throwForPlusRangeVersions)([createComponent({
|
|
135
|
+
depVersionRange: '+'
|
|
136
|
+
})])).to.not.throw();
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
//# sourceMappingURL=plus-range-versions.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_chai","data","require","_componentId","_legacy","_dependencyResolver","_plusRangeVersions","createComponent","depVersionRange","policyVersion","envJsonc","policy","dependencyId","lifecycleType","value","version","extensions","ExtensionDataList","ExtensionDataEntry","undefined","DependencyResolverAspect","id","files","relative","contents","Buffer","from","JSON","stringify","ComponentID","fromString","getAllDependencies","packageName","versionRange","describe","it","expect","getPlusRangeVersionsUsage","to","deep","equal","peers","name","supportedRange","peerDependencies","component","throwForPlusRangeVersions","throw","not"],"sources":["plus-range-versions.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport { ComponentID } from '@teambit/component-id';\nimport { ExtensionDataList, ExtensionDataEntry } from '@teambit/legacy.extension-data';\nimport { DependencyResolverAspect } from '@teambit/dependency-resolver';\nimport type { ConsumerComponent } from '@teambit/legacy.consumer-component';\nimport { getPlusRangeVersionsUsage, throwForPlusRangeVersions } from './plus-range-versions';\n\nfunction createComponent({\n depVersionRange,\n policyVersion,\n envJsonc,\n}: {\n depVersionRange?: string;\n policyVersion?: string;\n envJsonc?: Record<string, any>;\n}): ConsumerComponent {\n const policy = policyVersion\n ? [{ dependencyId: 'my-pkg', lifecycleType: 'runtime', value: { version: policyVersion } }]\n : [];\n const extensions = new ExtensionDataList(\n new ExtensionDataEntry(undefined, undefined, DependencyResolverAspect.id, undefined, { policy })\n );\n const files = envJsonc ? [{ relative: 'env.jsonc', contents: Buffer.from(JSON.stringify(envJsonc)) }] : [];\n return {\n id: ComponentID.fromString('my-scope/my-comp@0.0.1'),\n getAllDependencies: () => [\n { id: ComponentID.fromString('my-scope/dep@0.0.1'), packageName: '@my-scope/dep', versionRange: depVersionRange },\n ],\n extensions,\n files,\n } as any;\n}\n\ndescribe('getPlusRangeVersionsUsage()', () => {\n it('should find a \"+^\" range of a dependency', () => {\n expect(getPlusRangeVersionsUsage(createComponent({ depVersionRange: '+^' }))).to.deep.equal([\n '@my-scope/dep: \"+^\"',\n ]);\n });\n it('should find a \"+~\" version in the policy', () => {\n expect(getPlusRangeVersionsUsage(createComponent({ policyVersion: '+~' }))).to.deep.equal(['my-pkg: \"+~\"']);\n });\n it('should find a \"+^\" supportedRange in the env.jsonc of an env', () => {\n const envJsonc = { policy: { peers: [{ name: 'my-pkg', version: '+', supportedRange: '+^' }] } };\n expect(getPlusRangeVersionsUsage(createComponent({ envJsonc }))).to.deep.equal([\n 'env.jsonc policy.peers my-pkg: \"+^\"',\n ]);\n });\n it('should find a \"+^\" version in the legacy format of the env.jsonc policy', () => {\n const envJsonc = {\n policy: { peerDependencies: { 'my-pkg': '+^', 'other-pkg': { version: '+~' }, 'ok-pkg': '+' } },\n };\n expect(getPlusRangeVersionsUsage(createComponent({ envJsonc }))).to.deep.equal([\n 'env.jsonc policy.peerDependencies my-pkg: \"+^\"',\n 'env.jsonc policy.peerDependencies other-pkg: \"+~\"',\n ]);\n });\n it('should ignore \"+\" and regular versions', () => {\n const envJsonc = { policy: { peers: [{ name: 'my-pkg', version: '+', supportedRange: '^1.0.0' }] } };\n const component = createComponent({ depVersionRange: '+', policyVersion: '1.0.0', envJsonc });\n expect(getPlusRangeVersionsUsage(component)).to.deep.equal([]);\n });\n});\n\ndescribe('throwForPlusRangeVersions()', () => {\n it('should throw when the feature is not enabled', () => {\n expect(() => throwForPlusRangeVersions([createComponent({ depVersionRange: '+^' })])).to.throw(\n 'plus-range-versions'\n );\n });\n it('should not throw when no \"+^\"/\"+~\" is used', () => {\n expect(() => throwForPlusRangeVersions([createComponent({ depVersionRange: '+' })])).to.not.throw();\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1530,8 +1530,11 @@ another option, in case this dependency is not in main yet is to remove all refe
|
|
|
1530
1530
|
const updatedIds = _componentId().ComponentIdList.fromArray([...currentBitIds, ...dependencies]);
|
|
1531
1531
|
const componentIdStr = component.id.toString();
|
|
1532
1532
|
const legacyComponent = component.state._consumer;
|
|
1533
|
-
const deps = [...legacyComponent.dependencies.get(), ...legacyComponent.devDependencies.get()];
|
|
1534
|
-
|
|
1533
|
+
const deps = [...legacyComponent.dependencies.get(), ...legacyComponent.devDependencies.get(), ...legacyComponent.peerDependencies.get()];
|
|
1534
|
+
// peers can be hidden, and they're part of the legacy peers
|
|
1535
|
+
const dependenciesList = this.dependencyResolver.getDependencies(component, {
|
|
1536
|
+
includeHidden: true
|
|
1537
|
+
});
|
|
1535
1538
|
deps.forEach(dep => {
|
|
1536
1539
|
const updatedBitId = updatedIds.searchWithoutVersion(dep.id);
|
|
1537
1540
|
if (updatedBitId) {
|