@camera.ui/cli 0.0.48 → 0.0.50

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 (54) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +10 -1
  3. package/dist/commands/artifacts.d.ts +9 -0
  4. package/dist/commands/artifacts.js +107 -0
  5. package/dist/commands/artifacts.js.map +1 -0
  6. package/dist/commands/bundle.d.ts +19 -1
  7. package/dist/commands/bundle.js +368 -56
  8. package/dist/commands/bundle.js.map +1 -1
  9. package/dist/commands/create.js +140 -93
  10. package/dist/commands/create.js.map +1 -1
  11. package/dist/commands/publish.js +77 -36
  12. package/dist/commands/publish.js.map +1 -1
  13. package/dist/index.js +11 -4
  14. package/dist/index.js.map +1 -1
  15. package/dist/types.d.ts +21 -5
  16. package/dist/utils/banners.d.ts +3 -1
  17. package/dist/utils/banners.js +15 -11
  18. package/dist/utils/banners.js.map +1 -1
  19. package/dist/utils/logger.d.ts +12 -24
  20. package/dist/utils/logger.js +57 -83
  21. package/dist/utils/logger.js.map +1 -1
  22. package/dist/utils/parser.d.ts +11 -4
  23. package/dist/utils/parser.js +27 -186
  24. package/dist/utils/parser.js.map +1 -1
  25. package/dist/utils/templates.d.ts +13 -1
  26. package/dist/utils/templates.js +148 -68
  27. package/dist/utils/templates.js.map +1 -1
  28. package/dist/utils/utils.js +13 -11
  29. package/dist/utils/utils.js.map +1 -1
  30. package/dist/utils/versions.js +1 -2
  31. package/dist/utils/versions.js.map +1 -1
  32. package/package.json +29 -43
  33. package/templates/base/README.md +2 -2
  34. package/templates/base/SECURITY.md +1 -1
  35. package/templates/base/package.json +2 -3
  36. package/templates/base/updates.config.js +1 -1
  37. package/templates/go/go.mod +5 -0
  38. package/templates/go/postinstall.js +35 -0
  39. package/templates/go/src/main.go +51 -0
  40. package/templates/python/requirements.txt +1 -1
  41. package/templates/python/ruff.toml +2 -2
  42. package/templates/python/src/main.py +299 -28
  43. package/templates/typescript/contract.ts +36 -0
  44. package/templates/typescript/eslint.config.js +13 -3
  45. package/templates/typescript/package.eslint.json +2 -2
  46. package/templates/typescript/package.json +4 -4
  47. package/templates/typescript/src/index.ts +96 -27
  48. package/templates/typescript/src/sensor.ts +207 -0
  49. package/CHANGELOG.md +0 -8
  50. package/CONTRIBUTING.md +0 -1
  51. package/scripts/chmod.js +0 -17
  52. package/templates/base/cameraui.config.js +0 -10
  53. package/templates/base/eslint.config.js +0 -64
  54. package/templates/base/src/index.js +0 -41
