@platforma-sdk/block-tools 2.5.3 → 2.5.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"source_package.d.ts","sourceRoot":"","sources":["../../src/v2/source_package.ts"],"names":[],"mappings":"AAEA,OAAO,EAA+C,4BAA4B,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,QAAQ,EAAY,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAEL,uBAAuB,EACvB,WAAW,EAGZ,MAAM,uCAAuC,CAAC;AAE/C,eAAO,MAAM,gCAAgC,UAAU,CAAC;AAKxD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,GAAG,MAAM,CAAC,CAQhG;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,QAAQ,GAChB,OAAO,CAAC,4BAA4B,GAAG,SAAS,CAAC,CA0BnD;AAED,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAiBjG;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,4BAA4B,CAAC,CAGvC"}
1
+ {"version":3,"file":"source_package.d.ts","sourceRoot":"","sources":["../../src/v2/source_package.ts"],"names":[],"mappings":"AAEA,OAAO,EAA+C,4BAA4B,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,QAAQ,EAAY,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAEL,uBAAuB,EACvB,WAAW,EAEZ,MAAM,uCAAuC,CAAC;AAE/C,eAAO,MAAM,gCAAgC,UAAU,CAAC;AAKxD,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,GAAG,MAAM,CAAC,CAQhG;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,QAAQ,GAChB,OAAO,CAAC,4BAA4B,GAAG,SAAS,CAAC,CA2BnD;AAED,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAiBjG;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,4BAA4B,CAAC,CAGvC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/block-tools",
3
- "version": "2.5.3",
3
+ "version": "2.5.4",
4
4
  "description": "Utility to manipulate Platforma Blocks and Block Registry",
5
5
  "types": "./dist/lib.d.ts",
6
6
  "main": "./dist/index.js",
@@ -33,11 +33,11 @@
33
33
  "tar": "^7.4.3",
34
34
  "yaml": "^2.6.1",
35
35
  "zod": "~3.23.8",
36
- "@milaboratories/pl-http": "^1.0.2",
37
36
  "@milaboratories/resolve-helper": "^1.0.2",
38
- "@milaboratories/pl-model-middle-layer": "^1.6.11",
39
37
  "@milaboratories/ts-helpers-oclif": "^1.1.12",
40
- "@milaboratories/ts-helpers": "^1.1.3"
38
+ "@milaboratories/ts-helpers": "^1.1.3",
39
+ "@milaboratories/pl-model-middle-layer": "^1.7.0",
40
+ "@milaboratories/pl-http": "^1.0.2"
41
41
  },
42
42
  "devDependencies": {
43
43
  "typescript": "~5.5.4",
@@ -54,8 +54,8 @@
54
54
  "@jest/globals": "^29.7.0",
55
55
  "oclif": "^4.16.2",
56
56
  "ts-jest": "^29.2.5",
57
- "@milaboratories/platforma-build-configs": "1.0.2",
58
- "@milaboratories/oclif-index": "1.1.1"
57
+ "@milaboratories/oclif-index": "1.1.1",
58
+ "@milaboratories/platforma-build-configs": "1.0.2"
59
59
  },
