From 5fd502edb8251887b30d442d61838f77a5f7fd5d Mon Sep 17 00:00:00 2001 From: Ilya Yurchenko Date: Mon, 23 Sep 2024 14:08:52 +0300 Subject: [PATCH] dev --- README.md | 33 +++++- bun.lockb | Bin 0 -> 437834 bytes package.json | 67 ++++++------ src/codeGen/ReactQueryHookGenerator.ts | 63 ++++++++--- src/codeGen/queryKeys.ts | 6 +- src/commands/generate/index.ts | 21 ++-- src/common/SchemaParser.ts | 132 +++++++++++++---------- src/common/helpers.ts | 138 ++++++++++++++---------- src/common/types.ts | 15 ++- src/typegen/JsonSchemaRenderer.ts | 26 +++-- src/typegen/TypeRenderer.ts | 139 +++++++++++-------------- src/typegen/refToTypesFile.ts | 39 ------- yarn.lock | 5 + 13 files changed, 381 insertions(+), 303 deletions(-) create mode 100644 bun.lockb delete mode 100644 src/typegen/refToTypesFile.ts diff --git a/README.md b/README.md index 226b6ec..9d4612b 100644 --- a/README.md +++ b/README.md @@ -59,4 +59,35 @@ yarn ts-openapi-gen generate > Рекомендуется использовать типы как есть, и всегда выставлять в > `override_policies` для `types` значение `override`. Однако хуки > могут являться частью бизнес-логики, или требовать вспомогательных -> действий. Поэтому считайте, что фича с генерацией хуков предназначена для упрощения создания нового раздела, но не для полной автоматизации. +> действий. Поэтому считайте, что фича с генерацией хуков предназначена для упрощения создания нового раздела, но не для полной автоматизации. + +# Example v2.0.0-beta + +const generator = + new OpenApiGenerator( + new URLRequest('https://example.com/index.yaml') + ); + +export default generaotr; + +or + +const generator = + new OpenApiGenerator( + new FileRequest('/mnt/d/users/john/index.yaml') + ); + +export default generator; + + + + + +# Middlewares + +[load.document.before] - takes a URL/path to document as argument, expects parsed object as output +[load.document.after] - takes parsed object as argument, expects modified object as output + +# Events + +[load.progress] - takes a percentage of progress as argument, expects void. For printing or formatting. diff --git a/bun.lockb b/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000..8ff2e0f445f41a8c6c2fd701c7a192febdb5eba1 GIT binary patch literal 437834 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

