@samchon/openapi
Version:
OpenAPI definitions and converters for 'typia' and 'nestia'.
1 lines • 7.52 kB
Source Map (JSON)
{"version":3,"file":"OpenApiSchemaNamingRule.mjs","sources":["../../../src/utils/internal/OpenApiSchemaNamingRule.ts"],"sourcesContent":["import { OpenApi } from \"../../OpenApi\";\nimport { OpenApiTypeChecker } from \"../OpenApiTypeChecker\";\n\nexport namespace OpenApiSchemaNamingRule {\n export const getName = (\n schema: OpenApi.IJsonSchema,\n union: boolean = false,\n ): string => {\n // COALESCE\n if (OpenApiTypeChecker.isUnknown(schema)) return \"unknown\";\n else if (OpenApiTypeChecker.isNull(schema)) return \"null\";\n else if (OpenApiTypeChecker.isOneOf(schema))\n return schema.oneOf.map((child) => getName(child, true)).join(\" | \");\n // ATOMICS\n else if (OpenApiTypeChecker.isConstant(schema))\n return JSON.stringify(schema.const);\n else if (OpenApiTypeChecker.isBoolean(schema)) return \"boolean\";\n else if (OpenApiTypeChecker.isInteger(schema))\n return joinIntersection(getNameOfInteger(schema), union);\n else if (OpenApiTypeChecker.isNumber(schema))\n return joinIntersection(getNameOfNumber(schema), union);\n else if (OpenApiTypeChecker.isString(schema))\n return joinIntersection(getNameOfString(schema), union);\n // INSTANCES\n else if (OpenApiTypeChecker.isReference(schema))\n return schema.$ref.split(\"/\").pop() ?? \"unknown\";\n else if (OpenApiTypeChecker.isObject(schema)) return \"__object\";\n else if (OpenApiTypeChecker.isArray(schema))\n return joinIntersection(getNameOfArray(schema), union);\n else if (OpenApiTypeChecker.isTuple(schema)) return getNameOfTuple(schema);\n return \"unknown\";\n };\n\n const getNameOfInteger = (schema: OpenApi.IJsonSchema.IInteger): string[] => [\n \"number\",\n ...(schema.minimum !== undefined\n ? [\n schema.exclusiveMinimum\n ? `tags.ExclusiveMinimum<${schema.minimum}>`\n : `tags.Minimum<${schema.minimum}>`,\n ]\n : []),\n ...(schema.maximum !== undefined\n ? [\n schema.exclusiveMaximum\n ? `tags.ExclusiveMaximum<${schema.maximum}>`\n : `tags.Maximum<${schema.maximum}>`,\n ]\n : []),\n ...(schema.multipleOf !== undefined\n ? [`tags.MultipleOf<${schema.multipleOf}>`]\n : []),\n ];\n\n const getNameOfNumber = (schema: OpenApi.IJsonSchema.INumber): string[] => [\n \"number\",\n ...(schema.minimum !== undefined\n ? [\n schema.exclusiveMinimum\n ? `tags.ExclusiveMinimum<${schema.minimum}>`\n : `tags.Minimum<${schema.minimum}>`,\n ]\n : []),\n ...(schema.maximum !== undefined\n ? [\n schema.exclusiveMaximum\n ? `tags.ExclusiveMaximum<${schema.maximum}>`\n : `tags.Maximum<${schema.maximum}>`,\n ]\n : []),\n ...(schema.multipleOf !== undefined\n ? [`tags.MultipleOf<${schema.multipleOf}>`]\n : []),\n ];\n\n const getNameOfString = (schema: OpenApi.IJsonSchema.IString): string[] => [\n \"string\",\n ...(schema.format !== undefined\n ? [`tags.Format<${JSON.stringify(schema.format)}>`]\n : []),\n ...(schema.pattern !== undefined && schema.format === undefined\n ? [`tags.Pattern<${JSON.stringify(schema.pattern)}>`]\n : []),\n ...(schema.contentMediaType !== undefined\n ? [`tags.ContentMediaType<${JSON.stringify(schema.contentMediaType)}>`]\n : []),\n ...(schema.minLength !== undefined\n ? [`tags.MinLength<${schema.minLength}>`]\n : []),\n ...(schema.maxLength !== undefined\n ? [`tags.MaxLength<${schema.maxLength}>`]\n : []),\n ];\n\n const getNameOfArray = (schema: OpenApi.IJsonSchema.IArray): string[] => [\n `Array<${getName(schema.items)}>`,\n ...(schema.minItems !== undefined\n ? [`tags.MinItems<${schema.minItems}>`]\n : []),\n ...(schema.maxItems !== undefined\n ? [`tags.MaxItems<${schema.maxItems}>`]\n : []),\n ...(schema.uniqueItems !== undefined ? [`tags.UniqueItems`] : []),\n ];\n\n const getNameOfTuple = (schema: OpenApi.IJsonSchema.ITuple): string =>\n \"[\" +\n [\n ...schema.prefixItems.map((child) => getName(child)),\n ...(schema.additionalItems === true\n ? [\"...Array<unknown>\"]\n : typeof schema.additionalItems === \"object\" &&\n schema.additionalItems !== null\n ? [`...Array<${getName(schema.additionalItems)}>`]\n : []),\n ].join(\", \") +\n \"]\";\n\n const joinIntersection = (elements: string[], union: boolean): string => {\n const str: string = elements.join(\" & \");\n return union ? `(${str})` : str;\n };\n}\n"],"names":["OpenApiSchemaNamingRule","getName","schema","union","OpenApiTypeChecker","isUnknown","isNull","isOneOf","oneOf","map","child","join","isConstant","JSON","stringify","const","isBoolean","isInteger","joinIntersection","getNameOfInteger","isNumber","getNameOfNumber","isString","getNameOfString","isReference","$ref","split","pop","isObject","isArray","getNameOfArray","isTuple","getNameOfTuple","minimum","undefined","exclusiveMinimum","maximum","exclusiveMaximum","multipleOf","format","pattern","contentMediaType","minLength","maxLength","items","minItems","maxItems","uniqueItems","prefixItems","additionalItems","elements","str"],"mappings":"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"}