UNPKG

exome

Version:

State manager for deeply nested states

8 lines (7 loc) 19 kB
{ "version": 3, "sources": ["../src/devtools-redux.ts", "../src/devtools-exome.ts", "package-json:/home/runner/work/exome/exome/package.json"], "sourcesContent": ["import { Exome, type Middleware, getExomeId, updateAll } from \"exome\";\n\ninterface ReduxMessage {\n\ttype: string;\n\tstate: string;\n}\n\ninterface ReduxAction {\n\ttype: string;\n\tpayload: any;\n}\n\ninterface Redux {\n\tsubscribe: (cb: (message: ReduxMessage) => void) => void;\n\tsend: (action: ReduxAction, state: Record<string, any>) => void;\n\tinit: (state: Record<string, any>) => void;\n}\n\ninterface ReduxConfig {\n\tname?: string;\n\tmaxAge?: number;\n\tactionsBlacklist?: string | string[];\n\tserialize?: {\n\t\treplacer?: (key: string, value: any) => any;\n\t\treviver?: (key: string, value: any) => any;\n\t};\n}\n\nconst fullStore: Map<string, Map<string, Exome>> = new Map();\n\nfunction deepCloneStore(value: any, depth: string[] = []): any {\n\tif (value == null || typeof value !== \"object\") {\n\t\treturn value;\n\t}\n\n\tif (value instanceof Exome && getExomeId(value)) {\n\t\tconst id = getExomeId(value);\n\n\t\t// Stop circular Exome\n\t\tif (depth.indexOf(id) > -1) {\n\t\t\treturn {\n\t\t\t\t$$exome_id: id,\n\t\t\t};\n\t\t}\n\n\t\tconst data = deepCloneStore({ ...value }, depth.concat(id));\n\n\t\treturn {\n\t\t\t$$exome_id: id,\n\t\t\t...data,\n\t\t};\n\t}\n\n\tif (\n\t\tvalue.constructor !== Array &&\n\t\tvalue.constructor !== Object &&\n\t\tvalue.constructor !== Date\n\t) {\n\t\treturn {\n\t\t\t$$exome_class: value.constructor.name,\n\t\t};\n\t}\n\n\tconst output: Record<string, unknown> = value.constructor() || {};\n\n\tfor (const key of Object.keys(value)) {\n\t\toutput[key] = deepCloneStore(value[key], depth);\n\t}\n\n\treturn output;\n}\n\nconst getFullStore = (): any => {\n\tconst output: Record<string, Exome[]> = {};\n\n\tfor (const [key, map] of fullStore.entries()) {\n\t\toutput[key] = Array.from(map.values());\n\t}\n\n\t// Improve serializer with `__serializedType__` once https://github.com/zalmoxisus/redux-devtools-extension/issues/737 is resolved\n\treturn deepCloneStore(output);\n};\n\n/**\n * Subscribes to Redux DevTools.\n * https://chromewebstore.google.com/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd\n */\nexport const exomeReduxDevtools = ({\n\tname,\n\tmaxAge,\n\tactionsBlacklist,\n}: {\n\tname?: string;\n\tmaxAge?: number;\n\tactionsBlacklist?: string;\n}): Middleware => {\n\tconst devtoolName: string = \"__REDUX_DEVTOOLS_EXTENSION__\";\n\tlet extension: any;\n\ttry {\n\t\textension =\n\t\t\t(window as any)[devtoolName] || (window.top as any)[devtoolName];\n\t} catch (e) {}\n\n\tif (!extension) {\n\t\treturn () => {};\n\t}\n\n\tconst config: ReduxConfig = {\n\t\tname,\n\t\tmaxAge,\n\t\tactionsBlacklist,\n\t};\n\n\tconst ReduxTool: Redux = extension.connect(config);\n\n\tReduxTool.subscribe((message) => {\n\t\tif (message.type === \"DISPATCH\" && message.state) {\n\t\t\t// We'll just use json parse reviver function to update instances\n\t\t\tJSON.parse(message.state, (_, value) => {\n\t\t\t\tif (\n\t\t\t\t\ttypeof value === \"object\" &&\n\t\t\t\t\tvalue !== null &&\n\t\t\t\t\t\"$$exome_id\" in value\n\t\t\t\t) {\n\t\t\t\t\tconst { $$exome_id, ...restValue } = value;\n\t\t\t\t\tconst [name] = $$exome_id.split(\"-\");\n\t\t\t\t\tconst instance = fullStore.get(name)?.get($$exome_id);\n\n\t\t\t\t\tObject.assign(instance!, restValue);\n\n\t\t\t\t\treturn instance;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t});\n\n\t\t\tupdateAll();\n\t\t}\n\t});\n\n\tReduxTool.init(getFullStore());\n\n\treturn (instance, action, payload) => {\n\t\tconst id = getExomeId(instance);\n\t\tconst name: string = id.replace(/-.*$/, \"\");\n\t\tconst type = `[${name}] ${action}`;\n\n\t\tif (!name) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!fullStore.has(name)) {\n\t\t\tfullStore.set(name, new Map());\n\t\t}\n\n\t\tif (action === \"NEW\") {\n\t\t\tfullStore.get(name)?.set(getExomeId(instance), instance);\n\t\t\tReduxTool.send({ type, payload: undefined }, getFullStore());\n\t\t}\n\n\t\treturn () => {\n\t\t\tlet parsedPayload: any[] = [];\n\n\t\t\ttry {\n\t\t\t\tparsedPayload = JSON.parse(JSON.stringify(payload));\n\t\t\t} catch (e) {}\n\n\t\t\tReduxTool.send({ type, payload: parsedPayload }, getFullStore());\n\t\t};\n\t};\n};\n", "import { Exome, type Middleware, getExomeId, subscribe } from \"exome\";\n\n// @ts-ignore\nimport packageJson from \"../package.json\" with { type: \"json\" };\n\nexport interface DevtoolsExtensionInterface {\n\tconnect(config: {\n\t\tname: string;\n\t\tmaxAge?: number;\n\t\tdetails: {\n\t\t\tversion: string;\n\t\t};\n\t}): DevtoolsExtensionConnectionInterface;\n}\n\nexport interface DevtoolsExtensionConnectionInterface {\n\tdisconnect(): void;\n\n\tsend(data: {\n\t\tevent: \"update\";\n\t\ttype: \"all\";\n\t\tpayload: { actions: Action[]; states: [string, any][] };\n\t}): void;\n\tsend(data: { event: \"update\"; type: \"action\"; payload: Action }): void;\n\tsend(data: {\n\t\tevent: \"update\";\n\t\ttype: \"state\";\n\t\tpayload: [string, any] | [string, any, string];\n\t}): void;\n\n\tsend(data: { event: \"send\"; type: \"actions\"; payload: Action[] }): void;\n\tsend(data: { event: \"send\"; type: \"action\"; payload: Action }): void;\n\tsend(data: { event: \"send\"; type: \"states\"; payload: [string, any][] }): void;\n\tsend(data: { event: \"send\"; type: \"state\"; payload: [string, any] }): void;\n\n\tsubscribe(cb: (data: { type: \"sync\" }) => void): () => void;\n}\n\nexport interface ExomeDevtoolsConfig {\n\tname: string;\n\tmaxAge?: number;\n\tignoreListActions?: string[];\n\tignoreListStores?: string[];\n}\n\nconst fullStore: Map<string, Map<string, Exome>> = new Map();\nconst fullActions: Action[] = [];\n\nconst descriptor = Object.getOwnPropertyDescriptor;\n\n/**\n * Subscribes to Exome Developer Tools.\n * https://chromewebstore.google.com/detail/exome-developer-tools/pcanmpamoedhpfpbjajlkpicbikbnhdg\n */\nexport const exomeDevtools = ({\n\tname = \"Exome\",\n\tmaxAge = 20,\n\tignoreListActions = [],\n\tignoreListStores = [],\n}: ExomeDevtoolsConfig): Middleware => {\n\tconst devtoolName: string = \"__EXOME_DEVTOOLS_EXTENSION__\";\n\tlet extension: DevtoolsExtensionInterface | undefined;\n\ttry {\n\t\textension =\n\t\t\t(window as any)[devtoolName] || (window.top as any)[devtoolName];\n\t} catch (_e) {}\n\n\tif (!extension) {\n\t\treturn () => {};\n\t}\n\n\tlet depth = 0;\n\tconst details = {\n\t\tversion: packageJson.version,\n\t};\n\n\tconst connection = extension.connect({ name, maxAge, details });\n\n\twindow.addEventListener(\"beforeunload\", connection.disconnect, {\n\t\tonce: true,\n\t});\n\n\t// Return requested data by\n\tconnection.subscribe(({ type }) => {\n\t\tif (type === \"sync\") {\n\t\t\tconnection.send({\n\t\t\t\tevent: \"update\",\n\t\t\t\ttype: \"all\",\n\t\t\t\tpayload: {\n\t\t\t\t\tactions: fullActions,\n\t\t\t\t\tstates: [...fullStore].flatMap(([_name, map]) =>\n\t\t\t\t\t\t[...map].map(([id, instance]) => [id, exomeToJson(instance)]),\n\t\t\t\t\t) as any,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t});\n\n\treturn (instance, name, payload) => {\n\t\tconst storeId = getExomeId(instance);\n\t\tconst storeName = storeId.replace(/-[a-z0-9]+$/gi, \"\");\n\n\t\tif (ignoreListStores.indexOf(storeName) > -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!fullStore.has(storeName)) {\n\t\t\tfullStore.set(storeName, new Map());\n\t\t}\n\n\t\tif (name === \"NEW\") {\n\t\t\tfullStore.get(storeName)?.set(storeId, instance);\n\t\t\tconnection.send({\n\t\t\t\tevent: \"send\",\n\t\t\t\ttype: \"state\",\n\t\t\t\tpayload: [storeId, exomeToJson(instance)],\n\t\t\t});\n\t\t\treturn () => {\n\t\t\t\tconnection.send({\n\t\t\t\t\tevent: \"update\",\n\t\t\t\t\ttype: \"state\",\n\t\t\t\t\tpayload: [storeId, exomeToJson(instance), getExomeId(instance)],\n\t\t\t\t});\n\n\t\t\t\tsubscribe(instance, (instance) => {\n\t\t\t\t\tconnection.send({\n\t\t\t\t\t\tevent: \"update\",\n\t\t\t\t\t\ttype: \"state\",\n\t\t\t\t\t\tpayload: [storeId, exomeToJson(instance), getExomeId(instance)],\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t};\n\t\t}\n\n\t\tif (name === \"LOAD_STATE\") {\n\t\t\treturn () => {\n\t\t\t\tconnection.send({\n\t\t\t\t\tevent: \"update\",\n\t\t\t\t\ttype: \"state\",\n\t\t\t\t\tpayload: [storeId, exomeToJson(instance), getExomeId(instance)],\n\t\t\t\t});\n\t\t\t};\n\t\t}\n\n\t\tif (ignoreListActions.indexOf(`${storeName}.${name}`) > -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst before = exomeToJson(instance);\n\t\tconst id = String(Math.random());\n\t\tconst trace = new Error().stack?.split(/\\n/g)[6] || \"\";\n\n\t\tconst start = performance.now();\n\t\tdepth += 1;\n\n\t\tconst action: Action = {\n\t\t\tid,\n\t\t\tname,\n\t\t\tinstance: storeId,\n\t\t\tpayload: payload.map(exomeToJsonDepth),\n\t\t\tnow: start,\n\t\t\tdepth,\n\t\t\ttrace,\n\n\t\t\tbefore,\n\t\t};\n\n\t\taddAction(action);\n\t\tconnection.send({\n\t\t\tevent: \"send\",\n\t\t\ttype: \"action\",\n\t\t\tpayload: action,\n\t\t});\n\n\t\treturn (error, response) => {\n\t\t\tif (error !== undefined) {\n\t\t\t\taction.error = String(error);\n\t\t\t}\n\t\t\tif (response !== undefined) {\n\t\t\t\taction.response = exomeToJsonDepth(response);\n\t\t\t}\n\t\t\taction.time = performance.now() - start;\n\t\t\taction.after = exomeToJson(instance);\n\n\t\t\tdepth -= 1;\n\n\t\t\tconnection.send({\n\t\t\t\tevent: \"update\",\n\t\t\t\ttype: \"action\",\n\t\t\t\tpayload: action,\n\t\t\t});\n\t\t};\n\t};\n\n\tfunction addAction(action: Action) {\n\t\tfullActions.push(action);\n\n\t\tif (fullActions.length > maxAge) {\n\t\t\tfullActions.splice(0, maxAge);\n\t\t}\n\t}\n};\n\nfunction exomeToJson(instance: Exome): Record<string, any> {\n\tconst proto = Object.getPrototypeOf(instance);\n\tconst methodNames = Object.getOwnPropertyNames(proto);\n\tconst propertyNames = Object.getOwnPropertyNames(instance).filter(\n\t\t(key) => methodNames.indexOf(key) === -1,\n\t);\n\n\tconst data: Record<string, any> = {};\n\n\tfor (const methodName of methodNames) {\n\t\tif (methodName === \"constructor\") {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst isGetter = typeof descriptor(proto, methodName)?.get === \"function\";\n\n\t\tif (isGetter) {\n\t\t\t// @TODO lazy request getter value via subscription\n\t\t\tdata[`$$exome_gt:${methodName}`] = null;\n\t\t\tcontinue;\n\t\t}\n\n\t\tdata[`$$exome_ac:${methodName}`] = String(\"@TODO\");\n\t}\n\n\tfor (const propertyName of propertyNames) {\n\t\tconst value = descriptor(instance, propertyName)?.value;\n\t\tconst isMethod = typeof value === \"function\";\n\n\t\tif (isMethod) {\n\t\t\tdata[`$$exome_sl:${propertyName}`] = propertyName;\n\t\t\tcontinue;\n\t\t}\n\n\t\tdata[propertyName] = exomeToJsonDepth(value);\n\t}\n\n\treturn data;\n}\n\nfunction exomeToJsonDepth(instance: any) {\n\tif (instance === undefined) {\n\t\treturn instance;\n\t}\n\n\ttry {\n\t\treturn JSON.parse(\n\t\t\tJSON.stringify(\n\t\t\t\tinstance,\n\t\t\t\t(key, value) => {\n\t\t\t\t\tif (value == null || typeof value !== \"object\") {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (value instanceof Exome) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t$$exome_id: getExomeId(value),\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tvalue.constructor.name !== \"Array\" &&\n\t\t\t\t\t\tvalue.constructor.name !== \"Object\" &&\n\t\t\t\t\t\tvalue.constructor.name !== \"Date\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t$$exome_class: value.constructor.name,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn value;\n\t\t\t\t},\n\t\t\t\t2,\n\t\t\t),\n\t\t);\n\t} catch (_e) {\n\t\treturn undefined;\n\t}\n}\n\ninterface Action {\n\tid: string;\n\tname: string;\n\tpayload: any[];\n\tinstance: string;\n\tdepth: number;\n\tnow: number;\n\ttime?: number;\n\ttrace: string;\n\terror?: string;\n\tresponse?: string;\n\tbefore: Record<string, any>;\n\tafter?: Record<string, any>;\n}\n", "{\"version\":\"2.8.1\"}"], "mappings": "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", "names": ["Exome", "getExomeId", "updateAll", "fullStore", "deepCloneStore", "value", "depth", "Exome", "getExomeId", "id", "data", "__spreadValues", "output", "key", "getFullStore", "map", "exomeReduxDevtools", "name", "maxAge", "actionsBlacklist", "devtoolName", "extension", "e", "config", "ReduxTool", "message", "_", "_b", "_a", "$$exome_id", "restValue", "__objRest", "instance", "updateAll", "action", "payload", "type", "parsedPayload", "Exome", "getExomeId", "subscribe", "package_default", "fullStore", "fullActions", "descriptor", "exomeDevtools", "name", "maxAge", "ignoreListActions", "ignoreListStores", "devtoolName", "extension", "_e", "depth", "details", "package_default", "connection", "type", "_name", "map", "id", "instance", "exomeToJson", "payload", "_a", "_b", "storeId", "getExomeId", "storeName", "subscribe", "before", "trace", "start", "action", "exomeToJsonDepth", "addAction", "error", "response", "proto", "methodNames", "propertyNames", "key", "data", "methodName", "propertyName", "value", "Exome"] }