schemastore-to-typescript 1.1.0 → 1.2.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.
- package/CHANGELOG.json +51 -1
- package/CHANGELOG.md +24 -2
- package/dist/cli.js +4 -2
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/jsii.d.ts +14 -0
- package/dist/jsii.js +454 -0
- package/dist/jsii.js.map +1 -0
- package/dist/normalize.d.ts +6 -0
- package/dist/normalize.js +5 -5
- package/dist/normalize.js.map +1 -1
- package/package.json +3 -3
- package/readme.md +30 -0
package/CHANGELOG.json
CHANGED
|
@@ -2,7 +2,57 @@
|
|
|
2
2
|
"name": "schemastore-to-typescript",
|
|
3
3
|
"entries": [
|
|
4
4
|
{
|
|
5
|
-
"date": "
|
|
5
|
+
"date": "Sun, 01 Nov 2026 02:53:18 GMT",
|
|
6
|
+
"version": "1.2.1",
|
|
7
|
+
"tag": "schemastore-to-typescript_v1.2.1",
|
|
8
|
+
"comments": {
|
|
9
|
+
"patch": [
|
|
10
|
+
{
|
|
11
|
+
"author": "filip.dupanovic@gmail.com",
|
|
12
|
+
"package": "schemastore-to-typescript",
|
|
13
|
+
"commit": "be1eaaac2eccb026829b2ff78a4e9deddc9f2c46",
|
|
14
|
+
"comment": "Name closed objects without members and all-caps type names in jsii mode"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"date": "Sun, 01 Nov 2026 02:29:00 GMT",
|
|
21
|
+
"version": "1.2.0",
|
|
22
|
+
"tag": "schemastore-to-typescript_v1.2.0",
|
|
23
|
+
"comments": {
|
|
24
|
+
"patch": [
|
|
25
|
+
{
|
|
26
|
+
"author": "email not defined",
|
|
27
|
+
"package": "schemastore-to-typescript",
|
|
28
|
+
"commit": "516e3b8eb4d7537b8db4f93eb14808e8ae49b3d5",
|
|
29
|
+
"comment": "Update dependency @langri-sha/projen-project to v0.47.1"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"author": "email not defined",
|
|
33
|
+
"package": "schemastore-to-typescript",
|
|
34
|
+
"commit": "516e3b8eb4d7537b8db4f93eb14808e8ae49b3d5",
|
|
35
|
+
"comment": "Update dependency @langri-sha/projen-project to v0.47.0"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"author": "email not defined",
|
|
39
|
+
"package": "schemastore-to-typescript",
|
|
40
|
+
"commit": "516e3b8eb4d7537b8db4f93eb14808e8ae49b3d5",
|
|
41
|
+
"comment": "Update dependency @langri-sha/projen-project to v0.48.0"
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"minor": [
|
|
45
|
+
{
|
|
46
|
+
"author": "filip.dupanovic@gmail.com",
|
|
47
|
+
"package": "schemastore-to-typescript",
|
|
48
|
+
"commit": "516e3b8eb4d7537b8db4f93eb14808e8ae49b3d5",
|
|
49
|
+
"comment": "Add a jsii mode that emits typings jsii can compile"
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"date": "Sat, 31 Oct 2026 17:00:44 GMT",
|
|
6
56
|
"version": "1.1.0",
|
|
7
57
|
"tag": "schemastore-to-typescript_v1.1.0",
|
|
8
58
|
"comments": {
|
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,34 @@
|
|
|
1
1
|
# Change Log - schemastore-to-typescript
|
|
2
2
|
|
|
3
|
-
<!-- This log was last generated on
|
|
3
|
+
<!-- This log was last generated on Sun, 01 Nov 2026 02:53:18 GMT and should not be manually modified. -->
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 1.2.1
|
|
8
|
+
|
|
9
|
+
Sun, 01 Nov 2026 02:53:18 GMT
|
|
10
|
+
|
|
11
|
+
### Patches
|
|
12
|
+
|
|
13
|
+
- Name closed objects without members and all-caps type names in jsii mode (filip.dupanovic@gmail.com)
|
|
14
|
+
|
|
15
|
+
## 1.2.0
|
|
16
|
+
|
|
17
|
+
Sun, 01 Nov 2026 02:29:00 GMT
|
|
18
|
+
|
|
19
|
+
### Minor changes
|
|
20
|
+
|
|
21
|
+
- Add a jsii mode that emits typings jsii can compile (filip.dupanovic@gmail.com)
|
|
22
|
+
|
|
23
|
+
### Patches
|
|
24
|
+
|
|
25
|
+
- Update dependency @langri-sha/projen-project to v0.47.1
|
|
26
|
+
- Update dependency @langri-sha/projen-project to v0.47.0
|
|
27
|
+
- Update dependency @langri-sha/projen-project to v0.48.0
|
|
28
|
+
|
|
7
29
|
## 1.1.0
|
|
8
30
|
|
|
9
|
-
Sat, 31 Oct 2026 17:00:
|
|
31
|
+
Sat, 31 Oct 2026 17:00:44 GMT
|
|
10
32
|
|
|
11
33
|
### Minor changes
|
|
12
34
|
|
package/dist/cli.js
CHANGED
|
@@ -12,10 +12,12 @@ export const program = new Command()
|
|
|
12
12
|
.argument('<schema>', 'JSON schema store schema')
|
|
13
13
|
.argument('[output]', 'Path to output the TypeScript definition')
|
|
14
14
|
.option('-n, --no-cache', 'Skip caching requests')
|
|
15
|
+
.option('--jsii', 'Emit typings that jsii can compile')
|
|
16
|
+
.option('--type-name <name>', 'Name the root interface')
|
|
15
17
|
.showHelpAfterError()
|
|
16
|
-
.action(async (schema, output, { cache }) => {
|
|
18
|
+
.action(async (schema, output, { cache, jsii, typeName }) => {
|
|
17
19
|
output ??= `${schema}.d.ts`;
|
|
18
|
-
const compiled = await compile(schema, cache);
|
|
20
|
+
const compiled = await compile(schema, cache, { jsii, typeName });
|
|
19
21
|
await fs.writeFile(
|
|
20
22
|
// Using `process.cwd()` as escape hatch for `process.chdir()` not being
|
|
21
23
|
// available in workers. See: https://github.com/vitest-dev/vitest/issues/1436.
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,WAAW,MAAM,OAAO,CAAA;AAC/B,OAAO,MAAM,MAAM,SAAS,CAAA;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,KAAK,GAAG,WAAW,CAAC,4BAA4B,CAAC,CAAA;AAEvD,MAAM,CAAC,MAAM,OAAO,GAAY,IAAI,OAAO,EAAE;KAC1C,IAAI,CAAC,2BAA2B,CAAC;KACjC,WAAW,CAAC,8DAA8D,CAAC;KAC3E,QAAQ,CAAC,UAAU,EAAE,0BAA0B,CAAC;KAChD,QAAQ,CAAC,UAAU,EAAE,0CAA0C,CAAC;KAChE,MAAM,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;KACjD,kBAAkB,EAAE;KACpB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,WAAW,MAAM,OAAO,CAAA;AAC/B,OAAO,MAAM,MAAM,SAAS,CAAA;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,KAAK,GAAG,WAAW,CAAC,4BAA4B,CAAC,CAAA;AAEvD,MAAM,CAAC,MAAM,OAAO,GAAY,IAAI,OAAO,EAAE;KAC1C,IAAI,CAAC,2BAA2B,CAAC;KACjC,WAAW,CAAC,8DAA8D,CAAC;KAC3E,QAAQ,CAAC,UAAU,EAAE,0BAA0B,CAAC;KAChD,QAAQ,CAAC,UAAU,EAAE,0CAA0C,CAAC;KAChE,MAAM,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;KACjD,MAAM,CAAC,QAAQ,EAAE,oCAAoC,CAAC;KACtD,MAAM,CAAC,oBAAoB,EAAE,yBAAyB,CAAC;KACvD,kBAAkB,EAAE;KACpB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC1D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAA;IAE3B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;IACjE,MAAM,EAAE,CAAC,SAAS;IAChB,wEAAwE;IACxE,+EAA+E;IAC/E,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EACnC,QAAQ,CACT,CAAA;AACH,CAAC,CAAC,CAAA;AAEJ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACxB,KAAK,CAAC,mBAAmB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,OAAO;SACJ,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC;SACxB,IAAI,CAAC,GAAG,EAAE;QACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACN,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1 +1,11 @@
|
|
|
1
|
-
export
|
|
1
|
+
export interface CompileOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Emit typings that jsii compiles when they are part of a package's API.
|
|
4
|
+
*/
|
|
5
|
+
jsii?: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Name the root interface, instead of the catalog's name for the schema.
|
|
8
|
+
*/
|
|
9
|
+
typeName?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const compile: (name: string, cache?: boolean, { jsii, typeName }?: CompileOptions) => Promise<string>;
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import got, { HTTPError } from 'got';
|
|
|
5
5
|
import { compile as compileSource, } from 'json-schema-to-typescript';
|
|
6
6
|
import Keyv from 'keyv';
|
|
7
7
|
import { KeyvFile } from 'keyv-file';
|
|
8
|
+
import { compilerOptions as jsiiCompilerOptions, jsiiSchema, jsiiTypings, } from './jsii.js';
|
|
8
9
|
import { normalizeSchema } from './normalize.js';
|
|
9
10
|
const debug = createDebug('schema-store-to-typescript');
|
|
10
11
|
const paths = envPaths('schemastore-to-typescript');
|
|
@@ -112,7 +113,7 @@ const sanitizeSchema = (node, isRoot = true) => {
|
|
|
112
113
|
}
|
|
113
114
|
return sanitized;
|
|
114
115
|
};
|
|
115
|
-
export const compile = async (name, cache = true) => {
|
|
116
|
+
export const compile = async (name, cache = true, { jsii = false, typeName } = {}) => {
|
|
116
117
|
const catalogUrl = 'https://www.schemastore.org/api/json/catalog.json';
|
|
117
118
|
let catalog;
|
|
118
119
|
let schema;
|
|
@@ -169,7 +170,7 @@ export const compile = async (name, cache = true) => {
|
|
|
169
170
|
debug(`Fetching schema from: ${catalogSchema.url}`);
|
|
170
171
|
schema = await fetchWithRetry(catalogSchema.url);
|
|
171
172
|
if (typeof schema === 'object' && schema !== null) {
|
|
172
|
-
schema.title = catalogSchema.name;
|
|
173
|
+
schema.title = typeName ?? catalogSchema.name;
|
|
173
174
|
}
|
|
174
175
|
}
|
|
175
176
|
catch (e) {
|
|
@@ -188,6 +189,10 @@ export const compile = async (name, cache = true) => {
|
|
|
188
189
|
if (cache) {
|
|
189
190
|
await flushCache();
|
|
190
191
|
}
|
|
191
|
-
|
|
192
|
+
const normalized = sanitizeSchema(normalizeSchema(schema));
|
|
193
|
+
if (!jsii) {
|
|
194
|
+
return compileSource(normalized, name);
|
|
195
|
+
}
|
|
196
|
+
return jsiiTypings(await compileSource(jsiiSchema(normalized), name, jsiiCompilerOptions));
|
|
192
197
|
};
|
|
193
198
|
//# 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":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/jsii.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { JSONSchema, Options } from 'json-schema-to-typescript';
|
|
2
|
+
export declare const compilerOptions: Partial<Options>;
|
|
3
|
+
/**
|
|
4
|
+
* Reshapes a schema so the typings `json-schema-to-typescript` writes for it
|
|
5
|
+
* stay within what jsii accepts: no `null`, no intersections, no named maps
|
|
6
|
+
* and no inline objects.
|
|
7
|
+
*/
|
|
8
|
+
export declare const jsiiSchema: (schema: JSONSchema) => JSONSchema;
|
|
9
|
+
/**
|
|
10
|
+
* jsii requires a struct's members to be `readonly` (JSII3008). Only the
|
|
11
|
+
* members of exported interfaces are rewritten: after `jsiiSchema` there is no
|
|
12
|
+
* object type left that is written inline.
|
|
13
|
+
*/
|
|
14
|
+
export declare const jsiiTypings: (source: string) => string;
|
package/dist/jsii.js
ADDED
|
@@ -0,0 +1,454 @@
|
|
|
1
|
+
import { escapeToken, isObject, literalKeys, namedSchemaKeys, resolvePointer, } from './normalize.js';
|
|
2
|
+
export const compilerOptions = {
|
|
3
|
+
ignoreMinAndMaxItems: true,
|
|
4
|
+
};
|
|
5
|
+
const mapSchema = (node, visit, inSchema = true) => {
|
|
6
|
+
if (Array.isArray(node)) {
|
|
7
|
+
return node.map((item) => mapSchema(item, visit, inSchema));
|
|
8
|
+
}
|
|
9
|
+
if (!isObject(node)) {
|
|
10
|
+
return node;
|
|
11
|
+
}
|
|
12
|
+
if (!inSchema) {
|
|
13
|
+
return Object.fromEntries(Object.entries(node).map(([name, value]) => [
|
|
14
|
+
name,
|
|
15
|
+
mapSchema(value, visit, true),
|
|
16
|
+
]));
|
|
17
|
+
}
|
|
18
|
+
const mapped = {};
|
|
19
|
+
for (const [key, value] of Object.entries(node)) {
|
|
20
|
+
mapped[key] = literalKeys.has(key)
|
|
21
|
+
? value
|
|
22
|
+
: mapSchema(value, visit, !namedSchemaKeys.has(key));
|
|
23
|
+
}
|
|
24
|
+
return visit(mapped);
|
|
25
|
+
};
|
|
26
|
+
const hasMembers = (node) => isObject(node) &&
|
|
27
|
+
isObject(node.properties) &&
|
|
28
|
+
Object.keys(node.properties).length > 0;
|
|
29
|
+
const isNull = (node) => isObject(node) && (node.type === 'null' || node.const === null);
|
|
30
|
+
/**
|
|
31
|
+
* jsii rejects a union with `null` (JSII1001). Every member it applies to is
|
|
32
|
+
* optional, so leaving `null` out loses nothing the schema's own optionality
|
|
33
|
+
* doesn't already say.
|
|
34
|
+
*/
|
|
35
|
+
const stripNull = (node) => {
|
|
36
|
+
if (Array.isArray(node.type) && node.type.includes('null')) {
|
|
37
|
+
const types = node.type.filter((type) => type !== 'null');
|
|
38
|
+
if (types.length === 0) {
|
|
39
|
+
delete node.type;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
node.type = types.length === 1 ? types[0] : types;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (Array.isArray(node.enum) && node.enum.includes(null)) {
|
|
46
|
+
const values = node.enum.filter((value) => value !== null);
|
|
47
|
+
if (values.length === 0) {
|
|
48
|
+
delete node.enum;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
node.enum = values;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
for (const keyword of ['anyOf', 'oneOf']) {
|
|
55
|
+
const alternatives = node[keyword];
|
|
56
|
+
if (!Array.isArray(alternatives) || !alternatives.some(isNull)) {
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
const remaining = alternatives.filter((member) => !isNull(member));
|
|
60
|
+
const { [keyword]: _, ...rest } = node;
|
|
61
|
+
if (remaining.length === 0) {
|
|
62
|
+
return rest;
|
|
63
|
+
}
|
|
64
|
+
if (remaining.length === 1 && isObject(remaining[0])) {
|
|
65
|
+
return { ...remaining[0], ...rest };
|
|
66
|
+
}
|
|
67
|
+
return { ...rest, [keyword]: remaining };
|
|
68
|
+
}
|
|
69
|
+
return node;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Whatever `stripNull` left of a schema that only ever allowed `null`.
|
|
73
|
+
*/
|
|
74
|
+
const unnull = (node) => {
|
|
75
|
+
if (node.type === 'null') {
|
|
76
|
+
delete node.type;
|
|
77
|
+
}
|
|
78
|
+
if (node.const === null) {
|
|
79
|
+
delete node.const;
|
|
80
|
+
}
|
|
81
|
+
return node;
|
|
82
|
+
};
|
|
83
|
+
const mergeMembers = (target, source) => {
|
|
84
|
+
const targetRequired = Array.isArray(target.required) ? target.required : [];
|
|
85
|
+
const sourceRequired = Array.isArray(source.required) ? source.required : [];
|
|
86
|
+
return {
|
|
87
|
+
...target,
|
|
88
|
+
type: 'object',
|
|
89
|
+
properties: {
|
|
90
|
+
...source.properties,
|
|
91
|
+
...target.properties,
|
|
92
|
+
},
|
|
93
|
+
...(targetRequired.length + sourceRequired.length > 0 && {
|
|
94
|
+
required: [...new Set([...targetRequired, ...sourceRequired])],
|
|
95
|
+
}),
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Members of alternatives are any of them, so a member that several
|
|
100
|
+
* alternatives describe takes all of their schemas. The node's own members
|
|
101
|
+
* stay as they are: they hold in every alternative.
|
|
102
|
+
*/
|
|
103
|
+
const mergeAlternative = (node, alternative, own) => {
|
|
104
|
+
const properties = { ...node.properties };
|
|
105
|
+
for (const [name, schema] of Object.entries(alternative.properties)) {
|
|
106
|
+
const earlier = properties[name];
|
|
107
|
+
if (own.has(name) || JSON.stringify(earlier) === JSON.stringify(schema)) {
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
properties[name] =
|
|
111
|
+
earlier === undefined
|
|
112
|
+
? schema
|
|
113
|
+
: {
|
|
114
|
+
anyOf: [
|
|
115
|
+
...(isObject(earlier) && Array.isArray(earlier.anyOf)
|
|
116
|
+
? earlier.anyOf
|
|
117
|
+
: [earlier]),
|
|
118
|
+
schema,
|
|
119
|
+
],
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
return { ...node, type: 'object', properties };
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* jsii only accepts an intersection of interfaces (JSII1008), and a union
|
|
126
|
+
* beside members compiles to one. The schemas use `allOf`, and `anyOf` beside
|
|
127
|
+
* `properties`, to attach constraints: this restates what they say about
|
|
128
|
+
* members in one object, and drops what only constrains.
|
|
129
|
+
*/
|
|
130
|
+
const flatten = (document) => (node) => {
|
|
131
|
+
let flattened = node;
|
|
132
|
+
if (Array.isArray(flattened.allOf)) {
|
|
133
|
+
const { allOf, ...rest } = flattened;
|
|
134
|
+
const references = [];
|
|
135
|
+
flattened = rest;
|
|
136
|
+
for (const member of allOf) {
|
|
137
|
+
if (!isObject(member)) {
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
const target = typeof member.$ref === 'string'
|
|
141
|
+
? resolvePointer(document, member.$ref)
|
|
142
|
+
: member;
|
|
143
|
+
if (hasMembers(target)) {
|
|
144
|
+
flattened = mergeMembers(flattened, target);
|
|
145
|
+
}
|
|
146
|
+
else if (typeof member.$ref === 'string') {
|
|
147
|
+
references.push(member);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if (references.length === 1 && !hasMembers(flattened)) {
|
|
151
|
+
const { type: _, ...siblings } = flattened;
|
|
152
|
+
flattened = { ...references[0], ...siblings };
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (hasMembers(flattened)) {
|
|
156
|
+
for (const keyword of ['anyOf', 'oneOf']) {
|
|
157
|
+
const alternatives = flattened[keyword];
|
|
158
|
+
if (!Array.isArray(alternatives)) {
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
const targets = alternatives.map((member) => isObject(member) && typeof member.$ref === 'string'
|
|
162
|
+
? resolvePointer(document, member.$ref)
|
|
163
|
+
: member);
|
|
164
|
+
if (!targets.every((target) => hasMembers(target) ||
|
|
165
|
+
(isObject(target) && Array.isArray(target.required)))) {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
const { [keyword]: _, ...rest } = flattened;
|
|
169
|
+
const own = new Set(Object.keys(rest.properties));
|
|
170
|
+
flattened = rest;
|
|
171
|
+
for (const target of targets) {
|
|
172
|
+
if (hasMembers(target)) {
|
|
173
|
+
flattened = mergeAlternative(flattened, target, own);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return flattened;
|
|
179
|
+
};
|
|
180
|
+
/**
|
|
181
|
+
* Tuples cannot cross a jsii API (JSII1999); `ignoreMinAndMaxItems` covers
|
|
182
|
+
* the ones spelled with `minItems` and `maxItems`. What follows the listed
|
|
183
|
+
* items is one more alternative, or anything when it is `true`.
|
|
184
|
+
*/
|
|
185
|
+
const untuple = (node) => {
|
|
186
|
+
if (!Array.isArray(node.items)) {
|
|
187
|
+
return node;
|
|
188
|
+
}
|
|
189
|
+
const { items, additionalItems, ...rest } = node;
|
|
190
|
+
const alternatives = isObject(additionalItems)
|
|
191
|
+
? [...items, additionalItems]
|
|
192
|
+
: items;
|
|
193
|
+
return {
|
|
194
|
+
...rest,
|
|
195
|
+
items: additionalItems === true || alternatives.length === 0
|
|
196
|
+
? {}
|
|
197
|
+
: { anyOf: alternatives },
|
|
198
|
+
};
|
|
199
|
+
};
|
|
200
|
+
const isMap = (node) => isObject(node) &&
|
|
201
|
+
!hasMembers(node) &&
|
|
202
|
+
(node.type === 'object' ||
|
|
203
|
+
(node.type === undefined &&
|
|
204
|
+
(node.additionalProperties !== undefined ||
|
|
205
|
+
isObject(node.patternProperties)))) &&
|
|
206
|
+
(node.additionalProperties !== false || isObject(node.patternProperties));
|
|
207
|
+
/**
|
|
208
|
+
* A named interface cannot be a map (JSII1999), but a map type can stand in
|
|
209
|
+
* a member's type. Restate every member-less object as one, without the name
|
|
210
|
+
* that would hoist it back into an interface.
|
|
211
|
+
*/
|
|
212
|
+
const mapify = (node) => {
|
|
213
|
+
if (!isMap(node)) {
|
|
214
|
+
return node;
|
|
215
|
+
}
|
|
216
|
+
const patterns = isObject(node.patternProperties)
|
|
217
|
+
? Object.values(node.patternProperties)
|
|
218
|
+
: [];
|
|
219
|
+
const values = isObject(node.additionalProperties)
|
|
220
|
+
? [node.additionalProperties, ...patterns]
|
|
221
|
+
: patterns;
|
|
222
|
+
const { $id: _id, title: _title, required: _required, patternProperties: _patterns, ...rest } = node;
|
|
223
|
+
return {
|
|
224
|
+
...rest,
|
|
225
|
+
type: 'object',
|
|
226
|
+
additionalProperties: values.length === 0 || node.additionalProperties === true
|
|
227
|
+
? true
|
|
228
|
+
: values.length === 1
|
|
229
|
+
? values[0]
|
|
230
|
+
: { anyOf: values },
|
|
231
|
+
};
|
|
232
|
+
};
|
|
233
|
+
/**
|
|
234
|
+
* A map that reaches itself keeps its `$ref` where it does, so that it stays
|
|
235
|
+
* a named interface rather than expanding without end.
|
|
236
|
+
*/
|
|
237
|
+
const inlineMaps = (document) => {
|
|
238
|
+
const walk = (node, expanding, inSchema) => {
|
|
239
|
+
if (Array.isArray(node)) {
|
|
240
|
+
return node.map((item) => walk(item, expanding, inSchema));
|
|
241
|
+
}
|
|
242
|
+
if (!isObject(node)) {
|
|
243
|
+
return node;
|
|
244
|
+
}
|
|
245
|
+
if (!inSchema) {
|
|
246
|
+
return Object.fromEntries(Object.entries(node).map(([name, value]) => [
|
|
247
|
+
name,
|
|
248
|
+
walk(value, expanding, true),
|
|
249
|
+
]));
|
|
250
|
+
}
|
|
251
|
+
const target = typeof node.$ref === 'string'
|
|
252
|
+
? resolvePointer(document, node.$ref)
|
|
253
|
+
: undefined;
|
|
254
|
+
if (typeof node.$ref === 'string' &&
|
|
255
|
+
isMap(target) &&
|
|
256
|
+
target !== document &&
|
|
257
|
+
!expanding.includes(node.$ref)) {
|
|
258
|
+
const { $ref, title: _, ...siblings } = node;
|
|
259
|
+
return {
|
|
260
|
+
...walk(structuredClone(target), [...expanding, $ref], true),
|
|
261
|
+
...siblings,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
const walked = {};
|
|
265
|
+
for (const [key, value] of Object.entries(node)) {
|
|
266
|
+
if (literalKeys.has(key)) {
|
|
267
|
+
walked[key] = value;
|
|
268
|
+
}
|
|
269
|
+
else if (key === 'definitions' && isObject(value)) {
|
|
270
|
+
walked[key] = Object.fromEntries(Object.entries(value).map(([name, definition]) => [
|
|
271
|
+
name,
|
|
272
|
+
walk(definition, [...expanding, `#/definitions/${escapeToken(name)}`], true),
|
|
273
|
+
]));
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
walked[key] = walk(value, expanding, !namedSchemaKeys.has(key));
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return walked;
|
|
280
|
+
};
|
|
281
|
+
return walk(document, [], true);
|
|
282
|
+
};
|
|
283
|
+
/**
|
|
284
|
+
* jsii rejects a type name `Case.pascal` would change (JSII8000), which is one
|
|
285
|
+
* spelled in capitals alone, such as `SDK`.
|
|
286
|
+
*/
|
|
287
|
+
const isShouting = (name) => /^[A-Z0-9]+$/.test(name) && /[A-Z].*[A-Z]/.test(name);
|
|
288
|
+
const isClosed = (node) => node.type === 'object' && node.additionalProperties === false;
|
|
289
|
+
const pascal = (text) => text
|
|
290
|
+
.split(/[^A-Za-z0-9]+/)
|
|
291
|
+
.filter(Boolean)
|
|
292
|
+
.map((word) => word[0].toUpperCase() + word.slice(1))
|
|
293
|
+
.join('');
|
|
294
|
+
/**
|
|
295
|
+
* jsii only accepts a struct for an object (JSII1003), so every object that
|
|
296
|
+
* would otherwise be written inline gets a title, which names it and hoists it.
|
|
297
|
+
*/
|
|
298
|
+
const nameInlineObjects = (document) => {
|
|
299
|
+
const taken = new Set();
|
|
300
|
+
const collect = (node, inSchema) => {
|
|
301
|
+
if (Array.isArray(node)) {
|
|
302
|
+
node.forEach((item) => collect(item, inSchema));
|
|
303
|
+
}
|
|
304
|
+
else if (isObject(node)) {
|
|
305
|
+
for (const [key, value] of Object.entries(node)) {
|
|
306
|
+
if (!inSchema) {
|
|
307
|
+
collect(value, true);
|
|
308
|
+
}
|
|
309
|
+
else if (!literalKeys.has(key)) {
|
|
310
|
+
if (key === 'title' && typeof value === 'string') {
|
|
311
|
+
taken.add(pascal(value));
|
|
312
|
+
}
|
|
313
|
+
if (key === 'definitions' && isObject(value)) {
|
|
314
|
+
Object.keys(value).forEach((name) => taken.add(pascal(name)));
|
|
315
|
+
}
|
|
316
|
+
collect(value, !namedSchemaKeys.has(key));
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
collect(document, true);
|
|
322
|
+
const unique = (name) => {
|
|
323
|
+
let candidate = name;
|
|
324
|
+
for (let suffix = 2; taken.has(candidate); suffix++) {
|
|
325
|
+
candidate = `${name}${suffix}`;
|
|
326
|
+
}
|
|
327
|
+
taken.add(candidate);
|
|
328
|
+
return candidate;
|
|
329
|
+
};
|
|
330
|
+
const name = (node, fallback) => typeof node.title === 'string' ? pascal(node.title) : fallback;
|
|
331
|
+
const visit = (node, fallback, hoisted) => {
|
|
332
|
+
const own = hoisted || typeof node.title === 'string'
|
|
333
|
+
? name(node, fallback)
|
|
334
|
+
: undefined;
|
|
335
|
+
if (own !== undefined && isShouting(own)) {
|
|
336
|
+
node.title = unique(own[0] + own.slice(1).toLowerCase());
|
|
337
|
+
}
|
|
338
|
+
if (!hoisted &&
|
|
339
|
+
(hasMembers(node) || isClosed(node)) &&
|
|
340
|
+
typeof node.title !== 'string' &&
|
|
341
|
+
typeof node.$ref !== 'string') {
|
|
342
|
+
node.title = unique(fallback);
|
|
343
|
+
}
|
|
344
|
+
const self = name(node, fallback);
|
|
345
|
+
const child = (value, suffix, isHoisted = false) => {
|
|
346
|
+
if (isObject(value)) {
|
|
347
|
+
visit(value, `${self}${suffix}`, isHoisted);
|
|
348
|
+
}
|
|
349
|
+
};
|
|
350
|
+
if (isObject(node.properties)) {
|
|
351
|
+
for (const [key, value] of Object.entries(node.properties)) {
|
|
352
|
+
child(value, pascal(key));
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
if (isObject(node.definitions)) {
|
|
356
|
+
for (const [key, value] of Object.entries(node.definitions)) {
|
|
357
|
+
if (isObject(value)) {
|
|
358
|
+
visit(value, pascal(key), true);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
if (Array.isArray(node.items)) {
|
|
363
|
+
node.items.forEach((item) => child(item, 'Item'));
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
child(node.items, 'Item');
|
|
367
|
+
}
|
|
368
|
+
child(node.additionalProperties, 'Value');
|
|
369
|
+
for (const keyword of ['anyOf', 'oneOf']) {
|
|
370
|
+
if (Array.isArray(node[keyword])) {
|
|
371
|
+
node[keyword].forEach((member, index) => child(member, `Option${index + 1}`));
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
};
|
|
375
|
+
visit(document, 'Root', true);
|
|
376
|
+
return document;
|
|
377
|
+
};
|
|
378
|
+
/**
|
|
379
|
+
* Reshapes a schema so the typings `json-schema-to-typescript` writes for it
|
|
380
|
+
* stay within what jsii accepts: no `null`, no intersections, no named maps
|
|
381
|
+
* and no inline objects.
|
|
382
|
+
*/
|
|
383
|
+
export const jsiiSchema = (schema) => {
|
|
384
|
+
if (!isObject(schema)) {
|
|
385
|
+
return schema;
|
|
386
|
+
}
|
|
387
|
+
let document = structuredClone(schema);
|
|
388
|
+
document = mapSchema(document, stripNull);
|
|
389
|
+
document = mapSchema(document, unnull);
|
|
390
|
+
document = mapSchema(document, flatten(document));
|
|
391
|
+
document = mapSchema(document, untuple);
|
|
392
|
+
document = mapSchema(document, mapify);
|
|
393
|
+
document = inlineMaps(document);
|
|
394
|
+
return nameInlineObjects(document);
|
|
395
|
+
};
|
|
396
|
+
const prohibited = new Set(['build', 'equals', 'hashcode']);
|
|
397
|
+
/**
|
|
398
|
+
* jsii rejects any member whose name `Case.camel` would change (JSII8002), and
|
|
399
|
+
* a few that clash with generated code (JSII5016). They stay in the typings, as
|
|
400
|
+
* the wire format spells them, but outside the assembly.
|
|
401
|
+
*/
|
|
402
|
+
const isJsiiName = (name) => /^[a-z][a-z0-9]*(?:[A-Z][a-z0-9]*)*$/.test(name) &&
|
|
403
|
+
!prohibited.has(name.toLowerCase());
|
|
404
|
+
const bareDeprecation = /^( *\* @deprecated)$/gm;
|
|
405
|
+
const property = /^ {2}(?:readonly )?("[^"]+"|'[^']+'|[A-Za-z_$][\w$]*)(\?)?:/;
|
|
406
|
+
const indexSignature = /^ {2}(?:readonly )?\[[^\]]+\]:/;
|
|
407
|
+
const ignore = (lines) => {
|
|
408
|
+
const last = lines.length - 1;
|
|
409
|
+
if (lines[last]?.trim() === '*/') {
|
|
410
|
+
lines.splice(last, 0, ' * @jsii ignore');
|
|
411
|
+
}
|
|
412
|
+
else {
|
|
413
|
+
lines.push(' /** @jsii ignore */');
|
|
414
|
+
}
|
|
415
|
+
};
|
|
416
|
+
/**
|
|
417
|
+
* jsii requires a struct's members to be `readonly` (JSII3008). Only the
|
|
418
|
+
* members of exported interfaces are rewritten: after `jsiiSchema` there is no
|
|
419
|
+
* object type left that is written inline.
|
|
420
|
+
*/
|
|
421
|
+
export const jsiiTypings = (source) => {
|
|
422
|
+
const output = [];
|
|
423
|
+
let inInterface = false;
|
|
424
|
+
for (const line of source
|
|
425
|
+
.replaceAll(bareDeprecation, '$1 Deprecated by the schema.')
|
|
426
|
+
.split('\n')) {
|
|
427
|
+
if (!inInterface) {
|
|
428
|
+
inInterface = /^export interface .*\{$/.test(line);
|
|
429
|
+
output.push(line);
|
|
430
|
+
continue;
|
|
431
|
+
}
|
|
432
|
+
if (line === '}') {
|
|
433
|
+
inInterface = false;
|
|
434
|
+
output.push(line);
|
|
435
|
+
continue;
|
|
436
|
+
}
|
|
437
|
+
if (indexSignature.test(line)) {
|
|
438
|
+
ignore(output);
|
|
439
|
+
output.push(line);
|
|
440
|
+
continue;
|
|
441
|
+
}
|
|
442
|
+
const match = property.exec(line);
|
|
443
|
+
if (!match) {
|
|
444
|
+
output.push(line);
|
|
445
|
+
continue;
|
|
446
|
+
}
|
|
447
|
+
if (!isJsiiName(match[1].replace(/^["']|["']$/g, ''))) {
|
|
448
|
+
ignore(output);
|
|
449
|
+
}
|
|
450
|
+
output.push(line.replace(/^ {2}(?:readonly )?/, ' readonly '));
|
|
451
|
+
}
|
|
452
|
+
return output.join('\n');
|
|
453
|
+
};
|
|
454
|
+
//# sourceMappingURL=jsii.js.map
|
package/dist/jsii.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsii.js","sourceRoot":"","sources":["../src/jsii.ts"],"names":[],"mappings":"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"}
|
package/dist/normalize.d.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { JSONSchema } from 'json-schema-to-typescript';
|
|
2
|
+
export type Node = Record<string, unknown>;
|
|
3
|
+
export declare const isObject: (value: unknown) => value is Node;
|
|
4
|
+
export declare const literalKeys: Set<string>;
|
|
5
|
+
export declare const namedSchemaKeys: Set<string>;
|
|
6
|
+
export declare const escapeToken: (name: string) => string;
|
|
7
|
+
export declare const resolvePointer: (document: Node, ref: string) => unknown;
|
|
2
8
|
/**
|
|
3
9
|
* `json-schema-to-typescript` resolves references against draft-07's
|
|
4
10
|
* vocabulary: it only knows `definitions`, and it expects the root to be a
|
package/dist/normalize.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
const isObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
1
|
+
export const isObject = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
2
2
|
// Hold literal instance data rather than nested schemas, so they must not be
|
|
3
3
|
// walked as if they were part of the schema shape.
|
|
4
|
-
const literalKeys = new Set(['const', 'default', 'enum', 'examples']);
|
|
4
|
+
export const literalKeys = new Set(['const', 'default', 'enum', 'examples']);
|
|
5
5
|
// Keyed by name rather than by keyword: a member of one of these called
|
|
6
6
|
// `$defs` is a subschema that happens to be named `$defs`, not a definition
|
|
7
7
|
// block.
|
|
8
|
-
const namedSchemaKeys = new Set([
|
|
8
|
+
export const namedSchemaKeys = new Set([
|
|
9
9
|
'$defs',
|
|
10
10
|
'definitions',
|
|
11
11
|
'dependencies',
|
|
@@ -13,10 +13,10 @@ const namedSchemaKeys = new Set([
|
|
|
13
13
|
'patternProperties',
|
|
14
14
|
'properties',
|
|
15
15
|
]);
|
|
16
|
-
const escapeToken = (name) => name.replaceAll('~', '~0').replaceAll('/', '~1');
|
|
16
|
+
export const escapeToken = (name) => name.replaceAll('~', '~0').replaceAll('/', '~1');
|
|
17
17
|
const unescapeToken = (token) => token.replaceAll('~1', '/').replaceAll('~0', '~');
|
|
18
18
|
const join = (path, token) => path === '' ? token : `${path}/${token}`;
|
|
19
|
-
const resolvePointer = (document, ref) => {
|
|
19
|
+
export const resolvePointer = (document, ref) => {
|
|
20
20
|
if (ref === '#') {
|
|
21
21
|
return document;
|
|
22
22
|
}
|
package/dist/normalize.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"AAQA,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../src/normalize.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "schemastore-to-typescript",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "Fetch JSON schemas from the JSON Schema Store catalog and compile them to TypeScript typings",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -50,10 +50,10 @@
|
|
|
50
50
|
"keyv-file": "5.3.5"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@langri-sha/eslint-config": "0.
|
|
53
|
+
"@langri-sha/eslint-config": "0.11.0",
|
|
54
54
|
"@langri-sha/lint-staged": "0.9.11",
|
|
55
55
|
"@langri-sha/prettier": "0.4.11",
|
|
56
|
-
"@langri-sha/projen-project": "0.
|
|
56
|
+
"@langri-sha/projen-project": "0.48.0",
|
|
57
57
|
"@langri-sha/tsconfig": "1.1.1",
|
|
58
58
|
"@langri-sha/vitest": "0.2.3",
|
|
59
59
|
"@types/debug": "4.1.13",
|
package/readme.md
CHANGED
|
@@ -35,6 +35,35 @@ import { compile } from 'schemastore-to-typescript'
|
|
|
35
35
|
const typings = await compile('swcrc')
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
+
## Usage with jsii
|
|
39
|
+
|
|
40
|
+
Typings exported from the API of a [jsii] package have to fit what jsii can
|
|
41
|
+
represent. Pass `--jsii` for typings that do, and `--type-name` when the root
|
|
42
|
+
interface would share its name with the class that wraps it:
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
schemastore-to-typescript --jsii --type-name RuffSchema ruff src/ruff.ts
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
const typings = await compile('ruff', true, {
|
|
50
|
+
jsii: true,
|
|
51
|
+
typeName: 'RuffSchema',
|
|
52
|
+
})
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
The mode changes the shape of types only as far as jsii requires:
|
|
56
|
+
|
|
57
|
+
- members are `readonly` and `null` is left out of unions
|
|
58
|
+
- objects written inline become named interfaces, and named maps are written
|
|
59
|
+
inline as `{ [k: string]: T }`
|
|
60
|
+
- intersections become a single interface, and tuples become arrays
|
|
61
|
+
- type names spelled in capitals alone, such as `SDK`, become `Sdk`, and so does
|
|
62
|
+
a `--type-name` spelled that way
|
|
63
|
+
- names that aren't camelCase, names jsii reserves and index signatures stay in
|
|
64
|
+
the typings as they are, tagged `@jsii ignore`, so the assembly leaves them
|
|
65
|
+
out
|
|
66
|
+
|
|
38
67
|
## Contributing
|
|
39
68
|
|
|
40
69
|
See [CONTRIBUTING.md] in `langri-sha/github`.
|
|
@@ -44,6 +73,7 @@ See [CONTRIBUTING.md] in `langri-sha/github`.
|
|
|
44
73
|
[`got`]: https://www.npmjs.com/package/got
|
|
45
74
|
[`json-schema-to-typescript`]:
|
|
46
75
|
https://www.npmjs.com/package/json-schema-to-typescript
|
|
76
|
+
[jsii]: https://aws.github.io/jsii/
|
|
47
77
|
[json schema store]: https://www.schemastore.org/
|
|
48
78
|
[json schema store catalog api]:
|
|
49
79
|
https://www.schemastore.org/api/json/catalog.json
|