@readyfor/api-client-base 1.155.0-pr1529.49ab6aa → 1.155.0-pr1530.220bfeb

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.
@@ -79,8 +79,9 @@ const mergeRequestInit = ({ headers: baseHeaders, ...base }, { headers: override
79
79
  const store = globalThis[Symbol.for("@readyfor/api-client-base/config")] ??= createStore({});
80
80
  const setApiClientConfig = (config) => store.setState(() => config);
81
81
  const buildRequestInitWithDefaultConfig = (customRequestInit = {}) => {
82
- const { defaultRequestInit = {} } = store.getState();
83
- return mergeRequestInit(defaultRequestInit, customRequestInit);
82
+ const { defaultRequestInit } = store.getState();
83
+ if (typeof defaultRequestInit === "function") return customRequestInit;
84
+ return mergeRequestInit(defaultRequestInit ?? {}, customRequestInit);
84
85
  };
85
86
  //#endregion
86
87
  export { mergeHeadersInit as a, mergeRequestInit as i, setApiClientConfig as n, toHeadersInit as o, store as r, createStore as s, buildRequestInitWithDefaultConfig as t };
@@ -11,7 +11,13 @@ type LoggingConfig = {
11
11
  };
12
12
  export type RequestConfig = {
13
13
  hostName?: string | ((path: string) => string);
14
- defaultRequestInit?: RequestInit;
14
+ /**
15
+ * 関数を渡すと、設定時ではなく API 呼び出しごとに fetch の直前で評価される。リクエストごとに変わる値は設定時ではなくこの関数の中で読むこと。
16
+ * すべての宛先への fetch で呼ばれるため、転送してよい宛先かは必要に応じて `input` で判断すること。
17
+ * 受け取ったリクエストヘッダーを丸ごと返さず、必要なもの(Cookie や User-Agent など)だけを返すこと。host や connection などが混ざると fetch が失敗する。
18
+ * 同じフィールドや同名のヘッダーを API 呼び出し時の RequestInit で指定した場合は、そちらが優先される。
19
+ */
20
+ defaultRequestInit?: RequestInit | ((input: RequestInfo) => RequestInit | Promise<RequestInit>);
15
21
  onError?: (error: unknown) => void;
16
22
  };
17
23
  export type Config = RequestConfig & DeserializeResponseConfig & LoggingConfig;
@@ -4,8 +4,9 @@ const require_utils_requestInit = require("./utils/requestInit.js");
4
4
  const store = globalThis[Symbol.for("@readyfor/api-client-base/config")] ??= require_store.createStore({});
5
5
  const setApiClientConfig = (config) => store.setState(() => config);
6
6
  const buildRequestInitWithDefaultConfig = (customRequestInit = {}) => {
7
- const { defaultRequestInit = {} } = store.getState();
8
- return require_utils_requestInit.mergeRequestInit(defaultRequestInit, customRequestInit);
7
+ const { defaultRequestInit } = store.getState();
8
+ if (typeof defaultRequestInit === "function") return customRequestInit;
9
+ return require_utils_requestInit.mergeRequestInit(defaultRequestInit ?? {}, customRequestInit);
9
10
  };
10
11
  //#endregion
11
12
  exports.buildRequestInitWithDefaultConfig = buildRequestInitWithDefaultConfig;
package/dist/fetcher.js CHANGED
@@ -4,7 +4,13 @@ const require_apiClientConfigStore = require("./apiClientConfigStore.js");
4
4
  const require_apiError = require("./apiError.js");
5
5
  //#region src/fetcher.ts
6
6
  const defaultRequestInit = { credentials: "include" };
7
- const createJsonFetcher = (schema, customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetch(input, require_utils_requestInit.mergeRequestInit(defaultRequestInit, require_utils_requestInit.mergeRequestInit(customRequestInit, requestInit))).then(async (res) => {
7
+ const fetchWithDefaultRequestInit = (input, customRequestInit, requestInit) => {
8
+ const callerRequestInit = require_utils_requestInit.mergeRequestInit(customRequestInit, requestInit);
9
+ const { defaultRequestInit: configDefaultRequestInit } = require_apiClientConfigStore.store.getState();
10
+ if (typeof configDefaultRequestInit !== "function") return fetch(input, require_utils_requestInit.mergeRequestInit(defaultRequestInit, callerRequestInit));
11
+ return Promise.resolve().then(() => configDefaultRequestInit(input)).then((resolved) => fetch(input, require_utils_requestInit.mergeRequestInit(defaultRequestInit, require_utils_requestInit.mergeRequestInit(resolved, callerRequestInit))));
12
+ };
13
+ const createJsonFetcher = (schema, customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetchWithDefaultRequestInit(input, customRequestInit, requestInit).then(async (res) => {
8
14
  options.onResponse?.(res);
9
15
  const text = await res.text();
10
16
  const body = text ? JSON.parse(text) : {};
@@ -25,7 +31,7 @@ const createJsonFetcher = (schema, customRequestInit = {}, options = {}) => (inp
25
31
  }
26
32
  throw result.error;
27
33
  });
28
- const createTextFetcher = (customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetch(input, require_utils_requestInit.mergeRequestInit(defaultRequestInit, require_utils_requestInit.mergeRequestInit(customRequestInit, requestInit))).then(async (res) => {
34
+ const createTextFetcher = (customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetchWithDefaultRequestInit(input, customRequestInit, requestInit).then(async (res) => {
29
35
  options.onResponse?.(res);
30
36
  const body = await res.text();
31
37
  if (res.ok) return body;
@@ -35,7 +41,7 @@ const createTextFetcher = (customRequestInit = {}, options = {}) => (input, requ
35
41
  require_apiClientConfigStore.store.getState().onError?.(error);
36
42
  throw error;
37
43
  });
38
- const createBlobFetcher = (customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetch(input, require_utils_requestInit.mergeRequestInit(defaultRequestInit, require_utils_requestInit.mergeRequestInit(customRequestInit, requestInit))).then(async (res) => {
44
+ const createBlobFetcher = (customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetchWithDefaultRequestInit(input, customRequestInit, requestInit).then(async (res) => {
39
45
  options.onResponse?.(res);
40
46
  const body = await res.blob();
41
47
  if (res.ok) return {
@@ -48,7 +54,7 @@ const createBlobFetcher = (customRequestInit = {}, options = {}) => (input, requ
48
54
  require_apiClientConfigStore.store.getState().onError?.(error);
49
55
  throw error;
50
56
  });
51
- const createFileOrBlobFetcher = (customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetch(input, require_utils_requestInit.mergeRequestInit(defaultRequestInit, require_utils_requestInit.mergeRequestInit(customRequestInit, requestInit))).then(async (res) => {
57
+ const createFileOrBlobFetcher = (customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetchWithDefaultRequestInit(input, customRequestInit, requestInit).then(async (res) => {
52
58
  options.onResponse?.(res);
53
59
  const body = await res.blob();
54
60
  if (res.ok) return {
@@ -61,7 +67,7 @@ const createFileOrBlobFetcher = (customRequestInit = {}, options = {}) => (input
61
67
  require_apiClientConfigStore.store.getState().onError?.(error);
62
68
  throw error;
63
69
  });
64
- const createVoidFetcher = (customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetch(input, require_utils_requestInit.mergeRequestInit(defaultRequestInit, require_utils_requestInit.mergeRequestInit(customRequestInit, requestInit))).then(async (res) => {
70
+ const createVoidFetcher = (customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetchWithDefaultRequestInit(input, customRequestInit, requestInit).then(async (res) => {
65
71
  options.onResponse?.(res);
66
72
  if (res.ok) return;
67
73
  const code = Object.values(require_apiError.errorStatusCode).includes(res.status) ? res.status : 999;
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { a as mergeHeadersInit, i as mergeRequestInit, n as setApiClientConfig, o as toHeadersInit, r as store, s as createStore, t as buildRequestInitWithDefaultConfig } from "./apiClientConfigStore-DDleIkQN.mjs";
1
+ import { a as mergeHeadersInit, i as mergeRequestInit, n as setApiClientConfig, o as toHeadersInit, r as store, s as createStore, t as buildRequestInitWithDefaultConfig } from "./apiClientConfigStore-Buly03AC.mjs";
2
2
  import qs from "qs";
3
3
  //#region src/zod.ts
4
4
  const schemaForType = () => (arg) => {
@@ -79,7 +79,13 @@ const getErrorStatus = (response) => {
79
79
  //#endregion
80
80
  //#region src/fetcher.ts
81
81
  const defaultRequestInit = { credentials: "include" };
82
- const createJsonFetcher = (schema, customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetch(input, mergeRequestInit(defaultRequestInit, mergeRequestInit(customRequestInit, requestInit))).then(async (res) => {
82
+ const fetchWithDefaultRequestInit = (input, customRequestInit, requestInit) => {
83
+ const callerRequestInit = mergeRequestInit(customRequestInit, requestInit);
84
+ const { defaultRequestInit: configDefaultRequestInit } = store.getState();
85
+ if (typeof configDefaultRequestInit !== "function") return fetch(input, mergeRequestInit(defaultRequestInit, callerRequestInit));
86
+ return Promise.resolve().then(() => configDefaultRequestInit(input)).then((resolved) => fetch(input, mergeRequestInit(defaultRequestInit, mergeRequestInit(resolved, callerRequestInit))));
87
+ };
88
+ const createJsonFetcher = (schema, customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetchWithDefaultRequestInit(input, customRequestInit, requestInit).then(async (res) => {
83
89
  options.onResponse?.(res);
84
90
  const text = await res.text();
85
91
  const body = text ? JSON.parse(text) : {};
@@ -99,7 +105,7 @@ const createJsonFetcher = (schema, customRequestInit = {}, options = {}) => (inp
99
105
  }
100
106
  throw result.error;
101
107
  });
102
- const createTextFetcher = (customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetch(input, mergeRequestInit(defaultRequestInit, mergeRequestInit(customRequestInit, requestInit))).then(async (res) => {
108
+ const createTextFetcher = (customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetchWithDefaultRequestInit(input, customRequestInit, requestInit).then(async (res) => {
103
109
  options.onResponse?.(res);
104
110
  const body = await res.text();
105
111
  if (res.ok) return body;
@@ -108,7 +114,7 @@ const createTextFetcher = (customRequestInit = {}, options = {}) => (input, requ
108
114
  store.getState().onError?.(error);
109
115
  throw error;
110
116
  });
111
- const createBlobFetcher = (customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetch(input, mergeRequestInit(defaultRequestInit, mergeRequestInit(customRequestInit, requestInit))).then(async (res) => {
117
+ const createBlobFetcher = (customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetchWithDefaultRequestInit(input, customRequestInit, requestInit).then(async (res) => {
112
118
  options.onResponse?.(res);
113
119
  const body = await res.blob();
114
120
  if (res.ok) return {
@@ -120,7 +126,7 @@ const createBlobFetcher = (customRequestInit = {}, options = {}) => (input, requ
120
126
  store.getState().onError?.(error);
121
127
  throw error;
122
128
  });
123
- const createFileOrBlobFetcher = (customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetch(input, mergeRequestInit(defaultRequestInit, mergeRequestInit(customRequestInit, requestInit))).then(async (res) => {
129
+ const createFileOrBlobFetcher = (customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetchWithDefaultRequestInit(input, customRequestInit, requestInit).then(async (res) => {
124
130
  options.onResponse?.(res);
125
131
  const body = await res.blob();
126
132
  if (res.ok) return {
@@ -132,7 +138,7 @@ const createFileOrBlobFetcher = (customRequestInit = {}, options = {}) => (input
132
138
  store.getState().onError?.(error);
133
139
  throw error;
134
140
  });
135
- const createVoidFetcher = (customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetch(input, mergeRequestInit(defaultRequestInit, mergeRequestInit(customRequestInit, requestInit))).then(async (res) => {
141
+ const createVoidFetcher = (customRequestInit = {}, options = {}) => (input, requestInit = {}) => fetchWithDefaultRequestInit(input, customRequestInit, requestInit).then(async (res) => {
136
142
  options.onResponse?.(res);
137
143
  if (res.ok) return;
138
144
  throw new HTTPError(Object.values(errorStatusCode).includes(res.status) ? res.status : 999, await res.text());
@@ -1,4 +1,4 @@
1
- import { i as mergeRequestInit, r as store } from "../apiClientConfigStore-DDleIkQN.mjs";
1
+ import { i as mergeRequestInit, r as store } from "../apiClientConfigStore-Buly03AC.mjs";
2
2
  import { createContext, useContext, useEffect, useMemo, useRef } from "react";
3
3
  import { SWRConfig } from "swr";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -55,8 +55,8 @@ const useApiClientConfigWithSelector = (selector) => {
55
55
  return useSyncExternalStoreWithSelector(store.subscribe, store.getState, store.getState, selector);
56
56
  };
57
57
  const useRequestInit = (customRequestInit = {}) => {
58
- const { defaultRequestInit = {} } = useApiClientConfig();
59
- return useMemo(() => mergeRequestInit(defaultRequestInit, customRequestInit), [defaultRequestInit, customRequestInit]);
58
+ const { defaultRequestInit } = useApiClientConfig();
59
+ return useMemo(() => typeof defaultRequestInit === "function" ? customRequestInit : mergeRequestInit(defaultRequestInit ?? {}, customRequestInit), [defaultRequestInit, customRequestInit]);
60
60
  };
61
61
  //#endregion
62
62
  export { ApiClientConfigProvider, createSwrConfig, useApiClientConfig, useApiClientConfigContext, useApiClientConfigWithSelector, useRequestInit };
@@ -14,8 +14,8 @@ const useApiClientConfigWithSelector = (selector) => {
14
14
  return (0, use_sync_external_store_shim_with_selector_js.useSyncExternalStoreWithSelector)(store.subscribe, store.getState, store.getState, selector);
15
15
  };
16
16
  const useRequestInit = (customRequestInit = {}) => {
17
- const { defaultRequestInit = {} } = useApiClientConfig();
18
- return (0, react.useMemo)(() => require_utils_requestInit.mergeRequestInit(defaultRequestInit, customRequestInit), [defaultRequestInit, customRequestInit]);
17
+ const { defaultRequestInit } = useApiClientConfig();
18
+ return (0, react.useMemo)(() => typeof defaultRequestInit === "function" ? customRequestInit : require_utils_requestInit.mergeRequestInit(defaultRequestInit ?? {}, customRequestInit), [defaultRequestInit, customRequestInit]);
19
19
  };
20
20
  //#endregion
21
21
  exports.useApiClientConfig = useApiClientConfig;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@readyfor/api-client-base",
3
- "version": "1.155.0-pr1529.49ab6aa",
3
+ "version": "1.155.0-pr1530.220bfeb",
4
4
  "license": "SEE LICENSE IN LICENSE.md",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",