submodule-version 2.4.1 → 3.1.0

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.
Files changed (124) hide show
  1. package/README.md +117 -39
  2. package/dist/runner/handleErrors/handleErrors.d.ts +1 -1
  3. package/dist/runner/handleErrors/handleErrors.js +3 -10
  4. package/dist/runner/handleErrors/handleErrors.js.map +1 -1
  5. package/dist/runner/index.js +0 -0
  6. package/dist/runner/runner.d.ts +4 -0
  7. package/dist/runner/runner.js +91 -37
  8. package/dist/runner/runner.js.map +1 -1
  9. package/dist/src/PubGrub/PubGrub.d.ts +28 -0
  10. package/dist/src/PubGrub/PubGrub.js +366 -0
  11. package/dist/src/PubGrub/PubGrub.js.map +1 -0
  12. package/dist/src/PubGrub/index.d.ts +2 -0
  13. package/dist/src/PubGrub/index.js +7 -0
  14. package/dist/src/PubGrub/index.js.map +1 -0
  15. package/dist/src/PubGrub/types.d.ts +56 -0
  16. package/dist/src/PubGrub/types.js +3 -0
  17. package/dist/src/PubGrub/types.js.map +1 -0
  18. package/dist/src/entryStore.d.ts +16 -0
  19. package/dist/src/entryStore.js +152 -0
  20. package/dist/src/entryStore.js.map +1 -0
  21. package/dist/src/errors.d.ts +29 -0
  22. package/dist/src/errors.js +31 -0
  23. package/dist/src/errors.js.map +1 -0
  24. package/dist/src/git/api/GithubError.d.ts +4 -0
  25. package/dist/src/git/api/GithubError.js +11 -0
  26. package/dist/src/git/api/GithubError.js.map +1 -0
  27. package/dist/src/git/api/api.d.ts +8 -0
  28. package/dist/src/git/api/api.js +133 -0
  29. package/dist/src/git/api/api.js.map +1 -0
  30. package/dist/src/git/api/index.d.ts +3 -0
  31. package/dist/src/git/api/index.js +8 -0
  32. package/dist/src/git/api/index.js.map +1 -0
  33. package/dist/src/git/git.d.ts +30 -23
  34. package/dist/src/git/git.js +8 -258
  35. package/dist/src/git/git.js.map +1 -1
  36. package/dist/src/git/index.d.ts +1 -0
  37. package/dist/src/git/index.js +3 -1
  38. package/dist/src/git/index.js.map +1 -1
  39. package/dist/src/git/local/index.d.ts +1 -0
  40. package/dist/src/git/local/index.js +6 -0
  41. package/dist/src/git/local/index.js.map +1 -0
  42. package/dist/src/git/local/local.d.ts +26 -0
  43. package/dist/src/git/local/local.js +288 -0
  44. package/dist/src/git/local/local.js.map +1 -0
  45. package/dist/src/index.d.ts +7 -0
  46. package/dist/src/index.js +16 -1
  47. package/dist/src/index.js.map +1 -1
  48. package/dist/src/npm.d.ts +3 -0
  49. package/dist/src/npm.js +25 -0
  50. package/dist/src/npm.js.map +1 -0
  51. package/dist/src/printError.d.ts +1 -0
  52. package/dist/src/printError.js +162 -0
  53. package/dist/src/printError.js.map +1 -0
  54. package/dist/src/sv.d.ts +16 -8
  55. package/dist/src/sv.js +242 -142
  56. package/dist/src/sv.js.map +1 -1
  57. package/dist/src/versionUtil/index.d.ts +2 -0
  58. package/dist/src/versionUtil/index.js +6 -0
  59. package/dist/src/versionUtil/index.js.map +1 -0
  60. package/dist/src/versionUtil/versionUtil.d.ts +16 -0
  61. package/dist/src/versionUtil/versionUtil.js +70 -0
  62. package/dist/src/versionUtil/versionUtil.js.map +1 -0
  63. package/package.json +4 -2
  64. package/runner/handleErrors/handleErrors.ts +3 -10
  65. package/runner/runner.ts +128 -46
  66. package/src/PubGrub/PubGrub.ts +578 -0
  67. package/src/PubGrub/__tests__/PubGrub.test.ts +351 -0
  68. package/src/PubGrub/index.ts +12 -0
  69. package/src/PubGrub/types.ts +72 -0
  70. package/src/__tests__/entryStore.test.ts +248 -0
  71. package/src/__tests__/printError.test.ts +148 -0
  72. package/src/__tests__/sv.test.ts +497 -0
  73. package/src/entryStore.ts +212 -0
  74. package/src/errors.ts +40 -0
  75. package/src/git/api/GithubError.ts +5 -0
  76. package/src/git/api/api.ts +180 -0
  77. package/src/git/api/index.ts +3 -0
  78. package/src/git/git.ts +8 -396
  79. package/src/git/index.ts +1 -0
  80. package/src/git/local/index.ts +1 -0
  81. package/src/git/local/local.ts +430 -0
  82. package/src/index.ts +17 -0
  83. package/src/npm.ts +25 -0
  84. package/src/printError.ts +193 -0
  85. package/src/sv.ts +327 -145
  86. package/src/versionUtil/__tests__/versionUtil.test.ts +62 -0
  87. package/src/versionUtil/index.ts +2 -0
  88. package/src/versionUtil/versionUtil.ts +103 -0
  89. package/tsconfig.json +1 -1
  90. package/dist/runner/handleErrors/handleBuildGraphError.d.ts +0 -1
  91. package/dist/runner/handleErrors/handleBuildGraphError.js +0 -42
  92. package/dist/runner/handleErrors/handleBuildGraphError.js.map +0 -1
  93. package/dist/runner/handleErrors/handleGitError.d.ts +0 -1
  94. package/dist/runner/handleErrors/handleGitError.js +0 -27
  95. package/dist/runner/handleErrors/handleGitError.js.map +0 -1
  96. package/dist/runner/handleErrors/handleInstallError.d.ts +0 -1
  97. package/dist/runner/handleErrors/handleInstallError.js +0 -30
  98. package/dist/runner/handleErrors/handleInstallError.js.map +0 -1
  99. package/dist/src/__tests__/versionUtil.test.d.ts +0 -1
  100. package/dist/src/__tests__/versionUtil.test.js +0 -80
  101. package/dist/src/__tests__/versionUtil.test.js.map +0 -1
  102. package/dist/src/buildGraph/GraphError.d.ts +0 -11
  103. package/dist/src/buildGraph/GraphError.js +0 -11
  104. package/dist/src/buildGraph/GraphError.js.map +0 -1
  105. package/dist/src/buildGraph/buildGraph.d.ts +0 -8
  106. package/dist/src/buildGraph/buildGraph.js +0 -100
  107. package/dist/src/buildGraph/buildGraph.js.map +0 -1
  108. package/dist/src/buildGraph/index.d.ts +0 -2
  109. package/dist/src/buildGraph/index.js +0 -8
  110. package/dist/src/buildGraph/index.js.map +0 -1
  111. package/dist/src/git/__tests__/parseGitUrl.test.d.ts +0 -1
  112. package/dist/src/git/__tests__/parseGitUrl.test.js +0 -30
  113. package/dist/src/git/__tests__/parseGitUrl.test.js.map +0 -1
  114. package/dist/src/versionUtil.d.ts +0 -13
  115. package/dist/src/versionUtil.js +0 -79
  116. package/dist/src/versionUtil.js.map +0 -1
  117. package/runner/handleErrors/handleBuildGraphError.ts +0 -49
  118. package/runner/handleErrors/handleGitError.ts +0 -28
  119. package/runner/handleErrors/handleInstallError.ts +0 -26
  120. package/src/__tests__/versionUtil.test.ts +0 -96
  121. package/src/buildGraph/GraphError.ts +0 -12
  122. package/src/buildGraph/buildGraph.ts +0 -150
  123. package/src/buildGraph/index.ts +0 -2
  124. package/src/versionUtil.ts +0 -97
