@linyjs/cli 0.0.2

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.
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Init command - Create a new plugin project from template
3
+ *
4
+ * Downloads the default template from npm and sets up a new project
5
+ */
6
+ import fs from 'fs';
7
+ import path from 'path';
8
+ import chalk from 'chalk';
9
+ import ora from 'ora';
10
+ import { execSync } from 'child_process';
11
+ /**
12
+ * Initialize a new plugin project
13
+ */
14
+ export async function initPlugin(options) {
15
+ const targetDir = options.name || 'my-plugin';
16
+ const absolutePath = path.resolve(process.cwd(), targetDir);
17
+ console.log(chalk.blue('🚀 Ling Plugin Project Creator\n'));
18
+ // Check if directory already exists
19
+ if (fs.existsSync(absolutePath)) {
20
+ console.error(chalk.red(`Error: Directory "${targetDir}" already exists`));
21
+ process.exit(1);
22
+ }
23
+ const spinner1 = ora('Downloading template from npm...').start();
24
+ try {
25
+ // Download template using npm create
26
+ const npmCommand = `npm create @linyjs/plugin-templates@latest ${targetDir}`;
27
+ if (options.verbose) {
28
+ console.log(chalk.gray('Running:'), npmCommand);
29
+ }
30
+ execSync(npmCommand, {
31
+ stdio: options.verbose ? 'inherit' : 'pipe',
32
+ cwd: process.cwd()
33
+ });
34
+ spinner1.succeed('Template downloaded');
35
+ // Show next steps
36
+ console.log('\n' + chalk.green('✓ Project created successfully!\n'));
37
+ console.log(chalk.cyan('Next steps:'));
38
+ console.log(` 1. Navigate to your project:`);
39
+ console.log(` ${chalk.gray(`cd ${targetDir}`)}`);
40
+ console.log(` 2. Install dependencies:`);
41
+ console.log(` ${chalk.gray('npm install')}`);
42
+ console.log(` 3. Start development:`);
43
+ console.log(` ${chalk.gray('npm run dev')}`);
44
+ console.log(` 4. Pack for deployment:`);
45
+ console.log(` ${chalk.gray('npx @linyjs/cli pack')}\n`);
46
+ console.log(chalk.cyan('Learn more:'));
47
+ console.log(` - Plugin Development Guide: https://github.com/linyjs/ling/blob/main/spec/插件开发指南.md`);
48
+ console.log(` - CLI Documentation: https://github.com/linyjs/ling/blob/main/packages/cli/README.md\n`);
49
+ }
50
+ catch (error) {
51
+ spinner1.fail('Failed to create project');
52
+ console.error(chalk.red('\nError:'), error instanceof Error ? error.message : error);
53
+ console.error(chalk.yellow('\nTroubleshooting:'));
54
+ console.error(' - Make sure you have Node.js >= 18 installed');
55
+ console.error(' - Check your internet connection');
56
+ console.error(' - Try again with --verbose flag for more details');
57
+ process.exit(1);
58
+ }
59
+ }
60
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAOzC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAoB;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IAE5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAE5D,oCAAoC;IACpC,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,SAAS,kBAAkB,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,kCAAkC,CAAC,CAAC,KAAK,EAAE,CAAC;IAEjE,IAAI,CAAC;QACH,qCAAqC;QACrC,MAAM,UAAU,GAAG,8CAA8C,SAAS,EAAE,CAAC;QAE7E,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC;QAED,QAAQ,CAAC,UAAU,EAAE;YACnB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;YAC3C,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;SACnB,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAExC,kBAAkB;QAClB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,MAAM,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAE5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,uFAAuF,CAAC,CAAC;QACrG,OAAO,CAAC,GAAG,CAAC,0FAA0F,CAAC,CAAC;IAE1G,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACrF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAChE,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Pack plugin into .mpk file
3
+ */
4
+ interface PackOptions {
5
+ output: string;
6
+ name?: string;
7
+ version?: string | boolean;
8
+ build: boolean;
9
+ manifest?: string;
10
+ verbose: boolean;
11
+ }
12
+ export declare function packPlugin(options: PackOptions): Promise<void>;
13
+ export {};
14
+ //# sourceMappingURL=pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../../src/commands/pack.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,WAAW,iBA4IpD"}
@@ -0,0 +1,257 @@
1
+ /**
2
+ * Pack plugin into .mpk file
3
+ */
4
+ import fs from 'fs';
5
+ import path from 'path';
6
+ import archiver from 'archiver';
7
+ import chalk from 'chalk';
8
+ import ora from 'ora';
9
+ import { buildProject } from '../utils/builder.js';
10
+ export async function packPlugin(options) {
11
+ const projectRoot = process.cwd();
12
+ console.log(chalk.blue('📦 Ling Plugin Packer\n'));
13
+ // Step 1: Read package.json
14
+ const spinner1 = ora('Reading package.json...').start();
15
+ const packageJsonPath = path.join(projectRoot, 'package.json');
16
+ if (!fs.existsSync(packageJsonPath)) {
17
+ spinner1.fail('package.json not found');
18
+ console.error(chalk.red('\nPlease run this command in a plugin project directory.'));
19
+ process.exit(1);
20
+ }
21
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
22
+ spinner1.succeed('Package.json loaded');
23
+ if (options.verbose) {
24
+ console.log(chalk.gray(' Name:'), packageJson.name);
25
+ console.log(chalk.gray(' Version:'), packageJson.version);
26
+ }
27
+ // Step 2: Build project (if needed)
28
+ if (options.build) {
29
+ const buildOptions = {
30
+ projectRoot,
31
+ verbose: options.verbose,
32
+ // esbuild is used by default - no need for users to configure webpack/rollup
33
+ // CLI handles all build optimization automatically
34
+ minify: true, // Always minify for production bundles
35
+ external: [
36
+ 'react',
37
+ 'react-dom',
38
+ 'express',
39
+ '@linyjs/*',
40
+ '@ling/*'
41
+ ]
42
+ };
43
+ const buildResult = await buildProject(buildOptions);
44
+ if (options.verbose) {
45
+ console.log(chalk.gray('\n📊 Build Statistics:'));
46
+ console.log(chalk.gray(' Duration:'), `${buildResult.duration}ms`);
47
+ console.log(chalk.gray(' Files:'), buildResult.files.length);
48
+ console.log(chalk.gray(' Size:'), formatFileSize(buildResult.size));
49
+ console.log(chalk.gray(' Output:'), buildResult.outputDir);
50
+ }
51
+ }
52
+ else {
53
+ console.log(chalk.yellow('⚠ Skipping build step (--no-build)'));
54
+ }
55
+ // Step 3: Generate manifest.json
56
+ const spinner3 = ora('Generating manifest.json...').start();
57
+ const distDir = path.join(projectRoot, 'dist');
58
+ if (!fs.existsSync(distDir)) {
59
+ spinner3.fail('dist/ directory not found');
60
+ console.error(chalk.red('\nPlease build the project first or remove --no-build flag.'));
61
+ process.exit(1);
62
+ }
63
+ const manifest = {
64
+ name: options.name || packageJson.name,
65
+ version: options.version || packageJson.version,
66
+ description: packageJson.description || '',
67
+ author: typeof packageJson.author === 'string'
68
+ ? packageJson.author
69
+ : packageJson.author?.name || '',
70
+ serverEntry: detectEntry(distDir, 'server'),
71
+ clientEntry: detectEntry(distDir, 'client'),
72
+ dependencies: extractDependencies(packageJson),
73
+ permissions: extractPermissions(packageJson)
74
+ };
75
+ // Write manifest.json to dist/
76
+ const manifestPath = path.join(distDir, 'manifest.json');
77
+ fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
78
+ spinner3.succeed('Manifest generated');
79
+ if (options.verbose) {
80
+ console.log(chalk.gray(' Server entry:'), manifest.serverEntry);
81
+ console.log(chalk.gray(' Client entry:'), manifest.clientEntry);
82
+ }
83
+ // Step 4: Validate structure
84
+ const spinner4 = ora('Validating plugin structure...').start();
85
+ const validationErrors = validatePluginStructure(distDir, manifest);
86
+ if (validationErrors.length > 0) {
87
+ spinner4.fail('Validation failed');
88
+ console.error(chalk.red('\nValidation errors:'));
89
+ validationErrors.forEach(err => {
90
+ console.error(chalk.red(` - ${err}`));
91
+ });
92
+ process.exit(1);
93
+ }
94
+ spinner4.succeed('Structure validated');
95
+ // Step 5: Pack to .mpk
96
+ const outputDir = path.resolve(options.output);
97
+ const outputFile = path.join(outputDir, `${manifest.name}-${manifest.version}.mpk`);
98
+ // Ensure output directory exists
99
+ if (!fs.existsSync(outputDir)) {
100
+ fs.mkdirSync(outputDir, { recursive: true });
101
+ }
102
+ const spinner5 = ora('Packing plugin...').start();
103
+ try {
104
+ await createZipArchive(distDir, outputFile);
105
+ spinner5.succeed('Plugin packed successfully');
106
+ }
107
+ catch (error) {
108
+ spinner5.fail('Pack failed');
109
+ console.error(chalk.red('\nPack error:'));
110
+ if (error instanceof Error) {
111
+ console.error(error.message);
112
+ }
113
+ process.exit(1);
114
+ }
115
+ // Step 6: Show result
116
+ const stats = fs.statSync(outputFile);
117
+ const fileSize = formatFileSize(stats.size);
118
+ console.log('\n' + chalk.green('✓ Plugin ready!'));
119
+ console.log(chalk.gray(' File:'), chalk.cyan(outputFile));
120
+ console.log(chalk.gray(' Size:'), chalk.cyan(fileSize));
121
+ console.log(chalk.gray(' Version:'), chalk.cyan(manifest.version));
122
+ console.log('\n' + chalk.blue('Next steps:'));
123
+ console.log(' 1. Test the plugin:');
124
+ console.log(chalk.gray(' cp ' + outputFile + ' /path/to/ling/packages/ssr/extensions/'));
125
+ console.log(' 2. Restart SSR server:');
126
+ console.log(chalk.gray(' cd packages/ssr && npx tsx src/demo/dev-server-with-pkg.tsx'));
127
+ console.log(' 3. Validate the plugin:');
128
+ console.log(chalk.gray(' npx @linyjs/cli validate ' + outputFile));
129
+ }
130
+ /**
131
+ * Detect entry file in dist directory
132
+ */
133
+ function detectEntry(distDir, type) {
134
+ const entryPath = path.join(distDir, type, 'index.js');
135
+ if (fs.existsSync(entryPath)) {
136
+ return `${type}/index.js`;
137
+ }
138
+ // Try other common patterns
139
+ const alternatives = [
140
+ `${type}.js`,
141
+ `${type}/index.ts`,
142
+ `index.${type}.js`
143
+ ];
144
+ for (const alt of alternatives) {
145
+ if (fs.existsSync(path.join(distDir, alt))) {
146
+ return alt;
147
+ }
148
+ }
149
+ throw new Error(`Cannot find ${type} entry file in dist/`);
150
+ }
151
+ /**
152
+ * Extract dependencies from package.json
153
+ */
154
+ function extractDependencies(packageJson) {
155
+ const deps = [];
156
+ // Check dependencies
157
+ if (packageJson.dependencies) {
158
+ Object.keys(packageJson.dependencies).forEach(dep => {
159
+ if (dep.startsWith('@linyjs/') || dep.startsWith('@ling/')) {
160
+ deps.push(`${dep}@${packageJson.dependencies[dep]}`);
161
+ }
162
+ });
163
+ }
164
+ return deps;
165
+ }
166
+ /**
167
+ * Extract permissions from package.json keywords or custom field
168
+ */
169
+ function extractPermissions(packageJson) {
170
+ // Check for custom permissions field
171
+ if (packageJson.ling?.permissions) {
172
+ return packageJson.ling.permissions;
173
+ }
174
+ // Or extract from keywords
175
+ if (packageJson.keywords) {
176
+ return packageJson.keywords
177
+ .filter((k) => k.startsWith('permission:'))
178
+ .map((k) => k.replace('permission:', ''));
179
+ }
180
+ return [];
181
+ }
182
+ /**
183
+ * Validate plugin structure
184
+ */
185
+ function validatePluginStructure(distDir, manifest) {
186
+ const errors = [];
187
+ // Check manifest.json
188
+ if (!fs.existsSync(path.join(distDir, 'manifest.json'))) {
189
+ errors.push('manifest.json is missing');
190
+ }
191
+ // Check server entry
192
+ if (manifest.serverEntry) {
193
+ const serverPath = path.join(distDir, manifest.serverEntry);
194
+ if (!fs.existsSync(serverPath)) {
195
+ errors.push(`Server entry not found: ${manifest.serverEntry}`);
196
+ }
197
+ }
198
+ // Check client entry
199
+ if (manifest.clientEntry) {
200
+ const clientPath = path.join(distDir, manifest.clientEntry);
201
+ if (!fs.existsSync(clientPath)) {
202
+ errors.push(`Client entry not found: ${manifest.clientEntry}`);
203
+ }
204
+ }
205
+ // Check for required fields
206
+ if (!manifest.name) {
207
+ errors.push('Plugin name is required');
208
+ }
209
+ if (!manifest.version) {
210
+ errors.push('Plugin version is required');
211
+ }
212
+ return errors;
213
+ }
214
+ /**
215
+ * Create ZIP archive
216
+ */
217
+ function createZipArchive(sourceDir, outputPath) {
218
+ return new Promise((resolve, reject) => {
219
+ const output = fs.createWriteStream(outputPath);
220
+ const archive = archiver('zip', {
221
+ zlib: { level: 9 } // Maximum compression
222
+ });
223
+ output.on('close', () => {
224
+ resolve();
225
+ });
226
+ archive.on('error', (err) => {
227
+ reject(err);
228
+ });
229
+ archive.pipe(output);
230
+ // Add all files from dist directory
231
+ archive.directory(sourceDir, false, (entry) => {
232
+ // Exclude unnecessary files
233
+ if (entry.name.includes('node_modules') ||
234
+ entry.name.includes('.git') ||
235
+ entry.name.endsWith('.test.js') ||
236
+ entry.name.endsWith('.spec.js')) {
237
+ return false;
238
+ }
239
+ return entry;
240
+ });
241
+ archive.finalize();
242
+ });
243
+ }
244
+ /**
245
+ * Format file size
246
+ */
247
+ function formatFileSize(bytes) {
248
+ const units = ['B', 'KB', 'MB', 'GB'];
249
+ let size = bytes;
250
+ let unitIndex = 0;
251
+ while (size >= 1024 && unitIndex < units.length - 1) {
252
+ size /= 1024;
253
+ unitIndex++;
254
+ }
255
+ return `${size.toFixed(2)} ${units[unitIndex]}`;
256
+ }
257
+ //# sourceMappingURL=pack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack.js","sourceRoot":"","sources":["../../src/commands/pack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @linyjs/cli - Ling 框架命令行工具
4
+ *
5
+ * 提供插件打包、开发、发布等实用功能
6
+ *
7
+ * 使用 Cleye 作为 CLI 框架
8
+ * - 零配置 TypeScript
9
+ * - 自动类型推断
10
+ * - 简洁的函数式 API
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG"}
package/dist/index.js ADDED
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @linyjs/cli - Ling 框架命令行工具
4
+ *
5
+ * 提供插件打包、开发、发布等实用功能
6
+ *
7
+ * 使用 Cleye 作为 CLI 框架
8
+ * - 零配置 TypeScript
9
+ * - 自动类型推断
10
+ * - 简洁的函数式 API
11
+ */
12
+ import { cli } from 'cleye';
13
+ import { createRequire } from 'module';
14
+ const require = createRequire(import.meta.url);
15
+ const packageJson = require('../package.json');
16
+ // Main CLI with subcommands
17
+ cli({
18
+ name: '@linyjs/cli',
19
+ version: packageJson.version,
20
+ }, async (argv) => {
21
+ // Get the command from argv._
22
+ const command = argv._[0];
23
+ switch (command) {
24
+ case 'pack':
25
+ const { packPlugin } = await import('./commands/pack.js');
26
+ await packPlugin({
27
+ output: argv.flags.output || '.',
28
+ name: argv.flags.name,
29
+ version: argv.flags.version,
30
+ build: argv.flags.build !== false,
31
+ manifest: argv.flags.manifest,
32
+ verbose: argv.flags.verbose || false
33
+ });
34
+ break;
35
+ case 'dev':
36
+ const { devPlugin } = await import('./commands/dev.js');
37
+ await devPlugin({
38
+ target: argv.flags.target,
39
+ verbose: argv.flags.verbose || false
40
+ });
41
+ break;
42
+ case 'init':
43
+ const { initPlugin } = await import('./commands/init.js');
44
+ await initPlugin({
45
+ name: argv._[1],
46
+ verbose: argv.flags.verbose || false
47
+ });
48
+ break;
49
+ default:
50
+ // Show help if no command or unknown command
51
+ console.log(`
52
+ 📦 @linyjs/cli v${packageJson.version}
53
+
54
+ Usage:
55
+ npx @linyjs/cli <command> [options]
56
+
57
+ Commands:
58
+ pack Pack a plugin project into .mpk file
59
+ dev Quick development workflow (pack + install + register)
60
+ init Create a new plugin project from template
61
+
62
+ Examples:
63
+ npx @linyjs/cli pack # Pack plugin
64
+ npx @linyjs/cli pack -o ./releases # Specify output directory
65
+ npx @linyjs/cli dev # Dev mode (pack + install)
66
+ npx @linyjs/cli dev --target /path # Specify extensions directory
67
+ npx @linyjs/cli init my-plugin # Create new plugin project
68
+
69
+ Run 'npx @linyjs/cli <command> --help' for more information.
70
+ `.trim());
71
+ break;
72
+ }
73
+ });
74
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,4BAA4B;AAC5B,GAAG,CACD;IACE,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,WAAW,CAAC,OAAO;CAC7B,EACD,KAAK,EAAE,IAAS,EAAE,EAAE;IAClB,8BAA8B;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1B,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC1D,MAAM,UAAU,CAAC;gBACf,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG;gBAChC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBACrB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK;gBACjC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;gBAC7B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK;aACrC,CAAC,CAAC;YACH,MAAM;QAER,KAAK,KAAK;YACR,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACxD,MAAM,SAAS,CAAC;gBACd,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;gBACzB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK;aACrC,CAAC,CAAC;YACH,MAAM;QAER,KAAK,MAAM;YACT,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC1D,MAAM,UAAU,CAAC;gBACf,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACf,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK;aACrC,CAAC,CAAC;YACH,MAAM;QAER;YACE,6CAA6C;YAC7C,OAAO,CAAC,GAAG,CAAC;kBACF,WAAW,CAAC,OAAO;;;;;;;;;;;;;;;;;;SAkB5B,CAAC,IAAI,EAAE,CAAC,CAAC;YACV,MAAM;IACV,CAAC;AACH,CAAC,CACF,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Smart builder for plugin projects
3
+ *
4
+ * Design Philosophy:
5
+ * - Zero configuration required
6
+ * - CLI handles all build details automatically
7
+ * - Users just write TypeScript/TSX code
8
+ * - Sensible defaults and optimizations out of the box
9
+ */
10
+ export interface BuildOptions {
11
+ projectRoot: string;
12
+ verbose: boolean;
13
+ minify?: boolean;
14
+ external?: string[];
15
+ }
16
+ export interface BuildResult {
17
+ success: boolean;
18
+ outputDir: string;
19
+ files: string[];
20
+ size: number;
21
+ duration: number;
22
+ }
23
+ /**
24
+ * Detect build system and execute build
25
+ */
26
+ export declare function buildProject(options: BuildOptions): Promise<BuildResult>;
27
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/utils/builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAmF9E"}