state-in-url 4.1.2 → 4.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/README.md +14 -4
- package/dist/constants/constants.mjs +1 -1
- package/dist/constants/index.mjs +1 -1
- package/dist/encodeState/encodeState.mjs +1 -1
- package/dist/encodeState/encodeState.test.d.ts +1 -0
- package/dist/encodeState/index.mjs +1 -1
- package/dist/encoder/encoder.mjs +1 -1
- package/dist/encoder/encoder.test.d.ts +1 -0
- package/dist/encoder/index.mjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/next/index.mjs +1 -1
- package/dist/next/useUrlState/index.mjs +1 -1
- package/dist/next/useUrlState/useUrlState.mjs +1 -1
- package/dist/parseSPObj.mjs +1 -1
- package/dist/parseSPObj.test.d.ts +1 -0
- package/dist/react-router/index.mjs +1 -1
- package/dist/react-router/useUrlState/index.mjs +1 -1
- package/dist/react-router/useUrlState/useUrlState.mjs +1 -1
- package/dist/subscribers.d.ts +1 -1
- package/dist/subscribers.mjs +1 -1
- package/dist/useSharedState/index.mjs +1 -1
- package/dist/useSharedState/useSharedState.mjs +1 -1
- package/dist/useSharedState/useSharedState.test.d.ts +14 -0
- package/dist/useUrlEncode/index.mjs +1 -1
- package/dist/useUrlEncode/useUrlEncode.mjs +1 -1
- package/dist/useUrlEncode/useUrlEncode.test.d.ts +1 -0
- package/dist/useUrlStateBase/index.mjs +1 -1
- package/dist/useUrlStateBase/useUrlStateBase.mjs +1 -1
- package/dist/useUrlStateBase/useUrlStateBase.test.d.ts +1 -0
- package/dist/utils.mjs +1 -1
- package/dist/utils.test.d.ts +1 -0
- package/package.json +10 -9
- package/dist/testUtils.d.ts +0 -1
package/README.md
CHANGED
|
@@ -22,6 +22,7 @@ English | [한국어](./README.KO.md) | [简体中文](./README.CN.md)
|
|
|
22
22
|
|
|
23
23
|
[](https://scorecard.dev/viewer/?uri=github.com/asmyshlyaev177/state-in-url)
|
|
24
24
|
[](https://www.bestpractices.dev/projects/9679)
|
|
25
|
+
[](https://github.com/asmyshlyaev177/state-in-url/blob/master/LICENSE)
|
|
25
26
|
<!-- or by embedding this in your HTML:
|
|
26
27
|
<a href="https://www.bestpractices.dev/projects/9679"><img src="https://www.bestpractices.dev/projects/9679/badge"></a> -->
|
|
27
28
|
|
|
@@ -33,8 +34,10 @@ English | [한국어](./README.KO.md) | [简体中文](./README.CN.md)
|
|
|
33
34
|
|
|
34
35
|

|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
# Demo
|
|
38
|
+
|
|
39
|
+
<a href="https://state-in-url.dev" target="_blank">Demo</a> |
|
|
40
|
+
<a href="https://state-in-url.netlify.app/" target="_blank">Mirror link</a>
|
|
38
41
|
|
|
39
42
|
<a href="https://github.com/asmyshlyaev177/state-in-url/blob/master/Limits.md" target="_blank">URI size limitation, <b>up to 12KB</b> is safe</a>
|
|
40
43
|
|
|
@@ -82,7 +85,7 @@ This library is a good alternative for NUQS.
|
|
|
82
85
|
- ✨ **Complex data**: Nested objects, dates and arrays, works same as JSON, but in URL
|
|
83
86
|
- ☂ **Default values**: Giving you default values if parameter not in url
|
|
84
87
|
- ⌨ **Organized**: All possible values defined at start, protect you from getting non existing key
|
|
85
|
-
- **Fast**: Minimal rerenders,
|
|
88
|
+
- **Fast**: Minimal rerenders, around [1ms](https://github.com/asmyshlyaev177/state-in-url/blob/87c8c7c995c5cd7d9e7aa039c30bfe64b24abe4b/packages/urlstate/encoder/encoder.test.ts#L185) to encode and decode big object
|
|
86
89
|
- **Server Side Rendering**: Can use it in Server Components, Next.js 14 and 15 are supported
|
|
87
90
|
- **Lightweight**: Zero dependencies, library less than 2KB
|
|
88
91
|
- **DX**: Good developer experience, documentation, JSDoc comments, and examples
|
|
@@ -592,7 +595,14 @@ const userState = {
|
|
|
592
595
|
};
|
|
593
596
|
|
|
594
597
|
export const useUserState = () => {
|
|
595
|
-
const { urlState, setUrl } = useUrlState(userState);
|
|
598
|
+
const { urlState, setUrl, reset } = useUrlState(userState);
|
|
599
|
+
|
|
600
|
+
// other logic
|
|
601
|
+
|
|
602
|
+
// reset query params when navigating to other page
|
|
603
|
+
React.useEffect(() => {
|
|
604
|
+
return reset
|
|
605
|
+
}, [])
|
|
596
606
|
|
|
597
607
|
return { userState: urlState, setUserState: setUrl };;
|
|
598
608
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{isSafari as e}from"../utils.mjs";const d={date:"
|
|
1
|
+
import{isSafari as e}from"../utils.mjs";const d={date:"\u23F2",undefined:"\u2219undefined"},i=e?330:70;export{d as SYMBOLS,i as TIMEOUT};
|
package/dist/constants/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{SYMBOLS as M,TIMEOUT as O}from"./constants.mjs";export{M as SYMBOLS,O as TIMEOUT};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{encode as
|
|
1
|
+
import{encode as f,decode as a}from"../encoder/encoder.mjs";import{getParams as i}from"../utils.mjs";function m(o,e,n){const r=i(n);return Object.entries(o||{}).forEach(([t,c])=>{const s=e?.[t];JSON.stringify(c)!==JSON.stringify(s)&&r.set(t,f(c))}),r.toString()}function d(o,e){return{...e||{},...Object.fromEntries([...i(o).entries()].map(([n,r])=>{const t=e?.[n];return[n,a(r,t)??t]}))}}export{d as decodeState,m as encodeState};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{decodeState as o,encodeState as d}from"./encodeState.mjs";export{o as decodeState,d as encodeState};
|
package/dist/encoder/encoder.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{SYMBOLS as
|
|
1
|
+
import{SYMBOLS as r}from"../constants/constants.mjs";import{typeOf as u}from"../utils.mjs";function p(e){return typeof e=="function"||typeof e=="symbol"?"":l(e)?e:JSON.stringify(structuredClone(e),i).replace(/'/g,"%27").replace(/"/g,"'")}function i(e,t){const c=u(t);if(c!=="object"&&c!=="array")return a(t);if(c==="object"){const n=t;return Object.keys(n).forEach(o=>{n[o]=i(e,n[o])}),n}return c==="array"?t.map(n=>i(e,n)):t}const a=e=>{switch(u(e)){case"date":return r.date+new Date(e).toISOString();case"undefined":return r.undefined;default:return e}};function y(e,t){return f(e.replace(/'/g,'"').replace(/%27/g,"'"),t)}function f(e,t){try{return JSON.parse(e,d)}catch{return t}}function d(e,t){return typeof t=="string"?s(t):t}const s=e=>{if(e!==r.undefined)return e?.startsWith?.(r.date)?new Date(e.slice(1)):e},g=new RegExp(`^(${r.undefined}|${r.date})`),l=e=>g.test(String(e));export{y as decode,s as decodePrimitive,p as encode,a as encodePrimitive,f as parseJSON,d as reviver};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/encoder/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{decode as d,encode as c}from"./encoder.mjs";export{d as decode,c as encode};
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{decode as r,encode as t}from"./encoder/encoder.mjs";import{decodeState as f,encodeState as p}from"./encodeState/encodeState.mjs";import{useUrlState as a}from"./next/useUrlState/useUrlState.mjs";import{useSharedState as x}from"./useSharedState/useSharedState.mjs";import{useUrlEncode as c}from"./useUrlEncode/useUrlEncode.mjs";import{useUrlStateBase as l}from"./useUrlStateBase/useUrlStateBase.mjs";import{isSSR as U,typeOf as h}from"./utils.mjs";export{r as decode,f as decodeState,t as encode,p as encodeState,U as isSSR,h as typeOf,x as useSharedState,c as useUrlEncode,a as useUrlState,l as useUrlStateBase};
|
package/dist/next/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{useUrlState as t}from"./useUrlState/useUrlState.mjs";export{t as useUrlState};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{useUrlState as t}from"./useUrlState.mjs";export{t as useUrlState};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useRouter as
|
|
1
|
+
import{useRouter as y,useSearchParams as C}from"next/navigation";import s from"react";import{parseSPObj as S}from"../../parseSPObj.mjs";import{useUrlStateBase as H}from"../../useUrlStateBase/useUrlStateBase.mjs";import{routerHistory as R,isSSR as g,filterUnknownParams as f,filterUnknownParamsClient as j}from"../../utils.mjs";function w(t,a){const e="defaultState"in t?t.defaultState:t,d="defaultState"in t?t.searchParams:a?.searchParams,o="defaultState"in t?t.useHistory:a?.useHistory,P="defaultState"in t?{scroll:t.scroll,replace:t.replace}:{scroll:a?.scroll,replace:a?.replace},U=o===void 0||o?R:y(),{state:u,updateState:l,updateUrl:c,reset:i,getState:b}=H(e,U,({parse:r})=>g?S(f(e,d),e):r(j(e))),n=s.useMemo(()=>({...E,...P}),[]),m=s.useCallback((r,k)=>c(r,{...n,...k}),[c]),p=C();s.useEffect(()=>{l(f(e,S(Object.fromEntries([...p.entries()]),e)))},[p]);const h=s.useCallback(r=>{i({...n,...r})},[i]);return{setState:l,updateState:l,setUrl:m,updateUrl:m,urlState:u,state:u,reset:h,getState:b}}const E={replace:!0,scroll:!1};export{w as useUrlState};
|
package/dist/parseSPObj.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{decode as
|
|
1
|
+
import{decode as c}from"./encoder/encoder.mjs";function o(r,t){return{...t,...s(JSON.stringify(r),t)}}function s(r,t){try{return JSON.parse(r,i)}catch{return t}}const i=(r,t)=>{const e=typeof t=="string",n=e&&c(t?.replace?.(/'/g,'"'));return r&&e?n:t};export{o as parseSPObj};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{useUrlState as t}from"./useUrlState/useUrlState.mjs";export{t as useUrlState};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{useUrlState as t}from"./useUrlState.mjs";export{t as useUrlState};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import s from"react";import{useNavigate as b,useSearchParams as g}from"react-router-dom";import{parseSPObj as k}from"../../parseSPObj.mjs";import{useUrlStateBase as C}from"../../useUrlStateBase/useUrlStateBase.mjs";import{routerHistory as P,filterUnknownParamsClient as y,assignValue as H,filterUnknownParams as h}from"../../utils.mjs";function j(t,o){const r="defaultState"in t?t.defaultState:t,f="defaultState"in t?t.useHistory:o?.useHistory,d="defaultState"in t?{replace:t.replace,preventScrollReset:t.preventScrollReset}:{replace:o?.replace,preventScrollReset:o?.preventScrollReset},l=s.useMemo(()=>({...w,...d}),[]),u=b(),U=s.useMemo(()=>f?P:{replace:(e,a)=>u(e,{...l,...a}),push:(e,a)=>u(e,{...l,...a})},[u]),{state:p,updateState:n,updateUrl:c,getState:v,reset:i}=C(r,U,({parse:e})=>e(y(r))),S=s.useCallback((e,a)=>c(e,{...l,...a}),[c]),[m]=g();s.useEffect(()=>{n(H(r,h(r,k(Object.fromEntries([...m.entries()]),r))))},[m]);const R=s.useCallback(e=>{i({...l,...e})},[i]);return{setState:n,updateState:n,setUrl:S,updateUrl:S,urlState:p,state:p,reset:R,getState:v}}const w={replace:!0,preventScrollReset:!0};export{j as useUrlState};
|
package/dist/subscribers.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export declare const subscribers: {
|
|
|
5
5
|
remove(obj: JSONCompatible, cb: Cb): void;
|
|
6
6
|
};
|
|
7
7
|
export declare const stateMap: {
|
|
8
|
-
get: <T extends JSONCompatible>(objKey: T) => T;
|
|
8
|
+
get: <T extends JSONCompatible | undefined>(objKey: T) => T | undefined;
|
|
9
9
|
set: <T extends JSONCompatible>(objKey: T, value: T) => void;
|
|
10
10
|
};
|
|
11
11
|
export type Cb = () => void;
|
package/dist/subscribers.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const r=new WeakMap,s=new WeakMap,o={get(t){return s.get(t)||[]},add(t,e){const n=this.get(t);return s.set(t,n.concat(e)),()=>this.remove(t,e)},remove(t,e){const n=this.get(t).filter(c=>c!==e);n.length?s.set(t,n):s.delete(t)}},a={get:function(t){return r.get(t)},set:function(t,e){r.set(t,e)}};export{a as stateMap,o as subscribers};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{useSharedState as t}from"./useSharedState.mjs";export{t as useSharedState};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import u from"react";import{stateMap as n,subscribers as s}from"../subscribers.mjs";import{useInsertionEffect as g}from"../useInsertionEffect.mjs";import{isSSR as l,isEqual as b}from"../utils.mjs";function d(a,c){const t=u.useRef(a),[f,i]=u.useState(()=>{if(l)return c?c?.():t.current;const e=n.get(t.current);if(e)return e;{const r=c?.()||t.current;return n.set(t.current,r),r}}),m=u.useCallback(e=>{const r=n.get(t.current),o=typeof e=="function"?e(r):{...r,...e};b(r,o)||(n.set(t.current,o),s.get(t.current).forEach(p=>p()))},[]);g(()=>{const e=()=>{i(n.get(t.current)||t.current)},r=s.add(t.current,e);return()=>{r()}},[]);const S=u.useCallback(()=>n.get(t.current)||t.current,[]);return{state:f,getState:S,setState:m}}export{d as useSharedState};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{useUrlEncode as r}from"./useUrlEncode.mjs";export{r as useUrlEncode};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import o from"react";import{encodeState as a,decodeState as n}from"../encodeState/encodeState.mjs";import{typeOf as f}from"../utils.mjs";function i(e){const c=o.useCallback((t,r)=>f(t)==="object"?a(t,e,r):"",[e]);return{parse:o.useCallback(t=>n(t,e),[e]),stringify:c}}export{i as useUrlEncode};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{useUrlStateBase as t}from"./useUrlStateBase.mjs";export{t as useUrlStateBase};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import u from"react";import{TIMEOUT as b}from"../constants/constants.mjs";import{useInsertionEffect as L}from"../useInsertionEffect.mjs";import{useSharedState as P}from"../useSharedState/useSharedState.mjs";import{useUrlEncode as y}from"../useUrlEncode/useUrlEncode.mjs";import{filterUnknownParamsClient as C}from"../utils.mjs";function O(t,a,l){const{parse:s,stringify:o}=y(t),{state:m,getState:r,setState:c}=P(t,()=>l?.({parse:s})||t),p=u.useRef(void 0);L(()=>{const e=()=>{const n=s(C(t));c(n)};return window.addEventListener(E,e),()=>{window.removeEventListener(E,e),clearTimeout(p.current)}},[c]);const f=u.useRef([]),w=u.useCallback((e,n)=>{const h=typeof e=="function"?e(r()):e?{...r(),...e}:r(),S=o(h,I(t)),U=`${window.location.pathname}${S.length?"?":""}${S}${window.location.hash}`,k=`${window.location.pathname}${window.location.search}${window.location.hash}`;if(U===k)return;let i;c(h);const T=n?.replace;delete n?.replace,f.current.push([T?"replace":"push",U,n]),clearTimeout(p.current),p.current=setTimeout(()=>{queueMicrotask(()=>{for(;f.current.length;){const d=f.current.shift();d&&d?.[1]!==i?.[1]&&(i=d)}const[$,v,R]=i||{};i=void 0,$&&a[$](v,R)})},b)},[a,o,r]),g=u.useCallback(e=>{w(t,e)},[w]);return{updateState:c,updateUrl:w,state:m,reset:g,getState:r}}function I(t){const a=Object.keys(t),l=window.location.search,s=new URLSearchParams(l),o=new URLSearchParams;return s.forEach((m,r)=>!a.includes(r)&&o.set(r,m)),o}const E="popstate";export{O as useUrlStateBase};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/utils.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const c=n=>{const t=typeof n,r=n===null,o=Array.isArray(n),e=n instanceof Date;return r&&"null"||e&&"date"||o&&"array"||!r&&!e&&!o&&t==="object"&&"object"||t},i=typeof window>"u",l=n=>new URLSearchParams(typeof n=="string"?u(n):n?.toString?.()||""),u=n=>n.split("?")?.[1]||n||"",f=(n,t)=>JSON.stringify(n)===JSON.stringify(t);function w(n){const t=new URLSearchParams;return s(n,[...new URLSearchParams(window.location.search).entries()]).forEach(([r,o])=>t.set(r,o)),t.toString()}function p(n,t){return Object.fromEntries(s(n,Object.entries(t||{})))}function s(n,t){const r=Object.keys(n),o=[];for(let e=0;e<t.length;e++)r.includes(t[e]?.[0])&&o.push([t[e][0].replace(/\+/g," "),t[e][1]]);return o}function y(n,t){const r=Object.assign({},n);return Object.entries(n).forEach(([o])=>{const e=o,a=t[e]!==void 0;r[e]=a?t[e]:n[e]}),r}const g={push:n=>{window&&window.history.pushState(null,"",n)},replace:n=>{window&&window.history.replaceState(null,"",n)}},h=/apple/i.test(!i&&navigator?.userAgent||"");export{y as assignValue,s as filterUnknown,p as filterUnknownParams,w as filterUnknownParamsClient,l as getParams,f as isEqual,i as isSSR,h as isSafari,g as routerHistory,c as typeOf};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "state-in-url",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.4",
|
|
4
4
|
"description": "Easily share complex state objects between unrelated React components, preserve types and structure, with TS validation. Deep links and url state synchronization wthout any hasssle or boilerplate.",
|
|
5
5
|
"homepage": "https://state-in-url.dev",
|
|
6
6
|
"repository": {
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
"dependencies": [
|
|
146
146
|
"tsc"
|
|
147
147
|
],
|
|
148
|
-
"command": "npx
|
|
148
|
+
"command": "npx vitest"
|
|
149
149
|
},
|
|
150
150
|
"dev": {
|
|
151
151
|
"dependencies": [
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
"command": "npm run dev:nextjs14"
|
|
163
163
|
},
|
|
164
164
|
"dev:lib": {
|
|
165
|
-
"command": "cross-env IS_DEVELOPMENT=true rollup -c rollup.config.
|
|
165
|
+
"command": "cross-env IS_DEVELOPMENT=true rollup -c rollup.config.mjs -w",
|
|
166
166
|
"service": {
|
|
167
167
|
"readyWhen": {
|
|
168
168
|
"lineMatches": "created "
|
|
@@ -287,7 +287,7 @@
|
|
|
287
287
|
"command": "cd packages/example-react && npm run build"
|
|
288
288
|
},
|
|
289
289
|
"build": {
|
|
290
|
-
"command": "rollup -c rollup.config.
|
|
290
|
+
"command": "rollup -c rollup.config.mjs",
|
|
291
291
|
"dependencies": [
|
|
292
292
|
"rmdist"
|
|
293
293
|
]
|
|
@@ -336,7 +336,6 @@
|
|
|
336
336
|
"@commitlint/config-conventional": "^19.0.3",
|
|
337
337
|
"@playwright/test": "^1.48.2",
|
|
338
338
|
"@rollup/plugin-node-resolve": "^15.3.0",
|
|
339
|
-
"@rollup/plugin-terser": "^0.4.4",
|
|
340
339
|
"@rollup/plugin-typescript": "^12.1.0",
|
|
341
340
|
"@semantic-release/changelog": "^6.0.3",
|
|
342
341
|
"@semantic-release/commit-analyzer": "^13.0.0",
|
|
@@ -348,10 +347,10 @@
|
|
|
348
347
|
"@testing-library/react": "^16.0.0",
|
|
349
348
|
"@testing-library/react-hooks": "^8.0.1",
|
|
350
349
|
"@types/glob": "^8.1.0",
|
|
351
|
-
"@types/jest": "^29.5.14",
|
|
352
350
|
"@types/node": "^20.11.24",
|
|
353
351
|
"@types/react": "^18.3.3",
|
|
354
352
|
"@types/react-dom": "^18.3.0",
|
|
353
|
+
"@vitest/coverage-istanbul": "^2.1.5",
|
|
355
354
|
"auto-changelog": "^2.4.0",
|
|
356
355
|
"babel-plugin-module-resolver": "^5.0.2",
|
|
357
356
|
"chokidar": "^4.0.1",
|
|
@@ -365,10 +364,10 @@
|
|
|
365
364
|
"eslint-plugin-maintainable": "^0.4.4",
|
|
366
365
|
"eslint-plugin-prettier": "^5.2.1",
|
|
367
366
|
"eslint-plugin-react-hooks": "^4.6.2",
|
|
367
|
+
"happy-dom": "^15.11.6",
|
|
368
368
|
"husky": "^9.0.11",
|
|
369
|
-
"jest": "^29.7.0",
|
|
370
|
-
"jest-environment-jsdom": "^29.7.0",
|
|
371
369
|
"lint-staged": "^15.2.9",
|
|
370
|
+
"nyc": "^17.1.0",
|
|
372
371
|
"only-allow": "^1.2.1",
|
|
373
372
|
"pin-github-action": "^1.9.1",
|
|
374
373
|
"playwright": "^1.48.2",
|
|
@@ -376,13 +375,15 @@
|
|
|
376
375
|
"prettier-plugin-tailwindcss": "^0.6.8",
|
|
377
376
|
"release-it": "^17.6.0",
|
|
378
377
|
"rollup": "^4.23.0",
|
|
378
|
+
"rollup-plugin-esbuild": "^6.1.1",
|
|
379
379
|
"rollup-plugin-filesize": "^10.0.0",
|
|
380
380
|
"rollup-plugin-sourcemaps": "^0.6.3",
|
|
381
381
|
"semantic-release": "^24.1.0",
|
|
382
382
|
"standard-version": "^9.5.0",
|
|
383
|
-
"ts-jest": "^29.2.5",
|
|
384
383
|
"ts-node": "^10.9.2",
|
|
385
384
|
"typescript": "^5.3.3",
|
|
385
|
+
"unplugin-auto-import": "^0.18.5",
|
|
386
|
+
"vitest": "^2.1.5",
|
|
386
387
|
"wait-on": "^8.0.1",
|
|
387
388
|
"wireit": "^0.14.9"
|
|
388
389
|
},
|
package/dist/testUtils.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const clone: (obj: object) => any;
|