@mnemonik/shared 7.55.1 → 7.57.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.
@@ -0,0 +1,352 @@
1
+ import { createHash, randomBytes } from 'node:crypto';
2
+ import { link, lstat, mkdir, open, readFile, readdir, realpath, rename, rm, rmdir, stat, unlink, } from 'node:fs/promises';
3
+ import { basename, dirname, join, resolve } from 'node:path';
4
+ const LOCK_STALE_MS = 120_000;
5
+ const LOCK_RETRIES = 100;
6
+ const LOCK_RETRY_MS = 20;
7
+ /** @internal Shared by settings I/O and runtime installation error handling. */
8
+ export function errorCode(error) {
9
+ return error && typeof error === 'object' && 'code' in error
10
+ ? String(error.code)
11
+ : undefined;
12
+ }
13
+ function defaultRuntimeParent(env = process.env) {
14
+ const home = env.HOME?.trim() || env.USERPROFILE?.trim();
15
+ if (!home)
16
+ throw new Error('Could not determine home directory for Mnemonik settings locks');
17
+ return join(home, '.mnemonik', 'hooks');
18
+ }
19
+ /** Non-invasive lock location shared by installers and settings editors. */
20
+ export function installerConfigLockPath(configPath, runtimeParent = defaultRuntimeParent()) {
21
+ const key = createHash('sha256').update(resolve(configPath)).digest('hex').slice(0, 32);
22
+ return join(runtimeParent, '.config-locks', `${key}.lock`);
23
+ }
24
+ async function canonicalMissingTarget(path) {
25
+ let cursor = resolve(path);
26
+ const missingSegments = [];
27
+ while (true) {
28
+ try {
29
+ return resolve(await realpath(cursor), ...missingSegments);
30
+ }
31
+ catch (error) {
32
+ if (errorCode(error) !== 'ENOENT')
33
+ throw error;
34
+ }
35
+ try {
36
+ const info = await lstat(cursor);
37
+ if (info.isSymbolicLink()) {
38
+ throw new Error(`Refusing dangling configuration path symlink ${cursor}`);
39
+ }
40
+ }
41
+ catch (error) {
42
+ if (errorCode(error) !== 'ENOENT')
43
+ throw error;
44
+ }
45
+ const parent = dirname(cursor);
46
+ if (parent === cursor)
47
+ throw new Error(`Could not canonicalize configuration path ${path}`);
48
+ missingSegments.unshift(basename(cursor));
49
+ cursor = parent;
50
+ }
51
+ }
52
+ async function canonicalConfigTargetPath(path) {
53
+ const absolutePath = resolve(path);
54
+ try {
55
+ return await realpath(absolutePath);
56
+ }
57
+ catch (error) {
58
+ if (errorCode(error) !== 'ENOENT')
59
+ throw error;
60
+ }
61
+ return canonicalMissingTarget(absolutePath);
62
+ }
63
+ /** Resolve aliases before locking or updating configuration files. */
64
+ export async function canonicalizeConfigTargets(paths) {
65
+ return Promise.all(paths.map((path) => canonicalConfigTargetPath(path)));
66
+ }
67
+ /** @internal Shared by atomic settings writes and durable runtime installation. */
68
+ export async function syncDirectory(path) {
69
+ try {
70
+ const handle = await open(path, 'r');
71
+ try {
72
+ await handle.sync();
73
+ }
74
+ finally {
75
+ await handle.close();
76
+ }
77
+ }
78
+ catch {
79
+ // Some Node platforms cannot fsync directories. Files are synced first.
80
+ }
81
+ }
82
+ function lockOwnerIsAlive(raw) {
83
+ const pid = Number.parseInt(raw.split(/\s+/, 1)[0] ?? '', 10);
84
+ if (!Number.isSafeInteger(pid) || pid <= 0)
85
+ return false;
86
+ try {
87
+ process.kill(pid, 0);
88
+ return true;
89
+ }
90
+ catch (error) {
91
+ return errorCode(error) === 'EPERM';
92
+ }
93
+ }
94
+ async function removeStaleLock(lockPath) {
95
+ const info = await lstat(lockPath);
96
+ if (!info.isDirectory()) {
97
+ throw new Error(`Refusing unsafe non-directory installer lock ${lockPath}`);
98
+ }
99
+ if (Date.now() - info.mtimeMs <= LOCK_STALE_MS)
100
+ return false;
101
+ const entries = await readdir(lockPath);
102
+ if (entries.length === 0) {
103
+ try {
104
+ await rmdir(lockPath);
105
+ return true;
106
+ }
107
+ catch (error) {
108
+ if (['ENOENT', 'ENOTEMPTY'].includes(errorCode(error) ?? ''))
109
+ return false;
110
+ throw error;
111
+ }
112
+ }
113
+ if (entries.length !== 1 || !entries[0].startsWith('owner-'))
114
+ return false;
115
+ const tokenPath = join(lockPath, entries[0]);
116
+ const owner = await readFile(tokenPath, 'utf8');
117
+ if (lockOwnerIsAlive(owner))
118
+ return false;
119
+ try {
120
+ await unlink(tokenPath);
121
+ }
122
+ catch (error) {
123
+ if (errorCode(error) === 'ENOENT')
124
+ return false;
125
+ throw error;
126
+ }
127
+ try {
128
+ await rmdir(lockPath);
129
+ return true;
130
+ }
131
+ catch (error) {
132
+ if (['ENOENT', 'ENOTEMPTY'].includes(errorCode(error) ?? ''))
133
+ return false;
134
+ throw error;
135
+ }
136
+ }
137
+ async function acquireLock(lockPath) {
138
+ await mkdir(dirname(lockPath), { recursive: true });
139
+ const owner = `${process.pid} ${Date.now()} ${randomBytes(12).toString('hex')}\n`;
140
+ for (let attempt = 0; attempt < LOCK_RETRIES; attempt += 1) {
141
+ try {
142
+ await mkdir(lockPath, { mode: 0o700 });
143
+ const tokenPath = join(lockPath, `owner-${process.pid}-${randomBytes(12).toString('hex')}`);
144
+ const handle = await open(tokenPath, 'wx', 0o600);
145
+ try {
146
+ await handle.writeFile(owner, 'utf8');
147
+ await handle.sync();
148
+ }
149
+ finally {
150
+ await handle.close();
151
+ }
152
+ await syncDirectory(lockPath);
153
+ await syncDirectory(dirname(lockPath));
154
+ return tokenPath;
155
+ }
156
+ catch (error) {
157
+ if (errorCode(error) !== 'EEXIST') {
158
+ await rmdir(lockPath).catch(() => undefined);
159
+ if (errorCode(error) === 'ENOENT')
160
+ continue;
161
+ throw error;
162
+ }
163
+ try {
164
+ if (await removeStaleLock(lockPath))
165
+ continue;
166
+ }
167
+ catch (inspectError) {
168
+ if (errorCode(inspectError) === 'ENOENT')
169
+ continue;
170
+ throw inspectError;
171
+ }
172
+ await new Promise((resolveDelay) => setTimeout(resolveDelay, LOCK_RETRY_MS));
173
+ }
174
+ }
175
+ throw new Error(`Timed out waiting for installer lock ${lockPath}`);
176
+ }
177
+ export async function withFileLock(lockPath, action) {
178
+ const tokenPath = await acquireLock(lockPath);
179
+ try {
180
+ return await action();
181
+ }
182
+ finally {
183
+ try {
184
+ await unlink(tokenPath);
185
+ await rmdir(lockPath);
186
+ await syncDirectory(dirname(lockPath));
187
+ }
188
+ catch {
189
+ // A stale owner never removes a missing token or a successor lock.
190
+ }
191
+ }
192
+ }
193
+ export async function withFileLocks(lockPaths, action) {
194
+ const ordered = [...new Set(lockPaths)].sort();
195
+ const acquire = (index) => index >= ordered.length ? action() : withFileLock(ordered[index], () => acquire(index + 1));
196
+ return acquire(0);
197
+ }
198
+ export async function readTextIfExists(path) {
199
+ try {
200
+ return await readFile(path, 'utf8');
201
+ }
202
+ catch (error) {
203
+ if (errorCode(error) === 'ENOENT')
204
+ return null;
205
+ throw error;
206
+ }
207
+ }
208
+ async function writableTarget(path) {
209
+ try {
210
+ return await realpath(path);
211
+ }
212
+ catch (error) {
213
+ if (errorCode(error) !== 'ENOENT')
214
+ throw error;
215
+ try {
216
+ const info = await lstat(path);
217
+ if (info.isSymbolicLink()) {
218
+ throw new Error(`Refusing to replace dangling configuration symlink ${path}`);
219
+ }
220
+ }
221
+ catch (inspectError) {
222
+ if (errorCode(inspectError) !== 'ENOENT')
223
+ throw inspectError;
224
+ }
225
+ return path;
226
+ }
227
+ }
228
+ export async function atomicWriteText(path, next, expectedCurrent, options = {}) {
229
+ const target = await writableTarget(path);
230
+ await mkdir(dirname(target), { recursive: true });
231
+ const current = await readTextIfExists(target);
232
+ if (current !== expectedCurrent) {
233
+ throw new Error(`Configuration changed concurrently while installing: ${path}`);
234
+ }
235
+ let mode = options.mode ?? 0o600;
236
+ try {
237
+ mode = (await stat(target)).mode & 0o777;
238
+ if ((mode & 0o222) === 0)
239
+ throw new Error(`Configuration is not writable: ${path}`);
240
+ }
241
+ catch (error) {
242
+ if (errorCode(error) !== 'ENOENT')
243
+ throw error;
244
+ }
245
+ const tempPath = join(dirname(target), `.${join(target).split(/[\\/]/).pop()}.mnemonik-${process.pid}-${randomBytes(6).toString('hex')}`);
246
+ let handle;
247
+ try {
248
+ handle = await open(tempPath, 'wx', mode);
249
+ await handle.writeFile(next, 'utf8');
250
+ await handle.sync();
251
+ await handle.close();
252
+ handle = undefined;
253
+ // Node has no pathname compare-and-swap rename. Keeping this final check
254
+ // next to rename narrows the race, but another writer can still change the
255
+ // pathname after the read and before the rename.
256
+ if ((await readTextIfExists(target)) !== expectedCurrent) {
257
+ throw new Error(`Configuration changed concurrently while installing: ${path}`);
258
+ }
259
+ await rename(tempPath, target);
260
+ await syncDirectory(dirname(target));
261
+ }
262
+ finally {
263
+ if (handle)
264
+ await handle.close().catch(() => undefined);
265
+ await rm(tempPath, { force: true }).catch(() => undefined);
266
+ }
267
+ }
268
+ export async function atomicRestoreText(path, original, expectedCurrent) {
269
+ if (original !== null) {
270
+ await atomicWriteText(path, original, expectedCurrent);
271
+ return;
272
+ }
273
+ await atomicRemoveText(path, expectedCurrent);
274
+ }
275
+ async function restoreQuarantinedText(path, quarantine) {
276
+ try {
277
+ await link(quarantine, path);
278
+ await unlink(quarantine);
279
+ await syncDirectory(dirname(path));
280
+ }
281
+ catch (error) {
282
+ throw new Error(`Could not restore concurrently changed configuration; preserved it at ${quarantine}`, { cause: error });
283
+ }
284
+ }
285
+ async function atomicRemoveText(path, expectedCurrent) {
286
+ const quarantine = join(dirname(path), `.${join(path).split(/[\\/]/).pop()}.mnemonik-remove-${process.pid}-${randomBytes(6).toString('hex')}`);
287
+ try {
288
+ await rename(path, quarantine);
289
+ }
290
+ catch (error) {
291
+ if (errorCode(error) === 'ENOENT') {
292
+ throw new Error(`Configuration changed concurrently while removing: ${path}`);
293
+ }
294
+ throw error;
295
+ }
296
+ const info = await lstat(quarantine);
297
+ const current = info.isFile() ? await readFile(quarantine, 'utf8') : null;
298
+ if (!info.isFile() || current !== expectedCurrent) {
299
+ await restoreQuarantinedText(path, quarantine);
300
+ throw new Error(info.isSymbolicLink()
301
+ ? `Refusing to remove configuration symlink ${path}`
302
+ : `Configuration changed concurrently while removing: ${path}`);
303
+ }
304
+ await unlink(quarantine);
305
+ await syncDirectory(dirname(path));
306
+ }
307
+ async function applyTextChange(change) {
308
+ if (change.next !== null) {
309
+ await atomicWriteText(change.path, change.next, change.expected);
310
+ return;
311
+ }
312
+ if (change.expected !== null)
313
+ await atomicRemoveText(change.path, change.expected);
314
+ }
315
+ async function rollBackTextChange(change) {
316
+ if (change.expected === null) {
317
+ if (change.next !== null)
318
+ await atomicRemoveText(change.path, change.next);
319
+ return;
320
+ }
321
+ await atomicWriteText(change.path, change.expected, change.next);
322
+ }
323
+ export async function atomicWriteTransaction(changes) {
324
+ const effective = changes.filter((change) => change.next !== change.expected);
325
+ const canonicalPaths = await canonicalizeConfigTargets(effective.map((change) => change.path));
326
+ if (new Set(canonicalPaths).size !== effective.length) {
327
+ throw new Error('Atomic configuration transaction contains duplicate paths');
328
+ }
329
+ const applied = [];
330
+ try {
331
+ for (const change of effective) {
332
+ await applyTextChange(change);
333
+ applied.push(change);
334
+ }
335
+ }
336
+ catch (error) {
337
+ const rollbackErrors = [];
338
+ for (const change of applied.reverse()) {
339
+ try {
340
+ await rollBackTextChange(change);
341
+ }
342
+ catch (rollbackError) {
343
+ rollbackErrors.push(rollbackError);
344
+ }
345
+ }
346
+ if (rollbackErrors.length > 0) {
347
+ throw new AggregateError([error, ...rollbackErrors], 'Configuration transaction failed and rollback was incomplete');
348
+ }
349
+ throw error;
350
+ }
351
+ }
352
+ //# sourceMappingURL=settingsIo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settingsIo.js","sourceRoot":"","sources":["../src/settingsIo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,MAAM,EACN,EAAE,EACF,KAAK,EACL,IAAI,EACJ,MAAM,GACP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7D,MAAM,aAAa,GAAG,OAAO,CAAC;AAC9B,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,aAAa,GAAG,EAAE,CAAC;AAMzB,gFAAgF;AAChF,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK;QAC1D,CAAC,CAAC,MAAM,CAAE,KAAmB,CAAC,IAAI,CAAC;QACnC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAC3B,GAAG,GAAgE,OAAO,CAAC,GAAG;IAE9E,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IACzD,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IAC7F,OAAO,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,uBAAuB,CACrC,UAAkB,EAClB,aAAa,GAAG,oBAAoB,EAAE;IAEtC,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,IAAY;IAChD,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;QACjD,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,gDAAgD,MAAM,EAAE,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;QACjD,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,MAAM,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,IAAI,EAAE,CAAC,CAAC;QAC5F,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1C,MAAM,GAAG,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,IAAY;IACnD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;IACjD,CAAC;IACD,OAAO,sBAAsB,CAAC,YAAY,CAAC,CAAC;AAC9C,CAAC;AAED,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,KAAe;IAC7D,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;IAC1E,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACzD,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC;IACtC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,QAAgB;IAC7C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,gDAAgD,QAAQ,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,aAAa;QAAE,OAAO,KAAK,CAAC;IAC7D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC3E,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAChD,IAAI,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAChD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3E,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,QAAgB;IACzC,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;IAClF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACtC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACtB,CAAC;oBAAS,CAAC;gBACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;YACD,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC9B,MAAM,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvC,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAClC,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBAC7C,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;oBAAE,SAAS;gBAC5C,MAAM,KAAK,CAAC;YACd,CAAC;YACD,IAAI,CAAC;gBACH,IAAI,MAAM,eAAe,CAAC,QAAQ,CAAC;oBAAE,SAAS;YAChD,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACtB,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,QAAQ;oBAAE,SAAS;gBACnD,MAAM,YAAY,CAAC;YACrB,CAAC;YACD,MAAM,IAAI,OAAO,CAAO,CAAC,YAAY,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,wCAAwC,QAAQ,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAI,QAAgB,EAAE,MAAwB;IAC9E,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,EAAE,CAAC;IACxB,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACxB,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;YACtB,MAAM,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,mEAAmE;QACrE,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAI,SAAmB,EAAE,MAAwB;IAClF,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,CAAC,KAAa,EAAc,EAAE,CAC5C,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9F,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY;IACjD,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC/C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAY;IACxC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;QAC/C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,sDAAsD,IAAI,EAAE,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACtB,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,QAAQ;gBAAE,MAAM,YAAY,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,IAAY,EACZ,eAA8B,EAC9B,OAAO,GAAsB,EAAE;IAE/B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,wDAAwD,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;IACjC,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;IACjD,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CACnB,OAAO,CAAC,MAAM,CAAC,EACf,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,aAAa,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAClG,CAAC;IACF,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,GAAG,SAAS,CAAC;QAEnB,yEAAyE;QACzE,2EAA2E;QAC3E,iDAAiD;QACjD,IAAI,CAAC,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,eAAe,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,wDAAwD,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACvC,CAAC;YAAS,CAAC;QACT,IAAI,MAAM;YAAE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACxD,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,QAAuB,EACvB,eAAuB;IAEvB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IACD,MAAM,gBAAgB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,IAAY,EAAE,UAAkB;IACpE,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC7B,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACzB,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,yEAAyE,UAAU,EAAE,EACrF,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,eAAuB;IACnE,MAAM,UAAU,GAAG,IAAI,CACrB,OAAO,CAAC,IAAI,CAAC,EACb,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,oBAAoB,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CACvG,CAAC;IACF,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,sDAAsD,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;QAClD,MAAM,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,IAAI,CAAC,cAAc,EAAE;YACnB,CAAC,CAAC,4CAA4C,IAAI,EAAE;YACpD,CAAC,CAAC,sDAAsD,IAAI,EAAE,CACjE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACzB,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,CAAC;AAQD,KAAK,UAAU,eAAe,CAAC,MAAwB;IACrD,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI;QAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AACrF,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,MAAwB;IACxD,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI;YAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IACD,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAA2B;IACtE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9E,MAAM,cAAc,GAAG,MAAM,yBAAyB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/F,IAAI,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,IAAI,CAAC;QACH,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;YAC/B,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,cAAc,GAAc,EAAE,CAAC;QACrC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,aAAa,EAAE,CAAC;gBACvB,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,cAAc,CACtB,CAAC,KAAK,EAAE,GAAG,cAAc,CAAC,EAC1B,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mnemonik/shared",
3
- "version": "7.55.1",
3
+ "version": "7.57.1",
4
4
  "description": "Shared constants and utilities for Mnemonik packages",
5
5
  "repository": {
6
6
  "type": "git",