@@ -0,0 +1,62 @@
1
+ import { versionUtil } from '../versionUtil';
2
+
3
+ describe('versionUtil: SemVer primitives', () => {
4
+ it('validates exact versions and ranges separately', () => {
5
+ expect(versionUtil.validate('1.2.3')).toBe(true);
6
+ expect(versionUtil.validate('1.2.3-beta.1')).toBe(true);
7
+ expect(versionUtil.validate('v1.2.3')).toBe(false);
8
+ expect(versionUtil.validate('^1.2.3')).toBe(false);
9
+ expect(versionUtil.validate('^1.2.3', true)).toBe(true);
10
+ expect(versionUtil.validate('~1.2.3', true)).toBe(true);
11
+ expect(versionUtil.validate('*', true)).toBe(true);
12
+ expect(versionUtil.validate('', true)).toBe(false);
13
+ expect(versionUtil.validate('not-a-range', true)).toBe(false);
14
+ });
15
+
16
+ it('uses standard caret semantics for zero versions', () => {
17
+ expect(versionUtil.satisfies('1.9.0', '^1.2.3')).toBe(true);
18
+ expect(versionUtil.satisfies('2.0.0', '^1.2.3')).toBe(false);
19
+ expect(versionUtil.satisfies('0.2.9', '^0.2.3')).toBe(true);
20
+ expect(versionUtil.satisfies('0.3.0', '^0.2.3')).toBe(false);
21
+ expect(versionUtil.satisfies('0.0.3', '^0.0.3')).toBe(true);
22
+ expect(versionUtil.satisfies('0.0.4', '^0.0.3')).toBe(false);
23
+ });
24
+
25
+ it('selects the highest version satisfying every constraint', () => {
26
+ const versions = ['2.0.0', '1.4.2', '1.3.2', 'broken'];
27
+
28
+ expect(versionUtil.sort(versions)).toEqual(['2.0.0', '1.4.2', '1.3.2']);
29
+ expect(versionUtil.select(versions, ['^1.3.2', '^1.4.0']))
30
+ .toEqual(['1.4.2']);
31
+ expect(versionUtil.latest(versions, ['^1.0.0'])).toBe('1.4.2');
32
+ expect(versionUtil.compare('1.2.0', '1.1.9')).toBeGreaterThan(0);
33
+ });
34
+ });
35
+
36
+ describe('versionUtil: finite sets used by PubGrub', () => {
37
+ const one = ['1.0.0', '1.2.0'];
38
+ const two = ['1.2.0', '2.0.0'];
39
+
40
+ it('intersects, joins and subtracts version sets', () => {
41
+ expect(versionUtil.intersection(one, two)).toEqual(['1.2.0']);
42
+ expect(versionUtil.union(one, two)).toEqual(['2.0.0', '1.2.0', '1.0.0']);
43
+ expect(versionUtil.difference(one, two)).toEqual(['1.0.0']);
44
+ });
45
+
46
+ it('checks intersection and subset relations', () => {
47
+ expect(versionUtil.intersects(one, two)).toBe(true);
48
+ expect(versionUtil.intersects(['1.0.0'], ['2.0.0'])).toBe(false);
49
+ expect(versionUtil.isSubset(['1.2.0'], one)).toBe(true);
50
+ expect(versionUtil.isSubset(one, ['1.2.0'])).toBe(false);
51
+ });
52
+ });
53
+
54
+ describe('versionUtil.bump', () => {
55
+ it.each([
56
+ ['release', '1.2.4'],
57
+ ['minor', '1.3.0'],
58
+ ['major', '2.0.0'],
59
+ ] as const)('bumps %s', (kind, expected) => {
60
+ expect(versionUtil.bump('1.2.3', kind)).toBe(expected);
61
+ });
62
+ });
@@ -0,0 +1,2 @@
1
+ export { versionUtil } from './versionUtil';
2
+ export type { TVersionConstraint } from './versionUtil';
@@ -0,0 +1,103 @@
1
+ import semver from 'semver';
2
+
3
+ export type TVersionConstraint = string;
4
+
5
+ const normalizeConstraint = (constraint = '*'): string | null => {
6
+ const value = constraint.trim();
7
+
8
+ if (!value) return null;
9
+
10
+ return semver.validRange(value);
11
+ };
12
+
13
+ const validate = (value: string, range = false): boolean => {
14
+ const input = value.trim();
15
+
16
+ if (!input) return false;
17
+
18
+ if (range) return normalizeConstraint(input) !== null;
19
+
20
+ return semver.valid(input) === input;
21
+ };
22
+
23
+ const compare = (a: string, b: string): number => semver.compare(a, b);
24
+
25
+ const satisfies = (version: string, constraint = '*'): boolean => {
26
+ const range = normalizeConstraint(constraint);
27
+
28
+ return range !== null && semver.satisfies(version, range);
29
+ };
30
+
31
+ const sort = (versions: string[]): string[] => (
32
+ [...versions].filter(v => validate(v)).sort(semver.rcompare)
33
+ );
34
+
35
+ const select = (
36
+ versions: string[],
37
+ constraints: string[] = ['*'],
38
+ ): string[] => sort(versions).filter(version => (
39
+ constraints.every(constraint => satisfies(version, constraint))
40
+ ));
41
+
42
+ const latest = (
43
+ versions: string[],
44
+ constraints: string[] = ['*'],
45
+ ): string => select(versions, constraints)[0] || '';
46
+
47
+ const intersection = (...sets: string[][]): string[] => {
48
+ if (!sets.length) return [];
49
+
50
+ return sort(sets[0].filter(version => (
51
+ sets.slice(1).every(set => set.includes(version))
52
+ )));
53
+ };
54
+
55
+ const union = (...sets: string[][]): string[] => (
56
+ sort([...new Set(sets.flat())])
57
+ );
58
+
59
+ const difference = (left: string[], right: string[]): string[] => {
60
+ const excluded = new Set(right);
61
+
62
+ return sort(left.filter(version => !excluded.has(version)));
63
+ };
64
+
65
+ const intersects = (left: string[], right: string[]): boolean => {
66
+ const rightSet = new Set(right);
67
+
68
+ return left.some(version => rightSet.has(version));
69
+ };
70
+
71
+ const isSubset = (subset: string[], superset: string[]): boolean => {
72
+ const allowed = new Set(superset);
73
+
74
+ return subset.every(version => allowed.has(version));
75
+ };
76
+
77
+ const bump = (
78
+ version: string,
79
+ kind: 'release' | 'minor' | 'major',
80
+ ): string => {
81
+ const release = kind === 'release' ? 'patch' : kind;
82
+ const next = semver.inc(version, release);
83
+
84
+ if (!next) throw new Error(`Invalid semantic version: ${version}`);
85
+
86
+ return next;
87
+ };
88
+
89
+ export const versionUtil = {
90
+ normalizeConstraint,
91
+ validate,
92
+ compare,
93
+ satisfies,
94
+ sort,
95
+ select,
96
+ latest,
97
+ intersection,
98
+ union,
99
+ difference,
100
+ intersects,
101
+ isSubset,
102
+ bump,
103
+ };
package/tsconfig.json CHANGED
@@ -25,6 +25,6 @@
25
25
  ],
