@platforma-sdk/block-tools 2.6.25 → 2.6.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -1,6 +1,6 @@
1
- "use strict";var j=Object.create;var N=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,M=Object.prototype.hasOwnProperty;var Y=(i,e,a)=>e in i?N(i,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[e]=a;var U=(i,e,a,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of $(e))!M.call(i,r)&&r!==a&&N(i,r,{get:()=>e[r],enumerable:!(t=B(e,r))||t.enumerable});return i};var J=(i,e,a)=>(a=i!=null?j(D(i)):{},U(e||!i||!i.__esModule?N(a,"default",{value:i,enumerable:!0}):a,i));var o=(i,e,a)=>Y(i,typeof e!="symbol"?e+"":e,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@oclif/core"),u=require("node:path"),m=require("node:fs");require("zod");require("mime-types");require("tar");require("@milaboratories/resolve-helper");const n=require("./config-DjpRXRy9.js"),f=require("@milaboratories/pl-model-middle-layer");require("@milaboratories/pl-model-common");require("@milaboratories/ts-helpers");require("canonicalize");require("lru-cache");const h=require("@milaboratories/ts-helpers-oclif");require("undici");require("@milaboratories/pl-http");const x=require("yaml"),p=class p extends s.Command{async run(){const{flags:e}=await this.parse(p),a=u.resolve(e.modulePath),t=await n.loadPackDescriptionRaw(a),r=await n.BlockPackMetaEmbedAbsoluteBase64.parseAsync(n.BlockPackMetaDescription(a).parse(t.meta));await m.promises.writeFile(u.resolve(e.destination),JSON.stringify(r))}};o(p,"description","Extracts meta information from blocks package.json and outputs meta.json with embedded binary and textual information linked from the meta section."),o(p,"flags",{modulePath:s.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),destination:s.Flags.string({char:"o",summary:"output meta.json file",helpValue:"<path>",required:!0})});let S=p;async function H(i){try{return await m.promises.readFile(i,"utf8")}catch(e){if(e.code==="ENOENT")return;throw e}}const y=class y extends s.Command{async run(){const{flags:e}=await this.parse(y),a=u.resolve(e.modulePath);let{model:t,platforma:r}=require(a);if(t||(t=r),!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 d=await H(e.sourceBundle);d!==void 0&&(l.code={type:"plain",content:d}),await m.promises.writeFile(u.resolve(e.destination),JSON.stringify(l))}};o(y,"description","Extracts and outputs block model JSON from pre-built block model module"),o(y,"flags",{modulePath:s.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),sourceBundle:s.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:s.Flags.string({char:"o",summary:"output model file",helpValue:"<path>",default:"./dist/model.json"})});let A=y;const w=class w extends s.Command{async run(){const{flags:e}=await this.parse(w),a=n.storageByUrl(e.registry),r=await new n.BlockRegistryV2(a,new h.OclifLoggerAdapter(this)).listGlobalOverviewSnapshots();if(e.json)this.log(JSON.stringify(r,null,2));else if(r.length===0)this.log("No snapshots found.");else{this.log(`Found ${r.length} snapshot(s):
2
- `);for(const l of r)this.log(` ${l.timestamp}`),this.log(` Path: ${l.path}`),this.log("")}}};o(w,"description","List all available global overview snapshots in the registry"),o(w,"flags",{registry:s.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),json:s.Flags.boolean({summary:"output in JSON format",default:!1})});let q=w;const v=class v extends s.Command{async run(){const{flags:e}=await this.parse(v);let a=await n.loadPackDescriptionRaw(u.resolve(e.modulePath));e["version-override"]&&(a=f.overrideDescriptionVersion(a,e["version-override"]));const t=n.storageByUrl(e.registry),r=new n.BlockRegistryV2(t,new h.OclifLoggerAdapter(this));e.unmark?await r.removePackageFromChannel(a.id,e.channel):await r.addPackageToChannel(a.id,e.channel),e.refresh&&await r.updateIfNeeded()}};o(v,"description","Mark target block stable"),o(v,"flags",{modulePath:s.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),channel:s.Flags.string({char:"c",hidden:!0,summary:"custom channel",helpValue:"<channel name>",default:f.StableChannel}),"version-override":s.Flags.file({char:"v",summary:"override package version"}),registry:s.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),refresh:s.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"}),unmark:s.Flags.boolean({summary:'reverses meaning of this command, flag can be used to remove "stable" flag from the package',default:!1})});let C=v;const b=class b extends s.Command{async run(){const{flags:e}=await this.parse(b),a=await n.loadPackDescription(u.resolve(e.modulePath));await n.buildBlockPackDist(a,u.resolve(e.destinationPath))}};o(b,"description","Builds block pack and outputs a block pack manifest consolidating all references assets into a single folder"),o(b,"flags",{modulePath:s.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),destinationPath:s.Flags.string({char:"o",summary:"output folder",helpValue:"<path>",default:"./block-pack"})});let V=b;function G(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]=G(a[t],e[t]):a[t]=e[t];return a}const k=class k extends s.Command{async run(){const{flags:e}=await this.parse(k),a=u.resolve(e.manifest),t=JSON.parse(await m.promises.readFile(a,{encoding:"utf-8"}));let r=f.BlockPackManifest.parse(t);r=G(t,r);const l=u.dirname(a);this.log(`Manifest root = ${l}`),e["version-override"]&&(r=f.overrideManifestVersion(r,e["version-override"]));const d=n.storageByUrl(e.registry),c=new n.BlockRegistryV2(d,new h.OclifLoggerAdapter(this));await c.publishPackage(r,async g=>Buffer.from(await m.promises.readFile(u.resolve(l,g)))),e.unstable||(this.log(`Adding package to ${f.StableChannel} channel...`),await c.addPackageToChannel(r.description.id,f.StableChannel)),e.refresh&&await c.updateIfNeeded()}};o(k,"description","Publishes the block package and refreshes the registry (for v2 block-pack schema)"),o(k,"flags",{registry:s.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),manifest:s.Flags.file({char:"m",summary:"manifest file path",exists:!0,default:`./block-pack/${n.ManifestFileName}`}),"version-override":s.Flags.file({char:"v",summary:"override package version"}),refresh:s.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"}),unstable:s.Flags.boolean({summary:"do not add the published package to stable channel",default:!1,env:"PL_PUBLISH_UNSTABLE"})});let L=k;const F=class F extends s.Command{async run(){const{flags:e}=await this.parse(F),a=n.storageByUrl(e.registry);await new n.BlockRegistryV2(a,new h.OclifLoggerAdapter(this)).updateIfNeeded(e.mode)}};o(F,"description","Refresh overview files based on published but not proecessed artefacts"),o(F,"flags",{registry:s.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),mode:s.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 I=F;const P=class P extends s.Command{async run(){const{flags:e}=await this.parse(P),a=n.storageByUrl(e.registry),t=new n.BlockRegistryV2(a,new h.OclifLoggerAdapter(this)),r=await t.listGlobalOverviewSnapshots();if(r.find(d=>d.timestamp===e.snapshot)||this.error(`Snapshot '${e.snapshot}' not found. Available snapshots:
1
+ "use strict";var B=Object.create;var S=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var Y=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var J=(i,e,a)=>e in i?S(i,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[e]=a;var H=(i,e,a,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of U(e))!D.call(i,r)&&r!==a&&S(i,r,{get:()=>e[r],enumerable:!(s=M(e,r))||s.enumerable});return i};var _=(i,e,a)=>(a=i!=null?B(Y(i)):{},H(e||!i||!i.__esModule?S(a,"default",{value:i,enumerable:!0}):a,i));var o=(i,e,a)=>J(i,typeof e!="symbol"?e+"":e,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@oclif/core"),u=require("node:path"),m=require("node:fs");require("zod");require("mime-types");require("tar");require("@milaboratories/resolve-helper");const n=require("./config-DjpRXRy9.js"),g=require("@milaboratories/pl-model-middle-layer");require("@milaboratories/pl-model-common");require("@milaboratories/ts-helpers");require("canonicalize");require("lru-cache");const p=require("@milaboratories/ts-helpers-oclif");require("undici");require("@milaboratories/pl-http");const G=require("yaml"),K=require("node:child_process"),z=require("node:module");var E=typeof document<"u"?document.currentScript:null;const h=class h extends t.Command{async run(){const{flags:e}=await this.parse(h),a=u.resolve(e.modulePath),s=await n.loadPackDescriptionRaw(a),r=await n.BlockPackMetaEmbedAbsoluteBase64.parseAsync(n.BlockPackMetaDescription(a).parse(s.meta));await m.promises.writeFile(u.resolve(e.destination),JSON.stringify(r))}};o(h,"description","Extracts meta information from blocks package.json and outputs meta.json with embedded binary and textual information linked from the meta section."),o(h,"flags",{modulePath:t.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),destination:t.Flags.string({char:"o",summary:"output meta.json file",helpValue:"<path>",required:!0})});let q=h;async function W(i){try{return await m.promises.readFile(i,"utf8")}catch(e){if(e.code==="ENOENT")return;throw e}}const y=class y extends t.Command{async run(){const{flags:e}=await this.parse(y),a=u.resolve(e.modulePath);let{model:s,platforma:r}=require(a);if(s||(s=r),!s)throw new Error('"model" export not found');const{config:l}=s;if(!l)throw new Error('Malformed "model" object, check it is created with "BlockModel" and ".done()" is executed as the call in the chain.');if(!("canRun"in l||"inputsValid"in l)||!("outputs"in l)||!("sections"in l))throw new Error('"config" has unexpected structure');const d=await W(e.sourceBundle);d!==void 0&&(l.code={type:"plain",content:d}),await m.promises.writeFile(u.resolve(e.destination),JSON.stringify(l))}};o(y,"description","Extracts and outputs block model JSON from pre-built block model module"),o(y,"flags",{modulePath:t.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),sourceBundle:t.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:t.Flags.string({char:"o",summary:"output model file",helpValue:"<path>",default:"./dist/model.json"})});let C=y;const w=class w extends t.Command{async run(){const{flags:e}=await this.parse(w),a=n.storageByUrl(e.registry),r=await new n.BlockRegistryV2(a,new p.OclifLoggerAdapter(this)).listGlobalOverviewSnapshots();if(e.json)this.log(JSON.stringify(r,null,2));else if(r.length===0)this.log("No snapshots found.");else{this.log(`Found ${r.length} snapshot(s):
2
+ `);for(const l of r)this.log(` ${l.timestamp}`),this.log(` Path: ${l.path}`),this.log("")}}};o(w,"description","List all available global overview snapshots in the registry"),o(w,"flags",{registry:t.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),json:t.Flags.boolean({summary:"output in JSON format",default:!1})});let A=w;const v=class v extends t.Command{async run(){const{flags:e}=await this.parse(v);let a=await n.loadPackDescriptionRaw(u.resolve(e.modulePath));e["version-override"]&&(a=g.overrideDescriptionVersion(a,e["version-override"]));const s=n.storageByUrl(e.registry),r=new n.BlockRegistryV2(s,new p.OclifLoggerAdapter(this));e.unmark?await r.removePackageFromChannel(a.id,e.channel):await r.addPackageToChannel(a.id,e.channel),e.refresh&&await r.updateIfNeeded()}};o(v,"description","Mark target block stable"),o(v,"flags",{modulePath:t.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),channel:t.Flags.string({char:"c",hidden:!0,summary:"custom channel",helpValue:"<channel name>",default:g.StableChannel}),"version-override":t.Flags.file({char:"v",summary:"override package version"}),registry:t.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),refresh:t.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"}),unmark:t.Flags.boolean({summary:'reverses meaning of this command, flag can be used to remove "stable" flag from the package',default:!1})});let L=v;const b=class b extends t.Command{async run(){const{flags:e}=await this.parse(b),a=await n.loadPackDescription(u.resolve(e.modulePath));await n.buildBlockPackDist(a,u.resolve(e.destinationPath))}};o(b,"description","Builds block pack and outputs a block pack manifest consolidating all references assets into a single folder"),o(b,"flags",{modulePath:t.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),destinationPath:t.Flags.string({char:"o",summary:"output folder",helpValue:"<path>",default:"./block-pack"})});let V=b;function $(i,e){const a={...i};for(const s in e)e[s]&&typeof e[s]=="object"&&!Array.isArray(e[s])&&a[s]&&typeof a[s]=="object"&&!Array.isArray(a[s])?a[s]=$(a[s],e[s]):a[s]=e[s];return a}const k=class k extends t.Command{async run(){const{flags:e}=await this.parse(k),a=u.resolve(e.manifest),s=JSON.parse(await m.promises.readFile(a,{encoding:"utf-8"}));let r=g.BlockPackManifest.parse(s);r=$(s,r);const l=u.dirname(a);this.log(`Manifest root = ${l}`),e["version-override"]&&(r=g.overrideManifestVersion(r,e["version-override"]));const d=n.storageByUrl(e.registry),c=new n.BlockRegistryV2(d,new p.OclifLoggerAdapter(this));await c.publishPackage(r,async f=>Buffer.from(await m.promises.readFile(u.resolve(l,f)))),e.unstable||(this.log(`Adding package to ${g.StableChannel} channel...`),await c.addPackageToChannel(r.description.id,g.StableChannel)),e.refresh&&await c.updateIfNeeded()}};o(k,"description","Publishes the block package and refreshes the registry (for v2 block-pack schema)"),o(k,"flags",{registry:t.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),manifest:t.Flags.file({char:"m",summary:"manifest file path",exists:!0,default:`./block-pack/${n.ManifestFileName}`}),"version-override":t.Flags.file({char:"v",summary:"override package version"}),refresh:t.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"}),unstable:t.Flags.boolean({summary:"do not add the published package to stable channel",default:!1,env:"PL_PUBLISH_UNSTABLE"})});let I=k;const F=class F extends t.Command{async run(){const{flags:e}=await this.parse(F),a=n.storageByUrl(e.registry);await new n.BlockRegistryV2(a,new p.OclifLoggerAdapter(this)).updateIfNeeded(e.mode)}};o(F,"description","Refresh overview files based on published but not proecessed artefacts"),o(F,"flags",{registry:t.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),mode:t.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 x=F;const P=class P extends t.Command{async run(){const{flags:e}=await this.parse(P),a=n.storageByUrl(e.registry),s=new n.BlockRegistryV2(a,new p.OclifLoggerAdapter(this)),r=await s.listGlobalOverviewSnapshots();if(r.find(d=>d.timestamp===e.snapshot)||this.error(`Snapshot '${e.snapshot}' not found. Available snapshots:
3
3
  ${r.map(d=>` - ${d.timestamp}`).join(`
4
- `)||" (none)"}`),!e["skip-confirmation"]){const c=(await import("node:readline")).createInterface({input:process.stdin,output:process.stdout}),g=await new Promise(E=>{c.question(`⚠️ This will overwrite the current global overview with snapshot '${e.snapshot}'.
5
- Are you sure you want to continue? (y/N): `,E)});if(c.close(),g.toLowerCase()!=="y"&&g.toLowerCase()!=="yes"){this.log("Restore cancelled.");return}}try{await t.restoreGlobalOverviewFromSnapshot(e.snapshot),this.log(`✅ Successfully restored global overview from snapshot '${e.snapshot}'`)}catch(d){this.error(`Failed to restore from snapshot: ${d}`)}}};o(P,"description","Restore global overview from a snapshot"),o(P,"flags",{registry:s.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),snapshot:s.Flags.string({char:"s",summary:"snapshot timestamp ID to restore from",helpValue:"<timestamp>",required:!0}),"skip-confirmation":s.Flags.boolean({summary:"skip confirmation prompt (use with caution)",default:!1})});let O=P;function K(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:u.basename(i)}}const z=s.Flags.custom({summary:"target files to upload",helpValue:"file_path | package_name=file_path",parse:async i=>K(i)}),W=["registry","organization","package","version"],R=class R extends s.Command{async run(){const{flags:e}=await this.parse(R),a=n.PlRegPackageConfigDataShard.parse({});for(const c of W)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=x.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(x.stringify(t.conf));const r=t.createRegistry(new h.OclifLoggerAdapter(this)),l=t.fullPackageName,d=r.constructNewPackage(l);for(const[c,g]of Object.entries(t.conf.files)){this.log(`Uploading ${g} -> ${c} ...`);const E=await m.promises.readFile(g);await d.addFile(c,E)}this.log("Uploading meta information..."),await d.writeMeta(t.conf.meta),await d.finish(),e.refresh&&await r.updateIfNeeded()}};o(R,"description","Uploads V1 package and refreshes the registry"),o(R,"flags",{registry:s.Flags.string({char:"r",summary:"full address of the registry or alias from .pl.reg",helpValue:"<address|alias>",env:"PL_REGISTRY"}),organization:s.Flags.string({char:"o",summary:"target organisation",env:"PL_PACKAGE_ORGANIZATION"}),package:s.Flags.string({char:"p",summary:"target package",env:"PL_PACKAGE_NAME"}),version:s.Flags.string({char:"v",summary:"target version",env:"PL_PACKAGE_VERSION"}),meta:s.Flags.file({char:"m",summary:"json file containing meta information to associate with tha package",exists:!0}),file:z({char:"f",summary:"package files",multiple:!0,default:[]}),refresh:s.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"})});let T=R;const Z={"build-meta":S,"build-model":A,"list-overview-snapshots":q,"mark-stable":C,pack:V,publish:L,"refresh-registry":I,"restore-overview-from-snapshot":O,"upload-package-v1":T};exports.COMMANDS=Z;
4
+ `)||" (none)"}`),!e["skip-confirmation"]){const c=(await import("node:readline")).createInterface({input:process.stdin,output:process.stdout}),f=await new Promise(N=>{c.question(`⚠️ This will overwrite the current global overview with snapshot '${e.snapshot}'.
5
+ Are you sure you want to continue? (y/N): `,N)});if(c.close(),f.toLowerCase()!=="y"&&f.toLowerCase()!=="yes"){this.log("Restore cancelled.");return}}try{await s.restoreGlobalOverviewFromSnapshot(e.snapshot),this.log(`✅ Successfully restored global overview from snapshot '${e.snapshot}'`)}catch(d){this.error(`Failed to restore from snapshot: ${d}`)}}};o(P,"description","Restore global overview from a snapshot"),o(P,"flags",{registry:t.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),snapshot:t.Flags.string({char:"s",summary:"snapshot timestamp ID to restore from",helpValue:"<timestamp>",required:!0}),"skip-confirmation":t.Flags.boolean({summary:"skip confirmation prompt (use with caution)",default:!1})});let T=P;function Z(i){const e=i.match(/(?<destName>[^\/\\]+)=(?<src>.*)/);if(e){const{src:a,destName:s}=e.groups;return{src:a,destName:s}}else return{src:i,destName:u.basename(i)}}const Q=t.Flags.custom({summary:"target files to upload",helpValue:"file_path | package_name=file_path",parse:async i=>Z(i)}),X=["registry","organization","package","version"],R=class R extends t.Command{async run(){const{flags:e}=await this.parse(R),a=n.PlRegPackageConfigDataShard.parse({});for(const c of X)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=G.parse(await m.promises.readFile(e.meta,{encoding:"utf-8"}))));for(const c of e.file)a.files[c.destName]=c.src;const s=await n.getConfig(a);this.log(G.stringify(s.conf));const r=s.createRegistry(new p.OclifLoggerAdapter(this)),l=s.fullPackageName,d=r.constructNewPackage(l);for(const[c,f]of Object.entries(s.conf.files)){this.log(`Uploading ${f} -> ${c} ...`);const N=await m.promises.readFile(f);await d.addFile(c,N)}this.log("Uploading meta information..."),await d.writeMeta(s.conf.meta),await d.finish(),e.refresh&&await r.updateIfNeeded()}};o(R,"description","Uploads V1 package and refreshes the registry"),o(R,"flags",{registry:t.Flags.string({char:"r",summary:"full address of the registry or alias from .pl.reg",helpValue:"<address|alias>",env:"PL_REGISTRY"}),organization:t.Flags.string({char:"o",summary:"target organisation",env:"PL_PACKAGE_ORGANIZATION"}),package:t.Flags.string({char:"p",summary:"target package",env:"PL_PACKAGE_NAME"}),version:t.Flags.string({char:"v",summary:"target version",env:"PL_PACKAGE_VERSION"}),meta:t.Flags.file({char:"m",summary:"json file containing meta information to associate with tha package",exists:!0}),file:Q({char:"f",summary:"package files",multiple:!0,default:[]}),refresh:t.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"})});let O=R;class j extends t.Command{async run(){const a=z.createRequire(typeof document>"u"?require("url").pathToFileURL(__filename).href:E&&E.tagName.toUpperCase()==="SCRIPT"&&E.src||new URL("cli.js",document.baseURI).href).resolve("@platforma-sdk/blocks-deps-updater/scripts/updater.js");K.execFileSync(process.execPath,[a],{stdio:"inherit",cwd:process.cwd()})}}o(j,"description","Updates @platforma-sdk and @milaboratories packages in pnpm-workspace.yaml catalog to their latest versions from npm registry."),o(j,"examples",["<%= config.bin %> <%= command.id %>"]);const ee={"build-meta":q,"build-model":C,"list-overview-snapshots":A,"mark-stable":L,pack:V,publish:I,"refresh-registry":x,"restore-overview-from-snapshot":T,"upload-package-v1":O,"update-deps":j};exports.COMMANDS=ee;
6
6
  //# 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/list-overview-snapshots.ts","../src/cmd/mark-stable.ts","../src/cmd/pack.ts","../src/cmd/publish.ts","../src/cmd/refresh-registry.ts","../src/cmd/restore-overview-from-snapshot.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 } from '../v2/registry/registry';\nimport { storageByUrl } from '../io/storage';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class ListOverviewSnapshots extends Command {\n static description = 'List all available global overview snapshots in the registry';\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 json: Flags.boolean({\n summary: 'output in JSON format',\n default: false\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(ListOverviewSnapshots);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n \n const snapshots = await registry.listGlobalOverviewSnapshots();\n \n if (flags.json) {\n this.log(JSON.stringify(snapshots, null, 2));\n } else {\n if (snapshots.length === 0) {\n this.log('No snapshots found.');\n } else {\n this.log(`Found ${snapshots.length} snapshot(s):\\n`);\n for (const snapshot of snapshots) {\n this.log(` ${snapshot.timestamp}`);\n this.log(` Path: ${snapshot.path}`);\n this.log('');\n }\n }\n }\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, StableChannel } 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 unstable: Flags.boolean({\n summary: 'do not add the published package to stable channel',\n default: false,\n env: 'PL_PUBLISH_UNSTABLE'\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.unstable) {\n this.log(`Adding package to ${StableChannel} channel...`);\n await registry.addPackageToChannel(manifest.description.id, StableChannel);\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 { Command, Flags } from '@oclif/core';\nimport { BlockRegistryV2 } from '../v2/registry/registry';\nimport { storageByUrl } from '../io/storage';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class RestoreOverviewFromSnapshot extends Command {\n static description = 'Restore global overview from a snapshot';\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 snapshot: Flags.string({\n char: 's',\n summary: 'snapshot timestamp ID to restore from',\n helpValue: '<timestamp>',\n required: true\n }),\n\n 'skip-confirmation': Flags.boolean({\n summary: 'skip confirmation prompt (use with caution)',\n default: false\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(RestoreOverviewFromSnapshot);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n \n // Check if snapshot exists\n const snapshots = await registry.listGlobalOverviewSnapshots();\n const targetSnapshot = snapshots.find(s => s.timestamp === flags.snapshot);\n \n if (!targetSnapshot) {\n this.error(`Snapshot '${flags.snapshot}' not found. Available snapshots:\\n${\n snapshots.map(s => ` - ${s.timestamp}`).join('\\n') || ' (none)'\n }`);\n }\n\n // Confirmation prompt (unless skipped)\n if (!flags['skip-confirmation']) {\n const readline = await import('node:readline');\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout\n });\n\n const answer = await new Promise<string>((resolve) => {\n rl.question(\n `⚠️ This will overwrite the current global overview with snapshot '${flags.snapshot}'.\\n` +\n `Are you sure you want to continue? (y/N): `,\n resolve\n );\n });\n \n rl.close();\n\n if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {\n this.log('Restore cancelled.');\n return;\n }\n }\n\n // Perform restore\n try {\n await registry.restoreGlobalOverviewFromSnapshot(flags.snapshot);\n this.log(`✅ Successfully restored global overview from snapshot '${flags.snapshot}'`);\n } catch (error) {\n this.error(`Failed to restore from snapshot: ${error}`);\n }\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 './list-overview-snapshots';\nimport Cmd4 from './mark-stable';\nimport Cmd5 from './pack';\nimport Cmd6 from './publish';\nimport Cmd7 from './refresh-registry';\nimport Cmd8 from './restore-overview-from-snapshot';\nimport Cmd9 from './upload-package-v1';\n\n// prettier-ignore\nexport const COMMANDS = {\n 'build-meta': Cmd0,\n 'build-model': Cmd1,\n 'list-overview-snapshots': Cmd3,\n 'mark-stable': Cmd4,\n 'pack': Cmd5,\n 'publish': Cmd6,\n 'refresh-registry': Cmd7,\n 'restore-overview-from-snapshot': Cmd8,\n 'upload-package-v1': Cmd9,\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","_ListOverviewSnapshots","storage","storageByUrl","snapshots","BlockRegistryV2","OclifLoggerAdapter","snapshot","ListOverviewSnapshots","_MarkStable","description","overrideDescriptionVersion","registry","StableChannel","MarkStable","_PackBlock","loadPackDescription","buildBlockPackDist","PackBlock","simpleDeepMerge","target","source","result","key","_Publish","manifestPath","rawManifest","manifest","BlockPackManifest","manifestRoot","overrideManifestVersion","file","ManifestFileName","Publish","_RefreshRegistry","RefreshRegistry","_RestoreOverviewFromSnapshot","s","rl","answer","resolve","RestoreOverviewFromSnapshot","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","Cmd8","Cmd9"],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sources":["../src/cmd/build-meta.ts","../src/cmd/build-model.ts","../src/cmd/list-overview-snapshots.ts","../src/cmd/mark-stable.ts","../src/cmd/pack.ts","../src/cmd/publish.ts","../src/cmd/refresh-registry.ts","../src/cmd/restore-overview-from-snapshot.ts","../src/registry_v1/flags.ts","../src/cmd/upload-package-v1.ts","../src/cmd/update-deps.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 } from '../v2/registry/registry';\nimport { storageByUrl } from '../io/storage';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class ListOverviewSnapshots extends Command {\n static description = 'List all available global overview snapshots in the registry';\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 json: Flags.boolean({\n summary: 'output in JSON format',\n default: false\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(ListOverviewSnapshots);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n \n const snapshots = await registry.listGlobalOverviewSnapshots();\n \n if (flags.json) {\n this.log(JSON.stringify(snapshots, null, 2));\n } else {\n if (snapshots.length === 0) {\n this.log('No snapshots found.');\n } else {\n this.log(`Found ${snapshots.length} snapshot(s):\\n`);\n for (const snapshot of snapshots) {\n this.log(` ${snapshot.timestamp}`);\n this.log(` Path: ${snapshot.path}`);\n this.log('');\n }\n }\n }\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, StableChannel } 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 unstable: Flags.boolean({\n summary: 'do not add the published package to stable channel',\n default: false,\n env: 'PL_PUBLISH_UNSTABLE'\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.unstable) {\n this.log(`Adding package to ${StableChannel} channel...`);\n await registry.addPackageToChannel(manifest.description.id, StableChannel);\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 { Command, Flags } from '@oclif/core';\nimport { BlockRegistryV2 } from '../v2/registry/registry';\nimport { storageByUrl } from '../io/storage';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class RestoreOverviewFromSnapshot extends Command {\n static description = 'Restore global overview from a snapshot';\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 snapshot: Flags.string({\n char: 's',\n summary: 'snapshot timestamp ID to restore from',\n helpValue: '<timestamp>',\n required: true\n }),\n\n 'skip-confirmation': Flags.boolean({\n summary: 'skip confirmation prompt (use with caution)',\n default: false\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(RestoreOverviewFromSnapshot);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n \n // Check if snapshot exists\n const snapshots = await registry.listGlobalOverviewSnapshots();\n const targetSnapshot = snapshots.find(s => s.timestamp === flags.snapshot);\n \n if (!targetSnapshot) {\n this.error(`Snapshot '${flags.snapshot}' not found. Available snapshots:\\n${\n snapshots.map(s => ` - ${s.timestamp}`).join('\\n') || ' (none)'\n }`);\n }\n\n // Confirmation prompt (unless skipped)\n if (!flags['skip-confirmation']) {\n const readline = await import('node:readline');\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout\n });\n\n const answer = await new Promise<string>((resolve) => {\n rl.question(\n `⚠️ This will overwrite the current global overview with snapshot '${flags.snapshot}'.\\n` +\n `Are you sure you want to continue? (y/N): `,\n resolve\n );\n });\n \n rl.close();\n\n if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {\n this.log('Restore cancelled.');\n return;\n }\n }\n\n // Perform restore\n try {\n await registry.restoreGlobalOverviewFromSnapshot(flags.snapshot);\n this.log(`✅ Successfully restored global overview from snapshot '${flags.snapshot}'`);\n } catch (error) {\n this.error(`Failed to restore from snapshot: ${error}`);\n }\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","import { Command } from '@oclif/core';\nimport { execFileSync } from 'node:child_process';\nimport { createRequire } from 'node:module';\n\nexport default class UpdateDeps extends Command {\n static override description =\n 'Updates @platforma-sdk and @milaboratories packages in pnpm-workspace.yaml catalog to their latest versions from npm registry.';\n\n static override examples = ['<%= config.bin %> <%= command.id %>'];\n\n public async run(): Promise<void> {\n const require = createRequire(import.meta.url);\n const updaterPath = require.resolve('@platforma-sdk/blocks-deps-updater/scripts/updater.js');\n\n execFileSync(process.execPath, [updaterPath], {\n stdio: 'inherit',\n cwd: process.cwd(),\n });\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 './list-overview-snapshots';\nimport Cmd4 from './mark-stable';\nimport Cmd5 from './pack';\nimport Cmd6 from './publish';\nimport Cmd7 from './refresh-registry';\nimport Cmd8 from './restore-overview-from-snapshot';\nimport Cmd9 from './upload-package-v1';\nimport Cmd10 from './update-deps';\n\n// prettier-ignore\nexport const COMMANDS = {\n 'build-meta': Cmd0,\n 'build-model': Cmd1,\n 'list-overview-snapshots': Cmd3,\n 'mark-stable': Cmd4,\n 'pack': Cmd5,\n 'publish': Cmd6,\n 'refresh-registry': Cmd7,\n 'restore-overview-from-snapshot': Cmd8,\n 'upload-package-v1': Cmd9,\n 'update-deps': Cmd10,\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","_ListOverviewSnapshots","storage","storageByUrl","snapshots","BlockRegistryV2","OclifLoggerAdapter","snapshot","ListOverviewSnapshots","_MarkStable","description","overrideDescriptionVersion","registry","StableChannel","MarkStable","_PackBlock","loadPackDescription","buildBlockPackDist","PackBlock","simpleDeepMerge","target","source","result","key","_Publish","manifestPath","rawManifest","manifest","BlockPackManifest","manifestRoot","overrideManifestVersion","file","ManifestFileName","Publish","_RefreshRegistry","RefreshRegistry","_RestoreOverviewFromSnapshot","s","rl","answer","resolve","RestoreOverviewFromSnapshot","parseTargetFile","arg","match","src","destName","targetFile","BasicConfigFields","_UploadPackageV1","configFromFlags","PlRegPackageConfigDataShard","field","YAML","conf","getConfig","name","builder","dst","content","UploadPackageV1","UpdateDeps","updaterPath","createRequire","execFileSync","COMMANDS","Cmd0","Cmd1","Cmd3","Cmd4","Cmd5","Cmd6","Cmd7","Cmd8","Cmd9","Cmd10"],"mappings":"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"}
package/dist/cli.mjs CHANGED
@@ -1,29 +1,31 @@
1
1
  var D = Object.defineProperty;
2
- var q = (l, e, t) => e in l ? D(l, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : l[e] = t;
3
- var i = (l, e, t) => q(l, typeof e != "symbol" ? e + "" : e, t);
2
+ var M = (o, e, t) => e in o ? D(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t;
3
+ var i = (o, e, t) => M(o, typeof e != "symbol" ? e + "" : e, t);
4
4
  import { Command as m, Flags as s } from "@oclif/core";
5
5
  import d from "node:path";
6
- import f from "node:fs";
6
+ import p 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 Y, B as M, a as B, s as R, b as N, c as J, d as H, M as U, P as K, g as z } from "./config-XBQ2O39y.mjs";
12
- import { StableChannel as F, overrideDescriptionVersion as W, BlockPackManifest as _, overrideManifestVersion as Z } from "@milaboratories/pl-model-middle-layer";
11
+ import { l as Y, B, a as J, s as E, b as N, c as H, d as U, M as K, P as z, g as W } from "./config-XBQ2O39y.mjs";
12
+ import { StableChannel as F, overrideDescriptionVersion as _, BlockPackManifest as Z, overrideManifestVersion as Q } 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
- import { OclifLoggerAdapter as p } from "@milaboratories/ts-helpers-oclif";
17
+ import { OclifLoggerAdapter as f } from "@milaboratories/ts-helpers-oclif";
18
18
  import "undici";
19
19
  import "@milaboratories/pl-http";
20
- import $ from "yaml";
20
+ import q from "yaml";
21
+ import { execFileSync as X } from "node:child_process";
22
+ import { createRequire as ee } from "node:module";
21
23
  const h = class h extends m {
22
24
  async run() {
23
- const { flags: e } = await this.parse(h), t = d.resolve(e.modulePath), a = await Y(t), r = await M.parseAsync(
24
- B(t).parse(a.meta)
25
+ const { flags: e } = await this.parse(h), t = d.resolve(e.modulePath), a = await Y(t), r = await B.parseAsync(
26
+ J(t).parse(a.meta)
25
27
  );
26
- await f.promises.writeFile(d.resolve(e.destination), JSON.stringify(r));
28
+ await p.promises.writeFile(d.resolve(e.destination), JSON.stringify(r));
27
29
  }
28
30
  };
29
31
  i(h, "description", "Extracts meta information from blocks package.json and outputs meta.json with embedded binary and textual information linked from the meta section."), i(h, "flags", {
@@ -40,10 +42,10 @@ i(h, "description", "Extracts meta information from blocks package.json and outp
40
42
  required: !0
41
43
  })
42
44
  });
43
- let A = h;
44
- async function Q(l) {
45
+ let x = h;
46
+ async function te(o) {
45
47
  try {
46
- return await f.promises.readFile(l, "utf8");
48
+ return await p.promises.readFile(o, "utf8");
47
49
  } catch (e) {
48
50
  if (e.code === "ENOENT")
49
51
  return;
@@ -55,18 +57,18 @@ const g = class g extends m {
55
57
  const { flags: e } = await this.parse(g), t = d.resolve(e.modulePath);
56
58
  let { model: a, platforma: r } = require(t);
57
59
  if (a || (a = r), !a) throw new Error('"model" export not found');
58
- const { config: o } = a;
59
- if (!o)
60
+ const { config: n } = a;
61
+ if (!n)
60
62
  throw new Error(
61
63
  'Malformed "model" object, check it is created with "BlockModel" and ".done()" is executed as the call in the chain.'
62
64
  );
63
- if (!("canRun" in o || "inputsValid" in o) || !("outputs" in o) || !("sections" in o))
65
+ if (!("canRun" in n || "inputsValid" in n) || !("outputs" in n) || !("sections" in n))
64
66
  throw new Error('"config" has unexpected structure');
65
- const c = await Q(e.sourceBundle);
66
- c !== void 0 && (o.code = {
67
+ const c = await te(e.sourceBundle);
68
+ c !== void 0 && (n.code = {
67
69
  type: "plain",
68
70
  content: c
69
- }), await f.promises.writeFile(d.resolve(e.destination), JSON.stringify(o));
71
+ }), await p.promises.writeFile(d.resolve(e.destination), JSON.stringify(n));
70
72
  }
71
73
  };
72
74
  i(g, "description", "Extracts and outputs block model JSON from pre-built block model module"), i(g, "flags", {
@@ -89,10 +91,10 @@ i(g, "description", "Extracts and outputs block model JSON from pre-built block
89
91
  default: "./dist/model.json"
90
92
  })
91
93
  });
92
- let V = g;
94
+ let A = g;
93
95
  const y = class y extends m {
94
96
  async run() {
95
- const { flags: e } = await this.parse(y), t = R(e.registry), r = await new N(t, new p(this)).listGlobalOverviewSnapshots();
97
+ const { flags: e } = await this.parse(y), t = E(e.registry), r = await new N(t, new f(this)).listGlobalOverviewSnapshots();
96
98
  if (e.json)
97
99
  this.log(JSON.stringify(r, null, 2));
98
100
  else if (r.length === 0)
@@ -100,8 +102,8 @@ const y = class y extends m {
100
102
  else {
101
103
  this.log(`Found ${r.length} snapshot(s):
