@platforma-sdk/block-tools 2.5.70 → 2.5.72
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 +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +110 -105
- package/dist/cli.mjs.map +1 -1
- package/dist/cmd/publish.d.ts.map +1 -1
- package/dist/registry_v1/config_schema.d.ts +5 -5
- package/package.json +7 -7
- package/src/cmd/publish.ts +25 -4
package/dist/cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var L=Object.defineProperty;var x=(i,e,a)=>e in i?L(i,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[e]=a;var o=(i,e,a)=>x(i,typeof e!="symbol"?e+"":e,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("@oclif/core"),d=require("node:path"),m=require("node:fs");require("zod");require("mime-types");require("tar");require("@milaboratories/resolve-helper");const n=require("./config-26zalc5o.js"),F=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 b=require("@milaboratories/ts-helpers-oclif"),V=require("yaml"),f=class f extends r.Command{async run(){const{flags:e}=await this.parse(f),a=d.resolve(e.modulePath),t=await n.loadPackDescriptionRaw(a),s=await n.BlockPackMetaEmbedAbsoluteBase64.parseAsync(n.BlockPackMetaDescription(a).parse(t.meta));await m.promises.writeFile(d.resolve(e.destination),JSON.stringify(s))}};o(f,"description","Extracts meta information from blocks package.json and outputs meta.json with embedded binary and textual information linked from the meta section."),o(f,"flags",{modulePath:r.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),destination:r.Flags.string({char:"o",summary:"output meta.json file",helpValue:"<path>",required:!0})});let P=f;async function I(i){try{return await m.promises.readFile(i,"utf8")}catch(e){if(e.code==="ENOENT")return;throw e}}const g=class g extends r.Command{async run(){const{flags:e}=await this.parse(g),a=d.resolve(e.modulePath);let{model:t,platforma:s}=require(a);if(t||(t=s),!t)throw new Error('"model" export not found');const{config:l}=t;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 I(e.sourceBundle);u!==void 0&&(l.code={type:"plain",content:u}),await m.promises.writeFile(d.resolve(e.destination),JSON.stringify(l))}};o(g,"description","Extracts and outputs block model JSON from pre-built block model module"),o(g,"flags",{modulePath:r.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),sourceBundle:r.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:r.Flags.string({char:"o",summary:"output model file",helpValue:"<path>",default:"./dist/model.json"})});let R=g;const p=class p extends r.Command{async run(){const{flags:e}=await this.parse(p);let a=await n.loadPackDescriptionRaw(d.resolve(e.modulePath));e["version-override"]&&(a=F.overrideDescriptionVersion(a,e["version-override"]));const t=n.storageByUrl(e.registry),s=new n.BlockRegistryV2(t,new b.OclifLoggerAdapter(this));e.unmark?await s.removePackageFromChannel(a.id,e.channel):await s.addPackageToChannel(a.id,e.channel),e.refresh&&await s.updateIfNeeded()}};o(p,"description","Mark target block stable"),o(p,"flags",{modulePath:r.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),channel:r.Flags.string({char:"c",hidden:!0,summary:"custom channel",helpValue:"<channel name>",default:F.StableChannel}),"version-override":r.Flags.file({char:"v",summary:"override package version"}),registry:r.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),refresh:r.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"}),unmark:r.Flags.boolean({summary:'reverses meaning of this command, flag can be used to remove "stable" flag from the package',default:!1})});let E=p;const h=class h extends r.Command{async run(){const{flags:e}=await this.parse(h),a=await n.loadPackDescription(d.resolve(e.modulePath));await n.buildBlockPackDist(a,d.resolve(e.destinationPath))}};o(h,"description","Builds block pack and outputs a block pack manifest consolidating all references assets into a single folder"),o(h,"flags",{modulePath:r.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),destinationPath:r.Flags.string({char:"o",summary:"output folder",helpValue:"<path>",default:"./block-pack"})});let N=h;function C(i,e){const a={...i};for(const t in e)e[t]&&typeof e[t]=="object"&&!Array.isArray(e[t])&&a[t]&&typeof a[t]=="object"&&!Array.isArray(a[t])?a[t]=C(a[t],e[t]):a[t]=e[t];return a}const y=class y extends r.Command{async run(){const{flags:e}=await this.parse(y),a=d.resolve(e.manifest),t=JSON.parse(await m.promises.readFile(a,{encoding:"utf-8"}));let s=F.BlockPackManifest.parse(t);s=C(t,s);const l=d.dirname(a);this.log(`Manifest root = ${l}`),e["version-override"]&&(s=F.overrideManifestVersion(s,e["version-override"]));const u=n.storageByUrl(e.registry),c=new n.BlockRegistryV2(u,new b.OclifLoggerAdapter(this));await c.publishPackage(s,async k=>Buffer.from(await m.promises.readFile(d.resolve(l,k)))),e.refresh&&await c.updateIfNeeded()}};o(y,"description","Publishes the block package and refreshes the registry (for v2 block-pack schema)"),o(y,"flags",{registry:r.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),manifest:r.Flags.file({char:"m",summary:"manifest file path",exists:!0,default:`./block-pack/${n.ManifestFileName}`}),"version-override":r.Flags.file({char:"v",summary:"override package version"}),refresh:r.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"})});let q=y;const w=class w extends r.Command{async run(){const{flags:e}=await this.parse(w),a=n.storageByUrl(e.registry);await new n.BlockRegistryV2(a,new b.OclifLoggerAdapter(this)).updateIfNeeded(e.mode)}};o(w,"description","Refresh overview files based on published but not proecessed artefacts"),o(w,"flags",{registry:r.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),mode:r.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 A=w;function T(i){const e=i.match(/(?<destName>[^\/\\]+)=(?<src>.*)/);if(e){const{src:a,destName:t}=e.groups;return{src:a,destName:t}}else return{src:i,destName:d.basename(i)}}const j=r.Flags.custom({summary:"target files to upload",helpValue:"file_path | package_name=file_path",parse:async i=>T(i)}),G=["registry","organization","package","version"],v=class v extends r.Command{async run(){const{flags:e}=await this.parse(v),a=n.PlRegPackageConfigDataShard.parse({});for(const c of G)e[c]&&(a[c]=e[c]);e.meta&&(e.meta.endsWith(".json")?a.meta=JSON.parse(await m.promises.readFile(e.meta,{encoding:"utf-8"})):e.meta.endsWith(".yaml")&&(a.meta=V.parse(await m.promises.readFile(e.meta,{encoding:"utf-8"}))));for(const c of e.file)a.files[c.destName]=c.src;const t=await n.getConfig(a);this.log(V.stringify(t.conf));const s=t.createRegistry(new b.OclifLoggerAdapter(this)),l=t.fullPackageName,u=s.constructNewPackage(l);for(const[c,k]of Object.entries(t.conf.files)){this.log(`Uploading ${k} -> ${c} ...`);const O=await m.promises.readFile(k);await u.addFile(c,O)}this.log("Uploading meta information..."),await u.writeMeta(t.conf.meta),await u.finish(),e.refresh&&await s.updateIfNeeded()}};o(v,"description","Uploads V1 package and refreshes the registry"),o(v,"flags",{registry:r.Flags.string({char:"r",summary:"full address of the registry or alias from .pl.reg",helpValue:"<address|alias>",env:"PL_REGISTRY"}),organization:r.Flags.string({char:"o",summary:"target organisation",env:"PL_PACKAGE_ORGANIZATION"}),package:r.Flags.string({char:"p",summary:"target package",env:"PL_PACKAGE_NAME"}),version:r.Flags.string({char:"v",summary:"target version",env:"PL_PACKAGE_VERSION"}),meta:r.Flags.file({char:"m",summary:"json file containing meta information to associate with tha package",exists:!0}),file:j({char:"f",summary:"package files",multiple:!0,default:[]}),refresh:r.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"})});let S=v;const M={"build-meta":P,"build-model":R,"mark-stable":E,pack:N,publish:q,"refresh-registry":A,"upload-package-v1":S};exports.COMMANDS=M;
|
|
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';\n\nfunction simpleDeepMerge<T extends Record<string, unknown>>(\n target: Record<string, unknown>,\n source: T\n): T {\n const result = { ...target };\n\n for (const key in source) {\n if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {\n if (result[key] && typeof result[key] === 'object' && !Array.isArray(result[key])) {\n result[key] = simpleDeepMerge(result[key] as Record<string, unknown>, source[key] as Record<string, unknown>);\n } else {\n result[key] = source[key];\n }\n } else {\n result[key] = source[key];\n }\n }\n\n return result as T;\n}\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 const rawManifest = JSON.parse(await fs.promises.readFile(manifestPath, { encoding: 'utf-8' }));\n let manifest = BlockPackManifest.parse(rawManifest);\n // To keep extra fields from the manifest and keep coerced fields\n manifest = simpleDeepMerge(rawManifest, manifest);\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","simpleDeepMerge","target","source","result","key","_Publish","manifestPath","rawManifest","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
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
import { Command as
|
|
1
|
+
var O = Object.defineProperty;
|
|
2
|
+
var T = (i, e, a) => e in i ? O(i, e, { enumerable: !0, configurable: !0, writable: !0, value: a }) : i[e] = a;
|
|
3
|
+
var o = (i, e, a) => T(i, typeof e != "symbol" ? e + "" : e, a);
|
|
4
|
+
import { Command as f, Flags as r } from "@oclif/core";
|
|
5
5
|
import c from "node:path";
|
|
6
6
|
import m from "node:fs";
|
|
7
7
|
import "zod";
|
|
8
8
|
import "mime-types";
|
|
9
9
|
import "tar";
|
|
10
10
|
import "@milaboratories/resolve-helper";
|
|
11
|
-
import { l as L, B as
|
|
12
|
-
import { StableChannel as
|
|
11
|
+
import { l as L, B as j, a as Y, s as V, b as x, c as D, d as M, M as q, P as B, g as J } from "./config-DwOM2V6u.mjs";
|
|
12
|
+
import { StableChannel as H, overrideDescriptionVersion as _, BlockPackManifest as $, overrideManifestVersion as K } from "@milaboratories/pl-model-middle-layer";
|
|
13
13
|
import "@milaboratories/pl-model-common";
|
|
14
14
|
import "@milaboratories/ts-helpers";
|
|
15
15
|
import "canonicalize";
|
|
16
16
|
import "lru-cache";
|
|
17
17
|
import "undici";
|
|
18
18
|
import "@milaboratories/pl-http";
|
|
19
|
-
import { OclifLoggerAdapter as
|
|
20
|
-
import
|
|
21
|
-
const
|
|
19
|
+
import { OclifLoggerAdapter as b } from "@milaboratories/ts-helpers-oclif";
|
|
20
|
+
import I from "yaml";
|
|
21
|
+
const u = class u extends f {
|
|
22
22
|
async run() {
|
|
23
|
-
const { flags: e } = await this.parse(
|
|
24
|
-
Y(a).parse(
|
|
23
|
+
const { flags: e } = await this.parse(u), a = c.resolve(e.modulePath), t = await L(a), s = await j.parseAsync(
|
|
24
|
+
Y(a).parse(t.meta)
|
|
25
25
|
);
|
|
26
|
-
await m.promises.writeFile(c.resolve(e.destination), JSON.stringify(
|
|
26
|
+
await m.promises.writeFile(c.resolve(e.destination), JSON.stringify(s));
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
|
-
|
|
30
|
-
modulePath:
|
|
29
|
+
o(u, "description", "Extracts meta information from blocks package.json and outputs meta.json with embedded binary and textual information linked from the meta section."), o(u, "flags", {
|
|
30
|
+
modulePath: r.string({
|
|
31
31
|
char: "i",
|
|
32
32
|
summary: "input module path",
|
|
33
33
|
helpValue: "<path>",
|
|
34
34
|
default: "."
|
|
35
35
|
}),
|
|
36
|
-
destination:
|
|
36
|
+
destination: r.string({
|
|
37
37
|
char: "o",
|
|
38
38
|
summary: "output meta.json file",
|
|
39
39
|
helpValue: "<path>",
|
|
40
40
|
required: !0
|
|
41
41
|
})
|
|
42
42
|
});
|
|
43
|
-
let
|
|
44
|
-
async function
|
|
43
|
+
let P = u;
|
|
44
|
+
async function z(i) {
|
|
45
45
|
try {
|
|
46
46
|
return await m.promises.readFile(i, "utf8");
|
|
47
47
|
} catch (e) {
|
|
@@ -50,169 +50,174 @@ async function K(i) {
|
|
|
50
50
|
throw e;
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
|
-
const p = class p extends
|
|
53
|
+
const p = class p extends f {
|
|
54
54
|
async run() {
|
|
55
55
|
const { flags: e } = await this.parse(p), a = c.resolve(e.modulePath);
|
|
56
|
-
let { model:
|
|
57
|
-
if (
|
|
58
|
-
const { config: n } =
|
|
56
|
+
let { model: t, platforma: s } = require(a);
|
|
57
|
+
if (t || (t = s), !t) throw new Error('"model" export not found');
|
|
58
|
+
const { config: n } = t;
|
|
59
59
|
if (!n)
|
|
60
60
|
throw new Error(
|
|
61
61
|
'Malformed "model" object, check it is created with "BlockModel" and ".done()" is executed as the call in the chain.'
|
|
62
62
|
);
|
|
63
63
|
if (!("canRun" in n || "inputsValid" in n) || !("outputs" in n) || !("sections" in n))
|
|
64
64
|
throw new Error('"config" has unexpected structure');
|
|
65
|
-
const d = await
|
|
65
|
+
const d = await z(e.sourceBundle);
|
|
66
66
|
d !== void 0 && (n.code = {
|
|
67
67
|
type: "plain",
|
|
68
68
|
content: d
|
|
69
69
|
}), await m.promises.writeFile(c.resolve(e.destination), JSON.stringify(n));
|
|
70
70
|
}
|
|
71
71
|
};
|
|
72
|
-
|
|
73
|
-
modulePath:
|
|
72
|
+
o(p, "description", "Extracts and outputs block model JSON from pre-built block model module"), o(p, "flags", {
|
|
73
|
+
modulePath: r.string({
|
|
74
74
|
char: "i",
|
|
75
75
|
summary: "input module path",
|
|
76
76
|
helpValue: "<path>",
|
|
77
77
|
default: "."
|
|
78
78
|
}),
|
|
79
|
-
sourceBundle:
|
|
79
|
+
sourceBundle: r.string({
|
|
80
80
|
char: "b",
|
|
81
81
|
summary: "bundled model code to embed into the model for callback-based rendering to work",
|
|
82
82
|
helpValue: "<path>",
|
|
83
83
|
default: "./dist/bundle.js"
|
|
84
84
|
}),
|
|
85
|
-
destination:
|
|
85
|
+
destination: r.string({
|
|
86
86
|
char: "o",
|
|
87
87
|
summary: "output model file",
|
|
88
88
|
helpValue: "<path>",
|
|
89
89
|
default: "./dist/model.json"
|
|
90
90
|
})
|
|
91
91
|
});
|
|
92
|
-
let
|
|
93
|
-
const h = class h extends
|
|
92
|
+
let E = p;
|
|
93
|
+
const h = class h extends f {
|
|
94
94
|
async run() {
|
|
95
95
|
const { flags: e } = await this.parse(h);
|
|
96
96
|
let a = await L(c.resolve(e.modulePath));
|
|
97
|
-
e["version-override"] && (a =
|
|
98
|
-
const
|
|
99
|
-
e.unmark ? await
|
|
97
|
+
e["version-override"] && (a = _(a, e["version-override"]));
|
|
98
|
+
const t = V(e.registry), s = new x(t, new b(this));
|
|
99
|
+
e.unmark ? await s.removePackageFromChannel(a.id, e.channel) : await s.addPackageToChannel(a.id, e.channel), e.refresh && await s.updateIfNeeded();
|
|
100
100
|
}
|
|
101
101
|
};
|
|
102
|
-
|
|
103
|
-
modulePath:
|
|
102
|
+
o(h, "description", "Mark target block stable"), o(h, "flags", {
|
|
103
|
+
modulePath: r.string({
|
|
104
104
|
char: "i",
|
|
105
105
|
summary: "input module path",
|
|
106
106
|
helpValue: "<path>",
|
|
107
107
|
default: "."
|
|
108
108
|
}),
|
|
109
|
-
channel:
|
|
109
|
+
channel: r.string({
|
|
110
110
|
char: "c",
|
|
111
111
|
hidden: !0,
|
|
112
112
|
summary: "custom channel",
|
|
113
113
|
helpValue: "<channel name>",
|
|
114
|
-
default:
|
|
114
|
+
default: H
|
|
115
115
|
}),
|
|
116
|
-
"version-override":
|
|
116
|
+
"version-override": r.file({
|
|
117
117
|
char: "v",
|
|
118
118
|
summary: "override package version"
|
|
119
119
|
}),
|
|
120
|
-
registry:
|
|
120
|
+
registry: r.string({
|
|
121
121
|
char: "r",
|
|
122
122
|
summary: "full address of the registry",
|
|
123
123
|
helpValue: "<address>",
|
|
124
124
|
env: "PL_REGISTRY",
|
|
125
125
|
required: !0
|
|
126
126
|
}),
|
|
127
|
-
refresh:
|
|
127
|
+
refresh: r.boolean({
|
|
128
128
|
summary: "refresh repository after adding the package",
|
|
129
129
|
default: !0,
|
|
130
130
|
allowNo: !0,
|
|
131
131
|
env: "PL_REGISTRY_REFRESH"
|
|
132
132
|
}),
|
|
133
|
-
unmark:
|
|
133
|
+
unmark: r.boolean({
|
|
134
134
|
summary: 'reverses meaning of this command, flag can be used to remove "stable" flag from the package',
|
|
135
135
|
default: !1
|
|
136
136
|
})
|
|
137
137
|
});
|
|
138
|
-
let
|
|
139
|
-
const g = class g extends
|
|
138
|
+
let R = h;
|
|
139
|
+
const g = class g extends f {
|
|
140
140
|
async run() {
|
|
141
|
-
const { flags: e } = await this.parse(g), a = await
|
|
142
|
-
await
|
|
141
|
+
const { flags: e } = await this.parse(g), a = await D(c.resolve(e.modulePath));
|
|
142
|
+
await M(a, c.resolve(e.destinationPath));
|
|
143
143
|
}
|
|
144
144
|
};
|
|
145
|
-
|
|
146
|
-
modulePath:
|
|
145
|
+
o(g, "description", "Builds block pack and outputs a block pack manifest consolidating all references assets into a single folder"), o(g, "flags", {
|
|
146
|
+
modulePath: r.string({
|
|
147
147
|
char: "i",
|
|
148
148
|
summary: "input module path",
|
|
149
149
|
helpValue: "<path>",
|
|
150
150
|
default: "."
|
|
151
151
|
}),
|
|
152
|
-
destinationPath:
|
|
152
|
+
destinationPath: r.string({
|
|
153
153
|
char: "o",
|
|
154
154
|
summary: "output folder",
|
|
155
155
|
helpValue: "<path>",
|
|
156
156
|
default: "./block-pack"
|
|
157
157
|
})
|
|
158
158
|
});
|
|
159
|
-
let
|
|
160
|
-
|
|
159
|
+
let N = g;
|
|
160
|
+
function C(i, e) {
|
|
161
|
+
const a = { ...i };
|
|
162
|
+
for (const t in e)
|
|
163
|
+
e[t] && typeof e[t] == "object" && !Array.isArray(e[t]) && a[t] && typeof a[t] == "object" && !Array.isArray(a[t]) ? a[t] = C(a[t], e[t]) : a[t] = e[t];
|
|
164
|
+
return a;
|
|
165
|
+
}
|
|
166
|
+
const y = class y extends f {
|
|
161
167
|
async run() {
|
|
162
|
-
const { flags: e } = await this.parse(y), a = c.resolve(e.manifest);
|
|
163
|
-
let
|
|
164
|
-
|
|
165
|
-
);
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
), e.refresh && await d.updateIfNeeded();
|
|
168
|
+
const { flags: e } = await this.parse(y), a = c.resolve(e.manifest), t = JSON.parse(await m.promises.readFile(a, { encoding: "utf-8" }));
|
|
169
|
+
let s = $.parse(t);
|
|
170
|
+
s = C(t, s);
|
|
171
|
+
const n = c.dirname(a);
|
|
172
|
+
this.log(`Manifest root = ${n}`), e["version-override"] && (s = K(s, e["version-override"]));
|
|
173
|
+
const d = V(e.registry), l = new x(d, new b(this));
|
|
174
|
+
await l.publishPackage(
|
|
175
|
+
s,
|
|
176
|
+
async (k) => Buffer.from(await m.promises.readFile(c.resolve(n, k)))
|
|
177
|
+
), e.refresh && await l.updateIfNeeded();
|
|
173
178
|
}
|
|
174
179
|
};
|
|
175
|
-
|
|
176
|
-
registry:
|
|
180
|
+
o(y, "description", "Publishes the block package and refreshes the registry (for v2 block-pack schema)"), o(y, "flags", {
|
|
181
|
+
registry: r.string({
|
|
177
182
|
char: "r",
|
|
178
183
|
summary: "full address of the registry",
|
|
179
184
|
helpValue: "<address>",
|
|
180
185
|
env: "PL_REGISTRY",
|
|
181
186
|
required: !0
|
|
182
187
|
}),
|
|
183
|
-
manifest:
|
|
188
|
+
manifest: r.file({
|
|
184
189
|
char: "m",
|
|
185
190
|
summary: "manifest file path",
|
|
186
191
|
exists: !0,
|
|
187
|
-
default: `./block-pack/${
|
|
192
|
+
default: `./block-pack/${q}`
|
|
188
193
|
}),
|
|
189
|
-
"version-override":
|
|
194
|
+
"version-override": r.file({
|
|
190
195
|
char: "v",
|
|
191
196
|
summary: "override package version"
|
|
192
197
|
}),
|
|
193
|
-
refresh:
|
|
198
|
+
refresh: r.boolean({
|
|
194
199
|
summary: "refresh repository after adding the package",
|
|
195
200
|
default: !0,
|
|
196
201
|
allowNo: !0,
|
|
197
202
|
env: "PL_REGISTRY_REFRESH"
|
|
198
203
|
})
|
|
199
204
|
});
|
|
200
|
-
let
|
|
201
|
-
const w = class w extends
|
|
205
|
+
let F = y;
|
|
206
|
+
const w = class w extends f {
|
|
202
207
|
async run() {
|
|
203
208
|
const { flags: e } = await this.parse(w), a = V(e.registry);
|
|
204
|
-
await new x(a, new
|
|
209
|
+
await new x(a, new b(this)).updateIfNeeded(e.mode);
|
|
205
210
|
}
|
|
206
211
|
};
|
|
207
|
-
|
|
208
|
-
registry:
|
|
212
|
+
o(w, "description", "Refresh overview files based on published but not proecessed artefacts"), o(w, "flags", {
|
|
213
|
+
registry: r.string({
|
|
209
214
|
char: "r",
|
|
210
215
|
summary: "full address of the registry",
|
|
211
216
|
helpValue: "<address>",
|
|
212
217
|
env: "PL_REGISTRY",
|
|
213
218
|
required: !0
|
|
214
219
|
}),
|
|
215
|
-
mode:
|
|
220
|
+
mode: r.string({
|
|
216
221
|
char: "m",
|
|
217
222
|
summary: 'refresh mode (allowed valiues: "force", "normal", "dry-run")',
|
|
218
223
|
helpValue: "<mode>",
|
|
@@ -221,75 +226,75 @@ s(w, "description", "Refresh overview files based on published but not proecesse
|
|
|
221
226
|
default: "normal"
|
|
222
227
|
})
|
|
223
228
|
});
|
|
224
|
-
let
|
|
225
|
-
function
|
|
229
|
+
let A = w;
|
|
230
|
+
function U(i) {
|
|
226
231
|
const e = i.match(/(?<destName>[^\/\\]+)=(?<src>.*)/);
|
|
227
232
|
if (e) {
|
|
228
|
-
const { src: a, destName:
|
|
229
|
-
return { src: a, destName:
|
|
233
|
+
const { src: a, destName: t } = e.groups;
|
|
234
|
+
return { src: a, destName: t };
|
|
230
235
|
} else
|
|
231
236
|
return { src: i, destName: c.basename(i) };
|
|
232
237
|
}
|
|
233
|
-
const
|
|
238
|
+
const W = r.custom({
|
|
234
239
|
summary: "target files to upload",
|
|
235
240
|
helpValue: "file_path | package_name=file_path",
|
|
236
|
-
parse: async (i) =>
|
|
237
|
-
}),
|
|
241
|
+
parse: async (i) => U(i)
|
|
242
|
+
}), Z = ["registry", "organization", "package", "version"], v = class v extends f {
|
|
238
243
|
async run() {
|
|
239
|
-
const { flags: e } = await this.parse(v), a =
|
|
240
|
-
for (const l of
|
|
244
|
+
const { flags: e } = await this.parse(v), a = B.parse({});
|
|
245
|
+
for (const l of Z) e[l] && (a[l] = e[l]);
|
|
241
246
|
e.meta && (e.meta.endsWith(".json") ? a.meta = JSON.parse(
|
|
242
247
|
await m.promises.readFile(e.meta, { encoding: "utf-8" })
|
|
243
|
-
) : e.meta.endsWith(".yaml") && (a.meta =
|
|
248
|
+
) : e.meta.endsWith(".yaml") && (a.meta = I.parse(
|
|
244
249
|
await m.promises.readFile(e.meta, { encoding: "utf-8" })
|
|
245
250
|
)));
|
|
246
251
|
for (const l of e.file)
|
|
247
252
|
a.files[l.destName] = l.src;
|
|
248
|
-
const
|
|
249
|
-
this.log(
|
|
250
|
-
const
|
|
251
|
-
for (const [l,
|
|
252
|
-
this.log(`Uploading ${
|
|
253
|
-
const
|
|
254
|
-
await d.addFile(l,
|
|
253
|
+
const t = await J(a);
|
|
254
|
+
this.log(I.stringify(t.conf));
|
|
255
|
+
const s = t.createRegistry(new b(this)), n = t.fullPackageName, d = s.constructNewPackage(n);
|
|
256
|
+
for (const [l, k] of Object.entries(t.conf.files)) {
|
|
257
|
+
this.log(`Uploading ${k} -> ${l} ...`);
|
|
258
|
+
const G = await m.promises.readFile(k);
|
|
259
|
+
await d.addFile(l, G);
|
|
255
260
|
}
|
|
256
|
-
this.log("Uploading meta information..."), await d.writeMeta(
|
|
261
|
+
this.log("Uploading meta information..."), await d.writeMeta(t.conf.meta), await d.finish(), e.refresh && await s.updateIfNeeded();
|
|
257
262
|
}
|
|
258
263
|
};
|
|
259
|
-
|
|
260
|
-
registry:
|
|
264
|
+
o(v, "description", "Uploads V1 package and refreshes the registry"), o(v, "flags", {
|
|
265
|
+
registry: r.string({
|
|
261
266
|
char: "r",
|
|
262
267
|
summary: "full address of the registry or alias from .pl.reg",
|
|
263
268
|
helpValue: "<address|alias>",
|
|
264
269
|
env: "PL_REGISTRY"
|
|
265
270
|
}),
|
|
266
|
-
organization:
|
|
271
|
+
organization: r.string({
|
|
267
272
|
char: "o",
|
|
268
273
|
summary: "target organisation",
|
|
269
274
|
env: "PL_PACKAGE_ORGANIZATION"
|
|
270
275
|
}),
|
|
271
|
-
package:
|
|
276
|
+
package: r.string({
|
|
272
277
|
char: "p",
|
|
273
278
|
summary: "target package",
|
|
274
279
|
env: "PL_PACKAGE_NAME"
|
|
275
280
|
}),
|
|
276
|
-
version:
|
|
281
|
+
version: r.string({
|
|
277
282
|
char: "v",
|
|
278
283
|
summary: "target version",
|
|
279
284
|
env: "PL_PACKAGE_VERSION"
|
|
280
285
|
}),
|
|
281
|
-
meta:
|
|
286
|
+
meta: r.file({
|
|
282
287
|
char: "m",
|
|
283
288
|
summary: "json file containing meta information to associate with tha package",
|
|
284
289
|
exists: !0
|
|
285
290
|
}),
|
|
286
|
-
file:
|
|
291
|
+
file: W({
|
|
287
292
|
char: "f",
|
|
288
293
|
summary: "package files",
|
|
289
294
|
multiple: !0,
|
|
290
295
|
default: []
|
|
291
296
|
}),
|
|
292
|
-
refresh:
|
|
297
|
+
refresh: r.boolean({
|
|
293
298
|
summary: "refresh repository after adding the package",
|
|
294
299
|
default: !0,
|
|
295
300
|
allowNo: !0,
|
|
@@ -297,16 +302,16 @@ s(v, "description", "Uploads V1 package and refreshes the registry"), s(v, "flag
|
|
|
297
302
|
})
|
|
298
303
|
});
|
|
299
304
|
let S = v;
|
|
300
|
-
const
|
|
301
|
-
"build-meta":
|
|
302
|
-
"build-model":
|
|
303
|
-
"mark-stable":
|
|
304
|
-
pack:
|
|
305
|
-
publish:
|
|
306
|
-
"refresh-registry":
|
|
305
|
+
const ge = {
|
|
306
|
+
"build-meta": P,
|
|
307
|
+
"build-model": E,
|
|
308
|
+
"mark-stable": R,
|
|
309
|
+
pack: N,
|
|
310
|
+
publish: F,
|
|
311
|
+
"refresh-registry": A,
|
|
307
312
|
"upload-package-v1": S
|
|
308
313
|
};
|
|
309
314
|
export {
|
|
310
|
-
|
|
315
|
+
ge as COMMANDS
|
|
311
316
|
};
|
|
312
317
|
//# 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';\n\nfunction simpleDeepMerge<T extends Record<string, unknown>>(\n target: Record<string, unknown>,\n source: T\n): T {\n const result = { ...target };\n\n for (const key in source) {\n if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {\n if (result[key] && typeof result[key] === 'object' && !Array.isArray(result[key])) {\n result[key] = simpleDeepMerge(result[key] as Record<string, unknown>, source[key] as Record<string, unknown>);\n } else {\n result[key] = source[key];\n }\n } else {\n result[key] = source[key];\n }\n }\n\n return result as T;\n}\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 const rawManifest = JSON.parse(await fs.promises.readFile(manifestPath, { encoding: 'utf-8' }));\n let manifest = BlockPackManifest.parse(rawManifest);\n // To keep extra fields from the manifest and keep coerced fields\n manifest = simpleDeepMerge(rawManifest, manifest);\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","simpleDeepMerge","target","source","result","key","_Publish","manifestPath","rawManifest","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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/cmd/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/cmd/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AA8B7C,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAC1C,MAAM,CAAC,WAAW,SACoE;IAEtF,MAAM,CAAC,KAAK;;;;;MA2BV;IAEW,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAwBlC"}
|
|
@@ -10,8 +10,8 @@ export declare const PlPackageConfigData: z.ZodObject<{
|
|
|
10
10
|
meta: {} & {
|
|
11
11
|
[k: string]: unknown;
|
|
12
12
|
};
|
|
13
|
-
package: string;
|
|
14
13
|
files: Record<string, string>;
|
|
14
|
+
package: string;
|
|
15
15
|
version?: string | undefined;
|
|
16
16
|
}, {
|
|
17
17
|
organization: string;
|
|
@@ -38,8 +38,8 @@ export declare const PlRegFullPackageConfigData: z.ZodObject<{
|
|
|
38
38
|
meta: z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>;
|
|
39
39
|
version: z.ZodString;
|
|
40
40
|
registry: z.ZodString;
|
|
41
|
-
package: z.ZodString;
|
|
42
41
|
files: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
42
|
+
package: z.ZodString;
|
|
43
43
|
registries: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
44
44
|
}, "strip", z.ZodTypeAny, {
|
|
45
45
|
organization: string;
|
|
@@ -48,8 +48,8 @@ export declare const PlRegFullPackageConfigData: z.ZodObject<{
|
|
|
48
48
|
};
|
|
49
49
|
version: string;
|
|
50
50
|
registry: string;
|
|
51
|
-
package: string;
|
|
52
51
|
files: Record<string, string>;
|
|
52
|
+
package: string;
|
|
53
53
|
registries: Record<string, string>;
|
|
54
54
|
}, {
|
|
55
55
|
organization: string;
|
|
@@ -68,8 +68,8 @@ export declare const PlRegPackageConfigDataShard: z.ZodObject<{
|
|
|
68
68
|
meta: z.ZodOptional<z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>>;
|
|
69
69
|
version: z.ZodOptional<z.ZodString>;
|
|
70
70
|
registry: z.ZodOptional<z.ZodString>;
|
|
71
|
-
package: z.ZodOptional<z.ZodString>;
|
|
72
71
|
files: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
72
|
+
package: z.ZodOptional<z.ZodString>;
|
|
73
73
|
registries: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
74
74
|
}, "strip", z.ZodTypeAny, {
|
|
75
75
|
files: Record<string, string>;
|
|
@@ -84,8 +84,8 @@ export declare const PlRegPackageConfigDataShard: z.ZodObject<{
|
|
|
84
84
|
meta?: z.objectInputType<{}, z.ZodTypeAny, "passthrough"> | undefined;
|
|
85
85
|
version?: string | undefined;
|
|
86
86
|
registry?: string | undefined;
|
|
87
|
-
package?: string | undefined;
|
|
88
87
|
files?: Record<string, string> | undefined;
|
|
88
|
+
package?: string | undefined;
|
|
89
89
|
registries?: Record<string, string> | undefined;
|
|
90
90
|
}>;
|
|
91
91
|
export type PlRegPackageConfigDataShard = z.infer<typeof PlRegPackageConfigDataShard>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@platforma-sdk/block-tools",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.72",
|
|
4
4
|
"description": "Utility to manipulate Platforma Blocks and Block Registry",
|
|
5
5
|
"types": "./dist/lib.d.ts",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -33,12 +33,12 @@
|
|
|
33
33
|
"tar": "^7.4.3",
|
|
34
34
|
"yaml": "^2.7.0",
|
|
35
35
|
"zod": "~3.23.8",
|
|
36
|
-
"@milaboratories/pl-
|
|
36
|
+
"@milaboratories/pl-model-common": "^1.17.0",
|
|
37
37
|
"@milaboratories/resolve-helper": "^1.1.0",
|
|
38
|
-
"@milaboratories/pl-
|
|
38
|
+
"@milaboratories/pl-http": "^1.1.4",
|
|
39
|
+
"@milaboratories/pl-model-middle-layer": "^1.8.0",
|
|
39
40
|
"@milaboratories/ts-helpers": "^1.4.1",
|
|
40
|
-
"@milaboratories/ts-helpers-oclif": "^1.1.23"
|
|
41
|
-
"@milaboratories/pl-model-middle-layer": "^1.7.52"
|
|
41
|
+
"@milaboratories/ts-helpers-oclif": "^1.1.23"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"typescript": "~5.6.3",
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
"@jest/globals": "^29.7.0",
|
|
56
56
|
"oclif": "^4.16.2",
|
|
57
57
|
"ts-jest": "^29.2.6",
|
|
58
|
-
"@milaboratories/
|
|
59
|
-
"@milaboratories/
|
|
58
|
+
"@milaboratories/oclif-index": "1.1.1",
|
|
59
|
+
"@milaboratories/build-configs": "1.0.5"
|
|
60
60
|
},
|
|
61
61
|
"oclif": {
|
|
62
62
|
"bin": "block-tools",
|
package/src/cmd/publish.ts
CHANGED
|
@@ -6,7 +6,27 @@ import { BlockPackManifest, overrideManifestVersion } from '@milaboratories/pl-m
|
|
|
6
6
|
import { storageByUrl } from '../io/storage';
|
|
7
7
|
import { BlockRegistryV2 } from '../v2/registry/registry';
|
|
8
8
|
import path from 'node:path';
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
function simpleDeepMerge<T extends Record<string, unknown>>(
|
|
11
|
+
target: Record<string, unknown>,
|
|
12
|
+
source: T
|
|
13
|
+
): T {
|
|
14
|
+
const result = { ...target };
|
|
15
|
+
|
|
16
|
+
for (const key in source) {
|
|
17
|
+
if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {
|
|
18
|
+
if (result[key] && typeof result[key] === 'object' && !Array.isArray(result[key])) {
|
|
19
|
+
result[key] = simpleDeepMerge(result[key] as Record<string, unknown>, source[key] as Record<string, unknown>);
|
|
20
|
+
} else {
|
|
21
|
+
result[key] = source[key];
|
|
22
|
+
}
|
|
23
|
+
} else {
|
|
24
|
+
result[key] = source[key];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return result as T;
|
|
29
|
+
}
|
|
10
30
|
|
|
11
31
|
export default class Publish extends Command {
|
|
12
32
|
static description =
|
|
@@ -45,9 +65,10 @@ export default class Publish extends Command {
|
|
|
45
65
|
const { flags } = await this.parse(Publish);
|
|
46
66
|
|
|
47
67
|
const manifestPath = path.resolve(flags.manifest);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
68
|
+
const rawManifest = JSON.parse(await fs.promises.readFile(manifestPath, { encoding: 'utf-8' }));
|
|
69
|
+
let manifest = BlockPackManifest.parse(rawManifest);
|
|
70
|
+
// To keep extra fields from the manifest and keep coerced fields
|
|
71
|
+
manifest = simpleDeepMerge(rawManifest, manifest);
|
|
51
72
|
const manifestRoot = path.dirname(manifestPath);
|
|
52
73
|
|
|
53
74
|
this.log(`Manifest root = ${manifestRoot}`);
|