Socket
Socket
Sign inDemoInstall

json-schema-to-typescript

Package Overview
Dependencies
Maintainers
1
Versions
114
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

json-schema-to-typescript - npm Package Compare versions

Comparing version 4.1.2 to 4.1.3

dist/test/e2e/deep.d.ts

15

dist/src/normalizer.js

@@ -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

2

dist/src/parser.d.ts
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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc