@readyfor/api-client-base 0.242.1 → 0.243.0-pr981.52c46aa
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/apiClientConfigStore.d.mts +2 -1
- package/dist/apiClientConfigStore.d.ts +2 -1
- package/dist/apiClientConfigStore.js +30 -0
- package/dist/apiClientConfigStore.mjs +6 -1
- package/dist/apiError.mjs +1 -0
- package/dist/chunk-7P6ASYW6.mjs +9 -0
- package/dist/{chunk-RGDL3AEX.mjs → chunk-BIWBZZRT.mjs} +1 -1
- package/dist/{chunk-5ZI7SAUQ.mjs → chunk-D6TR6JPT.mjs} +1 -1
- package/dist/chunk-DATABM5C.mjs +21 -0
- package/dist/chunk-DLVEXL2J.mjs +37 -0
- package/dist/{chunk-BNXKKSJH.mjs → chunk-IF7WWYV5.mjs} +32 -41
- package/dist/chunk-LYXJUKKR.mjs +14 -0
- package/dist/chunk-SMMDKVWH.mjs +29 -0
- package/dist/fetcher.js +52 -40
- package/dist/fetcher.mjs +5 -2
- package/dist/index.d.mts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +60 -40
- package/dist/index.mjs +11 -3
- package/dist/react/ApiClientConfigProvider.mjs +5 -2
- package/dist/react/index.js +26 -30
- package/dist/react/index.mjs +6 -3
- package/dist/react/swr.mjs +1 -0
- package/dist/react/useApiClientConfig.js +26 -30
- package/dist/react/useApiClientConfig.mjs +6 -3
- package/dist/requestUrl.mjs +5 -2
- package/dist/requestUrl.test.mjs +5 -2
- package/dist/store.mjs +1 -0
- package/dist/utils/headersInit.d.mts +17 -0
- package/dist/utils/headersInit.d.ts +17 -0
- package/dist/utils/headersInit.js +44 -0
- package/dist/utils/headersInit.mjs +7 -0
- package/dist/utils/headersInit.test.d.mts +2 -0
- package/dist/utils/headersInit.test.d.ts +2 -0
- package/dist/utils/headersInit.test.js +81 -0
- package/dist/utils/headersInit.test.mjs +67 -0
- package/dist/utils/requestInit.d.mts +9 -0
- package/dist/utils/requestInit.d.ts +9 -0
- package/dist/utils/requestInit.js +53 -0
- package/dist/utils/requestInit.mjs +8 -0
- package/dist/utils/requestInit.test.d.mts +2 -0
- package/dist/utils/requestInit.test.d.ts +2 -0
- package/dist/utils/requestInit.test.js +133 -0
- package/dist/utils/requestInit.test.mjs +106 -0
- package/dist/zod.mjs +1 -0
- package/package.json +8 -9
- package/dist/chunk-472P3XVV.mjs +0 -13
- package/dist/chunk-JOSDYCJN.mjs +0 -62
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __export = (target, all) => {
|
|
4
|
+
for (var name in all)
|
|
5
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
// src/utils/headersInit.ts
|
|
9
|
+
var headersInit_exports = {};
|
|
10
|
+
__export(headersInit_exports, {
|
|
11
|
+
mergeHeadersInit: () => mergeHeadersInit
|
|
12
|
+
});
|
|
13
|
+
var mergeHeadersInit = (baseHeadersInit, overrideHeadersInit) => {
|
|
14
|
+
const base = new Headers(baseHeadersInit);
|
|
15
|
+
const override = new Headers(overrideHeadersInit);
|
|
16
|
+
const setCookies = base.getSetCookie().concat(override.getSetCookie());
|
|
17
|
+
base.delete("set-cookie");
|
|
18
|
+
override.delete("set-cookie");
|
|
19
|
+
const mergedHeaders = new Headers({
|
|
20
|
+
...Object.fromEntries(base),
|
|
21
|
+
...Object.fromEntries(override)
|
|
22
|
+
});
|
|
23
|
+
setCookies.forEach((cookie) => {
|
|
24
|
+
mergedHeaders.append("set-cookie", cookie);
|
|
25
|
+
});
|
|
26
|
+
return mergedHeaders;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// src/utils/requestInit.ts
|
|
30
|
+
var mergeRequestInit = ({ headers: baseHeaders, ...base }, { headers: overrideHeaders, ...override }) => ({
|
|
31
|
+
...base,
|
|
32
|
+
...override,
|
|
33
|
+
headers: baseHeaders === void 0 ? overrideHeaders : overrideHeaders === void 0 ? baseHeaders : mergeHeadersInit(baseHeaders, overrideHeaders)
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// src/utils/requestInit.test.ts
|
|
37
|
+
describe("mergeRequestInit", () => {
|
|
38
|
+
test("RequestInit\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u30DE\u30FC\u30B8\u3067\u304D\u308B", () => {
|
|
39
|
+
const base = {
|
|
40
|
+
method: "GET",
|
|
41
|
+
cache: "force-cache"
|
|
42
|
+
};
|
|
43
|
+
const overrideSignal = new AbortController().signal;
|
|
44
|
+
const override = {
|
|
45
|
+
method: "POST",
|
|
46
|
+
body: JSON.stringify({ key: "value" }),
|
|
47
|
+
headers: {
|
|
48
|
+
"Content-Type": "application/json"
|
|
49
|
+
},
|
|
50
|
+
cache: "no-cache",
|
|
51
|
+
signal: overrideSignal
|
|
52
|
+
};
|
|
53
|
+
const result = mergeRequestInit(base, override);
|
|
54
|
+
expect(result).toEqual({
|
|
55
|
+
cache: "no-cache",
|
|
56
|
+
method: "POST",
|
|
57
|
+
headers: {
|
|
58
|
+
"Content-Type": "application/json"
|
|
59
|
+
},
|
|
60
|
+
body: JSON.stringify({ key: "value" }),
|
|
61
|
+
signal: overrideSignal
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
test("header\u4EE5\u5916\u306F\u3001null\u3084undefined\u3092\u8A2D\u5B9A\u3059\u308B\u4E8B\u3067base\u306E\u8A2D\u5B9A\u3092\u7121\u52B9\u306B\u3067\u304D\u308B", () => {
|
|
65
|
+
const base = {
|
|
66
|
+
method: "POST",
|
|
67
|
+
body: "request body",
|
|
68
|
+
mode: "cors",
|
|
69
|
+
signal: new AbortController().signal,
|
|
70
|
+
headers: {
|
|
71
|
+
Authorization: "Bearer token"
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
const override = {
|
|
75
|
+
body: null,
|
|
76
|
+
mode: void 0,
|
|
77
|
+
signal: null
|
|
78
|
+
};
|
|
79
|
+
const result = mergeRequestInit(base, override);
|
|
80
|
+
expect(result).toEqual({
|
|
81
|
+
method: "POST",
|
|
82
|
+
body: null,
|
|
83
|
+
mode: void 0,
|
|
84
|
+
headers: {
|
|
85
|
+
Authorization: "Bearer token"
|
|
86
|
+
},
|
|
87
|
+
signal: null
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
describe("headers\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u7279\u6B8A\u51E6\u7406", () => {
|
|
91
|
+
test("headers\u3092\u5408\u6210\u3059\u308B\u3068\u304D\u3001\u7247\u65B9\u306E\u307F\u6307\u5B9A\u304C\u3042\u308B\u5834\u5408\u306F\u3001\u305D\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u305D\u306E\u307E\u307E\u8FD4\u3059\u3088\u3046\u3059\u308B", () => {
|
|
92
|
+
const arr = [["X-Test", "value"]];
|
|
93
|
+
expect(mergeRequestInit({ headers: arr }, {}).headers).toBe(arr);
|
|
94
|
+
expect(mergeRequestInit({}, { headers: arr }).headers).toBe(arr);
|
|
95
|
+
const record = { "X-Test": "value" };
|
|
96
|
+
expect(mergeRequestInit({ headers: record }, {}).headers).toBe(record);
|
|
97
|
+
expect(mergeRequestInit({}, { headers: record }).headers).toBe(record);
|
|
98
|
+
const instance = new Headers({ "X-Test": "value" });
|
|
99
|
+
expect(mergeRequestInit({ headers: instance }, {}).headers).toBe(
|
|
100
|
+
instance
|
|
101
|
+
);
|
|
102
|
+
expect(mergeRequestInit({}, { headers: instance }).headers).toBe(
|
|
103
|
+
instance
|
|
104
|
+
);
|
|
105
|
+
});
|
|
106
|
+
test("headers\u304C\u4E21\u65B9\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u6642\u306F\u3001mergeHeadersInit\u3092\u4F7F\u7528\u3057\u3066\u30DE\u30FC\u30B8\u3055\u308C\u308B", () => {
|
|
107
|
+
const mergeHeadersInitSpy = jest.spyOn(headersInit_exports, "mergeHeadersInit");
|
|
108
|
+
const base = {
|
|
109
|
+
headers: {
|
|
110
|
+
"Content-Type": "application/json",
|
|
111
|
+
Authorization: "Bearer token"
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
const override = {
|
|
115
|
+
headers: {
|
|
116
|
+
"X-Test": "value"
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
const result = mergeRequestInit(base, override);
|
|
120
|
+
expect([...new Headers(result.headers)]).toEqual([
|
|
121
|
+
["authorization", "Bearer token"],
|
|
122
|
+
["content-type", "application/json"],
|
|
123
|
+
["x-test", "value"]
|
|
124
|
+
]);
|
|
125
|
+
expect(mergeHeadersInitSpy).toHaveBeenCalledTimes(1);
|
|
126
|
+
expect(mergeHeadersInitSpy).toHaveBeenCalledWith(
|
|
127
|
+
base.headers,
|
|
128
|
+
override.headers
|
|
129
|
+
);
|
|
130
|
+
mergeHeadersInitSpy.mockRestore();
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
});
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import {
|
|
2
|
+
mergeRequestInit
|
|
3
|
+
} from "../chunk-LYXJUKKR.mjs";
|
|
4
|
+
import {
|
|
5
|
+
headersInit_exports
|
|
6
|
+
} from "../chunk-SMMDKVWH.mjs";
|
|
7
|
+
import "../chunk-7P6ASYW6.mjs";
|
|
8
|
+
|
|
9
|
+
// src/utils/requestInit.test.ts
|
|
10
|
+
describe("mergeRequestInit", () => {
|
|
11
|
+
test("RequestInit\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u30DE\u30FC\u30B8\u3067\u304D\u308B", () => {
|
|
12
|
+
const base = {
|
|
13
|
+
method: "GET",
|
|
14
|
+
cache: "force-cache"
|
|
15
|
+
};
|
|
16
|
+
const overrideSignal = new AbortController().signal;
|
|
17
|
+
const override = {
|
|
18
|
+
method: "POST",
|
|
19
|
+
body: JSON.stringify({ key: "value" }),
|
|
20
|
+
headers: {
|
|
21
|
+
"Content-Type": "application/json"
|
|
22
|
+
},
|
|
23
|
+
cache: "no-cache",
|
|
24
|
+
signal: overrideSignal
|
|
25
|
+
};
|
|
26
|
+
const result = mergeRequestInit(base, override);
|
|
27
|
+
expect(result).toEqual({
|
|
28
|
+
cache: "no-cache",
|
|
29
|
+
method: "POST",
|
|
30
|
+
headers: {
|
|
31
|
+
"Content-Type": "application/json"
|
|
32
|
+
},
|
|
33
|
+
body: JSON.stringify({ key: "value" }),
|
|
34
|
+
signal: overrideSignal
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
test("header\u4EE5\u5916\u306F\u3001null\u3084undefined\u3092\u8A2D\u5B9A\u3059\u308B\u4E8B\u3067base\u306E\u8A2D\u5B9A\u3092\u7121\u52B9\u306B\u3067\u304D\u308B", () => {
|
|
38
|
+
const base = {
|
|
39
|
+
method: "POST",
|
|
40
|
+
body: "request body",
|
|
41
|
+
mode: "cors",
|
|
42
|
+
signal: new AbortController().signal,
|
|
43
|
+
headers: {
|
|
44
|
+
Authorization: "Bearer token"
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const override = {
|
|
48
|
+
body: null,
|
|
49
|
+
mode: void 0,
|
|
50
|
+
signal: null
|
|
51
|
+
};
|
|
52
|
+
const result = mergeRequestInit(base, override);
|
|
53
|
+
expect(result).toEqual({
|
|
54
|
+
method: "POST",
|
|
55
|
+
body: null,
|
|
56
|
+
mode: void 0,
|
|
57
|
+
headers: {
|
|
58
|
+
Authorization: "Bearer token"
|
|
59
|
+
},
|
|
60
|
+
signal: null
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
describe("headers\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u7279\u6B8A\u51E6\u7406", () => {
|
|
64
|
+
test("headers\u3092\u5408\u6210\u3059\u308B\u3068\u304D\u3001\u7247\u65B9\u306E\u307F\u6307\u5B9A\u304C\u3042\u308B\u5834\u5408\u306F\u3001\u305D\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u305D\u306E\u307E\u307E\u8FD4\u3059\u3088\u3046\u3059\u308B", () => {
|
|
65
|
+
const arr = [["X-Test", "value"]];
|
|
66
|
+
expect(mergeRequestInit({ headers: arr }, {}).headers).toBe(arr);
|
|
67
|
+
expect(mergeRequestInit({}, { headers: arr }).headers).toBe(arr);
|
|
68
|
+
const record = { "X-Test": "value" };
|
|
69
|
+
expect(mergeRequestInit({ headers: record }, {}).headers).toBe(record);
|
|
70
|
+
expect(mergeRequestInit({}, { headers: record }).headers).toBe(record);
|
|
71
|
+
const instance = new Headers({ "X-Test": "value" });
|
|
72
|
+
expect(mergeRequestInit({ headers: instance }, {}).headers).toBe(
|
|
73
|
+
instance
|
|
74
|
+
);
|
|
75
|
+
expect(mergeRequestInit({}, { headers: instance }).headers).toBe(
|
|
76
|
+
instance
|
|
77
|
+
);
|
|
78
|
+
});
|
|
79
|
+
test("headers\u304C\u4E21\u65B9\u6307\u5B9A\u3055\u308C\u3066\u3044\u308B\u6642\u306F\u3001mergeHeadersInit\u3092\u4F7F\u7528\u3057\u3066\u30DE\u30FC\u30B8\u3055\u308C\u308B", () => {
|
|
80
|
+
const mergeHeadersInitSpy = jest.spyOn(headersInit_exports, "mergeHeadersInit");
|
|
81
|
+
const base = {
|
|
82
|
+
headers: {
|
|
83
|
+
"Content-Type": "application/json",
|
|
84
|
+
Authorization: "Bearer token"
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
const override = {
|
|
88
|
+
headers: {
|
|
89
|
+
"X-Test": "value"
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
const result = mergeRequestInit(base, override);
|
|
93
|
+
expect([...new Headers(result.headers)]).toEqual([
|
|
94
|
+
["authorization", "Bearer token"],
|
|
95
|
+
["content-type", "application/json"],
|
|
96
|
+
["x-test", "value"]
|
|
97
|
+
]);
|
|
98
|
+
expect(mergeHeadersInitSpy).toHaveBeenCalledTimes(1);
|
|
99
|
+
expect(mergeHeadersInitSpy).toHaveBeenCalledWith(
|
|
100
|
+
base.headers,
|
|
101
|
+
override.headers
|
|
102
|
+
);
|
|
103
|
+
mergeHeadersInitSpy.mockRestore();
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
});
|
package/dist/zod.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@readyfor/api-client-base",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.243.0-pr981.52c46aa",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -27,9 +27,6 @@
|
|
|
27
27
|
]
|
|
28
28
|
}
|
|
29
29
|
},
|
|
30
|
-
"scripts": {
|
|
31
|
-
"build": "tsup"
|
|
32
|
-
},
|
|
33
30
|
"dependencies": {
|
|
34
31
|
"qs": "6.14.0",
|
|
35
32
|
"zod": "^3.24.1"
|
|
@@ -38,9 +35,9 @@
|
|
|
38
35
|
"@types/qs": "6.9.18",
|
|
39
36
|
"@types/react": "19.1.2",
|
|
40
37
|
"@types/use-sync-external-store": "1.5.0",
|
|
41
|
-
"react": "
|
|
42
|
-
"swr": "
|
|
43
|
-
"use-sync-external-store": "
|
|
38
|
+
"react": "19.1.0",
|
|
39
|
+
"swr": "2.3.3",
|
|
40
|
+
"use-sync-external-store": "1.5.0"
|
|
44
41
|
},
|
|
45
42
|
"peerDependencies": {
|
|
46
43
|
"react": ">=18.x <=19.x",
|
|
@@ -70,5 +67,7 @@
|
|
|
70
67
|
"src"
|
|
71
68
|
]
|
|
72
69
|
},
|
|
73
|
-
"
|
|
74
|
-
|
|
70
|
+
"scripts": {
|
|
71
|
+
"build": "tsup"
|
|
72
|
+
}
|
|
73
|
+
}
|
package/dist/chunk-472P3XVV.mjs
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createStore
|
|
3
|
-
} from "./chunk-3SEO7S3Q.mjs";
|
|
4
|
-
|
|
5
|
-
// src/apiClientConfigStore.ts
|
|
6
|
-
var defaultConfig = {};
|
|
7
|
-
var store = createStore(defaultConfig);
|
|
8
|
-
var setApiClientConfig = (config) => store.setState(() => config);
|
|
9
|
-
|
|
10
|
-
export {
|
|
11
|
-
store,
|
|
12
|
-
setApiClientConfig
|
|
13
|
-
};
|
package/dist/chunk-JOSDYCJN.mjs
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
useApiClientConfigContext
|
|
3
|
-
} from "./chunk-5ZI7SAUQ.mjs";
|
|
4
|
-
|
|
5
|
-
// src/react/useApiClientConfig.ts
|
|
6
|
-
import { useCallback, useMemo } from "react";
|
|
7
|
-
import { useSyncExternalStore } from "use-sync-external-store/shim/index.js";
|
|
8
|
-
import { useSyncExternalStoreWithSelector } from "use-sync-external-store/shim/with-selector.js";
|
|
9
|
-
var useApiClientConfig = () => {
|
|
10
|
-
const store = useApiClientConfigContext();
|
|
11
|
-
return useSyncExternalStore(store.subscribe, store.getState);
|
|
12
|
-
};
|
|
13
|
-
var useApiClientConfigWithSelector = (selector) => {
|
|
14
|
-
const store = useApiClientConfigContext();
|
|
15
|
-
return useSyncExternalStoreWithSelector(
|
|
16
|
-
store.subscribe,
|
|
17
|
-
store.getState,
|
|
18
|
-
null,
|
|
19
|
-
selector
|
|
20
|
-
);
|
|
21
|
-
};
|
|
22
|
-
var useRequestInit = (customRequestInit = {}) => {
|
|
23
|
-
const { defaultRequestInit = {} } = useApiClientConfig();
|
|
24
|
-
const keys = useMemo(
|
|
25
|
-
() => Object.keys({
|
|
26
|
-
...defaultRequestInit,
|
|
27
|
-
...customRequestInit
|
|
28
|
-
}),
|
|
29
|
-
[defaultRequestInit, customRequestInit]
|
|
30
|
-
);
|
|
31
|
-
const get = useCallback((key) => {
|
|
32
|
-
if (customRequestInit[key] === void 0) {
|
|
33
|
-
return defaultRequestInit[key];
|
|
34
|
-
}
|
|
35
|
-
if (defaultRequestInit[key] === void 0) {
|
|
36
|
-
return customRequestInit[key];
|
|
37
|
-
}
|
|
38
|
-
if (typeof customRequestInit[key] === "object" && typeof defaultRequestInit[key] === "object") {
|
|
39
|
-
return { ...defaultRequestInit[key], ...customRequestInit[key] };
|
|
40
|
-
}
|
|
41
|
-
if (Array.isArray(customRequestInit[key]) && Array.isArray(defaultRequestInit[key])) {
|
|
42
|
-
return [...defaultRequestInit[key], ...customRequestInit[key]];
|
|
43
|
-
}
|
|
44
|
-
return customRequestInit[key] ?? defaultRequestInit[key];
|
|
45
|
-
}, []);
|
|
46
|
-
return useMemo(
|
|
47
|
-
() => keys.reduce(
|
|
48
|
-
(acc, key) => ({
|
|
49
|
-
...acc,
|
|
50
|
-
[key]: get(key)
|
|
51
|
-
}),
|
|
52
|
-
{}
|
|
53
|
-
),
|
|
54
|
-
[keys, get]
|
|
55
|
-
);
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
export {
|
|
59
|
-
useApiClientConfig,
|
|
60
|
-
useApiClientConfigWithSelector,
|
|
61
|
-
useRequestInit
|
|
62
|
-
};
|