forge-type 1.0.4 → 1.0.6
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.js +24 -30
- package/dist/cli.js.map +1 -1
- package/dist/generator/interfaceGenerator.d.ts.map +1 -1
- package/dist/generator/interfaceGenerator.js +35 -58
- package/dist/generator/interfaceGenerator.js.map +1 -1
- package/dist/index.d.ts +1 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -24
- package/dist/index.js.map +1 -1
- package/dist/test/test.d.ts +2 -0
- package/dist/test/test.d.ts.map +1 -0
- package/dist/test/test.js +19 -0
- package/dist/test/test.js.map +1 -0
- package/package.json +6 -2
package/dist/cli.js
CHANGED
|
@@ -4,37 +4,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
const commander_1 = require("commander");
|
|
8
7
|
const fs_1 = __importDefault(require("fs"));
|
|
9
8
|
const path_1 = __importDefault(require("path"));
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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);
|
|
9
|
+
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
10
|
+
const interfaceGenerator_1 = require("./generator/interfaceGenerator");
|
|
11
|
+
const args = process.argv.slice(2);
|
|
12
|
+
const model = args[0];
|
|
13
|
+
const source = args[1]; // file or URL
|
|
14
|
+
if (!model || !source) {
|
|
15
|
+
console.error('Usage: forge-type User ./data.json OR https://api.com/user');
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
async function run() {
|
|
19
|
+
let data;
|
|
20
|
+
if (source?.startsWith('http')) {
|
|
21
|
+
const res = await (0, node_fetch_1.default)(source);
|
|
22
|
+
data = await res.json();
|
|
28
23
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
program.parse(process.argv);
|
|
24
|
+
else {
|
|
25
|
+
data = JSON.parse(fs_1.default.readFileSync(path_1.default.resolve(source), 'utf-8'));
|
|
26
|
+
}
|
|
27
|
+
const output = (0, interfaceGenerator_1.generateInterface)(model, data);
|
|
28
|
+
const outPath = path_1.default.resolve('types', `${model}.ts`);
|
|
29
|
+
fs_1.default.mkdirSync('types', { recursive: true });
|
|
30
|
+
fs_1.default.writeFileSync(outPath, output);
|
|
31
|
+
console.log(`✔ Type generated: ${outPath}`);
|
|
32
|
+
}
|
|
33
|
+
run();
|
|
40
34
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AACA,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AACA,4CAAmB;AACnB,gDAAuB;AACvB,4DAA8B;AAC9B,uEAAkE;AAElE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAElC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;AACrB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA,CAAC,cAAc;AAErC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAA;IAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,KAAK,UAAU,GAAG;IAChB,IAAI,IAAI,CAAA;IAER,IAAI,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAK,EAAC,MAAM,CAAC,CAAA;QAC/B,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;IACzB,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,cAAI,CAAC,OAAO,CAAC,MAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;IACpE,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,sCAAiB,EAAC,KAAM,EAAE,IAAI,CAAC,CAAA;IAE9C,MAAM,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,KAAK,CAAC,CAAA;IACpD,YAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1C,YAAE,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAEjC,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAA;AAC7C,CAAC;AAED,GAAG,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaceGenerator.d.ts","sourceRoot":"","sources":["../../src/generator/interfaceGenerator.ts"],"names":[],"mappings":"AAgBA,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,EACT,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B,MAAM,
|
|
1
|
+
{"version":3,"file":"interfaceGenerator.d.ts","sourceRoot":"","sources":["../../src/generator/interfaceGenerator.ts"],"names":[],"mappings":"AAgBA,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,EACT,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B,MAAM,CAuDR"}
|
|
@@ -17,78 +17,55 @@ const allowedEnumFields = [
|
|
|
17
17
|
function generateInterface(name, data, options) {
|
|
18
18
|
const allInterfaces = [];
|
|
19
19
|
const enumDefinitions = [];
|
|
20
|
-
function helper(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (existingContent)
|
|
25
|
-
existingProps = parseInterface(existingContent);
|
|
26
|
-
}
|
|
20
|
+
function helper(interfaceName, obj) {
|
|
21
|
+
if (generatedInterfaces.has(interfaceName))
|
|
22
|
+
return;
|
|
23
|
+
generatedInterfaces.add(interfaceName);
|
|
27
24
|
const bodyLines = [];
|
|
28
|
-
Object.entries(
|
|
29
|
-
let typeStr = (0, inferType_1.inferType)(value, key);
|
|
25
|
+
Object.entries(obj).forEach(([key, value]) => {
|
|
30
26
|
const optional = value === null || value === undefined ? '?' : '';
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
Object.entries(value[0]).forEach(([k, v]) => {
|
|
38
|
-
if (typeof v === 'string')
|
|
39
|
-
detectEnum(k, v, enumDefinitions);
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
typeStr = `${typeName}[]`;
|
|
27
|
+
let typeStr;
|
|
28
|
+
// Array of objects → generate nested interface
|
|
29
|
+
if (Array.isArray(value) && value[0] && typeof value[0] === 'object') {
|
|
30
|
+
const nestedName = (0, opt_func_1.capitalize)((0, opt_func_1.singularize)(key));
|
|
31
|
+
helper(nestedName, value[0]);
|
|
32
|
+
typeStr = `${nestedName}[]`;
|
|
43
33
|
}
|
|
44
|
-
//
|
|
45
|
-
if (typeof value === 'object' &&
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
detectEnum(k, v, enumDefinitions);
|
|
50
|
-
return `${k}: ${(0, inferType_1.inferType)(v, k)};`;
|
|
51
|
-
})
|
|
52
|
-
.join(' ')} }`;
|
|
34
|
+
// Nested object → generate nested interface
|
|
35
|
+
else if (typeof value === 'object' && value !== null) {
|
|
36
|
+
const nestedName = (0, opt_func_1.capitalize)(key);
|
|
37
|
+
helper(nestedName, value);
|
|
38
|
+
typeStr = nestedName;
|
|
53
39
|
}
|
|
54
|
-
//
|
|
55
|
-
if (typeof value === 'string') {
|
|
40
|
+
// Enum detection
|
|
41
|
+
else if (typeof value === 'string') {
|
|
56
42
|
const enumType = detectEnum(key, value, enumDefinitions);
|
|
57
|
-
|
|
58
|
-
|
|
43
|
+
typeStr = enumType ?? (0, inferType_1.inferType)(value, key);
|
|
44
|
+
}
|
|
45
|
+
// Primitive types
|
|
46
|
+
else {
|
|
47
|
+
typeStr = (0, inferType_1.inferType)(value, key);
|
|
59
48
|
}
|
|
60
|
-
existingProps[key] = typeStr;
|
|
61
49
|
bodyLines.push(` ${key}${optional}: ${typeStr};`);
|
|
62
50
|
});
|
|
63
|
-
|
|
64
|
-
Object.keys(existingProps).forEach(key => {
|
|
65
|
-
if (!(key in data))
|
|
66
|
-
bodyLines.push(` ${key}?: ${existingProps[key]};`);
|
|
67
|
-
});
|
|
68
|
-
const content = `export interface ${name} {\n${bodyLines.join('\n')}\n}`;
|
|
51
|
+
const content = `export interface ${interfaceName} {\n${bodyLines.join('\n')}\n}`;
|
|
69
52
|
allInterfaces.push(content);
|
|
70
53
|
}
|
|
71
|
-
|
|
54
|
+
// Handle root arrays
|
|
55
|
+
if (Array.isArray(data)) {
|
|
56
|
+
if (data.length === 0)
|
|
57
|
+
throw new Error('Cannot generate interface from empty array');
|
|
58
|
+
helper(name, data[0]);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
helper(name, data);
|
|
62
|
+
}
|
|
72
63
|
const finalContent = [...enumDefinitions, ...allInterfaces].join('\n\n');
|
|
73
|
-
(0, fileWriter_1.saveTypeFile)(name, finalContent);
|
|
64
|
+
(0, fileWriter_1.saveTypeFile)(name, finalContent); // Save to file (CLI or fs)
|
|
74
65
|
return finalContent;
|
|
75
66
|
}
|
|
76
|
-
function parseInterface(content) {
|
|
77
|
-
const props = {};
|
|
78
|
-
content.split('\n').forEach(line => {
|
|
79
|
-
const match = line.trim().match(/^(\w+)\??:\s(.+);$/);
|
|
80
|
-
if (match) {
|
|
81
|
-
const [_, key, type] = match;
|
|
82
|
-
if (key && type)
|
|
83
|
-
props[key] = type;
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
return props;
|
|
87
|
-
}
|
|
88
67
|
function detectEnum(key, value, enumDefinitions) {
|
|
89
|
-
if (!allowedEnumFields.includes(key))
|
|
90
|
-
return null;
|
|
91
|
-
if (typeof value !== 'string')
|
|
68
|
+
if (!allowedEnumFields.includes(key) || typeof value !== 'string')
|
|
92
69
|
return null;
|
|
93
70
|
if (!fieldValuesMap[key])
|
|
94
71
|
fieldValuesMap[key] = new Set();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaceGenerator.js","sourceRoot":"","sources":["../../src/generator/interfaceGenerator.ts"],"names":[],"mappings":";;AAgBA,
|
|
1
|
+
{"version":3,"file":"interfaceGenerator.js","sourceRoot":"","sources":["../../src/generator/interfaceGenerator.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
CHANGED
|
@@ -1,27 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// import { generateInterface } from './generator/interfaceGenerator'
|
|
3
|
+
// import { saveTypeFile } from './storage/fileWriter'
|
|
2
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
});
|
|
22
|
-
return {
|
|
23
|
-
name,
|
|
24
|
-
type: typeString,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
5
|
+
// export function createTypeFromData(
|
|
6
|
+
// name: string,
|
|
7
|
+
// data: any,
|
|
8
|
+
// options?: { modify?: boolean } // pass { modify: true } to update existing interface
|
|
9
|
+
// ) {
|
|
10
|
+
// const typeString = generateInterface(name, data, options)
|
|
11
|
+
// const filePath = saveTypeFile(name, typeString)
|
|
12
|
+
// return {
|
|
13
|
+
// name,
|
|
14
|
+
// filePath,
|
|
15
|
+
// type: typeString,
|
|
16
|
+
// }
|
|
17
|
+
// }
|
|
27
18
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sDAAsD;;AAEtD,sCAAsC;AACtC,kBAAkB;AAClB,eAAe;AACf,yFAAyF;AACzF,MAAM;AACN,8DAA8D;AAC9D,oDAAoD;AAEpD,aAAa;AACb,YAAY;AACZ,gBAAgB;AAChB,wBAAwB;AACxB,MAAM;AACN,IAAI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/test/test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// import { createTypeFromData } from '..'
|
|
3
|
+
// import { generateInterface } from '../generator/interfaceGenerator'
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
// const userData = {
|
|
6
|
+
// id: 1,
|
|
7
|
+
// name: 'John Doe',
|
|
8
|
+
// gender: 'male',
|
|
9
|
+
// role: 'admin',
|
|
10
|
+
// status: 'active',
|
|
11
|
+
// friends: [
|
|
12
|
+
// { id: 2, name: 'Jane Smith', age: '24', gender: 'female', city: 'many' }
|
|
13
|
+
// ],
|
|
14
|
+
// profile: { bio: 'I love art', website: 'https://example.com' }
|
|
15
|
+
// }
|
|
16
|
+
// // 1. Generate types with enums
|
|
17
|
+
// const typeResult = createTypeFromData('User', userData, { modify: true })
|
|
18
|
+
// console.log(typeResult)
|
|
19
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/test/test.ts"],"names":[],"mappings":";AAAA,0CAA0C;AAC1C,sEAAsE;;AAEtE,qBAAqB;AACrB,WAAW;AACX,sBAAsB;AACtB,oBAAoB;AACpB,mBAAmB;AACnB,sBAAsB;AACtB,eAAe;AACf,+EAA+E;AAC/E,OAAO;AACP,mEAAmE;AACnE,IAAI;AAEJ,kCAAkC;AAClC,4EAA4E;AAC5E,0BAA0B"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "forge-type",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
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",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist"
|
|
9
9
|
],
|
|
10
|
+
"bin": {
|
|
11
|
+
"forge-type": "./dist/cli.js"
|
|
12
|
+
},
|
|
10
13
|
"scripts": {
|
|
11
14
|
"build": "tsc",
|
|
12
15
|
"dev": "ts-node src/index.ts",
|
|
@@ -24,7 +27,8 @@
|
|
|
24
27
|
"author": "Your Name",
|
|
25
28
|
"license": "MIT",
|
|
26
29
|
"dependencies": {
|
|
27
|
-
"commander": "^14.0.2"
|
|
30
|
+
"commander": "^14.0.2",
|
|
31
|
+
"node-fetch": "^3.3.2"
|
|
28
32
|
},
|
|
29
33
|
"devDependencies": {
|
|
30
34
|
"@types/node": "^25.0.3",
|