@solidxai/solidctl 0.1.38 → 0.1.39-beta.1

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,2 @@
1
+ export declare function extractModuleNameFromArgs(args: string[]): string | undefined;
2
+ export declare function generateSolidUiModule(projectRoot: string, moduleFolderName: string): void;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.extractModuleNameFromArgs = extractModuleNameFromArgs;
7
+ exports.generateSolidUiModule = generateSolidUiModule;
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const lodash_1 = require("lodash");
11
+ const helpers_1 = require("./create-app/helpers");
12
+ const UI_SRC_RELATIVE = path_1.default.join('solid-ui', 'src');
13
+ const UI_MODULE_TEMPLATE = 'ui-module-template';
14
+ const MODULE_PLACEHOLDER = '__module-name__';
15
+ function extractModuleNameFromArgs(args) {
16
+ for (let i = 0; i < args.length; i++) {
17
+ if ((args[i] === '--name' || args[i] === '-n') && i + 1 < args.length) {
18
+ return (0, lodash_1.kebabCase)(args[i + 1]);
19
+ }
20
+ if (args[i].startsWith('--name='))
21
+ return (0, lodash_1.kebabCase)(args[i].split('=')[1]);
22
+ if (args[i].startsWith('-n='))
23
+ return (0, lodash_1.kebabCase)(args[i].split('=')[1]);
24
+ }
25
+ return undefined;
26
+ }
27
+ function generateSolidUiModule(projectRoot, moduleFolderName) {
28
+ const uiSrcPath = path_1.default.join(projectRoot, UI_SRC_RELATIVE);
29
+ if (!fs_extra_1.default.existsSync(uiSrcPath)) {
30
+ console.log('ℹ No solid-ui/src found — skipping UI module scaffold');
31
+ return;
32
+ }
33
+ const moduleDir = path_1.default.join(uiSrcPath, moduleFolderName);
34
+ if (fs_extra_1.default.existsSync(moduleDir)) {
35
+ console.log(`ℹ solid-ui module "${moduleFolderName}" already exists — skipping`);
36
+ return;
37
+ }
38
+ const templateDir = path_1.default.join((0, helpers_1.getTemplatesPath)(), UI_MODULE_TEMPLATE);
39
+ const templateFiles = fs_extra_1.default.readdirSync(templateDir);
40
+ for (const templateFile of templateFiles) {
41
+ const outputFilename = templateFile.replace(MODULE_PLACEHOLDER, moduleFolderName);
42
+ const content = fs_extra_1.default.readFileSync(path_1.default.join(templateDir, templateFile), 'utf-8');
43
+ fs_extra_1.default.outputFileSync(path_1.default.join(moduleDir, outputFilename), content.replaceAll(MODULE_PLACEHOLDER, moduleFolderName));
44
+ }
45
+ console.log(`✔ solid-ui module scaffold created at solid-ui/src/${moduleFolderName}/`);
46
+ }
47
+ //# sourceMappingURL=generate-ui-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-ui-module.js","sourceRoot":"","sources":["../../src/commands/generate-ui-module.ts"],"names":[],"mappings":";;;;;AASA,8DASC;AAED,sDA2BC;AA/CD,wDAA0B;AAC1B,gDAAwB;AACxB,mCAAmC;AACnC,kDAAwD;AAExD,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AACrD,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAChD,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AAE7C,SAAgB,yBAAyB,CAAC,IAAc;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACtE,OAAO,IAAA,kBAAS,EAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,IAAA,kBAAS,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;YAAM,OAAO,IAAA,kBAAS,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,qBAAqB,CAAC,WAAmB,EAAE,gBAAwB;IACjF,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAE1D,IAAI,CAAC,kBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACzD,IAAI,kBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,sBAAsB,gBAAgB,6BAA6B,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,IAAA,0BAAgB,GAAE,EAAE,kBAAkB,CAAC,CAAC;IACtE,MAAM,aAAa,GAAG,kBAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAElD,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;QAClF,MAAM,OAAO,GAAG,kBAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/E,kBAAE,CAAC,cAAc,CACf,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EACpC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CACzD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sDAAsD,gBAAgB,GAAG,CAAC,CAAC;AACzF,CAAC"}
@@ -2,7 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerGenerateCommand = registerGenerateCommand;
4
4
  const child_process_1 = require("child_process");
