submodule-version 2.4.1 → 3.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 (120) hide show
  1. package/README.md +98 -20
  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 +28 -0
  22. package/dist/src/errors.js +30 -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/printError.d.ts +1 -0
  49. package/dist/src/printError.js +158 -0
  50. package/dist/src/printError.js.map +1 -0
  51. package/dist/src/sv.d.ts +16 -8
  52. package/dist/src/sv.js +222 -143
  53. package/dist/src/sv.js.map +1 -1
  54. package/dist/src/versionUtil/index.d.ts +2 -0
  55. package/dist/src/versionUtil/index.js +6 -0
  56. package/dist/src/versionUtil/index.js.map +1 -0
  57. package/dist/src/versionUtil/versionUtil.d.ts +16 -0
  58. package/dist/src/versionUtil/versionUtil.js +70 -0
  59. package/dist/src/versionUtil/versionUtil.js.map +1 -0
  60. package/package.json +4 -2
  61. package/runner/handleErrors/handleErrors.ts +3 -10
  62. package/runner/runner.ts +128 -46
  63. package/src/PubGrub/PubGrub.ts +578 -0
  64. package/src/PubGrub/__tests__/PubGrub.test.ts +351 -0
  65. package/src/PubGrub/index.ts +12 -0
  66. package/src/PubGrub/types.ts +72 -0
  67. package/src/__tests__/entryStore.test.ts +248 -0
  68. package/src/__tests__/printError.test.ts +148 -0
  69. package/src/__tests__/sv.test.ts +441 -0
  70. package/src/entryStore.ts +212 -0
  71. package/src/errors.ts +39 -0
  72. package/src/git/api/GithubError.ts +5 -0
  73. package/src/git/api/api.ts +180 -0
  74. package/src/git/api/index.ts +3 -0
  75. package/src/git/git.ts +8 -396
  76. package/src/git/index.ts +1 -0
  77. package/src/git/local/index.ts +1 -0
  78. package/src/git/local/local.ts +430 -0
  79. package/src/index.ts +17 -0
  80. package/src/printError.ts +189 -0
  81. package/src/sv.ts +304 -146
  82. package/src/versionUtil/__tests__/versionUtil.test.ts +62 -0
  83. package/src/versionUtil/index.ts +2 -0
  84. package/src/versionUtil/versionUtil.ts +103 -0
  85. package/tsconfig.json +1 -1
  86. package/dist/runner/handleErrors/handleBuildGraphError.d.ts +0 -1
  87. package/dist/runner/handleErrors/handleBuildGraphError.js +0 -42
  88. package/dist/runner/handleErrors/handleBuildGraphError.js.map +0 -1
  89. package/dist/runner/handleErrors/handleGitError.d.ts +0 -1
  90. package/dist/runner/handleErrors/handleGitError.js +0 -27
  91. package/dist/runner/handleErrors/handleGitError.js.map +0 -1
  92. package/dist/runner/handleErrors/handleInstallError.d.ts +0 -1
  93. package/dist/runner/handleErrors/handleInstallError.js +0 -30
  94. package/dist/runner/handleErrors/handleInstallError.js.map +0 -1
  95. package/dist/src/__tests__/versionUtil.test.d.ts +0 -1
  96. package/dist/src/__tests__/versionUtil.test.js +0 -80
  97. package/dist/src/__tests__/versionUtil.test.js.map +0 -1
  98. package/dist/src/buildGraph/GraphError.d.ts +0 -11
  99. package/dist/src/buildGraph/GraphError.js +0 -11
  100. package/dist/src/buildGraph/GraphError.js.map +0 -1
  101. package/dist/src/buildGraph/buildGraph.d.ts +0 -8
  102. package/dist/src/buildGraph/buildGraph.js +0 -100
  103. package/dist/src/buildGraph/buildGraph.js.map +0 -1
  104. package/dist/src/buildGraph/index.d.ts +0 -2
  105. package/dist/src/buildGraph/index.js +0 -8
  106. package/dist/src/buildGraph/index.js.map +0 -1
  107. package/dist/src/git/__tests__/parseGitUrl.test.d.ts +0 -1
  108. package/dist/src/git/__tests__/parseGitUrl.test.js +0 -30
  109. package/dist/src/git/__tests__/parseGitUrl.test.js.map +0 -1
  110. package/dist/src/versionUtil.d.ts +0 -13
  111. package/dist/src/versionUtil.js +0 -79
  112. package/dist/src/versionUtil.js.map +0 -1
  113. package/runner/handleErrors/handleBuildGraphError.ts +0 -49
  114. package/runner/handleErrors/handleGitError.ts +0 -28
  115. package/runner/handleErrors/handleInstallError.ts +0 -26
  116. package/src/__tests__/versionUtil.test.ts +0 -96
  117. package/src/buildGraph/GraphError.ts +0 -12
  118. package/src/buildGraph/buildGraph.ts +0 -150
  119. package/src/buildGraph/index.ts +0 -2
  120. package/src/versionUtil.ts +0 -97
