From c1a8e0d1c0178829c6a9b6f73006b521298b0c97 Mon Sep 17 00:00:00 2001 From: James Date: Wed, 17 Nov 2021 09:57:33 -0500 Subject: [PATCH 1/3] feat: adds disableUnionDeduplication option --- src/index.ts | 9 +++-- src/optimizer.ts | 35 ++++++++++--------- test/e2e/options.disableUnionDeduplication.ts | 22 ++++++++++++ 3 files changed, 48 insertions(+), 18 deletions(-) create mode 100644 test/e2e/options.disableUnionDeduplication.ts diff --git a/src/index.ts b/src/index.ts index cacc4118..57107fe1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -64,6 +64,10 @@ export interface Options { * [$RefParser](https://github.com/BigstickCarpet/json-schema-ref-parser) Options, used when resolving `$ref`s */ $refOptions: $RefOptions + /** + * Performance optimization to disable union type de-duplication. + */ + disableUnionDeduplication: boolean } export const DEFAULT_OPTIONS: Options = { @@ -90,7 +94,8 @@ export const DEFAULT_OPTIONS: Options = { useTabs: false }, unreachableDefinitions: false, - unknownAny: true + unknownAny: true, + disableUnionDeduplication: false, } export function compileFromFile(filename: string, options: Partial = DEFAULT_OPTIONS): Promise { @@ -157,7 +162,7 @@ export async function compile(schema: JSONSchema4, name: string, options: Partia const parsed = parse(normalized, _options) log('blue', 'parser', time(), '✅ Result:', parsed) - const optimized = optimize(parsed) + const optimized = optimize(parsed, _options) if (process.env.VERBOSE) { if (isDeepStrictEqual(parsed, optimized)) { log('cyan', 'optimizer', time(), '✅ No change') diff --git a/src/optimizer.ts b/src/optimizer.ts index b96f8a73..d0c24ec0 100644 --- a/src/optimizer.ts +++ b/src/optimizer.ts @@ -1,9 +1,10 @@ import stringify = require('json-stringify-safe') import {uniqBy} from 'lodash' import {AST, T_ANY, T_UNKNOWN} from './types/AST' +import {Options} from './' import {log} from './utils' -export function optimize(ast: AST, processed = new Set()): AST { +export function optimize(ast: AST, options: Options, processed = new Set()): AST { log('cyan', 'optimizer', ast, processed.has(ast) ? '(FROM CACHE)' : '') if (processed.has(ast)) { @@ -15,7 +16,7 @@ export function optimize(ast: AST, processed = new Set()): AST { switch (ast.type) { case 'INTERFACE': return Object.assign(ast, { - params: ast.params.map(_ => Object.assign(_, {ast: optimize(_.ast, processed)})) + params: ast.params.map(_ => Object.assign(_, {ast: optimize(_.ast, options, processed)})) }) case 'INTERSECTION': case 'UNION': @@ -31,23 +32,25 @@ export function optimize(ast: AST, processed = new Set()): AST { return T_UNKNOWN } - // [A, B, B] -> [A, B] - const shouldTakeStandaloneNameIntoAccount = ast.params.filter(_ => _.standaloneName).length > 1 - const params = uniqBy( - ast.params, - _ => ` - ${_.type}- - ${shouldTakeStandaloneNameIntoAccount ? _.standaloneName : ''}- - ${stringify((_ as any).params)} - ` - ) - if (params.length !== ast.params.length) { - log('cyan', 'optimizer', '[A, B, B] -> [A, B]', ast) - ast.params = params + if (!options.disableUnionDeduplication) { + // [A, B, B] -> [A, B] + const shouldTakeStandaloneNameIntoAccount = ast.params.filter(_ => _.standaloneName).length > 1 + const params = uniqBy( + ast.params, + _ => ` + ${_.type}- + ${shouldTakeStandaloneNameIntoAccount ? _.standaloneName : ''}- + ${stringify((_ as any).params)} + ` + ) + if (params.length !== ast.params.length) { + log('cyan', 'optimizer', '[A, B, B] -> [A, B]', ast) + ast.params = params + } } return Object.assign(ast, { - params: ast.params.map(_ => optimize(_, processed)) + params: ast.params.map(_ => optimize(_, options, processed)) }) default: return ast diff --git a/test/e2e/options.disableUnionDeduplication.ts b/test/e2e/options.disableUnionDeduplication.ts new file mode 100644 index 00000000..501fbaa7 --- /dev/null +++ b/test/e2e/options.disableUnionDeduplication.ts @@ -0,0 +1,22 @@ +export const input = { + title: 'UnionDeduplicationDisabled', + type: 'object', + properties: { + union: { + oneOf: [ + { + type: 'string' + }, + { + type: 'string' + } + ] + } + } +} + +export const options = { + disableUnionDeduplication: true +} + +export const only = true From d9aea33590dbe5312a4ad65069ebd2dd902bf870 Mon Sep 17 00:00:00 2001 From: James Date: Wed, 17 Nov 2021 11:24:31 -0500 Subject: [PATCH 2/3] test: adds disableUnionDeduplication tests --- test/__snapshots__/test/test.ts.md | 311 +++++++++--------- test/__snapshots__/test/test.ts.snap | Bin 31153 -> 31206 bytes test/e2e/options.disableUnionDeduplication.ts | 2 - 3 files changed, 164 insertions(+), 149 deletions(-) diff --git a/test/__snapshots__/test/test.ts.md b/test/__snapshots__/test/test.ts.md index 7e03a2c8..00c5fb43 100644 --- a/test/__snapshots__/test/test.ts.md +++ b/test/__snapshots__/test/test.ts.md @@ -4,6 +4,23 @@ The actual snapshot is saved in `test.ts.snap`. Generated by [AVA](https://avajs.dev). +## options.disableUnionDeduplication.js + +> Expected output to match snapshot for e2e test: options.disableUnionDeduplication.js + + `/* tslint:disable */␊ + /**␊ + * This file was automatically generated by json-schema-to-typescript.␊ + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊ + * and run json-schema-to-typescript to regenerate this file.␊ + */␊ + ␊ + export interface UnionDeduplicationDisabled {␊ + union?: string | string;␊ + [k: string]: unknown;␊ + }␊ + ` + ## JSONSchema.js > Expected output to match snapshot for e2e test: JSONSchema.js @@ -5682,6 +5699,142 @@ Generated by [AVA](https://avajs.dev). }␊ ` +## realWorld.jsonschema.js + +> Expected output to match snapshot for e2e test: realWorld.jsonschema.js + + `/* tslint:disable */␊ + /**␊ + * This file was automatically generated by json-schema-to-typescript.␊ + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊ + * and run json-schema-to-typescript to regenerate this file.␊ + */␊ + ␊ + export type CoreSchemaMetaSchema = CoreSchemaMetaSchema1 & CoreSchemaMetaSchema2;␊ + export type NonNegativeInteger = number;␊ + export type NonNegativeIntegerDefault0 = NonNegativeInteger;␊ + export type CoreSchemaMetaSchema2 =␊ + | {␊ + $id?: string;␊ + $schema?: string;␊ + $ref?: string;␊ + $comment?: string;␊ + title?: string;␊ + description?: string;␊ + default?: true;␊ + readOnly?: boolean;␊ + writeOnly?: boolean;␊ + examples?: true[];␊ + multipleOf?: number;␊ + maximum?: number;␊ + exclusiveMaximum?: number;␊ + minimum?: number;␊ + exclusiveMinimum?: number;␊ + maxLength?: NonNegativeInteger;␊ + minLength?: NonNegativeIntegerDefault0;␊ + pattern?: string;␊ + additionalItems?: CoreSchemaMetaSchema2;␊ + items?: CoreSchemaMetaSchema2 | SchemaArray;␊ + maxItems?: NonNegativeInteger;␊ + minItems?: NonNegativeIntegerDefault0;␊ + uniqueItems?: boolean;␊ + contains?: CoreSchemaMetaSchema2;␊ + maxProperties?: NonNegativeInteger;␊ + minProperties?: NonNegativeIntegerDefault0;␊ + required?: StringArray;␊ + additionalProperties?: CoreSchemaMetaSchema2;␊ + definitions?: {␊ + [k: string]: CoreSchemaMetaSchema2;␊ + };␊ + properties?: {␊ + [k: string]: CoreSchemaMetaSchema2;␊ + };␊ + patternProperties?: {␊ + [k: string]: CoreSchemaMetaSchema2;␊ + };␊ + dependencies?: {␊ + [k: string]: CoreSchemaMetaSchema2 | StringArray;␊ + };␊ + propertyNames?: CoreSchemaMetaSchema2;␊ + const?: true;␊ + enum?: [true, ...unknown[]];␊ + type?: SimpleTypes | [SimpleTypes, ...SimpleTypes[]];␊ + format?: string;␊ + contentMediaType?: string;␊ + contentEncoding?: string;␊ + if?: CoreSchemaMetaSchema2;␊ + then?: CoreSchemaMetaSchema2;␊ + else?: CoreSchemaMetaSchema2;␊ + allOf?: SchemaArray;␊ + anyOf?: SchemaArray;␊ + oneOf?: SchemaArray;␊ + not?: CoreSchemaMetaSchema2;␊ + [k: string]: unknown;␊ + }␊ + | boolean;␊ + export type SchemaArray = [CoreSchemaMetaSchema2, ...CoreSchemaMetaSchema2[]];␊ + export type StringArray = string[];␊ + export type SimpleTypes = "array" | "boolean" | "integer" | "null" | "number" | "object" | "string";␊ + ␊ + export interface CoreSchemaMetaSchema1 {␊ + $id?: string;␊ + $schema?: string;␊ + $ref?: string;␊ + $comment?: string;␊ + title?: string;␊ + description?: string;␊ + default?: true;␊ + readOnly?: boolean;␊ + writeOnly?: boolean;␊ + examples?: true[];␊ + multipleOf?: number;␊ + maximum?: number;␊ + exclusiveMaximum?: number;␊ + minimum?: number;␊ + exclusiveMinimum?: number;␊ + maxLength?: NonNegativeInteger;␊ + minLength?: NonNegativeIntegerDefault0;␊ + pattern?: string;␊ + additionalItems?: CoreSchemaMetaSchema2;␊ + items?: CoreSchemaMetaSchema2 | SchemaArray;␊ + maxItems?: NonNegativeInteger;␊ + minItems?: NonNegativeIntegerDefault0;␊ + uniqueItems?: boolean;␊ + contains?: CoreSchemaMetaSchema2;␊ + maxProperties?: NonNegativeInteger;␊ + minProperties?: NonNegativeIntegerDefault0;␊ + required?: StringArray;␊ + additionalProperties?: CoreSchemaMetaSchema2;␊ + definitions?: {␊ + [k: string]: CoreSchemaMetaSchema2;␊ + };␊ + properties?: {␊ + [k: string]: CoreSchemaMetaSchema2;␊ + };␊ + patternProperties?: {␊ + [k: string]: CoreSchemaMetaSchema2;␊ + };␊ + dependencies?: {␊ + [k: string]: CoreSchemaMetaSchema2 | StringArray;␊ + };␊ + propertyNames?: CoreSchemaMetaSchema2;␊ + const?: true;␊ + enum?: [true, ...unknown[]];␊ + type?: SimpleTypes | [SimpleTypes, ...SimpleTypes[]];␊ + format?: string;␊ + contentMediaType?: string;␊ + contentEncoding?: string;␊ + if?: CoreSchemaMetaSchema2;␊ + then?: CoreSchemaMetaSchema2;␊ + else?: CoreSchemaMetaSchema2;␊ + allOf?: SchemaArray;␊ + anyOf?: SchemaArray;␊ + oneOf?: SchemaArray;␊ + not?: CoreSchemaMetaSchema2;␊ + [k: string]: unknown;␊ + }␊ + ` + ## realWorld.openapi.js > Expected output to match snapshot for e2e test: realWorld.openapi.js @@ -8314,6 +8467,17 @@ Generated by [AVA](https://avajs.dev). "required": []␊ }` +## Normalize empty const to singleton enum + +> Snapshot 1 + + `{␊ + "id": "foo",␊ + "enum": [␊ + ""␊ + ]␊ + }` + ## Non object items.items > Snapshot 1 @@ -8874,150 +9038,3 @@ Generated by [AVA](https://avajs.dev). "additionalProperties": false,␊ "required": []␊ }` - -## realWorld.jsonschema.js - -> Expected output to match snapshot for e2e test: realWorld.jsonschema.js - - `/* tslint:disable */␊ - /**␊ - * This file was automatically generated by json-schema-to-typescript.␊ - * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,␊ - * and run json-schema-to-typescript to regenerate this file.␊ - */␊ - ␊ - export type CoreSchemaMetaSchema = CoreSchemaMetaSchema1 & CoreSchemaMetaSchema2;␊ - export type NonNegativeInteger = number;␊ - export type NonNegativeIntegerDefault0 = NonNegativeInteger;␊ - export type CoreSchemaMetaSchema2 =␊ - | {␊ - $id?: string;␊ - $schema?: string;␊ - $ref?: string;␊ - $comment?: string;␊ - title?: string;␊ - description?: string;␊ - default?: true;␊ - readOnly?: boolean;␊ - writeOnly?: boolean;␊ - examples?: true[];␊ - multipleOf?: number;␊ - maximum?: number;␊ - exclusiveMaximum?: number;␊ - minimum?: number;␊ - exclusiveMinimum?: number;␊ - maxLength?: NonNegativeInteger;␊ - minLength?: NonNegativeIntegerDefault0;␊ - pattern?: string;␊ - additionalItems?: CoreSchemaMetaSchema2;␊ - items?: CoreSchemaMetaSchema2 | SchemaArray;␊ - maxItems?: NonNegativeInteger;␊ - minItems?: NonNegativeIntegerDefault0;␊ - uniqueItems?: boolean;␊ - contains?: CoreSchemaMetaSchema2;␊ - maxProperties?: NonNegativeInteger;␊ - minProperties?: NonNegativeIntegerDefault0;␊ - required?: StringArray;␊ - additionalProperties?: CoreSchemaMetaSchema2;␊ - definitions?: {␊ - [k: string]: CoreSchemaMetaSchema2;␊ - };␊ - properties?: {␊ - [k: string]: CoreSchemaMetaSchema2;␊ - };␊ - patternProperties?: {␊ - [k: string]: CoreSchemaMetaSchema2;␊ - };␊ - dependencies?: {␊ - [k: string]: CoreSchemaMetaSchema2 | StringArray;␊ - };␊ - propertyNames?: CoreSchemaMetaSchema2;␊ - const?: true;␊ - enum?: [true, ...unknown[]];␊ - type?: SimpleTypes | [SimpleTypes, ...SimpleTypes[]];␊ - format?: string;␊ - contentMediaType?: string;␊ - contentEncoding?: string;␊ - if?: CoreSchemaMetaSchema2;␊ - then?: CoreSchemaMetaSchema2;␊ - else?: CoreSchemaMetaSchema2;␊ - allOf?: SchemaArray;␊ - anyOf?: SchemaArray;␊ - oneOf?: SchemaArray;␊ - not?: CoreSchemaMetaSchema2;␊ - [k: string]: unknown;␊ - }␊ - | boolean;␊ - export type SchemaArray = [CoreSchemaMetaSchema2, ...CoreSchemaMetaSchema2[]];␊ - export type StringArray = string[];␊ - export type SimpleTypes = "array" | "boolean" | "integer" | "null" | "number" | "object" | "string";␊ - ␊ - export interface CoreSchemaMetaSchema1 {␊ - $id?: string;␊ - $schema?: string;␊ - $ref?: string;␊ - $comment?: string;␊ - title?: string;␊ - description?: string;␊ - default?: true;␊ - readOnly?: boolean;␊ - writeOnly?: boolean;␊ - examples?: true[];␊ - multipleOf?: number;␊ - maximum?: number;␊ - exclusiveMaximum?: number;␊ - minimum?: number;␊ - exclusiveMinimum?: number;␊ - maxLength?: NonNegativeInteger;␊ - minLength?: NonNegativeIntegerDefault0;␊ - pattern?: string;␊ - additionalItems?: CoreSchemaMetaSchema2;␊ - items?: CoreSchemaMetaSchema2 | SchemaArray;␊ - maxItems?: NonNegativeInteger;␊ - minItems?: NonNegativeIntegerDefault0;␊ - uniqueItems?: boolean;␊ - contains?: CoreSchemaMetaSchema2;␊ - maxProperties?: NonNegativeInteger;␊ - minProperties?: NonNegativeIntegerDefault0;␊ - required?: StringArray;␊ - additionalProperties?: CoreSchemaMetaSchema2;␊ - definitions?: {␊ - [k: string]: CoreSchemaMetaSchema2;␊ - };␊ - properties?: {␊ - [k: string]: CoreSchemaMetaSchema2;␊ - };␊ - patternProperties?: {␊ - [k: string]: CoreSchemaMetaSchema2;␊ - };␊ - dependencies?: {␊ - [k: string]: CoreSchemaMetaSchema2 | StringArray;␊ - };␊ - propertyNames?: CoreSchemaMetaSchema2;␊ - const?: true;␊ - enum?: [true, ...unknown[]];␊ - type?: SimpleTypes | [SimpleTypes, ...SimpleTypes[]];␊ - format?: string;␊ - contentMediaType?: string;␊ - contentEncoding?: string;␊ - if?: CoreSchemaMetaSchema2;␊ - then?: CoreSchemaMetaSchema2;␊ - else?: CoreSchemaMetaSchema2;␊ - allOf?: SchemaArray;␊ - anyOf?: SchemaArray;␊ - oneOf?: SchemaArray;␊ - not?: CoreSchemaMetaSchema2;␊ - [k: string]: unknown;␊ - }␊ - ` - -## Normalize empty const to singleton enum - -> Snapshot 1 - - `{␊ - "id": "foo",␊ - "enum": [␊ - ""␊ - ]␊ - }` diff --git a/test/__snapshots__/test/test.ts.snap b/test/__snapshots__/test/test.ts.snap index 32b63915c59ba6779cd2abefc8669173a08f98ab..47c23451eddfda56cbdb21ea8a042faa5e376bdf 100644 GIT binary patch delta 30709 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 zද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 diff --git a/test/e2e/options.disableUnionDeduplication.ts b/test/e2e/options.disableUnionDeduplication.ts index 501fbaa7..08186b93 100644 --- a/test/e2e/options.disableUnionDeduplication.ts +++ b/test/e2e/options.disableUnionDeduplication.ts @@ -18,5 +18,3 @@ export const input = { export const options = { disableUnionDeduplication: true } - -export const only = true From 10c668e20c8b4417528f2c072582fe6309fd0424 Mon Sep 17 00:00:00 2001 From: James Date: Wed, 17 Nov 2021 11:26:30 -0500 Subject: [PATCH 3/3] chore: readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 51f857da..d4dc85ee 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,7 @@ See [server demo](example) and [browser demo](https://github.com/bcherny/json-sc | bannerComment | string | `"/* tslint:disable */\n/**\n* This file was automatically generated by json-schema-to-typescript.\n* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,\n* and run json-schema-to-typescript to regenerate this file.\n*/"` | Disclaimer comment prepended to the top of each generated file | | cwd | string | `process.cwd()` | Root directory for resolving [`$ref`](https://tools.ietf.org/id/draft-pbryan-zyp-json-ref-03.html)s | | declareExternallyReferenced | boolean | `true` | Declare external schemas referenced via `$ref`? | +| disableUnionDeduplication | boolean | `false` | Performance optimization to disable union type de-duplication. | | enableConstEnums | boolean | `true` | Prepend enums with [`const`](https://www.typescriptlang.org/docs/handbook/enums.html#computed-and-constant-members)? | | format | boolean | `true` | Format code? Set this to `false` to improve performance. | | ignoreMinAndMaxItems | boolean | `false` | Ignore maxItems and minItems for `array` types, preventing tuples being generated. |