5
+ const lodash_1 = require("lodash");
5
6
  const helper_1 = require("../helper");
7
+ const generate_ui_module_1 = require("./generate-ui-module");
6
8
  function registerGenerateCommand(program) {
7
9
  const generate = program
8
10
  .command('generate')
@@ -10,16 +12,13 @@ function registerGenerateCommand(program) {
10
12
  generate
11
13
  .command('model')
12
14
  .description('Generate code for a single model and its related models. Use this if you want to target a specific model, which may be slightly faster than generating the full module.')
13
- .helpOption(false)
14
- .allowUnknownOption(true)
15
- .allowExcessArguments(true)
16
- .action((_options, command) => {
15
+ .requiredOption('-n, --name <modelName>', 'Model name (singularName) from the ss_model_metadata table')
16
+ .option('-d, --dryRun', 'Dry run the command')
17
+ .action((options) => {
17
18
  (0, helper_1.validateProjectRoot)();
18
19
  const projectRoot = process.cwd();
19
20
  const solidApiDir = `${projectRoot}/solid-api`;
20
- const rawArgs = command.parent?.parent?.rawArgs ?? process.argv;
21
- const subIndex = rawArgs.lastIndexOf('model');
22
- const passthroughArgs = subIndex >= 0 ? rawArgs.slice(subIndex + 1) : [];
21
+ const passthroughArgs = [`--name=${options.name}`, ...(options.dryRun ? ['--dryRun=true'] : [])];
23
22
  console.log('▶ Running solidctl generate model');
24
23
  const solidCommand = process.platform === 'win32' ? 'solid.cmd' : 'solid';
25
24
  const result = (0, child_process_1.spawnSync)(solidCommand, ['refresh-model', ...passthroughArgs], {
@@ -41,16 +40,13 @@ function registerGenerateCommand(program) {
41
40
  generate
42
41
  .command('module')
43
42
  .description('Generate code for an entire module, including all models within it. This is the recommended way to generate code.')
44
- .helpOption(false)
45
- .allowUnknownOption(true)
46
- .allowExcessArguments(true)
47
- .action((_options, command) => {
43
+ .requiredOption('-n, --name <moduleName>', 'Module name from the ss_module_metadata table')
44
+ .option('-d, --dryRun', 'Dry run the command')
45
+ .action((options) => {
48
46
  (0, helper_1.validateProjectRoot)();
49
47
  const projectRoot = process.cwd();
50
48
  const solidApiDir = `${projectRoot}/solid-api`;
51
- const rawArgs = command.parent?.parent?.rawArgs ?? process.argv;
52
- const subIndex = rawArgs.lastIndexOf('module');
53
- const passthroughArgs = subIndex >= 0 ? rawArgs.slice(subIndex + 1) : [];
49
+ const passthroughArgs = [`--name=${options.name}`, ...(options.dryRun ? ['--dryRun=true'] : [])];
54
50
  console.log('▶ Running solidctl generate module');
55
51
  const solidCommand = process.platform === 'win32' ? 'solid.cmd' : 'solid';
56
52
  const result = (0, child_process_1.spawnSync)(solidCommand, ['refresh-module', ...passthroughArgs], {
@@ -67,6 +63,7 @@ function registerGenerateCommand(program) {
67
63
  console.error('❌ solidctl generate module exited with code', result.status);
68
64
  process.exit(result.status ?? 1);
69
65
  }
66
+ (0, generate_ui_module_1.generateSolidUiModule)(projectRoot, (0, lodash_1.kebabCase)(options.name));
70
67
  console.log('✔ solidctl generate module completed');
71
68
  });
72
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generate.command.js","sourceRoot":"","sources":["../../src/commands/generate.command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.command.js","sourceRoot":"","sources":["../../src/commands/generate.command.ts"],"names":[],"mappings":"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"}