@platforma-sdk/block-tools 2.4.2 → 2.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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/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 { 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 './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 'upload-package-v1': Cmd6\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","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"],"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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"}
@@ -3,13 +3,15 @@ import { default as Cmd1 } from './build-model';
3
3
  import { default as Cmd3 } from './mark-stable';
4
4
  import { default as Cmd4 } from './pack';
5
5
  import { default as Cmd5 } from './publish';
6
- import { default as Cmd6 } from './upload-package-v1';
6
+ import { default as Cmd6 } from './refresh-registry';
7
+ import { default as Cmd7 } from './upload-package-v1';
7
8
  export declare const COMMANDS: {
8
9
  'build-meta': typeof Cmd0;
9
10
  'build-model': typeof Cmd1;
10
11
  'mark-stable': typeof Cmd3;
11
12
  pack: typeof Cmd4;
12
13
  publish: typeof Cmd5;
13
- 'upload-package-v1': typeof Cmd6;
14
+ 'refresh-registry': typeof Cmd6;
15
+ 'upload-package-v1': typeof Cmd7;
14
16
  };
15
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cmd/index.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,cAAc,CAAC;AAChC,OAAO,IAAI,MAAM,eAAe,CAAC;AACjC,OAAO,IAAI,MAAM,eAAe,CAAC;AACjC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,qBAAqB,CAAC;AAGvC,eAAO,MAAM,QAAQ;;;;;;;CAOpB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cmd/index.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,cAAc,CAAC;AAChC,OAAO,IAAI,MAAM,eAAe,CAAC;AACjC,OAAO,IAAI,MAAM,eAAe,CAAC;AACjC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,IAAI,MAAM,qBAAqB,CAAC;AAGvC,eAAO,MAAM,QAAQ;;;;;;;;CAQpB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class RefreshRegistry extends Command {
3
+ static description: string;
4
+ static flags: {
5
+ registry: import('@oclif/core/interfaces').OptionFlag<string, import('@oclif/core/interfaces').CustomOptions>;
6
+ mode: import('@oclif/core/interfaces').OptionFlag<string, import('@oclif/core/interfaces').CustomOptions>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=refresh-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-registry.d.ts","sourceRoot":"","sources":["../../src/cmd/refresh-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAW7C,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IAClD,MAAM,CAAC,WAAW,SAA4E;IAE9F,MAAM,CAAC,KAAK;;;MAiBV;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAMlC"}
@@ -0,0 +1,3 @@
1
+ "use strict";var Rr=Object.defineProperty;var kr=(r,e,t)=>e in r?Rr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var ee=(r,e,t)=>kr(r,typeof e!="symbol"?e+"":e,t);const f=require("@milaboratories/pl-model-middle-layer"),y=require("zod"),F=require("node:path"),G=require("node:fs/promises"),Pr=require("mime-types"),yr=require("tar"),Ct=require("@milaboratories/resolve-helper"),Ge=require("@milaboratories/ts-helpers"),Nt=require("node:crypto"),Sr=require("yaml"),Or=require("node:os"),j=require("node:path/posix"),Tt=require("@aws-sdk/client-s3"),Ir=require("node:fs");function he(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const t in r)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>r[t]})}}return e.default=r,Object.freeze(e)}const pe=he(Pr),Cr=he(yr),nt=he(Or),J=he(Ir);function Lt(r){return y.z.string().transform((e,t)=>{const s=Ct.tryResolve(r,e);return s===void 0?(t.addIssue({code:y.z.ZodIssueCode.custom,message:`Can't resolve ${e} against ${r}`}),y.z.NEVER):{type:"absolute-file",file:s}})}function At(r,...e){return y.z.string().transform((t,s)=>{const o=t.endsWith("/")?t:`${t}/`;for(const a of e){const c=Ct.tryResolve(r,o+a);if(c!==void 0){if(!c.endsWith(a))throw new Error(`Unexpected resolve result ${c} with index file ${a}`);return{type:"absolute-folder",folder:c.slice(0,c.length-a.length)}}}return s.addIssue({code:y.z.ZodIssueCode.custom,message:`Can't resolve ${t} folder against ${r}, no index file found (${e.join(", ")})`}),y.z.NEVER})}function Le(r){return e=>e.type==="relative"?{type:"absolute-file",file:F.resolve(r,e.path)}:e}function ze(){return async r=>r.type==="absolute-file"?await G.readFile(r.file,{encoding:"utf-8"}):r.content}function Ft(){return async r=>{if(r.type==="absolute-file"){const e=pe.lookup(r.file);if(!e)throw new Error(`Can't recognize mime type of the file: ${r.file}.`);return{type:"explicit-base64",mimeType:e,content:await G.readFile(r.file,{encoding:"base64"})}}else return r}}function Bt(){return async r=>{if(r.type==="absolute-file"){const e=pe.lookup(r.file);if(!e)throw new Error(`Can't recognize mime type of the file: ${r.file}.`);return{type:"explicit-bytes",mimeType:e,content:Buffer.from(await G.readFile(r.file))}}else return r.type==="explicit-base64"?{type:"explicit-bytes",mimeType:r.mimeType,content:Buffer.from(r.content,"base64")}:r}}function ce(r,e){return async t=>{if(t.type==="absolute-file"){const s=F.basename(t.file),o=F.resolve(r,s);return e==null||e.push(s),await G.cp(t.file,o),{type:"relative",path:s}}else return t}}function bt(r,e,t){if(!e.endsWith(".tgz"))throw new Error(`Unexpected tgz file name: ${e}`);return async s=>{const o=F.resolve(r,e);return await Cr.create({gzip:!0,file:o,cwd:s.folder},["."]),t==null||t.push(e),{type:"relative",path:e}}}function ge(r){return async e=>e.type==="explicit-string"?e:{type:"explicit-string",content:(await r(e.path)).toString("utf8")}}function Dt(r){return async e=>e.type==="explicit-string"?e.content:(await r(e.path)).toString("utf8")}function Nr(r){return async e=>{if(e.type==="explicit-base64")return e;const t=pe.lookup(e.path);if(!t)throw new Error(`Can't recognize mime type of the file: ${e.path}.`);return{type:"explicit-base64",mimeType:t,content:(await r(e.path)).toString("base64")}}}function K(r){return async e=>{if(e.type==="explicit-base64")return{type:"explicit-bytes",mimeType:e.mimeType,content:Buffer.from(e.content,"base64")};const t=pe.lookup(e.path);if(!t)throw new Error(`Can't recognize mime type of the file: ${e.path}.`);return{type:"explicit-bytes",mimeType:t,content:await r(e.path)}}}function _t(r){return f.BlockPackMeta(f.DescriptionContentText.transform(Le(r)),f.DescriptionContentBinary.transform(Le(r)))}function xt(r,e){return f.BlockPackMeta(f.ContentAbsoluteTextLocal.transform(ce(r,e)),f.ContentAbsoluteBinaryLocal.transform(ce(r,e)))}const Tr=f.BlockPackMeta(f.ContentAbsoluteTextLocal.transform(ze()),f.ContentAbsoluteBinaryLocal.transform(Ft())).pipe(f.BlockPackMetaEmbeddedBase64),Lr=f.BlockPackMeta(f.ContentAbsoluteTextLocal.transform(ze()),f.ContentAbsoluteBinaryLocal.transform(Bt())).pipe(f.BlockPackMetaEmbeddedBytes);function Ar(r){return f.BlockPackMeta(f.ContentRelativeText.transform(Dt(r)),f.ContentRelativeBinary.transform(K(r))).pipe(f.BlockPackMetaEmbeddedBytes)}function jt(r){return f.BlockComponents(Lt(r),At(r,"index.html"))}function Gt(r,e){return f.BlockComponents(f.ContentAbsoluteBinaryLocal.transform(ce(r,e)),f.ContentAbsoluteFolder.transform(bt(r,"ui.tgz",e))).pipe(f.BlockComponentsManifest)}function Fr(r){return f.BlockComponents(f.ContentRelative.transform(f.mapRemoteToAbsolute(r)),f.ContentRelative.transform(f.mapRemoteToAbsolute(r)))}function Ve(r){return f.CreateBlockPackDescriptionSchema(jt(r),_t(r))}function zt(r,e){return f.CreateBlockPackDescriptionSchema(Gt(r,e),xt(r,e)).pipe(f.BlockPackDescriptionManifest)}function Ae(r){const e=f.addPrefixToRelative(r);return f.BlockPackDescriptionManifest.pipe(f.CreateBlockPackDescriptionSchema(f.BlockComponents(f.ContentRelative.transform(e),f.ContentRelative.transform(e)),f.BlockPackMeta(f.ContentRelativeText.transform(e),f.ContentRelativeBinary.transform(e)))).pipe(f.BlockPackDescriptionManifest)}async function Ue(r,e){try{return e(await G.readFile(r))}catch(t){if(t.code=="ENOENT")return;throw new Error("",{cause:t})}}async function le(r){return Buffer.from(await crypto.subtle.digest("sha-256",r)).toString("hex").toUpperCase()}async function Br(r,e){await G.mkdir(e,{recursive:!0});const t=[],s=await zt(e,t).parseAsync(r),o=await Promise.all(t.map(async c=>{const m=await G.readFile(F.resolve(e,c)),n=await le(m);return{name:c,size:m.length,sha256:n}})),a=f.BlockPackManifest.parse({schema:"v2",description:s,files:o,timestamp:Date.now()});return await G.writeFile(F.resolve(e,f.BlockPackManifestFile),JSON.stringify(a)),a}const fe="block",br=/(?:@[a-zA-Z0-9-.]+\/)?(?<organization>[a-zA-Z0-9-]+)\.(?<name>[a-zA-Z0-9-]+)/;function Me(r){const e=r.match(br);if(!e)throw new Error(`Malformed package name (${r}), can't infer organization and block pack name.`);const{name:t,organization:s}=e.groups;return{name:t,organization:s}}async function Dr(r,e){const t=F.resolve(r,"package.json");try{const s=await Ue(t,m=>JSON.parse(m.toString("utf-8")));if(s===void 0)return;const o=s[fe];if(o===void 0)return;const a={...f.BlockPackDescriptionFromPackageJsonRaw.parse(o),id:{...Me(Ge.notEmpty(s.name,`"name" not found in ${t}`)),version:f.SemVer.parse(s.version)}},c=await Ve(r).safeParseAsync(a);return c.success?c.data:void 0}catch(s){e==null||e.info(s);return}}async function Vt(r){const e=F.resolve(r,"package.json"),t=JSON.parse(await G.readFile(e,{encoding:"utf-8"})),s=t[fe];if(s===void 0)throw new Error(`Block description (field ${fe}) not found in ${e}.`);return{...f.BlockPackDescriptionFromPackageJsonRaw.parse(s),id:{...Me(Ge.notEmpty(t.name,`"name" not found in ${e}`)),version:f.SemVer.parse(t.version)}}}async function _r(r){const e=await Vt(r);return await Ve(r).parseAsync(e)}function xr(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var Fe={exports:{}};const jr="2.0.0",Ut=256,Gr=Number.MAX_SAFE_INTEGER||9007199254740991,zr=16,Vr=Ut-6,Ur=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var de={MAX_LENGTH:Ut,MAX_SAFE_COMPONENT_LENGTH:zr,MAX_SAFE_BUILD_LENGTH:Vr,MAX_SAFE_INTEGER:Gr,RELEASE_TYPES:Ur,SEMVER_SPEC_VERSION:jr,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2};const Mr=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...r)=>console.error("SEMVER",...r):()=>{};var me=Mr;(function(r,e){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:s,MAX_LENGTH:o}=de,a=me;e=r.exports={};const c=e.re=[],m=e.safeRe=[],n=e.src=[],i=e.t={};let h=0;const d="[a-zA-Z0-9-]",R=[["\\s",1],["\\d",o],[d,s]],g=O=>{for(const[C,N]of R)O=O.split(`${C}*`).join(`${C}{0,${N}}`).split(`${C}+`).join(`${C}{1,${N}}`);return O},l=(O,C,N)=>{const A=g(C),S=h++;a(O,S,C),i[O]=S,n[S]=C,c[S]=new RegExp(C,N?"g":void 0),m[S]=new RegExp(A,N?"g":void 0)};l("NUMERICIDENTIFIER","0|[1-9]\\d*"),l("NUMERICIDENTIFIERLOOSE","\\d+"),l("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${d}*`),l("MAINVERSION",`(${n[i.NUMERICIDENTIFIER]})\\.(${n[i.NUMERICIDENTIFIER]})\\.(${n[i.NUMERICIDENTIFIER]})`),l("MAINVERSIONLOOSE",`(${n[i.NUMERICIDENTIFIERLOOSE]})\\.(${n[i.NUMERICIDENTIFIERLOOSE]})\\.(${n[i.NUMERICIDENTIFIERLOOSE]})`),l("PRERELEASEIDENTIFIER",`(?:${n[i.NUMERICIDENTIFIER]}|${n[i.NONNUMERICIDENTIFIER]})`),l("PRERELEASEIDENTIFIERLOOSE",`(?:${n[i.NUMERICIDENTIFIERLOOSE]}|${n[i.NONNUMERICIDENTIFIER]})`),l("PRERELEASE",`(?:-(${n[i.PRERELEASEIDENTIFIER]}(?:\\.${n[i.PRERELEASEIDENTIFIER]})*))`),l("PRERELEASELOOSE",`(?:-?(${n[i.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${n[i.PRERELEASEIDENTIFIERLOOSE]})*))`),l("BUILDIDENTIFIER",`${d}+`),l("BUILD",`(?:\\+(${n[i.BUILDIDENTIFIER]}(?:\\.${n[i.BUILDIDENTIFIER]})*))`),l("FULLPLAIN",`v?${n[i.MAINVERSION]}${n[i.PRERELEASE]}?${n[i.BUILD]}?`),l("FULL",`^${n[i.FULLPLAIN]}$`),l("LOOSEPLAIN",`[v=\\s]*${n[i.MAINVERSIONLOOSE]}${n[i.PRERELEASELOOSE]}?${n[i.BUILD]}?`),l("LOOSE",`^${n[i.LOOSEPLAIN]}$`),l("GTLT","((?:<|>)?=?)"),l("XRANGEIDENTIFIERLOOSE",`${n[i.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),l("XRANGEIDENTIFIER",`${n[i.NUMERICIDENTIFIER]}|x|X|\\*`),l("XRANGEPLAIN",`[v=\\s]*(${n[i.XRANGEIDENTIFIER]})(?:\\.(${n[i.XRANGEIDENTIFIER]})(?:\\.(${n[i.XRANGEIDENTIFIER]})(?:${n[i.PRERELEASE]})?${n[i.BUILD]}?)?)?`),l("XRANGEPLAINLOOSE",`[v=\\s]*(${n[i.XRANGEIDENTIFIERLOOSE]})(?:\\.(${n[i.XRANGEIDENTIFIERLOOSE]})(?:\\.(${n[i.XRANGEIDENTIFIERLOOSE]})(?:${n[i.PRERELEASELOOSE]})?${n[i.BUILD]}?)?)?`),l("XRANGE",`^${n[i.GTLT]}\\s*${n[i.XRANGEPLAIN]}$`),l("XRANGELOOSE",`^${n[i.GTLT]}\\s*${n[i.XRANGEPLAINLOOSE]}$`),l("COERCEPLAIN",`(^|[^\\d])(\\d{1,${t}})(?:\\.(\\d{1,${t}}))?(?:\\.(\\d{1,${t}}))?`),l("COERCE",`${n[i.COERCEPLAIN]}(?:$|[^\\d])`),l("COERCEFULL",n[i.COERCEPLAIN]+`(?:${n[i.PRERELEASE]})?(?:${n[i.BUILD]})?(?:$|[^\\d])`),l("COERCERTL",n[i.COERCE],!0),l("COERCERTLFULL",n[i.COERCEFULL],!0),l("LONETILDE","(?:~>?)"),l("TILDETRIM",`(\\s*)${n[i.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",l("TILDE",`^${n[i.LONETILDE]}${n[i.XRANGEPLAIN]}$`),l("TILDELOOSE",`^${n[i.LONETILDE]}${n[i.XRANGEPLAINLOOSE]}$`),l("LONECARET","(?:\\^)"),l("CARETTRIM",`(\\s*)${n[i.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",l("CARET",`^${n[i.LONECARET]}${n[i.XRANGEPLAIN]}$`),l("CARETLOOSE",`^${n[i.LONECARET]}${n[i.XRANGEPLAINLOOSE]}$`),l("COMPARATORLOOSE",`^${n[i.GTLT]}\\s*(${n[i.LOOSEPLAIN]})$|^$`),l("COMPARATOR",`^${n[i.GTLT]}\\s*(${n[i.FULLPLAIN]})$|^$`),l("COMPARATORTRIM",`(\\s*)${n[i.GTLT]}\\s*(${n[i.LOOSEPLAIN]}|${n[i.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",l("HYPHENRANGE",`^\\s*(${n[i.XRANGEPLAIN]})\\s+-\\s+(${n[i.XRANGEPLAIN]})\\s*$`),l("HYPHENRANGELOOSE",`^\\s*(${n[i.XRANGEPLAINLOOSE]})\\s+-\\s+(${n[i.XRANGEPLAINLOOSE]})\\s*$`),l("STAR","(<|>)?=?\\s*\\*"),l("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),l("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(Fe,Fe.exports);var Z=Fe.exports;const Xr=Object.freeze({loose:!0}),qr=Object.freeze({}),Jr=r=>r?typeof r!="object"?Xr:r:qr;var Xe=Jr;const it=/^[0-9]+$/,Mt=(r,e)=>{const t=it.test(r),s=it.test(e);return t&&s&&(r=+r,e=+e),r===e?0:t&&!s?-1:s&&!t?1:r<e?-1:1},Wr=(r,e)=>Mt(e,r);var Xt={compareIdentifiers:Mt,rcompareIdentifiers:Wr};const te=me,{MAX_LENGTH:at,MAX_SAFE_INTEGER:re}=de,{safeRe:ot,t:ct}=Z,Hr=Xe,{compareIdentifiers:U}=Xt;let Yr=class x{constructor(e,t){if(t=Hr(t),e instanceof x){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>at)throw new TypeError(`version is longer than ${at} characters`);te("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const s=e.trim().match(t.loose?ot[ct.LOOSE]:ot[ct.FULL]);if(!s)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+s[1],this.minor=+s[2],this.patch=+s[3],this.major>re||this.major<0)throw new TypeError("Invalid major version");if(this.minor>re||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>re||this.patch<0)throw new TypeError("Invalid patch version");s[4]?this.prerelease=s[4].split(".").map(o=>{if(/^[0-9]+$/.test(o)){const a=+o;if(a>=0&&a<re)return a}return o}):this.prerelease=[],this.build=s[5]?s[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(te("SemVer.compare",this.version,this.options,e),!(e instanceof x)){if(typeof e=="string"&&e===this.version)return 0;e=new x(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof x||(e=new x(e,this.options)),U(this.major,e.major)||U(this.minor,e.minor)||U(this.patch,e.patch)}comparePre(e){if(e instanceof x||(e=new x(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{const s=this.prerelease[t],o=e.prerelease[t];if(te("prerelease compare",t,s,o),s===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(s===void 0)return-1;if(s===o)continue;return U(s,o)}while(++t)}compareBuild(e){e instanceof x||(e=new x(e,this.options));let t=0;do{const s=this.build[t],o=e.build[t];if(te("build compare",t,s,o),s===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(s===void 0)return-1;if(s===o)continue;return U(s,o)}while(++t)}inc(e,t,s){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,s);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,s);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,s),this.inc("pre",t,s);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,s),this.inc("pre",t,s);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{const o=Number(s)?1:0;if(!t&&s===!1)throw new Error("invalid increment argument: identifier is empty");if(this.prerelease.length===0)this.prerelease=[o];else{let a=this.prerelease.length;for(;--a>=0;)typeof this.prerelease[a]=="number"&&(this.prerelease[a]++,a=-2);if(a===-1){if(t===this.prerelease.join(".")&&s===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(o)}}if(t){let a=[t,o];s===!1&&(a=[t]),U(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=a):this.prerelease=a}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};var B=Yr;const lt=B,Kr=(r,e,t=!1)=>{if(r instanceof lt)return r;try{return new lt(r,e)}catch(s){if(!t)return null;throw s}};var M=Kr;const Zr=M,Qr=(r,e)=>{const t=Zr(r,e);return t?t.version:null};var es=Qr;const ts=M,rs=(r,e)=>{const t=ts(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};var ss=rs;const ft=B,ns=(r,e,t,s,o)=>{typeof t=="string"&&(o=s,s=t,t=void 0);try{return new ft(r instanceof ft?r.version:r,t).inc(e,s,o).version}catch{return null}};var is=ns;const ut=M,as=(r,e)=>{const t=ut(r,null,!0),s=ut(e,null,!0),o=t.compare(s);if(o===0)return null;const a=o>0,c=a?t:s,m=a?s:t,n=!!c.prerelease.length;if(!!m.prerelease.length&&!n)return!m.patch&&!m.minor?"major":c.patch?"patch":c.minor?"minor":"major";const h=n?"pre":"";return t.major!==s.major?h+"major":t.minor!==s.minor?h+"minor":t.patch!==s.patch?h+"patch":"prerelease"};var os=as;const cs=B,ls=(r,e)=>new cs(r,e).major;var fs=ls;const us=B,hs=(r,e)=>new us(r,e).minor;var ps=hs;const gs=B,ds=(r,e)=>new gs(r,e).patch;var ms=ds;const $s=M,Es=(r,e)=>{const t=$s(r,e);return t&&t.prerelease.length?t.prerelease:null};var vs=Es;const ht=B,ws=(r,e,t)=>new ht(r,t).compare(new ht(e,t));var D=ws;const Rs=D,ks=(r,e,t)=>Rs(e,r,t);var Ps=ks;const ys=D,Ss=(r,e)=>ys(r,e,!0);var Os=Ss;const pt=B,Is=(r,e,t)=>{const s=new pt(r,t),o=new pt(e,t);return s.compare(o)||s.compareBuild(o)};var qe=Is;const Cs=qe,Ns=(r,e)=>r.sort((t,s)=>Cs(t,s,e));var Ts=Ns;const Ls=qe,As=(r,e)=>r.sort((t,s)=>Ls(s,t,e));var Fs=As;const Bs=D,bs=(r,e,t)=>Bs(r,e,t)>0;var $e=bs;const Ds=D,_s=(r,e,t)=>Ds(r,e,t)<0;var Je=_s;const xs=D,js=(r,e,t)=>xs(r,e,t)===0;var qt=js;const Gs=D,zs=(r,e,t)=>Gs(r,e,t)!==0;var Jt=zs;const Vs=D,Us=(r,e,t)=>Vs(r,e,t)>=0;var We=Us;const Ms=D,Xs=(r,e,t)=>Ms(r,e,t)<=0;var He=Xs;const qs=qt,Js=Jt,Ws=$e,Hs=We,Ys=Je,Ks=He,Zs=(r,e,t,s)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return qs(r,t,s);case"!=":return Js(r,t,s);case">":return Ws(r,t,s);case">=":return Hs(r,t,s);case"<":return Ys(r,t,s);case"<=":return Ks(r,t,s);default:throw new TypeError(`Invalid operator: ${e}`)}};var Wt=Zs;const Qs=B,en=M,{safeRe:se,t:ne}=Z,tn=(r,e)=>{if(r instanceof Qs)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(e.includePrerelease?se[ne.COERCEFULL]:se[ne.COERCE]);else{const n=e.includePrerelease?se[ne.COERCERTLFULL]:se[ne.COERCERTL];let i;for(;(i=n.exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||i.index+i[0].length!==t.index+t[0].length)&&(t=i),n.lastIndex=i.index+i[1].length+i[2].length;n.lastIndex=-1}if(t===null)return null;const s=t[2],o=t[3]||"0",a=t[4]||"0",c=e.includePrerelease&&t[5]?`-${t[5]}`:"",m=e.includePrerelease&&t[6]?`+${t[6]}`:"";return en(`${s}.${o}.${a}${c}${m}`,e)};var rn=tn;class sn{constructor(){this.max=1e3,this.map=new Map}get(e){const t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){const o=this.map.keys().next().value;this.delete(o)}this.map.set(e,t)}return this}}var nn=sn,Pe,gt;function _(){if(gt)return Pe;gt=1;const r=/\s+/g;class e{constructor(u,v){if(v=o(v),u instanceof e)return u.loose===!!v.loose&&u.includePrerelease===!!v.includePrerelease?u:new e(u.raw,v);if(u instanceof a)return this.raw=u.value,this.set=[[u]],this.formatted=void 0,this;if(this.options=v,this.loose=!!v.loose,this.includePrerelease=!!v.includePrerelease,this.raw=u.trim().replace(r," "),this.set=this.raw.split("||").map($=>this.parseRange($.trim())).filter($=>$.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const $=this.set[0];if(this.set=this.set.filter(w=>!O(w[0])),this.set.length===0)this.set=[$];else if(this.set.length>1){for(const w of this.set)if(w.length===1&&C(w[0])){this.set=[w];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let u=0;u<this.set.length;u++){u>0&&(this.formatted+="||");const v=this.set[u];for(let $=0;$<v.length;$++)$>0&&(this.formatted+=" "),this.formatted+=v[$].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(u){const $=((this.options.includePrerelease&&g)|(this.options.loose&&l))+":"+u,w=s.get($);if(w)return w;const E=this.options.loose,k=E?n[i.HYPHENRANGELOOSE]:n[i.HYPHENRANGE];u=u.replace(k,vr(this.options.includePrerelease)),c("hyphen replace",u),u=u.replace(n[i.COMPARATORTRIM],h),c("comparator trim",u),u=u.replace(n[i.TILDETRIM],d),c("tilde trim",u),u=u.replace(n[i.CARETTRIM],R),c("caret trim",u);let I=u.split(" ").map(L=>A(L,this.options)).join(" ").split(/\s+/).map(L=>Er(L,this.options));E&&(I=I.filter(L=>(c("loose invalid filter",L,this.options),!!L.match(n[i.COMPARATORLOOSE])))),c("range list",I);const P=new Map,T=I.map(L=>new a(L,this.options));for(const L of T){if(O(L))return[L];P.set(L.value,L)}P.size>1&&P.has("")&&P.delete("");const b=[...P.values()];return s.set($,b),b}intersects(u,v){if(!(u instanceof e))throw new TypeError("a Range is required");return this.set.some($=>N($,v)&&u.set.some(w=>N(w,v)&&$.every(E=>w.every(k=>E.intersects(k,v)))))}test(u){if(!u)return!1;if(typeof u=="string")try{u=new m(u,this.options)}catch{return!1}for(let v=0;v<this.set.length;v++)if(wr(this.set[v],u,this.options))return!0;return!1}}Pe=e;const t=nn,s=new t,o=Xe,a=Ee(),c=me,m=B,{safeRe:n,t:i,comparatorTrimReplace:h,tildeTrimReplace:d,caretTrimReplace:R}=Z,{FLAG_INCLUDE_PRERELEASE:g,FLAG_LOOSE:l}=de,O=p=>p.value==="<0.0.0-0",C=p=>p.value==="",N=(p,u)=>{let v=!0;const $=p.slice();let w=$.pop();for(;v&&$.length;)v=$.every(E=>w.intersects(E,u)),w=$.pop();return v},A=(p,u)=>(c("comp",p,u),p=pr(p,u),c("caret",p),p=z(p,u),c("tildes",p),p=dr(p,u),c("xrange",p),p=$r(p,u),c("stars",p),p),S=p=>!p||p.toLowerCase()==="x"||p==="*",z=(p,u)=>p.trim().split(/\s+/).map(v=>X(v,u)).join(" "),X=(p,u)=>{const v=u.loose?n[i.TILDELOOSE]:n[i.TILDE];return p.replace(v,($,w,E,k,I)=>{c("tilde",p,$,w,E,k,I);let P;return S(w)?P="":S(E)?P=`>=${w}.0.0 <${+w+1}.0.0-0`:S(k)?P=`>=${w}.${E}.0 <${w}.${+E+1}.0-0`:I?(c("replaceTilde pr",I),P=`>=${w}.${E}.${k}-${I} <${w}.${+E+1}.0-0`):P=`>=${w}.${E}.${k} <${w}.${+E+1}.0-0`,c("tilde return",P),P})},pr=(p,u)=>p.trim().split(/\s+/).map(v=>gr(v,u)).join(" "),gr=(p,u)=>{c("caret",p,u);const v=u.loose?n[i.CARETLOOSE]:n[i.CARET],$=u.includePrerelease?"-0":"";return p.replace(v,(w,E,k,I,P)=>{c("caret",p,w,E,k,I,P);let T;return S(E)?T="":S(k)?T=`>=${E}.0.0${$} <${+E+1}.0.0-0`:S(I)?E==="0"?T=`>=${E}.${k}.0${$} <${E}.${+k+1}.0-0`:T=`>=${E}.${k}.0${$} <${+E+1}.0.0-0`:P?(c("replaceCaret pr",P),E==="0"?k==="0"?T=`>=${E}.${k}.${I}-${P} <${E}.${k}.${+I+1}-0`:T=`>=${E}.${k}.${I}-${P} <${E}.${+k+1}.0-0`:T=`>=${E}.${k}.${I}-${P} <${+E+1}.0.0-0`):(c("no pr"),E==="0"?k==="0"?T=`>=${E}.${k}.${I}${$} <${E}.${k}.${+I+1}-0`:T=`>=${E}.${k}.${I}${$} <${E}.${+k+1}.0-0`:T=`>=${E}.${k}.${I} <${+E+1}.0.0-0`),c("caret return",T),T})},dr=(p,u)=>(c("replaceXRanges",p,u),p.split(/\s+/).map(v=>mr(v,u)).join(" ")),mr=(p,u)=>{p=p.trim();const v=u.loose?n[i.XRANGELOOSE]:n[i.XRANGE];return p.replace(v,($,w,E,k,I,P)=>{c("xRange",p,$,w,E,k,I,P);const T=S(E),b=T||S(k),L=b||S(I),q=L;return w==="="&&q&&(w=""),P=u.includePrerelease?"-0":"",T?w===">"||w==="<"?$="<0.0.0-0":$="*":w&&q?(b&&(k=0),I=0,w===">"?(w=">=",b?(E=+E+1,k=0,I=0):(k=+k+1,I=0)):w==="<="&&(w="<",b?E=+E+1:k=+k+1),w==="<"&&(P="-0"),$=`${w+E}.${k}.${I}${P}`):b?$=`>=${E}.0.0${P} <${+E+1}.0.0-0`:L&&($=`>=${E}.${k}.0${P} <${E}.${+k+1}.0-0`),c("xRange return",$),$})},$r=(p,u)=>(c("replaceStars",p,u),p.trim().replace(n[i.STAR],"")),Er=(p,u)=>(c("replaceGTE0",p,u),p.trim().replace(n[u.includePrerelease?i.GTE0PRE:i.GTE0],"")),vr=p=>(u,v,$,w,E,k,I,P,T,b,L,q)=>(S($)?v="":S(w)?v=`>=${$}.0.0${p?"-0":""}`:S(E)?v=`>=${$}.${w}.0${p?"-0":""}`:k?v=`>=${v}`:v=`>=${v}${p?"-0":""}`,S(T)?P="":S(b)?P=`<${+T+1}.0.0-0`:S(L)?P=`<${T}.${+b+1}.0-0`:q?P=`<=${T}.${b}.${L}-${q}`:p?P=`<${T}.${b}.${+L+1}-0`:P=`<=${P}`,`${v} ${P}`.trim()),wr=(p,u,v)=>{for(let $=0;$<p.length;$++)if(!p[$].test(u))return!1;if(u.prerelease.length&&!v.includePrerelease){for(let $=0;$<p.length;$++)if(c(p[$].semver),p[$].semver!==a.ANY&&p[$].semver.prerelease.length>0){const w=p[$].semver;if(w.major===u.major&&w.minor===u.minor&&w.patch===u.patch)return!0}return!1}return!0};return Pe}var ye,dt;function Ee(){if(dt)return ye;dt=1;const r=Symbol("SemVer ANY");class e{static get ANY(){return r}constructor(h,d){if(d=t(d),h instanceof e){if(h.loose===!!d.loose)return h;h=h.value}h=h.trim().split(/\s+/).join(" "),c("comparator",h,d),this.options=d,this.loose=!!d.loose,this.parse(h),this.semver===r?this.value="":this.value=this.operator+this.semver.version,c("comp",this)}parse(h){const d=this.options.loose?s[o.COMPARATORLOOSE]:s[o.COMPARATOR],R=h.match(d);if(!R)throw new TypeError(`Invalid comparator: ${h}`);this.operator=R[1]!==void 0?R[1]:"",this.operator==="="&&(this.operator=""),R[2]?this.semver=new m(R[2],this.options.loose):this.semver=r}toString(){return this.value}test(h){if(c("Comparator.test",h,this.options.loose),this.semver===r||h===r)return!0;if(typeof h=="string")try{h=new m(h,this.options)}catch{return!1}return a(h,this.operator,this.semver,this.options)}intersects(h,d){if(!(h instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new n(h.value,d).test(this.value):h.operator===""?h.value===""?!0:new n(this.value,d).test(h.semver):(d=t(d),d.includePrerelease&&(this.value==="<0.0.0-0"||h.value==="<0.0.0-0")||!d.includePrerelease&&(this.value.startsWith("<0.0.0")||h.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&h.operator.startsWith(">")||this.operator.startsWith("<")&&h.operator.startsWith("<")||this.semver.version===h.semver.version&&this.operator.includes("=")&&h.operator.includes("=")||a(this.semver,"<",h.semver,d)&&this.operator.startsWith(">")&&h.operator.startsWith("<")||a(this.semver,">",h.semver,d)&&this.operator.startsWith("<")&&h.operator.startsWith(">")))}}ye=e;const t=Xe,{safeRe:s,t:o}=Z,a=Wt,c=me,m=B,n=_();return ye}const an=_(),on=(r,e,t)=>{try{e=new an(e,t)}catch{return!1}return e.test(r)};var ve=on;const cn=_(),ln=(r,e)=>new cn(r,e).set.map(t=>t.map(s=>s.value).join(" ").trim().split(" "));var fn=ln;const un=B,hn=_(),pn=(r,e,t)=>{let s=null,o=null,a=null;try{a=new hn(e,t)}catch{return null}return r.forEach(c=>{a.test(c)&&(!s||o.compare(c)===-1)&&(s=c,o=new un(s,t))}),s};var gn=pn;const dn=B,mn=_(),$n=(r,e,t)=>{let s=null,o=null,a=null;try{a=new mn(e,t)}catch{return null}return r.forEach(c=>{a.test(c)&&(!s||o.compare(c)===1)&&(s=c,o=new dn(s,t))}),s};var En=$n;const Se=B,vn=_(),mt=$e,wn=(r,e)=>{r=new vn(r,e);let t=new Se("0.0.0");if(r.test(t)||(t=new Se("0.0.0-0"),r.test(t)))return t;t=null;for(let s=0;s<r.set.length;++s){const o=r.set[s];let a=null;o.forEach(c=>{const m=new Se(c.semver.version);switch(c.operator){case">":m.prerelease.length===0?m.patch++:m.prerelease.push(0),m.raw=m.format();case"":case">=":(!a||mt(m,a))&&(a=m);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${c.operator}`)}}),a&&(!t||mt(t,a))&&(t=a)}return t&&r.test(t)?t:null};var Rn=wn;const kn=_(),Pn=(r,e)=>{try{return new kn(r,e).range||"*"}catch{return null}};var yn=Pn;const Sn=B,Ht=Ee(),{ANY:On}=Ht,In=_(),Cn=ve,$t=$e,Et=Je,Nn=He,Tn=We,Ln=(r,e,t,s)=>{r=new Sn(r,s),e=new In(e,s);let o,a,c,m,n;switch(t){case">":o=$t,a=Nn,c=Et,m=">",n=">=";break;case"<":o=Et,a=Tn,c=$t,m="<",n="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Cn(r,e,s))return!1;for(let i=0;i<e.set.length;++i){const h=e.set[i];let d=null,R=null;if(h.forEach(g=>{g.semver===On&&(g=new Ht(">=0.0.0")),d=d||g,R=R||g,o(g.semver,d.semver,s)?d=g:c(g.semver,R.semver,s)&&(R=g)}),d.operator===m||d.operator===n||(!R.operator||R.operator===m)&&a(r,R.semver))return!1;if(R.operator===n&&c(r,R.semver))return!1}return!0};var Ye=Ln;const An=Ye,Fn=(r,e,t)=>An(r,e,">",t);var Bn=Fn;const bn=Ye,Dn=(r,e,t)=>bn(r,e,"<",t);var _n=Dn;const vt=_(),xn=(r,e,t)=>(r=new vt(r,t),e=new vt(e,t),r.intersects(e,t));var jn=xn;const Gn=ve,zn=D;var Vn=(r,e,t)=>{const s=[];let o=null,a=null;const c=r.sort((h,d)=>zn(h,d,t));for(const h of c)Gn(h,e,t)?(a=h,o||(o=h)):(a&&s.push([o,a]),a=null,o=null);o&&s.push([o,null]);const m=[];for(const[h,d]of s)h===d?m.push(h):!d&&h===c[0]?m.push("*"):d?h===c[0]?m.push(`<=${d}`):m.push(`${h} - ${d}`):m.push(`>=${h}`);const n=m.join(" || "),i=typeof e.raw=="string"?e.raw:String(e);return n.length<i.length?n:e};const wt=_(),Ke=Ee(),{ANY:Oe}=Ke,W=ve,Ze=D,Un=(r,e,t={})=>{if(r===e)return!0;r=new wt(r,t),e=new wt(e,t);let s=!1;e:for(const o of r.set){for(const a of e.set){const c=Xn(o,a,t);if(s=s||c!==null,c)continue e}if(s)return!1}return!0},Mn=[new Ke(">=0.0.0-0")],Rt=[new Ke(">=0.0.0")],Xn=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===Oe){if(e.length===1&&e[0].semver===Oe)return!0;t.includePrerelease?r=Mn:r=Rt}if(e.length===1&&e[0].semver===Oe){if(t.includePrerelease)return!0;e=Rt}const s=new Set;let o,a;for(const g of r)g.operator===">"||g.operator===">="?o=kt(o,g,t):g.operator==="<"||g.operator==="<="?a=Pt(a,g,t):s.add(g.semver);if(s.size>1)return null;let c;if(o&&a){if(c=Ze(o.semver,a.semver,t),c>0)return null;if(c===0&&(o.operator!==">="||a.operator!=="<="))return null}for(const g of s){if(o&&!W(g,String(o),t)||a&&!W(g,String(a),t))return null;for(const l of e)if(!W(g,String(l),t))return!1;return!0}let m,n,i,h,d=a&&!t.includePrerelease&&a.semver.prerelease.length?a.semver:!1,R=o&&!t.includePrerelease&&o.semver.prerelease.length?o.semver:!1;d&&d.prerelease.length===1&&a.operator==="<"&&d.prerelease[0]===0&&(d=!1);for(const g of e){if(h=h||g.operator===">"||g.operator===">=",i=i||g.operator==="<"||g.operator==="<=",o){if(R&&g.semver.prerelease&&g.semver.prerelease.length&&g.semver.major===R.major&&g.semver.minor===R.minor&&g.semver.patch===R.patch&&(R=!1),g.operator===">"||g.operator===">="){if(m=kt(o,g,t),m===g&&m!==o)return!1}else if(o.operator===">="&&!W(o.semver,String(g),t))return!1}if(a){if(d&&g.semver.prerelease&&g.semver.prerelease.length&&g.semver.major===d.major&&g.semver.minor===d.minor&&g.semver.patch===d.patch&&(d=!1),g.operator==="<"||g.operator==="<="){if(n=Pt(a,g,t),n===g&&n!==a)return!1}else if(a.operator==="<="&&!W(a.semver,String(g),t))return!1}if(!g.operator&&(a||o)&&c!==0)return!1}return!(o&&i&&!a&&c!==0||a&&h&&!o&&c!==0||R||d)},kt=(r,e,t)=>{if(!r)return e;const s=Ze(r.semver,e.semver,t);return s>0?r:s<0||e.operator===">"&&r.operator===">="?e:r},Pt=(r,e,t)=>{if(!r)return e;const s=Ze(r.semver,e.semver,t);return s<0?r:s>0||e.operator==="<"&&r.operator==="<="?e:r};var qn=Un;const Ie=Z,yt=de,Jn=B,St=Xt,Wn=M,Hn=es,Yn=ss,Kn=is,Zn=os,Qn=fs,ei=ps,ti=ms,ri=vs,si=D,ni=Ps,ii=Os,ai=qe,oi=Ts,ci=Fs,li=$e,fi=Je,ui=qt,hi=Jt,pi=We,gi=He,di=Wt,mi=rn,$i=Ee(),Ei=_(),vi=ve,wi=fn,Ri=gn,ki=En,Pi=Rn,yi=yn,Si=Ye,Oi=Bn,Ii=_n,Ci=jn,Ni=Vn,Ti=qn;var Yt={parse:Wn,valid:Hn,clean:Yn,inc:Kn,diff:Zn,major:Qn,minor:ei,patch:ti,prerelease:ri,compare:si,rcompare:ni,compareLoose:ii,compareBuild:ai,sort:oi,rsort:ci,gt:li,lt:fi,eq:ui,neq:hi,gte:pi,lte:gi,cmp:di,coerce:mi,Comparator:$i,Range:Ei,satisfies:vi,toComparators:wi,maxSatisfying:Ri,minSatisfying:ki,minVersion:Pi,validRange:yi,outside:Si,gtr:Oi,ltr:Ii,intersects:Ci,simplifyRange:Ni,subset:Ti,SemVer:Jn,re:Ie.re,src:Ie.src,tokens:Ie.t,SEMVER_SPEC_VERSION:yt.SEMVER_SPEC_VERSION,RELEASE_TYPES:yt.RELEASE_TYPES,compareIdentifiers:St.compareIdentifiers,rcompareIdentifiers:St.rcompareIdentifiers};const Li=xr(Yt),Be="_updates_v2/per_package_version/";function Ai(r,e){return`${Be}${r.organization}/${r.name}/${r.version}/${e}`}const Fi=/(?<packageKeyWithoutVersion>(?<organization>[^\/]+)\/(?<name>[^\/]+))\/(?<version>[^\/]+)\/(?<seed>[^\/]+)$/,Ce="_updates_v2/_global_update_in",Ot="_updates_v2/_global_update_out",Q="v2/",Kt="overview.json",Zt="overview.json",Y="manifest.json",ue="channels",ie=/^[-a-z0-9]+$/;function Qe(r){return`${r.organization}/${r.name}/${r.version}`}function H(r){return`${Q}${Qe(r)}`}const Qt="/"+Y,er=y.z.object({description:f.BlockPackDescriptionManifest,channels:y.z.array(y.z.string()).default(()=>[]),manifestSha256:f.Sha256Schema}),be=y.z.object({schema:y.z.literal("v2"),versions:y.z.array(er)});function tr(r){return`${r.organization}/${r.name}/${Zt}`}function De(r){return`${Q}${tr(r)}`}function rr(r){return`${Qe(r)}/${ue}/`}function sr(r){return`${Q}${rr(r)}`}const ae=`${Q}${Kt}`;function et(r){const e=y.z.object({id:f.BlockPackIdNoVersion,allVersions:y.z.array(y.z.string()).optional(),allVersionsWithChannels:y.z.array(f.VersionWithChannels).optional(),latest:r,latestManifestSha256:f.Sha256Schema,latestByChannel:y.z.record(y.z.string(),y.z.object({description:r,manifestSha256:f.Sha256Schema})).default({})});return e.transform(t=>t.allVersionsWithChannels?t:{...t,allVersionsWithChannels:t.allVersions.map(s=>({version:s,channels:[]}))}).transform(t=>t.latestByChannel[f.AnyChannel]?t:{...t,latestByChannel:{...t.latestByChannel,[f.AnyChannel]:{description:t.latest,manifestSha256:t.latestManifestSha256}}}).pipe(e.required({allVersionsWithChannels:!0}))}const Bi=et(f.BlockPackDescriptionManifest);function we(r){return y.z.object({schema:y.z.literal("v2"),packages:y.z.array(et(r))})}const _e=we(f.BlockPackDescriptionManifest);function bi(r){return f.CreateBlockPackDescriptionSchema(f.BlockComponentsManifest,f.BlockPackMeta(f.ContentRelativeText.transform(ge(r)),f.ContentRelativeBinary.transform(K(r))))}function Di(r){return we(f.CreateBlockPackDescriptionSchema(f.BlockComponentsManifest,f.BlockPackMeta(f.ContentRelativeText.transform(ge(r)),f.ContentRelativeBinary.transform(K(r)))))}function _i(r){return we(f.CreateBlockPackDescriptionSchema(f.BlockComponentsManifest,f.BlockPackMeta(f.ContentRelativeText.transform(ge(r)),f.ContentRelativeBinary.transform(K(r)))))}class xi{constructor(e,t=new Ge.ConsoleLoggerAdapter){this.storage=e,this.logger=t}async updateRegistry(e=!1){this.logger.info("Initiating registry refresh...");const t=new Map,s=[],o=await this.storage.listFiles(Be);this.logger.info("Packages to be updated:");for(const n of o){const i=n.match(Fi);if(!i)continue;s.push(n);const{packageKeyWithoutVersion:h,organization:d,name:R,version:g,seed:l}=i.groups;let O=t.get(h),C=!1;O?O.versions.has(g)||(O.versions.add(g),C=!0):(t.set(h,{package:{organization:d,name:R},versions:new Set([g])}),C=!0),this.logger.info(` - ${d}:${R}:${g} added:${C}`)}const a=await this.storage.getFile(ae);let m=(a===void 0?{schema:"v2",packages:[]}:_e.parse(JSON.parse(a.toString()))).packages;this.logger.info(`Global overview loaded, ${m.length} records`);for(const[,n]of t.entries()){const i=De(n.package),h=await this.storage.getFile(i),d=h===void 0?{schema:"v2",versions:[]}:be.parse(JSON.parse(h.toString()));this.logger.info(`Updating ${n.package.organization}:${n.package.name} overview, ${d.versions.length} records`);const R=d.versions.filter(l=>!n.versions.has(l.description.id.version));for(const[l]of n.versions.entries()){const O=l.toString(),C={...n.package,version:O},N=await this.storage.getFile(H(C)+Qt);if(!N)continue;const A=await le(N),S=(await this.storage.listFiles(sr(C))).filter(z=>z.match(ie)?!0:(this.logger.warn(`Unexpected channel in ${f.blockPackIdToString(C)}: ${z}`),!1));R.push({description:Ae(O).parse(f.BlockPackManifest.parse(JSON.parse(N.toString("utf8"))).description),manifestSha256:A,channels:S})}R.sort((l,O)=>Yt.compare(O.description.id.version,l.description.id.version)),e||await this.storage.putFile(i,Buffer.from(JSON.stringify({schema:"v2",versions:R}))),this.logger.info(`Done (${R.length} records)`);const g=new Set;for(const l of R)for(const O of l.channels)g.add(O);m=m.filter(l=>l.id.organization!==n.package.organization||l.id.name!==n.package.name),m.push({id:{organization:n.package.organization,name:n.package.name},allVersions:R.map(l=>l.description.id.version).reverse(),allVersionsWithChannels:R.map(l=>({version:l.description.id.version,channels:l.channels})).reverse(),latest:Ae(`${n.package.organization}/${n.package.name}`).parse(R[0].description),latestManifestSha256:R[0].manifestSha256,latestByChannel:Object.fromEntries([...g,f.AnyChannel].map(l=>{const O=R.find(C=>l===f.AnyChannel||C.channels.indexOf(l)!==-1);if(!O)throw new Error("Assertion error");return[l,{description:O.description,manifestSha256:O==null?void 0:O.manifestSha256}]}))})}e||await this.storage.putFile(ae,Buffer.from(JSON.stringify({schema:"v2",packages:m}))),this.logger.info(`Global overview updated (${m.length} records)`),e||await this.storage.deleteFiles(...s.map(n=>`${Be}${n}`)),this.logger.info("Version update requests cleared")}async updateIfNeeded(e="normal"){this.logger.info("Checking if registry requires refresh...");const t=await this.storage.getFile(Ce),s=await this.storage.getFile(Ot);if(e!=="force"&&t===void 0&&s===void 0){this.logger.info("No global seed files found, update not needed.");return}if(e!=="force"&&t!==void 0&&s!==void 0&&t.equals(s)){this.logger.info("Registry is up to date.");return}await this.updateRegistry(e==="dry-run"),t&&(e!=="dry-run"&&await this.storage.putFile(Ot,t),this.logger.info("Refresh finished."))}async getPackageOverview(e){const t=await this.storage.getFile(De(e));if(t!==void 0)return be.parse(JSON.parse(t.toString()))}async getGlobalOverview(){const e=await this.storage.getFile(ae);if(e!==void 0)return _e.parse(JSON.parse(e.toString()))}async marchChanged(e){const t=Nt.randomUUID(),s=Ai(e,t);this.logger.info(`Creating update seed at ${s} ...`),await this.storage.putFile(s,Buffer.from(t)),this.logger.info(`Touching global update seed ${Ce} ...`),await this.storage.putFile(Ce,Buffer.from(t))}async addPackageToChannel(e,t){if(!t.match(ie))throw new Error(`Illegal characters in channel name: ${t}`);const s=H(e);if(await this.storage.getFile(`${s}/${Y}`)===void 0)throw new Error(`Package ${f.blockPackIdToString(e)} not found in the registry.`);await this.storage.putFile(`${s}/${ue}/${t}`,Buffer.from(t)),await this.marchChanged(e)}async removePackageFromChannel(e,t){if(!t.match(ie))throw new Error(`Illegal characters in channel name: ${t}`);const s=H(e);if(await this.storage.getFile(`${s}/${Y}`)===void 0)throw new Error(`Package ${f.blockPackIdToString(e)} not found in the registry.`);await this.storage.deleteFiles(`${s}/${ue}/${t}`),await this.marchChanged(e)}async publishPackage(e,t){const s=H(e.description.id);for(const a of e.files){const c=await t(a.name);if(c.length!==a.size)throw new Error(`Actual file size don't match file size from the manifest file for ${a.name} (actual = ${c.length}; manifest = ${a.size})`);const m=await le(c);if(m!==a.sha256.toUpperCase())throw new Error(`Actual file SHA-256 don't match the checksum from the manifest file for ${a.name} (actual = ${m}; manifest = ${a.sha256.toUpperCase()})`);const n=s+"/"+a.name;this.logger.info(`Uploading ${a.name} -> ${n} ...`),await this.storage.putFile(n,c)}const o=s+"/"+Y;this.logger.info(`Uploading manifest to ${o} ...`),await this.storage.putFile(o,Buffer.from(JSON.stringify(e))),await this.marchChanged(e.description.id)}}class nr{constructor(e,t,s){this.client=e,this.bucket=t,this.root=s}async getFile(e){try{return Buffer.from(await(await this.client.getObject({Bucket:this.bucket,Key:j.join(this.root,e)})).Body.transformToByteArray())}catch(t){if(t.name==="NoSuchKey")return;throw t}}async listFiles(e){const t=j.join(this.root,e),s=Tt.paginateListObjectsV2({client:this.client},{Bucket:this.bucket,Prefix:t}),o=[];for await(const a of s)o.push(...(a.Contents??[]).map(c=>j.relative(t,c.Key)));return o}async putFile(e,t){await this.client.putObject({Bucket:this.bucket,Key:j.join(this.root,e),Body:t})}async deleteFiles(...e){const t=await this.client.deleteObjects({Bucket:this.bucket,Delete:{Objects:e.map(s=>({Key:j.join(this.root,s)}))}});if(t.Errors!==void 0&&t.Errors.length>0)throw new Error(`Errors encountered while deleting files: ${t.Errors.join(`
2
+ `)}`)}}class ir{constructor(e){ee(this,"root");this.root=F.resolve(e)}toAbsolutePath(e){if(j.isAbsolute(e))throw new Error("absolute path");return F.resolve(this.root,e.split(j.sep).join(F.sep))}async getFile(e){try{return await J.promises.readFile(this.toAbsolutePath(e))}catch(t){if(t.code=="ENOENT")return;throw new Error("",{cause:t})}}async listFiles(e){try{const t=this.toAbsolutePath(e);return(await J.promises.readdir(t,{recursive:!0,withFileTypes:!0})).filter(s=>s.isFile()).map(s=>F.relative(t,F.resolve(s.path,s.name)).split(F.sep).join(j.sep))}catch(t){if(t.code=="ENOENT")return[];throw new Error("",{cause:t})}}async putFile(e,t){const s=this.toAbsolutePath(e);await J.promises.mkdir(F.dirname(s),{recursive:!0}),await J.promises.writeFile(s,t)}async deleteFiles(...e){for(const t of e)await J.promises.rm(this.toAbsolutePath(t))}}function ar(r){const e=new URL(r,`file:${F.resolve(".").split(F.sep).join(j.sep)}/`);switch(e.protocol){case"file:":const t=F.resolve(e.pathname);return new ir(t);case"s3:":const s={},o=e.searchParams.get("region");o&&(s.region=o);const a=e.hostname;return new nr(new Tt.S3(s),a,e.pathname.replace(/^\//,""));default:throw new Error(`Unknown protocol: ${e.protocol}`)}}const ji=y.z.string().regex(/^(?:s3:|file:)/),or=y.z.object({organization:y.z.string(),package:y.z.string(),version:f.SemVer.optional(),files:y.z.record(y.z.string().regex(/^[^\/]+$/),y.z.string()).default({}),meta:y.z.object({}).passthrough()}),cr=y.z.object({registries:y.z.record(y.z.string(),ji).default({}),registry:y.z.string().optional()}),tt=cr.merge(or).required({registry:!0,version:!0}),Re=tt.partial().required({registries:!0,files:!0}),lr="pl.package.json",fr="pl.package.yaml",ke="v1/";function Gi(r){return`${ke}${r.organization}/${r.package}/${r.version}`}function rt(r,e){return`${ke}${r.organization}/${r.package}/${r.version}/${e}`}function xe(r){return`${ke}${r.organization}/${r.package}/overview.json`}const oe=`${ke}overview.json`,st="meta.json",je="_updates_v1/per_package_version/";function zi(r,e){return`${je}${r.organization}/${r.package}/${r.version}/${e}`}const Vi=/(?<packageKeyWithoutVersion>(?<organization>[^\/]+)\/(?<pkg>[^\/]+))\/(?<version>[^\/]+)\/(?<seed>[^\/]+)$/,ur="_updates_v1/_global_update_in",It="_updates_v1/_global_update_out";class Ui{constructor(e,t){this.storage=e,this.logger=t}constructNewPackage(e){return new Mi(this.storage,e)}async updateRegistry(){var c,m,n,i,h,d,R,g;(c=this.logger)==null||c.info("Initiating registry refresh...");const e=new Map,t=[],s=await this.storage.listFiles(je);(m=this.logger)==null||m.info("Packages to be updated:");for(const l of s){const O=l.match(Vi);if(!O)continue;t.push(l);const{packageKeyWithoutVersion:C,organization:N,pkg:A,version:S,seed:z}=O.groups;let X=e.get(C);X?X.versions.has(S)||X.versions.add(S):e.set(C,{package:{organization:N,package:A},versions:new Set([S])}),(n=this.logger)==null||n.info(` - ${N}:${A}:${S}`)}const o=await this.storage.getFile(oe);let a=o===void 0?[]:JSON.parse(o.toString());(i=this.logger)==null||i.info(`Global overview loaded, ${a.length} records`);for(const[,l]of e.entries()){const O=xe(l.package),C=await this.storage.getFile(O);let N=C===void 0?[]:JSON.parse(C.toString());(h=this.logger)==null||h.info(`Updating ${l.package.organization}:${l.package.package} overview, ${N.length} records`),N=N.filter(A=>!l.versions.has(A.version));for(const[A]of l.versions.entries()){const S=A.toString(),z=await this.storage.getFile(rt({...l.package,version:S},st));z&&N.push({version:S,meta:JSON.parse(z.toString())})}N.sort((A,S)=>Li.compare(S.version,A.version)),await this.storage.putFile(O,Buffer.from(JSON.stringify(N))),(d=this.logger)==null||d.info(`Done (${N.length} records)`),a=a.filter(A=>A.organization!==l.package.organization||A.package!==l.package.package),a.push({organization:l.package.organization,package:l.package.package,allVersions:N.map(A=>A.version).reverse(),latestVersion:N[0].version,latestMeta:N[0].meta})}await this.storage.putFile(oe,Buffer.from(JSON.stringify(a))),(R=this.logger)==null||R.info(`Global overview updated (${a.length} records)`),await this.storage.deleteFiles(...t.map(l=>`${je}${l}`)),(g=this.logger)==null||g.info("Version update requests cleared")}async updateIfNeeded(e=!1){var o,a;(o=this.logger)==null||o.info("Checking if registry requires refresh...");const t=await this.storage.getFile(ur),s=await this.storage.getFile(It);!e&&t===void 0&&s===void 0||!e&&t!==void 0&&s!==void 0&&t.equals(s)||(await this.updateRegistry(),t&&(await this.storage.putFile(It,t),(a=this.logger)==null||a.info("Refresh finished")))}async getPackageOverview(e){const t=await this.storage.getFile(xe(e));if(t!==void 0)return JSON.parse(t.toString())}async getGlobalOverview(){const e=await this.storage.getFile(oe);if(e!==void 0)return JSON.parse(e.toString())}}class Mi{constructor(e,t){ee(this,"metaAdded",!1);ee(this,"seed",Nt.randomUUID());this.storage=e,this.name=t}async addFile(e,t){await this.storage.putFile(rt(this.name,e),t)}async writeMeta(e){await this.addFile(st,Buffer.from(JSON.stringify(e))),this.metaAdded=!0}async finish(){if(!this.metaAdded)throw new Error("meta not added");await this.storage.putFile(zi(this.name,this.seed),Buffer.of(0)),await this.storage.putFile(ur,Buffer.from(this.seed))}}function V(r,e){return e===void 0?r:{...r,...e,registries:{...r.registries,...e.registries},files:{...r.files,...e.files}}}async function Ne(r){return Ue(r,e=>Re.parse(JSON.parse(e.toString())))}async function Te(r){return Ue(r,e=>Re.parse(Sr.parse(e.toString())))}async function Xi(){let r=Re.parse({});return r=V(r,await Ne("./.pl.reg.json")),r=V(r,await Te("./.pl.reg.yaml")),r=V(r,await Ne(`${nt.homedir()}/.pl.reg.json`)),r=V(r,await Te(`${nt.homedir()}/.pl.reg.yaml`)),r=V(r,await Ne(lr)),r=V(r,await Te(fr)),r}class hr{constructor(e){this.conf=e}createRegistry(e){let t=this.conf.registry;if(!t.startsWith("file:")&&!t.startsWith("s3:")){const s=this.conf.registries[t];if(!s)throw new Error(`Registry with alias "${t}" not found`);t=s}return new Ui(ar(t),e)}get fullPackageName(){return{organization:this.conf.organization,package:this.conf.package,version:this.conf.version}}}async function qi(r){const e=await Xi();return new hr(tt.parse(V(e,r)))}exports.BlockComponentsAbsoluteUrl=Fr;exports.BlockComponentsConsolidate=Gt;exports.BlockComponentsDescription=jt;exports.BlockDescriptionPackageJsonField=fe;exports.BlockDescriptionToExplicitBinaryBytes=bi;exports.BlockPackDescriptionConsolidateToFolder=zt;exports.BlockPackDescriptionManifestAddRelativePathPrefix=Ae;exports.BlockPackMetaConsolidate=xt;exports.BlockPackMetaDescription=_t;exports.BlockPackMetaEmbedAbsoluteBase64=Tr;exports.BlockPackMetaEmbedAbsoluteBytes=Lr;exports.BlockPackMetaEmbedBytes=Ar;exports.BlockRegistryV2=xi;exports.ChannelNameRegexp=ie;exports.ChannelsFolder=ue;exports.FSStorage=ir;exports.GlobalOverview=we;exports.GlobalOverviewEntry=et;exports.GlobalOverviewEntryReg=Bi;exports.GlobalOverviewFileName=Kt;exports.GlobalOverviewPath=oe;exports.GlobalOverviewPath$1=ae;exports.GlobalOverviewReg=_e;exports.GlobalOverviewToExplicitBinaryBase64=_i;exports.GlobalOverviewToExplicitBinaryBytes=Di;exports.MainPrefix=Q;exports.ManifestFileName=Y;exports.ManifestSuffix=Qt;exports.MetaFile=st;exports.PackageOverview=be;exports.PackageOverviewFileName=Zt;exports.PackageOverviewVersionEntry=er;exports.PlPackageConfigData=or;exports.PlPackageJsonConfigFile=lr;exports.PlPackageYamlConfigFile=fr;exports.PlRegCommonConfigData=cr;exports.PlRegFullPackageConfigData=tt;exports.PlRegPackageConfig=hr;exports.PlRegPackageConfigDataShard=Re;exports.ResolvedBlockPackDescriptionFromPackageJson=Ve;exports.ResolvedModuleFile=Lt;exports.ResolvedModuleFolder=At;exports.S3Storage=nr;exports.absoluteToBase64=Ft;exports.absoluteToBytes=Bt;exports.absoluteToString=ze;exports.buildBlockPackDist=Br;exports.calculateSha256=le;exports.cpAbsoluteToRelative=ce;exports.getConfig=qi;exports.loadPackDescription=_r;exports.loadPackDescriptionRaw=Vt;exports.mapLocalToAbsolute=Le;exports.packFolderToRelativeTgz=bt;exports.packageChannelPrefix=sr;exports.packageChannelPrefixInsideV2=rr;exports.packageContentPrefix=Gi;exports.packageContentPrefix$1=H;exports.packageContentPrefixInsideV2=Qe;exports.packageOverviewPath=xe;exports.packageOverviewPath$1=De;exports.packageOverviewPathInsideV2=tr;exports.parsePackageName=Me;exports.payloadFilePath=rt;exports.relativeToContentString=Dt;exports.relativeToExplicitBinary64=Nr;exports.relativeToExplicitBytes=K;exports.relativeToExplicitString=ge;exports.storageByUrl=ar;exports.tryLoadPackDescription=Dr;
3
+ //# sourceMappingURL=config-ClvGIy46.js.map