@inox-tools/request-state 0.3.2 → 0.4.0
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.
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {parse}from'devalue';import {ServerStateLoaded}from'../events.js';const i={URL:e=>new URL(e),Date:e=>new Date(e),GlobalSymbol:e=>Symbol.for(e),WellKnownSymbol:e=>Symbol[e]},a=e=>{const t=e.getElementById("it-astro-state");if(t?.textContent){const o=parse(t.textContent,i);return t.remove(),o}};let r=a(document);const n=new Map,s=()=>{const e=new ServerStateLoaded(new Map(n),r??new Map);if(document.dispatchEvent(e)){n.clear();for(const[t,o]of e.serverState.entries())n.set(t,o);}};s(),document.addEventListener("astro:before-swap",e=>{r=a(e.newDocument);}),document.addEventListener("astro:after-swap",s);const f=(e,t)=>(n.has(e)||t!==
|
|
1
|
+
import {parse}from'devalue';import {ServerStateLoaded}from'../events.js';const i={URL:e=>new URL(e),Date:e=>new Date(e),GlobalSymbol:e=>Symbol.for(e),WellKnownSymbol:e=>Symbol[e]},a=e=>{const t=e.getElementById("it-astro-state");if(t?.textContent){const o=parse(t.textContent,i);return t.remove(),o}};let r=a(document);const n=new Map,s=()=>{const e=new ServerStateLoaded(new Map(n),r??new Map);if(document.dispatchEvent(e)){n.clear();for(const[t,o]of e.serverState.entries())n.set(t,o);}};s(),document.addEventListener("astro:before-swap",e=>{r=a(e.newDocument);}),document.addEventListener("astro:after-swap",s);const f=(e,t)=>(n.has(e)||t!==void 0&&n.set(e,t),n.get(e)),p=(e,t)=>{t===void 0?n.delete(e):n.set(e,t);};export{f as getState,p as setState};//# sourceMappingURL=clientState.js.map
|
|
2
2
|
//# sourceMappingURL=clientState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/clientState.ts"],"names":["revivers","value","loadState","doc","element","state","parse","nextState","applyState","event","ServerStateLoaded","key","getState","valueIfMissing","setState"],"mappings":"yEAGA,MAAMA,CAAgD,CAAA,CACrD,IAAMC,CAAU,EAAA,IAAI,IAAIA,CAAK,CAAA,CAC7B,KAAOA,CAAU,EAAA,IAAI,IAAKA,CAAAA,CAAK,EAC/B,YAAeA,CAAAA,CAAAA,EAAU,MAAO,CAAA,GAAA,CAAIA,CAAK,CACzC,CAAA,eAAA,CAAkBA,CAAU,EAAA,MAAA,CAAOA,CAA4B,CAChE,CAAA,CAEMC,EAAaC,CAAqC,EAAA,CACvD,MAAMC,CAAUD,CAAAA,CAAAA,CAAI,cAAe,CAAA,gBAAgB,EAEnD,GAAIC,CAAAA,EAAS,WAAa,CAAA,CACzB,MAAMC,CAAQC,CAAAA,KAAAA,CAAMF,CAAQ,CAAA,WAAA,CAAaJ,CAAQ,CACjD,CAAA,OAAAI,EAAQ,MAAO,EAAA,CACRC,CACR,CACD,CAAA,CAEA,IAAIE,CAAAA,CAAYL,EAAU,QAAQ,CAAA,CAClC,MAAMG,CAAAA,CAAQ,IAAI,GAEZG,CAAAA,CAAAA,CAAa,IAAM,CACxB,MAAMC,CAAQ,CAAA,IAAIC,kBAAkB,IAAI,GAAA,CAAIL,CAAK,CAAGE,CAAAA,CAAAA,EAAa,IAAI,GAAK,EAE1E,GAAI,QAAA,CAAS,aAAcE,CAAAA,CAAK,EAAG,CAClCJ,CAAAA,CAAM,KAAM,EAAA,CACZ,SAAW,CAACM,CAAAA,CAAKV,CAAK,CAAKQ,GAAAA,CAAAA,CAAM,YAAY,OAAQ,EAAA,CACpDJ,CAAM,CAAA,GAAA,CAAIM,EAAKV,CAAK,EAEtB,CACD,CAAA,CAEAO,GAEA,CAAA,QAAA,CAAS,gBAAiB,CAAA,mBAAA,CAAsBC,GAAU,CACzDF,CAAAA,CAAYL,EAAUO,CAAM,CAAA,WAAW,EACxC,CAAC,CAAA,CACD,QAAS,CAAA,gBAAA,CAAiB,mBAAoBD,CAAU,CAAA,CAE3CI,MAAAA,CAAAA,CAAW,CAACD,CAAaE,CAAAA,CAAAA,IAChCR,CAAM,CAAA,GAAA,CAAIM,CAAG,CACbE,EAAAA,CAAAA,GAAmB,
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/clientState.ts"],"names":["revivers","value","loadState","doc","element","state","parse","nextState","applyState","event","ServerStateLoaded","key","getState","valueIfMissing","setState"],"mappings":"yEAGA,MAAMA,CAAgD,CAAA,CACrD,IAAMC,CAAU,EAAA,IAAI,IAAIA,CAAK,CAAA,CAC7B,KAAOA,CAAU,EAAA,IAAI,IAAKA,CAAAA,CAAK,EAC/B,YAAeA,CAAAA,CAAAA,EAAU,MAAO,CAAA,GAAA,CAAIA,CAAK,CACzC,CAAA,eAAA,CAAkBA,CAAU,EAAA,MAAA,CAAOA,CAA4B,CAChE,CAAA,CAEMC,EAAaC,CAAqC,EAAA,CACvD,MAAMC,CAAUD,CAAAA,CAAAA,CAAI,cAAe,CAAA,gBAAgB,EAEnD,GAAIC,CAAAA,EAAS,WAAa,CAAA,CACzB,MAAMC,CAAQC,CAAAA,KAAAA,CAAMF,CAAQ,CAAA,WAAA,CAAaJ,CAAQ,CACjD,CAAA,OAAAI,EAAQ,MAAO,EAAA,CACRC,CACR,CACD,CAAA,CAEA,IAAIE,CAAAA,CAAYL,EAAU,QAAQ,CAAA,CAClC,MAAMG,CAAAA,CAAQ,IAAI,GAEZG,CAAAA,CAAAA,CAAa,IAAM,CACxB,MAAMC,CAAQ,CAAA,IAAIC,kBAAkB,IAAI,GAAA,CAAIL,CAAK,CAAGE,CAAAA,CAAAA,EAAa,IAAI,GAAK,EAE1E,GAAI,QAAA,CAAS,aAAcE,CAAAA,CAAK,EAAG,CAClCJ,CAAAA,CAAM,KAAM,EAAA,CACZ,SAAW,CAACM,CAAAA,CAAKV,CAAK,CAAKQ,GAAAA,CAAAA,CAAM,YAAY,OAAQ,EAAA,CACpDJ,CAAM,CAAA,GAAA,CAAIM,EAAKV,CAAK,EAEtB,CACD,CAAA,CAEAO,GAEA,CAAA,QAAA,CAAS,gBAAiB,CAAA,mBAAA,CAAsBC,GAAU,CACzDF,CAAAA,CAAYL,EAAUO,CAAM,CAAA,WAAW,EACxC,CAAC,CAAA,CACD,QAAS,CAAA,gBAAA,CAAiB,mBAAoBD,CAAU,CAAA,CAE3CI,MAAAA,CAAAA,CAAW,CAACD,CAAaE,CAAAA,CAAAA,IAChCR,CAAM,CAAA,GAAA,CAAIM,CAAG,CACbE,EAAAA,CAAAA,GAAmB,QACtBR,CAAM,CAAA,GAAA,CAAIM,EAAKE,CAAc,CAAA,CAGxBR,CAAM,CAAA,GAAA,CAAIM,CAAG,CAGRG,CAAAA,CAAAA,CAAAA,CAAW,CAACH,CAAAA,CAAaV,IAAyB,CAC1DA,CAAAA,GAAU,MACbI,CAAAA,CAAAA,CAAM,OAAOM,CAAG,CAAA,CAEhBN,EAAM,GAAIM,CAAAA,CAAAA,CAAKV,CAAK,EAEtB","file":"clientState.js","sourcesContent":["import { parse } from 'devalue';\nimport { type State, ServerStateLoaded } from '../events.js';\n\nconst revivers: Record<string, (value: any) => any> = {\n\tURL: (value) => new URL(value),\n\tDate: (value) => new Date(value),\n\tGlobalSymbol: (value) => Symbol.for(value),\n\tWellKnownSymbol: (value) => Symbol[value as keyof typeof Symbol],\n};\n\nconst loadState = (doc: Document): State | undefined => {\n\tconst element = doc.getElementById('it-astro-state');\n\n\tif (element?.textContent) {\n\t\tconst state = parse(element.textContent, revivers);\n\t\telement.remove();\n\t\treturn state;\n\t}\n};\n\nlet nextState = loadState(document);\nconst state = new Map();\n\nconst applyState = () => {\n\tconst event = new ServerStateLoaded(new Map(state), nextState ?? new Map());\n\n\tif (document.dispatchEvent(event)) {\n\t\tstate.clear();\n\t\tfor (const [key, value] of event.serverState.entries()) {\n\t\t\tstate.set(key, value);\n\t\t}\n\t}\n};\n\napplyState();\n\ndocument.addEventListener('astro:before-swap', (event) => {\n\tnextState = loadState(event.newDocument);\n});\ndocument.addEventListener('astro:after-swap', applyState);\n\nexport const getState = (key: string, valueIfMissing?: unknown): unknown => {\n\tif (!state.has(key)) {\n\t\tif (valueIfMissing !== undefined) {\n\t\t\tstate.set(key, valueIfMissing);\n\t\t}\n\t}\n\treturn state.get(key);\n};\n\nexport const setState = (key: string, value: unknown): void => {\n\tif (value === undefined) {\n\t\tstate.delete(key);\n\t} else {\n\t\tstate.set(key, value);\n\t}\n};\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {AsyncLocalStorage}from'node:async_hooks';import {stringify}from'devalue';const o=new AsyncLocalStorage,l=(t,e)=>{const n=o.getStore();if(n!==
|
|
1
|
+
import {AsyncLocalStorage}from'node:async_hooks';import {stringify}from'devalue';const o=new AsyncLocalStorage,l=(t,e)=>{const n=o.getStore();if(n!==void 0)return n.has(t)||e!==void 0&&n.set(t,e),n.get(t)},p=(t,e)=>{const n=o.getStore();e===void 0?n?.delete(t):n?.set(t,e);},i=new Map(Object.entries(Symbol).filter(([t,e])=>typeof e=="symbol"&&typeof t=="string").map(([t,e])=>[e,t])),c={URL:t=>t instanceof URL&&t.href,Date:t=>t instanceof Date&&t.valueOf(),GlobalSymbol:t=>typeof t=="symbol"&&t.description!==void 0&&t===Symbol.for(t.description)&&t.description,WellKnownSymbol:t=>typeof t=="symbol"&&i.get(t)},d=async t=>{const e=new Map;return {result:await o.run(e,t),getState:()=>e.size>0&&stringify(e,c)}};export{d as collectState,l as getState,p as setState};//# sourceMappingURL=serverState.js.map
|
|
2
2
|
//# sourceMappingURL=serverState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/serverState.ts"],"names":["store","AsyncLocalStorage","getState","key","valueIfMissing","state","setState","value","wellKnownSymbols","reducers","collectState","cb","stringify"],"mappings":"iFAKA,MAAMA,CAAQ,CAAA,IAAIC,kBAELC,CAAW,CAAA,CAACC,CAAaC,CAAAA,CAAAA,GAAsC,CAC3E,MAAMC,CAAAA,CAAQL,CAAM,CAAA,QAAA,GACpB,GAAIK,CAAAA,GAAU,
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/serverState.ts"],"names":["store","AsyncLocalStorage","getState","key","valueIfMissing","state","setState","value","wellKnownSymbols","reducers","collectState","cb","stringify"],"mappings":"iFAKA,MAAMA,CAAQ,CAAA,IAAIC,kBAELC,CAAW,CAAA,CAACC,CAAaC,CAAAA,CAAAA,GAAsC,CAC3E,MAAMC,CAAAA,CAAQL,CAAM,CAAA,QAAA,GACpB,GAAIK,CAAAA,GAAU,MAEd,CAAA,OAAKA,EAAM,GAAIF,CAAAA,CAAG,CACbC,EAAAA,CAAAA,GAAmB,QACtBC,CAAM,CAAA,GAAA,CAAIF,EAAKC,CAAc,CAAA,CAGxBC,EAAM,GAAIF,CAAAA,CAAG,CACrB,CAAA,CAEaG,EAAW,CAACH,CAAAA,CAAaI,CAAyB,GAAA,CAC9D,MAAMF,CAAQL,CAAAA,CAAAA,CAAM,QAAS,EAAA,CACzBO,IAAU,MACbF,CAAAA,CAAAA,EAAO,OAAOF,CAAG,CAAA,CAEjBE,GAAO,GAAIF,CAAAA,CAAAA,CAAKI,CAAK,EAEvB,EAOMC,CAAmB,CAAA,IAAI,GAC5B,CAAA,MAAA,CAAO,QAAQ,MAAM,CAAA,CACnB,MAAO,CAAA,CAAC,CAACL,CAAKI,CAAAA,CAAK,IAAM,OAAOA,CAAAA,EAAU,UAAY,OAAOJ,CAAAA,EAAQ,QAAQ,CAAA,CAC7E,IAAI,CAAC,CAACA,CAAKI,CAAAA,CAAK,IAAM,CAACA,CAAAA,CAAOJ,CAAG,CAAC,CACrC,CAEMM,CAAAA,CAAAA,CAAgD,CACrD,GAAA,CAAMF,GAAUA,CAAiB,YAAA,GAAA,EAAOA,CAAM,CAAA,IAAA,CAC9C,KAAOA,CAAUA,EAAAA,CAAAA,YAAiB,IAAQA,EAAAA,CAAAA,CAAM,SAChD,CAAA,YAAA,CAAeA,CACd,EAAA,OAAOA,GAAU,QACjBA,EAAAA,CAAAA,CAAM,cAAgB,MACtBA,EAAAA,CAAAA,GAAU,OAAO,GAAIA,CAAAA,CAAAA,CAAM,WAAW,CAAA,EACtCA,EAAM,WACP,CAAA,eAAA,CAAkBA,CAAU,EAAA,OAAOA,GAAU,QAAYC,EAAAA,CAAAA,CAAiB,GAAID,CAAAA,CAAK,CACpF,CAEaG,CAAAA,CAAAA,CAAe,MAAUC,CAAqD,EAAA,CAC1F,MAAMN,CAAQ,CAAA,IAAI,GAElB,CAAA,OAAO,CACN,MAFc,CAAA,MAAML,CAAM,CAAA,GAAA,CAAIK,EAAOM,CAAE,CAAA,CAGvC,QAAU,CAAA,IAAMN,EAAM,IAAO,CAAA,CAAA,EAAKO,UAAUP,CAAOI,CAAAA,CAAQ,CAC5D,CACD","file":"serverState.js","sourcesContent":["import { AsyncLocalStorage } from 'node:async_hooks';\nimport { stringify } from 'devalue';\n\ntype State = Map<string, unknown>;\n\nconst store = new AsyncLocalStorage<State>();\n\nexport const getState = (key: string, valueIfMissing?: unknown): unknown => {\n\tconst state = store.getStore();\n\tif (state === undefined) return;\n\n\tif (!state.has(key)) {\n\t\tif (valueIfMissing !== undefined) {\n\t\t\tstate.set(key, valueIfMissing);\n\t\t}\n\t}\n\treturn state.get(key);\n};\n\nexport const setState = (key: string, value: unknown): void => {\n\tconst state = store.getStore();\n\tif (value === undefined) {\n\t\tstate?.delete(key);\n\t} else {\n\t\tstate?.set(key, value);\n\t}\n};\n\nexport type CollectedState<T> = {\n\tgetState: () => string | false;\n\tresult: T;\n};\n\nconst wellKnownSymbols = new Map(\n\tObject.entries(Symbol)\n\t\t.filter(([key, value]) => typeof value === 'symbol' && typeof key === 'string')\n\t\t.map(([key, value]) => [value, key])\n);\n\nconst reducers: Record<string, (value: any) => any> = {\n\tURL: (value) => value instanceof URL && value.href,\n\tDate: (value) => value instanceof Date && value.valueOf(),\n\tGlobalSymbol: (value) =>\n\t\ttypeof value === 'symbol' &&\n\t\tvalue.description !== undefined &&\n\t\tvalue === Symbol.for(value.description) &&\n\t\tvalue.description,\n\tWellKnownSymbol: (value) => typeof value === 'symbol' && wellKnownSymbols.get(value),\n};\n\nexport const collectState = async <R>(cb: () => Promise<R>): Promise<CollectedState<R>> => {\n\tconst state = new Map();\n\tconst result = await store.run(state, cb);\n\treturn {\n\t\tresult,\n\t\tgetState: () => state.size > 0 && stringify(state, reducers),\n\t};\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inox-tools/request-state",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Shared request state between server and client",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"astro-integration",
|
|
@@ -29,15 +29,15 @@
|
|
|
29
29
|
"@inox-tools/utils": "^0.3.1"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@playwright/test": "^1.
|
|
32
|
+
"@playwright/test": "^1.52.0",
|
|
33
33
|
"@types/content-type": "^1.1.8",
|
|
34
|
-
"@types/node": "^22.
|
|
35
|
-
"astro": "^5",
|
|
34
|
+
"@types/node": "^22.15.17",
|
|
35
|
+
"astro": "^5.7.12",
|
|
36
36
|
"jest-extended": "^4.0.2",
|
|
37
|
-
"tsup": "8.
|
|
38
|
-
"typescript": "^5.
|
|
39
|
-
"vite": "^6.
|
|
40
|
-
"@inox-tools/astro-tests": "^0.
|
|
37
|
+
"tsup": "8.4.0",
|
|
38
|
+
"typescript": "^5.8.3",
|
|
39
|
+
"vite": "^6.3.5",
|
|
40
|
+
"@inox-tools/astro-tests": "^0.6.0"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
|
43
43
|
"astro": "^5"
|