
Security News
npm Adopts OIDC for Trusted Publishing in CI/CD Workflows
npm now supports Trusted Publishing with OIDC, enabling secure package publishing directly from CI/CD workflows without relying on long-lived tokens.
openapi-typescript-wrapper-generator
Advanced tools
Tool for generating typescript wrappers around generated code from [OpenAPI Generator](https://openapi-generator.tech/)
Tool for generating typescript wrappers around generated code from OpenAPI Generator
Create wrapper function and wrapper type. For example here is wrapper for TanStack Query:
import { ApiWrapperOptions } from 'openapi-typescript-wrapper-generator';
import type { QueryKey, UseQueryOptions } from '@tanstack/react-query';
import { useQuery, useQueryClient } from '@tanstack/react-query';
import type { AxiosRequestConfig } from 'axios';
export const myApiWrapper = <TVariables, TData>(
req: (variables: TVariables, axiosConfig?: AxiosRequestConfig) => TData,
options: ApiWrapperOptions,
) => {
const queryKey: QueryKey = [
options.filePath,
options.groupName,
options.endpointName,
];
const useMyQuery = (
reqVariables: TVariables,
axiosConfig?: AxiosRequestConfig,
queryOptions?: Omit<
UseQueryOptions<TData, unknown, TData>,
'queryKey' | 'queryFn'
>,
) => {
return useQuery({
queryKey,
queryFn: () => req(reqVariables, axiosConfig),
...queryOptions,
});
};
const useInvalidateQuery = () => {
const client = useQueryClient();
return () => client.invalidateQueries([queryKey]);
};
return {
queryKey,
useQuery: useMyQuery,
useInvalidateQuery,
};
};
export type MyApiWrapper<
TReq extends (variables: any) => any,
TOptions extends ApiWrapperOptions,
> = {
queryVariables: Parameters<TReq>[0];
};
Create file with configuration object
import { Configuration } from './generated/todos/configuration';
export const myApiConfiguration = new Configuration({
basePath: 'http://localhost:4000',
});
Run this command in a terminal (replace paths and export names according to your project structure)
npx openapi-typescript-wrapper-generator generatedApi/todos \
--wrapperPath myApiWrapper.ts \
--wrapperExportName myApiWrapper \
--wrapperTypePath myApiWrapper.ts \
--wrapperTypeExportName MyApiWrapper \
--configurationPath myApiConfiguration.ts \
--configurationExportName myApiConfiguration \
--outputPath generatedApi/todos/wrapper
Look at the file at outputPath
. You will see something like this:
import {TodosApi} from './api'
import {myApiWrapper as wrapper} from '../myApiWrapper'
import {MyApiWrapper as Wrapper} from '../myApiWrapper'
import {configuration} from '../myApiConfiguration'
const todosApi = new TodosApi(configuration)
const filePath = 'src/generated/todos/wrapper.ts'
export const todos = {
getTodos: wrapper(todosApi.getTodos, {filePath, groupName: 'Todos', endpointName: 'getTodos'}),
addTodo: wrapper(todosApi.addTodo, {filePath, groupName: 'Todos', endpointName: 'addTodos'}),
}
export type todos = {
getTodos: Wrapper<typeof todosApi.getTodos, {filePath: typeof filePath, groupName: 'Todos', endpointName: 'getTodos'})>;
addTodo: Wrapper<typeof todosApi.addTodo, {filePath: typeof filePath, groupName: 'Todos', endpointName: 'addTodos'}>;
}
openapi-typescript-wrapper-generator [sourceDirectory] [options]
Source directory:
Relative path to directory that container `api.ts` file generated by OpenAPI Generator
Options:
--wrapperPath Relative path to file that contains wrapper function
--wrapperExportName Optional, if wrapper function is exported as named export, provide the name under which it's exported
--wrapperTypePath Relative path to file that contains wrapper type
--wrapperTypeExportName Optional, if wrapper type is exported as named export, provide the name under which it's exported
--configurationPath Relative path to file that contains configuration object
--configurationExportName Optional, if configuration object is exported as named export, provide the name under which it's exported
--outputPath Relative path to file where generated code should be outputted
It's tested with OpenAPI Generator 6.6.0 and typescript-axios generator
But it should work with other versions and other typescript generators. If it doesn't please create issue.
FAQs
Tool for generating typescript wrappers around generated code from [OpenAPI Generator](https://openapi-generator.tech/)
The npm package openapi-typescript-wrapper-generator receives a total of 891 weekly downloads. As such, openapi-typescript-wrapper-generator popularity was classified as not popular.
We found that openapi-typescript-wrapper-generator demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
npm now supports Trusted Publishing with OIDC, enabling secure package publishing directly from CI/CD workflows without relying on long-lived tokens.
Research
/Security News
A RubyGems malware campaign used 60 malicious packages posing as automation tools to steal credentials from social media and marketing tool users.
Security News
The CNA Scorecard ranks CVE issuers by data completeness, revealing major gaps in patch info and software identifiers across thousands of vulnerabilities.