@platforma-sdk/block-tools 2.3.30 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -2
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +142 -87
- package/dist/cli.mjs.map +1 -1
- package/dist/cmd/index.d.ts +8 -6
- package/dist/cmd/index.d.ts.map +1 -1
- package/dist/cmd/mark-stable.d.ts +14 -0
- package/dist/cmd/mark-stable.d.ts.map +1 -0
- package/dist/cmd/publish.d.ts +1 -0
- package/dist/cmd/publish.d.ts.map +1 -1
- package/dist/config-DJEjRJs6.mjs +1671 -0
- package/dist/config-DJEjRJs6.mjs.map +1 -0
- package/dist/config-R2w8AhfY.js +3 -0
- package/dist/config-R2w8AhfY.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +176 -132
- package/dist/index.mjs.map +1 -1
- package/dist/v2/build_dist.d.ts.map +1 -1
- package/dist/v2/model/block_description.d.ts.map +1 -1
- package/dist/v2/registry/registry.d.ts +6 -3
- package/dist/v2/registry/registry.d.ts.map +1 -1
- package/dist/v2/registry/registry_reader.d.ts +10 -3
- package/dist/v2/registry/registry_reader.d.ts.map +1 -1
- package/dist/v2/registry/schema_public.d.ts +15476 -1938
- package/dist/v2/registry/schema_public.d.ts.map +1 -1
- package/package.json +6 -5
- package/src/cmd/index.ts +8 -6
- package/src/cmd/mark-stable.ts +71 -0
- package/src/cmd/publish.ts +11 -13
- package/src/io/storage.test.ts +2 -1
- package/src/v2/build_dist.test.ts +1 -0
- package/src/v2/build_dist.ts +2 -1
- package/src/v2/registry/registry.test.ts +60 -0
- package/src/v2/registry/registry.ts +87 -22
- package/src/v2/registry/registry_reader.test.ts +4 -0
- package/src/v2/registry/registry_reader.ts +83 -30
- package/src/v2/registry/schema_public.ts +61 -5
- package/src/v2/source_package.test.ts +1 -0
- package/dist/config-BVDkG_N7.js +0 -3
- package/dist/config-BVDkG_N7.js.map +0 -1
- package/dist/config-C9KOwWbG.mjs +0 -1602
- package/dist/config-C9KOwWbG.mjs.map +0 -1
|
@@ -4,22 +4,26 @@ import {
|
|
|
4
4
|
blockPackIdNoVersionEquals,
|
|
5
5
|
BlockPackManifest,
|
|
6
6
|
BlockPackMetaEmbeddedBytes,
|
|
7
|
-
|
|
7
|
+
BlockPackMetaManifest,
|
|
8
|
+
BlockPackOverview,
|
|
9
|
+
SingleBlockPackOverview
|
|
8
10
|
} from '@milaboratories/pl-model-middle-layer';
|
|
9
11
|
import { FolderReader } from '../../io';
|
|
10
12
|
import canonicalize from 'canonicalize';
|
|
11
13
|
import {
|
|
12
|
-
GlobalOverviewEntryReg,
|
|
13
14
|
GlobalOverviewFileName,
|
|
14
15
|
GlobalOverviewReg,
|
|
15
16
|
MainPrefix,
|
|
16
17
|
ManifestFileName,
|
|
17
|
-
packageContentPrefixInsideV2
|
|
18
|
+
packageContentPrefixInsideV2,
|
|
19
|
+
packageOverviewPathInsideV2
|
|
18
20
|
} from './schema_public';
|
|
19
21
|
import { BlockComponentsAbsoluteUrl, BlockPackMetaEmbedBytes } from '../model';
|
|
20
22
|
import { LRUCache } from 'lru-cache';
|
|
23
|
+
import { calculateSha256 } from '../../util';
|
|
21
24
|
|
|
22
25
|
export type BlockPackOverviewNoRegLabel = Omit<BlockPackOverview, 'registryId'>;
|
|
26
|
+
export type SingleBlockPackOverviewNoRegLabel = Omit<SingleBlockPackOverview, 'registryId'>;
|
|
23
27
|
|
|
24
28
|
export type RegistryV2ReaderOps = {
|
|
25
29
|
/** Number of milliseconds to cache retrieved block list for */
|
|
@@ -45,26 +49,37 @@ export class RegistryV2Reader {
|
|
|
45
49
|
this.ops = { ...DefaultRegistryV2ReaderOps, ...(ops ?? {}) };
|
|
46
50
|
}
|
|
47
51
|
|
|
48
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Embeds meta infromation relative to registry root.
|
|
54
|
+
* Meta information that looks like:
|
|
55
|
+
*
|
|
56
|
+
* */
|
|
57
|
+
private readonly embeddedGlobalMetaCache = new LRUCache<
|
|
49
58
|
string,
|
|
50
59
|
BlockPackMetaEmbeddedBytes,
|
|
51
|
-
|
|
60
|
+
{ meta: BlockPackMetaManifest; relativeTo?: BlockPackId }
|
|
52
61
|
>({
|
|
53
62
|
max: 500,
|
|
54
63
|
fetchMethod: async (_key, _staleValue, options) => {
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
64
|
+
const contentReader =
|
|
65
|
+
options.context.relativeTo !== undefined
|
|
66
|
+
? this.v2RootFolderReader
|
|
67
|
+
.relativeReader(packageContentPrefixInsideV2(options.context.relativeTo))
|
|
68
|
+
.getContentReader()
|
|
69
|
+
: this.v2RootFolderReader.getContentReader();
|
|
70
|
+
return await BlockPackMetaEmbedBytes(contentReader).parseAsync(options.context.meta);
|
|
59
71
|
}
|
|
60
72
|
});
|
|
61
73
|
|
|
62
74
|
private async embedMetaContent(
|
|
63
|
-
|
|
75
|
+
id: BlockPackId,
|
|
76
|
+
sha256: string,
|
|
77
|
+
absolutePath: boolean,
|
|
78
|
+
meta: BlockPackMetaManifest
|
|
64
79
|
): Promise<BlockPackMetaEmbeddedBytes> {
|
|
65
|
-
return await this.
|
|
66
|
-
canonicalize({ id
|
|
67
|
-
{ context:
|
|
80
|
+
return await this.embeddedGlobalMetaCache.forceFetch(
|
|
81
|
+
canonicalize({ id, sha256, absolutePath })!,
|
|
82
|
+
{ context: { meta, relativeTo: absolutePath ? undefined : id } }
|
|
68
83
|
);
|
|
69
84
|
}
|
|
70
85
|
|
|
@@ -86,19 +101,33 @@ export class RegistryV2Reader {
|
|
|
86
101
|
);
|
|
87
102
|
|
|
88
103
|
const result = await Promise.all(
|
|
89
|
-
globalOverview.packages.map(
|
|
90
|
-
|
|
91
|
-
(
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
104
|
+
globalOverview.packages.map(async (p) => {
|
|
105
|
+
const byChannelEntries = await Promise.all(
|
|
106
|
+
Object.entries(p.latestByChannel).map(async ([channel, data]) => [
|
|
107
|
+
channel,
|
|
108
|
+
{
|
|
109
|
+
id: data.description.id,
|
|
110
|
+
meta: await this.embedMetaContent(
|
|
111
|
+
p.latest.id,
|
|
112
|
+
p.latestManifestSha256,
|
|
113
|
+
true,
|
|
114
|
+
p.latest.meta
|
|
115
|
+
),
|
|
116
|
+
spec: {
|
|
117
|
+
type: 'from-registry-v2',
|
|
118
|
+
id: p.latest.id,
|
|
119
|
+
registryUrl: this.registryReader.rootUrl.toString(),
|
|
120
|
+
channel
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
])
|
|
124
|
+
);
|
|
125
|
+
return {
|
|
126
|
+
id: p.id,
|
|
127
|
+
latestByChannel: Object.fromEntries(byChannelEntries),
|
|
128
|
+
allVersions: p.allVersionsWithChannels
|
|
129
|
+
} satisfies BlockPackOverviewNoRegLabel;
|
|
130
|
+
})
|
|
102
131
|
);
|
|
103
132
|
|
|
104
133
|
this.listCache = result;
|
|
@@ -115,10 +144,34 @@ export class RegistryV2Reader {
|
|
|
115
144
|
}
|
|
116
145
|
}
|
|
117
146
|
|
|
118
|
-
public async
|
|
119
|
-
id: BlockPackIdNoVersion
|
|
120
|
-
|
|
121
|
-
|
|
147
|
+
public async getLatestOverview(
|
|
148
|
+
id: BlockPackIdNoVersion,
|
|
149
|
+
channel: string
|
|
150
|
+
): Promise<SingleBlockPackOverviewNoRegLabel | undefined> {
|
|
151
|
+
const overview = (await this.listBlockPacks()).find((e) =>
|
|
152
|
+
blockPackIdNoVersionEquals(id, e.id)
|
|
153
|
+
);
|
|
154
|
+
if (overview === undefined) return undefined;
|
|
155
|
+
return overview.latestByChannel[channel];
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
public async getSpecificOverview(id: BlockPackId): Promise<SingleBlockPackOverviewNoRegLabel> {
|
|
159
|
+
const overviewContent = await this.v2RootFolderReader.readFile(packageOverviewPathInsideV2(id));
|
|
160
|
+
const overview = BlockPackManifest.parse(JSON.parse(Buffer.from(overviewContent).toString()));
|
|
161
|
+
return {
|
|
162
|
+
id: id,
|
|
163
|
+
meta: await this.embedMetaContent(
|
|
164
|
+
id,
|
|
165
|
+
await calculateSha256(overviewContent),
|
|
166
|
+
false,
|
|
167
|
+
overview.description.meta
|
|
168
|
+
),
|
|
169
|
+
spec: {
|
|
170
|
+
type: 'from-registry-v2',
|
|
171
|
+
id,
|
|
172
|
+
registryUrl: this.registryReader.rootUrl.toString()
|
|
173
|
+
}
|
|
174
|
+
};
|
|
122
175
|
}
|
|
123
176
|
|
|
124
177
|
private readonly componentsCache = new LRUCache<string, BlockComponentsAbsoluteUrl, BlockPackId>({
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
AnyChannel,
|
|
2
3
|
BlockComponentsManifest,
|
|
3
4
|
BlockPackDescriptionManifest,
|
|
4
5
|
BlockPackId,
|
|
@@ -8,7 +9,8 @@ import {
|
|
|
8
9
|
ContentRelativeText,
|
|
9
10
|
CreateBlockPackDescriptionSchema,
|
|
10
11
|
SemVer,
|
|
11
|
-
Sha256Schema
|
|
12
|
+
Sha256Schema,
|
|
13
|
+
VersionWithChannels
|
|
12
14
|
} from '@milaboratories/pl-model-middle-layer';
|
|
13
15
|
import { z } from 'zod';
|
|
14
16
|
import { RelativeContentReader, relativeToExplicitBytes, relativeToExplicitString } from '../model';
|
|
@@ -19,6 +21,10 @@ export const GlobalOverviewFileName = 'overview.json';
|
|
|
19
21
|
export const PackageOverviewFileName = 'overview.json';
|
|
20
22
|
export const ManifestFileName = 'manifest.json';
|
|
21
23
|
|
|
24
|
+
export const ChannelsFolder = 'channels';
|
|
25
|
+
|
|
26
|
+
export const ChannelNameRegexp = /^[-a-z0-9]+$/;
|
|
27
|
+
|
|
22
28
|
export function packageContentPrefixInsideV2(bp: BlockPackId): string {
|
|
23
29
|
return `${bp.organization}/${bp.name}/${bp.version}`;
|
|
24
30
|
}
|
|
@@ -35,6 +41,7 @@ export const ManifestSuffix = '/' + ManifestFileName;
|
|
|
35
41
|
|
|
36
42
|
export const PackageOverviewVersionEntry = z.object({
|
|
37
43
|
description: BlockPackDescriptionManifest,
|
|
44
|
+
channels: z.array(z.string()).default(() => []),
|
|
38
45
|
manifestSha256: Sha256Schema
|
|
39
46
|
});
|
|
40
47
|
export type PackageOverviewVersionEntry = z.infer<typeof PackageOverviewVersionEntry>;
|
|
@@ -45,8 +52,20 @@ export const PackageOverview = z.object({
|
|
|
45
52
|
});
|
|
46
53
|
export type PackageOverview = z.infer<typeof PackageOverview>;
|
|
47
54
|
|
|
55
|
+
export function packageOverviewPathInsideV2(bp: BlockPackIdNoVersion): string {
|
|
56
|
+
return `${bp.organization}/${bp.name}/${PackageOverviewFileName}`;
|
|
57
|
+
}
|
|
58
|
+
|
|
48
59
|
export function packageOverviewPath(bp: BlockPackIdNoVersion): string {
|
|
49
|
-
return `${MainPrefix}${bp
|
|
60
|
+
return `${MainPrefix}${packageOverviewPathInsideV2(bp)}`;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function packageChannelPrefixInsideV2(bp: BlockPackId): string {
|
|
64
|
+
return `${packageContentPrefixInsideV2(bp)}/${ChannelsFolder}/`;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export function packageChannelPrefix(bp: BlockPackId): string {
|
|
68
|
+
return `${MainPrefix}${packageChannelPrefixInsideV2(bp)}`;
|
|
50
69
|
}
|
|
51
70
|
|
|
52
71
|
export const GlobalOverviewPath = `${MainPrefix}${GlobalOverviewFileName}`;
|
|
@@ -54,12 +73,49 @@ export const GlobalOverviewPath = `${MainPrefix}${GlobalOverviewFileName}`;
|
|
|
54
73
|
export function GlobalOverviewEntry<const Description extends z.ZodTypeAny>(
|
|
55
74
|
descriptionType: Description
|
|
56
75
|
) {
|
|
57
|
-
|
|
76
|
+
const universalSchema = z.object({
|
|
58
77
|
id: BlockPackIdNoVersion,
|
|
59
|
-
|
|
78
|
+
/** @deprecated to be removed at some point, not used, left for compatibility with older versions */
|
|
79
|
+
allVersions: z.array(z.string()).optional(),
|
|
80
|
+
allVersionsWithChannels: z.array(VersionWithChannels).optional(),
|
|
81
|
+
/** @deprecated to be removed at some point, not used, left for compatibility with older versions */
|
|
60
82
|
latest: descriptionType,
|
|
61
|
-
|
|
83
|
+
/** @deprecated to be removed at some point, not used, left for compatibility with older versions */
|
|
84
|
+
latestManifestSha256: Sha256Schema,
|
|
85
|
+
latestByChannel: z
|
|
86
|
+
.record(
|
|
87
|
+
z.string(),
|
|
88
|
+
z.object({
|
|
89
|
+
description: descriptionType,
|
|
90
|
+
manifestSha256: Sha256Schema
|
|
91
|
+
})
|
|
92
|
+
)
|
|
93
|
+
.default({})
|
|
62
94
|
});
|
|
95
|
+
return (
|
|
96
|
+
universalSchema
|
|
97
|
+
.transform((o) => {
|
|
98
|
+
if (o.allVersionsWithChannels) return o;
|
|
99
|
+
else
|
|
100
|
+
return {
|
|
101
|
+
...o,
|
|
102
|
+
allVersionsWithChannels: o.allVersions!.map((v) => ({ version: v, channels: [] }))
|
|
103
|
+
};
|
|
104
|
+
})
|
|
105
|
+
// make sure "any" channel set from main body
|
|
106
|
+
.transform((o) =>
|
|
107
|
+
o.latestByChannel[AnyChannel]
|
|
108
|
+
? o
|
|
109
|
+
: {
|
|
110
|
+
...o,
|
|
111
|
+
latestByChannel: {
|
|
112
|
+
...o.latestByChannel,
|
|
113
|
+
[AnyChannel]: { description: o.latest!, manifestSha256: o.latestManifestSha256! }
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
)
|
|
117
|
+
.pipe(universalSchema.required({ allVersionsWithChannels: true }))
|
|
118
|
+
);
|
|
63
119
|
}
|
|
64
120
|
export const GlobalOverviewEntryReg = GlobalOverviewEntry(BlockPackDescriptionManifest);
|
|
65
121
|
export type GlobalOverviewEntryReg = z.infer<typeof GlobalOverviewEntryReg>;
|
package/dist/config-BVDkG_N7.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";var mr=Object.defineProperty;var $r=(t,e,r)=>e in t?mr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var Q=(t,e,r)=>$r(t,typeof e!="symbol"?e+"":e,r);const u=require("@milaboratories/pl-model-middle-layer"),N=require("zod"),B=require("node:path"),M=require("node:fs/promises"),Er=require("mime-types"),vr=require("tar"),Ot=require("@milaboratories/resolve-helper"),It=require("@milaboratories/ts-helpers"),Nt=require("node:crypto"),wr=require("yaml"),Rr=require("node:os"),U=require("node:path/posix"),Tt=require("@aws-sdk/client-s3"),kr=require("node:fs");function ce(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,s.get?s:{enumerable:!0,get:()=>t[r]})}}return e.default=t,Object.freeze(e)}const le=ce(Er),Pr=ce(vr),rt=ce(Rr),W=ce(kr);function Ct(t){return N.z.string().transform((e,r)=>{const s=Ot.tryResolve(t,e);return s===void 0?(r.addIssue({code:N.z.ZodIssueCode.custom,message:`Can't resolve ${e} against ${t}`}),N.z.NEVER):{type:"absolute-file",file:s}})}function Lt(t,...e){return N.z.string().transform((r,s)=>{const a=r.endsWith("/")?r:`${r}/`;for(const o of e){const c=Ot.tryResolve(t,a+o);if(c!==void 0){if(!c.endsWith(o))throw new Error(`Unexpected resolve result ${c} with index file ${o}`);return{type:"absolute-folder",folder:c.slice(0,c.length-o.length)}}}return s.addIssue({code:N.z.ZodIssueCode.custom,message:`Can't resolve ${r} folder against ${t}, no index file found (${e.join(", ")})`}),N.z.NEVER})}function Ne(t){return e=>e.type==="relative"?{type:"absolute-file",file:B.resolve(t,e.path)}:e}function Ge(){return async t=>t.type==="absolute-file"?await M.readFile(t.file,{encoding:"utf-8"}):t.content}function At(){return async t=>{if(t.type==="absolute-file"){const e=le.lookup(t.file);if(!e)throw new Error(`Can't recognize mime type of the file: ${t.file}.`);return{type:"explicit-base64",mimeType:e,content:await M.readFile(t.file,{encoding:"base64"})}}else return t}}function Ft(){return async t=>{if(t.type==="absolute-file"){const e=le.lookup(t.file);if(!e)throw new Error(`Can't recognize mime type of the file: ${t.file}.`);return{type:"explicit-bytes",mimeType:e,content:Buffer.from(await M.readFile(t.file))}}else return t.type==="explicit-base64"?{type:"explicit-bytes",mimeType:t.mimeType,content:Buffer.from(t.content,"base64")}:t}}function ae(t,e){return async r=>{if(r.type==="absolute-file"){const s=B.basename(r.file),a=B.resolve(t,s);return e==null||e.push(s),await M.cp(r.file,a),{type:"relative",path:s}}else return r}}function Bt(t,e,r){if(!e.endsWith(".tgz"))throw new Error(`Unexpected tgz file name: ${e}`);return async s=>{const a=B.resolve(t,e);return await Pr.create({gzip:!0,file:a,cwd:s.folder},["."]),r==null||r.push(e),{type:"relative",path:e}}}function fe(t){return async e=>e.type==="explicit-string"?e:{type:"explicit-string",content:(await t(e.path)).toString("utf8")}}function bt(t){return async e=>e.type==="explicit-string"?e.content:(await t(e.path)).toString("utf8")}function yr(t){return async e=>{if(e.type==="explicit-base64")return e;const r=le.lookup(e.path);if(!r)throw new Error(`Can't recognize mime type of the file: ${e.path}.`);return{type:"explicit-base64",mimeType:r,content:(await t(e.path)).toString("base64")}}}function K(t){return async e=>{if(e.type==="explicit-base64")return{type:"explicit-bytes",mimeType:e.mimeType,content:Buffer.from(e.content,"base64")};const r=le.lookup(e.path);if(!r)throw new Error(`Can't recognize mime type of the file: ${e.path}.`);return{type:"explicit-bytes",mimeType:r,content:await t(e.path)}}}function Dt(t){return u.BlockPackMeta(u.DescriptionContentText.transform(Ne(t)),u.DescriptionContentBinary.transform(Ne(t)))}function _t(t,e){return u.BlockPackMeta(u.ContentAbsoluteTextLocal.transform(ae(t,e)),u.ContentAbsoluteBinaryLocal.transform(ae(t,e)))}const Sr=u.BlockPackMeta(u.ContentAbsoluteTextLocal.transform(Ge()),u.ContentAbsoluteBinaryLocal.transform(At())).pipe(u.BlockPackMetaEmbeddedBase64),Or=u.BlockPackMeta(u.ContentAbsoluteTextLocal.transform(Ge()),u.ContentAbsoluteBinaryLocal.transform(Ft())).pipe(u.BlockPackMetaEmbeddedBytes);function Ir(t){return u.BlockPackMeta(u.ContentRelativeText.transform(bt(t)),u.ContentRelativeBinary.transform(K(t))).pipe(u.BlockPackMetaEmbeddedBytes)}function xt(t){return u.BlockComponents(Ct(t),Lt(t,"index.html"))}function Gt(t,e){return u.BlockComponents(u.ContentAbsoluteBinaryLocal.transform(ae(t,e)),u.ContentAbsoluteFolder.transform(Bt(t,"ui.tgz",e))).pipe(u.BlockComponentsManifest)}function Nr(t){return u.BlockComponents(u.ContentRelative.transform(u.mapRemoteToAbsolute(t)),u.ContentRelative.transform(u.mapRemoteToAbsolute(t)))}function je(t){return u.CreateBlockPackDescriptionSchema(xt(t),Dt(t))}function jt(t,e){return u.CreateBlockPackDescriptionSchema(Gt(t,e),_t(t,e)).pipe(u.BlockPackDescriptionManifest)}function Te(t){const e=u.addPrefixToRelative(t);return u.BlockPackDescriptionManifest.pipe(u.CreateBlockPackDescriptionSchema(u.BlockComponents(u.ContentRelative.transform(e),u.ContentRelative.transform(e)),u.BlockPackMeta(u.ContentRelativeText.transform(e),u.ContentRelativeBinary.transform(e)))).pipe(u.BlockPackDescriptionManifest)}async function ze(t,e){try{return e(await M.readFile(t))}catch(r){if(r.code=="ENOENT")return;throw new Error("",{cause:r})}}async function Ce(t){return Buffer.from(await crypto.subtle.digest("sha-256",t)).toString("hex").toUpperCase()}async function Tr(t,e){await M.mkdir(e,{recursive:!0});const r=[],s=await jt(e,r).parseAsync(t),a=await Promise.all(r.map(async c=>{const E=await M.readFile(B.resolve(e,c)),n=await Ce(E);return{name:c,size:E.length,sha256:n}})),o=u.BlockPackManifest.parse({schema:"v2",description:s,files:a});return await M.writeFile(B.resolve(e,u.BlockPackManifestFile),JSON.stringify(o)),o}const oe="block",Cr=/(?:@[a-zA-Z0-9-.]+\/)?(?<organization>[a-zA-Z0-9-]+)\.(?<name>[a-zA-Z0-9-]+)/;function Ue(t){const e=t.match(Cr);if(!e)throw new Error(`Malformed package name (${t}), can't infer organization and block pack name.`);const{name:r,organization:s}=e.groups;return{name:r,organization:s}}async function Lr(t,e){const r=B.resolve(t,"package.json");try{const s=await ze(r,E=>JSON.parse(E.toString("utf-8")));if(s===void 0)return;const a=s[oe];if(a===void 0)return;const o={...u.BlockPackDescriptionFromPackageJsonRaw.parse(a),id:{...Ue(It.notEmpty(s.name,`"name" not found in ${r}`)),version:u.SemVer.parse(s.version)}},c=await je(t).safeParseAsync(o);return c.success?c.data:void 0}catch(s){e==null||e.info(s);return}}async function zt(t){const e=B.resolve(t,"package.json"),r=JSON.parse(await M.readFile(e,{encoding:"utf-8"})),s=r[oe];if(s===void 0)throw new Error(`Block description (field ${oe}) not found in ${e}.`);return{...u.BlockPackDescriptionFromPackageJsonRaw.parse(s),id:{...Ue(It.notEmpty(r.name,`"name" not found in ${e}`)),version:u.SemVer.parse(r.version)}}}async function Ar(t){const e=await zt(t);return await je(t).parseAsync(e)}function Fr(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Le={exports:{}};const Br="2.0.0",Ut=256,br=Number.MAX_SAFE_INTEGER||9007199254740991,Dr=16,_r=Ut-6,xr=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var ue={MAX_LENGTH:Ut,MAX_SAFE_COMPONENT_LENGTH:Dr,MAX_SAFE_BUILD_LENGTH:_r,MAX_SAFE_INTEGER:br,RELEASE_TYPES:xr,SEMVER_SPEC_VERSION:Br,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2};const Gr=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};var pe=Gr;(function(t,e){const{MAX_SAFE_COMPONENT_LENGTH:r,MAX_SAFE_BUILD_LENGTH:s,MAX_LENGTH:a}=ue,o=pe;e=t.exports={};const c=e.re=[],E=e.safeRe=[],n=e.src=[],i=e.t={};let f=0;const h="[a-zA-Z0-9-]",P=[["\\s",1],["\\d",a],[h,s]],d=S=>{for(const[T,O]of P)S=S.split(`${T}*`).join(`${T}{0,${O}}`).split(`${T}+`).join(`${T}{1,${O}}`);return S},p=(S,T,O)=>{const C=d(T),R=f++;o(S,R,T),i[S]=R,n[R]=T,c[R]=new RegExp(T,O?"g":void 0),E[R]=new RegExp(C,O?"g":void 0)};p("NUMERICIDENTIFIER","0|[1-9]\\d*"),p("NUMERICIDENTIFIERLOOSE","\\d+"),p("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${h}*`),p("MAINVERSION",`(${n[i.NUMERICIDENTIFIER]})\\.(${n[i.NUMERICIDENTIFIER]})\\.(${n[i.NUMERICIDENTIFIER]})`),p("MAINVERSIONLOOSE",`(${n[i.NUMERICIDENTIFIERLOOSE]})\\.(${n[i.NUMERICIDENTIFIERLOOSE]})\\.(${n[i.NUMERICIDENTIFIERLOOSE]})`),p("PRERELEASEIDENTIFIER",`(?:${n[i.NUMERICIDENTIFIER]}|${n[i.NONNUMERICIDENTIFIER]})`),p("PRERELEASEIDENTIFIERLOOSE",`(?:${n[i.NUMERICIDENTIFIERLOOSE]}|${n[i.NONNUMERICIDENTIFIER]})`),p("PRERELEASE",`(?:-(${n[i.PRERELEASEIDENTIFIER]}(?:\\.${n[i.PRERELEASEIDENTIFIER]})*))`),p("PRERELEASELOOSE",`(?:-?(${n[i.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${n[i.PRERELEASEIDENTIFIERLOOSE]})*))`),p("BUILDIDENTIFIER",`${h}+`),p("BUILD",`(?:\\+(${n[i.BUILDIDENTIFIER]}(?:\\.${n[i.BUILDIDENTIFIER]})*))`),p("FULLPLAIN",`v?${n[i.MAINVERSION]}${n[i.PRERELEASE]}?${n[i.BUILD]}?`),p("FULL",`^${n[i.FULLPLAIN]}$`),p("LOOSEPLAIN",`[v=\\s]*${n[i.MAINVERSIONLOOSE]}${n[i.PRERELEASELOOSE]}?${n[i.BUILD]}?`),p("LOOSE",`^${n[i.LOOSEPLAIN]}$`),p("GTLT","((?:<|>)?=?)"),p("XRANGEIDENTIFIERLOOSE",`${n[i.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),p("XRANGEIDENTIFIER",`${n[i.NUMERICIDENTIFIER]}|x|X|\\*`),p("XRANGEPLAIN",`[v=\\s]*(${n[i.XRANGEIDENTIFIER]})(?:\\.(${n[i.XRANGEIDENTIFIER]})(?:\\.(${n[i.XRANGEIDENTIFIER]})(?:${n[i.PRERELEASE]})?${n[i.BUILD]}?)?)?`),p("XRANGEPLAINLOOSE",`[v=\\s]*(${n[i.XRANGEIDENTIFIERLOOSE]})(?:\\.(${n[i.XRANGEIDENTIFIERLOOSE]})(?:\\.(${n[i.XRANGEIDENTIFIERLOOSE]})(?:${n[i.PRERELEASELOOSE]})?${n[i.BUILD]}?)?)?`),p("XRANGE",`^${n[i.GTLT]}\\s*${n[i.XRANGEPLAIN]}$`),p("XRANGELOOSE",`^${n[i.GTLT]}\\s*${n[i.XRANGEPLAINLOOSE]}$`),p("COERCEPLAIN",`(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?`),p("COERCE",`${n[i.COERCEPLAIN]}(?:$|[^\\d])`),p("COERCEFULL",n[i.COERCEPLAIN]+`(?:${n[i.PRERELEASE]})?(?:${n[i.BUILD]})?(?:$|[^\\d])`),p("COERCERTL",n[i.COERCE],!0),p("COERCERTLFULL",n[i.COERCEFULL],!0),p("LONETILDE","(?:~>?)"),p("TILDETRIM",`(\\s*)${n[i.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",p("TILDE",`^${n[i.LONETILDE]}${n[i.XRANGEPLAIN]}$`),p("TILDELOOSE",`^${n[i.LONETILDE]}${n[i.XRANGEPLAINLOOSE]}$`),p("LONECARET","(?:\\^)"),p("CARETTRIM",`(\\s*)${n[i.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",p("CARET",`^${n[i.LONECARET]}${n[i.XRANGEPLAIN]}$`),p("CARETLOOSE",`^${n[i.LONECARET]}${n[i.XRANGEPLAINLOOSE]}$`),p("COMPARATORLOOSE",`^${n[i.GTLT]}\\s*(${n[i.LOOSEPLAIN]})$|^$`),p("COMPARATOR",`^${n[i.GTLT]}\\s*(${n[i.FULLPLAIN]})$|^$`),p("COMPARATORTRIM",`(\\s*)${n[i.GTLT]}\\s*(${n[i.LOOSEPLAIN]}|${n[i.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",p("HYPHENRANGE",`^\\s*(${n[i.XRANGEPLAIN]})\\s+-\\s+(${n[i.XRANGEPLAIN]})\\s*$`),p("HYPHENRANGELOOSE",`^\\s*(${n[i.XRANGEPLAINLOOSE]})\\s+-\\s+(${n[i.XRANGEPLAINLOOSE]})\\s*$`),p("STAR","(<|>)?=?\\s*\\*"),p("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),p("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(Le,Le.exports);var Z=Le.exports;const jr=Object.freeze({loose:!0}),zr=Object.freeze({}),Ur=t=>t?typeof t!="object"?jr:t:zr;var Me=Ur;const st=/^[0-9]+$/,Mt=(t,e)=>{const r=st.test(t),s=st.test(e);return r&&s&&(t=+t,e=+e),t===e?0:r&&!s?-1:s&&!r?1:t<e?-1:1},Mr=(t,e)=>Mt(e,t);var Vt={compareIdentifiers:Mt,rcompareIdentifiers:Mr};const ee=pe,{MAX_LENGTH:nt,MAX_SAFE_INTEGER:te}=ue,{safeRe:it,t:at}=Z,Vr=Me,{compareIdentifiers:q}=Vt;let Xr=class j{constructor(e,r){if(r=Vr(r),e instanceof j){if(e.loose===!!r.loose&&e.includePrerelease===!!r.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>nt)throw new TypeError(`version is longer than ${nt} characters`);ee("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;const s=e.trim().match(r.loose?it[at.LOOSE]:it[at.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>te||this.major<0)throw new TypeError("Invalid major version");if(this.minor>te||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>te||this.patch<0)throw new TypeError("Invalid patch version");s[4]?this.prerelease=s[4].split(".").map(a=>{if(/^[0-9]+$/.test(a)){const o=+a;if(o>=0&&o<te)return o}return a}):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(ee("SemVer.compare",this.version,this.options,e),!(e instanceof j)){if(typeof e=="string"&&e===this.version)return 0;e=new j(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof j||(e=new j(e,this.options)),q(this.major,e.major)||q(this.minor,e.minor)||q(this.patch,e.patch)}comparePre(e){if(e instanceof j||(e=new j(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 r=0;do{const s=this.prerelease[r],a=e.prerelease[r];if(ee("prerelease compare",r,s,a),s===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(s===void 0)return-1;if(s===a)continue;return q(s,a)}while(++r)}compareBuild(e){e instanceof j||(e=new j(e,this.options));let r=0;do{const s=this.build[r],a=e.build[r];if(ee("build compare",r,s,a),s===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(s===void 0)return-1;if(s===a)continue;return q(s,a)}while(++r)}inc(e,r,s){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,s);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,s);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,s),this.inc("pre",r,s);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r,s),this.inc("pre",r,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 a=Number(s)?1:0;if(!r&&s===!1)throw new Error("invalid increment argument: identifier is empty");if(this.prerelease.length===0)this.prerelease=[a];else{let o=this.prerelease.length;for(;--o>=0;)typeof this.prerelease[o]=="number"&&(this.prerelease[o]++,o=-2);if(o===-1){if(r===this.prerelease.join(".")&&s===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(a)}}if(r){let o=[r,a];s===!1&&(o=[r]),q(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=o):this.prerelease=o}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=Xr;const ot=b,qr=(t,e,r=!1)=>{if(t instanceof ot)return t;try{return new ot(t,e)}catch(s){if(!r)return null;throw s}};var J=qr;const Jr=J,Hr=(t,e)=>{const r=Jr(t,e);return r?r.version:null};var Wr=Hr;const Yr=J,Kr=(t,e)=>{const r=Yr(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};var Zr=Kr;const ct=b,Qr=(t,e,r,s,a)=>{typeof r=="string"&&(a=s,s=r,r=void 0);try{return new ct(t instanceof ct?t.version:t,r).inc(e,s,a).version}catch{return null}};var es=Qr;const lt=J,ts=(t,e)=>{const r=lt(t,null,!0),s=lt(e,null,!0),a=r.compare(s);if(a===0)return null;const o=a>0,c=o?r:s,E=o?s:r,n=!!c.prerelease.length;if(!!E.prerelease.length&&!n)return!E.patch&&!E.minor?"major":c.patch?"patch":c.minor?"minor":"major";const f=n?"pre":"";return r.major!==s.major?f+"major":r.minor!==s.minor?f+"minor":r.patch!==s.patch?f+"patch":"prerelease"};var rs=ts;const ss=b,ns=(t,e)=>new ss(t,e).major;var is=ns;const as=b,os=(t,e)=>new as(t,e).minor;var cs=os;const ls=b,fs=(t,e)=>new ls(t,e).patch;var us=fs;const ps=J,hs=(t,e)=>{const r=ps(t,e);return r&&r.prerelease.length?r.prerelease:null};var gs=hs;const ft=b,ds=(t,e,r)=>new ft(t,r).compare(new ft(e,r));var x=ds;const ms=x,$s=(t,e,r)=>ms(e,t,r);var Es=$s;const vs=x,ws=(t,e)=>vs(t,e,!0);var Rs=ws;const ut=b,ks=(t,e,r)=>{const s=new ut(t,r),a=new ut(e,r);return s.compare(a)||s.compareBuild(a)};var Ve=ks;const Ps=Ve,ys=(t,e)=>t.sort((r,s)=>Ps(r,s,e));var Ss=ys;const Os=Ve,Is=(t,e)=>t.sort((r,s)=>Os(s,r,e));var Ns=Is;const Ts=x,Cs=(t,e,r)=>Ts(t,e,r)>0;var he=Cs;const Ls=x,As=(t,e,r)=>Ls(t,e,r)<0;var Xe=As;const Fs=x,Bs=(t,e,r)=>Fs(t,e,r)===0;var Xt=Bs;const bs=x,Ds=(t,e,r)=>bs(t,e,r)!==0;var qt=Ds;const _s=x,xs=(t,e,r)=>_s(t,e,r)>=0;var qe=xs;const Gs=x,js=(t,e,r)=>Gs(t,e,r)<=0;var Je=js;const zs=Xt,Us=qt,Ms=he,Vs=qe,Xs=Xe,qs=Je,Js=(t,e,r,s)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return zs(t,r,s);case"!=":return Us(t,r,s);case">":return Ms(t,r,s);case">=":return Vs(t,r,s);case"<":return Xs(t,r,s);case"<=":return qs(t,r,s);default:throw new TypeError(`Invalid operator: ${e}`)}};var Jt=Js;const Hs=b,Ws=J,{safeRe:re,t:se}=Z,Ys=(t,e)=>{if(t instanceof Hs)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(e.includePrerelease?re[se.COERCEFULL]:re[se.COERCE]);else{const n=e.includePrerelease?re[se.COERCERTLFULL]:re[se.COERCERTL];let i;for(;(i=n.exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||i.index+i[0].length!==r.index+r[0].length)&&(r=i),n.lastIndex=i.index+i[1].length+i[2].length;n.lastIndex=-1}if(r===null)return null;const s=r[2],a=r[3]||"0",o=r[4]||"0",c=e.includePrerelease&&r[5]?`-${r[5]}`:"",E=e.includePrerelease&&r[6]?`+${r[6]}`:"";return Ws(`${s}.${a}.${o}${c}${E}`,e)};var Ks=Ys;class Zs{constructor(){this.max=1e3,this.map=new Map}get(e){const r=this.map.get(e);if(r!==void 0)return this.map.delete(e),this.map.set(e,r),r}delete(e){return this.map.delete(e)}set(e,r){if(!this.delete(e)&&r!==void 0){if(this.map.size>=this.max){const a=this.map.keys().next().value;this.delete(a)}this.map.set(e,r)}return this}}var Qs=Zs,we,pt;function G(){if(pt)return we;pt=1;const t=/\s+/g;class e{constructor(l,v){if(v=a(v),l instanceof e)return l.loose===!!v.loose&&l.includePrerelease===!!v.includePrerelease?l:new e(l.raw,v);if(l instanceof o)return this.raw=l.value,this.set=[[l]],this.formatted=void 0,this;if(this.options=v,this.loose=!!v.loose,this.includePrerelease=!!v.includePrerelease,this.raw=l.trim().replace(t," "),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=>!S(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&&T(w[0])){this.set=[w];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let l=0;l<this.set.length;l++){l>0&&(this.formatted+="||");const v=this.set[l];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(l){const m=((this.options.includePrerelease&&d)|(this.options.loose&&p))+":"+l,w=s.get(m);if(w)return w;const $=this.options.loose,k=$?n[i.HYPHENRANGELOOSE]:n[i.HYPHENRANGE];l=l.replace(k,gr(this.options.includePrerelease)),c("hyphen replace",l),l=l.replace(n[i.COMPARATORTRIM],f),c("comparator trim",l),l=l.replace(n[i.TILDETRIM],h),c("tilde trim",l),l=l.replace(n[i.CARETTRIM],P),c("caret trim",l);let I=l.split(" ").map(F=>C(F,this.options)).join(" ").split(/\s+/).map(F=>hr(F,this.options));$&&(I=I.filter(F=>(c("loose invalid filter",F,this.options),!!F.match(n[i.COMPARATORLOOSE])))),c("range list",I);const y=new Map,L=I.map(F=>new o(F,this.options));for(const F of L){if(S(F))return[F];y.set(F.value,F)}y.size>1&&y.has("")&&y.delete("");const D=[...y.values()];return s.set(m,D),D}intersects(l,v){if(!(l instanceof e))throw new TypeError("a Range is required");return this.set.some(m=>O(m,v)&&l.set.some(w=>O(w,v)&&m.every($=>w.every(k=>$.intersects(k,v)))))}test(l){if(!l)return!1;if(typeof l=="string")try{l=new E(l,this.options)}catch{return!1}for(let v=0;v<this.set.length;v++)if(dr(this.set[v],l,this.options))return!0;return!1}}we=e;const r=Qs,s=new r,a=Me,o=ge(),c=pe,E=b,{safeRe:n,t:i,comparatorTrimReplace:f,tildeTrimReplace:h,caretTrimReplace:P}=Z,{FLAG_INCLUDE_PRERELEASE:d,FLAG_LOOSE:p}=ue,S=g=>g.value==="<0.0.0-0",T=g=>g.value==="",O=(g,l)=>{let v=!0;const m=g.slice();let w=m.pop();for(;v&&m.length;)v=m.every($=>w.intersects($,l)),w=m.pop();return v},C=(g,l)=>(c("comp",g,l),g=z(g,l),c("caret",g),g=A(g,l),c("tildes",g),g=fr(g,l),c("xrange",g),g=pr(g,l),c("stars",g),g),R=g=>!g||g.toLowerCase()==="x"||g==="*",A=(g,l)=>g.trim().split(/\s+/).map(v=>_(v,l)).join(" "),_=(g,l)=>{const v=l.loose?n[i.TILDELOOSE]:n[i.TILDE];return g.replace(v,(m,w,$,k,I)=>{c("tilde",g,m,w,$,k,I);let y;return R(w)?y="":R($)?y=`>=${w}.0.0 <${+w+1}.0.0-0`:R(k)?y=`>=${w}.${$}.0 <${w}.${+$+1}.0-0`:I?(c("replaceTilde pr",I),y=`>=${w}.${$}.${k}-${I} <${w}.${+$+1}.0-0`):y=`>=${w}.${$}.${k} <${w}.${+$+1}.0-0`,c("tilde return",y),y})},z=(g,l)=>g.trim().split(/\s+/).map(v=>V(v,l)).join(" "),V=(g,l)=>{c("caret",g,l);const v=l.loose?n[i.CARETLOOSE]:n[i.CARET],m=l.includePrerelease?"-0":"";return g.replace(v,(w,$,k,I,y)=>{c("caret",g,w,$,k,I,y);let L;return R($)?L="":R(k)?L=`>=${$}.0.0${m} <${+$+1}.0.0-0`:R(I)?$==="0"?L=`>=${$}.${k}.0${m} <${$}.${+k+1}.0-0`:L=`>=${$}.${k}.0${m} <${+$+1}.0.0-0`:y?(c("replaceCaret pr",y),$==="0"?k==="0"?L=`>=${$}.${k}.${I}-${y} <${$}.${k}.${+I+1}-0`:L=`>=${$}.${k}.${I}-${y} <${$}.${+k+1}.0-0`:L=`>=${$}.${k}.${I}-${y} <${+$+1}.0.0-0`):(c("no pr"),$==="0"?k==="0"?L=`>=${$}.${k}.${I}${m} <${$}.${k}.${+I+1}-0`:L=`>=${$}.${k}.${I}${m} <${$}.${+k+1}.0-0`:L=`>=${$}.${k}.${I} <${+$+1}.0.0-0`),c("caret return",L),L})},fr=(g,l)=>(c("replaceXRanges",g,l),g.split(/\s+/).map(v=>ur(v,l)).join(" ")),ur=(g,l)=>{g=g.trim();const v=l.loose?n[i.XRANGELOOSE]:n[i.XRANGE];return g.replace(v,(m,w,$,k,I,y)=>{c("xRange",g,m,w,$,k,I,y);const L=R($),D=L||R(k),F=D||R(I),H=F;return w==="="&&H&&(w=""),y=l.includePrerelease?"-0":"",L?w===">"||w==="<"?m="<0.0.0-0":m="*":w&&H?(D&&(k=0),I=0,w===">"?(w=">=",D?($=+$+1,k=0,I=0):(k=+k+1,I=0)):w==="<="&&(w="<",D?$=+$+1:k=+k+1),w==="<"&&(y="-0"),m=`${w+$}.${k}.${I}${y}`):D?m=`>=${$}.0.0${y} <${+$+1}.0.0-0`:F&&(m=`>=${$}.${k}.0${y} <${$}.${+k+1}.0-0`),c("xRange return",m),m})},pr=(g,l)=>(c("replaceStars",g,l),g.trim().replace(n[i.STAR],"")),hr=(g,l)=>(c("replaceGTE0",g,l),g.trim().replace(n[l.includePrerelease?i.GTE0PRE:i.GTE0],"")),gr=g=>(l,v,m,w,$,k,I,y,L,D,F,H)=>(R(m)?v="":R(w)?v=`>=${m}.0.0${g?"-0":""}`:R($)?v=`>=${m}.${w}.0${g?"-0":""}`:k?v=`>=${v}`:v=`>=${v}${g?"-0":""}`,R(L)?y="":R(D)?y=`<${+L+1}.0.0-0`:R(F)?y=`<${L}.${+D+1}.0-0`:H?y=`<=${L}.${D}.${F}-${H}`:g?y=`<${L}.${D}.${+F+1}-0`:y=`<=${y}`,`${v} ${y}`.trim()),dr=(g,l,v)=>{for(let m=0;m<g.length;m++)if(!g[m].test(l))return!1;if(l.prerelease.length&&!v.includePrerelease){for(let m=0;m<g.length;m++)if(c(g[m].semver),g[m].semver!==o.ANY&&g[m].semver.prerelease.length>0){const w=g[m].semver;if(w.major===l.major&&w.minor===l.minor&&w.patch===l.patch)return!0}return!1}return!0};return we}var Re,ht;function ge(){if(ht)return Re;ht=1;const t=Symbol("SemVer ANY");class e{static get ANY(){return t}constructor(f,h){if(h=r(h),f instanceof e){if(f.loose===!!h.loose)return f;f=f.value}f=f.trim().split(/\s+/).join(" "),c("comparator",f,h),this.options=h,this.loose=!!h.loose,this.parse(f),this.semver===t?this.value="":this.value=this.operator+this.semver.version,c("comp",this)}parse(f){const h=this.options.loose?s[a.COMPARATORLOOSE]:s[a.COMPARATOR],P=f.match(h);if(!P)throw new TypeError(`Invalid comparator: ${f}`);this.operator=P[1]!==void 0?P[1]:"",this.operator==="="&&(this.operator=""),P[2]?this.semver=new E(P[2],this.options.loose):this.semver=t}toString(){return this.value}test(f){if(c("Comparator.test",f,this.options.loose),this.semver===t||f===t)return!0;if(typeof f=="string")try{f=new E(f,this.options)}catch{return!1}return o(f,this.operator,this.semver,this.options)}intersects(f,h){if(!(f instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new n(f.value,h).test(this.value):f.operator===""?f.value===""?!0:new n(this.value,h).test(f.semver):(h=r(h),h.includePrerelease&&(this.value==="<0.0.0-0"||f.value==="<0.0.0-0")||!h.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,h)&&this.operator.startsWith(">")&&f.operator.startsWith("<")||o(this.semver,">",f.semver,h)&&this.operator.startsWith("<")&&f.operator.startsWith(">")))}}Re=e;const r=Me,{safeRe:s,t:a}=Z,o=Jt,c=pe,E=b,n=G();return Re}const en=G(),tn=(t,e,r)=>{try{e=new en(e,r)}catch{return!1}return e.test(t)};var de=tn;const rn=G(),sn=(t,e)=>new rn(t,e).set.map(r=>r.map(s=>s.value).join(" ").trim().split(" "));var nn=sn;const an=b,on=G(),cn=(t,e,r)=>{let s=null,a=null,o=null;try{o=new on(e,r)}catch{return null}return t.forEach(c=>{o.test(c)&&(!s||a.compare(c)===-1)&&(s=c,a=new an(s,r))}),s};var ln=cn;const fn=b,un=G(),pn=(t,e,r)=>{let s=null,a=null,o=null;try{o=new un(e,r)}catch{return null}return t.forEach(c=>{o.test(c)&&(!s||a.compare(c)===1)&&(s=c,a=new fn(s,r))}),s};var hn=pn;const ke=b,gn=G(),gt=he,dn=(t,e)=>{t=new gn(t,e);let r=new ke("0.0.0");if(t.test(r)||(r=new ke("0.0.0-0"),t.test(r)))return r;r=null;for(let s=0;s<t.set.length;++s){const a=t.set[s];let o=null;a.forEach(c=>{const E=new ke(c.semver.version);switch(c.operator){case">":E.prerelease.length===0?E.patch++:E.prerelease.push(0),E.raw=E.format();case"":case">=":(!o||gt(E,o))&&(o=E);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${c.operator}`)}}),o&&(!r||gt(r,o))&&(r=o)}return r&&t.test(r)?r:null};var mn=dn;const $n=G(),En=(t,e)=>{try{return new $n(t,e).range||"*"}catch{return null}};var vn=En;const wn=b,Ht=ge(),{ANY:Rn}=Ht,kn=G(),Pn=de,dt=he,mt=Xe,yn=Je,Sn=qe,On=(t,e,r,s)=>{t=new wn(t,s),e=new kn(e,s);let a,o,c,E,n;switch(r){case">":a=dt,o=yn,c=mt,E=">",n=">=";break;case"<":a=mt,o=Sn,c=dt,E="<",n="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Pn(t,e,s))return!1;for(let i=0;i<e.set.length;++i){const f=e.set[i];let h=null,P=null;if(f.forEach(d=>{d.semver===Rn&&(d=new Ht(">=0.0.0")),h=h||d,P=P||d,a(d.semver,h.semver,s)?h=d:c(d.semver,P.semver,s)&&(P=d)}),h.operator===E||h.operator===n||(!P.operator||P.operator===E)&&o(t,P.semver))return!1;if(P.operator===n&&c(t,P.semver))return!1}return!0};var He=On;const In=He,Nn=(t,e,r)=>In(t,e,">",r);var Tn=Nn;const Cn=He,Ln=(t,e,r)=>Cn(t,e,"<",r);var An=Ln;const $t=G(),Fn=(t,e,r)=>(t=new $t(t,r),e=new $t(e,r),t.intersects(e,r));var Bn=Fn;const bn=de,Dn=x;var _n=(t,e,r)=>{const s=[];let a=null,o=null;const c=t.sort((f,h)=>Dn(f,h,r));for(const f of c)bn(f,e,r)?(o=f,a||(a=f)):(o&&s.push([a,o]),o=null,a=null);a&&s.push([a,null]);const E=[];for(const[f,h]of s)f===h?E.push(f):!h&&f===c[0]?E.push("*"):h?f===c[0]?E.push(`<=${h}`):E.push(`${f} - ${h}`):E.push(`>=${f}`);const n=E.join(" || "),i=typeof e.raw=="string"?e.raw:String(e);return n.length<i.length?n:e};const Et=G(),We=ge(),{ANY:Pe}=We,Y=de,Ye=x,xn=(t,e,r={})=>{if(t===e)return!0;t=new Et(t,r),e=new Et(e,r);let s=!1;e:for(const a of t.set){for(const o of e.set){const c=jn(a,o,r);if(s=s||c!==null,c)continue e}if(s)return!1}return!0},Gn=[new We(">=0.0.0-0")],vt=[new We(">=0.0.0")],jn=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===Pe){if(e.length===1&&e[0].semver===Pe)return!0;r.includePrerelease?t=Gn:t=vt}if(e.length===1&&e[0].semver===Pe){if(r.includePrerelease)return!0;e=vt}const s=new Set;let a,o;for(const d of t)d.operator===">"||d.operator===">="?a=wt(a,d,r):d.operator==="<"||d.operator==="<="?o=Rt(o,d,r):s.add(d.semver);if(s.size>1)return null;let c;if(a&&o){if(c=Ye(a.semver,o.semver,r),c>0)return null;if(c===0&&(a.operator!==">="||o.operator!=="<="))return null}for(const d of s){if(a&&!Y(d,String(a),r)||o&&!Y(d,String(o),r))return null;for(const p of e)if(!Y(d,String(p),r))return!1;return!0}let E,n,i,f,h=o&&!r.includePrerelease&&o.semver.prerelease.length?o.semver:!1,P=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;h&&h.prerelease.length===1&&o.operator==="<"&&h.prerelease[0]===0&&(h=!1);for(const d of e){if(f=f||d.operator===">"||d.operator===">=",i=i||d.operator==="<"||d.operator==="<=",a){if(P&&d.semver.prerelease&&d.semver.prerelease.length&&d.semver.major===P.major&&d.semver.minor===P.minor&&d.semver.patch===P.patch&&(P=!1),d.operator===">"||d.operator===">="){if(E=wt(a,d,r),E===d&&E!==a)return!1}else if(a.operator===">="&&!Y(a.semver,String(d),r))return!1}if(o){if(h&&d.semver.prerelease&&d.semver.prerelease.length&&d.semver.major===h.major&&d.semver.minor===h.minor&&d.semver.patch===h.patch&&(h=!1),d.operator==="<"||d.operator==="<="){if(n=Rt(o,d,r),n===d&&n!==o)return!1}else if(o.operator==="<="&&!Y(o.semver,String(d),r))return!1}if(!d.operator&&(o||a)&&c!==0)return!1}return!(a&&i&&!o&&c!==0||o&&f&&!a&&c!==0||P||h)},wt=(t,e,r)=>{if(!t)return e;const s=Ye(t.semver,e.semver,r);return s>0?t:s<0||e.operator===">"&&t.operator===">="?e:t},Rt=(t,e,r)=>{if(!t)return e;const s=Ye(t.semver,e.semver,r);return s<0?t:s>0||e.operator==="<"&&t.operator==="<="?e:t};var zn=xn;const ye=Z,kt=ue,Un=b,Pt=Vt,Mn=J,Vn=Wr,Xn=Zr,qn=es,Jn=rs,Hn=is,Wn=cs,Yn=us,Kn=gs,Zn=x,Qn=Es,ei=Rs,ti=Ve,ri=Ss,si=Ns,ni=he,ii=Xe,ai=Xt,oi=qt,ci=qe,li=Je,fi=Jt,ui=Ks,pi=ge(),hi=G(),gi=de,di=nn,mi=ln,$i=hn,Ei=mn,vi=vn,wi=He,Ri=Tn,ki=An,Pi=Bn,yi=_n,Si=zn;var Wt={parse:Mn,valid:Vn,clean:Xn,inc:qn,diff:Jn,major:Hn,minor:Wn,patch:Yn,prerelease:Kn,compare:Zn,rcompare:Qn,compareLoose:ei,compareBuild:ti,sort:ri,rsort:si,gt:ni,lt:ii,eq:ai,neq:oi,gte:ci,lte:li,cmp:fi,coerce:ui,Comparator:pi,Range:hi,satisfies:gi,toComparators:di,maxSatisfying:mi,minSatisfying:$i,minVersion:Ei,validRange:vi,outside:wi,gtr:Ri,ltr:ki,intersects:Pi,simplifyRange:yi,subset:Si,SemVer:Un,re:ye.re,src:ye.src,tokens:ye.t,SEMVER_SPEC_VERSION:kt.SEMVER_SPEC_VERSION,RELEASE_TYPES:kt.RELEASE_TYPES,compareIdentifiers:Pt.compareIdentifiers,rcompareIdentifiers:Pt.rcompareIdentifiers};const Oi=Fr(Wt),Ae="_updates_v2/per_package_version/";function Ii(t,e){return`${Ae}${t.organization}/${t.name}/${t.version}/${e}`}const Ni=/(?<packageKeyWithoutVersion>(?<organization>[^\/]+)\/(?<name>[^\/]+))\/(?<version>[^\/]+)\/(?<seed>[^\/]+)$/,Se="_updates_v2/_global_update_in",yt="_updates_v2/_global_update_out",me="v2/",Yt="overview.json",Kt="overview.json",Ke="manifest.json";function Zt(t){return`${t.organization}/${t.name}/${t.version}`}function Fe(t){return`${me}${Zt(t)}`}const Qt="/"+Ke,er=N.z.object({description:u.BlockPackDescriptionManifest,manifestSha256:u.Sha256Schema}),Be=N.z.object({schema:N.z.literal("v2"),versions:N.z.array(er)});function be(t){return`${me}${t.organization}/${t.name}/${Kt}`}const ne=`${me}${Yt}`;function Ze(t){return N.z.object({id:u.BlockPackIdNoVersion,allVersions:N.z.array(N.z.string()),latest:t,latestManifestSha256:u.Sha256Schema})}const Ti=Ze(u.BlockPackDescriptionManifest);function $e(t){return N.z.object({schema:N.z.literal("v2"),packages:N.z.array(Ze(t))})}const De=$e(u.BlockPackDescriptionManifest);function Ci(t){return u.CreateBlockPackDescriptionSchema(u.BlockComponentsManifest,u.BlockPackMeta(u.ContentRelativeText.transform(fe(t)),u.ContentRelativeBinary.transform(K(t))))}function Li(t){return $e(u.CreateBlockPackDescriptionSchema(u.BlockComponentsManifest,u.BlockPackMeta(u.ContentRelativeText.transform(fe(t)),u.ContentRelativeBinary.transform(K(t)))))}function Ai(t){return $e(u.CreateBlockPackDescriptionSchema(u.BlockComponentsManifest,u.BlockPackMeta(u.ContentRelativeText.transform(fe(t)),u.ContentRelativeBinary.transform(K(t)))))}class Fi{constructor(e,r){this.storage=e,this.logger=r}async updateRegistry(){var E,n,i,f,h,P,d,p;(E=this.logger)==null||E.info("Initiating registry refresh...");const e=new Map,r=[],s=await this.storage.listFiles(Ae);(n=this.logger)==null||n.info("Packages to be updated:");for(const S of s){const T=S.match(Ni);if(!T)continue;r.push(S);const{packageKeyWithoutVersion:O,organization:C,name:R,version:A,seed:_}=T.groups;let z=e.get(O),V=!1;z?z.versions.has(A)||(z.versions.add(A),V=!0):(e.set(O,{package:{organization:C,name:R},versions:new Set([A])}),V=!0),(i=this.logger)==null||i.info(` - ${C}:${R}:${A} added:${V}`)}const a=await this.storage.getFile(ne);let c=(a===void 0?{schema:"v2",packages:[]}:De.parse(JSON.parse(a.toString()))).packages;(f=this.logger)==null||f.info(`Global overview loaded, ${c.length} records`);for(const[,S]of e.entries()){const T=be(S.package),O=await this.storage.getFile(T),C=O===void 0?{schema:"v2",versions:[]}:Be.parse(JSON.parse(O.toString()));(h=this.logger)==null||h.info(`Updating ${S.package.organization}:${S.package.name} overview, ${C.versions.length} records`);const R=C.versions.filter(A=>!S.versions.has(A.description.id.version));for(const[A]of S.versions.entries()){const _=A.toString(),z=await this.storage.getFile(Fe({...S.package,version:_})+Qt);if(!z)continue;const V=await Ce(z);R.push({description:Te(_).parse(u.BlockPackManifest.parse(JSON.parse(z.toString("utf8"))).description),manifestSha256:V})}R.sort((A,_)=>Wt.compare(_.description.id.version,A.description.id.version)),await this.storage.putFile(T,Buffer.from(JSON.stringify({schema:"v2",versions:R}))),(P=this.logger)==null||P.info(`Done (${R.length} records)`),c=c.filter(A=>A.id.organization!==S.package.organization||A.id.name!==S.package.name),c.push({id:{organization:S.package.organization,name:S.package.name},allVersions:R.map(A=>A.description.id.version).reverse(),latest:Te(`${S.package.organization}/${S.package.name}`).parse(R[0].description),latestManifestSha256:R[0].manifestSha256})}await this.storage.putFile(ne,Buffer.from(JSON.stringify({schema:"v2",packages:c}))),(d=this.logger)==null||d.info(`Global overview updated (${c.length} records)`),await this.storage.deleteFiles(...r.map(S=>`${Ae}${S}`)),(p=this.logger)==null||p.info("Version update requests cleared")}async updateIfNeeded(e=!1){var a,o;(a=this.logger)==null||a.info("Checking if registry requires refresh...");const r=await this.storage.getFile(Se),s=await this.storage.getFile(yt);!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(yt,r),(o=this.logger)==null||o.info("Refresh finished")))}async getPackageOverview(e){const r=await this.storage.getFile(be(e));if(r!==void 0)return Be.parse(JSON.parse(r.toString()))}async getGlobalOverview(){const e=await this.storage.getFile(ne);if(e!==void 0)return De.parse(JSON.parse(e.toString()))}async publishPackage(e,r){var E,n,i,f;const s=Fe(e.description.id);for(const h of e.files){const P=await r(h.name);if(P.length!==h.size)throw new Error(`Actual file size don't match file size from the manifest file for ${h.name} (actual = ${P.length}; manifest = ${h.size})`);const d=await Ce(P);if(d!==h.sha256.toUpperCase())throw new Error(`Actual file SHA-256 don't match the checksum from the manifest file for ${h.name} (actual = ${d}; manifest = ${h.sha256.toUpperCase()})`);const p=s+"/"+h.name;(E=this.logger)==null||E.info(`Uploading ${h.name} -> ${p} ...`),await this.storage.putFile(p,P)}const a=s+"/"+Ke;(n=this.logger)==null||n.info(`Uploading manifest to ${a} ...`),await this.storage.putFile(a,Buffer.from(JSON.stringify(e)));const o=Nt.randomUUID(),c=Ii(e.description.id,o);(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))}}class tr{constructor(e,r,s){this.client=e,this.bucket=r,this.root=s}async getFile(e){try{return Buffer.from(await(await this.client.getObject({Bucket:this.bucket,Key:U.join(this.root,e)})).Body.transformToByteArray())}catch(r){if(r.name==="NoSuchKey")return;throw r}}async listFiles(e){const r=U.join(this.root,e),s=Tt.paginateListObjectsV2({client:this.client},{Bucket:this.bucket,Prefix:r}),a=[];for await(const o of s)a.push(...o.Contents.map(c=>U.relative(r,c.Key)));return a}async putFile(e,r){await this.client.putObject({Bucket:this.bucket,Key:U.join(this.root,e),Body:r})}async deleteFiles(...e){const r=await this.client.deleteObjects({Bucket:this.bucket,Delete:{Objects:e.map(s=>({Key:U.join(this.root,s)}))}});if(r.Errors!==void 0&&r.Errors.length>0)throw new Error(`Errors encountered while deleting files: ${r.Errors.join(`
|
|
2
|
-
`)}`)}}class rr{constructor(e){Q(this,"root");this.root=B.resolve(e)}toAbsolutePath(e){if(U.isAbsolute(e))throw new Error("absolute path");return B.resolve(this.root,e.split(U.sep).join(B.sep))}async getFile(e){try{return await W.promises.readFile(this.toAbsolutePath(e))}catch(r){if(r.code=="ENOENT")return;throw new Error("",{cause:r})}}async listFiles(e){try{const r=this.toAbsolutePath(e);return(await W.promises.readdir(r,{recursive:!0,withFileTypes:!0})).filter(s=>s.isFile()).map(s=>B.relative(r,B.resolve(s.path,s.name)).split(B.sep).join(U.sep))}catch(r){if(r.code=="ENOENT")return[];throw new Error("",{cause:r})}}async putFile(e,r){const s=this.toAbsolutePath(e);await W.promises.mkdir(B.dirname(s),{recursive:!0}),await W.promises.writeFile(s,r)}async deleteFiles(...e){for(const r of e)await W.promises.rm(this.toAbsolutePath(r))}}function sr(t){const e=new URL(t,`file:${B.resolve(".").split(B.sep).join(U.sep)}/`);switch(e.protocol){case"file:":const r=B.resolve(e.pathname);return new rr(r);case"s3:":const s={},a=e.searchParams.get("region");a&&(s.region=a);const o=e.hostname;return new tr(new Tt.S3(s),o,e.pathname.replace(/^\//,""));default:throw new Error(`Unknown protocol: ${e.protocol}`)}}const Bi=N.z.string().regex(/^(?:s3:|file:)/),nr=N.z.object({organization:N.z.string(),package:N.z.string(),version:u.SemVer.optional(),files:N.z.record(N.z.string().regex(/^[^\/]+$/),N.z.string()).default({}),meta:N.z.object({}).passthrough()}),ir=N.z.object({registries:N.z.record(N.z.string(),Bi).default({}),registry:N.z.string().optional()}),Qe=ir.merge(nr).required({registry:!0,version:!0}),Ee=Qe.partial().required({registries:!0,files:!0}),ar="pl.package.json",or="pl.package.yaml",ve="v1/";function bi(t){return`${ve}${t.organization}/${t.package}/${t.version}`}function et(t,e){return`${ve}${t.organization}/${t.package}/${t.version}/${e}`}function _e(t){return`${ve}${t.organization}/${t.package}/overview.json`}const ie=`${ve}overview.json`,tt="meta.json",xe="_updates_v1/per_package_version/";function Di(t,e){return`${xe}${t.organization}/${t.package}/${t.version}/${e}`}const _i=/(?<packageKeyWithoutVersion>(?<organization>[^\/]+)\/(?<pkg>[^\/]+))\/(?<version>[^\/]+)\/(?<seed>[^\/]+)$/,cr="_updates_v1/_global_update_in",St="_updates_v1/_global_update_out";class xi{constructor(e,r){this.storage=e,this.logger=r}constructNewPackage(e){return new Gi(this.storage,e)}async updateRegistry(){var c,E,n,i,f,h,P,d;(c=this.logger)==null||c.info("Initiating registry refresh...");const e=new Map,r=[],s=await this.storage.listFiles(xe);(E=this.logger)==null||E.info("Packages to be updated:");for(const p of s){const S=p.match(_i);if(!S)continue;r.push(p);const{packageKeyWithoutVersion:T,organization:O,pkg:C,version:R,seed:A}=S.groups;let _=e.get(T);_?_.versions.has(R)||_.versions.add(R):e.set(T,{package:{organization:O,package:C},versions:new Set([R])}),(n=this.logger)==null||n.info(` - ${O}:${C}:${R}`)}const a=await this.storage.getFile(ie);let o=a===void 0?[]:JSON.parse(a.toString());(i=this.logger)==null||i.info(`Global overview loaded, ${o.length} records`);for(const[,p]of e.entries()){const S=_e(p.package),T=await this.storage.getFile(S);let O=T===void 0?[]:JSON.parse(T.toString());(f=this.logger)==null||f.info(`Updating ${p.package.organization}:${p.package.package} overview, ${O.length} records`),O=O.filter(C=>!p.versions.has(C.version));for(const[C]of p.versions.entries()){const R=C.toString(),A=await this.storage.getFile(et({...p.package,version:R},tt));A&&O.push({version:R,meta:JSON.parse(A.toString())})}O.sort((C,R)=>Oi.compare(R.version,C.version)),await this.storage.putFile(S,Buffer.from(JSON.stringify(O))),(h=this.logger)==null||h.info(`Done (${O.length} records)`),o=o.filter(C=>C.organization!==p.package.organization||C.package!==p.package.package),o.push({organization:p.package.organization,package:p.package.package,allVersions:O.map(C=>C.version).reverse(),latestVersion:O[0].version,latestMeta:O[0].meta})}await this.storage.putFile(ie,Buffer.from(JSON.stringify(o))),(P=this.logger)==null||P.info(`Global overview updated (${o.length} records)`),await this.storage.deleteFiles(...r.map(p=>`${xe}${p}`)),(d=this.logger)==null||d.info("Version update requests cleared")}async updateIfNeeded(e=!1){var a,o;(a=this.logger)==null||a.info("Checking if registry requires refresh...");const r=await this.storage.getFile(cr),s=await this.storage.getFile(St);!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(St,r),(o=this.logger)==null||o.info("Refresh finished")))}async getPackageOverview(e){const r=await this.storage.getFile(_e(e));if(r!==void 0)return JSON.parse(r.toString())}async getGlobalOverview(){const e=await this.storage.getFile(ie);if(e!==void 0)return JSON.parse(e.toString())}}class Gi{constructor(e,r){Q(this,"metaAdded",!1);Q(this,"seed",Nt.randomUUID());this.storage=e,this.name=r}async addFile(e,r){await this.storage.putFile(et(this.name,e),r)}async writeMeta(e){await this.addFile(tt,Buffer.from(JSON.stringify(e))),this.metaAdded=!0}async finish(){if(!this.metaAdded)throw new Error("meta not added");await this.storage.putFile(Di(this.name,this.seed),Buffer.of(0)),await this.storage.putFile(cr,Buffer.from(this.seed))}}function X(t,e){return e===void 0?t:{...t,...e,registries:{...t.registries,...e.registries},files:{...t.files,...e.files}}}async function Oe(t){return ze(t,e=>Ee.parse(JSON.parse(e.toString())))}async function Ie(t){return ze(t,e=>Ee.parse(wr.parse(e.toString())))}async function ji(){let t=Ee.parse({});return t=X(t,await Oe("./.pl.reg.json")),t=X(t,await Ie("./.pl.reg.yaml")),t=X(t,await Oe(`${rt.homedir()}/.pl.reg.json`)),t=X(t,await Ie(`${rt.homedir()}/.pl.reg.yaml`)),t=X(t,await Oe(ar)),t=X(t,await Ie(or)),t}class lr{constructor(e){this.conf=e}createRegistry(e){let r=this.conf.registry;if(!r.startsWith("file:")&&!r.startsWith("s3:")){const s=this.conf.registries[r];if(!s)throw new Error(`Registry with alias "${r}" not found`);r=s}return new xi(sr(r),e)}get fullPackageName(){return{organization:this.conf.organization,package:this.conf.package,version:this.conf.version}}}async function zi(t){const e=await ji();return new lr(Qe.parse(X(e,t)))}exports.BlockComponentsAbsoluteUrl=Nr;exports.BlockComponentsConsolidate=Gt;exports.BlockComponentsDescription=xt;exports.BlockDescriptionPackageJsonField=oe;exports.BlockDescriptionToExplicitBinaryBytes=Ci;exports.BlockPackDescriptionConsolidateToFolder=jt;exports.BlockPackDescriptionManifestAddRelativePathPrefix=Te;exports.BlockPackMetaConsolidate=_t;exports.BlockPackMetaDescription=Dt;exports.BlockPackMetaEmbedAbsoluteBase64=Sr;exports.BlockPackMetaEmbedAbsoluteBytes=Or;exports.BlockPackMetaEmbedBytes=Ir;exports.BlockRegistryV2=Fi;exports.FSStorage=rr;exports.GlobalOverview=$e;exports.GlobalOverviewEntry=Ze;exports.GlobalOverviewEntryReg=Ti;exports.GlobalOverviewFileName=Yt;exports.GlobalOverviewPath=ie;exports.GlobalOverviewPath$1=ne;exports.GlobalOverviewReg=De;exports.GlobalOverviewToExplicitBinaryBase64=Ai;exports.GlobalOverviewToExplicitBinaryBytes=Li;exports.MainPrefix=me;exports.ManifestFileName=Ke;exports.ManifestSuffix=Qt;exports.MetaFile=tt;exports.PackageOverview=Be;exports.PackageOverviewFileName=Kt;exports.PackageOverviewVersionEntry=er;exports.PlPackageConfigData=nr;exports.PlPackageJsonConfigFile=ar;exports.PlPackageYamlConfigFile=or;exports.PlRegCommonConfigData=ir;exports.PlRegFullPackageConfigData=Qe;exports.PlRegPackageConfig=lr;exports.PlRegPackageConfigDataShard=Ee;exports.ResolvedBlockPackDescriptionFromPackageJson=je;exports.ResolvedModuleFile=Ct;exports.ResolvedModuleFolder=Lt;exports.S3Storage=tr;exports.absoluteToBase64=At;exports.absoluteToBytes=Ft;exports.absoluteToString=Ge;exports.buildBlockPackDist=Tr;exports.cpAbsoluteToRelative=ae;exports.getConfig=zi;exports.loadPackDescription=Ar;exports.loadPackDescriptionRaw=zt;exports.mapLocalToAbsolute=Ne;exports.packFolderToRelativeTgz=Bt;exports.packageContentPrefix=bi;exports.packageContentPrefix$1=Fe;exports.packageContentPrefixInsideV2=Zt;exports.packageOverviewPath=_e;exports.packageOverviewPath$1=be;exports.parsePackageName=Ue;exports.payloadFilePath=et;exports.relativeToContentString=bt;exports.relativeToExplicitBinary64=yr;exports.relativeToExplicitBytes=K;exports.relativeToExplicitString=fe;exports.storageByUrl=sr;exports.tryLoadPackDescription=Lr;
|
|
3
|
-
//# sourceMappingURL=config-BVDkG_N7.js.map
|