@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.
- package/README.md +123 -66
- package/lib/configuration.d.ts +63 -0
- package/lib/configuration.d.ts.map +1 -0
- package/lib/configuration.js +72 -0
- package/lib/configuration.js.map +1 -0
- package/lib/download-template.d.ts +5 -0
- package/lib/download-template.d.ts.map +1 -0
- package/lib/download-template.js +33 -0
- package/lib/download-template.js.map +1 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +182 -0
- package/lib/index.js.map +1 -0
- package/lib/package-manager.d.ts +11 -0
- package/lib/package-manager.d.ts.map +1 -0
- package/lib/package-manager.js +83 -0
- package/lib/package-manager.js.map +1 -0
- package/lib/post-install.d.ts +11 -0
- package/lib/post-install.d.ts.map +1 -0
- package/lib/post-install.js +144 -0
- package/lib/post-install.js.map +1 -0
- package/lib/process-template.d.ts +30 -0
- package/lib/process-template.d.ts.map +1 -0
- package/lib/process-template.js +233 -0
- package/lib/process-template.js.map +1 -0
- package/lib/prompts.d.ts +6 -0
- package/lib/prompts.d.ts.map +1 -0
- package/lib/prompts.js +97 -0
- package/lib/prompts.js.map +1 -0
- package/lib/template-config.d.ts +139 -0
- package/lib/template-config.d.ts.map +1 -0
- package/lib/template-config.js +23 -0
- package/lib/template-config.js.map +1 -0
- package/lib/template-selector.d.ts +7 -0
- package/lib/template-selector.d.ts.map +1 -0
- package/lib/template-selector.js +56 -0
- package/lib/template-selector.js.map +1 -0
- package/lib/transforms.d.ts +37 -0
- package/lib/transforms.d.ts.map +1 -0
- package/lib/transforms.js +87 -0
- package/lib/transforms.js.map +1 -0
- package/package.json +22 -32
- package/bin/create-plugin.mjs +0 -2
- package/lib/Package.d.ts +0 -42
- package/lib/Package.d.ts.map +0 -1
- package/lib/Package.js +0 -52
- package/lib/Package.js.map +0 -1
- package/lib/TemplateInit.d.ts +0 -30
- package/lib/TemplateInit.d.ts.map +0 -1
- package/lib/TemplateInit.js +0 -48
- package/lib/TemplateInit.js.map +0 -1
- package/lib/ToolTemplateInit.d.ts +0 -10
- package/lib/ToolTemplateInit.d.ts.map +0 -1
- package/lib/ToolTemplateInit.js +0 -58
- package/lib/ToolTemplateInit.js.map +0 -1
- package/lib/WebTemplateInit.d.ts +0 -10
- package/lib/WebTemplateInit.d.ts.map +0 -1
- package/lib/WebTemplateInit.js +0 -68
- package/lib/WebTemplateInit.js.map +0 -1
- package/lib/copy.d.ts +0 -12
- package/lib/copy.d.ts.map +0 -1
- package/lib/copy.js +0 -45
- package/lib/copy.js.map +0 -1
- package/lib/deps.d.ts +0 -3
- package/lib/deps.d.ts.map +0 -1
- package/lib/deps.js +0 -20
- package/lib/deps.js.map +0 -1
- package/lib/hasBin.d.ts +0 -2
- package/lib/hasBin.d.ts.map +0 -1
- package/lib/hasBin.js +0 -14
- package/lib/hasBin.js.map +0 -1
- package/lib/init.d.ts +0 -2
- package/lib/init.d.ts.map +0 -1
- package/lib/init.js +0 -124
- package/lib/init.js.map +0 -1
- package/lib/main.d.ts +0 -2
- package/lib/main.d.ts.map +0 -1
- package/lib/main.js +0 -8
- package/lib/main.js.map +0 -1
- package/lib/template.d.ts +0 -4
- package/lib/template.d.ts.map +0 -1
- package/lib/template.js +0 -16
- package/lib/template.js.map +0 -1
- package/lib/types.d.ts +0 -12
- package/lib/types.d.ts.map +0 -1
- package/lib/types.js +0 -20
- package/lib/types.js.map +0 -1
- package/lib/utils.d.ts +0 -2
- package/lib/utils.d.ts.map +0 -1
- package/lib/utils.js +0 -7
- package/lib/utils.js.map +0 -1
- package/templates/tool/.env.example +0 -6
- package/templates/tool/.vscode/launch.json +0 -24
- package/templates/tool/README.md +0 -190
- package/templates/tool/api/index.ts +0 -8
- package/templates/tool/gitignore +0 -26
- package/templates/tool/rollup.config.js +0 -30
- package/templates/tool/src/collections/example/icon.svg.ts +0 -6
- package/templates/tool/src/collections/example/index.ts +0 -14
- package/templates/tool/src/collections/example/weather/WeatherTool.ts +0 -32
- package/templates/tool/src/collections/example/weather/manifest.ts +0 -16
- package/templates/tool/src/collections/index.ts +0 -7
- package/templates/tool/src/index.ts +0 -5
- package/templates/tool/src/server.ts +0 -71
- package/templates/tool/tsconfig.json +0 -24
- package/templates/tool/vite.config.js +0 -48
- package/templates/web/README.md +0 -156
- package/templates/web/eslint.config.js +0 -29
- package/templates/web/gitignore +0 -25
- package/templates/web/index.html.tmpl +0 -26
- package/templates/web/src/app.tsx +0 -8
- package/templates/web/src/assets.ts +0 -26
- package/templates/web/src/env.ts.tmpl +0 -14
- package/templates/web/src/index.css +0 -21
- package/templates/web/src/main.tsx.tmpl +0 -21
- package/templates/web/src/pages.tsx +0 -31
- package/templates/web/src/plugin.tsx.tmpl +0 -18
- package/templates/web/src/routes.tsx +0 -17
- package/templates/web/src/vite-env.d.ts +0 -1
- package/templates/web/tsconfig.app.json +0 -51
- package/templates/web/tsconfig.json +0 -7
- package/templates/web/tsconfig.node.json +0 -27
- 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.
|
|
4
|
-
"description": "
|
|
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": "./
|
|
7
|
+
"create-plugin": "./lib/index.js"
|
|
8
8
|
},
|
|
9
|
-
"main": "./lib/
|
|
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
|
-
"
|
|
21
|
-
"
|
|
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
|
-
"
|
|
25
|
-
"
|
|
24
|
+
"chalk": "^5.3.0",
|
|
25
|
+
"degit": "^2.8.4",
|
|
26
|
+
"prompts": "^2.4.2"
|
|
26
27
|
},
|
|
27
28
|
"devDependencies": {
|
|
28
|
-
"@types/
|
|
29
|
-
"@types/node": "^22.
|
|
30
|
-
"
|
|
31
|
-
"
|
|
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
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
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
|
}
|
package/bin/create-plugin.mjs
DELETED
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
|
package/lib/Package.d.ts.map
DELETED
|
@@ -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
|
package/lib/Package.js.map
DELETED
|
@@ -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"}
|
package/lib/TemplateInit.d.ts
DELETED
|
@@ -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"}
|
package/lib/TemplateInit.js
DELETED
|
@@ -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
|
package/lib/TemplateInit.js.map
DELETED
|
@@ -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"}
|