@@ -1,17 +1,21 @@
1
- import gradient from 'gradient-string';
2
- const defaultBanner = 'camera.ui - CLI to create and manage camera.ui plugins';
3
- const gradientBanner = gradient([
4
- { color: '#df2a4c', pos: 0 },
5
- { color: '#df2a4c', pos: 0.1 },
6
- { color: '#e890a4', pos: 1 },
7
- ])(defaultBanner);
1
+ import { cancel, intro, outro } from '@clack/prompts';
2
+ import pc from 'picocolors';
3
+ const defaultBanner = 'camera.ui - Plugin Development CLI';
4
+ const gradientBanner =
5
+ // eslint-disable-next-line @stylistic/max-len
6
+ '\x1B[38;2;223;42;76mc\x1B[39m\x1B[38;2;223;42;76ma\x1B[39m\x1B[38;2;223;42;76mm\x1B[39m\x1B[38;2;223;42;76me\x1B[39m\x1B[38;2;223;48;82mr\x1B[39m\x1B[38;2;224;54;87ma\x1B[39m\x1B[38;2;224;59;92m.\x1B[39m\x1B[38;2;225;65;97mu\x1B[39m\x1B[38;2;225;71;102mi\x1B[39m \x1B[38;2;226;77;107m-\x1B[39m \x1B[38;2;226;82;112mP\x1B[39m\x1B[38;2;227;88;117ml\x1B[39m\x1B[38;2;227;94;122mu\x1B[39m\x1B[38;2;228;100;127mg\x1B[39m\x1B[38;2;228;105;132mi\x1B[39m\x1B[38;2;229;111;137mn\x1B[39m \x1B[38;2;229;117;142mD\x1B[39m\x1B[38;2;230;123;147me\x1B[39m\x1B[38;2;230;128;152mv\x1B[39m\x1B[38;2;231;134;157me\x1B[39m\x1B[38;2;231;140;162ml\x1B[39m\x1B[38;2;232;144;164mo\x1B[39m\x1B[38;2;232;144;164mp\x1B[39m\x1B[38;2;232;144;164mm\x1B[39m\x1B[38;2;232;144;164me\x1B[39m\x1B[38;2;232;144;164mn\x1B[39m\x1B[38;2;232;144;164mt\x1B[39m \x1B[38;2;232;144;164mC\x1B[39m\x1B[38;2;232;144;164mL\x1B[39m\x1B[38;2;232;144;164mI\x1B[39m';
8
7
  function useGradient() {
9
8
  return process.stdout.isTTY && process.stdout.getColorDepth() > 8;
10
9
  }
