submodule-version 1.1.3 → 2.0.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 (54) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +5 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/src/__tests__/parseGitUrl.test.d.ts +1 -0
  5. package/dist/src/__tests__/parseGitUrl.test.js +30 -0
  6. package/dist/src/__tests__/parseGitUrl.test.js.map +1 -0
  7. package/dist/src/__tests__/versionUtil.test.d.ts +1 -0
  8. package/dist/src/__tests__/versionUtil.test.js +51 -0
  9. package/dist/src/__tests__/versionUtil.test.js.map +1 -0
  10. package/dist/src/buildGraph.d.ts +1 -0
  11. package/dist/src/buildGraph.js +73 -0
  12. package/dist/src/buildGraph.js.map +1 -0
  13. package/dist/src/config.d.ts +4 -0
  14. package/dist/src/config.js +8 -0
  15. package/dist/src/config.js.map +1 -0
  16. package/dist/src/git.d.ts +5 -0
  17. package/dist/src/git.js +49 -0
  18. package/dist/src/git.js.map +1 -0
  19. package/dist/src/install.d.ts +1 -0
  20. package/dist/src/install.js +43 -0
  21. package/dist/src/install.js.map +1 -0
  22. package/dist/src/log.d.ts +4 -0
  23. package/dist/src/log.js +20 -0
  24. package/dist/src/log.js.map +1 -0
  25. package/dist/src/parseGitUrl.d.ts +7 -0
  26. package/dist/src/parseGitUrl.js +26 -0
  27. package/dist/src/parseGitUrl.js.map +1 -0
  28. package/dist/src/pkgJsonUtil.d.ts +5 -0
  29. package/dist/src/pkgJsonUtil.js +38 -0
  30. package/dist/src/pkgJsonUtil.js.map +1 -0
  31. package/dist/src/submoduleVersion.d.ts +1 -0
  32. package/dist/src/submoduleVersion.js +28 -0
  33. package/dist/src/submoduleVersion.js.map +1 -0
  34. package/dist/src/versionUtil.d.ts +12 -0
  35. package/dist/src/versionUtil.js +68 -0
  36. package/dist/src/versionUtil.js.map +1 -0
  37. package/eslint.config.js +5 -0
  38. package/index-dev.ts +6 -0
  39. package/index.ts +3 -0
  40. package/jest.config.js +9 -0
  41. package/package.json +14 -4
  42. package/src/__tests__/parseGitUrl.test.ts +33 -0
  43. package/src/__tests__/versionUtil.test.ts +60 -0
  44. package/src/buildGraph.ts +98 -0
  45. package/src/config.ts +4 -0
  46. package/src/git.ts +46 -0
  47. package/src/install.ts +47 -0
  48. package/src/log.ts +16 -0
  49. package/src/parseGitUrl.ts +31 -0
  50. package/src/pkgJsonUtil.ts +36 -0
  51. package/src/submoduleVersion.ts +34 -0
  52. package/src/versionUtil.ts +82 -0
  53. package/tsconfig.json +30 -0
  54. package/index.js +0 -177
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import './src/submoduleVersion';
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ require("./src/submoduleVersion");
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAEA,kCAAgC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,30 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseGitUrl.test.js","sourceRoot":"","sources":["../../../src/__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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,51 @@
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
+ });
41
+ it('Minor mode', () => {
42
+ expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 2, 4], 1)).toBe(true);
43
+ expect(versionUtil_1.versionUtil.compare([1, 2, 4], [1, 2, 3], 1)).toBe(false);
44
+ });
45
+ it('Path mode', () => {
46
+ expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 2, 3], 2)).toBe(true);
47
+ expect(versionUtil_1.versionUtil.compare([1, 2, 4], [1, 2, 3], 2)).toBe(false);
48
+ expect(versionUtil_1.versionUtil.compare([1, 2, 3], [1, 2, 4], 2)).toBe(false);
49
+ });
50
+ });
51
+ //# sourceMappingURL=versionUtil.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionUtil.test.js","sourceRoot":"","sources":["../../../src/__tests__/versionUtil.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const buildGraph: () => void | {};
@@ -0,0 +1,73 @@
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 chalk_1 = __importDefault(require("chalk"));
8
+ const pkgJsonUtil_1 = require("./pkgJsonUtil");
9
+ const log_1 = require("./log");
10
+ const git_1 = require("./git");
11
+ const parseGitUrl_1 = require("./parseGitUrl");
12
+ const versionUtil_1 = require("./versionUtil");
13
+ const buildGraph = () => {
14
+ const baseJson = pkgJsonUtil_1.pkgJsonUtil.read();
15
+ const baseTree = {};
16
+ if (!baseJson)
17
+ return log_1.log.error('Not a npm project');
18
+ if (!baseJson.sv)
19
+ return log_1.log.message('There is no dependencies');
20
+ const recursiveBuilder = (dependencies = {}, parent = '*') => {
21
+ Object.entries(dependencies).forEach(([url, version]) => {
22
+ const { name } = (0, parseGitUrl_1.parseGitUrl)(url);
23
+ const jsonPath = pkgJsonUtil_1.pkgJsonUtil.getPkgJsonPath(name);
24
+ if (!versionUtil_1.versionUtil.validate(version, true)) {
25
+ const em = `<${version}> for [${name}] in [${parent}]`;
26
+ return log_1.log.error('Unknown version', em);
27
+ }
28
+ if (!jsonPath) {
29
+ git_1.git.addSumbmodule(url);
30
+ }
31
+ const exists = baseTree[name] || null;
32
+ const mJson = exists ? null : pkgJsonUtil_1.pkgJsonUtil.read(name);
33
+ if (!version)
34
+ return log_1.log.error('Module', name, 'not installed');
35
+ const meta = exists?.meta || { version: mJson.version, sv: mJson.sv };
36
+ const parents = exists?.parents || {};
37
+ baseTree[name] = {
38
+ meta,
39
+ parents: { ...parents, [parent]: version },
40
+ };
41
+ recursiveBuilder(meta.sv, name);
42
+ });
43
+ };
44
+ recursiveBuilder(baseJson.sv, baseJson.name);
45
+ const graph = Object.entries(baseTree).reduce((acc, [name, data]) => {
46
+ const versions = git_1.git.listVersions(name);
47
+ const { parents, meta } = data;
48
+ const used = Object.entries(parents).reduce((selective, [, v]) => (versionUtil_1.versionUtil.pick(selective, v)), versions);
49
+ if (!used.length) {
50
+ const longestVersion = Object.values(parents).reduce((len, v) => (v.length > len ? v.length : len), 0);
51
+ const formattedName = chalk_1.default.green.bold(name);
52
+ const baseMsg = `${chalk_1.default.red('Confilict')} for ${formattedName}:`;
53
+ const conflictMsg = Object.entries(parents).reduce((msg, [pName, v]) => {
54
+ const formatedV = chalk_1.default.bold.red(String(v).padEnd(longestVersion, ' '));
55
+ return [
56
+ ...msg,
57
+ ` - Version ${formatedV} used in ${chalk_1.default.green.bold(pName)}`,
58
+ ];
59
+ }, [baseMsg]);
60
+ log_1.log.error(conflictMsg.join('\n'));
61
+ }
62
+ if (!used.includes(meta.version)) {
63
+ git_1.git.checkout(name, versionUtil_1.versionUtil.latest(used));
64
+ }
65
+ return {
66
+ ...acc,
67
+ [name]: { versions, parents, used, version: meta.version },
68
+ };
69
+ }, {});
70
+ return graph;
71
+ };
72
+ exports.buildGraph = buildGraph;
73
+ //# sourceMappingURL=buildGraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildGraph.js","sourceRoot":"","sources":["../../src/buildGraph.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,+CAA4C;AAC5C,+BAA4B;AAC5B,+BAA4B;AAC5B,+CAA4C;AAC5C,+CAA4C;AAcrC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,QAAQ,GAAG,yBAAW,CAAC,IAAI,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,SAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAEjE,MAAM,gBAAgB,GAAG,CAAC,eAAoB,EAAE,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE;QAChE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;YACtD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAC;YAClC,MAAM,QAAQ,GAAG,yBAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC,yBAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;gBACxC,MAAM,EAAE,GAAG,IAAI,OAAO,UAAU,IAAI,SAAS,MAAM,GAAG,CAAC;gBAEvD,OAAO,SAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;aACzC;YACD,IAAI,CAAC,QAAQ,EAAE;gBACb,SAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;aACxB;YAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;YACtC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAErD,IAAI,CAAC,OAAO;gBAAE,OAAO,SAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;YAEhE,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YACtE,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;YAEtC,QAAQ,CAAC,IAAI,CAAC,GAAG;gBACf,IAAI;gBACJ,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE;aAC3C,CAAC;YAEF,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE7C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QAClE,MAAM,QAAQ,GAAG,SAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAE/B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAChE,yBAAW,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAC/B,EAAE,QAAQ,CAAC,CAAC;QAEb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAC/D,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAChC,EAAE,CAAC,CAAC,CAAC;YAEN,MAAM,aAAa,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,GAAG,eAAK,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,aAAa,GAAG,CAAC;YAElE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;gBACrE,MAAM,SAAS,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;gBAExE,OAAO;oBACL,GAAG,GAAG;oBACN,eAAe,SAAS,YAAY,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;iBAC9D,CAAC;YACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YAEd,SAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACnC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAChC,SAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,yBAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;SAC9C;QAED,OAAO;YACL,GAAG,GAAG;YACN,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;SAC3D,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AA9EW,QAAA,UAAU,cA8ErB"}
@@ -0,0 +1,4 @@
1
+ export declare const config: {
2
+ dir: string;
3
+ tag: string;
4
+ };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ exports.config = {
5
+ dir: 'modules',
6
+ tag: 'master',
7
+ };
8
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG;IACpB,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,QAAQ;CACd,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const git: {
2
+ addSumbmodule: (url: string) => void;
3
+ checkout: (url: string, version: string) => void;
4
+ listVersions: (projectName: string) => string[];
5
+ };
@@ -0,0 +1,49 @@
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.git = void 0;
7
+ const child_process_1 = require("child_process");
8
+ const path_1 = __importDefault(require("path"));
9
+ const config_1 = require("./config");
10
+ const log_1 = require("./log");
11
+ const parseGitUrl_1 = require("./parseGitUrl");
12
+ const versionUtil_1 = require("./versionUtil");
13
+ const addSumbmodule = (url) => {
14
+ const { name } = (0, parseGitUrl_1.parseGitUrl)(url);
15
+ const module = path_1.default.join(config_1.config.dir, name);
16
+ try {
17
+ (0, child_process_1.execSync)(`git submodule add ${url} ${module}`);
18
+ }
19
+ catch {
20
+ log_1.log.error(url, 'Is not a git repo');
21
+ }
22
+ };
23
+ const checkout = (url, version) => {
24
+ const { name } = (0, parseGitUrl_1.parseGitUrl)(url);
25
+ const module = path_1.default.join(config_1.config.dir, name);
26
+ try {
27
+ (0, child_process_1.execSync)(`git -C ${module} checkout ${version} -q`);
28
+ }
29
+ catch {
30
+ log_1.log.error('Checkout failded');
31
+ }
32
+ ;
33
+ };
34
+ const listVersions = (projectName) => {
35
+ const module = path_1.default.join(config_1.config.dir, projectName);
36
+ const res = (0, child_process_1.execSync)(`git -C ${module} tag -l`);
37
+ const tagList = res.toString().split(/\r?\n/);
38
+ return tagList.filter(tag => {
39
+ if (!tag)
40
+ return false;
41
+ return versionUtil_1.versionUtil.validate(tag);
42
+ });
43
+ };
44
+ exports.git = {
45
+ addSumbmodule,
46
+ checkout,
47
+ listVersions,
48
+ };
49
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/git.ts"],"names":[],"mappings":";;;;;;AAAA,iDAAyC;AACzC,gDAAwB;AACxB,qCAAkC;AAClC,+BAA4B;AAC5B,+CAA4C;AAC5C,+CAA4C;AAE5C,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,EAAE;IACpC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,eAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAE3C,IAAI;QACF,IAAA,wBAAQ,EAAC,qBAAqB,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;KAChD;IAAC,MAAM;QACN,SAAG,CAAC,KAAK,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;KACrC;AACH,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,OAAe,EAAE,EAAE;IAChD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,eAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAE3C,IAAI;QACF,IAAA,wBAAQ,EAAC,UAAU,MAAM,aAAa,OAAO,KAAK,CAAC,CAAC;KACrD;IAAC,MAAM;QACN,SAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;KAC/B;IAAA,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,WAAmB,EAAE,EAAE;IAC3C,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,eAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,IAAA,wBAAQ,EAAC,UAAU,MAAM,SAAS,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE9C,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QAC1B,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QAEvB,OAAO,yBAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEW,QAAA,GAAG,GAAG;IACjB,aAAa;IACb,QAAQ;IACR,YAAY;CACb,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const install: (arg: any) => void;
@@ -0,0 +1,43 @@
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.install = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const parseGitUrl_1 = require("./parseGitUrl");
9
+ const pkgJsonUtil_1 = require("./pkgJsonUtil");
10
+ const log_1 = require("./log");
11
+ const git_1 = require("./git");
12
+ const versionUtil_1 = require("./versionUtil");
13
+ const buildGraph_1 = require("./buildGraph");
14
+ /* Yargs typed as any */
15
+ const install = (arg) => {
16
+ const { target } = arg;
17
+ const { url, version, name } = (0, parseGitUrl_1.parseGitUrl)(arg.url);
18
+ if (!name) {
19
+ return log_1.log.error(chalk_1.default.red.bold(url), '- is not a git url!');
20
+ }
21
+ const targetPkg = pkgJsonUtil_1.pkgJsonUtil.read(target);
22
+ let installedPkg = pkgJsonUtil_1.pkgJsonUtil.read(name);
23
+ if (!installedPkg) {
24
+ git_1.git.addSumbmodule(url);
25
+ installedPkg = pkgJsonUtil_1.pkgJsonUtil.read(name);
26
+ }
27
+ const versions = git_1.git.listVersions(name);
28
+ const latestVersion = versionUtil_1.versionUtil.latest(versions);
29
+ const requestedVersion = version || latestVersion;
30
+ if (!versions.includes(requestedVersion)) {
31
+ const styledName = `Package ${chalk_1.default.bold.green(name)}`;
32
+ const styledVer = chalk_1.default.bgRed.bold.white(` ${requestedVersion} `);
33
+ const errMsg = `does not contain version ${styledVer}.`;
34
+ const styledVList = chalk_1.default.bold.green(versions.join(', '));
35
+ const helpMsg = `Use one from [${styledVList}]`;
36
+ log_1.log.error(styledName, errMsg, helpMsg);
37
+ }
38
+ targetPkg.sv[url] = `^${requestedVersion}`;
39
+ pkgJsonUtil_1.pkgJsonUtil.write(targetPkg, target);
40
+ (0, buildGraph_1.buildGraph)();
41
+ };
42
+ exports.install = install;
43
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/install.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,+CAA4C;AAC5C,+CAA4C;AAC5C,+BAA4B;AAC5B,+BAA4B;AAC5B,+CAA4C;AAC5C,6CAA0C;AAO1C,wBAAwB;AACjB,MAAM,OAAO,GAAG,CAAC,GAAQ,EAAE,EAAE;IAClC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAW,CAAC;IAC/B,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAA,yBAAW,EAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEpD,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,SAAG,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC;KAC9D;IAED,MAAM,SAAS,GAAG,yBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,YAAY,GAAG,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1C,IAAI,CAAC,YAAY,EAAE;QACjB,SAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACvB,YAAY,GAAG,yBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvC;IAED,MAAM,QAAQ,GAAG,SAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,aAAa,GAAG,yBAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,gBAAgB,GAAG,OAAO,IAAI,aAAa,CAAC;IAElD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QACxC,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;QAChD,SAAG,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KACxC;IAED,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC3C,yBAAW,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACrC,IAAA,uBAAU,GAAE,CAAC;AACf,CAAC,CAAC;AAhCW,QAAA,OAAO,WAgClB"}
@@ -0,0 +1,4 @@
1
+ export declare const log: {
2
+ message: (...args: string[]) => void;
3
+ error: (...args: string[]) => void;
4
+ };
@@ -0,0 +1,20 @@
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.log = void 0;
7
+ const yargs_1 = __importDefault(require("yargs"));
8
+ const message = (...args) => {
9
+ // eslint-disable-next-line no-console
10
+ console.log(...args);
11
+ };
12
+ const error = (...args) => {
13
+ message(...args);
14
+ yargs_1.default.exit(1, new Error(args.join(' ')));
15
+ };
16
+ exports.log = {
17
+ message,
18
+ error,
19
+ };
20
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/log.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,MAAM,OAAO,GAAG,CAAC,GAAG,IAAc,EAAE,EAAE;IACpC,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,GAAG,IAAc,EAAE,EAAE;IAClC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACjB,eAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEW,QAAA,GAAG,GAAG;IACjB,OAAO;IACP,KAAK;CACN,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface IParseResult {
2
+ name: string;
3
+ url: string;
4
+ version: string | null;
5
+ }
6
+ export declare const parseGitUrl: (url: string) => IParseResult;
7
+ export {};
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseGitUrl = void 0;
4
+ const PARSE_REGEX = /^(?<url>.*\.git)(@(?<version>.*))?$/;
5
+ const NAME_REGEX = /\/(?<name>.*)\.git/;
6
+ const makeEmptyObject = (url) => ({
7
+ name: '',
8
+ url,
9
+ version: null,
10
+ });
11
+ const parseGitUrl = (url) => {
12
+ const { groups } = PARSE_REGEX.exec(url) || {};
13
+ if (!groups || !groups.url)
14
+ return makeEmptyObject(url);
15
+ const { groups: nameGroups } = NAME_REGEX.exec(url) || {};
16
+ const { name } = nameGroups || {};
17
+ if (!name)
18
+ return makeEmptyObject(url);
19
+ return {
20
+ url: groups.url,
21
+ version: groups.version,
22
+ name,
23
+ };
24
+ };
25
+ exports.parseGitUrl = parseGitUrl;
26
+ //# sourceMappingURL=parseGitUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseGitUrl.js","sourceRoot":"","sources":["../../src/parseGitUrl.ts"],"names":[],"mappings":";;;AAMA,MAAM,WAAW,GAAG,qCAAqC,CAAC;AAC1D,MAAM,UAAU,GAAG,oBAAoB,CAAC;AAExC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,EAAE,EAAE;IACR,GAAG;IACH,OAAO,EAAE,IAAI;CACd,CAAC,CAAC;AAEI,MAAM,WAAW,GAAG,CAAC,GAAW,EAAgB,EAAE;IACvD,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAE/C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG;QAAE,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IAExD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,IAAI,EAAE,CAAC;IAElC,IAAI,CAAC,IAAI;QAAE,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IAEvC,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI;KACL,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,WAAW,eAetB"}
@@ -0,0 +1,5 @@
1
+ export declare const pkgJsonUtil: {
2
+ getPkgJsonPath: (name?: string) => string | null;
3
+ read: (name?: string) => any;
4
+ write: (data: Object, name?: string) => null | undefined;
5
+ };
@@ -0,0 +1,38 @@
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.pkgJsonUtil = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const config_1 = require("./config");
10
+ const JSON_NAME = 'package.json';
11
+ const getPkgJsonPath = (name) => {
12
+ const folder = name ? [config_1.config.dir, name] : [];
13
+ const jsonPath = path_1.default.join(process.cwd(), ...folder, JSON_NAME);
14
+ const isJsonExists = fs_1.default.existsSync(jsonPath);
15
+ if (!isJsonExists)
16
+ return null;
17
+ return jsonPath;
18
+ };
19
+ const read = (name) => {
20
+ const jsonPath = getPkgJsonPath(name);
21
+ if (!jsonPath)
22
+ return null;
23
+ const jsonString = fs_1.default.readFileSync(jsonPath, 'utf-8');
24
+ return JSON.parse(jsonString);
25
+ };
26
+ const write = (data, name) => {
27
+ const jsonPath = getPkgJsonPath(name);
28
+ if (!jsonPath)
29
+ return null;
30
+ fs_1.default.writeFileSync(jsonPath, JSON.stringify(data, null, 2));
31
+ };
32
+ exports.pkgJsonUtil = {
33
+ getPkgJsonPath,
34
+ read,
35
+ write,
36
+ };
37
+ module.exports = { pkgJsonUtil: exports.pkgJsonUtil };
38
+ //# sourceMappingURL=pkgJsonUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pkgJsonUtil.js","sourceRoot":"","sources":["../../src/pkgJsonUtil.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,qCAAkC;AAElC,MAAM,SAAS,GAAG,cAAc,CAAC;AAEjC,MAAM,cAAc,GAAG,CAAC,IAAa,EAAE,EAAE;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,eAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,SAAS,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAE/B,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,IAAa,EAAE,EAAE;IAC7B,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,UAAU,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEtD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,IAAa,EAAE,EAAE;IAC5C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEW,QAAA,WAAW,GAAG;IACzB,cAAc;IACd,IAAI;IACJ,KAAK;CACN,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG,EAAE,WAAW,EAAX,mBAAW,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,28 @@
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
+ const chalk_1 = __importDefault(require("chalk"));
7
+ const yargs_1 = __importDefault(require("yargs"));
8
+ const buildGraph_1 = require("./buildGraph");
9
+ const install_1 = require("./install");
10
+ const log_1 = require("./log");
11
+ const mainProcess = () => {
12
+ (0, buildGraph_1.buildGraph)();
13
+ log_1.log.message(chalk_1.default.green.bold('Everything is up to date!🔥'));
14
+ };
15
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
16
+ yargs_1.default.scriptName('sv')
17
+ .usage('$0 <cmd> [args]')
18
+ .command(['validate', '$0', 'v'], 'Validate and install modules', () => { }, mainProcess)
19
+ .command(['install <url> [target]', 'i'], 'Install new submodule', y => y.positional('url', {
20
+ type: 'string',
21
+ describe: 'Git submodule url',
22
+ }).positional('target', {
23
+ type: 'string',
24
+ describe: 'Target module name',
25
+ }), install_1.install)
26
+ .help()
27
+ .argv;
28
+ //# sourceMappingURL=submoduleVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submoduleVersion.js","sourceRoot":"","sources":["../../src/submoduleVersion.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,kDAA0B;AAC1B,6CAA0C;AAC1C,uCAAoC;AACpC,+BAA4B;AAE5B,MAAM,WAAW,GAAG,GAAG,EAAE;IACvB,IAAA,uBAAU,GAAE,CAAC;IACb,SAAG,CAAC,OAAO,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,oEAAoE;AACpE,eAAK,CAAC,UAAU,CAAC,IAAI,CAAC;KACnB,KAAK,CAAC,iBAAiB,CAAC;KACxB,OAAO,CACN,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,EACvB,8BAA8B,EAC9B,GAAG,EAAE,GAAE,CAAC,EACR,WAAW,CACZ;KACA,OAAO,CACN,CAAC,wBAAwB,EAAE,GAAG,CAAC,EAC/B,uBAAuB,EACvB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE;IACvB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,mBAAmB;CAC9B,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE;IACtB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,oBAAoB;CAC/B,CAAC,EACF,iBAAO,CACR;KACA,IAAI,EAAE;KACN,IAAI,CAAC"}
@@ -0,0 +1,12 @@
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) => any;
8
+ pick: (allVersions: string[], v: string) => string[];
9
+ validate: (v: string, relative?: boolean) => boolean;
10
+ latest: (versions: string[]) => string;
11
+ };
12
+ export {};
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.versionUtil = void 0;
4
+ var ComapreMode;
5
+ (function (ComapreMode) {
6
+ ComapreMode[ComapreMode["major"] = 0] = "major";
7
+ ComapreMode[ComapreMode["minor"] = 1] = "minor";
8
+ ComapreMode[ComapreMode["path"] = 2] = "path";
9
+ })(ComapreMode || (ComapreMode = {}));
10
+ const cleanup = (v) => v.replace(/^\^?~?/, '');
11
+ const toArray = (v) => (cleanup(v).split('.').map(Number));
12
+ const mode = (v) => {
13
+ // Minor and path can be vary. Only major should be same
14
+ if (v.startsWith('^'))
15
+ return ComapreMode.major;
16
+ // Path can be vary. Major and minor should be same
17
+ if (v.startsWith('~'))
18
+ return ComapreMode.minor;
19
+ // Everything should be same
20
+ return ComapreMode.path;
21
+ };
22
+ const compare = (baseVer, actualVer, compareMode) => {
23
+ const val = new Array(3).fill(null).reduce((acc, _, i) => {
24
+ // Alrady is not compatible
25
+ if (!acc)
26
+ return acc;
27
+ // Mode not include comparation, version should be same or hier
28
+ if (i > compareMode)
29
+ return actualVer[i] >= baseVer[i];
30
+ return baseVer[i] === actualVer[i];
31
+ }, true);
32
+ return val;
33
+ };
34
+ const pick = (allVersions, v) => {
35
+ if (v === '*')
36
+ return allVersions;
37
+ const vMode = mode(v);
38
+ const vArr = toArray(v);
39
+ return allVersions.filter(av => {
40
+ const avArr = toArray(av);
41
+ return compare(vArr, avArr, vMode);
42
+ });
43
+ };
44
+ const validate = (v, relative) => {
45
+ if (relative) {
46
+ if (v === '*')
47
+ return true;
48
+ return /^[\^$]?\d+\.\d+\.\d+$/.test(v);
49
+ }
50
+ return /^\d+\.\d+\.\d+$/.test(v);
51
+ };
52
+ const latest = (versions) => (cleanup([...versions].sort((v1, v2) => {
53
+ const v1Arr = toArray(v1);
54
+ const v2Arr = toArray(v2);
55
+ return v1Arr.reduce((acc, v1Val, i) => {
56
+ if (acc !== 0)
57
+ return acc;
58
+ const v2Val = v2Arr[i];
59
+ return v2Val - v1Val;
60
+ }, 0);
61
+ })[0]));
62
+ exports.versionUtil = {
63
+ compare,
64
+ pick,
65
+ validate,
66
+ latest,
67
+ };
68
+ //# sourceMappingURL=versionUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versionUtil.js","sourceRoot":"","sources":["../../src/versionUtil.ts"],"names":[],"mappings":"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"}
package/eslint.config.js CHANGED
@@ -4,6 +4,11 @@ const globals = require('globals');
4
4
  module.exports = [
5
5
  ...soft,
6
6
  {
7
+ settings: {
8
+ react: {
9
+ "version": "100.0.0",
10
+ },
11
+ },
7
12
  languageOptions: {
8
13
  globals: globals.node,
9
14
  sourceType: "commonjs",
package/index-dev.ts ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ts-node
2
+
3
+ import chalk from 'chalk';
4
+
5
+ console.log(chalk.bgRed.white.bold(' RUNNED IN DEV MODE '));
6
+ import './src/submoduleVersion';
package/index.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import './src/submoduleVersion';
package/jest.config.js ADDED
@@ -0,0 +1,9 @@
1
+ /** @type {import('ts-jest').JestConfigWithTsJest} **/
2
+ module.exports = {
3
+ testMatch: ['<rootDir>/src/**/*.test.ts'],
4
+ moduleDirectories: ['node_modules'],
5
+ testEnvironment: "node",
6
+ transform: {
7
+ "^.+.tsx?$": ["ts-jest", {}],
8
+ },
9
+ };