@platforma-sdk/block-tools 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/cli.js +1 -1
  2. package/dist/cli.js.map +1 -1
  3. package/dist/cli.mjs +94 -238
  4. package/dist/cli.mjs.map +1 -1
  5. package/dist/config-B1U40s2a.js +3 -0
  6. package/dist/config-B1U40s2a.js.map +1 -0
  7. package/dist/config-YukCegnp.mjs +1587 -0
  8. package/dist/config-YukCegnp.mjs.map +1 -0
  9. package/dist/index.js +1 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/index.mjs +170 -40
  12. package/dist/index.mjs.map +1 -1
  13. package/dist/io/folder_reader.d.ts +24 -0
  14. package/dist/io/folder_reader.d.ts.map +1 -0
  15. package/dist/io/index.d.ts +3 -0
  16. package/dist/io/index.d.ts.map +1 -0
  17. package/dist/io/storage.d.ts.map +1 -0
  18. package/dist/lib.d.ts +1 -0
  19. package/dist/lib.d.ts.map +1 -1
  20. package/dist/registry_v1/registry.d.ts +1 -1
  21. package/dist/registry_v1/registry.d.ts.map +1 -1
  22. package/dist/registry_v1/v1_repo_schema.d.ts +1 -1
  23. package/dist/registry_v1/v1_repo_schema.d.ts.map +1 -1
  24. package/dist/v2/index.d.ts +1 -0
  25. package/dist/v2/index.d.ts.map +1 -1
  26. package/dist/v2/model/block_components.d.ts +5 -5
  27. package/dist/v2/model/block_description.d.ts +48 -48
  28. package/dist/v2/model/block_meta.d.ts +554 -2
  29. package/dist/v2/model/block_meta.d.ts.map +1 -1
  30. package/dist/v2/model/content_conversion.d.ts +3 -1
  31. package/dist/v2/model/content_conversion.d.ts.map +1 -1
  32. package/dist/v2/registry/index.d.ts +4 -0
  33. package/dist/v2/registry/index.d.ts.map +1 -0
  34. package/dist/v2/registry/registry.d.ts +1 -1
  35. package/dist/v2/registry/registry.d.ts.map +1 -1
  36. package/dist/v2/registry/registry_reader.d.ts +12 -0
  37. package/dist/v2/registry/registry_reader.d.ts.map +1 -0
  38. package/dist/v2/registry/schema_public.d.ts +1925 -254
  39. package/dist/v2/registry/schema_public.d.ts.map +1 -1
  40. package/package.json +7 -4
  41. package/src/cmd/build-meta.ts +2 -2
  42. package/src/cmd/publish.ts +1 -1
  43. package/src/io/folder_reader.test.ts +21 -0
  44. package/src/io/folder_reader.ts +77 -0
  45. package/src/io/index.ts +2 -0
  46. package/src/lib.ts +1 -0
  47. package/src/registry_v1/config.ts +1 -1
  48. package/src/registry_v1/registry.test.ts +1 -1
  49. package/src/registry_v1/registry.ts +1 -1
  50. package/src/registry_v1/v1_repo_schema.ts +1 -1
  51. package/src/v2/index.ts +1 -0
  52. package/src/v2/model/block_meta.ts +23 -5
  53. package/src/v2/model/content_conversion.ts +30 -1
  54. package/src/v2/registry/index.ts +3 -0
  55. package/src/v2/registry/registry.ts +19 -12
  56. package/src/v2/registry/registry_reader.ts +71 -0
  57. package/src/v2/registry/schema_public.ts +31 -9
  58. package/dist/config-DJqN5LSx.js +0 -3
  59. package/dist/config-DJqN5LSx.js.map +0 -1
  60. package/dist/config-rGaQLD-7.mjs +0 -1350
  61. package/dist/config-rGaQLD-7.mjs.map +0 -1
  62. package/dist/lib/storage.d.ts.map +0 -1
  63. /package/dist/{lib → io}/storage.d.ts +0 -0
  64. /package/src/{lib → io}/storage.test.ts +0 -0
  65. /package/src/{lib → io}/storage.ts +0 -0
