From d5de829fbbcb720a3e1ab95397713f8ea8a92c5c Mon Sep 17 00:00:00 2001 From: notaphplover Date: Thu, 21 Sep 2023 20:53:09 +0200 Subject: [PATCH] refactor(ajsttil): update TypeMetadata without xor metadata --- packages/transformers/ajsttil/src/index.ts | 109 ++++++------------ .../src/metadata/models/TypeMetadata.ts | 74 ++++++++++++ .../calculations/transformJsonSchema.spec.ts | 6 +- .../calculations/transformJsonSchema.ts | 6 +- 4 files changed, 118 insertions(+), 77 deletions(-) create mode 100644 packages/transformers/ajsttil/src/metadata/models/TypeMetadata.ts diff --git a/packages/transformers/ajsttil/src/index.ts b/packages/transformers/ajsttil/src/index.ts index eac6e30..b042bfb 100644 --- a/packages/transformers/ajsttil/src/index.ts +++ b/packages/transformers/ajsttil/src/index.ts @@ -1,77 +1,36 @@ -import { JsonValue } from '@cuaklabs/json-schema-types'; +import { + AndTypeMetadata, + AnyTypeMetadata, + ArrayTypeMetadata, + BooleanTypeMetadata, + FloatTypeMetadata, + IntegerTypeMetadata, + LiteralTypeMetadata, + NoneTypeMetadata, + ObjectTypeMetadata, + OrTypeMetadata, + PropertyTypeMetadata, + StringIndexSignatureType, + StringTypeMetadata, + TypeMedatata, + TypeMetadataKind, +} from './metadata/models/TypeMetadata'; -export enum TypeMetadataKind { - and, - anyType, - arrayType, - booleanType, - floatType, - integerType, - literalType, - noneType, - objectType, - or, - propertyType, - stringIndexSignatureType, - stringType, - xor, -} +export type { + AndTypeMetadata, + AnyTypeMetadata, + ArrayTypeMetadata, + BooleanTypeMetadata, + FloatTypeMetadata, + IntegerTypeMetadata, + LiteralTypeMetadata, + NoneTypeMetadata, + ObjectTypeMetadata, + OrTypeMetadata, + PropertyTypeMetadata, + StringIndexSignatureType, + StringTypeMetadata, + TypeMedatata, +}; -export interface BaseTypeMetadata { - id?: string; - kind: TKind; -} - -export interface OneChildTypeMetadata - extends BaseTypeMetadata { - child: TypeMedatata; -} - -export interface ManyChildrenTypeMetadata< - TKind extends TypeMetadataKind, - TChildren extends TypeMedatata[] = TypeMedatata[], -> extends BaseTypeMetadata { - children: TChildren; -} - -export type AndTypeMetadata = ManyChildrenTypeMetadata; -export type AnyTypeMetadata = BaseTypeMetadata; -export type ArrayTypeMetadata = - OneChildTypeMetadata; -export type BooleanTypeMetadata = - BaseTypeMetadata; -export type FloatTypeMetadata = BaseTypeMetadata; -export type IntegerTypeMetadata = - BaseTypeMetadata; -export interface LiteralTypeMetadata - extends BaseTypeMetadata { - literal: JsonValue; -} -export type NoneTypeMetadata = BaseTypeMetadata; -export type ObjectTypeMetadata = BaseTypeMetadata; -export type OrTypeMetadata = ManyChildrenTypeMetadata; -export interface PropertyTypeMetadata - extends OneChildTypeMetadata { - isOptional: boolean; - property: string; -} -export type StringIndexSignatureType = - OneChildTypeMetadata; -export type StringTypeMetadata = BaseTypeMetadata; -export type XorTypeMetadata = ManyChildrenTypeMetadata; - -export type TypeMedatata = - | AndTypeMetadata - | AnyTypeMetadata - | ArrayTypeMetadata - | BooleanTypeMetadata - | FloatTypeMetadata - | IntegerTypeMetadata - | LiteralTypeMetadata - | NoneTypeMetadata - | ObjectTypeMetadata - | OrTypeMetadata - | PropertyTypeMetadata - | StringIndexSignatureType - | StringTypeMetadata - | XorTypeMetadata; +export { TypeMetadataKind }; diff --git a/packages/transformers/ajsttil/src/metadata/models/TypeMetadata.ts b/packages/transformers/ajsttil/src/metadata/models/TypeMetadata.ts new file mode 100644 index 0000000..d254f00 --- /dev/null +++ b/packages/transformers/ajsttil/src/metadata/models/TypeMetadata.ts @@ -0,0 +1,74 @@ +import { JsonValue } from '@cuaklabs/json-schema-types'; + +export enum TypeMetadataKind { + and, + anyType, + arrayType, + booleanType, + floatType, + integerType, + literalType, + noneType, + objectType, + or, + propertyType, + stringIndexSignatureType, + stringType, +} + +export interface BaseTypeMetadata { + id?: string; + kind: TKind; +} + +export interface OneChildTypeMetadata + extends BaseTypeMetadata { + child: TypeMedatata; +} + +export interface ManyChildrenTypeMetadata< + TKind extends TypeMetadataKind, + TChildren extends TypeMedatata[] = TypeMedatata[], +> extends BaseTypeMetadata { + children: TChildren; +} + +export type AndTypeMetadata = ManyChildrenTypeMetadata; +export type AnyTypeMetadata = BaseTypeMetadata; +export type ArrayTypeMetadata = + OneChildTypeMetadata; +export type BooleanTypeMetadata = + BaseTypeMetadata; +export type FloatTypeMetadata = BaseTypeMetadata; +export type IntegerTypeMetadata = + BaseTypeMetadata; +export interface LiteralTypeMetadata + extends BaseTypeMetadata { + literal: JsonValue; +} +export type NoneTypeMetadata = BaseTypeMetadata; +export type ObjectTypeMetadata = BaseTypeMetadata; +export type OrTypeMetadata = ManyChildrenTypeMetadata; +export interface PropertyTypeMetadata + extends OneChildTypeMetadata { + isOptional: boolean; + property: string; +} +export type StringIndexSignatureType = + OneChildTypeMetadata; +export type StringTypeMetadata = BaseTypeMetadata; + +export type TypeMedatata = + | AndTypeMetadata + | AnyTypeMetadata + | ArrayTypeMetadata + | BooleanTypeMetadata + | FloatTypeMetadata + | IntegerTypeMetadata + | LiteralTypeMetadata + | NoneTypeMetadata + | ObjectTypeMetadata + | OrTypeMetadata + | PropertyTypeMetadata + | StringIndexSignatureType + | StringTypeMetadata; diff --git a/packages/transformers/json-schema-2-ajsttil/src/jsonSchema/202012/calculations/transformJsonSchema.spec.ts b/packages/transformers/json-schema-2-ajsttil/src/jsonSchema/202012/calculations/transformJsonSchema.spec.ts index d47fad1..0ed69e7 100644 --- a/packages/transformers/json-schema-2-ajsttil/src/jsonSchema/202012/calculations/transformJsonSchema.spec.ts +++ b/packages/transformers/json-schema-2-ajsttil/src/jsonSchema/202012/calculations/transformJsonSchema.spec.ts @@ -388,7 +388,7 @@ describe(transformJsonSchema.name, () => { property: 'bar', }, ], - kind: TypeMetadataKind.xor, + kind: TypeMetadataKind.or, }, ], [ @@ -436,6 +436,10 @@ describe(transformJsonSchema.name, () => { { kind: TypeMetadataKind.floatType, }, + { + kind: TypeMetadataKind.literalType, + literal: null, + }, { kind: TypeMetadataKind.objectType, }, diff --git a/packages/transformers/json-schema-2-ajsttil/src/jsonSchema/202012/calculations/transformJsonSchema.ts b/packages/transformers/json-schema-2-ajsttil/src/jsonSchema/202012/calculations/transformJsonSchema.ts index 96332c6..2bc9c49 100644 --- a/packages/transformers/json-schema-2-ajsttil/src/jsonSchema/202012/calculations/transformJsonSchema.ts +++ b/packages/transformers/json-schema-2-ajsttil/src/jsonSchema/202012/calculations/transformJsonSchema.ts @@ -102,6 +102,10 @@ function handleJsonSchemaChildren( { kind: TypeMetadataKind.floatType, }, + { + kind: TypeMetadataKind.literalType, + literal: null, + }, { kind: TypeMetadataKind.objectType, }, @@ -198,7 +202,7 @@ function handleJsonSchemaSubschemas( children: schema.oneOf.map((schema: JsonSchema) => transformJsonSchema(schema, context), ), - kind: TypeMetadataKind.xor, + kind: TypeMetadataKind.or, }); } }