@vertesia/create-plugin 0.80.0-dev.20251121 → 0.81.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 (123) hide show
  1. package/README.md +123 -66
  2. package/lib/configuration.d.ts +63 -0
  3. package/lib/configuration.d.ts.map +1 -0
  4. package/lib/configuration.js +72 -0
  5. package/lib/configuration.js.map +1 -0
  6. package/lib/download-template.d.ts +5 -0
  7. package/lib/download-template.d.ts.map +1 -0
  8. package/lib/download-template.js +33 -0
  9. package/lib/download-template.js.map +1 -0
  10. package/lib/index.d.ts +9 -0
  11. package/lib/index.d.ts.map +1 -0
  12. package/lib/index.js +182 -0
  13. package/lib/index.js.map +1 -0
  14. package/lib/package-manager.d.ts +11 -0
  15. package/lib/package-manager.d.ts.map +1 -0
  16. package/lib/package-manager.js +83 -0
  17. package/lib/package-manager.js.map +1 -0
  18. package/lib/post-install.d.ts +11 -0
  19. package/lib/post-install.d.ts.map +1 -0
  20. package/lib/post-install.js +144 -0
  21. package/lib/post-install.js.map +1 -0
  22. package/lib/process-template.d.ts +30 -0
  23. package/lib/process-template.d.ts.map +1 -0
  24. package/lib/process-template.js +233 -0
  25. package/lib/process-template.js.map +1 -0
  26. package/lib/prompts.d.ts +6 -0
  27. package/lib/prompts.d.ts.map +1 -0
  28. package/lib/prompts.js +97 -0
  29. package/lib/prompts.js.map +1 -0
  30. package/lib/template-config.d.ts +139 -0
  31. package/lib/template-config.d.ts.map +1 -0
  32. package/lib/template-config.js +23 -0
  33. package/lib/template-config.js.map +1 -0
  34. package/lib/template-selector.d.ts +7 -0
  35. package/lib/template-selector.d.ts.map +1 -0
  36. package/lib/template-selector.js +56 -0
  37. package/lib/template-selector.js.map +1 -0
  38. package/lib/transforms.d.ts +37 -0
  39. package/lib/transforms.d.ts.map +1 -0
  40. package/lib/transforms.js +87 -0
  41. package/lib/transforms.js.map +1 -0
  42. package/package.json +22 -32
  43. package/bin/create-plugin.mjs +0 -2
  44. package/lib/Package.d.ts +0 -42
  45. package/lib/Package.d.ts.map +0 -1
  46. package/lib/Package.js +0 -52
  47. package/lib/Package.js.map +0 -1
  48. package/lib/TemplateInit.d.ts +0 -30
  49. package/lib/TemplateInit.d.ts.map +0 -1
  50. package/lib/TemplateInit.js +0 -48
  51. package/lib/TemplateInit.js.map +0 -1
  52. package/lib/ToolTemplateInit.d.ts +0 -10
  53. package/lib/ToolTemplateInit.d.ts.map +0 -1
  54. package/lib/ToolTemplateInit.js +0 -58
  55. package/lib/ToolTemplateInit.js.map +0 -1
  56. package/lib/WebTemplateInit.d.ts +0 -10
  57. package/lib/WebTemplateInit.d.ts.map +0 -1
  58. package/lib/WebTemplateInit.js +0 -68
  59. package/lib/WebTemplateInit.js.map +0 -1
  60. package/lib/copy.d.ts +0 -12
  61. package/lib/copy.d.ts.map +0 -1
  62. package/lib/copy.js +0 -45
  63. package/lib/copy.js.map +0 -1
  64. package/lib/deps.d.ts +0 -3
  65. package/lib/deps.d.ts.map +0 -1
  66. package/lib/deps.js +0 -20
  67. package/lib/deps.js.map +0 -1
  68. package/lib/hasBin.d.ts +0 -2
  69. package/lib/hasBin.d.ts.map +0 -1
  70. package/lib/hasBin.js +0 -14
  71. package/lib/hasBin.js.map +0 -1
  72. package/lib/init.d.ts +0 -2
  73. package/lib/init.d.ts.map +0 -1
  74. package/lib/init.js +0 -124
  75. package/lib/init.js.map +0 -1
  76. package/lib/main.d.ts +0 -2
  77. package/lib/main.d.ts.map +0 -1
  78. package/lib/main.js +0 -8
  79. package/lib/main.js.map +0 -1
  80. package/lib/template.d.ts +0 -4
  81. package/lib/template.d.ts.map +0 -1
  82. package/lib/template.js +0 -16
  83. package/lib/template.js.map +0 -1
  84. package/lib/types.d.ts +0 -12
  85. package/lib/types.d.ts.map +0 -1
  86. package/lib/types.js +0 -20
  87. package/lib/types.js.map +0 -1
  88. package/lib/utils.d.ts +0 -2
  89. package/lib/utils.d.ts.map +0 -1
  90. package/lib/utils.js +0 -7
  91. package/lib/utils.js.map +0 -1
  92. package/templates/tool/.env.example +0 -6
  93. package/templates/tool/.vscode/launch.json +0 -24
  94. package/templates/tool/README.md +0 -190
  95. package/templates/tool/api/index.ts +0 -8
  96. package/templates/tool/gitignore +0 -26
  97. package/templates/tool/rollup.config.js +0 -30
  98. package/templates/tool/src/collections/example/icon.svg.ts +0 -6
  99. package/templates/tool/src/collections/example/index.ts +0 -14
  100. package/templates/tool/src/collections/example/weather/WeatherTool.ts +0 -32
  101. package/templates/tool/src/collections/example/weather/manifest.ts +0 -16
  102. package/templates/tool/src/collections/index.ts +0 -7
  103. package/templates/tool/src/index.ts +0 -5
  104. package/templates/tool/src/server.ts +0 -71
  105. package/templates/tool/tsconfig.json +0 -24
  106. package/templates/tool/vite.config.js +0 -48
  107. package/templates/web/README.md +0 -156
  108. package/templates/web/eslint.config.js +0 -29
  109. package/templates/web/gitignore +0 -25
  110. package/templates/web/index.html.tmpl +0 -26
  111. package/templates/web/src/app.tsx +0 -8
  112. package/templates/web/src/assets.ts +0 -26
  113. package/templates/web/src/env.ts.tmpl +0 -14
  114. package/templates/web/src/index.css +0 -21
  115. package/templates/web/src/main.tsx.tmpl +0 -21
  116. package/templates/web/src/pages.tsx +0 -31
  117. package/templates/web/src/plugin.tsx.tmpl +0 -18
  118. package/templates/web/src/routes.tsx +0 -17
  119. package/templates/web/src/vite-env.d.ts +0 -1
  120. package/templates/web/tsconfig.app.json +0 -51
  121. package/templates/web/tsconfig.json +0 -7
  122. package/templates/web/tsconfig.node.json +0 -27
  123. package/templates/web/vite.config.ts.tmpl +0 -128
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Template configuration loaded from template.config.json
3
+ *
4
+ * This configuration defines how the template installer should:
5
+ * - Prompt users for configuration values
6
+ * - Replace variables in template files
7
+ * - Conditionally remove files based on user choices
8
+ * - Clean up template-specific files after installation
9
+ *
10
+ * @see TEMPLATE_CONFIG.md for detailed documentation
11
+ */
12
+ export interface TemplateConfig {
13
+ /** Configuration format version (currently "1.0") */
14
+ version: string;
15
+ /** Optional human-readable description of the template */
16
+ description?: string;
17
+ /** Optional package manager to force (skips selection prompt) */
18
+ packageManager?: 'pnpm' | 'npm';
19
+ /** Array of prompts to ask the user during installation */
20
+ prompts: PromptConfig[];
21
+ /** Array of file paths where {{VARIABLE}} replacement should occur */
22
+ files: string[];
23
+ /** Optional array of file paths to remove after installation (e.g., template.config.json) */
24
+ removeAfterInstall?: string[];
25
+ /**
26
+ * Optional file renaming after variable replacement
27
+ * Format: { "source": "destination" }
28
+ * Example: { ".env.template": ".env" }
29
+ */
30
+ renameFiles?: Record<string, string>;
31
+ /**
32
+ * Optional conditional file removal based on user answers
33
+ * Format: { "VARIABLE_NAME": { "value": ["files", "to", "remove"] } }
34
+ * Example: { "USE_TYPESCRIPT": { "false": ["tsconfig.json"] } }
35
+ */
36
+ conditionalRemove?: Record<string, Record<string, string[]>>;
37
+ /**
38
+ * Optional derived variables computed from user answers
39
+ * Format: { "NEW_VAR": { "from": "SOURCE_VAR", "transform": "pascalCase" } }
40
+ * Supported transforms: "pascalCase", "camelCase", "kebabCase", "snakeCase", "titleCase", "upperCase", "lowerCase", "concat"
41
+ * Example: { "ComponentName": { "from": "PROJECT_NAME", "transform": "pascalCase" } }
42
+ * For concat: { "SERVICE_NAME": { "from": ["ORG", "NAME"], "transform": "concat", "separator": "_" } }
43
+ */
44
+ derived?: Record<string, DerivedVariable>;
45
+ /**
46
+ * Optional pre-install hooks to run before dependencies are installed
47
+ * Used for CLI authentication, registry setup, etc.
48
+ */
49
+ preInstall?: PreInstallConfig;
50
+ /**
51
+ * Optional post-install hooks to run after the project is created
52
+ * Used for additional setup commands, etc.
53
+ */
54
+ postInstall?: PostInstallConfig;
55
+ }
56
+ /**
57
+ * Configuration for pre-install hooks (runs before npm install)
58
+ */
59
+ export interface PreInstallConfig {
60
+ /** Commands to run before installation */
61
+ commands: PostInstallCommand[];
62
+ /** CLI package to install globally before running commands (e.g., "@vertesia/cli") */
63
+ cliPackage?: string;
64
+ }
65
+ /**
66
+ * Configuration for a derived variable computed from user input
67
+ */
68
+ export interface DerivedVariable {
69
+ /** Source variable name(s) to derive from. Can be a single string or array of strings for concat transform */
70
+ from: string | string[];
71
+ /** Transformation to apply: "pascalCase", "camelCase", "kebabCase", "snakeCase", "titleCase", "upperCase", "lowerCase", "concat" */
72
+ transform: string;
73
+ /** Separator for concat transform (default: "") */
74
+ separator?: string;
75
+ }
76
+ /**
77
+ * Configuration for a post-install command
78
+ */
79
+ export interface PostInstallCommand {
80
+ /** Display name for the command */
81
+ name: string;
82
+ /** Command to execute */
83
+ command: string;
84
+ /** If true, prompt user before running and allow skipping */
85
+ optional?: boolean;
86
+ /** Prompt message to show if optional (default: "Do you want to run {name}?") */
87
+ prompt?: string;
88
+ }
89
+ /**
90
+ * Configuration for post-install hooks
91
+ */
92
+ export interface PostInstallConfig {
93
+ /** Commands to run after installation */
94
+ commands: PostInstallCommand[];
95
+ /** CLI package to install globally before running commands (e.g., "@vertesia/cli") */
96
+ cliPackage?: string;
97
+ }
98
+ /**
99
+ * Configuration for a single prompt shown to the user
100
+ *
101
+ * The user's answer is stored using the 'name' field and can be used
102
+ * to replace {{name}} placeholders in template files.
103
+ */
104
+ export interface PromptConfig {
105
+ /** Prompt type: "text", "number", "confirm", "select", or "multiselect" */
106
+ type: string;
107
+ /** Variable name used for replacement (use {{name}} in template files) */
108
+ name: string;
109
+ /** Question text shown to the user */
110
+ message: string;
111
+ /**
112
+ * Optional default value
113
+ * Can include ${PROJECT_NAME} which will be replaced with the user's project name
114
+ * Example: "initial": "@myorg/${PROJECT_NAME}"
115
+ */
116
+ initial?: string | number | boolean;
117
+ /**
118
+ * Optional validation function as string
119
+ * Should return true if valid, or error message string if invalid
120
+ * Example: "(value) => value.length > 0 || 'Required field'"
121
+ */
122
+ validate?: string;
123
+ /**
124
+ * Optional format function as string to transform the value before saving
125
+ * Example: "(value) => value.toLowerCase()"
126
+ */
127
+ format?: string;
128
+ /**
129
+ * Optional skip condition as string
130
+ * Should return true to skip this prompt based on previous answers
131
+ * Example: "(prev) => !prev.USE_TYPESCRIPT"
132
+ */
133
+ skip?: string;
134
+ }
135
+ /**
136
+ * Read template.config.json from the downloaded template
137
+ */
138
+ export declare function readTemplateConfig(projectName: string): TemplateConfig;
139
+ //# sourceMappingURL=template-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-config.d.ts","sourceRoot":"","sources":["../src/template-config.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAEhB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAEhC,2DAA2D;IAC3D,OAAO,EAAE,YAAY,EAAE,CAAC;IAExB,sEAAsE;IACtE,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAE7D;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAE1C;;;OAGG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B;;;OAGG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAE/B,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8GAA8G;IAC9G,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,oIAAoI;IACpI,SAAS,EAAE,MAAM,CAAC;IAElB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IAEb,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAEhB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAE/B,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IAEb,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IAEb,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAEpC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAatE"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Template configuration types and reading
3
+ */
4
+ import fs from 'fs';
5
+ import path from 'path';
6
+ import { config } from './configuration.js';
7
+ /**
8
+ * Read template.config.json from the downloaded template
9
+ */
10
+ export function readTemplateConfig(projectName) {
11
+ const configPath = path.join(projectName, config.templateConfigFile);
12
+ if (!fs.existsSync(configPath)) {
13
+ throw new Error(`Template configuration file not found: ${config.templateConfigFile}`);
14
+ }
15
+ try {
16
+ const content = fs.readFileSync(configPath, 'utf8');
17
+ return JSON.parse(content);
18
+ }
19
+ catch (error) {
20
+ throw new Error(`Failed to parse template configuration: ${error instanceof Error ? error.message : 'Unknown error'}`);
21
+ }
22
+ }
23
+ //# sourceMappingURL=template-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-config.js","sourceRoot":"","sources":["../src/template-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAqK5C;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAErE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,0CAA0C,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,2CAA2C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IACzH,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { TemplateDefinition } from './configuration.js';
2
+ /**
3
+ * Select a template (only prompts if multiple templates are available)
4
+ * Returns the selected template definition with branch override applied if provided
5
+ */
6
+ export declare function selectTemplate(branchOverride?: string): Promise<TemplateDefinition>;
7
+ //# sourceMappingURL=template-selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-selector.d.ts","sourceRoot":"","sources":["../src/template-selector.ts"],"names":[],"mappings":"AAKA,OAAO,EAAU,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAiBhE;;;GAGG;AACH,wBAAsB,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAoCzF"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Template selection when multiple templates are available
3
+ */
4
+ import prompts from 'prompts';
5
+ import chalk from 'chalk';
6
+ import { config } from './configuration.js';
7
+ /**
8
+ * Apply branch override to repository URL
9
+ */
10
+ function applyBranchOverride(repository, branch) {
11
+ if (!branch) {
12
+ return repository;
13
+ }
14
+ // Remove existing branch/tag if present (after #)
15
+ const baseRepo = repository.split('#')[0];
16
+ // Apply the override branch
17
+ return `${baseRepo}#${branch}`;
18
+ }
19
+ /**
20
+ * Select a template (only prompts if multiple templates are available)
21
+ * Returns the selected template definition with branch override applied if provided
22
+ */
23
+ export async function selectTemplate(branchOverride) {
24
+ const templates = config.templates;
25
+ let selectedTemplate;
26
+ // If only one template, return it directly
27
+ if (templates.length === 1) {
28
+ selectedTemplate = templates[0];
29
+ }
30
+ else {
31
+ // Multiple templates - let user choose
32
+ console.log(chalk.blue('📋 Template Selection\n'));
33
+ const response = await prompts({
34
+ type: 'select',
35
+ name: 'template',
36
+ message: 'Which type of project would you like to create?',
37
+ choices: templates.map((template, index) => ({
38
+ title: template.name,
39
+ value: index
40
+ })),
41
+ initial: 0
42
+ }, {
43
+ onCancel: () => {
44
+ throw new Error('Installation cancelled by user');
45
+ }
46
+ });
47
+ console.log();
48
+ selectedTemplate = templates[response.template];
49
+ }
50
+ // Apply branch override if provided
51
+ return {
52
+ ...selectedTemplate,
53
+ repository: applyBranchOverride(selectedTemplate.repository, branchOverride)
54
+ };
55
+ }
56
+ //# sourceMappingURL=template-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-selector.js","sourceRoot":"","sources":["../src/template-selector.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAsB,MAAM,oBAAoB,CAAC;AAEhE;;GAEG;AACH,SAAS,mBAAmB,CAAC,UAAkB,EAAE,MAAe;IAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,kDAAkD;IAClD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1C,4BAA4B;IAC5B,OAAO,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,cAAuB;IAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAEnC,IAAI,gBAAoC,CAAC;IAEzC,2CAA2C;IAC3C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,uCAAuC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAEnD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;YAC7B,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,iDAAiD;YAC1D,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC3C,KAAK,EAAE,QAAQ,CAAC,IAAI;gBACpB,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;YACH,OAAO,EAAE,CAAC;SACX,EAAE;YACD,QAAQ,EAAE,GAAG,EAAE;gBACb,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACpD,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,gBAAgB,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,oCAAoC;IACpC,OAAO;QACL,GAAG,gBAAgB;QACnB,UAAU,EAAE,mBAAmB,CAAC,gBAAgB,CAAC,UAAU,EAAE,cAAc,CAAC;KAC7E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * String transformation utilities for derived variables
3
+ */
4
+ /**
5
+ * Convert string to PascalCase
6
+ * Examples: "my-plugin" → "MyPlugin", "hello world" → "HelloWorld"
7
+ */
8
+ export declare function toPascalCase(str: string): string;
9
+ /**
10
+ * Convert string to camelCase
11
+ * Examples: "my-plugin" → "myPlugin", "hello world" → "helloWorld"
12
+ */
13
+ export declare function toCamelCase(str: string): string;
14
+ /**
15
+ * Convert string to kebab-case
16
+ * Examples: "MyPlugin" → "my-plugin", "helloWorld" → "hello-world"
17
+ */
18
+ export declare function toKebabCase(str: string): string;
19
+ /**
20
+ * Convert string to snake_case
21
+ * Examples: "MyPlugin" → "my_plugin", "helloWorld" → "hello_world"
22
+ */
23
+ export declare function toSnakeCase(str: string): string;
24
+ /**
25
+ * Convert string to Title Case
26
+ * Examples: "my-plugin" → "My Plugin", "hello_world" → "Hello World"
27
+ */
28
+ export declare function toTitleCase(str: string): string;
29
+ /**
30
+ * Apply a transformation to a string value
31
+ */
32
+ export declare function applyTransform(value: string, transform: string): string;
33
+ /**
34
+ * Concatenate multiple values with a separator
35
+ */
36
+ export declare function concatValues(values: string[], separator?: string): string;
37
+ //# sourceMappingURL=transforms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transforms.d.ts","sourceRoot":"","sources":["../src/transforms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAS/C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAmBvE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,MAAW,GAAG,MAAM,CAE7E"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * String transformation utilities for derived variables
3
+ */
4
+ /**
5
+ * Convert string to PascalCase
6
+ * Examples: "my-plugin" → "MyPlugin", "hello world" → "HelloWorld"
7
+ */
8
+ export function toPascalCase(str) {
9
+ return str
10
+ .replace(/[^a-zA-Z0-9]+(.)/g, (_, char) => char.toUpperCase())
11
+ .replace(/^[a-z]/, (char) => char.toUpperCase());
12
+ }
13
+ /**
14
+ * Convert string to camelCase
15
+ * Examples: "my-plugin" → "myPlugin", "hello world" → "helloWorld"
16
+ */
17
+ export function toCamelCase(str) {
18
+ return str
19
+ .replace(/[^a-zA-Z0-9]+(.)/g, (_, char) => char.toUpperCase())
20
+ .replace(/^[A-Z]/, (char) => char.toLowerCase());
21
+ }
22
+ /**
23
+ * Convert string to kebab-case
24
+ * Examples: "MyPlugin" → "my-plugin", "helloWorld" → "hello-world"
25
+ */
26
+ export function toKebabCase(str) {
27
+ return str
28
+ .replace(/([a-z0-9])([A-Z])/g, '$1-$2')
29
+ .replace(/[^a-zA-Z0-9]+/g, '-')
30
+ .replace(/^-+|-+$/g, '')
31
+ .toLowerCase();
32
+ }
33
+ /**
34
+ * Convert string to snake_case
35
+ * Examples: "MyPlugin" → "my_plugin", "helloWorld" → "hello_world"
36
+ */
37
+ export function toSnakeCase(str) {
38
+ return str
39
+ .replace(/([a-z0-9])([A-Z])/g, '$1_$2')
40
+ .replace(/[^a-zA-Z0-9]+/g, '_')
41
+ .replace(/^_+|_+$/g, '')
42
+ .toLowerCase();
43
+ }
44
+ /**
45
+ * Convert string to Title Case
46
+ * Examples: "my-plugin" → "My Plugin", "hello_world" → "Hello World"
47
+ */
48
+ export function toTitleCase(str) {
49
+ return str
50
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
51
+ .replace(/[_-]+/g, ' ')
52
+ .replace(/\s+/g, ' ')
53
+ .trim()
54
+ .split(' ')
55
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
56
+ .join(' ');
57
+ }
58
+ /**
59
+ * Apply a transformation to a string value
60
+ */
61
+ export function applyTransform(value, transform) {
62
+ switch (transform) {
63
+ case 'pascalCase':
64
+ return toPascalCase(value);
65
+ case 'camelCase':
66
+ return toCamelCase(value);
67
+ case 'kebabCase':
68
+ return toKebabCase(value);
69
+ case 'snakeCase':
70
+ return toSnakeCase(value);
71
+ case 'titleCase':
72
+ return toTitleCase(value);
73
+ case 'upperCase':
74
+ return value.toUpperCase();
75
+ case 'lowerCase':
76
+ return value.toLowerCase();
77
+ default:
78
+ throw new Error(`Unknown transform: ${transform}`);
79
+ }
80
+ }
81
+ /**
82
+ * Concatenate multiple values with a separator
83
+ */
84
+ export function concatValues(values, separator = '') {
85
+ return values.join(separator);
86
+ }
87
+ //# sourceMappingURL=transforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transforms.js","sourceRoot":"","sources":["../src/transforms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,GAAG;SACP,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SAC7D,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SAC7D,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE;SACN,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACvE,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,SAAiB;IAC7D,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,YAAY;YACf,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7B,KAAK,WAAW;YACd,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,WAAW;YACd,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,WAAW;YACd,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,WAAW;YACd,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;QAC7B,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;QAC7B;YACE,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAgB,EAAE,YAAoB,EAAE;IACnE,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,CAAC"}
package/package.json CHANGED
@@ -1,49 +1,39 @@
1
1
  {
2
2
  "name": "@vertesia/create-plugin",
3
- "version": "0.80.0-dev.20251121",
4
- "description": "Initialize a Vertesia plugin package",
3
+ "version": "0.81.0",
4
+ "description": "CLI to create Vertesia plugins: UI plugins or tool servers",
5
5
  "type": "module",
6
6
  "bin": {
7
- "create-plugin": "./bin/create-plugin.mjs"
7
+ "create-plugin": "./lib/index.js"
8
8
  },
9
- "main": "./lib/main.js",
10
- "types": "./lib/main.d.ts",
9
+ "main": "./lib/index.js",
11
10
  "files": [
12
- "lib",
13
- "templates",
14
- "bin"
11
+ "lib"
15
12
  ],
16
- "license": "Apache-2.0",
17
- "homepage": "https://docs.vertesiahq.com/",
18
13
  "keywords": [
19
14
  "vertesia",
20
- "ui",
21
- "plugin"
15
+ "tool-server",
16
+ "cli",
17
+ "create",
18
+ "template",
19
+ "scaffold"
22
20
  ],
21
+ "author": "Vertesia",
22
+ "license": "Apache-2.0",
23
23
  "dependencies": {
24
- "enquirer": "^2.4.1",
25
- "hasbin": "^1.2.3"
24
+ "chalk": "^5.3.0",
25
+ "degit": "^2.8.4",
26
+ "prompts": "^2.4.2"
26
27
  },
27
28
  "devDependencies": {
28
- "@types/hasbin": "^1.2.2",
29
- "@types/node": "^22.5.0",
30
- "typescript": "^5.7.2",
31
- "hono": "^4.10.3",
32
- "@hono/node-server": "^1.19.5",
33
- "@llumiverse/common": "0.23.0-dev.20251121",
34
- "@vertesia/client": "0.80.0-dev.20251121",
35
- "@vertesia/tools-sdk": "0.80.0-dev.20251121",
36
- "@vertesia/common": "0.80.0-dev.20251121"
37
- },
38
- "repository": {
39
- "type": "git",
40
- "url": "https://github.com/vertesia/composableai.git",
41
- "directory": "packages/create-plugin"
29
+ "@types/degit": "^2.8.6",
30
+ "@types/node": "^22.18.12",
31
+ "@types/prompts": "^2.4.9",
32
+ "typescript": "^5.9.3"
42
33
  },
43
34
  "scripts": {
44
- "eslint": "eslint './src/**/*.{jsx,js,tsx,ts}'",
45
- "build": "rm -rf ./lib ./tsconfig.tsbuildinfo && pnpm run typecheck:templates && tsc --build",
46
- "typecheck:templates": "tsc --noEmit --project templates/tool/tsconfig.json",
47
- "clean": "rimraf ./node_modules ./lib ./tsconfig.tsbuildinfo"
35
+ "build": "tsc",
36
+ "dev": "tsc --watch",
37
+ "test": "node lib/index.js test-project"
48
38
  }
49
39
  }
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- import "../lib/main.js"
package/lib/Package.d.ts DELETED
@@ -1,42 +0,0 @@
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
@@ -1 +0,0 @@
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,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,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 DELETED
@@ -1,52 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,30 +0,0 @@
1
- import { PackageJson } from "./Package.js";
2
- import { TemplateType } from "./types.js";
3
- export interface UserOptions {
4
- pm: "npm" | "pnpm";
5
- plugin_name: string;
6
- plugin_version: string;
7
- plugin_description?: string;
8
- isolation: "shadow" | "css";
9
- template: TemplateType;
10
- }
11
- export declare abstract class TemplateInit {
12
- options: UserOptions;
13
- pluginName: PluginName;
14
- constructor(options: UserOptions);
15
- abstract getPackageJson(): PackageJson;
16
- abstract getDevDependencies(): string[];
17
- abstract getRuntimeDependencies(): string[];
18
- abstract getVars(): Record<string, any>;
19
- installDeps(): void;
20
- }
21
- export declare class PluginName {
22
- value: string;
23
- scope?: string;
24
- name: string;
25
- _title?: string;
26
- constructor(value: string);
27
- get title(): string;
28
- get pascalCase(): string;
29
- }
30
- //# sourceMappingURL=TemplateInit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TemplateInit.d.ts","sourceRoot":"","sources":["../src/TemplateInit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,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,YAAY,CAAC;CAC1B;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"}
@@ -1,48 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"TemplateInit.js","sourceRoot":"","sources":["../src/TemplateInit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAavE,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"}