mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-05-12 12:40:53 +00:00
add typescript-wright generator
This commit is contained in:
parent
21d3cfe924
commit
f2d6a78883
4
bin/configs/typescript-playwright.yaml
Normal file
4
bin/configs/typescript-playwright.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
generatorName: typescript-playwright
|
||||
outputDir: samples/client/petstore/typescript-wright/
|
||||
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
|
||||
templateDir: modules/openapi-generator/src/main/resources/typescript-playwright
|
@ -74,6 +74,7 @@ The following generators are available:
|
||||
* [typescript-jquery](generators/typescript-jquery.md)
|
||||
* [typescript-nestjs (experimental)](generators/typescript-nestjs.md)
|
||||
* [typescript-node](generators/typescript-node.md)
|
||||
* [typescript-playwright](generators/typescript-playwright.md)
|
||||
* [typescript-redux-query](generators/typescript-redux-query.md)
|
||||
* [typescript-rxjs](generators/typescript-rxjs.md)
|
||||
* [xojo-client](generators/xojo-client.md)
|
||||
|
303
docs/generators/typescript-playwright.md
Normal file
303
docs/generators/typescript-playwright.md
Normal file
@ -0,0 +1,303 @@
|
||||
---
|
||||
title: Documentation for the typescript-playwright Generator
|
||||
---
|
||||
|
||||
## METADATA
|
||||
|
||||
| Property | Value | Notes |
|
||||
| -------- | ----- | ----- |
|
||||
| generator name | typescript-playwright | pass this to the generate command after -g |
|
||||
| generator stability | STABLE | |
|
||||
| generator type | CLIENT | |
|
||||
| generator language | Typescript | |
|
||||
| generator default templating engine | mustache | |
|
||||
| helpTxt | Generates end-to-end tests using Playwright for TypeScript. | |
|
||||
|
||||
## CONFIG OPTIONS
|
||||
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
|
||||
|
||||
| Option | Description | Values | Default |
|
||||
| ------ | ----------- | ------ | ------- |
|
||||
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
|
||||
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|<dl><dt>**false**</dt><dd>The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.</dd><dt>**true**</dt><dd>Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.</dd></dl>|true|
|
||||
|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true|
|
||||
|enumNameSuffix|Suffix that will be appended to all enum names.| |Enum|
|
||||
|enumPropertyNaming|Naming convention for enum properties: 'camelCase', 'PascalCase', 'snake_case', 'UPPERCASE', and 'original'| |PascalCase|
|
||||
|enumPropertyNamingReplaceSpecialChar|Set to true to replace '-' and '+' symbols with 'minus_' and 'plus_' in enum of type string| |false|
|
||||
|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.</dd></dl>|false|
|
||||
|fileNaming|Naming convention for the output files: 'PascalCase', 'camelCase', 'kebab-case'.| |PascalCase|
|
||||
|importFileExtension|File extension to use with relative imports. Set it to '.js' or '.mjs' when using [ESM](https://nodejs.org/api/esm.html).| ||
|
||||
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true|
|
||||
|modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase|
|
||||
|npmName|The name under which you want to publish generated npm package. Required to generate a full package| |null|
|
||||
|npmRepository|Use this property to set an url your private npmRepo in the package.json| |null|
|
||||
|npmVersion|The version of your npm package. If not provided, using the version from the OpenAPI specification file.| |1.0.0|
|
||||
|nullSafeAdditionalProps|Set to make additional properties types declare that their indexer may return undefined| |false|
|
||||
|paramNaming|Naming convention for parameters: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase|
|
||||
|prefixParameterInterfaces|Setting this property to true will generate parameter interface declarations prefixed with API class name to avoid name conflicts.| |false|
|
||||
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
|
||||
|sagasAndRecords|Setting this property to true will generate additional files for use with redux-saga and immutablejs.| |false|
|
||||
|snapshot|When setting this property to true, the version will be suffixed with -SNAPSHOT.yyyyMMddHHmm| |false|
|
||||
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|
||||
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
|
||||
|stringEnums|Generate string enums instead of objects for enum values.| |false|
|
||||
|supportsES6|Generate code that conforms to ES6.| |false|
|
||||
|useSingleRequestParameter|Setting this property to true will generate functions with a single argument containing all API endpoint parameters instead of one argument per parameter.| |true|
|
||||
|useSquareBracketsInArrayNames|Setting this property to true will add brackets to array attribute names, e.g. my_values[].| |false|
|
||||
|withInterfaces|Setting this property to true will generate interfaces next to the default class implementations.| |false|
|
||||
|withoutRuntimeChecks|Setting this property to true will remove any runtime checks on the request and response payloads. Payloads will be casted to their expected types.| |false|
|
||||
|
||||
## IMPORT MAPPING
|
||||
|
||||
| Type/Alias | Imports |
|
||||
| ---------- | ------- |
|
||||
|
||||
|
||||
## INSTANTIATION TYPES
|
||||
|
||||
| Type/Alias | Instantiated By |
|
||||
| ---------- | --------------- |
|
||||
|array|Array|
|
||||
|
||||
|
||||
## LANGUAGE PRIMITIVES
|
||||
|
||||
<ul class="column-ul">
|
||||
<li>Array</li>
|
||||
<li>Boolean</li>
|
||||
<li>Date</li>
|
||||
<li>Double</li>
|
||||
<li>Error</li>
|
||||
<li>File</li>
|
||||
<li>Float</li>
|
||||
<li>Integer</li>
|
||||
<li>Long</li>
|
||||
<li>Map</li>
|
||||
<li>Object</li>
|
||||
<li>ReadonlyArray</li>
|
||||
<li>Set</li>
|
||||
<li>String</li>
|
||||
<li>any</li>
|
||||
<li>boolean</li>
|
||||
<li>number</li>
|
||||
<li>object</li>
|
||||
<li>string</li>
|
||||
</ul>
|
||||
|
||||
## RESERVED WORDS
|
||||
|
||||
<ul class="column-ul">
|
||||
<li>ApiResponse</li>
|
||||
<li>BASE_PATH</li>
|
||||
<li>BaseAPI</li>
|
||||
<li>BlobApiResponse</li>
|
||||
<li>COLLECTION_FORMATS</li>
|
||||
<li>Configuration</li>
|
||||
<li>ConfigurationParameters</li>
|
||||
<li>FetchAPI</li>
|
||||
<li>FetchParams</li>
|
||||
<li>HTTPBody</li>
|
||||
<li>HTTPHeaders</li>
|
||||
<li>HTTPMethod</li>
|
||||
<li>HTTPQuery</li>
|
||||
<li>Index</li>
|
||||
<li>JSONApiResponse</li>
|
||||
<li>Middleware</li>
|
||||
<li>ModelPropertyNaming</li>
|
||||
<li>RequestContext</li>
|
||||
<li>RequestOpts</li>
|
||||
<li>RequiredError</li>
|
||||
<li>ResponseContext</li>
|
||||
<li>ResponseTransformer</li>
|
||||
<li>TextApiResponse</li>
|
||||
<li>VoidApiResponse</li>
|
||||
<li>abstract</li>
|
||||
<li>await</li>
|
||||
<li>boolean</li>
|
||||
<li>break</li>
|
||||
<li>byte</li>
|
||||
<li>case</li>
|
||||
<li>catch</li>
|
||||
<li>char</li>
|
||||
<li>class</li>
|
||||
<li>configuration</li>
|
||||
<li>const</li>
|
||||
<li>continue</li>
|
||||
<li>debugger</li>
|
||||
<li>default</li>
|
||||
<li>delete</li>
|
||||
<li>do</li>
|
||||
<li>double</li>
|
||||
<li>else</li>
|
||||
<li>enum</li>
|
||||
<li>exists</li>
|
||||
<li>export</li>
|
||||
<li>extends</li>
|
||||
<li>false</li>
|
||||
<li>final</li>
|
||||
<li>finally</li>
|
||||
<li>float</li>
|
||||
<li>for</li>
|
||||
<li>formParams</li>
|
||||
<li>function</li>
|
||||
<li>goto</li>
|
||||
<li>headerParams</li>
|
||||
<li>if</li>
|
||||
<li>implements</li>
|
||||
<li>import</li>
|
||||
<li>in</li>
|
||||
<li>instanceof</li>
|
||||
<li>int</li>
|
||||
<li>interface</li>
|
||||
<li>let</li>
|
||||
<li>long</li>
|
||||
<li>native</li>
|
||||
<li>new</li>
|
||||
<li>null</li>
|
||||
<li>package</li>
|
||||
<li>private</li>
|
||||
<li>protected</li>
|
||||
<li>public</li>
|
||||
<li>queryParameters</li>
|
||||
<li>requestOptions</li>
|
||||
<li>return</li>
|
||||
<li>short</li>
|
||||
<li>static</li>
|
||||
<li>super</li>
|
||||
<li>switch</li>
|
||||
<li>synchronized</li>
|
||||
<li>this</li>
|
||||
<li>throw</li>
|
||||
<li>transient</li>
|
||||
<li>true</li>
|
||||
<li>try</li>
|
||||
<li>typeof</li>
|
||||
<li>useFormData</li>
|
||||
<li>var</li>
|
||||
<li>varLocalDeferred</li>
|
||||
<li>varLocalPath</li>
|
||||
<li>void</li>
|
||||
<li>volatile</li>
|
||||
<li>while</li>
|
||||
<li>with</li>
|
||||
<li>yield</li>
|
||||
</ul>
|
||||
|
||||
## FEATURE SET
|
||||
|
||||
|
||||
### Client Modification Feature
|
||||
| Name | Supported | Defined By |
|
||||
| ---- | --------- | ---------- |
|
||||
|BasePath|✓|ToolingExtension
|
||||
|Authorizations|✗|ToolingExtension
|
||||
|UserAgent|✗|ToolingExtension
|
||||
|MockServer|✗|ToolingExtension
|
||||
|
||||
### Data Type Feature
|
||||
| Name | Supported | Defined By |
|
||||
| ---- | --------- | ---------- |
|
||||
|Custom|✗|OAS2,OAS3
|
||||
|Int32|✓|OAS2,OAS3
|
||||
|Int64|✓|OAS2,OAS3
|
||||
|Float|✓|OAS2,OAS3
|
||||
|Double|✓|OAS2,OAS3
|
||||
|Decimal|✓|ToolingExtension
|
||||
|String|✓|OAS2,OAS3
|
||||
|Byte|✓|OAS2,OAS3
|
||||
|Binary|✓|OAS2,OAS3
|
||||
|Boolean|✓|OAS2,OAS3
|
||||
|Date|✓|OAS2,OAS3
|
||||
|DateTime|✓|OAS2,OAS3
|
||||
|Password|✓|OAS2,OAS3
|
||||
|File|✓|OAS2
|
||||
|Uuid|✗|
|
||||
|Array|✓|OAS2,OAS3
|
||||
|Null|✗|OAS3
|
||||
|AnyType|✗|OAS2,OAS3
|
||||
|Object|✓|OAS2,OAS3
|
||||
|Maps|✓|ToolingExtension
|
||||
|CollectionFormat|✓|OAS2
|
||||
|CollectionFormatMulti|✓|OAS2
|
||||
|Enum|✓|OAS2,OAS3
|
||||
|ArrayOfEnum|✓|ToolingExtension
|
||||
|ArrayOfModel|✓|ToolingExtension
|
||||
|ArrayOfCollectionOfPrimitives|✓|ToolingExtension
|
||||
|ArrayOfCollectionOfModel|✓|ToolingExtension
|
||||
|ArrayOfCollectionOfEnum|✓|ToolingExtension
|
||||
|MapOfEnum|✓|ToolingExtension
|
||||
|MapOfModel|✓|ToolingExtension
|
||||
|MapOfCollectionOfPrimitives|✓|ToolingExtension
|
||||
|MapOfCollectionOfModel|✓|ToolingExtension
|
||||
|MapOfCollectionOfEnum|✓|ToolingExtension
|
||||
|
||||
### Documentation Feature
|
||||
| Name | Supported | Defined By |
|
||||
| ---- | --------- | ---------- |
|
||||
|Readme|✓|ToolingExtension
|
||||
|Model|✓|ToolingExtension
|
||||
|Api|✓|ToolingExtension
|
||||
|
||||
### Global Feature
|
||||
| Name | Supported | Defined By |
|
||||
| ---- | --------- | ---------- |
|
||||
|Host|✓|OAS2,OAS3
|
||||
|BasePath|✓|OAS2,OAS3
|
||||
|Info|✓|OAS2,OAS3
|
||||
|Schemes|✗|OAS2,OAS3
|
||||
|PartialSchemes|✓|OAS2,OAS3
|
||||
|Consumes|✓|OAS2
|
||||
|Produces|✓|OAS2
|
||||
|ExternalDocumentation|✓|OAS2,OAS3
|
||||
|Examples|✓|OAS2,OAS3
|
||||
|XMLStructureDefinitions|✗|OAS2,OAS3
|
||||
|MultiServer|✗|OAS3
|
||||
|ParameterizedServer|✗|OAS3
|
||||
|ParameterStyling|✗|OAS3
|
||||
|Callbacks|✗|OAS3
|
||||
|LinkObjects|✗|OAS3
|
||||
|
||||
### Parameter Feature
|
||||
| Name | Supported | Defined By |
|
||||
| ---- | --------- | ---------- |
|
||||
|Path|✓|OAS2,OAS3
|
||||
|Query|✓|OAS2,OAS3
|
||||
|Header|✓|OAS2,OAS3
|
||||
|Body|✓|OAS2
|
||||
|FormUnencoded|✓|OAS2
|
||||
|FormMultipart|✓|OAS2
|
||||
|Cookie|✓|OAS3
|
||||
|
||||
### Schema Support Feature
|
||||
| Name | Supported | Defined By |
|
||||
| ---- | --------- | ---------- |
|
||||
|Simple|✓|OAS2,OAS3
|
||||
|Composite|✓|OAS2,OAS3
|
||||
|Polymorphism|✓|OAS2,OAS3
|
||||
|Union|✗|OAS3
|
||||
|allOf|✗|OAS2,OAS3
|
||||
|anyOf|✗|OAS3
|
||||
|oneOf|✗|OAS3
|
||||
|not|✗|OAS3
|
||||
|
||||
### Security Feature
|
||||
| Name | Supported | Defined By |
|
||||
| ---- | --------- | ---------- |
|
||||
|BasicAuth|✓|OAS2,OAS3
|
||||
|ApiKey|✓|OAS2,OAS3
|
||||
|OpenIDConnect|✗|OAS3
|
||||
|BearerToken|✓|OAS3
|
||||
|OAuth2_Implicit|✓|OAS2,OAS3
|
||||
|OAuth2_Password|✗|OAS2,OAS3
|
||||
|OAuth2_ClientCredentials|✗|OAS2,OAS3
|
||||
|OAuth2_AuthorizationCode|✗|OAS2,OAS3
|
||||
|SignatureAuth|✗|OAS3
|
||||
|AWSV4Signature|✗|ToolingExtension
|
||||
|
||||
### Wire Format Feature
|
||||
| Name | Supported | Defined By |
|
||||
| ---- | --------- | ---------- |
|
||||
|JSON|✓|OAS2,OAS3
|
||||
|XML|✓|OAS2,OAS3
|
||||
|PROTOBUF|✗|ToolingExtension
|
||||
|Custom|✗|OAS2,OAS3
|
File diff suppressed because it is too large
Load Diff
@ -146,6 +146,7 @@ org.openapitools.codegen.languages.TypeScriptNestjsClientCodegen
|
||||
org.openapitools.codegen.languages.TypeScriptNodeClientCodegen
|
||||
org.openapitools.codegen.languages.TypeScriptReduxQueryClientCodegen
|
||||
org.openapitools.codegen.languages.TypeScriptRxjsClientCodegen
|
||||
org.openapitools.codegen.languages.TypeScriptPlaywrightClientCodegen
|
||||
org.openapitools.codegen.languages.WsdlSchemaCodegen
|
||||
org.openapitools.codegen.languages.XojoClientCodegen
|
||||
org.openapitools.codegen.languages.ZapierClientCodegen
|
||||
|
26
modules/openapi-generator/src/main/resources/typescript-playwright/ApiEntitiesRecord.mustache
vendored
Normal file
26
modules/openapi-generator/src/main/resources/typescript-playwright/ApiEntitiesRecord.mustache
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
import {Map, Record, RecordOf} from 'immutable';
|
||||
|
||||
import {
|
||||
{{#models}}
|
||||
{{#model}}
|
||||
{{#isEntity}}
|
||||
{{classname}}RecordEntity,
|
||||
{{/isEntity}}
|
||||
{{/model}}
|
||||
{{/models}}
|
||||
} from "./models/index{{importFileExtension}}"
|
||||
|
||||
export const ApiEntitiesRecordProps = {
|
||||
recType: "ApiEntitiesRecord" as "ApiEntitiesRecord",
|
||||
{{#models}}
|
||||
{{#model}}
|
||||
{{#isEntity}}
|
||||
{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}: ({{classname}}RecordEntity(), Map<string, {{classname}}RecordEntity>()),
|
||||
{{/isEntity}}
|
||||
{{/model}}
|
||||
{{/models}}
|
||||
};
|
||||
|
||||
export type ApiEntitiesRecordPropsType = typeof ApiEntitiesRecordProps;
|
||||
export const ApiEntitiesRecord = Record(ApiEntitiesRecordProps, ApiEntitiesRecordProps.recType);
|
||||
export type ApiEntitiesRecord = RecordOf<ApiEntitiesRecordPropsType>;
|
21
modules/openapi-generator/src/main/resources/typescript-playwright/ApiEntitiesReducer.mustache
vendored
Normal file
21
modules/openapi-generator/src/main/resources/typescript-playwright/ApiEntitiesReducer.mustache
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
import {ApiEntitiesRecord} from "./ApiEntitiesRecord{{importFileExtension}}";
|
||||
import {ReducerBuilder} from "redux-ts-simple";
|
||||
import {normalizedEntities} from "./runtimeSagasAndRecords{{importFileExtension}}";
|
||||
|
||||
export const ApiEntitiesReducer = new ReducerBuilder(ApiEntitiesRecord())
|
||||
.on(normalizedEntities, (state, action): ApiEntitiesRecord => {
|
||||
const {entities} = action.payload;
|
||||
return state.withMutations(mutableState => {
|
||||
for (const entityKey in entities) {
|
||||
const entityMap = entities[entityKey];
|
||||
const currentEntityMap = mutableState.get(entityKey as any);
|
||||
if (currentEntityMap) {
|
||||
let mergedEntityMap = currentEntityMap.mergeDeep(entityMap);
|
||||
if (!mergedEntityMap.equals(currentEntityMap)) {
|
||||
mutableState.set(entityKey as any, mergedEntityMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
.build();
|
@ -0,0 +1,5 @@
|
||||
export let getApiEntitiesState: (state: any) => any = (state: any) => state.app.apiEntities;
|
||||
|
||||
export function setApiEntitiesStateGetter(getter: (state: any) => any) { // Use this to customize the location where you have placed your ApiEntitiesRecord in your project.
|
||||
getApiEntitiesState = getter;
|
||||
}
|
46
modules/openapi-generator/src/main/resources/typescript-playwright/README.mustache
vendored
Normal file
46
modules/openapi-generator/src/main/resources/typescript-playwright/README.mustache
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
## {{npmName}}@{{npmVersion}}
|
||||
|
||||
This generator creates TypeScript/JavaScript client that utilizes [Fetch API](https://fetch.spec.whatwg.org/). The generated Node module can be used in the following environments:
|
||||
|
||||
Environment
|
||||
* Node.js
|
||||
* Webpack
|
||||
* Browserify
|
||||
|
||||
Language level
|
||||
* ES5 - you must have a Promises/A+ library installed
|
||||
* ES6
|
||||
|
||||
Module system
|
||||
* CommonJS
|
||||
* ES6 module system
|
||||
|
||||
It can be used in both TypeScript and JavaScript. In TypeScript, the definition will be automatically resolved via `package.json`. ([Reference](https://www.typescriptlang.org/docs/handbook/declaration-files/consumption.html))
|
||||
|
||||
### Building
|
||||
|
||||
To build and compile the typescript sources to javascript use:
|
||||
```
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Publishing
|
||||
|
||||
First build the package then run `npm publish`
|
||||
|
||||
### Consuming
|
||||
|
||||
navigate to the folder of your consuming project and run one of the following commands.
|
||||
|
||||
_published:_
|
||||
|
||||
```
|
||||
npm install {{npmName}}@{{npmVersion}} --save
|
||||
```
|
||||
|
||||
_unPublished (not recommended):_
|
||||
|
||||
```
|
||||
npm install PATH_TO_GENERATED_PACKAGE --save
|
||||
```
|
19
modules/openapi-generator/src/main/resources/typescript-playwright/allSagas.mustache
vendored
Normal file
19
modules/openapi-generator/src/main/resources/typescript-playwright/allSagas.mustache
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
import {all, fork} from "redux-saga/effects";
|
||||
|
||||
import {
|
||||
{{#apiInfo}}
|
||||
{{#apis}}
|
||||
{{#lambda.camelcase}}{{classFilename}}{{/lambda.camelcase}}AllSagas,
|
||||
{{/apis}}
|
||||
{{/apiInfo}}
|
||||
} from "./index{{importFileExtension}}";
|
||||
|
||||
export function *allApiSagas() {
|
||||
yield all([
|
||||
{{#apiInfo}}
|
||||
{{#apis}}
|
||||
fork({{#lambda.camelcase}}{{classFilename}}{{/lambda.camelcase}}AllSagas),
|
||||
{{/apis}}
|
||||
{{/apiInfo}}
|
||||
]);
|
||||
}
|
16
modules/openapi-generator/src/main/resources/typescript-playwright/apis.index.mustache
vendored
Normal file
16
modules/openapi-generator/src/main/resources/typescript-playwright/apis.index.mustache
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
{{#useSagaAndRecords}}
|
||||
export * from './SagaApiManager{{importFileExtension}}'
|
||||
export * from './allSagas{{importFileExtension}}'
|
||||
{{/useSagaAndRecords}}
|
||||
{{#apiInfo}}
|
||||
{{#apis}}
|
||||
{{#operations}}
|
||||
export * from './{{ classFilename }}{{importFileExtension}}';
|
||||
{{#useSagaAndRecords}}
|
||||
export * from './{{{ classFilename }}}Sagas{{importFileExtension}}';
|
||||
{{/useSagaAndRecords}}
|
||||
{{/operations}}
|
||||
{{/apis}}
|
||||
{{/apiInfo}}
|
446
modules/openapi-generator/src/main/resources/typescript-playwright/apis.mustache
vendored
Normal file
446
modules/openapi-generator/src/main/resources/typescript-playwright/apis.mustache
vendored
Normal file
@ -0,0 +1,446 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
{{>licenseInfo}}
|
||||
|
||||
import * as runtime from '../runtime{{importFileExtension}}';
|
||||
{{#imports.0}}
|
||||
import type {
|
||||
{{#imports}}
|
||||
{{className}},
|
||||
{{/imports}}
|
||||
} from '../models/index{{importFileExtension}}';
|
||||
{{^withoutRuntimeChecks}}
|
||||
import {
|
||||
{{#imports}}
|
||||
{{className}}FromJSON,
|
||||
{{className}}ToJSON,
|
||||
{{/imports}}
|
||||
} from '../models/index{{importFileExtension}}';
|
||||
{{/withoutRuntimeChecks}}
|
||||
{{/imports.0}}
|
||||
|
||||
{{#operations}}
|
||||
{{#operation}}
|
||||
{{#allParams.0}}
|
||||
export interface {{#prefixParameterInterfaces}}{{classname}}{{/prefixParameterInterfaces}}{{operationIdCamelCase}}Request {
|
||||
{{#allParams}}
|
||||
{{paramName}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{#hasReadOnly}}Omit<{{{dataType}}}, {{#readOnlyVars}}'{{baseName}}'{{^-last}}|{{/-last}}{{/readOnlyVars}}>{{/hasReadOnly}}{{^hasReadOnly}}{{{dataType}}}{{/hasReadOnly}}{{#isNullable}} | null{{/isNullable}}{{/isEnum}};
|
||||
{{/allParams}}
|
||||
}
|
||||
|
||||
{{/allParams.0}}
|
||||
{{/operation}}
|
||||
{{/operations}}
|
||||
{{#withInterfaces}}
|
||||
{{#operations}}
|
||||
/**
|
||||
* {{classname}} - interface
|
||||
* {{#lambda.indented_1}}{{{unescapedDescription}}}{{/lambda.indented_1}}
|
||||
* @export
|
||||
* @interface {{classname}}Interface
|
||||
*/
|
||||
export interface {{classname}}Interface {
|
||||
{{#operation}}
|
||||
/**
|
||||
* {{¬es}}
|
||||
{{#summary}}
|
||||
* @summary {{&summary}}
|
||||
{{/summary}}
|
||||
{{#allParams}}
|
||||
* @param {{=<% %>=}}{<%&dataType%>}<%={{ }}=%> {{^required}}[{{/required}}{{paramName}}{{^required}}]{{/required}} {{description}}
|
||||
{{/allParams}}
|
||||
* @param {*} [options] Override http request option.
|
||||
{{#isDeprecated}}
|
||||
* @deprecated
|
||||
{{/isDeprecated}}
|
||||
* @throws {RequiredError}
|
||||
* @memberof {{classname}}Interface
|
||||
*/
|
||||
{{nickname}}Raw({{#allParams.0}}requestParameters: {{#prefixParameterInterfaces}}{{classname}}{{/prefixParameterInterfaces}}{{operationIdCamelCase}}Request, {{/allParams.0}}initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{{{returnType}}}{{^returnType}}void{{/returnType}}>>;
|
||||
|
||||
/**
|
||||
{{#notes}}
|
||||
* {{¬es}}
|
||||
{{/notes}}
|
||||
{{#summary}}
|
||||
* {{&summary}}
|
||||
{{/summary}}
|
||||
{{#isDeprecated}}
|
||||
* @deprecated
|
||||
{{/isDeprecated}}
|
||||
*/
|
||||
{{^useSingleRequestParameter}}
|
||||
{{nickname}}({{#allParams}}{{paramName}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{#isNullable}} | null{{/isNullable}}{{/isEnum}}, {{/allParams}}initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{{{returnType}}}{{^returnType}}void{{/returnType}}>;
|
||||
{{/useSingleRequestParameter}}
|
||||
{{#useSingleRequestParameter}}
|
||||
{{nickname}}({{#allParams.0}}requestParameters: {{#prefixParameterInterfaces}}{{classname}}{{/prefixParameterInterfaces}}{{operationIdCamelCase}}Request, {{/allParams.0}}initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{{{returnType}}}{{^returnType}}void{{/returnType}}>;
|
||||
{{/useSingleRequestParameter}}
|
||||
|
||||
{{/operation}}
|
||||
}
|
||||
|
||||
{{/operations}}
|
||||
{{/withInterfaces}}
|
||||
{{#operations}}
|
||||
/**
|
||||
* {{#lambda.indented_star_1}}{{{unescapedDescription}}}{{/lambda.indented_star_1}}
|
||||
*/
|
||||
{{#withInterfaces}}
|
||||
export class {{classname}} extends runtime.BaseAPI implements {{classname}}Interface {
|
||||
{{/withInterfaces}}
|
||||
{{^withInterfaces}}
|
||||
export class {{classname}} extends runtime.BaseAPI {
|
||||
{{/withInterfaces}}
|
||||
|
||||
{{#operation}}
|
||||
/**
|
||||
{{#notes}}
|
||||
* {{¬es}}
|
||||
{{/notes}}
|
||||
{{#summary}}
|
||||
* {{&summary}}
|
||||
{{/summary}}
|
||||
{{#isDeprecated}}
|
||||
* @deprecated
|
||||
{{/isDeprecated}}
|
||||
*/
|
||||
async {{nickname}}Raw({{#allParams.0}}requestParameters: {{#prefixParameterInterfaces}}{{classname}}{{/prefixParameterInterfaces}}{{operationIdCamelCase}}Request, {{/allParams.0}}initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{{{returnType}}}{{^returnType}}void{{/returnType}}>> {
|
||||
{{#allParams}}
|
||||
{{#required}}
|
||||
if (requestParameters['{{paramName}}'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'{{paramName}}',
|
||||
'Required parameter "{{paramName}}" was null or undefined when calling {{nickname}}().'
|
||||
);
|
||||
}
|
||||
|
||||
{{/required}}
|
||||
{{/allParams}}
|
||||
const queryParameters: any = {};
|
||||
|
||||
{{#queryParams}}
|
||||
{{#isArray}}
|
||||
if (requestParameters['{{paramName}}'] != null) {
|
||||
{{#isCollectionFormatMulti}}
|
||||
queryParameters['{{baseName}}'] = requestParameters['{{paramName}}'];
|
||||
{{/isCollectionFormatMulti}}
|
||||
{{^isCollectionFormatMulti}}
|
||||
queryParameters['{{baseName}}'] = {{#uniqueItems}}Array.from({{/uniqueItems}}requestParameters['{{paramName}}']{{#uniqueItems}}){{/uniqueItems}}!.join(runtime.COLLECTION_FORMATS["{{collectionFormat}}"]);
|
||||
{{/isCollectionFormatMulti}}
|
||||
}
|
||||
|
||||
{{/isArray}}
|
||||
{{^isArray}}
|
||||
if (requestParameters['{{paramName}}'] != null) {
|
||||
{{#isDateTimeType}}
|
||||
queryParameters['{{baseName}}'] = (requestParameters['{{paramName}}'] as any).toISOString();
|
||||
{{/isDateTimeType}}
|
||||
{{^isDateTimeType}}
|
||||
{{#isDateType}}
|
||||
queryParameters['{{baseName}}'] = (requestParameters['{{paramName}}'] as any).toISOString().substring(0,10);
|
||||
{{/isDateType}}
|
||||
{{^isDateType}}
|
||||
queryParameters['{{baseName}}'] = requestParameters['{{paramName}}'];
|
||||
{{/isDateType}}
|
||||
{{/isDateTimeType}}
|
||||
}
|
||||
|
||||
{{/isArray}}
|
||||
{{/queryParams}}
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
{{#bodyParam}}
|
||||
{{^consumes}}
|
||||
headerParameters['Content-Type'] = 'application/json';
|
||||
|
||||
{{/consumes}}
|
||||
{{#consumes.0}}
|
||||
headerParameters['Content-Type'] = '{{{mediaType}}}';
|
||||
|
||||
{{/consumes.0}}
|
||||
{{/bodyParam}}
|
||||
{{#headerParams}}
|
||||
{{#isArray}}
|
||||
if (requestParameters['{{paramName}}'] != null) {
|
||||
headerParameters['{{baseName}}'] = {{#uniqueItems}}Array.from({{/uniqueItems}}requestParameters['{{paramName}}']{{#uniqueItems}}){{/uniqueItems}}!.join(runtime.COLLECTION_FORMATS["{{collectionFormat}}"]);
|
||||
}
|
||||
|
||||
{{/isArray}}
|
||||
{{^isArray}}
|
||||
if (requestParameters['{{paramName}}'] != null) {
|
||||
headerParameters['{{baseName}}'] = String(requestParameters['{{paramName}}']);
|
||||
}
|
||||
|
||||
{{/isArray}}
|
||||
{{/headerParams}}
|
||||
{{#authMethods}}
|
||||
{{#isBasic}}
|
||||
{{#isBasicBasic}}
|
||||
if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) {
|
||||
headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password);
|
||||
}
|
||||
{{/isBasicBasic}}
|
||||
{{#isBasicBearer}}
|
||||
if (this.configuration && this.configuration.accessToken) {
|
||||
const token = this.configuration.accessToken;
|
||||
const tokenString = await token("{{name}}", [{{#scopes}}"{{{scope}}}"{{^-last}}, {{/-last}}{{/scopes}}]);
|
||||
|
||||
if (tokenString) {
|
||||
headerParameters["Authorization"] = `Bearer ${tokenString}`;
|
||||
}
|
||||
}
|
||||
{{/isBasicBearer}}
|
||||
{{/isBasic}}
|
||||
{{#isApiKey}}
|
||||
{{#isKeyInHeader}}
|
||||
if (this.configuration && this.configuration.apiKey) {
|
||||
headerParameters["{{keyParamName}}"] = await this.configuration.apiKey("{{keyParamName}}"); // {{name}} authentication
|
||||
}
|
||||
|
||||
{{/isKeyInHeader}}
|
||||
{{#isKeyInQuery}}
|
||||
if (this.configuration && this.configuration.apiKey) {
|
||||
queryParameters["{{keyParamName}}"] = await this.configuration.apiKey("{{keyParamName}}"); // {{name}} authentication
|
||||
}
|
||||
|
||||
{{/isKeyInQuery}}
|
||||
{{/isApiKey}}
|
||||
{{#isOAuth}}
|
||||
if (this.configuration && this.configuration.accessToken) {
|
||||
// oauth required
|
||||
headerParameters["Authorization"] = await this.configuration.accessToken("{{name}}", [{{#scopes}}"{{{scope}}}"{{^-last}}, {{/-last}}{{/scopes}}]);
|
||||
}
|
||||
|
||||
{{/isOAuth}}
|
||||
{{/authMethods}}
|
||||
{{#hasFormParams}}
|
||||
const consumes: runtime.Consume[] = [
|
||||
{{#consumes}}
|
||||
{ contentType: '{{{mediaType}}}' },
|
||||
{{/consumes}}
|
||||
];
|
||||
// @ts-ignore: canConsumeForm may be unused
|
||||
const canConsumeForm = runtime.canConsumeForm(consumes);
|
||||
|
||||
let formParams: { append(param: string, value: any): any };
|
||||
let useForm = false;
|
||||
{{#formParams}}
|
||||
{{#isFile}}
|
||||
// use FormData to transmit files using content-type "multipart/form-data"
|
||||
useForm = canConsumeForm;
|
||||
{{/isFile}}
|
||||
{{/formParams}}
|
||||
if (useForm) {
|
||||
formParams = new FormData();
|
||||
} else {
|
||||
formParams = new URLSearchParams();
|
||||
}
|
||||
|
||||
{{#formParams}}
|
||||
{{#isArray}}
|
||||
if (requestParameters['{{paramName}}'] != null) {
|
||||
{{#isCollectionFormatMulti}}
|
||||
requestParameters['{{paramName}}'].forEach((element) => {
|
||||
formParams.append('{{baseName}}{{#useSquareBracketsInArrayNames}}[]{{/useSquareBracketsInArrayNames}}', element as any);
|
||||
})
|
||||
{{/isCollectionFormatMulti}}
|
||||
{{^isCollectionFormatMulti}}
|
||||
formParams.append('{{baseName}}{{#useSquareBracketsInArrayNames}}[]{{/useSquareBracketsInArrayNames}}', {{#uniqueItems}}Array.from({{/uniqueItems}}requestParameters['{{paramName}}']{{#uniqueItems}}){{/uniqueItems}}!.join(runtime.COLLECTION_FORMATS["{{collectionFormat}}"]));
|
||||
{{/isCollectionFormatMulti}}
|
||||
}
|
||||
|
||||
{{/isArray}}
|
||||
{{^isArray}}
|
||||
if (requestParameters['{{paramName}}'] != null) {
|
||||
{{#isPrimitiveType}}
|
||||
formParams.append('{{baseName}}', requestParameters['{{paramName}}'] as any);
|
||||
{{/isPrimitiveType}}
|
||||
{{^isPrimitiveType}}
|
||||
{{^withoutRuntimeChecks}}
|
||||
formParams.append('{{baseName}}', new Blob([JSON.stringify({{{dataType}}}ToJSON(requestParameters['{{paramName}}']))], { type: "application/json", }));
|
||||
{{/withoutRuntimeChecks}}{{#withoutRuntimeChecks}}
|
||||
formParams.append('{{baseName}}', new Blob([JSON.stringify(requestParameters['{{paramName}}'])], { type: "application/json", }));
|
||||
{{/withoutRuntimeChecks}}
|
||||
{{/isPrimitiveType}}
|
||||
}
|
||||
|
||||
{{/isArray}}
|
||||
{{/formParams}}
|
||||
{{/hasFormParams}}
|
||||
const response = await this.request({
|
||||
path: `{{{path}}}`{{#pathParams}}.replace(`{${"{{baseName}}"}}`, encodeURIComponent(String(requestParameters['{{paramName}}']))){{/pathParams}},
|
||||
method: '{{httpMethod}}',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
{{#hasBodyParam}}
|
||||
{{#bodyParam}}
|
||||
{{#isContainer}}
|
||||
{{^withoutRuntimeChecks}}
|
||||
body: requestParameters['{{paramName}}']{{#isArray}}{{#items}}{{^isPrimitiveType}}!.map({{datatype}}ToJSON){{/isPrimitiveType}}{{/items}}{{/isArray}},
|
||||
{{/withoutRuntimeChecks}}
|
||||
{{#withoutRuntimeChecks}}
|
||||
body: requestParameters['{{paramName}}'],
|
||||
{{/withoutRuntimeChecks}}
|
||||
{{/isContainer}}
|
||||
{{^isContainer}}
|
||||
{{^isPrimitiveType}}
|
||||
{{^withoutRuntimeChecks}}
|
||||
body: {{dataType}}ToJSON(requestParameters['{{paramName}}']),
|
||||
{{/withoutRuntimeChecks}}
|
||||
{{#withoutRuntimeChecks}}
|
||||
body: requestParameters['{{paramName}}'],
|
||||
{{/withoutRuntimeChecks}}
|
||||
{{/isPrimitiveType}}
|
||||
{{#isPrimitiveType}}
|
||||
body: requestParameters['{{paramName}}'] as any,
|
||||
{{/isPrimitiveType}}
|
||||
{{/isContainer}}
|
||||
{{/bodyParam}}
|
||||
{{/hasBodyParam}}
|
||||
{{#hasFormParams}}
|
||||
body: formParams,
|
||||
{{/hasFormParams}}
|
||||
}, initOverrides);
|
||||
|
||||
{{#returnType}}
|
||||
{{#isResponseFile}}
|
||||
return new runtime.BlobApiResponse(response);
|
||||
{{/isResponseFile}}
|
||||
{{^isResponseFile}}
|
||||
{{#returnTypeIsPrimitive}}
|
||||
{{#isMap}}
|
||||
return new runtime.JSONApiResponse<any>(response);
|
||||
{{/isMap}}
|
||||
{{#isArray}}
|
||||
return new runtime.JSONApiResponse<any>(response);
|
||||
{{/isArray}}
|
||||
{{#returnSimpleType}}
|
||||
if (this.isJsonMime(response.headers.get('content-type'))) {
|
||||
return new runtime.JSONApiResponse<{{returnType}}>(response);
|
||||
} else {
|
||||
return new runtime.TextApiResponse(response) as any;
|
||||
}
|
||||
{{/returnSimpleType}}
|
||||
{{/returnTypeIsPrimitive}}
|
||||
{{^returnTypeIsPrimitive}}
|
||||
{{#isArray}}
|
||||
return new runtime.JSONApiResponse(response{{^withoutRuntimeChecks}}, (jsonValue) => {{#uniqueItems}}new Set({{/uniqueItems}}jsonValue.map({{returnBaseType}}FromJSON){{/withoutRuntimeChecks}}){{#uniqueItems}}){{/uniqueItems}};
|
||||
{{/isArray}}
|
||||
{{^isArray}}
|
||||
{{#isMap}}
|
||||
return new runtime.JSONApiResponse(response{{^withoutRuntimeChecks}}, (jsonValue) => runtime.mapValues(jsonValue, {{returnBaseType}}FromJSON){{/withoutRuntimeChecks}});
|
||||
{{/isMap}}
|
||||
{{^isMap}}
|
||||
return new runtime.JSONApiResponse(response{{^withoutRuntimeChecks}}, (jsonValue) => {{returnBaseType}}FromJSON(jsonValue){{/withoutRuntimeChecks}});
|
||||
{{/isMap}}
|
||||
{{/isArray}}
|
||||
{{/returnTypeIsPrimitive}}
|
||||
{{/isResponseFile}}
|
||||
{{/returnType}}
|
||||
{{^returnType}}
|
||||
return new runtime.VoidApiResponse(response);
|
||||
{{/returnType}}
|
||||
}
|
||||
|
||||
/**
|
||||
{{#notes}}
|
||||
* {{¬es}}
|
||||
{{/notes}}
|
||||
{{#summary}}
|
||||
* {{&summary}}
|
||||
{{/summary}}
|
||||
{{#isDeprecated}}
|
||||
* @deprecated
|
||||
{{/isDeprecated}}
|
||||
*/
|
||||
{{^useSingleRequestParameter}}
|
||||
async {{nickname}}({{#allParams}}{{paramName}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{#isNullable}} | null{{/isNullable}}{{/isEnum}}, {{/allParams}}initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{{{returnType}}}{{#returnType}}{{#isResponseOptional}} | null | undefined {{/isResponseOptional}}{{/returnType}}{{^returnType}}void{{/returnType}}> {
|
||||
{{#returnType}}
|
||||
const response = await this.{{nickname}}Raw({{#allParams.0}}{ {{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}} }, {{/allParams.0}}initOverrides);
|
||||
{{#isResponseOptional}}
|
||||
switch (response.raw.status) {
|
||||
{{#responses}}
|
||||
{{#is2xx}}
|
||||
case {{code}}:
|
||||
return {{#dataType}}await response.value(){{/dataType}}{{^dataType}}null{{/dataType}};
|
||||
{{/is2xx}}
|
||||
{{/responses}}
|
||||
default:
|
||||
return await response.value();
|
||||
}
|
||||
{{/isResponseOptional}}
|
||||
{{^isResponseOptional}}
|
||||
return await response.value();
|
||||
{{/isResponseOptional}}
|
||||
{{/returnType}}
|
||||
{{^returnType}}
|
||||
await this.{{nickname}}Raw({{#allParams.0}}{ {{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}} }, {{/allParams.0}}initOverrides);
|
||||
{{/returnType}}
|
||||
}
|
||||
{{/useSingleRequestParameter}}
|
||||
{{#useSingleRequestParameter}}
|
||||
async {{nickname}}({{#allParams.0}}requestParameters: {{#prefixParameterInterfaces}}{{classname}}{{/prefixParameterInterfaces}}{{operationIdCamelCase}}Request{{^hasRequiredParams}} = {}{{/hasRequiredParams}}, {{/allParams.0}}initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{{{returnType}}}{{#returnType}}{{#isResponseOptional}} | null | undefined {{/isResponseOptional}}{{/returnType}}{{^returnType}}void{{/returnType}}> {
|
||||
{{#returnType}}
|
||||
const response = await this.{{nickname}}Raw({{#allParams.0}}requestParameters, {{/allParams.0}}initOverrides);
|
||||
{{#isResponseOptional}}
|
||||
switch (response.raw.status) {
|
||||
{{#responses}}
|
||||
{{#is2xx}}
|
||||
case {{code}}:
|
||||
return {{#dataType}}await response.value(){{/dataType}}{{^dataType}}null{{/dataType}};
|
||||
{{/is2xx}}
|
||||
{{/responses}}
|
||||
default:
|
||||
return await response.value();
|
||||
}
|
||||
{{/isResponseOptional}}
|
||||
{{^isResponseOptional}}
|
||||
return await response.value();
|
||||
{{/isResponseOptional}}
|
||||
{{/returnType}}
|
||||
{{^returnType}}
|
||||
await this.{{nickname}}Raw({{#allParams.0}}requestParameters, {{/allParams.0}}initOverrides);
|
||||
{{/returnType}}
|
||||
}
|
||||
{{/useSingleRequestParameter}}
|
||||
|
||||
{{/operation}}
|
||||
}
|
||||
{{/operations}}
|
||||
{{#hasEnums}}
|
||||
|
||||
{{#operations}}
|
||||
{{#operation}}
|
||||
{{#allParams}}
|
||||
{{#isEnum}}
|
||||
{{#stringEnums}}
|
||||
/**
|
||||
* @export
|
||||
* @enum {string}
|
||||
*/
|
||||
export enum {{operationIdCamelCase}}{{enumName}} {
|
||||
{{#allowableValues}}
|
||||
{{#enumVars}}
|
||||
{{{name}}} = {{{value}}}{{^-last}},{{/-last}}
|
||||
{{/enumVars}}
|
||||
{{/allowableValues}}
|
||||
}
|
||||
{{/stringEnums}}
|
||||
{{^stringEnums}}
|
||||
/**
|
||||
* @export
|
||||
*/
|
||||
export const {{operationIdCamelCase}}{{enumName}} = {
|
||||
{{#allowableValues}}
|
||||
{{#enumVars}}
|
||||
{{{name}}}: {{{value}}}{{^-last}},{{/-last}}
|
||||
{{/enumVars}}
|
||||
{{/allowableValues}}
|
||||
} as const;
|
||||
export type {{operationIdCamelCase}}{{enumName}} = typeof {{operationIdCamelCase}}{{enumName}}[keyof typeof {{operationIdCamelCase}}{{enumName}}];
|
||||
{{/stringEnums}}
|
||||
{{/isEnum}}
|
||||
{{/allParams}}
|
||||
{{/operation}}
|
||||
{{/operations}}
|
||||
{{/hasEnums}}
|
@ -0,0 +1,4 @@
|
||||
wwwroot/*.js
|
||||
node_modules
|
||||
typings
|
||||
dist
|
17
modules/openapi-generator/src/main/resources/typescript-playwright/index.mustache
vendored
Normal file
17
modules/openapi-generator/src/main/resources/typescript-playwright/index.mustache
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
export * from './runtime{{importFileExtension}}';
|
||||
{{#useSagaAndRecords}}
|
||||
export * from './runtimeSagasAndRecords{{importFileExtension}}';
|
||||
export * from './ApiEntitiesRecord{{importFileExtension}}';
|
||||
export * from './ApiEntitiesReducer{{importFileExtension}}';
|
||||
export * from './ApiEntitiesSelectors{{importFileExtension}}';
|
||||
{{/useSagaAndRecords}}
|
||||
{{#apiInfo}}
|
||||
{{#apis.0}}
|
||||
export * from './apis/index{{importFileExtension}}';
|
||||
{{/apis.0}}
|
||||
{{/apiInfo}}
|
||||
{{#models.0}}
|
||||
export * from './models/index{{importFileExtension}}';
|
||||
{{/models.0}}
|
11
modules/openapi-generator/src/main/resources/typescript-playwright/licenseInfo.mustache
vendored
Normal file
11
modules/openapi-generator/src/main/resources/typescript-playwright/licenseInfo.mustache
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
/**
|
||||
* {{{appName}}}
|
||||
* {{{appDescription}}}
|
||||
*
|
||||
* {{#version}}The version of the OpenAPI document: {{{.}}}{{/version}}
|
||||
* {{#infoEmail}}Contact: {{{.}}}{{/infoEmail}}
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
24
modules/openapi-generator/src/main/resources/typescript-playwright/modelEnum.mustache
vendored
Normal file
24
modules/openapi-generator/src/main/resources/typescript-playwright/modelEnum.mustache
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
{{>modelEnumInterfaces}}
|
||||
|
||||
export function instanceOf{{classname}}(value: any): boolean {
|
||||
for (const key in {{classname}}) {
|
||||
if (Object.prototype.hasOwnProperty.call({{classname}}, key)) {
|
||||
if (({{classname}} as Record<string, {{classname}}>)[key] === value) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
export function {{classname}}FromJSON(json: any): {{classname}} {
|
||||
return {{classname}}FromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function {{classname}}FromJSONTyped(json: any, ignoreDiscriminator: boolean): {{classname}} {
|
||||
return json as {{classname}};
|
||||
}
|
||||
|
||||
export function {{classname}}ToJSON(value?: {{classname}} | null): any {
|
||||
return value as any;
|
||||
}
|
27
modules/openapi-generator/src/main/resources/typescript-playwright/modelEnumInterfaces.mustache
vendored
Normal file
27
modules/openapi-generator/src/main/resources/typescript-playwright/modelEnumInterfaces.mustache
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
{{#stringEnums}}
|
||||
/**
|
||||
* {{#lambda.indented_star_1}}{{{unescapedDescription}}}{{/lambda.indented_star_1}}
|
||||
* @export
|
||||
* @enum {string}
|
||||
*/
|
||||
export enum {{classname}} {
|
||||
{{#allowableValues}}
|
||||
{{#enumVars}}
|
||||
{{{name}}} = {{{value}}}{{^-last}},{{/-last}}
|
||||
{{/enumVars}}
|
||||
{{/allowableValues}}
|
||||
}
|
||||
{{/stringEnums}}{{^stringEnums}}
|
||||
/**
|
||||
* {{#lambda.indented_star_1}}{{{unescapedDescription}}}{{/lambda.indented_star_1}}
|
||||
* @export
|
||||
*/
|
||||
export const {{classname}} = {
|
||||
{{#allowableValues}}
|
||||
{{#enumVars}}
|
||||
{{{name}}}: {{{value}}}{{^-last}},{{/-last}}
|
||||
{{/enumVars}}
|
||||
{{/allowableValues}}
|
||||
} as const;
|
||||
export type {{classname}} = typeof {{classname}}[keyof typeof {{classname}}];
|
||||
{{/stringEnums}}
|
160
modules/openapi-generator/src/main/resources/typescript-playwright/modelGeneric.mustache
vendored
Normal file
160
modules/openapi-generator/src/main/resources/typescript-playwright/modelGeneric.mustache
vendored
Normal file
@ -0,0 +1,160 @@
|
||||
import { mapValues } from '../runtime{{importFileExtension}}';
|
||||
{{#hasImports}}
|
||||
{{#tsImports}}
|
||||
import type { {{{classname}}} } from './{{filename}}{{importFileExtension}}';
|
||||
import {
|
||||
{{classname}}FromJSON,
|
||||
{{classname}}FromJSONTyped,
|
||||
{{classname}}ToJSON,
|
||||
} from './{{filename}}{{importFileExtension}}';
|
||||
{{/tsImports}}
|
||||
|
||||
{{/hasImports}}
|
||||
{{#discriminator}}
|
||||
{{#discriminator.mappedModels}}
|
||||
import { {{modelName}}FromJSONTyped } from './{{modelName}}{{importFileExtension}}';
|
||||
{{/discriminator.mappedModels}}
|
||||
{{/discriminator}}
|
||||
{{>modelGenericInterfaces}}
|
||||
|
||||
/**
|
||||
* Check if a given object implements the {{classname}} interface.
|
||||
*/
|
||||
export function instanceOf{{classname}}(value: object): value is {{classname}} {
|
||||
{{#vars}}
|
||||
{{#required}}
|
||||
if (!('{{name}}' in value) || value['{{name}}'] === undefined) return false;
|
||||
{{/required}}
|
||||
{{/vars}}
|
||||
return true;
|
||||
}
|
||||
|
||||
export function {{classname}}FromJSON(json: any): {{classname}} {
|
||||
return {{classname}}FromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function {{classname}}FromJSONTyped(json: any, ignoreDiscriminator: boolean): {{classname}} {
|
||||
{{#hasVars}}
|
||||
if (json == null) {
|
||||
return json;
|
||||
}
|
||||
{{#discriminator}}
|
||||
if (!ignoreDiscriminator) {
|
||||
{{#discriminator.mappedModels}}
|
||||
if (json['{{discriminator.propertyBaseName}}'] === '{{mappingName}}') {
|
||||
return {{modelName}}FromJSONTyped(json, true);
|
||||
}
|
||||
{{/discriminator.mappedModels}}
|
||||
}
|
||||
{{/discriminator}}
|
||||
return {
|
||||
{{#parent}}...{{{.}}}FromJSONTyped(json, ignoreDiscriminator),{{/parent}}
|
||||
{{#additionalPropertiesType}}
|
||||
...json,
|
||||
{{/additionalPropertiesType}}
|
||||
{{#vars}}
|
||||
{{#isPrimitiveType}}
|
||||
{{#isDateType}}
|
||||
'{{name}}': {{^required}}json['{{baseName}}'] == null ? undefined : {{/required}}({{#required}}{{#isNullable}}json['{{baseName}}'] == null ? null : {{/isNullable}}{{/required}}new Date(json['{{baseName}}'])),
|
||||
{{/isDateType}}
|
||||
{{#isDateTimeType}}
|
||||
'{{name}}': {{^required}}json['{{baseName}}'] == null ? undefined : {{/required}}({{#required}}{{#isNullable}}json['{{baseName}}'] == null ? null : {{/isNullable}}{{/required}}new Date(json['{{baseName}}'])),
|
||||
{{/isDateTimeType}}
|
||||
{{^isDateType}}
|
||||
{{^isDateTimeType}}
|
||||
'{{name}}': {{^required}}json['{{baseName}}'] == null ? undefined : {{/required}}json['{{baseName}}'],
|
||||
{{/isDateTimeType}}
|
||||
{{/isDateType}}
|
||||
{{/isPrimitiveType}}
|
||||
{{^isPrimitiveType}}
|
||||
{{#isArray}}
|
||||
{{#uniqueItems}}
|
||||
'{{name}}': {{^required}}json['{{baseName}}'] == null ? undefined : {{/required}}({{#required}}{{#isNullable}}json['{{baseName}}'] == null ? null : {{/isNullable}}{{/required}}new Set((json['{{baseName}}'] as Array<any>).map({{#items}}{{datatype}}{{/items}}FromJSON))),
|
||||
{{/uniqueItems}}
|
||||
{{^uniqueItems}}
|
||||
'{{name}}': {{^required}}json['{{baseName}}'] == null ? undefined : {{/required}}({{#required}}{{#isNullable}}json['{{baseName}}'] == null ? null : {{/isNullable}}{{/required}}(json['{{baseName}}'] as Array<any>).map({{#items}}{{datatype}}{{/items}}FromJSON)),
|
||||
{{/uniqueItems}}
|
||||
{{/isArray}}
|
||||
{{#isMap}}
|
||||
'{{name}}': {{^required}}json['{{baseName}}'] == null ? undefined : {{/required}}({{#required}}{{#isNullable}}json['{{baseName}}'] == null ? null : {{/isNullable}}{{/required}}mapValues(json['{{baseName}}'], {{#items}}{{datatype}}{{/items}}FromJSON)),
|
||||
{{/isMap}}
|
||||
{{^isArray}}
|
||||
{{^isMap}}
|
||||
{{^isFreeFormObject}}
|
||||
'{{name}}': {{^required}}json['{{baseName}}'] == null ? undefined : {{/required}}{{datatype}}FromJSON(json['{{baseName}}']),
|
||||
{{/isFreeFormObject}}
|
||||
{{#isFreeFormObject}}
|
||||
'{{name}}': {{^required}}json['{{baseName}}'] == null ? undefined : {{/required}}json['{{baseName}}'],
|
||||
{{/isFreeFormObject}}
|
||||
{{/isMap}}
|
||||
{{/isArray}}
|
||||
{{/isPrimitiveType}}
|
||||
{{/vars}}
|
||||
};
|
||||
{{/hasVars}}
|
||||
{{^hasVars}}
|
||||
return json;
|
||||
{{/hasVars}}
|
||||
}
|
||||
|
||||
export function {{classname}}ToJSON(value?: {{#hasReadOnly}}Omit<{{classname}}, {{#readOnlyVars}}'{{baseName}}'{{^-last}}|{{/-last}}{{/readOnlyVars}}>{{/hasReadOnly}}{{^hasReadOnly}}{{classname}}{{/hasReadOnly}} | null): any {
|
||||
{{#hasVars}}
|
||||
if (value == null) {
|
||||
return value;
|
||||
}
|
||||
return {
|
||||
{{#parent}}...{{{.}}}ToJSON(value),{{/parent}}
|
||||
{{#additionalPropertiesType}}
|
||||
...value,
|
||||
{{/additionalPropertiesType}}
|
||||
{{#vars}}
|
||||
{{^isReadOnly}}
|
||||
{{#isPrimitiveType}}
|
||||
{{#isDateType}}
|
||||
'{{baseName}}': {{^required}}value['{{name}}'] == null ? undefined : {{/required}}({{#required}}{{#isNullable}}value['{{name}}'] == null ? null : {{/isNullable}}{{/required}}(value['{{name}}']{{#isNullable}} as any{{/isNullable}}).toISOString().substring(0,10)),
|
||||
{{/isDateType}}
|
||||
{{#isDateTimeType}}
|
||||
'{{baseName}}': {{^required}}value['{{name}}'] == null ? undefined : {{/required}}({{#required}}{{#isNullable}}value['{{name}}'] == null ? null : {{/isNullable}}{{/required}}(value['{{name}}']{{#isNullable}} as any{{/isNullable}}).toISOString()),
|
||||
{{/isDateTimeType}}
|
||||
{{#isArray}}
|
||||
'{{baseName}}': {{#uniqueItems}}{{^required}}value['{{name}}'] == null ? undefined : {{/required}}{{#required}}{{#isNullable}}value['{{name}}'] == null ? null : {{/isNullable}}{{/required}}Array.from(value['{{name}}'] as Set<any>){{/uniqueItems}}{{^uniqueItems}}value['{{name}}']{{/uniqueItems}},
|
||||
{{/isArray}}
|
||||
{{^isDateType}}
|
||||
{{^isDateTimeType}}
|
||||
{{^isArray}}
|
||||
'{{baseName}}': value['{{name}}'],
|
||||
{{/isArray}}
|
||||
{{/isDateTimeType}}
|
||||
{{/isDateType}}
|
||||
{{/isPrimitiveType}}
|
||||
{{^isPrimitiveType}}
|
||||
{{#isArray}}
|
||||
{{#uniqueItems}}
|
||||
'{{baseName}}': {{^required}}value['{{name}}'] == null ? undefined : {{/required}}({{#required}}{{#isNullable}}value['{{name}}'] == null ? null : {{/isNullable}}{{/required}}Array.from(value['{{name}}'] as Set<any>).map({{#items}}{{datatype}}{{/items}}ToJSON)),
|
||||
{{/uniqueItems}}
|
||||
{{^uniqueItems}}
|
||||
'{{baseName}}': {{^required}}value['{{name}}'] == null ? undefined : {{/required}}({{#required}}{{#isNullable}}value['{{name}}'] == null ? null : {{/isNullable}}{{/required}}(value['{{name}}'] as Array<any>).map({{#items}}{{datatype}}{{/items}}ToJSON)),
|
||||
{{/uniqueItems}}
|
||||
{{/isArray}}
|
||||
{{#isMap}}
|
||||
'{{baseName}}': {{^required}}value['{{name}}'] == null ? undefined : {{/required}}({{#required}}{{#isNullable}}value['{{name}}'] == null ? null : {{/isNullable}}{{/required}}mapValues(value['{{name}}'], {{#items}}{{datatype}}{{/items}}ToJSON)),
|
||||
{{/isMap}}
|
||||
{{^isArray}}
|
||||
{{^isMap}}
|
||||
{{^isFreeFormObject}}
|
||||
'{{baseName}}': {{datatype}}ToJSON(value['{{name}}']),
|
||||
{{/isFreeFormObject}}
|
||||
{{#isFreeFormObject}}
|
||||
'{{baseName}}': value['{{name}}'],
|
||||
{{/isFreeFormObject}}
|
||||
{{/isMap}}
|
||||
{{/isArray}}
|
||||
{{/isPrimitiveType}}
|
||||
{{/isReadOnly}}
|
||||
{{/vars}}
|
||||
};
|
||||
{{/hasVars}}
|
||||
{{^hasVars}}
|
||||
return value;
|
||||
{{/hasVars}}
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
/**
|
||||
* {{#lambda.indented_star_1}}{{{unescapedDescription}}}{{/lambda.indented_star_1}}
|
||||
* @export
|
||||
* @interface {{classname}}
|
||||
*/
|
||||
export interface {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{
|
||||
{{#additionalPropertiesType}}
|
||||
[key: string]: {{{additionalPropertiesType}}}{{#hasVars}} | any{{/hasVars}};
|
||||
{{/additionalPropertiesType}}
|
||||
{{#vars}}
|
||||
/**
|
||||
* {{#lambda.indented_star_4}}{{{unescapedDescription}}}{{/lambda.indented_star_4}}
|
||||
* @type {{=<% %>=}}{<%&datatype%>}<%={{ }}=%>
|
||||
* @memberof {{classname}}
|
||||
{{#deprecated}}
|
||||
* @deprecated
|
||||
{{/deprecated}}
|
||||
*/
|
||||
{{#isReadOnly}}readonly {{/isReadOnly}}{{name}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{#isNullable}} | null{{/isNullable}}{{/isEnum}}{{^isEnum}}{{{datatype}}}{{#isNullable}} | null{{/isNullable}}{{/isEnum}};
|
||||
{{/vars}}
|
||||
}{{#hasEnums}}
|
||||
|
||||
{{#vars}}
|
||||
{{#isEnum}}
|
||||
{{#stringEnums}}
|
||||
/**
|
||||
* @export
|
||||
* @enum {string}
|
||||
*/
|
||||
export enum {{classname}}{{enumName}} {
|
||||
{{#allowableValues}}
|
||||
{{#enumVars}}
|
||||
{{{name}}} = {{{value}}}{{^-last}},{{/-last}}
|
||||
{{/enumVars}}
|
||||
{{/allowableValues}}
|
||||
}
|
||||
{{/stringEnums}}{{^stringEnums}}
|
||||
/**
|
||||
* @export
|
||||
*/
|
||||
export const {{classname}}{{enumName}} = {
|
||||
{{#allowableValues}}
|
||||
{{#enumVars}}
|
||||
{{{name}}}: {{{value}}}{{^-last}},{{/-last}}
|
||||
{{/enumVars}}
|
||||
{{/allowableValues}}
|
||||
} as const;
|
||||
export type {{classname}}{{enumName}} = typeof {{classname}}{{enumName}}[keyof typeof {{classname}}{{enumName}}];
|
||||
{{/stringEnums}}
|
||||
{{/isEnum}}{{/vars}}{{/hasEnums}}
|
66
modules/openapi-generator/src/main/resources/typescript-playwright/modelOneOf.mustache
vendored
Normal file
66
modules/openapi-generator/src/main/resources/typescript-playwright/modelOneOf.mustache
vendored
Normal file
@ -0,0 +1,66 @@
|
||||
{{#hasImports}}
|
||||
{{#oneOf}}
|
||||
import type { {{{.}}} } from './{{.}}{{importFileExtension}}';
|
||||
import {
|
||||
instanceOf{{{.}}},
|
||||
{{{.}}}FromJSON,
|
||||
{{{.}}}FromJSONTyped,
|
||||
{{{.}}}ToJSON,
|
||||
} from './{{.}}{{importFileExtension}}';
|
||||
{{/oneOf}}
|
||||
|
||||
{{/hasImports}}
|
||||
{{>modelOneOfInterfaces}}
|
||||
|
||||
export function {{classname}}FromJSON(json: any): {{classname}} {
|
||||
return {{classname}}FromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function {{classname}}FromJSONTyped(json: any, ignoreDiscriminator: boolean): {{classname}} {
|
||||
if (json == null) {
|
||||
return json;
|
||||
}
|
||||
{{#discriminator}}
|
||||
switch (json['{{discriminator.propertyBaseName}}']) {
|
||||
{{#discriminator.mappedModels}}
|
||||
case '{{mappingName}}':
|
||||
return Object.assign({}, {{modelName}}FromJSONTyped(json, true), { {{discriminator.propertyName}}: '{{mappingName}}' } as const);
|
||||
{{/discriminator.mappedModels}}
|
||||
default:
|
||||
throw new Error(`No variant of {{classname}} exists with '{{discriminator.propertyName}}=${json['{{discriminator.propertyName}}']}'`);
|
||||
}
|
||||
{{/discriminator}}
|
||||
{{^discriminator}}
|
||||
{{#oneOf}}
|
||||
if (instanceOf{{{.}}}(json)) {
|
||||
return {{{.}}}FromJSONTyped(json, true);
|
||||
}
|
||||
{{/oneOf}}
|
||||
{{/discriminator}}
|
||||
}
|
||||
|
||||
export function {{classname}}ToJSON(value?: {{classname}} | null): any {
|
||||
if (value == null) {
|
||||
return value;
|
||||
}
|
||||
{{#discriminator}}
|
||||
switch (value['{{discriminator.propertyName}}']) {
|
||||
{{#discriminator.mappedModels}}
|
||||
case '{{mappingName}}':
|
||||
return {{modelName}}ToJSON(value);
|
||||
{{/discriminator.mappedModels}}
|
||||
default:
|
||||
throw new Error(`No variant of {{classname}} exists with '{{discriminator.propertyName}}=${value['{{discriminator.propertyName}}']}'`);
|
||||
}
|
||||
{{/discriminator}}
|
||||
|
||||
{{^discriminator}}
|
||||
{{#oneOf}}
|
||||
if (instanceOf{{{.}}}(value)) {
|
||||
return {{{.}}}ToJSON(value as {{{.}}});
|
||||
}
|
||||
{{/oneOf}}
|
||||
|
||||
return {};
|
||||
{{/discriminator}}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
/**
|
||||
* @type {{classname}}
|
||||
* {{#lambda.indented_star_1}}{{{unescapedDescription}}}{{/lambda.indented_star_1}}
|
||||
* @export
|
||||
*/
|
||||
export type {{classname}} = {{#discriminator}}{{#mappedModels}}{ {{discriminator.propertyName}}: '{{mappingName}}' } & {{modelName}}{{^-last}} | {{/-last}}{{/mappedModels}}{{/discriminator}}{{^discriminator}}{{#oneOf}}{{{.}}}{{^-last}} | {{/-last}}{{/oneOf}}{{/discriminator}};
|
29
modules/openapi-generator/src/main/resources/typescript-playwright/models.index.mustache
vendored
Normal file
29
modules/openapi-generator/src/main/resources/typescript-playwright/models.index.mustache
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
{{#models}}
|
||||
{{#model}}
|
||||
{{^withoutRuntimeChecks}}
|
||||
export * from './{{{ classFilename }}}{{importFileExtension}}';
|
||||
{{#useSagaAndRecords}}
|
||||
{{^isEnum}}
|
||||
export * from './{{{ classFilename }}}Record{{importFileExtension}}';
|
||||
{{/isEnum}}
|
||||
{{/useSagaAndRecords}}
|
||||
{{/withoutRuntimeChecks}}
|
||||
{{#withoutRuntimeChecks}}
|
||||
{{#isEnum}}
|
||||
{{>modelEnumInterfaces}}
|
||||
{{/isEnum}}
|
||||
{{^isEnum}}
|
||||
{{#oneOf}}
|
||||
{{#-first}}
|
||||
{{>modelOneOfInterfaces}}
|
||||
{{/-first}}
|
||||
{{/oneOf}}
|
||||
{{^oneOf}}
|
||||
{{>modelGenericInterfaces}}
|
||||
{{/oneOf}}
|
||||
{{/isEnum}}
|
||||
{{/withoutRuntimeChecks}}
|
||||
{{/model}}
|
||||
{{/models}}
|
20
modules/openapi-generator/src/main/resources/typescript-playwright/models.mustache
vendored
Normal file
20
modules/openapi-generator/src/main/resources/typescript-playwright/models.mustache
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
{{>licenseInfo}}
|
||||
{{#models}}
|
||||
{{#model}}
|
||||
{{#isEnum}}
|
||||
{{>modelEnum}}
|
||||
{{/isEnum}}
|
||||
{{^isEnum}}
|
||||
{{#oneOf}}
|
||||
{{#-first}}
|
||||
{{>modelOneOf}}
|
||||
{{/-first}}
|
||||
{{/oneOf}}
|
||||
{{^oneOf}}
|
||||
{{>modelGeneric}}
|
||||
{{/oneOf}}
|
||||
{{/isEnum}}
|
||||
{{/model}}
|
||||
{{/models}}
|
1
modules/openapi-generator/src/main/resources/typescript-playwright/npmignore.mustache
vendored
Normal file
1
modules/openapi-generator/src/main/resources/typescript-playwright/npmignore.mustache
vendored
Normal file
@ -0,0 +1 @@
|
||||
README.md
|
40
modules/openapi-generator/src/main/resources/typescript-playwright/package.mustache
vendored
Normal file
40
modules/openapi-generator/src/main/resources/typescript-playwright/package.mustache
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "{{npmName}}",
|
||||
"version": "{{npmVersion}}",
|
||||
"description": "OpenAPI client for {{npmName}}",
|
||||
"author": "OpenAPI-Generator",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://{{gitHost}}/{{gitUserId}}/{{gitRepoId}}.git"
|
||||
},
|
||||
{{#packageAsSourceOnlyLibrary}}
|
||||
"main": "./index.ts",
|
||||
{{/packageAsSourceOnlyLibrary}}
|
||||
{{^packageAsSourceOnlyLibrary}}
|
||||
"main": "./dist/index.js",
|
||||
"typings": "./dist/index.d.ts",
|
||||
{{#supportsES6}}
|
||||
"module": "./dist/esm/index.js",
|
||||
"sideEffects": false,
|
||||
{{/supportsES6}}
|
||||
"scripts": {
|
||||
"build": "tsc{{#supportsES6}} && tsc -p tsconfig.esm.json{{/supportsES6}}"{{^sagasAndRecords}},
|
||||
"prepare": "npm run build"{{/sagasAndRecords}}
|
||||
},
|
||||
{{/packageAsSourceOnlyLibrary}}
|
||||
"devDependencies": {
|
||||
{{#sagasAndRecords}}
|
||||
"immutable": "^4.0.0-rc.12",
|
||||
"normalizr": "^3.6.1",
|
||||
"redux-saga": "^1.1.3",
|
||||
"redux-ts-simple": "^3.2.0",
|
||||
"reselect": "^4.0.0",
|
||||
{{/sagasAndRecords}}
|
||||
"typescript": "^4.0 || ^5.0"
|
||||
}{{#npmRepository}},{{/npmRepository}}
|
||||
{{#npmRepository}}
|
||||
"publishConfig": {
|
||||
"registry": "{{npmRepository}}"
|
||||
}
|
||||
{{/npmRepository}}
|
||||
}
|
295
modules/openapi-generator/src/main/resources/typescript-playwright/recordGeneric.mustache
vendored
Normal file
295
modules/openapi-generator/src/main/resources/typescript-playwright/recordGeneric.mustache
vendored
Normal file
@ -0,0 +1,295 @@
|
||||
import {ApiRecordUtils, knownRecordFactories{{#returnPassthrough}}, appFromJS, NormalizedRecordEntities{{/returnPassthrough}}} from "../runtimeSagasAndRecords{{importFileExtension}}";
|
||||
import {getApiEntitiesState} from "../ApiEntitiesSelectors{{importFileExtension}}"
|
||||
import {List, Record, RecordOf, Map} from 'immutable';
|
||||
import {Schema, schema, NormalizedSchema} from "normalizr";
|
||||
import {select, call} from "redux-saga/effects";
|
||||
|
||||
import {
|
||||
{{classname}},
|
||||
{{#vars}}
|
||||
{{#isEnum}}
|
||||
{{classname}}{{enumName}},
|
||||
{{/isEnum}}
|
||||
{{/vars}}
|
||||
} from './{{classname}}{{importFileExtension}}';
|
||||
|
||||
{{#imports}}
|
||||
import {
|
||||
{{{.}}},
|
||||
} from './{{{.}}}{{importFileExtension}}';
|
||||
{{/imports}}
|
||||
|
||||
{{#modelImports}}
|
||||
import {
|
||||
{{{.}}}Record,
|
||||
{{#lambda.camelcase}}{{.}}{{/lambda.camelcase}}RecordUtils
|
||||
} from './{{{.}}}Record{{importFileExtension}}';
|
||||
{{/modelImports}}
|
||||
|
||||
export const {{classname}}RecordProps = {
|
||||
recType: "{{classname}}ApiRecord" as "{{classname}}ApiRecord",
|
||||
{{#vars}}
|
||||
{{#isArray}}
|
||||
{{#items.isModel}}
|
||||
{{#keepAsJSObject}}
|
||||
{{name}}: {{#required}}new {{{dataType}}}(){{/required}}{{^required}}null as {{{dataType}}} | null{{/required}},
|
||||
{{/keepAsJSObject}}
|
||||
{{^keepAsJSObject}}
|
||||
{{name}}: ({{{items.dataType}}}Record(), {{#required}}{{{defaultValue}}}{{/required}}{{^required}}null as {{{dataTypeAlternate}}} | null{{/required}}),
|
||||
{{/keepAsJSObject}}
|
||||
{{/items.isModel}}
|
||||
{{^items.isModel}}
|
||||
{{name}}: {{#required}}{{{defaultValue}}}{{/required}}{{^required}}null as {{{dataTypeAlternate}}} | null{{/required}},
|
||||
{{/items.isModel}}
|
||||
{{/isArray}}
|
||||
{{#isModel}}
|
||||
{{#keepAsJSObject}}
|
||||
{{name}}: {{#required}}{} as any as {{{dataType}}}{{/required}}{{^required}}null as {{{dataType}}} | null{{/required}},
|
||||
{{/keepAsJSObject}}
|
||||
{{^keepAsJSObject}}
|
||||
{{name}}: {{#required}}{{{defaultValue}}}{{/required}}{{^required}}({{{defaultValue}}}, null as {{{dataTypeAlternate}}} | null){{/required}},
|
||||
{{/keepAsJSObject}}
|
||||
{{/isModel}}
|
||||
{{^isArray}}
|
||||
{{^isModel}}
|
||||
{{name}}: {{#required}}{{{defaultValue}}}{{/required}}{{^required}}null as {{{dataTypeAlternate}}} | null{{/required}},
|
||||
{{/isModel}}
|
||||
{{/isArray}}
|
||||
{{/vars}}
|
||||
};
|
||||
|
||||
export type {{classname}}RecordPropsType = typeof {{classname}}RecordProps;
|
||||
export const {{classname}}Record = Record({{classname}}RecordProps, {{classname}}RecordProps.recType);
|
||||
export type {{classname}}Record = RecordOf<{{classname}}RecordPropsType>;
|
||||
|
||||
knownRecordFactories.set({{classname}}RecordProps.recType, {{classname}}Record);
|
||||
|
||||
{{#isEntity}}
|
||||
export const {{classname}}RecordEntityProps = {
|
||||
...{{classname}}RecordProps,
|
||||
recType: "{{classname}}ApiRecordEntity" as "{{classname}}ApiRecordEntity",
|
||||
{{#vars}}
|
||||
{{#isEntity}}
|
||||
{{^keepAsJSObject}}
|
||||
{{name}}: {{#required}}"-1"{{/required}}{{^required}}null as string | null{{/required}},
|
||||
{{/keepAsJSObject}}
|
||||
{{/isEntity}}
|
||||
{{#isArray}}
|
||||
{{#items.isEntity}}
|
||||
{{^keepAsJSObject}}
|
||||
{{name}}: {{#required}}List<string>(){{/required}}{{^required}}null as List<string> | null{{/required}},
|
||||
{{/keepAsJSObject}}
|
||||
{{/items.isEntity}}
|
||||
{{/isArray}}
|
||||
{{/vars}}
|
||||
};
|
||||
|
||||
export type {{classname}}RecordEntityPropsType = typeof {{classname}}RecordEntityProps;
|
||||
export const {{classname}}RecordEntity = Record({{classname}}RecordEntityProps, {{classname}}RecordEntityProps.recType);
|
||||
export type {{classname}}RecordEntity = RecordOf<{{classname}}RecordEntityPropsType>;
|
||||
|
||||
knownRecordFactories.set({{classname}}RecordEntityProps.recType, {{classname}}RecordEntity);
|
||||
{{/isEntity}}
|
||||
|
||||
class {{classname}}RecordUtils extends ApiRecordUtils<{{classname}}, {{classname}}Record> {
|
||||
public normalize(apiObject: {{classname}}, asEntity?: boolean): {{classname}} {
|
||||
(apiObject as any).recType = {{#isEntity}}asEntity ? {{classname}}RecordEntityProps.recType : {{/isEntity}}{{classname}}RecordProps.recType;
|
||||
{{#vars}}
|
||||
{{#isUniqueId}}
|
||||
{{#isArray}}
|
||||
{{#items.isArray}}
|
||||
{{^required}}if (apiObject['{{name}}']) { {{/required}}(apiObject as any)['{{name}}'] = apiObject['{{name}}'].map(item => item.map(item2 => item2?.toString()));{{^required}} } {{/required}}
|
||||
{{/items.isArray}}
|
||||
{{^items.isArray}}
|
||||
{{^required}}if (apiObject['{{name}}']) { {{/required}}(apiObject as any)['{{name}}'] = apiObject['{{name}}'].map(item => item?.toString());{{^required}} } {{/required}}
|
||||
{{/items.isArray}}
|
||||
{{/isArray}}
|
||||
{{^isArray}}
|
||||
{{^required}}if (apiObject['{{name}}']) { {{/required}}(apiObject as any)['{{name}}'] = apiObject['{{name}}'].toString();{{^required}} } {{/required}}
|
||||
{{/isArray}}
|
||||
{{/isUniqueId}}
|
||||
{{^keepAsJSObject}}
|
||||
{{#isModel}}
|
||||
{{^required}}if (apiObject['{{name}}']) { {{/required}}{{#lambda.camelcase}}{{{dataTypeAlternate}}}{{/lambda.camelcase}}Utils.normalize(apiObject['{{name}}']);{{^required}} } {{/required}}
|
||||
{{/isModel}}
|
||||
{{#isArray}}
|
||||
{{#items.isModel}}
|
||||
{{^required}}if (apiObject['{{name}}']) { {{/required}}{{#lambda.camelcase}}{{items.dataType}}{{/lambda.camelcase}}RecordUtils.normalizeArray(apiObject['{{name}}']);{{^required}} } {{/required}}
|
||||
{{/items.isModel}}
|
||||
{{/isArray}}
|
||||
{{/keepAsJSObject}}
|
||||
{{/vars}}
|
||||
return apiObject;
|
||||
}
|
||||
{{#isEntity}}
|
||||
|
||||
public getSchema(): Schema {
|
||||
return new schema.Entity("{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}", {
|
||||
{{#vars}}
|
||||
{{#isEntity}}
|
||||
{{^keepAsJSObject}}
|
||||
{{name}}: {{#lambda.camelcase}}{{{dataTypeAlternate}}}{{/lambda.camelcase}}Utils.getSchema(),
|
||||
{{/keepAsJSObject}}
|
||||
{{/isEntity}}
|
||||
{{#isArray}}
|
||||
{{#items.isEntity}}
|
||||
{{^keepAsJSObject}}
|
||||
{{name}}: [{{#lambda.camelcase}}{{items.dataType}}{{/lambda.camelcase}}RecordUtils.getSchema()],
|
||||
{{/keepAsJSObject}}
|
||||
{{/items.isEntity}}
|
||||
{{/isArray}}
|
||||
{{/vars}}
|
||||
});
|
||||
}
|
||||
|
||||
public *toInlined(entityId?: string | null) {
|
||||
if (!entityId) {return undefined; }
|
||||
// @ts-ignore
|
||||
const entity = yield select(apiEntity{{classname}}Selector, {id: entityId});
|
||||
if (!entity) {return undefined; }
|
||||
|
||||
const {
|
||||
recType,
|
||||
{{#vars}}
|
||||
{{#isEntity}}
|
||||
{{^keepAsJSObject}}
|
||||
{{name}}: {{name}}_original,
|
||||
{{/keepAsJSObject}}
|
||||
{{/isEntity}}
|
||||
{{#isArray}}
|
||||
{{#items.isEntity}}
|
||||
{{^keepAsJSObject}}
|
||||
{{name}}: {{name}}_original,
|
||||
{{/keepAsJSObject}}
|
||||
{{/items.isEntity}}
|
||||
{{/isArray}}
|
||||
{{/vars}}
|
||||
...unchangedProperties
|
||||
} = entity;
|
||||
|
||||
const entityProperties = {
|
||||
{{#vars}}
|
||||
{{#isEntity}}
|
||||
{{^keepAsJSObject}}
|
||||
// @ts-ignore
|
||||
{{name}}: {{^required}}entity['{{name}}'] ? {{/required}}yield call({{#lambda.camelcase}}{{{dataTypeAlternate}}}{{/lambda.camelcase}}Utils.toInlined, entity['{{name}}']){{^required}} : null{{/required}},
|
||||
{{/keepAsJSObject}}
|
||||
{{/isEntity}}
|
||||
{{#isArray}}
|
||||
{{#items.isEntity}}
|
||||
{{^keepAsJSObject}}
|
||||
// @ts-ignore
|
||||
{{name}}: {{^required}}entity['{{name}}'] ? {{/required}}yield call({{#lambda.camelcase}}{{items.dataType}}{{/lambda.camelcase}}RecordUtils.toInlinedArray, entity['{{name}}']){{^required}} : null{{/required}},
|
||||
{{/keepAsJSObject}}
|
||||
{{/items.isEntity}}
|
||||
{{/isArray}}
|
||||
{{/vars}}
|
||||
}
|
||||
|
||||
return {{classname}}Record({
|
||||
...unchangedProperties,
|
||||
...entityProperties
|
||||
});
|
||||
}
|
||||
|
||||
public *toInlinedArray(entityIds: List<string> | null) {
|
||||
if (!entityIds) {return null; }
|
||||
let entities = List<{{classname}}Record>();
|
||||
for (let entityIndex = 0; entityIndex < entityIds.count(); entityIndex++) {
|
||||
// @ts-ignore
|
||||
const entity = yield call(this.toInlined, entityIds.get(entityIndex));
|
||||
if (entity) {
|
||||
entities.push(entity);
|
||||
}
|
||||
}
|
||||
return entities;
|
||||
}
|
||||
{{/isEntity}}
|
||||
|
||||
public toApi(record: {{classname}}Record): {{classname}} {
|
||||
const apiObject = super.toApi(record);
|
||||
{{#vars}}
|
||||
{{#isUniqueId}}
|
||||
{{#isArray}}
|
||||
{{#items.isArray}}
|
||||
{{^required}}if (record['{{name}}']) { {{/required}}apiObject['{{name}}'] = {{#isArray}}record['{{name}}'].map(item => item.toArray().map(item2 => (item2 ? parseFloat(item2) : null) as number)).toArray(){{/isArray}};{{^required}} } {{/required}}
|
||||
{{/items.isArray}}
|
||||
{{^items.isArray}}
|
||||
{{^required}}if (record['{{name}}']) { {{/required}}apiObject['{{name}}'] = {{#isArray}}record['{{name}}'].map(item => (item ? parseFloat(item) : null) as number).toArray(){{/isArray}};{{^required}} } {{/required}}
|
||||
{{/items.isArray}}
|
||||
{{/isArray}}
|
||||
{{^isArray}}
|
||||
{{^required}}if (record['{{name}}']) { {{/required}}apiObject['{{name}}'] = {{^isArray}}parseFloat(record['{{name}}']){{/isArray}};{{^required}} } {{/required}}
|
||||
{{/isArray}}
|
||||
{{/isUniqueId}}
|
||||
{{^keepAsJSObject}}
|
||||
{{#isModel}}
|
||||
{{^required}}if (record['{{name}}']) { {{/required}}apiObject['{{name}}'] = {{#lambda.camelcase}}{{{dataTypeAlternate}}}{{/lambda.camelcase}}Utils.toApi(record['{{name}}']);{{^required}} } {{/required}}
|
||||
{{/isModel}}
|
||||
{{#isArray}}
|
||||
{{#items.isModel}}
|
||||
{{^required}}if (record['{{name}}']) { {{/required}}apiObject['{{name}}'] = {{#lambda.camelcase}}{{items.dataType}}{{/lambda.camelcase}}RecordUtils.toApiArray(record['{{name}}']);{{^required}} } {{/required}}
|
||||
{{/items.isModel}}
|
||||
{{/isArray}}
|
||||
{{/keepAsJSObject}}
|
||||
{{/vars}}
|
||||
return apiObject;
|
||||
}
|
||||
{{#returnPassthrough}}
|
||||
{{#vars.1}}
|
||||
|
||||
public fromApiPassthrough(apiObject: {{classname}}): {{{dataTypeAlternate}}} {
|
||||
{{#isModel}}
|
||||
if (!apiObject.{{{returnPassthrough}}}) {return {{{defaultValue}}}; }
|
||||
const normalizedApiObject = {{#lambda.camelcase}}{{{dataTypeAlternate}}}{{/lambda.camelcase}}Utils.normalize(apiObject.{{{returnPassthrough}}});
|
||||
return appFromJS(normalizedApiObject);
|
||||
{{/isModel}}
|
||||
{{#isArray}}
|
||||
{{#items.isModel}}
|
||||
if (!apiObject.{{{returnPassthrough}}}) {return {{{defaultValue}}}; }
|
||||
const normalizedApiObject = {{#lambda.camelcase}}{{items.dataType}}{{/lambda.camelcase}}RecordUtils.normalizeArray(apiObject.{{{returnPassthrough}}});
|
||||
return appFromJS(normalizedApiObject);
|
||||
{{/items.isModel}}
|
||||
{{^items.isModel}}
|
||||
return appFromJS(apiObject.{{{returnPassthrough}}});
|
||||
{{/items.isModel}}
|
||||
{{/isArray}}
|
||||
{{^isModel}}
|
||||
{{^isArray}}
|
||||
return apiObject.{{{returnPassthrough}}}!;
|
||||
{{/isArray}}
|
||||
{{/isModel}}
|
||||
}
|
||||
|
||||
public fromApiPassthroughAsEntities(apiObject: {{classname}}): NormalizedRecordEntities {
|
||||
{{#isEntity}}
|
||||
if (!apiObject.{{{returnPassthrough}}}) {return {entities: {}, result: List<string>()}; }
|
||||
return ApiRecordUtils.toNormalizedRecordEntities({{#lambda.camelcase}}{{{dataTypeAlternate}}}{{/lambda.camelcase}}Utils.normalizeArrayAsEntities([apiObject.{{{returnPassthrough}}}]), true);
|
||||
{{/isEntity}}
|
||||
{{#isArray}}
|
||||
{{#items.isEntity}}
|
||||
if (!apiObject.{{{returnPassthrough}}}) {return {entities: {}, result: List<string>()}; }
|
||||
return ApiRecordUtils.toNormalizedRecordEntities({{#lambda.camelcase}}{{items.dataType}}{{/lambda.camelcase}}RecordUtils.normalizeArrayAsEntities(apiObject.{{{returnPassthrough}}}), true);
|
||||
{{/items.isEntity}}
|
||||
{{^items.isEntity}}
|
||||
console.log("entities revival not supported on this response");
|
||||
return {entities: {}, result: List<string>()};
|
||||
{{/items.isEntity}}
|
||||
{{/isArray}}
|
||||
{{^isEntity}}
|
||||
{{^isArray}}
|
||||
console.log("entities revival not supported on this response");
|
||||
return {entities: {}, result: List<string>()};
|
||||
{{/isArray}}
|
||||
{{/isEntity}}
|
||||
}
|
||||
{{/vars.1}}
|
||||
{{/returnPassthrough}}
|
||||
}
|
||||
|
||||
export const {{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}RecordUtils = new {{classname}}RecordUtils();
|
||||
|
||||
{{#isEntity}}
|
||||
export const apiEntities{{classname}}Selector = (state: any) => getApiEntitiesState(state).{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}} as Map<string, {{classname}}RecordEntity>;
|
||||
export const apiEntity{{classname}}Selector = (state: any, {id}: {id?: string | null}) => id ? apiEntities{{classname}}Selector(state).get(id) : undefined;
|
||||
{{/isEntity}}
|
15
modules/openapi-generator/src/main/resources/typescript-playwright/records.mustache
vendored
Normal file
15
modules/openapi-generator/src/main/resources/typescript-playwright/records.mustache
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
{{#models}}
|
||||
{{#model}}
|
||||
{{#isEnum}}
|
||||
// This file is not needed and was generated only because of how codegen is built... Enums do not need to be converted to Records and can be used directly.
|
||||
{{/isEnum}}
|
||||
{{^isEnum}}
|
||||
{{^oneOf}}
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
{{>licenseInfo}}
|
||||
{{>recordGeneric}}
|
||||
{{/oneOf}}
|
||||
{{/isEnum}}
|
||||
{{/model}}
|
||||
{{/models}}
|
417
modules/openapi-generator/src/main/resources/typescript-playwright/runtime.mustache
vendored
Normal file
417
modules/openapi-generator/src/main/resources/typescript-playwright/runtime.mustache
vendored
Normal file
@ -0,0 +1,417 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
{{>licenseInfo}}
|
||||
|
||||
export const BASE_PATH = "{{{basePath}}}".replace(/\/+$/, "");
|
||||
|
||||
export interface ConfigurationParameters {
|
||||
basePath?: string; // override base path
|
||||
fetchApi?: FetchAPI; // override for fetch implementation
|
||||
middleware?: Middleware[]; // middleware to apply before/after fetch requests
|
||||
queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings
|
||||
username?: string; // parameter for basic security
|
||||
password?: string; // parameter for basic security
|
||||
apiKey?: string | Promise<string> | ((name: string) => string | Promise<string>); // parameter for apiKey security
|
||||
accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security
|
||||
headers?: HTTPHeaders; //header params we want to use on every request
|
||||
credentials?: RequestCredentials; //value for the credentials param we want to use on each request
|
||||
}
|
||||
|
||||
export class Configuration {
|
||||
constructor(private configuration: ConfigurationParameters = {}) {}
|
||||
|
||||
set config(configuration: Configuration) {
|
||||
this.configuration = configuration;
|
||||
}
|
||||
|
||||
get basePath(): string {
|
||||
return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;
|
||||
}
|
||||
|
||||
get fetchApi(): FetchAPI | undefined {
|
||||
return this.configuration.fetchApi;
|
||||
}
|
||||
|
||||
get middleware(): Middleware[] {
|
||||
return this.configuration.middleware || [];
|
||||
}
|
||||
|
||||
get queryParamsStringify(): (params: HTTPQuery) => string {
|
||||
return this.configuration.queryParamsStringify || querystring;
|
||||
}
|
||||
|
||||
get username(): string | undefined {
|
||||
return this.configuration.username;
|
||||
}
|
||||
|
||||
get password(): string | undefined {
|
||||
return this.configuration.password;
|
||||
}
|
||||
|
||||
get apiKey(): ((name: string) => string | Promise<string>) | undefined {
|
||||
const apiKey = this.configuration.apiKey;
|
||||
if (apiKey) {
|
||||
return typeof apiKey === 'function' ? apiKey : () => apiKey;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined {
|
||||
const accessToken = this.configuration.accessToken;
|
||||
if (accessToken) {
|
||||
return typeof accessToken === 'function' ? accessToken : async () => accessToken;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
get headers(): HTTPHeaders | undefined {
|
||||
return this.configuration.headers;
|
||||
}
|
||||
|
||||
get credentials(): RequestCredentials | undefined {
|
||||
return this.configuration.credentials;
|
||||
}
|
||||
}
|
||||
|
||||
export const DefaultConfig = new Configuration();
|
||||
|
||||
/**
|
||||
* This is the base class for all generated API classes.
|
||||
*/
|
||||
export class BaseAPI {
|
||||
|
||||
private static readonly jsonRegex = new RegExp('^(:?application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(:?;.*)?$', 'i');
|
||||
private middleware: Middleware[];
|
||||
|
||||
constructor(protected configuration = DefaultConfig) {
|
||||
this.middleware = configuration.middleware;
|
||||
}
|
||||
|
||||
withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {
|
||||
const next = this.clone<T>();
|
||||
next.middleware = next.middleware.concat(...middlewares);
|
||||
return next;
|
||||
}
|
||||
|
||||
withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {
|
||||
const middlewares = preMiddlewares.map((pre) => ({ pre }));
|
||||
return this.withMiddleware<T>(...middlewares);
|
||||
}
|
||||
|
||||
withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {
|
||||
const middlewares = postMiddlewares.map((post) => ({ post }));
|
||||
return this.withMiddleware<T>(...middlewares);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the given MIME is a JSON MIME.
|
||||
* JSON MIME examples:
|
||||
* application/json
|
||||
* application/json; charset=UTF8
|
||||
* APPLICATION/JSON
|
||||
* application/vnd.company+json
|
||||
* @param mime - MIME (Multipurpose Internet Mail Extensions)
|
||||
* @return True if the given MIME is JSON, false otherwise.
|
||||
*/
|
||||
protected isJsonMime(mime: string | null | undefined): boolean {
|
||||
if (!mime) {
|
||||
return false;
|
||||
}
|
||||
return BaseAPI.jsonRegex.test(mime);
|
||||
}
|
||||
|
||||
protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response> {
|
||||
const { url, init } = await this.createFetchParams(context, initOverrides);
|
||||
const response = await this.fetchApi(url, init);
|
||||
if (response && (response.status >= 200 && response.status < 300)) {
|
||||
return response;
|
||||
}
|
||||
throw new ResponseError(response, 'Response returned an error code');
|
||||
}
|
||||
|
||||
private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {
|
||||
let url = this.configuration.basePath + context.path;
|
||||
if (context.query !== undefined && Object.keys(context.query).length !== 0) {
|
||||
// only add the querystring to the URL if there are query parameters.
|
||||
// this is done to avoid urls ending with a "?" character which buggy webservers
|
||||
// do not handle correctly sometimes.
|
||||
url += '?' + this.configuration.queryParamsStringify(context.query);
|
||||
}
|
||||
|
||||
const headers = Object.assign({}, this.configuration.headers, context.headers);
|
||||
Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});
|
||||
|
||||
const initOverrideFn =
|
||||
typeof initOverrides === "function"
|
||||
? initOverrides
|
||||
: async () => initOverrides;
|
||||
|
||||
const initParams = {
|
||||
method: context.method,
|
||||
headers,
|
||||
body: context.body,
|
||||
credentials: this.configuration.credentials,
|
||||
};
|
||||
|
||||
const overriddenInit: RequestInit = {
|
||||
...initParams,
|
||||
...(await initOverrideFn({
|
||||
init: initParams,
|
||||
context,
|
||||
}))
|
||||
};
|
||||
|
||||
let body: any;
|
||||
if (isFormData(overriddenInit.body)
|
||||
|| (overriddenInit.body instanceof URLSearchParams)
|
||||
|| isBlob(overriddenInit.body)) {
|
||||
body = overriddenInit.body;
|
||||
} else if (this.isJsonMime(headers['Content-Type'])) {
|
||||
body = JSON.stringify(overriddenInit.body);
|
||||
} else {
|
||||
body = overriddenInit.body;
|
||||
}
|
||||
|
||||
const init: RequestInit = {
|
||||
...overriddenInit,
|
||||
body
|
||||
};
|
||||
|
||||
return { url, init };
|
||||
}
|
||||
|
||||
private fetchApi = async (url: string, init: RequestInit) => {
|
||||
let fetchParams = { url, init };
|
||||
for (const middleware of this.middleware) {
|
||||
if (middleware.pre) {
|
||||
fetchParams = await middleware.pre({
|
||||
fetch: this.fetchApi,
|
||||
...fetchParams,
|
||||
}) || fetchParams;
|
||||
}
|
||||
}
|
||||
let response: Response | undefined = undefined;
|
||||
try {
|
||||
response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);
|
||||
} catch (e) {
|
||||
for (const middleware of this.middleware) {
|
||||
if (middleware.onError) {
|
||||
response = await middleware.onError({
|
||||
fetch: this.fetchApi,
|
||||
url: fetchParams.url,
|
||||
init: fetchParams.init,
|
||||
error: e,
|
||||
response: response ? response.clone() : undefined,
|
||||
}) || response;
|
||||
}
|
||||
}
|
||||
if (response === undefined) {
|
||||
if (e instanceof Error) {
|
||||
throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');
|
||||
} else {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (const middleware of this.middleware) {
|
||||
if (middleware.post) {
|
||||
response = await middleware.post({
|
||||
fetch: this.fetchApi,
|
||||
url: fetchParams.url,
|
||||
init: fetchParams.init,
|
||||
response: response.clone(),
|
||||
}) || response;
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a shallow clone of `this` by constructing a new instance
|
||||
* and then shallow cloning data members.
|
||||
*/
|
||||
private clone<T extends BaseAPI>(this: T): T {
|
||||
const constructor = this.constructor as any;
|
||||
const next = new constructor(this.configuration);
|
||||
next.middleware = this.middleware.slice();
|
||||
return next;
|
||||
}
|
||||
};
|
||||
|
||||
function isBlob(value: any): value is Blob {
|
||||
return typeof Blob !== 'undefined' && value instanceof Blob;
|
||||
}
|
||||
|
||||
function isFormData(value: any): value is FormData {
|
||||
return typeof FormData !== "undefined" && value instanceof FormData;
|
||||
}
|
||||
|
||||
export class ResponseError extends Error {
|
||||
override name: "ResponseError" = "ResponseError";
|
||||
constructor(public response: Response, msg?: string) {
|
||||
super(msg);
|
||||
}
|
||||
}
|
||||
|
||||
export class FetchError extends Error {
|
||||
override name: "FetchError" = "FetchError";
|
||||
constructor(public cause: Error, msg?: string) {
|
||||
super(msg);
|
||||
}
|
||||
}
|
||||
|
||||
export class RequiredError extends Error {
|
||||
override name: "RequiredError" = "RequiredError";
|
||||
constructor(public field: string, msg?: string) {
|
||||
super(msg);
|
||||
}
|
||||
}
|
||||
|
||||
export const COLLECTION_FORMATS = {
|
||||
csv: ",",
|
||||
ssv: " ",
|
||||
tsv: "\t",
|
||||
pipes: "|",
|
||||
};
|
||||
|
||||
export type FetchAPI = WindowOrWorkerGlobalScope['fetch'];
|
||||
|
||||
export type Json = any;
|
||||
export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';
|
||||
export type HTTPHeaders = { [key: string]: string };
|
||||
export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery };
|
||||
export type HTTPBody = Json | FormData | URLSearchParams;
|
||||
export type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };
|
||||
export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
|
||||
|
||||
export type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise<RequestInit>
|
||||
|
||||
export interface FetchParams {
|
||||
url: string;
|
||||
init: RequestInit;
|
||||
}
|
||||
|
||||
export interface RequestOpts {
|
||||
path: string;
|
||||
method: HTTPMethod;
|
||||
headers: HTTPHeaders;
|
||||
query?: HTTPQuery;
|
||||
body?: HTTPBody;
|
||||
}
|
||||
|
||||
export function querystring(params: HTTPQuery, prefix: string = ''): string {
|
||||
return Object.keys(params)
|
||||
.map(key => querystringSingleKey(key, params[key], prefix))
|
||||
.filter(part => part.length > 0)
|
||||
.join('&');
|
||||
}
|
||||
|
||||
function querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery, keyPrefix: string = ''): string {
|
||||
const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);
|
||||
if (value instanceof Array) {
|
||||
const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))
|
||||
.join(`&${encodeURIComponent(fullKey)}=`);
|
||||
return `${encodeURIComponent(fullKey)}=${multiValue}`;
|
||||
}
|
||||
if (value instanceof Set) {
|
||||
const valueAsArray = Array.from(value);
|
||||
return querystringSingleKey(key, valueAsArray, keyPrefix);
|
||||
}
|
||||
if (value instanceof Date) {
|
||||
return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;
|
||||
}
|
||||
if (value instanceof Object) {
|
||||
return querystring(value as HTTPQuery, fullKey);
|
||||
}
|
||||
return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;
|
||||
}
|
||||
|
||||
{{^withoutRuntimeChecks}}
|
||||
export function mapValues(data: any, fn: (item: any) => any) {
|
||||
return Object.keys(data).reduce(
|
||||
(acc, key) => ({ ...acc, [key]: fn(data[key]) }),
|
||||
{}
|
||||
);
|
||||
}
|
||||
{{/withoutRuntimeChecks}}
|
||||
|
||||
export function canConsumeForm(consumes: Consume[]): boolean {
|
||||
for (const consume of consumes) {
|
||||
if ('multipart/form-data' === consume.contentType) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
export interface Consume {
|
||||
contentType: string;
|
||||
}
|
||||
|
||||
export interface RequestContext {
|
||||
fetch: FetchAPI;
|
||||
url: string;
|
||||
init: RequestInit;
|
||||
}
|
||||
|
||||
export interface ResponseContext {
|
||||
fetch: FetchAPI;
|
||||
url: string;
|
||||
init: RequestInit;
|
||||
response: Response;
|
||||
}
|
||||
|
||||
export interface ErrorContext {
|
||||
fetch: FetchAPI;
|
||||
url: string;
|
||||
init: RequestInit;
|
||||
error: unknown;
|
||||
response?: Response;
|
||||
}
|
||||
|
||||
export interface Middleware {
|
||||
pre?(context: RequestContext): Promise<FetchParams | void>;
|
||||
post?(context: ResponseContext): Promise<Response | void>;
|
||||
onError?(context: ErrorContext): Promise<Response | void>;
|
||||
}
|
||||
|
||||
export interface ApiResponse<T> {
|
||||
raw: Response;
|
||||
value(): Promise<T>;
|
||||
}
|
||||
|
||||
export interface ResponseTransformer<T> {
|
||||
(json: any): T;
|
||||
}
|
||||
|
||||
export class JSONApiResponse<T> {
|
||||
constructor(public raw: Response, private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue) {}
|
||||
|
||||
async value(): Promise<T> {
|
||||
return this.transformer(await this.raw.json());
|
||||
}
|
||||
}
|
||||
|
||||
export class VoidApiResponse {
|
||||
constructor(public raw: Response) {}
|
||||
|
||||
async value(): Promise<void> {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
export class BlobApiResponse {
|
||||
constructor(public raw: Response) {}
|
||||
|
||||
async value(): Promise<Blob> {
|
||||
return await this.raw.blob();
|
||||
};
|
||||
}
|
||||
|
||||
export class TextApiResponse {
|
||||
constructor(public raw: Response) {}
|
||||
|
||||
async value(): Promise<string> {
|
||||
return await this.raw.text();
|
||||
};
|
||||
}
|
120
modules/openapi-generator/src/main/resources/typescript-playwright/runtimeSagasAndRecords.mustache
vendored
Normal file
120
modules/openapi-generator/src/main/resources/typescript-playwright/runtimeSagasAndRecords.mustache
vendored
Normal file
@ -0,0 +1,120 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
|
||||
import {fromJS as originalFromJS, isIndexed, List, Map as ImmMap, RecordOf} from 'immutable';
|
||||
import {normalize, NormalizedSchema, schema, Schema} from "normalizr";
|
||||
import {ActionDefinition, createAction} from "redux-ts-simple";
|
||||
|
||||
export const knownRecordFactories = new Map<string, any>();
|
||||
export const knownIndexedSetByKey: (string | number)[] = [];
|
||||
|
||||
export function appFromJS(any: any): any {
|
||||
return originalFromJS(any, (key, value) => {
|
||||
if (isIndexed(value)) {
|
||||
return knownIndexedSetByKey.indexOf(key) !== -1 ? value.toSet() : value.toList();
|
||||
} // we're reviving an array -> it's a List
|
||||
const MatchingType = knownRecordFactories.get(value.get('recType')) as { new(input?: any): any }; // check if we know a Record with this type
|
||||
if (MatchingType) {
|
||||
return new MatchingType(value);
|
||||
}
|
||||
return value.toMap(); // no matching Record type found -> it's a plain old Map
|
||||
});
|
||||
}
|
||||
|
||||
export type NormalizedRecordEntity = NormalizedSchema<{ [key: string]: Map<string, RecordOf<any>> }, string>;
|
||||
export type NormalizedRecordEntities = NormalizedSchema<{ [key: string]: Map<string, RecordOf<any>> }, List<string>>;
|
||||
|
||||
export abstract class ApiRecordUtils<TAPI, TREC extends RecordOf<any>> {
|
||||
public abstract normalize(apiObject: TAPI, asEntity?: boolean): any;
|
||||
|
||||
public getSchema(): Schema {
|
||||
console.log("Entity mode not supported on this record.");
|
||||
return new schema.Entity("entityNotSupported");
|
||||
}
|
||||
|
||||
public normalizeArray(apiObjectArray: TAPI[], asEntity?: boolean): TAPI[] {
|
||||
apiObjectArray.forEach(apiObject => this.normalize(apiObject, asEntity));
|
||||
return apiObjectArray;
|
||||
}
|
||||
|
||||
public normalizeAsEntities(apiObject: TAPI): NormalizedSchema<any, any> {
|
||||
const normalized = this.normalize(apiObject, true);
|
||||
return normalize(normalized, this.getSchema());
|
||||
}
|
||||
|
||||
public normalizeArrayAsEntities(apiObject: TAPI[]): NormalizedSchema<any, any> {
|
||||
const normalized = this.normalizeArray(apiObject, true);
|
||||
return normalize(normalized, new schema.Array(this.getSchema()));
|
||||
}
|
||||
|
||||
public fromApi(apiObject: TAPI): TREC {
|
||||
return appFromJS(this.normalize(apiObject));
|
||||
}
|
||||
|
||||
public fromApiArray(apiObjectArray: TAPI[]): List<TREC> {
|
||||
this.normalizeArray(apiObjectArray);
|
||||
return appFromJS(apiObjectArray);
|
||||
}
|
||||
|
||||
public fromApiAsEntities(apiObject: TAPI): NormalizedRecordEntity {
|
||||
return ApiRecordUtils.toNormalizedRecordEntities(this.normalizeAsEntities(apiObject), false);
|
||||
}
|
||||
|
||||
public fromApiArrayAsEntities(apiObject: TAPI[]): NormalizedRecordEntities {
|
||||
return ApiRecordUtils.toNormalizedRecordEntities(this.normalizeArrayAsEntities(apiObject), true);
|
||||
}
|
||||
|
||||
public toApi(record: TREC): TAPI {
|
||||
const apiObject = record.toJS();
|
||||
delete apiObject.recType;
|
||||
return apiObject;
|
||||
}
|
||||
|
||||
public toApiArray(records: List<TREC>): TAPI[] {
|
||||
return records.map(record => this.toApi(record)).toArray();
|
||||
}
|
||||
|
||||
public static toNormalizedRecordEntities(normalizedAsEntities: any, forArray: boolean) {
|
||||
const entities = normalizedAsEntities.entities;
|
||||
for (const entityKey of Object.keys(entities)) {
|
||||
entities[entityKey] = appFromJS(entities[entityKey]);
|
||||
}
|
||||
normalizedAsEntities.result = appFromJS(normalizedAsEntities.result || (forArray ? "" : []));
|
||||
return normalizedAsEntities;
|
||||
}
|
||||
}
|
||||
|
||||
export const allApiActionFailures: SagaActionDefinition<any>[] = [];
|
||||
|
||||
export interface BaseEntitySupportPayloadApiAction {
|
||||
toInlined?: boolean;
|
||||
toEntities?: boolean;
|
||||
markErrorsAsHandled?: boolean;
|
||||
}
|
||||
|
||||
export interface BasePayloadApiAction {
|
||||
markErrorsAsHandled?: boolean;
|
||||
}
|
||||
|
||||
export interface SagaActionDefinition<TPayload> extends ActionDefinition<TPayload> {
|
||||
toString: () => string;
|
||||
}
|
||||
|
||||
export function createSagaAction<TPayload>(type: string, options?: { doNotAutoRegisterFailure?: boolean, namespace?: string }): SagaActionDefinition<TPayload> {
|
||||
const {doNotAutoRegisterFailure, namespace} = options || {} as any;
|
||||
let actionDefinition = createAction<TPayload>(namespace ? `${namespace}-${type}` : type);
|
||||
(actionDefinition as any).toString = () => actionDefinition.type;
|
||||
if (type.endsWith("Failure") && !doNotAutoRegisterFailure) {
|
||||
allApiActionFailures.push(actionDefinition);
|
||||
}
|
||||
return actionDefinition;
|
||||
}
|
||||
|
||||
export let apiCall: <Ctx, Fn extends (this: Ctx, ...args: any[]) => any>(context: Ctx, fn: Fn, ...args: Parameters<Fn>) => Generator<any, any, any>;
|
||||
|
||||
export function setApiCall(apiCallFc: <Ctx, Fn extends (this: Ctx, ...args: any[]) => any>(context: Ctx, fn: Fn, ...args: Parameters<Fn>) => Generator<any, any, any>) {
|
||||
console.log("init apiCall");
|
||||
apiCall = apiCallFc;
|
||||
}
|
||||
|
||||
export const normalizedEntities = createSagaAction<NormalizedRecordEntities>("normalizedEntities");
|
28
modules/openapi-generator/src/main/resources/typescript-playwright/sagaApiManager.mustache
vendored
Normal file
28
modules/openapi-generator/src/main/resources/typescript-playwright/sagaApiManager.mustache
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
import {
|
||||
Configuration,
|
||||
ConfigurationParameters,
|
||||
} from "../index{{importFileExtension}}";
|
||||
|
||||
import {
|
||||
{{#apiInfo}}
|
||||
{{#apis}}
|
||||
{{classFilename}},
|
||||
{{/apis}}
|
||||
{{/apiInfo}}
|
||||
} from "./index{{importFileExtension}}";
|
||||
|
||||
export class Api {
|
||||
{{#apiInfo}}
|
||||
{{#apis}}
|
||||
public static {{#lambda.camelcase}}{{classFilename}}{{/lambda.camelcase}}: {{classFilename}};
|
||||
{{/apis}}
|
||||
{{/apiInfo}}
|
||||
|
||||
public static init(apiBaseConfig: ConfigurationParameters) {
|
||||
{{#apiInfo}}
|
||||
{{#apis}}
|
||||
Api.{{#lambda.camelcase}}{{classFilename}}{{/lambda.camelcase}} = new {{classFilename}}(new Configuration(apiBaseConfig));
|
||||
{{/apis}}
|
||||
{{/apiInfo}}
|
||||
}
|
||||
}
|
244
modules/openapi-generator/src/main/resources/typescript-playwright/sagas.mustache
vendored
Normal file
244
modules/openapi-generator/src/main/resources/typescript-playwright/sagas.mustache
vendored
Normal file
@ -0,0 +1,244 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
{{>licenseInfo}}
|
||||
|
||||
import {Api} from './index{{importFileExtension}}';
|
||||
import {List} from 'immutable';
|
||||
import {all, fork, put, takeLatest} from "redux-saga/effects";
|
||||
import {apiCall, createSagaAction as originalCreateSagaAction, BaseEntitySupportPayloadApiAction, BasePayloadApiAction, NormalizedRecordEntities, normalizedEntities} from "../runtimeSagasAndRecords{{importFileExtension}}";
|
||||
import {Action} from "redux-ts-simple";
|
||||
|
||||
{{#imports.0}}
|
||||
import {
|
||||
{{#imports}}
|
||||
{{className}},
|
||||
{{className}}Record,
|
||||
{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}RecordUtils,
|
||||
{{/imports}}
|
||||
{{#passthroughImports}}
|
||||
{{.}},
|
||||
{{/passthroughImports}}
|
||||
} from '../models/index{{importFileExtension}}';
|
||||
{{/imports.0}}
|
||||
{{#hasEnums}}
|
||||
{{#operations}}
|
||||
{{#operation}}
|
||||
{{#allParams}}
|
||||
{{#isEnum}}
|
||||
|
||||
import {
|
||||
{{operationIdCamelCase}}{{enumName}},
|
||||
} from './{{classname}}{{importFileExtension}}';
|
||||
{{/isEnum}}
|
||||
{{/allParams}}
|
||||
{{/operation}}
|
||||
{{/operations}}
|
||||
{{/hasEnums}}
|
||||
|
||||
const createSagaAction = <T>(type: string) => originalCreateSagaAction<T>(type, {namespace: "api_{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}"});
|
||||
|
||||
export const {{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}SagaMap = new Map<string, () => Generator<any, any, any>>([
|
||||
{{#operations}}
|
||||
{{#operation}}
|
||||
["{{nickname}}", {{nickname}}Saga],
|
||||
{{/operation}}
|
||||
{{/operations}}
|
||||
]
|
||||
);
|
||||
|
||||
export function *{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}AllSagas() {
|
||||
yield all([...{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}SagaMap.values()].map(actionSaga => fork(actionSaga)));
|
||||
}
|
||||
|
||||
{{#operations}}
|
||||
{{#operation}}
|
||||
//region {{nickname}}
|
||||
|
||||
{{#returnTypeSupportsEntities}}
|
||||
export interface Payload{{#lambda.titlecase}}{{#lambda.camelcase}}{{nickname}}{{/lambda.camelcase}}{{/lambda.titlecase}} extends {{#allParams.0}}Payload{{#lambda.titlecase}}{{#lambda.camelcase}}{{nickname}}{{/lambda.camelcase}}{{/lambda.titlecase}}Request, {{/allParams.0}}BaseEntitySupportPayloadApiAction {
|
||||
}
|
||||
{{/returnTypeSupportsEntities}}
|
||||
{{^returnTypeSupportsEntities}}
|
||||
export interface Payload{{#lambda.titlecase}}{{#lambda.camelcase}}{{nickname}}{{/lambda.camelcase}}{{/lambda.titlecase}} extends {{#allParams.0}}Payload{{#lambda.titlecase}}{{#lambda.camelcase}}{{nickname}}{{/lambda.camelcase}}{{/lambda.titlecase}}Request, {{/allParams.0}}BasePayloadApiAction {
|
||||
}
|
||||
{{/returnTypeSupportsEntities}}
|
||||
|
||||
{{#allParams.0}}
|
||||
export interface Payload{{#lambda.titlecase}}{{#lambda.camelcase}}{{nickname}}{{/lambda.camelcase}}{{/lambda.titlecase}}Request {
|
||||
{{#allParams}}
|
||||
{{paramName}}{{^required}}?{{/required}}: {{{dataTypeAlternate}}};
|
||||
{{/allParams}}
|
||||
}
|
||||
{{/allParams.0}}
|
||||
|
||||
export const {{nickname}}Request = createSagaAction<{{#allParams.0}}Payload{{#lambda.titlecase}}{{#lambda.camelcase}}{{nickname}}{{/lambda.camelcase}}{{/lambda.titlecase}}Request{{/allParams.0}}{{^allParams.0}}void{{/allParams.0}}>("{{nickname}}Request");
|
||||
{{#returnType}}
|
||||
export const {{nickname}}Success = createSagaAction<{{#hasReturnPassthroughVoid}}void{{/hasReturnPassthroughVoid}}{{^hasReturnPassthroughVoid}}{{{returnTypeAlternate}}}{{/hasReturnPassthroughVoid}}>("{{nickname}}Success");
|
||||
{{#returnTypeSupportsEntities}}
|
||||
export const {{nickname}}Success_Entities = createSagaAction<NormalizedRecordEntities>("{{nickname}}Success_Entities");
|
||||
{{/returnTypeSupportsEntities}}
|
||||
{{/returnType}}
|
||||
{{^returnType}}
|
||||
export const {{nickname}}Success = createSagaAction<void>("{{nickname}}Success");
|
||||
{{/returnType}}
|
||||
export const {{nickname}}Failure = createSagaAction<{error: any, requestPayload: Payload{{#lambda.titlecase}}{{#lambda.camelcase}}{{nickname}}{{/lambda.camelcase}}{{/lambda.titlecase}}}>("{{nickname}}Failure");
|
||||
|
||||
export const {{nickname}} = createSagaAction<Payload{{#lambda.titlecase}}{{#lambda.camelcase}}{{nickname}}{{/lambda.camelcase}}{{/lambda.titlecase}}>("{{nickname}}");
|
||||
|
||||
export function *{{nickname}}Saga() {
|
||||
yield takeLatest({{nickname}}, {{nickname}}SagaImp);
|
||||
}
|
||||
|
||||
export function *{{nickname}}SagaImp(_action_: Action<Payload{{#lambda.titlecase}}{{#lambda.camelcase}}{{nickname}}{{/lambda.camelcase}}{{/lambda.titlecase}}>) {
|
||||
const {markErrorsAsHandled, ..._payloadRest_} = _action_.payload;
|
||||
try {
|
||||
{{#returnTypeSupportsEntities}}
|
||||
const {toEntities, toInlined = !toEntities, ...requestPayload} = _payloadRest_;
|
||||
{{/returnTypeSupportsEntities}}
|
||||
{{#allParams.0}}
|
||||
const {
|
||||
{{#allParams}}
|
||||
{{paramName}},
|
||||
{{/allParams}}
|
||||
} = _payloadRest_;
|
||||
{{/allParams.0}}
|
||||
|
||||
yield put({{nickname}}Request({{#allParams.0}}{{#returnTypeSupportsEntities}}requestPayload{{/returnTypeSupportsEntities}}{{^returnTypeSupportsEntities}}_action_.payload{{/returnTypeSupportsEntities}}{{/allParams.0}}));
|
||||
|
||||
const response{{#returnType}}: Required<{{{returnType}}}>{{/returnType}} = yield apiCall(Api.{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}, Api.{{#lambda.camelcase}}{{classname}}{{/lambda.camelcase}}['{{nickname}}'],
|
||||
{{#allParams.0}}
|
||||
{{#allParams}}
|
||||
{{#isUniqueId}}
|
||||
{{#isArray}}
|
||||
{{#items.isArray}}
|
||||
{{^required}}{{paramName}} ? {{/required}}{{paramName}}.map(p => p.toArray().map(p2 => (p2 ? parseFloat(p2) : null) as number)).toArray(){{^required}} : undefined{{/required}},
|
||||
{{/items.isArray}}
|
||||
{{^items.isArray}}
|
||||
{{^required}}{{paramName}} ? {{/required}}{{paramName}}.map(p => (p ? parseFloat(p) : null) as number ).toArray(){{^required}} : undefined{{/required}},
|
||||
{{/items.isArray}}
|
||||
{{/isArray}}
|
||||
{{^isArray}}
|
||||
{{^required}}{{paramName}} ? {{/required}}parseFloat({{paramName}}){{^required}} : undefined{{/required}},
|
||||
{{/isArray}}
|
||||
{{/isUniqueId}}
|
||||
{{^isUniqueId}}
|
||||
{{#isArray}}
|
||||
{{#items.isModel}}
|
||||
{{^required}}{{paramName}} ? {{/required}}{{#lambda.camelcase}}{{items.dataType}}{{/lambda.camelcase}}RecordUtils.toApiArray({{paramName}}){{^required}} : undefined{{/required}},
|
||||
{{/items.isModel}}
|
||||
{{^items.isModel}}
|
||||
{{^required}}{{paramName}} ? {{/required}}{{paramName}}.toJS(){{^required}} : undefined{{/required}},
|
||||
{{/items.isModel}}
|
||||
{{/isArray}}
|
||||
{{#isModel}}
|
||||
{{^required}}{{paramName}} ? {{/required}}{{#lambda.camelcase}}{{{dataTypeAlternate}}}{{/lambda.camelcase}}Utils.toApi({{paramName}}){{^required}} : undefined{{/required}},
|
||||
{{/isModel}}
|
||||
{{^isArray}}
|
||||
{{^isModel}}
|
||||
{{paramName}},
|
||||
{{/isModel}}
|
||||
{{/isArray}}
|
||||
{{/isUniqueId}}
|
||||
{{/allParams}}
|
||||
{{/allParams.0}}
|
||||
);
|
||||
|
||||
{{#returnType}}
|
||||
{{^hasReturnPassthroughVoid}}
|
||||
let successReturnValue: any = undefined;
|
||||
{{/hasReturnPassthroughVoid}}
|
||||
{{/returnType}}
|
||||
{{#returnTypeSupportsEntities}}
|
||||
if (toEntities) {
|
||||
{{#returnPassthrough}}
|
||||
successReturnValue = {{#lambda.camelcase}}{{{returnType}}}{{/lambda.camelcase}}RecordUtils.fromApiPassthroughAsEntities(response);
|
||||
{{/returnPassthrough}}
|
||||
{{^hasReturnPassthroughVoid}}
|
||||
{{^returnPassthrough}}
|
||||
{{#returnTypeIsArray}}
|
||||
{{#returnTypeAlternate}}
|
||||
successReturnValue = {{#lambda.camelcase}}{{returnBaseTypeAlternate}}{{/lambda.camelcase}}Utils.fromApiArrayAsEntities(response);
|
||||
{{/returnTypeAlternate}}
|
||||
{{/returnTypeIsArray}}
|
||||
{{#returnTypeIsModel}}
|
||||
successReturnValue = {{#lambda.camelcase}}{{returnTypeAlternate}}{{/lambda.camelcase}}Utils.fromApiArrayAsEntities([response]);
|
||||
{{/returnTypeIsModel}}
|
||||
{{/returnPassthrough}}
|
||||
{{/hasReturnPassthroughVoid}}
|
||||
yield put(normalizedEntities(successReturnValue));
|
||||
yield put({{nickname}}Success_Entities(successReturnValue));
|
||||
}
|
||||
if (toInlined) {
|
||||
{{/returnTypeSupportsEntities}}
|
||||
{{#returnType}}
|
||||
{{#returnPassthrough}}
|
||||
successReturnValue = {{#lambda.camelcase}}{{{returnType}}}{{/lambda.camelcase}}RecordUtils.fromApiPassthrough(response);
|
||||
yield put({{nickname}}Success(successReturnValue));
|
||||
{{/returnPassthrough}}
|
||||
{{#hasReturnPassthroughVoid}}
|
||||
yield put({{nickname}}Success());
|
||||
{{/hasReturnPassthroughVoid}}
|
||||
{{^hasReturnPassthroughVoid}}
|
||||
{{^returnPassthrough}}
|
||||
{{#returnTypeIsArray}}
|
||||
{{#returnTypeAlternate}}
|
||||
successReturnValue = {{#lambda.camelcase}}{{returnBaseTypeAlternate}}{{/lambda.camelcase}}Utils.fromApiArray(response);
|
||||
yield put({{nickname}}Success(successReturnValue));
|
||||
{{/returnTypeAlternate}}
|
||||
{{/returnTypeIsArray}}
|
||||
{{#returnTypeIsModel}}
|
||||
successReturnValue = {{#lambda.camelcase}}{{returnTypeAlternate}}{{/lambda.camelcase}}Utils.fromApi(response);
|
||||
yield put({{nickname}}Success(successReturnValue));
|
||||
{{/returnTypeIsModel}}
|
||||
{{^returnTypeIsArray}}
|
||||
{{^returnTypeIsModel}}
|
||||
yield put({{nickname}}Success(response));
|
||||
{{/returnTypeIsModel}}
|
||||
{{/returnTypeIsArray}}
|
||||
{{/returnPassthrough}}
|
||||
{{/hasReturnPassthroughVoid}}
|
||||
{{/returnType}}
|
||||
{{^returnType}}
|
||||
yield put({{nickname}}Success());
|
||||
{{/returnType}}
|
||||
{{#returnTypeSupportsEntities}}
|
||||
}
|
||||
{{/returnTypeSupportsEntities}}
|
||||
|
||||
{{#returnType}}
|
||||
{{#returnPassthrough}}
|
||||
return successReturnValue;
|
||||
{{/returnPassthrough}}
|
||||
{{#hasReturnPassthroughVoid}}
|
||||
return undefined;
|
||||
{{/hasReturnPassthroughVoid}}
|
||||
{{^hasReturnPassthroughVoid}}
|
||||
{{^returnPassthrough}}
|
||||
{{#returnTypeIsArray}}
|
||||
{{#returnTypeAlternate}}
|
||||
return successReturnValue;
|
||||
{{/returnTypeAlternate}}
|
||||
{{/returnTypeIsArray}}
|
||||
{{#returnTypeIsModel}}
|
||||
return successReturnValue;
|
||||
{{/returnTypeIsModel}}
|
||||
{{^returnTypeIsArray}}
|
||||
{{^returnTypeIsModel}}
|
||||
return response;
|
||||
{{/returnTypeIsModel}}
|
||||
{{/returnTypeIsArray}}
|
||||
{{/returnPassthrough}}
|
||||
{{/hasReturnPassthroughVoid}}
|
||||
{{/returnType}}
|
||||
{{^returnType}}
|
||||
return undefined;
|
||||
{{/returnType}}
|
||||
} catch (error) {
|
||||
if (markErrorsAsHandled) {error.wasHandled = true; }
|
||||
yield put({{nickname}}Failure({error, requestPayload: _action_.payload}));
|
||||
return error;
|
||||
}
|
||||
}
|
||||
//endregion
|
||||
{{/operation}}
|
||||
{{/operations}}
|
@ -0,0 +1 @@
|
||||
export * from './src/index{{importFileExtension}}';
|
7
modules/openapi-generator/src/main/resources/typescript-playwright/tsconfig.esm.mustache
vendored
Normal file
7
modules/openapi-generator/src/main/resources/typescript-playwright/tsconfig.esm.mustache
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"module": "esnext",
|
||||
"outDir": "dist/esm"
|
||||
}
|
||||
}
|
25
modules/openapi-generator/src/main/resources/typescript-playwright/tsconfig.mustache
vendored
Normal file
25
modules/openapi-generator/src/main/resources/typescript-playwright/tsconfig.mustache
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"declaration": true,
|
||||
"target": "{{#supportsES6}}es6{{/supportsES6}}{{^supportsES6}}es5{{/supportsES6}}",
|
||||
{{#sagasAndRecords}}
|
||||
"strict": true,
|
||||
{{/sagasAndRecords}}
|
||||
"module": "commonjs",
|
||||
"moduleResolution": "node",
|
||||
"outDir": "dist",
|
||||
{{^supportsES6}}
|
||||
"lib": [
|
||||
"es6",
|
||||
"dom"
|
||||
],
|
||||
{{/supportsES6}}
|
||||
"typeRoots": [
|
||||
"node_modules/@types"
|
||||
]
|
||||
},
|
||||
"exclude": [
|
||||
"dist",
|
||||
"node_modules"
|
||||
]
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
# OpenAPI Generator Ignore
|
||||
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
|
||||
|
||||
# Use this file to prevent files from being overwritten by the generator.
|
||||
# The patterns follow closely to .gitignore or .dockerignore.
|
||||
|
||||
# As an example, the C# client generator defines ApiClient.cs.
|
||||
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
|
||||
#ApiClient.cs
|
||||
|
||||
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
|
||||
#foo/*/qux
|
||||
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
|
||||
|
||||
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
|
||||
#foo/**/qux
|
||||
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
|
||||
|
||||
# You can also negate patterns with an exclamation (!).
|
||||
# For example, you can ignore all files in a docs folder with the file extension .md:
|
||||
#docs/*.md
|
||||
# Then explicitly reverse the ignore rule for a single file:
|
||||
#!docs/README.md
|
@ -0,0 +1,13 @@
|
||||
apis/PetApi.ts
|
||||
apis/StoreApi.ts
|
||||
apis/UserApi.ts
|
||||
apis/index.ts
|
||||
index.ts
|
||||
models/Category.ts
|
||||
models/ModelApiResponse.ts
|
||||
models/Order.ts
|
||||
models/Pet.ts
|
||||
models/Tag.ts
|
||||
models/User.ts
|
||||
models/index.ts
|
||||
runtime.ts
|
@ -0,0 +1 @@
|
||||
7.7.0-SNAPSHOT
|
465
samples/client/petstore/typescript-wright/apis/PetApi.ts
Normal file
465
samples/client/petstore/typescript-wright/apis/PetApi.ts
Normal file
@ -0,0 +1,465 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* OpenAPI Petstore
|
||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
*
|
||||
* The version of the OpenAPI document: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
|
||||
import * as runtime from '../runtime';
|
||||
import type {
|
||||
ModelApiResponse,
|
||||
Pet,
|
||||
} from '../models/index';
|
||||
import {
|
||||
ModelApiResponseFromJSON,
|
||||
ModelApiResponseToJSON,
|
||||
PetFromJSON,
|
||||
PetToJSON,
|
||||
} from '../models/index';
|
||||
|
||||
export interface AddPetRequest {
|
||||
pet: Pet;
|
||||
}
|
||||
|
||||
export interface DeletePetRequest {
|
||||
petId: number;
|
||||
apiKey?: string;
|
||||
}
|
||||
|
||||
export interface FindPetsByStatusRequest {
|
||||
status: Array<FindPetsByStatusStatusEnum>;
|
||||
}
|
||||
|
||||
export interface FindPetsByTagsRequest {
|
||||
tags: Array<string>;
|
||||
}
|
||||
|
||||
export interface GetPetByIdRequest {
|
||||
petId: number;
|
||||
}
|
||||
|
||||
export interface UpdatePetRequest {
|
||||
pet: Pet;
|
||||
}
|
||||
|
||||
export interface UpdatePetWithFormRequest {
|
||||
petId: number;
|
||||
name?: string;
|
||||
status?: string;
|
||||
}
|
||||
|
||||
export interface UploadFileRequest {
|
||||
petId: number;
|
||||
additionalMetadata?: string;
|
||||
file?: Blob;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export class PetApi extends runtime.BaseAPI {
|
||||
|
||||
/**
|
||||
*
|
||||
* Add a new pet to the store
|
||||
*/
|
||||
async addPetRaw(requestParameters: AddPetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Pet>> {
|
||||
if (requestParameters['pet'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'pet',
|
||||
'Required parameter "pet" was null or undefined when calling addPet().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
headerParameters['Content-Type'] = 'application/json';
|
||||
|
||||
if (this.configuration && this.configuration.accessToken) {
|
||||
// oauth required
|
||||
headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/pet`,
|
||||
method: 'POST',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
body: PetToJSON(requestParameters['pet']),
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.JSONApiResponse(response, (jsonValue) => PetFromJSON(jsonValue));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Add a new pet to the store
|
||||
*/
|
||||
async addPet(requestParameters: AddPetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Pet> {
|
||||
const response = await this.addPetRaw(requestParameters, initOverrides);
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Deletes a pet
|
||||
*/
|
||||
async deletePetRaw(requestParameters: DeletePetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
|
||||
if (requestParameters['petId'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'petId',
|
||||
'Required parameter "petId" was null or undefined when calling deletePet().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
if (requestParameters['apiKey'] != null) {
|
||||
headerParameters['api_key'] = String(requestParameters['apiKey']);
|
||||
}
|
||||
|
||||
if (this.configuration && this.configuration.accessToken) {
|
||||
// oauth required
|
||||
headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters['petId']))),
|
||||
method: 'DELETE',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.VoidApiResponse(response);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Deletes a pet
|
||||
*/
|
||||
async deletePet(requestParameters: DeletePetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
|
||||
await this.deletePetRaw(requestParameters, initOverrides);
|
||||
}
|
||||
|
||||
/**
|
||||
* Multiple status values can be provided with comma separated strings
|
||||
* Finds Pets by status
|
||||
*/
|
||||
async findPetsByStatusRaw(requestParameters: FindPetsByStatusRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Pet>>> {
|
||||
if (requestParameters['status'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'status',
|
||||
'Required parameter "status" was null or undefined when calling findPetsByStatus().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
if (requestParameters['status'] != null) {
|
||||
queryParameters['status'] = requestParameters['status']!.join(runtime.COLLECTION_FORMATS["csv"]);
|
||||
}
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
if (this.configuration && this.configuration.accessToken) {
|
||||
// oauth required
|
||||
headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["read:pets"]);
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/pet/findByStatus`,
|
||||
method: 'GET',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PetFromJSON));
|
||||
}
|
||||
|
||||
/**
|
||||
* Multiple status values can be provided with comma separated strings
|
||||
* Finds Pets by status
|
||||
*/
|
||||
async findPetsByStatus(requestParameters: FindPetsByStatusRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Pet>> {
|
||||
const response = await this.findPetsByStatusRaw(requestParameters, initOverrides);
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
/**
|
||||
* Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
|
||||
* Finds Pets by tags
|
||||
* @deprecated
|
||||
*/
|
||||
async findPetsByTagsRaw(requestParameters: FindPetsByTagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Pet>>> {
|
||||
if (requestParameters['tags'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'tags',
|
||||
'Required parameter "tags" was null or undefined when calling findPetsByTags().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
if (requestParameters['tags'] != null) {
|
||||
queryParameters['tags'] = requestParameters['tags']!.join(runtime.COLLECTION_FORMATS["csv"]);
|
||||
}
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
if (this.configuration && this.configuration.accessToken) {
|
||||
// oauth required
|
||||
headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["read:pets"]);
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/pet/findByTags`,
|
||||
method: 'GET',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PetFromJSON));
|
||||
}
|
||||
|
||||
/**
|
||||
* Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
|
||||
* Finds Pets by tags
|
||||
* @deprecated
|
||||
*/
|
||||
async findPetsByTags(requestParameters: FindPetsByTagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Pet>> {
|
||||
const response = await this.findPetsByTagsRaw(requestParameters, initOverrides);
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a single pet
|
||||
* Find pet by ID
|
||||
*/
|
||||
async getPetByIdRaw(requestParameters: GetPetByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Pet>> {
|
||||
if (requestParameters['petId'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'petId',
|
||||
'Required parameter "petId" was null or undefined when calling getPetById().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
if (this.configuration && this.configuration.apiKey) {
|
||||
headerParameters["api_key"] = await this.configuration.apiKey("api_key"); // api_key authentication
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters['petId']))),
|
||||
method: 'GET',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.JSONApiResponse(response, (jsonValue) => PetFromJSON(jsonValue));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a single pet
|
||||
* Find pet by ID
|
||||
*/
|
||||
async getPetById(requestParameters: GetPetByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Pet> {
|
||||
const response = await this.getPetByIdRaw(requestParameters, initOverrides);
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Update an existing pet
|
||||
*/
|
||||
async updatePetRaw(requestParameters: UpdatePetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Pet>> {
|
||||
if (requestParameters['pet'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'pet',
|
||||
'Required parameter "pet" was null or undefined when calling updatePet().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
headerParameters['Content-Type'] = 'application/json';
|
||||
|
||||
if (this.configuration && this.configuration.accessToken) {
|
||||
// oauth required
|
||||
headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/pet`,
|
||||
method: 'PUT',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
body: PetToJSON(requestParameters['pet']),
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.JSONApiResponse(response, (jsonValue) => PetFromJSON(jsonValue));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Update an existing pet
|
||||
*/
|
||||
async updatePet(requestParameters: UpdatePetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Pet> {
|
||||
const response = await this.updatePetRaw(requestParameters, initOverrides);
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Updates a pet in the store with form data
|
||||
*/
|
||||
async updatePetWithFormRaw(requestParameters: UpdatePetWithFormRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
|
||||
if (requestParameters['petId'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'petId',
|
||||
'Required parameter "petId" was null or undefined when calling updatePetWithForm().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
if (this.configuration && this.configuration.accessToken) {
|
||||
// oauth required
|
||||
headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
|
||||
}
|
||||
|
||||
const consumes: runtime.Consume[] = [
|
||||
{ contentType: 'application/x-www-form-urlencoded' },
|
||||
];
|
||||
// @ts-ignore: canConsumeForm may be unused
|
||||
const canConsumeForm = runtime.canConsumeForm(consumes);
|
||||
|
||||
let formParams: { append(param: string, value: any): any };
|
||||
let useForm = false;
|
||||
if (useForm) {
|
||||
formParams = new FormData();
|
||||
} else {
|
||||
formParams = new URLSearchParams();
|
||||
}
|
||||
|
||||
if (requestParameters['name'] != null) {
|
||||
formParams.append('name', requestParameters['name'] as any);
|
||||
}
|
||||
|
||||
if (requestParameters['status'] != null) {
|
||||
formParams.append('status', requestParameters['status'] as any);
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/pet/{petId}`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters['petId']))),
|
||||
method: 'POST',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
body: formParams,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.VoidApiResponse(response);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Updates a pet in the store with form data
|
||||
*/
|
||||
async updatePetWithForm(requestParameters: UpdatePetWithFormRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
|
||||
await this.updatePetWithFormRaw(requestParameters, initOverrides);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* uploads an image
|
||||
*/
|
||||
async uploadFileRaw(requestParameters: UploadFileRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<ModelApiResponse>> {
|
||||
if (requestParameters['petId'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'petId',
|
||||
'Required parameter "petId" was null or undefined when calling uploadFile().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
if (this.configuration && this.configuration.accessToken) {
|
||||
// oauth required
|
||||
headerParameters["Authorization"] = await this.configuration.accessToken("petstore_auth", ["write:pets", "read:pets"]);
|
||||
}
|
||||
|
||||
const consumes: runtime.Consume[] = [
|
||||
{ contentType: 'multipart/form-data' },
|
||||
];
|
||||
// @ts-ignore: canConsumeForm may be unused
|
||||
const canConsumeForm = runtime.canConsumeForm(consumes);
|
||||
|
||||
let formParams: { append(param: string, value: any): any };
|
||||
let useForm = false;
|
||||
// use FormData to transmit files using content-type "multipart/form-data"
|
||||
useForm = canConsumeForm;
|
||||
if (useForm) {
|
||||
formParams = new FormData();
|
||||
} else {
|
||||
formParams = new URLSearchParams();
|
||||
}
|
||||
|
||||
if (requestParameters['additionalMetadata'] != null) {
|
||||
formParams.append('additionalMetadata', requestParameters['additionalMetadata'] as any);
|
||||
}
|
||||
|
||||
if (requestParameters['file'] != null) {
|
||||
formParams.append('file', requestParameters['file'] as any);
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/pet/{petId}/uploadImage`.replace(`{${"petId"}}`, encodeURIComponent(String(requestParameters['petId']))),
|
||||
method: 'POST',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
body: formParams,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.JSONApiResponse(response, (jsonValue) => ModelApiResponseFromJSON(jsonValue));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* uploads an image
|
||||
*/
|
||||
async uploadFile(requestParameters: UploadFileRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<ModelApiResponse> {
|
||||
const response = await this.uploadFileRaw(requestParameters, initOverrides);
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @export
|
||||
*/
|
||||
export const FindPetsByStatusStatusEnum = {
|
||||
Available: 'available',
|
||||
Pending: 'pending',
|
||||
Sold: 'sold'
|
||||
} as const;
|
||||
export type FindPetsByStatusStatusEnum = typeof FindPetsByStatusStatusEnum[keyof typeof FindPetsByStatusStatusEnum];
|
181
samples/client/petstore/typescript-wright/apis/StoreApi.ts
Normal file
181
samples/client/petstore/typescript-wright/apis/StoreApi.ts
Normal file
@ -0,0 +1,181 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* OpenAPI Petstore
|
||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
*
|
||||
* The version of the OpenAPI document: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
|
||||
import * as runtime from '../runtime';
|
||||
import type {
|
||||
Order,
|
||||
} from '../models/index';
|
||||
import {
|
||||
OrderFromJSON,
|
||||
OrderToJSON,
|
||||
} from '../models/index';
|
||||
|
||||
export interface DeleteOrderRequest {
|
||||
orderId: string;
|
||||
}
|
||||
|
||||
export interface GetOrderByIdRequest {
|
||||
orderId: number;
|
||||
}
|
||||
|
||||
export interface PlaceOrderRequest {
|
||||
order: Order;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export class StoreApi extends runtime.BaseAPI {
|
||||
|
||||
/**
|
||||
* For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
|
||||
* Delete purchase order by ID
|
||||
*/
|
||||
async deleteOrderRaw(requestParameters: DeleteOrderRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
|
||||
if (requestParameters['orderId'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'orderId',
|
||||
'Required parameter "orderId" was null or undefined when calling deleteOrder().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
const response = await this.request({
|
||||
path: `/store/order/{orderId}`.replace(`{${"orderId"}}`, encodeURIComponent(String(requestParameters['orderId']))),
|
||||
method: 'DELETE',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.VoidApiResponse(response);
|
||||
}
|
||||
|
||||
/**
|
||||
* For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
|
||||
* Delete purchase order by ID
|
||||
*/
|
||||
async deleteOrder(requestParameters: DeleteOrderRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
|
||||
await this.deleteOrderRaw(requestParameters, initOverrides);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a map of status codes to quantities
|
||||
* Returns pet inventories by status
|
||||
*/
|
||||
async getInventoryRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<{ [key: string]: number; }>> {
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
if (this.configuration && this.configuration.apiKey) {
|
||||
headerParameters["api_key"] = await this.configuration.apiKey("api_key"); // api_key authentication
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/store/inventory`,
|
||||
method: 'GET',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.JSONApiResponse<any>(response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a map of status codes to quantities
|
||||
* Returns pet inventories by status
|
||||
*/
|
||||
async getInventory(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: number; }> {
|
||||
const response = await this.getInventoryRaw(initOverrides);
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
/**
|
||||
* For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions
|
||||
* Find purchase order by ID
|
||||
*/
|
||||
async getOrderByIdRaw(requestParameters: GetOrderByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Order>> {
|
||||
if (requestParameters['orderId'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'orderId',
|
||||
'Required parameter "orderId" was null or undefined when calling getOrderById().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
const response = await this.request({
|
||||
path: `/store/order/{orderId}`.replace(`{${"orderId"}}`, encodeURIComponent(String(requestParameters['orderId']))),
|
||||
method: 'GET',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.JSONApiResponse(response, (jsonValue) => OrderFromJSON(jsonValue));
|
||||
}
|
||||
|
||||
/**
|
||||
* For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions
|
||||
* Find purchase order by ID
|
||||
*/
|
||||
async getOrderById(requestParameters: GetOrderByIdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Order> {
|
||||
const response = await this.getOrderByIdRaw(requestParameters, initOverrides);
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Place an order for a pet
|
||||
*/
|
||||
async placeOrderRaw(requestParameters: PlaceOrderRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Order>> {
|
||||
if (requestParameters['order'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'order',
|
||||
'Required parameter "order" was null or undefined when calling placeOrder().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
headerParameters['Content-Type'] = 'application/json';
|
||||
|
||||
const response = await this.request({
|
||||
path: `/store/order`,
|
||||
method: 'POST',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
body: OrderToJSON(requestParameters['order']),
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.JSONApiResponse(response, (jsonValue) => OrderFromJSON(jsonValue));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Place an order for a pet
|
||||
*/
|
||||
async placeOrder(requestParameters: PlaceOrderRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Order> {
|
||||
const response = await this.placeOrderRaw(requestParameters, initOverrides);
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
}
|
389
samples/client/petstore/typescript-wright/apis/UserApi.ts
Normal file
389
samples/client/petstore/typescript-wright/apis/UserApi.ts
Normal file
@ -0,0 +1,389 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* OpenAPI Petstore
|
||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
*
|
||||
* The version of the OpenAPI document: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
|
||||
import * as runtime from '../runtime';
|
||||
import type {
|
||||
User,
|
||||
} from '../models/index';
|
||||
import {
|
||||
UserFromJSON,
|
||||
UserToJSON,
|
||||
} from '../models/index';
|
||||
|
||||
export interface CreateUserRequest {
|
||||
user: User;
|
||||
}
|
||||
|
||||
export interface CreateUsersWithArrayInputRequest {
|
||||
user: Array<User>;
|
||||
}
|
||||
|
||||
export interface CreateUsersWithListInputRequest {
|
||||
user: Array<User>;
|
||||
}
|
||||
|
||||
export interface DeleteUserRequest {
|
||||
username: string;
|
||||
}
|
||||
|
||||
export interface GetUserByNameRequest {
|
||||
username: string;
|
||||
}
|
||||
|
||||
export interface LoginUserRequest {
|
||||
username: string;
|
||||
password: string;
|
||||
}
|
||||
|
||||
export interface UpdateUserRequest {
|
||||
username: string;
|
||||
user: User;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export class UserApi extends runtime.BaseAPI {
|
||||
|
||||
/**
|
||||
* This can only be done by the logged in user.
|
||||
* Create user
|
||||
*/
|
||||
async createUserRaw(requestParameters: CreateUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
|
||||
if (requestParameters['user'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'user',
|
||||
'Required parameter "user" was null or undefined when calling createUser().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
headerParameters['Content-Type'] = 'application/json';
|
||||
|
||||
if (this.configuration && this.configuration.apiKey) {
|
||||
headerParameters["api_key"] = await this.configuration.apiKey("api_key"); // api_key authentication
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/user`,
|
||||
method: 'POST',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
body: UserToJSON(requestParameters['user']),
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.VoidApiResponse(response);
|
||||
}
|
||||
|
||||
/**
|
||||
* This can only be done by the logged in user.
|
||||
* Create user
|
||||
*/
|
||||
async createUser(requestParameters: CreateUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
|
||||
await this.createUserRaw(requestParameters, initOverrides);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Creates list of users with given input array
|
||||
*/
|
||||
async createUsersWithArrayInputRaw(requestParameters: CreateUsersWithArrayInputRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
|
||||
if (requestParameters['user'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'user',
|
||||
'Required parameter "user" was null or undefined when calling createUsersWithArrayInput().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
headerParameters['Content-Type'] = 'application/json';
|
||||
|
||||
if (this.configuration && this.configuration.apiKey) {
|
||||
headerParameters["api_key"] = await this.configuration.apiKey("api_key"); // api_key authentication
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/user/createWithArray`,
|
||||
method: 'POST',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
body: requestParameters['user']!.map(UserToJSON),
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.VoidApiResponse(response);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Creates list of users with given input array
|
||||
*/
|
||||
async createUsersWithArrayInput(requestParameters: CreateUsersWithArrayInputRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
|
||||
await this.createUsersWithArrayInputRaw(requestParameters, initOverrides);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Creates list of users with given input array
|
||||
*/
|
||||
async createUsersWithListInputRaw(requestParameters: CreateUsersWithListInputRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
|
||||
if (requestParameters['user'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'user',
|
||||
'Required parameter "user" was null or undefined when calling createUsersWithListInput().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
headerParameters['Content-Type'] = 'application/json';
|
||||
|
||||
if (this.configuration && this.configuration.apiKey) {
|
||||
headerParameters["api_key"] = await this.configuration.apiKey("api_key"); // api_key authentication
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/user/createWithList`,
|
||||
method: 'POST',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
body: requestParameters['user']!.map(UserToJSON),
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.VoidApiResponse(response);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Creates list of users with given input array
|
||||
*/
|
||||
async createUsersWithListInput(requestParameters: CreateUsersWithListInputRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
|
||||
await this.createUsersWithListInputRaw(requestParameters, initOverrides);
|
||||
}
|
||||
|
||||
/**
|
||||
* This can only be done by the logged in user.
|
||||
* Delete user
|
||||
*/
|
||||
async deleteUserRaw(requestParameters: DeleteUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
|
||||
if (requestParameters['username'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'username',
|
||||
'Required parameter "username" was null or undefined when calling deleteUser().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
if (this.configuration && this.configuration.apiKey) {
|
||||
headerParameters["api_key"] = await this.configuration.apiKey("api_key"); // api_key authentication
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters['username']))),
|
||||
method: 'DELETE',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.VoidApiResponse(response);
|
||||
}
|
||||
|
||||
/**
|
||||
* This can only be done by the logged in user.
|
||||
* Delete user
|
||||
*/
|
||||
async deleteUser(requestParameters: DeleteUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
|
||||
await this.deleteUserRaw(requestParameters, initOverrides);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Get user by user name
|
||||
*/
|
||||
async getUserByNameRaw(requestParameters: GetUserByNameRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<User>> {
|
||||
if (requestParameters['username'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'username',
|
||||
'Required parameter "username" was null or undefined when calling getUserByName().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
const response = await this.request({
|
||||
path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters['username']))),
|
||||
method: 'GET',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.JSONApiResponse(response, (jsonValue) => UserFromJSON(jsonValue));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Get user by user name
|
||||
*/
|
||||
async getUserByName(requestParameters: GetUserByNameRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<User> {
|
||||
const response = await this.getUserByNameRaw(requestParameters, initOverrides);
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Logs user into the system
|
||||
*/
|
||||
async loginUserRaw(requestParameters: LoginUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<string>> {
|
||||
if (requestParameters['username'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'username',
|
||||
'Required parameter "username" was null or undefined when calling loginUser().'
|
||||
);
|
||||
}
|
||||
|
||||
if (requestParameters['password'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'password',
|
||||
'Required parameter "password" was null or undefined when calling loginUser().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
if (requestParameters['username'] != null) {
|
||||
queryParameters['username'] = requestParameters['username'];
|
||||
}
|
||||
|
||||
if (requestParameters['password'] != null) {
|
||||
queryParameters['password'] = requestParameters['password'];
|
||||
}
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
const response = await this.request({
|
||||
path: `/user/login`,
|
||||
method: 'GET',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
}, initOverrides);
|
||||
|
||||
if (this.isJsonMime(response.headers.get('content-type'))) {
|
||||
return new runtime.JSONApiResponse<string>(response);
|
||||
} else {
|
||||
return new runtime.TextApiResponse(response) as any;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Logs user into the system
|
||||
*/
|
||||
async loginUser(requestParameters: LoginUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<string> {
|
||||
const response = await this.loginUserRaw(requestParameters, initOverrides);
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Logs out current logged in user session
|
||||
*/
|
||||
async logoutUserRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
if (this.configuration && this.configuration.apiKey) {
|
||||
headerParameters["api_key"] = await this.configuration.apiKey("api_key"); // api_key authentication
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/user/logout`,
|
||||
method: 'GET',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.VoidApiResponse(response);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Logs out current logged in user session
|
||||
*/
|
||||
async logoutUser(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
|
||||
await this.logoutUserRaw(initOverrides);
|
||||
}
|
||||
|
||||
/**
|
||||
* This can only be done by the logged in user.
|
||||
* Updated user
|
||||
*/
|
||||
async updateUserRaw(requestParameters: UpdateUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
|
||||
if (requestParameters['username'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'username',
|
||||
'Required parameter "username" was null or undefined when calling updateUser().'
|
||||
);
|
||||
}
|
||||
|
||||
if (requestParameters['user'] == null) {
|
||||
throw new runtime.RequiredError(
|
||||
'user',
|
||||
'Required parameter "user" was null or undefined when calling updateUser().'
|
||||
);
|
||||
}
|
||||
|
||||
const queryParameters: any = {};
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
headerParameters['Content-Type'] = 'application/json';
|
||||
|
||||
if (this.configuration && this.configuration.apiKey) {
|
||||
headerParameters["api_key"] = await this.configuration.apiKey("api_key"); // api_key authentication
|
||||
}
|
||||
|
||||
const response = await this.request({
|
||||
path: `/user/{username}`.replace(`{${"username"}}`, encodeURIComponent(String(requestParameters['username']))),
|
||||
method: 'PUT',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
body: UserToJSON(requestParameters['user']),
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.VoidApiResponse(response);
|
||||
}
|
||||
|
||||
/**
|
||||
* This can only be done by the logged in user.
|
||||
* Updated user
|
||||
*/
|
||||
async updateUser(requestParameters: UpdateUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
|
||||
await this.updateUserRaw(requestParameters, initOverrides);
|
||||
}
|
||||
|
||||
}
|
5
samples/client/petstore/typescript-wright/apis/index.ts
Normal file
5
samples/client/petstore/typescript-wright/apis/index.ts
Normal file
@ -0,0 +1,5 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
export * from './PetApi';
|
||||
export * from './StoreApi';
|
||||
export * from './UserApi';
|
5
samples/client/petstore/typescript-wright/index.ts
Normal file
5
samples/client/petstore/typescript-wright/index.ts
Normal file
@ -0,0 +1,5 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
export * from './runtime';
|
||||
export * from './apis/index';
|
||||
export * from './models/index';
|
68
samples/client/petstore/typescript-wright/models/Category.ts
Normal file
68
samples/client/petstore/typescript-wright/models/Category.ts
Normal file
@ -0,0 +1,68 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* OpenAPI Petstore
|
||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
*
|
||||
* The version of the OpenAPI document: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { mapValues } from '../runtime';
|
||||
/**
|
||||
* A category for a pet
|
||||
* @export
|
||||
* @interface Category
|
||||
*/
|
||||
export interface Category {
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof Category
|
||||
*/
|
||||
id?: number;
|
||||
/**
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof Category
|
||||
*/
|
||||
name?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a given object implements the Category interface.
|
||||
*/
|
||||
export function instanceOfCategory(value: object): value is Category {
|
||||
return true;
|
||||
}
|
||||
|
||||
export function CategoryFromJSON(json: any): Category {
|
||||
return CategoryFromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function CategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): Category {
|
||||
if (json == null) {
|
||||
return json;
|
||||
}
|
||||
return {
|
||||
|
||||
'id': json['id'] == null ? undefined : json['id'],
|
||||
'name': json['name'] == null ? undefined : json['name'],
|
||||
};
|
||||
}
|
||||
|
||||
export function CategoryToJSON(value?: Category | null): any {
|
||||
if (value == null) {
|
||||
return value;
|
||||
}
|
||||
return {
|
||||
|
||||
'id': value['id'],
|
||||
'name': value['name'],
|
||||
};
|
||||
}
|
||||
|
@ -0,0 +1,76 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* OpenAPI Petstore
|
||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
*
|
||||
* The version of the OpenAPI document: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { mapValues } from '../runtime';
|
||||
/**
|
||||
* Describes the result of uploading an image resource
|
||||
* @export
|
||||
* @interface ModelApiResponse
|
||||
*/
|
||||
export interface ModelApiResponse {
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof ModelApiResponse
|
||||
*/
|
||||
code?: number;
|
||||
/**
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ModelApiResponse
|
||||
*/
|
||||
type?: string;
|
||||
/**
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof ModelApiResponse
|
||||
*/
|
||||
message?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a given object implements the ModelApiResponse interface.
|
||||
*/
|
||||
export function instanceOfModelApiResponse(value: object): value is ModelApiResponse {
|
||||
return true;
|
||||
}
|
||||
|
||||
export function ModelApiResponseFromJSON(json: any): ModelApiResponse {
|
||||
return ModelApiResponseFromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function ModelApiResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ModelApiResponse {
|
||||
if (json == null) {
|
||||
return json;
|
||||
}
|
||||
return {
|
||||
|
||||
'code': json['code'] == null ? undefined : json['code'],
|
||||
'type': json['type'] == null ? undefined : json['type'],
|
||||
'message': json['message'] == null ? undefined : json['message'],
|
||||
};
|
||||
}
|
||||
|
||||
export function ModelApiResponseToJSON(value?: ModelApiResponse | null): any {
|
||||
if (value == null) {
|
||||
return value;
|
||||
}
|
||||
return {
|
||||
|
||||
'code': value['code'],
|
||||
'type': value['type'],
|
||||
'message': value['message'],
|
||||
};
|
||||
}
|
||||
|
112
samples/client/petstore/typescript-wright/models/Order.ts
Normal file
112
samples/client/petstore/typescript-wright/models/Order.ts
Normal file
@ -0,0 +1,112 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* OpenAPI Petstore
|
||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
*
|
||||
* The version of the OpenAPI document: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { mapValues } from '../runtime';
|
||||
/**
|
||||
* An order for a pets from the pet store
|
||||
* @export
|
||||
* @interface Order
|
||||
*/
|
||||
export interface Order {
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof Order
|
||||
*/
|
||||
id?: number;
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof Order
|
||||
*/
|
||||
petId?: number;
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof Order
|
||||
*/
|
||||
quantity?: number;
|
||||
/**
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof Order
|
||||
*/
|
||||
shipDate?: Date;
|
||||
/**
|
||||
* Order Status
|
||||
* @type {string}
|
||||
* @memberof Order
|
||||
*/
|
||||
status?: OrderStatusEnum;
|
||||
/**
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof Order
|
||||
*/
|
||||
complete?: boolean;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @export
|
||||
*/
|
||||
export const OrderStatusEnum = {
|
||||
Placed: 'placed',
|
||||
Approved: 'approved',
|
||||
Delivered: 'delivered'
|
||||
} as const;
|
||||
export type OrderStatusEnum = typeof OrderStatusEnum[keyof typeof OrderStatusEnum];
|
||||
|
||||
|
||||
/**
|
||||
* Check if a given object implements the Order interface.
|
||||
*/
|
||||
export function instanceOfOrder(value: object): value is Order {
|
||||
return true;
|
||||
}
|
||||
|
||||
export function OrderFromJSON(json: any): Order {
|
||||
return OrderFromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function OrderFromJSONTyped(json: any, ignoreDiscriminator: boolean): Order {
|
||||
if (json == null) {
|
||||
return json;
|
||||
}
|
||||
return {
|
||||
|
||||
'id': json['id'] == null ? undefined : json['id'],
|
||||
'petId': json['petId'] == null ? undefined : json['petId'],
|
||||
'quantity': json['quantity'] == null ? undefined : json['quantity'],
|
||||
'shipDate': json['shipDate'] == null ? undefined : (new Date(json['shipDate'])),
|
||||
'status': json['status'] == null ? undefined : json['status'],
|
||||
'complete': json['complete'] == null ? undefined : json['complete'],
|
||||
};
|
||||
}
|
||||
|
||||
export function OrderToJSON(value?: Order | null): any {
|
||||
if (value == null) {
|
||||
return value;
|
||||
}
|
||||
return {
|
||||
|
||||
'id': value['id'],
|
||||
'petId': value['petId'],
|
||||
'quantity': value['quantity'],
|
||||
'shipDate': value['shipDate'] == null ? undefined : ((value['shipDate']).toISOString()),
|
||||
'status': value['status'],
|
||||
'complete': value['complete'],
|
||||
};
|
||||
}
|
||||
|
128
samples/client/petstore/typescript-wright/models/Pet.ts
Normal file
128
samples/client/petstore/typescript-wright/models/Pet.ts
Normal file
@ -0,0 +1,128 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* OpenAPI Petstore
|
||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
*
|
||||
* The version of the OpenAPI document: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { mapValues } from '../runtime';
|
||||
import type { Category } from './Category';
|
||||
import {
|
||||
CategoryFromJSON,
|
||||
CategoryFromJSONTyped,
|
||||
CategoryToJSON,
|
||||
} from './Category';
|
||||
import type { Tag } from './Tag';
|
||||
import {
|
||||
TagFromJSON,
|
||||
TagFromJSONTyped,
|
||||
TagToJSON,
|
||||
} from './Tag';
|
||||
|
||||
/**
|
||||
* A pet for sale in the pet store
|
||||
* @export
|
||||
* @interface Pet
|
||||
*/
|
||||
export interface Pet {
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof Pet
|
||||
*/
|
||||
id?: number;
|
||||
/**
|
||||
*
|
||||
* @type {Category}
|
||||
* @memberof Pet
|
||||
*/
|
||||
category?: Category;
|
||||
/**
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof Pet
|
||||
*/
|
||||
name: string;
|
||||
/**
|
||||
*
|
||||
* @type {Array<string>}
|
||||
* @memberof Pet
|
||||
*/
|
||||
photoUrls: Array<string>;
|
||||
/**
|
||||
*
|
||||
* @type {Array<Tag>}
|
||||
* @memberof Pet
|
||||
*/
|
||||
tags?: Array<Tag>;
|
||||
/**
|
||||
* pet status in the store
|
||||
* @type {string}
|
||||
* @memberof Pet
|
||||
* @deprecated
|
||||
*/
|
||||
status?: PetStatusEnum;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @export
|
||||
*/
|
||||
export const PetStatusEnum = {
|
||||
Available: 'available',
|
||||
Pending: 'pending',
|
||||
Sold: 'sold'
|
||||
} as const;
|
||||
export type PetStatusEnum = typeof PetStatusEnum[keyof typeof PetStatusEnum];
|
||||
|
||||
|
||||
/**
|
||||
* Check if a given object implements the Pet interface.
|
||||
*/
|
||||
export function instanceOfPet(value: object): value is Pet {
|
||||
if (!('name' in value) || value['name'] === undefined) return false;
|
||||
if (!('photoUrls' in value) || value['photoUrls'] === undefined) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
export function PetFromJSON(json: any): Pet {
|
||||
return PetFromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function PetFromJSONTyped(json: any, ignoreDiscriminator: boolean): Pet {
|
||||
if (json == null) {
|
||||
return json;
|
||||
}
|
||||
return {
|
||||
|
||||
'id': json['id'] == null ? undefined : json['id'],
|
||||
'category': json['category'] == null ? undefined : CategoryFromJSON(json['category']),
|
||||
'name': json['name'],
|
||||
'photoUrls': json['photoUrls'],
|
||||
'tags': json['tags'] == null ? undefined : ((json['tags'] as Array<any>).map(TagFromJSON)),
|
||||
'status': json['status'] == null ? undefined : json['status'],
|
||||
};
|
||||
}
|
||||
|
||||
export function PetToJSON(value?: Pet | null): any {
|
||||
if (value == null) {
|
||||
return value;
|
||||
}
|
||||
return {
|
||||
|
||||
'id': value['id'],
|
||||
'category': CategoryToJSON(value['category']),
|
||||
'name': value['name'],
|
||||
'photoUrls': value['photoUrls'],
|
||||
'tags': value['tags'] == null ? undefined : ((value['tags'] as Array<any>).map(TagToJSON)),
|
||||
'status': value['status'],
|
||||
};
|
||||
}
|
||||
|
68
samples/client/petstore/typescript-wright/models/Tag.ts
Normal file
68
samples/client/petstore/typescript-wright/models/Tag.ts
Normal file
@ -0,0 +1,68 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* OpenAPI Petstore
|
||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
*
|
||||
* The version of the OpenAPI document: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { mapValues } from '../runtime';
|
||||
/**
|
||||
* A tag for a pet
|
||||
* @export
|
||||
* @interface Tag
|
||||
*/
|
||||
export interface Tag {
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof Tag
|
||||
*/
|
||||
id?: number;
|
||||
/**
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof Tag
|
||||
*/
|
||||
name?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a given object implements the Tag interface.
|
||||
*/
|
||||
export function instanceOfTag(value: object): value is Tag {
|
||||
return true;
|
||||
}
|
||||
|
||||
export function TagFromJSON(json: any): Tag {
|
||||
return TagFromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function TagFromJSONTyped(json: any, ignoreDiscriminator: boolean): Tag {
|
||||
if (json == null) {
|
||||
return json;
|
||||
}
|
||||
return {
|
||||
|
||||
'id': json['id'] == null ? undefined : json['id'],
|
||||
'name': json['name'] == null ? undefined : json['name'],
|
||||
};
|
||||
}
|
||||
|
||||
export function TagToJSON(value?: Tag | null): any {
|
||||
if (value == null) {
|
||||
return value;
|
||||
}
|
||||
return {
|
||||
|
||||
'id': value['id'],
|
||||
'name': value['name'],
|
||||
};
|
||||
}
|
||||
|
116
samples/client/petstore/typescript-wright/models/User.ts
Normal file
116
samples/client/petstore/typescript-wright/models/User.ts
Normal file
@ -0,0 +1,116 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* OpenAPI Petstore
|
||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
*
|
||||
* The version of the OpenAPI document: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { mapValues } from '../runtime';
|
||||
/**
|
||||
* A User who is purchasing from the pet store
|
||||
* @export
|
||||
* @interface User
|
||||
*/
|
||||
export interface User {
|
||||
/**
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof User
|
||||
*/
|
||||
id?: number;
|
||||
/**
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof User
|
||||
*/
|
||||
username?: string;
|
||||
/**
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof User
|
||||
*/
|
||||
firstName?: string;
|
||||
/**
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof User
|
||||
*/
|
||||
lastName?: string;
|
||||
/**
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof User
|
||||
*/
|
||||
email?: string;
|
||||
/**
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof User
|
||||
*/
|
||||
password?: string;
|
||||
/**
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof User
|
||||
*/
|
||||
phone?: string;
|
||||
/**
|
||||
* User Status
|
||||
* @type {number}
|
||||
* @memberof User
|
||||
*/
|
||||
userStatus?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a given object implements the User interface.
|
||||
*/
|
||||
export function instanceOfUser(value: object): value is User {
|
||||
return true;
|
||||
}
|
||||
|
||||
export function UserFromJSON(json: any): User {
|
||||
return UserFromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function UserFromJSONTyped(json: any, ignoreDiscriminator: boolean): User {
|
||||
if (json == null) {
|
||||
return json;
|
||||
}
|
||||
return {
|
||||
|
||||
'id': json['id'] == null ? undefined : json['id'],
|
||||
'username': json['username'] == null ? undefined : json['username'],
|
||||
'firstName': json['firstName'] == null ? undefined : json['firstName'],
|
||||
'lastName': json['lastName'] == null ? undefined : json['lastName'],
|
||||
'email': json['email'] == null ? undefined : json['email'],
|
||||
'password': json['password'] == null ? undefined : json['password'],
|
||||
'phone': json['phone'] == null ? undefined : json['phone'],
|
||||
'userStatus': json['userStatus'] == null ? undefined : json['userStatus'],
|
||||
};
|
||||
}
|
||||
|
||||
export function UserToJSON(value?: User | null): any {
|
||||
if (value == null) {
|
||||
return value;
|
||||
}
|
||||
return {
|
||||
|
||||
'id': value['id'],
|
||||
'username': value['username'],
|
||||
'firstName': value['firstName'],
|
||||
'lastName': value['lastName'],
|
||||
'email': value['email'],
|
||||
'password': value['password'],
|
||||
'phone': value['phone'],
|
||||
'userStatus': value['userStatus'],
|
||||
};
|
||||
}
|
||||
|
@ -0,0 +1,8 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
export * from './Category';
|
||||
export * from './ModelApiResponse';
|
||||
export * from './Order';
|
||||
export * from './Pet';
|
||||
export * from './Tag';
|
||||
export * from './User';
|
426
samples/client/petstore/typescript-wright/runtime.ts
Normal file
426
samples/client/petstore/typescript-wright/runtime.ts
Normal file
@ -0,0 +1,426 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* OpenAPI Petstore
|
||||
* This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
|
||||
*
|
||||
* The version of the OpenAPI document: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
|
||||
export const BASE_PATH = "http://petstore.swagger.io/v2".replace(/\/+$/, "");
|
||||
|
||||
export interface ConfigurationParameters {
|
||||
basePath?: string; // override base path
|
||||
fetchApi?: FetchAPI; // override for fetch implementation
|
||||
middleware?: Middleware[]; // middleware to apply before/after fetch requests
|
||||
queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings
|
||||
username?: string; // parameter for basic security
|
||||
password?: string; // parameter for basic security
|
||||
apiKey?: string | Promise<string> | ((name: string) => string | Promise<string>); // parameter for apiKey security
|
||||
accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security
|
||||
headers?: HTTPHeaders; //header params we want to use on every request
|
||||
credentials?: RequestCredentials; //value for the credentials param we want to use on each request
|
||||
}
|
||||
|
||||
export class Configuration {
|
||||
constructor(private configuration: ConfigurationParameters = {}) {}
|
||||
|
||||
set config(configuration: Configuration) {
|
||||
this.configuration = configuration;
|
||||
}
|
||||
|
||||
get basePath(): string {
|
||||
return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;
|
||||
}
|
||||
|
||||
get fetchApi(): FetchAPI | undefined {
|
||||
return this.configuration.fetchApi;
|
||||
}
|
||||
|
||||
get middleware(): Middleware[] {
|
||||
return this.configuration.middleware || [];
|
||||
}
|
||||
|
||||
get queryParamsStringify(): (params: HTTPQuery) => string {
|
||||
return this.configuration.queryParamsStringify || querystring;
|
||||
}
|
||||
|
||||
get username(): string | undefined {
|
||||
return this.configuration.username;
|
||||
}
|
||||
|
||||
get password(): string | undefined {
|
||||
return this.configuration.password;
|
||||
}
|
||||
|
||||
get apiKey(): ((name: string) => string | Promise<string>) | undefined {
|
||||
const apiKey = this.configuration.apiKey;
|
||||
if (apiKey) {
|
||||
return typeof apiKey === 'function' ? apiKey : () => apiKey;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
get accessToken(): ((name?: string, scopes?: string[]) => string | Promise<string>) | undefined {
|
||||
const accessToken = this.configuration.accessToken;
|
||||
if (accessToken) {
|
||||
return typeof accessToken === 'function' ? accessToken : async () => accessToken;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
get headers(): HTTPHeaders | undefined {
|
||||
return this.configuration.headers;
|
||||
}
|
||||
|
||||
get credentials(): RequestCredentials | undefined {
|
||||
return this.configuration.credentials;
|
||||
}
|
||||
}
|
||||
|
||||
export const DefaultConfig = new Configuration();
|
||||
|
||||
/**
|
||||
* This is the base class for all generated API classes.
|
||||
*/
|
||||
export class BaseAPI {
|
||||
|
||||
private static readonly jsonRegex = new RegExp('^(:?application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(:?;.*)?$', 'i');
|
||||
private middleware: Middleware[];
|
||||
|
||||
constructor(protected configuration = DefaultConfig) {
|
||||
this.middleware = configuration.middleware;
|
||||
}
|
||||
|
||||
withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {
|
||||
const next = this.clone<T>();
|
||||
next.middleware = next.middleware.concat(...middlewares);
|
||||
return next;
|
||||
}
|
||||
|
||||
withPreMiddleware<T extends BaseAPI>(this: T, ...preMiddlewares: Array<Middleware['pre']>) {
|
||||
const middlewares = preMiddlewares.map((pre) => ({ pre }));
|
||||
return this.withMiddleware<T>(...middlewares);
|
||||
}
|
||||
|
||||
withPostMiddleware<T extends BaseAPI>(this: T, ...postMiddlewares: Array<Middleware['post']>) {
|
||||
const middlewares = postMiddlewares.map((post) => ({ post }));
|
||||
return this.withMiddleware<T>(...middlewares);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the given MIME is a JSON MIME.
|
||||
* JSON MIME examples:
|
||||
* application/json
|
||||
* application/json; charset=UTF8
|
||||
* APPLICATION/JSON
|
||||
* application/vnd.company+json
|
||||
* @param mime - MIME (Multipurpose Internet Mail Extensions)
|
||||
* @return True if the given MIME is JSON, false otherwise.
|
||||
*/
|
||||
protected isJsonMime(mime: string | null | undefined): boolean {
|
||||
if (!mime) {
|
||||
return false;
|
||||
}
|
||||
return BaseAPI.jsonRegex.test(mime);
|
||||
}
|
||||
|
||||
protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise<Response> {
|
||||
const { url, init } = await this.createFetchParams(context, initOverrides);
|
||||
const response = await this.fetchApi(url, init);
|
||||
if (response && (response.status >= 200 && response.status < 300)) {
|
||||
return response;
|
||||
}
|
||||
throw new ResponseError(response, 'Response returned an error code');
|
||||
}
|
||||
|
||||
private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) {
|
||||
let url = this.configuration.basePath + context.path;
|
||||
if (context.query !== undefined && Object.keys(context.query).length !== 0) {
|
||||
// only add the querystring to the URL if there are query parameters.
|
||||
// this is done to avoid urls ending with a "?" character which buggy webservers
|
||||
// do not handle correctly sometimes.
|
||||
url += '?' + this.configuration.queryParamsStringify(context.query);
|
||||
}
|
||||
|
||||
const headers = Object.assign({}, this.configuration.headers, context.headers);
|
||||
Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {});
|
||||
|
||||
const initOverrideFn =
|
||||
typeof initOverrides === "function"
|
||||
? initOverrides
|
||||
: async () => initOverrides;
|
||||
|
||||
const initParams = {
|
||||
method: context.method,
|
||||
headers,
|
||||
body: context.body,
|
||||
credentials: this.configuration.credentials,
|
||||
};
|
||||
|
||||
const overriddenInit: RequestInit = {
|
||||
...initParams,
|
||||
...(await initOverrideFn({
|
||||
init: initParams,
|
||||
context,
|
||||
}))
|
||||
};
|
||||
|
||||
let body: any;
|
||||
if (isFormData(overriddenInit.body)
|
||||
|| (overriddenInit.body instanceof URLSearchParams)
|
||||
|| isBlob(overriddenInit.body)) {
|
||||
body = overriddenInit.body;
|
||||
} else if (this.isJsonMime(headers['Content-Type'])) {
|
||||
body = JSON.stringify(overriddenInit.body);
|
||||
} else {
|
||||
body = overriddenInit.body;
|
||||
}
|
||||
|
||||
const init: RequestInit = {
|
||||
...overriddenInit,
|
||||
body
|
||||
};
|
||||
|
||||
return { url, init };
|
||||
}
|
||||
|
||||
private fetchApi = async (url: string, init: RequestInit) => {
|
||||
let fetchParams = { url, init };
|
||||
for (const middleware of this.middleware) {
|
||||
if (middleware.pre) {
|
||||
fetchParams = await middleware.pre({
|
||||
fetch: this.fetchApi,
|
||||
...fetchParams,
|
||||
}) || fetchParams;
|
||||
}
|
||||
}
|
||||
let response: Response | undefined = undefined;
|
||||
try {
|
||||
response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);
|
||||
} catch (e) {
|
||||
for (const middleware of this.middleware) {
|
||||
if (middleware.onError) {
|
||||
response = await middleware.onError({
|
||||
fetch: this.fetchApi,
|
||||
url: fetchParams.url,
|
||||
init: fetchParams.init,
|
||||
error: e,
|
||||
response: response ? response.clone() : undefined,
|
||||
}) || response;
|
||||
}
|
||||
}
|
||||
if (response === undefined) {
|
||||
if (e instanceof Error) {
|
||||
throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response');
|
||||
} else {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (const middleware of this.middleware) {
|
||||
if (middleware.post) {
|
||||
response = await middleware.post({
|
||||
fetch: this.fetchApi,
|
||||
url: fetchParams.url,
|
||||
init: fetchParams.init,
|
||||
response: response.clone(),
|
||||
}) || response;
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a shallow clone of `this` by constructing a new instance
|
||||
* and then shallow cloning data members.
|
||||
*/
|
||||
private clone<T extends BaseAPI>(this: T): T {
|
||||
const constructor = this.constructor as any;
|
||||
const next = new constructor(this.configuration);
|
||||
next.middleware = this.middleware.slice();
|
||||
return next;
|
||||
}
|
||||
};
|
||||
|
||||
function isBlob(value: any): value is Blob {
|
||||
return typeof Blob !== 'undefined' && value instanceof Blob;
|
||||
}
|
||||
|
||||
function isFormData(value: any): value is FormData {
|
||||
return typeof FormData !== "undefined" && value instanceof FormData;
|
||||
}
|
||||
|
||||
export class ResponseError extends Error {
|
||||
override name: "ResponseError" = "ResponseError";
|
||||
constructor(public response: Response, msg?: string) {
|
||||
super(msg);
|
||||
}
|
||||
}
|
||||
|
||||
export class FetchError extends Error {
|
||||
override name: "FetchError" = "FetchError";
|
||||
constructor(public cause: Error, msg?: string) {
|
||||
super(msg);
|
||||
}
|
||||
}
|
||||
|
||||
export class RequiredError extends Error {
|
||||
override name: "RequiredError" = "RequiredError";
|
||||
constructor(public field: string, msg?: string) {
|
||||
super(msg);
|
||||
}
|
||||
}
|
||||
|
||||
export const COLLECTION_FORMATS = {
|
||||
csv: ",",
|
||||
ssv: " ",
|
||||
tsv: "\t",
|
||||
pipes: "|",
|
||||
};
|
||||
|
||||
export type FetchAPI = WindowOrWorkerGlobalScope['fetch'];
|
||||
|
||||
export type Json = any;
|
||||
export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD';
|
||||
export type HTTPHeaders = { [key: string]: string };
|
||||
export type HTTPQuery = { [key: string]: string | number | null | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery };
|
||||
export type HTTPBody = Json | FormData | URLSearchParams;
|
||||
export type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody };
|
||||
export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original';
|
||||
|
||||
export type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise<RequestInit>
|
||||
|
||||
export interface FetchParams {
|
||||
url: string;
|
||||
init: RequestInit;
|
||||
}
|
||||
|
||||
export interface RequestOpts {
|
||||
path: string;
|
||||
method: HTTPMethod;
|
||||
headers: HTTPHeaders;
|
||||
query?: HTTPQuery;
|
||||
body?: HTTPBody;
|
||||
}
|
||||
|
||||
export function querystring(params: HTTPQuery, prefix: string = ''): string {
|
||||
return Object.keys(params)
|
||||
.map(key => querystringSingleKey(key, params[key], prefix))
|
||||
.filter(part => part.length > 0)
|
||||
.join('&');
|
||||
}
|
||||
|
||||
function querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array<string | number | null | boolean> | Set<string | number | null | boolean> | HTTPQuery, keyPrefix: string = ''): string {
|
||||
const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);
|
||||
if (value instanceof Array) {
|
||||
const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue)))
|
||||
.join(`&${encodeURIComponent(fullKey)}=`);
|
||||
return `${encodeURIComponent(fullKey)}=${multiValue}`;
|
||||
}
|
||||
if (value instanceof Set) {
|
||||
const valueAsArray = Array.from(value);
|
||||
return querystringSingleKey(key, valueAsArray, keyPrefix);
|
||||
}
|
||||
if (value instanceof Date) {
|
||||
return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;
|
||||
}
|
||||
if (value instanceof Object) {
|
||||
return querystring(value as HTTPQuery, fullKey);
|
||||
}
|
||||
return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;
|
||||
}
|
||||
|
||||
export function mapValues(data: any, fn: (item: any) => any) {
|
||||
return Object.keys(data).reduce(
|
||||
(acc, key) => ({ ...acc, [key]: fn(data[key]) }),
|
||||
{}
|
||||
);
|
||||
}
|
||||
|
||||
export function canConsumeForm(consumes: Consume[]): boolean {
|
||||
for (const consume of consumes) {
|
||||
if ('multipart/form-data' === consume.contentType) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
export interface Consume {
|
||||
contentType: string;
|
||||
}
|
||||
|
||||
export interface RequestContext {
|
||||
fetch: FetchAPI;
|
||||
url: string;
|
||||
init: RequestInit;
|
||||
}
|
||||
|
||||
export interface ResponseContext {
|
||||
fetch: FetchAPI;
|
||||
url: string;
|
||||
init: RequestInit;
|
||||
response: Response;
|
||||
}
|
||||
|
||||
export interface ErrorContext {
|
||||
fetch: FetchAPI;
|
||||
url: string;
|
||||
init: RequestInit;
|
||||
error: unknown;
|
||||
response?: Response;
|
||||
}
|
||||
|
||||
export interface Middleware {
|
||||
pre?(context: RequestContext): Promise<FetchParams | void>;
|
||||
post?(context: ResponseContext): Promise<Response | void>;
|
||||
onError?(context: ErrorContext): Promise<Response | void>;
|
||||
}
|
||||
|
||||
export interface ApiResponse<T> {
|
||||
raw: Response;
|
||||
value(): Promise<T>;
|
||||
}
|
||||
|
||||
export interface ResponseTransformer<T> {
|
||||
(json: any): T;
|
||||
}
|
||||
|
||||
export class JSONApiResponse<T> {
|
||||
constructor(public raw: Response, private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue) {}
|
||||
|
||||
async value(): Promise<T> {
|
||||
return this.transformer(await this.raw.json());
|
||||
}
|
||||
}
|
||||
|
||||
export class VoidApiResponse {
|
||||
constructor(public raw: Response) {}
|
||||
|
||||
async value(): Promise<void> {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
export class BlobApiResponse {
|
||||
constructor(public raw: Response) {}
|
||||
|
||||
async value(): Promise<Blob> {
|
||||
return await this.raw.blob();
|
||||
};
|
||||
}
|
||||
|
||||
export class TextApiResponse {
|
||||
constructor(public raw: Response) {}
|
||||
|
||||
async value(): Promise<string> {
|
||||
return await this.raw.text();
|
||||
};
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user