@teambit/dependency-resolver 1.0.34 → 1.0.36

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.
@@ -12,7 +12,8 @@ declare type WorkspacePolicyLifecycleManifestObject = {
12
12
  };
13
13
  export declare type WorkspacePolicyConfigEntryValue = WorkspacePolicyEntryValue | WorkspacePolicyEntryVersion;
14
14
  export declare type AddEntryOptions = {
15
- updateExisting: boolean;
15
+ updateExisting?: boolean;
16
+ skipIfExisting?: boolean;
16
17
  };
17
18
  /**
18
19
  * Allowed values are valid semver values, git urls, fs path.
@@ -53,11 +53,15 @@ class WorkspacePolicy {
53
53
  }
54
54
  add(entry, options) {
55
55
  const defaultOptions = {
56
- updateExisting: false
56
+ updateExisting: false,
57
+ skipIfExisting: false
57
58
  };
58
59
  const calculatedOpts = Object.assign({}, defaultOptions, options);
59
60
  const existing = this.find(entry.dependencyId);
60
61
  if (existing) {
62
+ if (calculatedOpts.skipIfExisting) {
63
+ return;
64
+ }
61
65
  if (!calculatedOpts.updateExisting) {
62
66
  throw new (_exceptions().EntryAlreadyExist)(entry);
63
67
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_lodash","data","require","_utils","_componentPackageVersion","_dependencies","_exceptions","WorkspacePolicy","constructor","_policiesEntries","uniqEntries","entries","add","entry","options","defaultOptions","updateExisting","calculatedOpts","Object","assign","existing","find","dependencyId","EntryAlreadyExist","remove","push","forEach","predicate","filter","filtered","depId","lifecycleType","matchedEntry","idEqual","lifecycleEqual","depIds","includes","getDepVersion","undefined","value","version","getValidSemverDepVersion","snapToSemver","toConfigObject","res","dependencies","peerDependencies","reduce","acc","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","preserve","sortObject","toManifest","byLifecycleType","mergePolices","policies","allEntries","curr","concat","reverse","exports","uniq","uniqWith","entry1","entry2"],"sources":["workspace-policy.ts"],"sourcesContent":["import { uniqWith } from 'lodash';\nimport { sortObject } from '@teambit/legacy/dist/utils';\nimport { snapToSemver } from '@teambit/component-package-version';\nimport { Policy, SemverVersion, GitUrlVersion, FileSystemPath, PolicyConfigKeys } from '../policy';\nimport { KEY_NAME_BY_LIFECYCLE_TYPE, WorkspaceDependencyLifecycleType } from '../../dependencies';\nimport { EntryAlreadyExist } from './exceptions';\n\nexport type WorkspacePolicyConfigKeys = Omit<PolicyConfigKeys, 'devDependencies'>;\nexport type WorkspacePolicyConfigKeysNames = keyof WorkspacePolicyConfigKeys;\n\nexport type WorkspacePolicyConfigObject = Partial<\n Record<WorkspacePolicyConfigKeysNames, WorkspacePolicyLifecycleConfigObject>\n>;\nexport type WorkspacePolicyManifest = Partial<\n Record<WorkspacePolicyConfigKeysNames, WorkspacePolicyLifecycleManifestObject>\n>;\n\nexport type WorkspacePolicyLifecycleConfigObject = {\n [dependencyId: string]: WorkspacePolicyConfigEntryValue;\n};\n\ntype WorkspacePolicyLifecycleManifestObject = {\n [dependencyId: string]: WorkspacePolicyEntryVersion;\n};\n\nexport type WorkspacePolicyConfigEntryValue = WorkspacePolicyEntryValue | WorkspacePolicyEntryVersion;\n\nexport type AddEntryOptions = {\n updateExisting: boolean;\n};\n/**\n * Allowed values are valid semver values, git urls, fs path.\n */\nexport type WorkspacePolicyEntryVersion = SemverVersion | GitUrlVersion | FileSystemPath;\n\nexport type WorkspacePolicyEntryValue = {\n version: WorkspacePolicyEntryVersion;\n preserve?: boolean;\n};\n\nexport type WorkspacePolicyEntry = {\n dependencyId: string;\n lifecycleType: WorkspaceDependencyLifecycleType;\n value: WorkspacePolicyEntryValue;\n};\n\nexport class WorkspacePolicy implements Policy<WorkspacePolicyConfigObject> {\n constructor(private _policiesEntries: WorkspacePolicyEntry[]) {\n this._policiesEntries = uniqEntries(_policiesEntries);\n }\n\n get entries() {\n return this._policiesEntries;\n }\n\n add(entry: WorkspacePolicyEntry, options?: AddEntryOptions): void {\n const defaultOptions: AddEntryOptions = {\n updateExisting: false,\n };\n\n const calculatedOpts = Object.assign({}, defaultOptions, options);\n\n const existing = this.find(entry.dependencyId);\n if (existing) {\n if (!calculatedOpts.updateExisting) {\n throw new EntryAlreadyExist(entry);\n }\n this.remove([entry.dependencyId]);\n }\n this._policiesEntries.push(entry);\n }\n\n forEach(predicate: (dep: WorkspacePolicyEntry, index?: number) => void): void {\n this.entries.forEach(predicate);\n }\n\n filter(predicate: (dep: WorkspacePolicyEntry, index?: number) => boolean): WorkspacePolicy {\n const filtered = this.entries.filter(predicate);\n return new WorkspacePolicy(filtered);\n }\n\n find(depId: string, lifecycleType?: WorkspaceDependencyLifecycleType): WorkspacePolicyEntry | undefined {\n const matchedEntry = this.entries.find((entry) => {\n const idEqual = entry.dependencyId === depId;\n const lifecycleEqual = lifecycleType ? entry.lifecycleType === lifecycleType : true;\n return idEqual && lifecycleEqual;\n });\n return matchedEntry;\n }\n\n remove(depIds: string[]): WorkspacePolicy {\n const entries = this.entries.filter((entry) => {\n return !depIds.includes(entry.dependencyId);\n });\n return new WorkspacePolicy(entries);\n }\n\n getDepVersion(\n depId: string,\n lifecycleType?: WorkspaceDependencyLifecycleType\n ): WorkspacePolicyEntryVersion | undefined {\n const entry = this.find(depId, lifecycleType);\n if (!entry) {\n return undefined;\n }\n return entry.value.version;\n }\n\n getValidSemverDepVersion(\n depId: string,\n lifecycleType?: WorkspaceDependencyLifecycleType\n ): WorkspacePolicyEntryVersion | undefined {\n const version = this.getDepVersion(depId, lifecycleType);\n if (!version) return undefined;\n return snapToSemver(version);\n }\n\n toConfigObject(): WorkspacePolicyConfigObject {\n const res: WorkspacePolicyConfigObject = {\n dependencies: {},\n peerDependencies: {},\n };\n this._policiesEntries.reduce((acc, entry) => {\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[entry.lifecycleType];\n const value = entry.value.preserve ? entry.value : entry.value.version;\n acc[keyName][entry.dependencyId] = value;\n return acc;\n }, res);\n if (res.dependencies) {\n res.dependencies = sortObject(res.dependencies);\n }\n if (res.peerDependencies) {\n res.peerDependencies = sortObject(res.peerDependencies);\n }\n return res;\n }\n\n /**\n * Create an object ready for package manager installation\n * this is similar to \"toConfigObject\" but it will make the value of a specific dep always a string (the version / url)\n */\n toManifest(): WorkspacePolicyManifest {\n const res: WorkspacePolicyManifest = {\n dependencies: {},\n peerDependencies: {},\n };\n this._policiesEntries.reduce((acc, entry) => {\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[entry.lifecycleType];\n acc[keyName][entry.dependencyId] = snapToSemver(entry.value.version);\n return acc;\n }, res);\n return res;\n }\n\n byLifecycleType(lifecycleType: WorkspaceDependencyLifecycleType): WorkspacePolicy {\n const filtered = this._policiesEntries.filter((entry) => entry.lifecycleType === lifecycleType);\n return new WorkspacePolicy(filtered);\n }\n\n static mergePolices(policies: WorkspacePolicy[]): WorkspacePolicy {\n let allEntries: WorkspacePolicyEntry[] = [];\n allEntries = policies.reduce((acc, curr) => {\n return acc.concat(curr.entries);\n }, allEntries);\n // We reverse it to make sure the latest policy will be stronger in case of conflict\n allEntries = allEntries.reverse();\n return new WorkspacePolicy(allEntries);\n }\n}\n\nfunction uniqEntries(entries: Array<WorkspacePolicyEntry>): Array<WorkspacePolicyEntry> {\n const uniq = uniqWith(entries, (entry1: WorkspacePolicyEntry, entry2: WorkspacePolicyEntry) => {\n return entry1.dependencyId === entry2.dependencyId && entry1.lifecycleType === entry2.lifecycleType;\n });\n return uniq;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_lodash","data","require","_utils","_componentPackageVersion","_dependencies","_exceptions","WorkspacePolicy","constructor","_policiesEntries","uniqEntries","entries","add","entry","options","defaultOptions","updateExisting","skipIfExisting","calculatedOpts","Object","assign","existing","find","dependencyId","EntryAlreadyExist","remove","push","forEach","predicate","filter","filtered","depId","lifecycleType","matchedEntry","idEqual","lifecycleEqual","depIds","includes","getDepVersion","undefined","value","version","getValidSemverDepVersion","snapToSemver","toConfigObject","res","dependencies","peerDependencies","reduce","acc","keyName","KEY_NAME_BY_LIFECYCLE_TYPE","preserve","sortObject","toManifest","byLifecycleType","mergePolices","policies","allEntries","curr","concat","reverse","exports","uniq","uniqWith","entry1","entry2"],"sources":["workspace-policy.ts"],"sourcesContent":["import { uniqWith } from 'lodash';\nimport { sortObject } from '@teambit/legacy/dist/utils';\nimport { snapToSemver } from '@teambit/component-package-version';\nimport { Policy, SemverVersion, GitUrlVersion, FileSystemPath, PolicyConfigKeys } from '../policy';\nimport { KEY_NAME_BY_LIFECYCLE_TYPE, WorkspaceDependencyLifecycleType } from '../../dependencies';\nimport { EntryAlreadyExist } from './exceptions';\n\nexport type WorkspacePolicyConfigKeys = Omit<PolicyConfigKeys, 'devDependencies'>;\nexport type WorkspacePolicyConfigKeysNames = keyof WorkspacePolicyConfigKeys;\n\nexport type WorkspacePolicyConfigObject = Partial<\n Record<WorkspacePolicyConfigKeysNames, WorkspacePolicyLifecycleConfigObject>\n>;\nexport type WorkspacePolicyManifest = Partial<\n Record<WorkspacePolicyConfigKeysNames, WorkspacePolicyLifecycleManifestObject>\n>;\n\nexport type WorkspacePolicyLifecycleConfigObject = {\n [dependencyId: string]: WorkspacePolicyConfigEntryValue;\n};\n\ntype WorkspacePolicyLifecycleManifestObject = {\n [dependencyId: string]: WorkspacePolicyEntryVersion;\n};\n\nexport type WorkspacePolicyConfigEntryValue = WorkspacePolicyEntryValue | WorkspacePolicyEntryVersion;\n\nexport type AddEntryOptions = {\n updateExisting?: boolean;\n skipIfExisting?: boolean;\n};\n/**\n * Allowed values are valid semver values, git urls, fs path.\n */\nexport type WorkspacePolicyEntryVersion = SemverVersion | GitUrlVersion | FileSystemPath;\n\nexport type WorkspacePolicyEntryValue = {\n version: WorkspacePolicyEntryVersion;\n preserve?: boolean;\n};\n\nexport type WorkspacePolicyEntry = {\n dependencyId: string;\n lifecycleType: WorkspaceDependencyLifecycleType;\n value: WorkspacePolicyEntryValue;\n};\n\nexport class WorkspacePolicy implements Policy<WorkspacePolicyConfigObject> {\n constructor(private _policiesEntries: WorkspacePolicyEntry[]) {\n this._policiesEntries = uniqEntries(_policiesEntries);\n }\n\n get entries() {\n return this._policiesEntries;\n }\n\n add(entry: WorkspacePolicyEntry, options?: AddEntryOptions): void {\n const defaultOptions: AddEntryOptions = {\n updateExisting: false,\n skipIfExisting: false,\n };\n\n const calculatedOpts = Object.assign({}, defaultOptions, options);\n\n const existing = this.find(entry.dependencyId);\n if (existing) {\n if (calculatedOpts.skipIfExisting) {\n return;\n }\n if (!calculatedOpts.updateExisting) {\n throw new EntryAlreadyExist(entry);\n }\n this.remove([entry.dependencyId]);\n }\n this._policiesEntries.push(entry);\n }\n\n forEach(predicate: (dep: WorkspacePolicyEntry, index?: number) => void): void {\n this.entries.forEach(predicate);\n }\n\n filter(predicate: (dep: WorkspacePolicyEntry, index?: number) => boolean): WorkspacePolicy {\n const filtered = this.entries.filter(predicate);\n return new WorkspacePolicy(filtered);\n }\n\n find(depId: string, lifecycleType?: WorkspaceDependencyLifecycleType): WorkspacePolicyEntry | undefined {\n const matchedEntry = this.entries.find((entry) => {\n const idEqual = entry.dependencyId === depId;\n const lifecycleEqual = lifecycleType ? entry.lifecycleType === lifecycleType : true;\n return idEqual && lifecycleEqual;\n });\n return matchedEntry;\n }\n\n remove(depIds: string[]): WorkspacePolicy {\n const entries = this.entries.filter((entry) => {\n return !depIds.includes(entry.dependencyId);\n });\n return new WorkspacePolicy(entries);\n }\n\n getDepVersion(\n depId: string,\n lifecycleType?: WorkspaceDependencyLifecycleType\n ): WorkspacePolicyEntryVersion | undefined {\n const entry = this.find(depId, lifecycleType);\n if (!entry) {\n return undefined;\n }\n return entry.value.version;\n }\n\n getValidSemverDepVersion(\n depId: string,\n lifecycleType?: WorkspaceDependencyLifecycleType\n ): WorkspacePolicyEntryVersion | undefined {\n const version = this.getDepVersion(depId, lifecycleType);\n if (!version) return undefined;\n return snapToSemver(version);\n }\n\n toConfigObject(): WorkspacePolicyConfigObject {\n const res: WorkspacePolicyConfigObject = {\n dependencies: {},\n peerDependencies: {},\n };\n this._policiesEntries.reduce((acc, entry) => {\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[entry.lifecycleType];\n const value = entry.value.preserve ? entry.value : entry.value.version;\n acc[keyName][entry.dependencyId] = value;\n return acc;\n }, res);\n if (res.dependencies) {\n res.dependencies = sortObject(res.dependencies);\n }\n if (res.peerDependencies) {\n res.peerDependencies = sortObject(res.peerDependencies);\n }\n return res;\n }\n\n /**\n * Create an object ready for package manager installation\n * this is similar to \"toConfigObject\" but it will make the value of a specific dep always a string (the version / url)\n */\n toManifest(): WorkspacePolicyManifest {\n const res: WorkspacePolicyManifest = {\n dependencies: {},\n peerDependencies: {},\n };\n this._policiesEntries.reduce((acc, entry) => {\n const keyName = KEY_NAME_BY_LIFECYCLE_TYPE[entry.lifecycleType];\n acc[keyName][entry.dependencyId] = snapToSemver(entry.value.version);\n return acc;\n }, res);\n return res;\n }\n\n byLifecycleType(lifecycleType: WorkspaceDependencyLifecycleType): WorkspacePolicy {\n const filtered = this._policiesEntries.filter((entry) => entry.lifecycleType === lifecycleType);\n return new WorkspacePolicy(filtered);\n }\n\n static mergePolices(policies: WorkspacePolicy[]): WorkspacePolicy {\n let allEntries: WorkspacePolicyEntry[] = [];\n allEntries = policies.reduce((acc, curr) => {\n return acc.concat(curr.entries);\n }, allEntries);\n // We reverse it to make sure the latest policy will be stronger in case of conflict\n allEntries = allEntries.reverse();\n return new WorkspacePolicy(allEntries);\n }\n}\n\nfunction uniqEntries(entries: Array<WorkspacePolicyEntry>): Array<WorkspacePolicyEntry> {\n const uniq = uniqWith(entries, (entry1: WorkspacePolicyEntry, entry2: WorkspacePolicyEntry) => {\n return entry1.dependencyId === entry2.dependencyId && entry1.lifecycleType === entry2.lifecycleType;\n });\n return uniq;\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.dependencies_dependency-resolver@1.0.34/dist/dependency-resolver.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.dependencies_dependency-resolver@1.0.34/dist/dependency-resolver.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.dependencies_dependency-resolver@1.0.36/dist/dependency-resolver.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.dependencies_dependency-resolver@1.0.36/dist/dependency-resolver.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/dependency-resolver",
3
- "version": "1.0.34",
3
+ "version": "1.0.36",
4
4
  "homepage": "https://bit.cloud/teambit/dependencies/dependency-resolver",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.dependencies",
8
8
  "name": "dependency-resolver",
9
- "version": "1.0.34"
9
+ "version": "1.0.36"
10
10
  },
11
11
  "dependencies": {
12
12
  "cli-highlight": "2.1.9",
@@ -32,23 +32,23 @@
32
32
  "@teambit/harmony": "0.4.6",
33
33
  "@pnpm/network.ca-file": "1.0.2",
34
34
  "@teambit/bit-roots": "0.0.133",
35
- "@teambit/component-id": "1.1.0",
36
- "@teambit/component-issues": "0.0.100",
35
+ "@teambit/component-id": "1.1.1",
36
+ "@teambit/component-issues": "0.0.101",
37
+ "@teambit/legacy-bit-id": "1.0.4",
37
38
  "@teambit/component-version": "1.0.3",
38
- "@teambit/component": "1.0.34",
39
- "@teambit/envs": "1.0.34",
40
- "@teambit/aspect-loader": "1.0.34",
41
- "@teambit/logger": "0.0.897",
42
- "@teambit/graphql": "1.0.34",
43
- "@teambit/bit": "1.3.3",
44
- "@teambit/cli": "0.0.804",
45
- "@teambit/config": "0.0.820",
46
- "@teambit/global-config": "0.0.806",
39
+ "@teambit/component": "1.0.36",
40
+ "@teambit/envs": "1.0.36",
41
+ "@teambit/aspect-loader": "1.0.36",
42
+ "@teambit/logger": "0.0.898",
43
+ "@teambit/graphql": "1.0.36",
44
+ "@teambit/bit": "1.3.5",
45
+ "@teambit/cli": "0.0.805",
46
+ "@teambit/config": "0.0.821",
47
+ "@teambit/global-config": "0.0.807",
47
48
  "@teambit/harmony.modules.requireable-component": "0.0.493",
48
- "@teambit/snapping": "1.0.34",
49
- "@teambit/isolator": "1.0.34",
50
- "@teambit/component-package-version": "0.0.428",
51
- "@teambit/legacy-bit-id": "1.0.4"
49
+ "@teambit/snapping": "1.0.36",
50
+ "@teambit/isolator": "1.0.36",
51
+ "@teambit/component-package-version": "0.0.428"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@types/react": "^17.0.8",
@@ -65,7 +65,7 @@
65
65
  "@teambit/dependencies.aspect-docs.dependency-resolver": "0.0.171"
66
66
  },
67
67
  "peerDependencies": {
68
- "@teambit/legacy": "1.0.584",
68
+ "@teambit/legacy": "1.0.586",
69
69
  "react": "^16.8.0 || ^17.0.0",
70
70
  "react-dom": "^16.8.0 || ^17.0.0"
71
71
  },
@@ -26,7 +26,8 @@ type WorkspacePolicyLifecycleManifestObject = {
26
26
  export type WorkspacePolicyConfigEntryValue = WorkspacePolicyEntryValue | WorkspacePolicyEntryVersion;
27
27
 
28
28
  export type AddEntryOptions = {
29
- updateExisting: boolean;
29
+ updateExisting?: boolean;
30
+ skipIfExisting?: boolean;
30
31
  };
31
32
  /**
32
33
  * Allowed values are valid semver values, git urls, fs path.
@@ -56,12 +57,16 @@ export class WorkspacePolicy implements Policy<WorkspacePolicyConfigObject> {
56
57
  add(entry: WorkspacePolicyEntry, options?: AddEntryOptions): void {
57
58
  const defaultOptions: AddEntryOptions = {
58
59
  updateExisting: false,
60
+ skipIfExisting: false,
59
61
  };
60
62
 
61
63
  const calculatedOpts = Object.assign({}, defaultOptions, options);
62
64
 
63
65
  const existing = this.find(entry.dependencyId);
64
66
  if (existing) {
67
+ if (calculatedOpts.skipIfExisting) {
68
+ return;
69
+ }
65
70
  if (!calculatedOpts.updateExisting) {
66
71
  throw new EntryAlreadyExist(entry);
67
72
  }