Skip to content

Commit

Permalink
Applying some deprecation fixes and removing some warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
labmorales committed Mar 27, 2023
1 parent cda3ef1 commit fe74bc6
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 80 deletions.
9 changes: 1 addition & 8 deletions packages/rtk-query-codegen-openapi/src/bin/cli.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,9 @@
#!/usr/bin/env node

import program from 'commander';
import { dirname, resolve } from 'path';
import { generateEndpoints, parseConfig } from '../';
import semver from 'semver';
import { version as tsVersion } from 'typescript';

if (!semver.satisfies(tsVersion, '>=4.1 <=4.5')) {
console.warn(
'Please note that `@rtk-query/codegen-openapi` only has been tested with TS versions 4.1 to 4.5 - other versions might cause problems.'
);
}
import program from 'commander';

let ts = false;
try {
Expand Down
66 changes: 26 additions & 40 deletions packages/rtk-query-codegen-openapi/src/codegen.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import ts from 'typescript';
import { factory } from './utils/factory';
import ts from 'typescript';

const defaultEndpointBuilder = factory.createIdentifier('build');

Expand All @@ -12,7 +12,6 @@ export function generateObjectProperties(obj: ObjectPropertyDefinitions) {

export function generateImportNode(pkg: string, namedImports: Record<string, string>, defaultImportName?: string) {
return factory.createImportDeclaration(
undefined,
undefined,
factory.createImportClause(
false,
Expand Down Expand Up @@ -44,17 +43,7 @@ export function generateCreateApiCall({
endpoints: factory.createArrowFunction(
undefined,
undefined,
[
factory.createParameterDeclaration(
undefined,
undefined,
undefined,
endpointBuilder,
undefined,
undefined,
undefined
),
],
[factory.createParameterDeclaration(undefined, undefined, endpointBuilder, undefined, undefined, undefined)],
undefined,
factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken),
factory.createParenthesizedExpression(endpointDefinitions)
Expand All @@ -67,30 +56,32 @@ export function generateCreateApiCall({
const enhanceEndpointsObjectLiteralExpression = factory.createObjectLiteralExpression(
[factory.createShorthandPropertyAssignment(factory.createIdentifier('addTagTypes'), undefined)],
true
)
);
return factory.createVariableStatement(
undefined,
factory.createVariableDeclarationList(
[factory.createVariableDeclaration(
factory.createIdentifier("injectedRtkApi"),
undefined,
undefined,
factory.createCallExpression(
factory.createPropertyAccessExpression(
factory.createCallExpression(
factory.createPropertyAccessExpression(
factory.createIdentifier("api"),
factory.createIdentifier("enhanceEndpoints")
[
factory.createVariableDeclaration(
factory.createIdentifier('injectedRtkApi'),
undefined,
undefined,
factory.createCallExpression(
factory.createPropertyAccessExpression(
factory.createCallExpression(
factory.createPropertyAccessExpression(
factory.createIdentifier('api'),
factory.createIdentifier('enhanceEndpoints')
),
undefined,
[enhanceEndpointsObjectLiteralExpression]
),
undefined,
[enhanceEndpointsObjectLiteralExpression]
factory.createIdentifier('injectEndpoints')
),
factory.createIdentifier("injectEndpoints")
),
undefined,
[injectEndpointsObjectLiteralExpression]
)
)],
undefined,
[injectEndpointsObjectLiteralExpression]
)
),
],
ts.NodeFlags.Const
)
);
Expand Down Expand Up @@ -145,21 +136,16 @@ export function generateEndpointDefinition({
factory.createIdentifier(type === 'query' ? 'providesTags' : 'invalidatesTags'),
factory.createArrayLiteralExpression(tags.map((tag) => factory.createStringLiteral(tag), false))
)
)
);
}
return factory.createPropertyAssignment(
factory.createIdentifier(operationName),

factory.createCallExpression(
factory.createPropertyAccessExpression(endpointBuilder, factory.createIdentifier(type)),
[Response, QueryArg],
[
factory.createObjectLiteralExpression(
objectProperties,
true
),
]
),
[factory.createObjectLiteralExpression(objectProperties, true)]
)
);
}

Expand Down
44 changes: 15 additions & 29 deletions packages/rtk-query-codegen-openapi/src/generate.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,27 @@
import ts from 'typescript';
import * as path from 'path';
import { camelCase } from 'lodash';

import ApiGenerator, {
getOperationName as _getOperationName,
getReferenceName,
isReference,
supportDeepObjects,
} from 'oazapfts/lib/codegen/generate';
import type { EndpointMatcher, EndpointOverrides, GenerationOptions, OperationDefinition, TextMatcher } from './types';
import { capitalize, getOperationDefinitions, getV3Doc, removeUndefined, isQuery as testIsQuery } from './utils';
import {
createQuestionToken,
keywordType,
createPropertyAssignment,
createQuestionToken,
isValidIdentifier,
keywordType,
} from 'oazapfts/lib/codegen/tscodegen';
import type { OpenAPIV3 } from 'openapi-types';
import { generateReactHooks } from './generators/react-hooks';
import type { EndpointMatcher, EndpointOverrides, GenerationOptions, OperationDefinition, TextMatcher } from './types';
import { capitalize, getOperationDefinitions, getV3Doc, isQuery as testIsQuery, removeUndefined } from './utils';
import { generateTagTypes } from './codegen';
import { generateCreateApiCall, generateEndpointDefinition, generateImportNode, generateTagTypes } from './codegen';

import type { ObjectPropertyDefinitions } from './codegen';
import { generateCreateApiCall, generateEndpointDefinition, generateImportNode } from './codegen';
import type { OpenAPIV3 } from 'openapi-types';
import { camelCase } from 'lodash';
import { factory } from './utils/factory';
import { generateReactHooks } from './generators/react-hooks';
import ts from 'typescript';

const generatedApiName = 'injectedRtkApi';

Expand Down Expand Up @@ -133,7 +134,7 @@ export async function generateApi(
}
apiFile = apiFile.replace(/\.[jt]sx?$/, '');

const sourceCode = printer.printNode(
return printer.printNode(
ts.EmitHint.Unspecified,
factory.createSourceFile(
[
Expand All @@ -152,7 +153,6 @@ export async function generateApi(
),
}),
factory.createExportDeclaration(
undefined,
undefined,
false,
factory.createNamedExports([
Expand Down Expand Up @@ -183,8 +183,6 @@ export async function generateApi(
resultFile
);

return sourceCode;

function extractAllTagTypes({ operationDefinitions }: { operationDefinitions: OperationDefinition[] }) {
let allTagTypes = new Set<string>();

Expand Down Expand Up @@ -245,7 +243,6 @@ export async function generateApi(
const ResponseTypeName = factory.createTypeReferenceNode(
registerInterface(
factory.createTypeAliasDeclaration(
undefined,
[factory.createModifier(ts.SyntaxKind.ExportKeyword)],
capitalize(operationName + responseSuffix),
undefined,
Expand All @@ -262,7 +259,7 @@ export async function generateApi(
const allNames = parameters.map((p) => p.name);
const queryArg: QueryArgDefinitions = {};
for (const param of parameters) {
const isPureSnakeCase = /^[a-zA-Z][a-zA-Z0-9_]*$/.test(param.name);
const isPureSnakeCase = /^[a-zA-Z][\\w]*$/.test(param.name);
const camelCaseName = camelCase(param.name);

const name = isPureSnakeCase && !allNames.includes(camelCaseName) ? camelCaseName : param.name;
Expand Down Expand Up @@ -312,7 +309,6 @@ export async function generateApi(
const QueryArg = factory.createTypeReferenceNode(
registerInterface(
factory.createTypeAliasDeclaration(
undefined,
[factory.createModifier(ts.SyntaxKind.ExportKeyword)],
capitalize(operationName + argSuffix),
undefined,
Expand Down Expand Up @@ -394,17 +390,7 @@ export async function generateApi(
undefined,
undefined,
Object.keys(queryArg).length
? [
factory.createParameterDeclaration(
undefined,
undefined,
undefined,
rootObject,
undefined,
undefined,
undefined
),
]
? [factory.createParameterDeclaration(undefined, undefined, rootObject, undefined, undefined, undefined)]
: [],
undefined,
factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken),
Expand Down Expand Up @@ -464,7 +450,7 @@ function generatePathExpression(
) {
const expressions: Array<[string, string]> = [];

const head = path.replace(/\{(.*?)\}(.*?)(?=\{|$)/g, (_, expression, literal) => {
const head = path.replace(/\{(.*?)}(.*?)(?=\{|$)/g, (_, expression, literal) => {
const param = pathParameters.find((p) => p.originalName === expression);
if (!param) {
throw new Error(`path parameter ${expression} does not seem to be defined in '${path}'!`);
Expand Down
6 changes: 3 additions & 3 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -6545,7 +6545,7 @@ __metadata:
swagger2openapi: ^7.0.4
ts-jest: ^27
ts-node: ^10.4.0
typescript: ">=4.1 <=4.5"
typescript: ^4.9.3
yalc: ^1.0.0-pre.47
bin:
rtk-query-codegen-openapi: lib/bin/cli.js
Expand Down Expand Up @@ -26755,7 +26755,7 @@ fsevents@^1.2.7:
languageName: node
linkType: hard

"typescript@npm:>=4.1 <=4.5, typescript@npm:^4.1.3, typescript@npm:^4.3.4":
"typescript@npm:^4.1.3, typescript@npm:^4.3.4":
version: 4.5.2
resolution: "typescript@npm:4.5.2"
bin:
Expand Down Expand Up @@ -26815,7 +26815,7 @@ fsevents@^1.2.7:
languageName: node
linkType: hard

"typescript@patch:typescript@>=4.1 <=4.5#~builtin<compat/typescript>, typescript@patch:typescript@^4.1.3#~builtin<compat/typescript>, typescript@patch:typescript@^4.3.4#~builtin<compat/typescript>":
"typescript@patch:typescript@^4.1.3#~builtin<compat/typescript>, typescript@patch:typescript@^4.3.4#~builtin<compat/typescript>":
version: 4.5.2
resolution: "typescript@patch:typescript@npm%3A4.5.2#~builtin<compat/typescript>::version=4.5.2&hash=701156"
bin:
Expand Down

0 comments on commit fe74bc6

Please sign in to comment.