forge-type 1.0.3 → 1.0.4

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/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const commander_1 = require("commander");
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const index_1 = require("./index");
11
+ const program = new commander_1.Command();
12
+ program
13
+ .name('forge-type-cli')
14
+ .description('CLI for generating TypeScript types from JSON data')
15
+ .version('1.0.0');
16
+ program
17
+ .command('generate')
18
+ .description('Generate TypeScript type/interface for a model')
19
+ .requiredOption('-m, --model <name>', 'Model name')
20
+ .requiredOption('-d, --data <file>', 'Path to JSON file with model data')
21
+ .option('-o, --output <dir>', 'Output directory', './types')
22
+ .option('--modify', 'Modify existing type if exists', false)
23
+ .action((options) => {
24
+ const dataPath = path_1.default.resolve(process.cwd(), options.data);
25
+ if (!fs_1.default.existsSync(dataPath)) {
26
+ console.error('Data file not found:', dataPath);
27
+ process.exit(1);
28
+ }
29
+ const jsonData = JSON.parse(fs_1.default.readFileSync(dataPath, 'utf-8'));
30
+ const result = (0, index_1.createTypeFromData)(options.model, jsonData, { modify: options.modify });
31
+ // Save to output directory
32
+ const outputDir = path_1.default.resolve(process.cwd(), options.output);
33
+ if (!fs_1.default.existsSync(outputDir))
34
+ fs_1.default.mkdirSync(outputDir, { recursive: true });
35
+ const outputPath = path_1.default.join(outputDir, `${options.model}.ts`);
36
+ fs_1.default.writeFileSync(outputPath, result.type, 'utf-8');
37
+ console.log('Type generated at:', outputPath);
38
+ });
39
+ program.parse(process.argv);
40
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AACA,yCAAmC;AACnC,4CAAmB;AACnB,gDAAuB;AACvB,mCAA4C;AAE5C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,WAAW,CAAC,oDAAoD,CAAC;KACjE,OAAO,CAAC,OAAO,CAAC,CAAA;AAEnB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,cAAc,CAAC,oBAAoB,EAAE,YAAY,CAAC;KAClD,cAAc,CAAC,mBAAmB,EAAE,mCAAmC,CAAC;KACxE,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,SAAS,CAAC;KAC3D,MAAM,CAAC,UAAU,EAAE,gCAAgC,EAAE,KAAK,CAAC;KAC3D,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1D,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAA;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/D,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAEtF,2BAA2B;IAC3B,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7D,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,YAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE3E,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,KAAK,KAAK,CAAC,CAAA;IAC9D,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClD,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAA;AAC/C,CAAC,CAAC,CAAA;AAEJ,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA"}
package/dist/index.d.ts CHANGED
@@ -2,7 +2,6 @@ export declare function createTypeFromData(name: string, data: any, options?: {
2
2
  modify?: boolean;
3
3
  }): {
4
4
  name: string;
5
- filePath: string;
6
5
  type: string;
7
6
  };
8
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,EACT,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE;;;;EAU/B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE;;;EAoBzF"}
package/dist/index.js CHANGED
@@ -1,15 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createTypeFromData = createTypeFromData;
4
+ const child_process_1 = require("child_process");
4
5
  const interfaceGenerator_1 = require("./generator/interfaceGenerator");
5
- const fileWriter_1 = require("./storage/fileWriter");
6
- function createTypeFromData(name, data, options // pass { modify: true } to update existing interface
7
- ) {
6
+ function createTypeFromData(name, data, options) {
8
7
  const typeString = (0, interfaceGenerator_1.generateInterface)(name, data, options);
9
- const filePath = (0, fileWriter_1.saveTypeFile)(name, typeString); // saves all generated interfaces (including nested)
8
+ // Trigger CLI to write file
9
+ const args = [
10
+ 'generate',
11
+ '--model', name,
12
+ '--data', JSON.stringify(data), // or path to a temp file
13
+ '--output', './types',
14
+ ];
15
+ const cli = (0, child_process_1.spawn)('npx', ['forge-type-cli', ...args], { stdio: 'inherit' });
16
+ cli.on('close', (code) => {
17
+ if (code === 0)
18
+ console.log('File created successfully via CLI');
19
+ else
20
+ console.error('CLI process failed');
21
+ });
10
22
  return {
11
23
  name,
12
- filePath,
13
24
  type: typeString,
14
25
  };
15
26
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAGA,gDAaC;AAhBD,uEAAkE;AAClE,qDAAmD;AAEnD,SAAgB,kBAAkB,CAChC,IAAY,EACZ,IAAS,EACT,OAA8B,CAAC,qDAAqD;;IAEpF,MAAM,UAAU,GAAG,IAAA,sCAAiB,EAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,IAAA,yBAAY,EAAC,IAAI,EAAE,UAAU,CAAC,CAAA,CAAC,oDAAoD;IAEpG,OAAO;QACL,IAAI;QACJ,QAAQ;QACR,IAAI,EAAE,UAAU;KACjB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAGA,gDAoBC;AAvBD,iDAAqC;AACrC,uEAAkE;AAElE,SAAgB,kBAAkB,CAAC,IAAY,EAAE,IAAS,EAAE,OAA8B;IACxF,MAAM,UAAU,GAAG,IAAA,sCAAiB,EAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAEzD,4BAA4B;IAC5B,MAAM,IAAI,GAAG;QACX,UAAU;QACV,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,yBAAyB;QACzD,UAAU,EAAE,SAAS;KACtB,CAAA;IACD,MAAM,GAAG,GAAG,IAAA,qBAAK,EAAC,KAAK,EAAE,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;IAC3E,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QACvB,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;;YAC3D,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,UAAU;KACjB,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forge-type",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "Automatically generates TypeScript interfaces and types from JSON data, with enum detection.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -23,7 +23,9 @@
23
23
  ],
24
24
  "author": "Your Name",
25
25
  "license": "MIT",
26
- "dependencies": {},
26
+ "dependencies": {
27
+ "commander": "^14.0.2"
28
+ },
27
29
  "devDependencies": {
28
30
  "@types/node": "^25.0.3",
29
31
  "ts-node": "^10.9.2",