json-schema-to-typescript
Advanced tools
Comparing version 4.1.2 to 4.1.3
@@ -14,4 +14,4 @@ "use strict"; | ||
}); | ||
rules.set('Add empty `required` property if none is defined', function (schema) { | ||
if (willBeInterface(schema) && !('required' in schema)) { | ||
rules.set('Add empty `required` property if none is defined', function (schema, rootSchema) { | ||
if (stringify(schema) === stringify(rootSchema) && !('required' in schema)) { | ||
schema.required = []; | ||
@@ -21,4 +21,4 @@ } | ||
}); | ||
rules.set('Transform `required`=false to `required`=[]', function (schema) { | ||
if (willBeInterface(schema) && schema.required === false) { | ||
rules.set('Transform `required`=false to `required`=[]', function (schema, rootSchema) { | ||
if (stringify(schema) === stringify(rootSchema) && schema.required === false) { | ||
schema.required = []; | ||
@@ -29,4 +29,4 @@ } | ||
// TODO: default to empty schema (as per spec) instead | ||
rules.set('Default additionalProperties to true', function (schema) { | ||
if (willBeInterface(schema) && !('additionalProperties' in schema)) { | ||
rules.set('Default additionalProperties to true', function (schema, rootSchema) { | ||
if (stringify(schema) === stringify(rootSchema) && !('additionalProperties' in schema)) { | ||
schema.additionalProperties = true; | ||
@@ -51,5 +51,2 @@ } | ||
exports.normalize = normalize; | ||
function willBeInterface(schema) { | ||
return Boolean(schema.id || schema.title || schema.properties || schema.definitions); | ||
} | ||
//# sourceMappingURL=normalizer.js.map |
import { JSONSchema4Type } from 'json-schema'; | ||
import { AST } from './types/AST'; | ||
import { JSONSchema } from './types/JSONSchema'; | ||
export declare function parse(schema: JSONSchema | JSONSchema4Type, rootSchema?: JSONSchema, keyName?: string, processed?: Map<string | number | boolean | object | any[] | JSONSchema | null, AST>): AST; | ||
export declare function parse(schema: JSONSchema | JSONSchema4Type, rootSchema?: JSONSchema, keyName?: string, isSchema?: boolean, processed?: Map<string | number | boolean | object | any[] | JSONSchema | null, AST>): AST; |
@@ -16,4 +16,5 @@ "use strict"; | ||
var utils_1 = require("./utils"); | ||
function parse(schema, rootSchema, keyName, processed) { | ||
function parse(schema, rootSchema, keyName, isSchema, processed) { | ||
if (rootSchema === void 0) { rootSchema = schema; } | ||
if (isSchema === void 0) { isSchema = true; } | ||
if (processed === void 0) { processed = new Map(); } | ||
@@ -32,3 +33,3 @@ // If we've seen this node before, return it. | ||
var set = function (_ast) { return Object.assign(ast, _ast); }; | ||
return isSchema(schema) | ||
return isSchema | ||
? parseNonLiteral(schema, rootSchema, keyName, keyNameFromDefinition, set, processed) | ||
@@ -53,3 +54,3 @@ : parseLiteral(schema, keyName, keyNameFromDefinition, set); | ||
keyName: keyName, | ||
params: schema.allOf.map(function (_) { return parse(_, rootSchema, undefined, processed); }), | ||
params: schema.allOf.map(function (_) { return parse(_, rootSchema, undefined, true, processed); }), | ||
standaloneName: schema.title || keyNameFromDefinition, | ||
@@ -69,3 +70,3 @@ type: 'INTERSECTION' | ||
keyName: keyName, | ||
params: schema.anyOf.map(function (_) { return parse(_, rootSchema, undefined, processed); }), | ||
params: schema.anyOf.map(function (_) { return parse(_, rootSchema, undefined, true, processed); }), | ||
standaloneName: schema.title || keyNameFromDefinition, | ||
@@ -86,3 +87,3 @@ type: 'UNION' | ||
params: schema.enum.map(function (_, n) { return ({ | ||
ast: parse(_, rootSchema, undefined, processed), | ||
ast: parse(_, rootSchema, undefined, false, processed), | ||
keyName: schema.tsEnumNames[n] | ||
@@ -126,3 +127,3 @@ }); }), | ||
keyName: keyName, | ||
params: schema.oneOf.map(function (_) { return parse(_, rootSchema, undefined, processed); }), | ||
params: schema.oneOf.map(function (_) { return parse(_, rootSchema, undefined, true, processed); }), | ||
standaloneName: schema.title || keyNameFromDefinition, | ||
@@ -145,3 +146,3 @@ type: 'UNION' | ||
keyName: keyName, | ||
params: schema.items.map(function (_) { return parse(_, rootSchema, undefined, processed); }), | ||
params: schema.items.map(function (_) { return parse(_, rootSchema, undefined, true, processed); }), | ||
standaloneName: schema.title || keyNameFromDefinition, | ||
@@ -155,3 +156,3 @@ type: 'TUPLE' | ||
keyName: keyName, | ||
params: parse(schema.items, rootSchema, undefined, processed), | ||
params: parse(schema.items, rootSchema, undefined, true, processed), | ||
standaloneName: schema.title || keyNameFromDefinition, | ||
@@ -165,3 +166,3 @@ type: 'ARRAY' | ||
keyName: keyName, | ||
params: schema.type.map(function (_) { return parse({ required: [], type: _ }, rootSchema, undefined, processed); }), | ||
params: schema.type.map(function (_) { return parse({ type: _ }, rootSchema, undefined, true, processed); }), | ||
standaloneName: schema.title || keyNameFromDefinition, | ||
@@ -174,3 +175,3 @@ type: 'UNION' | ||
keyName: keyName, | ||
params: schema.enum.map(function (_) { return parse(_, rootSchema, undefined, processed); }), | ||
params: schema.enum.map(function (_) { return parse(_, rootSchema, undefined, false, processed); }), | ||
standaloneName: schema.title || keyNameFromDefinition, | ||
@@ -209,3 +210,3 @@ type: 'UNION' | ||
var asts = lodash_1.map(schema.properties, function (value, key) { return ({ | ||
ast: parse(value, rootSchema, key, processed), | ||
ast: parse(value, rootSchema, key, true, processed), | ||
isRequired: lodash_1.includes(schema.required || [], key), | ||
@@ -229,3 +230,3 @@ keyName: key | ||
return asts.concat({ | ||
ast: parse(schema.additionalProperties, rootSchema, '[k: string]', processed), | ||
ast: parse(schema.additionalProperties, rootSchema, '[k: string]', true, processed), | ||
isRequired: true, | ||
@@ -239,3 +240,4 @@ keyName: '[k: string]' | ||
*/ | ||
function getDefinitions(schema, processed) { | ||
function getDefinitions(schema, isSchema, processed) { | ||
if (isSchema === void 0) { isSchema = true; } | ||
if (processed === void 0) { processed = new Set(); } | ||
@@ -247,6 +249,6 @@ if (processed.has(schema)) { | ||
if (Array.isArray(schema)) { | ||
return schema.reduce(function (prev, cur) { return (__assign({}, prev, getDefinitions(cur, processed))); }, {}); | ||
return schema.reduce(function (prev, cur) { return (__assign({}, prev, getDefinitions(cur, false, processed))); }, {}); | ||
} | ||
if (lodash_1.isPlainObject(schema)) { | ||
return __assign({}, (hasDefinitions(schema) ? schema.definitions : {}), Object.keys(schema).reduce(function (prev, cur) { return (__assign({}, prev, getDefinitions(schema[cur], processed))); }, {})); | ||
return __assign({}, (isSchema && hasDefinitions(schema) ? schema.definitions : {}), Object.keys(schema).reduce(function (prev, cur) { return (__assign({}, prev, getDefinitions(schema[cur], false, processed))); }, {})); | ||
} | ||
@@ -259,9 +261,4 @@ return {}; | ||
function hasDefinitions(schema) { | ||
return lodash_1.isPlainObject(schema) | ||
&& 'definitions' in schema | ||
&& Object.keys(schema.definitions).every(function (_) { return lodash_1.isPlainObject(schema.definitions[_]); }); | ||
return 'definitions' in schema; | ||
} | ||
function isSchema(schema) { | ||
return lodash_1.isPlainObject(schema); | ||
} | ||
//# sourceMappingURL=parser.js.map |
{ | ||
"name": "json-schema-to-typescript", | ||
"version": "4.1.2", | ||
"version": "4.1.3", | ||
"description": "compile json schema to typescript typings", | ||
@@ -78,2 +78,3 @@ "main": "dist/src/index.js", | ||
"./dist/test/e2e/*.js", | ||
"./dist/test/normalizer/*.json", | ||
"./dist/src/*.js", | ||
@@ -80,0 +81,0 @@ "./test/resources/*.json" |
@@ -17,4 +17,4 @@ import { whiteBright } from 'cli-color' | ||
rules.set('Add empty `required` property if none is defined', schema => { | ||
if (willBeInterface(schema) && !('required' in schema)) { | ||
rules.set('Add empty `required` property if none is defined', (schema, rootSchema) => { | ||
if (stringify(schema) === stringify(rootSchema) && !('required' in schema)) { | ||
schema.required = [] | ||
@@ -25,4 +25,4 @@ } | ||
rules.set('Transform `required`=false to `required`=[]', schema => { | ||
if (willBeInterface(schema) && schema.required === false) { | ||
rules.set('Transform `required`=false to `required`=[]', (schema, rootSchema) => { | ||
if (stringify(schema) === stringify(rootSchema) && schema.required === false) { | ||
schema.required = [] | ||
@@ -34,4 +34,4 @@ } | ||
// TODO: default to empty schema (as per spec) instead | ||
rules.set('Default additionalProperties to true', schema => { | ||
if (willBeInterface(schema) && !('additionalProperties' in schema)) { | ||
rules.set('Default additionalProperties to true', (schema, rootSchema) => { | ||
if (stringify(schema) === stringify(rootSchema) && !('additionalProperties' in schema)) { | ||
schema.additionalProperties = true | ||
@@ -57,5 +57,1 @@ } | ||
} | ||
function willBeInterface(schema: JSONSchema) { | ||
return Boolean(schema.id || schema.title || schema.properties || schema.definitions) | ||
} |
@@ -13,2 +13,3 @@ import { whiteBright } from 'cli-color' | ||
keyName?: string, | ||
isSchema = true, | ||
processed = new Map<JSONSchema | JSONSchema4Type, AST>() | ||
@@ -32,4 +33,4 @@ ): AST { | ||
return isSchema(schema) | ||
? parseNonLiteral(schema, rootSchema, keyName, keyNameFromDefinition, set, processed) | ||
return isSchema | ||
? parseNonLiteral(schema as SchemaSchema, rootSchema, keyName, keyNameFromDefinition, set, processed) | ||
: parseLiteral(schema, keyName, keyNameFromDefinition, set) | ||
@@ -68,3 +69,3 @@ } | ||
keyName, | ||
params: schema.allOf!.map(_ => parse(_, rootSchema, undefined, processed)), | ||
params: schema.allOf!.map(_ => parse(_, rootSchema, undefined, true, processed)), | ||
standaloneName: schema.title || keyNameFromDefinition, | ||
@@ -84,3 +85,3 @@ type: 'INTERSECTION' | ||
keyName, | ||
params: schema.anyOf!.map(_ => parse(_, rootSchema, undefined, processed)), | ||
params: schema.anyOf!.map(_ => parse(_, rootSchema, undefined, true, processed)), | ||
standaloneName: schema.title || keyNameFromDefinition, | ||
@@ -101,3 +102,3 @@ type: 'UNION' | ||
params: schema.enum!.map((_, n) => ({ | ||
ast: parse(_, rootSchema, undefined, processed), | ||
ast: parse(_, rootSchema, undefined, false, processed), | ||
keyName: schema.tsEnumNames![n] | ||
@@ -141,3 +142,3 @@ })), | ||
keyName, | ||
params: schema.oneOf!.map(_ => parse(_, rootSchema, undefined, processed)), | ||
params: schema.oneOf!.map(_ => parse(_, rootSchema, undefined, true, processed)), | ||
standaloneName: schema.title || keyNameFromDefinition, | ||
@@ -160,3 +161,3 @@ type: 'UNION' | ||
keyName, | ||
params: schema.items.map(_ => parse(_, rootSchema, undefined, processed)), | ||
params: schema.items.map(_ => parse(_, rootSchema, undefined, true, processed)), | ||
standaloneName: schema.title || keyNameFromDefinition, | ||
@@ -169,3 +170,3 @@ type: 'TUPLE' | ||
keyName, | ||
params: parse(schema.items!, rootSchema, undefined, processed), | ||
params: parse(schema.items!, rootSchema, undefined, true, processed), | ||
standaloneName: schema.title || keyNameFromDefinition, | ||
@@ -179,3 +180,3 @@ type: 'ARRAY' | ||
keyName, | ||
params: (schema.type as JSONSchema4TypeName[]).map(_ => parse({ required: [], type: _ }, rootSchema, undefined, processed)), | ||
params: (schema.type as JSONSchema4TypeName[]).map(_ => parse({ type: _ }, rootSchema, undefined, true, processed)), | ||
standaloneName: schema.title || keyNameFromDefinition, | ||
@@ -188,3 +189,3 @@ type: 'UNION' | ||
keyName, | ||
params: schema.enum!.map(_ => parse(_, rootSchema, undefined, processed)), | ||
params: schema.enum!.map(_ => parse(_, rootSchema, undefined, false, processed)), | ||
standaloneName: schema.title || keyNameFromDefinition, | ||
@@ -230,3 +231,3 @@ type: 'UNION' | ||
const asts = map(schema.properties, (value, key: string) => ({ | ||
ast: parse(value, rootSchema, key, processed), | ||
ast: parse(value, rootSchema, key, true, processed), | ||
isRequired: includes(schema.required || [], key), | ||
@@ -253,3 +254,3 @@ keyName: key | ||
return asts.concat({ | ||
ast: parse(schema.additionalProperties, rootSchema, '[k: string]', processed), | ||
ast: parse(schema.additionalProperties, rootSchema, '[k: string]', true, processed), | ||
isRequired: true, | ||
@@ -266,3 +267,7 @@ keyName: '[k: string]' | ||
*/ | ||
function getDefinitions(schema: JSONSchema, processed = new Set<JSONSchema>()): Definitions { | ||
function getDefinitions( | ||
schema: JSONSchema, | ||
isSchema = true, | ||
processed = new Set<JSONSchema>() | ||
): Definitions { | ||
if (processed.has(schema)) { | ||
@@ -275,3 +280,3 @@ return {} | ||
...prev, | ||
...getDefinitions(cur, processed) | ||
...getDefinitions(cur, false, processed) | ||
}), {}) | ||
@@ -281,6 +286,6 @@ } | ||
return { | ||
...(hasDefinitions(schema) ? schema.definitions! : {}), | ||
...(isSchema && hasDefinitions(schema) ? schema.definitions : {}), | ||
...Object.keys(schema).reduce<Definitions>((prev, cur) => ({ | ||
...prev, | ||
...getDefinitions(schema[cur], processed) | ||
...getDefinitions(schema[cur], false, processed) | ||
}), {}) | ||
@@ -296,9 +301,3 @@ } | ||
function hasDefinitions(schema: JSONSchema): schema is JSONSchemaWithDefinitions { | ||
return isPlainObject(schema) | ||
&& 'definitions' in schema | ||
&& Object.keys(schema.definitions).every(_ => isPlainObject(schema.definitions![_])) | ||
return 'definitions' in schema | ||
} | ||
function isSchema(schema: JSONSchema | JSONSchema4Type): schema is JSONSchema { | ||
return isPlainObject(schema) | ||
} |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
130
64959
2294719
9