@platforma-sdk/block-tools 2.5.61 → 2.5.63

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/dist/cli.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var O=Object.defineProperty;var L=(o,e,t)=>e in o?O(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var r=(o,e,t)=>L(o,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@oclif/core"),d=require("node:path"),m=require("node:fs");require("zod");require("mime-types");require("tar");require("@milaboratories/resolve-helper");const i=require("./config-DPNjt6Gf.js"),k=require("@milaboratories/pl-model-middle-layer");require("@milaboratories/ts-helpers");require("canonicalize");require("lru-cache");require("undici");require("@milaboratories/pl-http");const F=require("@milaboratories/ts-helpers-oclif"),C=require("yaml"),f=class f extends a.Command{async run(){const{flags:e}=await this.parse(f),t=d.resolve(e.modulePath),s=await i.loadPackDescriptionRaw(t),n=await i.BlockPackMetaEmbedAbsoluteBase64.parseAsync(i.BlockPackMetaDescription(t).parse(s.meta));await m.promises.writeFile(d.resolve(e.destination),JSON.stringify(n))}};r(f,"description","Extracts meta information from blocks package.json and outputs meta.json with embedded binary and textual information linked from the meta section."),r(f,"flags",{modulePath:a.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),destination:a.Flags.string({char:"o",summary:"output meta.json file",helpValue:"<path>",required:!0})});let b=f;async function x(o){try{return await m.promises.readFile(o,"utf8")}catch(e){if(e.code==="ENOENT")return;throw e}}const g=class g extends a.Command{async run(){const{flags:e}=await this.parse(g),t=d.resolve(e.modulePath);let{model:s,platforma:n}=require(t);if(s||(s=n),!s)throw new Error('"model" export not found');const{config:l}=s;if(!l)throw new Error('Malformed "model" object, check it is created with "BlockModel" and ".done()" is executed as the call in the chain.');if(!("canRun"in l||"inputsValid"in l)||!("outputs"in l)||!("sections"in l))throw new Error('"config" has unexpected structure');const u=await x(e.sourceBundle);u!==void 0&&(l.code={type:"plain",content:u}),await m.promises.writeFile(d.resolve(e.destination),JSON.stringify(l))}};r(g,"description","Extracts and outputs block model JSON from pre-built block model module"),r(g,"flags",{modulePath:a.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),sourceBundle:a.Flags.string({char:"b",summary:"bundled model code to embed into the model for callback-based rendering to work",helpValue:"<path>",default:"./dist/bundle.js"}),destination:a.Flags.string({char:"o",summary:"output model file",helpValue:"<path>",default:"./dist/model.json"})});let P=g;const h=class h extends a.Command{async run(){const{flags:e}=await this.parse(h);let t=await i.loadPackDescriptionRaw(d.resolve(e.modulePath));e["version-override"]&&(t=k.overrideDescriptionVersion(t,e["version-override"]));const s=i.storageByUrl(e.registry),n=new i.BlockRegistryV2(s,new F.OclifLoggerAdapter(this));e.unmark?await n.removePackageFromChannel(t.id,e.channel):await n.addPackageToChannel(t.id,e.channel),e.refresh&&await n.updateIfNeeded()}};r(h,"description","Mark target block stable"),r(h,"flags",{modulePath:a.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),channel:a.Flags.string({char:"c",hidden:!0,summary:"custom channel",helpValue:"<channel name>",default:k.StableChannel}),"version-override":a.Flags.file({char:"v",summary:"override package version"}),registry:a.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),refresh:a.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"}),unmark:a.Flags.boolean({summary:'reverses meaning of this command, flag can be used to remove "stable" flag from the package',default:!1})});let R=h;const p=class p extends a.Command{async run(){const{flags:e}=await this.parse(p),t=await i.loadPackDescription(d.resolve(e.modulePath));await i.buildBlockPackDist(t,d.resolve(e.destinationPath))}};r(p,"description","Builds block pack and outputs a block pack manifest consolidating all references assets into a single folder"),r(p,"flags",{modulePath:a.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),destinationPath:a.Flags.string({char:"o",summary:"output folder",helpValue:"<path>",default:"./block-pack"})});let E=p;const y=class y extends a.Command{async run(){const{flags:e}=await this.parse(y),t=d.resolve(e.manifest);let s=k.BlockPackManifest.parse(JSON.parse(await m.promises.readFile(t,{encoding:"utf-8"})));const n=d.dirname(t);this.log(`Manifest root = ${n}`),e["version-override"]&&(s=k.overrideManifestVersion(s,e["version-override"]));const l=i.storageByUrl(e.registry),u=new i.BlockRegistryV2(l,new F.OclifLoggerAdapter(this));await u.publishPackage(s,async c=>Buffer.from(await m.promises.readFile(d.resolve(n,c)))),e.refresh&&await u.updateIfNeeded()}};r(y,"description","Publishes the block package and refreshes the registry (for v2 block-pack schema)"),r(y,"flags",{registry:a.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),manifest:a.Flags.file({char:"m",summary:"manifest file path",exists:!0,default:`./block-pack/${i.ManifestFileName}`}),"version-override":a.Flags.file({char:"v",summary:"override package version"}),refresh:a.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"})});let N=y;const w=class w extends a.Command{async run(){const{flags:e}=await this.parse(w),t=i.storageByUrl(e.registry);await new i.BlockRegistryV2(t,new F.OclifLoggerAdapter(this)).updateIfNeeded(e.mode)}};r(w,"description","Refresh overview files based on published but not proecessed artefacts"),r(w,"flags",{registry:a.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),mode:a.Flags.string({char:"m",summary:'refresh mode (allowed valiues: "force", "normal", "dry-run")',helpValue:"<mode>",options:["force","normal","dry-run"],env:"PL_REGISTRY_REFRESH_DRY_RUN",default:"normal"})});let q=w;function I(o){const e=o.match(/(?<destName>[^\/\\]+)=(?<src>.*)/);if(e){const{src:t,destName:s}=e.groups;return{src:t,destName:s}}else return{src:o,destName:d.basename(o)}}const T=a.Flags.custom({summary:"target files to upload",helpValue:"file_path | package_name=file_path",parse:async o=>I(o)}),G=["registry","organization","package","version"],v=class v extends a.Command{async run(){const{flags:e}=await this.parse(v),t=i.PlRegPackageConfigDataShard.parse({});for(const c of G)e[c]&&(t[c]=e[c]);e.meta&&(e.meta.endsWith(".json")?t.meta=JSON.parse(await m.promises.readFile(e.meta,{encoding:"utf-8"})):e.meta.endsWith(".yaml")&&(t.meta=C.parse(await m.promises.readFile(e.meta,{encoding:"utf-8"}))));for(const c of e.file)t.files[c.destName]=c.src;const s=await i.getConfig(t);this.log(C.stringify(s.conf));const n=s.createRegistry(new F.OclifLoggerAdapter(this)),l=s.fullPackageName,u=n.constructNewPackage(l);for(const[c,V]of Object.entries(s.conf.files)){this.log(`Uploading ${V} -> ${c} ...`);const A=await m.promises.readFile(V);await u.addFile(c,A)}this.log("Uploading meta information..."),await u.writeMeta(s.conf.meta),await u.finish(),e.refresh&&await n.updateIfNeeded()}};r(v,"description","Uploads V1 package and refreshes the registry"),r(v,"flags",{registry:a.Flags.string({char:"r",summary:"full address of the registry or alias from .pl.reg",helpValue:"<address|alias>",env:"PL_REGISTRY"}),organization:a.Flags.string({char:"o",summary:"target organisation",env:"PL_PACKAGE_ORGANIZATION"}),package:a.Flags.string({char:"p",summary:"target package",env:"PL_PACKAGE_NAME"}),version:a.Flags.string({char:"v",summary:"target version",env:"PL_PACKAGE_VERSION"}),meta:a.Flags.file({char:"m",summary:"json file containing meta information to associate with tha package",exists:!0}),file:T({char:"f",summary:"package files",multiple:!0,default:[]}),refresh:a.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"})});let S=v;const j={"build-meta":b,"build-model":P,"mark-stable":R,pack:E,publish:N,"refresh-registry":q,"upload-package-v1":S};exports.COMMANDS=j;
1
+ "use strict";var O=Object.defineProperty;var L=(o,e,t)=>e in o?O(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var s=(o,e,t)=>L(o,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@oclif/core"),d=require("node:path"),m=require("node:fs");require("zod");require("mime-types");require("tar");require("@milaboratories/resolve-helper");const i=require("./config-26zalc5o.js"),k=require("@milaboratories/pl-model-middle-layer");require("@milaboratories/pl-model-common");require("@milaboratories/ts-helpers");require("canonicalize");require("lru-cache");require("undici");require("@milaboratories/pl-http");const F=require("@milaboratories/ts-helpers-oclif"),C=require("yaml"),f=class f extends a.Command{async run(){const{flags:e}=await this.parse(f),t=d.resolve(e.modulePath),r=await i.loadPackDescriptionRaw(t),n=await i.BlockPackMetaEmbedAbsoluteBase64.parseAsync(i.BlockPackMetaDescription(t).parse(r.meta));await m.promises.writeFile(d.resolve(e.destination),JSON.stringify(n))}};s(f,"description","Extracts meta information from blocks package.json and outputs meta.json with embedded binary and textual information linked from the meta section."),s(f,"flags",{modulePath:a.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),destination:a.Flags.string({char:"o",summary:"output meta.json file",helpValue:"<path>",required:!0})});let b=f;async function x(o){try{return await m.promises.readFile(o,"utf8")}catch(e){if(e.code==="ENOENT")return;throw e}}const g=class g extends a.Command{async run(){const{flags:e}=await this.parse(g),t=d.resolve(e.modulePath);let{model:r,platforma:n}=require(t);if(r||(r=n),!r)throw new Error('"model" export not found');const{config:l}=r;if(!l)throw new Error('Malformed "model" object, check it is created with "BlockModel" and ".done()" is executed as the call in the chain.');if(!("canRun"in l||"inputsValid"in l)||!("outputs"in l)||!("sections"in l))throw new Error('"config" has unexpected structure');const u=await x(e.sourceBundle);u!==void 0&&(l.code={type:"plain",content:u}),await m.promises.writeFile(d.resolve(e.destination),JSON.stringify(l))}};s(g,"description","Extracts and outputs block model JSON from pre-built block model module"),s(g,"flags",{modulePath:a.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),sourceBundle:a.Flags.string({char:"b",summary:"bundled model code to embed into the model for callback-based rendering to work",helpValue:"<path>",default:"./dist/bundle.js"}),destination:a.Flags.string({char:"o",summary:"output model file",helpValue:"<path>",default:"./dist/model.json"})});let P=g;const h=class h extends a.Command{async run(){const{flags:e}=await this.parse(h);let t=await i.loadPackDescriptionRaw(d.resolve(e.modulePath));e["version-override"]&&(t=k.overrideDescriptionVersion(t,e["version-override"]));const r=i.storageByUrl(e.registry),n=new i.BlockRegistryV2(r,new F.OclifLoggerAdapter(this));e.unmark?await n.removePackageFromChannel(t.id,e.channel):await n.addPackageToChannel(t.id,e.channel),e.refresh&&await n.updateIfNeeded()}};s(h,"description","Mark target block stable"),s(h,"flags",{modulePath:a.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),channel:a.Flags.string({char:"c",hidden:!0,summary:"custom channel",helpValue:"<channel name>",default:k.StableChannel}),"version-override":a.Flags.file({char:"v",summary:"override package version"}),registry:a.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),refresh:a.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"}),unmark:a.Flags.boolean({summary:'reverses meaning of this command, flag can be used to remove "stable" flag from the package',default:!1})});let R=h;const p=class p extends a.Command{async run(){const{flags:e}=await this.parse(p),t=await i.loadPackDescription(d.resolve(e.modulePath));await i.buildBlockPackDist(t,d.resolve(e.destinationPath))}};s(p,"description","Builds block pack and outputs a block pack manifest consolidating all references assets into a single folder"),s(p,"flags",{modulePath:a.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),destinationPath:a.Flags.string({char:"o",summary:"output folder",helpValue:"<path>",default:"./block-pack"})});let E=p;const y=class y extends a.Command{async run(){const{flags:e}=await this.parse(y),t=d.resolve(e.manifest);let r=k.BlockPackManifest.parse(JSON.parse(await m.promises.readFile(t,{encoding:"utf-8"})));const n=d.dirname(t);this.log(`Manifest root = ${n}`),e["version-override"]&&(r=k.overrideManifestVersion(r,e["version-override"]));const l=i.storageByUrl(e.registry),u=new i.BlockRegistryV2(l,new F.OclifLoggerAdapter(this));await u.publishPackage(r,async c=>Buffer.from(await m.promises.readFile(d.resolve(n,c)))),e.refresh&&await u.updateIfNeeded()}};s(y,"description","Publishes the block package and refreshes the registry (for v2 block-pack schema)"),s(y,"flags",{registry:a.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),manifest:a.Flags.file({char:"m",summary:"manifest file path",exists:!0,default:`./block-pack/${i.ManifestFileName}`}),"version-override":a.Flags.file({char:"v",summary:"override package version"}),refresh:a.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"})});let N=y;const w=class w extends a.Command{async run(){const{flags:e}=await this.parse(w),t=i.storageByUrl(e.registry);await new i.BlockRegistryV2(t,new F.OclifLoggerAdapter(this)).updateIfNeeded(e.mode)}};s(w,"description","Refresh overview files based on published but not proecessed artefacts"),s(w,"flags",{registry:a.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),mode:a.Flags.string({char:"m",summary:'refresh mode (allowed valiues: "force", "normal", "dry-run")',helpValue:"<mode>",options:["force","normal","dry-run"],env:"PL_REGISTRY_REFRESH_DRY_RUN",default:"normal"})});let q=w;function I(o){const e=o.match(/(?<destName>[^\/\\]+)=(?<src>.*)/);if(e){const{src:t,destName:r}=e.groups;return{src:t,destName:r}}else return{src:o,destName:d.basename(o)}}const T=a.Flags.custom({summary:"target files to upload",helpValue:"file_path | package_name=file_path",parse:async o=>I(o)}),G=["registry","organization","package","version"],v=class v extends a.Command{async run(){const{flags:e}=await this.parse(v),t=i.PlRegPackageConfigDataShard.parse({});for(const c of G)e[c]&&(t[c]=e[c]);e.meta&&(e.meta.endsWith(".json")?t.meta=JSON.parse(await m.promises.readFile(e.meta,{encoding:"utf-8"})):e.meta.endsWith(".yaml")&&(t.meta=C.parse(await m.promises.readFile(e.meta,{encoding:"utf-8"}))));for(const c of e.file)t.files[c.destName]=c.src;const r=await i.getConfig(t);this.log(C.stringify(r.conf));const n=r.createRegistry(new F.OclifLoggerAdapter(this)),l=r.fullPackageName,u=n.constructNewPackage(l);for(const[c,V]of Object.entries(r.conf.files)){this.log(`Uploading ${V} -> ${c} ...`);const A=await m.promises.readFile(V);await u.addFile(c,A)}this.log("Uploading meta information..."),await u.writeMeta(r.conf.meta),await u.finish(),e.refresh&&await n.updateIfNeeded()}};s(v,"description","Uploads V1 package and refreshes the registry"),s(v,"flags",{registry:a.Flags.string({char:"r",summary:"full address of the registry or alias from .pl.reg",helpValue:"<address|alias>",env:"PL_REGISTRY"}),organization:a.Flags.string({char:"o",summary:"target organisation",env:"PL_PACKAGE_ORGANIZATION"}),package:a.Flags.string({char:"p",summary:"target package",env:"PL_PACKAGE_NAME"}),version:a.Flags.string({char:"v",summary:"target version",env:"PL_PACKAGE_VERSION"}),meta:a.Flags.file({char:"m",summary:"json file containing meta information to associate with tha package",exists:!0}),file:T({char:"f",summary:"package files",multiple:!0,default:[]}),refresh:a.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"})});let S=v;const j={"build-meta":b,"build-model":P,"mark-stable":R,pack:E,publish:N,"refresh-registry":q,"upload-package-v1":S};exports.COMMANDS=j;
2
2
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sources":["../src/cmd/build-meta.ts","../src/cmd/build-model.ts","../src/cmd/mark-stable.ts","../src/cmd/pack.ts","../src/cmd/publish.ts","../src/cmd/refresh-registry.ts","../src/registry_v1/flags.ts","../src/cmd/upload-package-v1.ts","../src/cmd/index.ts"],"sourcesContent":["import { Command, Flags } from '@oclif/core';\nimport path from 'path';\nimport fs from 'fs';\nimport { loadPackDescriptionRaw } from '../v2';\nimport { BlockPackMetaDescription, BlockPackMetaEmbedAbsoluteBase64 } from '../v2/model/block_meta';\n\nexport default class BuildMeta extends Command {\n static override description =\n 'Extracts meta information from blocks package.json and outputs meta.json with embedded binary ' +\n 'and textual information linked from the meta section.';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n destination: Flags.string({\n char: 'o',\n summary: 'output meta.json file',\n helpValue: '<path>',\n required: true\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(BuildMeta);\n const modulePath = path.resolve(flags.modulePath);\n const descriptionRaw = await loadPackDescriptionRaw(modulePath);\n const metaEmbedded = await BlockPackMetaEmbedAbsoluteBase64.parseAsync(\n BlockPackMetaDescription(modulePath).parse(descriptionRaw.meta)\n );\n\n await fs.promises.writeFile(path.resolve(flags.destination), JSON.stringify(metaEmbedded));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport fs from 'fs';\nimport path from 'path';\n\nasync function getFileContent(path: string) {\n try {\n return await fs.promises.readFile(path, 'utf8');\n } catch (error: any) {\n if (error.code === 'ENOENT') {\n return undefined;\n }\n throw error;\n }\n}\n\nexport default class BuildModel extends Command {\n static override description =\n 'Extracts and outputs block model JSON from pre-built block model module';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n sourceBundle: Flags.string({\n char: 'b',\n summary: 'bundled model code to embed into the model for callback-based rendering to work',\n helpValue: '<path>',\n default: './dist/bundle.js'\n }),\n\n destination: Flags.string({\n char: 'o',\n summary: 'output model file',\n helpValue: '<path>',\n default: './dist/model.json'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(BuildModel);\n const modulePath = path.resolve(flags.modulePath); // i.e. folder with package.json file\n let { model, platforma } = require(modulePath);\n\n if (!model) model = platforma;\n if (!model) throw new Error('\"model\" export not found');\n\n const { config } = model;\n\n if (!config)\n throw new Error(\n 'Malformed \"model\" object, check it is created with \"BlockModel\" ' +\n 'and \".done()\" is executed as the call in the chain.'\n );\n\n if (\n !('canRun' in config || 'inputsValid' in config) ||\n !('outputs' in config) ||\n !('sections' in config)\n )\n throw new Error('\"config\" has unexpected structure');\n\n const code = await getFileContent(flags.sourceBundle);\n if (code !== undefined) {\n config.code = {\n type: 'plain',\n content: code\n };\n }\n\n await fs.promises.writeFile(path.resolve(flags.destination), JSON.stringify(config));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport { BlockRegistryV2, loadPackDescriptionRaw } from '../v2';\nimport path from 'path';\nimport {\n overrideDescriptionVersion,\n overrideManifestVersion,\n StableChannel\n} from '@milaboratories/pl-model-middle-layer';\nimport { storageByUrl } from '../io';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class MarkStable extends Command {\n static description = 'Mark target block stable';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n channel: Flags.string({\n char: 'c',\n hidden: true,\n summary: 'custom channel',\n helpValue: '<channel name>',\n default: StableChannel\n }),\n\n 'version-override': Flags.file({\n char: 'v',\n summary: 'override package version'\n }),\n\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry',\n helpValue: '<address>',\n env: 'PL_REGISTRY',\n required: true\n }),\n\n refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n }),\n\n unmark: Flags.boolean({\n summary:\n 'reverses meaning of this command, flag can be used to remove \"stable\" flag from the package',\n default: false\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(MarkStable);\n let description = await loadPackDescriptionRaw(path.resolve(flags.modulePath));\n if (flags['version-override'])\n description = overrideDescriptionVersion(description, flags['version-override']);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n\n if (flags.unmark) await registry.removePackageFromChannel(description.id, flags.channel);\n else await registry.addPackageToChannel(description.id, flags.channel);\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport { loadPackDescription } from '../v2/source_package';\nimport path from 'path';\nimport { buildBlockPackDist } from '../v2/build_dist';\n\nexport default class PackBlock extends Command {\n static description =\n 'Builds block pack and outputs a block pack manifest consolidating all ' +\n 'references assets into a single folder';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n destinationPath: Flags.string({\n char: 'o',\n summary: 'output folder',\n helpValue: '<path>',\n default: './block-pack'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(PackBlock);\n const description = await loadPackDescription(path.resolve(flags.modulePath));\n await buildBlockPackDist(description, path.resolve(flags.destinationPath));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport fs from 'node:fs';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\nimport { ManifestFileName } from '../v2/registry/schema_public';\nimport { BlockPackManifest, overrideManifestVersion } from '@milaboratories/pl-model-middle-layer';\nimport { storageByUrl } from '../io/storage';\nimport { BlockRegistryV2 } from '../v2/registry/registry';\nimport path from 'node:path';\nimport * as R from 'remeda';\n\nexport default class Publish extends Command {\n static description =\n 'Publishes the block package and refreshes the registry (for v2 block-pack schema)';\n\n static flags = {\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry',\n helpValue: '<address>',\n env: 'PL_REGISTRY',\n required: true\n }),\n\n manifest: Flags.file({\n char: 'm',\n summary: 'manifest file path',\n exists: true,\n default: `./block-pack/${ManifestFileName}`\n }),\n\n 'version-override': Flags.file({\n char: 'v',\n summary: 'override package version'\n }),\n\n refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(Publish);\n\n const manifestPath = path.resolve(flags.manifest);\n let manifest = BlockPackManifest.parse(\n JSON.parse(await fs.promises.readFile(manifestPath, { encoding: 'utf-8' }))\n );\n const manifestRoot = path.dirname(manifestPath);\n\n this.log(`Manifest root = ${manifestRoot}`);\n\n if (flags['version-override'])\n manifest = overrideManifestVersion(manifest, flags['version-override']);\n\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n\n await registry.publishPackage(manifest, async (file) =>\n Buffer.from(await fs.promises.readFile(path.resolve(manifestRoot, file)))\n );\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport { BlockRegistryV2, loadPackDescriptionRaw } from '../v2';\nimport path from 'path';\nimport {\n overrideDescriptionVersion,\n overrideManifestVersion,\n StableChannel\n} from '@milaboratories/pl-model-middle-layer';\nimport { storageByUrl } from '../io';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class RefreshRegistry extends Command {\n static description = 'Refresh overview files based on published but not proecessed artefacts';\n\n static flags = {\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry',\n helpValue: '<address>',\n env: 'PL_REGISTRY',\n required: true\n }),\n\n mode: Flags.string({\n char: 'm',\n summary: 'refresh mode (allowed valiues: \"force\", \"normal\", \"dry-run\")',\n helpValue: '<mode>',\n options: ['force', 'normal', 'dry-run'],\n env: 'PL_REGISTRY_REFRESH_DRY_RUN',\n default: 'normal'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(RefreshRegistry);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n await registry.updateIfNeeded(flags.mode as 'force' | 'normal' | 'dry-run');\n }\n}\n","import { Flags } from '@oclif/core';\nimport path from 'node:path';\n\nexport interface TargetFile {\n src: string;\n destName: string;\n}\n\nfunction parseTargetFile(arg: string): TargetFile {\n const match = arg.match(/(?<destName>[^\\/\\\\]+)=(?<src>.*)/);\n if (match) {\n const { src, destName } = match.groups!;\n return { src, destName };\n } else {\n return { src: arg, destName: path.basename(arg) };\n }\n}\n\nexport const targetFile = Flags.custom<TargetFile>({\n summary: 'target files to upload',\n helpValue: 'file_path | package_name=file_path',\n parse: async (arg) => parseTargetFile(arg)\n});\n","import { Command, Flags } from '@oclif/core';\nimport { getConfig } from '../registry_v1/config';\nimport { targetFile } from '../registry_v1/flags';\nimport fs from 'node:fs';\nimport YAML from 'yaml';\nimport { PlRegPackageConfigDataShard } from '../registry_v1/config_schema';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\ntype BasicConfigField = keyof PlRegPackageConfigDataShard &\n ('registry' | 'organization' | 'package' | 'version');\nconst BasicConfigFields: BasicConfigField[] = ['registry', 'organization', 'package', 'version'];\n\nexport default class UploadPackageV1 extends Command {\n static description = 'Uploads V1 package and refreshes the registry';\n\n static flags = {\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry or alias from .pl.reg',\n helpValue: '<address|alias>',\n env: 'PL_REGISTRY'\n }),\n\n organization: Flags.string({\n char: 'o',\n summary: 'target organisation',\n env: 'PL_PACKAGE_ORGANIZATION'\n }),\n\n package: Flags.string({\n char: 'p',\n summary: 'target package',\n env: 'PL_PACKAGE_NAME'\n }),\n\n version: Flags.string({\n char: 'v',\n summary: 'target version',\n env: 'PL_PACKAGE_VERSION'\n }),\n\n meta: Flags.file({\n char: 'm',\n summary: 'json file containing meta information to associate with tha package',\n exists: true\n }),\n\n file: targetFile({\n char: 'f',\n summary: 'package files',\n multiple: true,\n default: []\n }),\n\n refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(UploadPackageV1);\n const configFromFlags: PlRegPackageConfigDataShard = PlRegPackageConfigDataShard.parse({});\n\n for (const field of BasicConfigFields) if (flags[field]) configFromFlags[field] = flags[field];\n\n if (flags.meta) {\n if (flags.meta.endsWith('.json'))\n configFromFlags.meta = JSON.parse(\n await fs.promises.readFile(flags.meta, { encoding: 'utf-8' })\n );\n else if (flags.meta.endsWith('.yaml'))\n configFromFlags.meta = YAML.parse(\n await fs.promises.readFile(flags.meta, { encoding: 'utf-8' })\n );\n }\n\n for (const targetFile of flags.file) {\n configFromFlags.files[targetFile.destName] = targetFile.src;\n }\n\n const conf = await getConfig(configFromFlags);\n\n this.log(YAML.stringify(conf.conf));\n\n const registry = conf.createRegistry(new OclifLoggerAdapter(this));\n const name = conf.fullPackageName;\n\n const builder = registry.constructNewPackage(name);\n\n for (const [dst, src] of Object.entries(conf.conf.files)) {\n this.log(`Uploading ${src} -> ${dst} ...`);\n const content = await fs.promises.readFile(src);\n await builder.addFile(dst, content);\n }\n\n this.log(`Uploading meta information...`);\n await builder.writeMeta(conf.conf.meta);\n await builder.finish();\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","// DO NOT EDIT. This file was generated by oclif-index utility.\n\nimport Cmd0 from './build-meta';\nimport Cmd1 from './build-model';\nimport Cmd3 from './mark-stable';\nimport Cmd4 from './pack';\nimport Cmd5 from './publish';\nimport Cmd6 from './refresh-registry';\nimport Cmd7 from './upload-package-v1';\n\n// prettier-ignore\nexport const COMMANDS = {\n 'build-meta': Cmd0,\n 'build-model': Cmd1,\n 'mark-stable': Cmd3,\n 'pack': Cmd4,\n 'publish': Cmd5,\n 'refresh-registry': Cmd6,\n 'upload-package-v1': Cmd7\n};\n"],"names":["_BuildMeta","Command","flags","modulePath","path","descriptionRaw","loadPackDescriptionRaw","metaEmbedded","BlockPackMetaEmbedAbsoluteBase64","BlockPackMetaDescription","fs","__publicField","Flags","BuildMeta","getFileContent","error","_BuildModel","model","platforma","config","code","BuildModel","_MarkStable","description","overrideDescriptionVersion","storage","storageByUrl","registry","BlockRegistryV2","OclifLoggerAdapter","StableChannel","MarkStable","_PackBlock","loadPackDescription","buildBlockPackDist","PackBlock","_Publish","manifestPath","manifest","BlockPackManifest","manifestRoot","overrideManifestVersion","file","ManifestFileName","Publish","_RefreshRegistry","RefreshRegistry","parseTargetFile","arg","match","src","destName","targetFile","BasicConfigFields","_UploadPackageV1","configFromFlags","PlRegPackageConfigDataShard","field","YAML","conf","getConfig","name","builder","dst","content","UploadPackageV1","COMMANDS","Cmd0","Cmd1","Cmd3","Cmd4","Cmd5","Cmd6","Cmd7"],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sources":["../src/cmd/build-meta.ts","../src/cmd/build-model.ts","../src/cmd/mark-stable.ts","../src/cmd/pack.ts","../src/cmd/publish.ts","../src/cmd/refresh-registry.ts","../src/registry_v1/flags.ts","../src/cmd/upload-package-v1.ts","../src/cmd/index.ts"],"sourcesContent":["import { Command, Flags } from '@oclif/core';\nimport path from 'path';\nimport fs from 'fs';\nimport { loadPackDescriptionRaw } from '../v2';\nimport { BlockPackMetaDescription, BlockPackMetaEmbedAbsoluteBase64 } from '../v2/model/block_meta';\n\nexport default class BuildMeta extends Command {\n static override description =\n 'Extracts meta information from blocks package.json and outputs meta.json with embedded binary ' +\n 'and textual information linked from the meta section.';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n destination: Flags.string({\n char: 'o',\n summary: 'output meta.json file',\n helpValue: '<path>',\n required: true\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(BuildMeta);\n const modulePath = path.resolve(flags.modulePath);\n const descriptionRaw = await loadPackDescriptionRaw(modulePath);\n const metaEmbedded = await BlockPackMetaEmbedAbsoluteBase64.parseAsync(\n BlockPackMetaDescription(modulePath).parse(descriptionRaw.meta)\n );\n\n await fs.promises.writeFile(path.resolve(flags.destination), JSON.stringify(metaEmbedded));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport fs from 'fs';\nimport path from 'path';\n\nasync function getFileContent(path: string) {\n try {\n return await fs.promises.readFile(path, 'utf8');\n } catch (error: any) {\n if (error.code === 'ENOENT') {\n return undefined;\n }\n throw error;\n }\n}\n\nexport default class BuildModel extends Command {\n static override description =\n 'Extracts and outputs block model JSON from pre-built block model module';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n sourceBundle: Flags.string({\n char: 'b',\n summary: 'bundled model code to embed into the model for callback-based rendering to work',\n helpValue: '<path>',\n default: './dist/bundle.js'\n }),\n\n destination: Flags.string({\n char: 'o',\n summary: 'output model file',\n helpValue: '<path>',\n default: './dist/model.json'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(BuildModel);\n const modulePath = path.resolve(flags.modulePath); // i.e. folder with package.json file\n let { model, platforma } = require(modulePath);\n\n if (!model) model = platforma;\n if (!model) throw new Error('\"model\" export not found');\n\n const { config } = model;\n\n if (!config)\n throw new Error(\n 'Malformed \"model\" object, check it is created with \"BlockModel\" ' +\n 'and \".done()\" is executed as the call in the chain.'\n );\n\n if (\n !('canRun' in config || 'inputsValid' in config) ||\n !('outputs' in config) ||\n !('sections' in config)\n )\n throw new Error('\"config\" has unexpected structure');\n\n const code = await getFileContent(flags.sourceBundle);\n if (code !== undefined) {\n config.code = {\n type: 'plain',\n content: code\n };\n }\n\n await fs.promises.writeFile(path.resolve(flags.destination), JSON.stringify(config));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport { BlockRegistryV2, loadPackDescriptionRaw } from '../v2';\nimport path from 'path';\nimport {\n overrideDescriptionVersion,\n overrideManifestVersion,\n StableChannel\n} from '@milaboratories/pl-model-middle-layer';\nimport { storageByUrl } from '../io';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class MarkStable extends Command {\n static description = 'Mark target block stable';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n channel: Flags.string({\n char: 'c',\n hidden: true,\n summary: 'custom channel',\n helpValue: '<channel name>',\n default: StableChannel\n }),\n\n 'version-override': Flags.file({\n char: 'v',\n summary: 'override package version'\n }),\n\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry',\n helpValue: '<address>',\n env: 'PL_REGISTRY',\n required: true\n }),\n\n refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n }),\n\n unmark: Flags.boolean({\n summary:\n 'reverses meaning of this command, flag can be used to remove \"stable\" flag from the package',\n default: false\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(MarkStable);\n let description = await loadPackDescriptionRaw(path.resolve(flags.modulePath));\n if (flags['version-override'])\n description = overrideDescriptionVersion(description, flags['version-override']);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n\n if (flags.unmark) await registry.removePackageFromChannel(description.id, flags.channel);\n else await registry.addPackageToChannel(description.id, flags.channel);\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport { loadPackDescription } from '../v2/source_package';\nimport path from 'path';\nimport { buildBlockPackDist } from '../v2/build_dist';\n\nexport default class PackBlock extends Command {\n static description =\n 'Builds block pack and outputs a block pack manifest consolidating all ' +\n 'references assets into a single folder';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n destinationPath: Flags.string({\n char: 'o',\n summary: 'output folder',\n helpValue: '<path>',\n default: './block-pack'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(PackBlock);\n const description = await loadPackDescription(path.resolve(flags.modulePath));\n await buildBlockPackDist(description, path.resolve(flags.destinationPath));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport fs from 'node:fs';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\nimport { ManifestFileName } from '../v2/registry/schema_public';\nimport { BlockPackManifest, overrideManifestVersion } from '@milaboratories/pl-model-middle-layer';\nimport { storageByUrl } from '../io/storage';\nimport { BlockRegistryV2 } from '../v2/registry/registry';\nimport path from 'node:path';\nimport * as R from 'remeda';\n\nexport default class Publish extends Command {\n static description =\n 'Publishes the block package and refreshes the registry (for v2 block-pack schema)';\n\n static flags = {\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry',\n helpValue: '<address>',\n env: 'PL_REGISTRY',\n required: true\n }),\n\n manifest: Flags.file({\n char: 'm',\n summary: 'manifest file path',\n exists: true,\n default: `./block-pack/${ManifestFileName}`\n }),\n\n 'version-override': Flags.file({\n char: 'v',\n summary: 'override package version'\n }),\n\n refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(Publish);\n\n const manifestPath = path.resolve(flags.manifest);\n let manifest = BlockPackManifest.parse(\n JSON.parse(await fs.promises.readFile(manifestPath, { encoding: 'utf-8' }))\n );\n const manifestRoot = path.dirname(manifestPath);\n\n this.log(`Manifest root = ${manifestRoot}`);\n\n if (flags['version-override'])\n manifest = overrideManifestVersion(manifest, flags['version-override']);\n\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n\n await registry.publishPackage(manifest, async (file) =>\n Buffer.from(await fs.promises.readFile(path.resolve(manifestRoot, file)))\n );\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport { BlockRegistryV2, loadPackDescriptionRaw } from '../v2';\nimport path from 'path';\nimport {\n overrideDescriptionVersion,\n overrideManifestVersion,\n StableChannel\n} from '@milaboratories/pl-model-middle-layer';\nimport { storageByUrl } from '../io';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class RefreshRegistry extends Command {\n static description = 'Refresh overview files based on published but not proecessed artefacts';\n\n static flags = {\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry',\n helpValue: '<address>',\n env: 'PL_REGISTRY',\n required: true\n }),\n\n mode: Flags.string({\n char: 'm',\n summary: 'refresh mode (allowed valiues: \"force\", \"normal\", \"dry-run\")',\n helpValue: '<mode>',\n options: ['force', 'normal', 'dry-run'],\n env: 'PL_REGISTRY_REFRESH_DRY_RUN',\n default: 'normal'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(RefreshRegistry);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n await registry.updateIfNeeded(flags.mode as 'force' | 'normal' | 'dry-run');\n }\n}\n","import { Flags } from '@oclif/core';\nimport path from 'node:path';\n\nexport interface TargetFile {\n src: string;\n destName: string;\n}\n\nfunction parseTargetFile(arg: string): TargetFile {\n const match = arg.match(/(?<destName>[^\\/\\\\]+)=(?<src>.*)/);\n if (match) {\n const { src, destName } = match.groups!;\n return { src, destName };\n } else {\n return { src: arg, destName: path.basename(arg) };\n }\n}\n\nexport const targetFile = Flags.custom<TargetFile>({\n summary: 'target files to upload',\n helpValue: 'file_path | package_name=file_path',\n parse: async (arg) => parseTargetFile(arg)\n});\n","import { Command, Flags } from '@oclif/core';\nimport { getConfig } from '../registry_v1/config';\nimport { targetFile } from '../registry_v1/flags';\nimport fs from 'node:fs';\nimport YAML from 'yaml';\nimport { PlRegPackageConfigDataShard } from '../registry_v1/config_schema';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\ntype BasicConfigField = keyof PlRegPackageConfigDataShard &\n ('registry' | 'organization' | 'package' | 'version');\nconst BasicConfigFields: BasicConfigField[] = ['registry', 'organization', 'package', 'version'];\n\nexport default class UploadPackageV1 extends Command {\n static description = 'Uploads V1 package and refreshes the registry';\n\n static flags = {\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry or alias from .pl.reg',\n helpValue: '<address|alias>',\n env: 'PL_REGISTRY'\n }),\n\n organization: Flags.string({\n char: 'o',\n summary: 'target organisation',\n env: 'PL_PACKAGE_ORGANIZATION'\n }),\n\n package: Flags.string({\n char: 'p',\n summary: 'target package',\n env: 'PL_PACKAGE_NAME'\n }),\n\n version: Flags.string({\n char: 'v',\n summary: 'target version',\n env: 'PL_PACKAGE_VERSION'\n }),\n\n meta: Flags.file({\n char: 'm',\n summary: 'json file containing meta information to associate with tha package',\n exists: true\n }),\n\n file: targetFile({\n char: 'f',\n summary: 'package files',\n multiple: true,\n default: []\n }),\n\n refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(UploadPackageV1);\n const configFromFlags: PlRegPackageConfigDataShard = PlRegPackageConfigDataShard.parse({});\n\n for (const field of BasicConfigFields) if (flags[field]) configFromFlags[field] = flags[field];\n\n if (flags.meta) {\n if (flags.meta.endsWith('.json'))\n configFromFlags.meta = JSON.parse(\n await fs.promises.readFile(flags.meta, { encoding: 'utf-8' })\n );\n else if (flags.meta.endsWith('.yaml'))\n configFromFlags.meta = YAML.parse(\n await fs.promises.readFile(flags.meta, { encoding: 'utf-8' })\n );\n }\n\n for (const targetFile of flags.file) {\n configFromFlags.files[targetFile.destName] = targetFile.src;\n }\n\n const conf = await getConfig(configFromFlags);\n\n this.log(YAML.stringify(conf.conf));\n\n const registry = conf.createRegistry(new OclifLoggerAdapter(this));\n const name = conf.fullPackageName;\n\n const builder = registry.constructNewPackage(name);\n\n for (const [dst, src] of Object.entries(conf.conf.files)) {\n this.log(`Uploading ${src} -> ${dst} ...`);\n const content = await fs.promises.readFile(src);\n await builder.addFile(dst, content);\n }\n\n this.log(`Uploading meta information...`);\n await builder.writeMeta(conf.conf.meta);\n await builder.finish();\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","// DO NOT EDIT. This file was generated by oclif-index utility.\n\nimport Cmd0 from './build-meta';\nimport Cmd1 from './build-model';\nimport Cmd3 from './mark-stable';\nimport Cmd4 from './pack';\nimport Cmd5 from './publish';\nimport Cmd6 from './refresh-registry';\nimport Cmd7 from './upload-package-v1';\n\n// prettier-ignore\nexport const COMMANDS = {\n 'build-meta': Cmd0,\n 'build-model': Cmd1,\n 'mark-stable': Cmd3,\n 'pack': Cmd4,\n 'publish': Cmd5,\n 'refresh-registry': Cmd6,\n 'upload-package-v1': Cmd7\n};\n"],"names":["_BuildMeta","Command","flags","modulePath","path","descriptionRaw","loadPackDescriptionRaw","metaEmbedded","BlockPackMetaEmbedAbsoluteBase64","BlockPackMetaDescription","fs","__publicField","Flags","BuildMeta","getFileContent","error","_BuildModel","model","platforma","config","code","BuildModel","_MarkStable","description","overrideDescriptionVersion","storage","storageByUrl","registry","BlockRegistryV2","OclifLoggerAdapter","StableChannel","MarkStable","_PackBlock","loadPackDescription","buildBlockPackDist","PackBlock","_Publish","manifestPath","manifest","BlockPackManifest","manifestRoot","overrideManifestVersion","file","ManifestFileName","Publish","_RefreshRegistry","RefreshRegistry","parseTargetFile","arg","match","src","destName","targetFile","BasicConfigFields","_UploadPackageV1","configFromFlags","PlRegPackageConfigDataShard","field","YAML","conf","getConfig","name","builder","dst","content","UploadPackageV1","COMMANDS","Cmd0","Cmd1","Cmd3","Cmd4","Cmd5","Cmd6","Cmd7"],"mappings":"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"}
package/dist/cli.mjs CHANGED
@@ -8,8 +8,9 @@ import "zod";
8
8
  import "mime-types";
9
9
  import "tar";
10
10
  import "@milaboratories/resolve-helper";
11
- import { l as L, B as T, a as Y, s as V, b as x, c as j, d as D, M, P as q, g as B } from "./config-Bg6-2Pd-.mjs";
11
+ import { l as L, B as T, a as Y, s as V, b as x, c as j, d as D, M, P as q, g as B } from "./config-DwOM2V6u.mjs";
12
12
  import { StableChannel as J, overrideDescriptionVersion as H, BlockPackManifest as _, overrideManifestVersion as $ } from "@milaboratories/pl-model-middle-layer";
13
+ import "@milaboratories/pl-model-common";
13
14
  import "@milaboratories/ts-helpers";
14
15
  import "canonicalize";
15
16
  import "lru-cache";
@@ -296,7 +297,7 @@ s(v, "description", "Uploads V1 package and refreshes the registry"), s(v, "flag
296
297
  })
297
298
  });
298
299
  let S = v;
299
- const pe = {
300
+ const he = {
300
301
  "build-meta": b,
301
302
  "build-model": P,
302
303
  "mark-stable": E,
@@ -306,6 +307,6 @@ const pe = {
306
307
  "upload-package-v1": S
307
308
  };
308
309
  export {
309
- pe as COMMANDS
310
+ he as COMMANDS
310
311
  };
311
312
  //# sourceMappingURL=cli.mjs.map
package/dist/cli.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.mjs","sources":["../src/cmd/build-meta.ts","../src/cmd/build-model.ts","../src/cmd/mark-stable.ts","../src/cmd/pack.ts","../src/cmd/publish.ts","../src/cmd/refresh-registry.ts","../src/registry_v1/flags.ts","../src/cmd/upload-package-v1.ts","../src/cmd/index.ts"],"sourcesContent":["import { Command, Flags } from '@oclif/core';\nimport path from 'path';\nimport fs from 'fs';\nimport { loadPackDescriptionRaw } from '../v2';\nimport { BlockPackMetaDescription, BlockPackMetaEmbedAbsoluteBase64 } from '../v2/model/block_meta';\n\nexport default class BuildMeta extends Command {\n static override description =\n 'Extracts meta information from blocks package.json and outputs meta.json with embedded binary ' +\n 'and textual information linked from the meta section.';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n destination: Flags.string({\n char: 'o',\n summary: 'output meta.json file',\n helpValue: '<path>',\n required: true\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(BuildMeta);\n const modulePath = path.resolve(flags.modulePath);\n const descriptionRaw = await loadPackDescriptionRaw(modulePath);\n const metaEmbedded = await BlockPackMetaEmbedAbsoluteBase64.parseAsync(\n BlockPackMetaDescription(modulePath).parse(descriptionRaw.meta)\n );\n\n await fs.promises.writeFile(path.resolve(flags.destination), JSON.stringify(metaEmbedded));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport fs from 'fs';\nimport path from 'path';\n\nasync function getFileContent(path: string) {\n try {\n return await fs.promises.readFile(path, 'utf8');\n } catch (error: any) {\n if (error.code === 'ENOENT') {\n return undefined;\n }\n throw error;\n }\n}\n\nexport default class BuildModel extends Command {\n static override description =\n 'Extracts and outputs block model JSON from pre-built block model module';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n sourceBundle: Flags.string({\n char: 'b',\n summary: 'bundled model code to embed into the model for callback-based rendering to work',\n helpValue: '<path>',\n default: './dist/bundle.js'\n }),\n\n destination: Flags.string({\n char: 'o',\n summary: 'output model file',\n helpValue: '<path>',\n default: './dist/model.json'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(BuildModel);\n const modulePath = path.resolve(flags.modulePath); // i.e. folder with package.json file\n let { model, platforma } = require(modulePath);\n\n if (!model) model = platforma;\n if (!model) throw new Error('\"model\" export not found');\n\n const { config } = model;\n\n if (!config)\n throw new Error(\n 'Malformed \"model\" object, check it is created with \"BlockModel\" ' +\n 'and \".done()\" is executed as the call in the chain.'\n );\n\n if (\n !('canRun' in config || 'inputsValid' in config) ||\n !('outputs' in config) ||\n !('sections' in config)\n )\n throw new Error('\"config\" has unexpected structure');\n\n const code = await getFileContent(flags.sourceBundle);\n if (code !== undefined) {\n config.code = {\n type: 'plain',\n content: code\n };\n }\n\n await fs.promises.writeFile(path.resolve(flags.destination), JSON.stringify(config));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport { BlockRegistryV2, loadPackDescriptionRaw } from '../v2';\nimport path from 'path';\nimport {\n overrideDescriptionVersion,\n overrideManifestVersion,\n StableChannel\n} from '@milaboratories/pl-model-middle-layer';\nimport { storageByUrl } from '../io';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class MarkStable extends Command {\n static description = 'Mark target block stable';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n channel: Flags.string({\n char: 'c',\n hidden: true,\n summary: 'custom channel',\n helpValue: '<channel name>',\n default: StableChannel\n }),\n\n 'version-override': Flags.file({\n char: 'v',\n summary: 'override package version'\n }),\n\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry',\n helpValue: '<address>',\n env: 'PL_REGISTRY',\n required: true\n }),\n\n refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n }),\n\n unmark: Flags.boolean({\n summary:\n 'reverses meaning of this command, flag can be used to remove \"stable\" flag from the package',\n default: false\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(MarkStable);\n let description = await loadPackDescriptionRaw(path.resolve(flags.modulePath));\n if (flags['version-override'])\n description = overrideDescriptionVersion(description, flags['version-override']);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n\n if (flags.unmark) await registry.removePackageFromChannel(description.id, flags.channel);\n else await registry.addPackageToChannel(description.id, flags.channel);\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport { loadPackDescription } from '../v2/source_package';\nimport path from 'path';\nimport { buildBlockPackDist } from '../v2/build_dist';\n\nexport default class PackBlock extends Command {\n static description =\n 'Builds block pack and outputs a block pack manifest consolidating all ' +\n 'references assets into a single folder';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n destinationPath: Flags.string({\n char: 'o',\n summary: 'output folder',\n helpValue: '<path>',\n default: './block-pack'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(PackBlock);\n const description = await loadPackDescription(path.resolve(flags.modulePath));\n await buildBlockPackDist(description, path.resolve(flags.destinationPath));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport fs from 'node:fs';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\nimport { ManifestFileName } from '../v2/registry/schema_public';\nimport { BlockPackManifest, overrideManifestVersion } from '@milaboratories/pl-model-middle-layer';\nimport { storageByUrl } from '../io/storage';\nimport { BlockRegistryV2 } from '../v2/registry/registry';\nimport path from 'node:path';\nimport * as R from 'remeda';\n\nexport default class Publish extends Command {\n static description =\n 'Publishes the block package and refreshes the registry (for v2 block-pack schema)';\n\n static flags = {\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry',\n helpValue: '<address>',\n env: 'PL_REGISTRY',\n required: true\n }),\n\n manifest: Flags.file({\n char: 'm',\n summary: 'manifest file path',\n exists: true,\n default: `./block-pack/${ManifestFileName}`\n }),\n\n 'version-override': Flags.file({\n char: 'v',\n summary: 'override package version'\n }),\n\n refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(Publish);\n\n const manifestPath = path.resolve(flags.manifest);\n let manifest = BlockPackManifest.parse(\n JSON.parse(await fs.promises.readFile(manifestPath, { encoding: 'utf-8' }))\n );\n const manifestRoot = path.dirname(manifestPath);\n\n this.log(`Manifest root = ${manifestRoot}`);\n\n if (flags['version-override'])\n manifest = overrideManifestVersion(manifest, flags['version-override']);\n\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n\n await registry.publishPackage(manifest, async (file) =>\n Buffer.from(await fs.promises.readFile(path.resolve(manifestRoot, file)))\n );\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport { BlockRegistryV2, loadPackDescriptionRaw } from '../v2';\nimport path from 'path';\nimport {\n overrideDescriptionVersion,\n overrideManifestVersion,\n StableChannel\n} from '@milaboratories/pl-model-middle-layer';\nimport { storageByUrl } from '../io';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class RefreshRegistry extends Command {\n static description = 'Refresh overview files based on published but not proecessed artefacts';\n\n static flags = {\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry',\n helpValue: '<address>',\n env: 'PL_REGISTRY',\n required: true\n }),\n\n mode: Flags.string({\n char: 'm',\n summary: 'refresh mode (allowed valiues: \"force\", \"normal\", \"dry-run\")',\n helpValue: '<mode>',\n options: ['force', 'normal', 'dry-run'],\n env: 'PL_REGISTRY_REFRESH_DRY_RUN',\n default: 'normal'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(RefreshRegistry);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n await registry.updateIfNeeded(flags.mode as 'force' | 'normal' | 'dry-run');\n }\n}\n","import { Flags } from '@oclif/core';\nimport path from 'node:path';\n\nexport interface TargetFile {\n src: string;\n destName: string;\n}\n\nfunction parseTargetFile(arg: string): TargetFile {\n const match = arg.match(/(?<destName>[^\\/\\\\]+)=(?<src>.*)/);\n if (match) {\n const { src, destName } = match.groups!;\n return { src, destName };\n } else {\n return { src: arg, destName: path.basename(arg) };\n }\n}\n\nexport const targetFile = Flags.custom<TargetFile>({\n summary: 'target files to upload',\n helpValue: 'file_path | package_name=file_path',\n parse: async (arg) => parseTargetFile(arg)\n});\n","import { Command, Flags } from '@oclif/core';\nimport { getConfig } from '../registry_v1/config';\nimport { targetFile } from '../registry_v1/flags';\nimport fs from 'node:fs';\nimport YAML from 'yaml';\nimport { PlRegPackageConfigDataShard } from '../registry_v1/config_schema';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\ntype BasicConfigField = keyof PlRegPackageConfigDataShard &\n ('registry' | 'organization' | 'package' | 'version');\nconst BasicConfigFields: BasicConfigField[] = ['registry', 'organization', 'package', 'version'];\n\nexport default class UploadPackageV1 extends Command {\n static description = 'Uploads V1 package and refreshes the registry';\n\n static flags = {\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry or alias from .pl.reg',\n helpValue: '<address|alias>',\n env: 'PL_REGISTRY'\n }),\n\n organization: Flags.string({\n char: 'o',\n summary: 'target organisation',\n env: 'PL_PACKAGE_ORGANIZATION'\n }),\n\n package: Flags.string({\n char: 'p',\n summary: 'target package',\n env: 'PL_PACKAGE_NAME'\n }),\n\n version: Flags.string({\n char: 'v',\n summary: 'target version',\n env: 'PL_PACKAGE_VERSION'\n }),\n\n meta: Flags.file({\n char: 'm',\n summary: 'json file containing meta information to associate with tha package',\n exists: true\n }),\n\n file: targetFile({\n char: 'f',\n summary: 'package files',\n multiple: true,\n default: []\n }),\n\n refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(UploadPackageV1);\n const configFromFlags: PlRegPackageConfigDataShard = PlRegPackageConfigDataShard.parse({});\n\n for (const field of BasicConfigFields) if (flags[field]) configFromFlags[field] = flags[field];\n\n if (flags.meta) {\n if (flags.meta.endsWith('.json'))\n configFromFlags.meta = JSON.parse(\n await fs.promises.readFile(flags.meta, { encoding: 'utf-8' })\n );\n else if (flags.meta.endsWith('.yaml'))\n configFromFlags.meta = YAML.parse(\n await fs.promises.readFile(flags.meta, { encoding: 'utf-8' })\n );\n }\n\n for (const targetFile of flags.file) {\n configFromFlags.files[targetFile.destName] = targetFile.src;\n }\n\n const conf = await getConfig(configFromFlags);\n\n this.log(YAML.stringify(conf.conf));\n\n const registry = conf.createRegistry(new OclifLoggerAdapter(this));\n const name = conf.fullPackageName;\n\n const builder = registry.constructNewPackage(name);\n\n for (const [dst, src] of Object.entries(conf.conf.files)) {\n this.log(`Uploading ${src} -> ${dst} ...`);\n const content = await fs.promises.readFile(src);\n await builder.addFile(dst, content);\n }\n\n this.log(`Uploading meta information...`);\n await builder.writeMeta(conf.conf.meta);\n await builder.finish();\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","// DO NOT EDIT. This file was generated by oclif-index utility.\n\nimport Cmd0 from './build-meta';\nimport Cmd1 from './build-model';\nimport Cmd3 from './mark-stable';\nimport Cmd4 from './pack';\nimport Cmd5 from './publish';\nimport Cmd6 from './refresh-registry';\nimport Cmd7 from './upload-package-v1';\n\n// prettier-ignore\nexport const COMMANDS = {\n 'build-meta': Cmd0,\n 'build-model': Cmd1,\n 'mark-stable': Cmd3,\n 'pack': Cmd4,\n 'publish': Cmd5,\n 'refresh-registry': Cmd6,\n 'upload-package-v1': Cmd7\n};\n"],"names":["_BuildMeta","Command","flags","modulePath","path","descriptionRaw","loadPackDescriptionRaw","metaEmbedded","BlockPackMetaEmbedAbsoluteBase64","BlockPackMetaDescription","fs","__publicField","Flags","BuildMeta","getFileContent","error","_BuildModel","model","platforma","config","code","BuildModel","_MarkStable","description","overrideDescriptionVersion","storage","storageByUrl","registry","BlockRegistryV2","OclifLoggerAdapter","StableChannel","MarkStable","_PackBlock","loadPackDescription","buildBlockPackDist","PackBlock","_Publish","manifestPath","manifest","BlockPackManifest","manifestRoot","overrideManifestVersion","file","ManifestFileName","Publish","_RefreshRegistry","RefreshRegistry","parseTargetFile","arg","match","src","destName","targetFile","BasicConfigFields","_UploadPackageV1","configFromFlags","PlRegPackageConfigDataShard","field","YAML","conf","getConfig","name","builder","dst","content","UploadPackageV1","COMMANDS","Cmd0","Cmd1","Cmd3","Cmd4","Cmd5","Cmd6","Cmd7"],"mappings":"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"}
1
+ {"version":3,"file":"cli.mjs","sources":["../src/cmd/build-meta.ts","../src/cmd/build-model.ts","../src/cmd/mark-stable.ts","../src/cmd/pack.ts","../src/cmd/publish.ts","../src/cmd/refresh-registry.ts","../src/registry_v1/flags.ts","../src/cmd/upload-package-v1.ts","../src/cmd/index.ts"],"sourcesContent":["import { Command, Flags } from '@oclif/core';\nimport path from 'path';\nimport fs from 'fs';\nimport { loadPackDescriptionRaw } from '../v2';\nimport { BlockPackMetaDescription, BlockPackMetaEmbedAbsoluteBase64 } from '../v2/model/block_meta';\n\nexport default class BuildMeta extends Command {\n static override description =\n 'Extracts meta information from blocks package.json and outputs meta.json with embedded binary ' +\n 'and textual information linked from the meta section.';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n destination: Flags.string({\n char: 'o',\n summary: 'output meta.json file',\n helpValue: '<path>',\n required: true\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(BuildMeta);\n const modulePath = path.resolve(flags.modulePath);\n const descriptionRaw = await loadPackDescriptionRaw(modulePath);\n const metaEmbedded = await BlockPackMetaEmbedAbsoluteBase64.parseAsync(\n BlockPackMetaDescription(modulePath).parse(descriptionRaw.meta)\n );\n\n await fs.promises.writeFile(path.resolve(flags.destination), JSON.stringify(metaEmbedded));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport fs from 'fs';\nimport path from 'path';\n\nasync function getFileContent(path: string) {\n try {\n return await fs.promises.readFile(path, 'utf8');\n } catch (error: any) {\n if (error.code === 'ENOENT') {\n return undefined;\n }\n throw error;\n }\n}\n\nexport default class BuildModel extends Command {\n static override description =\n 'Extracts and outputs block model JSON from pre-built block model module';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n sourceBundle: Flags.string({\n char: 'b',\n summary: 'bundled model code to embed into the model for callback-based rendering to work',\n helpValue: '<path>',\n default: './dist/bundle.js'\n }),\n\n destination: Flags.string({\n char: 'o',\n summary: 'output model file',\n helpValue: '<path>',\n default: './dist/model.json'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(BuildModel);\n const modulePath = path.resolve(flags.modulePath); // i.e. folder with package.json file\n let { model, platforma } = require(modulePath);\n\n if (!model) model = platforma;\n if (!model) throw new Error('\"model\" export not found');\n\n const { config } = model;\n\n if (!config)\n throw new Error(\n 'Malformed \"model\" object, check it is created with \"BlockModel\" ' +\n 'and \".done()\" is executed as the call in the chain.'\n );\n\n if (\n !('canRun' in config || 'inputsValid' in config) ||\n !('outputs' in config) ||\n !('sections' in config)\n )\n throw new Error('\"config\" has unexpected structure');\n\n const code = await getFileContent(flags.sourceBundle);\n if (code !== undefined) {\n config.code = {\n type: 'plain',\n content: code\n };\n }\n\n await fs.promises.writeFile(path.resolve(flags.destination), JSON.stringify(config));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport { BlockRegistryV2, loadPackDescriptionRaw } from '../v2';\nimport path from 'path';\nimport {\n overrideDescriptionVersion,\n overrideManifestVersion,\n StableChannel\n} from '@milaboratories/pl-model-middle-layer';\nimport { storageByUrl } from '../io';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class MarkStable extends Command {\n static description = 'Mark target block stable';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n channel: Flags.string({\n char: 'c',\n hidden: true,\n summary: 'custom channel',\n helpValue: '<channel name>',\n default: StableChannel\n }),\n\n 'version-override': Flags.file({\n char: 'v',\n summary: 'override package version'\n }),\n\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry',\n helpValue: '<address>',\n env: 'PL_REGISTRY',\n required: true\n }),\n\n refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n }),\n\n unmark: Flags.boolean({\n summary:\n 'reverses meaning of this command, flag can be used to remove \"stable\" flag from the package',\n default: false\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(MarkStable);\n let description = await loadPackDescriptionRaw(path.resolve(flags.modulePath));\n if (flags['version-override'])\n description = overrideDescriptionVersion(description, flags['version-override']);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n\n if (flags.unmark) await registry.removePackageFromChannel(description.id, flags.channel);\n else await registry.addPackageToChannel(description.id, flags.channel);\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport { loadPackDescription } from '../v2/source_package';\nimport path from 'path';\nimport { buildBlockPackDist } from '../v2/build_dist';\n\nexport default class PackBlock extends Command {\n static description =\n 'Builds block pack and outputs a block pack manifest consolidating all ' +\n 'references assets into a single folder';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n destinationPath: Flags.string({\n char: 'o',\n summary: 'output folder',\n helpValue: '<path>',\n default: './block-pack'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(PackBlock);\n const description = await loadPackDescription(path.resolve(flags.modulePath));\n await buildBlockPackDist(description, path.resolve(flags.destinationPath));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport fs from 'node:fs';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\nimport { ManifestFileName } from '../v2/registry/schema_public';\nimport { BlockPackManifest, overrideManifestVersion } from '@milaboratories/pl-model-middle-layer';\nimport { storageByUrl } from '../io/storage';\nimport { BlockRegistryV2 } from '../v2/registry/registry';\nimport path from 'node:path';\nimport * as R from 'remeda';\n\nexport default class Publish extends Command {\n static description =\n 'Publishes the block package and refreshes the registry (for v2 block-pack schema)';\n\n static flags = {\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry',\n helpValue: '<address>',\n env: 'PL_REGISTRY',\n required: true\n }),\n\n manifest: Flags.file({\n char: 'm',\n summary: 'manifest file path',\n exists: true,\n default: `./block-pack/${ManifestFileName}`\n }),\n\n 'version-override': Flags.file({\n char: 'v',\n summary: 'override package version'\n }),\n\n refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(Publish);\n\n const manifestPath = path.resolve(flags.manifest);\n let manifest = BlockPackManifest.parse(\n JSON.parse(await fs.promises.readFile(manifestPath, { encoding: 'utf-8' }))\n );\n const manifestRoot = path.dirname(manifestPath);\n\n this.log(`Manifest root = ${manifestRoot}`);\n\n if (flags['version-override'])\n manifest = overrideManifestVersion(manifest, flags['version-override']);\n\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n\n await registry.publishPackage(manifest, async (file) =>\n Buffer.from(await fs.promises.readFile(path.resolve(manifestRoot, file)))\n );\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport { BlockRegistryV2, loadPackDescriptionRaw } from '../v2';\nimport path from 'path';\nimport {\n overrideDescriptionVersion,\n overrideManifestVersion,\n StableChannel\n} from '@milaboratories/pl-model-middle-layer';\nimport { storageByUrl } from '../io';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class RefreshRegistry extends Command {\n static description = 'Refresh overview files based on published but not proecessed artefacts';\n\n static flags = {\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry',\n helpValue: '<address>',\n env: 'PL_REGISTRY',\n required: true\n }),\n\n mode: Flags.string({\n char: 'm',\n summary: 'refresh mode (allowed valiues: \"force\", \"normal\", \"dry-run\")',\n helpValue: '<mode>',\n options: ['force', 'normal', 'dry-run'],\n env: 'PL_REGISTRY_REFRESH_DRY_RUN',\n default: 'normal'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(RefreshRegistry);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n await registry.updateIfNeeded(flags.mode as 'force' | 'normal' | 'dry-run');\n }\n}\n","import { Flags } from '@oclif/core';\nimport path from 'node:path';\n\nexport interface TargetFile {\n src: string;\n destName: string;\n}\n\nfunction parseTargetFile(arg: string): TargetFile {\n const match = arg.match(/(?<destName>[^\\/\\\\]+)=(?<src>.*)/);\n if (match) {\n const { src, destName } = match.groups!;\n return { src, destName };\n } else {\n return { src: arg, destName: path.basename(arg) };\n }\n}\n\nexport const targetFile = Flags.custom<TargetFile>({\n summary: 'target files to upload',\n helpValue: 'file_path | package_name=file_path',\n parse: async (arg) => parseTargetFile(arg)\n});\n","import { Command, Flags } from '@oclif/core';\nimport { getConfig } from '../registry_v1/config';\nimport { targetFile } from '../registry_v1/flags';\nimport fs from 'node:fs';\nimport YAML from 'yaml';\nimport { PlRegPackageConfigDataShard } from '../registry_v1/config_schema';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\ntype BasicConfigField = keyof PlRegPackageConfigDataShard &\n ('registry' | 'organization' | 'package' | 'version');\nconst BasicConfigFields: BasicConfigField[] = ['registry', 'organization', 'package', 'version'];\n\nexport default class UploadPackageV1 extends Command {\n static description = 'Uploads V1 package and refreshes the registry';\n\n static flags = {\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry or alias from .pl.reg',\n helpValue: '<address|alias>',\n env: 'PL_REGISTRY'\n }),\n\n organization: Flags.string({\n char: 'o',\n summary: 'target organisation',\n env: 'PL_PACKAGE_ORGANIZATION'\n }),\n\n package: Flags.string({\n char: 'p',\n summary: 'target package',\n env: 'PL_PACKAGE_NAME'\n }),\n\n version: Flags.string({\n char: 'v',\n summary: 'target version',\n env: 'PL_PACKAGE_VERSION'\n }),\n\n meta: Flags.file({\n char: 'm',\n summary: 'json file containing meta information to associate with tha package',\n exists: true\n }),\n\n file: targetFile({\n char: 'f',\n summary: 'package files',\n multiple: true,\n default: []\n }),\n\n refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(UploadPackageV1);\n const configFromFlags: PlRegPackageConfigDataShard = PlRegPackageConfigDataShard.parse({});\n\n for (const field of BasicConfigFields) if (flags[field]) configFromFlags[field] = flags[field];\n\n if (flags.meta) {\n if (flags.meta.endsWith('.json'))\n configFromFlags.meta = JSON.parse(\n await fs.promises.readFile(flags.meta, { encoding: 'utf-8' })\n );\n else if (flags.meta.endsWith('.yaml'))\n configFromFlags.meta = YAML.parse(\n await fs.promises.readFile(flags.meta, { encoding: 'utf-8' })\n );\n }\n\n for (const targetFile of flags.file) {\n configFromFlags.files[targetFile.destName] = targetFile.src;\n }\n\n const conf = await getConfig(configFromFlags);\n\n this.log(YAML.stringify(conf.conf));\n\n const registry = conf.createRegistry(new OclifLoggerAdapter(this));\n const name = conf.fullPackageName;\n\n const builder = registry.constructNewPackage(name);\n\n for (const [dst, src] of Object.entries(conf.conf.files)) {\n this.log(`Uploading ${src} -> ${dst} ...`);\n const content = await fs.promises.readFile(src);\n await builder.addFile(dst, content);\n }\n\n this.log(`Uploading meta information...`);\n await builder.writeMeta(conf.conf.meta);\n await builder.finish();\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","// DO NOT EDIT. This file was generated by oclif-index utility.\n\nimport Cmd0 from './build-meta';\nimport Cmd1 from './build-model';\nimport Cmd3 from './mark-stable';\nimport Cmd4 from './pack';\nimport Cmd5 from './publish';\nimport Cmd6 from './refresh-registry';\nimport Cmd7 from './upload-package-v1';\n\n// prettier-ignore\nexport const COMMANDS = {\n 'build-meta': Cmd0,\n 'build-model': Cmd1,\n 'mark-stable': Cmd3,\n 'pack': Cmd4,\n 'publish': Cmd5,\n 'refresh-registry': Cmd6,\n 'upload-package-v1': Cmd7\n};\n"],"names":["_BuildMeta","Command","flags","modulePath","path","descriptionRaw","loadPackDescriptionRaw","metaEmbedded","BlockPackMetaEmbedAbsoluteBase64","BlockPackMetaDescription","fs","__publicField","Flags","BuildMeta","getFileContent","error","_BuildModel","model","platforma","config","code","BuildModel","_MarkStable","description","overrideDescriptionVersion","storage","storageByUrl","registry","BlockRegistryV2","OclifLoggerAdapter","StableChannel","MarkStable","_PackBlock","loadPackDescription","buildBlockPackDist","PackBlock","_Publish","manifestPath","manifest","BlockPackManifest","manifestRoot","overrideManifestVersion","file","ManifestFileName","Publish","_RefreshRegistry","RefreshRegistry","parseTargetFile","arg","match","src","destName","targetFile","BasicConfigFields","_UploadPackageV1","configFromFlags","PlRegPackageConfigDataShard","field","YAML","conf","getConfig","name","builder","dst","content","UploadPackageV1","COMMANDS","Cmd0","Cmd1","Cmd3","Cmd4","Cmd5","Cmd6","Cmd7"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";var wn=Object.defineProperty;var kn=(t,e,r)=>e in t?wn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var te=(t,e,r)=>kn(t,typeof e!="symbol"?e+"":e,r);const g=require("@milaboratories/pl-model-middle-layer"),L=require("zod"),x=require("node:path"),z=require("node:fs/promises"),Pn=require("mime-types"),yn=require("tar"),qr=require("@milaboratories/resolve-helper"),Ct=require("@milaboratories/ts-helpers"),Sn=require("@milaboratories/pl-model-common"),Dr=require("node:crypto"),Cn=require("yaml"),On=require("node:os"),U=require("node:path/posix"),xr=require("@aws-sdk/client-s3"),In=require("node:fs");function ue(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const r in t)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,n.get?n:{enumerable:!0,get:()=>t[r]})}}return e.default=t,Object.freeze(e)}const fe=ue(Pn),Nn=ue(yn),Mt=ue(On),Y=ue(In);function _r(t){return L.z.string().transform((e,r)=>{const n=qr.tryResolve(t,e);return n===void 0?(r.addIssue({code:L.z.ZodIssueCode.custom,message:`Can't resolve ${e} against ${t}`}),L.z.NEVER):{type:"absolute-file",file:n}})}function Gr(t,...e){return L.z.string().transform((r,n)=>{const a=r.endsWith("/")?r:`${r}/`;for(const u of e){const c=qr.tryResolve(t,a+u);if(c!==void 0){if(!c.endsWith(u))throw new Error(`Unexpected resolve result ${c} with index file ${u}`);return{type:"absolute-folder",folder:c.slice(0,c.length-u.length)}}}return n.addIssue({code:L.z.ZodIssueCode.custom,message:`Can't resolve ${r} folder against ${t}, no index file found (${e.join(", ")})`}),L.z.NEVER})}function vt(t){return e=>e.type==="relative"?{type:"absolute-file",file:x.resolve(t,e.path)}:e}function Ot(){return async t=>t.type==="absolute-file"?await z.readFile(t.file,{encoding:"utf-8"}):t.content}function jr(){return async t=>{if(t.type==="absolute-file"){const e=fe.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 z.readFile(t.file,{encoding:"base64"})}}else return t}}function Mr(){return async t=>{if(t.type==="absolute-file"){const e=fe.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 z.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 n=x.basename(r.file),a=x.resolve(t,n);return e==null||e.push(n),await z.cp(r.file,a),{type:"relative",path:n}}else return r}}function zr(t,e,r){if(!e.endsWith(".tgz"))throw new Error(`Unexpected tgz file name: ${e}`);return async n=>{const a=x.resolve(t,e);return await Nn.create({gzip:!0,file:a,cwd:n.folder},["."]),r==null||r.push(e),{type:"relative",path:e}}}function he(t){return async e=>e.type==="explicit-string"?e:{type:"explicit-string",content:(await t(e.path)).toString("utf8")}}function Ur(t){return async e=>e.type==="explicit-string"?e.content:(await t(e.path)).toString("utf8")}function Ln(t){return async e=>{if(e.type==="explicit-base64")return e;const r=fe.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 Q(t){return async e=>{if(e.type==="explicit-base64")return{type:"explicit-bytes",mimeType:e.mimeType,content:Buffer.from(e.content,"base64")};const r=fe.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 Vr(t){return g.BlockPackMeta(g.DescriptionContentText.transform(vt(t)),g.DescriptionContentBinary.transform(vt(t)))}function Xr(t,e){return g.BlockPackMeta(g.ContentAbsoluteTextLocal.transform(ae(t,e)),g.ContentAbsoluteBinaryLocal.transform(ae(t,e)))}const Tn=g.BlockPackMeta(g.ContentAbsoluteTextLocal.transform(Ot()),g.ContentAbsoluteBinaryLocal.transform(jr())).pipe(g.BlockPackMetaEmbeddedBase64),An=g.BlockPackMeta(g.ContentAbsoluteTextLocal.transform(Ot()),g.ContentAbsoluteBinaryLocal.transform(Mr())).pipe(g.BlockPackMetaEmbeddedBytes);function Fn(t){return g.BlockPackMeta(g.ContentRelativeText.transform(Ur(t)),g.ContentRelativeBinary.transform(Q(t))).pipe(g.BlockPackMetaEmbeddedBytes)}function Jr(t){return g.BlockComponents(_r(t),Gr(t,"index.html"))}function Wr(t,e){return g.BlockComponents(g.ContentAbsoluteBinaryLocal.transform(ae(t,e)),g.ContentAbsoluteFolder.transform(zr(t,"ui.tgz",e))).pipe(g.BlockComponentsManifest)}function Bn(t){return g.BlockComponents(g.ContentRelative.transform(g.mapRemoteToAbsolute(t)),g.ContentRelative.transform(g.mapRemoteToAbsolute(t)))}function It(t){return g.CreateBlockPackDescriptionSchema(Jr(t),Vr(t)).transform(async(e,r)=>{const a=Sn.extractConfigGeneric(JSON.parse(await z.readFile(e.components.model.file,"utf-8"))).featureFlags;return{...e,featureFlags:a}})}function Hr(t,e){return g.CreateBlockPackDescriptionSchema(Wr(t,e),Xr(t,e)).pipe(g.BlockPackDescriptionManifest)}function $t(t){const e=g.addPrefixToRelative(t);return g.BlockPackDescriptionManifest.pipe(g.CreateBlockPackDescriptionSchema(g.BlockComponents(g.ContentRelative.transform(e),g.ContentRelative.transform(e)),g.BlockPackMeta(g.ContentRelativeText.transform(e),g.ContentRelativeBinary.transform(e)))).pipe(g.BlockPackDescriptionManifest)}async function Nt(t,e){try{return e(await z.readFile(t))}catch(r){if(r.code=="ENOENT")return;throw new Error("",{cause:r})}}async function oe(t){return Buffer.from(await crypto.subtle.digest("sha-256",t)).toString("hex").toUpperCase()}async function bn(t,e){await z.mkdir(e,{recursive:!0});const r=[],n=await Hr(e,r).parseAsync(t),a=await Promise.all(r.map(async c=>{const h=await z.readFile(x.resolve(e,c)),o=await oe(h);return{name:c,size:h.length,sha256:o}})),u=g.BlockPackManifest.parse({schema:"v2",description:{...n},files:a,timestamp:Date.now()});return await z.writeFile(x.resolve(e,g.BlockPackManifestFile),JSON.stringify(u)),u}const ce="block",qn=/(?:@[a-zA-Z0-9-.]+\/)?(?<organization>[a-zA-Z0-9-]+)\.(?<name>[a-zA-Z0-9-]+)/;function Lt(t){const e=t.match(qn);if(!e)throw new Error(`Malformed package name (${t}), can't infer organization and block pack name.`);const{name:r,organization:n}=e.groups;return{name:r,organization:n}}async function Dn(t,e){const r=x.resolve(t,"package.json");try{const n=await Nt(r,h=>JSON.parse(h.toString("utf-8")));if(n===void 0)return;const a=n[ce];if(a===void 0)return;const u={...g.BlockPackDescriptionFromPackageJsonRaw.parse(a),id:{...Lt(Ct.notEmpty(n.name,`"name" not found in ${r}`)),version:g.SemVer.parse(n.version)}},c=await It(t).safeParseAsync(u);if(c.success)return c.data;e==null||e.warn(c.error);return}catch(n){e==null||e.warn(n);return}}async function Yr(t){const e=x.resolve(t,"package.json"),r=JSON.parse(await z.readFile(e,{encoding:"utf-8"})),n=r[ce];if(n===void 0)throw new Error(`Block description (field ${ce}) not found in ${e}.`);return{...g.BlockPackDescriptionFromPackageJsonRaw.parse(n),id:{...Lt(Ct.notEmpty(r.name,`"name" not found in ${e}`)),version:g.SemVer.parse(r.version)},featureFlags:{}}}async function xn(t){const e=await Yr(t);return await It(t).parseAsync(e)}function _n(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var re={exports:{}},Se,zt;function pe(){if(zt)return Se;zt=1;const t="2.0.0",e=256,r=Number.MAX_SAFE_INTEGER||9007199254740991,n=16,a=e-6;return Se={MAX_LENGTH:e,MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:a,MAX_SAFE_INTEGER:r,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:t,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},Se}var Ce,Ut;function de(){return Ut||(Ut=1,Ce=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{}),Ce}var Vt;function ee(){return Vt||(Vt=1,function(t,e){const{MAX_SAFE_COMPONENT_LENGTH:r,MAX_SAFE_BUILD_LENGTH:n,MAX_LENGTH:a}=pe(),u=de();e=t.exports={};const c=e.re=[],h=e.safeRe=[],o=e.src=[],i=e.safeSrc=[],s=e.t={};let l=0;const f="[a-zA-Z0-9-]",d=[["\\s",1],["\\d",a],[f,n]],k=v=>{for(const[$,I]of d)v=v.split(`${$}*`).join(`${$}{0,${I}}`).split(`${$}+`).join(`${$}{1,${I}}`);return v},p=(v,$,I)=>{const S=k($),B=l++;u(v,B,$),s[v]=B,o[B]=$,i[B]=S,c[B]=new RegExp($,I?"g":void 0),h[B]=new RegExp(S,I?"g":void 0)};p("NUMERICIDENTIFIER","0|[1-9]\\d*"),p("NUMERICIDENTIFIERLOOSE","\\d+"),p("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${f}*`),p("MAINVERSION",`(${o[s.NUMERICIDENTIFIER]})\\.(${o[s.NUMERICIDENTIFIER]})\\.(${o[s.NUMERICIDENTIFIER]})`),p("MAINVERSIONLOOSE",`(${o[s.NUMERICIDENTIFIERLOOSE]})\\.(${o[s.NUMERICIDENTIFIERLOOSE]})\\.(${o[s.NUMERICIDENTIFIERLOOSE]})`),p("PRERELEASEIDENTIFIER",`(?:${o[s.NONNUMERICIDENTIFIER]}|${o[s.NUMERICIDENTIFIER]})`),p("PRERELEASEIDENTIFIERLOOSE",`(?:${o[s.NONNUMERICIDENTIFIER]}|${o[s.NUMERICIDENTIFIERLOOSE]})`),p("PRERELEASE",`(?:-(${o[s.PRERELEASEIDENTIFIER]}(?:\\.${o[s.PRERELEASEIDENTIFIER]})*))`),p("PRERELEASELOOSE",`(?:-?(${o[s.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${o[s.PRERELEASEIDENTIFIERLOOSE]})*))`),p("BUILDIDENTIFIER",`${f}+`),p("BUILD",`(?:\\+(${o[s.BUILDIDENTIFIER]}(?:\\.${o[s.BUILDIDENTIFIER]})*))`),p("FULLPLAIN",`v?${o[s.MAINVERSION]}${o[s.PRERELEASE]}?${o[s.BUILD]}?`),p("FULL",`^${o[s.FULLPLAIN]}$`),p("LOOSEPLAIN",`[v=\\s]*${o[s.MAINVERSIONLOOSE]}${o[s.PRERELEASELOOSE]}?${o[s.BUILD]}?`),p("LOOSE",`^${o[s.LOOSEPLAIN]}$`),p("GTLT","((?:<|>)?=?)"),p("XRANGEIDENTIFIERLOOSE",`${o[s.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),p("XRANGEIDENTIFIER",`${o[s.NUMERICIDENTIFIER]}|x|X|\\*`),p("XRANGEPLAIN",`[v=\\s]*(${o[s.XRANGEIDENTIFIER]})(?:\\.(${o[s.XRANGEIDENTIFIER]})(?:\\.(${o[s.XRANGEIDENTIFIER]})(?:${o[s.PRERELEASE]})?${o[s.BUILD]}?)?)?`),p("XRANGEPLAINLOOSE",`[v=\\s]*(${o[s.XRANGEIDENTIFIERLOOSE]})(?:\\.(${o[s.XRANGEIDENTIFIERLOOSE]})(?:\\.(${o[s.XRANGEIDENTIFIERLOOSE]})(?:${o[s.PRERELEASELOOSE]})?${o[s.BUILD]}?)?)?`),p("XRANGE",`^${o[s.GTLT]}\\s*${o[s.XRANGEPLAIN]}$`),p("XRANGELOOSE",`^${o[s.GTLT]}\\s*${o[s.XRANGEPLAINLOOSE]}$`),p("COERCEPLAIN",`(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?`),p("COERCE",`${o[s.COERCEPLAIN]}(?:$|[^\\d])`),p("COERCEFULL",o[s.COERCEPLAIN]+`(?:${o[s.PRERELEASE]})?(?:${o[s.BUILD]})?(?:$|[^\\d])`),p("COERCERTL",o[s.COERCE],!0),p("COERCERTLFULL",o[s.COERCEFULL],!0),p("LONETILDE","(?:~>?)"),p("TILDETRIM",`(\\s*)${o[s.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",p("TILDE",`^${o[s.LONETILDE]}${o[s.XRANGEPLAIN]}$`),p("TILDELOOSE",`^${o[s.LONETILDE]}${o[s.XRANGEPLAINLOOSE]}$`),p("LONECARET","(?:\\^)"),p("CARETTRIM",`(\\s*)${o[s.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",p("CARET",`^${o[s.LONECARET]}${o[s.XRANGEPLAIN]}$`),p("CARETLOOSE",`^${o[s.LONECARET]}${o[s.XRANGEPLAINLOOSE]}$`),p("COMPARATORLOOSE",`^${o[s.GTLT]}\\s*(${o[s.LOOSEPLAIN]})$|^$`),p("COMPARATOR",`^${o[s.GTLT]}\\s*(${o[s.FULLPLAIN]})$|^$`),p("COMPARATORTRIM",`(\\s*)${o[s.GTLT]}\\s*(${o[s.LOOSEPLAIN]}|${o[s.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",p("HYPHENRANGE",`^\\s*(${o[s.XRANGEPLAIN]})\\s+-\\s+(${o[s.XRANGEPLAIN]})\\s*$`),p("HYPHENRANGELOOSE",`^\\s*(${o[s.XRANGEPLAINLOOSE]})\\s+-\\s+(${o[s.XRANGEPLAINLOOSE]})\\s*$`),p("STAR","(<|>)?=?\\s*\\*"),p("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),p("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(re,re.exports)),re.exports}var Oe,Xt;function Tt(){if(Xt)return Oe;Xt=1;const t=Object.freeze({loose:!0}),e=Object.freeze({});return Oe=n=>n?typeof n!="object"?t:n:e,Oe}var Ie,Jt;function Kr(){if(Jt)return Ie;Jt=1;const t=/^[0-9]+$/,e=(n,a)=>{const u=t.test(n),c=t.test(a);return u&&c&&(n=+n,a=+a),n===a?0:u&&!c?-1:c&&!u?1:n<a?-1:1};return Ie={compareIdentifiers:e,rcompareIdentifiers:(n,a)=>e(a,n)},Ie}var Ne,Wt;function G(){if(Wt)return Ne;Wt=1;const t=de(),{MAX_LENGTH:e,MAX_SAFE_INTEGER:r}=pe(),{safeRe:n,t:a}=ee(),u=Tt(),{compareIdentifiers:c}=Kr();class h{constructor(i,s){if(s=u(s),i instanceof h){if(i.loose===!!s.loose&&i.includePrerelease===!!s.includePrerelease)return i;i=i.version}else if(typeof i!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof i}".`);if(i.length>e)throw new TypeError(`version is longer than ${e} characters`);t("SemVer",i,s),this.options=s,this.loose=!!s.loose,this.includePrerelease=!!s.includePrerelease;const l=i.trim().match(s.loose?n[a.LOOSE]:n[a.FULL]);if(!l)throw new TypeError(`Invalid Version: ${i}`);if(this.raw=i,this.major=+l[1],this.minor=+l[2],this.patch=+l[3],this.major>r||this.major<0)throw new TypeError("Invalid major version");if(this.minor>r||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>r||this.patch<0)throw new TypeError("Invalid patch version");l[4]?this.prerelease=l[4].split(".").map(f=>{if(/^[0-9]+$/.test(f)){const d=+f;if(d>=0&&d<r)return d}return f}):this.prerelease=[],this.build=l[5]?l[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(i){if(t("SemVer.compare",this.version,this.options,i),!(i instanceof h)){if(typeof i=="string"&&i===this.version)return 0;i=new h(i,this.options)}return i.version===this.version?0:this.compareMain(i)||this.comparePre(i)}compareMain(i){return i instanceof h||(i=new h(i,this.options)),c(this.major,i.major)||c(this.minor,i.minor)||c(this.patch,i.patch)}comparePre(i){if(i instanceof h||(i=new h(i,this.options)),this.prerelease.length&&!i.prerelease.length)return-1;if(!this.prerelease.length&&i.prerelease.length)return 1;if(!this.prerelease.length&&!i.prerelease.length)return 0;let s=0;do{const l=this.prerelease[s],f=i.prerelease[s];if(t("prerelease compare",s,l,f),l===void 0&&f===void 0)return 0;if(f===void 0)return 1;if(l===void 0)return-1;if(l===f)continue;return c(l,f)}while(++s)}compareBuild(i){i instanceof h||(i=new h(i,this.options));let s=0;do{const l=this.build[s],f=i.build[s];if(t("build compare",s,l,f),l===void 0&&f===void 0)return 0;if(f===void 0)return 1;if(l===void 0)return-1;if(l===f)continue;return c(l,f)}while(++s)}inc(i,s,l){if(i.startsWith("pre")){if(!s&&l===!1)throw new Error("invalid increment argument: identifier is empty");if(s){const f=`-${s}`.match(this.options.loose?n[a.PRERELEASELOOSE]:n[a.PRERELEASE]);if(!f||f[1]!==s)throw new Error(`invalid identifier: ${s}`)}}switch(i){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",s,l);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",s,l);break;case"prepatch":this.prerelease.length=0,this.inc("patch",s,l),this.inc("pre",s,l);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",s,l),this.inc("pre",s,l);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;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 f=Number(l)?1:0;if(this.prerelease.length===0)this.prerelease=[f];else{let d=this.prerelease.length;for(;--d>=0;)typeof this.prerelease[d]=="number"&&(this.prerelease[d]++,d=-2);if(d===-1){if(s===this.prerelease.join(".")&&l===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(f)}}if(s){let d=[s,f];l===!1&&(d=[s]),c(this.prerelease[0],s)===0?isNaN(this.prerelease[1])&&(this.prerelease=d):this.prerelease=d}break}default:throw new Error(`invalid increment argument: ${i}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return Ne=h,Ne}var Le,Ht;function X(){if(Ht)return Le;Ht=1;const t=G();return Le=(r,n,a=!1)=>{if(r instanceof t)return r;try{return new t(r,n)}catch(u){if(!a)return null;throw u}},Le}var Te,Yt;function Gn(){if(Yt)return Te;Yt=1;const t=X();return Te=(r,n)=>{const a=t(r,n);return a?a.version:null},Te}var Ae,Kt;function jn(){if(Kt)return Ae;Kt=1;const t=X();return Ae=(r,n)=>{const a=t(r.trim().replace(/^[=v]+/,""),n);return a?a.version:null},Ae}var Fe,Zt;function Mn(){if(Zt)return Fe;Zt=1;const t=G();return Fe=(r,n,a,u,c)=>{typeof a=="string"&&(c=u,u=a,a=void 0);try{return new t(r instanceof t?r.version:r,a).inc(n,u,c).version}catch{return null}},Fe}var Be,Qt;function zn(){if(Qt)return Be;Qt=1;const t=X();return Be=(r,n)=>{const a=t(r,null,!0),u=t(n,null,!0),c=a.compare(u);if(c===0)return null;const h=c>0,o=h?a:u,i=h?u:a,s=!!o.prerelease.length;if(!!i.prerelease.length&&!s){if(!i.patch&&!i.minor)return"major";if(i.compareMain(o)===0)return i.minor&&!i.patch?"minor":"patch"}const f=s?"pre":"";return a.major!==u.major?f+"major":a.minor!==u.minor?f+"minor":a.patch!==u.patch?f+"patch":"prerelease"},Be}var be,er;function Un(){if(er)return be;er=1;const t=G();return be=(r,n)=>new t(r,n).major,be}var qe,tr;function Vn(){if(tr)return qe;tr=1;const t=G();return qe=(r,n)=>new t(r,n).minor,qe}var De,rr;function Xn(){if(rr)return De;rr=1;const t=G();return De=(r,n)=>new t(r,n).patch,De}var xe,nr;function Jn(){if(nr)return xe;nr=1;const t=X();return xe=(r,n)=>{const a=t(r,n);return a&&a.prerelease.length?a.prerelease:null},xe}var _e,sr;function j(){if(sr)return _e;sr=1;const t=G();return _e=(r,n,a)=>new t(r,a).compare(new t(n,a)),_e}var Ge,ir;function Wn(){if(ir)return Ge;ir=1;const t=j();return Ge=(r,n,a)=>t(n,r,a),Ge}var je,ar;function Hn(){if(ar)return je;ar=1;const t=j();return je=(r,n)=>t(r,n,!0),je}var Me,or;function At(){if(or)return Me;or=1;const t=G();return Me=(r,n,a)=>{const u=new t(r,a),c=new t(n,a);return u.compare(c)||u.compareBuild(c)},Me}var ze,cr;function Yn(){if(cr)return ze;cr=1;const t=At();return ze=(r,n)=>r.sort((a,u)=>t(a,u,n)),ze}var Ue,lr;function Kn(){if(lr)return Ue;lr=1;const t=At();return Ue=(r,n)=>r.sort((a,u)=>t(u,a,n)),Ue}var Ve,ur;function ge(){if(ur)return Ve;ur=1;const t=j();return Ve=(r,n,a)=>t(r,n,a)>0,Ve}var Xe,fr;function Ft(){if(fr)return Xe;fr=1;const t=j();return Xe=(r,n,a)=>t(r,n,a)<0,Xe}var Je,hr;function Zr(){if(hr)return Je;hr=1;const t=j();return Je=(r,n,a)=>t(r,n,a)===0,Je}var We,pr;function Qr(){if(pr)return We;pr=1;const t=j();return We=(r,n,a)=>t(r,n,a)!==0,We}var He,dr;function Bt(){if(dr)return He;dr=1;const t=j();return He=(r,n,a)=>t(r,n,a)>=0,He}var Ye,gr;function bt(){if(gr)return Ye;gr=1;const t=j();return Ye=(r,n,a)=>t(r,n,a)<=0,Ye}var Ke,mr;function en(){if(mr)return Ke;mr=1;const t=Zr(),e=Qr(),r=ge(),n=Bt(),a=Ft(),u=bt();return Ke=(h,o,i,s)=>{switch(o){case"===":return typeof h=="object"&&(h=h.version),typeof i=="object"&&(i=i.version),h===i;case"!==":return typeof h=="object"&&(h=h.version),typeof i=="object"&&(i=i.version),h!==i;case"":case"=":case"==":return t(h,i,s);case"!=":return e(h,i,s);case">":return r(h,i,s);case">=":return n(h,i,s);case"<":return a(h,i,s);case"<=":return u(h,i,s);default:throw new TypeError(`Invalid operator: ${o}`)}},Ke}var Ze,Er;function Zn(){if(Er)return Ze;Er=1;const t=G(),e=X(),{safeRe:r,t:n}=ee();return Ze=(u,c)=>{if(u instanceof t)return u;if(typeof u=="number"&&(u=String(u)),typeof u!="string")return null;c=c||{};let h=null;if(!c.rtl)h=u.match(c.includePrerelease?r[n.COERCEFULL]:r[n.COERCE]);else{const d=c.includePrerelease?r[n.COERCERTLFULL]:r[n.COERCERTL];let k;for(;(k=d.exec(u))&&(!h||h.index+h[0].length!==u.length);)(!h||k.index+k[0].length!==h.index+h[0].length)&&(h=k),d.lastIndex=k.index+k[1].length+k[2].length;d.lastIndex=-1}if(h===null)return null;const o=h[2],i=h[3]||"0",s=h[4]||"0",l=c.includePrerelease&&h[5]?`-${h[5]}`:"",f=c.includePrerelease&&h[6]?`+${h[6]}`:"";return e(`${o}.${i}.${s}${l}${f}`,c)},Ze}var Qe,vr;function Qn(){if(vr)return Qe;vr=1;class t{constructor(){this.max=1e3,this.map=new Map}get(r){const n=this.map.get(r);if(n!==void 0)return this.map.delete(r),this.map.set(r,n),n}delete(r){return this.map.delete(r)}set(r,n){if(!this.delete(r)&&n!==void 0){if(this.map.size>=this.max){const u=this.map.keys().next().value;this.delete(u)}this.map.set(r,n)}return this}}return Qe=t,Qe}var et,$r;function M(){if($r)return et;$r=1;const t=/\s+/g;class e{constructor(m,P){if(P=a(P),m instanceof e)return m.loose===!!P.loose&&m.includePrerelease===!!P.includePrerelease?m:new e(m.raw,P);if(m instanceof u)return this.raw=m.value,this.set=[[m]],this.formatted=void 0,this;if(this.options=P,this.loose=!!P.loose,this.includePrerelease=!!P.includePrerelease,this.raw=m.trim().replace(t," "),this.set=this.raw.split("||").map(R=>this.parseRange(R.trim())).filter(R=>R.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const R=this.set[0];if(this.set=this.set.filter(y=>!p(y[0])),this.set.length===0)this.set=[R];else if(this.set.length>1){for(const y of this.set)if(y.length===1&&v(y[0])){this.set=[y];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let m=0;m<this.set.length;m++){m>0&&(this.formatted+="||");const P=this.set[m];for(let R=0;R<P.length;R++)R>0&&(this.formatted+=" "),this.formatted+=P[R].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(m){const R=((this.options.includePrerelease&&d)|(this.options.loose&&k))+":"+m,y=n.get(R);if(y)return y;const w=this.options.loose,C=w?o[i.HYPHENRANGELOOSE]:o[i.HYPHENRANGE];m=m.replace(C,Pe(this.options.includePrerelease)),c("hyphen replace",m),m=m.replace(o[i.COMPARATORTRIM],s),c("comparator trim",m),m=m.replace(o[i.TILDETRIM],l),c("tilde trim",m),m=m.replace(o[i.CARETTRIM],f),c("caret trim",m);let T=m.split(" ").map(q=>I(q,this.options)).join(" ").split(/\s+/).map(q=>ke(q,this.options));w&&(T=T.filter(q=>(c("loose invalid filter",q,this.options),!!q.match(o[i.COMPARATORLOOSE])))),c("range list",T);const N=new Map,F=T.map(q=>new u(q,this.options));for(const q of F){if(p(q))return[q];N.set(q.value,q)}N.size>1&&N.has("")&&N.delete("");const _=[...N.values()];return n.set(R,_),_}intersects(m,P){if(!(m instanceof e))throw new TypeError("a Range is required");return this.set.some(R=>$(R,P)&&m.set.some(y=>$(y,P)&&R.every(w=>y.every(C=>w.intersects(C,P)))))}test(m){if(!m)return!1;if(typeof m=="string")try{m=new h(m,this.options)}catch{return!1}for(let P=0;P<this.set.length;P++)if(ye(this.set[P],m,this.options))return!0;return!1}}et=e;const r=Qn(),n=new r,a=Tt(),u=me(),c=de(),h=G(),{safeRe:o,t:i,comparatorTrimReplace:s,tildeTrimReplace:l,caretTrimReplace:f}=ee(),{FLAG_INCLUDE_PRERELEASE:d,FLAG_LOOSE:k}=pe(),p=E=>E.value==="<0.0.0-0",v=E=>E.value==="",$=(E,m)=>{let P=!0;const R=E.slice();let y=R.pop();for(;P&&R.length;)P=R.every(w=>y.intersects(w,m)),y=R.pop();return P},I=(E,m)=>(c("comp",E,m),E=A(E,m),c("caret",E),E=B(E,m),c("tildes",E),E=O(E,m),c("xrange",E),E=we(E,m),c("stars",E),E),S=E=>!E||E.toLowerCase()==="x"||E==="*",B=(E,m)=>E.trim().split(/\s+/).map(P=>b(P,m)).join(" "),b=(E,m)=>{const P=m.loose?o[i.TILDELOOSE]:o[i.TILDE];return E.replace(P,(R,y,w,C,T)=>{c("tilde",E,R,y,w,C,T);let N;return S(y)?N="":S(w)?N=`>=${y}.0.0 <${+y+1}.0.0-0`:S(C)?N=`>=${y}.${w}.0 <${y}.${+w+1}.0-0`:T?(c("replaceTilde pr",T),N=`>=${y}.${w}.${C}-${T} <${y}.${+w+1}.0-0`):N=`>=${y}.${w}.${C} <${y}.${+w+1}.0-0`,c("tilde return",N),N})},A=(E,m)=>E.trim().split(/\s+/).map(P=>D(P,m)).join(" "),D=(E,m)=>{c("caret",E,m);const P=m.loose?o[i.CARETLOOSE]:o[i.CARET],R=m.includePrerelease?"-0":"";return E.replace(P,(y,w,C,T,N)=>{c("caret",E,y,w,C,T,N);let F;return S(w)?F="":S(C)?F=`>=${w}.0.0${R} <${+w+1}.0.0-0`:S(T)?w==="0"?F=`>=${w}.${C}.0${R} <${w}.${+C+1}.0-0`:F=`>=${w}.${C}.0${R} <${+w+1}.0.0-0`:N?(c("replaceCaret pr",N),w==="0"?C==="0"?F=`>=${w}.${C}.${T}-${N} <${w}.${C}.${+T+1}-0`:F=`>=${w}.${C}.${T}-${N} <${w}.${+C+1}.0-0`:F=`>=${w}.${C}.${T}-${N} <${+w+1}.0.0-0`):(c("no pr"),w==="0"?C==="0"?F=`>=${w}.${C}.${T}${R} <${w}.${C}.${+T+1}-0`:F=`>=${w}.${C}.${T}${R} <${w}.${+C+1}.0-0`:F=`>=${w}.${C}.${T} <${+w+1}.0.0-0`),c("caret return",F),F})},O=(E,m)=>(c("replaceXRanges",E,m),E.split(/\s+/).map(P=>W(P,m)).join(" ")),W=(E,m)=>{E=E.trim();const P=m.loose?o[i.XRANGELOOSE]:o[i.XRANGE];return E.replace(P,(R,y,w,C,T,N)=>{c("xRange",E,R,y,w,C,T,N);const F=S(w),_=F||S(C),q=_||S(T),H=q;return y==="="&&H&&(y=""),N=m.includePrerelease?"-0":"",F?y===">"||y==="<"?R="<0.0.0-0":R="*":y&&H?(_&&(C=0),T=0,y===">"?(y=">=",_?(w=+w+1,C=0,T=0):(C=+C+1,T=0)):y==="<="&&(y="<",_?w=+w+1:C=+C+1),y==="<"&&(N="-0"),R=`${y+w}.${C}.${T}${N}`):_?R=`>=${w}.0.0${N} <${+w+1}.0.0-0`:q&&(R=`>=${w}.${C}.0${N} <${w}.${+C+1}.0-0`),c("xRange return",R),R})},we=(E,m)=>(c("replaceStars",E,m),E.trim().replace(o[i.STAR],"")),ke=(E,m)=>(c("replaceGTE0",E,m),E.trim().replace(o[m.includePrerelease?i.GTE0PRE:i.GTE0],"")),Pe=E=>(m,P,R,y,w,C,T,N,F,_,q,H)=>(S(R)?P="":S(y)?P=`>=${R}.0.0${E?"-0":""}`:S(w)?P=`>=${R}.${y}.0${E?"-0":""}`:C?P=`>=${P}`:P=`>=${P}${E?"-0":""}`,S(F)?N="":S(_)?N=`<${+F+1}.0.0-0`:S(q)?N=`<${F}.${+_+1}.0-0`:H?N=`<=${F}.${_}.${q}-${H}`:E?N=`<${F}.${_}.${+q+1}-0`:N=`<=${N}`,`${P} ${N}`.trim()),ye=(E,m,P)=>{for(let R=0;R<E.length;R++)if(!E[R].test(m))return!1;if(m.prerelease.length&&!P.includePrerelease){for(let R=0;R<E.length;R++)if(c(E[R].semver),E[R].semver!==u.ANY&&E[R].semver.prerelease.length>0){const y=E[R].semver;if(y.major===m.major&&y.minor===m.minor&&y.patch===m.patch)return!0}return!1}return!0};return et}var tt,Rr;function me(){if(Rr)return tt;Rr=1;const t=Symbol("SemVer ANY");class e{static get ANY(){return t}constructor(s,l){if(l=r(l),s instanceof e){if(s.loose===!!l.loose)return s;s=s.value}s=s.trim().split(/\s+/).join(" "),c("comparator",s,l),this.options=l,this.loose=!!l.loose,this.parse(s),this.semver===t?this.value="":this.value=this.operator+this.semver.version,c("comp",this)}parse(s){const l=this.options.loose?n[a.COMPARATORLOOSE]:n[a.COMPARATOR],f=s.match(l);if(!f)throw new TypeError(`Invalid comparator: ${s}`);this.operator=f[1]!==void 0?f[1]:"",this.operator==="="&&(this.operator=""),f[2]?this.semver=new h(f[2],this.options.loose):this.semver=t}toString(){return this.value}test(s){if(c("Comparator.test",s,this.options.loose),this.semver===t||s===t)return!0;if(typeof s=="string")try{s=new h(s,this.options)}catch{return!1}return u(s,this.operator,this.semver,this.options)}intersects(s,l){if(!(s instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new o(s.value,l).test(this.value):s.operator===""?s.value===""?!0:new o(this.value,l).test(s.semver):(l=r(l),l.includePrerelease&&(this.value==="<0.0.0-0"||s.value==="<0.0.0-0")||!l.includePrerelease&&(this.value.startsWith("<0.0.0")||s.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&s.operator.startsWith(">")||this.operator.startsWith("<")&&s.operator.startsWith("<")||this.semver.version===s.semver.version&&this.operator.includes("=")&&s.operator.includes("=")||u(this.semver,"<",s.semver,l)&&this.operator.startsWith(">")&&s.operator.startsWith("<")||u(this.semver,">",s.semver,l)&&this.operator.startsWith("<")&&s.operator.startsWith(">")))}}tt=e;const r=Tt(),{safeRe:n,t:a}=ee(),u=en(),c=de(),h=G(),o=M();return tt}var rt,wr;function Ee(){if(wr)return rt;wr=1;const t=M();return rt=(r,n,a)=>{try{n=new t(n,a)}catch{return!1}return n.test(r)},rt}var nt,kr;function es(){if(kr)return nt;kr=1;const t=M();return nt=(r,n)=>new t(r,n).set.map(a=>a.map(u=>u.value).join(" ").trim().split(" ")),nt}var st,Pr;function ts(){if(Pr)return st;Pr=1;const t=G(),e=M();return st=(n,a,u)=>{let c=null,h=null,o=null;try{o=new e(a,u)}catch{return null}return n.forEach(i=>{o.test(i)&&(!c||h.compare(i)===-1)&&(c=i,h=new t(c,u))}),c},st}var it,yr;function rs(){if(yr)return it;yr=1;const t=G(),e=M();return it=(n,a,u)=>{let c=null,h=null,o=null;try{o=new e(a,u)}catch{return null}return n.forEach(i=>{o.test(i)&&(!c||h.compare(i)===1)&&(c=i,h=new t(c,u))}),c},it}var at,Sr;function ns(){if(Sr)return at;Sr=1;const t=G(),e=M(),r=ge();return at=(a,u)=>{a=new e(a,u);let c=new t("0.0.0");if(a.test(c)||(c=new t("0.0.0-0"),a.test(c)))return c;c=null;for(let h=0;h<a.set.length;++h){const o=a.set[h];let i=null;o.forEach(s=>{const l=new t(s.semver.version);switch(s.operator){case">":l.prerelease.length===0?l.patch++:l.prerelease.push(0),l.raw=l.format();case"":case">=":(!i||r(l,i))&&(i=l);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${s.operator}`)}}),i&&(!c||r(c,i))&&(c=i)}return c&&a.test(c)?c:null},at}var ot,Cr;function ss(){if(Cr)return ot;Cr=1;const t=M();return ot=(r,n)=>{try{return new t(r,n).range||"*"}catch{return null}},ot}var ct,Or;function qt(){if(Or)return ct;Or=1;const t=G(),e=me(),{ANY:r}=e,n=M(),a=Ee(),u=ge(),c=Ft(),h=bt(),o=Bt();return ct=(s,l,f,d)=>{s=new t(s,d),l=new n(l,d);let k,p,v,$,I;switch(f){case">":k=u,p=h,v=c,$=">",I=">=";break;case"<":k=c,p=o,v=u,$="<",I="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(a(s,l,d))return!1;for(let S=0;S<l.set.length;++S){const B=l.set[S];let b=null,A=null;if(B.forEach(D=>{D.semver===r&&(D=new e(">=0.0.0")),b=b||D,A=A||D,k(D.semver,b.semver,d)?b=D:v(D.semver,A.semver,d)&&(A=D)}),b.operator===$||b.operator===I||(!A.operator||A.operator===$)&&p(s,A.semver))return!1;if(A.operator===I&&v(s,A.semver))return!1}return!0},ct}var lt,Ir;function is(){if(Ir)return lt;Ir=1;const t=qt();return lt=(r,n,a)=>t(r,n,">",a),lt}var ut,Nr;function as(){if(Nr)return ut;Nr=1;const t=qt();return ut=(r,n,a)=>t(r,n,"<",a),ut}var ft,Lr;function os(){if(Lr)return ft;Lr=1;const t=M();return ft=(r,n,a)=>(r=new t(r,a),n=new t(n,a),r.intersects(n,a)),ft}var ht,Tr;function cs(){if(Tr)return ht;Tr=1;const t=Ee(),e=j();return ht=(r,n,a)=>{const u=[];let c=null,h=null;const o=r.sort((f,d)=>e(f,d,a));for(const f of o)t(f,n,a)?(h=f,c||(c=f)):(h&&u.push([c,h]),h=null,c=null);c&&u.push([c,null]);const i=[];for(const[f,d]of u)f===d?i.push(f):!d&&f===o[0]?i.push("*"):d?f===o[0]?i.push(`<=${d}`):i.push(`${f} - ${d}`):i.push(`>=${f}`);const s=i.join(" || "),l=typeof n.raw=="string"?n.raw:String(n);return s.length<l.length?s:n},ht}var pt,Ar;function ls(){if(Ar)return pt;Ar=1;const t=M(),e=me(),{ANY:r}=e,n=Ee(),a=j(),u=(l,f,d={})=>{if(l===f)return!0;l=new t(l,d),f=new t(f,d);let k=!1;e:for(const p of l.set){for(const v of f.set){const $=o(p,v,d);if(k=k||$!==null,$)continue e}if(k)return!1}return!0},c=[new e(">=0.0.0-0")],h=[new e(">=0.0.0")],o=(l,f,d)=>{if(l===f)return!0;if(l.length===1&&l[0].semver===r){if(f.length===1&&f[0].semver===r)return!0;d.includePrerelease?l=c:l=h}if(f.length===1&&f[0].semver===r){if(d.includePrerelease)return!0;f=h}const k=new Set;let p,v;for(const O of l)O.operator===">"||O.operator===">="?p=i(p,O,d):O.operator==="<"||O.operator==="<="?v=s(v,O,d):k.add(O.semver);if(k.size>1)return null;let $;if(p&&v){if($=a(p.semver,v.semver,d),$>0)return null;if($===0&&(p.operator!==">="||v.operator!=="<="))return null}for(const O of k){if(p&&!n(O,String(p),d)||v&&!n(O,String(v),d))return null;for(const W of f)if(!n(O,String(W),d))return!1;return!0}let I,S,B,b,A=v&&!d.includePrerelease&&v.semver.prerelease.length?v.semver:!1,D=p&&!d.includePrerelease&&p.semver.prerelease.length?p.semver:!1;A&&A.prerelease.length===1&&v.operator==="<"&&A.prerelease[0]===0&&(A=!1);for(const O of f){if(b=b||O.operator===">"||O.operator===">=",B=B||O.operator==="<"||O.operator==="<=",p){if(D&&O.semver.prerelease&&O.semver.prerelease.length&&O.semver.major===D.major&&O.semver.minor===D.minor&&O.semver.patch===D.patch&&(D=!1),O.operator===">"||O.operator===">="){if(I=i(p,O,d),I===O&&I!==p)return!1}else if(p.operator===">="&&!n(p.semver,String(O),d))return!1}if(v){if(A&&O.semver.prerelease&&O.semver.prerelease.length&&O.semver.major===A.major&&O.semver.minor===A.minor&&O.semver.patch===A.patch&&(A=!1),O.operator==="<"||O.operator==="<="){if(S=s(v,O,d),S===O&&S!==v)return!1}else if(v.operator==="<="&&!n(v.semver,String(O),d))return!1}if(!O.operator&&(v||p)&&$!==0)return!1}return!(p&&B&&!v&&$!==0||v&&b&&!p&&$!==0||D||A)},i=(l,f,d)=>{if(!l)return f;const k=a(l.semver,f.semver,d);return k>0?l:k<0||f.operator===">"&&l.operator===">="?f:l},s=(l,f,d)=>{if(!l)return f;const k=a(l.semver,f.semver,d);return k<0?l:k>0||f.operator==="<"&&l.operator==="<="?f:l};return pt=u,pt}var dt,Fr;function us(){if(Fr)return dt;Fr=1;const t=ee(),e=pe(),r=G(),n=Kr(),a=X(),u=Gn(),c=jn(),h=Mn(),o=zn(),i=Un(),s=Vn(),l=Xn(),f=Jn(),d=j(),k=Wn(),p=Hn(),v=At(),$=Yn(),I=Kn(),S=ge(),B=Ft(),b=Zr(),A=Qr(),D=Bt(),O=bt(),W=en(),we=Zn(),ke=me(),Pe=M(),ye=Ee(),E=es(),m=ts(),P=rs(),R=ns(),y=ss(),w=qt(),C=is(),T=as(),N=os(),F=cs(),_=ls();return dt={parse:a,valid:u,clean:c,inc:h,diff:o,major:i,minor:s,patch:l,prerelease:f,compare:d,rcompare:k,compareLoose:p,compareBuild:v,sort:$,rsort:I,gt:S,lt:B,eq:b,neq:A,gte:D,lte:O,cmp:W,coerce:we,Comparator:ke,Range:Pe,satisfies:ye,toComparators:E,maxSatisfying:m,minSatisfying:P,minVersion:R,validRange:y,outside:w,gtr:C,ltr:T,intersects:N,simplifyRange:F,subset:_,SemVer:r,re:t.re,src:t.src,tokens:t.t,SEMVER_SPEC_VERSION:e.SEMVER_SPEC_VERSION,RELEASE_TYPES:e.RELEASE_TYPES,compareIdentifiers:n.compareIdentifiers,rcompareIdentifiers:n.rcompareIdentifiers},dt}var tn=us();const rn=_n(tn),Rt="_updates_v2/per_package_version/";function fs(t,e){return`${Rt}${t.organization}/${t.name}/${t.version}/${e}`}const hs=/(?<packageKeyWithoutVersion>(?<organization>[^\/]+)\/(?<name>[^\/]+))\/(?<version>[^\/]+)\/(?<seed>[^\/]+)$/,gt="_updates_v2/_global_update_in",Br="_updates_v2/_global_update_out",J="v2/",nn="overview.json",sn="overview.json",Z="manifest.json",le="channels",ne=/^[-a-z0-9]+$/;function Dt(t){return`${t.organization}/${t.name}/${t.version}`}function K(t){return`${J}${Dt(t)}`}const an="/"+Z,on=L.z.object({description:g.BlockPackDescriptionManifest,channels:L.z.array(L.z.string()).default(()=>[]),manifestSha256:g.Sha256Schema}),wt=L.z.object({schema:L.z.literal("v2"),versions:L.z.array(on)});function cn(t){return`${t.organization}/${t.name}/${sn}`}function kt(t){return`${J}${cn(t)}`}function ln(t){return`${Dt(t)}/${le}/`}function un(t){return`${J}${ln(t)}`}const fn=/(?<packageKeyWithoutVersion>(?<organization>[^\/]+)\/(?<name>[^\/]+))\/(?<version>[^\/]+)\/manifest\.json$/,se=`${J}${nn}`;function xt(t){const e=L.z.object({id:g.BlockPackIdNoVersion,allVersions:L.z.array(L.z.string()).optional(),allVersionsWithChannels:L.z.array(g.VersionWithChannels).optional(),latest:t,latestManifestSha256:g.Sha256Schema,latestByChannel:L.z.record(L.z.string(),L.z.object({description:t,manifestSha256:g.Sha256Schema})).default({})});return e.transform(r=>r.allVersionsWithChannels?r:{...r,allVersionsWithChannels:r.allVersions.map(n=>({version:n,channels:[]}))}).transform(r=>r.latestByChannel[g.AnyChannel]?r:{...r,latestByChannel:{...r.latestByChannel,[g.AnyChannel]:{description:r.latest,manifestSha256:r.latestManifestSha256}}}).pipe(e.required({allVersionsWithChannels:!0}))}const ps=xt(g.BlockPackDescriptionManifest);function ve(t){return L.z.object({schema:L.z.literal("v2"),packages:L.z.array(xt(t))})}const Pt=ve(g.BlockPackDescriptionManifest);function ds(t){return g.CreateBlockPackDescriptionSchema(g.BlockComponentsManifest,g.BlockPackMeta(g.ContentRelativeText.transform(he(t)),g.ContentRelativeBinary.transform(Q(t))))}function gs(t){return ve(g.CreateBlockPackDescriptionSchema(g.BlockComponentsManifest,g.BlockPackMeta(g.ContentRelativeText.transform(he(t)),g.ContentRelativeBinary.transform(Q(t)))))}function ms(t){return ve(g.CreateBlockPackDescriptionSchema(g.BlockComponentsManifest,g.BlockPackMeta(g.ContentRelativeText.transform(he(t)),g.ContentRelativeBinary.transform(Q(t)))))}class Es{constructor(e,r=new Ct.ConsoleLoggerAdapter){this.storage=e,this.logger=r}async updateRegistry(e="normal"){this.logger.info("Initiating registry refresh...");const r=new Map,n=[],a=await this.storage.listFiles(Rt),u=({organization:i,name:s,version:l})=>{const f=`${i}:${s}`;let d=r.get(f);if(d){if(!d.versions.has(l))return d.versions.add(l),!0}else return r.set(f,{package:{organization:i,name:s},versions:new Set([l])}),!0;return!1};this.logger.info("Packages to be updated:");for(const i of a){const s=i.match(hs);if(!s)continue;n.push(i);const{organization:l,name:f,version:d,seed:k}=s.groups,p=u({organization:l,name:f,version:d});this.logger.info(` - ${l}:${f}:${d} added:${p}`)}if(e==="force"){const i=await this.storage.listFiles(J);for(const s of i){const l=s.match(fn);if(!l)continue;const{organization:f,name:d,version:k}=l.groups,p=u({organization:f,name:d,version:k});this.logger.info(` - ${f}:${d}:${k} force_added:${p}`)}}const c=await this.storage.getFile(se);let o=(c===void 0?{packages:[]}:Pt.parse(JSON.parse(c.toString()))).packages;this.logger.info(`Global overview loaded, ${o.length} records`);for(const[,i]of r.entries()){const s=kt(i.package),l=await this.storage.getFile(s),f=l===void 0?{versions:[]}:wt.parse(JSON.parse(l.toString()));this.logger.info(`Updating ${i.package.organization}:${i.package.name} overview, ${f.versions.length} records`);const d=f.versions.filter(v=>!i.versions.has(v.description.id.version));for(const[v]of i.versions.entries()){const $=v.toString(),I={...i.package,version:$},S=await this.storage.getFile(K(I)+an);if(!S)continue;const B=await oe(S),b=(await this.storage.listFiles(un(I))).filter(A=>A.match(ne)?!0:(this.logger.warn(`Unexpected channel in ${g.blockPackIdToString(I)}: ${A}`),!1));d.push({description:$t($).parse(g.BlockPackManifest.parse(JSON.parse(S.toString("utf8"))).description),manifestSha256:B,channels:b})}d.sort((v,$)=>tn.compare($.description.id.version,v.description.id.version)),e!=="dry-run"&&await this.storage.putFile(s,Buffer.from(JSON.stringify({schema:"v2",versions:d}))),this.logger.info(`Done (${d.length} records)`);const k=new Set;for(const v of d)for(const $ of v.channels)k.add($);o=o.filter(v=>v.id.organization!==i.package.organization||v.id.name!==i.package.name);const p=$t(`${i.package.organization}/${i.package.name}`);o.push({id:{organization:i.package.organization,name:i.package.name},allVersions:d.map(v=>v.description.id.version).reverse(),allVersionsWithChannels:d.map(v=>({version:v.description.id.version,channels:v.channels})).reverse(),latest:p.parse(d[0].description),latestManifestSha256:d[0].manifestSha256,latestByChannel:Object.fromEntries([...k,g.AnyChannel].map(v=>{const $=d.find(I=>v===g.AnyChannel||I.channels.indexOf(v)!==-1);if(!$)throw new Error("Assertion error");return[v,{description:p.parse($.description),manifestSha256:$==null?void 0:$.manifestSha256}]}))})}e!=="dry-run"&&await this.storage.putFile(se,Buffer.from(JSON.stringify({schema:"v2",packages:o}))),this.logger.info(`Global overview updated (${o.length} records)`),e!=="dry-run"&&await this.storage.deleteFiles(...n.map(i=>`${Rt}${i}`)),this.logger.info("Version update requests cleared")}async updateIfNeeded(e="normal"){this.logger.info("Checking if registry requires refresh...");const r=await this.storage.getFile(gt),n=await this.storage.getFile(Br);if(e!=="force"&&r===void 0&&n===void 0){this.logger.info("No global seed files found, update not needed.");return}if(e!=="force"&&r!==void 0&&n!==void 0&&r.equals(n)){this.logger.info("Registry is up to date.");return}await this.updateRegistry(e),r&&(e!=="dry-run"&&await this.storage.putFile(Br,r),this.logger.info("Refresh finished."))}async getPackageOverview(e){const r=await this.storage.getFile(kt(e));if(r!==void 0)return wt.parse(JSON.parse(r.toString()))}async getGlobalOverview(){const e=await this.storage.getFile(se);if(e!==void 0)return Pt.parse(JSON.parse(e.toString()))}async marchChanged(e){const r=Dr.randomUUID(),n=fs(e,r);this.logger.info(`Creating update seed at ${n} ...`),await this.storage.putFile(n,Buffer.from(r)),this.logger.info(`Touching global update seed ${gt} ...`),await this.storage.putFile(gt,Buffer.from(r))}async addPackageToChannel(e,r){if(!r.match(ne))throw new Error(`Illegal characters in channel name: ${r}`);const n=K(e);if(await this.storage.getFile(`${n}/${Z}`)===void 0)throw new Error(`Package ${g.blockPackIdToString(e)} not found in the registry.`);await this.storage.putFile(`${n}/${le}/${r}`,Buffer.from(r)),await this.marchChanged(e)}async removePackageFromChannel(e,r){if(!r.match(ne))throw new Error(`Illegal characters in channel name: ${r}`);const n=K(e);if(await this.storage.getFile(`${n}/${Z}`)===void 0)throw new Error(`Package ${g.blockPackIdToString(e)} not found in the registry.`);await this.storage.deleteFiles(`${n}/${le}/${r}`),await this.marchChanged(e)}async publishPackage(e,r){const n=K(e.description.id);for(const u of e.files){const c=await r(u.name);if(c.length!==u.size)throw new Error(`Actual file size don't match file size from the manifest file for ${u.name} (actual = ${c.length}; manifest = ${u.size})`);const h=await oe(c);if(h!==u.sha256.toUpperCase())throw new Error(`Actual file SHA-256 don't match the checksum from the manifest file for ${u.name} (actual = ${h}; manifest = ${u.sha256.toUpperCase()})`);const o=n+"/"+u.name;this.logger.info(`Uploading ${u.name} -> ${o} ...`),await this.storage.putFile(o,c)}const a=n+"/"+Z;this.logger.info(`Uploading manifest to ${a} ...`),await this.storage.putFile(a,Buffer.from(JSON.stringify(e))),await this.marchChanged(e.description.id)}}class hn{constructor(e,r,n){this.client=e,this.bucket=r,this.root=n}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),n=xr.paginateListObjectsV2({client:this.client},{Bucket:this.bucket,Prefix:r}),a=[];for await(const u of n)a.push(...(u.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(n=>({Key:U.join(this.root,n)}))}});if(r.Errors!==void 0&&r.Errors.length>0)throw new Error(`Errors encountered while deleting files: ${r.Errors.join(`
2
+ `)}`)}}class pn{constructor(e){te(this,"root");this.root=x.resolve(e)}toAbsolutePath(e){if(U.isAbsolute(e))throw new Error("absolute path");return x.resolve(this.root,e.split(U.sep).join(x.sep))}async getFile(e){try{return await Y.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 Y.promises.readdir(r,{recursive:!0,withFileTypes:!0})).filter(n=>n.isFile()).map(n=>x.relative(r,x.resolve(n.parentPath,n.name)).split(x.sep).join(U.sep))}catch(r){if(r.code=="ENOENT")return[];throw new Error("",{cause:r})}}async putFile(e,r){const n=this.toAbsolutePath(e);await Y.promises.mkdir(x.dirname(n),{recursive:!0}),await Y.promises.writeFile(n,r)}async deleteFiles(...e){for(const r of e)await Y.promises.rm(this.toAbsolutePath(r))}}function dn(t){const e=new URL(t,`file:${x.resolve(".").split(x.sep).join(U.sep)}/`);switch(e.protocol){case"file:":const r=x.resolve(e.pathname);return new pn(r);case"s3:":const n={},a=e.searchParams.get("region");a&&(n.region=a);const u=e.hostname;return new hn(new xr.S3(n),u,e.pathname.replace(/^\//,""));default:throw new Error(`Unknown protocol: ${e.protocol}`)}}const vs=L.z.string().regex(/^(?:s3:|file:)/),gn=L.z.object({organization:L.z.string(),package:L.z.string(),version:g.SemVer.optional(),files:L.z.record(L.z.string().regex(/^[^\/]+$/),L.z.string()).default({}),meta:L.z.object({}).passthrough()}),mn=L.z.object({registries:L.z.record(L.z.string(),vs).default({}),registry:L.z.string().optional()}),_t=mn.merge(gn).required({registry:!0,version:!0}),$e=_t.partial().required({registries:!0,files:!0}),En="pl.package.json",vn="pl.package.yaml",Re="v1/";function $s(t){return`${Re}${t.organization}/${t.package}/${t.version}`}function Gt(t,e){return`${Re}${t.organization}/${t.package}/${t.version}/${e}`}function yt(t){return`${Re}${t.organization}/${t.package}/overview.json`}const ie=`${Re}overview.json`,jt="meta.json",St="_updates_v1/per_package_version/";function Rs(t,e){return`${St}${t.organization}/${t.package}/${t.version}/${e}`}const ws=/(?<packageKeyWithoutVersion>(?<organization>[^\/]+)\/(?<pkg>[^\/]+))\/(?<version>[^\/]+)\/(?<seed>[^\/]+)$/,$n="_updates_v1/_global_update_in",br="_updates_v1/_global_update_out";class ks{constructor(e,r){this.storage=e,this.logger=r}constructNewPackage(e){return new Ps(this.storage,e)}async updateRegistry(){var c,h,o,i,s,l,f,d;(c=this.logger)==null||c.info("Initiating registry refresh...");const e=new Map,r=[],n=await this.storage.listFiles(St);(h=this.logger)==null||h.info("Packages to be updated:");for(const k of n){const p=k.match(ws);if(!p)continue;r.push(k);const{packageKeyWithoutVersion:v,organization:$,pkg:I,version:S,seed:B}=p.groups;let b=e.get(v);b?b.versions.has(S)||b.versions.add(S):e.set(v,{package:{organization:$,package:I},versions:new Set([S])}),(o=this.logger)==null||o.info(` - ${$}:${I}:${S}`)}const a=await this.storage.getFile(ie);let u=a===void 0?[]:JSON.parse(a.toString());(i=this.logger)==null||i.info(`Global overview loaded, ${u.length} records`);for(const[,k]of e.entries()){const p=yt(k.package),v=await this.storage.getFile(p);let $=v===void 0?[]:JSON.parse(v.toString());(s=this.logger)==null||s.info(`Updating ${k.package.organization}:${k.package.package} overview, ${$.length} records`),$=$.filter(I=>!k.versions.has(I.version));for(const[I]of k.versions.entries()){const S=I.toString(),B=await this.storage.getFile(Gt({...k.package,version:S},jt));B&&$.push({version:S,meta:JSON.parse(B.toString())})}$.sort((I,S)=>rn.compare(S.version,I.version)),await this.storage.putFile(p,Buffer.from(JSON.stringify($))),(l=this.logger)==null||l.info(`Done (${$.length} records)`),u=u.filter(I=>I.organization!==k.package.organization||I.package!==k.package.package),u.push({organization:k.package.organization,package:k.package.package,allVersions:$.map(I=>I.version).reverse(),latestVersion:$[0].version,latestMeta:$[0].meta})}await this.storage.putFile(ie,Buffer.from(JSON.stringify(u))),(f=this.logger)==null||f.info(`Global overview updated (${u.length} records)`),await this.storage.deleteFiles(...r.map(k=>`${St}${k}`)),(d=this.logger)==null||d.info("Version update requests cleared")}async updateIfNeeded(e=!1){var a,u;(a=this.logger)==null||a.info("Checking if registry requires refresh...");const r=await this.storage.getFile($n),n=await this.storage.getFile(br);!e&&r===void 0&&n===void 0||!e&&r!==void 0&&n!==void 0&&r.equals(n)||(await this.updateRegistry(),r&&(await this.storage.putFile(br,r),(u=this.logger)==null||u.info("Refresh finished")))}async getPackageOverview(e){const r=await this.storage.getFile(yt(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 Ps{constructor(e,r){te(this,"metaAdded",!1);te(this,"seed",Dr.randomUUID());this.storage=e,this.name=r}async addFile(e,r){await this.storage.putFile(Gt(this.name,e),r)}async writeMeta(e){await this.addFile(jt,Buffer.from(JSON.stringify(e))),this.metaAdded=!0}async finish(){if(!this.metaAdded)throw new Error("meta not added");await this.storage.putFile(Rs(this.name,this.seed),Buffer.of(0)),await this.storage.putFile($n,Buffer.from(this.seed))}}function V(t,e){return e===void 0?t:{...t,...e,registries:{...t.registries,...e.registries},files:{...t.files,...e.files}}}async function mt(t){return Nt(t,e=>$e.parse(JSON.parse(e.toString())))}async function Et(t){return Nt(t,e=>$e.parse(Cn.parse(e.toString())))}async function ys(){let t=$e.parse({});return t=V(t,await mt("./.pl.reg.json")),t=V(t,await Et("./.pl.reg.yaml")),t=V(t,await mt(`${Mt.homedir()}/.pl.reg.json`)),t=V(t,await Et(`${Mt.homedir()}/.pl.reg.yaml`)),t=V(t,await mt(En)),t=V(t,await Et(vn)),t}class Rn{constructor(e){this.conf=e}createRegistry(e){let r=this.conf.registry;if(!r.startsWith("file:")&&!r.startsWith("s3:")){const n=this.conf.registries[r];if(!n)throw new Error(`Registry with alias "${r}" not found`);r=n}return new ks(dn(r),e)}get fullPackageName(){return{organization:this.conf.organization,package:this.conf.package,version:this.conf.version}}}async function Ss(t){const e=await ys();return new Rn(_t.parse(V(e,t)))}exports.BlockComponentsAbsoluteUrl=Bn;exports.BlockComponentsConsolidate=Wr;exports.BlockComponentsDescription=Jr;exports.BlockDescriptionPackageJsonField=ce;exports.BlockDescriptionToExplicitBinaryBytes=ds;exports.BlockPackDescriptionConsolidateToFolder=Hr;exports.BlockPackDescriptionManifestAddRelativePathPrefix=$t;exports.BlockPackMetaConsolidate=Xr;exports.BlockPackMetaDescription=Vr;exports.BlockPackMetaEmbedAbsoluteBase64=Tn;exports.BlockPackMetaEmbedAbsoluteBytes=An;exports.BlockPackMetaEmbedBytes=Fn;exports.BlockRegistryV2=Es;exports.ChannelNameRegexp=ne;exports.ChannelsFolder=le;exports.FSStorage=pn;exports.GlobalOverview=ve;exports.GlobalOverviewEntry=xt;exports.GlobalOverviewEntryReg=ps;exports.GlobalOverviewFileName=nn;exports.GlobalOverviewPath=ie;exports.GlobalOverviewPath$1=se;exports.GlobalOverviewReg=Pt;exports.GlobalOverviewToExplicitBinaryBase64=ms;exports.GlobalOverviewToExplicitBinaryBytes=gs;exports.MainPrefix=J;exports.ManifestFileName=Z;exports.ManifestSuffix=an;exports.MetaFile=jt;exports.PackageManifestPattern=fn;exports.PackageOverview=wt;exports.PackageOverviewFileName=sn;exports.PackageOverviewVersionEntry=on;exports.PlPackageConfigData=gn;exports.PlPackageJsonConfigFile=En;exports.PlPackageYamlConfigFile=vn;exports.PlRegCommonConfigData=mn;exports.PlRegFullPackageConfigData=_t;exports.PlRegPackageConfig=Rn;exports.PlRegPackageConfigDataShard=$e;exports.ResolvedBlockPackDescriptionFromPackageJson=It;exports.ResolvedModuleFile=_r;exports.ResolvedModuleFolder=Gr;exports.S3Storage=hn;exports.absoluteToBase64=jr;exports.absoluteToBytes=Mr;exports.absoluteToString=Ot;exports.buildBlockPackDist=bn;exports.calculateSha256=oe;exports.cpAbsoluteToRelative=ae;exports.getConfig=Ss;exports.loadPackDescription=xn;exports.loadPackDescriptionRaw=Yr;exports.mapLocalToAbsolute=vt;exports.packFolderToRelativeTgz=zr;exports.packageChannelPrefix=un;exports.packageChannelPrefixInsideV2=ln;exports.packageContentPrefix=$s;exports.packageContentPrefix$1=K;exports.packageContentPrefixInsideV2=Dt;exports.packageOverviewPath=yt;exports.packageOverviewPath$1=kt;exports.packageOverviewPathInsideV2=cn;exports.parsePackageName=Lt;exports.payloadFilePath=Gt;exports.relativeToContentString=Ur;exports.relativeToExplicitBinary64=Ln;exports.relativeToExplicitBytes=Q;exports.relativeToExplicitString=he;exports.semver=rn;exports.storageByUrl=dn;exports.tryLoadPackDescription=Dn;
3
+ //# sourceMappingURL=config-26zalc5o.js.map