102
104
  `);
103
- for (const o of r)
104
- this.log(` ${o.timestamp}`), this.log(` Path: ${o.path}`), this.log("");
105
+ for (const n of r)
106
+ this.log(` ${n.timestamp}`), this.log(` Path: ${n.path}`), this.log("");
105
107
  }
106
108
  }
107
109
  };
@@ -118,13 +120,13 @@ i(y, "description", "List all available global overview snapshots in the registr
118
120
  default: !1
119
121
  })
120
122
  });
121
- let I = y;
123
+ let V = y;
122
124
  const w = class w extends m {
123
125
  async run() {
124
126
  const { flags: e } = await this.parse(w);
125
127
  let t = await Y(d.resolve(e.modulePath));
126
- e["version-override"] && (t = W(t, e["version-override"]));
127
- const a = R(e.registry), r = new N(a, new p(this));
128
+ e["version-override"] && (t = _(t, e["version-override"]));
129
+ const a = E(e.registry), r = new N(a, new f(this));
128
130
  e.unmark ? await r.removePackageFromChannel(t.id, e.channel) : await r.addPackageToChannel(t.id, e.channel), e.refresh && await r.updateIfNeeded();
129
131
  }
130
132
  };
@@ -164,11 +166,11 @@ i(w, "description", "Mark target block stable"), i(w, "flags", {
164
166
  default: !1
165
167
  })
166
168
  });
167
- let x = w;
169
+ let I = w;
168
170
  const v = class v extends m {
169
171
  async run() {
170
- const { flags: e } = await this.parse(v), t = await J(d.resolve(e.modulePath));
171
- await H(t, d.resolve(e.destinationPath));
172
+ const { flags: e } = await this.parse(v), t = await H(d.resolve(e.modulePath));
173
+ await U(t, d.resolve(e.destinationPath));
172
174
  }
173
175
  };
174
176
  i(v, "description", "Builds block pack and outputs a block pack manifest consolidating all references assets into a single folder"), i(v, "flags", {
@@ -186,24 +188,24 @@ i(v, "description", "Builds block pack and outputs a block pack manifest consoli
186
188
  })
187
189
  });
188
190
  let L = v;
189
- function O(l, e) {
190
- const t = { ...l };
191
+ function O(o, e) {
192
+ const t = { ...o };
191
193
  for (const a in e)
192
194
  e[a] && typeof e[a] == "object" && !Array.isArray(e[a]) && t[a] && typeof t[a] == "object" && !Array.isArray(t[a]) ? t[a] = O(t[a], e[a]) : t[a] = e[a];
193
195
  return t;
194
196
  }
195
197
  const b = class b extends m {
196
198
  async run() {
197
- const { flags: e } = await this.parse(b), t = d.resolve(e.manifest), a = JSON.parse(await f.promises.readFile(t, { encoding: "utf-8" }));
198
- let r = _.parse(a);
199
+ const { flags: e } = await this.parse(b), t = d.resolve(e.manifest), a = JSON.parse(await p.promises.readFile(t, { encoding: "utf-8" }));
200
+ let r = Z.parse(a);
199
201
  r = O(a, r);
200
- const o = d.dirname(t);
201
- this.log(`Manifest root = ${o}`), e["version-override"] && (r = Z(r, e["version-override"]));
202
- const c = R(e.registry), n = new N(c, new p(this));
203
- await n.publishPackage(
202
+ const n = d.dirname(t);
203
+ this.log(`Manifest root = ${n}`), e["version-override"] && (r = Q(r, e["version-override"]));
204
+ const c = E(e.registry), l = new N(c, new f(this));
205
+ await l.publishPackage(
204
206
  r,
205
- async (u) => Buffer.from(await f.promises.readFile(d.resolve(o, u)))
206
- ), e.unstable || (this.log(`Adding package to ${F} channel...`), await n.addPackageToChannel(r.description.id, F)), e.refresh && await n.updateIfNeeded();
207
+ async (u) => Buffer.from(await p.promises.readFile(d.resolve(n, u)))
208
+ ), e.unstable || (this.log(`Adding package to ${F} channel...`), await l.addPackageToChannel(r.description.id, F)), e.refresh && await l.updateIfNeeded();
207
209
  }
208
210
  };
209
211
  i(b, "description", "Publishes the block package and refreshes the registry (for v2 block-pack schema)"), i(b, "flags", {
@@ -218,7 +220,7 @@ i(b, "description", "Publishes the block package and refreshes the registry (for
218
220
  char: "m",
219
221
  summary: "manifest file path",
220
222
  exists: !0,
221
- default: `./block-pack/${U}`
223
+ default: `./block-pack/${K}`
222
224
  }),
223
225
  "version-override": s.file({
224
226
  char: "v",
@@ -239,8 +241,8 @@ i(b, "description", "Publishes the block package and refreshes the registry (for
239
241
  let G = b;
240
242
  const k = class k extends m {
241
243
  async run() {
242
- const { flags: e } = await this.parse(k), t = R(e.registry);
243
- await new N(t, new p(this)).updateIfNeeded(e.mode);
244
+ const { flags: e } = await this.parse(k), t = E(e.registry);
245
+ await new N(t, new f(this)).updateIfNeeded(e.mode);
244
246
  }
245
247
  };
246
248
  i(k, "description", "Refresh overview files based on published but not proecessed artefacts"), i(k, "flags", {
@@ -263,21 +265,21 @@ i(k, "description", "Refresh overview files based on published but not proecesse
263
265
  let T = k;
264
266
  const P = class P extends m {
265
267
  async run() {
266
- const { flags: e } = await this.parse(P), t = R(e.registry), a = new N(t, new p(this)), r = await a.listGlobalOverviewSnapshots();
268
+ const { flags: e } = await this.parse(P), t = E(e.registry), a = new N(t, new f(this)), r = await a.listGlobalOverviewSnapshots();
267
269
  if (r.find((c) => c.timestamp === e.snapshot) || this.error(`Snapshot '${e.snapshot}' not found. Available snapshots:
268
270
  ${r.map((c) => ` - ${c.timestamp}`).join(`
269
271
  `) || " (none)"}`), !e["skip-confirmation"]) {
270
- const n = (await import("node:readline")).createInterface({
272
+ const l = (await import("node:readline")).createInterface({
271
273
  input: process.stdin,
272
274
  output: process.stdout
273
275
  }), u = await new Promise((S) => {
274
- n.question(
276
+ l.question(
275
277
  `⚠️ This will overwrite the current global overview with snapshot '${e.snapshot}'.
276
278
  Are you sure you want to continue? (y/N): `,
277
279
  S
278
280
  );
279
281
  });
280
- if (n.close(), u.toLowerCase() !== "y" && u.toLowerCase() !== "yes") {
282
+ if (l.close(), u.toLowerCase() !== "y" && u.toLowerCase() !== "yes") {
281
283
  this.log("Restore cancelled.");
282
284
  return;
283
285
  }
@@ -308,42 +310,42 @@ i(P, "description", "Restore global overview from a snapshot"), i(P, "flags", {
308
310
  default: !1
309
311
  })
310
312
  });
311
- let C = P;
312
- function X(l) {
313
- const e = l.match(/(?<destName>[^\/\\]+)=(?<src>.*)/);
313
+ let j = P;
314
+ function ae(o) {
315
+ const e = o.match(/(?<destName>[^\/\\]+)=(?<src>.*)/);
314
316
  if (e) {
315
317
  const { src: t, destName: a } = e.groups;
316
318
  return { src: t, destName: a };
317
319
  } else
318
- return { src: l, destName: d.basename(l) };
320
+ return { src: o, destName: d.basename(o) };
319
321
  }
320
- const ee = s.custom({
322
+ const se = s.custom({
321
323
  summary: "target files to upload",
322
324
  helpValue: "file_path | package_name=file_path",
323
- parse: async (l) => X(l)
324
- }), te = ["registry", "organization", "package", "version"], E = class E extends m {
325
+ parse: async (o) => ae(o)
326
+ }), re = ["registry", "organization", "package", "version"], R = class R extends m {
325
327
  async run() {
326
- const { flags: e } = await this.parse(E), t = K.parse({});
327
- for (const n of te) e[n] && (t[n] = e[n]);
328
+ const { flags: e } = await this.parse(R), t = z.parse({});
329
+ for (const l of re) e[l] && (t[l] = e[l]);
328
330
  e.meta && (e.meta.endsWith(".json") ? t.meta = JSON.parse(
329
- await f.promises.readFile(e.meta, { encoding: "utf-8" })
330
- ) : e.meta.endsWith(".yaml") && (t.meta = $.parse(
331
- await f.promises.readFile(e.meta, { encoding: "utf-8" })
331
+ await p.promises.readFile(e.meta, { encoding: "utf-8" })
332
+ ) : e.meta.endsWith(".yaml") && (t.meta = q.parse(
333
+ await p.promises.readFile(e.meta, { encoding: "utf-8" })
332
334
  )));
333
- for (const n of e.file)
334
- t.files[n.destName] = n.src;
335
- const a = await z(t);
336
- this.log($.stringify(a.conf));
337
- const r = a.createRegistry(new p(this)), o = a.fullPackageName, c = r.constructNewPackage(o);
338
- for (const [n, u] of Object.entries(a.conf.files)) {
339
- this.log(`Uploading ${u} -> ${n} ...`);
340
- const S = await f.promises.readFile(u);
341
- await c.addFile(n, S);
335
+ for (const l of e.file)
336
+ t.files[l.destName] = l.src;
337
+ const a = await W(t);
338
+ this.log(q.stringify(a.conf));
339
+ const r = a.createRegistry(new f(this)), n = a.fullPackageName, c = r.constructNewPackage(n);
340
+ for (const [l, u] of Object.entries(a.conf.files)) {
341
+ this.log(`Uploading ${u} -> ${l} ...`);
342
+ const S = await p.promises.readFile(u);
343
+ await c.addFile(l, S);
342
344
  }
343
345
  this.log("Uploading meta information..."), await c.writeMeta(a.conf.meta), await c.finish(), e.refresh && await r.updateIfNeeded();
344
346
  }
345
347
  };
346
- i(E, "description", "Uploads V1 package and refreshes the registry"), i(E, "flags", {
348
+ i(R, "description", "Uploads V1 package and refreshes the registry"), i(R, "flags", {
347
349
  registry: s.string({
348
350
  char: "r",
349
351
  summary: "full address of the registry or alias from .pl.reg",
@@ -370,7 +372,7 @@ i(E, "description", "Uploads V1 package and refreshes the registry"), i(E, "flag
370
372
  summary: "json file containing meta information to associate with tha package",
371
373
  exists: !0
372
374
  }),
373
- file: ee({
375
+ file: se({
374
376
  char: "f",
375
377
  summary: "package files",
376
378
  multiple: !0,
@@ -383,19 +385,30 @@ i(E, "description", "Uploads V1 package and refreshes the registry"), i(E, "flag
383
385
  env: "PL_REGISTRY_REFRESH"
384
386
  })
385
387
  });
386
- let j = E;
387
- const be = {
388
- "build-meta": A,
389
- "build-model": V,
390
- "list-overview-snapshots": I,
391
- "mark-stable": x,
388
+ let C = R;
389
+ class $ extends m {
390
+ async run() {
391
+ const t = ee(import.meta.url).resolve("@platforma-sdk/blocks-deps-updater/scripts/updater.js");
392
+ X(process.execPath, [t], {
393
+ stdio: "inherit",
394
+ cwd: process.cwd()
395
+ });
396
+ }
397
+ }
398
+ i($, "description", "Updates @platforma-sdk and @milaboratories packages in pnpm-workspace.yaml catalog to their latest versions from npm registry."), i($, "examples", ["<%= config.bin %> <%= command.id %>"]);
399
+ const Ne = {
400
+ "build-meta": x,
401
+ "build-model": A,
402
+ "list-overview-snapshots": V,
403
+ "mark-stable": I,
392
404
  pack: L,
393
405
  publish: G,
394
406
  "refresh-registry": T,
395
- "restore-overview-from-snapshot": C,
396
- "upload-package-v1": j
407
+ "restore-overview-from-snapshot": j,
408
+ "upload-package-v1": C,
409
+ "update-deps": $
397
410
  };
398
411
  export {
399
- be as COMMANDS
412
+ Ne as COMMANDS
400
413
  };
401
414
  //# 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/list-overview-snapshots.ts","../src/cmd/mark-stable.ts","../src/cmd/pack.ts","../src/cmd/publish.ts","../src/cmd/refresh-registry.ts","../src/cmd/restore-overview-from-snapshot.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 } from '../v2/registry/registry';\nimport { storageByUrl } from '../io/storage';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class ListOverviewSnapshots extends Command {\n static description = 'List all available global overview snapshots in the registry';\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 json: Flags.boolean({\n summary: 'output in JSON format',\n default: false\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(ListOverviewSnapshots);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n \n const snapshots = await registry.listGlobalOverviewSnapshots();\n \n if (flags.json) {\n this.log(JSON.stringify(snapshots, null, 2));\n } else {\n if (snapshots.length === 0) {\n this.log('No snapshots found.');\n } else {\n this.log(`Found ${snapshots.length} snapshot(s):\\n`);\n for (const snapshot of snapshots) {\n this.log(` ${snapshot.timestamp}`);\n this.log(` Path: ${snapshot.path}`);\n this.log('');\n }\n }\n }\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, StableChannel } 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 unstable: Flags.boolean({\n summary: 'do not add the published package to stable channel',\n default: false,\n env: 'PL_PUBLISH_UNSTABLE'\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.unstable) {\n this.log(`Adding package to ${StableChannel} channel...`);\n await registry.addPackageToChannel(manifest.description.id, StableChannel);\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 { Command, Flags } from '@oclif/core';\nimport { BlockRegistryV2 } from '../v2/registry/registry';\nimport { storageByUrl } from '../io/storage';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class RestoreOverviewFromSnapshot extends Command {\n static description = 'Restore global overview from a snapshot';\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 snapshot: Flags.string({\n char: 's',\n summary: 'snapshot timestamp ID to restore from',\n helpValue: '<timestamp>',\n required: true\n }),\n\n 'skip-confirmation': Flags.boolean({\n summary: 'skip confirmation prompt (use with caution)',\n default: false\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(RestoreOverviewFromSnapshot);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n \n // Check if snapshot exists\n const snapshots = await registry.listGlobalOverviewSnapshots();\n const targetSnapshot = snapshots.find(s => s.timestamp === flags.snapshot);\n \n if (!targetSnapshot) {\n this.error(`Snapshot '${flags.snapshot}' not found. Available snapshots:\\n${\n snapshots.map(s => ` - ${s.timestamp}`).join('\\n') || ' (none)'\n }`);\n }\n\n // Confirmation prompt (unless skipped)\n if (!flags['skip-confirmation']) {\n const readline = await import('node:readline');\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout\n });\n\n const answer = await new Promise<string>((resolve) => {\n rl.question(\n `⚠️ This will overwrite the current global overview with snapshot '${flags.snapshot}'.\\n` +\n `Are you sure you want to continue? (y/N): `,\n resolve\n );\n });\n \n rl.close();\n\n if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {\n this.log('Restore cancelled.');\n return;\n }\n }\n\n // Perform restore\n try {\n await registry.restoreGlobalOverviewFromSnapshot(flags.snapshot);\n this.log(`✅ Successfully restored global overview from snapshot '${flags.snapshot}'`);\n } catch (error) {\n this.error(`Failed to restore from snapshot: ${error}`);\n }\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 './list-overview-snapshots';\nimport Cmd4 from './mark-stable';\nimport Cmd5 from './pack';\nimport Cmd6 from './publish';\nimport Cmd7 from './refresh-registry';\nimport Cmd8 from './restore-overview-from-snapshot';\nimport Cmd9 from './upload-package-v1';\n\n// prettier-ignore\nexport const COMMANDS = {\n 'build-meta': Cmd0,\n 'build-model': Cmd1,\n 'list-overview-snapshots': Cmd3,\n 'mark-stable': Cmd4,\n 'pack': Cmd5,\n 'publish': Cmd6,\n 'refresh-registry': Cmd7,\n 'restore-overview-from-snapshot': Cmd8,\n 'upload-package-v1': Cmd9,\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","_ListOverviewSnapshots","storage","storageByUrl","snapshots","BlockRegistryV2","OclifLoggerAdapter","snapshot","ListOverviewSnapshots","_MarkStable","description","overrideDescriptionVersion","registry","StableChannel","MarkStable","_PackBlock","loadPackDescription","buildBlockPackDist","PackBlock","simpleDeepMerge","target","source","result","key","_Publish","manifestPath","rawManifest","manifest","BlockPackManifest","manifestRoot","overrideManifestVersion","file","ManifestFileName","Publish","_RefreshRegistry","RefreshRegistry","_RestoreOverviewFromSnapshot","s","rl","answer","resolve","RestoreOverviewFromSnapshot","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","Cmd8","Cmd9"],"mappings":"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"}
1
+ {"version":3,"file":"cli.mjs","sources":["../src/cmd/build-meta.ts","../src/cmd/build-model.ts","../src/cmd/list-overview-snapshots.ts","../src/cmd/mark-stable.ts","../src/cmd/pack.ts","../src/cmd/publish.ts","../src/cmd/refresh-registry.ts","../src/cmd/restore-overview-from-snapshot.ts","../src/registry_v1/flags.ts","../src/cmd/upload-package-v1.ts","../src/cmd/update-deps.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 } from '../v2/registry/registry';\nimport { storageByUrl } from '../io/storage';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class ListOverviewSnapshots extends Command {\n static description = 'List all available global overview snapshots in the registry';\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 json: Flags.boolean({\n summary: 'output in JSON format',\n default: false\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(ListOverviewSnapshots);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n \n const snapshots = await registry.listGlobalOverviewSnapshots();\n \n if (flags.json) {\n this.log(JSON.stringify(snapshots, null, 2));\n } else {\n if (snapshots.length === 0) {\n this.log('No snapshots found.');\n } else {\n this.log(`Found ${snapshots.length} snapshot(s):\\n`);\n for (const snapshot of snapshots) {\n this.log(` ${snapshot.timestamp}`);\n this.log(` Path: ${snapshot.path}`);\n this.log('');\n }\n }\n }\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, StableChannel } 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 unstable: Flags.boolean({\n summary: 'do not add the published package to stable channel',\n default: false,\n env: 'PL_PUBLISH_UNSTABLE'\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.unstable) {\n this.log(`Adding package to ${StableChannel} channel...`);\n await registry.addPackageToChannel(manifest.description.id, StableChannel);\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 { Command, Flags } from '@oclif/core';\nimport { BlockRegistryV2 } from '../v2/registry/registry';\nimport { storageByUrl } from '../io/storage';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class RestoreOverviewFromSnapshot extends Command {\n static description = 'Restore global overview from a snapshot';\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 snapshot: Flags.string({\n char: 's',\n summary: 'snapshot timestamp ID to restore from',\n helpValue: '<timestamp>',\n required: true\n }),\n\n 'skip-confirmation': Flags.boolean({\n summary: 'skip confirmation prompt (use with caution)',\n default: false\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(RestoreOverviewFromSnapshot);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n \n // Check if snapshot exists\n const snapshots = await registry.listGlobalOverviewSnapshots();\n const targetSnapshot = snapshots.find(s => s.timestamp === flags.snapshot);\n \n if (!targetSnapshot) {\n this.error(`Snapshot '${flags.snapshot}' not found. Available snapshots:\\n${\n snapshots.map(s => ` - ${s.timestamp}`).join('\\n') || ' (none)'\n }`);\n }\n\n // Confirmation prompt (unless skipped)\n if (!flags['skip-confirmation']) {\n const readline = await import('node:readline');\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout\n });\n\n const answer = await new Promise<string>((resolve) => {\n rl.question(\n `⚠️ This will overwrite the current global overview with snapshot '${flags.snapshot}'.\\n` +\n `Are you sure you want to continue? (y/N): `,\n resolve\n );\n });\n \n rl.close();\n\n if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {\n this.log('Restore cancelled.');\n return;\n }\n }\n\n // Perform restore\n try {\n await registry.restoreGlobalOverviewFromSnapshot(flags.snapshot);\n this.log(`✅ Successfully restored global overview from snapshot '${flags.snapshot}'`);\n } catch (error) {\n this.error(`Failed to restore from snapshot: ${error}`);\n }\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","import { Command } from '@oclif/core';\nimport { execFileSync } from 'node:child_process';\nimport { createRequire } from 'node:module';\n\nexport default class UpdateDeps extends Command {\n static override description =\n 'Updates @platforma-sdk and @milaboratories packages in pnpm-workspace.yaml catalog to their latest versions from npm registry.';\n\n static override examples = ['<%= config.bin %> <%= command.id %>'];\n\n public async run(): Promise<void> {\n const require = createRequire(import.meta.url);\n const updaterPath = require.resolve('@platforma-sdk/blocks-deps-updater/scripts/updater.js');\n\n execFileSync(process.execPath, [updaterPath], {\n stdio: 'inherit',\n cwd: process.cwd(),\n });\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 './list-overview-snapshots';\nimport Cmd4 from './mark-stable';\nimport Cmd5 from './pack';\nimport Cmd6 from './publish';\nimport Cmd7 from './refresh-registry';\nimport Cmd8 from './restore-overview-from-snapshot';\nimport Cmd9 from './upload-package-v1';\nimport Cmd10 from './update-deps';\n\n// prettier-ignore\nexport const COMMANDS = {\n 'build-meta': Cmd0,\n 'build-model': Cmd1,\n 'list-overview-snapshots': Cmd3,\n 'mark-stable': Cmd4,\n 'pack': Cmd5,\n 'publish': Cmd6,\n 'refresh-registry': Cmd7,\n 'restore-overview-from-snapshot': Cmd8,\n 'upload-package-v1': Cmd9,\n 'update-deps': Cmd10,\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","_ListOverviewSnapshots","storage","storageByUrl","snapshots","BlockRegistryV2","OclifLoggerAdapter","snapshot","ListOverviewSnapshots","_MarkStable","description","overrideDescriptionVersion","registry","StableChannel","MarkStable","_PackBlock","loadPackDescription","buildBlockPackDist","PackBlock","simpleDeepMerge","target","source","result","key","_Publish","manifestPath","rawManifest","manifest","BlockPackManifest","manifestRoot","overrideManifestVersion","file","ManifestFileName","Publish","_RefreshRegistry","RefreshRegistry","_RestoreOverviewFromSnapshot","s","rl","answer","resolve","RestoreOverviewFromSnapshot","parseTargetFile","arg","match","src","destName","targetFile","BasicConfigFields","_UploadPackageV1","configFromFlags","PlRegPackageConfigDataShard","field","YAML","conf","getConfig","name","builder","dst","content","UploadPackageV1","UpdateDeps","updaterPath","createRequire","execFileSync","COMMANDS","Cmd0","Cmd1","Cmd3","Cmd4","Cmd5","Cmd6","Cmd7","Cmd8","Cmd9","Cmd10"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAMA,MAAqBA,IAArB,MAAqBA,UAAkBC,EAAQ;AAAA,EAqB7C,MAAa,MAAqB;AAChC,UAAM,EAAE,OAAAC,EAAA,IAAU,MAAM,KAAK,MAAMF,CAAS,GACtCG,IAAaC,EAAK,QAAQF,EAAM,UAAU,GAC1CG,IAAiB,MAAMC,EAAuBH,CAAU,GACxDI,IAAe,MAAMC,EAAiC;AAAA,MAC1DC,EAAyBN,CAAU,EAAE,MAAME,EAAe,IAAI;AAAA,IAAA;AAGhE,UAAMK,EAAG,SAAS,UAAUN,EAAK,QAAQF,EAAM,WAAW,GAAG,KAAK,UAAUK,CAAY,CAAC;AAAA,EAC3F;AACF;AA9BEI,EADmBX,GACH,eACd,wJAGFW,EALmBX,GAKZ,SAAQ;AAAA,EACb,YAAYY,EAAM,OAAO;AAAA,IACvB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,EAAA,CACV;AAAA,EAED,aAAaA,EAAM,OAAO;AAAA,IACxB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,UAAU;AAAA,EAAA,CACX;AAAA;AAlBL,IAAqBC,IAArBb;ACFA,eAAec,GAAeV,GAAc;AAC1C,MAAI;AACF,WAAO,MAAMM,EAAG,SAAS,SAASN,GAAM,MAAM;AAAA,EAChD,SAASW,GAAY;AACnB,QAAIA,EAAM,SAAS;AACjB;AAEF,UAAMA;AAAA,EACR;AACF;AAEA,MAAqBC,IAArB,MAAqBA,UAAmBf,EAAQ;AAAA,EA2B9C,MAAa,MAAqB;AAChC,UAAM,EAAE,OAAAC,EAAA,IAAU,MAAM,KAAK,MAAMc,CAAU,GACvCb,IAAaC,EAAK,QAAQF,EAAM,UAAU;AAChD,QAAI,EAAE,OAAAe,GAAO,WAAAC,MAAc,QAAQf,CAAU;AAG7C,QADKc,MAAOA,IAAQC,IAChB,CAACD,EAAO,OAAM,IAAI,MAAM,0BAA0B;AAEtD,UAAM,EAAE,QAAAE,MAAWF;AAEnB,QAAI,CAACE;AACH,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAIJ,QACE,EAAE,YAAYA,KAAU,iBAAiBA,MACzC,EAAE,aAAaA,MACf,EAAE,cAAcA;AAEhB,YAAM,IAAI,MAAM,mCAAmC;AAErD,UAAMC,IAAO,MAAMN,GAAeZ,EAAM,YAAY;AACpD,IAAIkB,MAAS,WACXD,EAAO,OAAO;AAAA,MACZ,MAAM;AAAA,MACN,SAASC;AAAA,IAAA,IAIb,MAAMV,EAAG,SAAS,UAAUN,EAAK,QAAQF,EAAM,WAAW,GAAG,KAAK,UAAUiB,CAAM,CAAC;AAAA,EACrF;AACF;AA3DER,EADmBK,GACH,eACd,4EAEFL,EAJmBK,GAIZ,SAAQ;AAAA,EACb,YAAYJ,EAAM,OAAO;AAAA,IACvB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,EAAA,CACV;AAAA,EAED,cAAcA,EAAM,OAAO;AAAA,IACzB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,EAAA,CACV;AAAA,EAED,aAAaA,EAAM,OAAO;AAAA,IACxB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,EAAA,CACV;AAAA;AAxBL,IAAqBS,IAArBL;ACVA,MAAqBM,IAArB,MAAqBA,UAA8BrB,EAAQ;AAAA,EAkBzD,MAAa,MAAqB;AAChC,UAAM,EAAE,OAAAC,EAAA,IAAU,MAAM,KAAK,MAAMoB,CAAqB,GAClDC,IAAUC,EAAatB,EAAM,QAAQ,GAGrCuB,IAAY,MAFD,IAAIC,EAAgBH,GAAS,IAAII,EAAmB,IAAI,CAAC,EAEzC,4BAAA;AAEjC,QAAIzB,EAAM;AACR,WAAK,IAAI,KAAK,UAAUuB,GAAW,MAAM,CAAC,CAAC;AAAA,aAEvCA,EAAU,WAAW;AACvB,WAAK,IAAI,qBAAqB;AAAA,SACzB;AACL,WAAK,IAAI,SAASA,EAAU,MAAM;AAAA,CAAiB;AACnD,iBAAWG,KAAYH;AACrB,aAAK,IAAI,KAAKG,EAAS,SAAS,EAAE,GAClC,KAAK,IAAI,aAAaA,EAAS,IAAI,EAAE,GACrC,KAAK,IAAI,EAAE;AAAA,IAEf;AAAA,EAEJ;AACF;AAvCEjB,EADmBW,GACZ,eAAc,iEAErBX,EAHmBW,GAGZ,SAAQ;AAAA,EACb,UAAUV,EAAM,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,KAAK;AAAA,IACL,UAAU;AAAA,EAAA,CACX;AAAA,EAED,MAAMA,EAAM,QAAQ;AAAA,IAClB,SAAS;AAAA,IACT,SAAS;AAAA,EAAA,CACV;AAAA;AAfL,IAAqBiB,IAArBP;ACMA,MAAqBQ,IAArB,MAAqBA,UAAmB7B,EAAQ;AAAA,EA8C9C,MAAa,MAAqB;AAChC,UAAM,EAAE,OAAAC,EAAA,IAAU,MAAM,KAAK,MAAM4B,CAAU;AAC7C,QAAIC,IAAc,MAAMzB,EAAuBF,EAAK,QAAQF,EAAM,UAAU,CAAC;AAC7E,IAAIA,EAAM,kBAAkB,MAC1B6B,IAAcC,EAA2BD,GAAa7B,EAAM,kBAAkB,CAAC;AACjF,UAAMqB,IAAUC,EAAatB,EAAM,QAAQ,GACrC+B,IAAW,IAAIP,EAAgBH,GAAS,IAAII,EAAmB,IAAI,CAAC;AAE1E,IAAIzB,EAAM,SAAQ,MAAM+B,EAAS,yBAAyBF,EAAY,IAAI7B,EAAM,OAAO,UAC5E+B,EAAS,oBAAoBF,EAAY,IAAI7B,EAAM,OAAO,GAEjEA,EAAM,WAAS,MAAM+B,EAAS,eAAA;AAAA,EACpC;AACF;AA1DEtB,EADmBmB,GACZ,eAAc,6BAErBnB,EAHmBmB,GAGZ,SAAQ;AAAA,EACb,YAAYlB,EAAM,OAAO;AAAA,IACvB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,EAAA,CACV;AAAA,EAED,SAASA,EAAM,OAAO;AAAA,IACpB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAASsB;AAAA,EAAA,CACV;AAAA,EAED,oBAAoBtB,EAAM,KAAK;AAAA,IAC7B,MAAM;AAAA,IACN,SAAS;AAAA,EAAA,CACV;AAAA,EAED,UAAUA,EAAM,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,KAAK;AAAA,IACL,UAAU;AAAA,EAAA,CACX;AAAA,EAED,SAASA,EAAM,QAAQ;AAAA,IACrB,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,KAAK;AAAA,EAAA,CACN;AAAA,EAED,QAAQA,EAAM,QAAQ;AAAA,IACpB,SACE;AAAA,IACF,SAAS;AAAA,EAAA,CACV;AAAA;AA3CL,IAAqBuB,IAArBL;ACNA,MAAqBM,IAArB,MAAqBA,UAAkBnC,EAAQ;AAAA,EAqB7C,MAAa,MAAqB;AAChC,UAAM,EAAE,OAAAC,EAAA,IAAU,MAAM,KAAK,MAAMkC,CAAS,GACtCL,IAAc,MAAMM,EAAoBjC,EAAK,QAAQF,EAAM,UAAU,CAAC;AAC5E,UAAMoC,EAAmBP,GAAa3B,EAAK,QAAQF,EAAM,eAAe,CAAC;AAAA,EAC3E;AACF;AAzBES,EADmByB,GACZ,eACL,iHAGFzB,EALmByB,GAKZ,SAAQ;AAAA,EACb,YAAYxB,EAAM,OAAO;AAAA,IACvB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,EAAA,CACV;AAAA,EAED,iBAAiBA,EAAM,OAAO;AAAA,IAC5B,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,EAAA,CACV;AAAA;AAlBL,IAAqB2B,IAArBH;ACIA,SAASI,EACPC,GACAC,GACG;AACH,QAAMC,IAAS,EAAE,GAAGF,EAAA;AAEpB,aAAWG,KAAOF;AAChB,IAAIA,EAAOE,CAAG,KAAK,OAAOF,EAAOE,CAAG,KAAM,YAAY,CAAC,MAAM,QAAQF,EAAOE,CAAG,CAAC,KAC1ED,EAAOC,CAAG,KAAK,OAAOD,EAAOC,CAAG,KAAM,YAAY,CAAC,MAAM,QAAQD,EAAOC,CAAG,CAAC,IAC9ED,EAAOC,CAAG,IAAIJ,EAAgBG,EAAOC,CAAG,GAA8BF,EAAOE,CAAG,CAA4B,IAK9GD,EAAOC,CAAG,IAAIF,EAAOE,CAAG;AAI5B,SAAOD;AACT;AAEA,MAAqBE,IAArB,MAAqBA,UAAgB5C,EAAQ;AAAA,EAuC3C,MAAa,MAAqB;AAChC,UAAM,EAAE,OAAAC,EAAA,IAAU,MAAM,KAAK,MAAM2C,CAAO,GAEpCC,IAAe1C,EAAK,QAAQF,EAAM,QAAQ,GAC1C6C,IAAc,KAAK,MAAM,MAAMrC,EAAG,SAAS,SAASoC,GAAc,EAAE,UAAU,QAAA,CAAS,CAAC;AAC9F,QAAIE,IAAWC,EAAkB,MAAMF,CAAW;AAElD,IAAAC,IAAWR,EAAgBO,GAAaC,CAAQ;AAChD,UAAME,IAAe9C,EAAK,QAAQ0C,CAAY;AAE9C,SAAK,IAAI,mBAAmBI,CAAY,EAAE,GAEtChD,EAAM,kBAAkB,MAC1B8C,IAAWG,EAAwBH,GAAU9C,EAAM,kBAAkB,CAAC;AAExE,UAAMqB,IAAUC,EAAatB,EAAM,QAAQ,GACrC+B,IAAW,IAAIP,EAAgBH,GAAS,IAAII,EAAmB,IAAI,CAAC;AAE1E,UAAMM,EAAS;AAAA,MAAee;AAAA,MAAU,OAAOI,MAC7C,OAAO,KAAK,MAAM1C,EAAG,SAAS,SAASN,EAAK,QAAQ8C,GAAcE,CAAI,CAAC,CAAC;AAAA,IAAA,GAGrElD,EAAM,aACT,KAAK,IAAI,qBAAqBgC,CAAa,aAAa,GACxD,MAAMD,EAAS,oBAAoBe,EAAS,YAAY,IAAId,CAAa,IAGvEhC,EAAM,WAAS,MAAM+B,EAAS,eAAA;AAAA,EACpC;AACF;AAnEEtB,EADmBkC,GACZ,eACL,sFAEFlC,EAJmBkC,GAIZ,SAAQ;AAAA,EACb,UAAUjC,EAAM,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,KAAK;AAAA,IACL,UAAU;AAAA,EAAA,CACX;AAAA,EAED,UAAUA,EAAM,KAAK;AAAA,IACnB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS,gBAAgByC,CAAgB;AAAA,EAAA,CAC1C;AAAA,EAED,oBAAoBzC,EAAM,KAAK;AAAA,IAC7B,MAAM;AAAA,IACN,SAAS;AAAA,EAAA,CACV;AAAA,EAED,SAASA,EAAM,QAAQ;AAAA,IACrB,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,KAAK;AAAA,EAAA,CACN;AAAA,EAED,UAAUA,EAAM,QAAQ;AAAA,IACtB,SAAS;AAAA,IACT,SAAS;AAAA,IACT,KAAK;AAAA,EAAA,CACN;AAAA;AApCL,IAAqB0C,IAArBT;ACnBA,MAAqBU,IAArB,MAAqBA,UAAwBtD,EAAQ;AAAA,EAsBnD,MAAa,MAAqB;AAChC,UAAM,EAAE,OAAAC,EAAA,IAAU,MAAM,KAAK,MAAMqD,CAAe,GAC5ChC,IAAUC,EAAatB,EAAM,QAAQ;AAE3C,UADiB,IAAIwB,EAAgBH,GAAS,IAAII,EAAmB,IAAI,CAAC,EAC3D,eAAezB,EAAM,IAAsC;AAAA,EAC5E;AACF;AA3BES,EADmB4C,GACZ,eAAc,2EAErB5C,EAHmB4C,GAGZ,SAAQ;AAAA,EACb,UAAU3C,EAAM,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,KAAK;AAAA,IACL,UAAU;AAAA,EAAA,CACX;AAAA,EAED,MAAMA,EAAM,OAAO;AAAA,IACjB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS,CAAC,SAAS,UAAU,SAAS;AAAA,IACtC,KAAK;AAAA,IACL,SAAS;AAAA,EAAA,CACV;AAAA;AAnBL,IAAqB4C,IAArBD;ACNA,MAAqBE,IAArB,MAAqBA,UAAoCxD,EAAQ;AAAA,EAyB/D,MAAa,MAAqB;AAChC,UAAM,EAAE,OAAAC,EAAA,IAAU,MAAM,KAAK,MAAMuD,CAA2B,GACxDlC,IAAUC,EAAatB,EAAM,QAAQ,GACrC+B,IAAW,IAAIP,EAAgBH,GAAS,IAAII,EAAmB,IAAI,CAAC,GAGpEF,IAAY,MAAMQ,EAAS,4BAAA;AAUjC,QATuBR,EAAU,KAAK,OAAKiC,EAAE,cAAcxD,EAAM,QAAQ,KAGvE,KAAK,MAAM,aAAaA,EAAM,QAAQ;AAAA,EACpCuB,EAAU,IAAI,CAAAiC,MAAK,OAAOA,EAAE,SAAS,EAAE,EAAE,KAAK;AAAA,CAAI,KAAK,UACzD,EAAE,GAIA,CAACxD,EAAM,mBAAmB,GAAG;AAE/B,YAAMyD,KADW,MAAM,OAAO,eAAe,GACzB,gBAAgB;AAAA,QAClC,OAAO,QAAQ;AAAA,QACf,QAAQ,QAAQ;AAAA,MAAA,CACjB,GAEKC,IAAS,MAAM,IAAI,QAAgB,CAACC,MAAY;AACpD,QAAAF,EAAG;AAAA,UACD,sEAAsEzD,EAAM,QAAQ;AAAA;AAAA,UAEpF2D;AAAA,QAAA;AAAA,MAEJ,CAAC;AAID,UAFAF,EAAG,MAAA,GAECC,EAAO,kBAAkB,OAAOA,EAAO,YAAA,MAAkB,OAAO;AAClE,aAAK,IAAI,oBAAoB;AAC7B;AAAA,MACF;AAAA,IACF;AAGA,QAAI;AACF,YAAM3B,EAAS,kCAAkC/B,EAAM,QAAQ,GAC/D,KAAK,IAAI,0DAA0DA,EAAM,QAAQ,GAAG;AAAA,IACtF,SAASa,GAAO;AACd,WAAK,MAAM,oCAAoCA,CAAK,EAAE;AAAA,IACxD;AAAA,EACF;AACF;AAvEEJ,EADmB8C,GACZ,eAAc,4CAErB9C,EAHmB8C,GAGZ,SAAQ;AAAA,EACb,UAAU7C,EAAM,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,KAAK;AAAA,IACL,UAAU;AAAA,EAAA,CACX;AAAA,EAED,UAAUA,EAAM,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,UAAU;AAAA,EAAA,CACX;AAAA,EAED,qBAAqBA,EAAM,QAAQ;AAAA,IACjC,SAAS;AAAA,IACT,SAAS;AAAA,EAAA,CACV;AAAA;AAtBL,IAAqBkD,IAArBL;ACGA,SAASM,GAAgBC,GAAyB;AAChD,QAAMC,IAAQD,EAAI,MAAM,kCAAkC;AAC1D,MAAIC,GAAO;AACT,UAAM,EAAE,KAAAC,GAAK,UAAAC,EAAA,IAAaF,EAAM;AAChC,WAAO,EAAE,KAAAC,GAAK,UAAAC,EAAA;AAAA,EAChB;AACE,WAAO,EAAE,KAAKH,GAAK,UAAU5D,EAAK,SAAS4D,CAAG,EAAA;AAElD;AAEO,MAAMI,KAAaxD,EAAM,OAAmB;AAAA,EACjD,SAAS;AAAA,EACT,WAAW;AAAA,EACX,OAAO,OAAOoD,MAAQD,GAAgBC,CAAG;AAC3C,CAAC,GCZKK,KAAwC,CAAC,YAAY,gBAAgB,WAAW,SAAS,GAE1EC,IAArB,MAAqBA,UAAwBrE,EAAQ;AAAA,EAkDnD,MAAa,MAAqB;AAChC,UAAM,EAAE,OAAAC,EAAA,IAAU,MAAM,KAAK,MAAMoE,CAAe,GAC5CC,IAA+CC,EAA4B,MAAM,EAAE;AAEzF,eAAWC,KAASJ,GAAmB,CAAInE,EAAMuE,CAAK,MAAGF,EAAgBE,CAAK,IAAIvE,EAAMuE,CAAK;AAE7F,IAAIvE,EAAM,SACJA,EAAM,KAAK,SAAS,OAAO,IAC7BqE,EAAgB,OAAO,KAAK;AAAA,MAC1B,MAAM7D,EAAG,SAAS,SAASR,EAAM,MAAM,EAAE,UAAU,QAAA,CAAS;AAAA,IAAA,IAEvDA,EAAM,KAAK,SAAS,OAAO,MAClCqE,EAAgB,OAAOG,EAAK;AAAA,MAC1B,MAAMhE,EAAG,SAAS,SAASR,EAAM,MAAM,EAAE,UAAU,QAAA,CAAS;AAAA,IAAA;AAIlE,eAAWkE,KAAclE,EAAM;AAC7B,MAAAqE,EAAgB,MAAMH,EAAW,QAAQ,IAAIA,EAAW;AAG1D,UAAMO,IAAO,MAAMC,EAAUL,CAAe;AAE5C,SAAK,IAAIG,EAAK,UAAUC,EAAK,IAAI,CAAC;AAElC,UAAM1C,IAAW0C,EAAK,eAAe,IAAIhD,EAAmB,IAAI,CAAC,GAC3DkD,IAAOF,EAAK,iBAEZG,IAAU7C,EAAS,oBAAoB4C,CAAI;AAEjD,eAAW,CAACE,GAAKb,CAAG,KAAK,OAAO,QAAQS,EAAK,KAAK,KAAK,GAAG;AACxD,WAAK,IAAI,aAAaT,CAAG,OAAOa,CAAG,MAAM;AACzC,YAAMC,IAAU,MAAMtE,EAAG,SAAS,SAASwD,CAAG;AAC9C,YAAMY,EAAQ,QAAQC,GAAKC,CAAO;AAAA,IACpC;AAEA,SAAK,IAAI,+BAA+B,GACxC,MAAMF,EAAQ,UAAUH,EAAK,KAAK,IAAI,GACtC,MAAMG,EAAQ,OAAA,GAEV5E,EAAM,WAAS,MAAM+B,EAAS,eAAA;AAAA,EACpC;AACF;AA3FEtB,EADmB2D,GACZ,eAAc,kDAErB3D,EAHmB2D,GAGZ,SAAQ;AAAA,EACb,UAAU1D,EAAM,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,KAAK;AAAA,EAAA,CACN;AAAA,EAED,cAAcA,EAAM,OAAO;AAAA,IACzB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,EAAA,CACN;AAAA,EAED,SAASA,EAAM,OAAO;AAAA,IACpB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,EAAA,CACN;AAAA,EAED,SAASA,EAAM,OAAO;AAAA,IACpB,MAAM;AAAA,IACN,SAAS;AAAA,IACT,KAAK;AAAA,EAAA,CACN;AAAA,EAED,MAAMA,EAAM,KAAK;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,EAAA,CACT;AAAA,EAED,MAAMwD,GAAW;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,CAAA;AAAA,EAAC,CACX;AAAA,EAED,SAASxD,EAAM,QAAQ;AAAA,IACrB,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,KAAK;AAAA,EAAA,CACN;AAAA;AA/CL,IAAqBqE,IAArBX;ACRA,MAAqBY,UAAmBjF,EAAQ;AAAA,EAM9C,MAAa,MAAqB;AAEhC,UAAMkF,IADUC,GAAc,YAAY,GAAG,EACjB,QAAQ,uDAAuD;AAE3F,IAAAC,EAAa,QAAQ,UAAU,CAACF,CAAW,GAAG;AAAA,MAC5C,OAAO;AAAA,MACP,KAAK,QAAQ,IAAA;AAAA,IAAI,CAClB;AAAA,EACH;AACF;AAdExE,EADmBuE,GACH,eACd,mIAEFvE,EAJmBuE,GAIH,YAAW,CAAC,qCAAqC;ACM5D,MAAMI,KAAW;AAAA,EACtB,cAAcC;AAAAA,EACd,eAAeC;AAAAA,EACf,2BAA2BC;AAAAA,EAC3B,eAAeC;AAAAA,EACf,MAAQC;AAAAA,EACR,SAAWC;AAAAA,EACX,oBAAoBC;AAAAA,EACpB,kCAAkCC;AAAAA,EAClC,qBAAqBC;AAAAA,EACrB,eAAeC;AACjB;"}
@@ -7,6 +7,7 @@ import { default as Cmd6 } from './publish';
7
7
  import { default as Cmd7 } from './refresh-registry';
8
8
  import { default as Cmd8 } from './restore-overview-from-snapshot';
9
9
  import { default as Cmd9 } from './upload-package-v1';
10
+ import { default as Cmd10 } from './update-deps';
10
11
  export declare const COMMANDS: {
11
12
  'build-meta': typeof Cmd0;
12
13
  'build-model': typeof Cmd1;
@@ -17,4 +18,5 @@ export declare const COMMANDS: {
17
18
  'refresh-registry': typeof Cmd7;
18
19
  'restore-overview-from-snapshot': typeof Cmd8;
19
20
  'upload-package-v1': typeof Cmd9;
21
+ 'update-deps': typeof Cmd10;
20
22
  };
@@ -0,0 +1,6 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class UpdateDeps extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ run(): Promise<void>;
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/block-tools",
3
- "version": "2.6.25",
3
+ "version": "2.6.26",
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,9 +33,10 @@
33
33
  "tar": "^7.4.3",
34
34
  "yaml": "^2.8.0",
35
35
  "zod": "~3.23.8",
36
- "@milaboratories/resolve-helper": "1.1.1",
37
- "@milaboratories/pl-model-common": "1.21.9",
38
36
  "@milaboratories/pl-http": "1.2.0",
37
+ "@milaboratories/pl-model-common": "1.21.9",
38
+ "@platforma-sdk/blocks-deps-updater": "2.0.0",
39
+ "@milaboratories/resolve-helper": "1.1.1",
39
40
  "@milaboratories/pl-model-middle-layer": "1.8.44",
40
41
  "@milaboratories/ts-helpers": "1.5.4",
41
42
  "@milaboratories/ts-helpers-oclif": "1.1.33"
@@ -53,9 +54,9 @@
53
54
  "@vitest/coverage-v8": "^4.0.7",
54
55
  "vitest": "^4.0.7",
55
56
  "oclif": "^4.16.2",
57
+ "@milaboratories/oclif-index": "1.1.1",
56
58
  "@milaboratories/build-configs": "1.0.8",
57
- "@milaboratories/ts-configs": "1.0.6",
58
- "@milaboratories/oclif-index": "1.1.1"
59
+ "@milaboratories/ts-configs": "1.0.6"
59
60
  },
60
61
  "oclif": {
61
62
  "bin": "block-tools",
package/src/cmd/index.ts CHANGED
@@ -9,6 +9,7 @@ import Cmd6 from './publish';
9
9
  import Cmd7 from './refresh-registry';
10
10
  import Cmd8 from './restore-overview-from-snapshot';
11
11
  import Cmd9 from './upload-package-v1';
12
+ import Cmd10 from './update-deps';
12
13
 
13
14
  // prettier-ignore
14
15
  export const COMMANDS = {
@@ -21,4 +22,5 @@ export const COMMANDS = {
21
22
  'refresh-registry': Cmd7,
22
23
  'restore-overview-from-snapshot': Cmd8,
23
24
  'upload-package-v1': Cmd9,
25
+ 'update-deps': Cmd10,
24
26
  };
@@ -0,0 +1,20 @@
1
+ import { Command } from '@oclif/core';
2
+ import { execFileSync } from 'node:child_process';
3
+ import { createRequire } from 'node:module';
4
+
5
+ export default class UpdateDeps extends Command {
6
+ static override description =
7
+ 'Updates @platforma-sdk and @milaboratories packages in pnpm-workspace.yaml catalog to their latest versions from npm registry.';
8
+
9
+ static override examples = ['<%= config.bin %> <%= command.id %>'];
10
+
11
+ public async run(): Promise<void> {
12
+ const require = createRequire(import.meta.url);
13
+ const updaterPath = require.resolve('@platforma-sdk/blocks-deps-updater/scripts/updater.js');
14
+
15
+ execFileSync(process.execPath, [updaterPath], {
16
+ stdio: 'inherit',
17
+ cwd: process.cwd(),
18
+ });
19
+ }
20
+ }