11
- export function initBanner() {
12
- console.log();
13
- console.log(useGradient() ? gradientBanner : defaultBanner);
14
- console.log();
10
+ export function showIntro() {
11
+ const banner = useGradient() ? gradientBanner : defaultBanner;
12
+ intro(banner);
13
+ }
14
+ export function showOutro(message) {
15
+ outro(message);
16
+ }
17
+ export function showCancel(message) {
18
+ cancel(pc.red('✖') + (message ? ` ${message}` : ' Operation cancelled'));
15
19
  }
16
20
  export function getBanner() {
17
21
  return useGradient() ? gradientBanner : defaultBanner;
@@ -1 +1 @@
1
- {"version":3,"file":"banners.js","sourceRoot":"","sources":["../../src/utils/banners.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAEvC,MAAM,aAAa,GAAG,wDAAwD,CAAC;AAE/E,MAAM,cAAc,GAAG,QAAQ,CAAC;IAC9B,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;IAC5B,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE;IAC9B,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;CAC7B,CAAC,CAAC,aAAa,CAAC,CAAC;AAElB,SAAS,WAAW;IAClB,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,WAAW,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"banners.js","sourceRoot":"","sources":["../../src/utils/banners.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,aAAa,GAAG,oCAAoC,CAAC;AAE3D,MAAM,cAAc;AAClB,8CAA8C;AAC9C,m5BAAm5B,CAAC;AAEt5B,SAAS,WAAW;IAClB,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC;IAC9D,KAAK,CAAC,MAAM,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,KAAK,CAAC,OAAO,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,WAAW,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC;AACxD,CAAC"}
@@ -1,24 +1,12 @@
1
- declare class Logger {
2
- private spinner;
3
- private isSpinning;
4
- info(message: string): void;
5
- success(message: string): void;
6
- warn(message: string): void;
7
- error(message: string): void;
8
- debug(message: string): void;
9
- startBuild(): void;
10
- configLoaded(): void;
11
- startBundle(): void;
12
- bundleCreated(): void;
13
- startWrite(): void;
14
- writeSuccess(): void;
15
- fileOperation(type: 'file' | 'dir', path: string, success: boolean): void;
16
- missingFile(file: string): void;
17
- outputFiles(files: string[]): void;
18
- buildSuccess(outDir: string): void;
19
- buildError(error: Error): void;
20
- private stopSpinner;
21
- private startSpinner;
22
- }
23
- export declare const logger: Logger;
24
- export {};
1
+ export declare function info(message: string): void;
2
+ export declare function success(message: string): void;
3
+ export declare function warn(message: string): void;
4
+ export declare function error(message: string): void;
5
+ export declare function debug(message: string): void;
6
+ export declare function step(current: number, total: number, message: string): void;
7
+ export declare function fileOperation(type: 'file' | 'dir', path: string, copied: boolean): void;
8
+ export declare function missingFile(file: string): void;
9
+ export declare function outputFiles(files: string[]): void;
10
+ export declare function buildSuccess(outDir: string, durationMs?: number): void;
11
+ export declare function buildError(err: Error | unknown): void;
12
+ export declare function bundleSize(sizeMb: number): void;
@@ -1,91 +1,65 @@
1
- import chalk from 'chalk';
2
- import ora from 'ora';
3
- class Logger {
4
- spinner = ora();
5
- isSpinning = false;
6
- info(message) {
7
- this.stopSpinner();
8
- ora().info(chalk.blue(message));
9
- }
10
- success(message) {
11
- this.stopSpinner();
12
- ora().succeed(chalk.green(message));
13
- }
14
- warn(message) {
15
- this.stopSpinner();
16
- ora().warn(chalk.yellow(message));
17
- }
18
- error(message) {
19
- this.stopSpinner();
20
- ora().fail(chalk.red(message));
21
- }
22
- debug(message) {
23
- this.stopSpinner();
24
- console.log(chalk.gray(message));
25
- }
26
- startBuild() {
27
- this.info('Starting build process...');
28
- }
29
- configLoaded() {
30
- this.stopSpinner();
31
- }
32
- startBundle() {
33
- this.startSpinner('Creating bundle...');
34
- }
35
- bundleCreated() {
36
- this.success('Bundle created successfully');
37
- }
38
- startWrite() {
39
- this.startSpinner('Writing files...');
40
- }
41
- writeSuccess() {
42
- this.success('Files written successfully');
43
- }
44
- fileOperation(type, path, success) {
45
- if (success) {
46
- const icon = type === 'file' ? '📄' : '📁';
47
- console.log(` ${icon} ${chalk.dim(`Copied ${type}: ${path}`)}`);
48
- }
49
- else {
50
- console.log(` ${chalk.red('❌')} ${chalk.dim(`Failed to copy ${path}`)}`);
51
- }
52
- }
53
- missingFile(file) {
54
- console.log(` ${chalk.yellow('⚠️')} ${chalk.dim(`Missing file: ${file}`)}`);
55
- }
56
- outputFiles(files) {
57
- console.log(chalk.dim('\nGenerated files:'));
58
- files.forEach((file) => {
59
- console.log(` ${chalk.cyan('•')} ${file}`);
60
- });
1
+ import pc from 'picocolors';
2
+ export function info(message) {
3
+ console.log(pc.blue('ℹ') + ' ' + message);
4
+ }
5
+ export function success(message) {
6
+ console.log(pc.green('✔') + ' ' + message);
7
+ }
8
+ export function warn(message) {
9
+ console.log(pc.yellow('⚠') + ' ' + message);
10
+ }
11
+ export function error(message) {
12
+ console.log(pc.red('✖') + ' ' + message);
13
+ }
14
+ export function debug(message) {
15
+ console.log(pc.dim(message));
16
+ }
17
+ export function step(current, total, message) {
18
+ const prefix = pc.dim(`[${current}/${total}]`);
19
+ console.log(`${prefix} ${message}`);
20
+ }
21
+ export function fileOperation(type, path, copied) {
22
+ if (copied) {
23
+ const icon = type === 'file' ? '📄' : '📁';
24
+ console.log(` ${icon} ${pc.dim(`Copied ${type}: ${path}`)}`);
61
25
  }
62
- buildSuccess(outDir) {
63
- console.log('\n' + chalk.green('✨ Build completed successfully!'));
64
- console.log(chalk.dim(`Output directory: ${outDir}\n`));
26
+ else {
27
+ console.log(` ${pc.red('')} ${pc.dim(`Failed to copy ${path}`)}`);
65
28
  }
66
- buildError(error) {
67
- this.error('Build failed');
68
- console.error(chalk.dim('\nError details:'));
69
- console.error(chalk.red(error.message));
70
- if ('frame' in error) {
71
- console.error('\n' + chalk.yellow('Error location:'));
72
- console.error(chalk.dim(error.frame));
73
- }
29
+ }
30
+ export function missingFile(file) {
31
+ console.log(` ${pc.yellow('⚠')} ${pc.dim(`Missing file: ${file}`)}`);
32
+ }
33
+ export function outputFiles(files) {
34
+ console.log(pc.dim('\nGenerated files:'));
35
+ for (const file of files) {
36
+ console.log(` ${pc.cyan('•')} ${file}`);
74
37
  }
75
- stopSpinner() {
76
- if (this.isSpinning) {
77
- this.spinner.stop();
78
- this.isSpinning = false;
38
+ }
39
+ export function buildSuccess(outDir, durationMs) {
40
+ console.log();
41
+ console.log(pc.green('✨ Build completed successfully!'));
42
+ console.log(pc.dim(`Output directory: ${outDir}`));
43
+ if (durationMs !== undefined) {
44
+ console.log(pc.dim(`Duration: ${durationMs}ms`));
45
+ }
46
+ console.log();
47
+ }
48
+ export function buildError(err) {
49
+ error('Build failed');
50
+ console.error(pc.dim('\nError details:'));
51
+ if (err instanceof Error) {
52
+ console.error(pc.red(err.message));
53
+ if ('frame' in err) {
54
+ console.error('\n' + pc.yellow('Error location:'));
55
+ console.error(pc.dim(err.frame));
79
56
  }
80
57
  }
81
- startSpinner(message) {
82
- this.stopSpinner();
83
- this.spinner = ora({
84
- text: message,
85
- color: 'blue',
86
- }).start();
87
- this.isSpinning = true;
58
+ else {
59
+ console.error(pc.red(String(err)));
88
60
  }
89
61
  }
90
- export const logger = new Logger();
62
+ export function bundleSize(sizeMb) {
63
+ console.log(pc.dim(`Bundle size: ${sizeMb.toFixed(2)} MB`));
64
+ }
91
65
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,13 @@
1
- import type { Configuration } from 'webpack';
2
1
  import type { CameraUiBuildOptions } from '../types.js';
3
- export declare function parseConfig(): Promise<{
4
- webpackConfig: Configuration;
2
+ type ProjectType = 'javascript-cjs' | 'javascript-esm' | 'typescript-cjs' | 'typescript-esm';
3
+ export declare function detectJsProjectType(rootDir: string): Promise<ProjectType>;
4
+ export declare function loadConfig(): Promise<CameraUiBuildOptions>;
5
+ export interface ParsedConfig {
5
6
  userConfig: CameraUiBuildOptions;
6
- }>;
7
+ projectType: ProjectType;
8
+ targetRootDir: string;
9
+ entryPoint: string;
10
+ outputFile: string;
11
+ }
12
+ export declare function parseConfig(): Promise<ParsedConfig>;
13
+ export {};
@@ -2,11 +2,18 @@ import { pathExists } from 'fs-extra/esm';
2
2
  import { readFile, rm } from 'node:fs/promises';
3
3
  import { isAbsolute, resolve } from 'node:path';
4
4
  import * as tsImport from 'ts-import';
5
- import webpack from 'webpack';
6
- import { logger } from './logger.js';
7
- import { moduleResolver } from './moduleResolve.js';
5
+ import { error } from './logger.js';
8
6
  import { detectLanguage } from './utils.js';
9
- async function detectJsProjectType(rootDir) {
7
+ async function fileExists(path) {
8
+ try {
9
+ await readFile(path);
10
+ return true;
11
+ }
12
+ catch {
13
+ return false;
14
+ }
15
+ }
16
+ export async function detectJsProjectType(rootDir) {
10
17
  try {
11
18
  const pluginLanguage = await detectLanguage(rootDir);
12
19
  if (pluginLanguage === 'python') {
@@ -21,16 +28,7 @@ async function detectJsProjectType(rootDir) {
21
28
  return 'javascript-cjs';
22
29
  }
23
30
  }
24
- async function fileExists(path) {
25
- try {
26
- await readFile(path);
27
- return true;
28
- }
29
- catch {
30
- return false;
31
- }
32
- }
33
- async function loadConfig() {
31
+ export async function loadConfig() {
34
32
  const tsConfigPath = resolve(process.cwd(), 'cameraui.config.ts');
35
33
  const jsConfigPath = resolve(process.cwd(), 'cameraui.config.js');
36
34
  try {
@@ -46,192 +44,35 @@ async function loadConfig() {
46
44
  }
47
45
  return {};
48
46
  }
49
- catch (error) {
50
- logger.buildError(error);
47
+ catch (err) {
48
+ error(`Failed to load config: ${err instanceof Error ? err.message : String(err)}`);
51
49
  return {};
52
50
  }
53
51
  }
54
- async function getModuleRules(projectType, targetRootDir) {
55
- const rules = [];
56
- const isTypeScript = projectType.startsWith('typescript');
57
- if (isTypeScript) {
58
- rules.push({
59
- test: /\.ts$/,
60
- exclude: /node_modules/,
61
- use: [
62
- {
63
- loader: await moduleResolver.resolveModule('ts-loader'),
64
- options: {
65
- configFile: resolve(targetRootDir, 'tsconfig.json'),
66
- transpileOnly: true,
67
- compilerOptions: {
68
- module: 'esnext',
69
- moduleResolution: 'node',
70
- },
71
- },
72
- },
73
- {
74
- loader: await moduleResolver.resolveModule('babel-loader'),
75
- options: {
76
- presets: [
77
- await moduleResolver.resolveBabelModule('@babel/preset-env', {
78
- config: {
79
- targets: { node: '22' },
80
- modules: false,
81
- },
82
- }),
83
- await moduleResolver.resolveBabelModule('@babel/preset-typescript'),
84
- ],
85
- plugins: [
86
- await moduleResolver.resolveBabelModule('@babel/plugin-transform-typescript', {
87
- config: { allowDeclareFields: true },
88
- }),
89
- ],
90
- },
91
- },
92
- ],
93
- });
94
- }
95
- rules.push({
96
- test: /\.js$/,
97
- exclude: /node_modules/,
98
- type: 'javascript/esm',
99
- use: {
100
- loader: await moduleResolver.resolveModule('babel-loader'),
101
- options: {
102
- presets: [
103
- await moduleResolver.resolveBabelModule('@babel/preset-env', {
104
- config: {
105
- targets: { node: '22' },
106
- modules: false,
107
- },
108
- }),
109
- ],
110
- },
111
- },
112
- });
113
- rules.push({
114
- test: /\.node$/,
115
- loader: await moduleResolver.resolveModule('node-loader'),
116
- });
117
- rules.push({
118
- test: /\.json$/,
119
- type: 'json',
120
- });
121
- return rules;
122
- }
123
52
  export async function parseConfig() {
124
53
  const userConfig = await loadConfig();
125
54
  const cliRootDir = process.cwd();
126
55
  const targetRootDir = userConfig.rootDir ? (isAbsolute(userConfig.rootDir) ? userConfig.rootDir : resolve(cliRootDir, userConfig.rootDir)) : cliRootDir;
127
56
  const projectType = await detectJsProjectType(targetRootDir);
128
57
  const outputDir = resolve(targetRootDir, 'bundle', 'dist');
58
+ const isTypeScript = projectType.startsWith('typescript');
129
59
  // Determine entry point
130
- let entry;
60
+ let entryPoint;
131
61
  if (typeof userConfig.input === 'string') {
132
- entry = resolve(targetRootDir, userConfig.input);
62
+ entryPoint = resolve(targetRootDir, userConfig.input);
133
63
  }
134
- else {
135
- entry = resolve(targetRootDir, projectType.startsWith('typescript') ? 'src/index.ts' : 'src/index.js');
64
+ else if (Array.isArray(userConfig.input) && userConfig.input.length > 0) {
65
+ entryPoint = resolve(targetRootDir, userConfig.input[0]);
136
66
  }
137
- // Configure plugins
138
- const plugins = [
139
- new webpack.ProgressPlugin(),
140
- new webpack.optimize.LimitChunkCountPlugin({
141
- maxChunks: 1,
142
- }),
143
- new webpack.DefinePlugin({
144
- 'process.env.NODE_ENV': JSON.stringify(userConfig.mode === 'development' ? 'development' : 'production'),
145
- }),
146
- ];
147
- if (userConfig.mode === 'development' && process.env.ANALYZE) {
148
- const BundleAnalyzerPlugin = (await import('webpack-bundle-analyzer')).BundleAnalyzerPlugin;
149
- plugins.push(new BundleAnalyzerPlugin({
150
- generateStatsFile: true,
151
- }));
67
+ else {
68
+ entryPoint = resolve(targetRootDir, isTypeScript ? 'src/index.ts' : 'src/index.js');
152
69
  }
153
- // Get module rules
154
- const moduleRules = await getModuleRules(projectType, targetRootDir);
155
- // Get TerserPlugin instance
156
- const terserPlugin = new (await import('terser-webpack-plugin')).default({
157
- terserOptions: {
158
- compress: {
159
- typeofs: false,
160
- },
161
- module: true,
162
- keep_classnames: true,
163
- keep_fnames: true,
164
- },
165
- });
166
- const webpackConfig = {
167
- mode: userConfig.mode === 'development' ? 'development' : 'production',
168
- target: 'node',
169
- entry,
170
- output: {
171
- path: outputDir,
172
- filename: 'index.js',
173
- libraryTarget: 'commonjs2',
174
- assetModuleFilename: '[path][name][ext]',
175
- },
176
- resolve: {
177
- extensions: ['.ts', '.js', '.mjs', '.json'],
178
- symlinks: true,
179
- mainFields: ['node', 'module', 'main'],
180
- extensionAlias: {
181
- '.js': projectType.startsWith('typescript') ? ['.ts', '.js'] : ['.js'],
182
- '.mjs': projectType.startsWith('typescript') ? ['.mts', '.mjs'] : ['.mjs'],
183
- },
184
- },
185
- resolveLoader: {
186
- modules: moduleResolver.getWebpackResolveConfig({
187
- includeGlobalModules: false,
188
- includeCliModules: false,
189
- }).resolve.modules,
190
- },
191
- module: {
192
- rules: moduleRules,
193
- },
194
- experiments: {
195
- topLevelAwait: true,
196
- },
197
- externals: [
198
- ({ request }, callback) => {
199
- if (!request) {
200
- return callback();
201
- }
202
- if (request.endsWith('.node')) {
203
- return callback(null, `commonjs ${request}`);
204
- }
205
- // Check user-defined externals if they exist
206
- if (userConfig.external && userConfig.external?.length > 0) {
207
- const isExternal = userConfig.external.some((ext) => {
208
- if (typeof ext === 'string') {
209
- return request === ext || request.startsWith(`${ext}/`);
210
- }
211
- return ext.test(request);
212
- });
213
- if (isExternal) {
214
- return callback(null, `commonjs ${request}`);
215
- }
216
- }
217
- callback();
218
- },
219
- ],
220
- devtool: userConfig.mode === 'development' ? 'source-map' : false,
221
- optimization: {
222
- minimize: userConfig.mode !== 'development',
223
- minimizer: [terserPlugin],
224
- },
225
- plugins,
226
- stats: {
227
- colors: true,
228
- errorDetails: true,
229
- },
230
- node: {
231
- __dirname: false,
232
- __filename: false,
233
- },
70
+ return {
71
+ userConfig,
72
+ projectType,
73
+ targetRootDir,
74
+ entryPoint,
75
+ outputFile: resolve(outputDir, 'index.js'),
234
76
  };
235
- return { webpackConfig, userConfig };
236
77
  }
237
78
  //# sourceMappingURL=parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/utils/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/utils/parser.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,18 @@ export declare function createBaseFiles(targetDir: string, projectName: string,
3
3
  export declare function createPackageJson(projectName: string, options: CreateOptions): Promise<any>;
4
4
  export declare function createPythonRequirements(targetDir: string): Promise<void>;
5
5
  export declare function createMyPyConfig(targetDir: string): Promise<void>;
6
- export declare function createTsConfig(targetDir: string): Promise<void>;
6
+ export declare function createTsConfig(targetDir: string, options: CreateOptions): Promise<void>;
7
7
  export declare function createCodeQualityConfig(targetDir: string, options: CreateOptions): Promise<void>;
8
+ /**
9
+ * Create contract.ts at project root (always TypeScript, even for Python plugins)
10
+ * This file is bundled to contract.js during the bundle process
11
+ */
12
+ export declare function createContractFile(targetDir: string, options: CreateOptions): Promise<void>;
13
+ /**
14
+ * Create source files in src/ directory (no contract files here)
15
+ */
8
16
  export declare function createSourceFiles(targetDir: string, options: CreateOptions): Promise<void>;
17
+ /**
18
+ * Create Go source files for a new Go plugin project
19
+ */
20
+ export declare function createGoFiles(targetDir: string, projectName: string): Promise<void>;