@fragno-dev/api-fragment 0.0.0-stage → 0.0.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/LICENSE.md +16 -0
- package/README.md +249 -2
- package/dist/browser/client/client-3ZV9sw3i.js +2580 -0
- package/dist/browser/client/client-3ZV9sw3i.js.map +1 -0
- package/dist/browser/client/client-DPjmoaJQ.d.ts +711 -0
- package/dist/browser/client/client-DPjmoaJQ.d.ts.map +1 -0
- package/dist/browser/client/client.d.ts +1645 -0
- package/dist/browser/client/client.d.ts.map +1 -0
- package/dist/browser/client/client.js +2 -0
- package/dist/browser/client/react.d.ts +1665 -0
- package/dist/browser/client/react.d.ts.map +1 -0
- package/dist/browser/client/react.js +194 -0
- package/dist/browser/client/react.js.map +1 -0
- package/dist/browser/client/solid.d.ts +1668 -0
- package/dist/browser/client/solid.d.ts.map +1 -0
- package/dist/browser/client/solid.js +129 -0
- package/dist/browser/client/solid.js.map +1 -0
- package/dist/browser/client/svelte.d.ts +1668 -0
- package/dist/browser/client/svelte.d.ts.map +1 -0
- package/dist/browser/client/svelte.js +131 -0
- package/dist/browser/client/svelte.js.map +1 -0
- package/dist/browser/client/vanilla.d.ts +1695 -0
- package/dist/browser/client/vanilla.d.ts.map +1 -0
- package/dist/browser/client/vanilla.js +159 -0
- package/dist/browser/client/vanilla.js.map +1 -0
- package/dist/browser/client/vue.d.ts +1668 -0
- package/dist/browser/client/vue.d.ts.map +1 -0
- package/dist/browser/client/vue.js +127 -0
- package/dist/browser/client/vue.js.map +1 -0
- package/dist/browser/client-D4NnY-zV.d.ts +713 -0
- package/dist/browser/client-D4NnY-zV.d.ts.map +1 -0
- package/dist/browser/client-DQE0c7GI.d.ts +711 -0
- package/dist/browser/client-DQE0c7GI.d.ts.map +1 -0
- package/dist/browser/index.d.ts +3130 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +2 -0
- package/dist/browser/src-BrYPVbAN.js +2404 -0
- package/dist/browser/src-BrYPVbAN.js.map +1 -0
- package/dist/browser/src-t-4wp9-f.js +2400 -0
- package/dist/browser/src-t-4wp9-f.js.map +1 -0
- package/dist/node/api-types.d.ts +731 -0
- package/dist/node/api-types.d.ts.map +1 -0
- package/dist/node/api-types.js +281 -0
- package/dist/node/api-types.js.map +1 -0
- package/dist/node/crypto.d.ts +6 -0
- package/dist/node/crypto.d.ts.map +1 -0
- package/dist/node/crypto.js +103 -0
- package/dist/node/crypto.js.map +1 -0
- package/dist/node/definition.d.ts +638 -0
- package/dist/node/definition.d.ts.map +1 -0
- package/dist/node/definition.js +315 -0
- package/dist/node/definition.js.map +1 -0
- package/dist/node/oauth.js +124 -0
- package/dist/node/oauth.js.map +1 -0
- package/dist/node/routes.d.ts +1585 -0
- package/dist/node/routes.d.ts.map +1 -0
- package/dist/node/routes.js +1100 -0
- package/dist/node/routes.js.map +1 -0
- package/dist/node/schema.d.ts +99 -0
- package/dist/node/schema.d.ts.map +1 -0
- package/dist/node/schema.js +16 -0
- package/dist/node/schema.js.map +1 -0
- package/dist/node/server.d.ts +1585 -0
- package/dist/node/server.d.ts.map +1 -0
- package/dist/node/server.js +12 -0
- package/dist/node/server.js.map +1 -0
- package/dist/node/services.d.ts +10 -0
- package/dist/node/services.d.ts.map +1 -0
- package/dist/node/services.js +304 -0
- package/dist/node/services.js.map +1 -0
- package/dist/node/webhooks/auth.d.ts +133 -0
- package/dist/node/webhooks/auth.d.ts.map +1 -0
- package/dist/node/webhooks/auth.js +268 -0
- package/dist/node/webhooks/auth.js.map +1 -0
- package/dist/node/webhooks/verification.d.ts +102 -0
- package/dist/node/webhooks/verification.d.ts.map +1 -0
- package/dist/node/webhooks/verification.js +119 -0
- package/dist/node/webhooks/verification.js.map +1 -0
- package/package.json +136 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.d.ts","names":[],"sources":["../../../../fragno/dist/client/react.d.ts","../../../src/client/react.ts"],"mappings":";;;;KASK,gBAAgB,wBAAwB,sBAAsB,sBAAsB,kBAAkB,2BAA2B,oCAAoC;EACxK,OAAO,8BAA8B,gBAAgB;EACrD,QAAQ,gBAAgB,2BAA2B;MAC/C,aAAa,iBAAiB,YAAY,gBAAgB,yBAAyB,YAAY;EACnG;;KAEG,mBAAmB,iBAAiB,kBAAkB,sBAAsB,qBAAqB,8BAA8B,sBAAsB,8BAA8B,2BAA2B;EACjN,WAAW,MAAM,MAAM;IACrB,OAAO,QAAQ;IACf,OAAO,cAAc,sBAAsB,yBAAyB,gBAAgB;IACpF,QAAQ,gBAAgB,2BAA2B;QAC/C,QAAQ,QAAQ;EACtB;EACA,QAAQ,yBAAyB,YAAY;EAC7C,OAAO,QAAQ;;;;iBClBD,wBAAwB,SAAQ;kBAAA"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { i as isStore, n as isGetHook, o as isReadableAtom, r as isMutatorHook, t as createApiFragmentClients } from "./client-3ZV9sw3i.js";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef, useSyncExternalStore } from "react";
|
|
3
|
+
//#region ../../node_modules/.pnpm/nanostores@1.3.0/node_modules/nanostores/listen-keys/index.js
|
|
4
|
+
function listenKeys($store, keys, listener) {
|
|
5
|
+
let keysSet = new Set(keys).add(void 0);
|
|
6
|
+
return $store.listen((value, oldValue, changed) => {
|
|
7
|
+
if (keysSet.has(changed)) listener(value, oldValue, changed);
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
//#region ../fragno/dist/client/react.js
|
|
12
|
+
function createReactHook(hook) {
|
|
13
|
+
return ({ path, query } = {}) => {
|
|
14
|
+
const pathParamValues = path ? Object.values(path) : [];
|
|
15
|
+
const queryParamValues = query ? Object.values(query) : [];
|
|
16
|
+
const store = useMemoWithDependencies(() => hook.store({
|
|
17
|
+
path,
|
|
18
|
+
query
|
|
19
|
+
}), [
|
|
20
|
+
hook,
|
|
21
|
+
...pathParamValues,
|
|
22
|
+
...queryParamValues
|
|
23
|
+
]);
|
|
24
|
+
const value = useStore(store);
|
|
25
|
+
const refetch = useCallback(() => {
|
|
26
|
+
store.revalidate();
|
|
27
|
+
}, [store]);
|
|
28
|
+
return useMemo(() => ({
|
|
29
|
+
...value,
|
|
30
|
+
refetch
|
|
31
|
+
}), [refetch, value]);
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function createReactMutator(hook) {
|
|
35
|
+
return () => {
|
|
36
|
+
return useStore(useMemo(() => hook.mutatorStore, [hook]));
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function useMemoWithDependencies(factory, dependencies) {
|
|
40
|
+
return useMemo(factory, dependencies);
|
|
41
|
+
}
|
|
42
|
+
const isPlainObject = (value) => {
|
|
43
|
+
if (!value || typeof value !== "object") return false;
|
|
44
|
+
const prototype = Object.getPrototypeOf(value);
|
|
45
|
+
return prototype === Object.prototype || prototype === null;
|
|
46
|
+
};
|
|
47
|
+
function areStoreFactoryValuesEqual(left, right) {
|
|
48
|
+
if (Object.is(left, right)) return true;
|
|
49
|
+
if (Array.isArray(left) && Array.isArray(right)) return left.length === right.length && left.every((value, index) => areStoreFactoryValuesEqual(value, right[index]));
|
|
50
|
+
if (left instanceof Date && right instanceof Date) return left.getTime() === right.getTime();
|
|
51
|
+
if (isReadableAtom(left) || isReadableAtom(right)) return left === right;
|
|
52
|
+
if (typeof left === "function" || typeof right === "function") return left === right;
|
|
53
|
+
if (isPlainObject(left) && isPlainObject(right)) {
|
|
54
|
+
const leftKeys = Object.keys(left).toSorted();
|
|
55
|
+
const rightKeys = Object.keys(right).toSorted();
|
|
56
|
+
return leftKeys.length === rightKeys.length && leftKeys.every((key, index) => key === rightKeys[index] && areStoreFactoryValuesEqual(left[key], right[key]));
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
function areStoreFactoryArgsEqual(left, right) {
|
|
61
|
+
return left.length === right.length && left.every((value, index) => areStoreFactoryValuesEqual(value, right[index]));
|
|
62
|
+
}
|
|
63
|
+
const createReactStoreObjectView = (value, getAtomValue) => {
|
|
64
|
+
const atomValues = /* @__PURE__ */ new Map();
|
|
65
|
+
const boundMethods = /* @__PURE__ */ new Map();
|
|
66
|
+
return new Proxy(value, { get(target, property, _receiver) {
|
|
67
|
+
const propertyValue = target[property];
|
|
68
|
+
if (isReadableAtom(propertyValue)) {
|
|
69
|
+
if (atomValues.has(propertyValue)) return atomValues.get(propertyValue);
|
|
70
|
+
const atomValue = getAtomValue(propertyValue);
|
|
71
|
+
atomValues.set(propertyValue, atomValue);
|
|
72
|
+
return atomValue;
|
|
73
|
+
}
|
|
74
|
+
if (typeof propertyValue === "function") {
|
|
75
|
+
if (boundMethods.has(property)) return boundMethods.get(property);
|
|
76
|
+
const boundMethod = propertyValue.bind(target);
|
|
77
|
+
boundMethods.set(property, boundMethod);
|
|
78
|
+
return boundMethod;
|
|
79
|
+
}
|
|
80
|
+
return propertyValue;
|
|
81
|
+
} });
|
|
82
|
+
};
|
|
83
|
+
function useReactStoreValue(value) {
|
|
84
|
+
const atomEntries = useMemo(() => {
|
|
85
|
+
if (isReadableAtom(value)) return [[void 0, value]];
|
|
86
|
+
return Object.keys(value).flatMap((key) => {
|
|
87
|
+
const fieldValue = value[key];
|
|
88
|
+
return isReadableAtom(fieldValue) ? [[key, fieldValue]] : [];
|
|
89
|
+
});
|
|
90
|
+
}, [value]);
|
|
91
|
+
const snapshotRef = useRef(null);
|
|
92
|
+
if (snapshotRef.current === null) snapshotRef.current = atomEntries.map(([, store]) => store.get());
|
|
93
|
+
const getSnapshot = useCallback(() => {
|
|
94
|
+
const nextSnapshot = atomEntries.map(([, store]) => store.get());
|
|
95
|
+
const previousSnapshot = snapshotRef.current;
|
|
96
|
+
if (previousSnapshot !== null && previousSnapshot.length === nextSnapshot.length && previousSnapshot.every((entry, index) => Object.is(entry, nextSnapshot[index]))) return previousSnapshot;
|
|
97
|
+
snapshotRef.current = nextSnapshot;
|
|
98
|
+
return nextSnapshot;
|
|
99
|
+
}, [atomEntries]);
|
|
100
|
+
const atomValues = useSyncExternalStore(useCallback((onStoreChange) => {
|
|
101
|
+
const unsubscribes = atomEntries.map(([, store]) => store.listen(onStoreChange));
|
|
102
|
+
return () => {
|
|
103
|
+
for (const unsubscribe of unsubscribes) unsubscribe();
|
|
104
|
+
};
|
|
105
|
+
}, [atomEntries]), getSnapshot, getSnapshot);
|
|
106
|
+
return useMemo(() => {
|
|
107
|
+
if (isReadableAtom(value)) return atomValues[0];
|
|
108
|
+
return createReactStoreObjectView(value, (store) => {
|
|
109
|
+
const atomIndex = atomEntries.findIndex(([, entryStore]) => entryStore === store);
|
|
110
|
+
return atomIndex === -1 ? store.get() : atomValues[atomIndex];
|
|
111
|
+
});
|
|
112
|
+
}, [
|
|
113
|
+
value,
|
|
114
|
+
atomEntries,
|
|
115
|
+
atomValues
|
|
116
|
+
]);
|
|
117
|
+
}
|
|
118
|
+
function createReactStore(hook) {
|
|
119
|
+
return (...args) => {
|
|
120
|
+
const pendingDisposalsRef = useRef(null);
|
|
121
|
+
if (pendingDisposalsRef.current === null) pendingDisposalsRef.current = /* @__PURE__ */ new Map();
|
|
122
|
+
const pendingDisposals = pendingDisposalsRef.current;
|
|
123
|
+
const stableArgsRef = useRef(args);
|
|
124
|
+
if (!areStoreFactoryArgsEqual(stableArgsRef.current, args)) stableArgsRef.current = args;
|
|
125
|
+
const stableArgs = stableArgsRef.current;
|
|
126
|
+
const value = useMemo(() => {
|
|
127
|
+
if ("factory" in hook) return hook.factory(...stableArgs);
|
|
128
|
+
return hook.obj;
|
|
129
|
+
}, [hook, stableArgs]);
|
|
130
|
+
useEffect(() => {
|
|
131
|
+
const dispose = value[Symbol.dispose];
|
|
132
|
+
const disposer = typeof dispose === "function" ? dispose.bind(value) : void 0;
|
|
133
|
+
const pendingTimeout = pendingDisposals.get(value);
|
|
134
|
+
if (pendingTimeout !== void 0) {
|
|
135
|
+
clearTimeout(pendingTimeout);
|
|
136
|
+
pendingDisposals.delete(value);
|
|
137
|
+
}
|
|
138
|
+
return () => {
|
|
139
|
+
if (!disposer) return;
|
|
140
|
+
const timeoutId = setTimeout(() => {
|
|
141
|
+
pendingDisposals.delete(value);
|
|
142
|
+
disposer();
|
|
143
|
+
}, 0);
|
|
144
|
+
pendingDisposals.set(value, timeoutId);
|
|
145
|
+
};
|
|
146
|
+
}, [pendingDisposals, value]);
|
|
147
|
+
return useReactStoreValue(value);
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
function createFragnoReactClient(clientObj) {
|
|
151
|
+
const result = {};
|
|
152
|
+
for (const key in clientObj) {
|
|
153
|
+
if (!Object.prototype.hasOwnProperty.call(clientObj, key)) continue;
|
|
154
|
+
const hook = clientObj[key];
|
|
155
|
+
if (isGetHook(hook)) result[key] = createReactHook(hook);
|
|
156
|
+
else if (isMutatorHook(hook)) result[key] = createReactMutator(hook);
|
|
157
|
+
else if (isStore(hook)) result[key] = createReactStore(hook);
|
|
158
|
+
else result[key] = hook;
|
|
159
|
+
}
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
162
|
+
function useStore(store, options = {}) {
|
|
163
|
+
const readStoreValue = useCallback(() => store.get(), [store]);
|
|
164
|
+
const snapshotRef = useRef(null);
|
|
165
|
+
if (snapshotRef.current === null) snapshotRef.current = { value: readStoreValue() };
|
|
166
|
+
const { keys } = options;
|
|
167
|
+
const subscribe = useCallback((onChange) => {
|
|
168
|
+
const emitChange = (value) => {
|
|
169
|
+
if (snapshotRef.current?.value === value) return;
|
|
170
|
+
snapshotRef.current = { value };
|
|
171
|
+
onChange();
|
|
172
|
+
};
|
|
173
|
+
emitChange(readStoreValue());
|
|
174
|
+
if (keys?.length) return listenKeys(store, keys, emitChange);
|
|
175
|
+
return store.listen(emitChange);
|
|
176
|
+
}, [
|
|
177
|
+
keys,
|
|
178
|
+
readStoreValue,
|
|
179
|
+
store
|
|
180
|
+
]);
|
|
181
|
+
const get = () => snapshotRef.current.value;
|
|
182
|
+
return useSyncExternalStore(subscribe, get, () => {
|
|
183
|
+
return get();
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
//#endregion
|
|
187
|
+
//#region src/client/react.ts
|
|
188
|
+
function createApiFragmentClient(config = {}) {
|
|
189
|
+
return createFragnoReactClient(createApiFragmentClients(config));
|
|
190
|
+
}
|
|
191
|
+
//#endregion
|
|
192
|
+
export { createApiFragmentClient };
|
|
193
|
+
|
|
194
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.js","names":["listenKeys","$store","keys","listener","keysSet","Set","add","undefined","listen","value","oldValue","changed","has","subscribeKeys","unbind","isReadableAtom","hydrateFromWindow","isGetHook","isMutatorHook","isStore","listenKeys","useCallback","useEffect","useMemo","useRef","useSyncExternalStore","createReactHook","hook","path","query","pathParamValues","Object","values","queryParamValues","store","useMemoWithDependencies","value","useStore","refetch","revalidate","createReactMutator","mutatorStore","factory","dependencies","isPlainObject","prototype","getPrototypeOf","areStoreFactoryValuesEqual","left","right","is","Array","isArray","length","every","index","Date","getTime","leftKeys","keys","toSorted","rightKeys","key","areStoreFactoryArgsEqual","createReactStoreObjectView","getAtomValue","atomValues","Map","boundMethods","Proxy","get","target","property","_receiver","propertyValue","has","atomValue","set","boundMethod","bind","useReactStoreValue","atomEntries","flatMap","fieldValue","snapshotRef","current","map","getSnapshot","nextSnapshot","previousSnapshot","entry","onStoreChange","unsubscribes","listen","unsubscribe","atomIndex","findIndex","entryStore","createReactStore","args","pendingDisposalsRef","pendingDisposals","stableArgsRef","stableArgs","obj","dispose","Symbol","disposer","pendingTimeout","clearTimeout","delete","timeoutId","setTimeout","createFragnoReactClient","clientObj","result","hasOwnProperty","call","options","readStoreValue","subscribe","onChange","emitChange","FragnoHydrator","children","FragnoPublicClientConfig","createFragnoReactClient","createApiFragmentClients","createApiFragmentClient","config"],"sources":["../../../../../node_modules/.pnpm/nanostores@1.3.0/node_modules/nanostores/listen-keys/index.js","../../../../fragno/dist/client/react.js","../../../src/client/react.ts"],"sourcesContent":["export function listenKeys($store, keys, listener) {\n let keysSet = new Set(keys).add(undefined)\n return $store.listen((value, oldValue, changed) => {\n if (keysSet.has(changed)) {\n listener(value, oldValue, changed)\n }\n })\n}\n\nexport function subscribeKeys($store, keys, listener) {\n let unbind = listenKeys($store, keys, listener)\n listener($store.value)\n return unbind\n}\n","import { isReadableAtom } from \"../util/nanostores.js\";\nimport { hydrateFromWindow } from \"../util/ssr.js\";\nimport { isGetHook, isMutatorHook, isStore } from \"./client.js\";\nimport { listenKeys } from \"nanostores\";\nimport { useCallback, useEffect, useMemo, useRef, useSyncExternalStore } from \"react\";\n//#region src/client/react.ts\nfunction createReactHook(hook) {\n\treturn ({ path, query } = {}) => {\n\t\tconst pathParamValues = path ? Object.values(path) : [];\n\t\tconst queryParamValues = query ? Object.values(query) : [];\n\t\tconst store = useMemoWithDependencies(() => hook.store({\n\t\t\tpath,\n\t\t\tquery\n\t\t}), [\n\t\t\thook,\n\t\t\t...pathParamValues,\n\t\t\t...queryParamValues\n\t\t]);\n\t\tconst value = useStore(store);\n\t\tconst refetch = useCallback(() => {\n\t\t\tstore.revalidate();\n\t\t}, [store]);\n\t\treturn useMemo(() => ({\n\t\t\t...value,\n\t\t\trefetch\n\t\t}), [refetch, value]);\n\t};\n}\nfunction createReactMutator(hook) {\n\treturn () => {\n\t\treturn useStore(useMemo(() => hook.mutatorStore, [hook]));\n\t};\n}\nfunction useMemoWithDependencies(factory, dependencies) {\n\treturn useMemo(factory, dependencies);\n}\nconst isPlainObject = (value) => {\n\tif (!value || typeof value !== \"object\") return false;\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === Object.prototype || prototype === null;\n};\nfunction areStoreFactoryValuesEqual(left, right) {\n\tif (Object.is(left, right)) return true;\n\tif (Array.isArray(left) && Array.isArray(right)) return left.length === right.length && left.every((value, index) => areStoreFactoryValuesEqual(value, right[index]));\n\tif (left instanceof Date && right instanceof Date) return left.getTime() === right.getTime();\n\tif (isReadableAtom(left) || isReadableAtom(right)) return left === right;\n\tif (typeof left === \"function\" || typeof right === \"function\") return left === right;\n\tif (isPlainObject(left) && isPlainObject(right)) {\n\t\tconst leftKeys = Object.keys(left).toSorted();\n\t\tconst rightKeys = Object.keys(right).toSorted();\n\t\treturn leftKeys.length === rightKeys.length && leftKeys.every((key, index) => key === rightKeys[index] && areStoreFactoryValuesEqual(left[key], right[key]));\n\t}\n\treturn false;\n}\nfunction areStoreFactoryArgsEqual(left, right) {\n\treturn left.length === right.length && left.every((value, index) => areStoreFactoryValuesEqual(value, right[index]));\n}\nconst createReactStoreObjectView = (value, getAtomValue) => {\n\tconst atomValues = /* @__PURE__ */ new Map();\n\tconst boundMethods = /* @__PURE__ */ new Map();\n\treturn new Proxy(value, { get(target, property, _receiver) {\n\t\tconst propertyValue = target[property];\n\t\tif (isReadableAtom(propertyValue)) {\n\t\t\tif (atomValues.has(propertyValue)) return atomValues.get(propertyValue);\n\t\t\tconst atomValue = getAtomValue(propertyValue);\n\t\t\tatomValues.set(propertyValue, atomValue);\n\t\t\treturn atomValue;\n\t\t}\n\t\tif (typeof propertyValue === \"function\") {\n\t\t\tif (boundMethods.has(property)) return boundMethods.get(property);\n\t\t\tconst boundMethod = propertyValue.bind(target);\n\t\t\tboundMethods.set(property, boundMethod);\n\t\t\treturn boundMethod;\n\t\t}\n\t\treturn propertyValue;\n\t} });\n};\nfunction useReactStoreValue(value) {\n\tconst atomEntries = useMemo(() => {\n\t\tif (isReadableAtom(value)) return [[void 0, value]];\n\t\treturn Object.keys(value).flatMap((key) => {\n\t\t\tconst fieldValue = value[key];\n\t\t\treturn isReadableAtom(fieldValue) ? [[key, fieldValue]] : [];\n\t\t});\n\t}, [value]);\n\tconst snapshotRef = useRef(null);\n\tif (snapshotRef.current === null) snapshotRef.current = atomEntries.map(([, store]) => store.get());\n\tconst getSnapshot = useCallback(() => {\n\t\tconst nextSnapshot = atomEntries.map(([, store]) => store.get());\n\t\tconst previousSnapshot = snapshotRef.current;\n\t\tif (previousSnapshot !== null && previousSnapshot.length === nextSnapshot.length && previousSnapshot.every((entry, index) => Object.is(entry, nextSnapshot[index]))) return previousSnapshot;\n\t\tsnapshotRef.current = nextSnapshot;\n\t\treturn nextSnapshot;\n\t}, [atomEntries]);\n\tconst atomValues = useSyncExternalStore(useCallback((onStoreChange) => {\n\t\tconst unsubscribes = atomEntries.map(([, store]) => store.listen(onStoreChange));\n\t\treturn () => {\n\t\t\tfor (const unsubscribe of unsubscribes) unsubscribe();\n\t\t};\n\t}, [atomEntries]), getSnapshot, getSnapshot);\n\treturn useMemo(() => {\n\t\tif (isReadableAtom(value)) return atomValues[0];\n\t\treturn createReactStoreObjectView(value, (store) => {\n\t\t\tconst atomIndex = atomEntries.findIndex(([, entryStore]) => entryStore === store);\n\t\t\treturn atomIndex === -1 ? store.get() : atomValues[atomIndex];\n\t\t});\n\t}, [\n\t\tvalue,\n\t\tatomEntries,\n\t\tatomValues\n\t]);\n}\nfunction createReactStore(hook) {\n\treturn ((...args) => {\n\t\tconst pendingDisposalsRef = useRef(null);\n\t\tif (pendingDisposalsRef.current === null) pendingDisposalsRef.current = /* @__PURE__ */ new Map();\n\t\tconst pendingDisposals = pendingDisposalsRef.current;\n\t\tconst stableArgsRef = useRef(args);\n\t\tif (!areStoreFactoryArgsEqual(stableArgsRef.current, args)) stableArgsRef.current = args;\n\t\tconst stableArgs = stableArgsRef.current;\n\t\tconst value = useMemo(() => {\n\t\t\tif (\"factory\" in hook) return hook.factory(...stableArgs);\n\t\t\treturn hook.obj;\n\t\t}, [hook, stableArgs]);\n\t\tuseEffect(() => {\n\t\t\tconst dispose = value[Symbol.dispose];\n\t\t\tconst disposer = typeof dispose === \"function\" ? dispose.bind(value) : void 0;\n\t\t\tconst pendingTimeout = pendingDisposals.get(value);\n\t\t\tif (pendingTimeout !== void 0) {\n\t\t\t\tclearTimeout(pendingTimeout);\n\t\t\t\tpendingDisposals.delete(value);\n\t\t\t}\n\t\t\treturn () => {\n\t\t\t\tif (!disposer) return;\n\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\tpendingDisposals.delete(value);\n\t\t\t\t\tdisposer();\n\t\t\t\t}, 0);\n\t\t\t\tpendingDisposals.set(value, timeoutId);\n\t\t\t};\n\t\t}, [pendingDisposals, value]);\n\t\treturn useReactStoreValue(value);\n\t});\n}\nfunction createFragnoReactClient(clientObj) {\n\tconst result = {};\n\tfor (const key in clientObj) {\n\t\tif (!Object.prototype.hasOwnProperty.call(clientObj, key)) continue;\n\t\tconst hook = clientObj[key];\n\t\tif (isGetHook(hook)) result[key] = createReactHook(hook);\n\t\telse if (isMutatorHook(hook)) result[key] = createReactMutator(hook);\n\t\telse if (isStore(hook)) result[key] = createReactStore(hook);\n\t\telse result[key] = hook;\n\t}\n\treturn result;\n}\nfunction useStore(store, options = {}) {\n\tconst readStoreValue = useCallback(() => store.get(), [store]);\n\tconst snapshotRef = useRef(null);\n\tif (snapshotRef.current === null) snapshotRef.current = { value: readStoreValue() };\n\tconst { keys } = options;\n\tconst subscribe = useCallback((onChange) => {\n\t\tconst emitChange = (value) => {\n\t\t\tif (snapshotRef.current?.value === value) return;\n\t\t\tsnapshotRef.current = { value };\n\t\t\tonChange();\n\t\t};\n\t\temitChange(readStoreValue());\n\t\tif (keys?.length) return listenKeys(store, keys, emitChange);\n\t\treturn store.listen(emitChange);\n\t}, [\n\t\tkeys,\n\t\treadStoreValue,\n\t\tstore\n\t]);\n\tconst get = () => snapshotRef.current.value;\n\treturn useSyncExternalStore(subscribe, get, () => {\n\t\treturn get();\n\t});\n}\nfunction FragnoHydrator({ children }) {\n\tuseMemo(() => {\n\t\thydrateFromWindow();\n\t}, []);\n\treturn children;\n}\n//#endregion\nexport { FragnoHydrator, createFragnoReactClient, useStore };\n\n//# sourceMappingURL=react.js.map","import type { FragnoPublicClientConfig } from \"@fragno-dev/core/client\";\nimport { createFragnoReactClient } from \"@fragno-dev/core/react\";\n\nimport { createApiFragmentClients } from \"./client\";\n\nexport function createApiFragmentClient(config: FragnoPublicClientConfig = {}) {\n return createFragnoReactClient(createApiFragmentClients(config));\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|