diff --git a/README.md b/README.md index 50f5719..7ca741c 100644 --- a/README.md +++ b/README.md @@ -32,3 +32,5 @@ Visit [here](./LICENSE) for license information. - [NPM Package](https://www.npmjs.com/package/@jrtilak/lazykit) - [Develop Branch](https://lazykit-www-git-dev-tilak-thapas-projects.vercel.app/) - [Master Branch](https://lazykit.thapatilak.com.np/) + +Thank you for using Lazykit! <3 diff --git a/docs/REGISTRY.md b/docs/REGISTRY.md index dff0dcb..b8780c8 100644 --- a/docs/REGISTRY.md +++ b/docs/REGISTRY.md @@ -10,7 +10,8 @@ This is located at [src/www/src/registry/](../src/www/src/registry/). It is sour └──[method] ├── index.ts ├── index.test.ts - ├── docs.tsx + ├── docs.md + ├── props.ts └── *.example.ts ``` @@ -29,13 +30,9 @@ This is located at [src/www/src/registry/](../src/www/src/registry/). It is sour - `index.ts`: The source code of the method. - `index.test.ts`: The test file for the method. - `*.example.ts`: The example file for the method. At least one example file is required. -- `docs.tsx`: The documentation for the method. - It needs to export the following: - - `default`: The description for the method as a React component. - - `Info`: The additional information for the method as object which contains: - - `description`: The description for the method. - - `externalLinks`: The array of external links for the method. (Optional) - - `Props`: The props for the method as a React component. +- `docs.md`: The documentation for the method. + It shoul have desc as the short description for method and full details description, you can refer the implementation in one of the registry function. +_ `props.ts`: It is a object that includes the details about the propa for the method. _You can see any of the existing methods for reference._ [here](../src/www/src/registry/) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 25c0228..aa2c2fb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,14 +10,14 @@ importers: dependencies: tsx: specifier: ^4.7.1 - version: 4.7.1 + version: 4.9.5 devDependencies: '@commitlint/cli': specifier: ^19.2.0 - version: 19.2.0(@types/node@20.11.28)(typescript@5.4.2) + version: 19.3.0(@types/node@20.12.11)(typescript@5.4.5) '@commitlint/config-conventional': specifier: ^19.1.0 - version: 19.1.0 + version: 19.2.2 husky: specifier: ^9.0.11 version: 9.0.11 @@ -38,172 +38,168 @@ importers: version: 16.4.5 inquirer: specifier: ^9.2.16 - version: 9.2.16 + version: 9.2.20 devDependencies: '@types/inquirer': specifier: ^9.0.7 version: 9.0.7 '@types/node': specifier: ^20.11.28 - version: 20.11.28 + version: 20.12.11 '@typescript-eslint/eslint-plugin': specifier: ^7.4.0 - version: 7.4.0(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2) + version: 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^7.4.0 - version: 7.4.0(eslint@8.57.0)(typescript@5.4.2) + version: 7.8.0(eslint@8.57.0)(typescript@5.4.5) eslint: specifier: ^8 version: 8.57.0 tsup: specifier: ^8.0.2 - version: 8.0.2(postcss@8.4.35)(typescript@5.4.2) + version: 8.0.2(typescript@5.4.5) typescript: specifier: ^5 - version: 5.4.2 + version: 5.4.5 src/www: dependencies: '@radix-ui/react-accordion': specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-dialog': specifier: ^1.0.5 - version: 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-scroll-area': specifier: ^1.0.5 - version: 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-separator': specifier: ^1.0.3 - version: 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-slot': specifier: ^1.0.2 - version: 1.0.2(@types/react@18.2.66)(react@18.2.0) + version: 1.0.2(@types/react@18.3.2)(react@18.3.1) '@radix-ui/react-tabs': specifier: ^1.0.4 - version: 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-toast': specifier: ^1.1.5 - version: 1.1.5(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.1.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) '@radix-ui/react-tooltip': specifier: ^1.0.7 - version: 1.0.7(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.0.7(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) '@vercel/analytics': specifier: ^1.2.2 - version: 1.2.2(next@14.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + version: 1.2.2(next@14.1.3)(react@18.3.1) change-case: specifier: ^5.4.3 - version: 5.4.3 + version: 5.4.4 class-variance-authority: specifier: ^0.7.0 version: 0.7.0 clsx: specifier: ^2.1.0 - version: 2.1.0 + version: 2.1.1 cmdk: specifier: ^1.0.0 - version: 1.0.0(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) gray-matter: specifier: ^4.0.3 version: 4.0.3 lucide-react: specifier: ^0.358.0 - version: 0.358.0(react@18.2.0) + version: 0.358.0(react@18.3.1) marked: specifier: ^12.0.1 - version: 12.0.1 + version: 12.0.2 next: specifier: 14.1.3 - version: 14.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 14.1.3(react-dom@18.3.1)(react@18.3.1) next-themes: specifier: ^0.3.0 - version: 0.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 0.3.0(react-dom@18.3.1)(react@18.3.1) react: specifier: ^18 - version: 18.2.0 + version: 18.3.1 react-dom: specifier: ^18 - version: 18.2.0(react@18.2.0) + version: 18.3.1(react@18.3.1) react-syntax-highlighter: specifier: ^15.5.0 - version: 15.5.0(react@18.2.0) + version: 15.5.0(react@18.3.1) tailwind-merge: specifier: ^2.2.2 - version: 2.2.2 + version: 2.3.0 tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.1) + version: 1.0.7(tailwindcss@3.4.3) vitest: specifier: ^1.4.0 - version: 1.4.0(@types/node@20.11.28) + version: 1.6.0(@types/node@20.12.11) devDependencies: '@tailwindcss/typography': specifier: ^0.5.12 - version: 0.5.12(tailwindcss@3.4.1) + version: 0.5.13(tailwindcss@3.4.3) '@types/node': specifier: ^20 - version: 20.11.28 + version: 20.12.11 '@types/react': specifier: ^18 - version: 18.2.66 + version: 18.3.2 '@types/react-dom': specifier: ^18 - version: 18.2.22 + version: 18.3.0 '@types/react-syntax-highlighter': specifier: ^15.5.11 - version: 15.5.11 + version: 15.5.13 autoprefixer: specifier: ^10.0.1 - version: 10.4.18(postcss@8.4.35) + version: 10.4.19(postcss@8.4.38) eslint: specifier: ^8 version: 8.57.0 eslint-config-next: specifier: 14.1.3 - version: 14.1.3(eslint@8.57.0)(typescript@5.4.2) + version: 14.1.3(eslint@8.57.0)(typescript@5.4.5) postcss: specifier: ^8 - version: 8.4.35 + version: 8.4.38 tailwindcss: specifier: ^3.3.0 - version: 3.4.1 + version: 3.4.3 typescript: specifier: ^5 - version: 5.4.2 + version: 5.4.5 packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - '@babel/code-frame@7.23.5': - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + '@babel/code-frame@7.24.2': + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + '@babel/helper-validator-identifier@7.24.5': + resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.23.4': - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + '@babel/highlight@7.24.5': + resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.24.0': - resolution: {integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==} + '@babel/runtime@7.24.5': + resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} engines: {node: '>=6.9.0'} - '@commitlint/cli@19.2.0': - resolution: {integrity: sha512-8XnQDMyQR+1/ldbmIyhonvnDS2enEw48Wompo/967fsEvy9Vj5/JbDutzmSBKxANWDVeEbR9QQm0yHpw6ArrFw==} + '@commitlint/cli@19.3.0': + resolution: {integrity: sha512-LgYWOwuDR7BSTQ9OLZ12m7F/qhNY+NpAyPBgo4YNMkACE7lGuUnuQq1yi9hz1KA4+3VqpOYl8H1rY/LYK43v7g==} engines: {node: '>=v18'} hasBin: true - '@commitlint/config-conventional@19.1.0': - resolution: {integrity: sha512-KIKD2xrp6Uuk+dcZVj3++MlzIr/Su6zLE8crEDQCZNvWHNQSeeGbzOlNtsR32TUy6H3JbP7nWgduAHCaiGQ6EA==} + '@commitlint/config-conventional@19.2.2': + resolution: {integrity: sha512-mLXjsxUVLYEGgzbxbxicGPggDuyWNkf25Ht23owXIH+zV2pv1eJuzLK3t1gDY5Gp6pxdE60jZnWUY5cvgL3ufw==} engines: {node: '>=v18'} '@commitlint/config-validator@19.0.3': @@ -218,16 +214,16 @@ packages: resolution: {integrity: sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==} engines: {node: '>=v18'} - '@commitlint/format@19.0.3': - resolution: {integrity: sha512-QjjyGyoiVWzx1f5xOteKHNLFyhyweVifMgopozSgx1fGNrGV8+wp7k6n1t6StHdJ6maQJ+UUtO2TcEiBFRyR6Q==} + '@commitlint/format@19.3.0': + resolution: {integrity: sha512-luguk5/aF68HiF4H23ACAfk8qS8AHxl4LLN5oxPc24H+2+JRPsNr1OS3Gaea0CrH7PKhArBMKBz5RX9sA5NtTg==} engines: {node: '>=v18'} - '@commitlint/is-ignored@19.0.3': - resolution: {integrity: sha512-MqDrxJaRSVSzCbPsV6iOKG/Lt52Y+PVwFVexqImmYYFhe51iVJjK2hRhOG2jUAGiUHk4jpdFr0cZPzcBkSzXDQ==} + '@commitlint/is-ignored@19.2.2': + resolution: {integrity: sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g==} engines: {node: '>=v18'} - '@commitlint/lint@19.1.0': - resolution: {integrity: sha512-ESjaBmL/9cxm+eePyEr6SFlBUIYlYpI80n+Ltm7IA3MAcrmiP05UMhJdAD66sO8jvo8O4xdGn/1Mt2G5VzfZKw==} + '@commitlint/lint@19.2.2': + resolution: {integrity: sha512-xrzMmz4JqwGyKQKTpFzlN0dx0TAiT7Ran1fqEBgEmEj+PU98crOFtysJgY+QdeSagx6EDRigQIXJVnfrI0ratA==} engines: {node: '>=v18'} '@commitlint/load@19.2.0': @@ -242,8 +238,8 @@ packages: resolution: {integrity: sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==} engines: {node: '>=v18'} - '@commitlint/read@19.2.0': - resolution: {integrity: sha512-HlGeEd/jyp2a5Fb9mvtsaDm5hFCmj80dJYjLQkpG3DzWneWBc37YU3kM8Za1D1HUazZaTkdsWq73M3XDE4CvCA==} + '@commitlint/read@19.2.1': + resolution: {integrity: sha512-qETc4+PL0EUv7Q36lJbPG+NJiBOGg7SSC7B5BsPWOmei+Dyif80ErfWQ0qXoW9oCh7GTpTNRoaVhiI8RbhuaNw==} engines: {node: '>=v18'} '@commitlint/resolve-extends@19.1.0': @@ -272,138 +268,276 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.19.12': resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.20.2': + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.19.12': resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.20.2': + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.19.12': resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.20.2': + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.19.12': resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.20.2': + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.19.12': resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.20.2': + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.19.12': resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.20.2': + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.19.12': resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.20.2': + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.19.12': resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.20.2': + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.19.12': resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.20.2': + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.19.12': resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.20.2': + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.19.12': resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.20.2': + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.19.12': resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.20.2': + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.19.12': resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.20.2': + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.19.12': resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.20.2': + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.19.12': resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.20.2': + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.19.12': resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.20.2': + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-x64@0.19.12': resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.20.2': + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-x64@0.19.12': resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.20.2': + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.19.12': resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.19.12': resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.20.2': + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.19.12': resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.20.2': + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.19.12': resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} engines: {node: '>=12'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.20.2': + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -422,20 +556,20 @@ packages: resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@floating-ui/core@1.6.0': - resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} + '@floating-ui/core@1.6.1': + resolution: {integrity: sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==} - '@floating-ui/dom@1.6.3': - resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} + '@floating-ui/dom@1.6.5': + resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==} - '@floating-ui/react-dom@2.0.8': - resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==} + '@floating-ui/react-dom@2.0.9': + resolution: {integrity: sha512-q0umO0+LQK4+p6aGyvzASqKbKOJcAHJ7ycE9CuUvfx3s9zTHWmGJTPOIlM/hmSBfUfg/XfY5YhLBLR/LHwShQQ==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - '@floating-ui/utils@0.2.1': - resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} + '@floating-ui/utils@0.2.2': + resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==} '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} @@ -445,8 +579,12 @@ packages: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.2': - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + + '@inquirer/figures@1.0.1': + resolution: {integrity: sha512-mtup3wVKia3ZwULPHcbs4Mor8Voi+iIXEWD7wCNbIO6lYR62oPCTQyrddi5OMYVXHzeCSoneZwJuS8sBvlEwDw==} + engines: {node: '>=18'} '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -905,73 +1043,88 @@ packages: '@radix-ui/rect@1.0.1': resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} - '@rollup/rollup-android-arm-eabi@4.13.0': - resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==} + '@rollup/rollup-android-arm-eabi@4.17.2': + resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.13.0': - resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==} + '@rollup/rollup-android-arm64@4.17.2': + resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.13.0': - resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==} + '@rollup/rollup-darwin-arm64@4.17.2': + resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.13.0': - resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==} + '@rollup/rollup-darwin-x64@4.17.2': + resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.13.0': - resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.17.2': + resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.17.2': + resolution: {integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.13.0': - resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==} + '@rollup/rollup-linux-arm64-gnu@4.17.2': + resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.13.0': - resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==} + '@rollup/rollup-linux-arm64-musl@4.17.2': + resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.13.0': - resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==} + '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': + resolution: {integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.17.2': + resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.13.0': - resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==} + '@rollup/rollup-linux-s390x-gnu@4.17.2': + resolution: {integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.17.2': + resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.13.0': - resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==} + '@rollup/rollup-linux-x64-musl@4.17.2': + resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.13.0': - resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==} + '@rollup/rollup-win32-arm64-msvc@4.17.2': + resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.13.0': - resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==} + '@rollup/rollup-win32-ia32-msvc@4.17.2': + resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.13.0': - resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==} + '@rollup/rollup-win32-x64-msvc@4.17.2': + resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==} cpu: [x64] os: [win32] - '@rushstack/eslint-patch@1.7.2': - resolution: {integrity: sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==} + '@rushstack/eslint-patch@1.10.2': + resolution: {integrity: sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==} '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} @@ -979,8 +1132,8 @@ packages: '@swc/helpers@0.5.2': resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} - '@tailwindcss/typography@0.5.12': - resolution: {integrity: sha512-CNwpBpconcP7ppxmuq3qvaCxiRWnbhANpY/ruH4L5qs2GCiVDJXde/pjj2HWPV1+Q4G9+V/etrwUYopdcjAlyg==} + '@tailwindcss/typography@0.5.13': + resolution: {integrity: sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==} peerDependencies: tailwindcss: '>=3.0.0 || insiders' @@ -1002,23 +1155,20 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/node@20.11.28': - resolution: {integrity: sha512-M/GPWVS2wLkSkNHVeLkrF2fD5Lx5UC4PxA0uZcKc6QqbIQUJyW1jVjueJYi1z8n0I5PxYrtpnPnWglE+y9A0KA==} - - '@types/prop-types@15.7.11': - resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} + '@types/node@20.12.11': + resolution: {integrity: sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==} - '@types/react-dom@18.2.22': - resolution: {integrity: sha512-fHkBXPeNtfvri6gdsMYyW+dW7RXFo6Ad09nLFK0VQWR7yGLai/Cyvyj696gbwYvBnhGtevUG9cET0pmUbMtoPQ==} + '@types/prop-types@15.7.12': + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - '@types/react-syntax-highlighter@15.5.11': - resolution: {integrity: sha512-ZqIJl+Pg8kD+47kxUjvrlElrraSUrYa4h0dauY/U/FTUuprSCqvUj+9PNQNQzVc6AJgIWUUxn87/gqsMHNbRjw==} + '@types/react-dom@18.3.0': + resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} - '@types/react@18.2.66': - resolution: {integrity: sha512-OYTmMI4UigXeFMF/j4uv0lBBEbongSgptPrHBxqME44h9+yNov+oL6Z3ocJKo0WyXR84sQUNeyIp9MRfckvZpg==} + '@types/react-syntax-highlighter@15.5.13': + resolution: {integrity: sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==} - '@types/scheduler@0.16.8': - resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + '@types/react@18.3.2': + resolution: {integrity: sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==} '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -1029,8 +1179,8 @@ packages: '@types/unist@2.0.10': resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} - '@typescript-eslint/eslint-plugin@7.4.0': - resolution: {integrity: sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==} + '@typescript-eslint/eslint-plugin@7.8.0': + resolution: {integrity: sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -1050,8 +1200,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@7.4.0': - resolution: {integrity: sha512-ZvKHxHLusweEUVwrGRXXUVzFgnWhigo4JurEj0dGF1tbcGh6buL+ejDdjxOQxv6ytcY1uhun1p2sm8iWStlgLQ==} + '@typescript-eslint/parser@7.8.0': + resolution: {integrity: sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1064,12 +1214,12 @@ packages: resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/scope-manager@7.4.0': - resolution: {integrity: sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==} + '@typescript-eslint/scope-manager@7.8.0': + resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/type-utils@7.4.0': - resolution: {integrity: sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==} + '@typescript-eslint/type-utils@7.8.0': + resolution: {integrity: sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1082,8 +1232,8 @@ packages: resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/types@7.4.0': - resolution: {integrity: sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==} + '@typescript-eslint/types@7.8.0': + resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/typescript-estree@6.21.0': @@ -1095,8 +1245,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@7.4.0': - resolution: {integrity: sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==} + '@typescript-eslint/typescript-estree@7.8.0': + resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -1104,8 +1254,8 @@ packages: typescript: optional: true - '@typescript-eslint/utils@7.4.0': - resolution: {integrity: sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==} + '@typescript-eslint/utils@7.8.0': + resolution: {integrity: sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1114,8 +1264,8 @@ packages: resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/visitor-keys@7.4.0': - resolution: {integrity: sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==} + '@typescript-eslint/visitor-keys@7.8.0': + resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==} engines: {node: ^18.18.0 || >=20.0.0} '@ungap/structured-clone@1.2.0': @@ -1132,20 +1282,20 @@ packages: react: optional: true - '@vitest/expect@1.4.0': - resolution: {integrity: sha512-Jths0sWCJZ8BxjKe+p+eKsoqev1/T8lYcrjavEaz8auEJ4jAVY0GwW3JKmdVU4mmNPLPHixh4GNXP7GFtAiDHA==} + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} - '@vitest/runner@1.4.0': - resolution: {integrity: sha512-EDYVSmesqlQ4RD2VvWo3hQgTJ7ZrFQ2VSJdfiJiArkCerDAGeyF1i6dHkmySqk573jLp6d/cfqCN+7wUB5tLgg==} + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} - '@vitest/snapshot@1.4.0': - resolution: {integrity: sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==} + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} - '@vitest/spy@1.4.0': - resolution: {integrity: sha512-Ywau/Qs1DzM/8Uc+yA77CwSegizMlcgTJuYGAi0jujOteJOUf1ujunHThYo243KG9nAyWT3L9ifPYZ5+As/+6Q==} + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} - '@vitest/utils@1.4.0': - resolution: {integrity: sha512-mx3Yd1/6e2Vt/PUC98DcqTirtfxUyAZ32uK82r8rZzbtBeBo+nqgnjx/LvqQdWsrvNtm14VmurNgcf4nqY5gJg==} + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} @@ -1168,8 +1318,8 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} @@ -1229,24 +1379,20 @@ packages: array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} - array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - array.prototype.filter@1.0.3: - resolution: {integrity: sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==} + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} - array.prototype.findlast@1.2.4: - resolution: {integrity: sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==} - engines: {node: '>= 0.4'} - - array.prototype.findlastindex@1.2.4: - resolution: {integrity: sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==} + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} engines: {node: '>= 0.4'} array.prototype.flat@1.3.2: @@ -1273,8 +1419,8 @@ packages: ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - autoprefixer@10.4.18: - resolution: {integrity: sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==} + autoprefixer@10.4.19: + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -1322,8 +1468,8 @@ packages: buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - bundle-require@4.0.2: - resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} + bundle-require@4.1.0: + resolution: {integrity: sha512-FeArRFM+ziGkRViKRnSTbHZc35dgmR9yNog05Kn0+ItI59pOAISGvnnIwW1WgFZQW59IxD9QpJnUPkdIPfZuXg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.17' @@ -1348,8 +1494,8 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - caniuse-lite@1.0.30001598: - resolution: {integrity: sha512-j8mQRDziG94uoBfeFuqsJUNECW37DXpnvhcMJMdlH2u3MRkq1sAI0LJcXP1i/Py0KbSIC4UDj8YHPrTn5YsL+Q==} + caniuse-lite@1.0.30001617: + resolution: {integrity: sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA==} chai@4.4.1: resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} @@ -1367,8 +1513,8 @@ packages: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - change-case@5.4.3: - resolution: {integrity: sha512-4cdyvorTy/lViZlVzw2O8/hHCLUuHqp4KpSSP3DlauhFCf3LdnfF+p5s0EAhjKsU7bqrMzu7iQArYfoPiHO2nw==} + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} character-entities-legacy@1.1.4: resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} @@ -1419,8 +1565,8 @@ packages: resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} engines: {node: '>=6'} - clsx@2.1.0: - resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} cmdk@1.0.0: @@ -1459,6 +1605,9 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + conventional-changelog-angular@7.0.0: resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} engines: {node: '>=16'} @@ -1595,8 +1744,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.4.708: - resolution: {integrity: sha512-iWgEEvREL4GTXXHKohhh33+6Y8XkPI5eHihDmm8zUk5Zo7HICEW+wI/j5kJ2tbuNUCXJ/sNXa03ajW635DiJXA==} + electron-to-chromium@1.4.763: + resolution: {integrity: sha512-k4J8NrtJ9QrvHLRo8Q18OncqBCB7tIUyqxRcJnlonQ0ioHKYB988GcDFF3ZePmnb8eHEopDs/wPHR/iGAFgoUQ==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1604,8 +1753,8 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - enhanced-resolve@5.16.0: - resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} + enhanced-resolve@5.16.1: + resolution: {integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==} engines: {node: '>=10.13.0'} env-paths@2.2.1: @@ -1615,17 +1764,10 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-abstract@1.22.5: - resolution: {integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==} + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} - es-abstract@1.23.0: - resolution: {integrity: sha512-vmuE7Uoevk2xkwu5Gwa7RfJk/ebVV6xRv7KuZNbUglmJHhWPMbLL20ztreVpBbdxBZijETx3Aml3NssX4SFMvQ==} - engines: {node: '>= 0.4'} - - es-array-method-boxes-properly@1.0.0: - resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} - es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} @@ -1634,8 +1776,12 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-iterator-helpers@1.0.18: - resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==} + es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} es-set-tostringtag@2.0.3: @@ -1654,6 +1800,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -1722,8 +1873,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - eslint-plugin-react-hooks@4.6.0: - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 @@ -1810,10 +1961,6 @@ packages: fault@1.0.4: resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} - figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -1896,8 +2043,8 @@ packages: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} - get-tsconfig@4.7.3: - resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} + get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} git-raw-commits@4.0.0: resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} @@ -1917,6 +2064,11 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true + glob@10.3.14: + resolution: {integrity: sha512-4fkAqu93xe9Mk7le9v0y3VrPDqLKHarNi2s4Pv7f2yOvfhWfhc7hRPHC/JyqMqb8B/Dt/eGS4n7ykwf3fOsl8g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} @@ -1928,8 +2080,8 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} globby@11.1.0: @@ -2016,8 +2168,8 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} - import-meta-resolve@4.0.0: - resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} @@ -2033,8 +2185,8 @@ packages: resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - inquirer@9.2.16: - resolution: {integrity: sha512-qzgbB+yNjgSzk2omeqMDtO9IgJet/UL67luT1MaaggRpGK73DBQct5Q4pipwFQcIKK1GbMODYd4UfsRCkSP1DA==} + inquirer@9.2.20: + resolution: {integrity: sha512-SFwJJPS+Ms75NV+wzFBHjirG4z3tzvis31h+9NyH1tqjIu2c7vCavlXILZ73q/nPYy8/aw4W+DNzLH5MjfYXiA==} engines: {node: '>=18'} internal-slot@1.0.7: @@ -2219,8 +2371,8 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@8.0.3: - resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} @@ -2249,9 +2401,6 @@ packages: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true - jsonc-parser@3.2.1: - resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} - jsonparse@1.3.1: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} @@ -2355,25 +2504,20 @@ packages: lowlight@1.20.0: resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} - lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} engines: {node: 14 || >=16.14} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - lucide-react@0.358.0: resolution: {integrity: sha512-rBSptRjZTMBm24zsFhR6pK/NgbT18JegZGKcH4+1H3+UigMSRpeoWLtR/fAwMYwYnlJOZB+y8WpeHne9D6X6Kg==} peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 - magic-string@0.30.8: - resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} - engines: {node: '>=12'} + magic-string@0.30.10: + resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} - marked@12.0.1: - resolution: {integrity: sha512-Y1/V2yafOcOdWQCX0XpAKXzDakPOpn6U0YLxTJs3cww6VxOzZV1BTOOYWLvH3gX38cq+iLwljHHTnMtlDfg01Q==} + marked@12.0.2: + resolution: {integrity: sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==} engines: {node: '>= 18'} hasBin: true @@ -2407,15 +2551,19 @@ packages: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + minipass@7.1.1: + resolution: {integrity: sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==} engines: {node: '>=16 || 14 >=14.17'} - mlly@1.6.1: - resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} + mlly@1.7.0: + resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -2497,22 +2645,24 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} - object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} engines: {node: '>= 0.4'} - object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} - object.groupby@1.0.2: - resolution: {integrity: sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==} + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} - object.hasown@1.1.3: - resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} + engines: {node: '>= 0.4'} - object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} once@1.4.0: @@ -2526,8 +2676,8 @@ packages: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} ora@5.4.1: @@ -2592,8 +2742,8 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + path-scurry@1.11.0: + resolution: {integrity: sha512-LNHTaVkzaYaLGlO+0u3rQTz7QrHTFOuKyba9JMTQutkmtNew8dw8wOD7mTU/5fCPZzCWpfW0XnQKzY61P0aTaw==} engines: {node: '>=16 || 14 >=14.17'} path-type@4.0.0: @@ -2621,8 +2771,8 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + pkg-types@1.1.1: + resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} possible-typed-array-names@1.0.0: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} @@ -2673,8 +2823,8 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.4.35: - resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} + postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -2706,16 +2856,16 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - react-dom@18.2.0: - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: - react: ^18.2.0 + react: ^18.3.1 react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} react-remove-scroll-bar@2.3.6: resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} @@ -2752,8 +2902,8 @@ packages: peerDependencies: react: '>= 0.14.0' - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} read-cache@1.0.0: @@ -2767,8 +2917,8 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - reflect.getprototypeof@1.0.5: - resolution: {integrity: sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==} + reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} engines: {node: '>= 0.4'} refractor@3.6.0: @@ -2820,8 +2970,8 @@ packages: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true - rollup@4.13.0: - resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==} + rollup@4.17.2: + resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2849,8 +2999,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} @@ -2860,8 +3010,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} hasBin: true @@ -2902,8 +3052,8 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} source-map@0.8.0-beta.0: @@ -2938,18 +3088,20 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} - string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -2982,8 +3134,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@2.0.0: - resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} styled-jsx@5.1.1: resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} @@ -3015,16 +3167,16 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - tailwind-merge@2.2.2: - resolution: {integrity: sha512-tWANXsnmJzgw6mQ07nE3aCDkCK4QdT3ThPMCzawoYA2Pws7vSTCvz3Vrjg61jVUGfFZPJzxEP+NimbcW+EdaDw==} + tailwind-merge@2.3.0: + resolution: {integrity: sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==} tailwindcss-animate@1.0.7: resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} peerDependencies: tailwindcss: '>=3.0.0 || insiders' - tailwindcss@3.4.1: - resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} + tailwindcss@3.4.3: + resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} engines: {node: '>=14.0.0'} hasBin: true @@ -3049,11 +3201,11 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - tinybench@2.6.0: - resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} - tinypool@0.8.2: - resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} engines: {node: '>=14.0.0'} tinyspy@2.2.1: @@ -3109,8 +3261,8 @@ packages: typescript: optional: true - tsx@4.7.1: - resolution: {integrity: sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==} + tsx@4.9.5: + resolution: {integrity: sha512-bVKowxL5sqd5Pxkkgy6M9IGpxyY9+SPxWPNviZyqNBT/i6/X9EHbmuLDUw/6/Tugw1ca8VXNDtcM/amQjXcEOA==} engines: {node: '>=18.0.0'} hasBin: true @@ -3142,17 +3294,17 @@ packages: resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} engines: {node: '>= 0.4'} - typed-array-length@1.0.5: - resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} - typescript@5.4.2: - resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} hasBin: true - ufo@1.5.1: - resolution: {integrity: sha512-HGyF79+/qZ4soRvM+nHERR2pJ3VXDZ/8sL1uLahdgEDf580NkgiWOxLk33FetExqOWp352JZRsgXbG/4MaGOSg==} + ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -3164,8 +3316,8 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} - update-browserslist-db@1.0.13: - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + update-browserslist-db@1.0.15: + resolution: {integrity: sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -3196,13 +3348,13 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - vite-node@1.4.0: - resolution: {integrity: sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==} + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite@5.1.6: - resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} + vite@5.2.11: + resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -3229,15 +3381,15 @@ packages: terser: optional: true - vitest@1.4.0: - resolution: {integrity: sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==} + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.4.0 - '@vitest/ui': 1.4.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -3288,6 +3440,10 @@ packages: engines: {node: '>=8'} hasBin: true + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -3311,11 +3467,8 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@2.4.1: - resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} + yaml@2.4.2: + resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} engines: {node: '>= 14'} hasBin: true @@ -3337,33 +3490,32 @@ packages: snapshots: - '@aashutoshrathi/word-wrap@1.2.6': {} - '@alloc/quick-lru@5.2.0': {} - '@babel/code-frame@7.23.5': + '@babel/code-frame@7.24.2': dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 + '@babel/highlight': 7.24.5 + picocolors: 1.0.0 - '@babel/helper-validator-identifier@7.22.20': {} + '@babel/helper-validator-identifier@7.24.5': {} - '@babel/highlight@7.23.4': + '@babel/highlight@7.24.5': dependencies: - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.5 chalk: 2.4.2 js-tokens: 4.0.0 + picocolors: 1.0.0 - '@babel/runtime@7.24.0': + '@babel/runtime@7.24.5': dependencies: regenerator-runtime: 0.14.1 - '@commitlint/cli@19.2.0(@types/node@20.11.28)(typescript@5.4.2)': + '@commitlint/cli@19.3.0(@types/node@20.12.11)(typescript@5.4.5)': dependencies: - '@commitlint/format': 19.0.3 - '@commitlint/lint': 19.1.0 - '@commitlint/load': 19.2.0(@types/node@20.11.28)(typescript@5.4.2) - '@commitlint/read': 19.2.0 + '@commitlint/format': 19.3.0 + '@commitlint/lint': 19.2.2 + '@commitlint/load': 19.2.0(@types/node@20.12.11)(typescript@5.4.5) + '@commitlint/read': 19.2.1 '@commitlint/types': 19.0.3 execa: 8.0.1 yargs: 17.7.2 @@ -3371,7 +3523,7 @@ snapshots: - '@types/node' - typescript - '@commitlint/config-conventional@19.1.0': + '@commitlint/config-conventional@19.2.2': dependencies: '@commitlint/types': 19.0.3 conventional-changelog-conventionalcommits: 7.0.2 @@ -3379,7 +3531,7 @@ snapshots: '@commitlint/config-validator@19.0.3': dependencies: '@commitlint/types': 19.0.3 - ajv: 8.12.0 + ajv: 8.13.0 '@commitlint/ensure@19.0.3': dependencies: @@ -3392,32 +3544,32 @@ snapshots: '@commitlint/execute-rule@19.0.0': {} - '@commitlint/format@19.0.3': + '@commitlint/format@19.3.0': dependencies: '@commitlint/types': 19.0.3 chalk: 5.3.0 - '@commitlint/is-ignored@19.0.3': + '@commitlint/is-ignored@19.2.2': dependencies: '@commitlint/types': 19.0.3 - semver: 7.6.0 + semver: 7.6.2 - '@commitlint/lint@19.1.0': + '@commitlint/lint@19.2.2': dependencies: - '@commitlint/is-ignored': 19.0.3 + '@commitlint/is-ignored': 19.2.2 '@commitlint/parse': 19.0.3 '@commitlint/rules': 19.0.3 '@commitlint/types': 19.0.3 - '@commitlint/load@19.2.0(@types/node@20.11.28)(typescript@5.4.2)': + '@commitlint/load@19.2.0(@types/node@20.12.11)(typescript@5.4.5)': dependencies: '@commitlint/config-validator': 19.0.3 '@commitlint/execute-rule': 19.0.0 '@commitlint/resolve-extends': 19.1.0 '@commitlint/types': 19.0.3 chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.4.2) - cosmiconfig-typescript-loader: 5.0.0(@types/node@20.11.28)(cosmiconfig@9.0.0(typescript@5.4.2))(typescript@5.4.2) + cosmiconfig: 9.0.0(typescript@5.4.5) + cosmiconfig-typescript-loader: 5.0.0(@types/node@20.12.11)(cosmiconfig@9.0.0)(typescript@5.4.5) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -3433,7 +3585,7 @@ snapshots: conventional-changelog-angular: 7.0.0 conventional-commits-parser: 5.0.0 - '@commitlint/read@19.2.0': + '@commitlint/read@19.2.1': dependencies: '@commitlint/top-level': 19.0.0 '@commitlint/types': 19.0.3 @@ -3446,7 +3598,7 @@ snapshots: '@commitlint/config-validator': 19.0.3 '@commitlint/types': 19.0.3 global-directory: 4.0.1 - import-meta-resolve: 4.0.0 + import-meta-resolve: 4.1.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 @@ -3472,72 +3624,141 @@ snapshots: '@esbuild/aix-ppc64@0.19.12': optional: true + '@esbuild/aix-ppc64@0.20.2': + optional: true + '@esbuild/android-arm64@0.19.12': optional: true + '@esbuild/android-arm64@0.20.2': + optional: true + '@esbuild/android-arm@0.19.12': optional: true + '@esbuild/android-arm@0.20.2': + optional: true + '@esbuild/android-x64@0.19.12': optional: true + '@esbuild/android-x64@0.20.2': + optional: true + '@esbuild/darwin-arm64@0.19.12': optional: true + '@esbuild/darwin-arm64@0.20.2': + optional: true + '@esbuild/darwin-x64@0.19.12': optional: true + '@esbuild/darwin-x64@0.20.2': + optional: true + '@esbuild/freebsd-arm64@0.19.12': optional: true + '@esbuild/freebsd-arm64@0.20.2': + optional: true + '@esbuild/freebsd-x64@0.19.12': optional: true + '@esbuild/freebsd-x64@0.20.2': + optional: true + '@esbuild/linux-arm64@0.19.12': optional: true + '@esbuild/linux-arm64@0.20.2': + optional: true + '@esbuild/linux-arm@0.19.12': optional: true + '@esbuild/linux-arm@0.20.2': + optional: true + '@esbuild/linux-ia32@0.19.12': optional: true + '@esbuild/linux-ia32@0.20.2': + optional: true + '@esbuild/linux-loong64@0.19.12': optional: true + '@esbuild/linux-loong64@0.20.2': + optional: true + '@esbuild/linux-mips64el@0.19.12': optional: true + '@esbuild/linux-mips64el@0.20.2': + optional: true + '@esbuild/linux-ppc64@0.19.12': optional: true + '@esbuild/linux-ppc64@0.20.2': + optional: true + '@esbuild/linux-riscv64@0.19.12': optional: true + '@esbuild/linux-riscv64@0.20.2': + optional: true + '@esbuild/linux-s390x@0.19.12': optional: true + '@esbuild/linux-s390x@0.20.2': + optional: true + '@esbuild/linux-x64@0.19.12': optional: true + '@esbuild/linux-x64@0.20.2': + optional: true + '@esbuild/netbsd-x64@0.19.12': optional: true + '@esbuild/netbsd-x64@0.20.2': + optional: true + '@esbuild/openbsd-x64@0.19.12': optional: true + '@esbuild/openbsd-x64@0.20.2': + optional: true + '@esbuild/sunos-x64@0.19.12': optional: true + '@esbuild/sunos-x64@0.20.2': + optional: true + '@esbuild/win32-arm64@0.19.12': optional: true + '@esbuild/win32-arm64@0.20.2': + optional: true + '@esbuild/win32-ia32@0.19.12': optional: true + '@esbuild/win32-ia32@0.20.2': + optional: true + '@esbuild/win32-x64@0.19.12': optional: true + '@esbuild/win32-x64@0.20.2': + optional: true + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': dependencies: eslint: 8.57.0 @@ -3561,26 +3782,26 @@ snapshots: '@eslint/js@8.57.0': {} - '@floating-ui/core@1.6.0': + '@floating-ui/core@1.6.1': dependencies: - '@floating-ui/utils': 0.2.1 + '@floating-ui/utils': 0.2.2 - '@floating-ui/dom@1.6.3': + '@floating-ui/dom@1.6.5': dependencies: - '@floating-ui/core': 1.6.0 - '@floating-ui/utils': 0.2.1 + '@floating-ui/core': 1.6.1 + '@floating-ui/utils': 0.2.2 - '@floating-ui/react-dom@2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@floating-ui/react-dom@2.0.9(react-dom@18.3.1)(react@18.3.1)': dependencies: - '@floating-ui/dom': 1.6.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@floating-ui/dom': 1.6.5 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) - '@floating-ui/utils@0.2.1': {} + '@floating-ui/utils@0.2.2': {} '@humanwhocodes/config-array@0.11.14': dependencies: - '@humanwhocodes/object-schema': 2.0.2 + '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -3588,7 +3809,9 @@ snapshots: '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.2': {} + '@humanwhocodes/object-schema@2.0.3': {} + + '@inquirer/figures@1.0.1': {} '@isaacs/cliui@8.0.2': dependencies: @@ -3674,418 +3897,397 @@ snapshots: '@radix-ui/number@1.0.1': dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.5 '@radix-ui/primitive@1.0.1': dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.5 - '@radix-ui/react-accordion@1.1.2(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-accordion@1.1.2(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.5 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.66)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 - - '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 - - '@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 + '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.66)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 - - '@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.66)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 - - '@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.66)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.66 - - '@radix-ui/react-context@1.0.1(@types/react@18.2.66)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.66 - - '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-collection@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.2)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-compose-refs@1.0.1(@types/react@18.3.2)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@types/react': 18.3.2 + react: 18.3.1 + + '@radix-ui/react-context@1.0.1(@types/react@18.3.2)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@types/react': 18.3.2 + react: 18.3.1 + + '@radix-ui/react-dialog@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.66)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 aria-hidden: 1.2.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.66)(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.5.5(@types/react@18.3.2)(react@18.3.1) - '@radix-ui/react-direction@1.0.1(@types/react@18.2.66)(react@18.2.0)': + '@radix-ui/react-direction@1.0.1(@types/react@18.3.2)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.66 + '@babel/runtime': 7.24.5 + '@types/react': 18.3.2 + react: 18.3.1 - '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.5 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.66)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 - - '@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.66)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.66 - - '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.66)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 - - '@radix-ui/react-id@1.0.1(@types/react@18.2.66)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.66)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.66 - - '@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.66)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.3.2)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-focus-guards@1.0.1(@types/react@18.3.2)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@types/react': 18.3.2 + react: 18.3.1 + + '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-id@1.0.1(@types/react@18.3.2)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@types/react': 18.3.2 + react: 18.3.1 + + '@radix-ui/react-popper@1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@floating-ui/react-dom': 2.0.9(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.3.2)(react@18.3.1) '@radix-ui/rect': 1.0.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 - - '@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 - - '@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.66)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 - - '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.66)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 - - '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-portal@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-presence@1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.2)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.66)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 - - '@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.66)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 - - '@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 - - '@radix-ui/react-slot@1.0.2(@types/react@18.2.66)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.66)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.66 - - '@radix-ui/react-tabs@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-separator@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-slot@1.0.2(@types/react@18.3.2)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@types/react': 18.3.2 + react: 18.3.1 + + '@radix-ui/react-tabs@1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.66)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 - - '@radix-ui/react-toast@1.1.5(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 + '@radix-ui/react-context': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-direction': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-toast@1.1.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 - - '@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.66)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 - - '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.66)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.66 - - '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.66)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.66)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.66 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-context': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-id': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-slot': 1.0.2(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.3.2)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@types/react': 18.3.2 + react: 18.3.1 + + '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.3.2)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@types/react': 18.3.2 + react: 18.3.1 + + '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.3.2)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@types/react': 18.3.2 + react: 18.3.1 + + '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.3.2)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@types/react': 18.3.2 + react: 18.3.1 + + '@radix-ui/react-use-rect@1.0.1(@types/react@18.3.2)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.24.5 + '@radix-ui/rect': 1.0.1 + '@types/react': 18.3.2 + react: 18.3.1 - '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.66)(react@18.2.0)': + '@radix-ui/react-use-size@1.0.1(@types/react@18.3.2)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.66)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.66 + '@babel/runtime': 7.24.5 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.3.2)(react@18.3.1) + '@types/react': 18.3.2 + react: 18.3.1 - '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.66)(react@18.2.0)': + '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1)': dependencies: - '@babel/runtime': 7.24.0 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.66 + '@babel/runtime': 7.24.5 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@types/react': 18.3.2 + '@types/react-dom': 18.3.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) - '@radix-ui/react-use-rect@1.0.1(@types/react@18.2.66)(react@18.2.0)': + '@radix-ui/rect@1.0.1': dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/rect': 1.0.1 - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.66 + '@babel/runtime': 7.24.5 - '@radix-ui/react-use-size@1.0.1(@types/react@18.2.66)(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.66)(react@18.2.0) - react: 18.2.0 - optionalDependencies: - '@types/react': 18.2.66 + '@rollup/rollup-android-arm-eabi@4.17.2': + optional: true - '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': - dependencies: - '@babel/runtime': 7.24.0 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 - '@types/react-dom': 18.2.22 + '@rollup/rollup-android-arm64@4.17.2': + optional: true - '@radix-ui/rect@1.0.1': - dependencies: - '@babel/runtime': 7.24.0 + '@rollup/rollup-darwin-arm64@4.17.2': + optional: true - '@rollup/rollup-android-arm-eabi@4.13.0': + '@rollup/rollup-darwin-x64@4.17.2': optional: true - '@rollup/rollup-android-arm64@4.13.0': + '@rollup/rollup-linux-arm-gnueabihf@4.17.2': optional: true - '@rollup/rollup-darwin-arm64@4.13.0': + '@rollup/rollup-linux-arm-musleabihf@4.17.2': optional: true - '@rollup/rollup-darwin-x64@4.13.0': + '@rollup/rollup-linux-arm64-gnu@4.17.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.13.0': + '@rollup/rollup-linux-arm64-musl@4.17.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.13.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.13.0': + '@rollup/rollup-linux-riscv64-gnu@4.17.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.13.0': + '@rollup/rollup-linux-s390x-gnu@4.17.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.13.0': + '@rollup/rollup-linux-x64-gnu@4.17.2': optional: true - '@rollup/rollup-linux-x64-musl@4.13.0': + '@rollup/rollup-linux-x64-musl@4.17.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.13.0': + '@rollup/rollup-win32-arm64-msvc@4.17.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.13.0': + '@rollup/rollup-win32-ia32-msvc@4.17.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.13.0': + '@rollup/rollup-win32-x64-msvc@4.17.2': optional: true - '@rushstack/eslint-patch@1.7.2': {} + '@rushstack/eslint-patch@1.10.2': {} '@sinclair/typebox@0.27.8': {} @@ -4093,17 +4295,17 @@ snapshots: dependencies: tslib: 2.6.2 - '@tailwindcss/typography@0.5.12(tailwindcss@3.4.1)': + '@tailwindcss/typography@0.5.13(tailwindcss@3.4.3)': dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.1 + tailwindcss: 3.4.3 '@types/conventional-commits-parser@5.0.0': dependencies: - '@types/node': 20.11.28 + '@types/node': 20.12.11 '@types/estree@1.0.5': {} @@ -4120,79 +4322,73 @@ snapshots: '@types/json5@0.0.29': {} - '@types/node@20.11.28': + '@types/node@20.12.11': dependencies: undici-types: 5.26.5 - '@types/prop-types@15.7.11': {} + '@types/prop-types@15.7.12': {} - '@types/react-dom@18.2.22': + '@types/react-dom@18.3.0': dependencies: - '@types/react': 18.2.66 + '@types/react': 18.3.2 - '@types/react-syntax-highlighter@15.5.11': + '@types/react-syntax-highlighter@15.5.13': dependencies: - '@types/react': 18.2.66 + '@types/react': 18.3.2 - '@types/react@18.2.66': + '@types/react@18.3.2': dependencies: - '@types/prop-types': 15.7.11 - '@types/scheduler': 0.16.8 + '@types/prop-types': 15.7.12 csstype: 3.1.3 - '@types/scheduler@0.16.8': {} - '@types/semver@7.5.8': {} '@types/through@0.0.33': dependencies: - '@types/node': 20.11.28 + '@types/node': 20.12.11 '@types/unist@2.0.10': {} - '@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.4.2))(eslint@8.57.0)(typescript@5.4.2)': + '@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.4.2) - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/type-utils': 7.4.0(eslint@8.57.0)(typescript@5.4.2) - '@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.4.2) - '@typescript-eslint/visitor-keys': 7.4.0 + '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.8.0 + '@typescript-eslint/type-utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - optionalDependencies: - typescript: 5.4.2 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2)': + '@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.2) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 eslint: 8.57.0 - optionalDependencies: - typescript: 5.4.2 + typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.4.0(eslint@8.57.0)(typescript@5.4.2)': + '@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.2) - '@typescript-eslint/visitor-keys': 7.4.0 + '@typescript-eslint/scope-manager': 7.8.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4 eslint: 8.57.0 - optionalDependencies: - typescript: 5.4.2 + typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -4201,28 +4397,27 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - '@typescript-eslint/scope-manager@7.4.0': + '@typescript-eslint/scope-manager@7.8.0': dependencies: - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/visitor-keys': 7.4.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/visitor-keys': 7.8.0 - '@typescript-eslint/type-utils@7.4.0(eslint@8.57.0)(typescript@5.4.2)': + '@typescript-eslint/type-utils@7.8.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.2) - '@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5) debug: 4.3.4 eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - optionalDependencies: - typescript: 5.4.2 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color '@typescript-eslint/types@6.21.0': {} - '@typescript-eslint/types@7.4.0': {} + '@typescript-eslint/types@7.8.0': {} - '@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.2)': + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5)': dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 @@ -4230,38 +4425,36 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - optionalDependencies: - typescript: 5.4.2 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@7.4.0(typescript@5.4.2)': + '@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.5)': dependencies: - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/visitor-keys': 7.4.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - optionalDependencies: - typescript: 5.4.2 + minimatch: 9.0.4 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.4.0(eslint@8.57.0)(typescript@5.4.2)': + '@typescript-eslint/utils@7.8.0(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.4.0 - '@typescript-eslint/types': 7.4.0 - '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.4.2) + '@typescript-eslint/scope-manager': 7.8.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) eslint: 8.57.0 - semver: 7.6.0 + semver: 7.6.2 transitivePeerDependencies: - supports-color - typescript @@ -4271,43 +4464,42 @@ snapshots: '@typescript-eslint/types': 6.21.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@7.4.0': + '@typescript-eslint/visitor-keys@7.8.0': dependencies: - '@typescript-eslint/types': 7.4.0 + '@typescript-eslint/types': 7.8.0 eslint-visitor-keys: 3.4.3 '@ungap/structured-clone@1.2.0': {} - '@vercel/analytics@1.2.2(next@14.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': + '@vercel/analytics@1.2.2(next@14.1.3)(react@18.3.1)': dependencies: + next: 14.1.3(react-dom@18.3.1)(react@18.3.1) + react: 18.3.1 server-only: 0.0.1 - optionalDependencies: - next: 14.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - '@vitest/expect@1.4.0': + '@vitest/expect@1.6.0': dependencies: - '@vitest/spy': 1.4.0 - '@vitest/utils': 1.4.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 chai: 4.4.1 - '@vitest/runner@1.4.0': + '@vitest/runner@1.6.0': dependencies: - '@vitest/utils': 1.4.0 + '@vitest/utils': 1.6.0 p-limit: 5.0.0 pathe: 1.1.2 - '@vitest/snapshot@1.4.0': + '@vitest/snapshot@1.6.0': dependencies: - magic-string: 0.30.8 + magic-string: 0.30.10 pathe: 1.1.2 pretty-format: 29.7.0 - '@vitest/spy@1.4.0': + '@vitest/spy@1.6.0': dependencies: tinyspy: 2.2.1 - '@vitest/utils@1.4.0': + '@vitest/utils@1.6.0': dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -4334,7 +4526,7 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.12.0: + ajv@8.13.0: dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -4391,66 +4583,61 @@ snapshots: array-ify@1.0.0: {} - array-includes@3.1.7: + array-includes@3.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 array-union@2.1.0: {} - array.prototype.filter@1.0.3: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-array-method-boxes-properly: 1.0.0 - is-string: 1.0.7 - - array.prototype.findlast@1.2.4: + array.prototype.findlast@1.2.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - array.prototype.findlastindex@1.2.4: + array.prototype.findlastindex@1.2.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 array.prototype.flatmap@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 array.prototype.toreversed@1.1.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 array.prototype.tosorted@1.1.3: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 @@ -4459,7 +4646,7 @@ snapshots: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 es-errors: 1.3.0 get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 @@ -4469,14 +4656,14 @@ snapshots: ast-types-flow@0.0.8: {} - autoprefixer@10.4.18(postcss@8.4.35): + autoprefixer@10.4.19(postcss@8.4.38): dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001598 + caniuse-lite: 1.0.30001617 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.35 + postcss: 8.4.38 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: @@ -4516,17 +4703,17 @@ snapshots: browserslist@4.23.0: dependencies: - caniuse-lite: 1.0.30001598 - electron-to-chromium: 1.4.708 + caniuse-lite: 1.0.30001617 + electron-to-chromium: 1.4.763 node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) + update-browserslist-db: 1.0.15(browserslist@4.23.0) buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - bundle-require@4.0.2(esbuild@0.19.12): + bundle-require@4.1.0(esbuild@0.19.12): dependencies: esbuild: 0.19.12 load-tsconfig: 0.2.5 @@ -4549,7 +4736,7 @@ snapshots: camelcase-css@2.0.1: {} - caniuse-lite@1.0.30001598: {} + caniuse-lite@1.0.30001617: {} chai@4.4.1: dependencies: @@ -4574,7 +4761,7 @@ snapshots: chalk@5.3.0: {} - change-case@5.4.3: {} + change-case@5.4.4: {} character-entities-legacy@1.1.4: {} @@ -4624,14 +4811,14 @@ snapshots: clsx@2.0.0: {} - clsx@2.1.0: {} + clsx@2.1.1: {} - cmdk@1.0.0(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + cmdk@1.0.0(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1): dependencies: - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.66)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.3.0)(@types/react@18.3.2)(react-dom@18.3.1)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -4661,6 +4848,8 @@ snapshots: concat-map@0.0.1: {} + confbox@0.1.7: {} + conventional-changelog-angular@7.0.0: dependencies: compare-func: 2.0.0 @@ -4676,21 +4865,20 @@ snapshots: meow: 12.1.1 split2: 4.2.0 - cosmiconfig-typescript-loader@5.0.0(@types/node@20.11.28)(cosmiconfig@9.0.0(typescript@5.4.2))(typescript@5.4.2): + cosmiconfig-typescript-loader@5.0.0(@types/node@20.12.11)(cosmiconfig@9.0.0)(typescript@5.4.5): dependencies: - '@types/node': 20.11.28 - cosmiconfig: 9.0.0(typescript@5.4.2) + '@types/node': 20.12.11 + cosmiconfig: 9.0.0(typescript@5.4.5) jiti: 1.21.0 - typescript: 5.4.2 + typescript: 5.4.5 - cosmiconfig@9.0.0(typescript@5.4.2): + cosmiconfig@9.0.0(typescript@5.4.5): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 - optionalDependencies: - typescript: 5.4.2 + typescript: 5.4.5 cross-spawn@7.0.3: dependencies: @@ -4784,13 +4972,13 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.4.708: {} + electron-to-chromium@1.4.763: {} emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} - enhanced-resolve@5.16.0: + enhanced-resolve@5.16.1: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 @@ -4801,51 +4989,7 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-abstract@1.22.5: - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.5 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 - - es-abstract@1.23.0: + es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 @@ -4856,12 +5000,13 @@ snapshots: data-view-byte-offset: 1.0.0 es-define-property: 1.0.0 es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-set-tostringtag: 2.0.3 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 get-intrinsic: 1.2.4 get-symbol-description: 1.0.2 - globalthis: 1.0.3 + globalthis: 1.0.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 has-proto: 1.0.3 @@ -4883,34 +5028,32 @@ snapshots: regexp.prototype.flags: 1.5.2 safe-array-concat: 1.1.2 safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 typed-array-buffer: 1.0.2 typed-array-byte-length: 1.0.1 typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.5 + typed-array-length: 1.0.6 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 - es-array-method-boxes-properly@1.0.0: {} - es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 es-errors@1.3.0: {} - es-iterator-helpers@1.0.18: + es-iterator-helpers@1.0.19: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.0 + es-abstract: 1.23.3 es-errors: 1.3.0 es-set-tostringtag: 2.0.3 function-bind: 1.1.2 get-intrinsic: 1.2.4 - globalthis: 1.0.3 + globalthis: 1.0.4 has-property-descriptors: 1.0.2 has-proto: 1.0.3 has-symbols: 1.0.3 @@ -4918,6 +5061,10 @@ snapshots: iterator.prototype: 1.1.2 safe-array-concat: 1.1.2 + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.4 @@ -4960,26 +5107,51 @@ snapshots: '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 + esbuild@0.20.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + escalade@3.1.2: {} escape-string-regexp@1.0.5: {} escape-string-regexp@4.0.0: {} - eslint-config-next@14.1.3(eslint@8.57.0)(typescript@5.4.2): + eslint-config-next@14.1.3(eslint@8.57.0)(typescript@5.4.5): dependencies: '@next/eslint-plugin-next': 14.1.3 - '@rushstack/eslint-patch': 1.7.2 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.2) + '@rushstack/eslint-patch': 1.10.2 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-react: 7.34.1(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) - optionalDependencies: - typescript: 5.4.2 + eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) + typescript: 5.4.5 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color @@ -4992,15 +5164,15 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): dependencies: debug: 4.3.4 - enhanced-resolve: 5.16.0 + enhanced-resolve: 5.16.1 eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 - get-tsconfig: 4.7.3 + get-tsconfig: 4.7.5 is-core-module: 2.13.1 is-glob: 4.0.3 transitivePeerDependencies: @@ -5009,39 +5181,37 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): dependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.2) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): dependencies: - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.4 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.2 - object.values: 1.1.7 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 semver: 6.3.1 tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -5049,49 +5219,49 @@ snapshots: eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.5 aria-query: 5.3.0 - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 axe-core: 4.7.0 axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.18 + es-iterator-helpers: 1.0.19 eslint: 8.57.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 + object.entries: 1.1.8 + object.fromentries: 2.0.8 - eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): + eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): dependencies: eslint: 8.57.0 eslint-plugin-react@7.34.1(eslint@8.57.0): dependencies: - array-includes: 3.1.7 - array.prototype.findlast: 1.2.4 + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 array.prototype.toreversed: 1.1.2 array.prototype.tosorted: 1.1.3 doctrine: 2.1.0 - es-iterator-helpers: 1.0.18 + es-iterator-helpers: 1.0.19 eslint: 8.57.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - object.hasown: 1.1.3 - object.values: 1.1.7 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.hasown: 1.1.4 + object.values: 1.2.0 prop-types: 15.8.1 resolve: 2.0.0-next.5 semver: 6.3.1 - string.prototype.matchall: 4.0.10 + string.prototype.matchall: 4.0.11 eslint-scope@7.2.2: dependencies: @@ -5137,7 +5307,7 @@ snapshots: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: @@ -5223,10 +5393,6 @@ snapshots: dependencies: format: 0.2.2 - figures@3.2.0: - dependencies: - escape-string-regexp: 1.0.5 - file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 @@ -5278,7 +5444,7 @@ snapshots: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 functions-have-names: 1.2.3 functions-have-names@1.2.3: {} @@ -5307,7 +5473,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.2.4 - get-tsconfig@4.7.3: + get-tsconfig@4.7.5: dependencies: resolve-pkg-maps: 1.0.0 @@ -5329,9 +5495,17 @@ snapshots: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.1 + minimatch: 9.0.4 + minipass: 7.1.1 + path-scurry: 1.11.0 + + glob@10.3.14: + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.4 + minipass: 7.1.1 + path-scurry: 1.11.0 glob@7.2.3: dependencies: @@ -5350,9 +5524,10 @@ snapshots: dependencies: type-fest: 0.20.2 - globalthis@1.0.3: + globalthis@1.0.4: dependencies: define-properties: 1.2.1 + gopd: 1.0.1 globby@11.1.0: dependencies: @@ -5431,7 +5606,7 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-meta-resolve@4.0.0: {} + import-meta-resolve@4.1.0: {} imurmurhash@0.1.4: {} @@ -5444,15 +5619,15 @@ snapshots: ini@4.1.1: {} - inquirer@9.2.16: + inquirer@9.2.20: dependencies: + '@inquirer/figures': 1.0.1 '@ljharb/through': 2.3.13 ansi-escapes: 4.3.2 chalk: 5.3.0 cli-cursor: 3.1.0 cli-width: 4.1.0 external-editor: 3.1.0 - figures: 3.2.0 lodash: 4.17.21 mute-stream: 1.0.0 ora: 5.4.1 @@ -5608,7 +5783,7 @@ snapshots: define-properties: 1.2.1 get-intrinsic: 1.2.4 has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.5 + reflect.getprototypeof: 1.0.6 set-function-name: 2.0.2 jackspeak@2.3.6: @@ -5623,7 +5798,7 @@ snapshots: js-tokens@4.0.0: {} - js-tokens@8.0.3: {} + js-tokens@9.0.0: {} js-yaml@3.14.1: dependencies: @@ -5648,16 +5823,14 @@ snapshots: dependencies: minimist: 1.2.8 - jsonc-parser@3.2.1: {} - jsonparse@1.3.1: {} jsx-ast-utils@3.3.5: dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flat: 1.3.2 object.assign: 4.1.5 - object.values: 1.1.7 + object.values: 1.2.0 keyv@4.5.4: dependencies: @@ -5686,8 +5859,8 @@ snapshots: local-pkg@0.5.0: dependencies: - mlly: 1.6.1 - pkg-types: 1.0.3 + mlly: 1.7.0 + pkg-types: 1.1.1 locate-path@6.0.0: dependencies: @@ -5739,21 +5912,17 @@ snapshots: fault: 1.0.4 highlight.js: 10.7.3 - lru-cache@10.2.0: {} + lru-cache@10.2.2: {} - lru-cache@6.0.0: + lucide-react@0.358.0(react@18.3.1): dependencies: - yallist: 4.0.0 + react: 18.3.1 - lucide-react@0.358.0(react@18.2.0): - dependencies: - react: 18.2.0 - - magic-string@0.30.8: + magic-string@0.30.10: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - marked@12.0.1: {} + marked@12.0.2: {} meow@12.1.1: {} @@ -5778,16 +5947,20 @@ snapshots: dependencies: brace-expansion: 2.0.1 + minimatch@9.0.4: + dependencies: + brace-expansion: 2.0.1 + minimist@1.2.8: {} - minipass@7.0.4: {} + minipass@7.1.1: {} - mlly@1.6.1: + mlly@1.7.0: dependencies: acorn: 8.11.3 pathe: 1.1.2 - pkg-types: 1.0.3 - ufo: 1.5.1 + pkg-types: 1.1.1 + ufo: 1.5.3 ms@2.1.2: {} @@ -5805,22 +5978,22 @@ snapshots: natural-compare@1.4.0: {} - next-themes@0.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next-themes@0.3.0(react-dom@18.3.1)(react@18.3.1): dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) - next@14.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next@14.1.3(react-dom@18.3.1)(react@18.3.1): dependencies: '@next/env': 14.1.3 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001598 + caniuse-lite: 1.0.30001617 graceful-fs: 4.2.11 postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styled-jsx: 5.1.1(react@18.3.1) optionalDependencies: '@next/swc-darwin-arm64': 14.1.3 '@next/swc-darwin-x64': 14.1.3 @@ -5864,36 +6037,36 @@ snapshots: has-symbols: 1.0.3 object-keys: 1.1.1 - object.entries@1.1.7: + object.entries@1.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-object-atoms: 1.0.0 - object.fromentries@2.0.7: + object.fromentries@2.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 - object.groupby@1.0.2: + object.groupby@1.0.3: dependencies: - array.prototype.filter: 1.0.3 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 - es-errors: 1.3.0 + es-abstract: 1.23.3 - object.hasown@1.1.3: + object.hasown@1.1.4: dependencies: define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 - object.values@1.1.7: + object.values@1.2.0: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-object-atoms: 1.0.0 once@1.4.0: dependencies: @@ -5907,14 +6080,14 @@ snapshots: dependencies: mimic-fn: 4.0.0 - optionator@0.9.3: + optionator@0.9.4: dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + word-wrap: 1.2.5 ora@5.4.1: dependencies: @@ -5965,7 +6138,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -5982,10 +6155,10 @@ snapshots: path-parse@1.0.7: {} - path-scurry@1.10.1: + path-scurry@1.11.0: dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 + lru-cache: 10.2.2 + minipass: 7.1.1 path-type@4.0.0: {} @@ -6001,36 +6174,35 @@ snapshots: pirates@4.0.6: {} - pkg-types@1.0.3: + pkg-types@1.1.1: dependencies: - jsonc-parser: 3.2.1 - mlly: 1.6.1 + confbox: 0.1.7 + mlly: 1.7.0 pathe: 1.1.2 possible-typed-array-names@1.0.0: {} - postcss-import@15.1.0(postcss@8.4.35): + postcss-import@15.1.0(postcss@8.4.38): dependencies: - postcss: 8.4.35 + postcss: 8.4.38 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.35): + postcss-js@4.0.1(postcss@8.4.38): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.35 + postcss: 8.4.38 - postcss-load-config@4.0.2(postcss@8.4.35): + postcss-load-config@4.0.2(postcss@8.4.38): dependencies: lilconfig: 3.1.1 - yaml: 2.4.1 - optionalDependencies: - postcss: 8.4.35 + postcss: 8.4.38 + yaml: 2.4.2 - postcss-nested@6.0.1(postcss@8.4.35): + postcss-nested@6.0.1(postcss@8.4.38): dependencies: - postcss: 8.4.35 + postcss: 8.4.38 postcss-selector-parser: 6.0.16 postcss-selector-parser@6.0.10: @@ -6049,13 +6221,13 @@ snapshots: dependencies: nanoid: 3.3.7 picocolors: 1.0.0 - source-map-js: 1.0.2 + source-map-js: 1.2.0 - postcss@8.4.35: + postcss@8.4.38: dependencies: nanoid: 3.3.7 picocolors: 1.0.0 - source-map-js: 1.0.2 + source-map-js: 1.2.0 prelude-ls@1.2.1: {} @@ -6063,7 +6235,7 @@ snapshots: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 18.2.0 + react-is: 18.3.1 prismjs@1.27.0: {} @@ -6083,54 +6255,51 @@ snapshots: queue-microtask@1.2.3: {} - react-dom@18.2.0(react@18.2.0): + react-dom@18.3.1(react@18.3.1): dependencies: loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.0 + react: 18.3.1 + scheduler: 0.23.2 react-is@16.13.1: {} - react-is@18.2.0: {} + react-is@18.3.1: {} - react-remove-scroll-bar@2.3.6(@types/react@18.2.66)(react@18.2.0): + react-remove-scroll-bar@2.3.6(@types/react@18.3.2)(react@18.3.1): dependencies: - react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.66)(react@18.2.0) + '@types/react': 18.3.2 + react: 18.3.1 + react-style-singleton: 2.2.1(@types/react@18.3.2)(react@18.3.1) tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.66 - react-remove-scroll@2.5.5(@types/react@18.2.66)(react@18.2.0): + react-remove-scroll@2.5.5(@types/react@18.3.2)(react@18.3.1): dependencies: - react: 18.2.0 - react-remove-scroll-bar: 2.3.6(@types/react@18.2.66)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.66)(react@18.2.0) + '@types/react': 18.3.2 + react: 18.3.1 + react-remove-scroll-bar: 2.3.6(@types/react@18.3.2)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.2)(react@18.3.1) tslib: 2.6.2 - use-callback-ref: 1.3.2(@types/react@18.2.66)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.66)(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.66 + use-callback-ref: 1.3.2(@types/react@18.3.2)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.2)(react@18.3.1) - react-style-singleton@2.2.1(@types/react@18.2.66)(react@18.2.0): + react-style-singleton@2.2.1(@types/react@18.3.2)(react@18.3.1): dependencies: + '@types/react': 18.3.2 get-nonce: 1.0.1 invariant: 2.2.4 - react: 18.2.0 + react: 18.3.1 tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.66 - react-syntax-highlighter@15.5.0(react@18.2.0): + react-syntax-highlighter@15.5.0(react@18.3.1): dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.5 highlight.js: 10.7.3 lowlight: 1.20.0 prismjs: 1.29.0 - react: 18.2.0 + react: 18.3.1 refractor: 3.6.0 - react@18.2.0: + react@18.3.1: dependencies: loose-envify: 1.4.0 @@ -6148,14 +6317,14 @@ snapshots: dependencies: picomatch: 2.3.1 - reflect.getprototypeof@1.0.5: + reflect.getprototypeof@1.0.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.0 + es-abstract: 1.23.3 es-errors: 1.3.0 get-intrinsic: 1.2.4 - globalthis: 1.0.3 + globalthis: 1.0.4 which-builtin-type: 1.1.3 refractor@3.6.0: @@ -6206,23 +6375,26 @@ snapshots: dependencies: glob: 7.2.3 - rollup@4.13.0: + rollup@4.17.2: dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.13.0 - '@rollup/rollup-android-arm64': 4.13.0 - '@rollup/rollup-darwin-arm64': 4.13.0 - '@rollup/rollup-darwin-x64': 4.13.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.13.0 - '@rollup/rollup-linux-arm64-gnu': 4.13.0 - '@rollup/rollup-linux-arm64-musl': 4.13.0 - '@rollup/rollup-linux-riscv64-gnu': 4.13.0 - '@rollup/rollup-linux-x64-gnu': 4.13.0 - '@rollup/rollup-linux-x64-musl': 4.13.0 - '@rollup/rollup-win32-arm64-msvc': 4.13.0 - '@rollup/rollup-win32-ia32-msvc': 4.13.0 - '@rollup/rollup-win32-x64-msvc': 4.13.0 + '@rollup/rollup-android-arm-eabi': 4.17.2 + '@rollup/rollup-android-arm64': 4.17.2 + '@rollup/rollup-darwin-arm64': 4.17.2 + '@rollup/rollup-darwin-x64': 4.17.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.17.2 + '@rollup/rollup-linux-arm-musleabihf': 4.17.2 + '@rollup/rollup-linux-arm64-gnu': 4.17.2 + '@rollup/rollup-linux-arm64-musl': 4.17.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.17.2 + '@rollup/rollup-linux-riscv64-gnu': 4.17.2 + '@rollup/rollup-linux-s390x-gnu': 4.17.2 + '@rollup/rollup-linux-x64-gnu': 4.17.2 + '@rollup/rollup-linux-x64-musl': 4.17.2 + '@rollup/rollup-win32-arm64-msvc': 4.17.2 + '@rollup/rollup-win32-ia32-msvc': 4.17.2 + '@rollup/rollup-win32-x64-msvc': 4.17.2 fsevents: 2.3.3 run-async@3.0.0: {} @@ -6252,7 +6424,7 @@ snapshots: safer-buffer@2.1.2: {} - scheduler@0.23.0: + scheduler@0.23.2: dependencies: loose-envify: 1.4.0 @@ -6263,9 +6435,7 @@ snapshots: semver@6.3.1: {} - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 + semver@7.6.2: {} server-only@0.0.1: {} @@ -6306,7 +6476,7 @@ snapshots: slash@3.0.0: {} - source-map-js@1.0.2: {} + source-map-js@1.2.0: {} source-map@0.8.0-beta.0: dependencies: @@ -6336,35 +6506,39 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string.prototype.matchall@4.0.10: + string.prototype.matchall@4.0.11: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 + gopd: 1.0.1 has-symbols: 1.0.3 internal-slot: 1.0.7 regexp.prototype.flags: 1.5.2 set-function-name: 2.0.2 side-channel: 1.0.6 - string.prototype.trim@1.2.8: + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 - string.prototype.trimend@1.0.7: + string.prototype.trimend@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-object-atoms: 1.0.0 - string.prototype.trimstart@1.0.7: + string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-object-atoms: 1.0.0 string_decoder@1.3.0: dependencies: @@ -6388,20 +6562,20 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@2.0.0: + strip-literal@2.1.0: dependencies: - js-tokens: 8.0.3 + js-tokens: 9.0.0 - styled-jsx@5.1.1(react@18.2.0): + styled-jsx@5.1.1(react@18.3.1): dependencies: client-only: 0.0.1 - react: 18.2.0 + react: 18.3.1 sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 10.3.10 + glob: 10.3.14 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -6417,15 +6591,15 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - tailwind-merge@2.2.2: + tailwind-merge@2.3.0: dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.5 - tailwindcss-animate@1.0.7(tailwindcss@3.4.1): + tailwindcss-animate@1.0.7(tailwindcss@3.4.3): dependencies: - tailwindcss: 3.4.1 + tailwindcss: 3.4.3 - tailwindcss@3.4.1: + tailwindcss@3.4.3: dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -6441,11 +6615,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.35 - postcss-import: 15.1.0(postcss@8.4.35) - postcss-js: 4.0.1(postcss@8.4.35) - postcss-load-config: 4.0.2(postcss@8.4.35) - postcss-nested: 6.0.1(postcss@8.4.35) + postcss: 8.4.38 + postcss-import: 15.1.0(postcss@8.4.38) + postcss-js: 4.0.1(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38) + postcss-nested: 6.0.1(postcss@8.4.38) postcss-selector-parser: 6.0.16 resolve: 1.22.8 sucrase: 3.35.0 @@ -6468,9 +6642,9 @@ snapshots: through@2.3.8: {} - tinybench@2.6.0: {} + tinybench@2.8.0: {} - tinypool@0.8.2: {} + tinypool@0.8.4: {} tinyspy@2.2.1: {} @@ -6488,9 +6662,9 @@ snapshots: tree-kill@1.2.2: {} - ts-api-utils@1.3.0(typescript@5.4.2): + ts-api-utils@1.3.0(typescript@5.4.5): dependencies: - typescript: 5.4.2 + typescript: 5.4.5 ts-interface-checker@0.1.13: {} @@ -6503,9 +6677,9 @@ snapshots: tslib@2.6.2: {} - tsup@8.0.2(postcss@8.4.35)(typescript@5.4.2): + tsup@8.0.2(typescript@5.4.5): dependencies: - bundle-require: 4.0.2(esbuild@0.19.12) + bundle-require: 4.1.0(esbuild@0.19.12) cac: 6.7.14 chokidar: 3.6.0 debug: 4.3.4 @@ -6513,23 +6687,21 @@ snapshots: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.2(postcss@8.4.35) + postcss-load-config: 4.0.2(postcss@8.4.38) resolve-from: 5.0.0 - rollup: 4.13.0 + rollup: 4.17.2 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 - optionalDependencies: - postcss: 8.4.35 - typescript: 5.4.2 + typescript: 5.4.5 transitivePeerDependencies: - supports-color - ts-node - tsx@4.7.1: + tsx@4.9.5: dependencies: - esbuild: 0.19.12 - get-tsconfig: 4.7.3 + esbuild: 0.20.2 + get-tsconfig: 4.7.5 optionalDependencies: fsevents: 2.3.3 @@ -6566,7 +6738,7 @@ snapshots: has-proto: 1.0.3 is-typed-array: 1.1.13 - typed-array-length@1.0.5: + typed-array-length@1.0.6: dependencies: call-bind: 1.0.7 for-each: 0.3.3 @@ -6575,9 +6747,9 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - typescript@5.4.2: {} + typescript@5.4.5: {} - ufo@1.5.1: {} + ufo@1.5.3: {} unbox-primitive@1.0.2: dependencies: @@ -6590,7 +6762,7 @@ snapshots: unicorn-magic@0.1.0: {} - update-browserslist-db@1.0.13(browserslist@4.23.0): + update-browserslist-db@1.0.15(browserslist@4.23.0): dependencies: browserslist: 4.23.0 escalade: 3.1.2 @@ -6600,30 +6772,28 @@ snapshots: dependencies: punycode: 2.3.1 - use-callback-ref@1.3.2(@types/react@18.2.66)(react@18.2.0): + use-callback-ref@1.3.2(@types/react@18.3.2)(react@18.3.1): dependencies: - react: 18.2.0 + '@types/react': 18.3.2 + react: 18.3.1 tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.66 - use-sidecar@1.1.2(@types/react@18.2.66)(react@18.2.0): + use-sidecar@1.1.2(@types/react@18.3.2)(react@18.3.1): dependencies: + '@types/react': 18.3.2 detect-node-es: 1.1.0 - react: 18.2.0 + react: 18.3.1 tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.66 util-deprecate@1.0.2: {} - vite-node@1.4.0(@types/node@20.11.28): + vite-node@1.6.0(@types/node@20.12.11): dependencies: cac: 6.7.14 debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.1.6(@types/node@20.11.28) + vite: 5.2.11(@types/node@20.12.11) transitivePeerDependencies: - '@types/node' - less @@ -6634,39 +6804,38 @@ snapshots: - supports-color - terser - vite@5.1.6(@types/node@20.11.28): + vite@5.2.11(@types/node@20.12.11): dependencies: - esbuild: 0.19.12 - postcss: 8.4.35 - rollup: 4.13.0 + '@types/node': 20.12.11 + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.17.2 optionalDependencies: - '@types/node': 20.11.28 fsevents: 2.3.3 - vitest@1.4.0(@types/node@20.11.28): + vitest@1.6.0(@types/node@20.12.11): dependencies: - '@vitest/expect': 1.4.0 - '@vitest/runner': 1.4.0 - '@vitest/snapshot': 1.4.0 - '@vitest/spy': 1.4.0 - '@vitest/utils': 1.4.0 + '@types/node': 20.12.11 + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 acorn-walk: 8.3.2 chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 local-pkg: 0.5.0 - magic-string: 0.30.8 + magic-string: 0.30.10 pathe: 1.1.2 picocolors: 1.0.0 std-env: 3.7.0 - strip-literal: 2.0.0 - tinybench: 2.6.0 - tinypool: 0.8.2 - vite: 5.1.6(@types/node@20.11.28) - vite-node: 1.4.0(@types/node@20.11.28) + strip-literal: 2.1.0 + tinybench: 2.8.0 + tinypool: 0.8.4 + vite: 5.2.11(@types/node@20.12.11) + vite-node: 1.6.0(@types/node@20.12.11) why-is-node-running: 2.2.2 - optionalDependencies: - '@types/node': 20.11.28 transitivePeerDependencies: - less - lightningcss @@ -6735,6 +6904,8 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + word-wrap@1.2.5: {} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -6759,9 +6930,7 @@ snapshots: y18n@5.0.8: {} - yallist@4.0.0: {} - - yaml@2.4.1: {} + yaml@2.4.2: {} yargs-parser@21.1.1: {} diff --git a/src/www/src/configs/nav-links.json b/src/www/src/configs/nav-links.json index 399234e..f9234f7 100644 --- a/src/www/src/configs/nav-links.json +++ b/src/www/src/configs/nav-links.json @@ -31,18 +31,6 @@ "label": "Arrays", "url": "/docs/functions/arrays", "methods": [ - { - "label": "chunk", - "url": "/docs/functions/arrays/chunk" - }, - { - "label": "compact", - "url": "/docs/functions/arrays/compact" - }, - { - "label": "insert", - "url": "/docs/functions/arrays/insert" - }, { "label": "partition", "url": "/docs/functions/arrays/partition" @@ -74,6 +62,18 @@ { "label": "zip", "url": "/docs/functions/arrays/zip" + }, + { + "label": "chunk", + "url": "/docs/functions/arrays/chunk" + }, + { + "label": "compact", + "url": "/docs/functions/arrays/compact" + }, + { + "label": "insert", + "url": "/docs/functions/arrays/insert" } ] }, @@ -81,6 +81,18 @@ "label": "Functional", "url": "/docs/functions/functional", "methods": [ + { + "label": "callAfter", + "url": "/docs/functions/functional/callAfter" + }, + { + "label": "callBefore", + "url": "/docs/functions/functional/callBefore" + }, + { + "label": "count", + "url": "/docs/functions/functional/count" + }, { "label": "nTimes", "url": "/docs/functions/functional/nTimes" @@ -100,14 +112,6 @@ { "label": "timeout", "url": "/docs/functions/functional/timeout" - }, - { - "label": "callAfter", - "url": "/docs/functions/functional/callAfter" - }, - { - "label": "callBefore", - "url": "/docs/functions/functional/callBefore" } ] }, diff --git a/src/www/src/configs/prev-next-button-links.json b/src/www/src/configs/prev-next-button-links.json index fabac6c..adb5787 100644 --- a/src/www/src/configs/prev-next-button-links.json +++ b/src/www/src/configs/prev-next-button-links.json @@ -23,18 +23,6 @@ "label": "Functions", "url": "/docs/functions" }, - { - "label": "chunk", - "url": "/docs/functions/arrays/chunk" - }, - { - "label": "compact", - "url": "/docs/functions/arrays/compact" - }, - { - "label": "insert", - "url": "/docs/functions/arrays/insert" - }, { "label": "partition", "url": "/docs/functions/arrays/partition" @@ -67,6 +55,30 @@ "label": "zip", "url": "/docs/functions/arrays/zip" }, + { + "label": "chunk", + "url": "/docs/functions/arrays/chunk" + }, + { + "label": "compact", + "url": "/docs/functions/arrays/compact" + }, + { + "label": "insert", + "url": "/docs/functions/arrays/insert" + }, + { + "label": "callAfter", + "url": "/docs/functions/functional/callAfter" + }, + { + "label": "callBefore", + "url": "/docs/functions/functional/callBefore" + }, + { + "label": "count", + "url": "/docs/functions/functional/count" + }, { "label": "nTimes", "url": "/docs/functions/functional/nTimes" @@ -87,14 +99,6 @@ "label": "timeout", "url": "/docs/functions/functional/timeout" }, - { - "label": "callAfter", - "url": "/docs/functions/functional/callAfter" - }, - { - "label": "callBefore", - "url": "/docs/functions/functional/callBefore" - }, { "label": "and", "url": "/docs/functions/gates/and" diff --git a/src/www/src/configs/registry.json b/src/www/src/configs/registry.json index e6855ed..77c8119 100644 --- a/src/www/src/configs/registry.json +++ b/src/www/src/configs/registry.json @@ -1,952 +1,834 @@ [ { - "name": "chunk", + "name": "partition", "code": { - "ts": "/**\r\n * Splits an array into chunks of a specified size.\r\n *\r\n * @template T - The type of elements in the array.\r\n * @param {T[]} array - The array to be chunked.\r\n * @param {number} [size=1] - The size of each chunk.\r\n * @param {boolean} [strict=false] - Whether to remove the last chunk if it is not equal to the size.\r\n * @returns {T[][]} - An array of chunks.\r\n */\r\nconst chunk = (\r\n array: T[],\r\n size: number = 1,\r\n strict: boolean = false\r\n //remove the last chunk if it is not equal to the size\r\n): T[][] => {\r\n const result: T[][] = [];\r\n\r\n //push the chunks into the result array\r\n for (let i = 0; i < array.length; i += size) {\r\n result.push(array.slice(i, i + size));\r\n }\r\n\r\n //remove the last chunk if it is not equal to the size\r\n if (strict && result[result.length - 1].length !== size) {\r\n result.pop();\r\n }\r\n return result;\r\n};\r\n\r\nexport default chunk;\r\n", - "js": "/**\n * Splits an array into chunks of a specified size.\n *\n * @template T - The type of elements in the array.\n * @param {T[]} array - The array to be chunked.\n * @param {number} [size=1] - The size of each chunk.\n * @param {boolean} [strict=false] - Whether to remove the last chunk if it is not equal to the size.\n * @returns {T[][]} - An array of chunks.\n */\nconst chunk = (array, size = 1, strict = false\n//remove the last chunk if it is not equal to the size\n) => {\n const result = [];\n //push the chunks into the result array\n for (let i = 0; i < array.length; i += size) {\n result.push(array.slice(i, i + size));\n }\n //remove the last chunk if it is not equal to the size\n if (strict && result[result.length - 1].length !== size) {\n result.pop();\n }\n return result;\n};\nexport default chunk;\n" + "ts": "/**\r\n * Partitions an array into two separate arrays based on a given predicate.\r\n *\r\n * @template T - The type of elements in the array.\r\n * @param {T[]} arr - The array to be partitioned.\r\n * @param {(value: T, index: number, array: T[]) => boolean} predicate - The predicate function used to determine the partition.\r\n * @returns {[T[], T[]]} - An array containing two arrays: the first array contains elements that satisfy the predicate, and the second array contains elements that do not satisfy the predicate.\r\n */\r\nconst partition = (\r\n arr: T[],\r\n predicate: (value: T, i: number, arr: T[]) => boolean\r\n): [T[], T[]] => {\r\n const pass: T[] = [];\r\n const fail: T[] = [];\r\n arr.forEach((...args) => {\r\n // run the predicate function on each element in the array\r\n // and push the element to the appropriate array\r\n (predicate(...args) ? pass : fail).push(args[0]);\r\n });\r\n return [pass, fail];\r\n};\r\n\r\nexport default partition;\r\n", + "js": "/**\n * Partitions an array into two separate arrays based on a given predicate.\n *\n * @template T - The type of elements in the array.\n * @param {T[]} arr - The array to be partitioned.\n * @param {(value: T, index: number, array: T[]) => boolean} predicate - The predicate function used to determine the partition.\n * @returns {[T[], T[]]} - An array containing two arrays: the first array contains elements that satisfy the predicate, and the second array contains elements that do not satisfy the predicate.\n */\nconst partition = (arr, predicate) => {\n const pass = [];\n const fail = [];\n arr.forEach((...args) => {\n // run the predicate function on each element in the array\n // and push the element to the appropriate array\n (predicate(...args) ? pass : fail).push(args[0]);\n });\n return [pass, fail];\n};\nexport default partition;\n" }, "category": "arrays", "type": "functions", "examples": [ { - "ts": "import chunk from \".\";\r\n\r\nconst arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\r\n\r\n// No size provided, default size is 1\r\nconsole.log(chunk(arr));\r\n// Expected output: [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]];\r\n\r\n// Providing size as 2\r\nconsole.log(chunk(arr, 2));\r\n// Expected output: [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ], [ 9, 10 ] ]\r\n\r\n// Providing size as 3 and strict as true\r\nconsole.log(chunk(arr, 3, true));\r\n// Expected output: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]\r\n\r\n// Providing size as 4 and strict as true\r\nconsole.log(chunk(arr, 4, true));\r\n// Expected output: [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ] ]\r\n", - "js": "import chunk from \".\";\nconst arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\n// No size provided, default size is 1\nconsole.log(chunk(arr));\n// Expected output: [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]];\n// Providing size as 2\nconsole.log(chunk(arr, 2));\n// Expected output: [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ], [ 9, 10 ] ]\n// Providing size as 3 and strict as true\nconsole.log(chunk(arr, 3, true));\n// Expected output: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]\n// Providing size as 4 and strict as true\nconsole.log(chunk(arr, 4, true));\n// Expected output: [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ] ]\n" + "ts": "import partition from \".\";\r\n\r\nconst arr = [1, 2, 3, 4, 5];\r\npartition(arr, (value) => value % 2 === 0);\r\n// Expected: [[2, 4], [1, 3, 5]]\r\n", + "js": "import partition from \".\";\nconst arr = [1, 2, 3, 4, 5];\npartition(arr, (value) => value % 2 === 0);\n// Expected: [[2, 4], [1, 3, 5]]\n" } ], "docs": { "metaData": { - "desc": "Chunks an array into smaller arrays of a specified size." + "desc": "Partitions an array into two arrays based on a given callback ie predicate." }, - "md": "\r\nThe `chunk` function is a utility function in JavaScript that takes an\r\narray and divides it into smaller sub-arrays, or "chunks", each with a\r\nmaximum length equal to a specified size. This function is particularly\r\nuseful when you need to process a large array in smaller, more\r\nmanageable pieces.\r\n\r\nThe function accepts three parameters: the original `array` to be chunked,\r\nthe `size` of each chunk, and a `boolean` value indicating whether the\r\nfunction should strictly adhere to the chunk size. If the "strict"\r\nparameter is set to true, and the last chunk does not meet the specified\r\nsize, it will be removed from the final result.\r\n" + "md": "\r\nThe `partition` function takes an array and a predicate function as parameters and returns a tuple of two arrays. The first array contains all elements of the original array for which the predicate function returns `true`, and the second array contains all elements for which the predicate function returns `false`.\r\n\r\nThe predicate function is a callback function that you provide, which is called for each element in the array. It receives three arguments: the current element, its index, and the original array. The predicate function should return a `boolean` value.\r\n\r\nThe partition function creates two empty arrays, `pass` and `fail`, and then iterates over the original array using the forEach method. For each element, it calls the predicate function and pushes the element to the pass array if the predicate returns true, and to the fail array if the predicate returns false.\r\n\r\nFinally, the partition function returns a tuple containing the pass and fail arrays. This function does not modify the original array." }, "props": [ { "title": "array", "required": true, - "propDesc": "The array to process.", + "propDesc": "The array from which to partition elements.", "type": "array" }, { - "title": "size", - "required": false, - "defaultValue": "1", - "propDesc": "The length of each chunk.", - "type": "number" - }, - { - "title": "strict", - "required": false, - "defaultValue": "false", - "propDesc": "If true, the last chunk will be truncated if it does not fit exactly.", - "type": "boolean" + "title": "predicate", + "required": true, + "propDesc": "The function used to determine the partition. It should return a boolean value.", + "type": "function" } ], "createdAt": { - "date": "2024-04-17T13:28:44.014Z", + "date": "2024-04-26T12:13:16.372Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:15.884Z", + "date": "2024-05-12T07:30:07.695Z", "packageVersion": "1.0.2" } }, { - "name": "nTimes", + "name": "remove", "code": { - "ts": "/**\r\n * Executes a given function `n` times and returns an array of the results.\r\n *\r\n * @template T - The type of the result returned by the function.\r\n * @param {Function} fn - The function to be executed `n` times.\r\n * @param {number} [n=1] - The number of times the function should be executed. Defaults to 1.\r\n * @returns {T[]} - An array of the results returned by the function.\r\n * @throws {Error} - If `n` is less than 0.\r\n */\r\nconst nTimes = (fn: (i: number) => T, n: number = 1): T[] => {\r\n if (n < 0) {\r\n throw new Error(\"n must be greater than 0\");\r\n }\r\n let result: T[] = [];\r\n for (let i = 0; i < n; i++) {\r\n result.push(fn(i));\r\n }\r\n return result;\r\n};\r\n\r\nexport default nTimes;\r\n", - "js": "/**\n * Executes a given function `n` times and returns an array of the results.\n *\n * @template T - The type of the result returned by the function.\n * @param {Function} fn - The function to be executed `n` times.\n * @param {number} [n=1] - The number of times the function should be executed. Defaults to 1.\n * @returns {T[]} - An array of the results returned by the function.\n * @throws {Error} - If `n` is less than 0.\n */\nconst nTimes = (fn, n = 1) => {\n if (n < 0) {\n throw new Error(\"n must be greater than 0\");\n }\n let result = [];\n for (let i = 0; i < n; i++) {\n result.push(fn(i));\n }\n return result;\n};\nexport default nTimes;\n" + "ts": "/**\r\n * Removes element(s) from an array based on the given index(es).\r\n *\r\n * @template T - The type of elements in the array.\r\n * @param {T[]} array - The array from which elements will be removed.\r\n * @param {number | number[]} index - The index(es) of the element(s) to be removed.\r\n * @returns {T[]} - A new array with the specified element(s) removed.\r\n */\r\nconst remove = (array: T[], index: number | number[]): T[] => {\r\n const len = array.length;\r\n if (Array.isArray(index)) {\r\n // convert negative indices to their positive counterparts\r\n const indices = index.map((i) => (i < 0 ? len + i : i));\r\n return array.filter((_, i) => !indices.includes(i));\r\n }\r\n index = index < 0 ? len + index : index;\r\n return array.filter((_, i) => i !== index);\r\n};\r\n\r\nexport default remove;\r\n", + "js": "/**\n * Removes element(s) from an array based on the given index(es).\n *\n * @template T - The type of elements in the array.\n * @param {T[]} array - The array from which elements will be removed.\n * @param {number | number[]} index - The index(es) of the element(s) to be removed.\n * @returns {T[]} - A new array with the specified element(s) removed.\n */\nconst remove = (array, index) => {\n const len = array.length;\n if (Array.isArray(index)) {\n // convert negative indices to their positive counterparts\n const indices = index.map((i) => (i < 0 ? len + i : i));\n return array.filter((_, i) => !indices.includes(i));\n }\n index = index < 0 ? len + index : index;\n return array.filter((_, i) => i !== index);\n};\nexport default remove;\n" }, - "category": "functional", + "category": "arrays", "type": "functions", "examples": [ { - "ts": "import nTimes from \".\";\r\n\r\nconst result = nTimes(() => \"result\", 3);\r\n// Expected: [\"result\", \"result\", \"result\"]\r\n\r\n// You can also use the index of the iteration.\r\nconst result2 = nTimes((i) => i, 3);\r\n// Expected: [0, 1, 2]\r\n", - "js": "import nTimes from \".\";\nconst result = nTimes(() => \"result\", 3);\n// Expected: [\"result\", \"result\", \"result\"]\n// You can also use the index of the iteration.\nconst result2 = nTimes((i) => i, 3);\n// Expected: [0, 1, 2]\n" + "ts": "import remove from \".\";\r\n\r\n// for a index\r\nremove([1, 2, 3, 4, 5], 2);\r\n// Expected Output: [1, 2, 4, 5]\r\n\r\n// for array of indices\r\nremove([1, 2, 3, 4, 5], [1, 3]);\r\n// Expected Output: [1, 3, 5]\r\n\r\n// for negative index\r\nremove([1, 2, 3, 4, 5], -2);\r\n// Expected Output: [1, 2, 3, 5]\r\n\r\n// for mixed indices\r\nremove([1, 2, 3, 4, 5], [1, -3]);\r\n// Expected Output: [1, 4, 5]\r\n", + "js": "import remove from \".\";\n// for a index\nremove([1, 2, 3, 4, 5], 2);\n// Expected Output: [1, 2, 4, 5]\n// for array of indices\nremove([1, 2, 3, 4, 5], [1, 3]);\n// Expected Output: [1, 3, 5]\n// for negative index\nremove([1, 2, 3, 4, 5], -2);\n// Expected Output: [1, 2, 3, 5]\n// for mixed indices\nremove([1, 2, 3, 4, 5], [1, -3]);\n// Expected Output: [1, 4, 5]\n" } ], "docs": { "metaData": { - "desc": "Calls a function n times and returns an array of the results." + "desc": "Removes elements from an array at a specified index." }, - "md": "\r\nThe `nTimes` function calls a function `n` times and returns an array of the results. The function is called with the index of the iteration as the first argument.\r\n" + "md": "\r\nThe remove function is a generic function in TypeScript that is designed to remove elements from an array at a specified index. The function takes two parameters: an array arr of type T[], an index or array of indices of type number.\r\n\r\nIt returns a new array with the elements removed at the specified index without modifying the original array. If the index is negative, the index is treated as an index from the end of the array.\r\n" }, "props": [ { - "title": "function", + "title": "array", "required": true, - "propDesc": "The function called `n` times. The function receives the current iteration index as an argument.", - "type": "Function" - }, - { - "title": "n", - "required": false, - "defaultValue": "1", - "propDesc": "The number of times to call the function.", - "type": "number" - } - ], - "createdAt": { - "date": "2024-04-27T16:24:24.979Z", - "packageVersion": "0.1.0" - }, - "lastUpdated": { - "date": "2024-04-28T05:29:15.932Z", - "packageVersion": "1.0.2" - } - }, - { - "name": "once", - "code": { - "ts": "/**\r\n * Creates a function that can only be called once. Subsequent calls to the function will return undefined.\r\n *\r\n * @param fn - The function to be called once.\r\n * @returns A new function that can only be called once.\r\n */\r\nconst once = (\r\n fn: (...args: S) => T\r\n): ((...args: S) => T | undefined) => {\r\n let isCalled = false;\r\n return (...args: S): T | undefined => {\r\n if (!isCalled) {\r\n isCalled = true;\r\n return fn(...args);\r\n }\r\n return undefined;\r\n };\r\n};\r\n\r\nexport default once;\r\n", - "js": "/**\n * Creates a function that can only be called once. Subsequent calls to the function will return undefined.\n *\n * @param fn - The function to be called once.\n * @returns A new function that can only be called once.\n */\nconst once = (fn) => {\n let isCalled = false;\n return (...args) => {\n if (!isCalled) {\n isCalled = true;\n return fn(...args);\n }\n return undefined;\n };\n};\nexport default once;\n" - }, - "category": "functional", - "type": "functions", - "examples": [ - { - "ts": "import once from \".\";\r\n\r\nconst subscribe = once(() => {\r\n console.log(\"Subscribed\");\r\n});\r\n\r\nconst result = subscribe();\r\n// Expected Output: Subscribed\r\n\r\nconst result2 = subscribe();\r\n// Expected Output: undefined : as the function has been called once already.\r\n", - "js": "import once from \".\";\nconst subscribe = once(() => {\n console.log(\"Subscribed\");\n});\nconst result = subscribe();\n// Expected Output: Subscribed\nconst result2 = subscribe();\n// Expected Output: undefined : as the function has been called once already.\n" - } - ], - "docs": { - "metaData": { - "desc": "Returns a new function that can be called only once." + "propDesc": "The array to process.", + "type": "array" }, - "md": "\r\nThe `once` function is used to create a new function that can be called only once. After the first call, the function will always return undefined without executing the original function.\r\n\r\nThis is useful when you want to ensure that a function is called only once, regardless of how many times it is called. For example, a subscribe button on a website should only be clicked once, and the function should not be executed again if the button is clicked multiple times.\r\n" - }, - "props": [ { - "title": "function", + "title": "index(s)", "required": true, - "propDesc": "The function to be called", - "type": "Function" + "propDesc": "The index(es) of the array to be removed.", + "type": "number | number[]" } ], "createdAt": { - "date": "2024-04-28T01:41:39.718Z", + "date": "2024-04-26T11:24:18.446Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:15.944Z", + "date": "2024-05-12T07:30:07.714Z", "packageVersion": "1.0.2" } }, { - "name": "retry", + "name": "rotate", "code": { - "ts": "/**\r\n * Retries the given function a specified number of times with a delay between each retry.\r\n * @param fn The function to retry.\r\n * @param retries The number of times to retry the function. Default is 3.\r\n * @param delay The delay in milliseconds between each retry. Default is 1000ms (1 second).\r\n * @returns A Promise that resolves to the result of the function if it succeeds, or rejects with the last error if all retries fail.\r\n */\r\nconst retry = async (\r\n fn: Function,\r\n retries: number = 3,\r\n delay: number = 1000\r\n): Promise => {\r\n try {\r\n return await fn();\r\n } catch (error) {\r\n if (retries > 0) {\r\n await new Promise((resolve) => setTimeout(resolve, delay));\r\n return retry(fn, retries - 1, delay);\r\n }\r\n throw error;\r\n }\r\n};\r\n\r\nexport default retry;\r\n", - "js": "/**\n * Retries the given function a specified number of times with a delay between each retry.\n * @param fn The function to retry.\n * @param retries The number of times to retry the function. Default is 3.\n * @param delay The delay in milliseconds between each retry. Default is 1000ms (1 second).\n * @returns A Promise that resolves to the result of the function if it succeeds, or rejects with the last error if all retries fail.\n */\nconst retry = async (fn, retries = 3, delay = 1000) => {\n try {\n return await fn();\n }\n catch (error) {\n if (retries > 0) {\n await new Promise((resolve) => setTimeout(resolve, delay));\n return retry(fn, retries - 1, delay);\n }\n throw error;\n }\n};\nexport default retry;\n" + "ts": "/**\r\n * Rotates an array in the specified direction by a given number of positions.\r\n *\r\n * @param arr - The array to rotate.\r\n * @param n - The number of positions to rotate the array by.\r\n * @param dir - The direction in which to rotate the array. Defaults to \"left\".\r\n * @returns The rotated array.\r\n * @template T - The type of elements in the array.\r\n */\r\nconst rotate = (\r\n arr: T[],\r\n n: number,\r\n dir: \"left\" | \"right\" = \"left\"\r\n): T[] => {\r\n if (dir === \"left\") {\r\n return arr.slice(n, arr.length).concat(arr.slice(0, n));\r\n } else {\r\n return arr\r\n .slice(arr.length - n, arr.length)\r\n .concat(arr.slice(0, arr.length - n));\r\n }\r\n};\r\n\r\nexport default rotate;\r\n", + "js": "/**\n * Rotates an array in the specified direction by a given number of positions.\n *\n * @param arr - The array to rotate.\n * @param n - The number of positions to rotate the array by.\n * @param dir - The direction in which to rotate the array. Defaults to \"left\".\n * @returns The rotated array.\n * @template T - The type of elements in the array.\n */\nconst rotate = (arr, n, dir = \"left\") => {\n if (dir === \"left\") {\n return arr.slice(n, arr.length).concat(arr.slice(0, n));\n }\n else {\n return arr\n .slice(arr.length - n, arr.length)\n .concat(arr.slice(0, arr.length - n));\n }\n};\nexport default rotate;\n" }, - "category": "functional", + "category": "arrays", "type": "functions", "examples": [ { - "ts": "import retry from \".\";\r\n\r\nconst fn = async () => {\r\n throw new Error(\"failed\");\r\n};\r\n\r\nretry(fn, 2, 1000).catch((error) => {\r\n console.log(error.message);\r\n});\r\n// Expected output: \"failed\" after retrying twice but It will call the function 3 times.\r\n", - "js": "import retry from \".\";\nconst fn = async () => {\n throw new Error(\"failed\");\n};\nretry(fn, 2, 1000).catch((error) => {\n console.log(error.message);\n});\n// Expected output: \"failed\" after retrying twice but It will call the function 3 times.\n" + "ts": "import rotate from \".\";\r\n\r\nconst arr = [1, 2, 3, 4, 5];\r\nrotate(arr, 2);\r\n// Expected Output: [3, 4, 5, 1, 2]\r\n\r\nrotate(arr, 2, \"right\");\r\n// Expected Output: [4, 5, 1, 2, 3]\r\n", + "js": "import rotate from \".\";\nconst arr = [1, 2, 3, 4, 5];\nrotate(arr, 2);\n// Expected Output: [3, 4, 5, 1, 2]\nrotate(arr, 2, \"right\");\n// Expected Output: [4, 5, 1, 2, 3]\n" } ], "docs": { "metaData": { - "desc": "Retries the given function a specified number of times with a delay between each retry." + "desc": "Rotates the elements of an array by a given number of positions." }, - "md": "\r\nThe retry function retries the given function a specified number of\r\ntimes with a delay between each retry. If the function succeeds within\r\nthe specified number of retries, the Promise will resolve with the\r\nresult of the function. If the function fails on all retries, the\r\nPromise will be rejected with the last error. The retry function is\r\ndesigned to handle both synchronous and asynchronous functions, as it\r\nwraps the call to fn with Promise.resolve. This ensures that fn is\r\nalways treated as a Promise, allowing the use of .then and .catch to\r\nhandle the result or any errors.\r\n\r\nThe function retries the given function a specified number of times. The\r\ntotal number of times a function is called is retries + 1.\r\n" + "md": "\r\nThe `rotate` function takes an array and a number as arguments, and returns a new array that is a rotated version of the original array. The rotation is performed by shifting the elements of the array to the left by the number of positions specified by the second argument." }, "props": [ { - "title": "function", + "title": "array", "required": true, - "propDesc": "The function to retry.", - "type": "Function" + "propDesc": "The array to rotate.", + "type": "array" }, { - "title": "retries", - "required": false, - "defaultValue": "3", - "propDesc": "The number of times to retry the function.", + "title": "position", + "required": true, + "propDesc": "The number of positions to rotate the array by.", "type": "number" }, { - "title": "delay", + "title": "direction", "required": false, - "defaultValue": "1000", - "propDesc": "The delay in milliseconds between each retry.", - "type": "number" + "defaultValue": "left", + "propDesc": "The direction in which to rotate the array.", + "type": "enum", + "enums": [ + "left", + "right" + ] } ], "createdAt": { - "date": "2024-04-17T13:28:44.122Z", + "date": "2024-04-26T11:46:19.176Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:15.957Z", + "date": "2024-05-12T07:30:07.723Z", "packageVersion": "1.0.2" } }, { - "name": "sleep", + "name": "sampleArr", "code": { - "ts": "/**\r\n * Pauses the execution for the specified number of milliseconds.\r\n * @param ms - The number of milliseconds to sleep.\r\n * @returns A promise that resolves after the specified number of milliseconds.\r\n */\r\nconst sleep = (ms: number): Promise => {\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(true);\r\n }, ms);\r\n });\r\n};\r\n\r\nexport default sleep;\r\n", - "js": "/**\n * Pauses the execution for the specified number of milliseconds.\n * @param ms - The number of milliseconds to sleep.\n * @returns A promise that resolves after the specified number of milliseconds.\n */\nconst sleep = (ms) => {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(true);\n }, ms);\n });\n};\nexport default sleep;\n" + "ts": "/**\r\n * Generates an array of random numbers.\r\n *\r\n * @param size - The size of the array to generate.\r\n * @returns An array of random numbers.\r\n * @throws {Error} If the size is a negative number.\r\n */\r\nconst sampleArr = (size: number) => {\r\n if (size < 0) throw new Error(\"Size must be a positive number\");\r\n return Array.from({ length: size }, (_, i) => Math.floor(Math.random() * i));\r\n};\r\n\r\nexport default sampleArr;\r\n", + "js": "/**\n * Generates an array of random numbers.\n *\n * @param size - The size of the array to generate.\n * @returns An array of random numbers.\n * @throws {Error} If the size is a negative number.\n */\nconst sampleArr = (size) => {\n if (size < 0)\n throw new Error(\"Size must be a positive number\");\n return Array.from({ length: size }, (_, i) => Math.floor(Math.random() * i));\n};\nexport default sampleArr;\n" }, - "category": "functional", + "category": "arrays", "type": "functions", "examples": [ { - "ts": "import sleep from \".\";\r\n\r\n//iife\r\n(async () => {\r\n console.log(\"sleeping for 1 second\");\r\n await sleep(1000);\r\n console.log(\"done sleeping\"); // This will be printed after 1 second\r\n})();\r\n", - "js": "import sleep from \".\";\n//iife\n(async () => {\n console.log(\"sleeping for 1 second\");\n await sleep(1000);\n console.log(\"done sleeping\"); // This will be printed after 1 second\n})();\n" + "ts": "import sampleArr from \".\";\r\n\r\nconst arr = sampleArr(5);\r\nconsole.log(arr);\r\n// Expected output: an array of 5 random numbers\r\n\r\n// const negativeArr = sampleArr(-1);\r\n// Expected output: Throws an error\r\n", + "js": "import sampleArr from \".\";\nconst arr = sampleArr(5);\nconsole.log(arr);\n// Expected output: an array of 5 random numbers\n// const negativeArr = sampleArr(-1);\n// Expected output: Throws an error\n" } ], "docs": { "metaData": { - "desc": "Sleeps the execution for the specified number of milliseconds." + "desc": "Generates an array of random numbers." }, - "md": "\r\nThe sleep function sleeps the execution for the specified number of\r\nmilliseconds.\r\n\r\nIt utilizes the setTimeout and Promise APIs to pause the execution for\r\nthe specified number of milliseconds.\r\n" + "md": "\r\nThis sampleArr function is a utility function in JavaScript that takes a\r\nsize parameter and generates an array of random numbers. The size\r\nparameter specifies the length of the array to generate. The function\r\nuses the Math.random() method to generate random numbers between 0 and\r\nthe specified size. The function returns an array of random numbers with\r\nthe specified length.\r\n\r\nThe function throws an error if the size parameter is a negative number.\r\n" }, "props": [ { - "title": "ms", + "title": "size", "required": true, - "propDesc": "The number of milliseconds to sleep.", + "propDesc": "The size of the array to generate, must be a positive number.", "type": "number" } ], "createdAt": { - "date": "2024-04-17T13:28:44.145Z", + "date": "2024-04-17T13:28:44.080Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:15.972Z", + "date": "2024-05-12T07:30:07.735Z", "packageVersion": "1.0.2" } }, { - "name": "timeout", + "name": "search", "code": { - "ts": "/**\r\n * Wraps a function with a timeout.\r\n * If the function does not complete within the specified time, the promise will be rejected.\r\n *\r\n * @template Return - The return type of the wrapped function.\r\n * @template Err - The error type that can be thrown by the wrapped function or the error callback.\r\n * @param {(...args: any[]) => Return} fn - The function to be wrapped.\r\n * @param {number} time - The timeout duration in milliseconds.\r\n * @param {(...args: any[]) => Err} [errCb] - Optional error callback function to handle timeout errors.\r\n * @returns {(...args: any[]) => Promise} - A wrapped function that returns a promise.\r\n */\r\nconst timeout = (\r\n fn: (...args: any[]) => Return,\r\n time: number,\r\n errCb?: (...args: any[]) => Err\r\n): ((...args: any[]) => Promise) => {\r\n return (...args: any[]) => {\r\n return new Promise((resolve, reject) => {\r\n const timer = setTimeout(() => {\r\n if (errCb) reject(errCb(...args));\r\n else {\r\n reject(new Error(\"Function timed out\"));\r\n }\r\n }, time);\r\n\r\n // Wrap fn call in Promise.resolve to handle both sync and async functions\r\n Promise.resolve(fn(...args))\r\n .then((result: Return) => {\r\n clearTimeout(timer);\r\n resolve(result);\r\n })\r\n .catch((err: Err) => {\r\n clearTimeout(timer);\r\n reject(err);\r\n });\r\n });\r\n };\r\n};\r\n\r\nexport default timeout;\r\n", - "js": "/**\n * Wraps a function with a timeout.\n * If the function does not complete within the specified time, the promise will be rejected.\n *\n * @template Return - The return type of the wrapped function.\n * @template Err - The error type that can be thrown by the wrapped function or the error callback.\n * @param {(...args: any[]) => Return} fn - The function to be wrapped.\n * @param {number} time - The timeout duration in milliseconds.\n * @param {(...args: any[]) => Err} [errCb] - Optional error callback function to handle timeout errors.\n * @returns {(...args: any[]) => Promise} - A wrapped function that returns a promise.\n */\nconst timeout = (fn, time, errCb) => {\n return (...args) => {\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n if (errCb)\n reject(errCb(...args));\n else {\n reject(new Error(\"Function timed out\"));\n }\n }, time);\n // Wrap fn call in Promise.resolve to handle both sync and async functions\n Promise.resolve(fn(...args))\n .then((result) => {\n clearTimeout(timer);\n resolve(result);\n })\n .catch((err) => {\n clearTimeout(timer);\n reject(err);\n });\n });\n };\n};\nexport default timeout;\n" + "ts": "/**\r\n * Searches an array of objects based on a query string and specified keys.\r\n *\r\n * @template T - The type of objects in the array.\r\n * @param {T[]} array - The array of objects to search.\r\n * @param {string} queryString - The query string to search for.\r\n * @param {(keyof T)[] | string[]} keys - The keys to search within each object.\r\n * @returns {T[]} - The filtered array of objects that match the search criteria.\r\n */\r\nconst search = >(\r\n array: T[],\r\n queryString: string,\r\n keys: (keyof T)[] | string[]\r\n): T[] => {\r\n // Check if the query string or keys are empty, return empty array if true\r\n try {\r\n if (keys.length === 0) {\r\n return []; // Return empty array if no keys are provided\r\n }\r\n\r\n if (!queryString.trim()) {\r\n return array; // Return the original array if the query string is empty\r\n }\r\n\r\n // Loop through the array to filter objects\r\n const filteredArray = array.filter((obj) => {\r\n // Loop through the keys of each object\r\n for (let key of keys) {\r\n // Convert the value to string only for the comparison\r\n\r\n let value = obj[key] as any;\r\n\r\n if (typeof value !== \"string\" && typeof value !== \"number\") {\r\n continue; // Skip the key if it is not a string or number\r\n }\r\n if (typeof value === \"number\") {\r\n value = value.toString();\r\n }\r\n value = value.toLowerCase();\r\n if (value.includes(queryString.toLowerCase()?.trim())) {\r\n return true;\r\n }\r\n }\r\n // Return false if none of the keys contain the query string\r\n return false;\r\n });\r\n\r\n // Return the filtered array\r\n return filteredArray;\r\n } catch (error) {\r\n return [];\r\n }\r\n};\r\n\r\nexport default search;\r\n", + "js": "/**\n * Searches an array of objects based on a query string and specified keys.\n *\n * @template T - The type of objects in the array.\n * @param {T[]} array - The array of objects to search.\n * @param {string} queryString - The query string to search for.\n * @param {(keyof T)[] | string[]} keys - The keys to search within each object.\n * @returns {T[]} - The filtered array of objects that match the search criteria.\n */\nconst search = (array, queryString, keys) => {\n // Check if the query string or keys are empty, return empty array if true\n try {\n if (keys.length === 0) {\n return []; // Return empty array if no keys are provided\n }\n if (!queryString.trim()) {\n return array; // Return the original array if the query string is empty\n }\n // Loop through the array to filter objects\n const filteredArray = array.filter((obj) => {\n // Loop through the keys of each object\n for (let key of keys) {\n // Convert the value to string only for the comparison\n let value = obj[key];\n if (typeof value !== \"string\" && typeof value !== \"number\") {\n continue; // Skip the key if it is not a string or number\n }\n if (typeof value === \"number\") {\n value = value.toString();\n }\n value = value.toLowerCase();\n if (value.includes(queryString.toLowerCase()?.trim())) {\n return true;\n }\n }\n // Return false if none of the keys contain the query string\n return false;\n });\n // Return the filtered array\n return filteredArray;\n }\n catch (error) {\n return [];\n }\n};\nexport default search;\n" }, - "category": "functional", + "category": "arrays", "type": "functions", "examples": [ { - "ts": "import timeout from \".\";\r\n\r\ntimeout(() => \"Hello, World!\", 1000);\r\n// Expected Output: \"Hello, World!\"\r\n\r\ntimeout(() => new Promise((resolve) => setTimeout(resolve, 2000)), 1000);\r\n// Expected Output: Error: Function timed out\r\n\r\ntimeout(\r\n () => new Promise((resolve) => setTimeout(resolve, 2000)),\r\n 1000,\r\n () => console.log(\"I failed\")\r\n);\r\n// Expected Output: I failed\r\n", - "js": "import timeout from \".\";\ntimeout(() => \"Hello, World!\", 1000);\n// Expected Output: \"Hello, World!\"\ntimeout(() => new Promise((resolve) => setTimeout(resolve, 2000)), 1000);\n// Expected Output: Error: Function timed out\ntimeout(() => new Promise((resolve) => setTimeout(resolve, 2000)), 1000, () => console.log(\"I failed\"));\n// Expected Output: I failed\n" + "ts": "import search from \".\";\r\n\r\nconst array = [\r\n { name: \"John\", age: 25 },\r\n { name: \"Jane\", age: 30 },\r\n { name: \"John Doe\", age: 35 },\r\n];\r\n\r\n// No keys provided\r\nconsole.log(search(array, \"John\", []));\r\n// Expected output: []\r\n\r\n// Query string is empty\r\nconsole.log(search(array, \"\", [\"name\"]));\r\n// Expected output: [ { name: 'John', age: 25 }, { name: 'Jane', age: 30 }, { name: 'John Doe', age: 35 } ]\r\n\r\n// Filtered array of objects matching the query\r\nconsole.log(search(array, \"John\", [\"name\"]));\r\n// Expected output: [ { name: 'John', age: 25 }, { name: 'John Doe', age: 35 } ]\r\n\r\n// None of the keys contain the query string\r\nconsole.log(search(array, \"Doe\", [\"name\"]));\r\n// Expected output: []\r\n\r\n// Keys does not exist in the object\r\nconsole.log(search(array, \"John\", [\"email\"]));\r\n// Expected output: []\r\n", + "js": "import search from \".\";\nconst array = [\n { name: \"John\", age: 25 },\n { name: \"Jane\", age: 30 },\n { name: \"John Doe\", age: 35 },\n];\n// No keys provided\nconsole.log(search(array, \"John\", []));\n// Expected output: []\n// Query string is empty\nconsole.log(search(array, \"\", [\"name\"]));\n// Expected output: [ { name: 'John', age: 25 }, { name: 'Jane', age: 30 }, { name: 'John Doe', age: 35 } ]\n// Filtered array of objects matching the query\nconsole.log(search(array, \"John\", [\"name\"]));\n// Expected output: [ { name: 'John', age: 25 }, { name: 'John Doe', age: 35 } ]\n// None of the keys contain the query string\nconsole.log(search(array, \"Doe\", [\"name\"]));\n// Expected output: []\n// Keys does not exist in the object\nconsole.log(search(array, \"John\", [\"email\"]));\n// Expected output: []\n" } ], "docs": { "metaData": { - "desc": "The timeout function wraps a function with a timeout. If the function does not complete within the specified time, the promise will be rejected." + "desc": "Search objects in an array based on provided keys and query string. It only works with string and number values." }, - "md": "\r\nThe timeout function is a higher-order function that takes a function\r\nfn, a timeout duration time, and an optional error callback errCb as\r\narguments. It returns a new function that, when called, returns a\r\nPromise. This Promise will resolve with the result of the fn function if\r\nfn completes within the specified time. If fn does not complete within\r\nthe time, the Promise will be rejected. If an errCb function is\r\nprovided, it will be called with the arguments passed to the wrapped\r\nfunction, and the Promise will be rejected with the result of errCb. If\r\nno errCb is provided, the Promise will be rejected with a new Error\r\nstating 'Function timed out'. The timeout function is designed\r\nto handle both synchronous and asynchronous functions, as it wraps the\r\ncall to fn with Promise.resolve. This ensures that fn is always treated\r\nas a Promise, allowing the use of .then and .catch to handle the result\r\nor any errors.\r\n" + "md": "\r\nThe search function is a utility function in JavaScript that performs a\r\nsearch operation on an array of objects based on a provided query string\r\nand keys. This function is particularly useful when you need to filter\r\nan array of objects based on certain criteria.\r\n\r\nThe function accepts three parameters: the original array to be\r\nsearched, the query string, and an array of keys. The array should\r\nconsist of objects, the query string is the value to be searched for,\r\nand the keys are the properties of the objects to be searched.\r\n\r\nThe function iterates over each object in the array, and for each\r\nobject, it checks if any of the specified keys contain the query string.\r\nIf a match is found, the object is included in the returned array. If no\r\nkeys are provided, the function returns an empty array. If the query\r\nstring is empty, the function returns the original array. This allows\r\nfor flexible and powerful search functionality within your JavaScript\r\napplications.\r\n" }, "props": [ { - "title": "function", + "title": "array", "required": true, - "propDesc": "The function to be wrapped with a timeout.", - "type": "Function" + "propDesc": "The array of objects to process.", + "type": "object[]" }, { - "title": "time", + "title": "queryString", "required": true, - "propDesc": "The timeout duration in milliseconds.", - "type": "number" + "propDesc": "The query string to search for.", + "type": "string" }, { - "title": "errCb", - "required": false, - "propDesc": "Optional error callback function to handle timeout errors. If not provided, the promise will be rejected with an error message.", - "type": "Function" + "title": "keys", + "required": true, + "propDesc": "Keys of the object to search within.", + "type": "string[]" } ], "createdAt": { - "date": "2024-04-17T13:28:44.158Z", + "date": "2024-04-17T13:28:44.096Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:15.986Z", + "date": "2024-05-12T07:30:07.806Z", "packageVersion": "1.0.2" } }, { - "name": "and", + "name": "shuffleArr", "code": { - "ts": "/**\r\n * Performs a logical AND operation on the given boolean values.\r\n * Returns true if all arguments are true, otherwise returns false.\r\n *\r\n * @param args - The boolean values to perform the AND operation on.\r\n * @returns The result of the logical AND operation.\r\n */\r\nconst and = (...args: any[]) => {\r\n if (args.length === 0) return false;\r\n return args.every((arg) => Boolean(arg));\r\n};\r\n\r\nexport default and;\r\n", - "js": "/**\n * Performs a logical AND operation on the given boolean values.\n * Returns true if all arguments are true, otherwise returns false.\n *\n * @param args - The boolean values to perform the AND operation on.\n * @returns The result of the logical AND operation.\n */\nconst and = (...args) => {\n if (args.length === 0)\n return false;\n return args.every((arg) => Boolean(arg));\n};\nexport default and;\n" + "ts": "const shuffleArr = (arr: T[]) => {\r\n const copy = [...arr];\r\n for (let i = copy.length - 1; i > 0; i--) {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [copy[i], copy[j]] = [copy[j], copy[i]];\r\n }\r\n \r\n return copy;\r\n};\r\n\r\nexport default shuffleArr;\r\n", + "js": "const shuffleArr = (arr) => {\n const copy = [...arr];\n for (let i = copy.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [copy[i], copy[j]] = [copy[j], copy[i]];\n }\n return copy;\n};\nexport default shuffleArr;\n" }, - "category": "gates", + "category": "arrays", "type": "functions", "examples": [ { - "ts": "import and from \".\";\r\n\r\nconsole.log(and(true, true));\r\n// Expected Output: true\r\n\r\nconsole.log(and(true, false));\r\n// Expected Output: false\r\n\r\nconsole.log(and());\r\n// Expected Output: true\r\n\r\nconsole.log(and(1, \"lazykit\"));\r\n// Expected Output: true\r\n", - "js": "import and from \".\";\nconsole.log(and(true, true));\n// Expected Output: true\nconsole.log(and(true, false));\n// Expected Output: false\nconsole.log(and());\n// Expected Output: true\nconsole.log(and(1, \"lazykit\"));\n// Expected Output: true\n" + "ts": "import shuffleArr from \".\";\r\n\r\nconst arr = [1, 2, 3, 4, 5];\r\nconst shuffledArr = shuffleArr(arr);\r\nconsole.log(shuffledArr);\r\n// Expected output: shuffled array of given array\r\n", + "js": "import shuffleArr from \".\";\nconst arr = [1, 2, 3, 4, 5];\nconst shuffledArr = shuffleArr(arr);\nconsole.log(shuffledArr);\n// Expected output: shuffled array of given array\n" } ], "docs": { "metaData": { - "desc": "Performs a logical AND operation on the given arguments." + "desc": "Shuffles the elements of an array." }, - "md": "\r\nThe and function is a utility function in TypeScript that performs a\r\nlogical AND operation on the given arguments.\r\n" + "md": "\r\nThe shuffleArr function is a utility function in JavaScript that takes\r\nan array and shuffles it. The function uses the Fisher-Yates algorithm\r\nto shuffle the array. The Fisher-Yates algorithm is an efficient\r\nalgorithm for generating a random permutation of a finite sequence. The\r\nfunction returns a new array with the elements of the original array\r\nshuffled.\r\n\r\nThe shuffleArr function does not modify the original array, it returns a\r\nnew array with the elements shuffled.\r\n" }, "props": [ { - "title": "args", + "title": "arr", "required": true, - "propDesc": "The arguments to perform the AND operation on.", + "propDesc": "The array to shuffle.", "type": "any[]" } ], "createdAt": { - "date": "2024-04-17T13:28:44.163Z", + "date": "2024-04-17T13:28:44.107Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:15.993Z", + "date": "2024-05-12T07:30:07.814Z", "packageVersion": "1.0.2" } }, { - "name": "nand", + "name": "unique", "code": { - "ts": "/**\r\n * Performs a NAND (NOT AND) operation on the given arguments.\r\n * Returns `false` if no arguments are provided or if all arguments are truthy.\r\n * Returns `true` if any argument is falsy.\r\n *\r\n * @param args - The arguments to perform the NAND operation on.\r\n * @returns The result of the NAND operation.\r\n */\r\nconst nand = (...args: any[]) => {\r\n if (args.length === 0) return false;\r\n const and = args.every((arg) => Boolean(arg));\r\n return !and;\r\n};\r\n\r\nexport default nand;\r\n", - "js": "/**\n * Performs a NAND (NOT AND) operation on the given arguments.\n * Returns `false` if no arguments are provided or if all arguments are truthy.\n * Returns `true` if any argument is falsy.\n *\n * @param args - The arguments to perform the NAND operation on.\n * @returns The result of the NAND operation.\n */\nconst nand = (...args) => {\n if (args.length === 0)\n return false;\n const and = args.every((arg) => Boolean(arg));\n return !and;\n};\nexport default nand;\n" + "ts": "/**\r\n * Returns an array with unique elements from the input array.\r\n *\r\n * @template T - The type of elements in the array.\r\n * @param {T[]} arr - The input array.\r\n * @returns {T[]} - An array with unique elements.\r\n */\r\nconst unique = (arr: T[]): T[] => {\r\n //@ts-ignore\r\n return [...new Set(arr)];\r\n};\r\n\r\nexport default unique;\r\n", + "js": "/**\n * Returns an array with unique elements from the input array.\n *\n * @template T - The type of elements in the array.\n * @param {T[]} arr - The input array.\n * @returns {T[]} - An array with unique elements.\n */\nconst unique = (arr) => {\n //@ts-ignore\n return [...new Set(arr)];\n};\nexport default unique;\n" }, - "category": "gates", + "category": "arrays", "type": "functions", "examples": [ { - "ts": "import nand from \".\";\r\n\r\nconsole.log(nand(true, true));\r\n// Expected Output: false\r\n\r\nconsole.log(nand(true, false));\r\n// Expected Output: true\r\n\r\nconsole.log(nand());\r\n// Expected Output: false\r\n\r\nconsole.log(nand(1, \"lazykit\"));\r\n// Expected Output: false\r\n", - "js": "import nand from \".\";\nconsole.log(nand(true, true));\n// Expected Output: false\nconsole.log(nand(true, false));\n// Expected Output: true\nconsole.log(nand());\n// Expected Output: false\nconsole.log(nand(1, \"lazykit\"));\n// Expected Output: false\n" + "ts": "import unique from \".\";\r\n\r\nconst arr = [1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10];\r\nconst result = unique(arr);\r\nconsole.log(result);\r\n// Expected Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\r\n", + "js": "import unique from \".\";\nconst arr = [1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10];\nconst result = unique(arr);\nconsole.log(result);\n// Expected Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n" } ], "docs": { "metaData": { - "desc": "Performs a logical NAND operation on the given arguments." + "desc": "Creates a unique array from the input array." }, - "md": "\r\nThe and function is a utility function in TypeScript that performs a\r\nlogical NAND operation on the given arguments.\r\n" + "md": "\r\nThe unique function is a utility function in JavaScript that takes an\r\narray and returns a new array with all duplicate values removed. The\r\nfunction uses set to remove duplicate values from the array.\r\n" }, "props": [ { - "title": "args", + "title": "arr", "required": true, - "propDesc": "The arguments to perform the NAND operation on.", + "propDesc": "The array to process", "type": "any[]" } ], "createdAt": { - "date": "2024-04-17T13:28:44.170Z", + "date": "2024-04-17T13:28:44.112Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.000Z", + "date": "2024-05-12T07:30:07.820Z", "packageVersion": "1.0.2" } }, { - "name": "nor", + "name": "zip", "code": { - "ts": "/**\r\n * Performs a logical NOR operation on the given arguments.\r\n * Returns true if none of the arguments are truthy, otherwise returns false.\r\n *\r\n * @param args - The arguments to perform the NOR operation on.\r\n * @returns The result of the NOR operation.\r\n */\r\nconst nor = (...args: any[]) => {\r\n if (args.length === 0) return false;\r\n const or = args.some((arg) => Boolean(arg));\r\n return !or;\r\n};\r\n\r\nexport default nor;\r\n", - "js": "/**\n * Performs a logical NOR operation on the given arguments.\n * Returns true if none of the arguments are truthy, otherwise returns false.\n *\n * @param args - The arguments to perform the NOR operation on.\n * @returns The result of the NOR operation.\n */\nconst nor = (...args) => {\n if (args.length === 0)\n return false;\n const or = args.some((arg) => Boolean(arg));\n return !or;\n};\nexport default nor;\n" + "ts": "type Args = {\r\n arr: any[][];\r\n strict?: boolean;\r\n};\r\n\r\n/**\r\n * Zips multiple arrays into a single array of tuples.\r\n *\r\n * @template T - The type of elements in the arrays.\r\n * @param {Args} options - The options for zipping the arrays.\r\n * @param {any[][]} options.arr - The arrays to be zipped.\r\n * @param {boolean} [options.strict=false] - Indicates whether to zip strictly based on the minimum length of the arrays.\r\n * @returns {any[][]} - The zipped array of tuples.\r\n */\r\nconst zip = ({ arr, strict = false }: Args): any[][] => {\r\n const maxIndex = arr.map((a) => a.length).reduce((a, b) => Math.max(a, b), 0);\r\n const minIndex = arr\r\n .map((a) => a.length)\r\n .reduce((a, b) => Math.min(a, b), maxIndex);\r\n\r\n const result: any[][] = [];\r\n\r\n const upto = strict ? minIndex : maxIndex;\r\n\r\n for (let i = 0; i < upto; i++) {\r\n const zip = arr.map((a) => a[i]);\r\n result.push(zip);\r\n }\r\n return result;\r\n};\r\n\r\nexport default zip;\r\n", + "js": "/**\n * Zips multiple arrays into a single array of tuples.\n *\n * @template T - The type of elements in the arrays.\n * @param {Args} options - The options for zipping the arrays.\n * @param {any[][]} options.arr - The arrays to be zipped.\n * @param {boolean} [options.strict=false] - Indicates whether to zip strictly based on the minimum length of the arrays.\n * @returns {any[][]} - The zipped array of tuples.\n */\nconst zip = ({ arr, strict = false }) => {\n const maxIndex = arr.map((a) => a.length).reduce((a, b) => Math.max(a, b), 0);\n const minIndex = arr\n .map((a) => a.length)\n .reduce((a, b) => Math.min(a, b), maxIndex);\n const result = [];\n const upto = strict ? minIndex : maxIndex;\n for (let i = 0; i < upto; i++) {\n const zip = arr.map((a) => a[i]);\n result.push(zip);\n }\n return result;\n};\nexport default zip;\n" }, - "category": "gates", + "category": "arrays", "type": "functions", "examples": [ { - "ts": "import or from \".\";\r\n\r\nconsole.log(or(true, true));\r\n// Expected Output: false\r\n\r\nconsole.log(or(false, true));\r\n// Expected Output: false\r\n\r\nconsole.log(or(false, false));\r\n// Expected Output: true\r\n\r\nconsole.log(or());\r\n// Expected Output: true\r\n\r\nconsole.log(or(1, \"lazykit\"));\r\n// Expected Output: false\r\n", - "js": "import or from \".\";\nconsole.log(or(true, true));\n// Expected Output: false\nconsole.log(or(false, true));\n// Expected Output: false\nconsole.log(or(false, false));\n// Expected Output: true\nconsole.log(or());\n// Expected Output: true\nconsole.log(or(1, \"lazykit\"));\n// Expected Output: false\n" + "ts": "import zip from \".\";\r\n\r\nconst arr = [\r\n [1, 2, 3],\r\n [\"a\", \"b\"],\r\n];\r\n\r\nconst result = zip({ arr });\r\nconsole.log(result);\r\n// Expected output: [[1, \"a\"], [2, \"b\"], [3, undefined]]\r\n\r\n// strict mode\r\nconst resultStrict = zip({ arr, strict: true });\r\nconsole.log(resultStrict);\r\n// Expected output: [[1, \"a\"], [2, \"b\"]]\r\n", + "js": "import zip from \".\";\nconst arr = [\n [1, 2, 3],\n [\"a\", \"b\"],\n];\nconst result = zip({ arr });\nconsole.log(result);\n// Expected output: [[1, \"a\"], [2, \"b\"], [3, undefined]]\n// strict mode\nconst resultStrict = zip({ arr, strict: true });\nconsole.log(resultStrict);\n// Expected output: [[1, \"a\"], [2, \"b\"]]\n" } ], "docs": { "metaData": { - "desc": "Performs a logical NOR operation on the given arguments." + "desc": "Zips arrays together in the form of an array of arrays." }, - "md": "\r\nThe nor function is a utility function in TypeScript that performs a\r\nlogical NOR operation on the given arguments.\r\n" + "md": "\r\nThe `zip` function in the combines multiple arrays into a single array of tuples.\r\n\r\nThe function accepts an `object` as an argument, which has two properties: `arr` (an array of arrays) and `strict` (a boolean). The strict property is optional and defaults to false if not provided.\r\n\r\nIf the strict property is set to true, the function will only zip arrays of the same length. If the strict property is set to false, the function will zip arrays of different lengths by filling in the missing values with `undefined`.\r\n\r\nThis function is useful for combining multiple arrays into a single array of tuples.\r\n" }, "props": [ { - "title": "args", + "title": "arr", "required": true, - "propDesc": "The arguments to perform the NOR operation on.", - "type": "any[]" + "propDesc": "The arrays to be zipped.", + "type": "array[]" + }, + { + "title": "strict", + "required": false, + "defaultValue": "false", + "propDesc": "If true, the zipping will be done strictly based on the minimum length of the arrays.", + "type": "boolean" } ], "createdAt": { - "date": "2024-04-17T13:28:44.176Z", + "date": "2024-04-26T13:18:20.715Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.007Z", + "date": "2024-05-12T07:30:07.836Z", "packageVersion": "1.0.2" } }, { - "name": "or", + "name": "callAfter", "code": { - "ts": "/**\r\n * Performs a logical OR operation on the given arguments.\r\n *\r\n * @param args - The arguments to perform the OR operation on.\r\n * @returns The result of the OR operation.\r\n */\r\nconst or = (...args: any[]) => {\r\n return args.some((arg) => Boolean(arg));\r\n};\r\n\r\nexport default or;\r\n", - "js": "/**\n * Performs a logical OR operation on the given arguments.\n *\n * @param args - The arguments to perform the OR operation on.\n * @returns The result of the OR operation.\n */\nconst or = (...args) => {\n return args.some((arg) => Boolean(arg));\n};\nexport default or;\n" + "ts": "/**\r\n * Creates a function that delays the execution of the provided function until it has been called a specified number of times.\r\n *\r\n * @param fn - The function to be called after a certain number of invocations.\r\n * @param count - The number of times the function needs to be called before it is executed.\r\n * @returns A new function that delays the execution of the provided function until it has been called a specified number of times.\r\n */\r\nconst callAfter = (\r\n fn: (...args: S) => T,\r\n count: number\r\n): ((...args: S) => T | undefined) => {\r\n let counter = 0;\r\n return (...args: S): T | undefined => {\r\n if (counter < count) {\r\n counter++;\r\n return undefined;\r\n }\r\n return fn(...args);\r\n };\r\n};\r\n\r\nexport default callAfter;\r\n", + "js": "/**\n * Creates a function that delays the execution of the provided function until it has been called a specified number of times.\n *\n * @param fn - The function to be called after a certain number of invocations.\n * @param count - The number of times the function needs to be called before it is executed.\n * @returns A new function that delays the execution of the provided function until it has been called a specified number of times.\n */\nconst callAfter = (fn, count) => {\n let counter = 0;\n return (...args) => {\n if (counter < count) {\n counter++;\n return undefined;\n }\n return fn(...args);\n };\n};\nexport default callAfter;\n" }, - "category": "gates", + "category": "functional", "type": "functions", "examples": [ { - "ts": "import or from \".\";\r\n\r\nconsole.log(or(true, true));\r\n// Expected Output: true\r\n\r\nconsole.log(or(false, true));\r\n// Expected Output: true\r\n\r\nconsole.log(or(false, false));\r\n// Expected Output: false\r\n\r\nconsole.log(or());\r\n// Expected Output: false\r\n\r\nconsole.log(or(1, \"lazykit\"));\r\n// Expected Output: true\r\n", - "js": "import or from \".\";\nconsole.log(or(true, true));\n// Expected Output: true\nconsole.log(or(false, true));\n// Expected Output: true\nconsole.log(or(false, false));\n// Expected Output: false\nconsole.log(or());\n// Expected Output: false\nconsole.log(or(1, \"lazykit\"));\n// Expected Output: true\n" + "ts": "import callAfter from \".\";\r\n\r\nconst fn = (x: number) => x + 1;\r\n\r\nconst callAfterFn = callAfter(fn, 2);\r\n\r\nconst result1 = callAfterFn(1);\r\n// Expected Output: undefined\r\n\r\nconst result2 = callAfterFn(2);\r\n// Expected Output: undefined\r\n\r\nconst result3 = callAfterFn(3);\r\n// Expected Output: 4 : as the function `fn` has been called twice already.\r\n", + "js": "import callAfter from \".\";\nconst fn = (x) => x + 1;\nconst callAfterFn = callAfter(fn, 2);\nconst result1 = callAfterFn(1);\n// Expected Output: undefined\nconst result2 = callAfterFn(2);\n// Expected Output: undefined\nconst result3 = callAfterFn(3);\n// Expected Output: 4 : as the function `fn` has been called twice already.\n" } ], "docs": { "metaData": { - "desc": "Performs a logical OR operation on the given arguments." + "desc": "Returns a new function that can be called only after calling a specific number of times." }, - "md": "\r\nThe or function is a utility function in TypeScript that performs a\r\nlogical OR operation on the given arguments.\r\n" + "md": "\r\nThe `callAfter` function is used to create a new function that can be called only after calling a specific number of times. Before the specified number of calls, the function will always return `undefined` without executing the original function.\r\n" }, "props": [ { - "title": "args", + "title": "function", "required": true, - "propDesc": "The arguments to perform the OR operation on.", - "type": "any[]" + "propDesc": "The function to be called", + "type": "Function" + }, + { + "title": "count", + "required": true, + "propDesc": "The number of times the function needs to be called before it is executed", + "type": "number" } ], "createdAt": { - "date": "2024-04-17T13:28:44.181Z", + "date": "2024-04-28T01:32:03.898Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.014Z", + "date": "2024-05-12T07:30:07.847Z", "packageVersion": "1.0.2" } }, { - "name": "compact", + "name": "callBefore", "code": { - "ts": "/**\r\n * Removes falsy values\r\n * Also removes empty objects and arrays if strict is true\r\n *\r\n * @template T - The type of elements in the array.\r\n * @param {T[]} array - The array to compact.\r\n * @param {boolean} [strict=false] - If true, also removes empty objects and arrays.\r\n * @returns {T[]} - The compacted array.\r\n */\r\nconst compact = (array: T[], strict: boolean = false): T[] => {\r\n let truthy = array.filter((item) => {\r\n // remove all falsy values and excluded values\r\n return Boolean(item);\r\n });\r\n\r\n if (strict) {\r\n // remove all empty objects\r\n truthy = truthy.filter((item) => {\r\n if (typeof item === \"object\" && !(item instanceof Array)) {\r\n return Object.keys(item as object).length > 0;\r\n }\r\n return true;\r\n });\r\n // remove all empty arrays\r\n truthy = truthy.filter((item) => {\r\n if (Array.isArray(item)) {\r\n return (item as []).length > 0;\r\n }\r\n return true;\r\n });\r\n }\r\n return truthy;\r\n};\r\n\r\nexport default compact;\r\n", - "js": "/**\n * Removes falsy values\n * Also removes empty objects and arrays if strict is true\n *\n * @template T - The type of elements in the array.\n * @param {T[]} array - The array to compact.\n * @param {boolean} [strict=false] - If true, also removes empty objects and arrays.\n * @returns {T[]} - The compacted array.\n */\nconst compact = (array, strict = false) => {\n let truthy = array.filter((item) => {\n // remove all falsy values and excluded values\n return Boolean(item);\n });\n if (strict) {\n // remove all empty objects\n truthy = truthy.filter((item) => {\n if (typeof item === \"object\" && !(item instanceof Array)) {\n return Object.keys(item).length > 0;\n }\n return true;\n });\n // remove all empty arrays\n truthy = truthy.filter((item) => {\n if (Array.isArray(item)) {\n return item.length > 0;\n }\n return true;\n });\n }\n return truthy;\n};\nexport default compact;\n" + "ts": "/**\r\n * Calls the provided function `fn` only for the first `count` invocations,\r\n * and returns `undefined` for subsequent invocations.\r\n *\r\n * @template T - The return type of the function `fn`.\r\n * @template S - The argument types of the function `fn`.\r\n * @param {(...args: S) => T} fn - The function to be called.\r\n * @param {number} count - The number of times the function `fn` should be called.\r\n * @returns {(...args: S) => T | undefined} - A function that calls `fn` only for the first `count` invocations.\r\n */\r\nconst callBefore = (\r\n fn: (...args: S) => T,\r\n count: number\r\n): ((...args: S) => T | undefined) => {\r\n let counter = 0;\r\n return (...args: S): T | undefined => {\r\n if (counter < count) {\r\n counter++;\r\n return fn(...args);\r\n }\r\n return undefined;\r\n };\r\n};\r\n\r\nexport default callBefore;\r\n", + "js": "/**\n * Calls the provided function `fn` only for the first `count` invocations,\n * and returns `undefined` for subsequent invocations.\n *\n * @template T - The return type of the function `fn`.\n * @template S - The argument types of the function `fn`.\n * @param {(...args: S) => T} fn - The function to be called.\n * @param {number} count - The number of times the function `fn` should be called.\n * @returns {(...args: S) => T | undefined} - A function that calls `fn` only for the first `count` invocations.\n */\nconst callBefore = (fn, count) => {\n let counter = 0;\n return (...args) => {\n if (counter < count) {\n counter++;\n return fn(...args);\n }\n return undefined;\n };\n};\nexport default callBefore;\n" }, - "category": "arrays", + "category": "functional", "type": "functions", "examples": [ { - "ts": "import compact from \".\";\r\n\r\nconst input = [0, false, \"\", null, undefined, NaN, {}, [], 1, \"hello\"];\r\n\r\n// no strict mode\r\nconst result = compact(input);\r\nconsole.log(result);\r\n// Expected output: [{}, [], 1, \"hello\"]\r\n\r\n// strict mode\r\nconst resultStrict = compact(input, true);\r\nconsole.log(resultStrict);\r\n// Expected output: [1, \"hello\"]\r\n", - "js": "import compact from \".\";\nconst input = [0, false, \"\", null, undefined, NaN, {}, [], 1, \"hello\"];\n// no strict mode\nconst result = compact(input);\nconsole.log(result);\n// Expected output: [{}, [], 1, \"hello\"]\n// strict mode\nconst resultStrict = compact(input, true);\nconsole.log(resultStrict);\n// Expected output: [1, \"hello\"]\n" + "ts": "import callBefore from \".\";\r\n\r\nconst fn = (x: number) => x + 1;\r\n\r\nconst callBeforeFn = callBefore(fn, 2);\r\n\r\nconst result1 = callBeforeFn(1);\r\n// Expected Output: 2\r\n\r\nconst result2 = callBeforeFn(2);\r\n// Expected Output: 3\r\n\r\nconst result3 = callBeforeFn(3);\r\n// Expected Output: undefined : as the function `fn` has been called twice already.\r\n", + "js": "import callBefore from \".\";\nconst fn = (x) => x + 1;\nconst callBeforeFn = callBefore(fn, 2);\nconst result1 = callBeforeFn(1);\n// Expected Output: 2\nconst result2 = callBeforeFn(2);\n// Expected Output: 3\nconst result3 = callBeforeFn(3);\n// Expected Output: undefined : as the function `fn` has been called twice already.\n" } ], "docs": { "metaData": { - "desc": "Removes falsy values from an array, If strict is true, also removes empty objects and arrays." + "desc": "Returns a new function that can be called only for specific number of times." }, - "md": "\r\nThe compact function is a utility function in TypeScript that removes\r\n'falsy' values from an array.\r\n\r\nFalsy values in JavaScript are values that are considered false when\r\nencountered in a Boolean context. These include false, 0, ''\r\n(empty string), null, undefined, and NaN.\r\n\r\nThe function takes two parameters: an array of any type (array) and a\r\nboolean (strict). If the strict parameter is set to true, the function\r\nalso removes empty objects and arrays from the array. An empty object is\r\nan object without any properties, and an empty array is an array without\r\nany elements. The function returns a new array that contains only\r\n'truthy' values, and if strict is true, it also doesn't\r\ncontain any empty objects or arrays.\r\n" + "md": "\r\nThe `callBefore` function is used to create a new function that can be called only for a specific number of times. After the specified number of calls, the function will always return `undefined` without executing the original function.\r\n\r\nThis is useful in some scenarios like `rate limiting` or `trial period` where you want to allow a function to be called only for a specific number of times.\r\n" }, "props": [ { - "title": "array", + "title": "function", "required": true, - "propDesc": "The array to process.", - "type": "array" + "propDesc": "The function to be called", + "type": "Function" }, { - "title": "strict", - "required": false, - "defaultValue": "false", - "propDesc": "If true, also removes empty objects and arrays from the array.", - "type": "boolean" + "title": "count", + "required": true, + "propDesc": "The number of times the function can be called.", + "type": "number" } ], "createdAt": { - "date": "2024-04-17T13:28:44.050Z", + "date": "2024-04-28T01:06:22.893Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.035Z", + "date": "2024-05-12T07:30:07.855Z", "packageVersion": "1.0.2" } }, { - "name": "insert", + "name": "count", "code": { - "ts": "/**\r\n * Inserts elements into an array at a specified index.\r\n *\r\n * @template T - The type of elements in the array.\r\n * @param {T[]} arr - The array to insert elements into.\r\n * @param {number} index - The index at which to insert the elements.\r\n * @param {boolean} [recursive=false] - Indicates whether to insert elements recursively. If true, the elements will be inserted at every nth index.\r\n * @param {...T[]} items - The elements to insert into the array.\r\n * @returns {T[]} - The modified array with the inserted elements.\r\n */\r\nconst insert = (\r\n arr: T[],\r\n index: number,\r\n [...items]: T[],\r\n recursive: boolean = false\r\n): T[] => {\r\n const isNegativeIndex = index < 0;\r\n // if index is negative, convert it to positive and reverse the array for easier insertion\r\n if (isNegativeIndex) {\r\n index = Math.abs(index);\r\n arr = arr.reverse();\r\n items = items.reverse();\r\n }\r\n\r\n if (!recursive) {\r\n const newArr = [...arr.slice(0, index), ...items, ...arr.slice(index)];\r\n return isNegativeIndex ? newArr.reverse() : newArr;\r\n } else {\r\n const shouldInsert = Math.floor(arr.length / index);\r\n let newArr = [...arr];\r\n for (let i = 0; i < shouldInsert; i++) {\r\n const insertIndex = (i + 1) * index + i * items.length;\r\n newArr = [\r\n ...newArr.slice(0, insertIndex),\r\n ...items,\r\n ...newArr.slice(insertIndex),\r\n ];\r\n }\r\n return isNegativeIndex ? newArr.reverse() : newArr;\r\n }\r\n};\r\n\r\nexport default insert;\r\n", - "js": "/**\n * Inserts elements into an array at a specified index.\n *\n * @template T - The type of elements in the array.\n * @param {T[]} arr - The array to insert elements into.\n * @param {number} index - The index at which to insert the elements.\n * @param {boolean} [recursive=false] - Indicates whether to insert elements recursively. If true, the elements will be inserted at every nth index.\n * @param {...T[]} items - The elements to insert into the array.\n * @returns {T[]} - The modified array with the inserted elements.\n */\nconst insert = (arr, index, [...items], recursive = false) => {\n const isNegativeIndex = index < 0;\n // if index is negative, convert it to positive and reverse the array for easier insertion\n if (isNegativeIndex) {\n index = Math.abs(index);\n arr = arr.reverse();\n items = items.reverse();\n }\n if (!recursive) {\n const newArr = [...arr.slice(0, index), ...items, ...arr.slice(index)];\n return isNegativeIndex ? newArr.reverse() : newArr;\n }\n else {\n const shouldInsert = Math.floor(arr.length / index);\n let newArr = [...arr];\n for (let i = 0; i < shouldInsert; i++) {\n const insertIndex = (i + 1) * index + i * items.length;\n newArr = [\n ...newArr.slice(0, insertIndex),\n ...items,\n ...newArr.slice(insertIndex),\n ];\n }\n return isNegativeIndex ? newArr.reverse() : newArr;\n }\n};\nexport default insert;\n" + "ts": "/**\r\n * Invokes the function passed with arguments and\r\n * counts how many times the function is executed.\r\n *\r\n * @param {Function} fn - The function to be called.\r\n * @returns - result: the result of the passed function invocation.\r\n * This function also has a getCount method attached.\r\n * @returns {Function} getCount - A method that returns the count of execution of the passed function.\r\n */\r\nconst count = (fn: (...args: A) => R) => {\r\n let callCount = 0;\r\n\r\n const wrapper = (...args: A): R => {\r\n callCount++;\r\n const result = fn(...args);\r\n return result;\r\n };\r\n\r\n const getCount: () => number = () => callCount;\r\n wrapper.getCount = getCount;\r\n\r\n return wrapper;\r\n};\r\n\r\nexport default count;\r\n", + "js": "/**\n * Invokes the function passed with arguments and\n * counts how many times the function is executed.\n *\n * @param {Function} fn - The function to be called.\n * @returns - result: the result of the passed function invocation.\n * This function also has a getCount method attached.\n * @returns {Function} getCount - A method that returns the count of execution of the passed function.\n */\nconst count = (fn) => {\n let callCount = 0;\n const wrapper = (...args) => {\n callCount++;\n const result = fn(...args);\n return result;\n };\n const getCount = () => callCount;\n wrapper.getCount = getCount;\n return wrapper;\n};\nexport default count;\n" }, - "category": "arrays", + "category": "functional", "type": "functions", "examples": [ { - "ts": "import insert from \".\";\r\n\r\nconst arr = [1, 2, 3];\r\nconst index = 1;\r\nconst items = [4, 5];\r\n\r\nconst result = insert(arr, index, items);\r\nconsole.log(result);\r\n// Expected Output: [1, 4, 5, 2, 3]\r\n\r\nconst arr2 = [1, 2, 3, 4, 5];\r\nconst index2 = 2;\r\nconst items2 = [6, 7];\r\n\r\nconst result2 = insert(arr2, index2, items2);\r\nconsole.log(result2);\r\n// Expected Output: [1, 2, 6, 7, 3, 4, 5 ]\r\n\r\n// negative index\r\nconst arr3 = [1, 2, 3];\r\nconst index3 = -1;\r\nconst items3 = [4, 5];\r\n\r\nconst result3 = insert(arr3, index3, items3);\r\nconsole.log(result3);\r\n// Expected Output: [1, 2, 4, 5, 3]\r\n", - "js": "import insert from \".\";\nconst arr = [1, 2, 3];\nconst index = 1;\nconst items = [4, 5];\nconst result = insert(arr, index, items);\nconsole.log(result);\n// Expected Output: [1, 4, 5, 2, 3]\nconst arr2 = [1, 2, 3, 4, 5];\nconst index2 = 2;\nconst items2 = [6, 7];\nconst result2 = insert(arr2, index2, items2);\nconsole.log(result2);\n// Expected Output: [1, 2, 6, 7, 3, 4, 5 ]\n// negative index\nconst arr3 = [1, 2, 3];\nconst index3 = -1;\nconst items3 = [4, 5];\nconst result3 = insert(arr3, index3, items3);\nconsole.log(result3);\n// Expected Output: [1, 2, 4, 5, 3]\n" - }, - { - "ts": "//recursive examples\r\n\r\nimport insert from \".\";\r\n\r\nconst arr = [1, 2, 3];\r\nconst index = 1;\r\nconst items = [4, 5];\r\n\r\nconst result = insert(arr, index, items, true);\r\nconsole.log(result);\r\n// Expected Output: [1, 4, 5, 2, 4, 5, 3, 4, 5]\r\n\r\nconst arr2 = [1, 2, 3, 4, 5];\r\nconst index2 = 2;\r\nconst items2 = [6, 7];\r\n\r\nconst result2 = insert(arr2, index2, items2, true);\r\nconsole.log(result2);\r\n// Expected Output: [1, 2, 6, 7, 3, 4, 6, 7, 5]\r\n\r\n//negative index\r\n\r\nconst arr3 = [1, 2, 3];\r\nconst index3 = -1;\r\nconst items3 = [4, 5];\r\n\r\nconst result3 = insert(arr3, index3, items3, true);\r\nconsole.log(result3);\r\n// Expected Output: [4, 5, 1, 4, 5, 2, 4, 5, 3]\r\n", - "js": "//recursive examples\nimport insert from \".\";\nconst arr = [1, 2, 3];\nconst index = 1;\nconst items = [4, 5];\nconst result = insert(arr, index, items, true);\nconsole.log(result);\n// Expected Output: [1, 4, 5, 2, 4, 5, 3, 4, 5]\nconst arr2 = [1, 2, 3, 4, 5];\nconst index2 = 2;\nconst items2 = [6, 7];\nconst result2 = insert(arr2, index2, items2, true);\nconsole.log(result2);\n// Expected Output: [1, 2, 6, 7, 3, 4, 6, 7, 5]\n//negative index\nconst arr3 = [1, 2, 3];\nconst index3 = -1;\nconst items3 = [4, 5];\nconst result3 = insert(arr3, index3, items3, true);\nconsole.log(result3);\n// Expected Output: [4, 5, 1, 4, 5, 2, 4, 5, 3]\n" + "ts": "import count from \".\";\r\n\r\nconst add = (a: number, b: number) => {\r\n return a + b;\r\n};\r\n\r\nconst countAddFn = count(add);\r\ncountAddFn(1, 2);\r\ncountAddFn(3, 4);\r\n\r\nconsole.log(countAddFn.getCount());\r\n// Expected Output: 2\r\n", + "js": "import count from \".\";\nconst add = (a, b) => {\n return a + b;\n};\nconst countAddFn = count(add);\ncountAddFn(1, 2);\ncountAddFn(3, 4);\nconsole.log(countAddFn.getCount());\n// Expected Output: 2\n" } ], "docs": { "metaData": { - "desc": "Inserts elements into an array at a specified index." + "desc": "returns the result of a function and the number of times that function is invoked." }, - "md": "\r\nThe insert function is a generic function in TypeScript that is designed\r\nto insert elements into an array at a specified index. The function\r\ntakes four parameters: an array arr of type T[], an index of type\r\nnumber, a spread parameter items of type T[], and an optional recursive\r\nparameter of type boolean which defaults to false.\r\n\r\nIt returns a new array with the elements inserted at the specified index\r\nwithout modifying the original array.\r\n\r\nIf the index is negative, the function treats it as an index from the\r\nend of the array. In this case, it converts the index to a positive\r\nnumber and reverses the array and the items to be inserted for easier\r\ninsertion.\r\n\r\nIf the recursive parameter is false, the function simply inserts the\r\nitems at the specified index in the array. If the recursive parameter is\r\ntrue, the function inserts the items at every nth index, where n is the\r\nabsolute value of the provided index. The function calculates the number\r\nof insertions to be made by dividing the length of the array by the\r\nindex.\r\n" + "md": "\r\nThe `count` function invokes another function passed as an `arg` and returns both the `result` of the invoked function and the `count of how many times the function has been called`.\r\n\r\nThis is useful in when you need to keep a tab on how many times a function is being called which can be helpful in monitoring, debugging, testing, analytics, resource management.\r\n" }, "props": [ { - "title": "array", - "required": true, - "propDesc": "The array to process.", - "type": "array" - }, - { - "title": "index", - "required": true, - "propDesc": "The index at which to insert the elements, If negative, the index will start from the end of the array.", - "type": "number" - }, - { - "title": "items", + "title": "function", "required": true, - "propDesc": "The elements to insert into the array.", - "type": "array" - }, - { - "title": "strict", - "required": false, - "defaultValue": "false", - "propDesc": "Indicates whether to insert elements recursively. If true, the elements will be inserted at every nth index.", - "type": "boolean" + "propDesc": "The function calculates count of exceution of func passed. The function receives a function as an argument.", + "type": "Function" } ], "createdAt": { - "date": "2024-04-17T13:28:44.070Z", - "packageVersion": "0.1.0" + "date": "2024-05-08T14:10:18.261Z", + "packageVersion": "1.0.2" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.055Z", + "date": "2024-05-12T07:30:07.866Z", "packageVersion": "1.0.2" } }, { - "name": "partition", + "name": "nTimes", "code": { - "ts": "/**\r\n * Partitions an array into two separate arrays based on a given predicate.\r\n *\r\n * @template T - The type of elements in the array.\r\n * @param {T[]} arr - The array to be partitioned.\r\n * @param {(value: T, index: number, array: T[]) => boolean} predicate - The predicate function used to determine the partition.\r\n * @returns {[T[], T[]]} - An array containing two arrays: the first array contains elements that satisfy the predicate, and the second array contains elements that do not satisfy the predicate.\r\n */\r\nconst partition = (\r\n arr: T[],\r\n predicate: (value: T, i: number, arr: T[]) => boolean\r\n): [T[], T[]] => {\r\n const pass: T[] = [];\r\n const fail: T[] = [];\r\n arr.forEach((...args) => {\r\n // run the predicate function on each element in the array\r\n // and push the element to the appropriate array\r\n (predicate(...args) ? pass : fail).push(args[0]);\r\n });\r\n return [pass, fail];\r\n};\r\n\r\nexport default partition;\r\n", - "js": "/**\n * Partitions an array into two separate arrays based on a given predicate.\n *\n * @template T - The type of elements in the array.\n * @param {T[]} arr - The array to be partitioned.\n * @param {(value: T, index: number, array: T[]) => boolean} predicate - The predicate function used to determine the partition.\n * @returns {[T[], T[]]} - An array containing two arrays: the first array contains elements that satisfy the predicate, and the second array contains elements that do not satisfy the predicate.\n */\nconst partition = (arr, predicate) => {\n const pass = [];\n const fail = [];\n arr.forEach((...args) => {\n // run the predicate function on each element in the array\n // and push the element to the appropriate array\n (predicate(...args) ? pass : fail).push(args[0]);\n });\n return [pass, fail];\n};\nexport default partition;\n" + "ts": "/**\r\n * Executes a given function `n` times and returns an array of the results.\r\n *\r\n * @template T - The type of the result returned by the function.\r\n * @param {Function} fn - The function to be executed `n` times.\r\n * @param {number} [n=1] - The number of times the function should be executed. Defaults to 1.\r\n * @returns {T[]} - An array of the results returned by the function.\r\n * @throws {Error} - If `n` is less than 0.\r\n */\r\nconst nTimes = (fn: (i: number) => T, n: number = 1): T[] => {\r\n if (n < 0) {\r\n throw new Error(\"n must be greater than 0\");\r\n }\r\n let result: T[] = [];\r\n for (let i = 0; i < n; i++) {\r\n result.push(fn(i));\r\n }\r\n return result;\r\n};\r\n\r\nexport default nTimes;\r\n", + "js": "/**\n * Executes a given function `n` times and returns an array of the results.\n *\n * @template T - The type of the result returned by the function.\n * @param {Function} fn - The function to be executed `n` times.\n * @param {number} [n=1] - The number of times the function should be executed. Defaults to 1.\n * @returns {T[]} - An array of the results returned by the function.\n * @throws {Error} - If `n` is less than 0.\n */\nconst nTimes = (fn, n = 1) => {\n if (n < 0) {\n throw new Error(\"n must be greater than 0\");\n }\n let result = [];\n for (let i = 0; i < n; i++) {\n result.push(fn(i));\n }\n return result;\n};\nexport default nTimes;\n" }, - "category": "arrays", + "category": "functional", "type": "functions", "examples": [ { - "ts": "import partition from \".\";\r\n\r\nconst arr = [1, 2, 3, 4, 5];\r\npartition(arr, (value) => value % 2 === 0);\r\n// Expected: [[2, 4], [1, 3, 5]]\r\n", - "js": "import partition from \".\";\nconst arr = [1, 2, 3, 4, 5];\npartition(arr, (value) => value % 2 === 0);\n// Expected: [[2, 4], [1, 3, 5]]\n" + "ts": "import nTimes from \".\";\r\n\r\nconst result = nTimes(() => \"result\", 3);\r\n// Expected: [\"result\", \"result\", \"result\"]\r\n\r\n// You can also use the index of the iteration.\r\nconst result2 = nTimes((i) => i, 3);\r\n// Expected: [0, 1, 2]\r\n", + "js": "import nTimes from \".\";\nconst result = nTimes(() => \"result\", 3);\n// Expected: [\"result\", \"result\", \"result\"]\n// You can also use the index of the iteration.\nconst result2 = nTimes((i) => i, 3);\n// Expected: [0, 1, 2]\n" } ], "docs": { "metaData": { - "desc": "Partitions an array into two arrays based on a given callback ie predicate." + "desc": "Calls a function n times and returns an array of the results." }, - "md": "\r\nThe `partition` function takes an array and a predicate function as parameters and returns a tuple of two arrays. The first array contains all elements of the original array for which the predicate function returns `true`, and the second array contains all elements for which the predicate function returns `false`.\r\n\r\nThe predicate function is a callback function that you provide, which is called for each element in the array. It receives three arguments: the current element, its index, and the original array. The predicate function should return a `boolean` value.\r\n\r\nThe partition function creates two empty arrays, `pass` and `fail`, and then iterates over the original array using the forEach method. For each element, it calls the predicate function and pushes the element to the pass array if the predicate returns true, and to the fail array if the predicate returns false.\r\n\r\nFinally, the partition function returns a tuple containing the pass and fail arrays. This function does not modify the original array." + "md": "\r\nThe `nTimes` function calls a function `n` times and returns an array of the results. The function is called with the index of the iteration as the first argument.\r\n" }, "props": [ { - "title": "array", + "title": "function", "required": true, - "propDesc": "The array from which to partition elements.", - "type": "array" + "propDesc": "The function called `n` times. The function receives the current iteration index as an argument.", + "type": "Function" }, { - "title": "predicate", - "required": true, - "propDesc": "The function used to determine the partition. It should return a boolean value.", - "type": "function" + "title": "n", + "required": false, + "defaultValue": "1", + "propDesc": "The number of times to call the function.", + "type": "number" } ], "createdAt": { - "date": "2024-04-26T12:13:16.372Z", + "date": "2024-04-27T16:24:24.979Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.065Z", + "date": "2024-05-12T07:30:07.874Z", "packageVersion": "1.0.2" } }, { - "name": "remove", + "name": "once", "code": { - "ts": "/**\r\n * Removes element(s) from an array based on the given index(es).\r\n *\r\n * @template T - The type of elements in the array.\r\n * @param {T[]} array - The array from which elements will be removed.\r\n * @param {number | number[]} index - The index(es) of the element(s) to be removed.\r\n * @returns {T[]} - A new array with the specified element(s) removed.\r\n */\r\nconst remove = (array: T[], index: number | number[]): T[] => {\r\n const len = array.length;\r\n if (Array.isArray(index)) {\r\n // convert negative indices to their positive counterparts\r\n const indices = index.map((i) => (i < 0 ? len + i : i));\r\n return array.filter((_, i) => !indices.includes(i));\r\n }\r\n index = index < 0 ? len + index : index;\r\n return array.filter((_, i) => i !== index);\r\n};\r\n\r\nexport default remove;\r\n", - "js": "/**\n * Removes element(s) from an array based on the given index(es).\n *\n * @template T - The type of elements in the array.\n * @param {T[]} array - The array from which elements will be removed.\n * @param {number | number[]} index - The index(es) of the element(s) to be removed.\n * @returns {T[]} - A new array with the specified element(s) removed.\n */\nconst remove = (array, index) => {\n const len = array.length;\n if (Array.isArray(index)) {\n // convert negative indices to their positive counterparts\n const indices = index.map((i) => (i < 0 ? len + i : i));\n return array.filter((_, i) => !indices.includes(i));\n }\n index = index < 0 ? len + index : index;\n return array.filter((_, i) => i !== index);\n};\nexport default remove;\n" + "ts": "/**\r\n * Creates a function that can only be called once. Subsequent calls to the function will return undefined.\r\n *\r\n * @param fn - The function to be called once.\r\n * @returns A new function that can only be called once.\r\n */\r\nconst once = (\r\n fn: (...args: S) => T\r\n): ((...args: S) => T | undefined) => {\r\n let isCalled = false;\r\n return (...args: S): T | undefined => {\r\n if (!isCalled) {\r\n isCalled = true;\r\n return fn(...args);\r\n }\r\n return undefined;\r\n };\r\n};\r\n\r\nexport default once;\r\n", + "js": "/**\n * Creates a function that can only be called once. Subsequent calls to the function will return undefined.\n *\n * @param fn - The function to be called once.\n * @returns A new function that can only be called once.\n */\nconst once = (fn) => {\n let isCalled = false;\n return (...args) => {\n if (!isCalled) {\n isCalled = true;\n return fn(...args);\n }\n return undefined;\n };\n};\nexport default once;\n" }, - "category": "arrays", + "category": "functional", "type": "functions", "examples": [ { - "ts": "import remove from \".\";\r\n\r\n// for a index\r\nremove([1, 2, 3, 4, 5], 2);\r\n// Expected Output: [1, 2, 4, 5]\r\n\r\n// for array of indices\r\nremove([1, 2, 3, 4, 5], [1, 3]);\r\n// Expected Output: [1, 3, 5]\r\n\r\n// for negative index\r\nremove([1, 2, 3, 4, 5], -2);\r\n// Expected Output: [1, 2, 3, 5]\r\n\r\n// for mixed indices\r\nremove([1, 2, 3, 4, 5], [1, -3]);\r\n// Expected Output: [1, 4, 5]\r\n", - "js": "import remove from \".\";\n// for a index\nremove([1, 2, 3, 4, 5], 2);\n// Expected Output: [1, 2, 4, 5]\n// for array of indices\nremove([1, 2, 3, 4, 5], [1, 3]);\n// Expected Output: [1, 3, 5]\n// for negative index\nremove([1, 2, 3, 4, 5], -2);\n// Expected Output: [1, 2, 3, 5]\n// for mixed indices\nremove([1, 2, 3, 4, 5], [1, -3]);\n// Expected Output: [1, 4, 5]\n" + "ts": "import once from \".\";\r\n\r\nconst subscribe = once(() => {\r\n console.log(\"Subscribed\");\r\n});\r\n\r\nconst result = subscribe();\r\n// Expected Output: Subscribed\r\n\r\nconst result2 = subscribe();\r\n// Expected Output: undefined : as the function has been called once already.\r\n", + "js": "import once from \".\";\nconst subscribe = once(() => {\n console.log(\"Subscribed\");\n});\nconst result = subscribe();\n// Expected Output: Subscribed\nconst result2 = subscribe();\n// Expected Output: undefined : as the function has been called once already.\n" } ], "docs": { "metaData": { - "desc": "Removes elements from an array at a specified index." + "desc": "Returns a new function that can be called only once." }, - "md": "\r\nThe remove function is a generic function in TypeScript that is designed to remove elements from an array at a specified index. The function takes two parameters: an array arr of type T[], an index or array of indices of type number.\r\n\r\nIt returns a new array with the elements removed at the specified index without modifying the original array. If the index is negative, the index is treated as an index from the end of the array.\r\n" + "md": "\r\nThe `once` function is used to create a new function that can be called only once. After the first call, the function will always return undefined without executing the original function.\r\n\r\nThis is useful when you want to ensure that a function is called only once, regardless of how many times it is called. For example, a subscribe button on a website should only be clicked once, and the function should not be executed again if the button is clicked multiple times.\r\n" }, "props": [ { - "title": "array", - "required": true, - "propDesc": "The array to process.", - "type": "array" - }, - { - "title": "index(s)", + "title": "function", "required": true, - "propDesc": "The index(es) of the array to be removed.", - "type": "number | number[]" + "propDesc": "The function to be called", + "type": "Function" } ], "createdAt": { - "date": "2024-04-26T11:24:18.446Z", + "date": "2024-04-28T01:41:39.718Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.077Z", + "date": "2024-05-12T07:30:07.887Z", "packageVersion": "1.0.2" } }, { - "name": "rotate", + "name": "retry", "code": { - "ts": "/**\r\n * Rotates an array in the specified direction by a given number of positions.\r\n *\r\n * @param arr - The array to rotate.\r\n * @param n - The number of positions to rotate the array by.\r\n * @param dir - The direction in which to rotate the array. Defaults to \"left\".\r\n * @returns The rotated array.\r\n * @template T - The type of elements in the array.\r\n */\r\nconst rotate = (\r\n arr: T[],\r\n n: number,\r\n dir: \"left\" | \"right\" = \"left\"\r\n): T[] => {\r\n if (dir === \"left\") {\r\n return arr.slice(n, arr.length).concat(arr.slice(0, n));\r\n } else {\r\n return arr\r\n .slice(arr.length - n, arr.length)\r\n .concat(arr.slice(0, arr.length - n));\r\n }\r\n};\r\n\r\nexport default rotate;\r\n", - "js": "/**\n * Rotates an array in the specified direction by a given number of positions.\n *\n * @param arr - The array to rotate.\n * @param n - The number of positions to rotate the array by.\n * @param dir - The direction in which to rotate the array. Defaults to \"left\".\n * @returns The rotated array.\n * @template T - The type of elements in the array.\n */\nconst rotate = (arr, n, dir = \"left\") => {\n if (dir === \"left\") {\n return arr.slice(n, arr.length).concat(arr.slice(0, n));\n }\n else {\n return arr\n .slice(arr.length - n, arr.length)\n .concat(arr.slice(0, arr.length - n));\n }\n};\nexport default rotate;\n" + "ts": "/**\r\n * Retries the given function a specified number of times with a delay between each retry.\r\n * @param fn The function to retry.\r\n * @param retries The number of times to retry the function. Default is 3.\r\n * @param delay The delay in milliseconds between each retry. Default is 1000ms (1 second).\r\n * @returns A Promise that resolves to the result of the function if it succeeds, or rejects with the last error if all retries fail.\r\n */\r\nconst retry = async (\r\n fn: Function,\r\n retries: number = 3,\r\n delay: number = 1000\r\n): Promise => {\r\n try {\r\n return await fn();\r\n } catch (error) {\r\n if (retries > 0) {\r\n await new Promise((resolve) => setTimeout(resolve, delay));\r\n return retry(fn, retries - 1, delay);\r\n }\r\n throw error;\r\n }\r\n};\r\n\r\nexport default retry;\r\n", + "js": "/**\n * Retries the given function a specified number of times with a delay between each retry.\n * @param fn The function to retry.\n * @param retries The number of times to retry the function. Default is 3.\n * @param delay The delay in milliseconds between each retry. Default is 1000ms (1 second).\n * @returns A Promise that resolves to the result of the function if it succeeds, or rejects with the last error if all retries fail.\n */\nconst retry = async (fn, retries = 3, delay = 1000) => {\n try {\n return await fn();\n }\n catch (error) {\n if (retries > 0) {\n await new Promise((resolve) => setTimeout(resolve, delay));\n return retry(fn, retries - 1, delay);\n }\n throw error;\n }\n};\nexport default retry;\n" }, - "category": "arrays", + "category": "functional", "type": "functions", "examples": [ { - "ts": "import rotate from \".\";\r\n\r\nconst arr = [1, 2, 3, 4, 5];\r\nrotate(arr, 2);\r\n// Expected Output: [3, 4, 5, 1, 2]\r\n\r\nrotate(arr, 2, \"right\");\r\n// Expected Output: [4, 5, 1, 2, 3]\r\n", - "js": "import rotate from \".\";\nconst arr = [1, 2, 3, 4, 5];\nrotate(arr, 2);\n// Expected Output: [3, 4, 5, 1, 2]\nrotate(arr, 2, \"right\");\n// Expected Output: [4, 5, 1, 2, 3]\n" + "ts": "import retry from \".\";\r\n\r\nconst fn = async () => {\r\n throw new Error(\"failed\");\r\n};\r\n\r\nretry(fn, 2, 1000).catch((error) => {\r\n console.log(error.message);\r\n});\r\n// Expected output: \"failed\" after retrying twice but It will call the function 3 times.\r\n", + "js": "import retry from \".\";\nconst fn = async () => {\n throw new Error(\"failed\");\n};\nretry(fn, 2, 1000).catch((error) => {\n console.log(error.message);\n});\n// Expected output: \"failed\" after retrying twice but It will call the function 3 times.\n" } ], "docs": { "metaData": { - "desc": "Rotates the elements of an array by a given number of positions." + "desc": "Retries the given function a specified number of times with a delay between each retry." }, - "md": "\r\nThe `rotate` function takes an array and a number as arguments, and returns a new array that is a rotated version of the original array. The rotation is performed by shifting the elements of the array to the left by the number of positions specified by the second argument." + "md": "\r\nThe retry function retries the given function a specified number of\r\ntimes with a delay between each retry. If the function succeeds within\r\nthe specified number of retries, the Promise will resolve with the\r\nresult of the function. If the function fails on all retries, the\r\nPromise will be rejected with the last error. The retry function is\r\ndesigned to handle both synchronous and asynchronous functions, as it\r\nwraps the call to fn with Promise.resolve. This ensures that fn is\r\nalways treated as a Promise, allowing the use of .then and .catch to\r\nhandle the result or any errors.\r\n\r\nThe function retries the given function a specified number of times. The\r\ntotal number of times a function is called is retries + 1.\r\n" }, "props": [ { - "title": "array", + "title": "function", "required": true, - "propDesc": "The array to rotate.", - "type": "array" + "propDesc": "The function to retry.", + "type": "Function" }, { - "title": "position", - "required": true, - "propDesc": "The number of positions to rotate the array by.", + "title": "retries", + "required": false, + "defaultValue": "3", + "propDesc": "The number of times to retry the function.", "type": "number" }, { - "title": "direction", + "title": "delay", "required": false, - "defaultValue": "left", - "propDesc": "The direction in which to rotate the array.", - "type": "enum", - "enums": [ - "left", - "right" - ] + "defaultValue": "1000", + "propDesc": "The delay in milliseconds between each retry.", + "type": "number" } ], "createdAt": { - "date": "2024-04-26T11:46:19.176Z", + "date": "2024-04-17T13:28:44.122Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.084Z", + "date": "2024-05-12T07:30:07.898Z", "packageVersion": "1.0.2" } }, { - "name": "sampleArr", + "name": "sleep", "code": { - "ts": "/**\r\n * Generates an array of random numbers.\r\n *\r\n * @param size - The size of the array to generate.\r\n * @returns An array of random numbers.\r\n * @throws {Error} If the size is a negative number.\r\n */\r\nconst sampleArr = (size: number) => {\r\n if (size < 0) throw new Error(\"Size must be a positive number\");\r\n return Array.from({ length: size }, (_, i) => Math.floor(Math.random() * i));\r\n};\r\n\r\nexport default sampleArr;\r\n", - "js": "/**\n * Generates an array of random numbers.\n *\n * @param size - The size of the array to generate.\n * @returns An array of random numbers.\n * @throws {Error} If the size is a negative number.\n */\nconst sampleArr = (size) => {\n if (size < 0)\n throw new Error(\"Size must be a positive number\");\n return Array.from({ length: size }, (_, i) => Math.floor(Math.random() * i));\n};\nexport default sampleArr;\n" + "ts": "/**\r\n * Pauses the execution for the specified number of milliseconds.\r\n * @param ms - The number of milliseconds to sleep.\r\n * @returns A promise that resolves after the specified number of milliseconds.\r\n */\r\nconst sleep = (ms: number): Promise => {\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve(true);\r\n }, ms);\r\n });\r\n};\r\n\r\nexport default sleep;\r\n", + "js": "/**\n * Pauses the execution for the specified number of milliseconds.\n * @param ms - The number of milliseconds to sleep.\n * @returns A promise that resolves after the specified number of milliseconds.\n */\nconst sleep = (ms) => {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(true);\n }, ms);\n });\n};\nexport default sleep;\n" }, - "category": "arrays", + "category": "functional", "type": "functions", "examples": [ { - "ts": "import sampleArr from \".\";\r\n\r\nconst arr = sampleArr(5);\r\nconsole.log(arr);\r\n// Expected output: an array of 5 random numbers\r\n\r\n// const negativeArr = sampleArr(-1);\r\n// Expected output: Throws an error\r\n", - "js": "import sampleArr from \".\";\nconst arr = sampleArr(5);\nconsole.log(arr);\n// Expected output: an array of 5 random numbers\n// const negativeArr = sampleArr(-1);\n// Expected output: Throws an error\n" + "ts": "import sleep from \".\";\r\n\r\n//iife\r\n(async () => {\r\n console.log(\"sleeping for 1 second\");\r\n await sleep(1000);\r\n console.log(\"done sleeping\"); // This will be printed after 1 second\r\n})();\r\n", + "js": "import sleep from \".\";\n//iife\n(async () => {\n console.log(\"sleeping for 1 second\");\n await sleep(1000);\n console.log(\"done sleeping\"); // This will be printed after 1 second\n})();\n" } ], "docs": { "metaData": { - "desc": "Generates an array of random numbers." + "desc": "Sleeps the execution for the specified number of milliseconds." }, - "md": "\r\nThis sampleArr function is a utility function in JavaScript that takes a\r\nsize parameter and generates an array of random numbers. The size\r\nparameter specifies the length of the array to generate. The function\r\nuses the Math.random() method to generate random numbers between 0 and\r\nthe specified size. The function returns an array of random numbers with\r\nthe specified length.\r\n\r\nThe function throws an error if the size parameter is a negative number.\r\n" + "md": "\r\nThe sleep function sleeps the execution for the specified number of\r\nmilliseconds.\r\n\r\nIt utilizes the setTimeout and Promise APIs to pause the execution for\r\nthe specified number of milliseconds.\r\n" }, "props": [ { - "title": "size", + "title": "ms", "required": true, - "propDesc": "The size of the array to generate, must be a positive number.", + "propDesc": "The number of milliseconds to sleep.", "type": "number" } ], "createdAt": { - "date": "2024-04-17T13:28:44.080Z", + "date": "2024-04-17T13:28:44.145Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.091Z", + "date": "2024-05-12T07:30:07.904Z", "packageVersion": "1.0.2" } }, { - "name": "search", + "name": "timeout", "code": { - "ts": "/**\r\n * Searches an array of objects based on a query string and specified keys.\r\n *\r\n * @template T - The type of objects in the array.\r\n * @param {T[]} array - The array of objects to search.\r\n * @param {string} queryString - The query string to search for.\r\n * @param {(keyof T)[] | string[]} keys - The keys to search within each object.\r\n * @returns {T[]} - The filtered array of objects that match the search criteria.\r\n */\r\nconst search = >(\r\n array: T[],\r\n queryString: string,\r\n keys: (keyof T)[] | string[]\r\n): T[] => {\r\n // Check if the query string or keys are empty, return empty array if true\r\n try {\r\n if (keys.length === 0) {\r\n return []; // Return empty array if no keys are provided\r\n }\r\n\r\n if (!queryString.trim()) {\r\n return array; // Return the original array if the query string is empty\r\n }\r\n\r\n // Loop through the array to filter objects\r\n const filteredArray = array.filter((obj) => {\r\n // Loop through the keys of each object\r\n for (let key of keys) {\r\n // Convert the value to string only for the comparison\r\n\r\n let value = obj[key] as any;\r\n\r\n if (typeof value !== \"string\" && typeof value !== \"number\") {\r\n continue; // Skip the key if it is not a string or number\r\n }\r\n if (typeof value === \"number\") {\r\n value = value.toString();\r\n }\r\n value = value.toLowerCase();\r\n if (value.includes(queryString.toLowerCase()?.trim())) {\r\n return true;\r\n }\r\n }\r\n // Return false if none of the keys contain the query string\r\n return false;\r\n });\r\n\r\n // Return the filtered array\r\n return filteredArray;\r\n } catch (error) {\r\n return [];\r\n }\r\n};\r\n\r\nexport default search;\r\n", - "js": "/**\n * Searches an array of objects based on a query string and specified keys.\n *\n * @template T - The type of objects in the array.\n * @param {T[]} array - The array of objects to search.\n * @param {string} queryString - The query string to search for.\n * @param {(keyof T)[] | string[]} keys - The keys to search within each object.\n * @returns {T[]} - The filtered array of objects that match the search criteria.\n */\nconst search = (array, queryString, keys) => {\n // Check if the query string or keys are empty, return empty array if true\n try {\n if (keys.length === 0) {\n return []; // Return empty array if no keys are provided\n }\n if (!queryString.trim()) {\n return array; // Return the original array if the query string is empty\n }\n // Loop through the array to filter objects\n const filteredArray = array.filter((obj) => {\n // Loop through the keys of each object\n for (let key of keys) {\n // Convert the value to string only for the comparison\n let value = obj[key];\n if (typeof value !== \"string\" && typeof value !== \"number\") {\n continue; // Skip the key if it is not a string or number\n }\n if (typeof value === \"number\") {\n value = value.toString();\n }\n value = value.toLowerCase();\n if (value.includes(queryString.toLowerCase()?.trim())) {\n return true;\n }\n }\n // Return false if none of the keys contain the query string\n return false;\n });\n // Return the filtered array\n return filteredArray;\n }\n catch (error) {\n return [];\n }\n};\nexport default search;\n" + "ts": "/**\r\n * Wraps a function with a timeout.\r\n * If the function does not complete within the specified time, the promise will be rejected.\r\n *\r\n * @template Return - The return type of the wrapped function.\r\n * @template Err - The error type that can be thrown by the wrapped function or the error callback.\r\n * @param {(...args: any[]) => Return} fn - The function to be wrapped.\r\n * @param {number} time - The timeout duration in milliseconds.\r\n * @param {(...args: any[]) => Err} [errCb] - Optional error callback function to handle timeout errors.\r\n * @returns {(...args: any[]) => Promise} - A wrapped function that returns a promise.\r\n */\r\nconst timeout = (\r\n fn: (...args: any[]) => Return,\r\n time: number,\r\n errCb?: (...args: any[]) => Err\r\n): ((...args: any[]) => Promise) => {\r\n return (...args: any[]) => {\r\n return new Promise((resolve, reject) => {\r\n const timer = setTimeout(() => {\r\n if (errCb) reject(errCb(...args));\r\n else {\r\n reject(new Error(\"Function timed out\"));\r\n }\r\n }, time);\r\n\r\n // Wrap fn call in Promise.resolve to handle both sync and async functions\r\n Promise.resolve(fn(...args))\r\n .then((result: Return) => {\r\n clearTimeout(timer);\r\n resolve(result);\r\n })\r\n .catch((err: Err) => {\r\n clearTimeout(timer);\r\n reject(err);\r\n });\r\n });\r\n };\r\n};\r\n\r\nexport default timeout;\r\n", + "js": "/**\n * Wraps a function with a timeout.\n * If the function does not complete within the specified time, the promise will be rejected.\n *\n * @template Return - The return type of the wrapped function.\n * @template Err - The error type that can be thrown by the wrapped function or the error callback.\n * @param {(...args: any[]) => Return} fn - The function to be wrapped.\n * @param {number} time - The timeout duration in milliseconds.\n * @param {(...args: any[]) => Err} [errCb] - Optional error callback function to handle timeout errors.\n * @returns {(...args: any[]) => Promise} - A wrapped function that returns a promise.\n */\nconst timeout = (fn, time, errCb) => {\n return (...args) => {\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n if (errCb)\n reject(errCb(...args));\n else {\n reject(new Error(\"Function timed out\"));\n }\n }, time);\n // Wrap fn call in Promise.resolve to handle both sync and async functions\n Promise.resolve(fn(...args))\n .then((result) => {\n clearTimeout(timer);\n resolve(result);\n })\n .catch((err) => {\n clearTimeout(timer);\n reject(err);\n });\n });\n };\n};\nexport default timeout;\n" }, - "category": "arrays", + "category": "functional", "type": "functions", "examples": [ { - "ts": "import search from \".\";\r\n\r\nconst array = [\r\n { name: \"John\", age: 25 },\r\n { name: \"Jane\", age: 30 },\r\n { name: \"John Doe\", age: 35 },\r\n];\r\n\r\n// No keys provided\r\nconsole.log(search(array, \"John\", []));\r\n// Expected output: []\r\n\r\n// Query string is empty\r\nconsole.log(search(array, \"\", [\"name\"]));\r\n// Expected output: [ { name: 'John', age: 25 }, { name: 'Jane', age: 30 }, { name: 'John Doe', age: 35 } ]\r\n\r\n// Filtered array of objects matching the query\r\nconsole.log(search(array, \"John\", [\"name\"]));\r\n// Expected output: [ { name: 'John', age: 25 }, { name: 'John Doe', age: 35 } ]\r\n\r\n// None of the keys contain the query string\r\nconsole.log(search(array, \"Doe\", [\"name\"]));\r\n// Expected output: []\r\n\r\n// Keys does not exist in the object\r\nconsole.log(search(array, \"John\", [\"email\"]));\r\n// Expected output: []\r\n", - "js": "import search from \".\";\nconst array = [\n { name: \"John\", age: 25 },\n { name: \"Jane\", age: 30 },\n { name: \"John Doe\", age: 35 },\n];\n// No keys provided\nconsole.log(search(array, \"John\", []));\n// Expected output: []\n// Query string is empty\nconsole.log(search(array, \"\", [\"name\"]));\n// Expected output: [ { name: 'John', age: 25 }, { name: 'Jane', age: 30 }, { name: 'John Doe', age: 35 } ]\n// Filtered array of objects matching the query\nconsole.log(search(array, \"John\", [\"name\"]));\n// Expected output: [ { name: 'John', age: 25 }, { name: 'John Doe', age: 35 } ]\n// None of the keys contain the query string\nconsole.log(search(array, \"Doe\", [\"name\"]));\n// Expected output: []\n// Keys does not exist in the object\nconsole.log(search(array, \"John\", [\"email\"]));\n// Expected output: []\n" + "ts": "import timeout from \".\";\r\n\r\ntimeout(() => \"Hello, World!\", 1000);\r\n// Expected Output: \"Hello, World!\"\r\n\r\ntimeout(() => new Promise((resolve) => setTimeout(resolve, 2000)), 1000);\r\n// Expected Output: Error: Function timed out\r\n\r\ntimeout(\r\n () => new Promise((resolve) => setTimeout(resolve, 2000)),\r\n 1000,\r\n () => console.log(\"I failed\")\r\n);\r\n// Expected Output: I failed\r\n", + "js": "import timeout from \".\";\ntimeout(() => \"Hello, World!\", 1000);\n// Expected Output: \"Hello, World!\"\ntimeout(() => new Promise((resolve) => setTimeout(resolve, 2000)), 1000);\n// Expected Output: Error: Function timed out\ntimeout(() => new Promise((resolve) => setTimeout(resolve, 2000)), 1000, () => console.log(\"I failed\"));\n// Expected Output: I failed\n" } ], "docs": { "metaData": { - "desc": "Search objects in an array based on provided keys and query string. It only works with string and number values." + "desc": "The timeout function wraps a function with a timeout. If the function does not complete within the specified time, the promise will be rejected." }, - "md": "\r\nThe search function is a utility function in JavaScript that performs a\r\nsearch operation on an array of objects based on a provided query string\r\nand keys. This function is particularly useful when you need to filter\r\nan array of objects based on certain criteria.\r\n\r\nThe function accepts three parameters: the original array to be\r\nsearched, the query string, and an array of keys. The array should\r\nconsist of objects, the query string is the value to be searched for,\r\nand the keys are the properties of the objects to be searched.\r\n\r\nThe function iterates over each object in the array, and for each\r\nobject, it checks if any of the specified keys contain the query string.\r\nIf a match is found, the object is included in the returned array. If no\r\nkeys are provided, the function returns an empty array. If the query\r\nstring is empty, the function returns the original array. This allows\r\nfor flexible and powerful search functionality within your JavaScript\r\napplications.\r\n" + "md": "\r\nThe timeout function is a higher-order function that takes a function\r\nfn, a timeout duration time, and an optional error callback errCb as\r\narguments. It returns a new function that, when called, returns a\r\nPromise. This Promise will resolve with the result of the fn function if\r\nfn completes within the specified time. If fn does not complete within\r\nthe time, the Promise will be rejected. If an errCb function is\r\nprovided, it will be called with the arguments passed to the wrapped\r\nfunction, and the Promise will be rejected with the result of errCb. If\r\nno errCb is provided, the Promise will be rejected with a new Error\r\nstating 'Function timed out'. The timeout function is designed\r\nto handle both synchronous and asynchronous functions, as it wraps the\r\ncall to fn with Promise.resolve. This ensures that fn is always treated\r\nas a Promise, allowing the use of .then and .catch to handle the result\r\nor any errors.\r\n" }, "props": [ { - "title": "array", - "required": true, - "propDesc": "The array of objects to process.", - "type": "object[]" - }, - { - "title": "queryString", + "title": "function", "required": true, - "propDesc": "The query string to search for.", - "type": "string" + "propDesc": "The function to be wrapped with a timeout.", + "type": "Function" }, { - "title": "keys", + "title": "time", "required": true, - "propDesc": "Keys of the object to search within.", - "type": "string[]" - } - ], - "createdAt": { - "date": "2024-04-17T13:28:44.096Z", - "packageVersion": "0.1.0" - }, - "lastUpdated": { - "date": "2024-04-28T05:29:16.112Z", - "packageVersion": "1.0.2" - } - }, - { - "name": "shuffleArr", - "code": { - "ts": "const shuffleArr = (arr: T[]) => {\r\n const copy = [...arr];\r\n for (let i = copy.length - 1; i > 0; i--) {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [copy[i], copy[j]] = [copy[j], copy[i]];\r\n }\r\n \r\n return copy;\r\n};\r\n\r\nexport default shuffleArr;\r\n", - "js": "const shuffleArr = (arr) => {\n const copy = [...arr];\n for (let i = copy.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [copy[i], copy[j]] = [copy[j], copy[i]];\n }\n return copy;\n};\nexport default shuffleArr;\n" - }, - "category": "arrays", - "type": "functions", - "examples": [ - { - "ts": "import shuffleArr from \".\";\r\n\r\nconst arr = [1, 2, 3, 4, 5];\r\nconst shuffledArr = shuffleArr(arr);\r\nconsole.log(shuffledArr);\r\n// Expected output: shuffled array of given array\r\n", - "js": "import shuffleArr from \".\";\nconst arr = [1, 2, 3, 4, 5];\nconst shuffledArr = shuffleArr(arr);\nconsole.log(shuffledArr);\n// Expected output: shuffled array of given array\n" - } - ], - "docs": { - "metaData": { - "desc": "Shuffles the elements of an array." + "propDesc": "The timeout duration in milliseconds.", + "type": "number" }, - "md": "\r\nThe shuffleArr function is a utility function in JavaScript that takes\r\nan array and shuffles it. The function uses the Fisher-Yates algorithm\r\nto shuffle the array. The Fisher-Yates algorithm is an efficient\r\nalgorithm for generating a random permutation of a finite sequence. The\r\nfunction returns a new array with the elements of the original array\r\nshuffled.\r\n\r\nThe shuffleArr function does not modify the original array, it returns a\r\nnew array with the elements shuffled.\r\n" - }, - "props": [ { - "title": "arr", - "required": true, - "propDesc": "The array to shuffle.", - "type": "any[]" + "title": "errCb", + "required": false, + "propDesc": "Optional error callback function to handle timeout errors. If not provided, the promise will be rejected with an error message.", + "type": "Function" } ], "createdAt": { - "date": "2024-04-17T13:28:44.107Z", + "date": "2024-04-17T13:28:44.158Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.123Z", + "date": "2024-05-12T07:30:07.914Z", "packageVersion": "1.0.2" } }, { - "name": "unique", + "name": "and", "code": { - "ts": "/**\r\n * Returns an array with unique elements from the input array.\r\n *\r\n * @template T - The type of elements in the array.\r\n * @param {T[]} arr - The input array.\r\n * @returns {T[]} - An array with unique elements.\r\n */\r\nconst unique = (arr: T[]): T[] => {\r\n //@ts-ignore\r\n return [...new Set(arr)];\r\n};\r\n\r\nexport default unique;\r\n", - "js": "/**\n * Returns an array with unique elements from the input array.\n *\n * @template T - The type of elements in the array.\n * @param {T[]} arr - The input array.\n * @returns {T[]} - An array with unique elements.\n */\nconst unique = (arr) => {\n //@ts-ignore\n return [...new Set(arr)];\n};\nexport default unique;\n" + "ts": "/**\r\n * Performs a logical AND operation on the given boolean values.\r\n * Returns true if all arguments are true, otherwise returns false.\r\n *\r\n * @param args - The boolean values to perform the AND operation on.\r\n * @returns The result of the logical AND operation.\r\n */\r\nconst and = (...args: any[]) => {\r\n if (args.length === 0) return false;\r\n return args.every((arg) => Boolean(arg));\r\n};\r\n\r\nexport default and;\r\n", + "js": "/**\n * Performs a logical AND operation on the given boolean values.\n * Returns true if all arguments are true, otherwise returns false.\n *\n * @param args - The boolean values to perform the AND operation on.\n * @returns The result of the logical AND operation.\n */\nconst and = (...args) => {\n if (args.length === 0)\n return false;\n return args.every((arg) => Boolean(arg));\n};\nexport default and;\n" }, - "category": "arrays", + "category": "gates", "type": "functions", "examples": [ - { - "ts": "import unique from \".\";\r\n\r\nconst arr = [1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10];\r\nconst result = unique(arr);\r\nconsole.log(result);\r\n// Expected Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\r\n", - "js": "import unique from \".\";\nconst arr = [1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10];\nconst result = unique(arr);\nconsole.log(result);\n// Expected Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n" + { + "ts": "import and from \".\";\r\n\r\nconsole.log(and(true, true));\r\n// Expected Output: true\r\n\r\nconsole.log(and(true, false));\r\n// Expected Output: false\r\n\r\nconsole.log(and());\r\n// Expected Output: true\r\n\r\nconsole.log(and(1, \"lazykit\"));\r\n// Expected Output: true\r\n", + "js": "import and from \".\";\nconsole.log(and(true, true));\n// Expected Output: true\nconsole.log(and(true, false));\n// Expected Output: false\nconsole.log(and());\n// Expected Output: true\nconsole.log(and(1, \"lazykit\"));\n// Expected Output: true\n" } ], "docs": { "metaData": { - "desc": "Creates a unique array from the input array." + "desc": "Performs a logical AND operation on the given arguments." }, - "md": "\r\nThe unique function is a utility function in JavaScript that takes an\r\narray and returns a new array with all duplicate values removed. The\r\nfunction uses set to remove duplicate values from the array.\r\n" + "md": "\r\nThe and function is a utility function in TypeScript that performs a\r\nlogical AND operation on the given arguments.\r\n" }, "props": [ { - "title": "arr", + "title": "args", "required": true, - "propDesc": "The array to process", + "propDesc": "The arguments to perform the AND operation on.", "type": "any[]" } ], "createdAt": { - "date": "2024-04-17T13:28:44.112Z", + "date": "2024-04-17T13:28:44.163Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.128Z", + "date": "2024-05-12T07:30:07.919Z", "packageVersion": "1.0.2" } }, { - "name": "zip", + "name": "nand", "code": { - "ts": "type Args = {\r\n arr: any[][];\r\n strict?: boolean;\r\n};\r\n\r\n/**\r\n * Zips multiple arrays into a single array of tuples.\r\n *\r\n * @template T - The type of elements in the arrays.\r\n * @param {Args} options - The options for zipping the arrays.\r\n * @param {any[][]} options.arr - The arrays to be zipped.\r\n * @param {boolean} [options.strict=false] - Indicates whether to zip strictly based on the minimum length of the arrays.\r\n * @returns {any[][]} - The zipped array of tuples.\r\n */\r\nconst zip = ({ arr, strict = false }: Args): any[][] => {\r\n const maxIndex = arr.map((a) => a.length).reduce((a, b) => Math.max(a, b), 0);\r\n const minIndex = arr\r\n .map((a) => a.length)\r\n .reduce((a, b) => Math.min(a, b), maxIndex);\r\n\r\n const result: any[][] = [];\r\n\r\n const upto = strict ? minIndex : maxIndex;\r\n\r\n for (let i = 0; i < upto; i++) {\r\n const zip = arr.map((a) => a[i]);\r\n result.push(zip);\r\n }\r\n return result;\r\n};\r\n\r\nexport default zip;\r\n", - "js": "/**\n * Zips multiple arrays into a single array of tuples.\n *\n * @template T - The type of elements in the arrays.\n * @param {Args} options - The options for zipping the arrays.\n * @param {any[][]} options.arr - The arrays to be zipped.\n * @param {boolean} [options.strict=false] - Indicates whether to zip strictly based on the minimum length of the arrays.\n * @returns {any[][]} - The zipped array of tuples.\n */\nconst zip = ({ arr, strict = false }) => {\n const maxIndex = arr.map((a) => a.length).reduce((a, b) => Math.max(a, b), 0);\n const minIndex = arr\n .map((a) => a.length)\n .reduce((a, b) => Math.min(a, b), maxIndex);\n const result = [];\n const upto = strict ? minIndex : maxIndex;\n for (let i = 0; i < upto; i++) {\n const zip = arr.map((a) => a[i]);\n result.push(zip);\n }\n return result;\n};\nexport default zip;\n" + "ts": "/**\r\n * Performs a NAND (NOT AND) operation on the given arguments.\r\n * Returns `false` if no arguments are provided or if all arguments are truthy.\r\n * Returns `true` if any argument is falsy.\r\n *\r\n * @param args - The arguments to perform the NAND operation on.\r\n * @returns The result of the NAND operation.\r\n */\r\nconst nand = (...args: any[]) => {\r\n if (args.length === 0) return false;\r\n const and = args.every((arg) => Boolean(arg));\r\n return !and;\r\n};\r\n\r\nexport default nand;\r\n", + "js": "/**\n * Performs a NAND (NOT AND) operation on the given arguments.\n * Returns `false` if no arguments are provided or if all arguments are truthy.\n * Returns `true` if any argument is falsy.\n *\n * @param args - The arguments to perform the NAND operation on.\n * @returns The result of the NAND operation.\n */\nconst nand = (...args) => {\n if (args.length === 0)\n return false;\n const and = args.every((arg) => Boolean(arg));\n return !and;\n};\nexport default nand;\n" }, - "category": "arrays", + "category": "gates", "type": "functions", "examples": [ { - "ts": "import zip from \".\";\r\n\r\nconst arr = [\r\n [1, 2, 3],\r\n [\"a\", \"b\"],\r\n];\r\n\r\nconst result = zip({ arr });\r\nconsole.log(result);\r\n// Expected output: [[1, \"a\"], [2, \"b\"], [3, undefined]]\r\n\r\n// strict mode\r\nconst resultStrict = zip({ arr, strict: true });\r\nconsole.log(resultStrict);\r\n// Expected output: [[1, \"a\"], [2, \"b\"]]\r\n", - "js": "import zip from \".\";\nconst arr = [\n [1, 2, 3],\n [\"a\", \"b\"],\n];\nconst result = zip({ arr });\nconsole.log(result);\n// Expected output: [[1, \"a\"], [2, \"b\"], [3, undefined]]\n// strict mode\nconst resultStrict = zip({ arr, strict: true });\nconsole.log(resultStrict);\n// Expected output: [[1, \"a\"], [2, \"b\"]]\n" + "ts": "import nand from \".\";\r\n\r\nconsole.log(nand(true, true));\r\n// Expected Output: false\r\n\r\nconsole.log(nand(true, false));\r\n// Expected Output: true\r\n\r\nconsole.log(nand());\r\n// Expected Output: false\r\n\r\nconsole.log(nand(1, \"lazykit\"));\r\n// Expected Output: false\r\n", + "js": "import nand from \".\";\nconsole.log(nand(true, true));\n// Expected Output: false\nconsole.log(nand(true, false));\n// Expected Output: true\nconsole.log(nand());\n// Expected Output: false\nconsole.log(nand(1, \"lazykit\"));\n// Expected Output: false\n" } ], "docs": { "metaData": { - "desc": "Zips arrays together in the form of an array of arrays." + "desc": "Performs a logical NAND operation on the given arguments." }, - "md": "\r\nThe `zip` function in the combines multiple arrays into a single array of tuples.\r\n\r\nThe function accepts an `object` as an argument, which has two properties: `arr` (an array of arrays) and `strict` (a boolean). The strict property is optional and defaults to false if not provided.\r\n\r\nIf the strict property is set to true, the function will only zip arrays of the same length. If the strict property is set to false, the function will zip arrays of different lengths by filling in the missing values with `undefined`.\r\n\r\nThis function is useful for combining multiple arrays into a single array of tuples.\r\n" + "md": "\r\nThe and function is a utility function in TypeScript that performs a\r\nlogical NAND operation on the given arguments.\r\n" }, "props": [ { - "title": "arr", + "title": "args", "required": true, - "propDesc": "The arrays to be zipped.", - "type": "array[]" - }, - { - "title": "strict", - "required": false, - "defaultValue": "false", - "propDesc": "If true, the zipping will be done strictly based on the minimum length of the arrays.", - "type": "boolean" + "propDesc": "The arguments to perform the NAND operation on.", + "type": "any[]" } ], "createdAt": { - "date": "2024-04-26T13:18:20.715Z", + "date": "2024-04-17T13:28:44.170Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.138Z", + "date": "2024-05-12T07:30:07.926Z", "packageVersion": "1.0.2" } }, { - "name": "callAfter", + "name": "nor", "code": { - "ts": "/**\r\n * Creates a function that delays the execution of the provided function until it has been called a specified number of times.\r\n *\r\n * @param fn - The function to be called after a certain number of invocations.\r\n * @param count - The number of times the function needs to be called before it is executed.\r\n * @returns A new function that delays the execution of the provided function until it has been called a specified number of times.\r\n */\r\nconst callAfter = (\r\n fn: (...args: S) => T,\r\n count: number\r\n): ((...args: S) => T | undefined) => {\r\n let counter = 0;\r\n return (...args: S): T | undefined => {\r\n if (counter < count) {\r\n counter++;\r\n return undefined;\r\n }\r\n return fn(...args);\r\n };\r\n};\r\n\r\nexport default callAfter;\r\n", - "js": "/**\n * Creates a function that delays the execution of the provided function until it has been called a specified number of times.\n *\n * @param fn - The function to be called after a certain number of invocations.\n * @param count - The number of times the function needs to be called before it is executed.\n * @returns A new function that delays the execution of the provided function until it has been called a specified number of times.\n */\nconst callAfter = (fn, count) => {\n let counter = 0;\n return (...args) => {\n if (counter < count) {\n counter++;\n return undefined;\n }\n return fn(...args);\n };\n};\nexport default callAfter;\n" + "ts": "/**\r\n * Performs a logical NOR operation on the given arguments.\r\n * Returns true if none of the arguments are truthy, otherwise returns false.\r\n *\r\n * @param args - The arguments to perform the NOR operation on.\r\n * @returns The result of the NOR operation.\r\n */\r\nconst nor = (...args: any[]) => {\r\n if (args.length === 0) return false;\r\n const or = args.some((arg) => Boolean(arg));\r\n return !or;\r\n};\r\n\r\nexport default nor;\r\n", + "js": "/**\n * Performs a logical NOR operation on the given arguments.\n * Returns true if none of the arguments are truthy, otherwise returns false.\n *\n * @param args - The arguments to perform the NOR operation on.\n * @returns The result of the NOR operation.\n */\nconst nor = (...args) => {\n if (args.length === 0)\n return false;\n const or = args.some((arg) => Boolean(arg));\n return !or;\n};\nexport default nor;\n" }, - "category": "functional", + "category": "gates", "type": "functions", "examples": [ { - "ts": "import callAfter from \".\";\r\n\r\nconst fn = (x: number) => x + 1;\r\n\r\nconst callAfterFn = callAfter(fn, 2);\r\n\r\nconst result1 = callAfterFn(1);\r\n// Expected Output: undefined\r\n\r\nconst result2 = callAfterFn(2);\r\n// Expected Output: undefined\r\n\r\nconst result3 = callAfterFn(3);\r\n// Expected Output: 4 : as the function `fn` has been called twice already.\r\n", - "js": "import callAfter from \".\";\nconst fn = (x) => x + 1;\nconst callAfterFn = callAfter(fn, 2);\nconst result1 = callAfterFn(1);\n// Expected Output: undefined\nconst result2 = callAfterFn(2);\n// Expected Output: undefined\nconst result3 = callAfterFn(3);\n// Expected Output: 4 : as the function `fn` has been called twice already.\n" + "ts": "import or from \".\";\r\n\r\nconsole.log(or(true, true));\r\n// Expected Output: false\r\n\r\nconsole.log(or(false, true));\r\n// Expected Output: false\r\n\r\nconsole.log(or(false, false));\r\n// Expected Output: true\r\n\r\nconsole.log(or());\r\n// Expected Output: true\r\n\r\nconsole.log(or(1, \"lazykit\"));\r\n// Expected Output: false\r\n", + "js": "import or from \".\";\nconsole.log(or(true, true));\n// Expected Output: false\nconsole.log(or(false, true));\n// Expected Output: false\nconsole.log(or(false, false));\n// Expected Output: true\nconsole.log(or());\n// Expected Output: true\nconsole.log(or(1, \"lazykit\"));\n// Expected Output: false\n" } ], "docs": { "metaData": { - "desc": "Returns a new function that can be called only after calling a specific number of times." + "desc": "Performs a logical NOR operation on the given arguments." }, - "md": "\r\nThe `callAfter` function is used to create a new function that can be called only after calling a specific number of times. Before the specified number of calls, the function will always return `undefined` without executing the original function.\r\n" + "md": "\r\nThe nor function is a utility function in TypeScript that performs a\r\nlogical NOR operation on the given arguments.\r\n" }, "props": [ { - "title": "function", - "required": true, - "propDesc": "The function to be called", - "type": "Function" - }, - { - "title": "count", + "title": "args", "required": true, - "propDesc": "The number of times the function needs to be called before it is executed", - "type": "number" + "propDesc": "The arguments to perform the NOR operation on.", + "type": "any[]" } ], "createdAt": { - "date": "2024-04-28T01:32:03.898Z", + "date": "2024-04-17T13:28:44.176Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.146Z", + "date": "2024-05-12T07:30:07.932Z", "packageVersion": "1.0.2" } }, { - "name": "callBefore", + "name": "or", "code": { - "ts": "/**\r\n * Calls the provided function `fn` only for the first `count` invocations,\r\n * and returns `undefined` for subsequent invocations.\r\n *\r\n * @template T - The return type of the function `fn`.\r\n * @template S - The argument types of the function `fn`.\r\n * @param {(...args: S) => T} fn - The function to be called.\r\n * @param {number} count - The number of times the function `fn` should be called.\r\n * @returns {(...args: S) => T | undefined} - A function that calls `fn` only for the first `count` invocations.\r\n */\r\nconst callBefore = (\r\n fn: (...args: S) => T,\r\n count: number\r\n): ((...args: S) => T | undefined) => {\r\n let counter = 0;\r\n return (...args: S): T | undefined => {\r\n if (counter < count) {\r\n counter++;\r\n return fn(...args);\r\n }\r\n return undefined;\r\n };\r\n};\r\n\r\nexport default callBefore;\r\n", - "js": "/**\n * Calls the provided function `fn` only for the first `count` invocations,\n * and returns `undefined` for subsequent invocations.\n *\n * @template T - The return type of the function `fn`.\n * @template S - The argument types of the function `fn`.\n * @param {(...args: S) => T} fn - The function to be called.\n * @param {number} count - The number of times the function `fn` should be called.\n * @returns {(...args: S) => T | undefined} - A function that calls `fn` only for the first `count` invocations.\n */\nconst callBefore = (fn, count) => {\n let counter = 0;\n return (...args) => {\n if (counter < count) {\n counter++;\n return fn(...args);\n }\n return undefined;\n };\n};\nexport default callBefore;\n" + "ts": "/**\r\n * Performs a logical OR operation on the given arguments.\r\n *\r\n * @param args - The arguments to perform the OR operation on.\r\n * @returns The result of the OR operation.\r\n */\r\nconst or = (...args: any[]) => {\r\n return args.some((arg) => Boolean(arg));\r\n};\r\n\r\nexport default or;\r\n", + "js": "/**\n * Performs a logical OR operation on the given arguments.\n *\n * @param args - The arguments to perform the OR operation on.\n * @returns The result of the OR operation.\n */\nconst or = (...args) => {\n return args.some((arg) => Boolean(arg));\n};\nexport default or;\n" }, - "category": "functional", + "category": "gates", "type": "functions", "examples": [ { - "ts": "import callBefore from \".\";\r\n\r\nconst fn = (x: number) => x + 1;\r\n\r\nconst callBeforeFn = callBefore(fn, 2);\r\n\r\nconst result1 = callBeforeFn(1);\r\n// Expected Output: 2\r\n\r\nconst result2 = callBeforeFn(2);\r\n// Expected Output: 3\r\n\r\nconst result3 = callBeforeFn(3);\r\n// Expected Output: undefined : as the function `fn` has been called twice already.\r\n", - "js": "import callBefore from \".\";\nconst fn = (x) => x + 1;\nconst callBeforeFn = callBefore(fn, 2);\nconst result1 = callBeforeFn(1);\n// Expected Output: 2\nconst result2 = callBeforeFn(2);\n// Expected Output: 3\nconst result3 = callBeforeFn(3);\n// Expected Output: undefined : as the function `fn` has been called twice already.\n" + "ts": "import or from \".\";\r\n\r\nconsole.log(or(true, true));\r\n// Expected Output: true\r\n\r\nconsole.log(or(false, true));\r\n// Expected Output: true\r\n\r\nconsole.log(or(false, false));\r\n// Expected Output: false\r\n\r\nconsole.log(or());\r\n// Expected Output: false\r\n\r\nconsole.log(or(1, \"lazykit\"));\r\n// Expected Output: true\r\n", + "js": "import or from \".\";\nconsole.log(or(true, true));\n// Expected Output: true\nconsole.log(or(false, true));\n// Expected Output: true\nconsole.log(or(false, false));\n// Expected Output: false\nconsole.log(or());\n// Expected Output: false\nconsole.log(or(1, \"lazykit\"));\n// Expected Output: true\n" } ], "docs": { "metaData": { - "desc": "Returns a new function that can be called only for specific number of times." + "desc": "Performs a logical OR operation on the given arguments." }, - "md": "\r\nThe `callBefore` function is used to create a new function that can be called only for a specific number of times. After the specified number of calls, the function will always return `undefined` without executing the original function.\r\n\r\nThis is useful in some scenarios like `rate limiting` or `trial period` where you want to allow a function to be called only for a specific number of times.\r\n" + "md": "\r\nThe or function is a utility function in TypeScript that performs a\r\nlogical OR operation on the given arguments.\r\n" }, "props": [ { - "title": "function", - "required": true, - "propDesc": "The function to be called", - "type": "Function" - }, - { - "title": "count", + "title": "args", "required": true, - "propDesc": "The number of times the function can be called.", - "type": "number" + "propDesc": "The arguments to perform the OR operation on.", + "type": "any[]" } ], "createdAt": { - "date": "2024-04-28T01:06:22.893Z", + "date": "2024-04-17T13:28:44.181Z", "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.152Z", + "date": "2024-05-12T07:30:07.975Z", "packageVersion": "1.0.2" } }, @@ -989,7 +871,7 @@ "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.190Z", + "date": "2024-05-12T07:30:07.983Z", "packageVersion": "1.0.2" } }, @@ -1032,7 +914,7 @@ "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.200Z", + "date": "2024-05-12T07:30:07.990Z", "packageVersion": "1.0.2" } }, @@ -1075,7 +957,7 @@ "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.214Z", + "date": "2024-05-12T07:30:07.996Z", "packageVersion": "1.0.2" } }, @@ -1124,7 +1006,162 @@ "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.222Z", + "date": "2024-05-12T07:30:08.006Z", + "packageVersion": "1.0.2" + } + }, + { + "name": "chunk", + "code": { + "ts": "/**\r\n * Splits an array into chunks of a specified size.\r\n *\r\n * @template T - The type of elements in the array.\r\n * @param {T[]} array - The array to be chunked.\r\n * @param {number} [size=1] - The size of each chunk.\r\n * @param {boolean} [strict=false] - Whether to remove the last chunk if it is not equal to the size.\r\n * @returns {T[][]} - An array of chunks.\r\n */\r\nconst chunk = (\r\n array: T[],\r\n size: number = 1,\r\n strict: boolean = false\r\n //remove the last chunk if it is not equal to the size\r\n): T[][] => {\r\n const result: T[][] = [];\r\n\r\n //push the chunks into the result array\r\n for (let i = 0; i < array.length; i += size) {\r\n result.push(array.slice(i, i + size));\r\n }\r\n\r\n //remove the last chunk if it is not equal to the size\r\n if (strict && result[result.length - 1].length !== size) {\r\n result.pop();\r\n }\r\n return result;\r\n};\r\n\r\nexport default chunk;\r\n", + "js": "/**\n * Splits an array into chunks of a specified size.\n *\n * @template T - The type of elements in the array.\n * @param {T[]} array - The array to be chunked.\n * @param {number} [size=1] - The size of each chunk.\n * @param {boolean} [strict=false] - Whether to remove the last chunk if it is not equal to the size.\n * @returns {T[][]} - An array of chunks.\n */\nconst chunk = (array, size = 1, strict = false\n//remove the last chunk if it is not equal to the size\n) => {\n const result = [];\n //push the chunks into the result array\n for (let i = 0; i < array.length; i += size) {\n result.push(array.slice(i, i + size));\n }\n //remove the last chunk if it is not equal to the size\n if (strict && result[result.length - 1].length !== size) {\n result.pop();\n }\n return result;\n};\nexport default chunk;\n" + }, + "category": "arrays", + "type": "functions", + "examples": [ + { + "ts": "import chunk from \".\";\r\n\r\nconst arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\r\n\r\n// No size provided, default size is 1\r\nconsole.log(chunk(arr));\r\n// Expected output: [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]];\r\n\r\n// Providing size as 2\r\nconsole.log(chunk(arr, 2));\r\n// Expected output: [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ], [ 9, 10 ] ]\r\n\r\n// Providing size as 3 and strict as true\r\nconsole.log(chunk(arr, 3, true));\r\n// Expected output: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]\r\n\r\n// Providing size as 4 and strict as true\r\nconsole.log(chunk(arr, 4, true));\r\n// Expected output: [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ] ]\r\n", + "js": "import chunk from \".\";\nconst arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\n// No size provided, default size is 1\nconsole.log(chunk(arr));\n// Expected output: [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]];\n// Providing size as 2\nconsole.log(chunk(arr, 2));\n// Expected output: [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ], [ 9, 10 ] ]\n// Providing size as 3 and strict as true\nconsole.log(chunk(arr, 3, true));\n// Expected output: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]\n// Providing size as 4 and strict as true\nconsole.log(chunk(arr, 4, true));\n// Expected output: [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ] ]\n" + } + ], + "docs": { + "metaData": { + "desc": "Chunks an array into smaller arrays of a specified size." + }, + "md": "\r\nThe `chunk` function is a utility function in JavaScript that takes an\r\narray and divides it into smaller sub-arrays, or "chunks", each with a\r\nmaximum length equal to a specified size. This function is particularly\r\nuseful when you need to process a large array in smaller, more\r\nmanageable pieces.\r\n\r\nThe function accepts three parameters: the original `array` to be chunked,\r\nthe `size` of each chunk, and a `boolean` value indicating whether the\r\nfunction should strictly adhere to the chunk size. If the "strict"\r\nparameter is set to true, and the last chunk does not meet the specified\r\nsize, it will be removed from the final result.\r\n" + }, + "props": [ + { + "title": "array", + "required": true, + "propDesc": "The array to process.", + "type": "array" + }, + { + "title": "size", + "required": false, + "defaultValue": "1", + "propDesc": "The length of each chunk.", + "type": "number" + }, + { + "title": "strict", + "required": false, + "defaultValue": "false", + "propDesc": "If true, the last chunk will be truncated if it does not fit exactly.", + "type": "boolean" + } + ], + "createdAt": { + "date": "2024-04-17T13:28:44.014Z", + "packageVersion": "0.1.0" + }, + "lastUpdated": { + "date": "2024-05-12T07:30:08.019Z", + "packageVersion": "1.0.2" + } + }, + { + "name": "compact", + "code": { + "ts": "/**\r\n * Removes falsy values\r\n * Also removes empty objects and arrays if strict is true\r\n *\r\n * @template T - The type of elements in the array.\r\n * @param {T[]} array - The array to compact.\r\n * @param {boolean} [strict=false] - If true, also removes empty objects and arrays.\r\n * @returns {T[]} - The compacted array.\r\n */\r\nconst compact = (array: T[], strict: boolean = false): T[] => {\r\n let truthy = array.filter((item) => {\r\n // remove all falsy values and excluded values\r\n return Boolean(item);\r\n });\r\n\r\n if (strict) {\r\n // remove all empty objects\r\n truthy = truthy.filter((item) => {\r\n if (typeof item === \"object\" && !(item instanceof Array)) {\r\n return Object.keys(item as object).length > 0;\r\n }\r\n return true;\r\n });\r\n // remove all empty arrays\r\n truthy = truthy.filter((item) => {\r\n if (Array.isArray(item)) {\r\n return (item as []).length > 0;\r\n }\r\n return true;\r\n });\r\n }\r\n return truthy;\r\n};\r\n\r\nexport default compact;\r\n", + "js": "/**\n * Removes falsy values\n * Also removes empty objects and arrays if strict is true\n *\n * @template T - The type of elements in the array.\n * @param {T[]} array - The array to compact.\n * @param {boolean} [strict=false] - If true, also removes empty objects and arrays.\n * @returns {T[]} - The compacted array.\n */\nconst compact = (array, strict = false) => {\n let truthy = array.filter((item) => {\n // remove all falsy values and excluded values\n return Boolean(item);\n });\n if (strict) {\n // remove all empty objects\n truthy = truthy.filter((item) => {\n if (typeof item === \"object\" && !(item instanceof Array)) {\n return Object.keys(item).length > 0;\n }\n return true;\n });\n // remove all empty arrays\n truthy = truthy.filter((item) => {\n if (Array.isArray(item)) {\n return item.length > 0;\n }\n return true;\n });\n }\n return truthy;\n};\nexport default compact;\n" + }, + "category": "arrays", + "type": "functions", + "examples": [ + { + "ts": "import compact from \".\";\r\n\r\nconst input = [0, false, \"\", null, undefined, NaN, {}, [], 1, \"hello\"];\r\n\r\n// no strict mode\r\nconst result = compact(input);\r\nconsole.log(result);\r\n// Expected output: [{}, [], 1, \"hello\"]\r\n\r\n// strict mode\r\nconst resultStrict = compact(input, true);\r\nconsole.log(resultStrict);\r\n// Expected output: [1, \"hello\"]\r\n", + "js": "import compact from \".\";\nconst input = [0, false, \"\", null, undefined, NaN, {}, [], 1, \"hello\"];\n// no strict mode\nconst result = compact(input);\nconsole.log(result);\n// Expected output: [{}, [], 1, \"hello\"]\n// strict mode\nconst resultStrict = compact(input, true);\nconsole.log(resultStrict);\n// Expected output: [1, \"hello\"]\n" + } + ], + "docs": { + "metaData": { + "desc": "Removes falsy values from an array, If strict is true, also removes empty objects and arrays." + }, + "md": "\r\nThe compact function is a utility function in TypeScript that removes\r\n'falsy' values from an array.\r\n\r\nFalsy values in JavaScript are values that are considered false when\r\nencountered in a Boolean context. These include false, 0, ''\r\n(empty string), null, undefined, and NaN.\r\n\r\nThe function takes two parameters: an array of any type (array) and a\r\nboolean (strict). If the strict parameter is set to true, the function\r\nalso removes empty objects and arrays from the array. An empty object is\r\nan object without any properties, and an empty array is an array without\r\nany elements. The function returns a new array that contains only\r\n'truthy' values, and if strict is true, it also doesn't\r\ncontain any empty objects or arrays.\r\n" + }, + "props": [ + { + "title": "array", + "required": true, + "propDesc": "The array to process.", + "type": "array" + }, + { + "title": "strict", + "required": false, + "defaultValue": "false", + "propDesc": "If true, also removes empty objects and arrays from the array.", + "type": "boolean" + } + ], + "createdAt": { + "date": "2024-04-17T13:28:44.050Z", + "packageVersion": "0.1.0" + }, + "lastUpdated": { + "date": "2024-05-12T07:30:08.027Z", + "packageVersion": "1.0.2" + } + }, + { + "name": "insert", + "code": { + "ts": "/**\r\n * Inserts elements into an array at a specified index.\r\n *\r\n * @template T - The type of elements in the array.\r\n * @param {T[]} arr - The array to insert elements into.\r\n * @param {number} index - The index at which to insert the elements.\r\n * @param {boolean} [recursive=false] - Indicates whether to insert elements recursively. If true, the elements will be inserted at every nth index.\r\n * @param {...T[]} items - The elements to insert into the array.\r\n * @returns {T[]} - The modified array with the inserted elements.\r\n */\r\nconst insert = (\r\n arr: T[],\r\n index: number,\r\n [...items]: T[],\r\n recursive: boolean = false\r\n): T[] => {\r\n const isNegativeIndex = index < 0;\r\n // if index is negative, convert it to positive and reverse the array for easier insertion\r\n if (isNegativeIndex) {\r\n index = Math.abs(index);\r\n arr = arr.reverse();\r\n items = items.reverse();\r\n }\r\n\r\n if (!recursive) {\r\n const newArr = [...arr.slice(0, index), ...items, ...arr.slice(index)];\r\n return isNegativeIndex ? newArr.reverse() : newArr;\r\n } else {\r\n const shouldInsert = Math.floor(arr.length / index);\r\n let newArr = [...arr];\r\n for (let i = 0; i < shouldInsert; i++) {\r\n const insertIndex = (i + 1) * index + i * items.length;\r\n newArr = [\r\n ...newArr.slice(0, insertIndex),\r\n ...items,\r\n ...newArr.slice(insertIndex),\r\n ];\r\n }\r\n return isNegativeIndex ? newArr.reverse() : newArr;\r\n }\r\n};\r\n\r\nexport default insert;\r\n", + "js": "/**\n * Inserts elements into an array at a specified index.\n *\n * @template T - The type of elements in the array.\n * @param {T[]} arr - The array to insert elements into.\n * @param {number} index - The index at which to insert the elements.\n * @param {boolean} [recursive=false] - Indicates whether to insert elements recursively. If true, the elements will be inserted at every nth index.\n * @param {...T[]} items - The elements to insert into the array.\n * @returns {T[]} - The modified array with the inserted elements.\n */\nconst insert = (arr, index, [...items], recursive = false) => {\n const isNegativeIndex = index < 0;\n // if index is negative, convert it to positive and reverse the array for easier insertion\n if (isNegativeIndex) {\n index = Math.abs(index);\n arr = arr.reverse();\n items = items.reverse();\n }\n if (!recursive) {\n const newArr = [...arr.slice(0, index), ...items, ...arr.slice(index)];\n return isNegativeIndex ? newArr.reverse() : newArr;\n }\n else {\n const shouldInsert = Math.floor(arr.length / index);\n let newArr = [...arr];\n for (let i = 0; i < shouldInsert; i++) {\n const insertIndex = (i + 1) * index + i * items.length;\n newArr = [\n ...newArr.slice(0, insertIndex),\n ...items,\n ...newArr.slice(insertIndex),\n ];\n }\n return isNegativeIndex ? newArr.reverse() : newArr;\n }\n};\nexport default insert;\n" + }, + "category": "arrays", + "type": "functions", + "examples": [ + { + "ts": "import insert from \".\";\r\n\r\nconst arr = [1, 2, 3];\r\nconst index = 1;\r\nconst items = [4, 5];\r\n\r\nconst result = insert(arr, index, items);\r\nconsole.log(result);\r\n// Expected Output: [1, 4, 5, 2, 3]\r\n\r\nconst arr2 = [1, 2, 3, 4, 5];\r\nconst index2 = 2;\r\nconst items2 = [6, 7];\r\n\r\nconst result2 = insert(arr2, index2, items2);\r\nconsole.log(result2);\r\n// Expected Output: [1, 2, 6, 7, 3, 4, 5 ]\r\n\r\n// negative index\r\nconst arr3 = [1, 2, 3];\r\nconst index3 = -1;\r\nconst items3 = [4, 5];\r\n\r\nconst result3 = insert(arr3, index3, items3);\r\nconsole.log(result3);\r\n// Expected Output: [1, 2, 4, 5, 3]\r\n", + "js": "import insert from \".\";\nconst arr = [1, 2, 3];\nconst index = 1;\nconst items = [4, 5];\nconst result = insert(arr, index, items);\nconsole.log(result);\n// Expected Output: [1, 4, 5, 2, 3]\nconst arr2 = [1, 2, 3, 4, 5];\nconst index2 = 2;\nconst items2 = [6, 7];\nconst result2 = insert(arr2, index2, items2);\nconsole.log(result2);\n// Expected Output: [1, 2, 6, 7, 3, 4, 5 ]\n// negative index\nconst arr3 = [1, 2, 3];\nconst index3 = -1;\nconst items3 = [4, 5];\nconst result3 = insert(arr3, index3, items3);\nconsole.log(result3);\n// Expected Output: [1, 2, 4, 5, 3]\n" + }, + { + "ts": "//recursive examples\r\n\r\nimport insert from \".\";\r\n\r\nconst arr = [1, 2, 3];\r\nconst index = 1;\r\nconst items = [4, 5];\r\n\r\nconst result = insert(arr, index, items, true);\r\nconsole.log(result);\r\n// Expected Output: [1, 4, 5, 2, 4, 5, 3, 4, 5]\r\n\r\nconst arr2 = [1, 2, 3, 4, 5];\r\nconst index2 = 2;\r\nconst items2 = [6, 7];\r\n\r\nconst result2 = insert(arr2, index2, items2, true);\r\nconsole.log(result2);\r\n// Expected Output: [1, 2, 6, 7, 3, 4, 6, 7, 5]\r\n\r\n//negative index\r\n\r\nconst arr3 = [1, 2, 3];\r\nconst index3 = -1;\r\nconst items3 = [4, 5];\r\n\r\nconst result3 = insert(arr3, index3, items3, true);\r\nconsole.log(result3);\r\n// Expected Output: [4, 5, 1, 4, 5, 2, 4, 5, 3]\r\n", + "js": "//recursive examples\nimport insert from \".\";\nconst arr = [1, 2, 3];\nconst index = 1;\nconst items = [4, 5];\nconst result = insert(arr, index, items, true);\nconsole.log(result);\n// Expected Output: [1, 4, 5, 2, 4, 5, 3, 4, 5]\nconst arr2 = [1, 2, 3, 4, 5];\nconst index2 = 2;\nconst items2 = [6, 7];\nconst result2 = insert(arr2, index2, items2, true);\nconsole.log(result2);\n// Expected Output: [1, 2, 6, 7, 3, 4, 6, 7, 5]\n//negative index\nconst arr3 = [1, 2, 3];\nconst index3 = -1;\nconst items3 = [4, 5];\nconst result3 = insert(arr3, index3, items3, true);\nconsole.log(result3);\n// Expected Output: [4, 5, 1, 4, 5, 2, 4, 5, 3]\n" + } + ], + "docs": { + "metaData": { + "desc": "Inserts elements into an array at a specified index." + }, + "md": "\r\nThe insert function is a generic function in TypeScript that is designed\r\nto insert elements into an array at a specified index. The function\r\ntakes four parameters: an array arr of type T[], an index of type\r\nnumber, a spread parameter items of type T[], and an optional recursive\r\nparameter of type boolean which defaults to false.\r\n\r\nIt returns a new array with the elements inserted at the specified index\r\nwithout modifying the original array.\r\n\r\nIf the index is negative, the function treats it as an index from the\r\nend of the array. In this case, it converts the index to a positive\r\nnumber and reverses the array and the items to be inserted for easier\r\ninsertion.\r\n\r\nIf the recursive parameter is false, the function simply inserts the\r\nitems at the specified index in the array. If the recursive parameter is\r\ntrue, the function inserts the items at every nth index, where n is the\r\nabsolute value of the provided index. The function calculates the number\r\nof insertions to be made by dividing the length of the array by the\r\nindex.\r\n" + }, + "props": [ + { + "title": "array", + "required": true, + "propDesc": "The array to process.", + "type": "array" + }, + { + "title": "index", + "required": true, + "propDesc": "The index at which to insert the elements, If negative, the index will start from the end of the array.", + "type": "number" + }, + { + "title": "items", + "required": true, + "propDesc": "The elements to insert into the array.", + "type": "array" + }, + { + "title": "strict", + "required": false, + "defaultValue": "false", + "propDesc": "Indicates whether to insert elements recursively. If true, the elements will be inserted at every nth index.", + "type": "boolean" + } + ], + "createdAt": { + "date": "2024-04-17T13:28:44.070Z", + "packageVersion": "0.1.0" + }, + "lastUpdated": { + "date": "2024-05-12T07:30:08.040Z", "packageVersion": "1.0.2" } }, @@ -1161,7 +1198,7 @@ "packageVersion": "0.1.0" }, "lastUpdated": { - "date": "2024-04-28T05:29:16.228Z", + "date": "2024-05-12T07:30:08.045Z", "packageVersion": "1.0.2" } } diff --git a/src/www/src/registry/functions/functional/count/count.example.ts b/src/www/src/registry/functions/functional/count/count.example.ts new file mode 100644 index 0000000..16e87d2 --- /dev/null +++ b/src/www/src/registry/functions/functional/count/count.example.ts @@ -0,0 +1,12 @@ +import count from "."; + +const add = (a: number, b: number) => { + return a + b; +}; + +const countAddFn = count(add); +countAddFn(1, 2); +countAddFn(3, 4); + +console.log(countAddFn.getCount()); +// Expected Output: 2 diff --git a/src/www/src/registry/functions/functional/count/docs.md b/src/www/src/registry/functions/functional/count/docs.md new file mode 100644 index 0000000..75b2fea --- /dev/null +++ b/src/www/src/registry/functions/functional/count/docs.md @@ -0,0 +1,7 @@ +--- +desc: returns the result of a function and the number of times that function is invoked. +--- + +The `count` function invokes another function passed as an `arg` and returns both the `result` of the invoked function and the `count of how many times the function has been called`. + +This is useful in when you need to keep a tab on how many times a function is being called which can be helpful in monitoring, debugging, testing, analytics, resource management. diff --git a/src/www/src/registry/functions/functional/count/index.test.ts b/src/www/src/registry/functions/functional/count/index.test.ts new file mode 100644 index 0000000..3de28dc --- /dev/null +++ b/src/www/src/registry/functions/functional/count/index.test.ts @@ -0,0 +1,30 @@ +import { expect, test, describe } from "vitest"; +import count from "."; + +describe("count", () => { + //Test case 1: Testing the wrapper function + test("calls the function passed and returns the result", () => { + const mockFunction = (a: number, b: number): number => { + return a + b; + }; + const countedFunction = count(mockFunction); + expect(countedFunction(1, 2)).toBe(3); + }); + + // Test case 2: Testing the getCount function + test("returns the count of function calls", () => { + const mockFunction = (a: number, b: number): number => { + return Math.abs(a - b); + }; + const countedFunction = count(mockFunction); + countedFunction(4, 6); + countedFunction(10, 6); + countedFunction(4, 5); + countedFunction(4, 13); + countedFunction(155, 6); + countedFunction(109, 126); + + //test the getCount method + expect(countedFunction.getCount()).toBe(6); + }); +}); diff --git a/src/www/src/registry/functions/functional/count/index.ts b/src/www/src/registry/functions/functional/count/index.ts new file mode 100644 index 0000000..d42a80c --- /dev/null +++ b/src/www/src/registry/functions/functional/count/index.ts @@ -0,0 +1,25 @@ +/** + * Invokes the function passed with arguments and + * counts how many times the function is executed. + * + * @param {Function} fn - The function to be called. + * @returns - result: the result of the passed function invocation. + * This function also has a getCount method attached. + * @returns {Function} getCount - A method that returns the count of execution of the passed function. + */ +const count = (fn: (...args: A) => R) => { + let callCount = 0; + + const wrapper = (...args: A): R => { + callCount++; + const result = fn(...args); + return result; + }; + + const getCount: () => number = () => callCount; + wrapper.getCount = getCount; + + return wrapper; +}; + +export default count; diff --git a/src/www/src/registry/functions/functional/count/props.ts b/src/www/src/registry/functions/functional/count/props.ts new file mode 100644 index 0000000..2a6fe21 --- /dev/null +++ b/src/www/src/registry/functions/functional/count/props.ts @@ -0,0 +1,13 @@ +import { IRegistryFunctionPropTable } from "@/types/registry.types"; + +const Props: IRegistryFunctionPropTable[] = [ + { + title: "function", + required: true, + defaultValue: undefined, + propDesc: "The function to count the number of times it is called.", + type: "Function", + }, +]; + +export default Props;