@automatons/parser 1.0.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +7 -2
- package/index.js +61 -3
- package/index.js.map +1 -1
- package/package.json +2 -2
package/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Openapi, AutomatonSettings } from '@automatons/tools';
|
|
2
2
|
|
|
3
|
-
type Schema = StringSchema | IntegerSchema | NumberSchema | BooleanSchema | ArraySchema | ObjectSchema | AllOfSchema | OneOfSchema | ModelSchema;
|
|
3
|
+
type Schema = StringSchema | IntegerSchema | NumberSchema | BooleanSchema | ArraySchema | ObjectSchema | AllOfSchema | OneOfSchema | AnyOfSchema | ModelSchema;
|
|
4
4
|
interface Model {
|
|
5
5
|
filename: string;
|
|
6
6
|
title: string;
|
|
@@ -84,6 +84,11 @@ interface OneOfSchema extends SchemaCommon {
|
|
|
84
84
|
examples?: Example[];
|
|
85
85
|
schemas: Schema[];
|
|
86
86
|
}
|
|
87
|
+
interface AnyOfSchema extends SchemaCommon {
|
|
88
|
+
type: 'anyOf';
|
|
89
|
+
examples?: Example[];
|
|
90
|
+
schemas: Schema[];
|
|
91
|
+
}
|
|
87
92
|
interface ModelSchema extends SchemaCommon {
|
|
88
93
|
type: 'model';
|
|
89
94
|
name: string;
|
|
@@ -203,4 +208,4 @@ declare const parser: (openapi: Openapi, settings: AutomatonSettings) => Promise
|
|
|
203
208
|
securities: Security[];
|
|
204
209
|
}>;
|
|
205
210
|
|
|
206
|
-
export { type AffectMethod, type AffectPath, type AllOfSchema, type Api, type ApiKeySecurity, type ArraySchema, type BooleanSchema, type CookieParameter, type Form, type HeaderParameter, type HttpSecurity, type IntegerSchema, type Model, type ModelSchema, type NumberSchema, type Oauth2Security, type ObjectSchema, type OneOfSchema, type OpenIdConnectSecurity, type Path, type PathParameter, type Property, type QueryParameter, type ReceiveMethod, type ReceivePath, type Schema, type SchemaCommon, type Security, type Server, type ServerValue, type StringSchema, parser };
|
|
211
|
+
export { type AffectMethod, type AffectPath, type AllOfSchema, type AnyOfSchema, type Api, type ApiKeySecurity, type ArraySchema, type BooleanSchema, type CookieParameter, type Form, type HeaderParameter, type HttpSecurity, type IntegerSchema, type Model, type ModelSchema, type NumberSchema, type Oauth2Security, type ObjectSchema, type OneOfSchema, type OpenIdConnectSecurity, type Path, type PathParameter, type Property, type QueryParameter, type ReceiveMethod, type ReceivePath, type Schema, type SchemaCommon, type Security, type Server, type ServerValue, type StringSchema, parser };
|
package/index.js
CHANGED
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
isSchemaBoolean as isSchemaBoolean2,
|
|
28
28
|
isSchemaInteger as isSchemaInteger2,
|
|
29
29
|
isSchemaNumber as isSchemaNumber2,
|
|
30
|
+
isSchemaAnyOf as isSchemaAnyOf2,
|
|
30
31
|
isSchemaObject as isSchemaObject2,
|
|
31
32
|
isSchemaOneOf as isSchemaOneOf2,
|
|
32
33
|
isSchemaRef as isSchemaRef2,
|
|
@@ -89,6 +90,7 @@ import {
|
|
|
89
90
|
isSchemaBoolean,
|
|
90
91
|
isSchemaInteger,
|
|
91
92
|
isSchemaNumber,
|
|
93
|
+
isSchemaAnyOf,
|
|
92
94
|
isSchemaObject,
|
|
93
95
|
isSchemaOneOf,
|
|
94
96
|
isSchemaRef,
|
|
@@ -182,6 +184,17 @@ var extractOneOfSchema = async (title, schema, context) => {
|
|
|
182
184
|
};
|
|
183
185
|
};
|
|
184
186
|
|
|
187
|
+
// src/extractors/schema/anyOf.ts
|
|
188
|
+
var extractAnyOfSchema = async (title, schema, context) => {
|
|
189
|
+
const modelSchema = convertSchemaModel(title, schema);
|
|
190
|
+
const { model, insides } = await extractModel(title, schema, context);
|
|
191
|
+
return {
|
|
192
|
+
schema: modelSchema,
|
|
193
|
+
models: [model, ...insides],
|
|
194
|
+
imports: [convertModel(title, modelSchema)]
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
|
|
185
198
|
// src/extractors/schema/ref.ts
|
|
186
199
|
import { referenceTitle } from "@automatons/tools";
|
|
187
200
|
var extractRefSchema = (title, schema) => {
|
|
@@ -214,8 +227,35 @@ var extractBooleanSchema = (title, schema) => {
|
|
|
214
227
|
return { schema: convertBoolean(schema), models: [] };
|
|
215
228
|
};
|
|
216
229
|
|
|
230
|
+
// src/converters/normalize.ts
|
|
231
|
+
var inferType = (value) => typeof value === "number" ? "number" : typeof value === "boolean" ? "boolean" : "string";
|
|
232
|
+
var normalizeSchema = (raw) => {
|
|
233
|
+
const loose = raw;
|
|
234
|
+
if (Array.isArray(loose.type)) {
|
|
235
|
+
const types = loose.type;
|
|
236
|
+
const hasNull = types.includes("null");
|
|
237
|
+
const nonNull = types.filter((type) => type !== "null");
|
|
238
|
+
if (nonNull.length === 0) return raw;
|
|
239
|
+
const nullable = hasNull || Boolean(loose.nullable);
|
|
240
|
+
const rest = { ...loose };
|
|
241
|
+
delete rest.type;
|
|
242
|
+
if (nonNull.length === 1) {
|
|
243
|
+
return { ...rest, type: nonNull[0], nullable };
|
|
244
|
+
}
|
|
245
|
+
return { ...rest, anyOf: nonNull.map((type) => ({ type })), nullable };
|
|
246
|
+
}
|
|
247
|
+
if (loose.const !== void 0 && loose.const !== null) {
|
|
248
|
+
const value = loose.const;
|
|
249
|
+
const rest = { ...loose };
|
|
250
|
+
delete rest.const;
|
|
251
|
+
return { ...rest, type: loose.type ?? inferType(value), enum: [value] };
|
|
252
|
+
}
|
|
253
|
+
return raw;
|
|
254
|
+
};
|
|
255
|
+
|
|
217
256
|
// src/extractors/schema/index.ts
|
|
218
|
-
var extractSchema = async (title,
|
|
257
|
+
var extractSchema = async (title, raw, context) => {
|
|
258
|
+
const schema = normalizeSchema(raw);
|
|
219
259
|
if (isSchemaString(schema)) {
|
|
220
260
|
return extractStringSchema(title, schema);
|
|
221
261
|
} else if (isSchemaNumber(schema) || isSchemaInteger(schema)) {
|
|
@@ -230,6 +270,8 @@ var extractSchema = async (title, schema, context) => {
|
|
|
230
270
|
return extractAllOfSchema(title, schema, context);
|
|
231
271
|
} else if (isSchemaOneOf(schema)) {
|
|
232
272
|
return extractOneOfSchema(title, schema, context);
|
|
273
|
+
} else if (isSchemaAnyOf(schema)) {
|
|
274
|
+
return extractAnyOfSchema(title, schema, context);
|
|
233
275
|
} else if (isSchemaRef(schema)) {
|
|
234
276
|
return extractRefSchema(title, schema);
|
|
235
277
|
}
|
|
@@ -300,6 +342,19 @@ var extractOneOfModel = async (title, schema, context) => {
|
|
|
300
342
|
return { model: convertModel(title, convertOneOf(schema, schemas), imports), insides: models };
|
|
301
343
|
};
|
|
302
344
|
|
|
345
|
+
// src/converters/anyOf.ts
|
|
346
|
+
var convertAnyOf = (schema, schemas) => ({
|
|
347
|
+
type: "anyOf",
|
|
348
|
+
...convertSchema(schema),
|
|
349
|
+
schemas
|
|
350
|
+
});
|
|
351
|
+
|
|
352
|
+
// src/extractors/model/anyOf.ts
|
|
353
|
+
var extractAnyOfModel = async (title, schema, context) => {
|
|
354
|
+
const { models, schemas, imports } = await extractOfModel(title, schema.anyOf, context);
|
|
355
|
+
return { model: convertModel(title, convertAnyOf(schema, schemas), imports), insides: models };
|
|
356
|
+
};
|
|
357
|
+
|
|
303
358
|
// src/extractors/model/ref.ts
|
|
304
359
|
import {
|
|
305
360
|
referenceSchema,
|
|
@@ -313,7 +368,8 @@ var extractRefModel = async (title, schema, context) => {
|
|
|
313
368
|
};
|
|
314
369
|
|
|
315
370
|
// src/extractors/model/index.ts
|
|
316
|
-
var extractModel = async (title,
|
|
371
|
+
var extractModel = async (title, raw, context) => {
|
|
372
|
+
const schema = normalizeSchema(raw);
|
|
317
373
|
if (isSchemaString2(schema)) {
|
|
318
374
|
return { model: convertModel(title, convertString(schema)), insides: [] };
|
|
319
375
|
} else if (isSchemaNumber2(schema) || isSchemaInteger2(schema)) {
|
|
@@ -328,6 +384,8 @@ var extractModel = async (title, schema, context) => {
|
|
|
328
384
|
return extractAllOfModel(title, schema, context);
|
|
329
385
|
} else if (isSchemaOneOf2(schema)) {
|
|
330
386
|
return extractOneOfModel(title, schema, context);
|
|
387
|
+
} else if (isSchemaAnyOf2(schema)) {
|
|
388
|
+
return extractAnyOfModel(title, schema, context);
|
|
331
389
|
} else if (isSchemaRef2(schema)) {
|
|
332
390
|
return extractRefModel(title, schema, context);
|
|
333
391
|
}
|
|
@@ -344,7 +402,7 @@ import { camelCase as camelCase3 } from "change-case";
|
|
|
344
402
|
// src/converters/server.ts
|
|
345
403
|
import { pascalCase as pascalCase7 } from "change-case";
|
|
346
404
|
var convertServer = (schema) => ({
|
|
347
|
-
name: pascalCase7(schema["x-name"] ?? schema.url),
|
|
405
|
+
name: pascalCase7(schema.name ?? schema["x-name"] ?? schema.url),
|
|
348
406
|
url: schema.url,
|
|
349
407
|
values: convertMap(schema.variables).map(({ key, schema: schema2 }) => ({ name: key, defaultValue: schema2.default, enums: schema2.enum }))
|
|
350
408
|
});
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/converters/security.ts","../src/parsers/api.ts","../src/converters/map.ts","../src/extractors/model/index.ts","../src/converters/schema.ts","../src/converters/boolean.ts","../src/converters/model.ts","../src/converters/number.ts","../src/converters/string.ts","../src/converters/allOf.ts","../src/extractors/schema/index.ts","../src/converters/schemaModel.ts","../src/extractors/schema/number.ts","../src/extractors/schema/array.ts","../src/converters/array.ts","../src/extractors/schema/object.ts","../src/extractors/schema/allOf.ts","../src/extractors/schema/oneOf.ts","../src/extractors/schema/ref.ts","../src/extractors/schema/string.ts","../src/extractors/schema/boolean.ts","../src/extractors/model/of.ts","../src/extractors/model/allOf.ts","../src/extractors/model/array.ts","../src/extractors/model/object.ts","../src/converters/object.ts","../src/converters/oneOf.ts","../src/extractors/model/oneOf.ts","../src/extractors/model/ref.ts","../src/extractors/path/index.ts","../src/extractors/path/method.ts","../src/converters/server.ts","../src/utils/sort.ts","../src/extractors/path/parameter.ts","../src/extractors/path/mediaType.ts","../src/extractors/path/requestBody.ts","../src/extractors/path/response.ts","../src/extractors/path/status.ts","../src/extractors/path/security.ts","../src/utils/omitCopy.ts","../src/utils/uniq.ts","../src/utils/overwrite.ts","../src/parsers/model.ts","../src/parser.ts"],"sourcesContent":["import {OpenapiSecuritySchema} from '@automatons/tools';\nimport {camelCase} from 'change-case';\nimport {Security} from '../types';\n\nexport const convertSecurity =\n (name: string, security: OpenapiSecuritySchema, scopes: string[]): Security | undefined => {\n switch (security.type) {\n case 'apiKey':\n return {...security, name: camelCase(name), key: security.name};\n case 'http':\n return {...security, name: camelCase(name)};\n case 'oauth2':\n case 'openIdConnect':\n return {...security, name: camelCase(name), scopes};\n default:\n return undefined;\n }\n };\n","import {camelCase, pascalCase} from 'change-case';\nimport {convertMap} from '../converters/map';\nimport {extractPath} from '../extractors';\nimport {Api, Model, Path} from '../types';\nimport {uniq} from '../utils/uniq';\nimport {AutomatonContext} from '@automatons/tools';\nimport {overwrite} from '../utils/overwrite';\n\nexport const parseApi = async ({openapi, settings}: AutomatonContext): Promise<{ apis: Api[], models: Model[] }> => {\n const paths = (await Promise.all(convertMap(openapi.paths)\n .map(({key, schema}) => extractPath(schema, {path: key, openapi, settings})))).flat();\n return {\n apis: paths\n .reduce<Api[]>((apis, path) =>\n path.tags.reduce<Api[]>((_apis, tag) => {\n const title = pascalCase([tag, 'Api'].join(' '));\n const api = _apis.find((api) => api.title === title);\n return overwrite(_apis, createApi(title, path.path, path.imports, api), (item) => item.title !== title);\n }, apis), []),\n models: paths.reduce<Model[]>((models, cur) => uniq([...models, ...cur.models], 'title'), []),\n };\n};\n\nconst createApi = (title: string, path: Path, imports: Model[], base?: Api) => ({\n title: pascalCase(title),\n filename: camelCase(title),\n imports: uniq([...base?.imports ?? [], ...imports], 'title'),\n servers: uniq([...base?.servers ?? [], ...path.servers], 'name'),\n paths: [...base?.paths ?? [], path],\n});\n","import type {OpenapiMap} from '@automatons/tools';\n\nexport type ArrayMapItem<T> = {\n key: string;\n schema: T;\n}\n\nexport const convertMap = <T = any>(map: OpenapiMap<T> = {}): Array<ArrayMapItem<T>> =>\n Object.entries(map).map(([key, schema]) => ({key, schema}));\n","import {\n AutomatonContext,\n isSchemaAllOf,\n isSchemaArray,\n isSchemaBoolean,\n isSchemaInteger,\n isSchemaNumber,\n isSchemaObject,\n isSchemaOneOf,\n isSchemaRef,\n isSchemaString,\n OpenapiSchema,\n} from '@automatons/tools';\nimport {convertBoolean} from '../../converters/boolean';\nimport {convertModel} from '../../converters/model';\nimport {convertNumber} from '../../converters/number';\nimport {convertString} from '../../converters/string';\nimport {extractAllOfModel} from './allOf';\nimport {extractArrayModel} from './array';\nimport {extractObjectModel} from './object';\nimport {extractOneOfModel} from './oneOf';\nimport {extractRefModel} from './ref';\nimport {ExtractModel} from './type';\n\nexport const extractModel =\n async (title: string, schema: OpenapiSchema, context: AutomatonContext): Promise<ExtractModel> => {\n if (isSchemaString(schema)) {\n return {model: convertModel(title, convertString(schema)), insides: []};\n } else if (isSchemaNumber(schema) || isSchemaInteger(schema)) {\n return {model: convertModel(title, convertNumber(schema)), insides: []};\n } else if (isSchemaBoolean(schema)) {\n return {model: convertModel(title, convertBoolean(schema)), insides: []};\n } else if (isSchemaArray(schema)) {\n return extractArrayModel(title, schema, context);\n } else if (isSchemaObject(schema)) {\n return extractObjectModel(title, schema, context);\n } else if (isSchemaAllOf(schema)) {\n return extractAllOfModel(title, schema, context);\n } else if (isSchemaOneOf(schema)) {\n return extractOneOfModel(title, schema, context);\n } else if (isSchemaRef(schema)) {\n return extractRefModel(title, schema, context);\n }\n throw new Error(`Unknown type\\n${JSON.stringify(schema, undefined, 2)}`);\n };\n","import type {SchemaCommon} from '../types';\nimport type {OpenapiSchema} from '@automatons/tools';\n\nexport const convertSchema = (schema: OpenapiSchema): SchemaCommon => ({\n description: schema.description,\n nullable: schema.nullable,\n readOnly: schema.readOnly,\n writeOnly: schema.writeOnly,\n deprecated: schema.deprecated,\n example: schema.example,\n defaultValue: schema.default,\n});\n","import type {BooleanSchema} from '../types';\nimport type {OpenapiSchemaBoolean} from '@automatons/tools';\nimport {convertSchema} from './schema';\n\nexport const convertBoolean = (schema: OpenapiSchemaBoolean): BooleanSchema => ({\n type: 'boolean',\n ...convertSchema(schema),\n});\n","import {camelCase, pascalCase} from 'change-case';\nimport type {Model, Schema} from '../types';\n\nexport const convertModel = (title: string, schema: Schema, imports: Model[] = []): Model => ({\n title: pascalCase(title),\n filename: camelCase(title),\n imports,\n schema,\n});\n","import {OpenapiSchemaInteger, OpenapiSchemaNumber} from '@automatons/tools';\nimport {NumberSchema} from '../types';\nimport {convertSchema} from './schema';\n\nexport const convertNumber = (schema: OpenapiSchemaNumber | OpenapiSchemaInteger): NumberSchema => ({\n type: 'number',\n format: schema.format,\n ...convertSchema(schema),\n enum: schema.enum ?? [],\n});\n","import {OpenapiSchemaString} from '@automatons/tools';\nimport {StringSchema} from '../types';\nimport {convertSchema} from './schema';\n\nexport const convertString = (schema: OpenapiSchemaString): StringSchema => ({\n type: 'string',\n format: schema.format,\n enum: schema.enum ?? [],\n ...convertSchema(schema),\n});\n","import type {OpenapiSchemaAllOf} from '@automatons/tools';\nimport type {AllOfSchema, Schema} from '../types';\nimport {convertSchema} from './schema';\n\nexport const convertAllOf = (schema: OpenapiSchemaAllOf, schemas: Schema[]): AllOfSchema => ({\n type: 'allOf',\n ...convertSchema(schema),\n schemas,\n});\n","import {\n AutomatonContext,\n isSchemaAllOf,\n isSchemaArray, isSchemaBoolean,\n isSchemaInteger,\n isSchemaNumber,\n isSchemaObject,\n isSchemaOneOf,\n isSchemaRef,\n isSchemaString,\n OpenapiSchema,\n} from '@automatons/tools';\nimport {Model, Schema} from '../../types';\nimport {extractNumberSchema} from './number';\nimport {extractArraySchema} from './array';\nimport {extractObjectSchema} from './object';\nimport {extractAllOfSchema} from './allOf';\nimport {extractOneOfSchema} from './oneOf';\nimport {extractRefSchema} from './ref';\nimport {extractStringSchema} from './string';\nimport {extractBooleanSchema} from './boolean';\n\nexport type ExtractSchemaResult = { schema: Schema, models: Model[], imports?: Model[] };\n\nexport const extractSchema = async (title: string, schema: OpenapiSchema,\n context: AutomatonContext): Promise<ExtractSchemaResult> => {\n if (isSchemaString(schema)) {\n return extractStringSchema(title, schema);\n } else if (isSchemaNumber(schema) || isSchemaInteger(schema)) {\n return extractNumberSchema(title, schema);\n } else if (isSchemaBoolean(schema)) {\n return extractBooleanSchema(title, schema);\n } else if (isSchemaArray(schema)) {\n return extractArraySchema(title, schema, context);\n } else if (isSchemaObject(schema)) {\n return extractObjectSchema(title, schema, context);\n } else if (isSchemaAllOf(schema)) {\n return extractAllOfSchema(title, schema, context);\n } else if (isSchemaOneOf(schema)) {\n return extractOneOfSchema(title, schema, context);\n } else if (isSchemaRef(schema)) {\n return extractRefSchema(title, schema);\n }\n throw new Error(`Unknown type\\n${JSON.stringify(schema, undefined, 2)}`);\n};\n\n","import {OpenapiSchema} from '@automatons/tools';\nimport {pascalCase} from 'change-case';\nimport {ModelSchema} from '../types';\nimport {convertSchema} from './schema';\n\nexport const convertSchemaModel = (model: string, schema: OpenapiSchema): ModelSchema => ({\n type: 'model',\n name: pascalCase(model),\n ...convertSchema(schema),\n});\n","import {OpenapiSchemaInteger, OpenapiSchemaNumber} from '@automatons/tools';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {convertModel} from '../../converters/model';\nimport {convertNumber} from '../../converters/number';\n\nexport const extractNumberSchema = (title: string, schema: OpenapiSchemaNumber | OpenapiSchemaInteger) => {\n if (schema.title) {\n const modelSchema = convertSchemaModel(title, schema);\n const models = [convertModel(title, convertNumber(schema))];\n return {schema: modelSchema, models, imports: models};\n }\n return {schema: convertNumber(schema), models: []};\n};\n","import {AutomatonContext, OpenapiSchemaArray} from '@automatons/tools';\nimport {Model} from '../../types';\nimport {pascalCase} from 'change-case';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {convertModel} from '../../converters/model';\nimport {convertArray} from '../../converters/array';\nimport {extractSchema} from './index';\n\nexport const extractArraySchema = async (title: string, schema: OpenapiSchemaArray, context: AutomatonContext) => {\n const models: Model[] = [];\n const imports: Model[] = [];\n let itemSchema = undefined;\n if (schema.items) {\n const {schema: shm, models: itemModels, imports: itemImports} =\n await extractSchema(pascalCase([title, 'Item'].join(' ')), schema.items, context);\n itemSchema = shm;\n models.push(...itemModels);\n imports.push(...(itemImports ?? []));\n }\n if (schema.title) {\n const modelSchema = convertSchemaModel(title, schema);\n const model = convertModel(title, convertArray(schema, itemSchema));\n return {schema: modelSchema, models: [model, ...models], imports: [...models]};\n }\n return {\n schema: convertArray(schema, itemSchema),\n models: models,\n imports,\n };\n};\n","import type {OpenapiSchemaArray} from '@automatons/tools';\nimport type {ArraySchema, Schema} from '../types';\nimport {convertSchema} from './schema';\n\nexport const convertArray = (schema: OpenapiSchemaArray, itemSchema?: Schema): ArraySchema => ({\n type: 'array',\n ...convertSchema(schema),\n uniqueItems: schema.uniqueItems,\n minItems: schema.minItems,\n maxItems: schema.maxItems,\n items: itemSchema,\n});\n","import {AutomatonContext, OpenapiSchemaObject} from '@automatons/tools';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {extractModel} from '../model';\nimport {convertModel} from '../../converters/model';\n\nexport const extractObjectSchema = async (title: string, schema: OpenapiSchemaObject, context: AutomatonContext) => {\n const modelSchema = convertSchemaModel(title, schema);\n const {model, insides} = await extractModel(title, schema, context);\n return {\n schema: modelSchema,\n models: [model, ...insides],\n imports: [convertModel(title, modelSchema)],\n };\n};\n","import {AutomatonContext, OpenapiSchemaAllOf} from '@automatons/tools';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {extractModel} from '../model';\nimport {convertModel} from '../../converters/model';\n\nexport const extractAllOfSchema = async (title: string, schema: OpenapiSchemaAllOf, context: AutomatonContext) => {\n const modelSchema = convertSchemaModel(title, schema);\n const {model, insides} = await extractModel(title, schema, context);\n return {\n schema: modelSchema,\n models: [model, ...insides],\n imports: [convertModel(title, modelSchema)],\n };\n};\n","import {AutomatonContext, OpenapiSchemaOneOf} from '@automatons/tools';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {extractModel} from '../model';\nimport {convertModel} from '../../converters/model';\n\nexport const extractOneOfSchema = async (title: string, schema: OpenapiSchemaOneOf, context: AutomatonContext) => {\n const modelSchema = convertSchemaModel(title, schema);\n const {model, insides} = await extractModel(title, schema, context);\n return {\n schema: modelSchema,\n models: [model, ...insides],\n imports: [convertModel(title, modelSchema)],\n };\n};\n","import {OpenapiSchemaReference, referenceTitle} from '@automatons/tools';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {convertModel} from '../../converters/model';\n\nexport const extractRefSchema = (title: string, schema: OpenapiSchemaReference) => {\n const name = referenceTitle(schema) ?? title;\n const modelSchema = convertSchemaModel(name, schema);\n return {\n schema: modelSchema,\n models: [],\n imports: [convertModel(name, modelSchema)],\n };\n};\n","import {OpenapiSchemaString} from '@automatons/tools';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {convertModel} from '../../converters/model';\nimport {convertString} from '../../converters/string';\n\nexport const extractStringSchema = (title: string, schema: OpenapiSchemaString) => {\n if (schema.title) {\n const modelSchema = convertSchemaModel(title, schema);\n const models = [convertModel(title, convertString(schema))];\n return {schema: modelSchema, models, imports: models};\n }\n return {schema: convertString(schema), models: []};\n};\n","import {OpenapiSchemaBoolean} from '@automatons/tools';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {convertModel} from '../../converters/model';\nimport {convertBoolean} from '../../converters/boolean';\n\nexport const extractBooleanSchema = (title: string, schema: OpenapiSchemaBoolean) => {\n if (schema.title) {\n const modelSchema = convertSchemaModel(title, schema);\n const models = [convertModel(title, convertBoolean(schema))];\n return {schema: modelSchema, models, imports: models};\n }\n return {schema: convertBoolean(schema), models: []};\n};\n","import {extractSchema} from '../schema';\nimport {pascalCase} from 'change-case';\nimport {Model, Schema} from '../../types';\nimport {AutomatonContext, OpenapiSchema} from '@automatons/tools';\n\nexport const extractOfModel = (title: string, schemas: OpenapiSchema[], context: AutomatonContext) => {\n return schemas.map((item, index) =>\n extractSchema(pascalCase([title, index].join(' ')), item, context))\n .reduce<Promise<{ schemas: Schema[], models: Model[], imports: Model[] }>>(async (pre, cur) =>\n ({\n schemas: [...(await pre).schemas, (await cur).schema],\n models: [...(await pre).models, ...(await cur).models],\n imports: [...(await pre).imports, ...((await cur).imports ?? [])],\n }), Promise.resolve({schemas: [], models: [], imports: []}));\n};\n","import {AutomatonContext, OpenapiSchemaAllOf} from '@automatons/tools';\nimport {convertAllOf} from '../../converters/allOf';\nimport {convertModel} from '../../converters/model';\nimport {extractOfModel} from './of';\nimport {ExtractModel} from './type';\n\nexport const extractAllOfModel =\n async (title: string, schema: OpenapiSchemaAllOf, context: AutomatonContext): Promise<ExtractModel> => {\n const {models, schemas, imports} = await extractOfModel(title, schema.allOf, context);\n return {model: convertModel(title, convertAllOf(schema, schemas), imports), insides: models};\n };\n","import {AutomatonContext, OpenapiSchemaArray} from '@automatons/tools';\nimport {pascalCase} from 'change-case';\nimport {convertArray} from '../../converters/array';\nimport {convertModel} from '../../converters/model';\nimport {extractSchema} from '../schema';\nimport {ExtractModel} from './type';\n\nexport const extractArrayModel =\n async (title: string, schema: OpenapiSchemaArray, context: AutomatonContext): Promise<ExtractModel> => {\n if (schema.items) {\n const {schema: shm, models, imports} =\n await extractSchema(pascalCase([title, 'Item'].join(' ')), schema.items, context);\n return {model: convertModel(title, convertArray(schema, shm), imports), insides: models};\n }\n return {model: convertModel(title, convertArray(schema)), insides: []};\n };\n","import {AutomatonContext, OpenapiSchemaObject} from '@automatons/tools';\nimport {pascalCase} from 'change-case';\nimport {convertMap} from '../../converters/map';\nimport {convertModel} from '../../converters/model';\nimport {convertObjectSchema} from '../../converters/object';\nimport {Model} from '../../types';\nimport {extractSchema} from '../schema';\nimport {ExtractModel} from './type';\n\nexport const extractObjectModel =\n async (title: string, schema: OpenapiSchemaObject, context: AutomatonContext): Promise<ExtractModel> => {\n const models: Model[] = [];\n const imports: Model[] = [];\n const propertySchemas = schema.properties;\n const properties = await Promise.all(convertMap(propertySchemas)\n .map(async ({key, schema: propertySchema}) => {\n const extractPropertySchema = await extractSchema(pascalCase([title, key].join(' ')), propertySchema, context);\n models.push(...extractPropertySchema.models);\n imports.push(...(extractPropertySchema.imports ?? []));\n return {name: key, required: schema.required?.includes(key) ?? false, schema: extractPropertySchema.schema};\n }));\n return {model: convertModel(title, convertObjectSchema(schema, properties), imports), insides: models};\n };\n","import {OpenapiSchemaObject} from '@automatons/tools';\nimport {ObjectSchema, Property} from '../types';\nimport {convertSchema} from './schema';\n\nexport const convertObjectSchema = (schema: OpenapiSchemaObject, properties?: Property[]): ObjectSchema => ({\n type: 'object',\n ...convertSchema(schema),\n properties,\n});\n","import {OpenapiSchemaOneOf} from '@automatons/tools';\nimport {OneOfSchema, Schema} from '../types';\nimport {convertSchema} from './schema';\n\nexport const convertOneOf = (schema: OpenapiSchemaOneOf, schemas: Schema[]): OneOfSchema => ({\n type: 'oneOf',\n ...convertSchema(schema),\n schemas,\n});\n","import {convertModel} from '../../converters/model';\nimport {convertOneOf} from '../../converters/oneOf';\nimport {extractOfModel} from './of';\nimport {AutomatonContext, OpenapiSchemaOneOf} from '@automatons/tools';\n\nexport const extractOneOfModel = async (title: string, schema: OpenapiSchemaOneOf, context: AutomatonContext) => {\n const {models, schemas, imports} = await extractOfModel(title, schema.oneOf, context);\n return {model: convertModel(title, convertOneOf(schema, schemas), imports), insides: models};\n};\n","import {\n AutomatonContext,\n OpenapiSchema,\n OpenapiSchemaReference,\n referenceSchema,\n referenceTitle,\n} from '@automatons/tools';\nimport {convertModel} from '../../converters/model';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {ExtractModel} from './type';\n\nexport const extractRefModel =\n async (title: string, schema: OpenapiSchemaReference, context: AutomatonContext): Promise<ExtractModel> => {\n const refSchema = await referenceSchema<OpenapiSchema>(schema, context);\n const refTitle = referenceTitle(schema);\n\n const ref = convertSchemaModel(refTitle, refSchema);\n return {model: convertModel(title, ref, [convertModel(refTitle, ref)]), insides: []};\n };\n","import {AutomatonContext, HTTP_METHODS, Method, OpenapiPath, OpenapiPathOperation} from '@automatons/tools';\nimport {PathReturn} from './type';\nimport {extractMethod} from './method';\nimport {isRef, referenceSchema} from '@automatons/tools';\nimport {omitCopy} from '../../utils/omitCopy';\n\ntype PathContext = { path: string } & AutomatonContext;\n\nexport const extractPath =\n async (schema: OpenapiPath, {path, openapi, settings}: PathContext): Promise<PathReturn[]> => {\n const _schema = isRef(schema) ?\n {...await referenceSchema(schema, {openapi, settings}), ...omitCopy(schema, '$ref')} :\n schema;\n return Promise.all(HTTP_METHODS\n .map<{ method: Method, operation: OpenapiPath | undefined }>((method) => ({method, operation: _schema[method]}))\n .filter<{ method: Method, operation: OpenapiPathOperation }>(\n (operation): operation is { method: Method, operation: OpenapiPathOperation } => !!operation.operation)\n .map(({method, operation}) => extractMethod(path, method, operation, _schema, {openapi, settings})));\n };\n","import {AutomatonContext, Method, OpenapiParameter, OpenapiPath, OpenapiPathOperation} from '@automatons/tools';\nimport {camelCase} from 'change-case';\nimport {convertServer} from '../../converters/server';\nimport {\n CookieParameter,\n Form,\n HeaderParameter,\n Model,\n PathParameter,\n QueryParameter,\n Schema,\n Security,\n Server,\n} from '../../types';\nimport {requiredCompare} from '../../utils/sort';\nimport {extractParameter} from './parameter';\nimport {extractRequestBody} from './requestBody';\nimport {extractResponse} from './response';\nimport {extractSecurity} from './security';\nimport {PathReturn} from './type';\n\nconst mergeModels = (main: Models, adding: Models) => {\n main.models.push(...adding.models);\n main.imports.push(...adding.imports);\n};\n\nconst mergeParameter =\n async (parameters: OpenapiParameter[],\n path: string,\n params: Params,\n models: Models,\n {openapi, settings}: AutomatonContext) => {\n const {\n parameters: _parameters,\n queries: _queries,\n headers: _headers,\n cookies: _cookies,\n models: _models,\n imports: _imports,\n } =\n await extractParameter(parameters, {path, openapi, settings});\n params.parameters.push(..._parameters);\n params.queries.push(..._queries);\n params.headers.push(..._headers);\n params.cookies.push(..._cookies);\n mergeModels(models, {models: _models, imports: _imports});\n };\n\ntype Models = {\n models: Model[];\n imports: Model[];\n}\n\ntype Params = {\n parameters: PathParameter[];\n queries: QueryParameter[];\n headers: HeaderParameter[];\n cookies: CookieParameter[];\n};\n\ntype Data = {\n params: Params;\n servers: Server[];\n securities?: Security[];\n forms?: Form[];\n schema?: Schema;\n};\n\nexport const extractMethod = async (path: string, method: Method, operation: OpenapiPathOperation, schema: OpenapiPath,\n {openapi, settings}: AutomatonContext): Promise<PathReturn> => {\n const models: Models = {\n models: [],\n imports: [],\n };\n const params: Params = {\n parameters: [],\n queries: [],\n headers: [],\n cookies: [],\n };\n const data: Data = {\n params,\n servers: (operation.servers || schema.servers || openapi.servers || [])\n .map(convertServer),\n securities: extractSecurity(operation, openapi),\n };\n\n if (schema.parameters) {\n await mergeParameter(schema.parameters, path, params, models, {openapi, settings});\n }\n\n if (operation.parameters) {\n await mergeParameter(operation.parameters, path, params, models, {openapi, settings});\n }\n\n if (operation.requestBody) {\n const bodies: { forms: Form[], models: Model[], imports: Model[]; } =\n await extractRequestBody(operation.requestBody, path, method, {openapi, settings});\n data.forms = bodies.forms;\n mergeModels(models, {models: bodies.models, imports: bodies.imports});\n }\n\n const response = await extractResponse(operation.responses, method, {path, openapi, settings});\n\n if (response) {\n data.schema = response.schema;\n mergeModels(models, {models: response.models, imports: response.imports ?? []});\n }\n\n return convertPath(path, method, operation, data, models);\n};\n\nconst convertPath = (path: string, method: Method, operation: OpenapiPathOperation,\n {params, servers, securities, forms, schema}: Data, models: Models): PathReturn => ({\n tags: operation.tags && operation.tags.length ? operation.tags : ['default'],\n path: {\n name: camelCase(operation.operationId ?? [method, ...path.split('/')].join(' ')),\n path,\n method,\n servers,\n parameters: params.parameters,\n queries: params.queries.sort(requiredCompare),\n headers: params.headers.sort(requiredCompare),\n cookies: params.cookies.sort(requiredCompare),\n ...(securities ? {securities} : {}),\n ...(forms ? {forms} : {}),\n ...(schema ? {schema} : {}),\n },\n ...models,\n});\n\n","import {OpenapiServer} from '@automatons/tools';\nimport {Server} from '../types';\nimport {convertMap} from './map';\nimport {pascalCase} from 'change-case';\n\nexport const convertServer = (schema: OpenapiServer): Server => ({\n name: pascalCase(schema['x-name'] ?? schema.url),\n url: schema.url,\n values: convertMap(schema.variables).map(({key, schema}) =>\n ({name: key, defaultValue: schema.default, enums: schema.enum})),\n});\n","export const requiredCompare = (a: { required?: boolean }, b: { required?: boolean }) =>\n (a.required && b.required) || (!a.required && !b.required) ? 0 : b.required ? 1 : -1;\n","import {\n hasSchema,\n isCookieParam,\n isHeaderParam,\n isPathParam,\n isQueryParam,\n OpenapiParameter,\n referenceSchema,\n} from '@automatons/tools';\nimport {pascalCase} from 'change-case';\nimport {extractSchema} from '../schema';\nimport {extractMediaType} from './mediaType';\nimport {ParameterResult, PathContext} from './type';\n\nexport const extractParameter =\n (schema: OpenapiParameter[], {path, ...context}: PathContext): Promise<ParameterResult> =>\n schema\n .map((param) => referenceSchema(param, context))\n .map(async (param) => {\n const _param = await param;\n const paramSchema = hasSchema(_param) ? _param.schema : Object.keys(_param.content).length ?\n _param.content[extractMediaType(_param.content)]?.schema : undefined;\n if (!paramSchema) return;\n const {schema, models, imports} =\n await extractSchema(pascalCase([path, 'parameter', _param.name].join(' ')),\n paramSchema, context);\n if (isPathParam(_param)) {\n return {\n parameter: {\n name: _param.name,\n schema,\n style: _param.style,\n explode: _param.explode,\n },\n models,\n imports,\n };\n } else if (isQueryParam(_param)) {\n return {\n query: {\n name: _param.name,\n schema,\n style: _param.style,\n required: _param.required,\n explode: _param.explode,\n },\n models,\n imports,\n };\n } else if (isHeaderParam(_param)) {\n return {\n header: {\n name: _param.name,\n schema,\n style: _param.style,\n required: _param.required,\n explode: _param.explode,\n },\n models,\n imports,\n };\n } else if (isCookieParam(_param)) {\n return {\n cookie: {\n name: _param.name,\n schema,\n style: _param.style,\n required: _param.required,\n explode: _param.explode,\n },\n models,\n imports,\n };\n }\n return;\n })\n .reduce<Promise<ParameterResult>>(async (pre, cur) => {\n const previous = await pre;\n const current = await cur;\n return current ? ({\n parameters: current.parameter ? [...previous.parameters, current.parameter] : previous.parameters,\n queries: current.query ? [...previous.queries, current.query] : previous.queries,\n headers: current.header ? [...previous.headers, current.header] : previous.headers,\n cookies: current.cookie ? [...previous.cookies, current.cookie] : previous.cookies,\n models: [...previous.models, ...current.models],\n imports: [...previous.imports, ...current.imports ?? []],\n }) :\n previous;\n }, Promise.resolve({parameters: [], queries: [], headers: [], cookies: [], models: [], imports: []}));\n","import {OpenapiMap, OpenapiPathMedia} from '@automatons/tools';\n\nexport const extractMediaType = (schema: OpenapiMap<OpenapiPathMedia>): keyof OpenapiMap<OpenapiPathMedia> =>\n Object.hasOwn(schema, 'application/json') ?\n 'application/json' :\n Object.hasOwn(schema, 'application/*') ?\n 'application/*' :\n Object.hasOwn(schema, 'default') ?\n 'default' : Object.keys(schema)[0] ?? '';\n","import {\n AutomatonContext,\n OpenapiPathMedia,\n OpenapiPathRequestBody,\n OpenapiReference,\n OpenapiSchema,\n referenceSchema,\n} from '@automatons/tools';\nimport {isDeepStrictEqual} from 'node:util';\nimport {Form, Model} from '../../types';\nimport {extractSchema, ExtractSchemaResult} from '../schema';\n\nexport const extractRequestBody =\n async (schema: OpenapiPathRequestBody | OpenapiReference, path: string, method: any, context: AutomatonContext) => {\n const requestBody = await referenceSchema(schema, context);\n const extracts = await Promise.all(Object.entries(requestBody.content)\n .filter<[string, OpenapiPathMedia & { schema: OpenapiSchema }]>(\n (item): item is [string, OpenapiPathMedia & { schema: OpenapiSchema }] => !!item[1].schema)\n .map<Promise<{ key: string, required?: boolean, extract: ExtractSchemaResult }>>(async ([key, value]) => ({\n key,\n required: requestBody.required,\n extract: await extractSchema([...path.split('/'), method, ...key.split('/'), 'Request'].join(' '), value.schema,\n context),\n })));\n return extracts\n .map<{ form: Form, models: Model[], imports?: Model[] }>(({key, required, extract}) =>\n ({\n form: {types: [key], required, schema: extract.schema},\n models: extract.models,\n imports: extract.imports,\n }))\n .reduce<{ forms: Form[], models: Model[], imports: Model[] }>((pre, cur) => ({\n forms: pre.forms.some((form) => isDeepStrictEqual(form.schema, cur.form.schema)) ? pre.forms.map(\n (form) => isDeepStrictEqual(form.schema, cur.form.schema) ? {\n ...form,\n types: [...form.types, ...cur.form.types],\n } : form) : [...pre.forms, cur.form],\n models: [...pre.models, ...cur.models],\n imports: [...pre.imports, ...cur.imports ?? []],\n }), {forms: [], models: [], imports: []});\n };\n","import {Method, OpenapiMap, OpenapiPathResponse, OpenapiReference, referenceSchema} from '@automatons/tools';\nimport {extractSchema, ExtractSchemaResult} from '../schema';\nimport {extractMediaType} from './mediaType';\nimport {extractStatus} from './status';\nimport {PathContext} from './type';\n\nexport const extractResponse =\n async (schema: OpenapiMap<OpenapiPathResponse | OpenapiReference>,\n method: Method,\n context: PathContext): Promise<ExtractSchemaResult | void> => {\n const status = extractStatus(schema);\n const response = await referenceSchema(schema[status]!, context);\n const content = response.content;\n if (!content || !Object.keys(content).length) return;\n const resSchema = content[extractMediaType(content)]?.schema;\n if (!resSchema) return;\n return extractSchema([...context.path.split('/'), method, 'Response'].join(' '),\n resSchema, context);\n };\n","import {OpenapiMap, OpenapiPathResponse, OpenapiReference} from '@automatons/tools';\n\nexport const extractStatus = (schema: OpenapiMap<OpenapiPathResponse | OpenapiReference>):\n keyof OpenapiMap<OpenapiPathResponse | OpenapiReference> => {\n const statuses = Object.keys(schema);\n return statuses\n .map((status) => Number(status))\n .filter((status) => Number(status) >= 200 && Number(status) < 300)\n .sort()[0] ?? statuses[0] ?? '';\n};\n","import {Security} from '../../types';\nimport {convertSecurity} from '../../converters/security';\nimport {Openapi, OpenapiPathOperation} from '@automatons/tools';\n\nexport const extractSecurity = (operation: OpenapiPathOperation, openapi: Openapi): Security[] | undefined =>\n operation.security && operation.security.map((value) =>\n Object.entries(value)\n .map<Security | undefined>(([name, scopes]): Security | undefined => {\n const security = openapi.components?.securitySchemes?.[name];\n return security ? convertSecurity(name, security, scopes) : undefined;\n }).filter<Security>((value): value is Security => value !== undefined)).flat();\n","export const omitCopy = <T extends object, S extends keyof T>(schema: T, key: S): Omit<T, S> =>\n Object.entries(schema)\n .reduce((pre, [name, value]) =>\n ({...pre, ...(name !== key ? {[name]: value} : {})}), {}) as Omit<T, S>;\n","export const uniq = <T extends object>(items: T[], key: keyof T): T[] => items.reduce<T[]>(\n (pre, cur) => pre.some((item) => cur[key] === item[key]) ? pre : [...pre, cur], []);\n","export const overwrite = <T>(items: T[], item: T, predicate: (item: T) => boolean): T[] =>\n [...(items.filter(predicate)), item];\n","import {pascalCase} from 'change-case';\nimport {convertMap} from '../converters/map';\nimport {extractModel} from '../extractors/model';\nimport {Model} from '../types';\nimport {AutomatonContext} from '@automatons/tools';\n\nexport const parseModel = async (context: AutomatonContext): Promise<Model[]> =>\n (await Promise.all(convertMap(context.openapi.components?.schemas)\n .map(({key, schema}) =>\n ({title: pascalCase(key), schema}))\n .map(async ({title, schema}) => Object.values(await extractModel(title, schema, context)))))\n .flat(2);\n","import {AutomatonSettings, Openapi} from '@automatons/tools';\nimport {convertSecurity} from './converters/security';\nimport {parseApi} from './parsers/api';\nimport {parseModel} from './parsers/model';\nimport {Api, Model, Security} from './types';\n\nexport const parser =\n async (openapi: Openapi, settings: AutomatonSettings):\n Promise<{ models: Model[], apis: Api[], securities: Security[] }> => {\n const {apis, models} = await parseApi({openapi, settings});\n models.push(...await parseModel({openapi, settings}));\n const securities = Object.entries(openapi.components?.securitySchemes ?? {})\n .map(([key, schema]) => convertSecurity(key, schema, []))\n .filter<Security>((value): value is Security => value !== undefined);\n return {models, apis, securities};\n };\n"],"mappings":"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","names":["camelCase","pascalCase","isSchemaAllOf","isSchemaArray","isSchemaBoolean","isSchemaInteger","isSchemaNumber","isSchemaObject","isSchemaOneOf","isSchemaRef","isSchemaString","camelCase","pascalCase","pascalCase","pascalCase","pascalCase","pascalCase","pascalCase","pascalCase","pascalCase","pascalCase","referenceTitle","referenceTitle","isSchemaString","isSchemaNumber","isSchemaInteger","isSchemaBoolean","isSchemaArray","isSchemaObject","isSchemaAllOf","isSchemaOneOf","isSchemaRef","camelCase","pascalCase","schema","referenceSchema","pascalCase","referenceSchema","schema","pascalCase","referenceSchema","referenceSchema","referenceSchema","referenceSchema","value","camelCase","referenceSchema","referenceSchema","pascalCase","api","camelCase","pascalCase","pascalCase"]}
|
|
1
|
+
{"version":3,"sources":["../src/converters/security.ts","../src/parsers/api.ts","../src/converters/map.ts","../src/extractors/model/index.ts","../src/converters/schema.ts","../src/converters/boolean.ts","../src/converters/model.ts","../src/converters/number.ts","../src/converters/string.ts","../src/converters/allOf.ts","../src/extractors/schema/index.ts","../src/converters/schemaModel.ts","../src/extractors/schema/number.ts","../src/extractors/schema/array.ts","../src/converters/array.ts","../src/extractors/schema/object.ts","../src/extractors/schema/allOf.ts","../src/extractors/schema/oneOf.ts","../src/extractors/schema/anyOf.ts","../src/extractors/schema/ref.ts","../src/extractors/schema/string.ts","../src/extractors/schema/boolean.ts","../src/converters/normalize.ts","../src/extractors/model/of.ts","../src/extractors/model/allOf.ts","../src/extractors/model/array.ts","../src/extractors/model/object.ts","../src/converters/object.ts","../src/converters/oneOf.ts","../src/extractors/model/oneOf.ts","../src/converters/anyOf.ts","../src/extractors/model/anyOf.ts","../src/extractors/model/ref.ts","../src/extractors/path/index.ts","../src/extractors/path/method.ts","../src/converters/server.ts","../src/utils/sort.ts","../src/extractors/path/parameter.ts","../src/extractors/path/mediaType.ts","../src/extractors/path/requestBody.ts","../src/extractors/path/response.ts","../src/extractors/path/status.ts","../src/extractors/path/security.ts","../src/utils/omitCopy.ts","../src/utils/uniq.ts","../src/utils/overwrite.ts","../src/parsers/model.ts","../src/parser.ts"],"sourcesContent":["import {OpenapiSecuritySchema} from '@automatons/tools';\nimport {camelCase} from 'change-case';\nimport {Security} from '../types';\n\nexport const convertSecurity =\n (name: string, security: OpenapiSecuritySchema, scopes: string[]): Security | undefined => {\n switch (security.type) {\n case 'apiKey':\n return {...security, name: camelCase(name), key: security.name};\n case 'http':\n return {...security, name: camelCase(name)};\n case 'oauth2':\n case 'openIdConnect':\n return {...security, name: camelCase(name), scopes};\n default:\n return undefined;\n }\n };\n","import {camelCase, pascalCase} from 'change-case';\nimport {convertMap} from '../converters/map';\nimport {extractPath} from '../extractors';\nimport {Api, Model, Path} from '../types';\nimport {uniq} from '../utils/uniq';\nimport {AutomatonContext} from '@automatons/tools';\nimport {overwrite} from '../utils/overwrite';\n\nexport const parseApi = async ({openapi, settings}: AutomatonContext): Promise<{ apis: Api[], models: Model[] }> => {\n const paths = (await Promise.all(convertMap(openapi.paths)\n .map(({key, schema}) => extractPath(schema, {path: key, openapi, settings})))).flat();\n return {\n apis: paths\n .reduce<Api[]>((apis, path) =>\n path.tags.reduce<Api[]>((_apis, tag) => {\n const title = pascalCase([tag, 'Api'].join(' '));\n const api = _apis.find((api) => api.title === title);\n return overwrite(_apis, createApi(title, path.path, path.imports, api), (item) => item.title !== title);\n }, apis), []),\n models: paths.reduce<Model[]>((models, cur) => uniq([...models, ...cur.models], 'title'), []),\n };\n};\n\nconst createApi = (title: string, path: Path, imports: Model[], base?: Api) => ({\n title: pascalCase(title),\n filename: camelCase(title),\n imports: uniq([...base?.imports ?? [], ...imports], 'title'),\n servers: uniq([...base?.servers ?? [], ...path.servers], 'name'),\n paths: [...base?.paths ?? [], path],\n});\n","import type {OpenapiMap} from '@automatons/tools';\n\nexport type ArrayMapItem<T> = {\n key: string;\n schema: T;\n}\n\nexport const convertMap = <T = any>(map: OpenapiMap<T> = {}): Array<ArrayMapItem<T>> =>\n Object.entries(map).map(([key, schema]) => ({key, schema}));\n","import {\n AutomatonContext,\n isSchemaAllOf,\n isSchemaArray,\n isSchemaBoolean,\n isSchemaInteger,\n isSchemaNumber,\n isSchemaAnyOf,\n isSchemaObject,\n isSchemaOneOf,\n isSchemaRef,\n isSchemaString,\n OpenapiSchema,\n} from '@automatons/tools';\nimport {convertBoolean} from '../../converters/boolean';\nimport {convertModel} from '../../converters/model';\nimport {convertNumber} from '../../converters/number';\nimport {convertString} from '../../converters/string';\nimport {extractAllOfModel} from './allOf';\nimport {extractArrayModel} from './array';\nimport {extractObjectModel} from './object';\nimport {extractOneOfModel} from './oneOf';\nimport {extractAnyOfModel} from './anyOf';\nimport {extractRefModel} from './ref';\nimport {ExtractModel} from './type';\nimport {normalizeSchema} from '../../converters/normalize';\n\nexport const extractModel =\n async (title: string, raw: OpenapiSchema, context: AutomatonContext): Promise<ExtractModel> => {\n const schema = normalizeSchema(raw);\n if (isSchemaString(schema)) {\n return {model: convertModel(title, convertString(schema)), insides: []};\n } else if (isSchemaNumber(schema) || isSchemaInteger(schema)) {\n return {model: convertModel(title, convertNumber(schema)), insides: []};\n } else if (isSchemaBoolean(schema)) {\n return {model: convertModel(title, convertBoolean(schema)), insides: []};\n } else if (isSchemaArray(schema)) {\n return extractArrayModel(title, schema, context);\n } else if (isSchemaObject(schema)) {\n return extractObjectModel(title, schema, context);\n } else if (isSchemaAllOf(schema)) {\n return extractAllOfModel(title, schema, context);\n } else if (isSchemaOneOf(schema)) {\n return extractOneOfModel(title, schema, context);\n } else if (isSchemaAnyOf(schema)) {\n return extractAnyOfModel(title, schema, context);\n } else if (isSchemaRef(schema)) {\n return extractRefModel(title, schema, context);\n }\n throw new Error(`Unknown type\\n${JSON.stringify(schema, undefined, 2)}`);\n };\n","import type {SchemaCommon} from '../types';\nimport type {OpenapiSchema} from '@automatons/tools';\n\nexport const convertSchema = (schema: OpenapiSchema): SchemaCommon => ({\n description: schema.description,\n nullable: schema.nullable,\n readOnly: schema.readOnly,\n writeOnly: schema.writeOnly,\n deprecated: schema.deprecated,\n example: schema.example,\n defaultValue: schema.default,\n});\n","import type {BooleanSchema} from '../types';\nimport type {OpenapiSchemaBoolean} from '@automatons/tools';\nimport {convertSchema} from './schema';\n\nexport const convertBoolean = (schema: OpenapiSchemaBoolean): BooleanSchema => ({\n type: 'boolean',\n ...convertSchema(schema),\n});\n","import {camelCase, pascalCase} from 'change-case';\nimport type {Model, Schema} from '../types';\n\nexport const convertModel = (title: string, schema: Schema, imports: Model[] = []): Model => ({\n title: pascalCase(title),\n filename: camelCase(title),\n imports,\n schema,\n});\n","import {OpenapiSchemaInteger, OpenapiSchemaNumber} from '@automatons/tools';\nimport {NumberSchema} from '../types';\nimport {convertSchema} from './schema';\n\nexport const convertNumber = (schema: OpenapiSchemaNumber | OpenapiSchemaInteger): NumberSchema => ({\n type: 'number',\n format: schema.format,\n ...convertSchema(schema),\n enum: schema.enum ?? [],\n});\n","import {OpenapiSchemaString} from '@automatons/tools';\nimport {StringSchema} from '../types';\nimport {convertSchema} from './schema';\n\nexport const convertString = (schema: OpenapiSchemaString): StringSchema => ({\n type: 'string',\n format: schema.format,\n enum: schema.enum ?? [],\n ...convertSchema(schema),\n});\n","import type {OpenapiSchemaAllOf} from '@automatons/tools';\nimport type {AllOfSchema, Schema} from '../types';\nimport {convertSchema} from './schema';\n\nexport const convertAllOf = (schema: OpenapiSchemaAllOf, schemas: Schema[]): AllOfSchema => ({\n type: 'allOf',\n ...convertSchema(schema),\n schemas,\n});\n","import {\n AutomatonContext,\n isSchemaAllOf,\n isSchemaArray, isSchemaBoolean,\n isSchemaInteger,\n isSchemaNumber,\n isSchemaAnyOf,\n isSchemaObject,\n isSchemaOneOf,\n isSchemaRef,\n isSchemaString,\n OpenapiSchema,\n} from '@automatons/tools';\nimport {Model, Schema} from '../../types';\nimport {extractNumberSchema} from './number';\nimport {extractArraySchema} from './array';\nimport {extractObjectSchema} from './object';\nimport {extractAllOfSchema} from './allOf';\nimport {extractOneOfSchema} from './oneOf';\nimport {extractAnyOfSchema} from './anyOf';\nimport {extractRefSchema} from './ref';\nimport {extractStringSchema} from './string';\nimport {extractBooleanSchema} from './boolean';\nimport {normalizeSchema} from '../../converters/normalize';\n\nexport type ExtractSchemaResult = { schema: Schema, models: Model[], imports?: Model[] };\n\nexport const extractSchema = async (title: string, raw: OpenapiSchema,\n context: AutomatonContext): Promise<ExtractSchemaResult> => {\n const schema = normalizeSchema(raw);\n if (isSchemaString(schema)) {\n return extractStringSchema(title, schema);\n } else if (isSchemaNumber(schema) || isSchemaInteger(schema)) {\n return extractNumberSchema(title, schema);\n } else if (isSchemaBoolean(schema)) {\n return extractBooleanSchema(title, schema);\n } else if (isSchemaArray(schema)) {\n return extractArraySchema(title, schema, context);\n } else if (isSchemaObject(schema)) {\n return extractObjectSchema(title, schema, context);\n } else if (isSchemaAllOf(schema)) {\n return extractAllOfSchema(title, schema, context);\n } else if (isSchemaOneOf(schema)) {\n return extractOneOfSchema(title, schema, context);\n } else if (isSchemaAnyOf(schema)) {\n return extractAnyOfSchema(title, schema, context);\n } else if (isSchemaRef(schema)) {\n return extractRefSchema(title, schema);\n }\n throw new Error(`Unknown type\\n${JSON.stringify(schema, undefined, 2)}`);\n};\n\n","import {OpenapiSchema} from '@automatons/tools';\nimport {pascalCase} from 'change-case';\nimport {ModelSchema} from '../types';\nimport {convertSchema} from './schema';\n\nexport const convertSchemaModel = (model: string, schema: OpenapiSchema): ModelSchema => ({\n type: 'model',\n name: pascalCase(model),\n ...convertSchema(schema),\n});\n","import {OpenapiSchemaInteger, OpenapiSchemaNumber} from '@automatons/tools';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {convertModel} from '../../converters/model';\nimport {convertNumber} from '../../converters/number';\n\nexport const extractNumberSchema = (title: string, schema: OpenapiSchemaNumber | OpenapiSchemaInteger) => {\n if (schema.title) {\n const modelSchema = convertSchemaModel(title, schema);\n const models = [convertModel(title, convertNumber(schema))];\n return {schema: modelSchema, models, imports: models};\n }\n return {schema: convertNumber(schema), models: []};\n};\n","import {AutomatonContext, OpenapiSchemaArray} from '@automatons/tools';\nimport {Model} from '../../types';\nimport {pascalCase} from 'change-case';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {convertModel} from '../../converters/model';\nimport {convertArray} from '../../converters/array';\nimport {extractSchema} from './index';\n\nexport const extractArraySchema = async (title: string, schema: OpenapiSchemaArray, context: AutomatonContext) => {\n const models: Model[] = [];\n const imports: Model[] = [];\n let itemSchema = undefined;\n if (schema.items) {\n const {schema: shm, models: itemModels, imports: itemImports} =\n await extractSchema(pascalCase([title, 'Item'].join(' ')), schema.items, context);\n itemSchema = shm;\n models.push(...itemModels);\n imports.push(...(itemImports ?? []));\n }\n if (schema.title) {\n const modelSchema = convertSchemaModel(title, schema);\n const model = convertModel(title, convertArray(schema, itemSchema));\n return {schema: modelSchema, models: [model, ...models], imports: [...models]};\n }\n return {\n schema: convertArray(schema, itemSchema),\n models: models,\n imports,\n };\n};\n","import type {OpenapiSchemaArray} from '@automatons/tools';\nimport type {ArraySchema, Schema} from '../types';\nimport {convertSchema} from './schema';\n\nexport const convertArray = (schema: OpenapiSchemaArray, itemSchema?: Schema): ArraySchema => ({\n type: 'array',\n ...convertSchema(schema),\n uniqueItems: schema.uniqueItems,\n minItems: schema.minItems,\n maxItems: schema.maxItems,\n items: itemSchema,\n});\n","import {AutomatonContext, OpenapiSchemaObject} from '@automatons/tools';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {extractModel} from '../model';\nimport {convertModel} from '../../converters/model';\n\nexport const extractObjectSchema = async (title: string, schema: OpenapiSchemaObject, context: AutomatonContext) => {\n const modelSchema = convertSchemaModel(title, schema);\n const {model, insides} = await extractModel(title, schema, context);\n return {\n schema: modelSchema,\n models: [model, ...insides],\n imports: [convertModel(title, modelSchema)],\n };\n};\n","import {AutomatonContext, OpenapiSchemaAllOf} from '@automatons/tools';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {extractModel} from '../model';\nimport {convertModel} from '../../converters/model';\n\nexport const extractAllOfSchema = async (title: string, schema: OpenapiSchemaAllOf, context: AutomatonContext) => {\n const modelSchema = convertSchemaModel(title, schema);\n const {model, insides} = await extractModel(title, schema, context);\n return {\n schema: modelSchema,\n models: [model, ...insides],\n imports: [convertModel(title, modelSchema)],\n };\n};\n","import {AutomatonContext, OpenapiSchemaOneOf} from '@automatons/tools';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {extractModel} from '../model';\nimport {convertModel} from '../../converters/model';\n\nexport const extractOneOfSchema = async (title: string, schema: OpenapiSchemaOneOf, context: AutomatonContext) => {\n const modelSchema = convertSchemaModel(title, schema);\n const {model, insides} = await extractModel(title, schema, context);\n return {\n schema: modelSchema,\n models: [model, ...insides],\n imports: [convertModel(title, modelSchema)],\n };\n};\n","import {AutomatonContext, OpenapiSchemaAnyOf} from '@automatons/tools';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {extractModel} from '../model';\nimport {convertModel} from '../../converters/model';\n\nexport const extractAnyOfSchema = async (title: string, schema: OpenapiSchemaAnyOf, context: AutomatonContext) => {\n const modelSchema = convertSchemaModel(title, schema);\n const {model, insides} = await extractModel(title, schema, context);\n return {\n schema: modelSchema,\n models: [model, ...insides],\n imports: [convertModel(title, modelSchema)],\n };\n};\n","import {OpenapiSchemaReference, referenceTitle} from '@automatons/tools';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {convertModel} from '../../converters/model';\n\nexport const extractRefSchema = (title: string, schema: OpenapiSchemaReference) => {\n const name = referenceTitle(schema) ?? title;\n const modelSchema = convertSchemaModel(name, schema);\n return {\n schema: modelSchema,\n models: [],\n imports: [convertModel(name, modelSchema)],\n };\n};\n","import {OpenapiSchemaString} from '@automatons/tools';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {convertModel} from '../../converters/model';\nimport {convertString} from '../../converters/string';\n\nexport const extractStringSchema = (title: string, schema: OpenapiSchemaString) => {\n if (schema.title) {\n const modelSchema = convertSchemaModel(title, schema);\n const models = [convertModel(title, convertString(schema))];\n return {schema: modelSchema, models, imports: models};\n }\n return {schema: convertString(schema), models: []};\n};\n","import {OpenapiSchemaBoolean} from '@automatons/tools';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {convertModel} from '../../converters/model';\nimport {convertBoolean} from '../../converters/boolean';\n\nexport const extractBooleanSchema = (title: string, schema: OpenapiSchemaBoolean) => {\n if (schema.title) {\n const modelSchema = convertSchemaModel(title, schema);\n const models = [convertModel(title, convertBoolean(schema))];\n return {schema: modelSchema, models, imports: models};\n }\n return {schema: convertBoolean(schema), models: []};\n};\n","import {OpenapiSchema} from '@automatons/tools';\n\nconst inferType = (value: unknown): string =>\n typeof value === 'number' ? 'number' : typeof value === 'boolean' ? 'boolean' : 'string';\n\n/**\n * Normalize OpenAPI 3.1 (JSON Schema 2020-12) schema constructs into the 3.0-style\n * model the extractors understand. Idempotent.\n *\n * - `type: [\"X\", \"null\"]` -> `{type: \"X\", nullable: true}`\n * - `type: [\"X\", \"Y\"]` -> `{anyOf: [{type: \"X\"}, {type: \"Y\"}]}`\n * - `type: [\"X\", \"Y\", \"null\"]` -> `{anyOf: [...], nullable: true}`\n * - `const: V` -> `{enum: [V]}` (type inferred from V when absent)\n *\n * Out of scope: a sole `type: [\"null\"]` / `const: null` (returned unchanged), and other\n * 2020-12 keywords (prefixItems, patternProperties, ...).\n */\nexport const normalizeSchema = (raw: OpenapiSchema): OpenapiSchema => {\n const loose = raw as Record<string, unknown>;\n\n if (Array.isArray(loose.type)) {\n const types = loose.type as string[];\n const hasNull = types.includes('null');\n const nonNull = types.filter((type) => type !== 'null');\n if (nonNull.length === 0) return raw;\n const nullable = hasNull || Boolean(loose.nullable);\n const rest: Record<string, unknown> = {...loose};\n delete rest.type;\n if (nonNull.length === 1) {\n return {...rest, type: nonNull[0], nullable} as unknown as OpenapiSchema;\n }\n return {...rest, anyOf: nonNull.map((type) => ({type})), nullable} as unknown as OpenapiSchema;\n }\n\n if (loose.const !== undefined && loose.const !== null) {\n const value = loose.const;\n const rest: Record<string, unknown> = {...loose};\n delete rest.const;\n return {...rest, type: (loose.type as string | undefined) ?? inferType(value), enum: [value]} as unknown as OpenapiSchema;\n }\n\n return raw;\n};\n","import {extractSchema} from '../schema';\nimport {pascalCase} from 'change-case';\nimport {Model, Schema} from '../../types';\nimport {AutomatonContext, OpenapiSchema} from '@automatons/tools';\n\nexport const extractOfModel = (title: string, schemas: OpenapiSchema[], context: AutomatonContext) => {\n return schemas.map((item, index) =>\n extractSchema(pascalCase([title, index].join(' ')), item, context))\n .reduce<Promise<{ schemas: Schema[], models: Model[], imports: Model[] }>>(async (pre, cur) =>\n ({\n schemas: [...(await pre).schemas, (await cur).schema],\n models: [...(await pre).models, ...(await cur).models],\n imports: [...(await pre).imports, ...((await cur).imports ?? [])],\n }), Promise.resolve({schemas: [], models: [], imports: []}));\n};\n","import {AutomatonContext, OpenapiSchemaAllOf} from '@automatons/tools';\nimport {convertAllOf} from '../../converters/allOf';\nimport {convertModel} from '../../converters/model';\nimport {extractOfModel} from './of';\nimport {ExtractModel} from './type';\n\nexport const extractAllOfModel =\n async (title: string, schema: OpenapiSchemaAllOf, context: AutomatonContext): Promise<ExtractModel> => {\n const {models, schemas, imports} = await extractOfModel(title, schema.allOf, context);\n return {model: convertModel(title, convertAllOf(schema, schemas), imports), insides: models};\n };\n","import {AutomatonContext, OpenapiSchemaArray} from '@automatons/tools';\nimport {pascalCase} from 'change-case';\nimport {convertArray} from '../../converters/array';\nimport {convertModel} from '../../converters/model';\nimport {extractSchema} from '../schema';\nimport {ExtractModel} from './type';\n\nexport const extractArrayModel =\n async (title: string, schema: OpenapiSchemaArray, context: AutomatonContext): Promise<ExtractModel> => {\n if (schema.items) {\n const {schema: shm, models, imports} =\n await extractSchema(pascalCase([title, 'Item'].join(' ')), schema.items, context);\n return {model: convertModel(title, convertArray(schema, shm), imports), insides: models};\n }\n return {model: convertModel(title, convertArray(schema)), insides: []};\n };\n","import {AutomatonContext, OpenapiSchemaObject} from '@automatons/tools';\nimport {pascalCase} from 'change-case';\nimport {convertMap} from '../../converters/map';\nimport {convertModel} from '../../converters/model';\nimport {convertObjectSchema} from '../../converters/object';\nimport {Model} from '../../types';\nimport {extractSchema} from '../schema';\nimport {ExtractModel} from './type';\n\nexport const extractObjectModel =\n async (title: string, schema: OpenapiSchemaObject, context: AutomatonContext): Promise<ExtractModel> => {\n const models: Model[] = [];\n const imports: Model[] = [];\n const propertySchemas = schema.properties;\n const properties = await Promise.all(convertMap(propertySchemas)\n .map(async ({key, schema: propertySchema}) => {\n const extractPropertySchema = await extractSchema(pascalCase([title, key].join(' ')), propertySchema, context);\n models.push(...extractPropertySchema.models);\n imports.push(...(extractPropertySchema.imports ?? []));\n return {name: key, required: schema.required?.includes(key) ?? false, schema: extractPropertySchema.schema};\n }));\n return {model: convertModel(title, convertObjectSchema(schema, properties), imports), insides: models};\n };\n","import {OpenapiSchemaObject} from '@automatons/tools';\nimport {ObjectSchema, Property} from '../types';\nimport {convertSchema} from './schema';\n\nexport const convertObjectSchema = (schema: OpenapiSchemaObject, properties?: Property[]): ObjectSchema => ({\n type: 'object',\n ...convertSchema(schema),\n properties,\n});\n","import {OpenapiSchemaOneOf} from '@automatons/tools';\nimport {OneOfSchema, Schema} from '../types';\nimport {convertSchema} from './schema';\n\nexport const convertOneOf = (schema: OpenapiSchemaOneOf, schemas: Schema[]): OneOfSchema => ({\n type: 'oneOf',\n ...convertSchema(schema),\n schemas,\n});\n","import {convertModel} from '../../converters/model';\nimport {convertOneOf} from '../../converters/oneOf';\nimport {extractOfModel} from './of';\nimport {AutomatonContext, OpenapiSchemaOneOf} from '@automatons/tools';\n\nexport const extractOneOfModel = async (title: string, schema: OpenapiSchemaOneOf, context: AutomatonContext) => {\n const {models, schemas, imports} = await extractOfModel(title, schema.oneOf, context);\n return {model: convertModel(title, convertOneOf(schema, schemas), imports), insides: models};\n};\n","import {OpenapiSchemaAnyOf} from '@automatons/tools';\nimport {AnyOfSchema, Schema} from '../types';\nimport {convertSchema} from './schema';\n\nexport const convertAnyOf = (schema: OpenapiSchemaAnyOf, schemas: Schema[]): AnyOfSchema => ({\n type: 'anyOf',\n ...convertSchema(schema),\n schemas,\n});\n","import {convertModel} from '../../converters/model';\nimport {convertAnyOf} from '../../converters/anyOf';\nimport {extractOfModel} from './of';\nimport {AutomatonContext, OpenapiSchemaAnyOf} from '@automatons/tools';\n\nexport const extractAnyOfModel = async (title: string, schema: OpenapiSchemaAnyOf, context: AutomatonContext) => {\n const {models, schemas, imports} = await extractOfModel(title, schema.anyOf, context);\n return {model: convertModel(title, convertAnyOf(schema, schemas), imports), insides: models};\n};\n","import {\n AutomatonContext,\n OpenapiSchema,\n OpenapiSchemaReference,\n referenceSchema,\n referenceTitle,\n} from '@automatons/tools';\nimport {convertModel} from '../../converters/model';\nimport {convertSchemaModel} from '../../converters/schemaModel';\nimport {ExtractModel} from './type';\n\nexport const extractRefModel =\n async (title: string, schema: OpenapiSchemaReference, context: AutomatonContext): Promise<ExtractModel> => {\n const refSchema = await referenceSchema<OpenapiSchema>(schema, context);\n const refTitle = referenceTitle(schema);\n\n const ref = convertSchemaModel(refTitle, refSchema);\n return {model: convertModel(title, ref, [convertModel(refTitle, ref)]), insides: []};\n };\n","import {AutomatonContext, HTTP_METHODS, Method, OpenapiPath, OpenapiPathOperation} from '@automatons/tools';\nimport {PathReturn} from './type';\nimport {extractMethod} from './method';\nimport {isRef, referenceSchema} from '@automatons/tools';\nimport {omitCopy} from '../../utils/omitCopy';\n\ntype PathContext = { path: string } & AutomatonContext;\n\nexport const extractPath =\n async (schema: OpenapiPath, {path, openapi, settings}: PathContext): Promise<PathReturn[]> => {\n const _schema = isRef(schema) ?\n {...await referenceSchema(schema, {openapi, settings}), ...omitCopy(schema, '$ref')} :\n schema;\n return Promise.all(HTTP_METHODS\n .map<{ method: Method, operation: OpenapiPath | undefined }>((method) => ({method, operation: _schema[method]}))\n .filter<{ method: Method, operation: OpenapiPathOperation }>(\n (operation): operation is { method: Method, operation: OpenapiPathOperation } => !!operation.operation)\n .map(({method, operation}) => extractMethod(path, method, operation, _schema, {openapi, settings})));\n };\n","import {AutomatonContext, Method, OpenapiParameter, OpenapiPath, OpenapiPathOperation} from '@automatons/tools';\nimport {camelCase} from 'change-case';\nimport {convertServer} from '../../converters/server';\nimport {\n CookieParameter,\n Form,\n HeaderParameter,\n Model,\n PathParameter,\n QueryParameter,\n Schema,\n Security,\n Server,\n} from '../../types';\nimport {requiredCompare} from '../../utils/sort';\nimport {extractParameter} from './parameter';\nimport {extractRequestBody} from './requestBody';\nimport {extractResponse} from './response';\nimport {extractSecurity} from './security';\nimport {PathReturn} from './type';\n\nconst mergeModels = (main: Models, adding: Models) => {\n main.models.push(...adding.models);\n main.imports.push(...adding.imports);\n};\n\nconst mergeParameter =\n async (parameters: OpenapiParameter[],\n path: string,\n params: Params,\n models: Models,\n {openapi, settings}: AutomatonContext) => {\n const {\n parameters: _parameters,\n queries: _queries,\n headers: _headers,\n cookies: _cookies,\n models: _models,\n imports: _imports,\n } =\n await extractParameter(parameters, {path, openapi, settings});\n params.parameters.push(..._parameters);\n params.queries.push(..._queries);\n params.headers.push(..._headers);\n params.cookies.push(..._cookies);\n mergeModels(models, {models: _models, imports: _imports});\n };\n\ntype Models = {\n models: Model[];\n imports: Model[];\n}\n\ntype Params = {\n parameters: PathParameter[];\n queries: QueryParameter[];\n headers: HeaderParameter[];\n cookies: CookieParameter[];\n};\n\ntype Data = {\n params: Params;\n servers: Server[];\n securities?: Security[];\n forms?: Form[];\n schema?: Schema;\n};\n\nexport const extractMethod = async (path: string, method: Method, operation: OpenapiPathOperation, schema: OpenapiPath,\n {openapi, settings}: AutomatonContext): Promise<PathReturn> => {\n const models: Models = {\n models: [],\n imports: [],\n };\n const params: Params = {\n parameters: [],\n queries: [],\n headers: [],\n cookies: [],\n };\n const data: Data = {\n params,\n servers: (operation.servers || schema.servers || openapi.servers || [])\n .map(convertServer),\n securities: extractSecurity(operation, openapi),\n };\n\n if (schema.parameters) {\n await mergeParameter(schema.parameters, path, params, models, {openapi, settings});\n }\n\n if (operation.parameters) {\n await mergeParameter(operation.parameters, path, params, models, {openapi, settings});\n }\n\n if (operation.requestBody) {\n const bodies: { forms: Form[], models: Model[], imports: Model[]; } =\n await extractRequestBody(operation.requestBody, path, method, {openapi, settings});\n data.forms = bodies.forms;\n mergeModels(models, {models: bodies.models, imports: bodies.imports});\n }\n\n const response = await extractResponse(operation.responses, method, {path, openapi, settings});\n\n if (response) {\n data.schema = response.schema;\n mergeModels(models, {models: response.models, imports: response.imports ?? []});\n }\n\n return convertPath(path, method, operation, data, models);\n};\n\nconst convertPath = (path: string, method: Method, operation: OpenapiPathOperation,\n {params, servers, securities, forms, schema}: Data, models: Models): PathReturn => ({\n tags: operation.tags && operation.tags.length ? operation.tags : ['default'],\n path: {\n name: camelCase(operation.operationId ?? [method, ...path.split('/')].join(' ')),\n path,\n method,\n servers,\n parameters: params.parameters,\n queries: params.queries.sort(requiredCompare),\n headers: params.headers.sort(requiredCompare),\n cookies: params.cookies.sort(requiredCompare),\n ...(securities ? {securities} : {}),\n ...(forms ? {forms} : {}),\n ...(schema ? {schema} : {}),\n },\n ...models,\n});\n\n","import {OpenapiServer} from '@automatons/tools';\nimport {Server} from '../types';\nimport {convertMap} from './map';\nimport {pascalCase} from 'change-case';\n\nexport const convertServer = (schema: OpenapiServer): Server => ({\n name: pascalCase(schema.name ?? schema['x-name'] ?? schema.url),\n url: schema.url,\n values: convertMap(schema.variables).map(({key, schema}) =>\n ({name: key, defaultValue: schema.default, enums: schema.enum})),\n});\n","export const requiredCompare = (a: { required?: boolean }, b: { required?: boolean }) =>\n (a.required && b.required) || (!a.required && !b.required) ? 0 : b.required ? 1 : -1;\n","import {\n hasSchema,\n isCookieParam,\n isHeaderParam,\n isPathParam,\n isQueryParam,\n OpenapiParameter,\n referenceSchema,\n} from '@automatons/tools';\nimport {pascalCase} from 'change-case';\nimport {extractSchema} from '../schema';\nimport {extractMediaType} from './mediaType';\nimport {ParameterResult, PathContext} from './type';\n\nexport const extractParameter =\n (schema: OpenapiParameter[], {path, ...context}: PathContext): Promise<ParameterResult> =>\n schema\n .map((param) => referenceSchema(param, context))\n .map(async (param) => {\n const _param = await param;\n const paramSchema = hasSchema(_param) ? _param.schema : Object.keys(_param.content).length ?\n _param.content[extractMediaType(_param.content)]?.schema : undefined;\n if (!paramSchema) return;\n const {schema, models, imports} =\n await extractSchema(pascalCase([path, 'parameter', _param.name].join(' ')),\n paramSchema, context);\n if (isPathParam(_param)) {\n return {\n parameter: {\n name: _param.name,\n schema,\n style: _param.style,\n explode: _param.explode,\n },\n models,\n imports,\n };\n } else if (isQueryParam(_param)) {\n return {\n query: {\n name: _param.name,\n schema,\n style: _param.style,\n required: _param.required,\n explode: _param.explode,\n },\n models,\n imports,\n };\n } else if (isHeaderParam(_param)) {\n return {\n header: {\n name: _param.name,\n schema,\n style: _param.style,\n required: _param.required,\n explode: _param.explode,\n },\n models,\n imports,\n };\n } else if (isCookieParam(_param)) {\n return {\n cookie: {\n name: _param.name,\n schema,\n style: _param.style,\n required: _param.required,\n explode: _param.explode,\n },\n models,\n imports,\n };\n }\n return;\n })\n .reduce<Promise<ParameterResult>>(async (pre, cur) => {\n const previous = await pre;\n const current = await cur;\n return current ? ({\n parameters: current.parameter ? [...previous.parameters, current.parameter] : previous.parameters,\n queries: current.query ? [...previous.queries, current.query] : previous.queries,\n headers: current.header ? [...previous.headers, current.header] : previous.headers,\n cookies: current.cookie ? [...previous.cookies, current.cookie] : previous.cookies,\n models: [...previous.models, ...current.models],\n imports: [...previous.imports, ...current.imports ?? []],\n }) :\n previous;\n }, Promise.resolve({parameters: [], queries: [], headers: [], cookies: [], models: [], imports: []}));\n","import {OpenapiMap, OpenapiPathMedia} from '@automatons/tools';\n\nexport const extractMediaType = (schema: OpenapiMap<OpenapiPathMedia>): keyof OpenapiMap<OpenapiPathMedia> =>\n Object.hasOwn(schema, 'application/json') ?\n 'application/json' :\n Object.hasOwn(schema, 'application/*') ?\n 'application/*' :\n Object.hasOwn(schema, 'default') ?\n 'default' : Object.keys(schema)[0] ?? '';\n","import {\n AutomatonContext,\n OpenapiPathMedia,\n OpenapiPathRequestBody,\n OpenapiReference,\n OpenapiSchema,\n referenceSchema,\n} from '@automatons/tools';\nimport {isDeepStrictEqual} from 'node:util';\nimport {Form, Model} from '../../types';\nimport {extractSchema, ExtractSchemaResult} from '../schema';\n\nexport const extractRequestBody =\n async (schema: OpenapiPathRequestBody | OpenapiReference, path: string, method: any, context: AutomatonContext) => {\n const requestBody = await referenceSchema(schema, context);\n const extracts = await Promise.all(Object.entries(requestBody.content)\n .filter<[string, OpenapiPathMedia & { schema: OpenapiSchema }]>(\n (item): item is [string, OpenapiPathMedia & { schema: OpenapiSchema }] => !!item[1].schema)\n .map<Promise<{ key: string, required?: boolean, extract: ExtractSchemaResult }>>(async ([key, value]) => ({\n key,\n required: requestBody.required,\n extract: await extractSchema([...path.split('/'), method, ...key.split('/'), 'Request'].join(' '), value.schema,\n context),\n })));\n return extracts\n .map<{ form: Form, models: Model[], imports?: Model[] }>(({key, required, extract}) =>\n ({\n form: {types: [key], required, schema: extract.schema},\n models: extract.models,\n imports: extract.imports,\n }))\n .reduce<{ forms: Form[], models: Model[], imports: Model[] }>((pre, cur) => ({\n forms: pre.forms.some((form) => isDeepStrictEqual(form.schema, cur.form.schema)) ? pre.forms.map(\n (form) => isDeepStrictEqual(form.schema, cur.form.schema) ? {\n ...form,\n types: [...form.types, ...cur.form.types],\n } : form) : [...pre.forms, cur.form],\n models: [...pre.models, ...cur.models],\n imports: [...pre.imports, ...cur.imports ?? []],\n }), {forms: [], models: [], imports: []});\n };\n","import {Method, OpenapiMap, OpenapiPathResponse, OpenapiReference, referenceSchema} from '@automatons/tools';\nimport {extractSchema, ExtractSchemaResult} from '../schema';\nimport {extractMediaType} from './mediaType';\nimport {extractStatus} from './status';\nimport {PathContext} from './type';\n\nexport const extractResponse =\n async (schema: OpenapiMap<OpenapiPathResponse | OpenapiReference>,\n method: Method,\n context: PathContext): Promise<ExtractSchemaResult | void> => {\n const status = extractStatus(schema);\n const response = await referenceSchema(schema[status]!, context);\n const content = response.content;\n if (!content || !Object.keys(content).length) return;\n const resSchema = content[extractMediaType(content)]?.schema;\n if (!resSchema) return;\n return extractSchema([...context.path.split('/'), method, 'Response'].join(' '),\n resSchema, context);\n };\n","import {OpenapiMap, OpenapiPathResponse, OpenapiReference} from '@automatons/tools';\n\nexport const extractStatus = (schema: OpenapiMap<OpenapiPathResponse | OpenapiReference>):\n keyof OpenapiMap<OpenapiPathResponse | OpenapiReference> => {\n const statuses = Object.keys(schema);\n return statuses\n .map((status) => Number(status))\n .filter((status) => Number(status) >= 200 && Number(status) < 300)\n .sort()[0] ?? statuses[0] ?? '';\n};\n","import {Security} from '../../types';\nimport {convertSecurity} from '../../converters/security';\nimport {Openapi, OpenapiPathOperation} from '@automatons/tools';\n\nexport const extractSecurity = (operation: OpenapiPathOperation, openapi: Openapi): Security[] | undefined =>\n operation.security && operation.security.map((value) =>\n Object.entries(value)\n .map<Security | undefined>(([name, scopes]): Security | undefined => {\n const security = openapi.components?.securitySchemes?.[name];\n return security ? convertSecurity(name, security, scopes) : undefined;\n }).filter<Security>((value): value is Security => value !== undefined)).flat();\n","export const omitCopy = <T extends object, S extends keyof T>(schema: T, key: S): Omit<T, S> =>\n Object.entries(schema)\n .reduce((pre, [name, value]) =>\n ({...pre, ...(name !== key ? {[name]: value} : {})}), {}) as Omit<T, S>;\n","export const uniq = <T extends object>(items: T[], key: keyof T): T[] => items.reduce<T[]>(\n (pre, cur) => pre.some((item) => cur[key] === item[key]) ? pre : [...pre, cur], []);\n","export const overwrite = <T>(items: T[], item: T, predicate: (item: T) => boolean): T[] =>\n [...(items.filter(predicate)), item];\n","import {pascalCase} from 'change-case';\nimport {convertMap} from '../converters/map';\nimport {extractModel} from '../extractors/model';\nimport {Model} from '../types';\nimport {AutomatonContext} from '@automatons/tools';\n\nexport const parseModel = async (context: AutomatonContext): Promise<Model[]> =>\n (await Promise.all(convertMap(context.openapi.components?.schemas)\n .map(({key, schema}) =>\n ({title: pascalCase(key), schema}))\n .map(async ({title, schema}) => Object.values(await extractModel(title, schema, context)))))\n .flat(2);\n","import {AutomatonSettings, Openapi} from '@automatons/tools';\nimport {convertSecurity} from './converters/security';\nimport {parseApi} from './parsers/api';\nimport {parseModel} from './parsers/model';\nimport {Api, Model, Security} from './types';\n\nexport const parser =\n async (openapi: Openapi, settings: AutomatonSettings):\n Promise<{ models: Model[], apis: Api[], securities: Security[] }> => {\n const {apis, models} = await parseApi({openapi, settings});\n models.push(...await parseModel({openapi, settings}));\n const securities = Object.entries(openapi.components?.securitySchemes ?? {})\n .map(([key, schema]) => convertSecurity(key, schema, []))\n .filter<Security>((value): value is Security => value !== undefined);\n return {models, apis, securities};\n };\n"],"mappings":"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","names":["camelCase","pascalCase","isSchemaAllOf","isSchemaArray","isSchemaBoolean","isSchemaInteger","isSchemaNumber","isSchemaAnyOf","isSchemaObject","isSchemaOneOf","isSchemaRef","isSchemaString","camelCase","pascalCase","pascalCase","pascalCase","pascalCase","pascalCase","pascalCase","pascalCase","pascalCase","pascalCase","referenceTitle","referenceTitle","isSchemaString","isSchemaNumber","isSchemaInteger","isSchemaBoolean","isSchemaArray","isSchemaObject","isSchemaAllOf","isSchemaOneOf","isSchemaAnyOf","isSchemaRef","camelCase","pascalCase","schema","referenceSchema","pascalCase","referenceSchema","schema","pascalCase","referenceSchema","referenceSchema","referenceSchema","referenceSchema","value","camelCase","referenceSchema","referenceSchema","pascalCase","api","camelCase","pascalCase","pascalCase"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@automatons/parser",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"repository": "https://github.com/openapi-automatons/parser.git",
|
|
5
5
|
"author": "tanmen <yt.prog@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"prepare": "husky"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@automatons/tools": "^2.
|
|
36
|
+
"@automatons/tools": "^2.1.0",
|
|
37
37
|
"change-case": "^5.4.4"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|