@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
@@ -47,30 +47,25 @@ async function createVscodeSettings(targetDir, options) {
47
47
  export async function createBaseFiles(targetDir, projectName, options) {
48
48
  const baseFiles = ['README.md', 'LICENSE.md', 'CONTRIBUTING.md', 'CHANGELOG.md', 'SECURITY.md', 'updates.config.js'];
49
49
  const baseDotFiles = ['gitignore', 'npmignore', 'editorconfig'];
50
- const javascriptFiles = ['cameraui.config.js'];
51
- const typescriptFiles = ['cameraui.config.ts'];
52
- const pythonFiles = ['cameraui.config.js', 'cupdate.config.txt'];
50
+ // cameraui.config.ts is always TypeScript (even for Python plugins)
51
+ const configFiles = ['cameraui.config.ts'];
52
+ const pythonFiles = ['cupdate.config.txt'];
53
53
  for (const file of baseFiles) {
54
54
  await copyPath(__dirname, `../../templates/base/${file}`, targetDir, file);
55
55
  }
56
56
  for (const file of baseDotFiles) {
57
57
  await copyPath(__dirname, `../../templates/base/${file}`, targetDir, `.${file}`);
58
58
  }
59
- if (options.language === 'javascript') {
60
- for (const file of javascriptFiles) {
61
- await copyPath(__dirname, `../../templates/base/${file}`, targetDir, file);
62
- }
59
+ // Always copy TypeScript config file
60
+ for (const file of configFiles) {
61
+ await copyPath(__dirname, `../../templates/typescript/${file}`, targetDir, file);
63
62
  }
63
+ // Python-specific files
64
64
  if (options.language === 'python') {
65
65
  for (const file of pythonFiles) {
66
66
  await copyPath(__dirname, `../../templates/python/${file}`, targetDir, file);
67
67
  }
68
68
  }
69
- if (options.language === 'typescript') {
70
- for (const file of typescriptFiles) {
71
- await copyPath(__dirname, `../../templates/typescript/${file}`, targetDir, file);
72
- }
73
- }
74
69
  const readmePath = resolve(targetDir, 'README.md');
75
70
  const readmeContent = readFileSync(readmePath, 'utf-8').replace(/{{projectName}}/g, projectName);
76
71
  await writeFile(readmePath, readmeContent);
@@ -82,8 +77,8 @@ export async function createPackageJson(projectName, options) {
82
77
  // general
83
78
  pJson.displayName = options.displayName;
84
79
  pJson.name = projectName;
85
- const mainFile = options.language === 'python' ? 'main.py' : 'index.js';
86
- pJson.main = `./bundle/dist/${mainFile}`;
80
+ const mainFile = options.language === 'python' ? 'main.py' : options.language === 'go' ? 'main.go' : 'index.js';
81
+ pJson.main = options.language === 'go' ? './bundle/main.go' : `./bundle/dist/${mainFile}`;
87
82
  // scripts
88
83
  pJson.scripts = {
89
84
  bundle: 'cui bundle',
@@ -105,10 +100,25 @@ export async function createPackageJson(projectName, options) {
105
100
  pJson.scripts.update = pJson.scripts.update + ' && cupdate';
106
101
  pJson.scripts.build = 'mypy src';
107
102
  }
103
+ else if (options.language === 'go') {
104
+ pJson.scripts.build = 'go build -o /dev/null ./src/';
105
+ }
108
106
  if (options.quality) {
109
- pJson.scripts.format = options.language === 'python' ? 'ruff format' : 'prettier --write "src/" --ignore-unknown --no-error-on-unmatched-pattern';
110
- pJson.scripts.lint = options.language === 'python' ? 'ruff check' : 'eslint .';
111
- pJson.scripts['lint:fix'] = options.language === 'python' ? 'ruff check --fix' : 'eslint --fix .';
107
+ if (options.language === 'go') {
108
+ pJson.scripts.format = 'gofmt -w .';
109
+ pJson.scripts.lint = 'go vet ./...';
110
+ pJson.scripts['lint:fix'] = 'go vet ./...';
111
+ }
112
+ else if (options.language === 'python') {
113
+ pJson.scripts.format = 'ruff format';
114
+ pJson.scripts.lint = 'ruff check';
115
+ pJson.scripts['lint:fix'] = 'ruff check --fix';
116
+ }
117
+ else {
118
+ pJson.scripts.format = 'prettier --write "src/" --ignore-unknown --no-error-on-unmatched-pattern';
119
+ pJson.scripts.lint = 'eslint .';
120
+ pJson.scripts['lint:fix'] = 'eslint --fix .';
121
+ }
112
122
  }
113
123
  if (pJson.scripts.build) {
114
124
  pJson.scripts.bundle = 'npm run build && ' + pJson.scripts.bundle;
@@ -123,37 +133,28 @@ export async function createPackageJson(projectName, options) {
123
133
  pJson.scripts['bundle:dev'] = 'npm run format && ' + pJson.scripts['bundle:dev'];
124
134
  }
125
135
  pJson.scripts = sortScripts(pJson);
126
- // devDependencies
136
+ // devDependencies - always include TypeScript (needed for contract.ts)
137
+ const tsPJsonPath = resolve(join(__dirname, '../../templates/typescript/package.json'));
138
+ const tsPJson = JSON.parse(readFileSync(tsPJsonPath, 'utf-8'));
127
139
  pJson.devDependencies = {
128
140
  ...pJson.devDependencies,
129
141
  '@camera.ui/cli': `^${packageJson.version}`,
142
+ ...tsPJson,
130
143
  };
131
- if (options.language === 'typescript') {
132
- const tsPJsonPath = resolve(join(__dirname, '../../templates/typescript/package.json'));
133
- const tsPJson = JSON.parse(readFileSync(tsPJsonPath, 'utf-8'));
134
- pJson.devDependencies = {
135
- ...pJson.devDependencies,
136
- ...tsPJson,
137
- };
138
- }
139
- if (options.quality && options.language !== 'python') {
144
+ // Code quality tools (ESLint + Prettier for TypeScript only)
145
+ if (options.quality && options.language === 'typescript') {
140
146
  const formatterPJsonPath = resolve(join(__dirname, '../../templates/base/package.prettier.json'));
141
147
  const formatterPJson = JSON.parse(readFileSync(formatterPJsonPath, 'utf-8'));
142
148
  const baseLinterPjsonPath = resolve(join(__dirname, '../../templates/base/package.eslint.json'));
143
149
  const baseLinterPjson = JSON.parse(readFileSync(baseLinterPjsonPath, 'utf-8'));
150
+ const linterPJsonPath = resolve(join(__dirname, '../../templates/typescript/package.eslint.json'));
151
+ const linterPJson = JSON.parse(readFileSync(linterPJsonPath, 'utf-8'));
144
152
  pJson.devDependencies = {
145
153
  ...pJson.devDependencies,
146
154
  ...baseLinterPjson,
147
155
  ...formatterPJson,
156
+ ...linterPJson,
148
157
  };
149
- if (options.language === 'typescript') {
150
- const linterPJsonPath = resolve(join(__dirname, '../../templates/typescript/package.eslint.json'));
151
- const linterPJson = JSON.parse(readFileSync(linterPJsonPath, 'utf-8'));
152
- pJson.devDependencies = {
153
- ...pJson.devDependencies,
154
- ...linterPJson,
155
- };
156
- }
157
158
  }
158
159
  // engines
159
160
  const latestCameraUiVersion = await getLatestCameraUiVersion();
@@ -162,7 +163,8 @@ export async function createPackageJson(projectName, options) {
162
163
  pJson.engines.node = `>=${latestNodeVersion.version}`;
163
164
  // contract
164
165
  pJson['camera.ui'] = {
165
- extensions: options.pluginType,
166
+ provides: options.provides,
167
+ consumes: options.consumes,
166
168
  dependencies: [],
167
169
  pythonVersion: options.pythonVersion,
168
170
  };
@@ -177,49 +179,127 @@ export async function createPythonRequirements(targetDir) {
177
179
  export async function createMyPyConfig(targetDir) {
178
180
  await copyPath(__dirname, '../../templates/python/mypy.ini', targetDir, 'mypy.ini');
179
181
  }
180
- export async function createTsConfig(targetDir) {
181
- await copyPath(__dirname, '../../templates/typescript/tsconfig.json', targetDir, 'tsconfig.json');
182
+ export async function createTsConfig(targetDir, options) {
183
+ if (options.language === 'typescript') {
184
+ // Full TypeScript config for TS projects
185
+ await copyPath(__dirname, '../../templates/typescript/tsconfig.json', targetDir, 'tsconfig.json');
186
+ }
187
+ else {
188
+ // Minimal TypeScript config for Python projects (only needed for contract.ts)
189
+ const minimalTsConfig = {
190
+ compilerOptions: {
191
+ target: 'ES2022',
192
+ module: 'NodeNext',
193
+ moduleResolution: 'NodeNext',
194
+ strict: true,
195
+ esModuleInterop: true,
196
+ skipLibCheck: true,
197
+ declaration: false,
198
+ outDir: './dist',
199
+ },
200
+ include: ['contract.ts'],
201
+ exclude: ['node_modules', 'bundle', 'dist'],
202
+ };
203
+ await writeFile(resolve(targetDir, 'tsconfig.json'), JSON.stringify(minimalTsConfig, null, 2));
204
+ }
182
205
  }
183
206
  export async function createCodeQualityConfig(targetDir, options) {
184
- const baseFiles = [];
185
- const baseDotFiles = [];
186
- const pythonFiles = [];
187
- const typescriptFiles = [];
188
207
  if (options.language === 'python') {
189
- pythonFiles.push('ruff.toml');
208
+ // Python: ruff for linting/formatting
209
+ await copyPath(__dirname, '../../templates/python/ruff.toml', targetDir, 'ruff.toml');
190
210
  }
191
211
  else {
192
- baseDotFiles.push('prettierrc.json');
193
- baseDotFiles.push('prettierignore');
194
- if (options.language === 'javascript') {
195
- baseFiles.push('eslint.config.js');
196
- }
197
- else if (options.language === 'typescript') {
198
- typescriptFiles.push('eslint.config.js');
199
- }
200
- }
201
- for (const file of baseFiles) {
202
- await copyPath(__dirname, `../../templates/base/${file}`, targetDir, file);
203
- }
204
- for (const file of baseDotFiles) {
205
- await copyPath(__dirname, `../../templates/base/${file}`, targetDir, `.${file}`);
206
- }
207
- for (const file of pythonFiles) {
208
- await copyPath(__dirname, `../../templates/python/${file}`, targetDir, file);
209
- }
210
- for (const file of typescriptFiles) {
211
- await copyPath(__dirname, `../../templates/typescript/${file}`, targetDir, file);
212
+ // TypeScript: ESLint + Prettier
213
+ await copyPath(__dirname, '../../templates/base/prettierrc.json', targetDir, '.prettierrc.json');
214
+ await copyPath(__dirname, '../../templates/base/prettierignore', targetDir, '.prettierignore');
215
+ await copyPath(__dirname, '../../templates/typescript/eslint.config.js', targetDir, 'eslint.config.js');
212
216
  }
213
217
  }
218
+ function formatSensorTypesForTs(types) {
219
+ if (types.length === 0)
220
+ return '[]';
221
+ const sensorTypeMap = {
222
+ motion: 'Motion',
223
+ object: 'Object',
224
+ audio: 'Audio',
225
+ face: 'Face',
226
+ licensePlate: 'LicensePlate',
227
+ contact: 'Contact',
228
+ light: 'Light',
229
+ siren: 'Siren',
230
+ ptz: 'PTZ',
231
+ doorbell: 'Doorbell',
232
+ battery: 'Battery',
233
+ };
234
+ const formatted = types.map((t) => `SensorType.${sensorTypeMap[t] || t}`).join(', ');
235
+ return `[${formatted}]`;
236
+ }
237
+ function generateContractTs(options) {
238
+ const provides = formatSensorTypesForTs(options.provides);
239
+ const consumes = formatSensorTypesForTs(options.consumes);
240
+ return `import { SensorType } from '@camera.ui/sdk';
241
+
242
+ import type { PluginContract } from '@camera.ui/sdk';
243
+
244
+ /**
245
+ * Plugin Contract
246
+ *
247
+ * This file defines what sensor types your plugin provides and consumes.
248
+ * It is bundled separately and read by camera.ui before loading the plugin.
249
+ *
250
+ * - provides: Sensor types this plugin creates and controls
251
+ * - consumes: Sensor types this plugin receives updates from (for hubs/integrations)
252
+ */
253
+ export const contract: PluginContract = {
254
+ name: '${options.displayName}',
255
+ provides: ${provides},
256
+ consumes: ${consumes},
257
+ };
258
+
259
+ export default contract;
260
+ `;
261
+ }
262
+ /**
263
+ * Create contract.ts at project root (always TypeScript, even for Python plugins)
264
+ * This file is bundled to contract.js during the bundle process
265
+ */
266
+ export async function createContractFile(targetDir, options) {
267
+ const contractContent = generateContractTs(options);
268
+ await writeFile(resolve(targetDir, 'contract.ts'), contractContent);
269
+ }
270
+ /**
271
+ * Create source files in src/ directory (no contract files here)
272
+ */
214
273
  export async function createSourceFiles(targetDir, options) {
274
+ const srcDir = resolve(targetDir, 'src');
275
+ await ensureDir(srcDir);
215
276
  if (options.language === 'python') {
216
- await copyPath(__dirname, '../../templates/python/src', targetDir, 'src');
277
+ await copyPath(__dirname, '../../templates/python/src/main.py', srcDir, 'main.py');
217
278
  }
218
- if (options.language === 'typescript') {
219
- await copyPath(__dirname, '../../templates/typescript/src', targetDir, 'src');
279
+ else if (options.language === 'go') {
280
+ // Go source files are created separately by createGoFiles
220
281
  }
221
- if (options.language === 'javascript') {
222
- await copyPath(__dirname, '../../templates/base/src', targetDir, 'src');
282
+ else {
283
+ // TypeScript
284
+ await copyPath(__dirname, '../../templates/typescript/src/index.ts', srcDir, 'index.ts');
285
+ await copyPath(__dirname, '../../templates/typescript/src/sensor.ts', srcDir, 'sensor.ts');
223
286
  }
224
287
  }
288
+ /**
289
+ * Create Go source files for a new Go plugin project
290
+ */
291
+ export async function createGoFiles(targetDir, projectName) {
292
+ const srcDir = resolve(targetDir, 'src');
293
+ await ensureDir(srcDir);
294
+ const pluginName = projectName.replace(/^@[^/]+\//, '').replace(/-/g, '_');
295
+ const moduleName = `github.com/user/${projectName.replace(/^@[^/]+\//, '')}`;
296
+ // go.mod — read template, replace placeholder, write to project root
297
+ const goModTemplate = readFileSync(resolve(__dirname, '../../templates/go/go.mod'), 'utf-8');
298
+ const goMod = goModTemplate.replace(/\{\{moduleName\}\}/g, moduleName);
299
+ await writeFile(resolve(targetDir, 'go.mod'), goMod);
300
+ // main.go — read template, replace placeholder, write to src/
301
+ const mainGoTemplate = readFileSync(resolve(__dirname, '../../templates/go/src/main.go'), 'utf-8');
302
+ const mainGo = mainGoTemplate.replace(/\{\{pluginName\}\}/g, pluginName);
303
+ await writeFile(resolve(srcDir, 'main.go'), mainGo);
304
+ }
225
305
  //# sourceMappingURL=templates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/utils/templates.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { copyFile, cp, mkdir, readdir, stat } from 'node:fs/promises';
2
2
  import { dirname, resolve } from 'node:path';
3
- import { logger } from '../utils/logger.js';
3
+ import * as log from '../utils/logger.js';
4
4
  export async function ensureDir(dir) {
5
5
  try {
6
6
  await mkdir(dir, { recursive: true });
@@ -17,13 +17,18 @@ export async function findFile(targetDir, file) {
17
17
  return files.find((f) => file.pattern.test(f)) ?? null;
18
18
  }
19
19
  catch {
20
- logger.warn(`Unable to read directory ${targetDir}`);
20
+ log.warn(`Unable to read directory ${targetDir}`);
21
21
  return null;
22
22
  }
23
23
  }
24
24
  export async function detectLanguage(rootDir) {
25
25
  try {
26
26
  const srcDir = resolve(rootDir, 'src');
27
+ // Check for Go
28
+ const hasGoMod = await findFile(rootDir, { target: 'go.mod', pattern: /^go\.mod$/ });
29
+ const hasMainGo = await findFile(srcDir, { target: 'main.go', pattern: /^main\.go$/ });
30
+ if (hasGoMod || hasMainGo)
31
+ return 'go';
27
32
  const hasPythonFiles = await findFile(srcDir, {
28
33
  target: 'main.py',
29
34
  pattern: /^main\.py$/i,
@@ -35,14 +40,11 @@ export async function detectLanguage(rootDir) {
35
40
  if (hasPythonFiles || hasRequirements) {
36
41
  return 'python';
37
42
  }
38
- const hasTypeScript = await findFile(rootDir, {
39
- target: 'tsconfig.json',
40
- pattern: /^tsconfig\.json$/i,
41
- });
42
- return hasTypeScript ? 'typescript' : 'javascript';
43
+ // Default to TypeScript (JavaScript is no longer supported)
44
+ return 'typescript';
43
45
  }
44
46
  catch {
45
- return 'javascript';
47
+ return 'typescript';
46
48
  }
47
49
  }
48
50
  export async function copyPath(rootDir, source, dest, targetFilename) {
@@ -57,15 +59,15 @@ export async function copyPath(rootDir, source, dest, targetFilename) {
57
59
  force: true,
58
60
  preserveTimestamps: true,
59
61
  });
60
- logger.fileOperation('dir', source, true);
62
+ log.fileOperation('dir', source, true);
61
63
  }
62
64
  else {
63
65
  await copyFile(sourcePath, destPath);
64
- logger.fileOperation('file', source, true);
66
+ log.fileOperation('file', source, true);
65
67
  }
66
68
  }
67
69
  catch {
68
- logger.fileOperation('file', source, false);
70
+ log.fileOperation('file', source, false);
69
71
  }
70
72
  }
71
73
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAU1C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,SAAiB,EAAE,IAAkB;IAClE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEvC,eAAe;QACf,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QACrF,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QACvF,IAAI,QAAQ,IAAI,SAAS;YAAE,OAAO,IAAI,CAAC;QAEvC,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE;YAC5C,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE;YAC9C,MAAM,EAAE,kBAAkB;YAC1B,OAAO,EAAE,sBAAsB;SAChC,CAAC,CAAC;QAEH,IAAI,cAAc,IAAI,eAAe,EAAE,CAAC;YACtC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,4DAA4D;QAC5D,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,YAAY,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAe,EAAE,MAAc,EAAE,IAAY,EAAE,cAAuB;IACnG,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,cAAc,IAAI,MAAM,CAAC,CAAC;QAEzD,MAAM,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE;gBAC7B,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,IAAI;gBACX,kBAAkB,EAAE,IAAI;aACzB,CAAC,CAAC;YACH,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACrC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
@@ -1,4 +1,3 @@
1
- import { APP_SERVER_NAME } from '@camera.ui/common/utils';
2
1
  import { exec } from 'node:child_process';
3
2
  import https from 'node:https';
4
3
  import { promisify } from 'node:util';
@@ -32,7 +31,7 @@ export function getLatestNodeLTSVersion() {
32
31
  });
33
32
  }
34
33
  export async function getLatestCameraUiVersion() {
35
- const { stdout } = await execAsync(`npm view ${APP_SERVER_NAME} dist-tags --json`);
34
+ const { stdout } = await execAsync('npm view @camera.ui/server dist-tags --json');
36
35
  const info = JSON.parse(stdout);
37
36
  return info;
38
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/utils/versions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AA4BlC,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,KAAK;aACF,GAAG,CAAC,oCAAoC,EAAE,CAAC,GAAG,EAAE,EAAE;YACjD,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,IAAI,IAAI,KAAK,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAsB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACrD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAEjI,OAAO,CAAC;wBACN,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACxC,GAAG,EAAE,SAAS,CAAC,GAAG;wBAClB,WAAW,EAAE,SAAS,CAAC,IAAI;qBAC5B,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACrB,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,YAAY,eAAe,mBAAmB,CAAC,CAAC;IACnF,MAAM,IAAI,GAAwB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/utils/versions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AA4BlC,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,KAAK;aACF,GAAG,CAAC,oCAAoC,EAAE,CAAC,GAAG,EAAE,EAAE;YACjD,IAAI,IAAI,GAAG,EAAE,CAAC;YAEd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,IAAI,IAAI,KAAK,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAsB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACrD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAEjI,OAAO,CAAC;wBACN,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACxC,GAAG,EAAE,SAAS,CAAC,GAAG;wBAClB,WAAW,EAAE,SAAS,CAAC,IAAI;qBAC5B,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACrB,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,6CAA6C,CAAC,CAAC;IAClF,MAAM,IAAI,GAAwB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camera.ui/cli",
3
- "version": "0.0.48",
3
+ "version": "0.0.50",
4
4
  "description": "camera.ui cli",
5
5
  "type": "module",
6
6
  "bin": {
@@ -12,62 +12,48 @@
12
12
  "format": "prettier --write 'src/' --ignore-unknown --no-error-on-unmatched-pattern",
13
13
  "lint": "eslint .",
14
14
  "lint:fix": "eslint --fix .",
15
+ "test": "vitest run",
16
+ "release": "bash scripts/release.sh",
15
17
  "update": "updates --update ./",
16
18
  "install-updates": "npm i --save",
17
19
  "prepublishOnly": "npm i --package-lock-only && npm run lint:fix && npm run format && npm run build"
18
20
  },
19
21
  "dependencies": {
20
- "@babel/core": "^7.27.1",
21
- "@babel/plugin-transform-typescript": "^7.27.1",
22
- "@babel/preset-env": "^7.27.2",
23
- "@babel/preset-typescript": "^7.27.1",
24
- "@camera.ui/common": "^0.0.42",
25
- "adm-zip": "^0.5.16",
26
- "babel-loader": "^10.0.0",
27
- "chalk": "^5.4.1",
28
- "commander": "^13.1.0",
29
- "fs-extra": "^11.3.0",
30
- "gradient-string": "^3.0.0",
31
- "inquirer": "^12.6.0",
32
- "json-loader": "^0.5.7",
33
- "node-loader": "^2.1.0",
34
- "ora": "^8.2.0",
35
- "prompts": "^2.4.2",
36
- "semver": "^7.7.1",
37
- "terser-webpack-plugin": "^5.3.14",
38
- "ts-import": "^5.0.0-beta.1",
39
- "ts-loader": "^9.5.2",
40
- "webpack": "^5.99.8",
41
- "webpack-bundle-analyzer": "^4.10.2",
42
- "webpack-cli": "^6.0.1"
22
+ "@camera.ui/sdk": "^0.0.5",
23
+ "@clack/prompts": "^1.5.1",
24
+ "adm-zip": "^0.5.17",
25
+ "commander": "^15.0.0",
26
+ "esbuild": "^0.28.1",
27
+ "fs-extra": "^11.3.5",
28
+ "picocolors": "^1.1.1",
29
+ "semver": "^7.8.4",
30
+ "ts-import": "^5.0.0-beta.1"
43
31
  },
44
32
  "devDependencies": {
45
- "@camera.ui/types": "^0.0.87",
46
- "@stylistic/eslint-plugin": "^4.2.0",
47
- "@types/adm-zip": "^0.5.7",
33
+ "@stylistic/eslint-plugin": "^5.10.0",
34
+ "@types/adm-zip": "^0.5.8",
48
35
  "@types/fs-extra": "^11.0.4",
49
- "@types/node": "^22.15.17",
50
- "@types/prompts": "^2.4.9",
51
- "@types/semver": "^7.7.0",
52
- "@types/webpack-bundle-analyzer": "^4.7.0",
53
- "@typescript-eslint/parser": "^8.32.0",
54
- "eslint": "^9.26.0",
55
- "globals": "^16.1.0",
56
- "prettier": "^3.5.3",
57
- "rimraf": "^6.0.1",
58
- "typescript": "^5.8.3",
59
- "typescript-eslint": "^8.32.0",
60
- "updates": "^16.4.2"
36
+ "@types/node": "25.9.3",
37
+ "@types/semver": "^7.7.1",
38
+ "@typescript-eslint/parser": "^8.61.0",
39
+ "eslint": "9.39.2",
40
+ "globals": "^17.6.0",
41
+ "prettier": "^3.8.4",
42
+ "rimraf": "^6.1.3",
43
+ "typescript": "5.9.3",
44
+ "typescript-eslint": "^8.61.0",
45
+ "updates": "^17.18.0",
46
+ "vitest": "^4.1.9"
61
47
  },
62
- "author": "seydx (https://github.com/seydx/camera.ui)",
48
+ "author": "seydx (https://github.com/cameraui/cli)",
63
49
  "bugs": {
64
- "url": "https://github.com/seydx/camera.ui/issues"
50
+ "url": "https://github.com/cameraui/cli/issues"
65
51
  },
66
- "homepage": "https://github.com/seydx/camera.ui#readme",
52
+ "homepage": "https://github.com/cameraui/cli#readme",
67
53
  "license": "MIT",
68
54
  "repository": {
69
55
  "type": "git",
70
- "url": "git+https://github.com/seydx/camera.ui.git"
56
+ "url": "git+https://github.com/cameraui/cli.git"
71
57
  },
72
58
  "keywords": [
73
59
  "camera.ui",
@@ -110,7 +110,7 @@ The bundled plugin will be available in the `bundle` directory.
110
110
  The main entry point is `src/index.ts` (or `src/index.js`). Here you can define your plugin's functionality:
111
111
 
112
112
  ```typescript
113
- import type { BasePlugin, LoggerService, PluginAPI } from '@camera.ui/types';
113
+ import type { BasePlugin, LoggerService, PluginAPI } from '@camera.ui/sdk';
114
114
 
115
115
  export default class SamplePlugin implements BasePlugin {
116
116
  constructor(logger: LoggerService, api: PluginAPI) {
@@ -124,7 +124,7 @@ export default class SamplePlugin implements BasePlugin {
124
124
  The main entry point is `src/main.py`. Example:
125
125
 
126
126
  ```python
127
- from camera_ui_python_types import (
127
+ from camera_ui_sdk import (
128
128
  BasePlugin,
129
129
  LoggerService,
130
130
  PluginAPI,
@@ -6,7 +6,7 @@ We want to ensure camera.ui is secure for everyone. If you've discovered a secur
6
6
  we appreciate your help in disclosing it to us in a [responsible manner][link-responsible-disclosure].
7
7
 
8
8
  Publicly disclosing a vulnerability can put the entire community at risk. If you've discovered a security concern,
9
- please send us a [mail](mailto:dev@seydx.com).
9
+ please send us a [mail](mailto:hi@seydx.dev).
10
10
  We'll work with you to make sure we understand the scope of the issue, and that we fully address your concern.
11
11
  We consider correspondence sent to this email address our highest priority,
12
12
  and work to address any issues that arise as quickly as possible.
@@ -10,12 +10,11 @@
10
10
  "dependencies": {},
11
11
  "devDependencies": {
12
12
  "cross-env": "^7.0.3",
13
- "updates": "^16.4.2"
13
+ "updates": "^17.4.0"
14
14
  },
15
15
  "engines": {},
16
16
  "keywords": [
17
17
  "camera-ui-plugin"
18
18
  ],
19
- "license": "MIT",
20
- "camera.ui": {}
19
+ "license": "MIT"
21
20
  }
@@ -1,3 +1,3 @@
1
1
  export default {
2
- exclude: [],
2
+ exclude: ['typescript', 'eslint'],
3
3
  };
@@ -0,0 +1,5 @@
1
+ module {{moduleName}}
2
+
3
+ go 1.23.0
4
+
5
+ require github.com/seydx/camera-ui-sdk v0.0.0
@@ -0,0 +1,35 @@
1
+ // postinstall.js — generated by @camera.ui/cli
2
+ const { platform, arch } = require('os');
3
+ const { existsSync, copyFileSync, mkdirSync, chmodSync } = require('fs');
4
+ const { join, dirname } = require('path');
5
+
6
+ const os = platform();
7
+ const a = arch();
8
+ const goArch = a === 'x64' ? 'amd64' : a;
9
+ const goos = os === 'win32' ? 'windows' : os;
10
+ const ext = os === 'win32' ? '.exe' : '';
11
+
12
+ const pkg = require('./package.json');
13
+ const pluginName = pkg.name.replace(/^@[^/]+\//, '');
14
+ const scope = pkg.name.includes('/') ? pkg.name.split('/')[0] : undefined;
15
+ const platformPkgName = scope ? scope + '/' + pluginName + '-' + goos + '-' + goArch : pluginName + '-' + goos + '-' + goArch;
16
+
17
+ let binarySource;
18
+ try {
19
+ const pkgDir = dirname(require.resolve(platformPkgName + '/package.json'));
20
+ binarySource = join(pkgDir, pluginName + ext);
21
+ } catch {
22
+ process.exit(0); // Platform package not installed — skip silently
23
+ }
24
+
25
+ if (!existsSync(binarySource)) process.exit(0);
26
+
27
+ const binDir = join(__dirname, 'dist', 'bin');
28
+ mkdirSync(binDir, { recursive: true });
29
+ const target = join(binDir, 'plugin' + ext);
30
+ copyFileSync(binarySource, target);
31
+ try {
32
+ chmodSync(target, 0o755);
33
+ } catch {
34
+ // Ignore chmod errors on platforms that don't support it (e.g. Windows)
35
+ }