@mittwald/api-client-commons 3.0.1 → 3.0.3
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/cjs/core/Request.d.ts +1 -0
- package/dist/cjs/core/Request.js +4 -1
- package/dist/cjs/types/NullableOnNoRequiredKeysDeep.d.ts +3 -3
- package/dist/cjs/types/RequestFunction.test-types.d.ts +1 -0
- package/dist/cjs/types/RequestFunction.test-types.js +22 -0
- package/dist/cjs/types/RequestType.d.ts +10 -6
- package/dist/cjs/types/RequestType.test-types.d.ts +1 -0
- package/dist/cjs/types/RequestType.test-types.js +112 -0
- package/dist/cjs/types/Response.test-types.d.ts +1 -0
- package/dist/cjs/types/Response.test-types.js +43 -0
- package/dist/cjs/types/assertStatus.test-types.d.ts +1 -0
- package/dist/cjs/types/assertStatus.test-types.js +10 -0
- package/dist/esm/core/Request.d.ts +1 -0
- package/dist/esm/core/Request.js +4 -1
- package/dist/esm/types/NullableOnNoRequiredKeysDeep.d.ts +3 -3
- package/dist/esm/types/RequestFunction.test-types.d.ts +1 -0
- package/dist/esm/types/RequestFunction.test-types.js +21 -0
- package/dist/esm/types/RequestType.d.ts +10 -6
- package/dist/esm/types/RequestType.test-types.d.ts +1 -0
- package/dist/esm/types/RequestType.test-types.js +110 -0
- package/dist/esm/types/Response.test-types.d.ts +1 -0
- package/dist/esm/types/Response.test-types.js +70 -0
- package/dist/esm/types/assertStatus.test-types.d.ts +1 -0
- package/dist/esm/types/assertStatus.test-types.js +8 -0
- package/package.json +2 -3
|
@@ -8,5 +8,6 @@ export declare class Request<TOp extends OpenAPIOperation> {
|
|
|
8
8
|
constructor(axiosInstance: AxiosInstance, operationDescriptor: TOp, config?: RequestConfig<TOp>);
|
|
9
9
|
execute(): ResponsePromise<TOp>;
|
|
10
10
|
private buildAxiosConfig;
|
|
11
|
+
private makeAxiosHeaders;
|
|
11
12
|
}
|
|
12
13
|
export default Request;
|
package/dist/cjs/core/Request.js
CHANGED
|
@@ -24,11 +24,14 @@ class Request {
|
|
|
24
24
|
return {
|
|
25
25
|
url: openApiPath.buildUrl(),
|
|
26
26
|
method,
|
|
27
|
-
headers,
|
|
27
|
+
headers: headers ? this.makeAxiosHeaders(headers) : undefined,
|
|
28
28
|
data,
|
|
29
29
|
validateStatus: () => true,
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
|
+
makeAxiosHeaders(headers) {
|
|
33
|
+
return Object.fromEntries(Object.entries(headers).map(([key, value]) => [key, value === null || value === void 0 ? void 0 : value.toString()]));
|
|
34
|
+
}
|
|
32
35
|
}
|
|
33
36
|
exports.Request = Request;
|
|
34
37
|
exports.default = Request;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { HasRequiredKeys, PartialOnUndefinedDeep } from "type-fest";
|
|
2
|
-
type PartialOnNoRequiredKeysDeep<T> = PartialOnUndefinedDeep<{
|
|
1
|
+
import { HasRequiredKeys, OmitIndexSignature, PartialOnUndefinedDeep } from "type-fest";
|
|
2
|
+
type PartialOnNoRequiredKeysDeep<T> = PartialOnUndefinedDeep<OmitIndexSignature<{
|
|
3
3
|
[TKey in keyof T]: HasRequiredKeys<PartialOnNoRequiredKeysDeep<T[TKey]>> extends true ? T[TKey] : T[TKey] | undefined;
|
|
4
|
-
}
|
|
4
|
+
}>>;
|
|
5
5
|
export type NullableOnNoRequiredKeysDeep<T> = HasRequiredKeys<PartialOnNoRequiredKeysDeep<T>> extends true ? PartialOnNoRequiredKeysDeep<T> : PartialOnNoRequiredKeysDeep<T> | null;
|
|
6
6
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function ignoredTestEmptyRequestTypes() {
|
|
4
|
+
const f = {};
|
|
5
|
+
void f();
|
|
6
|
+
void f({
|
|
7
|
+
headers: {},
|
|
8
|
+
});
|
|
9
|
+
void f({
|
|
10
|
+
headers: { extra: true },
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function ignoredTestOptionalHeadersRequestTypes() {
|
|
14
|
+
const f = {};
|
|
15
|
+
void f();
|
|
16
|
+
void f({
|
|
17
|
+
headers: {},
|
|
18
|
+
});
|
|
19
|
+
void f({
|
|
20
|
+
headers: { extra: true },
|
|
21
|
+
});
|
|
22
|
+
}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { HttpHeaders, HttpPayload, PathParameters } from "./http.js";
|
|
2
|
-
type
|
|
2
|
+
type EmptyObject = Record<string, never>;
|
|
3
|
+
type EmptyRequestComponent = EmptyObject | null;
|
|
4
|
+
type RequestWithOptionalHeaders = {
|
|
5
|
+
headers?: HttpHeaders;
|
|
6
|
+
};
|
|
7
|
+
type RequestWithData<TData> = TData extends EmptyRequestComponent ? RequestWithOptionalHeaders : {
|
|
3
8
|
data: TData;
|
|
4
9
|
};
|
|
5
|
-
type RequestWithPathParameters<TPathParameters> = TPathParameters extends
|
|
10
|
+
type RequestWithPathParameters<TPathParameters> = TPathParameters extends EmptyRequestComponent ? RequestWithOptionalHeaders : {
|
|
6
11
|
pathParameters: TPathParameters;
|
|
7
12
|
};
|
|
8
|
-
type RequestWithHeaders<THeaders> = THeaders extends
|
|
9
|
-
headers: THeaders;
|
|
13
|
+
type RequestWithHeaders<THeaders> = THeaders extends EmptyRequestComponent ? RequestWithOptionalHeaders : {
|
|
14
|
+
headers: THeaders & HttpHeaders;
|
|
10
15
|
};
|
|
11
|
-
type
|
|
12
|
-
export type RequestType<TData extends HttpPayload = null, TPathParameters extends PathParameters | null = null, THeader extends HttpHeaders | null = null> = TData | TPathParameters | THeader extends null ? EmptyRequest : RequestWithData<TData> & RequestWithPathParameters<TPathParameters> & RequestWithHeaders<THeader>;
|
|
16
|
+
export type RequestType<TData extends HttpPayload = EmptyRequestComponent, TPathParameters extends PathParameters | EmptyRequestComponent = EmptyRequestComponent, THeader extends HttpHeaders | EmptyRequestComponent = EmptyRequestComponent> = TData | TPathParameters | THeader extends EmptyRequestComponent ? RequestWithOptionalHeaders : RequestWithData<TData> & RequestWithPathParameters<TPathParameters> & RequestWithHeaders<THeader>;
|
|
13
17
|
export type AnyRequest = RequestType<any, any, any>;
|
|
14
18
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tsd_1 = require("tsd");
|
|
4
|
+
function ignoredTestEmptyRequestTypes() {
|
|
5
|
+
(0, tsd_1.expectAssignable)({});
|
|
6
|
+
// @ts-expect-error Not assignable
|
|
7
|
+
(0, tsd_1.expectAssignable)({ extra: true });
|
|
8
|
+
// @ts-expect-error Not assignable
|
|
9
|
+
(0, tsd_1.expectAssignable)({ data: {} });
|
|
10
|
+
// @ts-expect-error Not assignable
|
|
11
|
+
(0, tsd_1.expectAssignable)({ data: null });
|
|
12
|
+
// @ts-expect-error Not assignable
|
|
13
|
+
(0, tsd_1.expectAssignable)({ pathParameters: {} });
|
|
14
|
+
}
|
|
15
|
+
function ignoredTestRequestTypesWithDataType() {
|
|
16
|
+
(0, tsd_1.expectAssignable)({ data: { foo: "" } });
|
|
17
|
+
// @ts-expect-error Not assignable
|
|
18
|
+
(0, tsd_1.expectAssignable)({});
|
|
19
|
+
(0, tsd_1.expectAssignable)({
|
|
20
|
+
// @ts-expect-error Not assignable
|
|
21
|
+
data: { foo: "", extra: "" },
|
|
22
|
+
});
|
|
23
|
+
// @ts-expect-error Not assignable
|
|
24
|
+
(0, tsd_1.expectAssignable)({ data: { noFoo: "" } });
|
|
25
|
+
}
|
|
26
|
+
function ignoredTestRequestTypesWithPathParameters() {
|
|
27
|
+
(0, tsd_1.expectAssignable)({
|
|
28
|
+
data: { foo: "" },
|
|
29
|
+
pathParameters: { bar: "" },
|
|
30
|
+
});
|
|
31
|
+
(0, tsd_1.expectAssignable)({
|
|
32
|
+
pathParameters: { bar: "" },
|
|
33
|
+
});
|
|
34
|
+
// @ts-expect-error Not assignable
|
|
35
|
+
(0, tsd_1.expectAssignable)({});
|
|
36
|
+
(0, tsd_1.expectAssignable)({
|
|
37
|
+
// @ts-expect-error Not assignable
|
|
38
|
+
pathParameters: {},
|
|
39
|
+
});
|
|
40
|
+
(0, tsd_1.expectAssignable)({
|
|
41
|
+
// @ts-expect-error Not assignable
|
|
42
|
+
pathParameters: { foo: "", extra: "" },
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function ignoredTestRequestTypesWithHeader() {
|
|
46
|
+
(0, tsd_1.expectAssignable)({
|
|
47
|
+
data: {
|
|
48
|
+
foo: "",
|
|
49
|
+
},
|
|
50
|
+
pathParameters: { bar: "" },
|
|
51
|
+
headers: { baz: "" },
|
|
52
|
+
});
|
|
53
|
+
(0, tsd_1.expectAssignable)({
|
|
54
|
+
pathParameters: { bar: "" },
|
|
55
|
+
headers: { baz: "" },
|
|
56
|
+
});
|
|
57
|
+
(0, tsd_1.expectAssignable)({
|
|
58
|
+
headers: { baz: "" },
|
|
59
|
+
});
|
|
60
|
+
// @ts-expect-error Not assignable
|
|
61
|
+
(0, tsd_1.expectAssignable)({});
|
|
62
|
+
(0, tsd_1.expectAssignable)({
|
|
63
|
+
headers: {
|
|
64
|
+
// @ts-expect-error Not assignable
|
|
65
|
+
baz: 42,
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
(0, tsd_1.expectAssignable)({
|
|
69
|
+
// @ts-expect-error Not assignable
|
|
70
|
+
headers: {},
|
|
71
|
+
});
|
|
72
|
+
(0, tsd_1.expectAssignable)({
|
|
73
|
+
// @ts-expect-error Not assignable
|
|
74
|
+
data: {},
|
|
75
|
+
headers: {
|
|
76
|
+
baz: "",
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
(0, tsd_1.expectAssignable)({
|
|
80
|
+
// @ts-expect-error Not assignable
|
|
81
|
+
pathParameters: {},
|
|
82
|
+
headers: {
|
|
83
|
+
baz: "",
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
function ignoredTestAdditionalHeadersCanAlwaysBeSet() {
|
|
88
|
+
(0, tsd_1.expectAssignable)({
|
|
89
|
+
headers: { extra: true },
|
|
90
|
+
});
|
|
91
|
+
(0, tsd_1.expectAssignable)({
|
|
92
|
+
headers: { extra: true },
|
|
93
|
+
});
|
|
94
|
+
(0, tsd_1.expectAssignable)({
|
|
95
|
+
headers: { extra: true },
|
|
96
|
+
});
|
|
97
|
+
(0, tsd_1.expectAssignable)({
|
|
98
|
+
data: {
|
|
99
|
+
foo: "",
|
|
100
|
+
},
|
|
101
|
+
headers: { extra: true },
|
|
102
|
+
});
|
|
103
|
+
(0, tsd_1.expectAssignable)({
|
|
104
|
+
pathParameters: {
|
|
105
|
+
bar: "",
|
|
106
|
+
},
|
|
107
|
+
headers: { extra: true },
|
|
108
|
+
});
|
|
109
|
+
(0, tsd_1.expectAssignable)({
|
|
110
|
+
headers: { extra: true, baz: "" },
|
|
111
|
+
});
|
|
112
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tsd_1 = require("tsd");
|
|
4
|
+
const additionalAxiosResponseData = {
|
|
5
|
+
statusText: "",
|
|
6
|
+
headers: {},
|
|
7
|
+
config: {},
|
|
8
|
+
mediaType: "application/json",
|
|
9
|
+
};
|
|
10
|
+
(0, tsd_1.expectAssignable)(Object.assign({ data: { a: "" }, status: 200 }, additionalAxiosResponseData));
|
|
11
|
+
(0, tsd_1.expectNotAssignable)(Object.assign({ data: { a: "", extra: "!" }, status: 200 }, additionalAxiosResponseData));
|
|
12
|
+
(0, tsd_1.expectAssignable)(Object.assign({ data: {
|
|
13
|
+
b: "",
|
|
14
|
+
}, status: 201 }, additionalAxiosResponseData));
|
|
15
|
+
(0, tsd_1.expectAssignable)(Object.assign({ data: null, status: 400 }, additionalAxiosResponseData));
|
|
16
|
+
(0, tsd_1.expectNotAssignable)(Object.assign({ data: null, status: 42 }, additionalAxiosResponseData));
|
|
17
|
+
(0, tsd_1.expectNotAssignable)(Object.assign({ data: null, status: 42, extra: "!" }, additionalAxiosResponseData));
|
|
18
|
+
(0, tsd_1.expectNotAssignable)(Object.assign({ data: { extraContent: "" }, status: 400 }, additionalAxiosResponseData));
|
|
19
|
+
function ignoredTestRequestTypesWithDataPathParameters() {
|
|
20
|
+
const someResponse = {};
|
|
21
|
+
(0, tsd_1.expectType)(someResponse.status);
|
|
22
|
+
if (someResponse.status === 200) {
|
|
23
|
+
// @ts-expect-error > a is not in data
|
|
24
|
+
someResponse.data.a;
|
|
25
|
+
// @ts-expect-error > b is not in data
|
|
26
|
+
someResponse.data.b;
|
|
27
|
+
if (someResponse.mediaType === "text/plain") {
|
|
28
|
+
// @ts-expect-error > a is not in data
|
|
29
|
+
someResponse.data.a;
|
|
30
|
+
(0, tsd_1.expectType)(someResponse.data.text);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
// @ts-expect-error > text is not in data
|
|
34
|
+
someResponse.data.text;
|
|
35
|
+
(0, tsd_1.expectType)(someResponse.data.a);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else if (someResponse.status === 201) {
|
|
39
|
+
(0, tsd_1.expectType)(someResponse.data.b);
|
|
40
|
+
// @ts-expect-error > a is not in data
|
|
41
|
+
someResponse.data.a;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tsd_1 = require("tsd");
|
|
4
|
+
const assertStatus_js_1 = require("./assertStatus.js");
|
|
5
|
+
function ignoredTestAssertStatusAssertsAlsoTheCorrectResponseType() {
|
|
6
|
+
(0, assertStatus_js_1.default)(someResponse, 200);
|
|
7
|
+
(0, tsd_1.expectAssignable)(someResponse);
|
|
8
|
+
// @ts-expect-error Not assignable
|
|
9
|
+
(0, tsd_1.expectAssignable)(someResponse);
|
|
10
|
+
}
|
|
@@ -8,5 +8,6 @@ export declare class Request<TOp extends OpenAPIOperation> {
|
|
|
8
8
|
constructor(axiosInstance: AxiosInstance, operationDescriptor: TOp, config?: RequestConfig<TOp>);
|
|
9
9
|
execute(): ResponsePromise<TOp>;
|
|
10
10
|
private buildAxiosConfig;
|
|
11
|
+
private makeAxiosHeaders;
|
|
11
12
|
}
|
|
12
13
|
export default Request;
|
package/dist/esm/core/Request.js
CHANGED
|
@@ -24,10 +24,13 @@ export class Request {
|
|
|
24
24
|
return {
|
|
25
25
|
url: openApiPath.buildUrl(),
|
|
26
26
|
method,
|
|
27
|
-
headers,
|
|
27
|
+
headers: headers ? this.makeAxiosHeaders(headers) : undefined,
|
|
28
28
|
data,
|
|
29
29
|
validateStatus: () => true,
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
|
+
makeAxiosHeaders(headers) {
|
|
33
|
+
return Object.fromEntries(Object.entries(headers).map(([key, value]) => [key, value?.toString()]));
|
|
34
|
+
}
|
|
32
35
|
}
|
|
33
36
|
export default Request;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { HasRequiredKeys, PartialOnUndefinedDeep } from "type-fest";
|
|
2
|
-
type PartialOnNoRequiredKeysDeep<T> = PartialOnUndefinedDeep<{
|
|
1
|
+
import { HasRequiredKeys, OmitIndexSignature, PartialOnUndefinedDeep } from "type-fest";
|
|
2
|
+
type PartialOnNoRequiredKeysDeep<T> = PartialOnUndefinedDeep<OmitIndexSignature<{
|
|
3
3
|
[TKey in keyof T]: HasRequiredKeys<PartialOnNoRequiredKeysDeep<T[TKey]>> extends true ? T[TKey] : T[TKey] | undefined;
|
|
4
|
-
}
|
|
4
|
+
}>>;
|
|
5
5
|
export type NullableOnNoRequiredKeysDeep<T> = HasRequiredKeys<PartialOnNoRequiredKeysDeep<T>> extends true ? PartialOnNoRequiredKeysDeep<T> : PartialOnNoRequiredKeysDeep<T> | null;
|
|
6
6
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
function ignoredTestEmptyRequestTypes() {
|
|
2
|
+
const f = {};
|
|
3
|
+
void f();
|
|
4
|
+
void f({
|
|
5
|
+
headers: {},
|
|
6
|
+
});
|
|
7
|
+
void f({
|
|
8
|
+
headers: { extra: true },
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
function ignoredTestOptionalHeadersRequestTypes() {
|
|
12
|
+
const f = {};
|
|
13
|
+
void f();
|
|
14
|
+
void f({
|
|
15
|
+
headers: {},
|
|
16
|
+
});
|
|
17
|
+
void f({
|
|
18
|
+
headers: { extra: true },
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { HttpHeaders, HttpPayload, PathParameters } from "./http.js";
|
|
2
|
-
type
|
|
2
|
+
type EmptyObject = Record<string, never>;
|
|
3
|
+
type EmptyRequestComponent = EmptyObject | null;
|
|
4
|
+
type RequestWithOptionalHeaders = {
|
|
5
|
+
headers?: HttpHeaders;
|
|
6
|
+
};
|
|
7
|
+
type RequestWithData<TData> = TData extends EmptyRequestComponent ? RequestWithOptionalHeaders : {
|
|
3
8
|
data: TData;
|
|
4
9
|
};
|
|
5
|
-
type RequestWithPathParameters<TPathParameters> = TPathParameters extends
|
|
10
|
+
type RequestWithPathParameters<TPathParameters> = TPathParameters extends EmptyRequestComponent ? RequestWithOptionalHeaders : {
|
|
6
11
|
pathParameters: TPathParameters;
|
|
7
12
|
};
|
|
8
|
-
type RequestWithHeaders<THeaders> = THeaders extends
|
|
9
|
-
headers: THeaders;
|
|
13
|
+
type RequestWithHeaders<THeaders> = THeaders extends EmptyRequestComponent ? RequestWithOptionalHeaders : {
|
|
14
|
+
headers: THeaders & HttpHeaders;
|
|
10
15
|
};
|
|
11
|
-
type
|
|
12
|
-
export type RequestType<TData extends HttpPayload = null, TPathParameters extends PathParameters | null = null, THeader extends HttpHeaders | null = null> = TData | TPathParameters | THeader extends null ? EmptyRequest : RequestWithData<TData> & RequestWithPathParameters<TPathParameters> & RequestWithHeaders<THeader>;
|
|
16
|
+
export type RequestType<TData extends HttpPayload = EmptyRequestComponent, TPathParameters extends PathParameters | EmptyRequestComponent = EmptyRequestComponent, THeader extends HttpHeaders | EmptyRequestComponent = EmptyRequestComponent> = TData | TPathParameters | THeader extends EmptyRequestComponent ? RequestWithOptionalHeaders : RequestWithData<TData> & RequestWithPathParameters<TPathParameters> & RequestWithHeaders<THeader>;
|
|
13
17
|
export type AnyRequest = RequestType<any, any, any>;
|
|
14
18
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { expectAssignable } from "tsd";
|
|
2
|
+
function ignoredTestEmptyRequestTypes() {
|
|
3
|
+
expectAssignable({});
|
|
4
|
+
// @ts-expect-error Not assignable
|
|
5
|
+
expectAssignable({ extra: true });
|
|
6
|
+
// @ts-expect-error Not assignable
|
|
7
|
+
expectAssignable({ data: {} });
|
|
8
|
+
// @ts-expect-error Not assignable
|
|
9
|
+
expectAssignable({ data: null });
|
|
10
|
+
// @ts-expect-error Not assignable
|
|
11
|
+
expectAssignable({ pathParameters: {} });
|
|
12
|
+
}
|
|
13
|
+
function ignoredTestRequestTypesWithDataType() {
|
|
14
|
+
expectAssignable({ data: { foo: "" } });
|
|
15
|
+
// @ts-expect-error Not assignable
|
|
16
|
+
expectAssignable({});
|
|
17
|
+
expectAssignable({
|
|
18
|
+
// @ts-expect-error Not assignable
|
|
19
|
+
data: { foo: "", extra: "" },
|
|
20
|
+
});
|
|
21
|
+
// @ts-expect-error Not assignable
|
|
22
|
+
expectAssignable({ data: { noFoo: "" } });
|
|
23
|
+
}
|
|
24
|
+
function ignoredTestRequestTypesWithPathParameters() {
|
|
25
|
+
expectAssignable({
|
|
26
|
+
data: { foo: "" },
|
|
27
|
+
pathParameters: { bar: "" },
|
|
28
|
+
});
|
|
29
|
+
expectAssignable({
|
|
30
|
+
pathParameters: { bar: "" },
|
|
31
|
+
});
|
|
32
|
+
// @ts-expect-error Not assignable
|
|
33
|
+
expectAssignable({});
|
|
34
|
+
expectAssignable({
|
|
35
|
+
// @ts-expect-error Not assignable
|
|
36
|
+
pathParameters: {},
|
|
37
|
+
});
|
|
38
|
+
expectAssignable({
|
|
39
|
+
// @ts-expect-error Not assignable
|
|
40
|
+
pathParameters: { foo: "", extra: "" },
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function ignoredTestRequestTypesWithHeader() {
|
|
44
|
+
expectAssignable({
|
|
45
|
+
data: {
|
|
46
|
+
foo: "",
|
|
47
|
+
},
|
|
48
|
+
pathParameters: { bar: "" },
|
|
49
|
+
headers: { baz: "" },
|
|
50
|
+
});
|
|
51
|
+
expectAssignable({
|
|
52
|
+
pathParameters: { bar: "" },
|
|
53
|
+
headers: { baz: "" },
|
|
54
|
+
});
|
|
55
|
+
expectAssignable({
|
|
56
|
+
headers: { baz: "" },
|
|
57
|
+
});
|
|
58
|
+
// @ts-expect-error Not assignable
|
|
59
|
+
expectAssignable({});
|
|
60
|
+
expectAssignable({
|
|
61
|
+
headers: {
|
|
62
|
+
// @ts-expect-error Not assignable
|
|
63
|
+
baz: 42,
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
expectAssignable({
|
|
67
|
+
// @ts-expect-error Not assignable
|
|
68
|
+
headers: {},
|
|
69
|
+
});
|
|
70
|
+
expectAssignable({
|
|
71
|
+
// @ts-expect-error Not assignable
|
|
72
|
+
data: {},
|
|
73
|
+
headers: {
|
|
74
|
+
baz: "",
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
expectAssignable({
|
|
78
|
+
// @ts-expect-error Not assignable
|
|
79
|
+
pathParameters: {},
|
|
80
|
+
headers: {
|
|
81
|
+
baz: "",
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
function ignoredTestAdditionalHeadersCanAlwaysBeSet() {
|
|
86
|
+
expectAssignable({
|
|
87
|
+
headers: { extra: true },
|
|
88
|
+
});
|
|
89
|
+
expectAssignable({
|
|
90
|
+
headers: { extra: true },
|
|
91
|
+
});
|
|
92
|
+
expectAssignable({
|
|
93
|
+
headers: { extra: true },
|
|
94
|
+
});
|
|
95
|
+
expectAssignable({
|
|
96
|
+
data: {
|
|
97
|
+
foo: "",
|
|
98
|
+
},
|
|
99
|
+
headers: { extra: true },
|
|
100
|
+
});
|
|
101
|
+
expectAssignable({
|
|
102
|
+
pathParameters: {
|
|
103
|
+
bar: "",
|
|
104
|
+
},
|
|
105
|
+
headers: { extra: true },
|
|
106
|
+
});
|
|
107
|
+
expectAssignable({
|
|
108
|
+
headers: { extra: true, baz: "" },
|
|
109
|
+
});
|
|
110
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { expectAssignable, expectNotAssignable, expectType } from "tsd";
|
|
2
|
+
const additionalAxiosResponseData = {
|
|
3
|
+
statusText: "",
|
|
4
|
+
headers: {},
|
|
5
|
+
config: {},
|
|
6
|
+
mediaType: "application/json",
|
|
7
|
+
};
|
|
8
|
+
expectAssignable({
|
|
9
|
+
data: { a: "" },
|
|
10
|
+
status: 200,
|
|
11
|
+
...additionalAxiosResponseData,
|
|
12
|
+
});
|
|
13
|
+
expectNotAssignable({
|
|
14
|
+
data: { a: "", extra: "!" },
|
|
15
|
+
status: 200,
|
|
16
|
+
...additionalAxiosResponseData,
|
|
17
|
+
});
|
|
18
|
+
expectAssignable({
|
|
19
|
+
data: {
|
|
20
|
+
b: "",
|
|
21
|
+
},
|
|
22
|
+
status: 201,
|
|
23
|
+
...additionalAxiosResponseData,
|
|
24
|
+
});
|
|
25
|
+
expectAssignable({
|
|
26
|
+
data: null,
|
|
27
|
+
status: 400,
|
|
28
|
+
...additionalAxiosResponseData,
|
|
29
|
+
});
|
|
30
|
+
expectNotAssignable({
|
|
31
|
+
data: null,
|
|
32
|
+
status: 42,
|
|
33
|
+
...additionalAxiosResponseData,
|
|
34
|
+
});
|
|
35
|
+
expectNotAssignable({
|
|
36
|
+
data: null,
|
|
37
|
+
status: 42,
|
|
38
|
+
extra: "!",
|
|
39
|
+
...additionalAxiosResponseData,
|
|
40
|
+
});
|
|
41
|
+
expectNotAssignable({
|
|
42
|
+
data: { extraContent: "" },
|
|
43
|
+
status: 400,
|
|
44
|
+
...additionalAxiosResponseData,
|
|
45
|
+
});
|
|
46
|
+
function ignoredTestRequestTypesWithDataPathParameters() {
|
|
47
|
+
const someResponse = {};
|
|
48
|
+
expectType(someResponse.status);
|
|
49
|
+
if (someResponse.status === 200) {
|
|
50
|
+
// @ts-expect-error > a is not in data
|
|
51
|
+
someResponse.data.a;
|
|
52
|
+
// @ts-expect-error > b is not in data
|
|
53
|
+
someResponse.data.b;
|
|
54
|
+
if (someResponse.mediaType === "text/plain") {
|
|
55
|
+
// @ts-expect-error > a is not in data
|
|
56
|
+
someResponse.data.a;
|
|
57
|
+
expectType(someResponse.data.text);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// @ts-expect-error > text is not in data
|
|
61
|
+
someResponse.data.text;
|
|
62
|
+
expectType(someResponse.data.a);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else if (someResponse.status === 201) {
|
|
66
|
+
expectType(someResponse.data.b);
|
|
67
|
+
// @ts-expect-error > a is not in data
|
|
68
|
+
someResponse.data.a;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { expectAssignable } from "tsd";
|
|
2
|
+
import assertStatus from "./assertStatus.js";
|
|
3
|
+
function ignoredTestAssertStatusAssertsAlsoTheCorrectResponseType() {
|
|
4
|
+
assertStatus(someResponse, 200);
|
|
5
|
+
expectAssignable(someResponse);
|
|
6
|
+
// @ts-expect-error Not assignable
|
|
7
|
+
expectAssignable(someResponse);
|
|
8
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mittwald/api-client-commons",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.3",
|
|
4
4
|
"description": "Common types and utilities for mittwald API clients",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "https://github.com/mittwald/api-client-js.git",
|
|
@@ -25,8 +25,7 @@
|
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
"scripts": {
|
|
28
|
-
"test": "
|
|
29
|
-
"test:tsd": "pnpify run tsd"
|
|
28
|
+
"test": "echo 'No tests available'"
|
|
30
29
|
},
|
|
31
30
|
"files": [
|
|
32
31
|
"dist/**/*.{js,d.ts}"
|