package/dist/src/sv.js CHANGED
@@ -5,151 +5,247 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.SV = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
+ const promises_1 = require("fs/promises");
8
9
  const pkgJSONManager_1 = require("./pkgJSONManager");
9
- const buildGraph_1 = require("./buildGraph");
10
+ const PubGrub_1 = require("./PubGrub");
11
+ const entryStore_1 = require("./entryStore");
10
12
  const runOptions_1 = require("./runOptions");
11
13
  const versionUtil_1 = require("./versionUtil");
12
14
  const git_1 = require("./git");
15
+ const errors_1 = require("./errors");
16
+ /*
17
+ * Правка package.json родителя (внутри его сабмодуля): parent-level
18
+ * мутации обязаны пережить публикацию родителя, поэтому диапазон
19
+ * пишется в его поле sv.
20
+ */
21
+ const updateModuleJson = async (parent, override) => {
22
+ const parentJson = await pkgJSONManager_1.pkgJSONManager.read(parent);
23
+ if (!parentJson)
24
+ throw new errors_1.SVError('ADDON_NOT_FOUND', { name: parent });
25
+ const sv = { ...(parentJson.sv || {}) };
26
+ if (override.add)
27
+ sv[override.add] = override.version || '*';
28
+ if (override.delete) {
29
+ const key = Object.keys(sv)
30
+ .find(depUrl => git_1.git.parseUrl(depUrl).name === override.delete);
31
+ if (!key)
32
+ throw new errors_1.SVError('ADDON_NOT_FOUND', { name: override.delete });
33
+ delete sv[key];
34
+ }
35
+ parentJson.sv = sv;
36
+ await pkgJSONManager_1.pkgJSONManager.write(parentJson, parent);
37
+ };
38
+ /*
39
+ * modulesDir должен быть npm-workspace, иначе сабмодули не попадут
40
+ * в node_modules. Поддерживаем оба формата: workspaces: [] и
41
+ * workspaces: { packages: [] }. Возвращает true, если json изменён.
42
+ */
43
+ const ensureWorkspaces = (baseJson) => {
44
+ const entry = `${runOptions_1.RunOptions.modulesDir}/*`;
45
+ if (Array.isArray(baseJson.workspaces)) {
46
+ if (baseJson.workspaces.includes(entry))
47
+ return false;
48
+ baseJson.workspaces.push(entry);
49
+ return true;
50
+ }
51
+ const packages = baseJson.workspaces?.packages;
52
+ if (Array.isArray(packages)) {
53
+ if (packages.includes(entry))
54
+ return false;
55
+ packages.push(entry);
56
+ return true;
57
+ }
58
+ baseJson.workspaces = [entry];
59
+ return true;
60
+ };
61
+ const MODULES_DIR_FIELD = 'sv-dir';
62
+ const DEFAULT_MODULES_DIR = 'modules';
63
+ /*
64
+ * Уже добавленные сабмодули — источник правды о директории:
65
+ * .gitmodules с единым родителем у всех path (addons/X, addons/Y → addons).
66
+ */
67
+ const deriveModulesDir = async () => {
68
+ try {
69
+ const content = await (0, promises_1.readFile)(path_1.default.join(runOptions_1.RunOptions.cwd, '.gitmodules'), 'utf-8');
70
+ const dirs = new Set([...content.matchAll(/^\s*path\s*=\s*(.+)$/gm)]
71
+ .map(match => match[1].trim().split('/')[0]));
72
+ return dirs.size === 1 ? [...dirs][0] : null;
73
+ }
74
+ catch {
75
+ return null;
76
+ }
77
+ };
13
78
  class SV {
14
- constructor(projectDir, modulesDir = 'addons') {
15
- this.buildGraph = buildGraph_1.buildGraph;
16
- // eslint-disable-next-line class-methods-use-this
17
- this.install = async (gitUrl, parentModule) => {
18
- const { url, version, name } = git_1.git.parseUrl(gitUrl);
19
- if (!name) {
20
- throw new Error('NOT_A_GIT_URL');
21
- }
22
- const targetPkg = await pkgJSONManager_1.pkgJSONManager.read(parentModule);
23
- const installedPkg = await pkgJSONManager_1.pkgJSONManager.read(name);
24
- if (!installedPkg) {
25
- await git_1.git.addSumbmodule(url);
26
- }
27
- const versions = await git_1.git.listVersions(name);
28
- const latestVersion = versionUtil_1.versionUtil.latest(versions);
29
- const requestedVersion = version || latestVersion;
30
- if (!versions.includes(requestedVersion) && versions.length) {
31
- throw new Error('REQUESTED_VERSION_NOT_EXISTS');
32
- }
33
- if (!targetPkg.sv) {
34
- targetPkg.sv = {};
79
+ constructor(projectDir, modulesDir, options = {}) {
80
+ this.resolution = null;
81
+ this.store = new entryStore_1.EntryStore();
82
+ /*
83
+ * Директория модулей: явно переданная (CLI/JS) записанная в
84
+ * package.json#sv-dir → выведенная из .gitmodules → 'modules'.
85
+ * Эффективная записывается в sv-dir. Возвращает true, если json изменён.
86
+ */
87
+ this.syncModulesDir = async (baseJson) => {
88
+ const recorded = baseJson[MODULES_DIR_FIELD];
89
+ if (!this.explicitModulesDir) {
90
+ if (recorded) {
91
+ runOptions_1.RunOptions.modulesDir = recorded;
92
+ return false;
93
+ }
94
+ const derived = await deriveModulesDir();
95
+ if (derived)
96
+ runOptions_1.RunOptions.modulesDir = derived;
35
97
  }
36
- targetPkg.sv[url] = requestedVersion ? `^${requestedVersion}` : '*';
37
- await pkgJSONManager_1.pkgJSONManager.write(targetPkg, parentModule);
38
- await (0, buildGraph_1.buildGraph)();
98
+ if (recorded === runOptions_1.RunOptions.modulesDir)
99
+ return false;
100
+ baseJson[MODULES_DIR_FIELD] = runOptions_1.RunOptions.modulesDir;
101
+ return true;
39
102
  };
40
- // eslint-disable-next-line class-methods-use-this
41
- this.update = async () => {
42
- const graph = await (0, buildGraph_1.buildGraph)();
43
- if (!graph)
44
- return;
45
- await Promise.all(Object.entries(graph).map(async ([name, data]) => {
46
- const { version, used } = data;
47
- const latestVersion = versionUtil_1.versionUtil.latest(used);
48
- if (latestVersion !== version) {
49
- await git_1.git.checkout(name, latestVersion);
103
+ this.resolveDeps = (rootDeps) => new PubGrub_1.PubGrub(this.store).resolve(rootDeps);
104
+ /*
105
+ * Синк рабочей копии с резолвом: недостающие сабмодули добавляются,
106
+ * версии переключаются, исчезнувшие из резолва модули удаляются.
107
+ */
108
+ this.syncModules = async (resolution) => {
109
+ const previous = this.resolution || {};
110
+ await Promise.all(Object.entries(resolution).map(async ([name, entry]) => {
111
+ const dir = path_1.default.join(runOptions_1.RunOptions.modulesDir, name);
112
+ if (!await git_1.git.local.isGitRepo(dir)) {
113
+ await git_1.git.local.addSubmodule(entry.url);
114
+ }
115
+ if (await git_1.git.local.currentVersion(name) !== entry.version) {
116
+ await git_1.git.local.checkout(name, entry.version);
50
117
  }
51
118
  }));
119
+ const removed = Object.keys(previous).filter(name => !resolution[name]);
120
+ await Promise.all(removed.map(name => git_1.git.local.rm(name)));
52
121
  };
53
122
  /*
54
- * Устанавливает конкретную версию аддона: checkout на тег + запись constraint'а
55
- * в package.json проекта (иначе buildGraph вернёт latest(used)).
56
- * constraint по умолчанию — точный пин выбранной версии; при обновлении до
57
- * последней имеет смысл передать `^<version>`, чтобы новые версии продолжали приходить.
123
+ * Общий путь мутаций: проверка через resolve внутри simulate, и только
124
+ * если ошибки нет установка/переключение модулей и правка package.json
125
+ * (корня или родителя).
58
126
  */
59
- // eslint-disable-next-line class-methods-use-this
60
- this.setVersion = async (name, version, constraint) => {
61
- const versions = await git_1.git.listVersions(name);
62
- if (!versions.includes(version)) {
63
- throw new Error('REQUESTED_VERSION_NOT_EXISTS');
127
+ this.apply = async (baseJson, override, parent) => {
128
+ const dirChanged = await this.syncModulesDir(baseJson);
129
+ const rootDeps = (baseJson.sv || {});
130
+ let nextRootDeps = rootDeps;
131
+ const resolution = await this.store.simulate([override], rootDeps, deps => {
132
+ nextRootDeps = deps;
133
+ return this.resolveDeps(deps);
134
+ });
135
+ await this.syncModules(resolution);
136
+ if (parent) {
137
+ await updateModuleJson(parent, override);
138
+ if (dirChanged)
139
+ await pkgJSONManager_1.pkgJSONManager.write(baseJson);
64
140
  }
65
- const dir = path_1.default.join(runOptions_1.RunOptions.modulesDir, name);
66
- const dirty = await git_1.git.hasChanges(dir);
67
- /*
68
- * checkout с локальными изменениями транзакционен: git переносит их на
69
- * новую версию, а если перенести нельзя — отказывается, НЕ трогая дерево.
70
- * Значит при ошибке мы гарантированно остаёмся на исходной версии с теми
71
- * же изменениями — сообщаем, что перенос нужно сделать вручную.
72
- */
73
- try {
74
- await git_1.git.checkout(name, version);
141
+ else {
142
+ baseJson.sv = nextRootDeps;
143
+ await pkgJSONManager_1.pkgJSONManager.write(baseJson);
75
144
  }
76
- catch (e) {
77
- if (dirty) {
78
- throw new git_1.GitError('GIT_DIRTY_SWITCH_CONFLICT');
79
- }
80
- throw e;
145
+ this.resolution = resolution;
146
+ };
147
+ this.init = async () => {
148
+ const baseJson = await pkgJSONManager_1.pkgJSONManager.read();
149
+ if (!baseJson)
150
+ throw new errors_1.SVError('NOT_A_NPM');
151
+ if (!await git_1.git.local.isGitRepo(runOptions_1.RunOptions.cwd)) {
152
+ throw new errors_1.SVError('NOT_A_GIT_REPO');
81
153
  }
82
- const json = await pkgJSONManager_1.pkgJSONManager.read();
83
- if (!json?.sv)
84
- return;
85
- const key = Object.keys(json.sv).find(k => k.endsWith(`${name}.git`));
86
- const nextConstraint = constraint || version;
87
- if (key && json.sv[key] !== nextConstraint) {
88
- json.sv[key] = nextConstraint;
89
- await pkgJSONManager_1.pkgJSONManager.write(json);
154
+ const dirChanged = await this.syncModulesDir(baseJson);
155
+ if (ensureWorkspaces(baseJson) || dirChanged) {
156
+ await pkgJSONManager_1.pkgJSONManager.write(baseJson);
90
157
  }
158
+ const rootDeps = (baseJson.sv || {});
159
+ const resolution = await this.resolveDeps(rootDeps);
160
+ await this.syncModules(resolution);
161
+ this.resolution = resolution;
162
+ };
163
+ this.getResolution = () => {
164
+ if (!this.resolution)
165
+ throw new errors_1.SVError('NOT_INITIALIZED');
166
+ return this.resolution;
91
167
  };
92
168
  /*
93
- * Constraint корневого проекта на аддон (ключ в sv ищем по имени, как в remove).
169
+ * Установка/смена версии модуля. Первый аргумент url репозитория
170
+ * или имя уже установленного модуля. Без parentName — в корне проекта,
171
+ * без version — максимально возможная ('*'). Второй аргумент —
172
+ * версия, если это валидный semver-диапазон, иначе имя родителя.
94
173
  */
95
- // eslint-disable-next-line class-methods-use-this
96
- this.getConstraint = async (name) => {
97
- const json = await pkgJSONManager_1.pkgJSONManager.read();
98
- if (!json?.sv)
99
- return null;
100
- const key = Object.keys(json.sv).find(k => k.endsWith(`${name}.git`));
101
- return key ? json.sv[key] : null;
102
- };
103
- // eslint-disable-next-line class-methods-use-this
104
- this.setConstraint = async (name, constraint) => {
105
- const json = await pkgJSONManager_1.pkgJSONManager.read();
106
- if (!json?.sv)
107
- return;
108
- const key = Object.keys(json.sv).find(k => k.endsWith(`${name}.git`));
109
- if (key && json.sv[key] !== constraint) {
110
- json.sv[key] = constraint;
111
- await pkgJSONManager_1.pkgJSONManager.write(json);
174
+ this.put = async (url, versionOrParent, parentName) => {
175
+ const isVersion = !!versionOrParent
176
+ && versionUtil_1.versionUtil.validate(versionOrParent, true);
177
+ const range = (isVersion ? versionOrParent : undefined) || '*';
178
+ const parent = (isVersion ? parentName : versionOrParent) || undefined;
179
+ const baseJson = await pkgJSONManager_1.pkgJSONManager.read();
180
+ if (!baseJson)
181
+ throw new errors_1.SVError('NOT_A_NPM');
182
+ /*
183
+ * Вместо url можно передать имя уже установленного модуля —
184
+ * url берём из текущего резолва.
185
+ */
186
+ let moduleUrl = url;
187
+ if (!git_1.git.parseUrl(url).name) {
188
+ const existing = this.getResolution()[url];
189
+ if (!existing)
190
+ throw new errors_1.SVError('NOT_A_GIT_URL', { url });
191
+ moduleUrl = existing.url;
112
192
  }
193
+ if (parent && !this.getResolution()[parent]) {
194
+ throw new errors_1.SVError('ADDON_NOT_FOUND', { name: parent });
195
+ }
196
+ await this.apply(baseJson, { parent, add: moduleUrl, version: range }, parent);
113
197
  };
114
- // eslint-disable-next-line class-methods-use-this
115
- this.remove = async (submoduleName, parentModule) => {
116
- await git_1.git.rm(submoduleName);
117
- const json = await pkgJSONManager_1.pkgJSONManager.read(parentModule);
118
- if (!json.sv)
119
- return;
120
- json.sv = Object.keys(json.sv).reduce((acc, k) => {
121
- if (k.endsWith(`${submoduleName}.git`)) {
122
- return acc;
198
+ /* Удаление модуля из родителя (без parentName — из корня проекта). */
199
+ this.delete = async (name, parentName) => {
200
+ const baseJson = await pkgJSONManager_1.pkgJSONManager.read();
201
+ if (!baseJson)
202
+ throw new errors_1.SVError('NOT_A_NPM');
203
+ if (parentName) {
204
+ const parentEntry = this.getResolution()[parentName];
205
+ if (!parentEntry) {
206
+ throw new errors_1.SVError('ADDON_NOT_FOUND', { name: parentName });
123
207
  }
124
- return { ...acc, [k]: json.sv[k] };
125
- }, {});
126
- await pkgJSONManager_1.pkgJSONManager.write(json, parentModule);
127
- await (0, buildGraph_1.buildGraph)();
208
+ if (!(name in parentEntry.dependencies)) {
209
+ throw new errors_1.SVError('ADDON_NOT_FOUND', { name });
210
+ }
211
+ }
212
+ await this.apply(baseJson, { parent: parentName, delete: name }, parentName);
213
+ };
214
+ this.listVersions = (name) => {
215
+ const resolution = this.getResolution();
216
+ if (name) {
217
+ const entry = resolution[name];
218
+ if (!entry)
219
+ throw new errors_1.SVError('ADDON_NOT_FOUND', { name });
220
+ return versionUtil_1.versionUtil.sort(Object.keys(entry.versions));
221
+ }
222
+ return Object.fromEntries(Object.entries(resolution).map(([entryName, entry]) => [
223
+ entryName,
224
+ versionUtil_1.versionUtil.sort(Object.keys(entry.versions)),
225
+ ]));
128
226
  };
129
227
  // eslint-disable-next-line class-methods-use-this
130
228
  this.hasChanges = async (module) => {
131
229
  const dir = module
132
230
  ? path_1.default.join(runOptions_1.RunOptions.modulesDir, module)
133
231
  : runOptions_1.RunOptions.cwd;
134
- /* Сначала дешёвая проверка рабочей копии; если чисто — смотрим,
135
- * нет ли незапушенных коммитов (идёт fetch в remote) */
136
- if (await git_1.git.hasChanges(dir))
232
+ if (await git_1.git.local.hasChanges(dir))
137
233
  return true;
138
- return git_1.git.hasUnpushedCommits(dir);
234
+ return git_1.git.local.hasUnpushedCommits(dir);
139
235
  };
140
236
  // eslint-disable-next-line class-methods-use-this
141
237
  this.hasUncommittedChanges = async (module) => {
142
238
  const dir = module
143
239
  ? path_1.default.join(runOptions_1.RunOptions.modulesDir, module)
144
240
  : runOptions_1.RunOptions.cwd;
145
- return git_1.git.hasChanges(dir);
241
+ return git_1.git.local.hasChanges(dir);
146
242
  };
147
243
  // eslint-disable-next-line class-methods-use-this
148
244
  this.currentVersion = async (module) => {
149
245
  const dir = module
150
246
  ? path_1.default.join(runOptions_1.RunOptions.modulesDir, module)
151
247
  : runOptions_1.RunOptions.cwd;
152
- const tags = await git_1.git.tagsAtHead(dir);
248
+ const tags = await git_1.git.local.tagsAtHead(dir);
153
249
  return versionUtil_1.versionUtil.latest(tags) || null;
154
250
  };
155
251
  // eslint-disable-next-line class-methods-use-this
@@ -157,7 +253,7 @@ class SV {
157
253
  const dir = module
158
254
  ? path_1.default.join(runOptions_1.RunOptions.modulesDir, module)
159
255
  : runOptions_1.RunOptions.cwd;
160
- const versions = await git_1.git.listTags(dir);
256
+ const versions = await git_1.git.local.listTags(dir);
161
257
  return versionUtil_1.versionUtil.latest(versions) || '0.0.0';
162
258
  };
163
259
  // eslint-disable-next-line class-methods-use-this
@@ -165,40 +261,31 @@ class SV {
165
261
  const dir = module
166
262
  ? path_1.default.join(runOptions_1.RunOptions.modulesDir, module)
167
263
  : runOptions_1.RunOptions.cwd;
168
- return git_1.git.getRemote(dir);
264
+ return git_1.git.local.getRemote(dir);
169
265
  };
170
266
  this.isPublished = async (module) => {
171
267
  const dir = module
172
268
  ? path_1.default.join(runOptions_1.RunOptions.modulesDir, module)
173
269
  : runOptions_1.RunOptions.cwd;
174
- if (!await git_1.git.isGitRepo(dir))
270
+ if (!await git_1.git.local.isGitRepo(dir))
175
271
  return false;
176
272
  return !!(await this.getRemote(module));
177
273
  };
178
- /*
179
- * Remote-ветка впереди локальной (fetch + rev-list HEAD..@{u}).
180
- * Нет репозитория/remote/upstream — обновлений нет.
181
- */
182
274
  // eslint-disable-next-line class-methods-use-this
183
275
  this.isRemoteAhead = async (module) => {
184
276
  const dir = module
185
277
  ? path_1.default.join(runOptions_1.RunOptions.modulesDir, module)
186
278
  : runOptions_1.RunOptions.cwd;
187
- if (!await git_1.git.isGitRepo(dir))
279
+ if (!await git_1.git.local.isGitRepo(dir))
188
280
  return false;
189
- return git_1.git.isRemoteAhead(dir);
281
+ return git_1.git.local.isRemoteAhead(dir);
190
282
  };
191
- /*
192
- * Догоняем remote: pull --rebase --autostash. При конфликте всё
193
- * восстанавливается как было (rebase --abort + stash pop) и кидается
194
- * GIT_SYNC_CONFLICT — дальше возможен только ручной ребейз.
195
- */
196
283
  // eslint-disable-next-line class-methods-use-this
197
284
  this.pullRebaseAutostash = async (module) => {
198
285
  const dir = module
199
286
  ? path_1.default.join(runOptions_1.RunOptions.modulesDir, module)
200
287
  : runOptions_1.RunOptions.cwd;
201
- return git_1.git.pullRebaseAutostash(dir);
288
+ return git_1.git.local.pullRebaseAutostash(dir);
202
289
  };
203
290
  this.publish = async (opts) => {
204
291
  const { module, repoUrl, message, bump } = opts;
@@ -206,52 +293,44 @@ class SV {
206
293
  ? path_1.default.join(runOptions_1.RunOptions.modulesDir, module)
207
294
  : runOptions_1.RunOptions.cwd;
208
295
  if (!await this.isPublished(module)) {
209
- if (!repoUrl) {
296
+ if (!repoUrl)
210
297
  throw new git_1.GitError('GIT_REPO_URL_REQUIRED');
211
- }
212
- if (!await git_1.git.isGitRepo(dir)) {
213
- await git_1.git.init(dir);
214
- }
215
- await git_1.git.addRemote(dir, repoUrl);
298
+ if (!await git_1.git.local.isGitRepo(dir))
299
+ await git_1.git.local.init(dir);
300
+ await git_1.git.local.addRemote(dir, repoUrl);
216
301
  }
217
- /* Публикация не последней версии запрещена: HEAD на теге, отличном
218
- * от последнего, — обновлять такую базу можно только вручную */
219
302
  const currentTag = await this.currentVersion(module);
220
303
  const latestKnown = await this.latestVersion(module);
221
304
  if (currentTag && latestKnown && currentTag !== latestKnown) {
222
305
  throw new git_1.GitError('GIT_NOT_LATEST_VERSION');
223
306
  }
224
- /* Аддоны checkout'нуты на тег: поднимаем ветку до sync/commit,
225
- * иначе коммиты и push уйдут в detached HEAD */
226
- await git_1.git.ensureBranch(dir);
227
- if (await git_1.git.isRemoteAhead(dir)) {
228
- await git_1.git.pullRebaseAutostash(dir);
307
+ await git_1.git.local.ensureBranch(dir);
308
+ if (await git_1.git.local.isRemoteAhead(dir)) {
309
+ await git_1.git.local.pullRebaseAutostash(dir);
229
310
  }
230
- const dirty = await git_1.git.hasChanges(dir);
311
+ const dirty = await git_1.git.local.hasChanges(dir);
231
312
  const headTag = await this.currentVersion(module);
232
- /* Дерево чистое и HEAD уже отмечен версионным тегом:
233
- * коммитить и бампить нечего — просто доставляем ветку и тег на remote */
234
313
  if (!dirty && headTag) {
235
- await git_1.git.push(dir, headTag);
314
+ await git_1.git.local.push(dir, headTag);
236
315
  return headTag;
237
316
  }
238
317
  const next = versionUtil_1.versionUtil.bump(await this.latestVersion(module), bump);
239
- /* Фиксируем версию и в package.json, чтобы она не расходилась с git-тегом */
240
318
  const pkg = await pkgJSONManager_1.pkgJSONManager.read(module);
241
319
  if (pkg) {
242
320
  pkg.version = next;
243
321
  await pkgJSONManager_1.pkgJSONManager.write(pkg, module);
244
322
  }
245
- /* Перечитываем: запись версии в package.json сама по себе даёт изменения */
246
- if (await git_1.git.hasChanges(dir)) {
247
- await git_1.git.commitAll(dir, message || 'Update');
323
+ if (await git_1.git.local.hasChanges(dir)) {
324
+ await git_1.git.local.commitAll(dir, message || 'Update');
248
325
  }
249
- await git_1.git.addTag(dir, next);
250
- await git_1.git.push(dir, next);
326
+ await git_1.git.local.addTag(dir, next);
327
+ await git_1.git.local.push(dir, next);
251
328
  return next;
252
329
  };
253
330
  runOptions_1.RunOptions.cwd = projectDir;
254
- runOptions_1.RunOptions.modulesDir = modulesDir;
331
+ runOptions_1.RunOptions.modulesDir = modulesDir || DEFAULT_MODULES_DIR;
332
+ this.explicitModulesDir = modulesDir;
333
+ git_1.git.api.setToken(options.githubToken);
255
334
  }
256
335
  }
257
336
  exports.SV = SV;
@@ -1 +1 @@
1
- {"version":3,"file":"sv.js","sourceRoot":"","sources":["../../src/sv.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sv.js","sourceRoot":"","sources":["../../src/sv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { versionUtil } from './versionUtil';
2
+ export type { TVersionConstraint } from './versionUtil';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.versionUtil = void 0;
4
+ var versionUtil_1 = require("./versionUtil");
5
+ Object.defineProperty(exports, "versionUtil", { enumerable: true, get: function () { return versionUtil_1.versionUtil; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/versionUtil/index.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAAnC,0GAAA,WAAW,OAAA"}
@@ -0,0 +1,16 @@
1
+ export type TVersionConstraint = string;
2
+ export declare const versionUtil: {
3
+ normalizeConstraint: (constraint?: string) => string | null;
4
+ validate: (value: string, range?: boolean) => boolean;
5
+ compare: (a: string, b: string) => number;
6
+ satisfies: (version: string, constraint?: string) => boolean;
7
+ sort: (versions: string[]) => string[];
8
+ select: (versions: string[], constraints?: string[]) => string[];
9
+ latest: (versions: string[], constraints?: string[]) => string;
10
+ intersection: (...sets: string[][]) => string[];
11
+ union: (...sets: string[][]) => string[];
12
+ difference: (left: string[], right: string[]) => string[];
13
+ intersects: (left: string[], right: string[]) => boolean;
14
+ isSubset: (subset: string[], superset: string[]) => boolean;
15
+ bump: (version: string, kind: "release" | "minor" | "major") => string;
16
+ };
@@ -0,0 +1,70 @@
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.versionUtil = void 0;
7
+ const semver_1 = __importDefault(require("semver"));
8
+ const normalizeConstraint = (constraint = '*') => {
9
+ const value = constraint.trim();
10
+ if (!value)
11
+ return null;
12
+ return semver_1.default.validRange(value);
13
+ };
14
+ const validate = (value, range = false) => {
15
+ const input = value.trim();
16
+ if (!input)
17
+ return false;
18
+ if (range)
19
+ return normalizeConstraint(input) !== null;
20
+ return semver_1.default.valid(input) === input;
21
+ };
22
+ const compare = (a, b) => semver_1.default.compare(a, b);
23
+ const satisfies = (version, constraint = '*') => {
24
+ const range = normalizeConstraint(constraint);
25
+ return range !== null && semver_1.default.satisfies(version, range);
26
+ };
27
+ const sort = (versions) => ([...versions].filter(v => validate(v)).sort(semver_1.default.rcompare));
28
+ const select = (versions, constraints = ['*']) => sort(versions).filter(version => (constraints.every(constraint => satisfies(version, constraint))));
29
+ const latest = (versions, constraints = ['*']) => select(versions, constraints)[0] || '';
30
+ const intersection = (...sets) => {
31
+ if (!sets.length)
32
+ return [];
33
+ return sort(sets[0].filter(version => (sets.slice(1).every(set => set.includes(version)))));
34
+ };
35
+ const union = (...sets) => (sort([...new Set(sets.flat())]));
36
+ const difference = (left, right) => {
37
+ const excluded = new Set(right);
38
+ return sort(left.filter(version => !excluded.has(version)));
39
+ };
40
+ const intersects = (left, right) => {
41
+ const rightSet = new Set(right);
42
+ return left.some(version => rightSet.has(version));
43
+ };
44
+ const isSubset = (subset, superset) => {
45
+ const allowed = new Set(superset);
46
+ return subset.every(version => allowed.has(version));
47
+ };
48
+ const bump = (version, kind) => {
49
+ const release = kind === 'release' ? 'patch' : kind;
50
+ const next = semver_1.default.inc(version, release);
51
+ if (!next)
52
+ throw new Error(`Invalid semantic version: ${version}`);
53
+ return next;
54
+ };
55
+ exports.versionUtil = {
56
+ normalizeConstraint,
57
+ validate,
58
+ compare,
59
+ satisfies,
60
+ sort,
61
+ select,
62
+ latest,
63
+ intersection,
64
+ union,
65
+ difference,
66
+ intersects,
67
+ isSubset,
68
+ bump,
69
+ };
70
+ //# sourceMappingURL=versionUtil.js.map