60
60
  "oclif": {
61
61
  "bin": "block-tools",
@@ -4,6 +4,9 @@ import { randomUUID } from 'crypto';
4
4
  import path from 'path';
5
5
  import fsp from 'fs/promises';
6
6
  import { BlockRegistryV2 } from './registry';
7
+ import semver from 'semver';
8
+ import { UpdateSuggestions } from '@milaboratories/pl-model-middle-layer';
9
+ import { inferUpdateSuggestions } from './registry_reader';
7
10
 
8
11
  type TestStorageInstance = {
9
12
  storage: RegistryStorage;
@@ -55,6 +58,54 @@ if (testS3Address !== undefined) {
55
58
  test.each(testStorages)('full registry test with $name', async ({ storageProvider }) => {
56
59
  const { storage, teardown } = storageProvider();
57
60
  const registry = new BlockRegistryV2(storage);
58
- registry.updateIfNeeded
61
+ registry.updateIfNeeded;
59
62
  await teardown();
60
63
  });
64
+
65
+ test.each([
66
+ {
67
+ name: 'test1',
68
+ current: '1.2.3',
69
+ available: ['1.1.2', '1.2.3', '1.2.4', '1.2.5', '1.3.4', '1.3.5', '3.4.1', '3.4.2'],
70
+ expected: [
71
+ { type: 'patch', update: '1.2.5' },
72
+ { type: 'minor', update: '1.3.5' },
73
+ { type: 'major', update: '3.4.2' }
74
+ ]
75
+ },
76
+ {
77
+ name: 'test2',
78
+ current: '1.2.3',
79
+ available: ['1.1.2', '1.2.3', '1.3.4', '1.3.5', '3.4.1', '3.4.2'],
80
+ expected: [
81
+ { type: 'minor', update: '1.3.5' },
82
+ { type: 'major', update: '3.4.2' }
83
+ ]
84
+ },
85
+ {
86
+ name: 'test3',
87
+ current: '1.2.3',
88
+ available: ['1.1.2', '1.2.3', '1.2.4', '1.2.5', '3.4.1', '3.4.2'],
89
+ expected: [
90
+ { type: 'patch', update: '1.2.5' },
91
+ { type: 'major', update: '3.4.2' }
92
+ ]
93
+ },
94
+ {
95
+ name: 'test4',
96
+ current: '1.2.3',
97
+ available: ['1.1.2', '1.2.3', '1.2.4', '1.3.0', '2.0.0'],
98
+ expected: [
99
+ { type: 'patch', update: '1.2.4' },
100
+ { type: 'minor', update: '1.3.0' },
101
+ { type: 'major', update: '2.0.0' }
102
+ ]
103
+ }
104
+ ] as { name: string; current: string; available: string[]; expected: UpdateSuggestions<string> }[])(
105
+ 'infer updates test $name',
106
+ ({ current, available, expected }) => {
107
+ const a = [...available];
108
+ a.reverse();
109
+ expect(inferUpdateSuggestions(current, a)).toStrictEqual(expected);
110
+ }
111
+ );
@@ -6,6 +6,7 @@ import {
6
6
  BlockPackMetaEmbeddedBytes,
7
7
  BlockPackMetaManifest,
8
8
  BlockPackOverview,
9
+ UpdateSuggestions,
9
10
  SingleBlockPackOverview
10
11
  } from '@milaboratories/pl-model-middle-layer';
11
12
  import { FolderReader } from '../../io';
@@ -20,6 +21,7 @@ import {
20
21
  } from './schema_public';
21
22
  import { BlockComponentsAbsoluteUrl, BlockPackMetaEmbedBytes } from '../model';
22
23
  import { LRUCache } from 'lru-cache';
24
+ import semver from 'semver';
23
25
  import { calculateSha256 } from '../../util';
24
26
  import { retry, Retry2TimesWithDelay } from '@milaboratories/ts-helpers';
25
27
 
@@ -37,6 +39,28 @@ const DefaultRegistryV2ReaderOps: RegistryV2ReaderOps = {
37
39
  keepStaleBlockListFor: 300e3 // 5 minutes
38
40
  };
39
41
 
42
+ /** @param availableVersions must be reverse sorted (from highest version to lowest) */
43
+ export function inferUpdateSuggestions(currentVersion: string, availableVersions: string[]) {
44
+ const nextMinor = semver.inc(currentVersion, 'minor')!;
45
+ const nextMajor = semver.inc(currentVersion, 'major')!;
46
+
47
+ // first found = the highest (given the search criteria)
48
+
49
+ const suggestions: UpdateSuggestions<string> = [];
50
+
51
+ const patch = availableVersions.find(
52
+ (v) => semver.gt(v, currentVersion) && semver.lt(v, nextMinor)
53
+ );
54
+ const minor = availableVersions.find((v) => semver.gte(v, nextMinor) && semver.lt(v, nextMajor));
55
+ const major = availableVersions.find((v) => semver.gte(v, nextMajor));
56
+
57
+ if (patch) suggestions.push({ type: 'patch', update: patch });
58
+ if (minor) suggestions.push({ type: 'minor', update: minor });
59
+ if (major) suggestions.push({ type: 'major', update: major });
60
+
61
+ return suggestions;
62
+ }
63
+
40
64
  export class RegistryV2Reader {
41
65
  private readonly v2RootFolderReader: FolderReader;
42
66
  private readonly ops: RegistryV2ReaderOps;
@@ -151,13 +175,30 @@ export class RegistryV2Reader {
151
175
  id: BlockPackIdNoVersion,
152
176
  channel: string
153
177
  ): Promise<SingleBlockPackOverview | undefined> {
154
- return await retry(async () => {
155
- const overview = (await this.listBlockPacks()).find((e) =>
156
- blockPackIdNoVersionEquals(id, e.id)
157
- );
158
- if (overview === undefined) return undefined;
159
- return overview.latestByChannel[channel];
160
- }, Retry2TimesWithDelay);
178
+ const overview = (await this.listBlockPacks()).find((e) =>
179
+ blockPackIdNoVersionEquals(id, e.id)
180
+ );
181
+ if (overview === undefined) return undefined;
182
+ return overview.latestByChannel[channel];
183
+ }
184
+
185
+ public async getUpdateSuggestions(
186
+ id: BlockPackId,
187
+ channel: string
188
+ ): Promise<UpdateSuggestions<string> | undefined> {
189
+ const overview = (await this.listBlockPacks()).find((e) =>
190
+ blockPackIdNoVersionEquals(id, e.id)
191
+ );
192
+ if (overview === undefined) return undefined;
193
+
194
+ const versionCandidates = overview.allVersions
195
+ .filter((v) => v.channels.indexOf(channel) >= 0)
196
+ .map((v) => v.version);
197
+
198
+ // versions are sorted
199
+ versionCandidates.reverse(); // changing sorting order to opposite
200
+
201
+ return inferUpdateSuggestions(id.version, versionCandidates);
161
202
  }
162
203
 
163
204
  public async getSpecificOverview(
@@ -7,7 +7,6 @@ import {
7
7
  BlockPackDescriptionFromPackageJsonRaw,
8
8
  BlockPackDescriptionRaw,
9
9
  BlockPackId,
10
- BlockPackMetaDescriptionRaw,
11
10
  SemVer
12
11
  } from '@milaboratories/pl-model-middle-layer';
13
12
 
@@ -50,9 +49,10 @@ export async function tryLoadPackDescription(
50
49
  const descriptionParsingResult =
51
50
  await ResolvedBlockPackDescriptionFromPackageJson(moduleRoot).safeParseAsync(descriptionRaw);
52
51
  if (descriptionParsingResult.success) return descriptionParsingResult.data;
52
+ logger?.warn(descriptionParsingResult.error);
53
53
  return undefined;
54
54
  } catch (e: any) {
55
- logger?.info(e);
55
+ logger?.warn(e);
56
56
  return undefined;
57
57
  }
58
58
  }
@@ -1,3 +0,0 @@
1
- "use strict";var kr=Object.defineProperty;var Pr=(r,e,t)=>e in r?kr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var te=(r,e,t)=>Pr(r,typeof e!="symbol"?e+"":e,t);const l=require("@milaboratories/pl-model-middle-layer"),I=require("zod"),F=require("node:path"),G=require("node:fs/promises"),yr=require("mime-types"),Sr=require("tar"),Nt=require("@milaboratories/resolve-helper"),ze=require("@milaboratories/ts-helpers"),Tt=require("node:crypto"),Or=require("yaml"),Ir=require("node:os"),j=require("node:path/posix"),Lt=require("@aws-sdk/client-s3"),Cr=require("node:fs");function pe(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const t in r)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>r[t]})}}return e.default=r,Object.freeze(e)}const ge=pe(yr),Nr=pe(Sr),it=pe(Ir),W=pe(Cr);function At(r){return I.z.string().transform((e,t)=>{const s=Nt.tryResolve(r,e);return s===void 0?(t.addIssue({code:I.z.ZodIssueCode.custom,message:`Can't resolve ${e} against ${r}`}),I.z.NEVER):{type:"absolute-file",file:s}})}function Ft(r,...e){return I.z.string().transform((t,s)=>{const o=t.endsWith("/")?t:`${t}/`;for(const a of e){const c=Nt.tryResolve(r,o+a);if(c!==void 0){if(!c.endsWith(a))throw new Error(`Unexpected resolve result ${c} with index file ${a}`);return{type:"absolute-folder",folder:c.slice(0,c.length-a.length)}}}return s.addIssue({code:I.z.ZodIssueCode.custom,message:`Can't resolve ${t} folder against ${r}, no index file found (${e.join(", ")})`}),I.z.NEVER})}function Ae(r){return e=>e.type==="relative"?{type:"absolute-file",file:F.resolve(r,e.path)}:e}function Ve(){return async r=>r.type==="absolute-file"?await G.readFile(r.file,{encoding:"utf-8"}):r.content}function Bt(){return async r=>{if(r.type==="absolute-file"){const e=ge.lookup(r.file);if(!e)throw new Error(`Can't recognize mime type of the file: ${r.file}.`);return{type:"explicit-base64",mimeType:e,content:await G.readFile(r.file,{encoding:"base64"})}}else return r}}function bt(){return async r=>{if(r.type==="absolute-file"){const e=ge.lookup(r.file);if(!e)throw new Error(`Can't recognize mime type of the file: ${r.file}.`);return{type:"explicit-bytes",mimeType:e,content:Buffer.from(await G.readFile(r.file))}}else return r.type==="explicit-base64"?{type:"explicit-bytes",mimeType:r.mimeType,content:Buffer.from(r.content,"base64")}:r}}function le(r,e){return async t=>{if(t.type==="absolute-file"){const s=F.basename(t.file),o=F.resolve(r,s);return e==null||e.push(s),await G.cp(t.file,o),{type:"relative",path:s}}else return t}}function Dt(r,e,t){if(!e.endsWith(".tgz"))throw new Error(`Unexpected tgz file name: ${e}`);return async s=>{const o=F.resolve(r,e);return await Nr.create({gzip:!0,file:o,cwd:s.folder},["."]),t==null||t.push(e),{type:"relative",path:e}}}function de(r){return async e=>e.type==="explicit-string"?e:{type:"explicit-string",content:(await r(e.path)).toString("utf8")}}function _t(r){return async e=>e.type==="explicit-string"?e.content:(await r(e.path)).toString("utf8")}function Tr(r){return async e=>{if(e.type==="explicit-base64")return e;const t=ge.lookup(e.path);if(!t)throw new Error(`Can't recognize mime type of the file: ${e.path}.`);return{type:"explicit-base64",mimeType:t,content:(await r(e.path)).toString("base64")}}}function Z(r){return async e=>{if(e.type==="explicit-base64")return{type:"explicit-bytes",mimeType:e.mimeType,content:Buffer.from(e.content,"base64")};const t=ge.lookup(e.path);if(!t)throw new Error(`Can't recognize mime type of the file: ${e.path}.`);return{type:"explicit-bytes",mimeType:t,content:await r(e.path)}}}function xt(r){return l.BlockPackMeta(l.DescriptionContentText.transform(Ae(r)),l.DescriptionContentBinary.transform(Ae(r)))}function jt(r,e){return l.BlockPackMeta(l.ContentAbsoluteTextLocal.transform(le(r,e)),l.ContentAbsoluteBinaryLocal.transform(le(r,e)))}const Lr=l.BlockPackMeta(l.ContentAbsoluteTextLocal.transform(Ve()),l.ContentAbsoluteBinaryLocal.transform(Bt())).pipe(l.BlockPackMetaEmbeddedBase64),Ar=l.BlockPackMeta(l.ContentAbsoluteTextLocal.transform(Ve()),l.ContentAbsoluteBinaryLocal.transform(bt())).pipe(l.BlockPackMetaEmbeddedBytes);function Fr(r){return l.BlockPackMeta(l.ContentRelativeText.transform(_t(r)),l.ContentRelativeBinary.transform(Z(r))).pipe(l.BlockPackMetaEmbeddedBytes)}function Gt(r){return l.BlockComponents(At(r),Ft(r,"index.html"))}function zt(r,e){return l.BlockComponents(l.ContentAbsoluteBinaryLocal.transform(le(r,e)),l.ContentAbsoluteFolder.transform(Dt(r,"ui.tgz",e))).pipe(l.BlockComponentsManifest)}function Br(r){return l.BlockComponents(l.ContentRelative.transform(l.mapRemoteToAbsolute(r)),l.ContentRelative.transform(l.mapRemoteToAbsolute(r)))}function Me(r){return l.CreateBlockPackDescriptionSchema(Gt(r),xt(r))}function Vt(r,e){return l.CreateBlockPackDescriptionSchema(zt(r,e),jt(r,e)).pipe(l.BlockPackDescriptionManifest)}function Fe(r){const e=l.addPrefixToRelative(r);return l.BlockPackDescriptionManifest.pipe(l.CreateBlockPackDescriptionSchema(l.BlockComponents(l.ContentRelative.transform(e),l.ContentRelative.transform(e)),l.BlockPackMeta(l.ContentRelativeText.transform(e),l.ContentRelativeBinary.transform(e)))).pipe(l.BlockPackDescriptionManifest)}async function Ue(r,e){try{return e(await G.readFile(r))}catch(t){if(t.code=="ENOENT")return;throw new Error("",{cause:t})}}async function fe(r){return Buffer.from(await crypto.subtle.digest("sha-256",r)).toString("hex").toUpperCase()}async function br(r,e){await G.mkdir(e,{recursive:!0});const t=[],s=await Vt(e,t).parseAsync(r),o=await Promise.all(t.map(async c=>{const E=await G.readFile(F.resolve(e,c)),i=await fe(E);return{name:c,size:E.length,sha256:i}})),a=l.BlockPackManifest.parse({schema:"v2",description:s,files:o,timestamp:Date.now()});return await G.writeFile(F.resolve(e,l.BlockPackManifestFile),JSON.stringify(a)),a}const ue="block",Dr=/(?:@[a-zA-Z0-9-.]+\/)?(?<organization>[a-zA-Z0-9-]+)\.(?<name>[a-zA-Z0-9-]+)/;function Xe(r){const e=r.match(Dr);if(!e)throw new Error(`Malformed package name (${r}), can't infer organization and block pack name.`);const{name:t,organization:s}=e.groups;return{name:t,organization:s}}async function _r(r,e){const t=F.resolve(r,"package.json");try{const s=await Ue(t,E=>JSON.parse(E.toString("utf-8")));if(s===void 0)return;const o=s[ue];if(o===void 0)return;const a={...l.BlockPackDescriptionFromPackageJsonRaw.parse(o),id:{...Xe(ze.notEmpty(s.name,`"name" not found in ${t}`)),version:l.SemVer.parse(s.version)}},c=await Me(r).safeParseAsync(a);return c.success?c.data:void 0}catch(s){e==null||e.info(s);return}}async function Mt(r){const e=F.resolve(r,"package.json"),t=JSON.parse(await G.readFile(e,{encoding:"utf-8"})),s=t[ue];if(s===void 0)throw new Error(`Block description (field ${ue}) not found in ${e}.`);return{...l.BlockPackDescriptionFromPackageJsonRaw.parse(s),id:{...Xe(ze.notEmpty(t.name,`"name" not found in ${e}`)),version:l.SemVer.parse(t.version)}}}async function xr(r){const e=await Mt(r);return await Me(r).parseAsync(e)}function jr(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var Be={exports:{}};const Gr="2.0.0",Ut=256,zr=Number.MAX_SAFE_INTEGER||9007199254740991,Vr=16,Mr=Ut-6,Ur=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var me={MAX_LENGTH:Ut,MAX_SAFE_COMPONENT_LENGTH:Vr,MAX_SAFE_BUILD_LENGTH:Mr,MAX_SAFE_INTEGER:zr,RELEASE_TYPES:Ur,SEMVER_SPEC_VERSION:Gr,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2};const Xr=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...r)=>console.error("SEMVER",...r):()=>{};var $e=Xr;(function(r,e){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:s,MAX_LENGTH:o}=me,a=$e;e=r.exports={};const c=e.re=[],E=e.safeRe=[],i=e.src=[],n=e.t={};let f=0;const g="[a-zA-Z0-9-]",R=[["\\s",1],["\\d",o],[g,s]],u=L=>{for(const[P,S]of R)L=L.split(`${P}*`).join(`${P}{0,${S}}`).split(`${P}+`).join(`${P}{1,${S}}`);return L},p=(L,P,S)=>{const N=u(P),O=f++;a(L,O,P),n[L]=O,i[O]=P,c[O]=new RegExp(P,S?"g":void 0),E[O]=new RegExp(N,S?"g":void 0)};p("NUMERICIDENTIFIER","0|[1-9]\\d*"),p("NUMERICIDENTIFIERLOOSE","\\d+"),p("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${g}*`),p("MAINVERSION",`(${i[n.NUMERICIDENTIFIER]})\\.(${i[n.NUMERICIDENTIFIER]})\\.(${i[n.NUMERICIDENTIFIER]})`),p("MAINVERSIONLOOSE",`(${i[n.NUMERICIDENTIFIERLOOSE]})\\.(${i[n.NUMERICIDENTIFIERLOOSE]})\\.(${i[n.NUMERICIDENTIFIERLOOSE]})`),p("PRERELEASEIDENTIFIER",`(?:${i[n.NUMERICIDENTIFIER]}|${i[n.NONNUMERICIDENTIFIER]})`),p("PRERELEASEIDENTIFIERLOOSE",`(?:${i[n.NUMERICIDENTIFIERLOOSE]}|${i[n.NONNUMERICIDENTIFIER]})`),p("PRERELEASE",`(?:-(${i[n.PRERELEASEIDENTIFIER]}(?:\\.${i[n.PRERELEASEIDENTIFIER]})*))`),p("PRERELEASELOOSE",`(?:-?(${i[n.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${i[n.PRERELEASEIDENTIFIERLOOSE]})*))`),p("BUILDIDENTIFIER",`${g}+`),p("BUILD",`(?:\\+(${i[n.BUILDIDENTIFIER]}(?:\\.${i[n.BUILDIDENTIFIER]})*))`),p("FULLPLAIN",`v?${i[n.MAINVERSION]}${i[n.PRERELEASE]}?${i[n.BUILD]}?`),p("FULL",`^${i[n.FULLPLAIN]}$`),p("LOOSEPLAIN",`[v=\\s]*${i[n.MAINVERSIONLOOSE]}${i[n.PRERELEASELOOSE]}?${i[n.BUILD]}?`),p("LOOSE",`^${i[n.LOOSEPLAIN]}$`),p("GTLT","((?:<|>)?=?)"),p("XRANGEIDENTIFIERLOOSE",`${i[n.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),p("XRANGEIDENTIFIER",`${i[n.NUMERICIDENTIFIER]}|x|X|\\*`),p("XRANGEPLAIN",`[v=\\s]*(${i[n.XRANGEIDENTIFIER]})(?:\\.(${i[n.XRANGEIDENTIFIER]})(?:\\.(${i[n.XRANGEIDENTIFIER]})(?:${i[n.PRERELEASE]})?${i[n.BUILD]}?)?)?`),p("XRANGEPLAINLOOSE",`[v=\\s]*(${i[n.XRANGEIDENTIFIERLOOSE]})(?:\\.(${i[n.XRANGEIDENTIFIERLOOSE]})(?:\\.(${i[n.XRANGEIDENTIFIERLOOSE]})(?:${i[n.PRERELEASELOOSE]})?${i[n.BUILD]}?)?)?`),p("XRANGE",`^${i[n.GTLT]}\\s*${i[n.XRANGEPLAIN]}$`),p("XRANGELOOSE",`^${i[n.GTLT]}\\s*${i[n.XRANGEPLAINLOOSE]}$`),p("COERCEPLAIN",`(^|[^\\d])(\\d{1,${t}})(?:\\.(\\d{1,${t}}))?(?:\\.(\\d{1,${t}}))?`),p("COERCE",`${i[n.COERCEPLAIN]}(?:$|[^\\d])`),p("COERCEFULL",i[n.COERCEPLAIN]+`(?:${i[n.PRERELEASE]})?(?:${i[n.BUILD]})?(?:$|[^\\d])`),p("COERCERTL",i[n.COERCE],!0),p("COERCERTLFULL",i[n.COERCEFULL],!0),p("LONETILDE","(?:~>?)"),p("TILDETRIM",`(\\s*)${i[n.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",p("TILDE",`^${i[n.LONETILDE]}${i[n.XRANGEPLAIN]}$`),p("TILDELOOSE",`^${i[n.LONETILDE]}${i[n.XRANGEPLAINLOOSE]}$`),p("LONECARET","(?:\\^)"),p("CARETTRIM",`(\\s*)${i[n.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",p("CARET",`^${i[n.LONECARET]}${i[n.XRANGEPLAIN]}$`),p("CARETLOOSE",`^${i[n.LONECARET]}${i[n.XRANGEPLAINLOOSE]}$`),p("COMPARATORLOOSE",`^${i[n.GTLT]}\\s*(${i[n.LOOSEPLAIN]})$|^$`),p("COMPARATOR",`^${i[n.GTLT]}\\s*(${i[n.FULLPLAIN]})$|^$`),p("COMPARATORTRIM",`(\\s*)${i[n.GTLT]}\\s*(${i[n.LOOSEPLAIN]}|${i[n.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",p("HYPHENRANGE",`^\\s*(${i[n.XRANGEPLAIN]})\\s+-\\s+(${i[n.XRANGEPLAIN]})\\s*$`),p("HYPHENRANGELOOSE",`^\\s*(${i[n.XRANGEPLAINLOOSE]})\\s+-\\s+(${i[n.XRANGEPLAINLOOSE]})\\s*$`),p("STAR","(<|>)?=?\\s*\\*"),p("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),p("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(Be,Be.exports);var Q=Be.exports;const qr=Object.freeze({loose:!0}),Jr=Object.freeze({}),Wr=r=>r?typeof r!="object"?qr:r:Jr;var qe=Wr;const at=/^[0-9]+$/,Xt=(r,e)=>{const t=at.test(r),s=at.test(e);return t&&s&&(r=+r,e=+e),r===e?0:t&&!s?-1:s&&!t?1:r<e?-1:1},Hr=(r,e)=>Xt(e,r);var qt={compareIdentifiers:Xt,rcompareIdentifiers:Hr};const re=$e,{MAX_LENGTH:ot,MAX_SAFE_INTEGER:se}=me,{safeRe:ct,t:lt}=Q,Yr=qe,{compareIdentifiers:U}=qt;let Kr=class x{constructor(e,t){if(t=Yr(t),e instanceof x){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>ot)throw new TypeError(`version is longer than ${ot} characters`);re("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const s=e.trim().match(t.loose?ct[lt.LOOSE]:ct[lt.FULL]);if(!s)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+s[1],this.minor=+s[2],this.patch=+s[3],this.major>se||this.major<0)throw new TypeError("Invalid major version");if(this.minor>se||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>se||this.patch<0)throw new TypeError("Invalid patch version");s[4]?this.prerelease=s[4].split(".").map(o=>{if(/^[0-9]+$/.test(o)){const a=+o;if(a>=0&&a<se)return a}return o}):this.prerelease=[],this.build=s[5]?s[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(re("SemVer.compare",this.version,this.options,e),!(e instanceof x)){if(typeof e=="string"&&e===this.version)return 0;e=new x(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof x||(e=new x(e,this.options)),U(this.major,e.major)||U(this.minor,e.minor)||U(this.patch,e.patch)}comparePre(e){if(e instanceof x||(e=new x(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{const s=this.prerelease[t],o=e.prerelease[t];if(re("prerelease compare",t,s,o),s===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(s===void 0)return-1;if(s===o)continue;return U(s,o)}while(++t)}compareBuild(e){e instanceof x||(e=new x(e,this.options));let t=0;do{const s=this.build[t],o=e.build[t];if(re("build compare",t,s,o),s===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(s===void 0)return-1;if(s===o)continue;return U(s,o)}while(++t)}inc(e,t,s){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,s);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,s);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,s),this.inc("pre",t,s);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,s),this.inc("pre",t,s);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{const o=Number(s)?1:0;if(!t&&s===!1)throw new Error("invalid increment argument: identifier is empty");if(this.prerelease.length===0)this.prerelease=[o];else{let a=this.prerelease.length;for(;--a>=0;)typeof this.prerelease[a]=="number"&&(this.prerelease[a]++,a=-2);if(a===-1){if(t===this.prerelease.join(".")&&s===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(o)}}if(t){let a=[t,o];s===!1&&(a=[t]),U(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=a):this.prerelease=a}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};var B=Kr;const ft=B,Zr=(r,e,t=!1)=>{if(r instanceof ft)return r;try{return new ft(r,e)}catch(s){if(!t)return null;throw s}};var X=Zr;const Qr=X,es=(r,e)=>{const t=Qr(r,e);return t?t.version:null};var ts=es;const rs=X,ss=(r,e)=>{const t=rs(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};var ns=ss;const ut=B,is=(r,e,t,s,o)=>{typeof t=="string"&&(o=s,s=t,t=void 0);try{return new ut(r instanceof ut?r.version:r,t).inc(e,s,o).version}catch{return null}};var as=is;const ht=X,os=(r,e)=>{const t=ht(r,null,!0),s=ht(e,null,!0),o=t.compare(s);if(o===0)return null;const a=o>0,c=a?t:s,E=a?s:t,i=!!c.prerelease.length;if(!!E.prerelease.length&&!i)return!E.patch&&!E.minor?"major":c.patch?"patch":c.minor?"minor":"major";const f=i?"pre":"";return t.major!==s.major?f+"major":t.minor!==s.minor?f+"minor":t.patch!==s.patch?f+"patch":"prerelease"};var cs=os;const ls=B,fs=(r,e)=>new ls(r,e).major;var us=fs;const hs=B,ps=(r,e)=>new hs(r,e).minor;var gs=ps;const ds=B,ms=(r,e)=>new ds(r,e).patch;var $s=ms;const Es=X,vs=(r,e)=>{const t=Es(r,e);return t&&t.prerelease.length?t.prerelease:null};var ws=vs;const pt=B,Rs=(r,e,t)=>new pt(r,t).compare(new pt(e,t));var D=Rs;const ks=D,Ps=(r,e,t)=>ks(e,r,t);var ys=Ps;const Ss=D,Os=(r,e)=>Ss(r,e,!0);var Is=Os;const gt=B,Cs=(r,e,t)=>{const s=new gt(r,t),o=new gt(e,t);return s.compare(o)||s.compareBuild(o)};var Je=Cs;const Ns=Je,Ts=(r,e)=>r.sort((t,s)=>Ns(t,s,e));var Ls=Ts;const As=Je,Fs=(r,e)=>r.sort((t,s)=>As(s,t,e));var Bs=Fs;const bs=D,Ds=(r,e,t)=>bs(r,e,t)>0;var Ee=Ds;const _s=D,xs=(r,e,t)=>_s(r,e,t)<0;var We=xs;const js=D,Gs=(r,e,t)=>js(r,e,t)===0;var Jt=Gs;const zs=D,Vs=(r,e,t)=>zs(r,e,t)!==0;var Wt=Vs;const Ms=D,Us=(r,e,t)=>Ms(r,e,t)>=0;var He=Us;const Xs=D,qs=(r,e,t)=>Xs(r,e,t)<=0;var Ye=qs;const Js=Jt,Ws=Wt,Hs=Ee,Ys=He,Ks=We,Zs=Ye,Qs=(r,e,t,s)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return Js(r,t,s);case"!=":return Ws(r,t,s);case">":return Hs(r,t,s);case">=":return Ys(r,t,s);case"<":return Ks(r,t,s);case"<=":return Zs(r,t,s);default:throw new TypeError(`Invalid operator: ${e}`)}};var Ht=Qs;const en=B,tn=X,{safeRe:ne,t:ie}=Q,rn=(r,e)=>{if(r instanceof en)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(e.includePrerelease?ne[ie.COERCEFULL]:ne[ie.COERCE]);else{const i=e.includePrerelease?ne[ie.COERCERTLFULL]:ne[ie.COERCERTL];let n;for(;(n=i.exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||n.index+n[0].length!==t.index+t[0].length)&&(t=n),i.lastIndex=n.index+n[1].length+n[2].length;i.lastIndex=-1}if(t===null)return null;const s=t[2],o=t[3]||"0",a=t[4]||"0",c=e.includePrerelease&&t[5]?`-${t[5]}`:"",E=e.includePrerelease&&t[6]?`+${t[6]}`:"";return tn(`${s}.${o}.${a}${c}${E}`,e)};var sn=rn;class nn{constructor(){this.max=1e3,this.map=new Map}get(e){const t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){const o=this.map.keys().next().value;this.delete(o)}this.map.set(e,t)}return this}}var an=nn,ye,dt;function _(){if(dt)return ye;dt=1;const r=/\s+/g;class e{constructor(h,v){if(v=o(v),h instanceof e)return h.loose===!!v.loose&&h.includePrerelease===!!v.includePrerelease?h:new e(h.raw,v);if(h instanceof a)return this.raw=h.value,this.set=[[h]],this.formatted=void 0,this;if(this.options=v,this.loose=!!v.loose,this.includePrerelease=!!v.includePrerelease,this.raw=h.trim().replace(r," "),this.set=this.raw.split("||").map(m=>this.parseRange(m.trim())).filter(m=>m.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const m=this.set[0];if(this.set=this.set.filter(w=>!L(w[0])),this.set.length===0)this.set=[m];else if(this.set.length>1){for(const w of this.set)if(w.length===1&&P(w[0])){this.set=[w];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let h=0;h<this.set.length;h++){h>0&&(this.formatted+="||");const v=this.set[h];for(let m=0;m<v.length;m++)m>0&&(this.formatted+=" "),this.formatted+=v[m].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(h){const m=((this.options.includePrerelease&&u)|(this.options.loose&&p))+":"+h,w=s.get(m);if(w)return w;const $=this.options.loose,k=$?i[n.HYPHENRANGELOOSE]:i[n.HYPHENRANGE];h=h.replace(k,wr(this.options.includePrerelease)),c("hyphen replace",h),h=h.replace(i[n.COMPARATORTRIM],f),c("comparator trim",h),h=h.replace(i[n.TILDETRIM],g),c("tilde trim",h),h=h.replace(i[n.CARETTRIM],R),c("caret trim",h);let C=h.split(" ").map(A=>N(A,this.options)).join(" ").split(/\s+/).map(A=>vr(A,this.options));$&&(C=C.filter(A=>(c("loose invalid filter",A,this.options),!!A.match(i[n.COMPARATORLOOSE])))),c("range list",C);const y=new Map,T=C.map(A=>new a(A,this.options));for(const A of T){if(L(A))return[A];y.set(A.value,A)}y.size>1&&y.has("")&&y.delete("");const b=[...y.values()];return s.set(m,b),b}intersects(h,v){if(!(h instanceof e))throw new TypeError("a Range is required");return this.set.some(m=>S(m,v)&&h.set.some(w=>S(w,v)&&m.every($=>w.every(k=>$.intersects(k,v)))))}test(h){if(!h)return!1;if(typeof h=="string")try{h=new E(h,this.options)}catch{return!1}for(let v=0;v<this.set.length;v++)if(Rr(this.set[v],h,this.options))return!0;return!1}}ye=e;const t=an,s=new t,o=qe,a=ve(),c=$e,E=B,{safeRe:i,t:n,comparatorTrimReplace:f,tildeTrimReplace:g,caretTrimReplace:R}=Q,{FLAG_INCLUDE_PRERELEASE:u,FLAG_LOOSE:p}=me,L=d=>d.value==="<0.0.0-0",P=d=>d.value==="",S=(d,h)=>{let v=!0;const m=d.slice();let w=m.pop();for(;v&&m.length;)v=m.every($=>w.intersects($,h)),w=m.pop();return v},N=(d,h)=>(c("comp",d,h),d=ee(d,h),c("caret",d),d=z(d,h),c("tildes",d),d=mr(d,h),c("xrange",d),d=Er(d,h),c("stars",d),d),O=d=>!d||d.toLowerCase()==="x"||d==="*",z=(d,h)=>d.trim().split(/\s+/).map(v=>V(v,h)).join(" "),V=(d,h)=>{const v=h.loose?i[n.TILDELOOSE]:i[n.TILDE];return d.replace(v,(m,w,$,k,C)=>{c("tilde",d,m,w,$,k,C);let y;return O(w)?y="":O($)?y=`>=${w}.0.0 <${+w+1}.0.0-0`:O(k)?y=`>=${w}.${$}.0 <${w}.${+$+1}.0-0`:C?(c("replaceTilde pr",C),y=`>=${w}.${$}.${k}-${C} <${w}.${+$+1}.0-0`):y=`>=${w}.${$}.${k} <${w}.${+$+1}.0-0`,c("tilde return",y),y})},ee=(d,h)=>d.trim().split(/\s+/).map(v=>dr(v,h)).join(" "),dr=(d,h)=>{c("caret",d,h);const v=h.loose?i[n.CARETLOOSE]:i[n.CARET],m=h.includePrerelease?"-0":"";return d.replace(v,(w,$,k,C,y)=>{c("caret",d,w,$,k,C,y);let T;return O($)?T="":O(k)?T=`>=${$}.0.0${m} <${+$+1}.0.0-0`:O(C)?$==="0"?T=`>=${$}.${k}.0${m} <${$}.${+k+1}.0-0`:T=`>=${$}.${k}.0${m} <${+$+1}.0.0-0`:y?(c("replaceCaret pr",y),$==="0"?k==="0"?T=`>=${$}.${k}.${C}-${y} <${$}.${k}.${+C+1}-0`:T=`>=${$}.${k}.${C}-${y} <${$}.${+k+1}.0-0`:T=`>=${$}.${k}.${C}-${y} <${+$+1}.0.0-0`):(c("no pr"),$==="0"?k==="0"?T=`>=${$}.${k}.${C}${m} <${$}.${k}.${+C+1}-0`:T=`>=${$}.${k}.${C}${m} <${$}.${+k+1}.0-0`:T=`>=${$}.${k}.${C} <${+$+1}.0.0-0`),c("caret return",T),T})},mr=(d,h)=>(c("replaceXRanges",d,h),d.split(/\s+/).map(v=>$r(v,h)).join(" ")),$r=(d,h)=>{d=d.trim();const v=h.loose?i[n.XRANGELOOSE]:i[n.XRANGE];return d.replace(v,(m,w,$,k,C,y)=>{c("xRange",d,m,w,$,k,C,y);const T=O($),b=T||O(k),A=b||O(C),J=A;return w==="="&&J&&(w=""),y=h.includePrerelease?"-0":"",T?w===">"||w==="<"?m="<0.0.0-0":m="*":w&&J?(b&&(k=0),C=0,w===">"?(w=">=",b?($=+$+1,k=0,C=0):(k=+k+1,C=0)):w==="<="&&(w="<",b?$=+$+1:k=+k+1),w==="<"&&(y="-0"),m=`${w+$}.${k}.${C}${y}`):b?m=`>=${$}.0.0${y} <${+$+1}.0.0-0`:A&&(m=`>=${$}.${k}.0${y} <${$}.${+k+1}.0-0`),c("xRange return",m),m})},Er=(d,h)=>(c("replaceStars",d,h),d.trim().replace(i[n.STAR],"")),vr=(d,h)=>(c("replaceGTE0",d,h),d.trim().replace(i[h.includePrerelease?n.GTE0PRE:n.GTE0],"")),wr=d=>(h,v,m,w,$,k,C,y,T,b,A,J)=>(O(m)?v="":O(w)?v=`>=${m}.0.0${d?"-0":""}`:O($)?v=`>=${m}.${w}.0${d?"-0":""}`:k?v=`>=${v}`:v=`>=${v}${d?"-0":""}`,O(T)?y="":O(b)?y=`<${+T+1}.0.0-0`:O(A)?y=`<${T}.${+b+1}.0-0`:J?y=`<=${T}.${b}.${A}-${J}`:d?y=`<${T}.${b}.${+A+1}-0`:y=`<=${y}`,`${v} ${y}`.trim()),Rr=(d,h,v)=>{for(let m=0;m<d.length;m++)if(!d[m].test(h))return!1;if(h.prerelease.length&&!v.includePrerelease){for(let m=0;m<d.length;m++)if(c(d[m].semver),d[m].semver!==a.ANY&&d[m].semver.prerelease.length>0){const w=d[m].semver;if(w.major===h.major&&w.minor===h.minor&&w.patch===h.patch)return!0}return!1}return!0};return ye}var Se,mt;function ve(){if(mt)return Se;mt=1;const r=Symbol("SemVer ANY");class e{static get ANY(){return r}constructor(f,g){if(g=t(g),f instanceof e){if(f.loose===!!g.loose)return f;f=f.value}f=f.trim().split(/\s+/).join(" "),c("comparator",f,g),this.options=g,this.loose=!!g.loose,this.parse(f),this.semver===r?this.value="":this.value=this.operator+this.semver.version,c("comp",this)}parse(f){const g=this.options.loose?s[o.COMPARATORLOOSE]:s[o.COMPARATOR],R=f.match(g);if(!R)throw new TypeError(`Invalid comparator: ${f}`);this.operator=R[1]!==void 0?R[1]:"",this.operator==="="&&(this.operator=""),R[2]?this.semver=new E(R[2],this.options.loose):this.semver=r}toString(){return this.value}test(f){if(c("Comparator.test",f,this.options.loose),this.semver===r||f===r)return!0;if(typeof f=="string")try{f=new E(f,this.options)}catch{return!1}return a(f,this.operator,this.semver,this.options)}intersects(f,g){if(!(f instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new i(f.value,g).test(this.value):f.operator===""?f.value===""?!0:new i(this.value,g).test(f.semver):(g=t(g),g.includePrerelease&&(this.value==="<0.0.0-0"||f.value==="<0.0.0-0")||!g.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("=")||a(this.semver,"<",f.semver,g)&&this.operator.startsWith(">")&&f.operator.startsWith("<")||a(this.semver,">",f.semver,g)&&this.operator.startsWith("<")&&f.operator.startsWith(">")))}}Se=e;const t=qe,{safeRe:s,t:o}=Q,a=Ht,c=$e,E=B,i=_();return Se}const on=_(),cn=(r,e,t)=>{try{e=new on(e,t)}catch{return!1}return e.test(r)};var we=cn;const ln=_(),fn=(r,e)=>new ln(r,e).set.map(t=>t.map(s=>s.value).join(" ").trim().split(" "));var un=fn;const hn=B,pn=_(),gn=(r,e,t)=>{let s=null,o=null,a=null;try{a=new pn(e,t)}catch{return null}return r.forEach(c=>{a.test(c)&&(!s||o.compare(c)===-1)&&(s=c,o=new hn(s,t))}),s};var dn=gn;const mn=B,$n=_(),En=(r,e,t)=>{let s=null,o=null,a=null;try{a=new $n(e,t)}catch{return null}return r.forEach(c=>{a.test(c)&&(!s||o.compare(c)===1)&&(s=c,o=new mn(s,t))}),s};var vn=En;const Oe=B,wn=_(),$t=Ee,Rn=(r,e)=>{r=new wn(r,e);let t=new Oe("0.0.0");if(r.test(t)||(t=new Oe("0.0.0-0"),r.test(t)))return t;t=null;for(let s=0;s<r.set.length;++s){const o=r.set[s];let a=null;o.forEach(c=>{const E=new Oe(c.semver.version);switch(c.operator){case">":E.prerelease.length===0?E.patch++:E.prerelease.push(0),E.raw=E.format();case"":case">=":(!a||$t(E,a))&&(a=E);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${c.operator}`)}}),a&&(!t||$t(t,a))&&(t=a)}return t&&r.test(t)?t:null};var kn=Rn;const Pn=_(),yn=(r,e)=>{try{return new Pn(r,e).range||"*"}catch{return null}};var Sn=yn;const On=B,Yt=ve(),{ANY:In}=Yt,Cn=_(),Nn=we,Et=Ee,vt=We,Tn=Ye,Ln=He,An=(r,e,t,s)=>{r=new On(r,s),e=new Cn(e,s);let o,a,c,E,i;switch(t){case">":o=Et,a=Tn,c=vt,E=">",i=">=";break;case"<":o=vt,a=Ln,c=Et,E="<",i="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Nn(r,e,s))return!1;for(let n=0;n<e.set.length;++n){const f=e.set[n];let g=null,R=null;if(f.forEach(u=>{u.semver===In&&(u=new Yt(">=0.0.0")),g=g||u,R=R||u,o(u.semver,g.semver,s)?g=u:c(u.semver,R.semver,s)&&(R=u)}),g.operator===E||g.operator===i||(!R.operator||R.operator===E)&&a(r,R.semver))return!1;if(R.operator===i&&c(r,R.semver))return!1}return!0};var Ke=An;const Fn=Ke,Bn=(r,e,t)=>Fn(r,e,">",t);var bn=Bn;const Dn=Ke,_n=(r,e,t)=>Dn(r,e,"<",t);var xn=_n;const wt=_(),jn=(r,e,t)=>(r=new wt(r,t),e=new wt(e,t),r.intersects(e,t));var Gn=jn;const zn=we,Vn=D;var Mn=(r,e,t)=>{const s=[];let o=null,a=null;const c=r.sort((f,g)=>Vn(f,g,t));for(const f of c)zn(f,e,t)?(a=f,o||(o=f)):(a&&s.push([o,a]),a=null,o=null);o&&s.push([o,null]);const E=[];for(const[f,g]of s)f===g?E.push(f):!g&&f===c[0]?E.push("*"):g?f===c[0]?E.push(`<=${g}`):E.push(`${f} - ${g}`):E.push(`>=${f}`);const i=E.join(" || "),n=typeof e.raw=="string"?e.raw:String(e);return i.length<n.length?i:e};const Rt=_(),Ze=ve(),{ANY:Ie}=Ze,H=we,Qe=D,Un=(r,e,t={})=>{if(r===e)return!0;r=new Rt(r,t),e=new Rt(e,t);let s=!1;e:for(const o of r.set){for(const a of e.set){const c=qn(o,a,t);if(s=s||c!==null,c)continue e}if(s)return!1}return!0},Xn=[new Ze(">=0.0.0-0")],kt=[new Ze(">=0.0.0")],qn=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===Ie){if(e.length===1&&e[0].semver===Ie)return!0;t.includePrerelease?r=Xn:r=kt}if(e.length===1&&e[0].semver===Ie){if(t.includePrerelease)return!0;e=kt}const s=new Set;let o,a;for(const u of r)u.operator===">"||u.operator===">="?o=Pt(o,u,t):u.operator==="<"||u.operator==="<="?a=yt(a,u,t):s.add(u.semver);if(s.size>1)return null;let c;if(o&&a){if(c=Qe(o.semver,a.semver,t),c>0)return null;if(c===0&&(o.operator!==">="||a.operator!=="<="))return null}for(const u of s){if(o&&!H(u,String(o),t)||a&&!H(u,String(a),t))return null;for(const p of e)if(!H(u,String(p),t))return!1;return!0}let E,i,n,f,g=a&&!t.includePrerelease&&a.semver.prerelease.length?a.semver:!1,R=o&&!t.includePrerelease&&o.semver.prerelease.length?o.semver:!1;g&&g.prerelease.length===1&&a.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(const u of e){if(f=f||u.operator===">"||u.operator===">=",n=n||u.operator==="<"||u.operator==="<=",o){if(R&&u.semver.prerelease&&u.semver.prerelease.length&&u.semver.major===R.major&&u.semver.minor===R.minor&&u.semver.patch===R.patch&&(R=!1),u.operator===">"||u.operator===">="){if(E=Pt(o,u,t),E===u&&E!==o)return!1}else if(o.operator===">="&&!H(o.semver,String(u),t))return!1}if(a){if(g&&u.semver.prerelease&&u.semver.prerelease.length&&u.semver.major===g.major&&u.semver.minor===g.minor&&u.semver.patch===g.patch&&(g=!1),u.operator==="<"||u.operator==="<="){if(i=yt(a,u,t),i===u&&i!==a)return!1}else if(a.operator==="<="&&!H(a.semver,String(u),t))return!1}if(!u.operator&&(a||o)&&c!==0)return!1}return!(o&&n&&!a&&c!==0||a&&f&&!o&&c!==0||R||g)},Pt=(r,e,t)=>{if(!r)return e;const s=Qe(r.semver,e.semver,t);return s>0?r:s<0||e.operator===">"&&r.operator===">="?e:r},yt=(r,e,t)=>{if(!r)return e;const s=Qe(r.semver,e.semver,t);return s<0?r:s>0||e.operator==="<"&&r.operator==="<="?e:r};var Jn=Un;const Ce=Q,St=me,Wn=B,Ot=qt,Hn=X,Yn=ts,Kn=ns,Zn=as,Qn=cs,ei=us,ti=gs,ri=$s,si=ws,ni=D,ii=ys,ai=Is,oi=Je,ci=Ls,li=Bs,fi=Ee,ui=We,hi=Jt,pi=Wt,gi=He,di=Ye,mi=Ht,$i=sn,Ei=ve(),vi=_(),wi=we,Ri=un,ki=dn,Pi=vn,yi=kn,Si=Sn,Oi=Ke,Ii=bn,Ci=xn,Ni=Gn,Ti=Mn,Li=Jn;var Kt={parse:Hn,valid:Yn,clean:Kn,inc:Zn,diff:Qn,major:ei,minor:ti,patch:ri,prerelease:si,compare:ni,rcompare:ii,compareLoose:ai,compareBuild:oi,sort:ci,rsort:li,gt:fi,lt:ui,eq:hi,neq:pi,gte:gi,lte:di,cmp:mi,coerce:$i,Comparator:Ei,Range:vi,satisfies:wi,toComparators:Ri,maxSatisfying:ki,minSatisfying:Pi,minVersion:yi,validRange:Si,outside:Oi,gtr:Ii,ltr:Ci,intersects:Ni,simplifyRange:Ti,subset:Li,SemVer:Wn,re:Ce.re,src:Ce.src,tokens:Ce.t,SEMVER_SPEC_VERSION:St.SEMVER_SPEC_VERSION,RELEASE_TYPES:St.RELEASE_TYPES,compareIdentifiers:Ot.compareIdentifiers,rcompareIdentifiers:Ot.rcompareIdentifiers};const Ai=jr(Kt),be="_updates_v2/per_package_version/";function Fi(r,e){return`${be}${r.organization}/${r.name}/${r.version}/${e}`}const Bi=/(?<packageKeyWithoutVersion>(?<organization>[^\/]+)\/(?<name>[^\/]+))\/(?<version>[^\/]+)\/(?<seed>[^\/]+)$/,Ne="_updates_v2/_global_update_in",It="_updates_v2/_global_update_out",q="v2/",Zt="overview.json",Qt="overview.json",K="manifest.json",he="channels",ae=/^[-a-z0-9]+$/;function et(r){return`${r.organization}/${r.name}/${r.version}`}function Y(r){return`${q}${et(r)}`}const er="/"+K,tr=I.z.object({description:l.BlockPackDescriptionManifest,channels:I.z.array(I.z.string()).default(()=>[]),manifestSha256:l.Sha256Schema}),De=I.z.object({schema:I.z.literal("v2"),versions:I.z.array(tr)});function rr(r){return`${r.organization}/${r.name}/${Qt}`}function _e(r){return`${q}${rr(r)}`}function sr(r){return`${et(r)}/${he}/`}function nr(r){return`${q}${sr(r)}`}const ir=/(?<packageKeyWithoutVersion>(?<organization>[^\/]+)\/(?<name>[^\/]+))\/(?<version>[^\/]+)\/manifest\.json$/,oe=`${q}${Zt}`;function tt(r){const e=I.z.object({id:l.BlockPackIdNoVersion,allVersions:I.z.array(I.z.string()).optional(),allVersionsWithChannels:I.z.array(l.VersionWithChannels).optional(),latest:r,latestManifestSha256:l.Sha256Schema,latestByChannel:I.z.record(I.z.string(),I.z.object({description:r,manifestSha256:l.Sha256Schema})).default({})});return e.transform(t=>t.allVersionsWithChannels?t:{...t,allVersionsWithChannels:t.allVersions.map(s=>({version:s,channels:[]}))}).transform(t=>t.latestByChannel[l.AnyChannel]?t:{...t,latestByChannel:{...t.latestByChannel,[l.AnyChannel]:{description:t.latest,manifestSha256:t.latestManifestSha256}}}).pipe(e.required({allVersionsWithChannels:!0}))}const bi=tt(l.BlockPackDescriptionManifest);function Re(r){return I.z.object({schema:I.z.literal("v2"),packages:I.z.array(tt(r))})}const xe=Re(l.BlockPackDescriptionManifest);function Di(r){return l.CreateBlockPackDescriptionSchema(l.BlockComponentsManifest,l.BlockPackMeta(l.ContentRelativeText.transform(de(r)),l.ContentRelativeBinary.transform(Z(r))))}function _i(r){return Re(l.CreateBlockPackDescriptionSchema(l.BlockComponentsManifest,l.BlockPackMeta(l.ContentRelativeText.transform(de(r)),l.ContentRelativeBinary.transform(Z(r)))))}function xi(r){return Re(l.CreateBlockPackDescriptionSchema(l.BlockComponentsManifest,l.BlockPackMeta(l.ContentRelativeText.transform(de(r)),l.ContentRelativeBinary.transform(Z(r)))))}class ji{constructor(e,t=new ze.ConsoleLoggerAdapter){this.storage=e,this.logger=t}async updateRegistry(e="normal"){this.logger.info("Initiating registry refresh...");const t=new Map,s=[],o=await this.storage.listFiles(be),a=({organization:n,name:f,version:g})=>{const R=`${n}:${f}`;let u=t.get(R);if(u){if(!u.versions.has(g))return u.versions.add(g),!0}else return t.set(R,{package:{organization:n,name:f},versions:new Set([g])}),!0;return!1};this.logger.info("Packages to be updated:");for(const n of o){const f=n.match(Bi);if(!f)continue;s.push(n);const{organization:g,name:R,version:u,seed:p}=f.groups,L=a({organization:g,name:R,version:u});this.logger.info(` - ${g}:${R}:${u} added:${L}`)}if(e==="force"){const n=await this.storage.listFiles(q);for(const f of n){const g=f.match(ir);if(!g)continue;const{organization:R,name:u,version:p}=g.groups,L=a({organization:R,name:u,version:p});this.logger.info(` - ${R}:${u}:${p} force_added:${L}`)}}const c=await this.storage.getFile(oe);let i=(c===void 0?{schema:"v2",packages:[]}:xe.parse(JSON.parse(c.toString()))).packages;this.logger.info(`Global overview loaded, ${i.length} records`);for(const[,n]of t.entries()){const f=_e(n.package),g=await this.storage.getFile(f),R=g===void 0?{schema:"v2",versions:[]}:De.parse(JSON.parse(g.toString()));this.logger.info(`Updating ${n.package.organization}:${n.package.name} overview, ${R.versions.length} records`);const u=R.versions.filter(P=>!n.versions.has(P.description.id.version));for(const[P]of n.versions.entries()){const S=P.toString(),N={...n.package,version:S},O=await this.storage.getFile(Y(N)+er);if(!O)continue;const z=await fe(O),V=(await this.storage.listFiles(nr(N))).filter(ee=>ee.match(ae)?!0:(this.logger.warn(`Unexpected channel in ${l.blockPackIdToString(N)}: ${ee}`),!1));u.push({description:Fe(S).parse(l.BlockPackManifest.parse(JSON.parse(O.toString("utf8"))).description),manifestSha256:z,channels:V})}u.sort((P,S)=>Kt.compare(S.description.id.version,P.description.id.version)),e!=="dry-run"&&await this.storage.putFile(f,Buffer.from(JSON.stringify({schema:"v2",versions:u}))),this.logger.info(`Done (${u.length} records)`);const p=new Set;for(const P of u)for(const S of P.channels)p.add(S);i=i.filter(P=>P.id.organization!==n.package.organization||P.id.name!==n.package.name);const L=Fe(`${n.package.organization}/${n.package.name}`);i.push({id:{organization:n.package.organization,name:n.package.name},allVersions:u.map(P=>P.description.id.version).reverse(),allVersionsWithChannels:u.map(P=>({version:P.description.id.version,channels:P.channels})).reverse(),latest:L.parse(u[0].description),latestManifestSha256:u[0].manifestSha256,latestByChannel:Object.fromEntries([...p,l.AnyChannel].map(P=>{const S=u.find(N=>P===l.AnyChannel||N.channels.indexOf(P)!==-1);if(!S)throw new Error("Assertion error");return[P,{description:L.parse(S.description),manifestSha256:S==null?void 0:S.manifestSha256}]}))})}e!=="dry-run"&&await this.storage.putFile(oe,Buffer.from(JSON.stringify({schema:"v2",packages:i}))),this.logger.info(`Global overview updated (${i.length} records)`),e!=="dry-run"&&await this.storage.deleteFiles(...s.map(n=>`${be}${n}`)),this.logger.info("Version update requests cleared")}async updateIfNeeded(e="normal"){this.logger.info("Checking if registry requires refresh...");const t=await this.storage.getFile(Ne),s=await this.storage.getFile(It);if(e!=="force"&&t===void 0&&s===void 0){this.logger.info("No global seed files found, update not needed.");return}if(e!=="force"&&t!==void 0&&s!==void 0&&t.equals(s)){this.logger.info("Registry is up to date.");return}await this.updateRegistry(e),t&&(e!=="dry-run"&&await this.storage.putFile(It,t),this.logger.info("Refresh finished."))}async getPackageOverview(e){const t=await this.storage.getFile(_e(e));if(t!==void 0)return De.parse(JSON.parse(t.toString()))}async getGlobalOverview(){const e=await this.storage.getFile(oe);if(e!==void 0)return xe.parse(JSON.parse(e.toString()))}async marchChanged(e){const t=Tt.randomUUID(),s=Fi(e,t);this.logger.info(`Creating update seed at ${s} ...`),await this.storage.putFile(s,Buffer.from(t)),this.logger.info(`Touching global update seed ${Ne} ...`),await this.storage.putFile(Ne,Buffer.from(t))}async addPackageToChannel(e,t){if(!t.match(ae))throw new Error(`Illegal characters in channel name: ${t}`);const s=Y(e);if(await this.storage.getFile(`${s}/${K}`)===void 0)throw new Error(`Package ${l.blockPackIdToString(e)} not found in the registry.`);await this.storage.putFile(`${s}/${he}/${t}`,Buffer.from(t)),await this.marchChanged(e)}async removePackageFromChannel(e,t){if(!t.match(ae))throw new Error(`Illegal characters in channel name: ${t}`);const s=Y(e);if(await this.storage.getFile(`${s}/${K}`)===void 0)throw new Error(`Package ${l.blockPackIdToString(e)} not found in the registry.`);await this.storage.deleteFiles(`${s}/${he}/${t}`),await this.marchChanged(e)}async publishPackage(e,t){const s=Y(e.description.id);for(const a of e.files){const c=await t(a.name);if(c.length!==a.size)throw new Error(`Actual file size don't match file size from the manifest file for ${a.name} (actual = ${c.length}; manifest = ${a.size})`);const E=await fe(c);if(E!==a.sha256.toUpperCase())throw new Error(`Actual file SHA-256 don't match the checksum from the manifest file for ${a.name} (actual = ${E}; manifest = ${a.sha256.toUpperCase()})`);const i=s+"/"+a.name;this.logger.info(`Uploading ${a.name} -> ${i} ...`),await this.storage.putFile(i,c)}const o=s+"/"+K;this.logger.info(`Uploading manifest to ${o} ...`),await this.storage.putFile(o,Buffer.from(JSON.stringify(e))),await this.marchChanged(e.description.id)}}class ar{constructor(e,t,s){this.client=e,this.bucket=t,this.root=s}async getFile(e){try{return Buffer.from(await(await this.client.getObject({Bucket:this.bucket,Key:j.join(this.root,e)})).Body.transformToByteArray())}catch(t){if(t.name==="NoSuchKey")return;throw t}}async listFiles(e){const t=j.join(this.root,e),s=Lt.paginateListObjectsV2({client:this.client},{Bucket:this.bucket,Prefix:t}),o=[];for await(const a of s)o.push(...(a.Contents??[]).map(c=>j.relative(t,c.Key)));return o}async putFile(e,t){await this.client.putObject({Bucket:this.bucket,Key:j.join(this.root,e),Body:t})}async deleteFiles(...e){const t=await this.client.deleteObjects({Bucket:this.bucket,Delete:{Objects:e.map(s=>({Key:j.join(this.root,s)}))}});if(t.Errors!==void 0&&t.Errors.length>0)throw new Error(`Errors encountered while deleting files: ${t.Errors.join(`
2
- `)}`)}}class or{constructor(e){te(this,"root");this.root=F.resolve(e)}toAbsolutePath(e){if(j.isAbsolute(e))throw new Error("absolute path");return F.resolve(this.root,e.split(j.sep).join(F.sep))}async getFile(e){try{return await W.promises.readFile(this.toAbsolutePath(e))}catch(t){if(t.code=="ENOENT")return;throw new Error("",{cause:t})}}async listFiles(e){try{const t=this.toAbsolutePath(e);return(await W.promises.readdir(t,{recursive:!0,withFileTypes:!0})).filter(s=>s.isFile()).map(s=>F.relative(t,F.resolve(s.path,s.name)).split(F.sep).join(j.sep))}catch(t){if(t.code=="ENOENT")return[];throw new Error("",{cause:t})}}async putFile(e,t){const s=this.toAbsolutePath(e);await W.promises.mkdir(F.dirname(s),{recursive:!0}),await W.promises.writeFile(s,t)}async deleteFiles(...e){for(const t of e)await W.promises.rm(this.toAbsolutePath(t))}}function cr(r){const e=new URL(r,`file:${F.resolve(".").split(F.sep).join(j.sep)}/`);switch(e.protocol){case"file:":const t=F.resolve(e.pathname);return new or(t);case"s3:":const s={},o=e.searchParams.get("region");o&&(s.region=o);const a=e.hostname;return new ar(new Lt.S3(s),a,e.pathname.replace(/^\//,""));default:throw new Error(`Unknown protocol: ${e.protocol}`)}}const Gi=I.z.string().regex(/^(?:s3:|file:)/),lr=I.z.object({organization:I.z.string(),package:I.z.string(),version:l.SemVer.optional(),files:I.z.record(I.z.string().regex(/^[^\/]+$/),I.z.string()).default({}),meta:I.z.object({}).passthrough()}),fr=I.z.object({registries:I.z.record(I.z.string(),Gi).default({}),registry:I.z.string().optional()}),rt=fr.merge(lr).required({registry:!0,version:!0}),ke=rt.partial().required({registries:!0,files:!0}),ur="pl.package.json",hr="pl.package.yaml",Pe="v1/";function zi(r){return`${Pe}${r.organization}/${r.package}/${r.version}`}function st(r,e){return`${Pe}${r.organization}/${r.package}/${r.version}/${e}`}function je(r){return`${Pe}${r.organization}/${r.package}/overview.json`}const ce=`${Pe}overview.json`,nt="meta.json",Ge="_updates_v1/per_package_version/";function Vi(r,e){return`${Ge}${r.organization}/${r.package}/${r.version}/${e}`}const Mi=/(?<packageKeyWithoutVersion>(?<organization>[^\/]+)\/(?<pkg>[^\/]+))\/(?<version>[^\/]+)\/(?<seed>[^\/]+)$/,pr="_updates_v1/_global_update_in",Ct="_updates_v1/_global_update_out";class Ui{constructor(e,t){this.storage=e,this.logger=t}constructNewPackage(e){return new Xi(this.storage,e)}async updateRegistry(){var c,E,i,n,f,g,R,u;(c=this.logger)==null||c.info("Initiating registry refresh...");const e=new Map,t=[],s=await this.storage.listFiles(Ge);(E=this.logger)==null||E.info("Packages to be updated:");for(const p of s){const L=p.match(Mi);if(!L)continue;t.push(p);const{packageKeyWithoutVersion:P,organization:S,pkg:N,version:O,seed:z}=L.groups;let V=e.get(P);V?V.versions.has(O)||V.versions.add(O):e.set(P,{package:{organization:S,package:N},versions:new Set([O])}),(i=this.logger)==null||i.info(` - ${S}:${N}:${O}`)}const o=await this.storage.getFile(ce);let a=o===void 0?[]:JSON.parse(o.toString());(n=this.logger)==null||n.info(`Global overview loaded, ${a.length} records`);for(const[,p]of e.entries()){const L=je(p.package),P=await this.storage.getFile(L);let S=P===void 0?[]:JSON.parse(P.toString());(f=this.logger)==null||f.info(`Updating ${p.package.organization}:${p.package.package} overview, ${S.length} records`),S=S.filter(N=>!p.versions.has(N.version));for(const[N]of p.versions.entries()){const O=N.toString(),z=await this.storage.getFile(st({...p.package,version:O},nt));z&&S.push({version:O,meta:JSON.parse(z.toString())})}S.sort((N,O)=>Ai.compare(O.version,N.version)),await this.storage.putFile(L,Buffer.from(JSON.stringify(S))),(g=this.logger)==null||g.info(`Done (${S.length} records)`),a=a.filter(N=>N.organization!==p.package.organization||N.package!==p.package.package),a.push({organization:p.package.organization,package:p.package.package,allVersions:S.map(N=>N.version).reverse(),latestVersion:S[0].version,latestMeta:S[0].meta})}await this.storage.putFile(ce,Buffer.from(JSON.stringify(a))),(R=this.logger)==null||R.info(`Global overview updated (${a.length} records)`),await this.storage.deleteFiles(...t.map(p=>`${Ge}${p}`)),(u=this.logger)==null||u.info("Version update requests cleared")}async updateIfNeeded(e=!1){var o,a;(o=this.logger)==null||o.info("Checking if registry requires refresh...");const t=await this.storage.getFile(pr),s=await this.storage.getFile(Ct);!e&&t===void 0&&s===void 0||!e&&t!==void 0&&s!==void 0&&t.equals(s)||(await this.updateRegistry(),t&&(await this.storage.putFile(Ct,t),(a=this.logger)==null||a.info("Refresh finished")))}async getPackageOverview(e){const t=await this.storage.getFile(je(e));if(t!==void 0)return JSON.parse(t.toString())}async getGlobalOverview(){const e=await this.storage.getFile(ce);if(e!==void 0)return JSON.parse(e.toString())}}class Xi{constructor(e,t){te(this,"metaAdded",!1);te(this,"seed",Tt.randomUUID());this.storage=e,this.name=t}async addFile(e,t){await this.storage.putFile(st(this.name,e),t)}async writeMeta(e){await this.addFile(nt,Buffer.from(JSON.stringify(e))),this.metaAdded=!0}async finish(){if(!this.metaAdded)throw new Error("meta not added");await this.storage.putFile(Vi(this.name,this.seed),Buffer.of(0)),await this.storage.putFile(pr,Buffer.from(this.seed))}}function M(r,e){return e===void 0?r:{...r,...e,registries:{...r.registries,...e.registries},files:{...r.files,...e.files}}}async function Te(r){return Ue(r,e=>ke.parse(JSON.parse(e.toString())))}async function Le(r){return Ue(r,e=>ke.parse(Or.parse(e.toString())))}async function qi(){let r=ke.parse({});return r=M(r,await Te("./.pl.reg.json")),r=M(r,await Le("./.pl.reg.yaml")),r=M(r,await Te(`${it.homedir()}/.pl.reg.json`)),r=M(r,await Le(`${it.homedir()}/.pl.reg.yaml`)),r=M(r,await Te(ur)),r=M(r,await Le(hr)),r}class gr{constructor(e){this.conf=e}createRegistry(e){let t=this.conf.registry;if(!t.startsWith("file:")&&!t.startsWith("s3:")){const s=this.conf.registries[t];if(!s)throw new Error(`Registry with alias "${t}" not found`);t=s}return new Ui(cr(t),e)}get fullPackageName(){return{organization:this.conf.organization,package:this.conf.package,version:this.conf.version}}}async function Ji(r){const e=await qi();return new gr(rt.parse(M(e,r)))}exports.BlockComponentsAbsoluteUrl=Br;exports.BlockComponentsConsolidate=zt;exports.BlockComponentsDescription=Gt;exports.BlockDescriptionPackageJsonField=ue;exports.BlockDescriptionToExplicitBinaryBytes=Di;exports.BlockPackDescriptionConsolidateToFolder=Vt;exports.BlockPackDescriptionManifestAddRelativePathPrefix=Fe;exports.BlockPackMetaConsolidate=jt;exports.BlockPackMetaDescription=xt;exports.BlockPackMetaEmbedAbsoluteBase64=Lr;exports.BlockPackMetaEmbedAbsoluteBytes=Ar;exports.BlockPackMetaEmbedBytes=Fr;exports.BlockRegistryV2=ji;exports.ChannelNameRegexp=ae;exports.ChannelsFolder=he;exports.FSStorage=or;exports.GlobalOverview=Re;exports.GlobalOverviewEntry=tt;exports.GlobalOverviewEntryReg=bi;exports.GlobalOverviewFileName=Zt;exports.GlobalOverviewPath=ce;exports.GlobalOverviewPath$1=oe;exports.GlobalOverviewReg=xe;exports.GlobalOverviewToExplicitBinaryBase64=xi;exports.GlobalOverviewToExplicitBinaryBytes=_i;exports.MainPrefix=q;exports.ManifestFileName=K;exports.ManifestSuffix=er;exports.MetaFile=nt;exports.PackageManifestPattern=ir;exports.PackageOverview=De;exports.PackageOverviewFileName=Qt;exports.PackageOverviewVersionEntry=tr;exports.PlPackageConfigData=lr;exports.PlPackageJsonConfigFile=ur;exports.PlPackageYamlConfigFile=hr;exports.PlRegCommonConfigData=fr;exports.PlRegFullPackageConfigData=rt;exports.PlRegPackageConfig=gr;exports.PlRegPackageConfigDataShard=ke;exports.ResolvedBlockPackDescriptionFromPackageJson=Me;exports.ResolvedModuleFile=At;exports.ResolvedModuleFolder=Ft;exports.S3Storage=ar;exports.absoluteToBase64=Bt;exports.absoluteToBytes=bt;exports.absoluteToString=Ve;exports.buildBlockPackDist=br;exports.calculateSha256=fe;exports.cpAbsoluteToRelative=le;exports.getConfig=Ji;exports.loadPackDescription=xr;exports.loadPackDescriptionRaw=Mt;exports.mapLocalToAbsolute=Ae;exports.packFolderToRelativeTgz=Dt;exports.packageChannelPrefix=nr;exports.packageChannelPrefixInsideV2=sr;exports.packageContentPrefix=zi;exports.packageContentPrefix$1=Y;exports.packageContentPrefixInsideV2=et;exports.packageOverviewPath=je;exports.packageOverviewPath$1=_e;exports.packageOverviewPathInsideV2=rr;exports.parsePackageName=Xe;exports.payloadFilePath=st;exports.relativeToContentString=_t;exports.relativeToExplicitBinary64=Tr;exports.relativeToExplicitBytes=Z;exports.relativeToExplicitString=de;exports.storageByUrl=cr;exports.tryLoadPackDescription=_r;
3
- //# sourceMappingURL=config-B2n8i1gx.js.map