@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.
@@ -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
- const dependenciesList = this.dependencyResolver.getDependencies(component);
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) {