@platforma-sdk/block-tools 2.3.29 → 2.4.0

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.
Files changed (46) hide show
  1. package/README.md +60 -2
  2. package/dist/cli.js +1 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/cli.mjs +142 -87
  5. package/dist/cli.mjs.map +1 -1
  6. package/dist/cmd/index.d.ts +8 -6
  7. package/dist/cmd/index.d.ts.map +1 -1
  8. package/dist/cmd/mark-stable.d.ts +14 -0
  9. package/dist/cmd/mark-stable.d.ts.map +1 -0
  10. package/dist/cmd/publish.d.ts +1 -0
  11. package/dist/cmd/publish.d.ts.map +1 -1
  12. package/dist/config-DJEjRJs6.mjs +1671 -0
  13. package/dist/config-DJEjRJs6.mjs.map +1 -0
  14. package/dist/config-R2w8AhfY.js +3 -0
  15. package/dist/config-R2w8AhfY.js.map +1 -0
  16. package/dist/index.js +1 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/index.mjs +176 -132
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/v2/build_dist.d.ts.map +1 -1
  21. package/dist/v2/model/block_components.d.ts.map +1 -1
  22. package/dist/v2/model/block_description.d.ts.map +1 -1
  23. package/dist/v2/model/block_meta.d.ts.map +1 -1
  24. package/dist/v2/registry/registry.d.ts +6 -3
  25. package/dist/v2/registry/registry.d.ts.map +1 -1
  26. package/dist/v2/registry/registry_reader.d.ts +10 -3
  27. package/dist/v2/registry/registry_reader.d.ts.map +1 -1
  28. package/dist/v2/registry/schema_public.d.ts +15476 -1938
  29. package/dist/v2/registry/schema_public.d.ts.map +1 -1
  30. package/package.json +5 -4
  31. package/src/cmd/index.ts +8 -6
  32. package/src/cmd/mark-stable.ts +71 -0
  33. package/src/cmd/publish.ts +11 -13
  34. package/src/io/storage.test.ts +2 -1
  35. package/src/v2/build_dist.test.ts +1 -0
  36. package/src/v2/build_dist.ts +2 -1
  37. package/src/v2/registry/registry.test.ts +60 -0
  38. package/src/v2/registry/registry.ts +87 -22
  39. package/src/v2/registry/registry_reader.test.ts +4 -0
  40. package/src/v2/registry/registry_reader.ts +83 -30
  41. package/src/v2/registry/schema_public.ts +61 -5
  42. package/src/v2/source_package.test.ts +1 -0
  43. package/dist/config-BVDkG_N7.js +0 -3
  44. package/dist/config-BVDkG_N7.js.map +0 -1
  45. package/dist/config-C9KOwWbG.mjs +0 -1602
  46. package/dist/config-C9KOwWbG.mjs.map +0 -1
package/README.md CHANGED
@@ -6,11 +6,11 @@
6
6
  ## Usage
7
7
  <!-- usage -->
8
8
  ```sh-session
9
- $ npm install -g @milaboratory/pl-block-tools
9
+ $ npm install -g @platforma-sdk/block-tools
10
10
  $ block-tools COMMAND
11
11
  running command...
12
12
  $ block-tools (--version)
13
- @milaboratory/pl-block-tools/2.1.2 darwin-arm64 node-v20.15.0
13
+ @platforma-sdk/block-tools/2.3.28 darwin-arm64 node-v20.15.0
14
14
  $ block-tools --help [COMMAND]
15
15
  USAGE
16
16
  $ block-tools COMMAND
@@ -20,10 +20,30 @@ USAGE
20
20
 
21
21
  ## Commands
22
22
  <!-- commands -->
23
+ * [`block-tools build-meta`](#block-tools-build-meta)
23
24
  * [`block-tools build-model`](#block-tools-build-model)
25
+ * [`block-tools mark-stable`](#block-tools-mark-stable)
24
26
  * [`block-tools pack`](#block-tools-pack)
27
+ * [`block-tools publish`](#block-tools-publish)
25
28
  * [`block-tools upload-package-v1`](#block-tools-upload-package-v1)
26
29
 
30
+ ## `block-tools build-meta`
31
+
32
+ Extracts meta information from blocks package.json and outputs meta.json with embedded binary and textual information linked from the meta section.
33
+
34
+ ```
35
+ USAGE
36
+ $ block-tools build-meta -o <path> [-i <path>]
37
+
38
+ FLAGS
39
+ -i, --modulePath=<path> [default: .] input module path
40
+ -o, --destination=<path> (required) output meta.json file
41
+
42
+ DESCRIPTION
43
+ Extracts meta information from blocks package.json and outputs meta.json with embedded binary and textual information
44
+ linked from the meta section.
45
+ ```
46
+
27
47
  ## `block-tools build-model`
28
48
 
29
49
  Extracts and outputs block model JSON from pre-built block model module
@@ -42,6 +62,26 @@ DESCRIPTION
42
62
  Extracts and outputs block model JSON from pre-built block model module
43
63
  ```
44
64
 
65
+ ## `block-tools mark-stable`
66
+
67
+ Mark target block stable
68
+
69
+ ```
70
+ USAGE
71
+ $ block-tools mark-stable -r <address> [-i <path>] [-v <value>] [--refresh] [--unmark]
72
+
73
+ FLAGS
74
+ -i, --modulePath=<path> [default: .] input module path
75
+ -r, --registry=<address> (required) full address of the registry
76
+ -v, --version-override=<value> override package version
77
+ --[no-]refresh refresh repository after adding the package
78
+ --unmark reverses meaning of this command, flag can be used to remove "stable" flag from the
79
+ package
80
+
81
+ DESCRIPTION
82
+ Mark target block stable
83
+ ```
84
+
45
85
  ## `block-tools pack`
46
86
 
47
87
  Builds block pack and outputs a block pack manifest consolidating all references assets into a single folder
@@ -58,6 +98,24 @@ DESCRIPTION
58
98
  Builds block pack and outputs a block pack manifest consolidating all references assets into a single folder