{_#|eiU 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

Q>~Q>a{ss)y?|B<@ zaK4a+FAp(7{`b6%x$`K@*MJ0s^YHI^8?(bPulXDB+~oJXjk)pqJ#S-f z9DX)`1I{zy48c6DFX5A^) zAAheOhffY+(^uyo2IE{6kt9zNbzxt5Z@ zeM0A!{#@tD(*u6xAxe+0+S_GZe(~jC$RT}=3bC=GRbIw%ic|YU+??;v{Y`?o?S|b} z%=y;jN2yZp<Yd*las_C#jhUxG5ABA?vJi}lv(25qu)z>PUl^J zF{<#aF0-Ry--gPy?@z6BgZ&HNZZIbZPvk8E*>B!g6$&l4;QV&6BQ0WQ?W!pyfrf2| z*LT^+iLla1tCTapRTz_$cnm}`b7^1a7b%5go*+v-RiZKwS7qvnykiucnQZl^NsVg@rV6?jWC zwA2&4c z-m-n^>b}M`X{-6)78xctleZUIuDCBPt1WPNty=?!+qZa4aidk$$KGvv{Vl6)pV(IF zl>}dy8;>V)bB&2S%NgiN9}d;NV5JOxN_Lb&bT07{iB}A3bv`uGkXZWFqarlOezke$ zI*J#Ig&TYCgcW`sB>2LdO+1k|6&}s!R@B?^^fa%sv;BU4gQnd#cbDqX7_gc@3wEJ% z^_F^Ou`_m2n)~_o>ta)WZ-X8UtV%6?x>#|2sFh9Z^5q0ynA?mea#e;!^7m#=4Uae{ zQSZ6Gm`%`uvHL^h_ro&A4+W|u6q5LMEmrN_Xq&j1#^p`@(ihRR360-$eP51o_SUOY zW$>c^BH)kX0)AtKCvx`>RnL~j_gpUASgOw5&zvRA8SWTnG;>09CfPOmsLbKo3wL{8 z42zqlZ9T4@u5~{!IcnLJrf>r3!m zj+-KqA1J1c$ofIDiT_@L<>@zkKd$lb8=9=P(T#(kO&0*vC=n|jM{5T~AHXG;Uj@umu z&%>`QZwvKk%JvzOU?$OwTB=34HS|jN>P3pC+jhzA5;Lp*=yuv$a4dz;Uq;*%k^EAK zHe~7sWuK4Pa=Du^aNe;@?a;mp#a~-TYK0d2m$x`rfGrw9Y zeRI5aUSYqAp?vWS!FMIm*UuCaXG)g^O>|Wv)Kq7gCto zVyqZ6qc1*Eko+({=R|``VenROlkB#_2q6bMaZ-ZsDx$CRjf>riu`NBrVJq3E-*Nd)ZwdU38T|UjLiCmM<)Bz4(nhbOKu4CoRo+aB zWhiITgZr`B#WGgMuP;JWUv3FHCoEpXu(Nf)Snc(;>cAfgVpPg3s|z)PmgGs16MW%s zUf_wGS7*q}z3KEGDPyjn=GR*od~efOl3!#?8kt#AO>w5!OVKQv-K59 zj|!H_2d*q`B=~aRrikS4V`jqS6W(wMJ$}IIKQ4Cg+J+%bX}=HG-9rxAovN+udly`$ zsnFN=)z`a>yI4}~d)Mx3sV~CUapmQc+}7yca+ToAN%Za4KYvVPvrpYqx$+)9QDp-XgQ@^Q{7@w1|DS#uTRYJHuVm2)

  • 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≫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 Yzo0Oblam9mqzKdCzQgj||EK@`KM6Fjga7~l literal 0 HcmV?d00001 diff --git a/package.json b/package.json index be27188..32769eb 100644 --- a/package.json +++ b/package.json @@ -45,55 +45,56 @@ "license": "ISC", "dependencies": { "@apidevtools/json-schema-ref-parser": "^10.1.0", - "@inquirer/input": "^1.0.7", - "@inquirer/prompts": "^1.1.3", - "@oclif/core": "^2", - "@oclif/plugin-help": "^5", + "@inquirer/input": "^1.2.16", + "@inquirer/prompts": "^1.2.3", + "@oclif/core": "^2.16.0", + "@oclif/plugin-help": "^5.2.20", "@oclif/plugin-plugins": "^2.4.7", - "@openapi-contrib/openapi-schema-to-json-schema": "^4.0.4", - "@openapitools/openapi-generator-cli": "^2.5.2", - "@stoplight/json-schema-ref-parser": "^9.2.4", - "@stoplight/yaml": "^4.2.3", + "@openapi-contrib/openapi-schema-to-json-schema": "^4.0.5", + "@openapitools/openapi-generator-cli": "^2.13.9", + "@stoplight/json-schema-ref-parser": "^9.2.7", + "@stoplight/yaml": "^4.3.0", "add": "^2.0.6", "case": "^1.6.3", "code-block-writer": "^12.0.0", - "fastify": "^4.12.0", + "fastify": "^4.28.1", "js-yaml": "^4.1.0", - "jsdom": "^22.0.0", + "jsdom": "^22.1.0", "json-schema": "^0.4.0", "json-schema-resolver": "^2.0.0", "json-schema-to-typescript": "^12.0.0", "kleur": "^4.1.5", "lodash.keyby": "^4.6.0", - "node-fetch-commonjs": "^3.2.4", - "openapi-typescript": "^6.1.0", - "p-queue-compat": "^1.0.223", + "middleware-io": "^2.8.1", + "node-fetch-commonjs": "^3.3.2", + "openapi-typescript": "^6.7.6", + "p-queue-compat": "^1.0.226", "prettier": "^2.8.8", "ts-morph": "^18.0.0", - "yaml": "^2.1.1", - "yargs": "^17.6.2", - "yarn": "^1.22.19" + "yaml": "^2.5.1", + "yargs": "^17.7.2", + "yarn": "^1.22.22" }, "devDependencies": { - "@trivago/prettier-plugin-sort-imports": "^4.1.1", - "@types/d3": "^7.4.0", - "@types/js-yaml": "^4.0.5", - "@types/jsdom": "^21.1.1", - "@types/lodash.keyby": "^4.6.7", - "@types/node": "^18.0.0", - "@types/yargs": "^17.0.22", - "@typescript-eslint/eslint-plugin": "^5.59.6", - "@typescript-eslint/parser": "^5.59.6", - "eslint": "^8.40.0", + "@trivago/prettier-plugin-sort-imports": "^4.3.0", + "@types/d3": "^7.4.3", + "@types/js-yaml": "^4.0.9", + "@types/jsdom": "^21.1.7", + "@types/lodash.keyby": "^4.6.9", + "@types/node": "^18.19.50", + "@types/yargs": "^17.0.33", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", + "eslint": "^8.57.1", "eslint-config-airbnb": "^19.0.4", "eslint-config-oclif": "^4.0.0", "eslint-config-oclif-typescript": "^1.0.3", - "eslint-config-prettier": "^8.8.0", + "eslint-config-prettier": "^8.10.0", "eslint-plugin-unicorn": "^47.0.0", - "oclif": "^3", - "openapi-types": "^12.1.0", - "ts-node": "^10.9.1", - "tslib": "^2.5.0", - "typescript": "^5.0.4" + "oclif": "^3.17.2", + "openapi-types": "^12.1.3", + "ts-node": "^10.9.2", + "tslib": "^2.7.0", + "typescript": "^5.6.2" } -} +} \ No newline at end of file diff --git a/src/codeGen/ReactQueryHookGenerator.ts b/src/codeGen/ReactQueryHookGenerator.ts index ecf8c37..6c47125 100644 --- a/src/codeGen/ReactQueryHookGenerator.ts +++ b/src/codeGen/ReactQueryHookGenerator.ts @@ -35,15 +35,18 @@ export class ReactQueryHookGenerator { this.typeFetcher = typeFetcher; } - async checkFilePathForGroup(group: string) { - const folder = join(this.config.output_path, group); + async mkdirs(relativePath: string) { + const folder = join(this.config.output_path, relativePath); await mkdir(folder, { recursive: true }); const filePath = `${folder}/index.ts`; const isExisting = existsSync(filePath); if (this.overridePolicy === 'skip' && isExisting) { - console.log(kleur.italic(kleur.bgWhite(kleur.black(group))), 'хуки react-query пропущены как существующие'); + console.log( + kleur.italic(kleur.bgWhite(kleur.black(relativePath))), + 'хуки react-query пропущены как существующие' + ); return null; } @@ -291,8 +294,20 @@ export class ReactQueryHookGenerator { }); } - async generate(group: string, flatOperations: AugmentedOperation[]) { - const filePath = await this.checkFilePathForGroup(group); + async generate(operations: AugmentedOperation[]) { + const splitted: Record = {}; + + for (const operation of operations) { + if (!splitted[operation.storePath]) splitted[operation.storePath] = []; + splitted[operation.storePath].push(operation); + } + + const keys = Object.keys(splitted); + await Promise.all(keys.map(path => this.generateSingle(path, splitted[path]))); + } + + private async generateSingle(relativePath: string, operations: AugmentedOperation[]) { + const filePath = await this.mkdirs(relativePath); if (!filePath) return; const project = new Project(); @@ -306,35 +321,53 @@ export class ReactQueryHookGenerator { imports.push(...this.config['react-query'].imports); - this.queryKeysSchema = generateQueryKeysSchema(flatOperations); + this.queryKeysSchema = generateQueryKeysSchema(operations); generateQueryKeysConstant(this.queryKeysSchema, sourceFile); - for (const operation of flatOperations) { + const enumsPath = join(this.config.output_path, relativePath, 'enums.ts'); + const hasEnums = existsSync(enumsPath); + + if (hasEnums) { + sourceFile.addExportDeclaration({ + moduleSpecifier: './enums', + }); + } + + sourceFile.addExportDeclaration({ + moduleSpecifier: './types', + }); + + for (const operation of operations) { const queryParams = operation.queryParams; if (queryParams.length > 0 && operation.isMutation) { - console.error('Mutations with queryParams are not supported yet: check operation', operation.path); + console.error( + 'Mutations with queryParams are not supported yet: check operation', + operation.originalPath + ); continue; } const types = this.typeFetcher(operation); // eslint-disable-next-line unicorn/consistent-function-scoping - const resolveImport = (path: string) => { - const fullPath = join(this.config.output_path, path).replaceAll('\\', '/'); + const resolveImport = (importPath: string) => { + const fullPath = join(this.config.output_path, importPath).replaceAll('\\', '/'); const filePathNorm = filePath.replaceAll('\\', '/'); - let relativePath = relative(dirname(filePathNorm), fullPath).replaceAll('\\', '/'); + let relativeImportPath = relative(dirname(filePathNorm), fullPath).replaceAll('\\', '/'); - if (relativePath[0] !== '.') { - relativePath = './' + relativePath; + if (relativeImportPath[0] !== '.') { + relativeImportPath = './' + relativeImportPath; } - return relativePath; + return relativeImportPath; }; if (!types.response) { - console.error('No response found in operation ' + operation.path + ', of group ' + operation.group); + console.error( + 'No response found in operation ' + operation.originalPath + ', of group ' + operation.group + ); continue; } diff --git a/src/codeGen/queryKeys.ts b/src/codeGen/queryKeys.ts index 57bf39a..09954a9 100644 --- a/src/codeGen/queryKeys.ts +++ b/src/codeGen/queryKeys.ts @@ -10,8 +10,8 @@ export type QueryKeysSchema = { items: Record; }; -export function generateQueryKeysSchema(flatOperations: AugmentedOperation[]): QueryKeysSchema { - const searchOperations = flatOperations.filter(e => SEARCH_OPCODES.includes(parseOpcode(e))); +export function generateQueryKeysSchema(operations: AugmentedOperation[]): QueryKeysSchema { + const searchOperations = operations.filter(e => SEARCH_OPCODES.includes(parseOpcode(e))); const items = searchOperations.reduce((acc, searchOperation) => { const pathParameters = @@ -93,7 +93,7 @@ export function createCallQueryKey(operation: AugmentedOperation, type: 'query' const keyParts = operation.pathVariables.map(e => `${keyPrefix}${e}`).join(','); // Always invalidate search of multiple entities. - if (type === 'mutation' && operation.path.endsWith(':search')) + if (type === 'mutation' && operation.originalPath.endsWith(':search')) return `QueryKeys.${operation.original.operationId}()`; if (operation.original.requestBody && isHavePathParams) { diff --git a/src/commands/generate/index.ts b/src/commands/generate/index.ts index 9f8f697..e319afb 100644 --- a/src/commands/generate/index.ts +++ b/src/commands/generate/index.ts @@ -2,10 +2,11 @@ import input from '@inquirer/input'; import { checkbox, select } from '@inquirer/prompts'; import { Args, Command } from '@oclif/core'; +import { writeFile } from 'fs/promises'; import { OpenAPIV3 } from 'openapi-types'; import { ReactQueryHookGenerator } from '../../codeGen/ReactQueryHookGenerator'; -import { ParsedSchema, SchemaParser } from '../../common/SchemaParser'; +import { SchemaParser } from '../../common/SchemaParser'; import { runEslintAutoFix } from '../../common/helpers'; import { OverridePolicy } from '../../common/types'; import { Config, ConfigSchema, Target } from '../../config/Config'; @@ -29,7 +30,6 @@ export default class Generate extends Command { private conf!: ConfigSchema; private isSomePrompted = false; - private parsedSchema!: ParsedSchema; private async applyArgsToConfig() { const { args } = await this.parse(Generate); @@ -140,8 +140,11 @@ export default class Generate extends Command { await traverseAndModify( indexDocument, async ref => { + // TODO: apply load.document.before middlewares const result = await loader.loadJson(ref.absolutePath); + // TODO: apply load.document.after, return result + if (!ref.target) return result; if (result.components && ref.target.startsWith('components')) { @@ -169,13 +172,11 @@ export default class Generate extends Command { ); const schemaParser = new SchemaParser(this.conf, indexDocument); - this.parsedSchema = await schemaParser.parse(); - - const { groups, derefedPathGroupedOps } = this.parsedSchema; + const parsedSchema = await schemaParser.parse(); const typeRenderer = new TypeRenderer({ overridePolicy: this.conf.override_policies[Target.TYPES]!, - parsedSchema: this.parsedSchema, + parsedSchema: parsedSchema, config: this.conf, }); @@ -190,18 +191,14 @@ export default class Generate extends Command { config: this.conf, overridePolicy: override_policies[Target.REACT_QUERY]!, typeFetcher: operation => { - const types = typeRenderer.getTypesForRequest(operation.path, operation.method as any)!; + const types = typeRenderer.getTypesForRequest(operation.originalPath, operation.method as any)!; return types; }, }); console.log('⏳ Генерируем хуки react-query...'); - await Promise.all( - groups.map(group => { - return hookGen.generate(group, derefedPathGroupedOps[group]); - }) - ); + await hookGen.generate(parsedSchema.operations); console.log('✔️ Хуки сгенерированы!'); } diff --git a/src/common/SchemaParser.ts b/src/common/SchemaParser.ts index af82d4c..7d1f409 100644 --- a/src/common/SchemaParser.ts +++ b/src/common/SchemaParser.ts @@ -1,52 +1,22 @@ -import { pascal } from 'case'; import type { OpenAPIV3 } from 'openapi-types'; import { ConfigSchema } from '../config/Config'; -import { augmentPathsOperations, groupOperations } from './helpers'; +import { augmentPathsOperations } from './helpers'; import { AugmentedOperation } from './types'; export type ParsedSchema = { document: OpenAPIV3.Document; operations: AugmentedOperation[]; - derefedPathGroupedOps: Record; - groups: string[]; }; -const transformPath = (path: string) => pascal(path.replace('.yaml', '').replaceAll('/', '_').toLowerCase()); - -function parsePath(p: string) { - let preparedPath = p.replaceAll('../', '').replaceAll('./', ''); - - if (preparedPath.startsWith('#/')) { - preparedPath = `common/${preparedPath.slice(2)}`; - } - - if (preparedPath.includes('#/')) { - const [path, obj] = preparedPath.split('#/'); - - return [transformPath(path), obj, p] as const; - } - - if (preparedPath.endsWith('.yaml')) { - const [objYaml, ...rest] = preparedPath.split('/').reverse(); - const obj = objYaml.replace('.yaml', ''); - const path = rest.join('/'); - - return [transformPath(path), obj, p] as const; - } - - if (preparedPath.startsWith('common/')) { - const obj = preparedPath.split('common/')[1]; - - return ['common', obj, p] as const; - } - - return []; +export interface ParsedPath { + relativePath: string; + name: string; + originalPath: string; } export class SchemaParser { private schemaObject!: OpenAPIV3.Document; - private readonly uniqueRefs = new Set(); private config: ConfigSchema; constructor(config: ConfigSchema, schemaObject: OpenAPIV3.Document) { @@ -55,34 +25,84 @@ export class SchemaParser { } async parse(): Promise { - const grouped = new Map(); const paths = Object.keys(this.schemaObject.paths); - const parsedPaths = paths.map(element => parsePath(element)); - - for (const [path, name, originalPath] of parsedPaths) { - if (!path) continue; - - if (!grouped.get(path)) { - grouped.set(path, []); - } - - grouped.get(path)!.push({ - name: pascal(name), - originalPath, - }); - } - if (!paths) throw new Error('[SchemaParser] No paths found in openapi schema.'); - const operations = augmentPathsOperations(this.schemaObject.paths, this.config); - const derefedPathGroupedOps = groupOperations(operations); - const groups = Object.keys(derefedPathGroupedOps); + const operations = augmentPathsOperations(this.schemaObject.paths, this.config, undefined, { + '/common/files/download-protected': '/common', + '/cms/banner*': '/cms/banners', + '/cms/nameplates/nameplate-products': '/cms/nameplates', + '/cms/seo/template*': '/cms/seo/templates', + '/auth/login': '/auth', + '/auth/logout': '/auth', + '/auth/refresh': '/auth', + '/auth/current-user': '/auth', + '/logistic/point-enum-values': '/logistic/points', + '/logistic/delivery-service*': '/logistic/delivery-services', + '/logistic/federal-district-enum-values': '/logistic/federal-districts', + '/logistic/region-enum-values': '/logistic/regions', + '/logistic/cargo-orders': '/logistic/cargo', + '/logistic/shipment-methods': '/logistic/shipments', + '/orders/order-statuses': '/orders/orders', + '/orders/order-sources': '/orders/orders', + '/orders/payment-methods': '/orders/payments', + '/orders/payment-statuses': '/orders/payments', + '/orders/delivery-statuses': '/orders/deliveries', + '/orders/shipment-statuses': '/orders/shipments', + '/orders/refund-statuses': '/orders/refunds', + '/orders/refund-reasons': '/orders/refunds', + '/catalog/brand-enum-values': '/catalog/brands', + '/catalog/category-properties': '/catalog/categories', + '/catalog/category-enum-values': '/catalog/categories', + '/catalog/properties/properties-types': '/catalog/properties', + '/catalog/properties/directory': '/catalog/properties', + '/catalog/products*': '/catalog/products', + '/catalog/product-statuses': '/catalog/products', + '/catalog/product-import-warnings': '/catalog/product-imports', + '/catalog/product-status-enum-values': '/catalog/products', + '/catalog/product-status-types': '/catalog/products', + '/catalog/product-events': '/catalog/products', + '/catalog/product-event-operations': '/catalog/products', + '/catalog/reviews/review-statuses': '/catalog/reviews', + '/catalog/reviews/review-customer': '/catalog/reviews', + '/catalog/reviews/review-product': '/catalog/reviews', + '/catalog/feed-types': '/catalog/feeds', + '/catalog/feed-platforms': '/catalog/feeds', + '/catalog/feed-settings': '/catalog/feeds', + '/catalog/cloud-integrations': '', + '/customers/customer-enum-values': '/customers/customers', + '/customers/users': '/customers/customers', + '/customers/users-enum-values': '/customers/customers', + '/customers/addresses': '/customers/customers', + '/customers/statuses': '/customers/customers', + '/customers/statuses-enum-values': '/customers/customers', + '/customers/favorites': '/customers/customers', + '/customers/customers-info': '/customers/customers', + '/customers/bonus-operations': '/customers/customers', + '/customers/product-subscribes': '/customers/customers', + '/customers/preferences': '/customers/customers', + '/customers/orders': '/customers/customers', + '/marketing/promo-code-statuses': '/marketing/promo-codes', + '/marketing/discount*': '/marketing/discounts', + '/communication/types': '/communication/common', + '/communication/notification-setting*': '/communication/notification-settings', + '/units/sellers/seller-statuses': '/units/sellers', + '/units/seller-enum-values': '/units/sellers', + '/units/stores-workings': '/units/stores', + '/units/stores-pickup-times': '/units/stores', + '/units/stores-contacts': '/units/stores', + '/units/seller-users': '/units/sellers', + '/units/seller-user-roles': '/units/sellers', + '/units/admin-user-enum-values': '/units/admin-users', + '/units/admin-users/mass/change-active': '/units/admin-users', + '/units/admin-users/set-password': '/units/admin-users', + '/units/admin-users/right-access': '/units/admin-users', + '/units/admin-user-roles': '/units/admin-users', + }); return { document: this.schemaObject, operations, - derefedPathGroupedOps, - groups, }; } } diff --git a/src/common/helpers.ts b/src/common/helpers.ts index e3b1044..1e0d915 100644 --- a/src/common/helpers.ts +++ b/src/common/helpers.ts @@ -1,3 +1,4 @@ +/* eslint-disable unicorn/no-for-loop */ import { kebab } from 'case'; import { spawn } from 'node:child_process'; import { basename, join } from 'node:path'; @@ -76,36 +77,19 @@ const extractQueryKey = (original: OpenAPIV3.OperationObject) => { return kebab(original.operationId!); }; -function removeTrailingSlash(str: string): string { - return str.endsWith('/') ? str.slice(0, -1) : str; -} - -function extractInvalidatePrefix(oldPath: string): string { - const path = removeTrailingSlash(oldPath); - - const lastIndexOfColon = path.lastIndexOf(':'); - if (lastIndexOfColon !== -1) return path.slice(0, lastIndexOfColon); - - if (path.split('/').length <= 3) return path; - - const lastIndexOfSlash = path.lastIndexOf('/'); - - return path.slice(0, lastIndexOfSlash); -} - const generateInvalidationTargets = (op: AugmentedOperation, allOperations: AugmentedOperation[]) => { if (!op.isMutation) return []; - const prefix = extractInvalidatePrefix(op.path); + const file = op.storePath; const results = allOperations.filter(e => { - if (!e.path.startsWith(prefix)) return false; + if (e.storePath !== file) return false; if (!SEARCH_OPCODES.includes(parseOpcode(e))) return false; - if (e.path.endsWith('id}')) return true; - if (e.path.endsWith('Id}')) return true; - if (e.path.endsWith(':search')) return true; - if (e.path.endsWith(':search-one')) return true; + if (e.originalPath.endsWith('id}')) return true; + if (e.originalPath.endsWith('Id}')) return true; + if (e.originalPath.endsWith(':search')) return true; + if (e.originalPath.endsWith(':search-one')) return true; return false; }); @@ -143,32 +127,88 @@ export const removeTrailingLineBreak = (str: string) => { return str; }; -export const augmentPathsOperations = (paths: OpenAPIV3.PathsObject, config: ConfigSchema) => { - const pathNames = Object.keys(paths); +export const defaultGetDirectory = (routePath: string) => { + let directory = ''; + let lastSlashIndex = 0; + + // eslint-disable-next-line unicorn/no-for-loop + for (let i = 0; i < routePath.length; i++) { + const char = routePath[i]; + + if (char === '{') return directory.slice(0, lastSlashIndex); + if (char === ':') return directory; + + if (char === '/') lastSlashIndex = i; + + directory += char; + } + + return directory; +}; + +type DirectoryGetter = (routePath: string) => string; + +const isRewrite = (from: string, path: string) => { + const isWildcard = from.endsWith('*'); + + if (isWildcard) { + for (let i = 0; i < from.length; i++) { + const fromChar = from[i]; + const toChar = path[i]; + + if (fromChar === '*' && i <= path.length) return true; + + if (fromChar !== toChar) return false; + } + } + + return from === path; +}; + +const applyFirstRewrite = (rewrites: Record, path: string) => { + for (const from in rewrites) { + if (isRewrite(from, path)) return rewrites[from]; + } + + return path; +}; + +export const augmentPathsOperations = ( + paths: OpenAPIV3.PathsObject, + config: ConfigSchema, + directoryGetter: DirectoryGetter = defaultGetDirectory, + rewrites: Record = {} +) => { + const originalPaths = Object.keys(paths); - const allOperations = pathNames.flatMap(pathName => { - const groupName = extractSegment(pathName)!; - const operationInfo = paths[pathName]!; + const allOperations = originalPaths.flatMap(originalPath => { + const group = extractSegment(originalPath)!; + const operationInfo = paths[originalPath]!; const httpMethods = (Object.keys(operationInfo) as HttpMethod[]).filter(e => (e as any) !== '$reference'); - return httpMethods.map(httpMethod => { - const reqInfo = operationInfo[httpMethod] as OpenAPIV3.OperationObject; + return httpMethods.map(method => { + const original = operationInfo[method] as OpenAPIV3.OperationObject; + + const pathWithoutLeadingSlash = originalPath.startsWith('/') ? originalPath.slice(1) : originalPath; + const storePath = applyFirstRewrite(rewrites, directoryGetter(originalPath)); return { - original: reqInfo, - hookName: generateHookName(reqInfo), - queryKey: extractQueryKey(reqInfo), - queryParams: extractQueryParams(reqInfo), - group: groupName, - path: pathName, - method: httpMethod, - isMutation: isOperationMutation(httpMethod, reqInfo), - pathSubstituted: replacePathVariables(pathName), - pathVariables: extractPathVariables(pathName), + original, + storePath, + group, + originalPath, + method, invalidationTargets: [], - isFileUpload: hasFileUpload(reqInfo), - hasPathParams: hasPathParams(reqInfo), + parentDescription: operationInfo.summary || operationInfo.description || null, + hookName: generateHookName(original), + queryKey: extractQueryKey(original), + queryParams: extractQueryParams(original), + isMutation: isOperationMutation(method, original), + pathSubstituted: replacePathVariables(pathWithoutLeadingSlash), + pathVariables: extractPathVariables(originalPath), + isFileUpload: hasFileUpload(original), + hasPathParams: hasPathParams(original), }; }); }); @@ -193,20 +233,6 @@ export const extractSegment = (path: string) => { return segments[1]; }; -export const groupOperations = (flatOperation: AugmentedOperation[]) => - flatOperation.reduce((acc, cur) => { - const groupName = extractSegment(cur.path); - if (!groupName) return acc; - - if (!(groupName in acc)) { - acc[groupName] = []; - } - - acc[groupName].push(cur); - - return acc; - }, {} as Record); - export const renderImports = (sourceFile: SourceFile, imports: ImportData[]) => { const map = new Map(); diff --git a/src/common/types.ts b/src/common/types.ts index 45e9ef8..eb679a0 100644 --- a/src/common/types.ts +++ b/src/common/types.ts @@ -1,6 +1,8 @@ import { JSONSchema } from '@stoplight/json-schema-ref-parser'; import { OpenAPIV3 } from 'openapi-types'; +import { HttpMethod } from './helpers'; + export interface ImportData { from: string; name: string; @@ -8,12 +10,20 @@ export interface ImportData { } export type AugmentedOperation = { + parentDescription: string | null; + original: OpenAPIV3.OperationObject; - path: string; + originalPath: string; + + /** + * Папка где будет лежать метод, и типы + */ + storePath: string; + pathSubstituted: string; pathVariables: string[]; queryParams: OpenAPIV3.ParameterObject[]; - method: string; + method: HttpMethod; group: string; isMutation: boolean; @@ -37,3 +47,4 @@ export interface RefSchemaData { schema: JSONSchema; } +export type OperationsToPathsFn = (operations: AugmentedOperation[]) => Record; diff --git a/src/typegen/JsonSchemaRenderer.ts b/src/typegen/JsonSchemaRenderer.ts index 6ff03ef..3bd8029 100644 --- a/src/typegen/JsonSchemaRenderer.ts +++ b/src/typegen/JsonSchemaRenderer.ts @@ -23,6 +23,8 @@ export type RenderElement = { needsParenthesis: boolean; }; +const customMeta = false; + export default class JsonSchemaRenderer { private getInterfaceName: InterfaceNameFunction; private cache = new WeakMap(); @@ -85,19 +87,19 @@ export type RequireKeys = }; const dataType = processSchema(dataSchema, dataReference, demandedRefs); - const metaType = processSchema(metaSchema, metaReference, demandedRefs); - const deps: RenderElement[] = [dataType, metaType]; + const metaType = customMeta ? processSchema(metaSchema, metaReference, demandedRefs) : null; + const deps: RenderElement[] = metaType ? [dataType, metaType] : [dataType]; return { definition: { description, - code: `export type ${typeName} = CommonResponse<${dataType.name}, ${metaType.name}>;`, + code: metaType ? `export type ${typeName} = CommonResponse<${dataType.name}, ${metaType.name}>;` : `export type ${typeName} = CommonResponse<${dataType.name}>;`, }, deps, extraImports: [ { - fromOutput: 'helpers', + fromOutput: './helpers.ts', name: 'CommonResponse', }, ], @@ -215,7 +217,7 @@ export type RequireKeys = const keysToRequireArr = [...keysToRequire.values()]; const extraImports: ImportStatement[] = [ { - fromOutput: 'helpers', + fromOutput: './helpers.ts', name: 'Prettify', }, ]; @@ -228,7 +230,7 @@ export type RequireKeys = .join('|')}>>;`; extraImports.push({ - fromOutput: 'helpers', + fromOutput: './helpers.ts', name: 'RequireKeys', }); } else { @@ -511,6 +513,18 @@ export type RequireKeys = return result; } + if ((schema.type || '').startsWith('string')) { + return { + needsParenthesis: false, + type: 'literal', + definition: { code: '', description: '' }, + name: schema.type, + deps: [], + reference, + extraImports: [], + }; + } + switch (schema.type) { case undefined: case 'object': { diff --git a/src/typegen/TypeRenderer.ts b/src/typegen/TypeRenderer.ts index 96ceb98..4ba7923 100644 --- a/src/typegen/TypeRenderer.ts +++ b/src/typegen/TypeRenderer.ts @@ -1,4 +1,3 @@ -/* eslint-disable guard-for-in */ import { pascal } from 'case'; import type { JSONSchema4 } from 'json-schema'; import kleur from 'kleur'; @@ -9,18 +8,11 @@ import { OpenAPIV3 } from 'openapi-types'; import { Project } from 'ts-morph'; import { ParsedSchema } from '../common/SchemaParser'; -import { - HttpMethod, - extractRefAnchor, - extractSegment, - removeTrailingLineBreak, - renderImports, -} from '../common/helpers'; -import { ImportData, OverridePolicy } from '../common/types'; +import { HttpMethod, extractRefAnchor, removeTrailingLineBreak, renderImports } from '../common/helpers'; +import { AugmentedOperation, ImportData, OverridePolicy } from '../common/types'; import { ConfigSchema } from '../config/Config'; import { Reference } from '../deref'; import JsonSchemaRenderer, { InterfaceNameFunction, RenderElement } from './JsonSchemaRenderer'; -import refToTypesFile from './refToTypesFile'; export type TypeInfo = Omit & { importFrom: string; @@ -117,7 +109,8 @@ export class TypeRenderer { description: string, type: ContentType, reference: Reference, - schema: Record + schema: Record, + storePath: string ): TypeInfo { const typeName = typeNameFunction(reference); @@ -131,7 +124,7 @@ export class TypeRenderer { code: `export type ${typeName} = FormData;`, }, deps: [], - importFrom: refToTypesFile(reference), + importFrom: `${storePath}/types.ts`, name: typeName, reference, type: 'object', @@ -147,7 +140,7 @@ export class TypeRenderer { code: `export type ${typeName} = string;`, }, deps: [], - importFrom: refToTypesFile(reference), + importFrom: `${storePath}/types.ts`, name: typeName, reference, type: 'object', @@ -159,7 +152,9 @@ export class TypeRenderer { const traverse = (rendered: RenderElement): TypeInfo => { const ref = rendered.reference; - const importFrom = refToTypesFile(ref); + + const isEnum = rendered.type === 'enum'; + const importFrom = `${storePath}/${isEnum ? 'enums.ts' : 'types.ts'}`; const newTree: TypeInfo = { ...rendered, reference: ref, importFrom, deps: [] }; @@ -209,21 +204,16 @@ export class TypeRenderer { return { data, meta }; } - private renderRequest( - rootReference: Reference, - groupName: string, - operationInfo: OpenAPIV3.PathItemObject, - method: OpenAPIV3.OperationObject - ) { - if (!method.requestBody) return; + private tryRenderAsRequest(rootReference: Reference, operation: AugmentedOperation) { + if (!operation.original.requestBody) return; - const { content } = method.requestBody as OpenAPIV3.RequestBodyObject; + const { content } = operation.original.requestBody as OpenAPIV3.RequestBodyObject; const valid = ['application/json', 'multipart/form-data'] as const; for (const type of valid) { if (content[type]) { if (!content[type].schema) { - console.error(kleur.red('no schema for request body'), type, groupName, method.operationId); + console.error(kleur.red('no schema for request body'), type, operation.original.operationId); continue; } @@ -231,25 +221,21 @@ export class TypeRenderer { const reference = (value as any).$reference || rootReference; const description = - method.summary || method.description || operationInfo.summary || operationInfo.description || ''; + operation.original.summary || operation.original.description || operation.parentDescription || ''; - return this.renderJsonSchema(description, type, reference, content[type].schema!); + return this.renderJsonSchema(description, type, reference, content[type].schema!, operation.storePath); } } } - private renderResponse( - rootReference: Reference, - groupName: string, - operationInfo: OpenAPIV3.PathItemObject, - method: OpenAPIV3.OperationObject - ) { + private tryRenderAsResponse(rootReference: Reference, operation: AugmentedOperation) { + const method = operation.original; + if (!method.responses) return; const codes = Object.keys(method.responses); - const description = - method.summary || method.description || operationInfo.summary || operationInfo.description || ''; + const description = method.summary || method.description || operation.parentDescription || ''; for (const code of codes) { let reference = rootReference; @@ -284,7 +270,7 @@ export class TypeRenderer { reference = (schema as any).$reference; } - return this.renderJsonSchema(description, type, reference, schema); + return this.renderJsonSchema(description, type, reference, schema, operation.storePath); } } } @@ -323,17 +309,22 @@ export class TypeRenderer { file.imports.push(...this.typeInfoImportsResolver(typeInfo, typeInfo.importFrom)); } - // extraImports всегда относительны helpers if (typeInfo.extraImports) { + const currentFolder = join(this.config.output_path, dirname(typeInfo.importFrom)); + file.imports.push( ...typeInfo.extraImports.map(e => { - const relativeImportPath = relative( - dirname(typeInfo.importFrom), - dirname(e.fromOutput) - ).replaceAll('\\', '/'); + const importFile = join(this.config.output_path, e.fromOutput); + const relativeImportPath = relative(currentFolder, importFile).replaceAll('\\', '/'); + + let from = relativeImportPath.replaceAll('.ts', ''); + + if (!from.startsWith('.')) { + from = `./${from}`; + } return { - from: `${relativeImportPath}/${basename(e.fromOutput)}`, + from, name: e.name, }; }) @@ -364,10 +355,16 @@ export class TypeRenderer { const schema = this.parsedSchema.document; - for (const path in schema.paths) { - const groupName = extractSegment(path)!; + for (const operation of this.parsedSchema.operations) { + const endpointTypes = this.upsertPathToEndpointTypeCache(operation.originalPath); - const reference: Reference = (schema.paths[path] as any).$reference || { + const httpMethod = operation.method; + + if (!endpointTypes[httpMethod]) { + endpointTypes[httpMethod] = {}; + } + + const reference: Reference = (schema.paths[operation.originalPath] as any).$reference || { absolutePath: '', targetObject: null, path: [], @@ -375,45 +372,27 @@ export class TypeRenderer { target: '', }; - const operationInfo = schema.paths[path] as OpenAPIV3.PathItemObject; - const httpMethods = Object.keys(operationInfo) as (HttpMethod | '$reference')[]; - - for (const httpMethod of httpMethods) { - if (httpMethod === '$reference') continue; + const req = this.tryRenderAsRequest(reference, operation); + if (req) { + this.renderTypeToFile(req); - const method = operationInfo[httpMethod]; - if (!method) continue; - - // if (method.operationId !== 'createBaseSynonymsJob') continue; - - const endpointTypes = this.upsertPathToEndpointTypeCache(path); - - if (!endpointTypes[httpMethod]) { - endpointTypes[httpMethod] = {}; - } - - const req = this.renderRequest(reference, groupName, operationInfo, method); - if (req) { - this.renderTypeToFile(req); - - endpointTypes[httpMethod]!.request = { - ...req, - deps: [], - extraImports: [], - definition: { code: '', description: '' }, - }; - } + endpointTypes[httpMethod]!.request = { + ...req, + deps: [], + extraImports: [], + definition: { code: '', description: '' }, + }; + } - const res = this.renderResponse(reference, groupName, operationInfo, method); - if (res) { - this.renderTypeToFile(res); - endpointTypes[httpMethod]!.response = { - ...res, - deps: [], - extraImports: [], - definition: { code: '', description: '' }, - }; - } + const res = this.tryRenderAsResponse(reference, operation); + if (res) { + this.renderTypeToFile(res); + endpointTypes[httpMethod]!.response = { + ...res, + deps: [], + extraImports: [], + definition: { code: '', description: '' }, + }; } } diff --git a/src/typegen/refToTypesFile.ts b/src/typegen/refToTypesFile.ts deleted file mode 100644 index 71dd781..0000000 --- a/src/typegen/refToTypesFile.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { camel } from 'case'; -import { basename, dirname } from 'node:path'; - -import { Reference } from '../deref'; - -const cache = new Map(); - -const uncachedRefToTypesFile = (ref: Reference) => { - let dir = dirname(ref.absolutePath) - .replaceAll('/schemas/', '') - .replaceAll('/schemas', '') - .replaceAll('schemas/', ''); - - if (dir.endsWith('/')) dir = dir.slice(0, -1); - - const originalFile = camel(basename(ref.absolutePath).replace('.yaml', '')); - - - const file = originalFile === 'enums' ? 'enums/index' : originalFile; - - const isEnum = dir.endsWith('enum') || dir.endsWith('enums') || file.toLowerCase().includes('enum'); - const suffix = isEnum ? '' : 'types/'; - - const result = `${dir}/${suffix}${file}.ts`; - if (result.startsWith('/')) return result.slice(1); - - return result; -}; - -const refToTypesFile = (ref: Reference) => { - if (cache.get(ref.absolutePath)) return cache.get(ref.absolutePath)!; - - const result = uncachedRefToTypesFile(ref); - cache.set(ref.absolutePath, result); - - return result; -}; - -export default refToTypesFile; diff --git a/yarn.lock b/yarn.lock index a25f15b..07c61ee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4636,6 +4636,11 @@ micromatch@^4.0.2, micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" +middleware-io@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/middleware-io/-/middleware-io-2.8.1.tgz#89b5cbe16ea985402891e2d29b967be2dd4f6cb0" + integrity sha512-H0XftkexHKxxQsoCsItMzM7WU3S/rIFzL3T4guU8tWLKr7e5cVkdaZ+JQeeL+TB3OaHpqFi/ozYqQl69z2X6bg== + mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"