submodule-version 3.1.0 → 3.2.1

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.
package/README.md CHANGED
@@ -82,8 +82,8 @@ Or use the [`publish`](#programmatic-api) API, which bumps the version, commits,
82
82
  ## Commands
83
83
 
84
84
  - `npx sv` - Resolve, validate and install/sync all modules (default command)
85
- - `npx sv put <url> [target] [--ver 1.2.0]` - Install a submodule or change its version (`install`, `i`). Without `target` the module is installed in the project root; `target` is a parent module name. Without `--ver` the highest possible version is selected (as if `'*'` was passed)
86
- - `npx sv delete <path>` - Delete a submodule from its parent (project root when the path is a plain name) by path (`remove`, `r`)
85
+ - `npx sv put <url> [target] [--ver 1.2.0] [--no-verify]` - Install a submodule or change its version (`install`, `i`). Without `target` the module is installed in the project root; `target` is a parent module name. Without `--ver` the highest possible version is selected (as if `'*'` was passed). `--no-verify` applies the Git/package.json/npm mutation without PubGrub compatibility checks
86
+ - `npx sv delete <path> [--no-verify]` - Delete a submodule from its parent (project root when the path is a plain name) by path (`remove`, `r`). `--no-verify` skips PubGrub compatibility checks
87
87
  - `npx sv list-versions [name] [--installed]` - List available versions of one module, or of every resolved module when `name` is omitted (`ls`). With `--installed` shows the versions actually checked out in the submodules
88
88
  - `npx sv update [path]` - Update modules to the latest allowed versions, all of them or a single one by path (`u`)
89
89
  - `npx sv publish [module] [--bump release|minor|major] [-m message] [--repo-url git_url]` - Commit, tag and push a new version of a module (or the project itself when `module` is omitted). `--repo-url` is required for the first publish of a module without a git remote (`p`)
@@ -111,17 +111,19 @@ The constructor accepts `(projectDir, modulesDir?, { githubToken? })`. The modul
111
111
 
112
112
  - `sv.init()` resolves `package.json#sv` with PubGrub and installs/syncs submodules to the resolved versions. It also adds the modules dir to `workspaces` in `package.json` when it is missing, and runs `npm install` when anything changed. All mutations (`put`, `delete`, updates) run `npm install` automatically after applying.
113
113
  - `sv.getResolution()` returns the selected version and selected-version dependencies for every resolved module.
114
+ - The working copy of an installed submodule is the source of truth for its checked-out version: dependencies edited locally but not yet published as a tag take part in the resolution immediately. The overlay applies only to the version tag `HEAD` points at, and only when that version exists on the remote — a `HEAD` without a version tag (mid-publish) or a local-only tag falls back to the remote manifest.
114
115
  - `new PubGrub(source).resolve(rootDeps)` runs the resolver with a custom entry source, which is useful for tests and non-GitHub registries.
115
116
 
116
117
  ### Installing, updating and deleting modules
117
118
 
118
- All mutations first run a check resolve and touch the working tree and `package.json` files only when the resolution succeeds.
119
+ By default, `put` and `delete` first run a check resolve and touch the working tree and `package.json` files only when the resolution succeeds. The explicit `dangerous*` variants skip that check.
119
120
 
120
121
  - `sv.put(url, version?, parentName?)` - Install a module or change its version. Instead of `url` you can pass the name of an already installed module. All argument forms are supported: `put(url)`, `put(url, version)`, `put(url, parentName)`, `put(url, version, parentName)`.
121
122
  - Without `parentName` the module is installed/updated in the project root and the range is written to the root `package.json#sv`.
122
123
  - With `parentName` the module is added to (or updated in) the parent module and the range is written to the parent's own `package.json#sv`, so the change survives publishing the parent.
123
124
  - Without `version` the highest possible version is selected, as if `'*'` was passed.
124
125
  - `sv.delete(name, parentName?)` - Delete a module from its parent (the project root when `parentName` is omitted); the dependency is removed from the corresponding `package.json#sv` and the submodule is uninstalled.
126
+ - `sv.dangerousPut(url, version?, parentName?)` and `sv.dangerousDelete(name, parentName?)` perform the same Git, `package.json` and `npm install` mutations without running PubGrub. `dangerousPut` keeps the submodule's current Git HEAD and records the requested range for a later verified resolve.
125
127
  - `sv.listVersions(name?)` - With `name` returns the available versions of one package (`string[]`); without it returns `{ [pkgName]: string[] }` for every resolved package.
126
128
 
127
129
  ### Simulating changes
@@ -19,7 +19,7 @@ const makeEvent = (event, { skipInit = false } = {}) => async (arg) => {
19
19
  const sv = new src_1.SV(process.cwd(), arg.modulesDir);
20
20
  try {
21
21
  /* publish умеет работать с ещё не git/npm-инициализированным проектом */
22
- if (!skipInit) {
22
+ if (!skipInit && arg.verify !== false) {
23
23
  await sv.init();
24
24
  }
25
25
  await event(sv, arg);
@@ -29,8 +29,9 @@ const makeEvent = (event, { skipInit = false } = {}) => async (arg) => {
29
29
  }
30
30
  };
31
31
  const put = makeEvent(async (sv, arg) => {
32
- const { url: gitUrl, target, ver } = arg;
33
- await sv.put(gitUrl, ver || target, ver ? target : undefined);
32
+ const { url: gitUrl, target, ver, verify } = arg;
33
+ const method = verify === false ? sv.dangerousPut : sv.put;
34
+ await method(gitUrl, ver || target, ver ? target : undefined);
34
35
  });
35
36
  const update = makeEvent(async (sv, arg) => {
36
37
  const { path: modulePath } = arg;
@@ -46,9 +47,10 @@ const update = makeEvent(async (sv, arg) => {
46
47
  await sv.put(entry.url, '*', parent);
47
48
  });
48
49
  const del = makeEvent(async (sv, arg) => {
49
- const { path: modulePath } = arg;
50
+ const { path: modulePath, verify } = arg;
50
51
  const { name, parent } = splitPath(modulePath);
51
- await sv.delete(name, parent);
52
+ const method = verify === false ? sv.dangerousDelete : sv.delete;
53
+ await method(name, parent);
52
54
  });
53
55
  const listVersions = makeEvent(async (sv, arg) => {
54
56
  const { name, installed } = arg;
@@ -105,10 +107,18 @@ exports.s = yargs_1.default.scriptName('sv')
105
107
  type: 'string',
106
108
  alias: 'v',
107
109
  describe: 'Version to install',
110
+ }).option('verify', {
111
+ type: 'boolean',
112
+ default: true,
113
+ describe: 'Verify dependency versions (disable with --no-verify)',
108
114
  }), put)
109
115
  .command(['delete <path>', 'remove', 'r'], 'Delete submodule by path', y => y.positional('path', {
110
116
  type: 'string',
111
117
  describe: 'Submodule path (A.B.C)',
118
+ }).option('verify', {
119
+ type: 'boolean',
120
+ default: true,
121
+ describe: 'Verify dependency versions (disable with --no-verify)',
112
122
  }), del)
113
123
  .command(['list-versions [name]', 'ls'], 'List available versions of all modules or one', y => y.positional('name', {
114
124
  type: 'string',
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../runner/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../runner/runner.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export declare class EntryStore implements IEntrySource {
5
5
  private overrides;
6
6
  private rememberUrl;
7
7
  private normalizeDependencies;
8
+ private localOverlay;
8
9
  private load;
9
10
  private resolveIdentity;
10
11
  private applyOverrides;
@@ -1,8 +1,15 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.entryStore = exports.EntryStore = void 0;
7
+ const path_1 = __importDefault(require("path"));
4
8
  const errors_1 = require("./errors");
5
9
  const git_1 = require("./git");
10
+ const pkgJSONManager_1 = require("./pkgJSONManager");
11
+ const runOptions_1 = require("./runOptions");
12
+ const versionUtil_1 = require("./versionUtil");
6
13
  /*
7
14
  * Оверрайды без parent применяются к корню: add добавляет/меняет
8
15
  * диапазон по url, delete убирает зависимость по имени модуля.
@@ -52,12 +59,34 @@ class EntryStore {
52
59
  this.rememberUrl(name, depUrl);
53
60
  return [name, constraint];
54
61
  }));
62
+ /*
63
+ * Рабочая копия сабмодуля — источник правды для checkout'нутой версии:
64
+ * зависимости, изменённые локально и ещё не опубликованные тегом,
65
+ * видны резолверу сразу. Применяется только к версии на HEAD (по тегам)
66
+ * и только если такая версия есть в remote-наборе: HEAD без тега
67
+ * (середина publish) или локальный тег вне remote — оверлей пропускается.
68
+ */
69
+ this.localOverlay = async (name, versions) => {
70
+ if (!runOptions_1.RunOptions.cwd || !runOptions_1.RunOptions.modulesDir)
71
+ return;
72
+ const dir = path_1.default.join(runOptions_1.RunOptions.cwd, runOptions_1.RunOptions.modulesDir, name);
73
+ if (!await git_1.git.local.isGitRepo(dir))
74
+ return;
75
+ const version = versionUtil_1.versionUtil.latest(await git_1.git.local.tagsAtHead(dir));
76
+ if (!version || !versions[version])
77
+ return;
78
+ const pkg = await pkgJSONManager_1.pkgJSONManager.read(name);
79
+ if (!pkg)
80
+ return;
81
+ versions[version] = this.normalizeDependencies(pkg.sv || {});
82
+ };
55
83
  this.load = async (url, name) => {
56
84
  const fetched = await git_1.git.api.fetchVersions(url);
57
85
  const versions = {};
58
86
  fetched.forEach(({ version, pkg }) => {
59
87
  versions[version] = this.normalizeDependencies(pkg?.sv || {});
60
88
  });
89
+ await this.localOverlay(name, versions);
61
90
  return { name, url, versions };
62
91
  };
63
92
  this.resolveIdentity = (depPath) => {
@@ -1 +1 @@
1
- {"version":3,"file":"entryStore.js","sourceRoot":"","sources":["../../src/entryStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entryStore.js","sourceRoot":"","sources":["../../src/entryStore.ts"],"names":[],"mappings":"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"}
package/dist/src/sv.d.ts CHANGED
@@ -9,11 +9,15 @@ export declare class SV {
9
9
  private syncModulesDir;
10
10
  private resolveDeps;
11
11
  private syncModules;
12
- private apply;
12
+ private verify;
13
+ private findModuleUrl;
14
+ private prepareBaseJson;
13
15
  init: () => Promise<void>;
14
16
  getResolution: () => TPubGrubResult;
15
17
  put: (url: string, versionOrParent?: string, parentName?: string) => Promise<void>;
18
+ dangerousPut: (url: string, versionOrParent?: string, parentName?: string) => Promise<void>;
16
19
  delete: (name: string, parentName?: string) => Promise<void>;
20
+ dangerousDelete: (name: string, parentName?: string) => Promise<void>;
17
21
  listVersions: (name?: string) => Record<string, string[]> | string[];
18
22
  hasChanges: (module?: string) => Promise<boolean>;
19
23
  hasUncommittedChanges: (module?: string) => Promise<boolean>;
package/dist/src/sv.js CHANGED
@@ -19,11 +19,8 @@ const errors_1 = require("./errors");
19
19
  * мутации обязаны пережить публикацию родителя, поэтому диапазон
20
20
  * пишется в его поле sv.
21
21
  */
22
- const updateModuleJson = async (parent, override) => {
23
- const parentJson = await pkgJSONManager_1.pkgJSONManager.read(parent);
24
- if (!parentJson)
25
- throw new errors_1.SVError('ADDON_NOT_FOUND', { name: parent });
26
- const sv = { ...(parentJson.sv || {}) };
22
+ const applyOverride = (json, override) => {
23
+ const sv = { ...(json.sv || {}) };
27
24
  if (override.add)
28
25
  sv[override.add] = override.version || '*';
29
26
  if (override.delete) {
@@ -33,8 +30,7 @@ const updateModuleJson = async (parent, override) => {
33
30
  throw new errors_1.SVError('ADDON_NOT_FOUND', { name: override.delete });
34
31
  delete sv[key];
35
32
  }
36
- parentJson.sv = sv;
37
- await pkgJSONManager_1.pkgJSONManager.write(parentJson, parent);
33
+ return { ...json, sv };
38
34
  };
39
35
  /*
40
36
  * modulesDir должен быть npm-workspace, иначе сабмодули не попадут
@@ -61,6 +57,14 @@ const ensureWorkspaces = (baseJson) => {
61
57
  };
62
58
  const MODULES_DIR_FIELD = 'sv-dir';
63
59
  const DEFAULT_MODULES_DIR = 'modules';
60
+ const parsePutArgs = (versionOrParent, parentName) => {
61
+ const isVersion = !!versionOrParent
62
+ && versionUtil_1.versionUtil.validate(versionOrParent, true);
63
+ return {
64
+ range: (isVersion ? versionOrParent : undefined) || '*',
65
+ parent: (isVersion ? parentName : versionOrParent) || undefined,
66
+ };
67
+ };
64
68
  /*
65
69
  * Уже добавленные сабмодули — источник правды о директории:
66
70
  * .gitmodules с единым родителем у всех path (addons/X, addons/Y → addons).
@@ -127,35 +131,30 @@ class SV {
127
131
  await Promise.all(removed.map(name => git_1.git.local.rm(name)));
128
132
  return changed;
129
133
  };
130
- /*
131
- * Общий путь мутаций: проверка через resolve внутри simulate, и только
132
- * если ошибки нет — установка/переключение модулей и правка package.json
133
- * (корня или родителя).
134
- */
135
- this.apply = async (baseJson, override, parent) => {
136
- const dirChanged = await this.syncModulesDir(baseJson);
134
+ this.verify = async (baseJson, override) => {
137
135
  const rootDeps = (baseJson.sv || {});
138
- let nextRootDeps = rootDeps;
139
- const resolution = await this.store.simulate([override], rootDeps, deps => {
140
- nextRootDeps = deps;
141
- return this.resolveDeps(deps);
142
- });
143
- await this.syncModules(resolution);
144
- if (parent) {
145
- await updateModuleJson(parent, override);
146
- if (dirChanged)
147
- await pkgJSONManager_1.pkgJSONManager.write(baseJson);
148
- }
149
- else {
150
- baseJson.sv = nextRootDeps;
151
- await pkgJSONManager_1.pkgJSONManager.write(baseJson);
152
- }
153
- /*
154
- * package.json уже записан npm подтянет workspaces и зависимости
155
- * нового набора модулей.
156
- */
157
- await npm_1.npm.install();
158
- this.resolution = resolution;
136
+ return this.store.simulate([override], rootDeps, deps => this.resolveDeps(deps));
137
+ };
138
+ this.findModuleUrl = async (urlOrName, parent) => {
139
+ if (git_1.git.parseUrl(urlOrName).name)
140
+ return urlOrName;
141
+ const resolved = this.resolution?.[urlOrName];
142
+ if (resolved)
143
+ return resolved.url;
144
+ const targetJson = await pkgJSONManager_1.pkgJSONManager.read(parent);
145
+ const existing = Object.keys((targetJson?.sv || {}))
146
+ .find(depUrl => git_1.git.parseUrl(depUrl).name === urlOrName);
147
+ if (existing)
148
+ return existing;
149
+ const remote = await git_1.git.local.getRemote(path_1.default.join(runOptions_1.RunOptions.modulesDir, urlOrName));
150
+ if (remote && git_1.git.parseUrl(remote).name)
151
+ return remote;
152
+ throw new errors_1.SVError('NOT_A_GIT_URL', { url: urlOrName });
153
+ };
154
+ this.prepareBaseJson = async (baseJson) => {
155
+ const dirChanged = await this.syncModulesDir(baseJson);
156
+ const workspaceChanged = ensureWorkspaces(baseJson);
157
+ return dirChanged || workspaceChanged;
159
158
  };
160
159
  this.init = async () => {
161
160
  const baseJson = await pkgJSONManager_1.pkgJSONManager.read();
@@ -193,34 +192,68 @@ class SV {
193
192
  * версия, если это валидный semver-диапазон, иначе имя родителя.
194
193
  */
195
194
  this.put = async (url, versionOrParent, parentName) => {
196
- const isVersion = !!versionOrParent
197
- && versionUtil_1.versionUtil.validate(versionOrParent, true);
198
- const range = (isVersion ? versionOrParent : undefined) || '*';
199
- const parent = (isVersion ? parentName : versionOrParent) || undefined;
195
+ const { range, parent } = parsePutArgs(versionOrParent, parentName);
200
196
  const baseJson = await pkgJSONManager_1.pkgJSONManager.read();
201
197
  if (!baseJson)
202
198
  throw new errors_1.SVError('NOT_A_NPM');
199
+ await this.syncModulesDir(baseJson);
203
200
  /*
204
201
  * Вместо url можно передать имя уже установленного модуля —
205
202
  * url берём из текущего резолва.
206
203
  */
207
- let moduleUrl = url;
208
- if (!git_1.git.parseUrl(url).name) {
209
- const existing = this.getResolution()[url];
210
- if (!existing)
211
- throw new errors_1.SVError('NOT_A_GIT_URL', { url });
212
- moduleUrl = existing.url;
213
- }
204
+ const moduleUrl = await this.findModuleUrl(url, parent);
214
205
  if (parent && !this.getResolution()[parent]) {
215
206
  throw new errors_1.SVError('ADDON_NOT_FOUND', { name: parent });
216
207
  }
217
- await this.apply(baseJson, { parent, add: moduleUrl, version: range }, parent);
208
+ const resolution = await this.verify(baseJson, {
209
+ parent,
210
+ add: moduleUrl,
211
+ version: range,
212
+ });
213
+ await this.syncModules(resolution);
214
+ await this.dangerousPut(moduleUrl, range, parent);
215
+ this.resolution = resolution;
216
+ };
217
+ /*
218
+ * Принудительная установка без PubGrub: добавляет отсутствующий git
219
+ * submodule, записывает constraint и запускает npm install. Версию HEAD
220
+ * не переключает — диапазон лишь фиксируется для следующего safe resolve.
221
+ */
222
+ this.dangerousPut = async (url, versionOrParent, parentName) => {
223
+ const { range, parent } = parsePutArgs(versionOrParent, parentName);
224
+ const baseJson = await pkgJSONManager_1.pkgJSONManager.read();
225
+ if (!baseJson)
226
+ throw new errors_1.SVError('NOT_A_NPM');
227
+ const baseChanged = await this.prepareBaseJson(baseJson);
228
+ const moduleUrl = await this.findModuleUrl(url, parent);
229
+ const { name } = git_1.git.parseUrl(moduleUrl);
230
+ const targetJson = parent
231
+ ? await pkgJSONManager_1.pkgJSONManager.read(parent)
232
+ : baseJson;
233
+ if (!targetJson)
234
+ throw new errors_1.SVError('ADDON_NOT_FOUND', { name: parent });
235
+ /* Проверяем запись до git-мутации, чтобы не оставить лишний submodule. */
236
+ const nextTargetJson = applyOverride(targetJson, { parent, add: moduleUrl, version: range });
237
+ if (!await git_1.git.local.isGitRepo(path_1.default.join(runOptions_1.RunOptions.modulesDir, name))) {
238
+ await git_1.git.local.addSubmodule(moduleUrl);
239
+ }
240
+ if (parent) {
241
+ await pkgJSONManager_1.pkgJSONManager.write(nextTargetJson, parent);
242
+ }
243
+ else {
244
+ await pkgJSONManager_1.pkgJSONManager.write(nextTargetJson);
245
+ }
246
+ if (parent && baseChanged)
247
+ await pkgJSONManager_1.pkgJSONManager.write(baseJson);
248
+ this.resolution = null;
249
+ await npm_1.npm.install();
218
250
  };
219
251
  /* Удаление модуля из родителя (без parentName — из корня проекта). */
220
252
  this.delete = async (name, parentName) => {
221
253
  const baseJson = await pkgJSONManager_1.pkgJSONManager.read();
222
254
  if (!baseJson)
223
255
  throw new errors_1.SVError('NOT_A_NPM');
256
+ await this.syncModulesDir(baseJson);
224
257
  if (parentName) {
225
258
  const parentEntry = this.getResolution()[parentName];
226
259
  if (!parentEntry) {
@@ -230,7 +263,40 @@ class SV {
230
263
  throw new errors_1.SVError('ADDON_NOT_FOUND', { name });
231
264
  }
232
265
  }
233
- await this.apply(baseJson, { parent: parentName, delete: name }, parentName);
266
+ const override = { parent: parentName, delete: name };
267
+ const resolution = await this.verify(baseJson, override);
268
+ await this.syncModules(resolution);
269
+ await this.dangerousDelete(name, parentName);
270
+ this.resolution = resolution;
271
+ };
272
+ /* Принудительное удаление без запуска PubGrub. */
273
+ this.dangerousDelete = async (name, parentName) => {
274
+ const baseJson = await pkgJSONManager_1.pkgJSONManager.read();
275
+ if (!baseJson)
276
+ throw new errors_1.SVError('NOT_A_NPM');
277
+ const baseChanged = await this.prepareBaseJson(baseJson);
278
+ const targetJson = parentName
279
+ ? await pkgJSONManager_1.pkgJSONManager.read(parentName)
280
+ : baseJson;
281
+ if (!targetJson) {
282
+ throw new errors_1.SVError('ADDON_NOT_FOUND', { name: parentName });
283
+ }
284
+ const override = { parent: parentName, delete: name };
285
+ /* Проверяем запись до git-мутации, чтобы неизвестное имя было no-op. */
286
+ const nextTargetJson = applyOverride(targetJson, override);
287
+ const dir = path_1.default.join(runOptions_1.RunOptions.modulesDir, name);
288
+ if (await git_1.git.local.isGitRepo(dir))
289
+ await git_1.git.local.rm(name);
290
+ if (parentName) {
291
+ await pkgJSONManager_1.pkgJSONManager.write(nextTargetJson, parentName);
292
+ }
293
+ else {
294
+ await pkgJSONManager_1.pkgJSONManager.write(nextTargetJson);
295
+ }
296
+ if (parentName && baseChanged)
297
+ await pkgJSONManager_1.pkgJSONManager.write(baseJson);
298
+ this.resolution = null;
299
+ await npm_1.npm.install();
234
300
  };
235
301
  this.listVersions = (name) => {
236
302
  const resolution = this.getResolution();
@@ -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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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "submodule-version",
3
3
  "description": "Git <S>ubmodule <V>ersioning tool",
4
- "version": "3.1.0",
4
+ "version": "3.2.1",
5
5
  "repository": "github:guljeny/submodule-version",
6
6
  "main": "dist/src/index.js",
7
7
  "bin": {
package/runner/runner.ts CHANGED
@@ -20,7 +20,7 @@ const makeEvent = (
20
20
 
21
21
  try {
22
22
  /* publish умеет работать с ещё не git/npm-инициализированным проектом */
23
- if (!skipInit) {
23
+ if (!skipInit && arg.verify !== false) {
24
24
  await sv.init();
25
25
  }
26
26
 
@@ -31,13 +31,16 @@ const makeEvent = (
31
31
  };
32
32
 
33
33
  const put = makeEvent(async (sv, arg) => {
34
- const { url: gitUrl, target, ver } = arg as {
34
+ const { url: gitUrl, target, ver, verify } = arg as {
35
35
  url: string,
36
36
  target?: string,
37
37
  ver?: string,
38
+ verify?: boolean,
38
39
  };
39
40
 
40
- await sv.put(gitUrl, ver || target, ver ? target : undefined);
41
+ const method = verify === false ? sv.dangerousPut : sv.put;
42
+
43
+ await method(gitUrl, ver || target, ver ? target : undefined);
41
44
  });
42
45
 
43
46
  const update = makeEvent(async (sv, arg) => {
@@ -59,10 +62,15 @@ const update = makeEvent(async (sv, arg) => {
59
62
  });
60
63
 
61
64
  const del = makeEvent(async (sv, arg) => {
62
- const { path: modulePath } = arg as {path: string};
65
+ const { path: modulePath, verify } = arg as {
66
+ path: string,
67
+ verify?: boolean,
68
+ };
63
69
  const { name, parent } = splitPath(modulePath);
64
70
 
65
- await sv.delete(name, parent);
71
+ const method = verify === false ? sv.dangerousDelete : sv.delete;
72
+
73
+ await method(name, parent);
66
74
  });
67
75
 
68
76
  const listVersions = makeEvent(async (sv, arg) => {
@@ -162,6 +170,10 @@ export const s = yargs.scriptName('sv')
162
170
  type: 'string',
163
171
  alias: 'v',
164
172
  describe: 'Version to install',
173
+ }).option('verify', {
174
+ type: 'boolean',
175
+ default: true,
176
+ describe: 'Verify dependency versions (disable with --no-verify)',
165
177
  }),
166
178
  put,
167
179
  )
@@ -171,6 +183,10 @@ export const s = yargs.scriptName('sv')
171
183
  y => y.positional('path', {
172
184
  type: 'string',
173
185
  describe: 'Submodule path (A.B.C)',
186
+ }).option('verify', {
187
+ type: 'boolean',
188
+ default: true,
189
+ describe: 'Verify dependency versions (disable with --no-verify)',
174
190
  }),
175
191
  del,
176
192
  )
@@ -1,5 +1,7 @@
1
1
  import { entryStore } from '../entryStore';
2
2
  import { git } from '../git';
3
+ import { pkgJSONManager } from '../pkgJSONManager';
4
+ import { RunOptions } from '../runOptions';
3
5
 
4
6
  jest.mock('../git', () => {
5
7
  const actual = jest.requireActual('../git');
@@ -9,11 +11,21 @@ jest.mock('../git', () => {
9
11
  git: {
10
12
  ...actual.git,
11
13
  api: { fetchVersions: jest.fn() },
14
+ local: {
15
+ ...actual.git.local,
16
+ isGitRepo: jest.fn(),
17
+ tagsAtHead: jest.fn(),
18
+ },
12
19
  },
13
20
  };
14
21
  });
15
22
 
23
+ jest.mock('../pkgJSONManager');
24
+
16
25
  const fetchVersionsMock = git.api.fetchVersions as jest.Mock;
26
+ const isGitRepoMock = git.local.isGitRepo as jest.Mock;
27
+ const tagsAtHeadMock = git.local.tagsAtHead as jest.Mock;
28
+ const readPkgMock = pkgJSONManager.read as jest.Mock;
17
29
  const url = (name: string) => `git@git:repo/${name}.git`;
18
30
 
19
31
  beforeEach(() => {
@@ -246,3 +258,83 @@ describe('entryStore.simulate', () => {
246
258
  expect(cb).not.toHaveBeenCalled();
247
259
  });
248
260
  });
261
+
262
+ describe('entryStore local overlay', () => {
263
+ beforeEach(() => {
264
+ RunOptions.cwd = '/project';
265
+ RunOptions.modulesDir = 'addons';
266
+ });
267
+
268
+ afterEach(() => {
269
+ RunOptions.cwd = '';
270
+ RunOptions.modulesDir = '';
271
+ });
272
+
273
+ it('overlays the local manifest on the checked-out version', async () => {
274
+ fetchVersionsMock.mockResolvedValueOnce([
275
+ { version: '1.0.0', pkg: { sv: { [url('C')]: '^1.0.0' } } },
276
+ { version: '2.0.0', pkg: { sv: { [url('C')]: '^2.0.0' } } },
277
+ ]);
278
+ isGitRepoMock.mockResolvedValueOnce(true);
279
+ tagsAtHeadMock.mockResolvedValueOnce(['1.0.0']);
280
+ readPkgMock.mockResolvedValueOnce({ sv: { [url('B')]: '^0.2.0' } });
281
+
282
+ const entry = await entryStore.fetch(url('A'));
283
+
284
+ expect(entry.versions['1.0.0']).toEqual({ B: '^0.2.0' });
285
+ expect(entry.versions['2.0.0']).toEqual({ C: '^2.0.0' });
286
+ expect(entryStore.urlOf('B')).toBe(url('B'));
287
+ });
288
+
289
+ it('keeps the remote manifest when HEAD has no version tag', async () => {
290
+ fetchVersionsMock.mockResolvedValueOnce([
291
+ { version: '1.0.0', pkg: { sv: { [url('C')]: '^1.0.0' } } },
292
+ ]);
293
+ isGitRepoMock.mockResolvedValueOnce(true);
294
+ tagsAtHeadMock.mockResolvedValueOnce([]);
295
+
296
+ const entry = await entryStore.fetch(url('A'));
297
+
298
+ expect(entry.versions['1.0.0']).toEqual({ C: '^1.0.0' });
299
+ expect(readPkgMock).not.toHaveBeenCalled();
300
+ });
301
+
302
+ it('keeps the remote manifest when the module is not installed', async () => {
303
+ fetchVersionsMock.mockResolvedValueOnce([
304
+ { version: '1.0.0', pkg: { sv: { [url('C')]: '^1.0.0' } } },
305
+ ]);
306
+ isGitRepoMock.mockResolvedValueOnce(false);
307
+
308
+ const entry = await entryStore.fetch(url('A'));
309
+
310
+ expect(entry.versions['1.0.0']).toEqual({ C: '^1.0.0' });
311
+ expect(tagsAtHeadMock).not.toHaveBeenCalled();
312
+ });
313
+
314
+ it('skips the overlay when the local tag is not on remote', async () => {
315
+ fetchVersionsMock.mockResolvedValueOnce([
316
+ { version: '1.0.0', pkg: { sv: { [url('C')]: '^1.0.0' } } },
317
+ ]);
318
+ isGitRepoMock.mockResolvedValueOnce(true);
319
+ tagsAtHeadMock.mockResolvedValueOnce(['9.9.9']);
320
+
321
+ const entry = await entryStore.fetch(url('A'));
322
+
323
+ expect(entry.versions['1.0.0']).toEqual({ C: '^1.0.0' });
324
+ expect(entry.versions['9.9.9']).toBeUndefined();
325
+ expect(readPkgMock).not.toHaveBeenCalled();
326
+ });
327
+
328
+ it('keeps the remote manifest without a local package.json', async () => {
329
+ fetchVersionsMock.mockResolvedValueOnce([
330
+ { version: '1.0.0', pkg: { sv: { [url('C')]: '^1.0.0' } } },
331
+ ]);
332
+ isGitRepoMock.mockResolvedValueOnce(true);
333
+ tagsAtHeadMock.mockResolvedValueOnce(['1.0.0']);
334
+ readPkgMock.mockResolvedValueOnce(null);
335
+
336
+ const entry = await entryStore.fetch(url('A'));
337
+
338
+ expect(entry.versions['1.0.0']).toEqual({ C: '^1.0.0' });
339
+ });
340
+ });
@@ -26,6 +26,7 @@ jest.mock('../git', () => {
26
26
  checkout: jest.fn(async () => undefined),
27
27
  rm: jest.fn(async () => undefined),
28
28
  currentVersion: jest.fn(async () => null),
29
+ getRemote: jest.fn(async () => null),
29
30
  },
30
31
  api: {
31
32
  setToken: jest.fn(),
@@ -262,6 +263,7 @@ describe('SV.put', () => {
262
263
  expect(resolveMock).toHaveBeenCalledWith({ [url('B')]: '^1.2.0' });
263
264
  expect(writeMock).toHaveBeenCalledWith({
264
265
  sv: { [url('B')]: '^1.2.0' },
266
+ workspaces: ['modules/*'],
265
267
  'sv-dir': 'modules',
266
268
  });
267
269
  expect(localMock.addSubmodule).toHaveBeenCalledWith(url('B'));
@@ -280,6 +282,7 @@ describe('SV.put', () => {
280
282
  expect(resolveMock).toHaveBeenCalledWith({ [url('B')]: '*' });
281
283
  expect(writeMock).toHaveBeenCalledWith({
282
284
  sv: { [url('B')]: '*' },
285
+ workspaces: ['modules/*'],
283
286
  'sv-dir': 'modules',
284
287
  });
285
288
  });
@@ -387,6 +390,72 @@ describe('SV.put', () => {
387
390
 
388
391
  await expect(sv.put(url('B'))).rejects.toThrow('npm failed');
389
392
  });
393
+
394
+ it('delegates the verified mutation to dangerousPut', async () => {
395
+ readMock.mockResolvedValue({ sv: {} });
396
+ resolveMock.mockResolvedValue({});
397
+ const sv = new SV('/project');
398
+
399
+ const dangerousPut = jest.spyOn(sv, 'dangerousPut')
400
+ .mockResolvedValue(undefined);
401
+
402
+ await sv.put(url('B'), '^1.0.0');
403
+
404
+ expect(dangerousPut).toHaveBeenCalledWith(
405
+ url('B'),
406
+ '^1.0.0',
407
+ undefined,
408
+ );
409
+ });
410
+ });
411
+
412
+ describe('SV.dangerousPut', () => {
413
+ it('adds and records a module without calling PubGrub', async () => {
414
+ readMock.mockResolvedValue({ sv: {} });
415
+ localMock.isGitRepo.mockResolvedValue(false);
416
+ resolveMock.mockRejectedValue(new Error('version conflict'));
417
+ const sv = new SV('/project');
418
+
419
+ await sv.dangerousPut(url('B'), '^2.0.0');
420
+
421
+ expect(resolveMock).not.toHaveBeenCalled();
422
+ expect(localMock.addSubmodule).toHaveBeenCalledWith(url('B'));
423
+ expect(localMock.checkout).not.toHaveBeenCalled();
424
+ expect(writeMock).toHaveBeenCalledWith({
425
+ sv: { [url('B')]: '^2.0.0' },
426
+ workspaces: ['modules/*'],
427
+ 'sv-dir': 'modules',
428
+ });
429
+ expect(npmInstallMock).toHaveBeenCalledTimes(1);
430
+ });
431
+
432
+ it('resolves an installed module name from package.json without init',
433
+ async () => {
434
+ readMock.mockResolvedValue({ sv: { [url('B')]: '^1.0.0' } });
435
+ const sv = new SV('/project');
436
+
437
+ await sv.dangerousPut('B', '^2.0.0');
438
+
439
+ expect(writeMock).toHaveBeenCalledWith({
440
+ sv: { [url('B')]: '^2.0.0' },
441
+ workspaces: ['modules/*'],
442
+ 'sv-dir': 'modules',
443
+ });
444
+ expect(resolveMock).not.toHaveBeenCalled();
445
+ });
446
+
447
+ it('uses the recorded modules dir before touching git', async () => {
448
+ readMock.mockResolvedValue({
449
+ sv: {},
450
+ workspaces: ['addons/*'],
451
+ 'sv-dir': 'addons',
452
+ });
453
+ const sv = new SV('/project');
454
+
455
+ await sv.dangerousPut(url('B'));
456
+
457
+ expect(localMock.isGitRepo).toHaveBeenCalledWith('addons/B');
458
+ });
390
459
  });
391
460
 
392
461
  describe('SV.delete', () => {
@@ -463,6 +532,51 @@ describe('SV.delete', () => {
463
532
  /* resolve не вызывался повторно — только внутри init */
464
533
  expect(resolveMock).toHaveBeenCalledTimes(1);
465
534
  });
535
+
536
+ it('delegates the verified mutation to dangerousDelete', async () => {
537
+ readMock.mockResolvedValue({ sv: { [url('A')]: '*' } });
538
+ resolveMock.mockResolvedValue({});
539
+ const sv = new SV('/project');
540
+
541
+ const dangerousDelete = jest.spyOn(sv, 'dangerousDelete')
542
+ .mockResolvedValue(undefined);
543
+
544
+ await sv.delete('A');
545
+
546
+ expect(dangerousDelete).toHaveBeenCalledWith('A', undefined);
547
+ });
548
+ });
549
+
550
+ describe('SV.dangerousDelete', () => {
551
+ it('removes and records a module without calling PubGrub', async () => {
552
+ readMock.mockResolvedValue({ sv: { [url('A')]: '*' } });
553
+ resolveMock.mockRejectedValue(new Error('version conflict'));
554
+ const sv = new SV('/project');
555
+
556
+ await sv.dangerousDelete('A');
557
+
558
+ expect(resolveMock).not.toHaveBeenCalled();
559
+ expect(localMock.rm).toHaveBeenCalledWith('A');
560
+ expect(writeMock).toHaveBeenCalledWith({
561
+ sv: {},
562
+ workspaces: ['modules/*'],
563
+ 'sv-dir': 'modules',
564
+ });
565
+ expect(npmInstallMock).toHaveBeenCalledTimes(1);
566
+ });
567
+
568
+ it('does not touch git when the dependency is missing', async () => {
569
+ readMock.mockResolvedValue({ sv: {} });
570
+ const sv = new SV('/project');
571
+
572
+ await expect(sv.dangerousDelete('Ghost')).rejects.toMatchObject({
573
+ error: 'ADDON_NOT_FOUND',
574
+ details: { name: 'Ghost' },
575
+ });
576
+ expect(localMock.rm).not.toHaveBeenCalled();
577
+ expect(writeMock).not.toHaveBeenCalled();
578
+ expect(npmInstallMock).not.toHaveBeenCalled();
579
+ });
466
580
  });
467
581
 
468
582
  describe('SV.listVersions', () => {
package/src/entryStore.ts CHANGED
@@ -1,5 +1,9 @@
1
+ import path from 'path';
1
2
  import { SVError } from './errors';
2
3
  import { git } from './git';
4
+ import { pkgJSONManager } from './pkgJSONManager';
5
+ import { RunOptions } from './runOptions';
6
+ import { versionUtil } from './versionUtil';
3
7
  import type {
4
8
  IEntrySource,
5
9
  IOverride,
@@ -80,6 +84,34 @@ export class EntryStore implements IEntrySource {
80
84
  }),
81
85
  );
82
86
 
87
+ /*
88
+ * Рабочая копия сабмодуля — источник правды для checkout'нутой версии:
89
+ * зависимости, изменённые локально и ещё не опубликованные тегом,
90
+ * видны резолверу сразу. Применяется только к версии на HEAD (по тегам)
91
+ * и только если такая версия есть в remote-наборе: HEAD без тега
92
+ * (середина publish) или локальный тег вне remote — оверлей пропускается.
93
+ */
94
+ private localOverlay = async (
95
+ name: string,
96
+ versions: Record<string, TDependencies>,
97
+ ): Promise<void> => {
98
+ if (!RunOptions.cwd || !RunOptions.modulesDir) return;
99
+
100
+ const dir = path.join(RunOptions.cwd, RunOptions.modulesDir, name);
101
+
102
+ if (!await git.local.isGitRepo(dir)) return;
103
+
104
+ const version = versionUtil.latest(await git.local.tagsAtHead(dir));
105
+
106
+ if (!version || !versions[version]) return;
107
+
108
+ const pkg = await pkgJSONManager.read(name);
109
+
110
+ if (!pkg) return;
111
+
112
+ versions[version] = this.normalizeDependencies(pkg.sv || {});
113
+ };
114
+
83
115
  private load = async (url: string, name: string): Promise<IPackageEntry> => {
84
116
  const fetched = await git.api.fetchVersions(url);
85
117
  const versions: Record<string, TDependencies> = {};
@@ -88,6 +120,8 @@ export class EntryStore implements IEntrySource {
88
120
  versions[version] = this.normalizeDependencies(pkg?.sv || {});
89
121
  });
90
122
 
123
+ await this.localOverlay(name, versions);
124
+
91
125
  return { name, url, versions };
92
126
  };
93
127
 
package/src/sv.ts CHANGED
@@ -19,15 +19,8 @@ import { SVError } from './errors';
19
19
  * мутации обязаны пережить публикацию родителя, поэтому диапазон
20
20
  * пишется в его поле sv.
21
21
  */
22
- const updateModuleJson = async (
23
- parent: string,
24
- override: IOverride,
25
- ): Promise<void> => {
26
- const parentJson = await pkgJSONManager.read(parent);
27
-
28
- if (!parentJson) throw new SVError('ADDON_NOT_FOUND', { name: parent });
29
-
30
- const sv = { ...((parentJson.sv || {}) as TDependencies) };
22
+ const applyOverride = (json: any, override: IOverride): any => {
23
+ const sv = { ...((json.sv || {}) as TDependencies) };
31
24
 
32
25
  if (override.add) sv[override.add] = override.version || '*';
33
26
 
@@ -40,8 +33,7 @@ const updateModuleJson = async (
40
33
  delete sv[key];
41
34
  }
42
35
 
43
- parentJson.sv = sv;
44
- await pkgJSONManager.write(parentJson, parent);
36
+ return { ...json, sv };
45
37
  };
46
38
 
47
39
  /*
@@ -78,6 +70,19 @@ const ensureWorkspaces = (baseJson: any): boolean => {
78
70
  const MODULES_DIR_FIELD = 'sv-dir';
79
71
  const DEFAULT_MODULES_DIR = 'modules';
80
72
 
73
+ const parsePutArgs = (
74
+ versionOrParent?: string,
75
+ parentName?: string,
76
+ ): { range: string, parent?: string } => {
77
+ const isVersion = !!versionOrParent
78
+ && versionUtil.validate(versionOrParent, true);
79
+
80
+ return {
81
+ range: (isVersion ? versionOrParent : undefined) || '*',
82
+ parent: (isVersion ? parentName : versionOrParent) || undefined,
83
+ };
84
+ };
85
+
81
86
  /*
82
87
  * Уже добавленные сабмодули — источник правды о директории:
83
88
  * .gitmodules с единым родителем у всех path (addons/X, addons/Y → addons).
@@ -183,48 +188,50 @@ export class SV {
183
188
  return changed;
184
189
  };
185
190
 
186
- /*
187
- * Общий путь мутаций: проверка через resolve внутри simulate, и только
188
- * если ошибки нет — установка/переключение модулей и правка package.json
189
- * (корня или родителя).
190
- */
191
- private apply = async (
191
+ private verify = async (
192
192
  baseJson: any,
193
193
  override: IOverride,
194
- parent?: string,
195
- ): Promise<void> => {
196
- const dirChanged = await this.syncModulesDir(baseJson);
194
+ ): Promise<TPubGrubResult> => {
197
195
  const rootDeps = (baseJson.sv || {}) as TDependencies;
198
- let nextRootDeps = rootDeps;
199
196
 
200
- const resolution = await this.store.simulate(
197
+ return this.store.simulate(
201
198
  [override],
202
199
  rootDeps,
203
- deps => {
204
- nextRootDeps = deps;
205
-
206
- return this.resolveDeps(deps);
207
- },
200
+ deps => this.resolveDeps(deps),
208
201
  );
202
+ };
209
203
 
210
- await this.syncModules(resolution);
204
+ private findModuleUrl = async (
205
+ urlOrName: string,
206
+ parent?: string,
207
+ ): Promise<string> => {
208
+ if (git.parseUrl(urlOrName).name) return urlOrName;
211
209
 
212
- if (parent) {
213
- await updateModuleJson(parent, override);
210
+ const resolved = this.resolution?.[urlOrName];
214
211
 
215
- if (dirChanged) await pkgJSONManager.write(baseJson);
216
- } else {
217
- baseJson.sv = nextRootDeps;
218
- await pkgJSONManager.write(baseJson);
219
- }
212
+ if (resolved) return resolved.url;
220
213
 
221
- /*
222
- * package.json уже записан — npm подтянет workspaces и зависимости
223
- * нового набора модулей.
224
- */
225
- await npm.install();
214
+ const targetJson = await pkgJSONManager.read(parent);
226
215
 
227
- this.resolution = resolution;
216
+ const existing = Object.keys((targetJson?.sv || {}) as TDependencies)
217
+ .find(depUrl => git.parseUrl(depUrl).name === urlOrName);
218
+
219
+ if (existing) return existing;
220
+
221
+ const remote = await git.local.getRemote(
222
+ path.join(RunOptions.modulesDir, urlOrName),
223
+ );
224
+
225
+ if (remote && git.parseUrl(remote).name) return remote;
226
+
227
+ throw new SVError('NOT_A_GIT_URL', { url: urlOrName });
228
+ };
229
+
230
+ private prepareBaseJson = async (baseJson: any): Promise<boolean> => {
231
+ const dirChanged = await this.syncModulesDir(baseJson);
232
+ const workspaceChanged = ensureWorkspaces(baseJson);
233
+
234
+ return dirChanged || workspaceChanged;
228
235
  };
229
236
 
230
237
  public init = async (): Promise<void> => {
@@ -274,38 +281,79 @@ export class SV {
274
281
  versionOrParent?: string,
275
282
  parentName?: string,
276
283
  ): Promise<void> => {
277
- const isVersion = !!versionOrParent
278
- && versionUtil.validate(versionOrParent, true);
279
-
280
- const range = (isVersion ? versionOrParent : undefined) || '*';
281
- const parent = (isVersion ? parentName : versionOrParent) || undefined;
284
+ const { range, parent } = parsePutArgs(versionOrParent, parentName);
282
285
  const baseJson = await pkgJSONManager.read();
283
286
 
284
287
  if (!baseJson) throw new SVError('NOT_A_NPM');
285
288
 
289
+ await this.syncModulesDir(baseJson);
290
+
286
291
  /*
287
292
  * Вместо url можно передать имя уже установленного модуля —
288
293
  * url берём из текущего резолва.
289
294
  */
290
- let moduleUrl = url;
291
-
292
- if (!git.parseUrl(url).name) {
293
- const existing = this.getResolution()[url];
294
-
295
- if (!existing) throw new SVError('NOT_A_GIT_URL', { url });
296
-
297
- moduleUrl = existing.url;
298
- }
295
+ const moduleUrl = await this.findModuleUrl(url, parent);
299
296
 
300
297
  if (parent && !this.getResolution()[parent]) {
301
298
  throw new SVError('ADDON_NOT_FOUND', { name: parent });
302
299
  }
303
300
 
304
- await this.apply(
305
- baseJson,
306
- { parent, add: moduleUrl, version: range },
301
+ const resolution = await this.verify(baseJson, {
307
302
  parent,
303
+ add: moduleUrl,
304
+ version: range,
305
+ });
306
+
307
+ await this.syncModules(resolution);
308
+ await this.dangerousPut(moduleUrl, range, parent);
309
+ this.resolution = resolution;
310
+ };
311
+
312
+ /*
313
+ * Принудительная установка без PubGrub: добавляет отсутствующий git
314
+ * submodule, записывает constraint и запускает npm install. Версию HEAD
315
+ * не переключает — диапазон лишь фиксируется для следующего safe resolve.
316
+ */
317
+ public dangerousPut = async (
318
+ url: string,
319
+ versionOrParent?: string,
320
+ parentName?: string,
321
+ ): Promise<void> => {
322
+ const { range, parent } = parsePutArgs(versionOrParent, parentName);
323
+ const baseJson = await pkgJSONManager.read();
324
+
325
+ if (!baseJson) throw new SVError('NOT_A_NPM');
326
+
327
+ const baseChanged = await this.prepareBaseJson(baseJson);
328
+ const moduleUrl = await this.findModuleUrl(url, parent);
329
+ const { name } = git.parseUrl(moduleUrl);
330
+
331
+ const targetJson = parent
332
+ ? await pkgJSONManager.read(parent)
333
+ : baseJson;
334
+
335
+ if (!targetJson) throw new SVError('ADDON_NOT_FOUND', { name: parent });
336
+
337
+ /* Проверяем запись до git-мутации, чтобы не оставить лишний submodule. */
338
+ const nextTargetJson = applyOverride(
339
+ targetJson,
340
+ { parent, add: moduleUrl, version: range },
308
341
  );
342
+
343
+ if (!await git.local.isGitRepo(path.join(RunOptions.modulesDir, name))) {
344
+ await git.local.addSubmodule(moduleUrl);
345
+ }
346
+
347
+ if (parent) {
348
+ await pkgJSONManager.write(nextTargetJson, parent);
349
+ } else {
350
+ await pkgJSONManager.write(nextTargetJson);
351
+ }
352
+
353
+ if (parent && baseChanged) await pkgJSONManager.write(baseJson);
354
+
355
+ this.resolution = null;
356
+ await npm.install();
309
357
  };
310
358
 
311
359
  /* Удаление модуля из родителя (без parentName — из корня проекта). */
@@ -314,6 +362,8 @@ export class SV {
314
362
 
315
363
  if (!baseJson) throw new SVError('NOT_A_NPM');
316
364
 
365
+ await this.syncModulesDir(baseJson);
366
+
317
367
  if (parentName) {
318
368
  const parentEntry = this.getResolution()[parentName];
319
369
 
@@ -326,11 +376,49 @@ export class SV {
326
376
  }
327
377
  }
328
378
 
329
- await this.apply(
330
- baseJson,
331
- { parent: parentName, delete: name },
332
- parentName,
333
- );
379
+ const override = { parent: parentName, delete: name };
380
+ const resolution = await this.verify(baseJson, override);
381
+
382
+ await this.syncModules(resolution);
383
+ await this.dangerousDelete(name, parentName);
384
+ this.resolution = resolution;
385
+ };
386
+
387
+ /* Принудительное удаление без запуска PubGrub. */
388
+ public dangerousDelete = async (
389
+ name: string,
390
+ parentName?: string,
391
+ ): Promise<void> => {
392
+ const baseJson = await pkgJSONManager.read();
393
+
394
+ if (!baseJson) throw new SVError('NOT_A_NPM');
395
+
396
+ const baseChanged = await this.prepareBaseJson(baseJson);
397
+
398
+ const targetJson = parentName
399
+ ? await pkgJSONManager.read(parentName)
400
+ : baseJson;
401
+
402
+ if (!targetJson) {
403
+ throw new SVError('ADDON_NOT_FOUND', { name: parentName });
404
+ }
405
+
406
+ const override = { parent: parentName, delete: name };
407
+ /* Проверяем запись до git-мутации, чтобы неизвестное имя было no-op. */
408
+ const nextTargetJson = applyOverride(targetJson, override);
409
+ const dir = path.join(RunOptions.modulesDir, name);
410
+
411
+ if (await git.local.isGitRepo(dir)) await git.local.rm(name);
412
+
413
+ if (parentName) {
414
+ await pkgJSONManager.write(nextTargetJson, parentName);
415
+ } else {
416
+ await pkgJSONManager.write(nextTargetJson);
417
+ }
418
+
419
+ if (parentName && baseChanged) await pkgJSONManager.write(baseJson);
420
+ this.resolution = null;
421
+ await npm.install();
334
422
  };
335
423
 
336
424
  public listVersions = (