@vertesia/create-plugin 0.78.0-dev-28b447d → 0.79.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 (45) hide show
  1. package/lib/Package.d.ts +42 -0
  2. package/lib/Package.d.ts.map +1 -0
  3. package/lib/Package.js +52 -0
  4. package/lib/Package.js.map +1 -0
  5. package/lib/TemplateInit.d.ts +29 -0
  6. package/lib/TemplateInit.d.ts.map +1 -0
  7. package/lib/TemplateInit.js +48 -0
  8. package/lib/TemplateInit.js.map +1 -0
  9. package/lib/ToolTemplateInit.d.ts +10 -0
  10. package/lib/ToolTemplateInit.d.ts.map +1 -0
  11. package/lib/ToolTemplateInit.js +45 -0
  12. package/lib/ToolTemplateInit.js.map +1 -0
  13. package/lib/WebTemplateInit.d.ts +10 -0
  14. package/lib/WebTemplateInit.d.ts.map +1 -0
  15. package/lib/WebTemplateInit.js +77 -0
  16. package/lib/WebTemplateInit.js.map +1 -0
  17. package/lib/copy.d.ts +12 -0
  18. package/lib/copy.d.ts.map +1 -0
  19. package/lib/copy.js +41 -0
  20. package/lib/copy.js.map +1 -0
  21. package/lib/deps.d.ts +3 -0
  22. package/lib/deps.d.ts.map +1 -0
  23. package/lib/deps.js +20 -0
  24. package/lib/deps.js.map +1 -0
  25. package/lib/hasBin.d.ts +2 -0
  26. package/lib/hasBin.d.ts.map +1 -0
  27. package/lib/hasBin.js +14 -0
  28. package/lib/hasBin.js.map +1 -0
  29. package/lib/init.d.ts +2 -0
  30. package/lib/init.d.ts.map +1 -0
  31. package/lib/init.js +107 -0
  32. package/lib/init.js.map +1 -0
  33. package/lib/main.d.ts +2 -0
  34. package/lib/main.d.ts.map +1 -0
  35. package/lib/main.js +8 -0
  36. package/lib/main.js.map +1 -0
  37. package/lib/template.d.ts +4 -0
  38. package/lib/template.d.ts.map +1 -0
  39. package/lib/template.js +16 -0
  40. package/lib/template.js.map +1 -0
  41. package/lib/utils.d.ts +2 -0
  42. package/lib/utils.d.ts.map +1 -0
  43. package/lib/utils.js +7 -0
  44. package/lib/utils.js.map +1 -0
  45. package/package.json +36 -41
