@nu-art/schema-to-types 0.300.7 → 0.400.0
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/main.js +8 -11
- package/main.js.map +1 -0
- package/package.json +20 -5
- package/schema-to-types.js +44 -50
- package/schema-to-types.js.map +1 -0
- package/tsconfig.json +0 -23
package/main.js
CHANGED
|
@@ -1,22 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const schema_to_types_1 = require("./schema-to-types");
|
|
5
|
-
const getConfigArg = () => {
|
|
1
|
+
// main.ts
|
|
2
|
+
import { processConfig } from './schema-to-types.js';
|
|
3
|
+
export const getConfigArg = () => {
|
|
6
4
|
const configArgPrefix = '--config=';
|
|
7
5
|
const configArg = process.argv.find(arg => arg.startsWith(configArgPrefix));
|
|
8
|
-
if (!configArg)
|
|
6
|
+
if (!configArg)
|
|
9
7
|
return;
|
|
10
|
-
}
|
|
11
8
|
return configArg.substring(configArgPrefix.length);
|
|
12
9
|
};
|
|
13
|
-
exports.getConfigArg = getConfigArg;
|
|
14
10
|
const main = async () => {
|
|
15
|
-
const configPath =
|
|
11
|
+
const configPath = getConfigArg();
|
|
16
12
|
if (!configPath) {
|
|
17
|
-
console.log(
|
|
13
|
+
console.log('Usage: ts-node generate-types.ts --config=<config-file-path>');
|
|
18
14
|
process.exit(1);
|
|
19
15
|
}
|
|
20
|
-
await
|
|
16
|
+
await processConfig(configPath).catch(console.error);
|
|
21
17
|
};
|
|
22
18
|
main();
|
|
19
|
+
//# sourceMappingURL=main.js.map
|
package/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"/Users/tacb0ss/dev/nu-art/beamz/_thunderstorm/schema-to-types/src/main/","sources":["main.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,MAAM,YAAY,GAAG,GAAuB,EAAE;IACpD,MAAM,eAAe,GAAG,WAAW,CAAC;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,OAAO,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACvB,MAAM,UAAU,GAAG,YAAY,EAAE,CAAC;IAClC,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,IAAI,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nu-art/schema-to-types",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.400.0",
|
|
4
4
|
"description": "schema-to-types - Express & Typescript based backend framework",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"types": "./index.d.ts",
|
|
9
|
+
"import": "./index.js"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
5
12
|
"keywords": [
|
|
6
13
|
"TacB0sS",
|
|
7
14
|
"infra",
|
|
@@ -24,8 +31,6 @@
|
|
|
24
31
|
},
|
|
25
32
|
"license": "Apache-2.0",
|
|
26
33
|
"author": "TacB0sS",
|
|
27
|
-
"main": "index.js",
|
|
28
|
-
"types": "index.d.ts",
|
|
29
34
|
"files": [
|
|
30
35
|
"**/*"
|
|
31
36
|
],
|
|
@@ -33,6 +38,16 @@
|
|
|
33
38
|
"build": "tsc"
|
|
34
39
|
},
|
|
35
40
|
"dependencies": {
|
|
36
|
-
"json-schema-
|
|
41
|
+
"@apidevtools/json-schema-ref-parser": "^14.2.0",
|
|
42
|
+
"command-line-args": "^6.0.1",
|
|
43
|
+
"quicktype-core": "^23.2.6"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@types/readable-stream": "^4.0.21",
|
|
47
|
+
"@types/urijs": "^1.19.25",
|
|
48
|
+
"@types/command-line-args": "^5.2.3"
|
|
49
|
+
},
|
|
50
|
+
"unitConfig": {
|
|
51
|
+
"type": "typescript-lib"
|
|
37
52
|
}
|
|
38
|
-
}
|
|
53
|
+
}
|
package/schema-to-types.js
CHANGED
|
@@ -1,56 +1,50 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.processConfig = void 0;
|
|
27
|
-
const fs = __importStar(require("fs"));
|
|
28
|
-
const path = __importStar(require("path"));
|
|
29
|
-
const json_schema_to_typescript_1 = require("json-schema-to-typescript");
|
|
1
|
+
// schema-to-types.ts
|
|
2
|
+
import * as fs from 'node:fs';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
import $RefParser from '@apidevtools/json-schema-ref-parser';
|
|
5
|
+
import { FetchingJSONSchemaStore, InputData, JSONSchemaInput, quicktype, TypeScriptTargetLanguage, } from 'quicktype-core';
|
|
6
|
+
/**
|
|
7
|
+
* Generate TypeScript defs from a JSON Schema file.
|
|
8
|
+
* - Bundles all external $refs into a single schema object
|
|
9
|
+
* - Emits only type/interface declarations (no runtime helpers)
|
|
10
|
+
*/
|
|
30
11
|
const generateTypeScriptType = async (inputPath, outputPath) => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
12
|
+
// Inline external refs but keep internal $ref to avoid cycles
|
|
13
|
+
const bundledSchema = await $RefParser.bundle(path.resolve(inputPath));
|
|
14
|
+
const topLevelName = inferTopLevelName(outputPath, inputPath);
|
|
15
|
+
const schemaInput = new JSONSchemaInput(new FetchingJSONSchemaStore());
|
|
16
|
+
await schemaInput.addSource({
|
|
17
|
+
name: topLevelName,
|
|
18
|
+
schema: JSON.stringify(bundledSchema),
|
|
19
|
+
});
|
|
20
|
+
const inputData = new InputData();
|
|
21
|
+
inputData.addInput(schemaInput);
|
|
22
|
+
const { lines } = await quicktype({
|
|
23
|
+
inputData,
|
|
24
|
+
lang: new TypeScriptTargetLanguage(),
|
|
25
|
+
rendererOptions: { 'just-types': 'true' }, // <= only types/interfaces
|
|
26
|
+
});
|
|
27
|
+
const ts = [
|
|
28
|
+
`// Generated from ${path.basename(inputPath)} — do not edit by hand.`,
|
|
29
|
+
`// ${new Date().toISOString()}`,
|
|
30
|
+
'',
|
|
31
|
+
...lines,
|
|
32
|
+
'',
|
|
33
|
+
].join('\n');
|
|
45
34
|
const outputDir = path.dirname(outputPath);
|
|
46
|
-
if (!fs.existsSync(outputDir))
|
|
35
|
+
if (!fs.existsSync(outputDir))
|
|
47
36
|
fs.mkdirSync(outputDir, { recursive: true });
|
|
48
|
-
|
|
49
|
-
fs.writeFileSync(outputPath, ts);
|
|
37
|
+
fs.writeFileSync(outputPath, ts, 'utf8');
|
|
50
38
|
};
|
|
51
|
-
|
|
39
|
+
function inferTopLevelName(outputPath, fallbackPath) {
|
|
40
|
+
const base = path.basename(outputPath || fallbackPath).replace(/\.(d\.)?tsx?$/i, '').trim();
|
|
41
|
+
const name = base.replace(/[^A-Za-z0-9_$]/g, '_'); // best-effort valid TS identifier
|
|
42
|
+
return name.length ? name : 'Schema';
|
|
43
|
+
}
|
|
44
|
+
export const processConfig = async (configPath) => {
|
|
52
45
|
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
53
|
-
for (const
|
|
54
|
-
await generateTypeScriptType(
|
|
46
|
+
for (const { input, output } of config) {
|
|
47
|
+
await generateTypeScriptType(input, output);
|
|
48
|
+
}
|
|
55
49
|
};
|
|
56
|
-
|
|
50
|
+
//# sourceMappingURL=schema-to-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-to-types.js","sourceRoot":"/Users/tacb0ss/dev/nu-art/beamz/_thunderstorm/schema-to-types/src/main/","sources":["schema-to-types.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,UAAU,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAC,uBAAuB,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,wBAAwB,GAAE,MAAM,gBAAgB,CAAC;AAKzH;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,KAAK,EAAE,SAAiB,EAAE,UAAkB,EAAiB,EAAE;IAC7F,8DAA8D;IAC9D,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAEvE,MAAM,YAAY,GAAG,iBAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAE9D,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC;IACvE,MAAM,WAAW,CAAC,SAAS,CAAC;QAC3B,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;KACrC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEhC,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,SAAS,CAAC;QAC/B,SAAS;QACT,IAAI,EAAE,IAAI,wBAAwB,EAAE;QACpC,eAAe,EAAE,EAAC,YAAY,EAAE,MAAM,EAAC,EAAE,2BAA2B;KACpE,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG;QACV,qBAAqB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB;QACtE,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;QAChC,EAAE;QACF,GAAG,KAAK;QACR,EAAE;KACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;IAE1E,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,SAAS,iBAAiB,CAAC,UAAkB,EAAE,YAAoB;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,YAAY,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5F,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC,kCAAkC;IACrF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,UAAkB,EAAiB,EAAE;IACxE,MAAM,MAAM,GAAgB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5E,KAAK,MAAM,EAAC,KAAK,EAAE,MAAM,EAAC,IAAI,MAAM,EAAE,CAAC;QACtC,MAAM,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;AACF,CAAC,CAAC"}
|
package/tsconfig.json
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "es2017",
|
|
4
|
-
"jsx": "react",
|
|
5
|
-
"lib": [
|
|
6
|
-
"es5",
|
|
7
|
-
"es6",
|
|
8
|
-
"es7",
|
|
9
|
-
"dom"
|
|
10
|
-
],
|
|
11
|
-
"declaration": true,
|
|
12
|
-
"resolveJsonModule": true,
|
|
13
|
-
"esModuleInterop": true,
|
|
14
|
-
"experimentalDecorators": true,
|
|
15
|
-
"moduleResolution": "node",
|
|
16
|
-
"noUnusedLocals": true,
|
|
17
|
-
"module": "commonjs",
|
|
18
|
-
"sourceMap": true,
|
|
19
|
-
"strict": true
|
|
20
|
-
},
|
|
21
|
-
"esModuleInterop": true,
|
|
22
|
-
"module": "ES2020"
|
|
23
|
-
}
|