@orval/angular 7.10.0 → 7.11.1
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.js +37 -33
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -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
|
};
|
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":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orval/angular",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.11.1",
|
|
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.1"
|
|
17
17
|
}
|
|
18
18
|
}
|