submodule-version 3.2.1 → 3.2.3

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
@@ -110,7 +110,7 @@ The constructor accepts `(projectDir, modulesDir?, { githubToken? })`. The modul
110
110
  ### Dependency resolution
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
- - `sv.getResolution()` returns the selected version and selected-version dependencies for every resolved module.
113
+ - `sv.getResolution()` returns the selected version and selected-version dependencies for every resolved module. Before the first `init()` call it throws `NOT_INITIALIZED`; after an `init()` attempt it remains available even when initialization reports an error. If PubGrub itself fails before producing a result, the stored resolution is empty; Git/npm failures retain the complete calculated result.
114
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.
115
115
  - `new PubGrub(source).resolve(rootDeps)` runs the resolver with a custom entry source, which is useful for tests and non-GitHub registries.
116
116
 
@@ -123,7 +123,7 @@ By default, `put` and `delete` first run a check resolve and touch the working t
123
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.
124
124
  - Without `version` the highest possible version is selected, as if `'*'` was passed.
125
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.
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` checks out the newest local Git tag matching the requested range, ignoring compatibility with the rest of the dependency tree; an untagged module remains on its cloned HEAD.
127
127
  - `sv.listVersions(name?)` - With `name` returns the available versions of one package (`string[]`); without it returns `{ [pkgName]: string[] }` for every resolved package.
128
128
 
129
129
  ### Simulating changes
package/dist/src/sv.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { TPubGrubResult } from './PubGrub';
2
2
  export declare class SV {
3
3
  private resolution;
4
+ private verifiedResolution;
4
5
  private store;
5
6
  private explicitModulesDir?;
6
7
  constructor(projectDir: string, modulesDir?: string, options?: {
package/dist/src/sv.js CHANGED
@@ -83,6 +83,8 @@ const deriveModulesDir = async () => {
83
83
  class SV {
84
84
  constructor(projectDir, modulesDir, options = {}) {
85
85
  this.resolution = null;
86
+ /* Safe put передаёт сюда уже выбранную PubGrub версию на время мутации. */
87
+ this.verifiedResolution = null;
86
88
  this.store = new entryStore_1.EntryStore();
87
89
  /*
88
90
  * Директория модулей: явно переданная (CLI/JS) → записанная в
@@ -111,8 +113,7 @@ class SV {
111
113
  * версии переключаются, исчезнувшие из резолва модули удаляются.
112
114
  * Возвращает true, если рабочая копия изменилась.
113
115
  */
114
- this.syncModules = async (resolution) => {
115
- const previous = this.resolution || {};
116
+ this.syncModules = async (resolution, previous = this.resolution || {}) => {
116
117
  let changed = false;
117
118
  await Promise.all(Object.entries(resolution).map(async ([name, entry]) => {
118
119
  const dir = path_1.default.join(runOptions_1.RunOptions.modulesDir, name);
@@ -157,6 +158,9 @@ class SV {
157
158
  return dirChanged || workspaceChanged;
158
159
  };
159
160
  this.init = async () => {
161
+ const previousResolution = this.resolution || {};
162
+ /* Сам вызов init переводит экземпляр в инициализированное состояние. */
163
+ this.resolution = {};
160
164
  const baseJson = await pkgJSONManager_1.pkgJSONManager.read();
161
165
  if (!baseJson)
162
166
  throw new errors_1.SVError('NOT_A_NPM');
@@ -170,7 +174,9 @@ class SV {
170
174
  }
171
175
  const rootDeps = (baseJson.sv || {});
172
176
  const resolution = await this.resolveDeps(rootDeps);
173
- const modulesChanged = await this.syncModules(resolution);
177
+ /* Результат доступен даже при последующей ошибке git или npm. */
178
+ this.resolution = resolution;
179
+ const modulesChanged = await this.syncModules(resolution, previousResolution);
174
180
  /*
175
181
  * npm install запускается только когда реально что-то изменилось —
176
182
  * иначе каждый CLI-вызов (init идёт перед любой командой) платил
@@ -178,7 +184,6 @@ class SV {
178
184
  */
179
185
  if (jsonChanged || modulesChanged)
180
186
  await npm_1.npm.install();
181
- this.resolution = resolution;
182
187
  };
183
188
  this.getResolution = () => {
184
189
  if (!this.resolution)
@@ -210,14 +215,22 @@ class SV {
210
215
  add: moduleUrl,
211
216
  version: range,
212
217
  });
213
- await this.syncModules(resolution);
214
- await this.dangerousPut(moduleUrl, range, parent);
218
+ const previousResolution = this.resolution || {};
215
219
  this.resolution = resolution;
220
+ await this.syncModules(resolution, previousResolution);
221
+ this.verifiedResolution = resolution;
222
+ try {
223
+ await this.dangerousPut(moduleUrl, range, parent);
224
+ }
225
+ finally {
226
+ this.verifiedResolution = null;
227
+ this.resolution = resolution;
228
+ }
216
229
  };
217
230
  /*
218
231
  * Принудительная установка без PubGrub: добавляет отсутствующий git
219
- * submodule, записывает constraint и запускает npm install. Версию HEAD
220
- * не переключает диапазон лишь фиксируется для следующего safe resolve.
232
+ * submodule, выбирает подходящий range git-тег, записывает constraint и
233
+ * запускает npm install. Совместимость с остальным деревом не проверяется.
221
234
  */
222
235
  this.dangerousPut = async (url, versionOrParent, parentName) => {
223
236
  const { range, parent } = parsePutArgs(versionOrParent, parentName);
@@ -237,6 +250,15 @@ class SV {
237
250
  if (!await git_1.git.local.isGitRepo(path_1.default.join(runOptions_1.RunOptions.modulesDir, name))) {
238
251
  await git_1.git.local.addSubmodule(moduleUrl);
239
252
  }
253
+ const verifiedVersion = this.verifiedResolution?.[name]?.version;
254
+ const versions = verifiedVersion
255
+ ? []
256
+ : await git_1.git.local.listVersions(name);
257
+ const version = verifiedVersion
258
+ || versionUtil_1.versionUtil.latest(versions, [range]);
259
+ if (version && await git_1.git.local.currentVersion(name) !== version) {
260
+ await git_1.git.local.checkout(name, version);
261
+ }
240
262
  if (parent) {
241
263
  await pkgJSONManager_1.pkgJSONManager.write(nextTargetJson, parent);
242
264
  }
@@ -265,9 +287,15 @@ class SV {
265
287
  }
266
288
  const override = { parent: parentName, delete: name };
267
289
  const resolution = await this.verify(baseJson, override);
268
- await this.syncModules(resolution);
269
- await this.dangerousDelete(name, parentName);
290
+ const previousResolution = this.resolution || {};
270
291
  this.resolution = resolution;
292
+ try {
293
+ await this.syncModules(resolution, previousResolution);
294
+ await this.dangerousDelete(name, parentName);
295
+ }
296
+ finally {
297
+ this.resolution = resolution;
298
+ }
271
299
  };
272
300
  /* Принудительное удаление без запуска PubGrub. */
273
301
  this.dangerousDelete = async (name, parentName) => {
@@ -285,8 +313,13 @@ class SV {
285
313
  /* Проверяем запись до git-мутации, чтобы неизвестное имя было no-op. */
286
314
  const nextTargetJson = applyOverride(targetJson, override);
287
315
  const dir = path_1.default.join(runOptions_1.RunOptions.modulesDir, name);
288
- if (await git_1.git.local.isGitRepo(dir))
316
+ /* При удалении связи parent -> dependency сам модуль может оставаться
317
+ * корневой зависимостью или использоваться другим аддоном. Проверенный
318
+ * delete уже синхронизировал resolution выше, а dangerous fallback без
319
+ * PubGrub не может безопасно признать общий модуль осиротевшим. */
320
+ if (!parentName && await git_1.git.local.isGitRepo(dir)) {
289
321
  await git_1.git.local.rm(name);
322
+ }
290
323
  if (parentName) {
291
324
  await pkgJSONManager_1.pkgJSONManager.write(nextTargetJson, parentName);
292
325
  }
@@ -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":";;;;;;AAAA,gDAAwB;AACxB,0CAAuC;AACvC,qDAAkD;AAClD,uCAKmB;AACnB,6CAA0C;AAC1C,6CAA0C;AAC1C,+CAA4C;AAC5C,+BAAsC;AACtC,+BAA4B;AAC5B,qCAAmC;AAEnC;;;;GAIG;AACH,MAAM,aAAa,GAAG,CAAC,IAAS,EAAE,QAAmB,EAAO,EAAE;IAC5D,MAAM,EAAE,GAAG,EAAE,GAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAmB,EAAE,CAAC;IAErD,IAAI,QAAQ,CAAC,GAAG;QAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,IAAI,GAAG,CAAC;IAE7D,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;aACxB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEjE,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,gBAAO,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAE1E,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC;AACzB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CAAC,QAAa,EAAW,EAAE;IAClD,MAAM,KAAK,GAAG,GAAG,uBAAU,CAAC,UAAU,IAAI,CAAC;IAE3C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAEtD,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEhC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;IAE/C,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAE3C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAErB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC;IAE9B,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AACnC,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAEtC,MAAM,YAAY,GAAG,CACnB,eAAwB,EACxB,UAAmB,EACiB,EAAE;IACtC,MAAM,SAAS,GAAG,CAAC,CAAC,eAAe;WAC9B,yBAAW,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IAEjD,OAAO;QACL,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG;QACvD,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,SAAS;KAChE,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,gBAAgB,GAAG,KAAK,IAA4B,EAAE;IAC1D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAC5B,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,GAAG,EAAE,aAAa,CAAC,EACxC,OAAO,CACR,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,GAAG,CAClB,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;aAC5C,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/C,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAa,EAAE;IAUb,YACE,UAAkB,EAClB,UAAmB,EACnB,UAAoC,EAAE;QAZhC,eAAU,GAA0B,IAAI,CAAC;QAEjD,2EAA2E;QACnE,uBAAkB,GAA0B,IAAI,CAAC;QAEjD,UAAK,GAAG,IAAI,uBAAU,EAAE,CAAC;QAejC;;;;WAIG;QACK,mBAAc,GAAG,KAAK,EAAE,QAAa,EAAoB,EAAE;YACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,CAAuB,CAAC;YAEnE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC7B,IAAI,QAAQ,EAAE,CAAC;oBACb,uBAAU,CAAC,UAAU,GAAG,QAAQ,CAAC;oBAEjC,OAAO,KAAK,CAAC;gBACf,CAAC;gBAED,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;gBAEzC,IAAI,OAAO;oBAAE,uBAAU,CAAC,UAAU,GAAG,OAAO,CAAC;YAC/C,CAAC;YAED,IAAI,QAAQ,KAAK,uBAAU,CAAC,UAAU;gBAAE,OAAO,KAAK,CAAC;YAErD,QAAQ,CAAC,iBAAiB,CAAC,GAAG,uBAAU,CAAC,UAAU,CAAC;YAEpD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEM,gBAAW,GAAG,CACpB,QAAuB,EACE,EAAE,CAAC,IAAI,iBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAExE;;;;WAIG;QACK,gBAAW,GAAG,KAAK,EACzB,UAA0B,EAC1B,WAA2B,IAAI,CAAC,UAAU,IAAI,EAAE,EAC9B,EAAE;YACpB,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;gBACvE,MAAM,GAAG,GAAG,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAEnD,IAAI,CAAC,MAAM,SAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpC,MAAM,SAAG,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACxC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBAED,IAAI,MAAM,SAAG,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;oBAC3D,MAAM,SAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC9C,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;YACH,CAAC,CAAC,CAAC,CAAC;YAEJ,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAExE,IAAI,OAAO,CAAC,MAAM;gBAAE,OAAO,GAAG,IAAI,CAAC;YAEnC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE3D,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;QAEM,WAAM,GAAG,KAAK,EACpB,QAAa,EACb,QAAmB,EACM,EAAE;YAC3B,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAkB,CAAC;YAEtD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,CAAC,QAAQ,CAAC,EACV,QAAQ,EACR,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAC/B,CAAC;QACJ,CAAC,CAAC;QAEM,kBAAa,GAAG,KAAK,EAC3B,SAAiB,EACjB,MAAe,EACE,EAAE;YACnB,IAAI,SAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;YAEnD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC;YAE9C,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC,GAAG,CAAC;YAElC,MAAM,UAAU,GAAG,MAAM,+BAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAErD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAkB,CAAC;iBAClE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAE3D,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAE9B,MAAM,MAAM,GAAG,MAAM,SAAG,CAAC,KAAK,CAAC,SAAS,CACtC,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAC5C,CAAC;YAEF,IAAI,MAAM,IAAI,SAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI;gBAAE,OAAO,MAAM,CAAC;YAEvD,MAAM,IAAI,gBAAO,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC,CAAC;QAEM,oBAAe,GAAG,KAAK,EAAE,QAAa,EAAoB,EAAE;YAClE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACvD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAEpD,OAAO,UAAU,IAAI,gBAAgB,CAAC;QACxC,CAAC,CAAC;QAEK,SAAI,GAAG,KAAK,IAAmB,EAAE;YACtC,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;YAEjD,wEAAwE;YACxE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YAErB,MAAM,QAAQ,GAAG,MAAM,+BAAc,CAAC,IAAI,EAAE,CAAC;YAE7C,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,gBAAO,CAAC,WAAW,CAAC,CAAC;YAE9C,IAAI,CAAC,MAAM,SAAG,CAAC,KAAK,CAAC,SAAS,CAAC,uBAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,gBAAO,CAAC,gBAAgB,CAAC,CAAC;YACtC,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACvD,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC;YAE7D,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,+BAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;YAED,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAkB,CAAC;YACtD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEpD,iEAAiE;YACjE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAE7B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,WAAW,CAC3C,UAAU,EACV,kBAAkB,CACnB,CAAC;YAEF;;;;eAIG;YACH,IAAI,WAAW,IAAI,cAAc;gBAAE,MAAM,SAAG,CAAC,OAAO,EAAE,CAAC;QAEzD,CAAC,CAAC;QAEK,kBAAa,GAAG,GAAmB,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,gBAAO,CAAC,iBAAiB,CAAC,CAAC;YAE3D,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC,CAAC;QAEF;;;;;WAKG;QACI,QAAG,GAAG,KAAK,EAChB,GAAW,EACX,eAAwB,EACxB,UAAmB,EACJ,EAAE;YACjB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,MAAM,+BAAc,CAAC,IAAI,EAAE,CAAC;YAE7C,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,gBAAO,CAAC,WAAW,CAAC,CAAC;YAE9C,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAEpC;;;eAGG;YACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAExD,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,gBAAO,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBAC7C,MAAM;gBACN,GAAG,EAAE,SAAS;gBACd,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;YAEjD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7B,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;YACvD,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;YAErC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACpD,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC;QAEF;;;;WAIG;QACI,iBAAY,GAAG,KAAK,EACzB,GAAW,EACX,eAAwB,EACxB,UAAmB,EACJ,EAAE;YACjB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,MAAM,+BAAc,CAAC,IAAI,EAAE,CAAC;YAE7C,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,gBAAO,CAAC,WAAW,CAAC,CAAC;YAE9C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACxD,MAAM,EAAE,IAAI,EAAE,GAAG,SAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAEzC,MAAM,UAAU,GAAG,MAAM;gBACvB,CAAC,CAAC,MAAM,+BAAc,CAAC,IAAI,CAAC,MAAM,CAAC;gBACnC,CAAC,CAAC,QAAQ,CAAC;YAEb,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,gBAAO,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAExE,0EAA0E;YAC1E,MAAM,cAAc,GAAG,aAAa,CAClC,UAAU,EACV,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAC3C,CAAC;YAEF,IAAI,CAAC,MAAM,SAAG,CAAC,KAAK,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;gBACvE,MAAM,SAAG,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC1C,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;YAEjE,MAAM,QAAQ,GAAG,eAAe;gBAC9B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,MAAM,SAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAEvC,MAAM,OAAO,GAAG,eAAe;mBAC1B,yBAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAE3C,IAAI,OAAO,IAAI,MAAM,SAAG,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;gBAChE,MAAM,SAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,+BAAc,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,MAAM,+BAAc,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC7C,CAAC;YAED,IAAI,MAAM,IAAI,WAAW;gBAAE,MAAM,+BAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAEhE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,MAAM,SAAG,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC,CAAC;QAEF,sEAAsE;QAC/D,WAAM,GAAG,KAAK,EAAE,IAAY,EAAE,UAAmB,EAAiB,EAAE;YACzE,MAAM,QAAQ,GAAG,MAAM,+BAAc,CAAC,IAAI,EAAE,CAAC;YAE7C,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,gBAAO,CAAC,WAAW,CAAC,CAAC;YAE9C,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAEpC,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,CAAC;gBAErD,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,MAAM,IAAI,gBAAO,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC7D,CAAC;gBAED,IAAI,CAAC,CAAC,IAAI,IAAI,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;oBACxC,MAAM,IAAI,gBAAO,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACtD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACzD,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;YAEjD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAE7B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;gBACvD,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC;QAEF,kDAAkD;QAC3C,oBAAe,GAAG,KAAK,EAC5B,IAAY,EACZ,UAAmB,EACJ,EAAE;YACjB,MAAM,QAAQ,GAAG,MAAM,+BAAc,CAAC,IAAI,EAAE,CAAC;YAE7C,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,gBAAO,CAAC,WAAW,CAAC,CAAC;YAE9C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAEzD,MAAM,UAAU,GAAG,UAAU;gBAC3B,CAAC,CAAC,MAAM,+BAAc,CAAC,IAAI,CAAC,UAAU,CAAC;gBACvC,CAAC,CAAC,QAAQ,CAAC;YAEb,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,gBAAO,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,QAAQ,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACtD,wEAAwE;YACxE,MAAM,cAAc,GAAG,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC3D,MAAM,GAAG,GAAG,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAEnD;;;+EAGmE;YACnE,IAAI,CAAC,UAAU,IAAI,MAAM,SAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClD,MAAM,SAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,+BAAc,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,MAAM,+BAAc,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC7C,CAAC;YAED,IAAI,UAAU,IAAI,WAAW;gBAAE,MAAM,+BAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACpE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,MAAM,SAAG,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC,CAAC;QAEK,iBAAY,GAAG,CACpB,IAAa,EACwB,EAAE;YACvC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAExC,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;gBAE/B,IAAI,CAAC,KAAK;oBAAE,MAAM,IAAI,gBAAO,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBAE3D,OAAO,yBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvD,CAAC;YAED,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;gBACrD,SAAS;gBACT,yBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;aAC9C,CAAC,CACH,CAAC;QACJ,CAAC,CAAC;QAEF,kDAAkD;QAC3C,eAAU,GAAG,KAAK,EAAE,MAAe,EAAoB,EAAE;YAC9D,MAAM,GAAG,GAAG,MAAM;gBAChB,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,MAAM,CAAC;gBAC1C,CAAC,CAAC,uBAAU,CAAC,GAAG,CAAC;YAEnB,IAAI,MAAM,SAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YAEjD,OAAO,SAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC,CAAC;QAEF,kDAAkD;QAC3C,0BAAqB,GAAG,KAAK,EAAE,MAAe,EAAoB,EAAE;YACzE,MAAM,GAAG,GAAG,MAAM;gBAChB,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,MAAM,CAAC;gBAC1C,CAAC,CAAC,uBAAU,CAAC,GAAG,CAAC;YAEnB,OAAO,SAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC;QAEF,kDAAkD;QAC3C,mBAAc,GAAG,KAAK,EAAE,MAAe,EAA0B,EAAE;YACxE,MAAM,GAAG,GAAG,MAAM;gBAChB,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,MAAM,CAAC;gBAC1C,CAAC,CAAC,uBAAU,CAAC,GAAG,CAAC;YAEnB,MAAM,IAAI,GAAG,MAAM,SAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAE7C,OAAO,yBAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAC1C,CAAC,CAAC;QAEF,kDAAkD;QAC3C,kBAAa,GAAG,KAAK,EAAE,MAAe,EAAmB,EAAE;YAChE,MAAM,GAAG,GAAG,MAAM;gBAChB,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,MAAM,CAAC;gBAC1C,CAAC,CAAC,uBAAU,CAAC,GAAG,CAAC;YAEnB,MAAM,QAAQ,GAAG,MAAM,SAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAE/C,OAAO,yBAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC;QACjD,CAAC,CAAC;QAEF,kDAAkD;QAC3C,cAAS,GAAG,KAAK,EAAE,MAAe,EAA0B,EAAE;YACnE,MAAM,GAAG,GAAG,MAAM;gBAChB,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,MAAM,CAAC;gBAC1C,CAAC,CAAC,uBAAU,CAAC,GAAG,CAAC;YAEnB,OAAO,SAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC,CAAC;QAEK,gBAAW,GAAG,KAAK,EAAE,MAAe,EAAoB,EAAE;YAC/D,MAAM,GAAG,GAAG,MAAM;gBAChB,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,MAAM,CAAC;gBAC1C,CAAC,CAAC,uBAAU,CAAC,GAAG,CAAC;YAEnB,IAAI,CAAC,MAAM,SAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAElD,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEF,kDAAkD;QAC3C,kBAAa,GAAG,KAAK,EAAE,MAAe,EAAoB,EAAE;YACjE,MAAM,GAAG,GAAG,MAAM;gBAChB,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,MAAM,CAAC;gBAC1C,CAAC,CAAC,uBAAU,CAAC,GAAG,CAAC;YAEnB,IAAI,CAAC,MAAM,SAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAElD,OAAO,SAAG,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,kDAAkD;QAC3C,wBAAmB,GAAG,KAAK,EAAE,MAAe,EAAiB,EAAE;YACpE,MAAM,GAAG,GAAG,MAAM;gBAChB,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,MAAM,CAAC;gBAC1C,CAAC,CAAC,uBAAU,CAAC,GAAG,CAAC;YAEnB,OAAO,SAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC,CAAC;QAEK,YAAO,GAAG,KAAK,EAAE,IAKvB,EAAmB,EAAE;YACpB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;YAEhD,MAAM,GAAG,GAAG,MAAM;gBAChB,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,uBAAU,CAAC,UAAU,EAAE,MAAM,CAAC;gBAC1C,CAAC,CAAC,uBAAU,CAAC,GAAG,CAAC;YAEnB,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,IAAI,CAAC,OAAO;oBAAE,MAAM,IAAI,cAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAE1D,IAAI,CAAC,MAAM,SAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;oBAAE,MAAM,SAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAE/D,MAAM,SAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC1C,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAErD,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;gBAC5D,MAAM,IAAI,cAAQ,CAAC,wBAAwB,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,SAAG,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAElC,IAAI,MAAM,SAAG,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvC,MAAM,SAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC3C,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,SAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAElD,IAAI,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC;gBACtB,MAAM,SAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAEnC,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,MAAM,IAAI,GAAG,yBAAW,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;YACtE,MAAM,GAAG,GAAG,MAAM,+BAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE9C,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;gBACnB,MAAM,+BAAc,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,MAAM,SAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,SAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,IAAI,QAAQ,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,SAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAClC,MAAM,SAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAEhC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QA7fA,uBAAU,CAAC,GAAG,GAAG,UAAU,CAAC;QAC5B,uBAAU,CAAC,UAAU,GAAG,UAAU,IAAI,mBAAmB,CAAC;QAC1D,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;QACrC,SAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;CA0fF;AA7gBD,gBA6gBC"}
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.2.1",
4
+ "version": "3.2.3",
5
5
  "repository": "github:guljeny/submodule-version",
6
6
  "main": "dist/src/index.js",
7
7
  "bin": {
@@ -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
+ listVersions: jest.fn(async () => []),
29
30
  getRemote: jest.fn(async () => null),
30
31
  },
31
32
  api: {
@@ -77,6 +78,7 @@ beforeEach(() => {
77
78
  readFileMock.mockRejectedValue(new Error('ENOENT'));
78
79
  localMock.isGitRepo.mockResolvedValue(true);
79
80
  localMock.currentVersion.mockResolvedValue(null);
81
+ localMock.listVersions.mockResolvedValue([]);
80
82
  });
81
83
 
82
84
  afterEach(() => {
@@ -128,6 +130,49 @@ describe('SV.init', () => {
128
130
  );
129
131
  });
130
132
 
133
+ it('is initialized with an empty resolution when resolve fails', async () => {
134
+ readMock.mockResolvedValue({ sv: { [url('A')]: '^2.0.0' } });
135
+ resolveMock.mockRejectedValue(new Error('version conflict'));
136
+ const sv = new SV('/project');
137
+
138
+ await expect(sv.init()).rejects.toThrow('version conflict');
139
+
140
+ expect(sv.getResolution()).toEqual({});
141
+ });
142
+
143
+ it('keeps the resolution when git synchronization fails', async () => {
144
+ const result = {
145
+ A: entry('A', { '1.0.0': {} }, '1.0.0'),
146
+ };
147
+
148
+ readMock.mockResolvedValue({ sv: { [url('A')]: '*' } });
149
+ resolveMock.mockResolvedValue(result);
150
+ localMock.isGitRepo.mockImplementation(
151
+ async (dir: string) => dir === '/project',
152
+ );
153
+ localMock.addSubmodule.mockRejectedValueOnce(new Error('git failed'));
154
+ const sv = new SV('/project');
155
+
156
+ await expect(sv.init()).rejects.toThrow('git failed');
157
+
158
+ expect(sv.getResolution()).toBe(result);
159
+ });
160
+
161
+ it('keeps the resolution when npm install fails', async () => {
162
+ const result = {
163
+ A: entry('A', { '1.0.0': {} }, '1.0.0'),
164
+ };
165
+
166
+ readMock.mockResolvedValue({ sv: { [url('A')]: '*' } });
167
+ resolveMock.mockResolvedValue(result);
168
+ npmInstallMock.mockRejectedValueOnce(new Error('npm failed'));
169
+ const sv = new SV('/project');
170
+
171
+ await expect(sv.init()).rejects.toThrow('npm failed');
172
+
173
+ expect(sv.getResolution()).toBe(result);
174
+ });
175
+
131
176
  it('adds the modules dir to package.json workspaces', async () => {
132
177
  readMock.mockResolvedValue({ sv: {} });
133
178
  resolveMock.mockResolvedValue({});
@@ -413,6 +458,7 @@ describe('SV.dangerousPut', () => {
413
458
  it('adds and records a module without calling PubGrub', async () => {
414
459
  readMock.mockResolvedValue({ sv: {} });
415
460
  localMock.isGitRepo.mockResolvedValue(false);
461
+ localMock.listVersions.mockResolvedValue(['1.9.0', '2.0.0', '2.1.0']);
416
462
  resolveMock.mockRejectedValue(new Error('version conflict'));
417
463
  const sv = new SV('/project');
418
464
 
@@ -420,7 +466,7 @@ describe('SV.dangerousPut', () => {
420
466
 
421
467
  expect(resolveMock).not.toHaveBeenCalled();
422
468
  expect(localMock.addSubmodule).toHaveBeenCalledWith(url('B'));
423
- expect(localMock.checkout).not.toHaveBeenCalled();
469
+ expect(localMock.checkout).toHaveBeenCalledWith('B', '2.1.0');
424
470
  expect(writeMock).toHaveBeenCalledWith({
425
471
  sv: { [url('B')]: '^2.0.0' },
426
472
  workspaces: ['modules/*'],
@@ -429,6 +475,21 @@ describe('SV.dangerousPut', () => {
429
475
  expect(npmInstallMock).toHaveBeenCalledTimes(1);
430
476
  });
431
477
 
478
+ it('keeps an untagged module installed when no version matches',
479
+ async () => {
480
+ readMock.mockResolvedValue({ sv: {} });
481
+ localMock.isGitRepo.mockResolvedValue(false);
482
+ localMock.listVersions.mockResolvedValue([]);
483
+ const sv = new SV('/project');
484
+
485
+ await sv.dangerousPut(url('B'), '^2.0.0');
486
+
487
+ expect(localMock.addSubmodule).toHaveBeenCalledWith(url('B'));
488
+ expect(localMock.checkout).not.toHaveBeenCalled();
489
+ expect(writeMock).toHaveBeenCalled();
490
+ expect(npmInstallMock).toHaveBeenCalled();
491
+ });
492
+
432
493
  it('resolves an installed module name from package.json without init',
433
494
  async () => {
434
495
  readMock.mockResolvedValue({ sv: { [url('B')]: '^1.0.0' } });
@@ -565,6 +626,24 @@ describe('SV.dangerousDelete', () => {
565
626
  expect(npmInstallMock).toHaveBeenCalledTimes(1);
566
627
  });
567
628
 
629
+ it(
630
+ 'removes only the parent dependency and keeps the shared module',
631
+ async () => {
632
+ readMock.mockImplementation(async (module?: string) => (
633
+ module === 'A'
634
+ ? { sv: { [url('B')]: '^1.0.0' } }
635
+ : { sv: { [url('A')]: '*', [url('B')]: '*' } }
636
+ ));
637
+ const sv = new SV('/project');
638
+
639
+ await sv.dangerousDelete('B', 'A');
640
+
641
+ expect(localMock.rm).not.toHaveBeenCalled();
642
+ expect(writeMock).toHaveBeenCalledWith({ sv: {} }, 'A');
643
+ expect(npmInstallMock).toHaveBeenCalledTimes(1);
644
+ },
645
+ );
646
+
568
647
  it('does not touch git when the dependency is missing', async () => {
569
648
  readMock.mockResolvedValue({ sv: {} });
570
649
  const sv = new SV('/project');
package/src/sv.ts CHANGED
@@ -108,6 +108,9 @@ const deriveModulesDir = async (): Promise<string | null> => {
108
108
  export class SV {
109
109
  private resolution: TPubGrubResult | null = null;
110
110
 
111
+ /* Safe put передаёт сюда уже выбранную PubGrub версию на время мутации. */
112
+ private verifiedResolution: TPubGrubResult | null = null;
113
+
111
114
  private store = new EntryStore();
112
115
 
113
116
  private explicitModulesDir?: string;
@@ -161,8 +164,8 @@ export class SV {
161
164
  */
162
165
  private syncModules = async (
163
166
  resolution: TPubGrubResult,
167
+ previous: TPubGrubResult = this.resolution || {},
164
168
  ): Promise<boolean> => {
165
- const previous = this.resolution || {};
166
169
  let changed = false;
167
170
 
168
171
  await Promise.all(Object.entries(resolution).map(async ([name, entry]) => {
@@ -235,6 +238,11 @@ export class SV {
235
238
  };
236
239
 
237
240
  public init = async (): Promise<void> => {
241
+ const previousResolution = this.resolution || {};
242
+
243
+ /* Сам вызов init переводит экземпляр в инициализированное состояние. */
244
+ this.resolution = {};
245
+
238
246
  const baseJson = await pkgJSONManager.read();
239
247
 
240
248
  if (!baseJson) throw new SVError('NOT_A_NPM');
@@ -252,7 +260,14 @@ export class SV {
252
260
 
253
261
  const rootDeps = (baseJson.sv || {}) as TDependencies;
254
262
  const resolution = await this.resolveDeps(rootDeps);
255
- const modulesChanged = await this.syncModules(resolution);
263
+
264
+ /* Результат доступен даже при последующей ошибке git или npm. */
265
+ this.resolution = resolution;
266
+
267
+ const modulesChanged = await this.syncModules(
268
+ resolution,
269
+ previousResolution,
270
+ );
256
271
 
257
272
  /*
258
273
  * npm install запускается только когда реально что-то изменилось —
@@ -261,7 +276,6 @@ export class SV {
261
276
  */
262
277
  if (jsonChanged || modulesChanged) await npm.install();
263
278
 
264
- this.resolution = resolution;
265
279
  };
266
280
 
267
281
  public getResolution = (): TPubGrubResult => {
@@ -304,15 +318,24 @@ export class SV {
304
318
  version: range,
305
319
  });
306
320
 
307
- await this.syncModules(resolution);
308
- await this.dangerousPut(moduleUrl, range, parent);
321
+ const previousResolution = this.resolution || {};
322
+
309
323
  this.resolution = resolution;
324
+ await this.syncModules(resolution, previousResolution);
325
+ this.verifiedResolution = resolution;
326
+
327
+ try {
328
+ await this.dangerousPut(moduleUrl, range, parent);
329
+ } finally {
330
+ this.verifiedResolution = null;
331
+ this.resolution = resolution;
332
+ }
310
333
  };
311
334
 
312
335
  /*
313
336
  * Принудительная установка без PubGrub: добавляет отсутствующий git
314
- * submodule, записывает constraint и запускает npm install. Версию HEAD
315
- * не переключает диапазон лишь фиксируется для следующего safe resolve.
337
+ * submodule, выбирает подходящий range git-тег, записывает constraint и
338
+ * запускает npm install. Совместимость с остальным деревом не проверяется.
316
339
  */
317
340
  public dangerousPut = async (
318
341
  url: string,
@@ -344,6 +367,19 @@ export class SV {
344
367
  await git.local.addSubmodule(moduleUrl);
345
368
  }
346
369
 
370
+ const verifiedVersion = this.verifiedResolution?.[name]?.version;
371
+
372
+ const versions = verifiedVersion
373
+ ? []
374
+ : await git.local.listVersions(name);
375
+
376
+ const version = verifiedVersion
377
+ || versionUtil.latest(versions, [range]);
378
+
379
+ if (version && await git.local.currentVersion(name) !== version) {
380
+ await git.local.checkout(name, version);
381
+ }
382
+
347
383
  if (parent) {
348
384
  await pkgJSONManager.write(nextTargetJson, parent);
349
385
  } else {
@@ -378,10 +414,16 @@ export class SV {
378
414
 
379
415
  const override = { parent: parentName, delete: name };
380
416
  const resolution = await this.verify(baseJson, override);
417
+ const previousResolution = this.resolution || {};
381
418
 
382
- await this.syncModules(resolution);
383
- await this.dangerousDelete(name, parentName);
384
419
  this.resolution = resolution;
420
+
421
+ try {
422
+ await this.syncModules(resolution, previousResolution);
423
+ await this.dangerousDelete(name, parentName);
424
+ } finally {
425
+ this.resolution = resolution;
426
+ }
385
427
  };
386
428
 
387
429
  /* Принудительное удаление без запуска PubGrub. */
@@ -408,7 +450,13 @@ export class SV {
408
450
  const nextTargetJson = applyOverride(targetJson, override);
409
451
  const dir = path.join(RunOptions.modulesDir, name);
410
452
 
411
- if (await git.local.isGitRepo(dir)) await git.local.rm(name);
453
+ /* При удалении связи parent -> dependency сам модуль может оставаться
454
+ * корневой зависимостью или использоваться другим аддоном. Проверенный
455
+ * delete уже синхронизировал resolution выше, а dangerous fallback без
456
+ * PubGrub не может безопасно признать общий модуль осиротевшим. */
457
+ if (!parentName && await git.local.isGitRepo(dir)) {
458
+ await git.local.rm(name);
459
+ }
412
460
 
413
461
  if (parentName) {
414
462
  await pkgJSONManager.write(nextTargetJson, parentName);