From f830f05d3378dbb3b2f01d8f2d1da52edeb3cd34 Mon Sep 17 00:00:00 2001
From: barcigabri <33417277+barcigabri@users.noreply.github.com>
Date: Wed, 1 Jul 2026 03:30:38 +0000
Subject: [PATCH] chore: updating templates for typescript-axios sdk
---
.../typescript-axios/README.mustache | 141 ++++++++----------
.../typescript-axios/apiInner.mustache | 71 +++++----
.../typescript-axios/index.mustache | 5 +-
.../typescript-axios/package.mustache | 36 ++---
.../typescript-axios/tsconfig.mustache | 1 -
5 files changed, 111 insertions(+), 143 deletions(-)
diff --git a/templates/openapi-generator/typescript-axios/README.mustache b/templates/openapi-generator/typescript-axios/README.mustache
index 3a33b501..9a297f7c 100644
--- a/templates/openapi-generator/typescript-axios/README.mustache
+++ b/templates/openapi-generator/typescript-axios/README.mustache
@@ -1,113 +1,96 @@
-# FattureInCloud TypeScript SDK
-
-[](https://www.npmjs.com/package/@fattureincloud/fattureincloud-ts-sdk) 
-
-{{npmName}} - TypeScript/JavaScript client for Fatture in Cloud API.
-
## {{npmName}}@{{npmVersion}}
-This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
+This generator creates TypeScript/JavaScript client that utilizes [axios](https://github.com/axios/axios). The generated Node module can be used in the following environments:
+
+Environment
+* Node.js
+* Webpack
+* Browserify
-- API version: {{appVersion}}
-- Package version: {{npmVersion}}
+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 should be automatically resolved via `package.json`. ([Reference](http://www.typescriptlang.org/docs/handbook/typings-for-npm-packages.html))
-
-
-{{#infoUrl}}
- For more information, please visit [{{{infoUrl}}}]({{{infoUrl}}})
-{{/infoUrl}}
-
-## Installation
-
-### For [Node.js](https://nodejs.org/)
+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))
-Using npm:
+### Building
-```shell
-npm install {{{npmName}}}
+To build and compile the typescript sources to javascript use:
```
-
-Using yarn:
-
-```shell
-yarn add {{{npmName}}}
+npm install
+npm run build
```
-## Getting Started
+### Publishing
-Please follow the [installation](#installation) instruction and execute the following TS code:
+First build the package then run `npm publish`
-```javascript
-import { Configuration, ArchiveApi , CreateArchiveDocumentRequest } from '@fattureincloud/fattureincloud-ts-sdk';
+### Consuming
-// Configure OAuth2 access token for authorization:
-const apiConfig = new Configuration({
- accessToken: "YOUR ACCESS TOKEN"
-});
+navigate to the folder of your consuming project and run one of the following commands.
-let apiInstance = new ArchiveApi(apiConfig);
-let companyId = 12345; // Number | The ID of the company.
+_published:_
-let createArchiveDocumentRequest: CreateArchiveDocumentRequest = {"data":{"date":"2021-08-20","category":"Altri documenti","description":"spesa 1","attachment_token":"ibfjdbf94ey9w94g3w894qbasrga"}} // CreateArchiveDocumentRequest | The Archive Document.
+```
+npm install {{npmName}}@{{npmVersion}} --save
+```
-apiInstance.createArchiveDocument(companyId, createArchiveDocumentRequest).then((data) => {
- console.log('API called successfully. Returned data: ' + data);
-}, (error) => {
- console.error(error);
-});
+_unPublished (not recommended):_
+
+```
+npm install PATH_TO_GENERATED_PACKAGE --save
```
-## Documentation for API Endpoints
+### Documentation for API Endpoints
-All URIs are relative to *{{basePath}}*
+All URIs are relative to *{{{basePath}}}*
Class | Method | HTTP request | Description
------------ | ------------- | ------------- | -------------
-{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}*{{classname}}* | [**{{operationId}}**](docs/{{apiDocPath}}{{classname}}.md#{{operationId}}) | **{{httpMethod}}** {{path}} | {{summary}}
+{{#apiInfo}}{{#apis}}{{#operations}}{{#operation}}*{{classname}}* | [**{{operationId}}**]({{apiDocPath}}{{classname}}.md#{{operationIdLowerCase}}) | **{{httpMethod}}** {{path}} | {{summary}}
{{/operation}}{{/operations}}{{/apis}}{{/apiInfo}}
-## Documentation for Models
+### Documentation For Models
-{{#models}}{{#model}} - [{{classname}}](docs/{{modelDocPath}}{{classname}}.md)
+{{#models}}{{#model}} - [{{{classname}}}]({{modelDocPath}}{{{classname}}}.md)
{{/model}}{{/models}}
-## Documentation for Authorization
+
+## Documentation For Authorization
-{{^authMethods}}
- All endpoints do not require authorization.
-{{/authMethods}}
+{{^authMethods}}Endpoints do not require authorization.{{/authMethods}}
+{{#hasAuthMethods}}Authentication schemes defined for the API:{{/hasAuthMethods}}
{{#authMethods}}
- {{#last}} Authentication schemes defined for the API:{{/last}}
-
- ### {{name}}
-
- {{#isApiKey}}
-
- - **Type**: API key
- - **API key parameter name**: {{keyParamName}}
- - **Location**: {{#isKeyInQuery}}URL query string{{/isKeyInQuery}}{{#isKeyInHeader}}HTTP header{{/isKeyInHeader}}
- {{/isApiKey}}
- {{#isBasic}}
- {{#isBasicBasic}}
- - **Type**: HTTP basic authentication
- {{/isBasicBasic}}
- {{#isBasicBearer}}
- - **Type**: Bearer authentication{{#bearerFormat}} ({{{.}}}){{/bearerFormat}}
- {{/isBasicBearer}}
- {{/isBasic}}
- {{#isOAuth}}
-
- - **Type**: OAuth
- - **Flow**: {{flow}}
- - **Authorization URL**: {{authorizationUrl}}
- - **Scopes**: {{^scopes}}N/A{{/scopes}}
- {{#scopes}} - _{{scope}}_: {{description}}
- {{/scopes}}
- {{/isOAuth}}
+
+### {{{name}}}
+
+{{#isApiKey}}
+- **Type**: API key
+- **API key parameter name**: {{{keyParamName}}}
+- **Location**: {{#isKeyInQuery}}URL query string{{/isKeyInQuery}}{{#isKeyInHeader}}HTTP header{{/isKeyInHeader}}
+{{/isApiKey}}
+{{#isBasic}}
+{{#isBasicBasic}}
+- **Type**: HTTP basic authentication
+{{/isBasicBasic}}
+{{#isBasicBearer}}
+- **Type**: Bearer authentication{{#bearerFormat}} ({{{.}}}){{/bearerFormat}}
+{{/isBasicBearer}}
+{{#isHttpSignature}}
+- **Type**: HTTP signature authentication
+{{/isHttpSignature}}
+{{/isBasic}}
+{{#isOAuth}}
+- **Type**: OAuth
+- **Flow**: {{{flow}}}
+- **Authorization URL**: {{{authorizationUrl}}}
+- **Scopes**: {{^scopes}}N/A{{/scopes}}
+{{#scopes}} - **{{{scope}}}**: {{{description}}}
+{{/scopes}}
+{{/isOAuth}}
{{/authMethods}}
diff --git a/templates/openapi-generator/typescript-axios/apiInner.mustache b/templates/openapi-generator/typescript-axios/apiInner.mustache
index 1b761c73..f68146f6 100644
--- a/templates/openapi-generator/typescript-axios/apiInner.mustache
+++ b/templates/openapi-generator/typescript-axios/apiInner.mustache
@@ -3,6 +3,7 @@
/* eslint-disable */
{{>licenseInfo}}
+
import type { Configuration } from '{{apiRelativeToRoot}}configuration{{importFileExtension}}';
import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
import globalAxios from 'axios';
@@ -10,16 +11,18 @@ import globalAxios from 'axios';
// URLSearchParams not necessarily used
// @ts-ignore
import { URL, URLSearchParams } from 'url';
+{{#multipartFormData}}
import FormData from 'form-data'
+{{/multipartFormData}}
{{/withNodeImports}}
// Some imports not used depending on template conditions
// @ts-ignore
-import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from '{{apiRelativeToRoot}}common{{importFileExtension}}';
+import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction, replaceWithSerializableTypeIfNeeded{{#withAWSV4Signature}}, setAWS4SignatureInterceptor{{/withAWSV4Signature}} } from '{{apiRelativeToRoot}}common{{importFileExtension}}';
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '{{apiRelativeToRoot}}base{{importFileExtension}}';
{{#imports}}
// @ts-ignore
-import type { {{classname}} } from '{{apiRelativeToRoot}}{{tsModelPackage}}{{importFileExtension}}';
+import type { {{classname}} } from '{{apiRelativeToRoot}}{{tsModelPackage}}{{#importFileExtension}}/index{{importFileExtension}}{{/importFileExtension}}';
{{/imports}}
{{/withSeparateModelsAndApi}}
{{^withSeparateModelsAndApi}}
@@ -28,7 +31,6 @@ import type { {{classname}} } from '{{apiRelativeToRoot}}{{tsModelPackage}}{{imp
/**
* {{classname}} - axios parameter creator{{#description}}
* {{&description}}{{/description}}
- * @export
*/
export const {{classname}}AxiosParamCreator = function (configuration?: Configuration) {
return {
@@ -53,7 +55,7 @@ export const {{classname}}AxiosParamCreator = function (configuration?: Configur
{{/required}}
{{/allParams}}
const localVarPath = `{{{path}}}`{{#pathParams}}
- .replace(`{${"{{baseName}}"}}`, encodeURIComponent(String({{paramName}}))){{/pathParams}};
+ .replace({{=<< >>=}}'{<>}'<<={{ }}=>>, encodeURIComponent(String({{paramName}}))){{/pathParams}};
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
let baseOptions;
@@ -69,6 +71,10 @@ export const {{classname}}AxiosParamCreator = function (configuration?: Configur
{{#authMethods}}
// authentication {{name}} required
{{#isApiKey}}
+ {{#withAWSV4Signature}}
+ // aws v4 signature authentication required
+ await setAWS4SignatureInterceptor(globalAxios, configuration)
+ {{/withAWSV4Signature}}
{{#isKeyInHeader}}
await setApiKeyToObject(localVarHeaderParameter, "{{keyParamName}}", configuration)
{{/isKeyInHeader}}
@@ -160,7 +166,7 @@ export const {{classname}}AxiosParamCreator = function (configuration?: Configur
if ({{paramName}}) {
{{#isCollectionFormatMulti}}
{{#contentType}}
- localVarFormParams.append('{{baseName}}', new Blob([JSON.stringify({{paramName}})], { type: "{{contentType}}", }));
+ localVarFormParams.append('{{baseName}}', new Blob([JSON.stringify({{paramName}}, replaceWithSerializableTypeIfNeeded)], { type: "{{contentType}}", }));
{{/contentType}}
{{^contentType}}
{{paramName}}.forEach((element) => {
@@ -178,13 +184,20 @@ export const {{classname}}AxiosParamCreator = function (configuration?: Configur
localVarFormParams.append('{{baseName}}', {{paramName}} as any);{{/isBoolean}}{{/isPrimitiveType}}{{#isPrimitiveType}}{{#isBoolean}}
localVarFormParams.append('{{baseName}}', String({{paramName}}) as any);{{/isBoolean}}{{/isPrimitiveType}}{{^isPrimitiveType}}{{#isEnumRef}}
localVarFormParams.append('{{baseName}}', {{paramName}} as any);{{/isEnumRef}}{{^isEnumRef}}
- localVarFormParams.append('{{baseName}}', new Blob([JSON.stringify({{paramName}})], { type: "application/json", }));{{/isEnumRef}}{{/isPrimitiveType}}{{/multipartFormData}}
+ localVarFormParams.append('{{baseName}}', new Blob([JSON.stringify({{paramName}}, replaceWithSerializableTypeIfNeeded)], { type: "application/json", }));{{/isEnumRef}}{{/isPrimitiveType}}{{/multipartFormData}}
}{{/isArray}}
- {{/formParams}}{{/vendorExtensions}}
- {{#vendorExtensions}}{{#hasFormParams}}{{^multipartFormData}}
- localVarHeaderParameter['Content-Type'] = 'application/x-www-form-urlencoded';{{/multipartFormData}}{{#multipartFormData}}
- localVarHeaderParameter['Content-Type'] = 'multipart/form-data';{{/multipartFormData}}
- {{/hasFormParams}}{{/vendorExtensions}}
+ {{/formParams}}
+ {{/vendorExtensions}}
+ {{#vendorExtensions}}
+ {{#hasFormParams}}
+ {{^multipartFormData}}
+ localVarHeaderParameter['Content-Type'] = 'application/x-www-form-urlencoded';
+ {{/multipartFormData}}
+ {{#multipartFormData}}
+ localVarHeaderParameter['Content-Type'] = 'multipart/form-data';
+ {{/multipartFormData}}
+ {{/hasFormParams}}
+ {{/vendorExtensions}}
{{#bodyParam}}
{{^consumes}}
localVarHeaderParameter['Content-Type'] = 'application/json';
@@ -192,17 +205,19 @@ export const {{classname}}AxiosParamCreator = function (configuration?: Configur
{{#consumes.0}}
localVarHeaderParameter['Content-Type'] = '{{{mediaType}}}';
{{/consumes.0}}
- localVarHeaderParameter['User-Agent'] = 'FattureInCloud/{{{npmVersion}}}/TypeScript-SDK';
-
{{/bodyParam}}
+ {{#hasProduces}}
+ localVarHeaderParameter['Accept'] = '{{#produces}}{{{mediaType}}}{{^-last}},{{/-last}}{{/produces}}';
+ {{/hasProduces}}
+
{{#headerParams}}
{{#isArray}}
if ({{paramName}}) {
{{#uniqueItems}}
- let mapped = Array.from({{paramName}}).map(value => ("{{{dataType}}}" !== "Set") ? JSON.stringify(value) : (value || ""));
+ let mapped = Array.from({{paramName}}).map(value => ("{{{dataType}}}" !== "Set") ? JSON.stringify(value, replaceWithSerializableTypeIfNeeded) : (value || ""));
{{/uniqueItems}}
{{^uniqueItems}}
- let mapped = {{paramName}}.map(value => ("{{{dataType}}}" !== "Array") ? JSON.stringify(value) : (value || ""));
+ let mapped = {{paramName}}.map(value => ("{{{dataType}}}" !== "Array") ? JSON.stringify(value, replaceWithSerializableTypeIfNeeded) : (value || ""));
{{/uniqueItems}}
localVarHeaderParameter['{{baseName}}'] = mapped.join(COLLECTION_FORMATS["{{collectionFormat}}"]);
}
@@ -217,7 +232,7 @@ export const {{classname}}AxiosParamCreator = function (configuration?: Configur
{{! isString is falsy also for $ref that defines a string or enum type}}
localVarHeaderParameter['{{baseName}}'] = typeof {{paramName}} === 'string'
? {{paramName}}
- : JSON.stringify({{paramName}});
+ : JSON.stringify({{paramName}}, replaceWithSerializableTypeIfNeeded);
{{/isString}}
}
{{/isArray}}
@@ -244,7 +259,6 @@ export const {{classname}}AxiosParamCreator = function (configuration?: Configur
/**
* {{classname}} - functional programming interface{{#description}}
* {{{.}}}{{/description}}
- * @export
*/
export const {{classname}}Fp = function(configuration?: Configuration) {
const localVarAxiosParamCreator = {{classname}}AxiosParamCreator(configuration)
@@ -275,7 +289,6 @@ export const {{classname}}Fp = function(configuration?: Configuration) {
/**
* {{classname}} - factory interface{{#description}}
* {{&description}}{{/description}}
- * @export
*/
export const {{classname}}Factory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
const localVarFp = {{classname}}Fp(configuration)
@@ -318,8 +331,6 @@ export const {{classname}}Factory = function (configuration?: Configuration, bas
/**
* {{classname}} - interface{{#description}}
* {{&description}}{{/description}}
- * @export
- * @interface {{classname}}
*/
export interface {{classname}}Interface {
{{#operation}}
@@ -341,7 +352,6 @@ export interface {{classname}}Interface {
* @param {*} [options] Override http request option.{{#isDeprecated}}
* @deprecated{{/isDeprecated}}
* @throws {RequiredError}
- * @memberof {{classname}}Interface
*/
{{#useSingleRequestParameter}}
{{nickname}}({{#allParams.0}}requestParameters{{^hasRequiredParams}}?{{/hasRequiredParams}}: {{classname}}{{operationIdCamelCase}}Request, {{/allParams.0}}options?: RawAxiosRequestConfig): AxiosPromise<{{{returnType}}}{{^returnType}}void{{/returnType}}>;
@@ -359,16 +369,14 @@ export interface {{classname}}Interface {
{{#allParams.0}}
/**
* Request parameters for {{nickname}} operation in {{classname}}.
- * @export
- * @interface {{classname}}{{operationIdCamelCase}}Request
*/
export interface {{classname}}{{operationIdCamelCase}}Request {
{{#allParams}}
+ {{#description}}
/**
* {{description}}
- * @type {{=<% %>=}}{<%&dataType%>}<%={{ }}=%>
- * @memberof {{classname}}{{operationIdCamelCase}}
*/
+ {{/description}}
readonly {{paramName}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{#isNullable}} | null{{/isNullable}}{{/isEnum}}
{{^-last}}
@@ -382,9 +390,6 @@ export interface {{classname}}{{operationIdCamelCase}}Request {
/**
* {{classname}} - object-oriented interface{{#description}}
* {{{.}}}{{/description}}
- * @export
- * @class {{classname}}
- * @extends {BaseAPI}
*/
{{#withInterfaces}}
export class {{classname}} extends BaseAPI implements {{classname}}Interface {
@@ -411,7 +416,6 @@ export class {{classname}} extends BaseAPI {
* @param {*} [options] Override http request option.{{#isDeprecated}}
* @deprecated{{/isDeprecated}}
* @throws {RequiredError}
- * @memberof {{classname}}
*/
{{#useSingleRequestParameter}}
public {{nickname}}({{#allParams.0}}requestParameters: {{classname}}{{operationIdCamelCase}}Request{{^hasRequiredParams}} = {}{{/hasRequiredParams}}, {{/allParams.0}}options?: RawAxiosRequestConfig) {
@@ -435,10 +439,6 @@ export class {{classname}} extends BaseAPI {
{{#allParams}}
{{#isEnum}}
{{#stringEnums}}
-/**
- * @export
- * @enum {string}
- */
export enum {{operationIdCamelCase}}{{enumName}} {
{{#allowableValues}}
{{#enumVars}}
@@ -448,13 +448,10 @@ export enum {{operationIdCamelCase}}{{enumName}} {
}
{{/stringEnums}}
{{^stringEnums}}
-/**
- * @export
- */
export const {{operationIdCamelCase}}{{enumName}} = {
{{#allowableValues}}
{{#enumVars}}
- {{{name}}}: {{{value}}}{{^-last}},{{/-last}}
+ {{{name}}}: {{{value}}},
{{/enumVars}}
{{/allowableValues}}
} as const;
diff --git a/templates/openapi-generator/typescript-axios/index.mustache b/templates/openapi-generator/typescript-axios/index.mustache
index edc5480d..fca806d2 100644
--- a/templates/openapi-generator/typescript-axios/index.mustache
+++ b/templates/openapi-generator/typescript-axios/index.mustache
@@ -2,8 +2,7 @@
/* eslint-disable */
{{>licenseInfo}}
-export * from "./src/filter";
-export * from "./src/oauth2";
+
export * from "./api{{importFileExtension}}";
export * from "./configuration{{importFileExtension}}";
-{{#withSeparateModelsAndApi}}export * from "./{{tsModelPackage}}{{importFileExtension}}";{{/withSeparateModelsAndApi}}
+{{#withSeparateModelsAndApi}}export * from "./{{tsModelPackage}}{{#importFileExtension}}/index{{importFileExtension}}{{/importFileExtension}}";{{/withSeparateModelsAndApi}}
diff --git a/templates/openapi-generator/typescript-axios/package.mustache b/templates/openapi-generator/typescript-axios/package.mustache
index d0765f89..34ed22e3 100644
--- a/templates/openapi-generator/typescript-axios/package.mustache
+++ b/templates/openapi-generator/typescript-axios/package.mustache
@@ -1,8 +1,12 @@
{
"name": "{{npmName}}",
"version": "{{npmVersion}}",
- "description": "TypeScript SDK for the Fatture in Cloud API",
- "author": "Fatture in Cloud API Team",
+ "description": "OpenAPI client for {{npmName}}",
+ "author": "OpenAPI-Generator Contributors",
+ "repository": {
+ "type": "git",
+ "url": "https://{{gitHost}}/{{gitUserId}}/{{gitRepoId}}.git"
+ },
"keywords": [
"axios",
"typescript",
@@ -10,7 +14,7 @@
"openapi-generator",
"{{npmName}}"
],
- "license": "MIT",
+ "license": "{{licenseName}}",
"main": "./dist/index.js",
"typings": "./dist/index.d.ts",
{{#supportsES6}}
@@ -19,31 +23,17 @@
{{/supportsES6}}
"scripts": {
"build": "tsc{{#supportsES6}} && tsc -p tsconfig.esm.json{{/supportsES6}}",
- "prepare": "npm run build",
- "test": "mocha -r ts-node/register 'test/**/*.ts'"
+ "prepare": "npm run build"
},
"dependencies": {
- "axios": "^1.6.1",
- "form-data": "^4.0.0"
+ "axios": "{{axiosVersion}}"
+ {{#withAWSV4Signature}}
+ "aws4-axios": "^3.3.4"
+ {{/withAWSV4Signature}}
},
"devDependencies": {
"@types/node": "12.11.5 - 12.20.42",
- "typescript": "^4.0 || ^5.0",
- "ts-node": "^10.7.0",
- "chai": "^4.3.6",
- "@types/chai": "^4.3.0",
- "mocha": "^8.0.1",
- "@types/mocha": "^9.1.0",
- "sinon": "^7.2.0",
- "@types/sinon": "^10.0.11",
- "@typescript-eslint/eslint-plugin": "^5.22.0",
- "@typescript-eslint/parser": "^5.22.0",
- "eslint": "^8.14.0",
- "eslint-config-standard": "^17.0.0",
- "eslint-plugin-unused-imports": "^2.0.0",
- "eslint-plugin-import": "^2.26.0",
- "eslint-plugin-n": "^15.2.0",
- "eslint-plugin-promise": "^6.0.0"
+ "typescript": "^4.0 || ^5.0"
}{{#npmRepository}},{{/npmRepository}}
{{#npmRepository}}
"publishConfig": {
diff --git a/templates/openapi-generator/typescript-axios/tsconfig.mustache b/templates/openapi-generator/typescript-axios/tsconfig.mustache
index 61bb29f6..d0ebbd47 100644
--- a/templates/openapi-generator/typescript-axios/tsconfig.mustache
+++ b/templates/openapi-generator/typescript-axios/tsconfig.mustache
@@ -3,7 +3,6 @@
"declaration": true,
"target": "{{#supportsES6}}ES6{{/supportsES6}}{{^supportsES6}}ES5{{/supportsES6}}",
"module": "commonjs",
- "esModuleInterop": true,
"noImplicitAny": true,
"outDir": "dist",
"rootDir": ".",