state-in-url 6.0.4 → 6.0.5

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/README.md CHANGED
@@ -75,7 +75,7 @@ This library is a good alternative for NUQS.
75
75
  ### Use cases
76
76
 
77
77
  - Store unsaved user forms or page filters in URL
78
- - Sycn URL with React state
78
+ - Sync URL with React state
79
79
  - Just sync data between unrelated client components without touching URI
80
80
  - Shareable URLs with application state (Deep linking, URL state synchronization)
81
81
  - Easy state persistence across page reloads
@@ -1 +1 @@
1
- "use strict";var a=require("../encoder/encoder.js");var d=require("../utils.js");function f(c,t,r){const n=d.getParams(r);const e=Object.entries(c||{});for(let o=0;o<e.length;o++){const[s,i]=e[o];const u=t?.[s];if(JSON.stringify(i)!==JSON.stringify(u)){n.set(s,a.encode(i))}}return n.toString()}function S(c,t){return{...t||{},...Object.fromEntries([...d.getParams(c).entries()].map(([r,n])=>{const e=t?.[r];return[r,a.decode(n,e)??e]}))}}exports.decodeState=S;exports.encodeState=f;
1
+ "use strict";var a=require("../encoder/encoder.js");var d=require("../utils.js");function u(n,c,s){const r=d.getParams(s);const e=Object.keys(n||{});for(let o=0;o<e.length;o++){const t=e[o];const i=n[t];const f=c?.[t];if(JSON.stringify(i)!==JSON.stringify(f)){r.set(t,a.encode(i))}}return r.toString()}function g(n,c){const s=Object.assign({},c||{});const r=d.getParams(n);for(const[e,o]of r){const t=c?.[e];s[e]=a.decode(o,t)??t}return s}exports.decodeState=g;exports.encodeState=u;
@@ -1 +1 @@
1
- import{decode as d,encode as a}from"../encoder/encoder.mjs";import{getParams as f}from"../utils.mjs";function g(o,e,r){const n=f(r);const t=Object.entries(o||{});for(let c=0;c<t.length;c++){const[i,s]=t[c];const m=e?.[i];if(JSON.stringify(s)!==JSON.stringify(m)){n.set(i,a(s))}}return n.toString()}function u(o,e){return{...e||{},...Object.fromEntries([...f(o).entries()].map(([r,n])=>{const t=e?.[r];return[r,d(n,t)??t]}))}}export{u as decodeState,g as encodeState};
1
+ import{decode as g,encode as a}from"../encoder/encoder.mjs";import{getParams as f}from"../utils.mjs";function m(n,c,s){const r=f(s);const o=Object.keys(n||{});for(let e=0;e<o.length;e++){const t=o[e];const i=n[t];const d=c?.[t];if(JSON.stringify(i)!==JSON.stringify(d)){r.set(t,a(i))}}return r.toString()}function S(n,c){const s=Object.assign({},c||{});const r=f(n);for(const[o,e]of r){const t=c?.[o];s[o]=g(e,t)??t}return s}export{S as decodeState,m as encodeState};
@@ -1 +1 @@
1
- "use strict";var n=require("../constants/constants.js");var u=require("../utils.js");const s=/'/g;const p=/"/g;const O=/%27/g;function v(e){if(typeof e==="function"||typeof e==="symbol")return"";if(g(e)){return e}return JSON.stringify(structuredClone(e),c).replace(s,"%27").replace(p,"'")}function c(e,r){const i=u.typeOf(r);if(i!=="object"&&i!=="array"){return d(r)}if(i==="object"){const t=r;for(const o of Object.keys(t)){t[o]=c(e,t[o])}return t}if(i==="array"){return r.map(t=>c(e,t))}return r}const d=e=>{switch(u.typeOf(e)){case"date":return n.SYMBOLS.date+new Date(e).toISOString();case"undefined":return n.SYMBOLS.undefined;default:return e}};function y(e,r){return a(e.replace(s,'"').replace(O,"'"),r)}function a(e,r){try{return JSON.parse(e,f)}catch{return r}}function f(e,r){return typeof r==="string"?S(r):r}const S=e=>{if(e===n.SYMBOLS.undefined)return void 0;if(e?.startsWith?.(n.SYMBOLS.date))return new Date(e.slice(1));return e};const l=new RegExp(`^(${n.SYMBOLS.undefined}|${n.SYMBOLS.date})`);const g=e=>l.test(String(e));exports.decode=y;exports.decodePrimitive=S;exports.encode=v;exports.encodePrimitive=d;exports.parseJSON=a;exports.reviver=f;
1
+ "use strict";var n=require("../constants/constants.js");var u=require("../utils.js");const O=/['"]/g;const p={"'":"%27",'"':"'"};const v=/'|%27/g;const y={"'":'"',"%27":"'"};const g=new RegExp(`^(${n.SYMBOLS.undefined}|${n.SYMBOLS.date})`);function m(e){if(typeof e==="function"||typeof e==="symbol")return"";if(B(e)){return e}return JSON.stringify(e,c).replace(O,r=>p[r])}function c(e,r){const t=u.typeOf(r);if(t!=="object"&&t!=="array"){return d(r)}if(t==="object"){const i=r;const o={};for(const s of Object.keys(i)){o[s]=c(e,i[s])}return o}if(t==="array"){return r.map(i=>c(e,i))}return r}const d=e=>{switch(u.typeOf(e)){case"date":return n.SYMBOLS.date+new Date(e).toISOString();case"undefined":return n.SYMBOLS.undefined;default:return e}};function l(e,r){return f(e.replace(v,t=>y[t]),r)}function f(e,r){try{return JSON.parse(e,a)}catch{return r}}function a(e,r){return typeof r==="string"?S(r):r}const S=e=>{if(e===n.SYMBOLS.undefined)return void 0;if(e?.startsWith?.(n.SYMBOLS.date))return new Date(e.slice(1));return e};const B=e=>g.test(String(e));exports.decode=l;exports.decodePrimitive=S;exports.encode=m;exports.encodePrimitive=d;exports.parseJSON=f;exports.reviver=a;
@@ -1 +1 @@
1
- import{SYMBOLS as n}from"../constants/constants.mjs";import{typeOf as u}from"../utils.mjs";const f=/'/g;const y=/"/g;const g=/%27/g;function l(e){if(typeof e==="function"||typeof e==="symbol")return"";if(O(e)){return e}return JSON.stringify(structuredClone(e),i).replace(f,"%27").replace(y,"'")}function i(e,r){const o=u(r);if(o!=="object"&&o!=="array"){return s(r)}if(o==="object"){const t=r;for(const c of Object.keys(t)){t[c]=i(e,t[c])}return t}if(o==="array"){return r.map(t=>i(e,t))}return r}const s=e=>{switch(u(e)){case"date":return n.date+new Date(e).toISOString();case"undefined":return n.undefined;default:return e}};function m(e,r){return a(e.replace(f,'"').replace(g,"'"),r)}function a(e,r){try{return JSON.parse(e,d)}catch{return r}}function d(e,r){return typeof r==="string"?p(r):r}const p=e=>{if(e===n.undefined)return void 0;if(e?.startsWith?.(n.date))return new Date(e.slice(1));return e};const S=new RegExp(`^(${n.undefined}|${n.date})`);const O=e=>S.test(String(e));export{m as decode,p as decodePrimitive,l as encode,s as encodePrimitive,a as parseJSON,d as reviver};
1
+ import{SYMBOLS as n}from"../constants/constants.mjs";import{typeOf as u}from"../utils.mjs";const y=/['"]/g;const m={"'":"%27",'"':"'"};const O=/'|%27/g;const S={"'":'"',"%27":"'"};const g=new RegExp(`^(${n.undefined}|${n.date})`);function l(t){if(typeof t==="function"||typeof t==="symbol")return"";if(b(t)){return t}return JSON.stringify(t,i).replace(y,r=>m[r])}function i(t,r){const e=u(r);if(e!=="object"&&e!=="array"){return s(r)}if(e==="object"){const o=r;const c={};for(const f of Object.keys(o)){c[f]=i(t,o[f])}return c}if(e==="array"){return r.map(o=>i(t,o))}return r}const s=t=>{switch(u(t)){case"date":return n.date+new Date(t).toISOString();case"undefined":return n.undefined;default:return t}};function v(t,r){return d(t.replace(O,e=>S[e]),r)}function d(t,r){try{return JSON.parse(t,a)}catch{return r}}function a(t,r){return typeof r==="string"?p(r):r}const p=t=>{if(t===n.undefined)return void 0;if(t?.startsWith?.(n.date))return new Date(t.slice(1));return t};const b=t=>g.test(String(t));export{v as decode,p as decodePrimitive,l as encode,s as encodePrimitive,d as parseJSON,a as reviver};
@@ -1 +1 @@
1
- "use strict";const r=new WeakMap;const s=new WeakMap;const a={get(t){return s.get(t)||[]},add(t,e){const n=this.get(t);s.set(t,n.concat(e));return()=>this.remove(t,e)},remove(t,e){const n=this.get(t);const c=n.filter(o=>o!==e);if(c.length){s.set(t,c)}else{s.delete(t)}}};const i={get:function(t){return r.get(t)},set:function(t,e){r.set(t,e)}};exports.stateMap=i;exports.subscribers=a;
1
+ "use strict";const c=new WeakMap;const n=new WeakMap;const o={get(t){return n.get(t)||[]},add(t,e){const s=this.get(t);n.set(t,[...s,e]);return()=>this.remove(t,e)},remove(t,e){const s=this.get(t);if(!s)return;const r=s.filter(i=>i!==e);if(r.length){n.set(t,r)}else{n.delete(t)}}};const a={get:function(t){return c.get(t)},set:function(t,e){c.set(t,e)}};exports.stateMap=a;exports.subscribers=o;
@@ -1 +1 @@
1
- const o=new WeakMap;const n=new WeakMap;const a={get(t){return n.get(t)||[]},add(t,e){const s=this.get(t);n.set(t,s.concat(e));return()=>this.remove(t,e)},remove(t,e){const s=this.get(t);const c=s.filter(r=>r!==e);if(c.length){n.set(t,c)}else{n.delete(t)}}};const i={get:function(t){return o.get(t)},set:function(t,e){o.set(t,e)}};export{i as stateMap,a as subscribers};
1
+ const o=new WeakMap;const n=new WeakMap;const i={get(t){return n.get(t)||[]},add(t,e){const s=this.get(t);n.set(t,[...s,e]);return()=>this.remove(t,e)},remove(t,e){const s=this.get(t);if(!s)return;const r=s.filter(c=>c!==e);if(r.length){n.set(t,r)}else{n.delete(t)}}};const a={get:function(t){return o.get(t)},set:function(t,e){o.set(t,e)}};export{a as stateMap,i as subscribers};
@@ -1 +1 @@
1
- "use strict";var c=require("react");var r=require("../encodeState/encodeState.js");var l=require("../utils.js");function d(e){return e&&e.__esModule?e:{default:e}}var u=d(c);function i(e){const a=u.default.useCallback((t,s)=>{return l.typeOf(t)==="object"?r.encodeState(t,e,s):""},[e]);const n=u.default.useCallback(t=>r.decodeState(t,e),[e]);return{parse:n,stringify:a}}exports.useUrlEncode=i;
1
+ "use strict";var c=require("react");var u=require("../encodeState/encodeState.js");function l(e){return e&&e.__esModule?e:{default:e}}var a=l(c);function d(e){const n=a.default.useCallback((t,s)=>{return u.encodeState(t,e,s)},[e]);const r=a.default.useCallback(t=>u.decodeState(t,e),[e]);return{parse:r,stringify:n}}exports.useUrlEncode=d;
@@ -1 +1 @@
1
- import r from"react";import{encodeState as s,decodeState as a}from"../encodeState/encodeState.mjs";import{typeOf as f}from"../utils.mjs";function i(e){const o=r.useCallback((t,c)=>{return f(t)==="object"?s(t,e,c):""},[e]);const n=r.useCallback(t=>a(t,e),[e]);return{parse:n,stringify:o}}export{i as useUrlEncode};
1
+ import o from"react";import{encodeState as s,decodeState as a}from"../encodeState/encodeState.mjs";function u(e){const n=o.useCallback((t,c)=>{return s(t,e,c)},[e]);const r=o.useCallback(t=>a(t,e),[e]);return{parse:r,stringify:n}}export{u as useUrlEncode};
package/dist/utils.js CHANGED
@@ -1 +1 @@
1
- "use strict";const c=n=>{const t=typeof n;const s=n===null;const r=Array.isArray(n);const e=n instanceof Date;const o=!s&&!e&&!r&&t==="object";return s&&"null"||e&&"date"||r&&"array"||o&&"object"||t};const i=typeof window==="undefined";const f=n=>new URLSearchParams(typeof n==="string"?n.split("?")?.[1]||n:n?.toString?.()||"");const u=(n,t)=>JSON.stringify(n)===JSON.stringify(t);function l(n,t){const s=new URLSearchParams;const r=a(n,[...new URLSearchParams(t||"").entries()]);for(const[e,o]of r){s.set(e,o)}return s.toString()}function p(n,t){return Object.fromEntries(a(n,Object.entries(t||{})))}function a(n,t){const s=Object.keys(n);const r=[];for(let e=0;e<t.length;e++){if(s.includes(t[e]?.[0])){r.push([t[e][0].replace(/\+/g," "),t[e][1]])}}return r}function w(n,t){const s=Object.assign({},n);for(const[r]of Object.entries(n)){const e=r;const o=t[e]!==void 0;s[e]=o?t[e]:n[e]}return s}const y={push:n=>{if(typeof window!=="undefined"){window.history.pushState(null,"",n)}},replace:n=>{if(typeof window!=="undefined"){window.history.replaceState(null,"",n)}}};const S=/apple/i.test(!i&&navigator?.userAgent||"");const g="popstate";function d(){return i?"":window.location.search}exports.assignValue=w;exports.filterUnknown=a;exports.filterUnknownParams=p;exports.filterUnknownParamsClient=l;exports.getParams=f;exports.getSearch=d;exports.isEqual=u;exports.isSSR=i;exports.isSafari=S;exports.popstateEv=g;exports.routerHistory=y;exports.typeOf=c;
1
+ "use strict";const i=n=>{if(n===null)return"null";const t=typeof n;if(t!=="object")return t;if(Array.isArray(n))return"array";if(n instanceof Date)return"date";return"object"};const u=n=>{const t=i(n);return t!=="object"&&t!=="array"};const a=typeof window==="undefined";const l=n=>{if(n instanceof URLSearchParams){return n}if(typeof n==="string"){const t=n.indexOf("?");return new URLSearchParams(t===-1?n:n.slice(t+1))}return new URLSearchParams};const y=(n,t)=>{if(n.length!==t.length)return false;return n.every((r,s)=>c(r,t[s]))};const w=(n,t)=>{const r=Object.keys(n);const s=Object.keys(t);if(r.length!==s.length)return false;return r.every(e=>c(n[e],t[e]))};const c=(n,t)=>{if(n===t)return true;if(n==null||t==null)return false;const r=i(n);const s=i(t);if(r!==s)return false;if(u(n))return false;if(r==="array"){return y(n,t)}if(r==="object"){return w(n,t)}return JSON.stringify(n)===JSON.stringify(t)};function p(n,t){const r=new URLSearchParams;const s=f(n,[...new URLSearchParams(t||"").entries()]);for(const[e,o]of s){r.set(e,o)}return r.toString()}function g(n,t){return Object.fromEntries(f(n,Object.entries(t||{})))}function f(n,t){const r=Object.keys(n);const s=[];for(let e=0;e<t.length;e++){if(r.includes(t[e]?.[0])){s.push([t[e][0].replace(/\+/g," "),t[e][1]])}}return s}function h(n,t){const r=Object.assign({},n);for(const[s]of Object.entries(n)){const e=s;const o=t[e]!==void 0;r[e]=o?t[e]:n[e]}return r}const S={push:n=>{if(typeof window!=="undefined"){window.history.pushState(null,"",n)}},replace:n=>{if(typeof window!=="undefined"){window.history.replaceState(null,"",n)}}};const d=/apple/i.test(!a&&navigator?.userAgent||"");const m="popstate";function P(){return a?"":window.location.search}exports.assignValue=h;exports.filterUnknown=f;exports.filterUnknownParams=g;exports.filterUnknownParamsClient=p;exports.getParams=l;exports.getSearch=P;exports.isEqual=c;exports.isPrimitive=u;exports.isSSR=a;exports.isSafari=d;exports.popstateEv=m;exports.routerHistory=S;exports.typeOf=i;
package/dist/utils.mjs CHANGED
@@ -1 +1 @@
1
- const a=n=>{const t=typeof n;const o=n===null;const r=Array.isArray(n);const e=n instanceof Date;const s=!o&&!e&&!r&&t==="object";return o&&"null"||e&&"date"||r&&"array"||s&&"object"||t};const i=typeof window==="undefined";const f=n=>new URLSearchParams(typeof n==="string"?n.split("?")?.[1]||n:n?.toString?.()||"");const u=(n,t)=>JSON.stringify(n)===JSON.stringify(t);function l(n,t){const o=new URLSearchParams;const r=c(n,[...new URLSearchParams(t||"").entries()]);for(const[e,s]of r){o.set(e,s)}return o.toString()}function p(n,t){return Object.fromEntries(c(n,Object.entries(t||{})))}function c(n,t){const o=Object.keys(n);const r=[];for(let e=0;e<t.length;e++){if(o.includes(t[e]?.[0])){r.push([t[e][0].replace(/\+/g," "),t[e][1]])}}return r}function w(n,t){const o=Object.assign({},n);for(const[r]of Object.entries(n)){const e=r;const s=t[e]!==void 0;o[e]=s?t[e]:n[e]}return o}const d={push:n=>{if(typeof window!=="undefined"){window.history.pushState(null,"",n)}},replace:n=>{if(typeof window!=="undefined"){window.history.replaceState(null,"",n)}}};const y=/apple/i.test(!i&&navigator?.userAgent||"");const g="popstate";function S(){return i?"":window.location.search}export{w as assignValue,c as filterUnknown,p as filterUnknownParams,l as filterUnknownParamsClient,f as getParams,S as getSearch,u as isEqual,i as isSSR,y as isSafari,g as popstateEv,d as routerHistory,a as typeOf};
1
+ const o=n=>{if(n===null)return"null";const t=typeof n;if(t!=="object")return t;if(Array.isArray(n))return"array";if(n instanceof Date)return"date";return"object"};const u=n=>{const t=o(n);return t!=="object"&&t!=="array"};const a=typeof window==="undefined";const l=n=>{if(n instanceof URLSearchParams){return n}if(typeof n==="string"){const t=n.indexOf("?");return new URLSearchParams(t===-1?n:n.slice(t+1))}return new URLSearchParams};const y=(n,t)=>{if(n.length!==t.length)return false;return n.every((r,s)=>c(r,t[s]))};const p=(n,t)=>{const r=Object.keys(n);const s=Object.keys(t);if(r.length!==s.length)return false;return r.every(e=>c(n[e],t[e]))};const c=(n,t)=>{if(n===t)return true;if(n==null||t==null)return false;const r=o(n);const s=o(t);if(r!==s)return false;if(u(n))return false;if(r==="array"){return y(n,t)}if(r==="object"){return p(n,t)}return JSON.stringify(n)===JSON.stringify(t)};function w(n,t){const r=new URLSearchParams;const s=f(n,[...new URLSearchParams(t||"").entries()]);for(const[e,i]of s){r.set(e,i)}return r.toString()}function h(n,t){return Object.fromEntries(f(n,Object.entries(t||{})))}function f(n,t){const r=Object.keys(n);const s=[];for(let e=0;e<t.length;e++){if(r.includes(t[e]?.[0])){s.push([t[e][0].replace(/\+/g," "),t[e][1]])}}return s}function d(n,t){const r=Object.assign({},n);for(const[s]of Object.entries(n)){const e=s;const i=t[e]!==void 0;r[e]=i?t[e]:n[e]}return r}const g={push:n=>{if(typeof window!=="undefined"){window.history.pushState(null,"",n)}},replace:n=>{if(typeof window!=="undefined"){window.history.replaceState(null,"",n)}}};const S=/apple/i.test(!a&&navigator?.userAgent||"");const b="popstate";function j(){return a?"":window.location.search}export{d as assignValue,f as filterUnknown,h as filterUnknownParams,w as filterUnknownParamsClient,l as getParams,j as getSearch,c as isEqual,u as isPrimitive,a as isSSR,S as isSafari,b as popstateEv,g as routerHistory,o as typeOf};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "state-in-url",
3
- "version": "6.0.4",
3
+ "version": "6.0.5",
4
4
  "description": "Store state in URL as in object, types and structure are preserved, with TS validation. Same API as React.useState, wthout any hasssle or boilerplate. Next.js@14-15, react-router@6-7, and remix@2.",
5
5
  "homepage": "https://state-in-url.dev",
6
6
  "repository": {
@@ -403,34 +403,34 @@
403
403
  }
404
404
  },
405
405
  "devDependencies": {
406
- "@babel/core": "^7.25.2",
407
- "@babel/node": "^7.25.0",
408
- "@babel/preset-env": "^7.25.3",
409
- "@babel/preset-typescript": "^7.24.7",
410
- "@commitlint/cli": "^19.0.3",
411
- "@commitlint/config-conventional": "^19.0.3",
412
- "@playwright/test": "^1.48.2",
413
- "@rollup/plugin-node-resolve": "^15.3.0",
414
- "@rollup/plugin-typescript": "^12.1.0",
406
+ "@babel/core": "^7.28.4",
407
+ "@babel/node": "^7.28.0",
408
+ "@babel/preset-env": "^7.28.3",
409
+ "@babel/preset-typescript": "^7.27.1",
410
+ "@commitlint/cli": "^19.8.1",
411
+ "@commitlint/config-conventional": "^19.8.1",
412
+ "@playwright/test": "^1.55.1",
413
+ "@rollup/plugin-node-resolve": "^15.3.1",
414
+ "@rollup/plugin-typescript": "^12.1.4",
415
415
  "@semantic-release/changelog": "^6.0.3",
416
- "@semantic-release/commit-analyzer": "^13.0.0",
416
+ "@semantic-release/commit-analyzer": "^13.0.1",
417
417
  "@semantic-release/git": "^10.0.1",
418
- "@semantic-release/npm": "^12.0.1",
419
- "@semantic-release/release-notes-generator": "^14.0.1",
420
- "@testing-library/dom": "^10.4.0",
421
- "@testing-library/jest-dom": "^6.4.8",
422
- "@testing-library/react": "^16.0.0",
418
+ "@semantic-release/npm": "^12.0.2",
419
+ "@semantic-release/release-notes-generator": "^14.1.0",
420
+ "@testing-library/dom": "^10.4.1",
421
+ "@testing-library/jest-dom": "^6.9.0",
422
+ "@testing-library/react": "^16.3.0",
423
423
  "@testing-library/react-hooks": "^8.0.1",
424
424
  "@types/glob": "^8.1.0",
425
- "@types/node": "^20.11.24",
426
- "@types/react": "^18.3.3",
427
- "@types/react-dom": "^18.3.0",
428
- "@vitest/coverage-istanbul": "^2.1.5",
425
+ "@types/node": "^20.19.18",
426
+ "@types/react": "^18.3.25",
427
+ "@types/react-dom": "^18.3.7",
428
+ "@vitest/coverage-istanbul": "^2.1.9",
429
429
  "auto-changelog": "^2.4.0",
430
430
  "babel-plugin-module-resolver": "^5.0.2",
431
431
  "chokidar": "^4.0.3",
432
432
  "commitizen": "^4.3.0",
433
- "commitlint": "^19.8.0",
433
+ "commitlint": "^19.8.1",
434
434
  "conventional-recommended-bump": "^10.0.0",
435
435
  "cross-env": "^7.0.3",
436
436
  "cz": "^1.8.2",
@@ -441,28 +441,28 @@
441
441
  "eslint-plugin-prettier": "^5.2.1",
442
442
  "eslint-plugin-react-hooks": "^4.6.2",
443
443
  "eslint-plugin-simple-import-sort": "^12.1.1",
444
- "happy-dom": "^15.11.6",
445
- "husky": "^9.0.11",
446
- "lint-staged": "^15.2.9",
444
+ "happy-dom": "^15.11.7",
445
+ "husky": "^9.1.7",
446
+ "lint-staged": "^15.5.2",
447
447
  "nyc": "^17.1.0",
448
448
  "only-allow": "^1.2.1",
449
449
  "pin-github-action": "^1.9.1",
450
- "playwright": "^1.48.2",
451
- "prettier": "^3.2.5",
452
- "prettier-plugin-tailwindcss": "^0.6.8",
453
- "release-it": "^17.6.0",
454
- "rollup": "^4.39.0",
450
+ "playwright": "^1.55.1",
451
+ "prettier": "^3.6.2",
452
+ "prettier-plugin-tailwindcss": "^0.6.14",
453
+ "release-it": "^17.11.0",
454
+ "rollup": "^4.52.3",
455
455
  "rollup-plugin-esbuild": "^6.2.1",
456
456
  "rollup-plugin-filesize": "^10.0.0",
457
457
  "rollup-plugin-sourcemaps": "^0.6.3",
458
458
  "semantic-release": "^24.1.0",
459
459
  "standard-version": "^9.5.0",
460
460
  "ts-node": "^10.9.2",
461
- "typescript": "^5.8.2",
462
- "unplugin-auto-import": "^0.18.5",
463
- "vitest": "^2.1.5",
464
- "wait-on": "^8.0.1",
465
- "wireit": "^0.14.11"
461
+ "typescript": "^5.9.2",
462
+ "unplugin-auto-import": "^0.18.6",
463
+ "vitest": "^2.1.9",
464
+ "wait-on": "^8.0.5",
465
+ "wireit": "^0.14.12"
466
466
  },
467
467
  "keywords": [
468
468
  "state in url",