@@ -0,0 +1,1587 @@
1
+ var rr = Object.defineProperty;
2
+ var sr = (t, e, r) => e in t ? rr(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r;
3
+ var re = (t, e, r) => sr(t, typeof e != "symbol" ? e + "" : e, r);
4
+ import { BlockPackMeta as z, ContentAbsoluteTextLocal as Ce, ContentAbsoluteBinaryLocal as oe, BlockPackMetaEmbeddedBase64 as nr, BlockPackMetaEmbeddedBytes as Nt, DescriptionContentText as ir, DescriptionContentBinary as ar, ContentRelativeText as Q, ContentRelativeBinary as ee, BlockComponents as Fe, ContentAbsoluteFolder as or, BlockComponentsManifest as ce, CreateBlockPackDescriptionSchema as H, BlockPackDescriptionManifest as q, addPrefixToRelative as cr, ContentRelative as He, BlockPackManifest as Pt, BlockPackManifestFile as lr, BlockPackDescriptionFromPackageJsonRaw as kt, SemVer as be, Sha256Schema as Lt, BlockPackIdNoVersion as fr } from "@milaboratories/pl-model-middle-layer";
5
+ import { z as P } from "zod";
6
+ import F from "node:path";
7
+ import V from "node:fs/promises";
8
+ import * as le from "mime-types";
9
+ import * as ur from "tar";
10
+ import { tryResolve as Tt } from "@milaboratories/resolve-helper";
11
+ import { notEmpty as At } from "@milaboratories/ts-helpers";
12
+ import { randomUUID as Ct } from "node:crypto";
13
+ import pr from "yaml";
14
+ import * as We from "node:os";
15
+ import U from "node:path/posix";
16
+ import { paginateListObjectsV2 as hr, S3 as gr } from "@aws-sdk/client-s3";
17
+ import * as K from "node:fs";
18
+ function dr(t) {
19
+ return P.string().transform((e, r) => {
20
+ const s = Tt(t, e);
21
+ return s === void 0 ? (r.addIssue({
22
+ code: P.ZodIssueCode.custom,
23
+ message: `Can't resolve ${e} against ${t}`
24
+ }), P.NEVER) : {
25
+ type: "absolute-file",
26
+ file: s
27
+ };
28
+ });
29
+ }
30
+ function mr(t, ...e) {
31
+ return P.string().transform((r, s) => {
32
+ const a = r.endsWith("/") ? r : `${r}/`;
33
+ for (const o of e) {
34
+ const c = Tt(t, a + o);
35
+ if (c !== void 0) {
36
+ if (!c.endsWith(o))
37
+ throw new Error(`Unexpected resolve result ${c} with index file ${o}`);
38
+ return {
39
+ type: "absolute-folder",
40
+ folder: c.slice(0, c.length - o.length)
41
+ };
42
+ }
43
+ }
44
+ return s.addIssue({
45
+ code: P.ZodIssueCode.custom,
46
+ message: `Can't resolve ${r} folder against ${t}, no index file found (${e.join(", ")})`
47
+ }), P.NEVER;
48
+ });
49
+ }
50
+ function Ye(t) {
51
+ return (e) => e.type === "relative" ? { type: "absolute-file", file: F.resolve(t, e.path) } : e;
52
+ }
53
+ function Ft() {
54
+ return async (t) => t.type === "absolute-file" ? await V.readFile(t.file, { encoding: "utf-8" }) : t.content;
55
+ }
56
+ function $r() {
57
+ return async (t) => {
58
+ if (t.type === "absolute-file") {
59
+ const e = le.lookup(t.file);
60
+ if (!e) throw new Error(`Can't recognize mime type of the file: ${t.file}.`);
61
+ return {
62
+ type: "explicit-base64",
63
+ mimeType: e,
64
+ content: await V.readFile(t.file, { encoding: "base64" })
65
+ };
66
+ } else return t;
67
+ };
68
+ }
69
+ function Er() {
70
+ return async (t) => {
71
+ if (t.type === "absolute-file") {
72
+ const e = le.lookup(t.file);
73
+ if (!e) throw new Error(`Can't recognize mime type of the file: ${t.file}.`);
74
+ return {
75
+ type: "explicit-bytes",
76
+ mimeType: e,
77
+ content: Buffer.from(await V.readFile(t.file))
78
+ };
79
+ } else return t.type === "explicit-base64" ? {
80
+ type: "explicit-bytes",
81
+ mimeType: t.mimeType,
82
+ content: Buffer.from(t.content, "base64")
83
+ } : t;
84
+ };
85
+ }
86
+ function Pe(t, e) {
87
+ return async (r) => {
88
+ if (r.type === "absolute-file") {
89
+ const s = F.basename(r.file), a = F.resolve(t, s);
90
+ return e == null || e.push(s), await V.cp(r.file, a), { type: "relative", path: s };
91
+ } else return r;
92
+ };
93
+ }
94
+ function vr(t, e, r) {
95
+ if (!e.endsWith(".tgz")) throw new Error(`Unexpected tgz file name: ${e}`);
96
+ return async (s) => {
97
+ const a = F.resolve(t, e);
98
+ return await ur.create(
99
+ {
100
+ gzip: !0,
101
+ file: a,
102
+ cwd: s.folder
103
+ },
104
+ [s.folder]
105
+ ), r == null || r.push(e), { type: "relative", path: e };
106
+ };
107
+ }
108
+ function _e(t) {
109
+ return async (e) => e.type === "explicit-string" ? e : { type: "explicit-string", content: (await t(e.path)).toString("utf8") };
110
+ }
111
+ function wr(t) {
112
+ return async (e) => e.type === "explicit-string" ? e.content : (await t(e.path)).toString("utf8");
113
+ }
114
+ function Qi(t) {
115
+ return async (e) => {
116
+ if (e.type === "explicit-base64") return e;
117
+ const r = le.lookup(e.path);
118
+ if (!r) throw new Error(`Can't recognize mime type of the file: ${e.path}.`);
119
+ return {
120
+ type: "explicit-base64",
121
+ mimeType: r,
122
+ content: (await t(e.path)).toString("base64")
123
+ };
124
+ };
125
+ }
126
+ function fe(t) {
127
+ return async (e) => {
128
+ if (e.type === "explicit-base64")
129
+ return {
130
+ type: "explicit-bytes",
131
+ mimeType: e.mimeType,
132
+ content: Buffer.from(e.content, "base64")
133
+ };
134
+ const r = le.lookup(e.path);
135
+ if (!r) throw new Error(`Can't recognize mime type of the file: ${e.path}.`);
136
+ return {
137
+ type: "explicit-bytes",
138
+ mimeType: r,
139
+ content: await t(e.path)
140
+ };
141
+ };
142
+ }
143
+ function Rr(t) {
144
+ return z(
145
+ ir.transform(Ye(t)),
146
+ ar.transform(Ye(t))
147
+ );
148
+ }
149
+ function Sr(t, e) {
150
+ return z(
151
+ Ce.transform(Pe(t, e)),
152
+ oe.transform(Pe(t, e))
153
+ );
154
+ }
155
+ const ea = z(
156
+ Ce.transform(Ft()),
157
+ oe.transform($r())
158
+ ).pipe(nr), ta = z(
159
+ Ce.transform(Ft()),
160
+ oe.transform(Er())
161
+ ).pipe(Nt);
162
+ function ra(t) {
163
+ return z(
164
+ Q.transform(wr(t)),
165
+ ee.transform(fe(t))
166
+ ).pipe(Nt);
167
+ }
168
+ function yr(t) {
169
+ return Fe(
170
+ dr(t),
171
+ mr(t, "index.html")
172
+ );
173
+ }
174
+ function Ir(t, e) {
175
+ return Fe(
176
+ oe.transform(Pe(t, e)),
177
+ or.transform(vr(t, "ui.tgz", e))
178
+ ).pipe(ce);
179
+ }
180
+ function bt(t) {
181
+ return H(
182
+ yr(t),
183
+ Rr(t)
184
+ );
185
+ }
186
+ function Or(t, e) {
187
+ return H(
188
+ Ir(t, e),
189
+ Sr(t, e)
190
+ ).pipe(q);
191
+ }
192
+ function Ke(t) {
193
+ const e = cr(t);
194
+ return q.pipe(
195
+ H(
196
+ Fe(
197
+ He.transform(e),
198
+ He.transform(e)
199
+ ),
200
+ z(
201
+ Q.transform(e),
202
+ ee.transform(e)
203
+ )
204
+ )
205
+ ).pipe(q);
206
+ }
207
+ async function sa(t, e) {
208
+ await V.mkdir(e, { recursive: !0 });
209
+ const r = [], s = await Or(e, r).parseAsync(t), a = await Promise.all(
210
+ r.map(async (c) => {
211
+ const $ = await V.readFile(F.resolve(e, c)), n = Buffer.from(await crypto.subtle.digest("sha-256", $)).toString("hex");
212
+ return { name: c, size: $.length, sha256: n };
213
+ })
214
+ ), o = Pt.parse({
215
+ schema: "v2",
216
+ description: s,
217
+ files: a
218
+ });
219
+ return await V.writeFile(F.resolve(e, lr), JSON.stringify(o)), o;
220
+ }
221
+ async function De(t, e) {
222
+ try {
223
+ return e(await V.readFile(t));
224
+ } catch (r) {
225
+ if (r.code == "ENOENT") return;
226
+ throw new Error("", { cause: r });
227
+ }
228
+ }
229
+ const ke = "block", Nr = /(?:@[a-zA-Z0-9-.]+\/)?(?<organization>[a-zA-Z0-9-]+)\.(?<name>[a-zA-Z0-9-]+)/;
230
+ function _t(t) {
231
+ const e = t.match(Nr);
232
+ if (!e)
233
+ throw new Error(
234
+ `Malformed package name (${t}), can't infer organization and block pack name.`
235
+ );
236
+ const { name: r, organization: s } = e.groups;
237
+ return { name: r, organization: s };
238
+ }
239
+ async function na(t) {
240
+ const e = F.resolve(t, "package.json");
241
+ try {
242
+ const r = await De(
243
+ e,
244
+ (c) => JSON.parse(c.toString("utf-8"))
245
+ );
246
+ if (r === void 0) return;
247
+ const s = r[ke];
248
+ if (s === void 0) return;
249
+ const a = {
250
+ ...kt.parse(s),
251
+ id: {
252
+ ..._t(
253
+ At(r.name, `"name" not found in ${e}`)
254
+ ),
255
+ version: be.parse(r.version)
256
+ }
257
+ }, o = await bt(t).safeParseAsync(a);
258
+ return o.success ? o.data : void 0;
259
+ } catch {
260
+ return;
261
+ }
262
+ }
263
+ async function Pr(t) {
264
+ const e = F.resolve(t, "package.json"), r = JSON.parse(await V.readFile(e, { encoding: "utf-8" })), s = r[ke];
265
+ if (s === void 0)
266
+ throw new Error(
267
+ `Block description (field ${ke}) not found in ${e}.`
268
+ );
269
+ return {
270
+ ...kt.parse(s),
271
+ id: {
272
+ ..._t(
273
+ At(r.name, `"name" not found in ${e}`)
274
+ ),
275
+ version: be.parse(r.version)
276
+ }
277
+ };
278
+ }
279
+ async function ia(t) {
280
+ const e = await Pr(t);
281
+ return await bt(t).parseAsync(e);
282
+ }
283
+ function kr(t) {
284
+ return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t;
285
+ }
286
+ var Le = { exports: {} };
287
+ const Lr = "2.0.0", Dt = 256, Tr = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */
288
+ 9007199254740991, Ar = 16, Cr = Dt - 6, Fr = [
289
+ "major",
290
+ "premajor",
291
+ "minor",
292
+ "preminor",
293
+ "patch",
294
+ "prepatch",
295
+ "prerelease"
296
+ ];
297
+ var ue = {
298
+ MAX_LENGTH: Dt,
299
+ MAX_SAFE_COMPONENT_LENGTH: Ar,
300
+ MAX_SAFE_BUILD_LENGTH: Cr,
301
+ MAX_SAFE_INTEGER: Tr,
302
+ RELEASE_TYPES: Fr,
303
+ SEMVER_SPEC_VERSION: Lr,
304
+ FLAG_INCLUDE_PRERELEASE: 1,
305
+ FLAG_LOOSE: 2
306
+ };
307
+ const br = typeof process == "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...t) => console.error("SEMVER", ...t) : () => {
308
+ };
309
+ var pe = br;
310
+ (function(t, e) {
311
+ const {
312
+ MAX_SAFE_COMPONENT_LENGTH: r,
313
+ MAX_SAFE_BUILD_LENGTH: s,
314
+ MAX_LENGTH: a
315
+ } = ue, o = pe;
316
+ e = t.exports = {};
317
+ const c = e.re = [], $ = e.safeRe = [], n = e.src = [], i = e.t = {};
318
+ let f = 0;
319
+ const p = "[a-zA-Z0-9-]", S = [
320
+ ["\\s", 1],
321
+ ["\\d", a],
322
+ [p, s]
323
+ ], g = (I) => {
324
+ for (const [k, O] of S)
325
+ I = I.split(`${k}*`).join(`${k}{0,${O}}`).split(`${k}+`).join(`${k}{1,${O}}`);
326
+ return I;
327
+ }, u = (I, k, O) => {
328
+ const L = g(k), w = f++;
329
+ o(I, w, k), i[I] = w, n[w] = k, c[w] = new RegExp(k, O ? "g" : void 0), $[w] = new RegExp(L, O ? "g" : void 0);
330
+ };
331
+ u("NUMERICIDENTIFIER", "0|[1-9]\\d*"), u("NUMERICIDENTIFIERLOOSE", "\\d+"), u("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${p}*`), u("MAINVERSION", `(${n[i.NUMERICIDENTIFIER]})\\.(${n[i.NUMERICIDENTIFIER]})\\.(${n[i.NUMERICIDENTIFIER]})`), u("MAINVERSIONLOOSE", `(${n[i.NUMERICIDENTIFIERLOOSE]})\\.(${n[i.NUMERICIDENTIFIERLOOSE]})\\.(${n[i.NUMERICIDENTIFIERLOOSE]})`), u("PRERELEASEIDENTIFIER", `(?:${n[i.NUMERICIDENTIFIER]}|${n[i.NONNUMERICIDENTIFIER]})`), u("PRERELEASEIDENTIFIERLOOSE", `(?:${n[i.NUMERICIDENTIFIERLOOSE]}|${n[i.NONNUMERICIDENTIFIER]})`), u("PRERELEASE", `(?:-(${n[i.PRERELEASEIDENTIFIER]}(?:\\.${n[i.PRERELEASEIDENTIFIER]})*))`), u("PRERELEASELOOSE", `(?:-?(${n[i.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${n[i.PRERELEASEIDENTIFIERLOOSE]})*))`), u("BUILDIDENTIFIER", `${p}+`), u("BUILD", `(?:\\+(${n[i.BUILDIDENTIFIER]}(?:\\.${n[i.BUILDIDENTIFIER]})*))`), u("FULLPLAIN", `v?${n[i.MAINVERSION]}${n[i.PRERELEASE]}?${n[i.BUILD]}?`), u("FULL", `^${n[i.FULLPLAIN]}$`), u("LOOSEPLAIN", `[v=\\s]*${n[i.MAINVERSIONLOOSE]}${n[i.PRERELEASELOOSE]}?${n[i.BUILD]}?`), u("LOOSE", `^${n[i.LOOSEPLAIN]}$`), u("GTLT", "((?:<|>)?=?)"), u("XRANGEIDENTIFIERLOOSE", `${n[i.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`), u("XRANGEIDENTIFIER", `${n[i.NUMERICIDENTIFIER]}|x|X|\\*`), u("XRANGEPLAIN", `[v=\\s]*(${n[i.XRANGEIDENTIFIER]})(?:\\.(${n[i.XRANGEIDENTIFIER]})(?:\\.(${n[i.XRANGEIDENTIFIER]})(?:${n[i.PRERELEASE]})?${n[i.BUILD]}?)?)?`), u("XRANGEPLAINLOOSE", `[v=\\s]*(${n[i.XRANGEIDENTIFIERLOOSE]})(?:\\.(${n[i.XRANGEIDENTIFIERLOOSE]})(?:\\.(${n[i.XRANGEIDENTIFIERLOOSE]})(?:${n[i.PRERELEASELOOSE]})?${n[i.BUILD]}?)?)?`), u("XRANGE", `^${n[i.GTLT]}\\s*${n[i.XRANGEPLAIN]}$`), u("XRANGELOOSE", `^${n[i.GTLT]}\\s*${n[i.XRANGEPLAINLOOSE]}$`), u("COERCEPLAIN", `(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?`), u("COERCE", `${n[i.COERCEPLAIN]}(?:$|[^\\d])`), u("COERCEFULL", n[i.COERCEPLAIN] + `(?:${n[i.PRERELEASE]})?(?:${n[i.BUILD]})?(?:$|[^\\d])`), u("COERCERTL", n[i.COERCE], !0), u("COERCERTLFULL", n[i.COERCEFULL], !0), u("LONETILDE", "(?:~>?)"), u("TILDETRIM", `(\\s*)${n[i.LONETILDE]}\\s+`, !0), e.tildeTrimReplace = "$1~", u("TILDE", `^${n[i.LONETILDE]}${n[i.XRANGEPLAIN]}$`), u("TILDELOOSE", `^${n[i.LONETILDE]}${n[i.XRANGEPLAINLOOSE]}$`), u("LONECARET", "(?:\\^)"), u("CARETTRIM", `(\\s*)${n[i.LONECARET]}\\s+`, !0), e.caretTrimReplace = "$1^", u("CARET", `^${n[i.LONECARET]}${n[i.XRANGEPLAIN]}$`), u("CARETLOOSE", `^${n[i.LONECARET]}${n[i.XRANGEPLAINLOOSE]}$`), u("COMPARATORLOOSE", `^${n[i.GTLT]}\\s*(${n[i.LOOSEPLAIN]})$|^$`), u("COMPARATOR", `^${n[i.GTLT]}\\s*(${n[i.FULLPLAIN]})$|^$`), u("COMPARATORTRIM", `(\\s*)${n[i.GTLT]}\\s*(${n[i.LOOSEPLAIN]}|${n[i.XRANGEPLAIN]})`, !0), e.comparatorTrimReplace = "$1$2$3", u("HYPHENRANGE", `^\\s*(${n[i.XRANGEPLAIN]})\\s+-\\s+(${n[i.XRANGEPLAIN]})\\s*$`), u("HYPHENRANGELOOSE", `^\\s*(${n[i.XRANGEPLAINLOOSE]})\\s+-\\s+(${n[i.XRANGEPLAINLOOSE]})\\s*$`), u("STAR", "(<|>)?=?\\s*\\*"), u("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"), u("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$");
332
+ })(Le, Le.exports);
333
+ var te = Le.exports;
334
+ const _r = Object.freeze({ loose: !0 }), Dr = Object.freeze({}), jr = (t) => t ? typeof t != "object" ? _r : t : Dr;
335
+ var je = jr;
336
+ const Ze = /^[0-9]+$/, jt = (t, e) => {
337
+ const r = Ze.test(t), s = Ze.test(e);
338
+ return r && s && (t = +t, e = +e), t === e ? 0 : r && !s ? -1 : s && !r ? 1 : t < e ? -1 : 1;
339
+ }, Br = (t, e) => jt(e, t);
340
+ var Bt = {
341
+ compareIdentifiers: jt,
342
+ rcompareIdentifiers: Br
343
+ };
344
+ const se = pe, { MAX_LENGTH: Qe, MAX_SAFE_INTEGER: ne } = ue, { safeRe: et, t: tt } = te, Gr = je, { compareIdentifiers: J } = Bt;
345
+ let xr = class G {
346
+ constructor(e, r) {
347
+ if (r = Gr(r), e instanceof G) {
348
+ if (e.loose === !!r.loose && e.includePrerelease === !!r.includePrerelease)
349
+ return e;
350
+ e = e.version;
351
+ } else if (typeof e != "string")
352
+ throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);
353
+ if (e.length > Qe)
354
+ throw new TypeError(
355
+ `version is longer than ${Qe} characters`
356
+ );
357
+ se("SemVer", e, r), this.options = r, this.loose = !!r.loose, this.includePrerelease = !!r.includePrerelease;
358
+ const s = e.trim().match(r.loose ? et[tt.LOOSE] : et[tt.FULL]);
359
+ if (!s)
360
+ throw new TypeError(`Invalid Version: ${e}`);
361
+ if (this.raw = e, this.major = +s[1], this.minor = +s[2], this.patch = +s[3], this.major > ne || this.major < 0)
362
+ throw new TypeError("Invalid major version");
363
+ if (this.minor > ne || this.minor < 0)
364
+ throw new TypeError("Invalid minor version");
365
+ if (this.patch > ne || this.patch < 0)
366
+ throw new TypeError("Invalid patch version");
367
+ s[4] ? this.prerelease = s[4].split(".").map((a) => {
368
+ if (/^[0-9]+$/.test(a)) {
369
+ const o = +a;
370
+ if (o >= 0 && o < ne)
371
+ return o;
372
+ }
373
+ return a;
374
+ }) : this.prerelease = [], this.build = s[5] ? s[5].split(".") : [], this.format();
375
+ }
376
+ format() {
377
+ return this.version = `${this.major}.${this.minor}.${this.patch}`, this.prerelease.length && (this.version += `-${this.prerelease.join(".")}`), this.version;
378
+ }
379
+ toString() {
380
+ return this.version;
381
+ }
382
+ compare(e) {
383
+ if (se("SemVer.compare", this.version, this.options, e), !(e instanceof G)) {
384
+ if (typeof e == "string" && e === this.version)
385
+ return 0;
386
+ e = new G(e, this.options);
387
+ }
388
+ return e.version === this.version ? 0 : this.compareMain(e) || this.comparePre(e);
389
+ }
390
+ compareMain(e) {
391
+ return e instanceof G || (e = new G(e, this.options)), J(this.major, e.major) || J(this.minor, e.minor) || J(this.patch, e.patch);
392
+ }
393
+ comparePre(e) {
394
+ if (e instanceof G || (e = new G(e, this.options)), this.prerelease.length && !e.prerelease.length)
395
+ return -1;
396
+ if (!this.prerelease.length && e.prerelease.length)
397
+ return 1;
398
+ if (!this.prerelease.length && !e.prerelease.length)
399
+ return 0;
400
+ let r = 0;
401
+ do {
402
+ const s = this.prerelease[r], a = e.prerelease[r];
403
+ if (se("prerelease compare", r, s, a), s === void 0 && a === void 0)
404
+ return 0;
405
+ if (a === void 0)
406
+ return 1;
407
+ if (s === void 0)
408
+ return -1;
409
+ if (s === a)
410
+ continue;
411
+ return J(s, a);
412
+ } while (++r);
413
+ }
414
+ compareBuild(e) {
415
+ e instanceof G || (e = new G(e, this.options));
416
+ let r = 0;
417
+ do {
418
+ const s = this.build[r], a = e.build[r];
419
+ if (se("build compare", r, s, a), s === void 0 && a === void 0)
420
+ return 0;
421
+ if (a === void 0)
422
+ return 1;
423
+ if (s === void 0)
424
+ return -1;
425
+ if (s === a)
426
+ continue;
427
+ return J(s, a);
428
+ } while (++r);
429
+ }
430
+ // preminor will bump the version up to the next minor release, and immediately
431
+ // down to pre-release. premajor and prepatch work the same way.
432
+ inc(e, r, s) {
433
+ switch (e) {
434
+ case "premajor":
435
+ this.prerelease.length = 0, this.patch = 0, this.minor = 0, this.major++, this.inc("pre", r, s);
436
+ break;
437
+ case "preminor":
438
+ this.prerelease.length = 0, this.patch = 0, this.minor++, this.inc("pre", r, s);
439
+ break;
440
+ case "prepatch":
441
+ this.prerelease.length = 0, this.inc("patch", r, s), this.inc("pre", r, s);
442
+ break;
443
+ case "prerelease":
444
+ this.prerelease.length === 0 && this.inc("patch", r, s), this.inc("pre", r, s);
445
+ break;
446
+ case "major":
447
+ (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) && this.major++, this.minor = 0, this.patch = 0, this.prerelease = [];
448
+ break;
449
+ case "minor":
450
+ (this.patch !== 0 || this.prerelease.length === 0) && this.minor++, this.patch = 0, this.prerelease = [];
451
+ break;
452
+ case "patch":
453
+ this.prerelease.length === 0 && this.patch++, this.prerelease = [];
454
+ break;
455
+ case "pre": {
456
+ const a = Number(s) ? 1 : 0;
457
+ if (!r && s === !1)
458
+ throw new Error("invalid increment argument: identifier is empty");
459
+ if (this.prerelease.length === 0)
460
+ this.prerelease = [a];
461
+ else {
462
+ let o = this.prerelease.length;
463
+ for (; --o >= 0; )
464
+ typeof this.prerelease[o] == "number" && (this.prerelease[o]++, o = -2);
465
+ if (o === -1) {
466
+ if (r === this.prerelease.join(".") && s === !1)
467
+ throw new Error("invalid increment argument: identifier already exists");
468
+ this.prerelease.push(a);
469
+ }
470
+ }
471
+ if (r) {
472
+ let o = [r, a];
473
+ s === !1 && (o = [r]), J(this.prerelease[0], r) === 0 ? isNaN(this.prerelease[1]) && (this.prerelease = o) : this.prerelease = o;
474
+ }
475
+ break;
476
+ }
477
+ default:
478
+ throw new Error(`invalid increment argument: ${e}`);
479
+ }
480
+ return this.raw = this.format(), this.build.length && (this.raw += `+${this.build.join(".")}`), this;
481
+ }
482
+ };
483
+ var b = xr;
484
+ const rt = b, Ur = (t, e, r = !1) => {
485
+ if (t instanceof rt)
486
+ return t;
487
+ try {
488
+ return new rt(t, e);
489
+ } catch (s) {
490
+ if (!r)
491
+ return null;
492
+ throw s;
493
+ }
494
+ };
495
+ var W = Ur;
496
+ const Vr = W, zr = (t, e) => {
497
+ const r = Vr(t, e);
498
+ return r ? r.version : null;
499
+ };
500
+ var Xr = zr;
501
+ const Mr = W, Jr = (t, e) => {
502
+ const r = Mr(t.trim().replace(/^[=v]+/, ""), e);
503
+ return r ? r.version : null;
504
+ };
505
+ var qr = Jr;
506
+ const st = b, Hr = (t, e, r, s, a) => {
507
+ typeof r == "string" && (a = s, s = r, r = void 0);
508
+ try {
509
+ return new st(
510
+ t instanceof st ? t.version : t,
511
+ r
512
+ ).inc(e, s, a).version;
513
+ } catch {
514
+ return null;
515
+ }
516
+ };
517
+ var Wr = Hr;
518
+ const nt = W, Yr = (t, e) => {
519
+ const r = nt(t, null, !0), s = nt(e, null, !0), a = r.compare(s);
520
+ if (a === 0)
521
+ return null;
522
+ const o = a > 0, c = o ? r : s, $ = o ? s : r, n = !!c.prerelease.length;
523
+ if (!!$.prerelease.length && !n)
524
+ return !$.patch && !$.minor ? "major" : c.patch ? "patch" : c.minor ? "minor" : "major";
525
+ const f = n ? "pre" : "";
526
+ return r.major !== s.major ? f + "major" : r.minor !== s.minor ? f + "minor" : r.patch !== s.patch ? f + "patch" : "prerelease";
527
+ };
528
+ var Kr = Yr;
529
+ const Zr = b, Qr = (t, e) => new Zr(t, e).major;
530
+ var es = Qr;
531
+ const ts = b, rs = (t, e) => new ts(t, e).minor;
532
+ var ss = rs;
533
+ const ns = b, is = (t, e) => new ns(t, e).patch;
534
+ var as = is;
535
+ const os = W, cs = (t, e) => {
536
+ const r = os(t, e);
537
+ return r && r.prerelease.length ? r.prerelease : null;
538
+ };
539
+ var ls = cs;
540
+ const it = b, fs = (t, e, r) => new it(t, r).compare(new it(e, r));
541
+ var j = fs;
542
+ const us = j, ps = (t, e, r) => us(e, t, r);
543
+ var hs = ps;
544
+ const gs = j, ds = (t, e) => gs(t, e, !0);
545
+ var ms = ds;
546
+ const at = b, $s = (t, e, r) => {
547
+ const s = new at(t, r), a = new at(e, r);
548
+ return s.compare(a) || s.compareBuild(a);
549
+ };
550
+ var Be = $s;
551
+ const Es = Be, vs = (t, e) => t.sort((r, s) => Es(r, s, e));
552
+ var ws = vs;
553
+ const Rs = Be, Ss = (t, e) => t.sort((r, s) => Rs(s, r, e));
554
+ var ys = Ss;
555
+ const Is = j, Os = (t, e, r) => Is(t, e, r) > 0;
556
+ var he = Os;
557
+ const Ns = j, Ps = (t, e, r) => Ns(t, e, r) < 0;
558
+ var Ge = Ps;
559
+ const ks = j, Ls = (t, e, r) => ks(t, e, r) === 0;
560
+ var Gt = Ls;
561
+ const Ts = j, As = (t, e, r) => Ts(t, e, r) !== 0;
562
+ var xt = As;
563
+ const Cs = j, Fs = (t, e, r) => Cs(t, e, r) >= 0;
564
+ var xe = Fs;
565
+ const bs = j, _s = (t, e, r) => bs(t, e, r) <= 0;
566
+ var Ue = _s;
567
+ const Ds = Gt, js = xt, Bs = he, Gs = xe, xs = Ge, Us = Ue, Vs = (t, e, r, s) => {
568
+ switch (e) {
569
+ case "===":
570
+ return typeof t == "object" && (t = t.version), typeof r == "object" && (r = r.version), t === r;
571
+ case "!==":
572
+ return typeof t == "object" && (t = t.version), typeof r == "object" && (r = r.version), t !== r;
573
+ case "":
574
+ case "=":
575
+ case "==":
576
+ return Ds(t, r, s);
577
+ case "!=":
578
+ return js(t, r, s);
579
+ case ">":
580
+ return Bs(t, r, s);
581
+ case ">=":
582
+ return Gs(t, r, s);
583
+ case "<":
584
+ return xs(t, r, s);
585
+ case "<=":
586
+ return Us(t, r, s);
587
+ default:
588
+ throw new TypeError(`Invalid operator: ${e}`);
589
+ }
590
+ };
591
+ var Ut = Vs;
592
+ const zs = b, Xs = W, { safeRe: ie, t: ae } = te, Ms = (t, e) => {
593
+ if (t instanceof zs)
594
+ return t;
595
+ if (typeof t == "number" && (t = String(t)), typeof t != "string")
596
+ return null;
597
+ e = e || {};
598
+ let r = null;
599
+ if (!e.rtl)
600
+ r = t.match(e.includePrerelease ? ie[ae.COERCEFULL] : ie[ae.COERCE]);
601
+ else {
602
+ const n = e.includePrerelease ? ie[ae.COERCERTLFULL] : ie[ae.COERCERTL];
603
+ let i;
604
+ for (; (i = n.exec(t)) && (!r || r.index + r[0].length !== t.length); )
605
+ (!r || i.index + i[0].length !== r.index + r[0].length) && (r = i), n.lastIndex = i.index + i[1].length + i[2].length;
606
+ n.lastIndex = -1;
607
+ }
608
+ if (r === null)
609
+ return null;
610
+ const s = r[2], a = r[3] || "0", o = r[4] || "0", c = e.includePrerelease && r[5] ? `-${r[5]}` : "", $ = e.includePrerelease && r[6] ? `+${r[6]}` : "";
611
+ return Xs(`${s}.${a}.${o}${c}${$}`, e);
612
+ };
613
+ var Js = Ms;
614
+ class qs {
615
+ constructor() {
616
+ this.max = 1e3, this.map = /* @__PURE__ */ new Map();
617
+ }
618
+ get(e) {
619
+ const r = this.map.get(e);
620
+ if (r !== void 0)
621
+ return this.map.delete(e), this.map.set(e, r), r;
622
+ }
623
+ delete(e) {
624
+ return this.map.delete(e);
625
+ }
626
+ set(e, r) {
627
+ if (!this.delete(e) && r !== void 0) {
628
+ if (this.map.size >= this.max) {
629
+ const a = this.map.keys().next().value;
630
+ this.delete(a);
631
+ }
632
+ this.map.set(e, r);
633
+ }
634
+ return this;
635
+ }
636
+ }
637
+ var Hs = qs, $e, ot;
638
+ function B() {
639
+ if (ot) return $e;
640
+ ot = 1;
641
+ const t = /\s+/g;
642
+ class e {
643
+ constructor(l, E) {
644
+ if (E = a(E), l instanceof e)
645
+ return l.loose === !!E.loose && l.includePrerelease === !!E.includePrerelease ? l : new e(l.raw, E);
646
+ if (l instanceof o)
647
+ return this.raw = l.value, this.set = [[l]], this.formatted = void 0, this;
648
+ if (this.options = E, this.loose = !!E.loose, this.includePrerelease = !!E.includePrerelease, this.raw = l.trim().replace(t, " "), this.set = this.raw.split("||").map((d) => this.parseRange(d.trim())).filter((d) => d.length), !this.set.length)
649
+ throw new TypeError(`Invalid SemVer Range: ${this.raw}`);
650
+ if (this.set.length > 1) {
651
+ const d = this.set[0];
652
+ if (this.set = this.set.filter((v) => !I(v[0])), this.set.length === 0)
653
+ this.set = [d];
654
+ else if (this.set.length > 1) {
655
+ for (const v of this.set)
656
+ if (v.length === 1 && k(v[0])) {
657
+ this.set = [v];
658
+ break;
659
+ }
660
+ }
661
+ }
662
+ this.formatted = void 0;
663
+ }
664
+ get range() {
665
+ if (this.formatted === void 0) {
666
+ this.formatted = "";
667
+ for (let l = 0; l < this.set.length; l++) {
668
+ l > 0 && (this.formatted += "||");
669
+ const E = this.set[l];
670
+ for (let d = 0; d < E.length; d++)
671
+ d > 0 && (this.formatted += " "), this.formatted += E[d].toString().trim();
672
+ }
673
+ }
674
+ return this.formatted;
675
+ }
676
+ format() {
677
+ return this.range;
678
+ }
679
+ toString() {
680
+ return this.range;
681
+ }
682
+ parseRange(l) {
683
+ const d = ((this.options.includePrerelease && g) | (this.options.loose && u)) + ":" + l, v = s.get(d);
684
+ if (v)
685
+ return v;
686
+ const m = this.options.loose, R = m ? n[i.HYPHENRANGELOOSE] : n[i.HYPHENRANGE];
687
+ l = l.replace(R, er(this.options.includePrerelease)), c("hyphen replace", l), l = l.replace(n[i.COMPARATORTRIM], f), c("comparator trim", l), l = l.replace(n[i.TILDETRIM], p), c("tilde trim", l), l = l.replace(n[i.CARETTRIM], S), c("caret trim", l);
688
+ let N = l.split(" ").map((C) => L(C, this.options)).join(" ").split(/\s+/).map((C) => Qt(C, this.options));
689
+ m && (N = N.filter((C) => (c("loose invalid filter", C, this.options), !!C.match(n[i.COMPARATORLOOSE])))), c("range list", N);
690
+ const y = /* @__PURE__ */ new Map(), T = N.map((C) => new o(C, this.options));
691
+ for (const C of T) {
692
+ if (I(C))
693
+ return [C];
694
+ y.set(C.value, C);
695
+ }
696
+ y.size > 1 && y.has("") && y.delete("");
697
+ const _ = [...y.values()];
698
+ return s.set(d, _), _;
699
+ }
700
+ intersects(l, E) {
701
+ if (!(l instanceof e))
702
+ throw new TypeError("a Range is required");
703
+ return this.set.some((d) => O(d, E) && l.set.some((v) => O(v, E) && d.every((m) => v.every((R) => m.intersects(R, E)))));
704
+ }
705
+ // if ANY of the sets match ALL of its comparators, then pass
706
+ test(l) {
707
+ if (!l)
708
+ return !1;
709
+ if (typeof l == "string")
710
+ try {
711
+ l = new $(l, this.options);
712
+ } catch {
713
+ return !1;
714
+ }
715
+ for (let E = 0; E < this.set.length; E++)
716
+ if (tr(this.set[E], l, this.options))
717
+ return !0;
718
+ return !1;
719
+ }
720
+ }
721
+ $e = e;
722
+ const r = Hs, s = new r(), a = je, o = ge(), c = pe, $ = b, {
723
+ safeRe: n,
724
+ t: i,
725
+ comparatorTrimReplace: f,
726
+ tildeTrimReplace: p,
727
+ caretTrimReplace: S
728
+ } = te, { FLAG_INCLUDE_PRERELEASE: g, FLAG_LOOSE: u } = ue, I = (h) => h.value === "<0.0.0-0", k = (h) => h.value === "", O = (h, l) => {
729
+ let E = !0;
730
+ const d = h.slice();
731
+ let v = d.pop();
732
+ for (; E && d.length; )
733
+ E = d.every((m) => v.intersects(m, l)), v = d.pop();
734
+ return E;
735
+ }, L = (h, l) => (c("comp", h, l), h = x(h, l), c("caret", h), h = A(h, l), c("tildes", h), h = Yt(h, l), c("xrange", h), h = Zt(h, l), c("stars", h), h), w = (h) => !h || h.toLowerCase() === "x" || h === "*", A = (h, l) => h.trim().split(/\s+/).map((E) => D(E, l)).join(" "), D = (h, l) => {
736
+ const E = l.loose ? n[i.TILDELOOSE] : n[i.TILDE];
737
+ return h.replace(E, (d, v, m, R, N) => {
738
+ c("tilde", h, d, v, m, R, N);
739
+ let y;
740
+ return w(v) ? y = "" : w(m) ? y = `>=${v}.0.0 <${+v + 1}.0.0-0` : w(R) ? y = `>=${v}.${m}.0 <${v}.${+m + 1}.0-0` : N ? (c("replaceTilde pr", N), y = `>=${v}.${m}.${R}-${N} <${v}.${+m + 1}.0-0`) : y = `>=${v}.${m}.${R} <${v}.${+m + 1}.0-0`, c("tilde return", y), y;
741
+ });
742
+ }, x = (h, l) => h.trim().split(/\s+/).map((E) => X(E, l)).join(" "), X = (h, l) => {
743
+ c("caret", h, l);
744
+ const E = l.loose ? n[i.CARETLOOSE] : n[i.CARET], d = l.includePrerelease ? "-0" : "";
745
+ return h.replace(E, (v, m, R, N, y) => {
746
+ c("caret", h, v, m, R, N, y);
747
+ let T;
748
+ return w(m) ? T = "" : w(R) ? T = `>=${m}.0.0${d} <${+m + 1}.0.0-0` : w(N) ? m === "0" ? T = `>=${m}.${R}.0${d} <${m}.${+R + 1}.0-0` : T = `>=${m}.${R}.0${d} <${+m + 1}.0.0-0` : y ? (c("replaceCaret pr", y), m === "0" ? R === "0" ? T = `>=${m}.${R}.${N}-${y} <${m}.${R}.${+N + 1}-0` : T = `>=${m}.${R}.${N}-${y} <${m}.${+R + 1}.0-0` : T = `>=${m}.${R}.${N}-${y} <${+m + 1}.0.0-0`) : (c("no pr"), m === "0" ? R === "0" ? T = `>=${m}.${R}.${N}${d} <${m}.${R}.${+N + 1}-0` : T = `>=${m}.${R}.${N}${d} <${m}.${+R + 1}.0-0` : T = `>=${m}.${R}.${N} <${+m + 1}.0.0-0`), c("caret return", T), T;
749
+ });
750
+ }, Yt = (h, l) => (c("replaceXRanges", h, l), h.split(/\s+/).map((E) => Kt(E, l)).join(" ")), Kt = (h, l) => {
751
+ h = h.trim();
752
+ const E = l.loose ? n[i.XRANGELOOSE] : n[i.XRANGE];
753
+ return h.replace(E, (d, v, m, R, N, y) => {
754
+ c("xRange", h, d, v, m, R, N, y);
755
+ const T = w(m), _ = T || w(R), C = _ || w(N), Y = C;
756
+ return v === "=" && Y && (v = ""), y = l.includePrerelease ? "-0" : "", T ? v === ">" || v === "<" ? d = "<0.0.0-0" : d = "*" : v && Y ? (_ && (R = 0), N = 0, v === ">" ? (v = ">=", _ ? (m = +m + 1, R = 0, N = 0) : (R = +R + 1, N = 0)) : v === "<=" && (v = "<", _ ? m = +m + 1 : R = +R + 1), v === "<" && (y = "-0"), d = `${v + m}.${R}.${N}${y}`) : _ ? d = `>=${m}.0.0${y} <${+m + 1}.0.0-0` : C && (d = `>=${m}.${R}.0${y} <${m}.${+R + 1}.0-0`), c("xRange return", d), d;
757
+ });
758
+ }, Zt = (h, l) => (c("replaceStars", h, l), h.trim().replace(n[i.STAR], "")), Qt = (h, l) => (c("replaceGTE0", h, l), h.trim().replace(n[l.includePrerelease ? i.GTE0PRE : i.GTE0], "")), er = (h) => (l, E, d, v, m, R, N, y, T, _, C, Y) => (w(d) ? E = "" : w(v) ? E = `>=${d}.0.0${h ? "-0" : ""}` : w(m) ? E = `>=${d}.${v}.0${h ? "-0" : ""}` : R ? E = `>=${E}` : E = `>=${E}${h ? "-0" : ""}`, w(T) ? y = "" : w(_) ? y = `<${+T + 1}.0.0-0` : w(C) ? y = `<${T}.${+_ + 1}.0-0` : Y ? y = `<=${T}.${_}.${C}-${Y}` : h ? y = `<${T}.${_}.${+C + 1}-0` : y = `<=${y}`, `${E} ${y}`.trim()), tr = (h, l, E) => {
759
+ for (let d = 0; d < h.length; d++)
760
+ if (!h[d].test(l))
761
+ return !1;
762
+ if (l.prerelease.length && !E.includePrerelease) {
763
+ for (let d = 0; d < h.length; d++)
764
+ if (c(h[d].semver), h[d].semver !== o.ANY && h[d].semver.prerelease.length > 0) {
765
+ const v = h[d].semver;
766
+ if (v.major === l.major && v.minor === l.minor && v.patch === l.patch)
767
+ return !0;
768
+ }
769
+ return !1;
770
+ }
771
+ return !0;
772
+ };
773
+ return $e;
774
+ }
775
+ var Ee, ct;
776
+ function ge() {
777
+ if (ct) return Ee;
778
+ ct = 1;
779
+ const t = Symbol("SemVer ANY");
780
+ class e {
781
+ static get ANY() {
782
+ return t;
783
+ }
784
+ constructor(f, p) {
785
+ if (p = r(p), f instanceof e) {
786
+ if (f.loose === !!p.loose)
787
+ return f;
788
+ f = f.value;
789
+ }
790
+ f = f.trim().split(/\s+/).join(" "), c("comparator", f, p), this.options = p, this.loose = !!p.loose, this.parse(f), this.semver === t ? this.value = "" : this.value = this.operator + this.semver.version, c("comp", this);
791
+ }
792
+ parse(f) {
793
+ const p = this.options.loose ? s[a.COMPARATORLOOSE] : s[a.COMPARATOR], S = f.match(p);
794
+ if (!S)
795
+ throw new TypeError(`Invalid comparator: ${f}`);
796
+ this.operator = S[1] !== void 0 ? S[1] : "", this.operator === "=" && (this.operator = ""), S[2] ? this.semver = new $(S[2], this.options.loose) : this.semver = t;
797
+ }
798
+ toString() {
799
+ return this.value;
800
+ }
801
+ test(f) {
802
+ if (c("Comparator.test", f, this.options.loose), this.semver === t || f === t)
803
+ return !0;
804
+ if (typeof f == "string")
805
+ try {
806
+ f = new $(f, this.options);
807
+ } catch {
808
+ return !1;
809
+ }
810
+ return o(f, this.operator, this.semver, this.options);
811
+ }
812
+ intersects(f, p) {
813
+ if (!(f instanceof e))
814
+ throw new TypeError("a Comparator is required");
815
+ return this.operator === "" ? this.value === "" ? !0 : new n(f.value, p).test(this.value) : f.operator === "" ? f.value === "" ? !0 : new n(this.value, p).test(f.semver) : (p = r(p), p.includePrerelease && (this.value === "<0.0.0-0" || f.value === "<0.0.0-0") || !p.includePrerelease && (this.value.startsWith("<0.0.0") || f.value.startsWith("<0.0.0")) ? !1 : !!(this.operator.startsWith(">") && f.operator.startsWith(">") || this.operator.startsWith("<") && f.operator.startsWith("<") || this.semver.version === f.semver.version && this.operator.includes("=") && f.operator.includes("=") || o(this.semver, "<", f.semver, p) && this.operator.startsWith(">") && f.operator.startsWith("<") || o(this.semver, ">", f.semver, p) && this.operator.startsWith("<") && f.operator.startsWith(">")));
816
+ }
817
+ }
818
+ Ee = e;
819
+ const r = je, { safeRe: s, t: a } = te, o = Ut, c = pe, $ = b, n = B();
820
+ return Ee;
821
+ }
822
+ const Ws = B(), Ys = (t, e, r) => {
823
+ try {
824
+ e = new Ws(e, r);
825
+ } catch {
826
+ return !1;
827
+ }
828
+ return e.test(t);
829
+ };
830
+ var de = Ys;
831
+ const Ks = B(), Zs = (t, e) => new Ks(t, e).set.map((r) => r.map((s) => s.value).join(" ").trim().split(" "));
832
+ var Qs = Zs;
833
+ const en = b, tn = B(), rn = (t, e, r) => {
834
+ let s = null, a = null, o = null;
835
+ try {
836
+ o = new tn(e, r);
837
+ } catch {
838
+ return null;
839
+ }
840
+ return t.forEach((c) => {
841
+ o.test(c) && (!s || a.compare(c) === -1) && (s = c, a = new en(s, r));
842
+ }), s;
843
+ };
844
+ var sn = rn;
845
+ const nn = b, an = B(), on = (t, e, r) => {
846
+ let s = null, a = null, o = null;
847
+ try {
848
+ o = new an(e, r);
849
+ } catch {
850
+ return null;
851
+ }
852
+ return t.forEach((c) => {
853
+ o.test(c) && (!s || a.compare(c) === 1) && (s = c, a = new nn(s, r));
854
+ }), s;
855
+ };
856
+ var cn = on;
857
+ const ve = b, ln = B(), lt = he, fn = (t, e) => {
858
+ t = new ln(t, e);
859
+ let r = new ve("0.0.0");
860
+ if (t.test(r) || (r = new ve("0.0.0-0"), t.test(r)))
861
+ return r;
862
+ r = null;
863
+ for (let s = 0; s < t.set.length; ++s) {
864
+ const a = t.set[s];
865
+ let o = null;
866
+ a.forEach((c) => {
867
+ const $ = new ve(c.semver.version);
868
+ switch (c.operator) {
869
+ case ">":
870
+ $.prerelease.length === 0 ? $.patch++ : $.prerelease.push(0), $.raw = $.format();
871
+ case "":
872
+ case ">=":
873
+ (!o || lt($, o)) && (o = $);
874
+ break;
875
+ case "<":
876
+ case "<=":
877
+ break;
878
+ default:
879
+ throw new Error(`Unexpected operation: ${c.operator}`);
880
+ }
881
+ }), o && (!r || lt(r, o)) && (r = o);
882
+ }
883
+ return r && t.test(r) ? r : null;
884
+ };
885
+ var un = fn;
886
+ const pn = B(), hn = (t, e) => {
887
+ try {
888
+ return new pn(t, e).range || "*";
889
+ } catch {
890
+ return null;
891
+ }
892
+ };
893
+ var gn = hn;
894
+ const dn = b, Vt = ge(), { ANY: mn } = Vt, $n = B(), En = de, ft = he, ut = Ge, vn = Ue, wn = xe, Rn = (t, e, r, s) => {
895
+ t = new dn(t, s), e = new $n(e, s);
896
+ let a, o, c, $, n;
897
+ switch (r) {
898
+ case ">":
899
+ a = ft, o = vn, c = ut, $ = ">", n = ">=";
900
+ break;
901
+ case "<":
902
+ a = ut, o = wn, c = ft, $ = "<", n = "<=";
903
+ break;
904
+ default:
905
+ throw new TypeError('Must provide a hilo val of "<" or ">"');
906
+ }
907
+ if (En(t, e, s))
908
+ return !1;
909
+ for (let i = 0; i < e.set.length; ++i) {
910
+ const f = e.set[i];
911
+ let p = null, S = null;
912
+ if (f.forEach((g) => {
913
+ g.semver === mn && (g = new Vt(">=0.0.0")), p = p || g, S = S || g, a(g.semver, p.semver, s) ? p = g : c(g.semver, S.semver, s) && (S = g);
914
+ }), p.operator === $ || p.operator === n || (!S.operator || S.operator === $) && o(t, S.semver))
915
+ return !1;
916
+ if (S.operator === n && c(t, S.semver))
917
+ return !1;
918
+ }
919
+ return !0;
920
+ };
921
+ var Ve = Rn;
922
+ const Sn = Ve, yn = (t, e, r) => Sn(t, e, ">", r);
923
+ var In = yn;
924
+ const On = Ve, Nn = (t, e, r) => On(t, e, "<", r);
925
+ var Pn = Nn;
926
+ const pt = B(), kn = (t, e, r) => (t = new pt(t, r), e = new pt(e, r), t.intersects(e, r));
927
+ var Ln = kn;
928
+ const Tn = de, An = j;
929
+ var Cn = (t, e, r) => {
930
+ const s = [];
931
+ let a = null, o = null;
932
+ const c = t.sort((f, p) => An(f, p, r));
933
+ for (const f of c)
934
+ Tn(f, e, r) ? (o = f, a || (a = f)) : (o && s.push([a, o]), o = null, a = null);
935
+ a && s.push([a, null]);
936
+ const $ = [];
937
+ for (const [f, p] of s)
938
+ f === p ? $.push(f) : !p && f === c[0] ? $.push("*") : p ? f === c[0] ? $.push(`<=${p}`) : $.push(`${f} - ${p}`) : $.push(`>=${f}`);
939
+ const n = $.join(" || "), i = typeof e.raw == "string" ? e.raw : String(e);
940
+ return n.length < i.length ? n : e;
941
+ };
942
+ const ht = B(), ze = ge(), { ANY: we } = ze, Z = de, Xe = j, Fn = (t, e, r = {}) => {
943
+ if (t === e)
944
+ return !0;
945
+ t = new ht(t, r), e = new ht(e, r);
946
+ let s = !1;
947
+ e: for (const a of t.set) {
948
+ for (const o of e.set) {
949
+ const c = _n(a, o, r);
950
+ if (s = s || c !== null, c)
951
+ continue e;
952
+ }
953
+ if (s)
954
+ return !1;
955
+ }
956
+ return !0;
957
+ }, bn = [new ze(">=0.0.0-0")], gt = [new ze(">=0.0.0")], _n = (t, e, r) => {
958
+ if (t === e)
959
+ return !0;
960
+ if (t.length === 1 && t[0].semver === we) {
961
+ if (e.length === 1 && e[0].semver === we)
962
+ return !0;
963
+ r.includePrerelease ? t = bn : t = gt;
964
+ }
965
+ if (e.length === 1 && e[0].semver === we) {
966
+ if (r.includePrerelease)
967
+ return !0;
968
+ e = gt;
969
+ }
970
+ const s = /* @__PURE__ */ new Set();
971
+ let a, o;
972
+ for (const g of t)
973
+ g.operator === ">" || g.operator === ">=" ? a = dt(a, g, r) : g.operator === "<" || g.operator === "<=" ? o = mt(o, g, r) : s.add(g.semver);
974
+ if (s.size > 1)
975
+ return null;
976
+ let c;
977
+ if (a && o) {
978
+ if (c = Xe(a.semver, o.semver, r), c > 0)
979
+ return null;
980
+ if (c === 0 && (a.operator !== ">=" || o.operator !== "<="))
981
+ return null;
982
+ }
983
+ for (const g of s) {
984
+ if (a && !Z(g, String(a), r) || o && !Z(g, String(o), r))
985
+ return null;
986
+ for (const u of e)
987
+ if (!Z(g, String(u), r))
988
+ return !1;
989
+ return !0;
990
+ }
991
+ let $, n, i, f, p = o && !r.includePrerelease && o.semver.prerelease.length ? o.semver : !1, S = a && !r.includePrerelease && a.semver.prerelease.length ? a.semver : !1;
992
+ p && p.prerelease.length === 1 && o.operator === "<" && p.prerelease[0] === 0 && (p = !1);
993
+ for (const g of e) {
994
+ if (f = f || g.operator === ">" || g.operator === ">=", i = i || g.operator === "<" || g.operator === "<=", a) {
995
+ if (S && g.semver.prerelease && g.semver.prerelease.length && g.semver.major === S.major && g.semver.minor === S.minor && g.semver.patch === S.patch && (S = !1), g.operator === ">" || g.operator === ">=") {
996
+ if ($ = dt(a, g, r), $ === g && $ !== a)
997
+ return !1;
998
+ } else if (a.operator === ">=" && !Z(a.semver, String(g), r))
999
+ return !1;
1000
+ }
1001
+ if (o) {
1002
+ if (p && g.semver.prerelease && g.semver.prerelease.length && g.semver.major === p.major && g.semver.minor === p.minor && g.semver.patch === p.patch && (p = !1), g.operator === "<" || g.operator === "<=") {
1003
+ if (n = mt(o, g, r), n === g && n !== o)
1004
+ return !1;
1005
+ } else if (o.operator === "<=" && !Z(o.semver, String(g), r))
1006
+ return !1;
1007
+ }
1008
+ if (!g.operator && (o || a) && c !== 0)
1009
+ return !1;
1010
+ }
1011
+ return !(a && i && !o && c !== 0 || o && f && !a && c !== 0 || S || p);
1012
+ }, dt = (t, e, r) => {
1013
+ if (!t)
1014
+ return e;
1015
+ const s = Xe(t.semver, e.semver, r);
1016
+ return s > 0 ? t : s < 0 || e.operator === ">" && t.operator === ">=" ? e : t;
1017
+ }, mt = (t, e, r) => {
1018
+ if (!t)
1019
+ return e;
1020
+ const s = Xe(t.semver, e.semver, r);
1021
+ return s < 0 ? t : s > 0 || e.operator === "<" && t.operator === "<=" ? e : t;
1022
+ };
1023
+ var Dn = Fn;
1024
+ const Re = te, $t = ue, jn = b, Et = Bt, Bn = W, Gn = Xr, xn = qr, Un = Wr, Vn = Kr, zn = es, Xn = ss, Mn = as, Jn = ls, qn = j, Hn = hs, Wn = ms, Yn = Be, Kn = ws, Zn = ys, Qn = he, ei = Ge, ti = Gt, ri = xt, si = xe, ni = Ue, ii = Ut, ai = Js, oi = ge(), ci = B(), li = de, fi = Qs, ui = sn, pi = cn, hi = un, gi = gn, di = Ve, mi = In, $i = Pn, Ei = Ln, vi = Cn, wi = Dn;
1025
+ var zt = {
1026
+ parse: Bn,
1027
+ valid: Gn,
1028
+ clean: xn,
1029
+ inc: Un,
1030
+ diff: Vn,
1031
+ major: zn,
1032
+ minor: Xn,
1033
+ patch: Mn,
1034
+ prerelease: Jn,
1035
+ compare: qn,
1036
+ rcompare: Hn,
1037
+ compareLoose: Wn,
1038
+ compareBuild: Yn,
1039
+ sort: Kn,
1040
+ rsort: Zn,
1041
+ gt: Qn,
1042
+ lt: ei,
1043
+ eq: ti,
1044
+ neq: ri,
1045
+ gte: si,
1046
+ lte: ni,
1047
+ cmp: ii,
1048
+ coerce: ai,
1049
+ Comparator: oi,
1050
+ Range: ci,
1051
+ satisfies: li,
1052
+ toComparators: fi,
1053
+ maxSatisfying: ui,
1054
+ minSatisfying: pi,
1055
+ minVersion: hi,
1056
+ validRange: gi,
1057
+ outside: di,
1058
+ gtr: mi,
1059
+ ltr: $i,
1060
+ intersects: Ei,
1061
+ simplifyRange: vi,
1062
+ subset: wi,
1063
+ SemVer: jn,
1064
+ re: Re.re,
1065
+ src: Re.src,
1066
+ tokens: Re.t,
1067
+ SEMVER_SPEC_VERSION: $t.SEMVER_SPEC_VERSION,
1068
+ RELEASE_TYPES: $t.RELEASE_TYPES,
1069
+ compareIdentifiers: Et.compareIdentifiers,
1070
+ rcompareIdentifiers: Et.rcompareIdentifiers
1071
+ };
1072
+ const Ri = /* @__PURE__ */ kr(zt), Te = "_updates_v2/per_package_version/";
1073
+ function Si(t, e) {
1074
+ return `${Te}${t.organization}/${t.name}/${t.version}/${e}`;
1075
+ }
1076
+ const yi = /(?<packageKeyWithoutVersion>(?<organization>[^\/]+)\/(?<name>[^\/]+))\/(?<version>[^\/]+)\/(?<seed>[^\/]+)$/, Se = "_updates_v2/_global_update_in", vt = "_updates_v2/_global_update_out", Me = "v2/", Ii = "overview.json", Oi = "overview.json", Xt = "manifest.json";
1077
+ function wt(t) {
1078
+ return `${Me}${t.organization}/${t.name}/${t.version}`;
1079
+ }
1080
+ const Ni = "/" + Xt, Pi = P.object({
1081
+ description: q,
1082
+ manifestSha256: Lt
1083
+ }), Rt = P.object({
1084
+ schema: P.literal("v2"),
1085
+ versions: P.array(Pi)
1086
+ });
1087
+ function St(t) {
1088
+ return `${Me}${t.organization}/${t.name}/${Oi}`;
1089
+ }
1090
+ const ye = `${Me}${Ii}`;
1091
+ function Mt(t) {
1092
+ return P.object({
1093
+ id: fr,
1094
+ allVersions: P.array(P.string()),
1095
+ latest: t,
1096
+ latestManifestSha256: Lt
1097
+ });
1098
+ }
1099
+ const aa = Mt(q);
1100
+ function Je(t) {
1101
+ return P.object({
1102
+ schema: P.literal("v2"),
1103
+ packages: P.array(Mt(t))
1104
+ });
1105
+ }
1106
+ const yt = Je(q);
1107
+ function oa(t) {
1108
+ return H(
1109
+ ce,
1110
+ z(
1111
+ Q.transform(_e(t)),
1112
+ ee.transform(fe(t))
1113
+ )
1114
+ );
1115
+ }
1116
+ function ca(t) {
1117
+ return Je(
1118
+ H(
1119
+ ce,
1120
+ z(
1121
+ Q.transform(_e(t)),
1122
+ ee.transform(fe(t))
1123
+ )
1124
+ )
1125
+ );
1126
+ }
1127
+ function la(t) {
1128
+ return Je(
1129
+ H(
1130
+ ce,
1131
+ z(
1132
+ Q.transform(_e(t)),
1133
+ ee.transform(fe(t))
1134
+ )
1135
+ )
1136
+ );
1137
+ }
1138
+ class fa {
1139
+ constructor(e, r) {
1140
+ this.storage = e, this.logger = r;
1141
+ }
1142
+ async updateRegistry() {
1143
+ var $, n, i, f, p, S, g, u;
1144
+ ($ = this.logger) == null || $.info("Initiating registry refresh...");
1145
+ const e = /* @__PURE__ */ new Map(), r = [], s = await this.storage.listFiles(Te);
1146
+ (n = this.logger) == null || n.info("Packages to be updated:");
1147
+ for (const I of s) {
1148
+ const k = I.match(yi);
1149
+ if (!k) continue;
1150
+ r.push(I);
1151
+ const { packageKeyWithoutVersion: O, organization: L, name: w, version: A, seed: D } = k.groups;
1152
+ let x = e.get(O), X = !1;
1153
+ x ? x.versions.has(A) || (x.versions.add(A), X = !0) : (e.set(O, {
1154
+ package: { organization: L, name: w },
1155
+ versions: /* @__PURE__ */ new Set([A])
1156
+ }), X = !0), (i = this.logger) == null || i.info(` - ${L}:${w}:${A} added:${X}`);
1157
+ }
1158
+ const a = await this.storage.getFile(ye);
1159
+ let c = (a === void 0 ? { schema: "v2", packages: [] } : yt.parse(JSON.parse(a.toString()))).packages;
1160
+ (f = this.logger) == null || f.info(`Global overview loaded, ${c.length} records`);
1161
+ for (const [, I] of e.entries()) {
1162
+ const k = St(I.package), O = await this.storage.getFile(k), L = O === void 0 ? { schema: "v2", versions: [] } : Rt.parse(JSON.parse(O.toString()));
1163
+ (p = this.logger) == null || p.info(
1164
+ `Updating ${I.package.organization}:${I.package.name} overview, ${L.versions.length} records`
1165
+ );
1166
+ const w = L.versions.filter(
1167
+ (A) => !I.versions.has(A.description.id.version)
1168
+ );
1169
+ for (const [A] of I.versions.entries()) {
1170
+ const D = A.toString(), x = await this.storage.getFile(
1171
+ wt({
1172
+ ...I.package,
1173
+ version: D
1174
+ }) + Ni
1175
+ );
1176
+ if (!x) continue;
1177
+ const X = Buffer.from(await crypto.subtle.digest("sha-256", x)).toString("hex").toUpperCase();
1178
+ w.push({
1179
+ description: Ke(D).parse(
1180
+ Pt.parse(JSON.parse(x.toString("utf8"))).description
1181
+ ),
1182
+ manifestSha256: X
1183
+ });
1184
+ }
1185
+ w.sort(
1186
+ (A, D) => zt.compare(D.description.id.version, A.description.id.version)
1187
+ ), await this.storage.putFile(
1188
+ k,
1189
+ Buffer.from(
1190
+ JSON.stringify({ schema: "v2", versions: w })
1191
+ )
1192
+ ), (S = this.logger) == null || S.info(`Done (${w.length} records)`), c = c.filter(
1193
+ (A) => A.id.organization !== I.package.organization || A.id.name !== I.package.name
1194
+ ), c.push({
1195
+ id: {
1196
+ organization: I.package.organization,
1197
+ name: I.package.name
1198
+ },
1199
+ allVersions: w.map((A) => A.description.id.version).reverse(),
1200
+ latest: Ke(
1201
+ `${I.package.organization}/${I.package.name}`
1202
+ ).parse(w[0].description),
1203
+ latestManifestSha256: w[0].manifestSha256
1204
+ });
1205
+ }
1206
+ await this.storage.putFile(
1207
+ ye,
1208
+ Buffer.from(
1209
+ JSON.stringify({ schema: "v2", packages: c })
1210
+ )
1211
+ ), (g = this.logger) == null || g.info(`Global overview updated (${c.length} records)`), await this.storage.deleteFiles(...r.map((I) => `${Te}${I}`)), (u = this.logger) == null || u.info("Version update requests cleared");
1212
+ }
1213
+ async updateIfNeeded(e = !1) {
1214
+ var a, o;
1215
+ (a = this.logger) == null || a.info("Checking if registry requires refresh...");
1216
+ const r = await this.storage.getFile(Se), s = await this.storage.getFile(vt);
1217
+ !e && r === void 0 && s === void 0 || !e && r !== void 0 && s !== void 0 && r.equals(s) || (await this.updateRegistry(), r && (await this.storage.putFile(vt, r), (o = this.logger) == null || o.info("Refresh finished")));
1218
+ }
1219
+ async getPackageOverview(e) {
1220
+ const r = await this.storage.getFile(St(e));
1221
+ if (r !== void 0)
1222
+ return Rt.parse(JSON.parse(r.toString()));
1223
+ }
1224
+ async getGlobalOverview() {
1225
+ const e = await this.storage.getFile(ye);
1226
+ if (e !== void 0)
1227
+ return yt.parse(JSON.parse(e.toString()));
1228
+ }
1229
+ // public async getGlobalOverviewExplicitBytes(): Promise<undefined | GlobalOverviewReg> {
1230
+ // const content = await this.storage.getFile(GlobalOverviewPath);
1231
+ // if (content === undefined) return undefined;
1232
+ // return GlobalOverviewReg.parse(JSON.parse(content.toString()));
1233
+ // }
1234
+ async publishPackage(e, r) {
1235
+ var $, n, i, f;
1236
+ const s = wt(e.description.id);
1237
+ for (const p of e.files) {
1238
+ const S = await r(p.name);
1239
+ if (S.length !== p.size)
1240
+ throw new Error(
1241
+ `Actual file size don't match file size from the manifest file for ${p.name} (actual = ${S.length}; manifest = ${p.size})`
1242
+ );
1243
+ const g = Buffer.from(await crypto.subtle.digest("sha-256", S)).toString("hex").toUpperCase();
1244
+ if (g !== p.sha256.toUpperCase())
1245
+ throw new Error(
1246
+ `Actual file SHA-256 don't match the checksum from the manifest file for ${p.name} (actual = ${g}; manifest = ${p.sha256.toUpperCase()})`
1247
+ );
1248
+ const u = s + "/" + p.name;
1249
+ ($ = this.logger) == null || $.info(`Uploading ${p.name} -> ${u} ...`), await this.storage.putFile(u, S);
1250
+ }
1251
+ const a = s + "/" + Xt;
1252
+ (n = this.logger) == null || n.info(`Uploading manifest to ${a} ...`), await this.storage.putFile(a, Buffer.from(JSON.stringify(e)));
1253
+ const o = Ct(), c = Si(e.description.id, o);
1254
+ (i = this.logger) == null || i.info(`Creating update seed at ${c} ...`), await this.storage.putFile(c, Buffer.from(o)), (f = this.logger) == null || f.info(`Touching global update seed ${Se} ...`), await this.storage.putFile(Se, Buffer.from(o));
1255
+ }
1256
+ }
1257
+ class ki {
1258
+ constructor(e, r, s) {
1259
+ this.client = e, this.bucket = r, this.root = s;
1260
+ }
1261
+ async getFile(e) {
1262
+ try {
1263
+ return Buffer.from(
1264
+ await (await this.client.getObject({
1265
+ Bucket: this.bucket,
1266
+ Key: U.join(this.root, e)
1267
+ })).Body.transformToByteArray()
1268
+ );
1269
+ } catch (r) {
1270
+ if (r.name === "NoSuchKey") return;
1271
+ throw r;
1272
+ }
1273
+ }
1274
+ async listFiles(e) {
1275
+ const r = U.join(this.root, e), s = hr(
1276
+ { client: this.client },
1277
+ {
1278
+ Bucket: this.bucket,
1279
+ Prefix: r
1280
+ }
1281
+ ), a = [];
1282
+ for await (const o of s)
1283
+ a.push(...o.Contents.map((c) => U.relative(r, c.Key)));
1284
+ return a;
1285
+ }
1286
+ async putFile(e, r) {
1287
+ await this.client.putObject({
1288
+ Bucket: this.bucket,
1289
+ Key: U.join(this.root, e),
1290
+ Body: r
1291
+ });
1292
+ }
1293
+ async deleteFiles(...e) {
1294
+ const r = await this.client.deleteObjects({
1295
+ Bucket: this.bucket,
1296
+ Delete: {
1297
+ Objects: e.map((s) => ({
1298
+ Key: U.join(this.root, s)
1299
+ }))
1300
+ }
1301
+ });
1302
+ if (r.Errors !== void 0 && r.Errors.length > 0)
1303
+ throw new Error(`Errors encountered while deleting files: ${r.Errors.join(`
1304
+ `)}`);
1305
+ }
1306
+ }
1307
+ class Li {
1308
+ constructor(e) {
1309
+ /** Absolute path */
1310
+ re(this, "root");
1311
+ this.root = F.resolve(e);
1312
+ }
1313
+ toAbsolutePath(e) {
1314
+ if (U.isAbsolute(e)) throw new Error("absolute path");
1315
+ return F.resolve(this.root, e.split(U.sep).join(F.sep));
1316
+ }
1317
+ async getFile(e) {
1318
+ try {
1319
+ return await K.promises.readFile(this.toAbsolutePath(e));
1320
+ } catch (r) {
1321
+ if (r.code == "ENOENT") return;
1322
+ throw new Error("", { cause: r });
1323
+ }
1324
+ }
1325
+ async listFiles(e) {
1326
+ try {
1327
+ const r = this.toAbsolutePath(e);
1328
+ return (await K.promises.readdir(r, { recursive: !0, withFileTypes: !0 })).filter((s) => s.isFile()).map(
1329
+ (s) => F.relative(r, F.resolve(s.path, s.name)).split(F.sep).join(U.sep)
1330
+ );
1331
+ } catch (r) {
1332
+ if (r.code == "ENOENT") return [];
1333
+ throw new Error("", { cause: r });
1334
+ }
1335
+ }
1336
+ async putFile(e, r) {
1337
+ const s = this.toAbsolutePath(e);
1338
+ await K.promises.mkdir(F.dirname(s), { recursive: !0 }), await K.promises.writeFile(s, r);
1339
+ }
1340
+ async deleteFiles(...e) {
1341
+ for (const r of e) await K.promises.rm(this.toAbsolutePath(r));
1342
+ }
1343
+ }
1344
+ function Ti(t) {
1345
+ const e = new URL(t, `file:${F.resolve(".").split(F.sep).join(U.sep)}/`);
1346
+ switch (e.protocol) {
1347
+ case "file:":
1348
+ const r = F.resolve(e.pathname);
1349
+ return new Li(r);
1350
+ case "s3:":
1351
+ const s = {}, a = e.searchParams.get("region");
1352
+ a && (s.region = a);
1353
+ const o = e.hostname;
1354
+ return new ki(new gr(s), o, e.pathname.replace(/^\//, ""));
1355
+ default:
1356
+ throw new Error(`Unknown protocol: ${e.protocol}`);
1357
+ }
1358
+ }
1359
+ const Ai = P.string().regex(/^(?:s3:|file:)/), Ci = P.object({
1360
+ organization: P.string(),
1361
+ package: P.string(),
1362
+ version: be.optional(),
1363
+ files: P.record(P.string().regex(/^[^\/]+$/), P.string()).default({}),
1364
+ meta: P.object({}).passthrough()
1365
+ }), Fi = P.object({
1366
+ registries: P.record(P.string(), Ai).default({}),
1367
+ registry: P.string().optional()
1368
+ }), Jt = Fi.merge(Ci).required(
1369
+ { registry: !0, version: !0 }
1370
+ ), qe = Jt.partial().required({
1371
+ registries: !0,
1372
+ files: !0
1373
+ }), bi = "pl.package.json", _i = "pl.package.yaml", me = "v1/";
1374
+ function ua(t) {
1375
+ return `${me}${t.organization}/${t.package}/${t.version}`;
1376
+ }
1377
+ function qt(t, e) {
1378
+ return `${me}${t.organization}/${t.package}/${t.version}/${e}`;
1379
+ }
1380
+ function It(t) {
1381
+ return `${me}${t.organization}/${t.package}/overview.json`;
1382
+ }
1383
+ const Ie = `${me}overview.json`, Ht = "meta.json", Ae = "_updates_v1/per_package_version/";
1384
+ function Di(t, e) {
1385
+ return `${Ae}${t.organization}/${t.package}/${t.version}/${e}`;
1386
+ }
1387
+ const ji = /(?<packageKeyWithoutVersion>(?<organization>[^\/]+)\/(?<pkg>[^\/]+))\/(?<version>[^\/]+)\/(?<seed>[^\/]+)$/, Wt = "_updates_v1/_global_update_in", Ot = "_updates_v1/_global_update_out";
1388
+ class Bi {
1389
+ constructor(e, r) {
1390
+ this.storage = e, this.logger = r;
1391
+ }
1392
+ constructNewPackage(e) {
1393
+ return new Gi(this.storage, e);
1394
+ }
1395
+ async updateRegistry() {
1396
+ var c, $, n, i, f, p, S, g;
1397
+ (c = this.logger) == null || c.info("Initiating registry refresh...");
1398
+ const e = /* @__PURE__ */ new Map(), r = [], s = await this.storage.listFiles(Ae);
1399
+ ($ = this.logger) == null || $.info("Packages to be updated:");
1400
+ for (const u of s) {
1401
+ const I = u.match(ji);
1402
+ if (!I) continue;
1403
+ r.push(u);
1404
+ const { packageKeyWithoutVersion: k, organization: O, pkg: L, version: w, seed: A } = I.groups;
1405
+ let D = e.get(k);
1406
+ D ? D.versions.has(w) || D.versions.add(w) : e.set(k, {
1407
+ package: { organization: O, package: L },
1408
+ versions: /* @__PURE__ */ new Set([w])
1409
+ }), (n = this.logger) == null || n.info(` - ${O}:${L}:${w}`);
1410
+ }
1411
+ const a = await this.storage.getFile(Ie);
1412
+ let o = a === void 0 ? [] : JSON.parse(a.toString());
1413
+ (i = this.logger) == null || i.info(`Global overview loaded, ${o.length} records`);
1414
+ for (const [, u] of e.entries()) {
1415
+ const I = It(u.package), k = await this.storage.getFile(I);
1416
+ let O = k === void 0 ? [] : JSON.parse(k.toString());
1417
+ (f = this.logger) == null || f.info(
1418
+ `Updating ${u.package.organization}:${u.package.package} overview, ${O.length} records`
1419
+ ), O = O.filter((L) => !u.versions.has(L.version));
1420
+ for (const [L] of u.versions.entries()) {
1421
+ const w = L.toString(), A = await this.storage.getFile(
1422
+ qt(
1423
+ {
1424
+ ...u.package,
1425
+ version: w
1426
+ },
1427
+ Ht
1428
+ )
1429
+ );
1430
+ A && O.push({ version: w, meta: JSON.parse(A.toString()) });
1431
+ }
1432
+ O.sort((L, w) => Ri.compare(w.version, L.version)), await this.storage.putFile(I, Buffer.from(JSON.stringify(O))), (p = this.logger) == null || p.info(`Done (${O.length} records)`), o = o.filter(
1433
+ (L) => L.organization !== u.package.organization || L.package !== u.package.package
1434
+ ), o.push({
1435
+ organization: u.package.organization,
1436
+ package: u.package.package,
1437
+ allVersions: O.map((L) => L.version).reverse(),
1438
+ latestVersion: O[0].version,
1439
+ latestMeta: O[0].meta
1440
+ });
1441
+ }
1442
+ await this.storage.putFile(Ie, Buffer.from(JSON.stringify(o))), (S = this.logger) == null || S.info(`Global overview updated (${o.length} records)`), await this.storage.deleteFiles(...r.map((u) => `${Ae}${u}`)), (g = this.logger) == null || g.info("Version update requests cleared");
1443
+ }
1444
+ async updateIfNeeded(e = !1) {
1445
+ var a, o;
1446
+ (a = this.logger) == null || a.info("Checking if registry requires refresh...");
1447
+ const r = await this.storage.getFile(Wt), s = await this.storage.getFile(Ot);
1448
+ !e && r === void 0 && s === void 0 || !e && r !== void 0 && s !== void 0 && r.equals(s) || (await this.updateRegistry(), r && (await this.storage.putFile(Ot, r), (o = this.logger) == null || o.info("Refresh finished")));
1449
+ }
1450
+ async getPackageOverview(e) {
1451
+ const r = await this.storage.getFile(It(e));
1452
+ if (r !== void 0)
1453
+ return JSON.parse(r.toString());
1454
+ }
1455
+ async getGlobalOverview() {
1456
+ const e = await this.storage.getFile(Ie);
1457
+ if (e !== void 0)
1458
+ return JSON.parse(e.toString());
1459
+ }
1460
+ }
1461
+ class Gi {
1462
+ constructor(e, r) {
1463
+ re(this, "metaAdded", !1);
1464
+ re(this, "seed", Ct());
1465
+ this.storage = e, this.name = r;
1466
+ }
1467
+ async addFile(e, r) {
1468
+ await this.storage.putFile(qt(this.name, e), r);
1469
+ }
1470
+ async writeMeta(e) {
1471
+ await this.addFile(Ht, Buffer.from(JSON.stringify(e))), this.metaAdded = !0;
1472
+ }
1473
+ async finish() {
1474
+ if (!this.metaAdded) throw new Error("meta not added");
1475
+ await this.storage.putFile(Di(this.name, this.seed), Buffer.of(0)), await this.storage.putFile(Wt, Buffer.from(this.seed));
1476
+ }
1477
+ }
1478
+ function M(t, e) {
1479
+ return e === void 0 ? t : {
1480
+ ...t,
1481
+ ...e,
1482
+ registries: { ...t.registries, ...e.registries },
1483
+ files: { ...t.files, ...e.files }
1484
+ };
1485
+ }
1486
+ async function Oe(t) {
1487
+ return De(t, (e) => qe.parse(JSON.parse(e.toString())));
1488
+ }
1489
+ async function Ne(t) {
1490
+ return De(t, (e) => qe.parse(pr.parse(e.toString())));
1491
+ }
1492
+ async function xi() {
1493
+ let t = qe.parse({});
1494
+ return t = M(t, await Oe("./.pl.reg.json")), t = M(t, await Ne("./.pl.reg.yaml")), t = M(t, await Oe(`${We.homedir()}/.pl.reg.json`)), t = M(t, await Ne(`${We.homedir()}/.pl.reg.yaml`)), t = M(t, await Oe(bi)), t = M(t, await Ne(_i)), t;
1495
+ }
1496
+ class Ui {
1497
+ constructor(e) {
1498
+ this.conf = e;
1499
+ }
1500
+ createRegistry(e) {
1501
+ let r = this.conf.registry;
1502
+ if (!r.startsWith("file:") && !r.startsWith("s3:")) {
1503
+ const s = this.conf.registries[r];
1504
+ if (!s) throw new Error(`Registry with alias "${r}" not found`);
1505
+ r = s;
1506
+ }
1507
+ return new Bi(Ti(r), e);
1508
+ }
1509
+ get fullPackageName() {
1510
+ return {
1511
+ organization: this.conf.organization,
1512
+ package: this.conf.package,
1513
+ version: this.conf.version
1514
+ };
1515
+ }
1516
+ }
1517
+ async function pa(t) {
1518
+ const e = await xi();
1519
+ return new Ui(
1520
+ Jt.parse(M(e, t))
1521
+ );
1522
+ }
1523
+ export {
1524
+ Rt as $,
1525
+ Pe as A,
1526
+ ea as B,
1527
+ vr as C,
1528
+ _e as D,
1529
+ wr as E,
1530
+ Li as F,
1531
+ yt as G,
1532
+ Qi as H,
1533
+ fe as I,
1534
+ Sr as J,
1535
+ ta as K,
1536
+ yr as L,
1537
+ Xt as M,
1538
+ Ir as N,
1539
+ bt as O,
1540
+ qe as P,
1541
+ Or as Q,
1542
+ dr as R,
1543
+ ki as S,
1544
+ Ke as T,
1545
+ ke as U,
1546
+ _t as V,
1547
+ na as W,
1548
+ Oi as X,
1549
+ wt as Y,
1550
+ Ni as Z,
1551
+ Pi as _,
1552
+ Rr as a,
1553
+ St as a0,
1554
+ ye as a1,
1555
+ Mt as a2,
1556
+ aa as a3,
1557
+ Je as a4,
1558
+ oa as a5,
1559
+ ca as a6,
1560
+ la as a7,
1561
+ ia as b,
1562
+ sa as c,
1563
+ fa as d,
1564
+ Me as e,
1565
+ ra as f,
1566
+ pa as g,
1567
+ Ii as h,
1568
+ Ie as i,
1569
+ Ht as j,
1570
+ Ci as k,
1571
+ Pr as l,
1572
+ bi as m,
1573
+ _i as n,
1574
+ Fi as o,
1575
+ Jt as p,
1576
+ Ui as q,
1577
+ ua as r,
1578
+ Ti as s,
1579
+ It as t,
1580
+ qt as u,
1581
+ mr as v,
1582
+ Ye as w,
1583
+ Ft as x,
1584
+ $r as y,
1585
+ Er as z
1586
+ };
1587
+ //# sourceMappingURL=config-YukCegnp.mjs.map