hermium 0.1.2 → 0.1.4
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/bin/hermium.mjs +184 -145
- package/dist/server/index.mjs +65 -65
- package/dist/web-server/__23tanstack-start-plugin-adapters-Cwee5PKy.mjs +6 -0
- package/dist/web-server/_chunks/ssr-renderer.mjs +22 -0
- package/dist/web-server/_libs/babel__runtime.mjs +237 -0
- package/dist/web-server/_libs/bail.mjs +8 -0
- package/dist/web-server/_libs/base-ui__react.mjs +9554 -0
- package/dist/web-server/_libs/base-ui__utils.mjs +1101 -0
- package/dist/web-server/_libs/ccount.mjs +16 -0
- package/dist/web-server/_libs/character-entities-legacy.mjs +111 -0
- package/dist/web-server/_libs/character-entities.mjs +2130 -0
- package/dist/web-server/_libs/character-reference-invalid.mjs +33 -0
- package/dist/web-server/_libs/class-variance-authority.mjs +44 -0
- package/dist/web-server/_libs/clsx.mjs +16 -0
- package/dist/web-server/_libs/comma-separated-tokens.mjs +31 -0
- package/dist/web-server/_libs/cookie-es.mjs +44 -0
- package/dist/web-server/_libs/croner.mjs +1 -0
- package/dist/web-server/_libs/crossws.mjs +1 -0
- package/dist/web-server/_libs/decode-named-character-reference+[...].mjs +8 -0
- package/dist/web-server/_libs/devlop.mjs +8 -0
- package/dist/web-server/_libs/escape-string-regexp.mjs +9 -0
- package/dist/web-server/_libs/estree-util-is-identifier-name.mjs +11 -0
- package/dist/web-server/_libs/extend.mjs +97 -0
- package/dist/web-server/_libs/fault.mjs +1 -0
- package/dist/web-server/_libs/floating-ui__core.mjs +663 -0
- package/dist/web-server/_libs/floating-ui__dom.mjs +624 -0
- package/dist/web-server/_libs/floating-ui__react-dom.mjs +279 -0
- package/dist/web-server/_libs/floating-ui__utils.mjs +322 -0
- package/dist/web-server/_libs/format.mjs +1 -0
- package/dist/web-server/_libs/h3.mjs +408 -0
- package/dist/web-server/_libs/hast-util-parse-selector.mjs +39 -0
- package/dist/web-server/_libs/hast-util-to-jsx-runtime.mjs +388 -0
- package/dist/web-server/_libs/hast-util-whitespace.mjs +10 -0
- package/dist/web-server/_libs/hastscript.mjs +200 -0
- package/dist/web-server/_libs/highlight.js.mjs +1 -0
- package/dist/web-server/_libs/hookable.mjs +1 -0
- package/dist/web-server/_libs/html-url-attributes.mjs +26 -0
- package/dist/web-server/_libs/inline-style-parser.mjs +142 -0
- package/dist/web-server/_libs/is-alphabetical.mjs +7 -0
- package/dist/web-server/_libs/is-alphanumerical.mjs +8 -0
- package/dist/web-server/_libs/is-decimal.mjs +7 -0
- package/dist/web-server/_libs/is-hexadecimal.mjs +7 -0
- package/dist/web-server/_libs/is-plain-obj.mjs +10 -0
- package/dist/web-server/_libs/isbot.mjs +21 -0
- package/dist/web-server/_libs/longest-streak.mjs +25 -0
- package/dist/web-server/_libs/lowlight.mjs +1 -0
- package/dist/web-server/_libs/markdown-table.mjs +142 -0
- package/dist/web-server/_libs/mdast-util-find-and-replace.mjs +109 -0
- package/dist/web-server/_libs/mdast-util-from-markdown.mjs +717 -0
- package/dist/web-server/_libs/mdast-util-gfm-autolink-literal+[...].mjs +156 -0
- package/dist/web-server/_libs/mdast-util-gfm-footnote.mjs +117 -0
- package/dist/web-server/_libs/mdast-util-gfm-strikethrough.mjs +54 -0
- package/dist/web-server/_libs/mdast-util-gfm-table.mjs +157 -0
- package/dist/web-server/_libs/mdast-util-gfm-task-list-item.mjs +77 -0
- package/dist/web-server/_libs/mdast-util-gfm.mjs +29 -0
- package/dist/web-server/_libs/mdast-util-phrasing.mjs +30 -0
- package/dist/web-server/_libs/mdast-util-to-hast.mjs +710 -0
- package/dist/web-server/_libs/mdast-util-to-markdown.mjs +798 -0
- package/dist/web-server/_libs/mdast-util-to-string.mjs +38 -0
- package/dist/web-server/_libs/micromark-core-commonmark.mjs +2259 -0
- package/dist/web-server/_libs/micromark-extension-gfm-autolink-literal+[...].mjs +344 -0
- package/dist/web-server/_libs/micromark-extension-gfm-footnote+[...].mjs +279 -0
- package/dist/web-server/_libs/micromark-extension-gfm-strikethrough+[...].mjs +98 -0
- package/dist/web-server/_libs/micromark-extension-gfm-table.mjs +491 -0
- package/dist/web-server/_libs/micromark-extension-gfm-tagfilter+[...].mjs +1 -0
- package/dist/web-server/_libs/micromark-extension-gfm-task-list-item+[...].mjs +77 -0
- package/dist/web-server/_libs/micromark-extension-gfm.mjs +18 -0
- package/dist/web-server/_libs/micromark-factory-destination.mjs +94 -0
- package/dist/web-server/_libs/micromark-factory-label.mjs +63 -0
- package/dist/web-server/_libs/micromark-factory-space.mjs +24 -0
- package/dist/web-server/_libs/micromark-factory-title.mjs +65 -0
- package/dist/web-server/_libs/micromark-factory-whitespace.mjs +22 -0
- package/dist/web-server/_libs/micromark-util-character.mjs +44 -0
- package/dist/web-server/_libs/micromark-util-chunked.mjs +36 -0
- package/dist/web-server/_libs/micromark-util-classify-character+[...].mjs +12 -0
- package/dist/web-server/_libs/micromark-util-combine-extensions+[...].mjs +41 -0
- package/dist/web-server/_libs/micromark-util-decode-numeric-character-reference+[...].mjs +19 -0
- package/dist/web-server/_libs/micromark-util-decode-string.mjs +21 -0
- package/dist/web-server/_libs/micromark-util-encode.mjs +1 -0
- package/dist/web-server/_libs/micromark-util-html-tag-name.mjs +69 -0
- package/dist/web-server/_libs/micromark-util-normalize-identifier+[...].mjs +6 -0
- package/dist/web-server/_libs/micromark-util-resolve-all.mjs +15 -0
- package/dist/web-server/_libs/micromark-util-sanitize-uri.mjs +41 -0
- package/dist/web-server/_libs/micromark-util-subtokenize.mjs +346 -0
- package/dist/web-server/_libs/micromark.mjs +906 -0
- package/dist/web-server/_libs/ocache.mjs +1 -0
- package/dist/web-server/_libs/ohash.mjs +1 -0
- package/dist/web-server/_libs/parse-entities.mjs +245 -0
- package/dist/web-server/_libs/property-information.mjs +1210 -0
- package/dist/web-server/_libs/react-dom.mjs +10779 -0
- package/dist/web-server/_libs/react-markdown.mjs +147 -0
- package/dist/web-server/_libs/react-syntax-highlighter.mjs +941 -0
- package/dist/web-server/_libs/react.mjs +513 -0
- package/dist/web-server/_libs/refractor.mjs +2425 -0
- package/dist/web-server/_libs/remark-gfm.mjs +20 -0
- package/dist/web-server/_libs/remark-parse.mjs +19 -0
- package/dist/web-server/_libs/remark-rehype.mjs +21 -0
- package/dist/web-server/_libs/reselect.mjs +1 -0
- package/dist/web-server/_libs/rou3.mjs +8 -0
- package/dist/web-server/_libs/seroval-plugins.mjs +58 -0
- package/dist/web-server/_libs/seroval.mjs +1775 -0
- package/dist/web-server/_libs/space-separated-tokens.mjs +11 -0
- package/dist/web-server/_libs/srvx.mjs +781 -0
- package/dist/web-server/_libs/style-to-js.mjs +72 -0
- package/dist/web-server/_libs/style-to-object.mjs +38 -0
- package/dist/web-server/_libs/tabler__icons-react.mjs +224 -0
- package/dist/web-server/_libs/tanstack__history.mjs +204 -0
- package/dist/web-server/_libs/tanstack__query-core.mjs +2552 -0
- package/dist/web-server/_libs/tanstack__react-query.mjs +190 -0
- package/dist/web-server/_libs/tanstack__react-router.mjs +1120 -0
- package/dist/web-server/_libs/tanstack__react-store.mjs +2 -0
- package/dist/web-server/_libs/tanstack__router-core.mjs +4288 -0
- package/dist/web-server/_libs/tanstack__store.mjs +1 -0
- package/dist/web-server/_libs/trim-lines.mjs +41 -0
- package/dist/web-server/_libs/trough.mjs +85 -0
- package/dist/web-server/_libs/ufo.mjs +54 -0
- package/dist/web-server/_libs/unctx.mjs +1 -0
- package/dist/web-server/_libs/ungap__structured-clone.mjs +224 -0
- package/dist/web-server/_libs/unified.mjs +661 -0
- package/dist/web-server/_libs/unist-util-is.mjs +100 -0
- package/dist/web-server/_libs/unist-util-position.mjs +27 -0
- package/dist/web-server/_libs/unist-util-stringify-position.mjs +27 -0
- package/dist/web-server/_libs/unist-util-visit-parents.mjs +83 -0
- package/dist/web-server/_libs/unist-util-visit.mjs +24 -0
- package/dist/web-server/_libs/unstorage.mjs +1 -0
- package/dist/web-server/_libs/use-sync-external-store.mjs +139 -0
- package/dist/web-server/_libs/vfile-message.mjs +138 -0
- package/dist/web-server/_libs/vfile.mjs +467 -0
- package/dist/web-server/_libs/zod.mjs +3915 -0
- package/dist/web-server/_libs/zustand.mjs +343 -0
- package/dist/web-server/_libs/zwitch.mjs +1 -0
- package/dist/web-server/_ssr/index-BLK6uN4p.mjs +612 -0
- package/dist/web-server/_ssr/index-BkkxTg0a.mjs +1855 -0
- package/dist/web-server/_ssr/index-Bp9a_nTf.mjs +66 -0
- package/dist/web-server/_ssr/index-C8t8AZQG.mjs +513 -0
- package/dist/web-server/_ssr/index-DSIu0x-q.mjs +449 -0
- package/dist/web-server/_ssr/index-DqFrn6kj.mjs +278 -0
- package/dist/web-server/_ssr/index-EKE8NFy_.mjs +189 -0
- package/dist/web-server/_ssr/index-JzLhPyir.mjs +213 -0
- package/dist/web-server/_ssr/index-wTy_4MhH.mjs +369 -0
- package/dist/web-server/_ssr/index.mjs +1558 -0
- package/dist/web-server/_ssr/input-BQFduUUo.mjs +20 -0
- package/dist/web-server/_ssr/router-59cN5lqo.mjs +1998 -0
- package/dist/web-server/_ssr/start-HYkvq4Ni.mjs +4 -0
- package/dist/web-server/_ssr/switch-Bim4kX8N.mjs +33 -0
- package/dist/web-server/_ssr/syntax-highlighter-5vezNTce.mjs +62 -0
- package/dist/web-server/_ssr/textarea-CK0ROhfF.mjs +18 -0
- package/dist/web-server/_tanstack-start-manifest_v-DLw6M7p4.mjs +4 -0
- package/dist/web-server/index.mjs +611 -0
- package/package.json +1 -1
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
import { R as React } from "./react.mjs";
|
|
2
|
+
const createStoreImpl = (createState) => {
|
|
3
|
+
let state;
|
|
4
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
5
|
+
const setState = (partial, replace) => {
|
|
6
|
+
const nextState = typeof partial === "function" ? partial(state) : partial;
|
|
7
|
+
if (!Object.is(nextState, state)) {
|
|
8
|
+
const previousState = state;
|
|
9
|
+
state = (replace != null ? replace : typeof nextState !== "object" || nextState === null) ? nextState : Object.assign({}, state, nextState);
|
|
10
|
+
listeners.forEach((listener) => listener(state, previousState));
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
const getState = () => state;
|
|
14
|
+
const getInitialState = () => initialState;
|
|
15
|
+
const subscribe = (listener) => {
|
|
16
|
+
listeners.add(listener);
|
|
17
|
+
return () => listeners.delete(listener);
|
|
18
|
+
};
|
|
19
|
+
const api = { setState, getState, getInitialState, subscribe };
|
|
20
|
+
const initialState = state = createState(setState, getState, api);
|
|
21
|
+
return api;
|
|
22
|
+
};
|
|
23
|
+
const createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);
|
|
24
|
+
const identity = (arg) => arg;
|
|
25
|
+
function useStore(api, selector = identity) {
|
|
26
|
+
const slice = React.useSyncExternalStore(
|
|
27
|
+
api.subscribe,
|
|
28
|
+
React.useCallback(() => selector(api.getState()), [api, selector]),
|
|
29
|
+
React.useCallback(() => selector(api.getInitialState()), [api, selector])
|
|
30
|
+
);
|
|
31
|
+
React.useDebugValue(slice);
|
|
32
|
+
return slice;
|
|
33
|
+
}
|
|
34
|
+
const createImpl = (createState) => {
|
|
35
|
+
const api = createStore(createState);
|
|
36
|
+
const useBoundStore = (selector) => useStore(api, selector);
|
|
37
|
+
Object.assign(useBoundStore, api);
|
|
38
|
+
return useBoundStore;
|
|
39
|
+
};
|
|
40
|
+
const create = ((createState) => createImpl);
|
|
41
|
+
const __vite_import_meta_env__ = { "BASE_URL": "/", "DEV": false, "MODE": "production", "PROD": true, "SSR": true, "TSS_DEV_SERVER": "false", "TSS_DEV_SSR_STYLES_BASEPATH": "/", "TSS_DEV_SSR_STYLES_ENABLED": "true", "TSS_INLINE_CSS_ENABLED": "false", "TSS_ROUTER_BASEPATH": "", "TSS_SERVER_FN_BASE": "/_serverFn/" };
|
|
42
|
+
const shouldDispatchFromDevtools = (api) => !!api.dispatchFromDevtools && typeof api.dispatch === "function";
|
|
43
|
+
const trackedConnections = /* @__PURE__ */ new Map();
|
|
44
|
+
const getTrackedConnectionState = (name) => {
|
|
45
|
+
const api = trackedConnections.get(name);
|
|
46
|
+
if (!api) return {};
|
|
47
|
+
return Object.fromEntries(
|
|
48
|
+
Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])
|
|
49
|
+
);
|
|
50
|
+
};
|
|
51
|
+
const extractConnectionInformation = (store, extensionConnector, options) => {
|
|
52
|
+
if (store === void 0) {
|
|
53
|
+
return {
|
|
54
|
+
type: "untracked",
|
|
55
|
+
connection: extensionConnector.connect(options)
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const existingConnection = trackedConnections.get(options.name);
|
|
59
|
+
if (existingConnection) {
|
|
60
|
+
return { type: "tracked", store, ...existingConnection };
|
|
61
|
+
}
|
|
62
|
+
const newConnection = {
|
|
63
|
+
connection: extensionConnector.connect(options),
|
|
64
|
+
stores: {}
|
|
65
|
+
};
|
|
66
|
+
trackedConnections.set(options.name, newConnection);
|
|
67
|
+
return { type: "tracked", store, ...newConnection };
|
|
68
|
+
};
|
|
69
|
+
const removeStoreFromTrackedConnections = (name, store) => {
|
|
70
|
+
if (store === void 0) return;
|
|
71
|
+
const connectionInfo = trackedConnections.get(name);
|
|
72
|
+
if (!connectionInfo) return;
|
|
73
|
+
delete connectionInfo.stores[store];
|
|
74
|
+
if (Object.keys(connectionInfo.stores).length === 0) {
|
|
75
|
+
trackedConnections.delete(name);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
const v8StackLineRe = /.+ (.+) .+/;
|
|
79
|
+
const geckoStackLineRe = /^([^@]+)@/;
|
|
80
|
+
function findCallerName(stack) {
|
|
81
|
+
var _a, _b, _c;
|
|
82
|
+
if (!stack) return void 0;
|
|
83
|
+
const traceLines = stack.split("\n");
|
|
84
|
+
const apiSetStateLineIndex = traceLines.findIndex(
|
|
85
|
+
(traceLine) => traceLine.includes("api.setState")
|
|
86
|
+
);
|
|
87
|
+
if (apiSetStateLineIndex < 0) return void 0;
|
|
88
|
+
const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || "";
|
|
89
|
+
return ((_b = v8StackLineRe.exec(callerLine)) == null ? void 0 : _b[1]) || ((_c = geckoStackLineRe.exec(callerLine)) == null ? void 0 : _c[1]);
|
|
90
|
+
}
|
|
91
|
+
const devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {
|
|
92
|
+
const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;
|
|
93
|
+
let extensionConnector;
|
|
94
|
+
try {
|
|
95
|
+
extensionConnector = (enabled != null ? enabled : (__vite_import_meta_env__ ? "production" : void 0) !== "production") && window.__REDUX_DEVTOOLS_EXTENSION__;
|
|
96
|
+
} catch (e) {
|
|
97
|
+
}
|
|
98
|
+
if (!extensionConnector) {
|
|
99
|
+
return fn(set, get, api);
|
|
100
|
+
}
|
|
101
|
+
const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);
|
|
102
|
+
let isRecording = true;
|
|
103
|
+
api.setState = ((state, replace, nameOrAction) => {
|
|
104
|
+
const r = set(state, replace);
|
|
105
|
+
if (!isRecording) return r;
|
|
106
|
+
const action = nameOrAction === void 0 ? {
|
|
107
|
+
type: anonymousActionType || findCallerName(new Error().stack) || "anonymous"
|
|
108
|
+
} : typeof nameOrAction === "string" ? { type: nameOrAction } : nameOrAction;
|
|
109
|
+
if (store === void 0) {
|
|
110
|
+
connection == null ? void 0 : connection.send(action, get());
|
|
111
|
+
return r;
|
|
112
|
+
}
|
|
113
|
+
connection == null ? void 0 : connection.send(
|
|
114
|
+
{
|
|
115
|
+
...action,
|
|
116
|
+
type: `${store}/${action.type}`
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
...getTrackedConnectionState(options.name),
|
|
120
|
+
[store]: api.getState()
|
|
121
|
+
}
|
|
122
|
+
);
|
|
123
|
+
return r;
|
|
124
|
+
});
|
|
125
|
+
api.devtools = {
|
|
126
|
+
cleanup: () => {
|
|
127
|
+
if (connection && typeof connection.unsubscribe === "function") {
|
|
128
|
+
connection.unsubscribe();
|
|
129
|
+
}
|
|
130
|
+
removeStoreFromTrackedConnections(options.name, store);
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
const setStateFromDevtools = (...a) => {
|
|
134
|
+
const originalIsRecording = isRecording;
|
|
135
|
+
isRecording = false;
|
|
136
|
+
set(...a);
|
|
137
|
+
isRecording = originalIsRecording;
|
|
138
|
+
};
|
|
139
|
+
const initialState = fn(api.setState, get, api);
|
|
140
|
+
if (connectionInformation.type === "untracked") {
|
|
141
|
+
connection == null ? void 0 : connection.init(initialState);
|
|
142
|
+
} else {
|
|
143
|
+
connectionInformation.stores[connectionInformation.store] = api;
|
|
144
|
+
connection == null ? void 0 : connection.init(
|
|
145
|
+
Object.fromEntries(
|
|
146
|
+
Object.entries(connectionInformation.stores).map(([key, store2]) => [
|
|
147
|
+
key,
|
|
148
|
+
key === connectionInformation.store ? initialState : store2.getState()
|
|
149
|
+
])
|
|
150
|
+
)
|
|
151
|
+
);
|
|
152
|
+
}
|
|
153
|
+
if (shouldDispatchFromDevtools(api)) {
|
|
154
|
+
let didWarnAboutReservedActionType = false;
|
|
155
|
+
const originalDispatch = api.dispatch;
|
|
156
|
+
api.dispatch = (...args) => {
|
|
157
|
+
if ((__vite_import_meta_env__ ? "production" : void 0) !== "production" && args[0].type === "__setState" && !didWarnAboutReservedActionType) {
|
|
158
|
+
console.warn(
|
|
159
|
+
'[zustand devtools middleware] "__setState" action type is reserved to set state from the devtools. Avoid using it.'
|
|
160
|
+
);
|
|
161
|
+
didWarnAboutReservedActionType = true;
|
|
162
|
+
}
|
|
163
|
+
originalDispatch(...args);
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
connection.subscribe((message) => {
|
|
167
|
+
var _a;
|
|
168
|
+
switch (message.type) {
|
|
169
|
+
case "ACTION":
|
|
170
|
+
if (typeof message.payload !== "string") {
|
|
171
|
+
console.error(
|
|
172
|
+
"[zustand devtools middleware] Unsupported action format"
|
|
173
|
+
);
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
return parseJsonThen(
|
|
177
|
+
message.payload,
|
|
178
|
+
(action) => {
|
|
179
|
+
if (action.type === "__setState") {
|
|
180
|
+
if (store === void 0) {
|
|
181
|
+
setStateFromDevtools(action.state);
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
if (Object.keys(action.state).length !== 1) {
|
|
185
|
+
console.error(
|
|
186
|
+
`
|
|
187
|
+
[zustand devtools middleware] Unsupported __setState action format.
|
|
188
|
+
When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),
|
|
189
|
+
and value of this only key should be a state object. Example: { "type": "__setState", "state": { "abc123Store": { "foo": "bar" } } }
|
|
190
|
+
`
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
const stateFromDevtools = action.state[store];
|
|
194
|
+
if (stateFromDevtools === void 0 || stateFromDevtools === null) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {
|
|
198
|
+
setStateFromDevtools(stateFromDevtools);
|
|
199
|
+
}
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
if (shouldDispatchFromDevtools(api)) {
|
|
203
|
+
api.dispatch(action);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
);
|
|
207
|
+
case "DISPATCH":
|
|
208
|
+
switch (message.payload.type) {
|
|
209
|
+
case "RESET":
|
|
210
|
+
setStateFromDevtools(initialState);
|
|
211
|
+
if (store === void 0) {
|
|
212
|
+
return connection == null ? void 0 : connection.init(api.getState());
|
|
213
|
+
}
|
|
214
|
+
return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));
|
|
215
|
+
case "COMMIT":
|
|
216
|
+
if (store === void 0) {
|
|
217
|
+
connection == null ? void 0 : connection.init(api.getState());
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));
|
|
221
|
+
case "ROLLBACK":
|
|
222
|
+
return parseJsonThen(message.state, (state) => {
|
|
223
|
+
if (store === void 0) {
|
|
224
|
+
setStateFromDevtools(state);
|
|
225
|
+
connection == null ? void 0 : connection.init(api.getState());
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
setStateFromDevtools(state[store]);
|
|
229
|
+
connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));
|
|
230
|
+
});
|
|
231
|
+
case "JUMP_TO_STATE":
|
|
232
|
+
case "JUMP_TO_ACTION":
|
|
233
|
+
return parseJsonThen(message.state, (state) => {
|
|
234
|
+
if (store === void 0) {
|
|
235
|
+
setStateFromDevtools(state);
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {
|
|
239
|
+
setStateFromDevtools(state[store]);
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
case "IMPORT_STATE": {
|
|
243
|
+
const { nextLiftedState } = message.payload;
|
|
244
|
+
const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;
|
|
245
|
+
if (!lastComputedState) return;
|
|
246
|
+
if (store === void 0) {
|
|
247
|
+
setStateFromDevtools(lastComputedState);
|
|
248
|
+
} else {
|
|
249
|
+
setStateFromDevtools(lastComputedState[store]);
|
|
250
|
+
}
|
|
251
|
+
connection == null ? void 0 : connection.send(
|
|
252
|
+
null,
|
|
253
|
+
// FIXME no-any
|
|
254
|
+
nextLiftedState
|
|
255
|
+
);
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
case "PAUSE_RECORDING":
|
|
259
|
+
return isRecording = !isRecording;
|
|
260
|
+
}
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
return initialState;
|
|
265
|
+
};
|
|
266
|
+
const devtools = devtoolsImpl;
|
|
267
|
+
const parseJsonThen = (stringified, fn) => {
|
|
268
|
+
let parsed;
|
|
269
|
+
try {
|
|
270
|
+
parsed = JSON.parse(stringified);
|
|
271
|
+
} catch (e) {
|
|
272
|
+
console.error(
|
|
273
|
+
"[zustand devtools middleware] Could not parse the received json",
|
|
274
|
+
e
|
|
275
|
+
);
|
|
276
|
+
}
|
|
277
|
+
if (parsed !== void 0) fn(parsed);
|
|
278
|
+
};
|
|
279
|
+
const isIterable = (obj) => Symbol.iterator in obj;
|
|
280
|
+
const hasIterableEntries = (value) => (
|
|
281
|
+
// HACK: avoid checking entries type
|
|
282
|
+
"entries" in value
|
|
283
|
+
);
|
|
284
|
+
const compareEntries = (valueA, valueB) => {
|
|
285
|
+
const mapA = valueA instanceof Map ? valueA : new Map(valueA.entries());
|
|
286
|
+
const mapB = valueB instanceof Map ? valueB : new Map(valueB.entries());
|
|
287
|
+
if (mapA.size !== mapB.size) {
|
|
288
|
+
return false;
|
|
289
|
+
}
|
|
290
|
+
for (const [key, value] of mapA) {
|
|
291
|
+
if (!mapB.has(key) || !Object.is(value, mapB.get(key))) {
|
|
292
|
+
return false;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
return true;
|
|
296
|
+
};
|
|
297
|
+
const compareIterables = (valueA, valueB) => {
|
|
298
|
+
const iteratorA = valueA[Symbol.iterator]();
|
|
299
|
+
const iteratorB = valueB[Symbol.iterator]();
|
|
300
|
+
let nextA = iteratorA.next();
|
|
301
|
+
let nextB = iteratorB.next();
|
|
302
|
+
while (!nextA.done && !nextB.done) {
|
|
303
|
+
if (!Object.is(nextA.value, nextB.value)) {
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
nextA = iteratorA.next();
|
|
307
|
+
nextB = iteratorB.next();
|
|
308
|
+
}
|
|
309
|
+
return !!nextA.done && !!nextB.done;
|
|
310
|
+
};
|
|
311
|
+
function shallow(valueA, valueB) {
|
|
312
|
+
if (Object.is(valueA, valueB)) {
|
|
313
|
+
return true;
|
|
314
|
+
}
|
|
315
|
+
if (typeof valueA !== "object" || valueA === null || typeof valueB !== "object" || valueB === null) {
|
|
316
|
+
return false;
|
|
317
|
+
}
|
|
318
|
+
if (Object.getPrototypeOf(valueA) !== Object.getPrototypeOf(valueB)) {
|
|
319
|
+
return false;
|
|
320
|
+
}
|
|
321
|
+
if (isIterable(valueA) && isIterable(valueB)) {
|
|
322
|
+
if (hasIterableEntries(valueA) && hasIterableEntries(valueB)) {
|
|
323
|
+
return compareEntries(valueA, valueB);
|
|
324
|
+
}
|
|
325
|
+
return compareIterables(valueA, valueB);
|
|
326
|
+
}
|
|
327
|
+
return compareEntries(
|
|
328
|
+
{ entries: () => Object.entries(valueA) },
|
|
329
|
+
{ entries: () => Object.entries(valueB) }
|
|
330
|
+
);
|
|
331
|
+
}
|
|
332
|
+
function useShallow(selector) {
|
|
333
|
+
const prev = React.useRef(void 0);
|
|
334
|
+
return (state) => {
|
|
335
|
+
const next = selector(state);
|
|
336
|
+
return shallow(prev.current, next) ? prev.current : prev.current = next;
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
export {
|
|
340
|
+
create as c,
|
|
341
|
+
devtools as d,
|
|
342
|
+
useShallow as u
|
|
343
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|