@@ -0,0 +1,42 @@
1
+ export interface PackageJson {
2
+ name: string;
3
+ version: string;
4
+ description: string;
5
+ type: string;
6
+ types: string;
7
+ main: string;
8
+ files?: string[];
9
+ module?: string;
10
+ license?: string;
11
+ dependencies?: Record<string, string>;
12
+ devDependencies?: Record<string, string>;
13
+ peerDependencies?: Record<string, string>;
14
+ optionalDependencies?: Record<string, string>;
15
+ scripts?: Record<string, string>;
16
+ bin?: Record<string, string>;
17
+ plugin?: {
18
+ title?: string;
19
+ icon?: string;
20
+ publisher?: string;
21
+ external?: boolean;
22
+ status?: "beta" | "stable" | "deprecated" | "hidden";
23
+ };
24
+ }
25
+ export declare class Package {
26
+ data: PackageJson;
27
+ file?: string | undefined;
28
+ constructor(data: PackageJson, file?: string | undefined);
29
+ static fromFile(file: string): Package;
30
+ get name(): string;
31
+ set name(name: string);
32
+ get version(): string;
33
+ set version(version: string);
34
+ get description(): string;
35
+ set description(description: string);
36
+ get scripts(): Record<string, string>;
37
+ set scripts(scripts: Record<string, string>);
38
+ save(): void;
39
+ saveTo(file: string): void;
40
+ toJson(): PackageJson;
41
+ }
42
+ //# sourceMappingURL=Package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Package.d.ts","sourceRoot":"","sources":["../src/Package.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;KACxD,CAAC;CACL;AAGD,qBAAa,OAAO;IACG,IAAI,EAAE,WAAW;IAAS,IAAI,CAAC,EAAE,MAAM;gBAAvC,IAAI,EAAE,WAAW,EAAS,IAAI,CAAC,EAAE,MAAM,YAAA;IAE1D,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM;IAK5B,IAAI,IAAI,IAIO,MAAM,CAFpB;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAEpB;IAED,IAAI,OAAO,IAIU,MAAM,CAF1B;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAE1B;IAED,IAAI,WAAW,IAIc,MAAM,CAFlC;IAED,IAAI,WAAW,CAAC,WAAW,EAAE,MAAM,EAElC;IAED,IAAI,OAAO,IAKU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAF1C;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAE1C;IAED,IAAI;IAMJ,MAAM,CAAC,IAAI,EAAE,MAAM;IAKnB,MAAM,IAAI,WAAW;CAGxB"}
package/lib/Package.js ADDED
@@ -0,0 +1,52 @@
1
+ import fs from "fs";
2
+ export class Package {
3
+ data;
4
+ file;
5
+ constructor(data, file) {
6
+ this.data = data;
7
+ this.file = file;
8
+ }
9
+ static fromFile(file) {
10
+ const content = fs.readFileSync(file, "utf8");
11
+ return new Package(JSON.parse(content), file);
12
+ }
13
+ get name() {
14
+ return this.data.name;
15
+ }
16
+ set name(name) {
17
+ this.data.name = name;
18
+ }
19
+ get version() {
20
+ return this.data.version;
21
+ }
22
+ set version(version) {
23
+ this.data.version = version;
24
+ }
25
+ get description() {
26
+ return this.data.description;
27
+ }
28
+ set description(description) {
29
+ this.data.description = description;
30
+ }
31
+ get scripts() {
32
+ if (!this.data.scripts)
33
+ this.data.scripts = {};
34
+ return this.data.scripts;
35
+ }
36
+ set scripts(scripts) {
37
+ this.data.scripts = scripts;
38
+ }
39
+ save() {
40
+ if (!this.file)
41
+ throw new Error("File not specified, Use saveTo");
42
+ fs.writeFileSync(this.file, JSON.stringify(this.data, undefined, 2), "utf8");
43
+ }
44
+ saveTo(file) {
45
+ this.file = file;
46
+ this.save();
47
+ }
48
+ toJson() {
49
+ return { ...this.data };
50
+ }
51
+ }
52
+ //# sourceMappingURL=Package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Package.js","sourceRoot":"","sources":["../src/Package.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AA4BpB,MAAM,OAAO,OAAO;IACG;IAA0B;IAA7C,YAAmB,IAAiB,EAAS,IAAa;QAAvC,SAAI,GAAJ,IAAI,CAAa;QAAS,SAAI,GAAJ,IAAI,CAAS;IAC1D,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,IAAY;QACxB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI,CAAC,IAAY;QACjB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO,CAAC,OAAe;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAChC,CAAC;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IACjC,CAAC;IAED,IAAI,WAAW,CAAC,WAAmB;QAC/B,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACxC,CAAC;IAED,IAAI,OAAO;QACP,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO,CAAC,OAA+B;QACvC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAChC,CAAC;IAED,IAAI;QACA,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACjE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAEjF,CAAC;IAED,MAAM,CAAC,IAAY;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,MAAM;QACF,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;CACJ"}
@@ -0,0 +1,29 @@
1
+ import { PackageJson } from "./Package.js";
2
+ export interface UserOptions {
3
+ pm: "npm" | "pnpm";
4
+ plugin_name: string;
5
+ plugin_version: string;
6
+ plugin_description?: string;
7
+ isolation: "shadow" | "css";
8
+ template: string;
9
+ }
10
+ export declare abstract class TemplateInit {
11
+ options: UserOptions;
12
+ pluginName: PluginName;
13
+ constructor(options: UserOptions);
14
+ abstract getPackageJson(): PackageJson;
15
+ abstract getDevDependencies(): string[];
16
+ abstract getRuntimeDependencies(): string[];
17
+ abstract getVars(): Record<string, any>;
18
+ installDeps(): void;
19
+ }
20
+ export declare class PluginName {
21
+ value: string;
22
+ scope?: string;
23
+ name: string;
24
+ _title?: string;
25
+ constructor(value: string);
26
+ get title(): string;
27
+ get pascalCase(): string;
28
+ }
29
+ //# sourceMappingURL=TemplateInit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateInit.d.ts","sourceRoot":"","sources":["../src/TemplateInit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,8BAAsB,YAAY;IAEX,OAAO,EAAE,WAAW;IADvC,UAAU,EAAE,UAAU,CAAC;gBACJ,OAAO,EAAE,WAAW;IAGvC,QAAQ,CAAC,cAAc,IAAI,WAAW;IAEtC,QAAQ,CAAC,kBAAkB,IAAI,MAAM,EAAE;IAEvC,QAAQ,CAAC,sBAAsB,IAAI,MAAM,EAAE;IAE3C,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAEvC,WAAW;CAMd;AAED,qBAAa,UAAU;IAIA,KAAK,EAAE,MAAM;IAHhC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;gBACG,KAAK,EAAE,MAAM;IAchC,IAAI,KAAK,WAKR;IACD,IAAI,UAAU,WAEb;CACJ"}
@@ -0,0 +1,48 @@
1
+ import { addDevDependencies, addRuntimeDependencies } from "./deps.js";
2
+ export class TemplateInit {
3
+ options;
4
+ pluginName;
5
+ constructor(options) {
6
+ this.options = options;
7
+ this.pluginName = new PluginName(options.plugin_name);
8
+ }
9
+ installDeps() {
10
+ const pm = this.options.pm;
11
+ console.log("Installing dependencies");
12
+ addDevDependencies(pm, this.getDevDependencies());
13
+ addRuntimeDependencies(pm, this.getRuntimeDependencies());
14
+ }
15
+ }
16
+ export class PluginName {
17
+ value;
18
+ scope;
19
+ name;
20
+ _title;
21
+ constructor(value) {
22
+ this.value = value;
23
+ if (value.startsWith('@')) {
24
+ const index = value.indexOf('/');
25
+ if (index > -1) {
26
+ this.name = value.substring(index + 1);
27
+ this.scope = value.substring(1, index);
28
+ }
29
+ else {
30
+ throw new Error("Invalid plugin name");
31
+ }
32
+ }
33
+ else {
34
+ this.name = value;
35
+ this.scope = undefined;
36
+ }
37
+ }
38
+ get title() {
39
+ if (!this._title) {
40
+ this._title = this.name.split('-').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');
41
+ }
42
+ return this._title;
43
+ }
44
+ get pascalCase() {
45
+ return this.name.split('-').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
46
+ }
47
+ }
48
+ //# sourceMappingURL=TemplateInit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateInit.js","sourceRoot":"","sources":["../src/TemplateInit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAYvE,MAAM,OAAgB,YAAY;IAEX;IADnB,UAAU,CAAa;IACvB,YAAmB,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IASD,WAAW;QACP,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClD,sBAAsB,CAAC,EAAE,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC9D,CAAC;CACJ;AAED,MAAM,OAAO,UAAU;IAIA;IAHnB,KAAK,CAAU;IACf,IAAI,CAAS;IACb,MAAM,CAAU;IAChB,YAAmB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QAC5B,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAC3C,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QAC1B,CAAC;IACL,CAAC;IACD,IAAI,KAAK;QACL,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3G,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;CACJ"}
@@ -0,0 +1,10 @@
1
+ import { PackageJson } from "./Package.js";
2
+ import { TemplateInit, UserOptions } from "./TemplateInit.js";
3
+ export declare class ToolTemplateInit extends TemplateInit {
4
+ constructor(options: UserOptions);
5
+ getVars(): Record<string, any>;
6
+ getPackageJson(): PackageJson;
7
+ getDevDependencies(): string[];
8
+ getRuntimeDependencies(): string[];
9
+ }
10
+ //# sourceMappingURL=ToolTemplateInit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolTemplateInit.d.ts","sourceRoot":"","sources":["../src/ToolTemplateInit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG9D,qBAAa,gBAAiB,SAAQ,YAAY;gBAClC,OAAO,EAAE,WAAW;IAIhC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAM9B,cAAc,IAAI,WAAW;IAmB7B,kBAAkB,IAAI,MAAM,EAAE;IAU9B,sBAAsB,IAAI,MAAM,EAAE;CASrC"}
@@ -0,0 +1,45 @@
1
+ import { TemplateInit } from "./TemplateInit.js";
2
+ export class ToolTemplateInit extends TemplateInit {
3
+ constructor(options) {
4
+ super(options);
5
+ }
6
+ getVars() {
7
+ return {};
8
+ }
9
+ getPackageJson() {
10
+ const answer = this.options;
11
+ return {
12
+ name: answer.plugin_name,
13
+ version: answer.plugin_version || '1.0.0',
14
+ description: answer.plugin_description || '',
15
+ type: 'module',
16
+ main: `lib/esm/index.js`,
17
+ types: "lib/types/index.d.ts",
18
+ files: [
19
+ "lib"
20
+ ],
21
+ scripts: {
22
+ "dev": "vite",
23
+ "build": "tsc",
24
+ }
25
+ };
26
+ }
27
+ getDevDependencies() {
28
+ return [
29
+ "@hono/vite-dev-server",
30
+ "@types/node",
31
+ "esbuild",
32
+ "typescript",
33
+ "vite",
34
+ ];
35
+ }
36
+ getRuntimeDependencies() {
37
+ return [
38
+ "@vertesia/agent-sdk",
39
+ "@vertesia/client",
40
+ "@vertesia/common",
41
+ "hono"
42
+ ];
43
+ }
44
+ }
45
+ //# sourceMappingURL=ToolTemplateInit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolTemplateInit.js","sourceRoot":"","sources":["../src/ToolTemplateInit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,mBAAmB,CAAC;AAG9D,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAC9C,YAAY,OAAoB;QAC5B,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAED,OAAO;QACH,OAAO,EAEN,CAAA;IACL,CAAC;IAED,cAAc;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,OAAO;YACH,IAAI,EAAE,MAAM,CAAC,WAAW;YACxB,OAAO,EAAE,MAAM,CAAC,cAAc,IAAI,OAAO;YACzC,WAAW,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE;YAC5C,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,sBAAsB;YAC7B,KAAK,EAAE;gBACH,KAAK;aACR;YACD,OAAO,EAAE;gBACL,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,KAAK;aACjB;SACJ,CAAC;IACN,CAAC;IAED,kBAAkB;QACd,OAAO;YACH,uBAAuB;YACvB,aAAa;YACb,SAAS;YACT,YAAY;YACZ,MAAM;SACT,CAAA;IACL,CAAC;IAED,sBAAsB;QAClB,OAAO;YACH,qBAAqB;YACrB,kBAAkB;YAClB,kBAAkB;YAClB,MAAM;SACT,CAAA;IACL,CAAC;CAEJ"}
@@ -0,0 +1,10 @@
1
+ import { PackageJson } from "./Package.js";
2
+ import { TemplateInit, UserOptions } from "./TemplateInit.js";
3
+ export declare class WebTemplateInit extends TemplateInit {
4
+ constructor(options: UserOptions);
5
+ getVars(): Record<string, any>;
6
+ getPackageJson(): PackageJson;
7
+ getDevDependencies(): string[];
8
+ getRuntimeDependencies(): string[];
9
+ }
10
+ //# sourceMappingURL=WebTemplateInit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebTemplateInit.d.ts","sourceRoot":"","sources":["../src/WebTemplateInit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG9D,qBAAa,eAAgB,SAAQ,YAAY;gBACjC,OAAO,EAAE,WAAW;IAIhC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAQ9B,cAAc,IAAI,WAAW;IAkC7B,kBAAkB,IAAI,MAAM,EAAE;IAyB9B,sBAAsB,IAAI,MAAM,EAAE;CAOrC"}
@@ -0,0 +1,77 @@
1
+ import { TemplateInit } from "./TemplateInit.js";
2
+ export class WebTemplateInit extends TemplateInit {
3
+ constructor(options) {
4
+ super(options);
5
+ }
6
+ getVars() {
7
+ return {
8
+ plugin_title: this.pluginName.title,
9
+ PluginComponent: this.pluginName.pascalCase + "Plugin",
10
+ inlineCss: this.options.isolation === "css"
11
+ };
12
+ }
13
+ getPackageJson() {
14
+ const answer = this.options;
15
+ return {
16
+ name: answer.plugin_name,
17
+ version: answer.plugin_version || '1.0.0',
18
+ description: answer.plugin_description || '',
19
+ type: 'module',
20
+ main: `dist/${answer.plugin_name}.js`,
21
+ module: `dist/${answer.plugin_name}.js`,
22
+ types: "dist/index.d.ts",
23
+ files: [
24
+ "dist"
25
+ ],
26
+ scripts: {
27
+ "dev": "vite dev",
28
+ "build:app": "vite build --mode app",
29
+ "build:lib": "vite build --mode lib",
30
+ "build": "vite build --mode app && vite build --mode lib",
31
+ "lint": "eslint .",
32
+ "preview": "vite preview"
33
+ },
34
+ peerDependencies: {
35
+ "react": "^19.0.0",
36
+ "react-dom": "^19.0.0"
37
+ },
38
+ plugin: {
39
+ title: this.pluginName.title,
40
+ publisher: this.pluginName.scope || "vertesia",
41
+ external: false,
42
+ status: "beta",
43
+ }
44
+ };
45
+ }
46
+ getDevDependencies() {
47
+ return [
48
+ "@eslint/js",
49
+ "@vertesia/plugin-builder",
50
+ "@vitejs/plugin-basic-ssl",
51
+ "@vitejs/plugin-react",
52
+ "@tailwindcss/vite",
53
+ "@tailwindcss/forms",
54
+ "@types/node",
55
+ "@types/react",
56
+ "@types/react-dom",
57
+ "eslint",
58
+ "eslint-plugin-react-hooks",
59
+ "eslint-plugin-react-refresh",
60
+ "globals",
61
+ "react",
62
+ "react-dom",
63
+ "tailwindcss",
64
+ "typescript",
65
+ "typescript-eslint",
66
+ "vite",
67
+ "vite-plugin-serve-static"
68
+ ];
69
+ }
70
+ getRuntimeDependencies() {
71
+ return [
72
+ "@vertesia/common",
73
+ "@vertesia/ui",
74
+ ];
75
+ }
76
+ }
77
+ //# sourceMappingURL=WebTemplateInit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebTemplateInit.js","sourceRoot":"","sources":["../src/WebTemplateInit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,mBAAmB,CAAC;AAG9D,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC7C,YAAY,OAAoB;QAC5B,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAED,OAAO;QACH,OAAO;YACH,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;YACnC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,QAAQ;YACtD,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK;SAC9C,CAAA;IACL,CAAC;IAED,cAAc;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,OAAO;YACH,IAAI,EAAE,MAAM,CAAC,WAAW;YACxB,OAAO,EAAE,MAAM,CAAC,cAAc,IAAI,OAAO;YACzC,WAAW,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE;YAC5C,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ,MAAM,CAAC,WAAW,KAAK;YACrC,MAAM,EAAE,QAAQ,MAAM,CAAC,WAAW,KAAK;YACvC,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE;gBACH,MAAM;aACT;YACD,OAAO,EAAE;gBACL,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,uBAAuB;gBACpC,WAAW,EAAE,uBAAuB;gBACpC,OAAO,EAAE,gDAAgD;gBACzD,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,cAAc;aAC5B;YACD,gBAAgB,EAAE;gBACd,OAAO,EAAE,SAAS;gBAClB,WAAW,EAAE,SAAS;aACzB;YACD,MAAM,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;gBAC5B,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,UAAU;gBAC9C,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,MAAM;aACjB;SACJ,CAAC;IACN,CAAC;IAED,kBAAkB;QACd,OAAO;YACH,YAAY;YACZ,0BAA0B;YAC1B,0BAA0B;YAC1B,sBAAsB;YACtB,mBAAmB;YACnB,oBAAoB;YACpB,aAAa;YACb,cAAc;YACd,kBAAkB;YAClB,QAAQ;YACR,2BAA2B;YAC3B,6BAA6B;YAC7B,SAAS;YACT,OAAO;YACP,WAAW;YACX,aAAa;YACb,YAAY;YACZ,mBAAmB;YACnB,MAAM;YACN,0BAA0B;SAC7B,CAAA;IACL,CAAC;IAED,sBAAsB;QAClB,OAAO;YACH,kBAAkB;YAClB,cAAc;SACjB,CAAA;IACL,CAAC;CAEJ"}
package/lib/copy.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Recursively copies the contents of a source directory to a target directory using the most optimized method.
3
+ *
4
+ * @param sourceDir - The path to the source directory.
5
+ * @param targetDir - The path to the target directory.
6
+ * @param templateSuffix - Optional suffix to remvoe from file name after copying. Ex: .template, .tmpl
7
+ */
8
+ export declare function copyTree(sourceDir: string, targetDir: string, template?: {
9
+ suffix?: string;
10
+ context: Record<string, any>;
11
+ }): Promise<void>;
12
+ //# sourceMappingURL=copy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../src/copy.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CAkChB"}
package/lib/copy.js ADDED
@@ -0,0 +1,41 @@
1
+ import { promises as fs } from "fs";
2
+ import { join } from "path";
3
+ import { processVarsInFile } from "./template.js";
4
+ /**
5
+ * Recursively copies the contents of a source directory to a target directory using the most optimized method.
6
+ *
7
+ * @param sourceDir - The path to the source directory.
8
+ * @param targetDir - The path to the target directory.
9
+ * @param templateSuffix - Optional suffix to remvoe from file name after copying. Ex: .template, .tmpl
10
+ */
11
+ export async function copyTree(sourceDir, targetDir, template) {
12
+ // Optimize by using a queue to avoid deep recursion and potential stack overflows
13
+ const queue = [{ source: sourceDir, target: targetDir }];
14
+ while (queue.length > 0) {
15
+ const { source, target } = queue.pop();
16
+ // Ensure the target directory exists
17
+ await fs.mkdir(target, { recursive: true });
18
+ // Read all items in the source directory
19
+ const items = await fs.readdir(source, { withFileTypes: true });
20
+ for (const item of items) {
21
+ const isTemplate = template?.suffix ? item.name.endsWith(template.suffix) : false;
22
+ const targetName = isTemplate ? item.name.slice(0, -template.suffix.length) : item.name;
23
+ const sourcePath = join(source, item.name);
24
+ const targetPath = join(target, targetName);
25
+ console.log('Generating', targetPath);
26
+ if (item.isDirectory()) {
27
+ // Queue subdirectory for processing
28
+ queue.push({ source: sourcePath, target: targetPath });
29
+ }
30
+ else if (item.isFile() || item.isSymbolicLink()) {
31
+ // Copy file or symbolic link
32
+ await fs.copyFile(sourcePath, targetPath);
33
+ if (isTemplate) {
34
+ // Process template if applicable
35
+ processVarsInFile(targetPath, template.context);
36
+ }
37
+ }
38
+ }
39
+ }
40
+ }
41
+ //# sourceMappingURL=copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy.js","sourceRoot":"","sources":["../src/copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,SAAiB,EAAE,SAAiB,EAAE,QAGpE;IACG,kFAAkF;IAClF,MAAM,KAAK,GAAyC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAE/F,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QAExC,qCAAqC;QACrC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5C,yCAAyC;QACzC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAClF,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAS,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1F,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAE5C,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAEtC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrB,oCAAoC;gBACpC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YAC3D,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gBAChD,6BAA6B;gBAC7B,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBAC1C,IAAI,UAAU,EAAE,CAAC;oBACb,iCAAiC;oBACjC,iBAAiB,CAAC,UAAU,EAAE,QAAS,CAAC,OAAO,CAAC,CAAC;gBACrD,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC"}
package/lib/deps.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export declare function addDevDependencies(pm: "npm" | "pnpm", deps: string[]): void;
2
+ export declare function addRuntimeDependencies(pm: "npm" | "pnpm", deps: string[]): void;
3
+ //# sourceMappingURL=deps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAEpE;AACD,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAExE"}
package/lib/deps.js ADDED
@@ -0,0 +1,20 @@
1
+ import { runCommand } from "./utils.js";
2
+ export function addDevDependencies(pm, deps) {
3
+ _addDependencies(pm, deps, "dev");
4
+ }
5
+ export function addRuntimeDependencies(pm, deps) {
6
+ _addDependencies(pm, deps, "runtime");
7
+ }
8
+ function _addDependencies(pm, deps, type = "runtime") {
9
+ const args = [
10
+ pm === "pnpm" ? "add" : "install"
11
+ ];
12
+ if (type === "dev") {
13
+ args.push('-D');
14
+ }
15
+ for (const dep of deps) {
16
+ args.push(dep);
17
+ }
18
+ runCommand(pm, args);
19
+ }
20
+ //# sourceMappingURL=deps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps.js","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,UAAU,kBAAkB,CAAC,EAAkB,EAAE,IAAc;IACjE,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AACD,MAAM,UAAU,sBAAsB,CAAC,EAAkB,EAAE,IAAc;IACrE,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAC1C,CAAC;AACD,SAAS,gBAAgB,CAAC,EAAkB,EAAE,IAAc,EAAE,OAA0B,SAAS;IAC7F,MAAM,IAAI,GAAG;QACT,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;KACpC,CAAC;IACF,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAClB,CAAC;IACD,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function hasBin(name: string): Promise<boolean>;
2
+ //# sourceMappingURL=hasBin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasBin.d.ts","sourceRoot":"","sources":["../src/hasBin.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUrD"}
package/lib/hasBin.js ADDED
@@ -0,0 +1,14 @@
1
+ import hasbin from "hasbin";
2
+ export function hasBin(name) {
3
+ return new Promise((resolve, reject) => {
4
+ try {
5
+ hasbin(name, (result) => {
6
+ resolve(result);
7
+ });
8
+ }
9
+ catch (err) {
10
+ reject(err);
11
+ }
12
+ });
13
+ }
14
+ //# sourceMappingURL=hasBin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasBin.js","sourceRoot":"","sources":["../src/hasBin.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,UAAU,MAAM,CAAC,IAAY;IAC/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,IAAI,CAAC;YACD,MAAM,CAAC,IAAI,EAAE,CAAC,MAAe,EAAE,EAAE;gBAC7B,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAChB,MAAM,CAAC,GAAG,CAAC,CAAA;QACf,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
package/lib/init.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function init(dirName?: string | undefined): Promise<void>;
2
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAcA,wBAAsB,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,iBAkGtD"}
package/lib/init.js ADDED
@@ -0,0 +1,107 @@
1
+ import enquirer from "enquirer";
2
+ import { mkdirSync } from "node:fs";
3
+ import { join, resolve } from "node:path";
4
+ import { chdir } from "node:process";
5
+ import { fileURLToPath } from "node:url";
6
+ import { copyTree } from "./copy.js";
7
+ import { hasBin } from "./hasBin.js";
8
+ import { Package } from "./Package.js";
9
+ //import { ToolTemplateInit } from "./ToolTemplateInit.js";
10
+ import { WebTemplateInit } from "./WebTemplateInit.js";
11
+ const { prompt } = enquirer;
12
+ export async function init(dirName) {
13
+ let initialPm = "npm";
14
+ const currentPmPath = process.env.npm_execpath;
15
+ if (!currentPmPath) {
16
+ initialPm = await hasBin("pnpm") ? "pnpm" : "npm";
17
+ }
18
+ else if (currentPmPath.endsWith("pnpm")) {
19
+ initialPm = "pnpm";
20
+ }
21
+ else if (currentPmPath.endsWith("yarn")) {
22
+ initialPm = "yarn";
23
+ }
24
+ const pms = ["npm", "pnpm"];
25
+ const answer = await prompt([{
26
+ name: 'pm',
27
+ type: 'select',
28
+ message: "Which package manager to use?",
29
+ initial: pms.indexOf(initialPm),
30
+ choices: pms,
31
+ }, {
32
+ name: 'plugin_name',
33
+ type: 'input',
34
+ message: "Plugin name (use kebab case, e.g. my-plugin)",
35
+ required: true,
36
+ validate: (input) => /[a-zA-Z_](-[a-zA-Z_0-9]+)*/g.test(input),
37
+ }, {
38
+ name: 'plugin_version',
39
+ type: 'input',
40
+ message: "PLugin version",
41
+ initial: '1.0.0',
42
+ required: true,
43
+ validate: (input) => /[\d]\.[\d].[\d](-[a-zA-Z0-9_]+)?/g.test(input),
44
+ }, {
45
+ name: 'plugin_description',
46
+ type: 'input',
47
+ required: false,
48
+ message: "Package description",
49
+ initial: '',
50
+ },
51
+ {
52
+ name: "isolation",
53
+ type: "select",
54
+ message: "Isolation strategy",
55
+ initial: 0,
56
+ choices: [
57
+ { message: "Shadow DOM", name: "shadow", hint: "Shadow DOM will be used to fully isolate the plugin." },
58
+ { message: "CSS-only isolation", name: "css", hint: "Injects Tailwind utilities into host DOM; not fully isolated. Lighter but may generate conflicts" }
59
+ ]
60
+ }
61
+ // {
62
+ // name: 'template',
63
+ // type: 'select',
64
+ // message: "Template to use",
65
+ // initial: 0,
66
+ // choices: [
67
+ // { message: 'Web plugin', name: 'web' },
68
+ // { message: 'Agent tool', name: 'tool' },
69
+ // ]
70
+ // },
71
+ ]);
72
+ //const templateName = answer.template;
73
+ const templateName = "web";
74
+ //const templateInit = templateName === 'web' ? new WebTemplateInit(answer) : new ToolTemplateInit(answer);
75
+ const templateInit = new WebTemplateInit(answer);
76
+ const pluginName = templateInit.pluginName;
77
+ let dir;
78
+ if (!dirName) {
79
+ dirName = pluginName.name;
80
+ dir = join(process.cwd(), dirName);
81
+ }
82
+ else {
83
+ dir = resolve(dirName);
84
+ }
85
+ mkdirSync(dir, { recursive: true });
86
+ chdir(dir);
87
+ const templateProps = {
88
+ suffix: '.tmpl',
89
+ context: templateInit.getVars()
90
+ };
91
+ // copy template to current directory and process template files
92
+ const templateDir = resolve(fileURLToPath(import.meta.url), '../../templates');
93
+ if (templateName === 'web') {
94
+ await copyTree(join(templateDir, "web"), dir, templateProps);
95
+ }
96
+ else if (answer.template === 'tool') {
97
+ await copyTree(join(templateDir, "tool"), dir, templateProps);
98
+ }
99
+ else {
100
+ throw new Error("Invalid template type");
101
+ }
102
+ console.log("Generating package.json");
103
+ const pkg = new Package(templateInit.getPackageJson());
104
+ pkg.saveTo(`${dir}/package.json`);
105
+ templateInit.installDeps();
106
+ }
107
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
package/lib/main.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":""}
package/lib/main.js ADDED
@@ -0,0 +1,8 @@
1
+ import { init } from "./init.js";
2
+ async function main(argv) {
3
+ await init(argv[2]);
4
+ }
5
+ main(process.argv).catch(err => {
6
+ console.error("Error: ", err);
7
+ });
8
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,KAAK,UAAU,IAAI,CAAC,IAAc;IAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AACvB,CAAC;AAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IAC3B,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function expandVars(content: string, vars: Record<string, string>): string;
2
+ export declare function processVarsInFile(file: string, vars: Record<string, string>): void;
3
+ export declare function processAndRenameTemplateFile(file: string, vars: Record<string, string>): void;
4
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAKA,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAEvE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAG3E;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAKtF"}
@@ -0,0 +1,16 @@
1
+ import { readFileSync, renameSync, writeFileSync } from "fs";
2
+ const VAR_RX = /\$\{\s*([a-zA-Z_$][a-zA-Z_$0-9]*)\s*\}/g;
3
+ export function expandVars(content, vars) {
4
+ return content.replaceAll(VAR_RX, (m, p) => p in vars ? vars[p] : m);
5
+ }
6
+ export function processVarsInFile(file, vars) {
7
+ const content = readFileSync(file, "utf8");
8
+ writeFileSync(file, expandVars(content, vars), "utf8");
9
+ }
10
+ export function processAndRenameTemplateFile(file, vars) {
11
+ processVarsInFile(file, vars);
12
+ if (file.endsWith(".template")) {
13
+ renameSync(file, file.slice(0, -".template".length));
14
+ }
15
+ }
16
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAE7D,MAAM,MAAM,GAAG,yCAAyC,CAAC;AAGzD,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,IAA4B;IACpE,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,IAA4B;IACxE,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,IAAY,EAAE,IAA4B;IACnF,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;IACxD,CAAC;AACL,CAAC"}
package/lib/utils.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function runCommand(cmd: string, args: string[]): void;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAIrD"}
package/lib/utils.js ADDED
@@ -0,0 +1,7 @@
1
+ import { spawnSync } from "node:child_process";
2
+ export function runCommand(cmd, args) {
3
+ spawnSync(cmd, args, {
4
+ stdio: 'inherit'
5
+ });
6
+ }
7
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,IAAc;IAClD,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE;QACjB,KAAK,EAAE,SAAS;KACnB,CAAC,CAAC;AACP,CAAC"}
package/package.json CHANGED
@@ -1,42 +1,37 @@
1
1
  {
2
- "name": "@vertesia/create-plugin",
3
- "version": "0.78.0-dev-28b447d",
4
- "description": "Initialize a Vertesia plugin package",
5
- "type": "module",
6
- "bin": {
7
- "create-plugin": "./bin/create-plugin.mjs"
8
- },
9
- "main": "./lib/main.js",
10
- "types": "./lib/main.d.ts",
11
- "files": [
12
- "lib",
13
- "templates",
14
- "bin"
15
- ],
16
- "license": "Apache-2.0",
17
- "homepage": "https://docs.vertesiahq.com/",
18
- "keywords": [
19
- "vertesia",
20
- "ui",
21
- "plugin"
22
- ],
23
- "scripts": {
24
- "eslint": "eslint './src/**/*.{jsx,js,tsx,ts}'",
25
- "build": "rm -rf ./lib ./tsconfig.tsbuildinfo && tsc --build",
26
- "clean": "rimraf ./node_modules ./lib ./tsconfig.tsbuildinfo"
27
- },
28
- "dependencies": {
29
- "enquirer": "^2.4.1",
30
- "hasbin": "^1.2.3"
31
- },
32
- "devDependencies": {
33
- "@types/hasbin": "^1.2.2",
34
- "@types/node": "^22.5.0",
35
- "typescript": "^5.7.2"
36
- },
37
- "repository": {
38
- "type": "git",
39
- "url": "https://github.com/vertesia/composableai.git",
40
- "directory": "packages/create-plugin"
41
- }
42
- }
2
+ "name": "@vertesia/create-plugin",
3
+ "version": "0.79.0",
4
+ "description": "Initialize a Vertesia plugin package",
5
+ "type": "module",
6
+ "bin": {
7
+ "create-plugin": "./bin/create-plugin.mjs"
8
+ },
9
+ "main": "./lib/main.js",
10
+ "types": "./lib/main.d.ts",
11
+ "files": [
12
+ "lib",
13
+ "templates",
14
+ "bin"
15
+ ],
16
+ "license": "Apache-2.0",
17
+ "homepage": "https://docs.vertesiahq.com/",
18
+ "keywords": [
19
+ "vertesia",
20
+ "ui",
21
+ "plugin"
22
+ ],
23
+ "dependencies": {
24
+ "enquirer": "^2.4.1",
25
+ "hasbin": "^1.2.3"
26
+ },
27
+ "devDependencies": {
28
+ "@types/hasbin": "^1.2.2",
29
+ "@types/node": "^22.5.0",
30
+ "typescript": "^5.7.2"
31
+ },
32
+ "scripts": {
33
+ "eslint": "eslint './src/**/*.{jsx,js,tsx,ts}'",
34
+ "build": "rm -rf ./lib ./tsconfig.tsbuildinfo && tsc --build",
35
+ "clean": "rimraf ./node_modules ./lib ./tsconfig.tsbuildinfo"
36
+ }
37
+ }