59
99
  ```
60
100
 
101
+ ## `block-tools publish`
102
+
103
+ Publishes the block package and refreshes the registry (for v2 block-pack schema)
104
+
105
+ ```
106
+ USAGE
107
+ $ block-tools publish -r <address> [-m <value>] [-v <value>] [--refresh]
108
+
109
+ FLAGS
110
+ -m, --manifest=<value> [default: ./block-pack/manifest.json] manifest file path
111
+ -r, --registry=<address> (required) full address of the registry
112
+ -v, --version-override=<value> override package version
113
+ --[no-]refresh refresh repository after adding the package
114
+
115
+ DESCRIPTION
116
+ Publishes the block package and refreshes the registry (for v2 block-pack schema)
117
+ ```
118
+
61
119
  ## `block-tools upload-package-v1`
62
120
 
63
121
  Uploads V1 package and refreshes the registry
package/dist/cli.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var S=Object.defineProperty;var q=(r,e,a)=>e in r?S(r,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):r[e]=a;var n=(r,e,a)=>q(r,typeof e!="symbol"?e+"":e,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@oclif/core"),l=require("node:path"),m=require("node:fs");require("zod");require("mime-types");require("tar");require("@milaboratories/resolve-helper");const c=require("./config-BVDkG_N7.js"),A=require("@milaboratories/pl-model-middle-layer");require("canonicalize");require("lru-cache");const E=require("@milaboratories/ts-helpers-oclif"),N=require("yaml"),f=class f extends t.Command{async run(){const{flags:e}=await this.parse(f),a=l.resolve(e.modulePath),s=await c.loadPackDescriptionRaw(a),d=await c.BlockPackMetaEmbedAbsoluteBase64.parseAsync(c.BlockPackMetaDescription(a).parse(s.meta));await m.promises.writeFile(l.resolve(e.destination),JSON.stringify(d))}};n(f,"description","Extracts meta information from blocks package.json and outputs meta.json with embedded binary and textual information linked from the meta section."),n(f,"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 w=f;async function O(r){try{return await m.promises.readFile(r,"utf8")}catch(e){if(e.code==="ENOENT")return;throw e}}const g=class g extends t.Command{async run(){const{flags:e}=await this.parse(g),a=l.resolve(e.modulePath);let{model:s,platforma:d}=require(a);if(s||(s=d),!s)throw new Error('"model" export not found');const{config:i}=s;if(!i)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 i||"inputsValid"in i)||!("outputs"in i)||!("sections"in i))throw new Error('"config" has unexpected structure');const u=await O(e.sourceBundle);u!==void 0&&(i.code={type:"plain",content:u}),await m.promises.writeFile(l.resolve(e.destination),JSON.stringify(i))}};n(g,"description","Extracts and outputs block model JSON from pre-built block model module"),n(g,"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 k=g;const p=class p extends t.Command{async run(){const{flags:e}=await this.parse(p),a=await c.loadPackDescription(l.resolve(e.modulePath));await c.buildBlockPackDist(a,l.resolve(e.destinationPath))}};n(p,"description","Builds block pack and outputs a block pack manifest consolidating all references assets into a single folder"),n(p,"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 F=p;const h=class h extends t.Command{async run(){const{flags:e}=await this.parse(h),a=l.resolve(e.manifest),s=A.BlockPackManifest.parse(JSON.parse(await m.promises.readFile(a,{encoding:"utf-8"}))),d=l.dirname(a);this.log(`Manifest root = ${d}`);const i=c.storageByUrl(e.registry),u=new c.BlockRegistryV2(i,new E.OclifLoggerAdapter(this));await u.publishPackage(s,async o=>Buffer.from(await m.promises.readFile(l.resolve(d,o)))),e.refresh&&await u.updateIfNeeded()}};n(h,"description","Publishes the block package and refreshes the registry (for v2 block-pack schema)"),n(h,"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/${c.ManifestFileName}`}),refresh:t.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"})});let b=h;function C(r){const e=r.match(/(?<destName>[^\/\\]+)=(?<src>.*)/);if(e){const{src:a,destName:s}=e.groups;return{src:a,destName:s}}else return{src:r,destName:l.basename(r)}}const x=t.Flags.custom({summary:"target files to upload",helpValue:"file_path | package_name=file_path",parse:async r=>C(r)}),L=["registry","organization","package","version"],y=class y extends t.Command{async run(){const{flags:e}=await this.parse(y),a=c.PlRegPackageConfigDataShard.parse({});for(const o of L)e[o]&&(a[o]=e[o]);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=N.parse(await m.promises.readFile(e.meta,{encoding:"utf-8"}))));for(const o of e.file)a.files[o.destName]=o.src;const s=await c.getConfig(a);this.log(N.stringify(s.conf));const d=s.createRegistry(new E.OclifLoggerAdapter(this)),i=s.fullPackageName,u=d.constructNewPackage(i);for(const[o,v]of Object.entries(s.conf.files)){this.log(`Uploading ${v} -> ${o} ...`);const R=await m.promises.readFile(v);await u.addFile(o,R)}this.log("Uploading meta information..."),await u.writeMeta(s.conf.meta),await u.finish(),e.refresh&&await d.updateIfNeeded()}};n(y,"description","Uploads V1 package and refreshes the registry"),n(y,"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:x({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 P=y;const M={"build-meta":w,"build-model":k,pack:F,publish:b,"upload-package-v1":P};exports.COMMANDS=M;
1
+ "use strict";var A=Object.defineProperty;var O=(r,e,t)=>e in r?A(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var o=(r,e,t)=>O(r,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@oclif/core"),d=require("node:path"),m=require("node:fs");require("zod");require("mime-types");require("tar");require("@milaboratories/resolve-helper");const n=require("./config-R2w8AhfY.js"),v=require("@milaboratories/pl-model-middle-layer");require("@milaboratories/ts-helpers");require("canonicalize");require("lru-cache");require("undici");const N=require("@milaboratories/ts-helpers-oclif"),C=require("yaml"),f=class f extends a.Command{async run(){const{flags:e}=await this.parse(f),t=d.resolve(e.modulePath),s=await n.loadPackDescriptionRaw(t),i=await n.BlockPackMetaEmbedAbsoluteBase64.parseAsync(n.BlockPackMetaDescription(t).parse(s.meta));await m.promises.writeFile(d.resolve(e.destination),JSON.stringify(i))}};o(f,"description","Extracts meta information from blocks package.json and outputs meta.json with embedded binary and textual information linked from the meta section."),o(f,"flags",{modulePath:a.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),destination:a.Flags.string({char:"o",summary:"output meta.json file",helpValue:"<path>",required:!0})});let k=f;async function V(r){try{return await m.promises.readFile(r,"utf8")}catch(e){if(e.code==="ENOENT")return;throw e}}const g=class g extends a.Command{async run(){const{flags:e}=await this.parse(g),t=d.resolve(e.modulePath);let{model:s,platforma:i}=require(t);if(s||(s=i),!s)throw new Error('"model" export not found');const{config:l}=s;if(!l)throw new Error('Malformed "model" object, check it is created with "BlockModel" and ".done()" is executed as the call in the chain.');if(!("canRun"in l||"inputsValid"in l)||!("outputs"in l)||!("sections"in l))throw new Error('"config" has unexpected structure');const u=await V(e.sourceBundle);u!==void 0&&(l.code={type:"plain",content:u}),await m.promises.writeFile(d.resolve(e.destination),JSON.stringify(l))}};o(g,"description","Extracts and outputs block model JSON from pre-built block model module"),o(g,"flags",{modulePath:a.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),sourceBundle:a.Flags.string({char:"b",summary:"bundled model code to embed into the model for callback-based rendering to work",helpValue:"<path>",default:"./dist/bundle.js"}),destination:a.Flags.string({char:"o",summary:"output model file",helpValue:"<path>",default:"./dist/model.json"})});let F=g;const h=class h extends a.Command{async run(){const{flags:e}=await this.parse(h);let t=await n.loadPackDescriptionRaw(d.resolve(e.modulePath));e["version-override"]&&(t=v.overrideDescriptionVersion(t,e["version-override"]));const s=n.storageByUrl(e.registry),i=new n.BlockRegistryV2(s,new N.OclifLoggerAdapter(this));e.unmark?await i.removePackageFromChannel(t.id,e.channel):await i.addPackageToChannel(t.id,e.channel),e.refresh&&await i.updateIfNeeded()}};o(h,"description","Mark target block stable"),o(h,"flags",{modulePath:a.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),channel:a.Flags.string({char:"c",hidden:!0,summary:"custom channel",helpValue:"<channel name>",default:v.StableChannel}),"version-override":a.Flags.file({char:"v",summary:"override package version"}),registry:a.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),refresh:a.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"}),unmark:a.Flags.boolean({summary:'reverses meaning of this command, flag can be used to remove "stable" flag from the package',default:!1})});let b=h;const p=class p extends a.Command{async run(){const{flags:e}=await this.parse(p),t=await n.loadPackDescription(d.resolve(e.modulePath));await n.buildBlockPackDist(t,d.resolve(e.destinationPath))}};o(p,"description","Builds block pack and outputs a block pack manifest consolidating all references assets into a single folder"),o(p,"flags",{modulePath:a.Flags.string({char:"i",summary:"input module path",helpValue:"<path>",default:"."}),destinationPath:a.Flags.string({char:"o",summary:"output folder",helpValue:"<path>",default:"./block-pack"})});let P=p;const y=class y extends a.Command{async run(){const{flags:e}=await this.parse(y),t=d.resolve(e.manifest);let s=v.BlockPackManifest.parse(JSON.parse(await m.promises.readFile(t,{encoding:"utf-8"})));const i=d.dirname(t);this.log(`Manifest root = ${i}`),e["version-override"]&&(s=v.overrideManifestVersion(s,e["version-override"]));const l=n.storageByUrl(e.registry),u=new n.BlockRegistryV2(l,new N.OclifLoggerAdapter(this));await u.publishPackage(s,async c=>Buffer.from(await m.promises.readFile(d.resolve(i,c)))),e.refresh&&await u.updateIfNeeded()}};o(y,"description","Publishes the block package and refreshes the registry (for v2 block-pack schema)"),o(y,"flags",{registry:a.Flags.string({char:"r",summary:"full address of the registry",helpValue:"<address>",env:"PL_REGISTRY",required:!0}),manifest:a.Flags.file({char:"m",summary:"manifest file path",exists:!0,default:`./block-pack/${n.ManifestFileName}`}),"version-override":a.Flags.file({char:"v",summary:"override package version"}),refresh:a.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"})});let R=y;function x(r){const e=r.match(/(?<destName>[^\/\\]+)=(?<src>.*)/);if(e){const{src:t,destName:s}=e.groups;return{src:t,destName:s}}else return{src:r,destName:d.basename(r)}}const L=a.Flags.custom({summary:"target files to upload",helpValue:"file_path | package_name=file_path",parse:async r=>x(r)}),I=["registry","organization","package","version"],w=class w extends a.Command{async run(){const{flags:e}=await this.parse(w),t=n.PlRegPackageConfigDataShard.parse({});for(const c of I)e[c]&&(t[c]=e[c]);e.meta&&(e.meta.endsWith(".json")?t.meta=JSON.parse(await m.promises.readFile(e.meta,{encoding:"utf-8"})):e.meta.endsWith(".yaml")&&(t.meta=C.parse(await m.promises.readFile(e.meta,{encoding:"utf-8"}))));for(const c of e.file)t.files[c.destName]=c.src;const s=await n.getConfig(t);this.log(C.stringify(s.conf));const i=s.createRegistry(new N.OclifLoggerAdapter(this)),l=s.fullPackageName,u=i.constructNewPackage(l);for(const[c,q]of Object.entries(s.conf.files)){this.log(`Uploading ${q} -> ${c} ...`);const S=await m.promises.readFile(q);await u.addFile(c,S)}this.log("Uploading meta information..."),await u.writeMeta(s.conf.meta),await u.finish(),e.refresh&&await i.updateIfNeeded()}};o(w,"description","Uploads V1 package and refreshes the registry"),o(w,"flags",{registry:a.Flags.string({char:"r",summary:"full address of the registry or alias from .pl.reg",helpValue:"<address|alias>",env:"PL_REGISTRY"}),organization:a.Flags.string({char:"o",summary:"target organisation",env:"PL_PACKAGE_ORGANIZATION"}),package:a.Flags.string({char:"p",summary:"target package",env:"PL_PACKAGE_NAME"}),version:a.Flags.string({char:"v",summary:"target version",env:"PL_PACKAGE_VERSION"}),meta:a.Flags.file({char:"m",summary:"json file containing meta information to associate with tha package",exists:!0}),file:L({char:"f",summary:"package files",multiple:!0,default:[]}),refresh:a.Flags.boolean({summary:"refresh repository after adding the package",default:!0,allowNo:!0,env:"PL_REGISTRY_REFRESH"})});let E=w;const T={"build-meta":k,"build-model":F,"mark-stable":b,pack:P,publish:R,"upload-package-v1":E};exports.COMMANDS=T;
2
2
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sources":["../src/cmd/build-meta.ts","../src/cmd/build-model.ts","../src/cmd/pack.ts","../src/cmd/publish.ts","../src/registry_v1/flags.ts","../src/cmd/upload-package-v1.ts","../src/cmd/index.ts"],"sourcesContent":["import { Command, Flags } from '@oclif/core';\nimport path from 'path';\nimport fs from 'fs';\nimport { loadPackDescriptionRaw } from '../v2';\nimport { BlockPackMetaDescription, BlockPackMetaEmbedAbsoluteBase64 } from '../v2/model/block_meta';\n\nexport default class BuildMeta extends Command {\n static override description =\n 'Extracts meta information from blocks package.json and outputs meta.json with embedded binary ' +\n 'and textual information linked from the meta section.';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n destination: Flags.string({\n char: 'o',\n summary: 'output meta.json file',\n helpValue: '<path>',\n required: true\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(BuildMeta);\n const modulePath = path.resolve(flags.modulePath);\n const descriptionRaw = await loadPackDescriptionRaw(modulePath);\n const metaEmbedded = await BlockPackMetaEmbedAbsoluteBase64.parseAsync(\n BlockPackMetaDescription(modulePath).parse(descriptionRaw.meta)\n );\n\n await fs.promises.writeFile(path.resolve(flags.destination), JSON.stringify(metaEmbedded));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport fs from 'fs';\nimport path from 'path';\n\nasync function getFileContent(path: string) {\n try {\n return await fs.promises.readFile(path, 'utf8');\n } catch (error: any) {\n if (error.code === 'ENOENT') {\n return undefined;\n }\n throw error;\n }\n}\n\nexport default class BuildModel extends Command {\n static override description =\n 'Extracts and outputs block model JSON from pre-built block model module';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n sourceBundle: Flags.string({\n char: 'b',\n summary: 'bundled model code to embed into the model for callback-based rendering to work',\n helpValue: '<path>',\n default: './dist/bundle.js'\n }),\n\n destination: Flags.string({\n char: 'o',\n summary: 'output model file',\n helpValue: '<path>',\n default: './dist/model.json'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(BuildModel);\n const modulePath = path.resolve(flags.modulePath); // i.e. folder with package.json file\n let { model, platforma } = require(modulePath);\n\n if (!model) model = platforma;\n if (!model) throw new Error('\"model\" export not found');\n\n const { config } = model;\n\n if (!config)\n throw new Error(\n 'Malformed \"model\" object, check it is created with \"BlockModel\" ' +\n 'and \".done()\" is executed as the call in the chain.'\n );\n\n if (\n !('canRun' in config || 'inputsValid' in config) ||\n !('outputs' in config) ||\n !('sections' in config)\n )\n throw new Error('\"config\" has unexpected structure');\n\n const code = await getFileContent(flags.sourceBundle);\n if (code !== undefined) {\n config.code = {\n type: 'plain',\n content: code\n };\n }\n\n await fs.promises.writeFile(path.resolve(flags.destination), JSON.stringify(config));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport { 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 } from '@milaboratories/pl-model-middle-layer';\nimport { storageByUrl } from '../io/storage';\nimport { BlockRegistryV2 } from '../v2/registry/registry';\nimport path from 'node:path';\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 refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(Publish);\n\n // 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 const manifestPath = path.resolve(flags.manifest);\n const manifest = BlockPackManifest.parse(\n JSON.parse(await fs.promises.readFile(manifestPath, { encoding: 'utf-8' }))\n );\n const manifestRoot = path.dirname(manifestPath);\n\n this.log(`Manifest root = ${manifestRoot}`);\n\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n\n await registry.publishPackage(manifest, async (file) =>\n Buffer.from(await fs.promises.readFile(path.resolve(manifestRoot, file)))\n );\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","import { Flags } from '@oclif/core';\nimport path from 'node:path';\n\nexport interface TargetFile {\n src: string;\n destName: string;\n}\n\nfunction parseTargetFile(arg: string): TargetFile {\n const match = arg.match(/(?<destName>[^\\/\\\\]+)=(?<src>.*)/);\n if (match) {\n const { src, destName } = match.groups!;\n return { src, destName };\n } else {\n return { src: arg, destName: path.basename(arg) };\n }\n}\n\nexport const targetFile = Flags.custom<TargetFile>({\n summary: 'target files to upload',\n helpValue: 'file_path | package_name=file_path',\n parse: async (arg) => parseTargetFile(arg)\n});\n","import { Command, Flags } from '@oclif/core';\nimport { getConfig } from '../registry_v1/config';\nimport { targetFile } from '../registry_v1/flags';\nimport fs from 'node:fs';\nimport YAML from 'yaml';\nimport { PlRegPackageConfigDataShard } from '../registry_v1/config_schema';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\ntype BasicConfigField = keyof PlRegPackageConfigDataShard &\n ('registry' | 'organization' | 'package' | 'version');\nconst BasicConfigFields: BasicConfigField[] = ['registry', 'organization', 'package', 'version'];\n\nexport default class UploadPackageV1 extends Command {\n static description = 'Uploads V1 package and refreshes the registry';\n\n static flags = {\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry or alias from .pl.reg',\n helpValue: '<address|alias>',\n env: 'PL_REGISTRY'\n }),\n\n organization: Flags.string({\n char: 'o',\n summary: 'target organisation',\n env: 'PL_PACKAGE_ORGANIZATION'\n }),\n\n package: Flags.string({\n char: 'p',\n summary: 'target package',\n env: 'PL_PACKAGE_NAME'\n }),\n\n version: Flags.string({\n char: 'v',\n summary: 'target version',\n env: 'PL_PACKAGE_VERSION'\n }),\n\n meta: Flags.file({\n char: 'm',\n summary: 'json file containing meta information to associate with tha package',\n exists: true\n }),\n\n file: targetFile({\n char: 'f',\n summary: 'package files',\n multiple: true,\n default: []\n }),\n\n refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(UploadPackageV1);\n const configFromFlags: PlRegPackageConfigDataShard = PlRegPackageConfigDataShard.parse({});\n\n for (const field of BasicConfigFields) if (flags[field]) configFromFlags[field] = flags[field];\n\n if (flags.meta) {\n if (flags.meta.endsWith('.json'))\n configFromFlags.meta = JSON.parse(\n await fs.promises.readFile(flags.meta, { encoding: 'utf-8' })\n );\n else if (flags.meta.endsWith('.yaml'))\n configFromFlags.meta = YAML.parse(\n await fs.promises.readFile(flags.meta, { encoding: 'utf-8' })\n );\n }\n\n for (const targetFile of flags.file) {\n configFromFlags.files[targetFile.destName] = targetFile.src;\n }\n\n const conf = await getConfig(configFromFlags);\n\n this.log(YAML.stringify(conf.conf));\n\n const registry = conf.createRegistry(new OclifLoggerAdapter(this));\n const name = conf.fullPackageName;\n\n const builder = registry.constructNewPackage(name);\n\n for (const [dst, src] of Object.entries(conf.conf.files)) {\n this.log(`Uploading ${src} -> ${dst} ...`);\n const content = await fs.promises.readFile(src);\n await builder.addFile(dst, content);\n }\n\n this.log(`Uploading meta information...`);\n await builder.writeMeta(conf.conf.meta);\n await builder.finish();\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","// DO NOT EDIT. This file was generated by oclif-index utility.\n\nimport Cmd0 from './build-meta';\nimport Cmd1 from './build-model';\nimport Cmd3 from './pack';\nimport Cmd4 from './publish';\nimport Cmd5 from './upload-package-v1';\n\n// prettier-ignore\nexport const COMMANDS = {\n 'build-meta': Cmd0,\n 'build-model': Cmd1,\n 'pack': Cmd3,\n 'publish': Cmd4,\n 'upload-package-v1': Cmd5\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","_PackBlock","description","loadPackDescription","buildBlockPackDist","PackBlock","_Publish","manifestPath","manifest","BlockPackManifest","manifestRoot","storage","storageByUrl","registry","BlockRegistryV2","OclifLoggerAdapter","file","ManifestFileName","Publish","parseTargetFile","arg","match","src","destName","targetFile","BasicConfigFields","_UploadPackageV1","configFromFlags","PlRegPackageConfigDataShard","field","YAML","conf","getConfig","name","builder","dst","content","UploadPackageV1","COMMANDS","Cmd0","Cmd1","Cmd3","Cmd4","Cmd5"],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sources":["../src/cmd/build-meta.ts","../src/cmd/build-model.ts","../src/cmd/mark-stable.ts","../src/cmd/pack.ts","../src/cmd/publish.ts","../src/registry_v1/flags.ts","../src/cmd/upload-package-v1.ts","../src/cmd/index.ts"],"sourcesContent":["import { Command, Flags } from '@oclif/core';\nimport path from 'path';\nimport fs from 'fs';\nimport { loadPackDescriptionRaw } from '../v2';\nimport { BlockPackMetaDescription, BlockPackMetaEmbedAbsoluteBase64 } from '../v2/model/block_meta';\n\nexport default class BuildMeta extends Command {\n static override description =\n 'Extracts meta information from blocks package.json and outputs meta.json with embedded binary ' +\n 'and textual information linked from the meta section.';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n destination: Flags.string({\n char: 'o',\n summary: 'output meta.json file',\n helpValue: '<path>',\n required: true\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(BuildMeta);\n const modulePath = path.resolve(flags.modulePath);\n const descriptionRaw = await loadPackDescriptionRaw(modulePath);\n const metaEmbedded = await BlockPackMetaEmbedAbsoluteBase64.parseAsync(\n BlockPackMetaDescription(modulePath).parse(descriptionRaw.meta)\n );\n\n await fs.promises.writeFile(path.resolve(flags.destination), JSON.stringify(metaEmbedded));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport fs from 'fs';\nimport path from 'path';\n\nasync function getFileContent(path: string) {\n try {\n return await fs.promises.readFile(path, 'utf8');\n } catch (error: any) {\n if (error.code === 'ENOENT') {\n return undefined;\n }\n throw error;\n }\n}\n\nexport default class BuildModel extends Command {\n static override description =\n 'Extracts and outputs block model JSON from pre-built block model module';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n sourceBundle: Flags.string({\n char: 'b',\n summary: 'bundled model code to embed into the model for callback-based rendering to work',\n helpValue: '<path>',\n default: './dist/bundle.js'\n }),\n\n destination: Flags.string({\n char: 'o',\n summary: 'output model file',\n helpValue: '<path>',\n default: './dist/model.json'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(BuildModel);\n const modulePath = path.resolve(flags.modulePath); // i.e. folder with package.json file\n let { model, platforma } = require(modulePath);\n\n if (!model) model = platforma;\n if (!model) throw new Error('\"model\" export not found');\n\n const { config } = model;\n\n if (!config)\n throw new Error(\n 'Malformed \"model\" object, check it is created with \"BlockModel\" ' +\n 'and \".done()\" is executed as the call in the chain.'\n );\n\n if (\n !('canRun' in config || 'inputsValid' in config) ||\n !('outputs' in config) ||\n !('sections' in config)\n )\n throw new Error('\"config\" has unexpected structure');\n\n const code = await getFileContent(flags.sourceBundle);\n if (code !== undefined) {\n config.code = {\n type: 'plain',\n content: code\n };\n }\n\n await fs.promises.writeFile(path.resolve(flags.destination), JSON.stringify(config));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport { BlockRegistryV2, loadPackDescriptionRaw } from '../v2';\nimport path from 'path';\nimport {\n overrideDescriptionVersion,\n overrideManifestVersion,\n StableChannel\n} from '@milaboratories/pl-model-middle-layer';\nimport { storageByUrl } from '../io';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\nexport default class MarkStable extends Command {\n static description = 'Mark target block stable';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n channel: Flags.string({\n char: 'c',\n hidden: true,\n summary: 'custom channel',\n helpValue: '<channel name>',\n default: StableChannel\n }),\n\n 'version-override': Flags.file({\n char: 'v',\n summary: 'override package version'\n }),\n\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry',\n helpValue: '<address>',\n env: 'PL_REGISTRY',\n required: true\n }),\n\n refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n }),\n\n unmark: Flags.boolean({\n summary:\n 'reverses meaning of this command, flag can be used to remove \"stable\" flag from the package',\n default: false\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(MarkStable);\n let description = await loadPackDescriptionRaw(path.resolve(flags.modulePath));\n if (flags['version-override'])\n description = overrideDescriptionVersion(description, flags['version-override']);\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n\n if (flags.unmark) await registry.removePackageFromChannel(description.id, flags.channel);\n else await registry.addPackageToChannel(description.id, flags.channel);\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport { loadPackDescription } from '../v2/source_package';\nimport path from 'path';\nimport { buildBlockPackDist } from '../v2/build_dist';\n\nexport default class PackBlock extends Command {\n static description =\n 'Builds block pack and outputs a block pack manifest consolidating all ' +\n 'references assets into a single folder';\n\n static flags = {\n modulePath: Flags.string({\n char: 'i',\n summary: 'input module path',\n helpValue: '<path>',\n default: '.'\n }),\n\n destinationPath: Flags.string({\n char: 'o',\n summary: 'output folder',\n helpValue: '<path>',\n default: './block-pack'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(PackBlock);\n const description = await loadPackDescription(path.resolve(flags.modulePath));\n await buildBlockPackDist(description, path.resolve(flags.destinationPath));\n }\n}\n","import { Command, Flags } from '@oclif/core';\nimport fs from 'node:fs';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\nimport { ManifestFileName } from '../v2/registry/schema_public';\nimport { BlockPackManifest, overrideManifestVersion } from '@milaboratories/pl-model-middle-layer';\nimport { storageByUrl } from '../io/storage';\nimport { BlockRegistryV2 } from '../v2/registry/registry';\nimport path from 'node:path';\nimport * as R from 'remeda';\n\nexport default class Publish extends Command {\n static description =\n 'Publishes the block package and refreshes the registry (for v2 block-pack schema)';\n\n static flags = {\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry',\n helpValue: '<address>',\n env: 'PL_REGISTRY',\n required: true\n }),\n\n manifest: Flags.file({\n char: 'm',\n summary: 'manifest file path',\n exists: true,\n default: `./block-pack/${ManifestFileName}`\n }),\n\n 'version-override': Flags.file({\n char: 'v',\n summary: 'override package version'\n }),\n\n refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(Publish);\n\n const manifestPath = path.resolve(flags.manifest);\n let manifest = BlockPackManifest.parse(\n JSON.parse(await fs.promises.readFile(manifestPath, { encoding: 'utf-8' }))\n );\n const manifestRoot = path.dirname(manifestPath);\n\n this.log(`Manifest root = ${manifestRoot}`);\n\n if (flags['version-override'])\n manifest = overrideManifestVersion(manifest, flags['version-override']);\n\n const storage = storageByUrl(flags.registry);\n const registry = new BlockRegistryV2(storage, new OclifLoggerAdapter(this));\n\n await registry.publishPackage(manifest, async (file) =>\n Buffer.from(await fs.promises.readFile(path.resolve(manifestRoot, file)))\n );\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","import { Flags } from '@oclif/core';\nimport path from 'node:path';\n\nexport interface TargetFile {\n src: string;\n destName: string;\n}\n\nfunction parseTargetFile(arg: string): TargetFile {\n const match = arg.match(/(?<destName>[^\\/\\\\]+)=(?<src>.*)/);\n if (match) {\n const { src, destName } = match.groups!;\n return { src, destName };\n } else {\n return { src: arg, destName: path.basename(arg) };\n }\n}\n\nexport const targetFile = Flags.custom<TargetFile>({\n summary: 'target files to upload',\n helpValue: 'file_path | package_name=file_path',\n parse: async (arg) => parseTargetFile(arg)\n});\n","import { Command, Flags } from '@oclif/core';\nimport { getConfig } from '../registry_v1/config';\nimport { targetFile } from '../registry_v1/flags';\nimport fs from 'node:fs';\nimport YAML from 'yaml';\nimport { PlRegPackageConfigDataShard } from '../registry_v1/config_schema';\nimport { OclifLoggerAdapter } from '@milaboratories/ts-helpers-oclif';\n\ntype BasicConfigField = keyof PlRegPackageConfigDataShard &\n ('registry' | 'organization' | 'package' | 'version');\nconst BasicConfigFields: BasicConfigField[] = ['registry', 'organization', 'package', 'version'];\n\nexport default class UploadPackageV1 extends Command {\n static description = 'Uploads V1 package and refreshes the registry';\n\n static flags = {\n registry: Flags.string({\n char: 'r',\n summary: 'full address of the registry or alias from .pl.reg',\n helpValue: '<address|alias>',\n env: 'PL_REGISTRY'\n }),\n\n organization: Flags.string({\n char: 'o',\n summary: 'target organisation',\n env: 'PL_PACKAGE_ORGANIZATION'\n }),\n\n package: Flags.string({\n char: 'p',\n summary: 'target package',\n env: 'PL_PACKAGE_NAME'\n }),\n\n version: Flags.string({\n char: 'v',\n summary: 'target version',\n env: 'PL_PACKAGE_VERSION'\n }),\n\n meta: Flags.file({\n char: 'm',\n summary: 'json file containing meta information to associate with tha package',\n exists: true\n }),\n\n file: targetFile({\n char: 'f',\n summary: 'package files',\n multiple: true,\n default: []\n }),\n\n refresh: Flags.boolean({\n summary: 'refresh repository after adding the package',\n default: true,\n allowNo: true,\n env: 'PL_REGISTRY_REFRESH'\n })\n };\n\n public async run(): Promise<void> {\n const { flags } = await this.parse(UploadPackageV1);\n const configFromFlags: PlRegPackageConfigDataShard = PlRegPackageConfigDataShard.parse({});\n\n for (const field of BasicConfigFields) if (flags[field]) configFromFlags[field] = flags[field];\n\n if (flags.meta) {\n if (flags.meta.endsWith('.json'))\n configFromFlags.meta = JSON.parse(\n await fs.promises.readFile(flags.meta, { encoding: 'utf-8' })\n );\n else if (flags.meta.endsWith('.yaml'))\n configFromFlags.meta = YAML.parse(\n await fs.promises.readFile(flags.meta, { encoding: 'utf-8' })\n );\n }\n\n for (const targetFile of flags.file) {\n configFromFlags.files[targetFile.destName] = targetFile.src;\n }\n\n const conf = await getConfig(configFromFlags);\n\n this.log(YAML.stringify(conf.conf));\n\n const registry = conf.createRegistry(new OclifLoggerAdapter(this));\n const name = conf.fullPackageName;\n\n const builder = registry.constructNewPackage(name);\n\n for (const [dst, src] of Object.entries(conf.conf.files)) {\n this.log(`Uploading ${src} -> ${dst} ...`);\n const content = await fs.promises.readFile(src);\n await builder.addFile(dst, content);\n }\n\n this.log(`Uploading meta information...`);\n await builder.writeMeta(conf.conf.meta);\n await builder.finish();\n\n if (flags.refresh) await registry.updateIfNeeded();\n }\n}\n","// DO NOT EDIT. This file was generated by oclif-index utility.\n\nimport Cmd0 from './build-meta';\nimport Cmd1 from './build-model';\nimport Cmd3 from './mark-stable';\nimport Cmd4 from './pack';\nimport Cmd5 from './publish';\nimport Cmd6 from './upload-package-v1';\n\n// prettier-ignore\nexport const COMMANDS = {\n 'build-meta': Cmd0,\n 'build-model': Cmd1,\n 'mark-stable': Cmd3,\n 'pack': Cmd4,\n 'publish': Cmd5,\n 'upload-package-v1': Cmd6\n};\n"],"names":["_BuildMeta","Command","flags","modulePath","path","descriptionRaw","loadPackDescriptionRaw","metaEmbedded","BlockPackMetaEmbedAbsoluteBase64","BlockPackMetaDescription","fs","__publicField","Flags","BuildMeta","getFileContent","error","_BuildModel","model","platforma","config","code","BuildModel","_MarkStable","description","overrideDescriptionVersion","storage","storageByUrl","registry","BlockRegistryV2","OclifLoggerAdapter","StableChannel","MarkStable","_PackBlock","loadPackDescription","buildBlockPackDist","PackBlock","_Publish","manifestPath","manifest","BlockPackManifest","manifestRoot","overrideManifestVersion","file","ManifestFileName","Publish","parseTargetFile","arg","match","src","destName","targetFile","BasicConfigFields","_UploadPackageV1","configFromFlags","PlRegPackageConfigDataShard","field","YAML","conf","getConfig","name","builder","dst","content","UploadPackageV1","COMMANDS","Cmd0","Cmd1","Cmd3","Cmd4","Cmd5","Cmd6"],"mappings":"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"}
package/dist/cli.mjs CHANGED
@@ -1,43 +1,45 @@
1
- var x = Object.defineProperty;
2
- var A = (r, e, t) => e in r ? x(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t;
3
- var n = (r, e, t) => A(r, typeof e != "symbol" ? e + "" : e, t);
4
- import { Command as y, Flags as a } from "@oclif/core";
1
+ var I = Object.defineProperty;
2
+ var O = (r, e, a) => e in r ? I(r, e, { enumerable: !0, configurable: !0, writable: !0, value: a }) : r[e] = a;
3
+ var o = (r, e, a) => O(r, typeof e != "symbol" ? e + "" : e, a);
4
+ import { Command as f, Flags as t } from "@oclif/core";
5
5
  import c from "node:path";
6
6
  import d 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 S, B as O, a as V, b as j, c as C, M as I, s as L, d as G, P as M, g as T } from "./config-C9KOwWbG.mjs";
12
- import { BlockPackManifest as D } from "@milaboratories/pl-model-middle-layer";
11
+ import { l as x, B as L, a as G, s as S, b as A, c as T, d as j, M as D, P as Y, g as M } from "./config-DJEjRJs6.mjs";
12
+ import { StableChannel as B, overrideDescriptionVersion as J, BlockPackManifest as q, overrideManifestVersion as $ } from "@milaboratories/pl-model-middle-layer";
13
+ import "@milaboratories/ts-helpers";
13
14
  import "canonicalize";
14
15
  import "lru-cache";
15
- import { OclifLoggerAdapter as R } from "@milaboratories/ts-helpers-oclif";
16
- import E from "yaml";
17
- const f = class f extends y {
16
+ import "undici";
17
+ import { OclifLoggerAdapter as N } from "@milaboratories/ts-helpers-oclif";
18
+ import V from "yaml";
19
+ const u = class u extends f {
18
20
  async run() {
19
- const { flags: e } = await this.parse(f), t = c.resolve(e.modulePath), s = await S(t), l = await O.parseAsync(
20
- V(t).parse(s.meta)
21
+ const { flags: e } = await this.parse(u), a = c.resolve(e.modulePath), s = await x(a), i = await L.parseAsync(
22
+ G(a).parse(s.meta)
21
23
  );
22
- await d.promises.writeFile(c.resolve(e.destination), JSON.stringify(l));
24
+ await d.promises.writeFile(c.resolve(e.destination), JSON.stringify(i));
23
25
  }
24
26
  };
25
- n(f, "description", "Extracts meta information from blocks package.json and outputs meta.json with embedded binary and textual information linked from the meta section."), n(f, "flags", {
26
- modulePath: a.string({
27
+ o(u, "description", "Extracts meta information from blocks package.json and outputs meta.json with embedded binary and textual information linked from the meta section."), o(u, "flags", {
28
+ modulePath: t.string({
27
29
  char: "i",
28
30
  summary: "input module path",
29
31
  helpValue: "<path>",
30
32
  default: "."
31
33
  }),
32
- destination: a.string({
34
+ destination: t.string({
33
35
  char: "o",
34
36
  summary: "output meta.json file",
35
37
  helpValue: "<path>",
36
38
  required: !0
37
39
  })
38
40
  });
39
- let w = f;
40
- async function B(r) {
41
+ let v = u;
42
+ async function H(r) {
41
43
  try {
42
44
  return await d.promises.readFile(r, "utf8");
43
45
  } catch (e) {
@@ -46,185 +48,238 @@ async function B(r) {
46
48
  throw e;
47
49
  }
48
50
  }
49
- const u = class u extends y {
51
+ const p = class p extends f {
50
52
  async run() {
51
- const { flags: e } = await this.parse(u), t = c.resolve(e.modulePath);
52
- let { model: s, platforma: l } = require(t);
53
- if (s || (s = l), !s) throw new Error('"model" export not found');
54
- const { config: i } = s;
55
- if (!i)
53
+ const { flags: e } = await this.parse(p), a = c.resolve(e.modulePath);
54
+ let { model: s, platforma: i } = require(a);
55
+ if (s || (s = i), !s) throw new Error('"model" export not found');
56
+ const { config: n } = s;
57
+ if (!n)
56
58
  throw new Error(
57
59
  'Malformed "model" object, check it is created with "BlockModel" and ".done()" is executed as the call in the chain.'
58
60
  );
59
- if (!("canRun" in i || "inputsValid" in i) || !("outputs" in i) || !("sections" in i))
61
+ if (!("canRun" in n || "inputsValid" in n) || !("outputs" in n) || !("sections" in n))
60
62
  throw new Error('"config" has unexpected structure');
61
- const m = await B(e.sourceBundle);
62
- m !== void 0 && (i.code = {
63
+ const m = await H(e.sourceBundle);
64
+ m !== void 0 && (n.code = {
63
65
  type: "plain",
64
66
  content: m
65
- }), await d.promises.writeFile(c.resolve(e.destination), JSON.stringify(i));
67
+ }), await d.promises.writeFile(c.resolve(e.destination), JSON.stringify(n));
66
68
  }
67
69
  };
68
- n(u, "description", "Extracts and outputs block model JSON from pre-built block model module"), n(u, "flags", {
69
- modulePath: a.string({
70
+ o(p, "description", "Extracts and outputs block model JSON from pre-built block model module"), o(p, "flags", {
71
+ modulePath: t.string({
70
72
  char: "i",
71
73
  summary: "input module path",
72
74
  helpValue: "<path>",
73
75
  default: "."
74
76
  }),
75
- sourceBundle: a.string({
77
+ sourceBundle: t.string({
76
78
  char: "b",
77
79
  summary: "bundled model code to embed into the model for callback-based rendering to work",
78
80
  helpValue: "<path>",
79
81
  default: "./dist/bundle.js"
80
82
  }),
81
- destination: a.string({
83
+ destination: t.string({
82
84
  char: "o",
83
85
  summary: "output model file",
84
86
  helpValue: "<path>",
85
87
  default: "./dist/model.json"
86
88
  })
87
89
  });
88
- let k = u;
89
- const p = class p extends y {
90
+ let k = p;
91
+ const h = class h extends f {
90
92
  async run() {
91
- const { flags: e } = await this.parse(p), t = await j(c.resolve(e.modulePath));
92
- await C(t, c.resolve(e.destinationPath));
93
+ const { flags: e } = await this.parse(h);
94
+ let a = await x(c.resolve(e.modulePath));
95
+ e["version-override"] && (a = J(a, e["version-override"]));
96
+ const s = S(e.registry), i = new A(s, new N(this));
97
+ e.unmark ? await i.removePackageFromChannel(a.id, e.channel) : await i.addPackageToChannel(a.id, e.channel), e.refresh && await i.updateIfNeeded();
93
98
  }
94
99
  };
95
- n(p, "description", "Builds block pack and outputs a block pack manifest consolidating all references assets into a single folder"), n(p, "flags", {
96
- modulePath: a.string({
100
+ o(h, "description", "Mark target block stable"), o(h, "flags", {
101
+ modulePath: t.string({
97
102
  char: "i",
98
103
  summary: "input module path",
99
104
  helpValue: "<path>",
100
105
  default: "."
101
106
  }),
102
- destinationPath: a.string({
107
+ channel: t.string({
108
+ char: "c",
109
+ hidden: !0,
110
+ summary: "custom channel",
111
+ helpValue: "<channel name>",
112
+ default: B
113
+ }),
114
+ "version-override": t.file({
115
+ char: "v",
116
+ summary: "override package version"
117
+ }),
118
+ registry: t.string({
119
+ char: "r",
120
+ summary: "full address of the registry",
121
+ helpValue: "<address>",
122
+ env: "PL_REGISTRY",
123
+ required: !0
124
+ }),
125
+ refresh: t.boolean({
126
+ summary: "refresh repository after adding the package",
127
+ default: !0,
128
+ allowNo: !0,
129
+ env: "PL_REGISTRY_REFRESH"
130
+ }),
131
+ unmark: t.boolean({
132
+ summary: 'reverses meaning of this command, flag can be used to remove "stable" flag from the package',
133
+ default: !1
134
+ })
135
+ });
136
+ let b = h;
137
+ const g = class g extends f {
138
+ async run() {
139
+ const { flags: e } = await this.parse(g), a = await T(c.resolve(e.modulePath));
140
+ await j(a, c.resolve(e.destinationPath));
141
+ }
142
+ };
143
+ o(g, "description", "Builds block pack and outputs a block pack manifest consolidating all references assets into a single folder"), o(g, "flags", {
144
+ modulePath: t.string({
145
+ char: "i",
146
+ summary: "input module path",
147
+ helpValue: "<path>",
148
+ default: "."
149
+ }),
150
+ destinationPath: t.string({
103
151
  char: "o",
104
152
  summary: "output folder",
105
153
  helpValue: "<path>",
106
154
  default: "./block-pack"
107
155
  })
108
156
  });
109
- let b = p;
110
- const h = class h extends y {
157
+ let P = g;
158
+ const y = class y extends f {
111
159
  async run() {
112
- const { flags: e } = await this.parse(h), t = c.resolve(e.manifest), s = D.parse(
113
- JSON.parse(await d.promises.readFile(t, { encoding: "utf-8" }))
114
- ), l = c.dirname(t);
115
- this.log(`Manifest root = ${l}`);
116
- const i = L(e.registry), m = new G(i, new R(this));
160
+ const { flags: e } = await this.parse(y), a = c.resolve(e.manifest);
161
+ let s = q.parse(
162
+ JSON.parse(await d.promises.readFile(a, { encoding: "utf-8" }))
163
+ );
164
+ const i = c.dirname(a);
165
+ this.log(`Manifest root = ${i}`), e["version-override"] && (s = $(s, e["version-override"]));
166
+ const n = S(e.registry), m = new A(n, new N(this));
117
167
  await m.publishPackage(
118
168
  s,
119
- async (o) => Buffer.from(await d.promises.readFile(c.resolve(l, o)))
169
+ async (l) => Buffer.from(await d.promises.readFile(c.resolve(i, l)))
120
170
  ), e.refresh && await m.updateIfNeeded();
121
171
  }
122
172
  };
123
- n(h, "description", "Publishes the block package and refreshes the registry (for v2 block-pack schema)"), n(h, "flags", {
124
- registry: a.string({
173
+ o(y, "description", "Publishes the block package and refreshes the registry (for v2 block-pack schema)"), o(y, "flags", {
174
+ registry: t.string({
125
175
  char: "r",
126
176
  summary: "full address of the registry",
127
177
  helpValue: "<address>",
128
178
  env: "PL_REGISTRY",
129
179
  required: !0
130
180
  }),
131
- manifest: a.file({
181
+ manifest: t.file({
132
182
  char: "m",
133
183
  summary: "manifest file path",
134
184
  exists: !0,
135
- default: `./block-pack/${I}`
185
+ default: `./block-pack/${D}`
186
+ }),
187
+ "version-override": t.file({
188
+ char: "v",
189
+ summary: "override package version"
136
190
  }),
137
- refresh: a.boolean({
191
+ refresh: t.boolean({
138
192
  summary: "refresh repository after adding the package",
139
193
  default: !0,
140
194
  allowNo: !0,
141
195
  env: "PL_REGISTRY_REFRESH"
142
196
  })
143
197
  });
144
- let P = h;
145
- function J(r) {
198
+ let R = y;
199
+ function K(r) {
146
200
  const e = r.match(/(?<destName>[^\/\\]+)=(?<src>.*)/);
147
201
  if (e) {
148
- const { src: t, destName: s } = e.groups;
149
- return { src: t, destName: s };
202
+ const { src: a, destName: s } = e.groups;
203
+ return { src: a, destName: s };
150
204
  } else
151
205
  return { src: r, destName: c.basename(r) };
152
206
  }
153
- const Y = a.custom({
207
+ const z = t.custom({
154
208
  summary: "target files to upload",
155
209
  helpValue: "file_path | package_name=file_path",
156
- parse: async (r) => J(r)
157
- }), $ = ["registry", "organization", "package", "version"], g = class g extends y {
210
+ parse: async (r) => K(r)
211
+ }), W = ["registry", "organization", "package", "version"], w = class w extends f {
158
212
  async run() {
159
- const { flags: e } = await this.parse(g), t = M.parse({});
160
- for (const o of $) e[o] && (t[o] = e[o]);
161
- e.meta && (e.meta.endsWith(".json") ? t.meta = JSON.parse(
213
+ const { flags: e } = await this.parse(w), a = Y.parse({});
214
+ for (const l of W) e[l] && (a[l] = e[l]);
215
+ e.meta && (e.meta.endsWith(".json") ? a.meta = JSON.parse(
162
216
  await d.promises.readFile(e.meta, { encoding: "utf-8" })
163
- ) : e.meta.endsWith(".yaml") && (t.meta = E.parse(
217
+ ) : e.meta.endsWith(".yaml") && (a.meta = V.parse(
164
218
  await d.promises.readFile(e.meta, { encoding: "utf-8" })
165
219
  )));
166
- for (const o of e.file)
167
- t.files[o.destName] = o.src;
168
- const s = await T(t);
169
- this.log(E.stringify(s.conf));
170
- const l = s.createRegistry(new R(this)), i = s.fullPackageName, m = l.constructNewPackage(i);
171
- for (const [o, N] of Object.entries(s.conf.files)) {
172
- this.log(`Uploading ${N} -> ${o} ...`);
173
- const F = await d.promises.readFile(N);
174
- await m.addFile(o, F);
220
+ for (const l of e.file)
221
+ a.files[l.destName] = l.src;
222
+ const s = await M(a);
223
+ this.log(V.stringify(s.conf));
224
+ const i = s.createRegistry(new N(this)), n = s.fullPackageName, m = i.constructNewPackage(n);
225
+ for (const [l, F] of Object.entries(s.conf.files)) {
226
+ this.log(`Uploading ${F} -> ${l} ...`);
227
+ const C = await d.promises.readFile(F);
228
+ await m.addFile(l, C);
175
229
  }
176
- this.log("Uploading meta information..."), await m.writeMeta(s.conf.meta), await m.finish(), e.refresh && await l.updateIfNeeded();
230
+ this.log("Uploading meta information..."), await m.writeMeta(s.conf.meta), await m.finish(), e.refresh && await i.updateIfNeeded();
177
231
  }
178
232
  };
179
- n(g, "description", "Uploads V1 package and refreshes the registry"), n(g, "flags", {
180
- registry: a.string({
233
+ o(w, "description", "Uploads V1 package and refreshes the registry"), o(w, "flags", {
234
+ registry: t.string({
181
235
  char: "r",
182
236
  summary: "full address of the registry or alias from .pl.reg",
183
237
  helpValue: "<address|alias>",
184
238
  env: "PL_REGISTRY"
185
239
  }),
186
- organization: a.string({
240
+ organization: t.string({
187
241
  char: "o",
188
242
  summary: "target organisation",
189
243
  env: "PL_PACKAGE_ORGANIZATION"
190
244
  }),
191
- package: a.string({
245
+ package: t.string({
192
246
  char: "p",
193
247
  summary: "target package",
194
248
  env: "PL_PACKAGE_NAME"
195
249
  }),
196
- version: a.string({
250
+ version: t.string({
197
251
  char: "v",
198
252
  summary: "target version",
199
253
  env: "PL_PACKAGE_VERSION"
200
254
  }),
201
- meta: a.file({
255
+ meta: t.file({
202
256
  char: "m",
203
257
  summary: "json file containing meta information to associate with tha package",
204
258
  exists: !0
205
259
  }),
206
- file: Y({
260
+ file: z({
207
261
  char: "f",
208
262
  summary: "package files",
209
263
  multiple: !0,
210
264
  default: []
211
265
  }),
212
- refresh: a.boolean({
266
+ refresh: t.boolean({
213
267
  summary: "refresh repository after adding the package",
214
268
  default: !0,
215
269
  allowNo: !0,
216
270
  env: "PL_REGISTRY_REFRESH"
217
271
  })
218
272
  });
219
- let v = g;
220
- const re = {
221
- "build-meta": w,
273
+ let E = w;
274
+ const de = {
275
+ "build-meta": v,
222
276
  "build-model": k,
223
- pack: b,
224
- publish: P,
225
- "upload-package-v1": v
277
+ "mark-stable": b,
278
+ pack: P,
279
+ publish: R,
280
+ "upload-package-v1": E
226
281
  };
227
282
  export {
228
- re as COMMANDS
283
+ de as COMMANDS
229
284
  };
230
285
  //# sourceMappingURL=cli.mjs.map