@orval/angular 7.9.0 → 7.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +42 -38
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ClientDependenciesBuilder, ClientTitleBuilder, ClientHeaderBuilder, ClientFooterBuilder, ClientBuilder
|
|
1
|
+
import { ClientGeneratorsBuilder, ClientDependenciesBuilder, ClientTitleBuilder, ClientHeaderBuilder, ClientFooterBuilder, ClientBuilder } from '@orval/core';
|
|
2
2
|
|
|
3
3
|
declare const getAngularDependencies: ClientDependenciesBuilder;
|
|
4
4
|
declare const generateAngularTitle: ClientTitleBuilder;
|
package/dist/index.js
CHANGED
|
@@ -18,17 +18,17 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
|
|
20
20
|
// src/index.ts
|
|
21
|
-
var
|
|
22
|
-
__export(
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
23
|
builder: () => builder,
|
|
24
|
-
default: () =>
|
|
24
|
+
default: () => index_default,
|
|
25
25
|
generateAngular: () => generateAngular,
|
|
26
26
|
generateAngularFooter: () => generateAngularFooter,
|
|
27
27
|
generateAngularHeader: () => generateAngularHeader,
|
|
28
28
|
generateAngularTitle: () => generateAngularTitle,
|
|
29
29
|
getAngularDependencies: () => getAngularDependencies
|
|
30
30
|
});
|
|
31
|
-
module.exports = __toCommonJS(
|
|
31
|
+
module.exports = __toCommonJS(index_exports);
|
|
32
32
|
var import_core = require("@orval/core");
|
|
33
33
|
var ANGULAR_DEPENDENCIES = [
|
|
34
34
|
{
|
|
@@ -44,12 +44,19 @@ var ANGULAR_DEPENDENCIES = [
|
|
|
44
44
|
dependency: "@angular/common/http"
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
|
-
exports: [
|
|
47
|
+
exports: [
|
|
48
|
+
{ name: "Injectable", values: true },
|
|
49
|
+
{ name: "inject", values: true }
|
|
50
|
+
],
|
|
48
51
|
dependency: "@angular/core"
|
|
49
52
|
},
|
|
50
53
|
{
|
|
51
54
|
exports: [{ name: "Observable", values: true }],
|
|
52
55
|
dependency: "rxjs"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
exports: [{ name: "DeepNonNullable" }],
|
|
59
|
+
dependency: "@orval/core/src/utils/deep-non-nullable"
|
|
53
60
|
}
|
|
54
61
|
];
|
|
55
62
|
var returnTypesToWrite = /* @__PURE__ */ new Map();
|
|
@@ -65,19 +72,25 @@ var generateAngularHeader = ({
|
|
|
65
72
|
isGlobalMutator,
|
|
66
73
|
provideIn
|
|
67
74
|
}) => `
|
|
68
|
-
${isRequestOptions && !isGlobalMutator ? `
|
|
69
|
-
headers?: HttpHeaders |
|
|
70
|
-
[header: string]: string | string[];
|
|
71
|
-
};
|
|
75
|
+
${isRequestOptions && !isGlobalMutator ? `interface HttpClientOptions {
|
|
76
|
+
headers?: HttpHeaders | Record<string, string | string[]>;
|
|
72
77
|
context?: HttpContext;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
};
|
|
78
|
+
params?:
|
|
79
|
+
| HttpParams
|
|
80
|
+
| Record<string, string | number | boolean | ReadonlyArray<string | number | boolean>>;
|
|
77
81
|
reportProgress?: boolean;
|
|
78
|
-
responseType?: any;
|
|
79
82
|
withCredentials?: boolean;
|
|
80
|
-
|
|
83
|
+
credentials?: RequestCredentials;
|
|
84
|
+
keepalive?: boolean;
|
|
85
|
+
priority?: RequestPriority;
|
|
86
|
+
cache?: RequestCache;
|
|
87
|
+
mode?: RequestMode;
|
|
88
|
+
redirect?: RequestRedirect;
|
|
89
|
+
referrer?: string;
|
|
90
|
+
integrity?: string;
|
|
91
|
+
transferCache?: {includeHeaders?: string[]} | boolean;
|
|
92
|
+
timeout?: number;
|
|
93
|
+
}` : ""}
|
|
81
94
|
|
|
82
95
|
${isRequestOptions && isMutator ? `// eslint-disable-next-line
|
|
83
96
|
type ThirdParameter<T extends (...args: any) => any> = T extends (
|
|
@@ -90,9 +103,8 @@ ${isRequestOptions && isMutator ? `// eslint-disable-next-line
|
|
|
90
103
|
|
|
91
104
|
@Injectable(${provideIn ? `{ providedIn: '${(0, import_core.isBoolean)(provideIn) ? "root" : provideIn}' }` : ""})
|
|
92
105
|
export class ${title} {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
) {}`;
|
|
106
|
+
private readonly http = inject(HttpClient);
|
|
107
|
+
`;
|
|
96
108
|
var generateAngularFooter = ({
|
|
97
109
|
operationNames
|
|
98
110
|
}) => {
|
|
@@ -133,9 +145,7 @@ var generateImplementation = ({
|
|
|
133
145
|
const dataType = response.definition.success || "unknown";
|
|
134
146
|
returnTypesToWrite.set(
|
|
135
147
|
operationName,
|
|
136
|
-
`export type ${(0, import_core.pascal)(
|
|
137
|
-
operationName
|
|
138
|
-
)}ClientResult = NonNullable<${dataType}>`
|
|
148
|
+
`export type ${(0, import_core.pascal)(operationName)}ClientResult = ${dataType === "null" ? "never" : `NonNullable<${dataType}>`};`
|
|
139
149
|
);
|
|
140
150
|
if (mutator) {
|
|
141
151
|
const mutatorConfig = (0, import_core.generateMutatorConfig)({
|
|
@@ -185,22 +195,16 @@ var generateImplementation = ({
|
|
|
185
195
|
hasSignal: false
|
|
186
196
|
});
|
|
187
197
|
const propsDefinition = (0, import_core.toObjectString)(props, "definition");
|
|
188
|
-
const
|
|
189
|
-
|
|
190
|
-
)
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
${(0, import_core.toObjectString)(
|
|
199
|
-
props,
|
|
200
|
-
"implementation"
|
|
201
|
-
)} ${isRequestOptions ? `options?: HttpClientOptions
|
|
202
|
-
` : ""} ): Observable<TData> {${bodyForm}
|
|
203
|
-
return this.http.${verb}<TData>(${options});
|
|
198
|
+
const isModelType = dataType !== "Blob" && dataType !== "string";
|
|
199
|
+
let functionName = operationName;
|
|
200
|
+
if (isModelType) functionName += `<TData = ${dataType}>`;
|
|
201
|
+
const overloads = isRequestOptions ? `${functionName}(${propsDefinition} options?: HttpClientOptions & { observe: 'events' }): Observable<HttpEvent<${isModelType ? "TData" : dataType}>>;
|
|
202
|
+
${functionName}(${propsDefinition} options?: HttpClientOptions & { observe: 'response' }): Observable<AngularHttpResponse<${isModelType ? "TData" : dataType}>>;
|
|
203
|
+
${functionName}(${propsDefinition} options?: HttpClientOptions & { observe?: 'body' }): Observable<${isModelType ? "TData" : dataType}>;` : "";
|
|
204
|
+
return ` ${overloads}
|
|
205
|
+
${functionName}(
|
|
206
|
+
${(0, import_core.toObjectString)(props, "implementation")} ${isRequestOptions ? `options?: HttpClientOptions & { observe?: any }` : ""}): Observable<any> {${bodyForm}
|
|
207
|
+
return this.http.${verb}${isModelType ? "<TData>" : ""}(${options});
|
|
204
208
|
}
|
|
205
209
|
`;
|
|
206
210
|
};
|
|
@@ -217,7 +221,7 @@ var angularClientBuilder = {
|
|
|
217
221
|
title: generateAngularTitle
|
|
218
222
|
};
|
|
219
223
|
var builder = () => () => angularClientBuilder;
|
|
220
|
-
var
|
|
224
|
+
var index_default = builder;
|
|
221
225
|
// Annotate the CommonJS export names for ESM import in node:
|
|
222
226
|
0 && (module.exports = {
|
|
223
227
|
builder,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n ClientBuilder,\n ClientDependenciesBuilder,\n ClientFooterBuilder,\n ClientGeneratorsBuilder,\n ClientHeaderBuilder,\n ClientTitleBuilder,\n generateFormDataAndUrlEncodedFunction,\n generateMutatorConfig,\n generateMutatorRequestOptions,\n generateOptions,\n generateVerbImports,\n GeneratorDependency,\n GeneratorOptions,\n GeneratorVerbOptions,\n isBoolean,\n pascal,\n sanitize,\n toObjectString,\n} from '@orval/core';\n\nconst ANGULAR_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'HttpClient', values: true },\n { name: 'HttpHeaders' },\n { name: 'HttpParams' },\n { name: 'HttpContext' },\n { name: 'HttpResponse', alias: 'AngularHttpResponse' }, // alias to prevent naming conflict with msw\n { name: 'HttpEvent' },\n ],\n dependency: '@angular/common/http',\n },\n {\n exports: [{ name: 'Injectable', values: true }],\n dependency: '@angular/core',\n },\n {\n exports: [{ name: 'Observable', values: true }],\n dependency: 'rxjs',\n },\n];\n\nconst returnTypesToWrite: Map<string, string> = new Map();\n\nexport const getAngularDependencies: ClientDependenciesBuilder = () =>\n ANGULAR_DEPENDENCIES;\n\nexport const generateAngularTitle: ClientTitleBuilder = (title) => {\n const sanTitle = sanitize(title);\n return `${pascal(sanTitle)}Service`;\n};\n\nexport const generateAngularHeader: ClientHeaderBuilder = ({\n title,\n isRequestOptions,\n isMutator,\n isGlobalMutator,\n provideIn,\n}) => `\n${\n isRequestOptions && !isGlobalMutator\n ? `type HttpClientOptions = {\n headers?: HttpHeaders | {\n [header: string]: string | string[];\n };\n context?: HttpContext;\n observe?: any;\n params?: HttpParams | {\n [param: string]: string | number | boolean | ReadonlyArray<string | number | boolean>;\n };\n reportProgress?: boolean;\n responseType?: any;\n withCredentials?: boolean;\n};`\n : ''\n}\n\n${\n isRequestOptions && isMutator\n ? `// eslint-disable-next-line\n type ThirdParameter<T extends (...args: any) => any> = T extends (\n config: any,\n httpClient: any,\n args: infer P,\n) => any\n ? P\n : never;`\n : ''\n}\n\n@Injectable(${\n provideIn\n ? `{ providedIn: '${isBoolean(provideIn) ? 'root' : provideIn}' }`\n : ''\n})\nexport class ${title} {\n constructor(\n private http: HttpClient,\n ) {}`;\n\nexport const generateAngularFooter: ClientFooterBuilder = ({\n operationNames,\n}) => {\n let footer = '};\\n\\n';\n\n operationNames.forEach((operationName) => {\n if (returnTypesToWrite.has(operationName)) {\n footer += returnTypesToWrite.get(operationName) + '\\n';\n }\n });\n\n return footer;\n};\n\nconst generateImplementation = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props,\n verb,\n override,\n formData,\n formUrlEncoded,\n paramsSerializer,\n }: GeneratorVerbOptions,\n { route, context }: GeneratorOptions,\n) => {\n const isRequestOptions = override?.requestOptions !== false;\n const isFormData = override?.formData.disabled === false;\n const isFormUrlEncoded = override?.formUrlEncoded !== false;\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n const dataType = response.definition.success || 'unknown';\n\n returnTypesToWrite.set(\n operationName,\n `export type ${pascal(\n operationName,\n )}ClientResult = NonNullable<${dataType}>`,\n );\n\n if (mutator) {\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal: false,\n isExactOptionalPropertyTypes,\n });\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override?.requestOptions,\n mutator.hasThirdArg,\n )\n : '';\n\n const propsImplementation =\n mutator.bodyTypeName && body.definition\n ? toObjectString(props, 'implementation').replace(\n new RegExp(`(\\\\w*):\\\\s?${body.definition}`),\n `$1: ${mutator.bodyTypeName}<${body.definition}>`,\n )\n : toObjectString(props, 'implementation');\n\n return ` ${operationName}<TData = ${dataType}>(\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasThirdArg\n ? `options?: ThirdParameter<typeof ${mutator.name}>`\n : ''\n }) {${bodyForm}\n return ${mutator.name}<TData>(\n ${mutatorConfig},\n this.http,\n ${requestOptions});\n }\n `;\n }\n\n const options = generateOptions({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n requestOptions: override?.requestOptions,\n isFormData,\n isFormUrlEncoded,\n paramsSerializer,\n paramsSerializerOptions: override?.paramsSerializerOptions,\n isAngular: true,\n isExactOptionalPropertyTypes,\n hasSignal: false,\n });\n\n const propsDefinition = toObjectString(props, 'definition');\n const overloads = isRequestOptions\n ? `${operationName}<TData = ${dataType}>(\\n ${propsDefinition} options?: Omit<HttpClientOptions, 'observe'> & { observe?: 'body' }\\n ): Observable<TData>;\n ${operationName}<TData = ${dataType}>(\\n ${propsDefinition} options?: Omit<HttpClientOptions, 'observe'> & { observe?: 'response' }\\n ): Observable<AngularHttpResponse<TData>>;\n ${operationName}<TData = ${dataType}>(\\n ${propsDefinition} options?: Omit<HttpClientOptions, 'observe'> & { observe?: 'events' }\\n ): Observable<HttpEvent<TData>>;`\n : '';\n\n return ` ${overloads}${operationName}<TData = ${dataType}>(\\n ${toObjectString(\n props,\n 'implementation',\n )} ${\n isRequestOptions ? `options?: HttpClientOptions\\n` : ''\n } ): Observable<TData> {${bodyForm}\n return this.http.${verb}<TData>(${options});\n }\n`;\n};\n\nexport const generateAngular: ClientBuilder = (verbOptions, options) => {\n const imports = generateVerbImports(verbOptions);\n const implementation = generateImplementation(verbOptions, options);\n\n return { implementation, imports };\n};\n\nconst angularClientBuilder: ClientGeneratorsBuilder = {\n client: generateAngular,\n header: generateAngularHeader,\n dependencies: getAngularDependencies,\n footer: generateAngularFooter,\n title: generateAngularTitle,\n};\n\nexport const builder = () => () => angularClientBuilder;\n\nexport default builder;\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n ClientBuilder,\n ClientDependenciesBuilder,\n ClientFooterBuilder,\n ClientGeneratorsBuilder,\n ClientHeaderBuilder,\n ClientTitleBuilder,\n generateFormDataAndUrlEncodedFunction,\n generateMutatorConfig,\n generateMutatorRequestOptions,\n generateOptions,\n generateVerbImports,\n GeneratorDependency,\n GeneratorOptions,\n GeneratorVerbOptions,\n isBoolean,\n pascal,\n sanitize,\n toObjectString,\n} from '@orval/core';\n\nconst ANGULAR_DEPENDENCIES: GeneratorDependency[] = [\n {\n exports: [\n { name: 'HttpClient', values: true },\n { name: 'HttpHeaders' },\n { name: 'HttpParams' },\n { name: 'HttpContext' },\n { name: 'HttpResponse', alias: 'AngularHttpResponse' }, // alias to prevent naming conflict with msw\n { name: 'HttpEvent' },\n ],\n dependency: '@angular/common/http',\n },\n {\n exports: [\n { name: 'Injectable', values: true },\n { name: 'inject', values: true },\n ],\n dependency: '@angular/core',\n },\n {\n exports: [{ name: 'Observable', values: true }],\n dependency: 'rxjs',\n },\n {\n exports: [{ name: 'DeepNonNullable' }],\n dependency: '@orval/core/src/utils/deep-non-nullable',\n },\n];\n\nconst returnTypesToWrite: Map<string, string> = new Map();\n\nexport const getAngularDependencies: ClientDependenciesBuilder = () =>\n ANGULAR_DEPENDENCIES;\n\nexport const generateAngularTitle: ClientTitleBuilder = (title) => {\n const sanTitle = sanitize(title);\n return `${pascal(sanTitle)}Service`;\n};\n\nexport const generateAngularHeader: ClientHeaderBuilder = ({\n title,\n isRequestOptions,\n isMutator,\n isGlobalMutator,\n provideIn,\n}) => `\n${\n isRequestOptions && !isGlobalMutator\n ? `interface HttpClientOptions {\n headers?: HttpHeaders | Record<string, string | string[]>;\n context?: HttpContext;\n params?:\n | HttpParams\n | Record<string, string | number | boolean | ReadonlyArray<string | number | boolean>>;\n reportProgress?: boolean;\n withCredentials?: boolean;\n credentials?: RequestCredentials;\n keepalive?: boolean;\n priority?: RequestPriority;\n cache?: RequestCache;\n mode?: RequestMode;\n redirect?: RequestRedirect;\n referrer?: string;\n integrity?: string;\n transferCache?: {includeHeaders?: string[]} | boolean;\n timeout?: number;\n}`\n : ''\n}\n\n${\n isRequestOptions && isMutator\n ? `// eslint-disable-next-line\n type ThirdParameter<T extends (...args: any) => any> = T extends (\n config: any,\n httpClient: any,\n args: infer P,\n) => any\n ? P\n : never;`\n : ''\n}\n\n@Injectable(${\n provideIn\n ? `{ providedIn: '${isBoolean(provideIn) ? 'root' : provideIn}' }`\n : ''\n})\nexport class ${title} {\n private readonly http = inject(HttpClient);\n`;\n\nexport const generateAngularFooter: ClientFooterBuilder = ({\n operationNames,\n}) => {\n let footer = '};\\n\\n';\n\n operationNames.forEach((operationName) => {\n if (returnTypesToWrite.has(operationName)) {\n footer += returnTypesToWrite.get(operationName) + '\\n';\n }\n });\n\n return footer;\n};\n\nconst generateImplementation = (\n {\n headers,\n queryParams,\n operationName,\n response,\n mutator,\n body,\n props,\n verb,\n override,\n formData,\n formUrlEncoded,\n paramsSerializer,\n }: GeneratorVerbOptions,\n { route, context }: GeneratorOptions,\n) => {\n const isRequestOptions = override?.requestOptions !== false;\n const isFormData = override?.formData.disabled === false;\n const isFormUrlEncoded = override?.formUrlEncoded !== false;\n const isExactOptionalPropertyTypes =\n !!context.output.tsconfig?.compilerOptions?.exactOptionalPropertyTypes;\n const bodyForm = generateFormDataAndUrlEncodedFunction({\n formData,\n formUrlEncoded,\n body,\n isFormData,\n isFormUrlEncoded,\n });\n\n const dataType = response.definition.success || 'unknown';\n\n returnTypesToWrite.set(\n operationName,\n `export type ${pascal(operationName)}ClientResult = ${\n dataType === 'null'\n ? 'never' // NonNullable<null> is the type never\n : `NonNullable<${dataType}>`\n };`,\n );\n\n if (mutator) {\n const mutatorConfig = generateMutatorConfig({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n isFormData,\n isFormUrlEncoded,\n hasSignal: false,\n isExactOptionalPropertyTypes,\n });\n\n const requestOptions = isRequestOptions\n ? generateMutatorRequestOptions(\n override?.requestOptions,\n mutator.hasThirdArg,\n )\n : '';\n\n const propsImplementation =\n mutator.bodyTypeName && body.definition\n ? toObjectString(props, 'implementation').replace(\n new RegExp(`(\\\\w*):\\\\s?${body.definition}`),\n `$1: ${mutator.bodyTypeName}<${body.definition}>`,\n )\n : toObjectString(props, 'implementation');\n\n return ` ${operationName}<TData = ${dataType}>(\\n ${propsImplementation}\\n ${\n isRequestOptions && mutator.hasThirdArg\n ? `options?: ThirdParameter<typeof ${mutator.name}>`\n : ''\n }) {${bodyForm}\n return ${mutator.name}<TData>(\n ${mutatorConfig},\n this.http,\n ${requestOptions});\n }\n `;\n }\n\n const options = generateOptions({\n route,\n body,\n headers,\n queryParams,\n response,\n verb,\n requestOptions: override?.requestOptions,\n isFormData,\n isFormUrlEncoded,\n paramsSerializer,\n paramsSerializerOptions: override?.paramsSerializerOptions,\n isAngular: true,\n isExactOptionalPropertyTypes,\n hasSignal: false,\n });\n\n const propsDefinition = toObjectString(props, 'definition');\n const isModelType = dataType !== 'Blob' && dataType !== 'string';\n let functionName = operationName;\n if (isModelType) functionName += `<TData = ${dataType}>`;\n\n const overloads = isRequestOptions\n ? `${functionName}(${propsDefinition} options?: HttpClientOptions & { observe: 'events' }): Observable<HttpEvent<${isModelType ? 'TData' : dataType}>>;\n ${functionName}(${propsDefinition} options?: HttpClientOptions & { observe: 'response' }): Observable<AngularHttpResponse<${isModelType ? 'TData' : dataType}>>;\n ${functionName}(${propsDefinition} options?: HttpClientOptions & { observe?: 'body' }): Observable<${isModelType ? 'TData' : dataType}>;`\n : '';\n\n return ` ${overloads}\n ${functionName}(\n ${toObjectString(props, 'implementation')} ${\n isRequestOptions ? `options?: HttpClientOptions & { observe?: any }` : ''\n }): Observable<any> {${bodyForm}\n return this.http.${verb}${isModelType ? '<TData>' : ''}(${options});\n }\n`;\n};\n\nexport const generateAngular: ClientBuilder = (verbOptions, options) => {\n const imports = generateVerbImports(verbOptions);\n const implementation = generateImplementation(verbOptions, options);\n\n return { implementation, imports };\n};\n\nconst angularClientBuilder: ClientGeneratorsBuilder = {\n client: generateAngular,\n header: generateAngularHeader,\n dependencies: getAngularDependencies,\n footer: generateAngularFooter,\n title: generateAngularTitle,\n};\n\nexport const builder = () => () => angularClientBuilder;\n\nexport default builder;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAmBO;AAEP,IAAM,uBAA8C;AAAA,EAClD;AAAA,IACE,SAAS;AAAA,MACP,EAAE,MAAM,cAAc,QAAQ,KAAK;AAAA,MACnC,EAAE,MAAM,cAAc;AAAA,MACtB,EAAE,MAAM,aAAa;AAAA,MACrB,EAAE,MAAM,cAAc;AAAA,MACtB,EAAE,MAAM,gBAAgB,OAAO,sBAAsB;AAAA;AAAA,MACrD,EAAE,MAAM,YAAY;AAAA,IACtB;AAAA,IACA,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,SAAS;AAAA,MACP,EAAE,MAAM,cAAc,QAAQ,KAAK;AAAA,MACnC,EAAE,MAAM,UAAU,QAAQ,KAAK;AAAA,IACjC;AAAA,IACA,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,SAAS,CAAC,EAAE,MAAM,cAAc,QAAQ,KAAK,CAAC;AAAA,IAC9C,YAAY;AAAA,EACd;AAAA,EACA;AAAA,IACE,SAAS,CAAC,EAAE,MAAM,kBAAkB,CAAC;AAAA,IACrC,YAAY;AAAA,EACd;AACF;AAEA,IAAM,qBAA0C,oBAAI,IAAI;AAEjD,IAAM,yBAAoD,MAC/D;AAEK,IAAM,uBAA2C,CAAC,UAAU;AACjE,QAAM,eAAW,sBAAS,KAAK;AAC/B,SAAO,OAAG,oBAAO,QAAQ,CAAC;AAC5B;AAEO,IAAM,wBAA6C,CAAC;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AAAA,EAEJ,oBAAoB,CAAC,kBACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAmBA,EACN;AAAA;AAAA,EAGE,oBAAoB,YAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQA,EACN;AAAA;AAAA,cAGE,YACI,sBAAkB,uBAAU,SAAS,IAAI,SAAS,SAAS,QAC3D,EACN;AAAA,eACe,KAAK;AAAA;AAAA;AAIb,IAAM,wBAA6C,CAAC;AAAA,EACzD;AACF,MAAM;AACJ,MAAI,SAAS;AAEb,iBAAe,QAAQ,CAAC,kBAAkB;AACxC,QAAI,mBAAmB,IAAI,aAAa,GAAG;AACzC,gBAAU,mBAAmB,IAAI,aAAa,IAAI;AAAA,IACpD;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,IAAM,yBAAyB,CAC7B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GACA,EAAE,OAAO,QAAQ,MACd;AA/IL;AAgJE,QAAM,oBAAmB,qCAAU,oBAAmB;AACtD,QAAM,cAAa,qCAAU,SAAS,cAAa;AACnD,QAAM,oBAAmB,qCAAU,oBAAmB;AACtD,QAAM,+BACJ,CAAC,GAAC,mBAAQ,OAAO,aAAf,mBAAyB,oBAAzB,mBAA0C;AAC9C,QAAM,eAAW,mDAAsC;AAAA,IACrD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,WAAW,SAAS,WAAW,WAAW;AAEhD,qBAAmB;AAAA,IACjB;AAAA,IACA,mBAAe,oBAAO,aAAa,CAAC,kBAClC,aAAa,SACT,UACA,eAAe,QAAQ,GAC7B;AAAA,EACF;AAEA,MAAI,SAAS;AACX,UAAM,oBAAgB,mCAAsB;AAAA,MAC1C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX;AAAA,IACF,CAAC;AAED,UAAM,iBAAiB,uBACnB;AAAA,MACE,qCAAU;AAAA,MACV,QAAQ;AAAA,IACV,IACA;AAEJ,UAAM,sBACJ,QAAQ,gBAAgB,KAAK,iBACzB,4BAAe,OAAO,gBAAgB,EAAE;AAAA,MACtC,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE;AAAA,MAC1C,OAAO,QAAQ,YAAY,IAAI,KAAK,UAAU;AAAA,IAChD,QACA,4BAAe,OAAO,gBAAgB;AAE5C,WAAO,IAAI,aAAa,YAAY,QAAQ;AAAA,MAAW,mBAAmB;AAAA,GACxE,oBAAoB,QAAQ,cACxB,mCAAmC,QAAQ,IAAI,MAC/C,EACN,MAAM,QAAQ;AAAA,eACH,QAAQ,IAAI;AAAA,QACnB,aAAa;AAAA;AAAA,QAEb,cAAc;AAAA;AAAA;AAAA,EAGpB;AAEA,QAAM,cAAU,6BAAgB;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,qCAAU;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,IACA,yBAAyB,qCAAU;AAAA,IACnC,WAAW;AAAA,IACX;AAAA,IACA,WAAW;AAAA,EACb,CAAC;AAED,QAAM,sBAAkB,4BAAe,OAAO,YAAY;AAC1D,QAAM,cAAc,aAAa,UAAU,aAAa;AACxD,MAAI,eAAe;AACnB,MAAI,YAAa,iBAAgB,YAAY,QAAQ;AAErD,QAAM,YAAY,mBACd,GAAG,YAAY,IAAI,eAAe,+EAA+E,cAAc,UAAU,QAAQ;AAAA,GACpJ,YAAY,IAAI,eAAe,2FAA2F,cAAc,UAAU,QAAQ;AAAA,GAC1J,YAAY,IAAI,eAAe,oEAAoE,cAAc,UAAU,QAAQ,OAChI;AAEJ,SAAO,IAAI,SAAS;AAAA,IAClB,YAAY;AAAA,UACV,4BAAe,OAAO,gBAAgB,CAAC,IACvC,mBAAmB,oDAAoD,EACzE,uBAAuB,QAAQ;AAAA,uBACZ,IAAI,GAAG,cAAc,YAAY,EAAE,IAAI,OAAO;AAAA;AAAA;AAGrE;AAEO,IAAM,kBAAiC,CAAC,aAAa,YAAY;AACtE,QAAM,cAAU,iCAAoB,WAAW;AAC/C,QAAM,iBAAiB,uBAAuB,aAAa,OAAO;AAElE,SAAO,EAAE,gBAAgB,QAAQ;AACnC;AAEA,IAAM,uBAAgD;AAAA,EACpD,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,OAAO;AACT;AAEO,IAAM,UAAU,MAAM,MAAM;AAEnC,IAAO,gBAAQ;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orval/angular",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.11.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -13,6 +13,6 @@
|
|
|
13
13
|
"lint": "eslint src/**/*.ts"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@orval/core": "7.
|
|
16
|
+
"@orval/core": "7.11.0"
|
|
17
17
|
}
|
|
18
18
|
}
|