26
26
  "exclude": [
27
27
  "node_modules",
28
- "__tests__"
28
+ "**/__tests__"
29
29
  ]
30
30
  }
@@ -1 +0,0 @@
1
- export declare const handleBuildGraphError: (error: Error) => void;
@@ -1,42 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.handleBuildGraphError = void 0;
7
- const buildGraph_1 = require("../../src/buildGraph");
8
- const log_1 = require("../log");
9
- const chalk_1 = __importDefault(require("chalk"));
10
- const handleBuildGraphError = (error) => {
11
- if (!(error instanceof buildGraph_1.GraphError))
12
- return;
13
- const { message: errorMessage, details } = error;
14
- if (errorMessage === 'NOT_A_NPM') {
15
- log_1.log.error('Not a npm project');
16
- }
17
- if (errorMessage === 'UNKNOWN_VERSION') {
18
- const { name, version, parent } = details;
19
- const stV = chalk_1.default.bgRed.bold.white(` ${version} `);
20
- const stName = chalk_1.default.red.bold(name);
21
- const stParent = chalk_1.default.green.bold(parent);
22
- log_1.log.error('Unknown version', stV, 'for', stName, 'in', stParent);
23
- }
24
- if (errorMessage === 'VERSION_CONFLICT') {
25
- const { parents, name } = details;
26
- const longestVersion = Object.values(parents ?? {}).reduce((len, v) => (v.length > len ? v.length : len), 0);
27
- const formattedName = chalk_1.default.green.bold(name);
28
- const baseMsg = `${chalk_1.default.red('Confilict')} for ${formattedName}:`;
29
- const conflictMsg = Object.entries(parents ?? {})
30
- .reduce((msg, [pName, v]) => {
31
- const formatedV = chalk_1.default.bold.red(String(v).padEnd(longestVersion, ' '));
32
- return [
33
- ...msg,
34
- ` - Version ${formatedV} used in ${chalk_1.default.green.bold(pName)}`,
35
- ];
36
- }, [baseMsg]);
37
- log_1.log.error(conflictMsg.join('\n'));
38
- }
39
- log_1.log.error(errorMessage);
40
- };
41
- exports.handleBuildGraphError = handleBuildGraphError;
42
- //# sourceMappingURL=handleBuildGraphError.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handleBuildGraphError.js","sourceRoot":"","sources":["../../../runner/handleErrors/handleBuildGraphError.ts"],"names":[],"mappings":";;;;;;AAAA,qDAAkD;AAClD,gCAA6B;AAC7B,kDAA0B;AAEnB,MAAM,qBAAqB,GAAG,CAAC,KAAY,EAAE,EAAE;IACpD,IAAI,CAAC,CAAC,KAAK,YAAY,uBAAU,CAAC;QAAE,OAAO;IAE3C,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEjD,IAAI,YAAY,KAAK,WAAW,EAAE,CAAC;QACjC,SAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,YAAY,KAAK,iBAAiB,EAAE,CAAC;QACvC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC1C,MAAM,GAAG,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE1C,SAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,YAAY,KAAK,kBAAkB,EAAE,CAAC;QACxC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAElC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACrE,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAChC,EAAE,CAAC,CAAC,CAAC;QAEN,MAAM,aAAa,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,GAAG,eAAK,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,aAAa,GAAG,CAAC;QAElE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;aAC9C,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,SAAS,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAC9B,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CACtC,CAAC;YAEF,OAAO;gBACL,GAAG,GAAG;gBACN,eAAe,SAAS,YAAY,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;aAC9D,CAAC;QACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAEhB,SAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,SAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAC1B,CAAC,CAAC;AA5CW,QAAA,qBAAqB,yBA4ChC"}
@@ -1 +0,0 @@
1
- export declare const handleGitError: (error: Error) => void;
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleGitError = void 0;
4
- const git_1 = require("../../src/git");
5
- const log_1 = require("../log");
6
- const handleGitError = (error) => {
7
- if (!(error instanceof git_1.GitError))
8
- return;
9
- const { message: errorMessage } = error;
10
- if (errorMessage === 'GIT_NOT_A_REPO') {
11
- log_1.log.error('Is not a git repo');
12
- }
13
- if (errorMessage === 'GIT_MODULE_CHECKOUT_FAILED') {
14
- log_1.log.error('Checkout failded');
15
- }
16
- if (errorMessage === 'GIT_REPO_URL_REQUIRED') {
17
- log_1.log.error('Module is not published yet - pass --repo-url for the first publish');
18
- }
19
- if (errorMessage === 'GIT_NOT_LATEST_VERSION') {
20
- log_1.log.error('Publish is only possible from the latest version');
21
- }
22
- if (errorMessage === 'GIT_SYNC_CONFLICT') {
23
- log_1.log.error('Sync with remote failed - resolve conflicts manually');
24
- }
25
- };
26
- exports.handleGitError = handleGitError;
27
- //# sourceMappingURL=handleGitError.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handleGitError.js","sourceRoot":"","sources":["../../../runner/handleErrors/handleGitError.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AACzC,gCAA6B;AAEtB,MAAM,cAAc,GAAG,CAAC,KAAY,EAAE,EAAE;IAC7C,IAAI,CAAC,CAAC,KAAK,YAAY,cAAQ,CAAC;QAAE,OAAO;IAEzC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAExC,IAAI,YAAY,KAAK,gBAAgB,EAAE,CAAC;QACtC,SAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,YAAY,KAAK,4BAA4B,EAAE,CAAC;QAClD,SAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,YAAY,KAAK,uBAAuB,EAAE,CAAC;QAC7C,SAAG,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,YAAY,KAAK,wBAAwB,EAAE,CAAC;QAC9C,SAAG,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,YAAY,KAAK,mBAAmB,EAAE,CAAC;QACzC,SAAG,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACpE,CAAC;AACH,CAAC,CAAC;AAxBW,QAAA,cAAc,kBAwBzB"}
@@ -1 +0,0 @@
1
- export declare const handleInstallError: (error: Error, gitUrl: string) => Promise<void>;
@@ -1,30 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.handleInstallError = void 0;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const versionUtil_1 = require("../../src/versionUtil");
9
- const log_1 = require("../log");
10
- const git_1 = require("../../src/git");
11
- const handleInstallError = async (error, gitUrl) => {
12
- const { message } = error;
13
- const { url, version, name } = git_1.git.parseUrl(gitUrl);
14
- if (message === 'NOT_A_GIT_URL') {
15
- return log_1.log.error(chalk_1.default.red.bold(url), '- is not a git url!');
16
- }
17
- if (message === 'REQUESTED_VERSION_NOT_EXISTS') {
18
- const versions = await git_1.git.listVersions(name);
19
- const latestVersion = versionUtil_1.versionUtil.latest(versions);
20
- const requestedVersion = version || latestVersion;
21
- const styledName = `Package ${chalk_1.default.bold.green(name)}`;
22
- const styledVer = chalk_1.default.bgRed.bold.white(` ${requestedVersion} `);
23
- const errMsg = `does not contain version ${styledVer}.`;
24
- const styledVList = chalk_1.default.bold.green(versions.join(', '));
25
- const helpMsg = `Use one from [${styledVList}]`;
26
- return log_1.log.error(styledName, errMsg, helpMsg);
27
- }
28
- };
29
- exports.handleInstallError = handleInstallError;
30
- //# sourceMappingURL=handleInstallError.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"handleInstallError.js","sourceRoot":"","sources":["../../../runner/handleErrors/handleInstallError.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,uDAAoD;AACpD,gCAA6B;AAC7B,uCAAoC;AAE7B,MAAM,kBAAkB,GAAG,KAAK,EAAE,KAAY,EAAE,MAAc,EAAE,EAAE;IACvE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC1B,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,SAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEpD,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;QAChC,OAAO,SAAG,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,OAAO,KAAK,8BAA8B,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,SAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAG,yBAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,gBAAgB,GAAG,OAAO,IAAI,aAAa,CAAC;QAClD,MAAM,UAAU,GAAG,WAAW,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,SAAS,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,4BAA4B,SAAS,GAAG,CAAC;QACxD,MAAM,WAAW,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,iBAAiB,WAAW,GAAG,CAAC;QAEhD,OAAO,SAAG,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;AACH,CAAC,CAAC;AApBW,QAAA,kBAAkB,sBAoB7B"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,80 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const versionUtil_1 = require("../versionUtil");
4
- describe('Latest', () => {
5
- it('Single version', () => {
6
- const v = versionUtil_1.versionUtil.latest(['1.0.0']);
7
- expect(v).toBe('1.0.0');
8
- });
9
- it('Path versions', () => {
10
- const v = versionUtil_1.versionUtil.latest(['^1.0.0', '^1.0.1']);
11
- expect(v).toBe('1.0.1');
12
- });
13
- it('Minor versions', () => {
14
- const v = versionUtil_1.versionUtil.latest(['^1.1.0', '^1.0.23']);
15
- expect(v).toBe('1.1.0');
16
- });
17
- it('Major versions', () => {
18
- const v = versionUtil_1.versionUtil.latest(['^2.0.0', '^1.10.23']);
19
- expect(v).toBe('2.0.0');
20
- });
21
- });
22
- describe('Validate', () => {
23
- it('Pass', () => {
24
- expect(versionUtil_1.versionUtil.validate('')).toBe(false);
25
- expect(versionUtil_1.versionUtil.validate('123')).toBe(false);
26
- expect(versionUtil_1.versionUtil.validate('1.2.3')).toBe(true);
27
- expect(versionUtil_1.versionUtil.validate('1.2.3', true)).toBe(true);
28
- expect(versionUtil_1.versionUtil.validate('^1.2.3', true)).toBe(true);
29
- expect(versionUtil_1.versionUtil.validate('^1.2.3')).toBe(false);
30
- expect(versionUtil_1.versionUtil.validate('*')).toBe(false);
31
- expect(versionUtil_1.versionUtil.validate('*', true)).toBe(true);
32
- });
33
- });
34
- describe('Compare', () => {
35
- it('Major mode', () => {
36
- expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 3, 4], 0)).toBe(true);
37
- expect(versionUtil_1.versionUtil.compare([1, 3, 3], [1, 2, 4], 0)).toBe(false);
38
- expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 2, 4], 1)).toBe(true);
39
- expect(versionUtil_1.versionUtil.compare([1, 2, 4], [1, 2, 3], 1)).toBe(false);
40
- // Higher minor allows lower patch: 0.3.0 fits ^0.2.6
41
- expect(versionUtil_1.versionUtil.compare([0, 2, 6], [0, 3, 0], 0)).toBe(true);
42
- expect(versionUtil_1.versionUtil.compare([0, 2, 6], [0, 2, 5], 0)).toBe(false);
43
- expect(versionUtil_1.versionUtil.compare([0, 2, 6], [0, 2, 6], 0)).toBe(true);
44
- expect(versionUtil_1.versionUtil.compare([0, 2, 6], [1, 3, 0], 0)).toBe(false);
45
- });
46
- it('Minor mode', () => {
47
- expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 2, 4], 1)).toBe(true);
48
- expect(versionUtil_1.versionUtil.compare([1, 2, 4], [1, 2, 3], 1)).toBe(false);
49
- });
50
- it('Path mode', () => {
51
- expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 2, 3], 2)).toBe(true);
52
- expect(versionUtil_1.versionUtil.compare([1, 2, 4], [1, 2, 3], 2)).toBe(false);
53
- expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 2, 4], 2)).toBe(false);
54
- });
55
- });
56
- describe('Pick', () => {
57
- it('Caret range includes higher minors', () => {
58
- const versions = ['0.2.5', '0.2.6', '0.2.8', '0.3.0', '1.0.0'];
59
- expect(versionUtil_1.versionUtil.pick(versions, '^0.2.6')).toEqual(['0.2.6', '0.2.8', '0.3.0']);
60
- });
61
- it('Tilde range keeps minor pinned', () => {
62
- const versions = ['1.2.3', '1.2.10', '1.3.0'];
63
- expect(versionUtil_1.versionUtil.pick(versions, '~1.2.3')).toEqual(['1.2.3', '1.2.10']);
64
- });
65
- });
66
- describe('Bump', () => {
67
- it('Release', () => {
68
- expect(versionUtil_1.versionUtil.bump('0.0.0', 'release')).toBe('0.0.1');
69
- expect(versionUtil_1.versionUtil.bump('1.2.3', 'release')).toBe('1.2.4');
70
- });
71
- it('Minor', () => {
72
- expect(versionUtil_1.versionUtil.bump('0.0.0', 'minor')).toBe('0.1.0');
73
- expect(versionUtil_1.versionUtil.bump('1.2.3', 'minor')).toBe('1.3.0');
74
- });
75
- it('Major', () => {
76
- expect(versionUtil_1.versionUtil.bump('0.0.0', 'major')).toBe('1.0.0');
77
- expect(versionUtil_1.versionUtil.bump('1.2.3', 'major')).toBe('2.0.0');
78
- });
79
- });
80
- //# sourceMappingURL=versionUtil.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"versionUtil.test.js","sourceRoot":"","sources":["../../../src/__tests__/versionUtil.test.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- type TDetails = {
2
- name: string;
3
- parents?: Record<string, string>;
4
- version?: string;
5
- parent?: string;
6
- };
7
- export declare class GraphError extends Error {
8
- details: TDetails;
9
- constructor(type: string, details: TDetails);
10
- }
11
- export {};
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GraphError = void 0;
4
- class GraphError extends Error {
5
- constructor(type, details) {
6
- super(type);
7
- this.details = details;
8
- }
9
- }
10
- exports.GraphError = GraphError;
11
- //# sourceMappingURL=GraphError.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GraphError.js","sourceRoot":"","sources":["../../../src/buildGraph/GraphError.ts"],"names":[],"mappings":";;;AAOA,MAAa,UAAW,SAAQ,KAAK;IACnC,YAAa,IAAY,EAAS,OAAiB;QACjD,KAAK,CAAC,IAAI,CAAC,CAAC;QADoB,YAAO,GAAP,OAAO,CAAU;IAEnD,CAAC;CACF;AAJD,gCAIC"}
@@ -1,8 +0,0 @@
1
- export interface IGraphEntry {
2
- versions: string[];
3
- parents: Record<string, string>;
4
- used: string[];
5
- allowedVersions: string[];
6
- version: string;
7
- }
8
- export declare const buildGraph: () => Promise<Record<string, IGraphEntry>>;
@@ -1,100 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.buildGraph = void 0;
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const pkgJSONManager_1 = require("../pkgJSONManager");
10
- const versionUtil_1 = require("../versionUtil");
11
- const git_1 = require("../git");
12
- const runOptions_1 = require("../runOptions");
13
- const GraphError_1 = require("./GraphError");
14
- const buildGraph = async () => {
15
- const baseJson = await pkgJSONManager_1.pkgJSONManager.read();
16
- const baseTree = {};
17
- if (!baseJson) {
18
- throw new Error('NOT_A_NPM');
19
- }
20
- if (!baseJson.sv) {
21
- /** There is no dependencies, graph is empty */
22
- return {};
23
- }
24
- const recursiveBuilder = async (dependencies = {}, parent = '*') => {
25
- await Promise.all(Object.entries(dependencies).map(async ([url, version]) => {
26
- const { name } = git_1.git.parseUrl(url);
27
- const { cwd, modulesDir } = runOptions_1.RunOptions;
28
- const moduleDir = path_1.default.join(cwd, modulesDir, name);
29
- const isInstalled = fs_1.default.existsSync(moduleDir);
30
- if (version && !versionUtil_1.versionUtil.validate(version, true)) {
31
- throw new GraphError_1.GraphError('UNKNOWN_VERSION', { name, version, parent });
32
- }
33
- if (!isInstalled) {
34
- await git_1.git.addSumbmodule(url);
35
- }
36
- const existEntry = baseTree[name] || null;
37
- const mJson = existEntry
38
- ? null
39
- : await pkgJSONManager_1.pkgJSONManager.read(name);
40
- const meta = {
41
- version: existEntry?.meta.version
42
- || mJson?.version
43
- || version
44
- || '*',
45
- sv: existEntry?.meta.sv || mJson?.sv || {},
46
- };
47
- const parents = existEntry?.parents || {};
48
- baseTree[name] = {
49
- meta,
50
- parents: { ...parents, [parent]: version },
51
- };
52
- await recursiveBuilder(meta.sv, name);
53
- }));
54
- };
55
- await recursiveBuilder(baseJson.sv, baseJson.name);
56
- const graph = await Promise.all(Object.entries(baseTree).map(async ([name, data]) => {
57
- const versions = await git_1.git.listVersions(name);
58
- const { parents, meta } = data;
59
- const used = Object.entries(parents).reduce((selective, [, v]) => (versionUtil_1.versionUtil.pick(selective, v)), versions);
60
- const allowedVersions = Object.entries(parents)
61
- .filter(([parent]) => parent !== baseJson.name)
62
- .reduce((selective, [, v]) => (versionUtil_1.versionUtil.pick(selective, v)), versions);
63
- // No compatible version found and module has version tags
64
- if (!used.length && versions.length) {
65
- throw new GraphError_1.GraphError('VERSION_CONFLICT', { parents, name });
66
- }
67
- /**
68
- * Текущая версия — тег, на котором реально стоит HEAD. Сравнивать с
69
- * package.json нельзя: его version не обязан совпадать с тегами,
70
- * и такое сравнение отрывает HEAD (checkout на тег) при каждом buildGraph
71
- * Checkout делаем только на чистой копии без локальной работы:
72
- * незакоммиченные изменения или незапушенные коммиты
73
- * важнее резолва версий.
74
- */
75
- const current = await git_1.git.currentVersion(name);
76
- if (!current || !used.includes(current)) {
77
- const latest = versionUtil_1.versionUtil.latest(used);
78
- const moduleDir = path_1.default.join(runOptions_1.RunOptions.cwd, runOptions_1.RunOptions.modulesDir, name);
79
- const [hasChanges, hasUnpushed] = await Promise.all([
80
- git_1.git.hasChanges(moduleDir),
81
- git_1.git.hasUnpushedCommits(moduleDir),
82
- ]);
83
- const allChangesDone = !hasChanges && !hasUnpushed;
84
- if (latest && latest !== current && allChangesDone) {
85
- await git_1.git.checkout(name, latest);
86
- }
87
- }
88
- const version = current || meta.version;
89
- return {
90
- name,
91
- data: { versions, parents, used, allowedVersions, version },
92
- };
93
- }));
94
- return graph.reduce((acc, { name, data }) => ({
95
- ...acc,
96
- [name]: data,
97
- }), {});
98
- };
99
- exports.buildGraph = buildGraph;
100
- //# sourceMappingURL=buildGraph.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buildGraph.js","sourceRoot":"","sources":["../../../src/buildGraph/buildGraph.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export { buildGraph } from './buildGraph';
2
- export { GraphError } from './GraphError';
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GraphError = exports.buildGraph = void 0;
4
- var buildGraph_1 = require("./buildGraph");
5
- Object.defineProperty(exports, "buildGraph", { enumerable: true, get: function () { return buildGraph_1.buildGraph; } });
6
- var GraphError_1 = require("./GraphError");
7
- Object.defineProperty(exports, "GraphError", { enumerable: true, get: function () { return GraphError_1.GraphError; } });
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/buildGraph/index.ts"],"names":[],"mappings":";;;AAAA,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const parseGitUrl_1 = require("../parseGitUrl");
4
- describe('Parse git url', () => {
5
- it('Without version', () => {
6
- const url = 'git@github.com:Casique-front/audio-mixer.git';
7
- expect((0, parseGitUrl_1.parseGitUrl)(url)).toEqual({
8
- url: 'git@github.com:Casique-front/audio-mixer.git',
9
- version: undefined,
10
- name: 'audio-mixer',
11
- });
12
- });
13
- it('With version', () => {
14
- const url = 'git@github.com:Casique-front/audio-mixer.git@1.0.1';
15
- expect((0, parseGitUrl_1.parseGitUrl)(url)).toEqual({
16
- url: 'git@github.com:Casique-front/audio-mixer.git',
17
- version: '1.0.1',
18
- name: 'audio-mixer',
19
- });
20
- });
21
- it('Wrong string', () => {
22
- const url = 'xxx@version';
23
- expect((0, parseGitUrl_1.parseGitUrl)(url)).toEqual({
24
- url: 'xxx@version',
25
- version: null,
26
- name: '',
27
- });
28
- });
29
- });
30
- //# sourceMappingURL=parseGitUrl.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parseGitUrl.test.js","sourceRoot":"","sources":["../../../../src/git/__tests__/parseGitUrl.test.ts"],"names":[],"mappings":";;AAAA,gDAA6C;AAE7C,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,GAAG,GAAG,8CAA8C,CAAC;QAE3D,MAAM,CAAC,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/B,GAAG,EAAE,8CAA8C;YACnD,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,aAAa;SACpB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;QACtB,MAAM,GAAG,GAAG,oDAAoD,CAAC;QAEjE,MAAM,CAAC,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/B,GAAG,EAAE,8CAA8C;YACnD,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,aAAa;SACpB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;QACtB,MAAM,GAAG,GAAG,aAAa,CAAC;QAE1B,MAAM,CAAC,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/B,GAAG,EAAE,aAAa;YAClB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,13 +0,0 @@
1
- declare enum ComapreMode {
2
- major = 0,
3
- minor = 1,
4
- path = 2
5
- }
6
- export declare const versionUtil: {
7
- compare: (baseVer: number[], actualVer: number[], compareMode: ComapreMode) => boolean;
8
- pick: (allVersions: string[], v: string) => string[];
9
- validate: (v: string, relative?: boolean) => boolean;
10
- latest: (versions: string[]) => string;
11
- bump: (version: string, kind: "release" | "minor" | "major") => string;
12
- };
13
- export {};