From 71dae1d6ccc04bc549c40237fd0b5fb87348b89f Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Fri, 1 Dec 2023 18:00:39 -0500 Subject: [PATCH 1/6] feat(repo): Add Chrome Extension playground app [SDK-836] --- .vscode/settings.json | 6 + package-lock.json | 90 ++++++------- playground/chrome-extension/.env.example | 1 + playground/chrome-extension/.gitignore | 32 +++++ playground/chrome-extension/README.md | 79 +++++++++++ playground/chrome-extension/demo.png | Bin 0 -> 180543 bytes .../manifest.dev.json.example | 5 + .../chrome-extension/manifest.json.example | 21 +++ playground/chrome-extension/nodemon.json | 14 ++ playground/chrome-extension/package.json | 49 +++++++ .../public/clerk-logo-dark.png | Bin 0 -> 12638 bytes .../public/clerk-logo-light.png | Bin 0 -> 4812 bytes .../chrome-extension/public/contentStyle.css | 0 .../chrome-extension/public/dev-icon-128.png | Bin 0 -> 16876 bytes .../chrome-extension/public/dev-icon-32.png | Bin 0 -> 2529 bytes .../chrome-extension/public/icon-128.png | Bin 0 -> 19200 bytes .../chrome-extension/public/icon-32.png | Bin 0 -> 2613 bytes .../chrome-extension/src/assets/img/logo.svg | 1 + .../src/assets/styles/index.css | 17 +++ .../src/assets/styles/tailwind.css | 3 + playground/chrome-extension/src/global.d.ts | 11 ++ .../src/pages/background/index.ts | 1 + .../src/pages/content/index.tsx | 20 +++ .../src/pages/content/style.css | 6 + .../src/pages/devtools/index.html | 10 ++ .../src/pages/devtools/index.ts | 7 + .../src/pages/newtab/Newtab.css | 38 ++++++ .../src/pages/newtab/Newtab.tsx | 24 ++++ .../src/pages/newtab/index.css | 13 ++ .../src/pages/newtab/index.html | 12 ++ .../src/pages/newtab/index.tsx | 14 ++ .../src/pages/options/Options.css | 8 ++ .../src/pages/options/Options.tsx | 6 + .../src/pages/options/index.html | 12 ++ .../src/pages/options/index.tsx | 12 ++ .../src/pages/panel/Panel.css | 7 + .../src/pages/panel/Panel.tsx | 10 ++ .../src/pages/panel/index.html | 12 ++ .../src/pages/panel/index.tsx | 13 ++ .../src/pages/popup/Popup.tsx | 127 ++++++++++++++++++ .../src/pages/popup/index.css | 37 +++++ .../src/pages/popup/index.html | 12 ++ .../src/pages/popup/index.tsx | 14 ++ playground/chrome-extension/src/vite-env.d.ts | 1 + .../chrome-extension/tailwind.config.cjs | 12 ++ playground/chrome-extension/tsconfig.json | 26 ++++ playground/chrome-extension/vite.config.ts | 70 ++++++++++ playground/vite-react-ts/.gitignore | 2 + 48 files changed, 810 insertions(+), 45 deletions(-) create mode 100644 playground/chrome-extension/.env.example create mode 100644 playground/chrome-extension/.gitignore create mode 100644 playground/chrome-extension/README.md create mode 100644 playground/chrome-extension/demo.png create mode 100644 playground/chrome-extension/manifest.dev.json.example create mode 100644 playground/chrome-extension/manifest.json.example create mode 100644 playground/chrome-extension/nodemon.json create mode 100644 playground/chrome-extension/package.json create mode 100644 playground/chrome-extension/public/clerk-logo-dark.png create mode 100644 playground/chrome-extension/public/clerk-logo-light.png create mode 100644 playground/chrome-extension/public/contentStyle.css create mode 100644 playground/chrome-extension/public/dev-icon-128.png create mode 100644 playground/chrome-extension/public/dev-icon-32.png create mode 100644 playground/chrome-extension/public/icon-128.png create mode 100644 playground/chrome-extension/public/icon-32.png create mode 100644 playground/chrome-extension/src/assets/img/logo.svg create mode 100644 playground/chrome-extension/src/assets/styles/index.css create mode 100644 playground/chrome-extension/src/assets/styles/tailwind.css create mode 100644 playground/chrome-extension/src/global.d.ts create mode 100644 playground/chrome-extension/src/pages/background/index.ts create mode 100644 playground/chrome-extension/src/pages/content/index.tsx create mode 100644 playground/chrome-extension/src/pages/content/style.css create mode 100644 playground/chrome-extension/src/pages/devtools/index.html create mode 100644 playground/chrome-extension/src/pages/devtools/index.ts create mode 100644 playground/chrome-extension/src/pages/newtab/Newtab.css create mode 100644 playground/chrome-extension/src/pages/newtab/Newtab.tsx create mode 100644 playground/chrome-extension/src/pages/newtab/index.css create mode 100644 playground/chrome-extension/src/pages/newtab/index.html create mode 100644 playground/chrome-extension/src/pages/newtab/index.tsx create mode 100644 playground/chrome-extension/src/pages/options/Options.css create mode 100644 playground/chrome-extension/src/pages/options/Options.tsx create mode 100644 playground/chrome-extension/src/pages/options/index.html create mode 100644 playground/chrome-extension/src/pages/options/index.tsx create mode 100644 playground/chrome-extension/src/pages/panel/Panel.css create mode 100644 playground/chrome-extension/src/pages/panel/Panel.tsx create mode 100644 playground/chrome-extension/src/pages/panel/index.html create mode 100644 playground/chrome-extension/src/pages/panel/index.tsx create mode 100644 playground/chrome-extension/src/pages/popup/Popup.tsx create mode 100644 playground/chrome-extension/src/pages/popup/index.css create mode 100644 playground/chrome-extension/src/pages/popup/index.html create mode 100644 playground/chrome-extension/src/pages/popup/index.tsx create mode 100644 playground/chrome-extension/src/vite-env.d.ts create mode 100644 playground/chrome-extension/tailwind.config.cjs create mode 100644 playground/chrome-extension/tsconfig.json create mode 100644 playground/chrome-extension/vite.config.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 87589341d80..a6b1d9843e3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,6 +10,12 @@ "mode": "auto" } ], + "json.schemas": [ + { + "fileMatch": ["manifest.json"], + "url": "https://json.schemastore.org/chrome-manifest.json" + } + ], "cSpell.words": [ "accountsstage", "adduser", diff --git a/package-lock.json b/package-lock.json index b95d0b128f6..1f8e4639fcb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33280,16 +33280,16 @@ }, "packages/backend": { "name": "@clerk/backend", - "version": "1.0.0-alpha-v5.4", + "version": "1.0.0-alpha-v5.5", "license": "MIT", "dependencies": { - "@clerk/shared": "2.0.0-alpha-v5.3", + "@clerk/shared": "2.0.0-alpha-v5.4", "cookie": "0.5.0", "snakecase-keys": "5.4.4", "tslib": "2.4.1" }, "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.6", + "@clerk/types": "4.0.0-alpha-v5.7", "@cloudflare/workers-types": "^3.18.0", "@types/chai": "^4.3.3", "@types/cookie": "^0.5.1", @@ -33319,11 +33319,11 @@ }, "packages/chrome-extension": { "name": "@clerk/chrome-extension", - "version": "1.0.0-alpha-v5.6", + "version": "1.0.0-alpha-v5.7", "license": "MIT", "dependencies": { - "@clerk/clerk-js": "5.0.0-alpha-v5.6", - "@clerk/clerk-react": "5.0.0-alpha-v5.6" + "@clerk/clerk-js": "5.0.0-alpha-v5.7", + "@clerk/clerk-react": "5.0.0-alpha-v5.7" }, "devDependencies": { "@types/chrome": "*", @@ -33344,12 +33344,12 @@ }, "packages/clerk-js": { "name": "@clerk/clerk-js", - "version": "5.0.0-alpha-v5.6", + "version": "5.0.0-alpha-v5.7", "license": "MIT", "dependencies": { "@clerk/localizations": "2.0.0-alpha-v5.5", - "@clerk/shared": "2.0.0-alpha-v5.3", - "@clerk/types": "4.0.0-alpha-v5.6", + "@clerk/shared": "2.0.0-alpha-v5.4", + "@clerk/types": "4.0.0-alpha-v5.7", "@emotion/cache": "11.11.0", "@emotion/react": "11.11.1", "@floating-ui/react": "0.25.4", @@ -33684,17 +33684,17 @@ }, "packages/expo": { "name": "@clerk/clerk-expo", - "version": "1.0.0-alpha-v5.6", + "version": "1.0.0-alpha-v5.7", "license": "MIT", "dependencies": { - "@clerk/clerk-js": "5.0.0-alpha-v5.6", - "@clerk/clerk-react": "5.0.0-alpha-v5.6", - "@clerk/shared": "2.0.0-alpha-v5.3", + "@clerk/clerk-js": "5.0.0-alpha-v5.7", + "@clerk/clerk-react": "5.0.0-alpha-v5.7", + "@clerk/shared": "2.0.0-alpha-v5.4", "base-64": "^1.0.0", "react-native-url-polyfill": "2.0.0" }, "devDependencies": { - "@clerk/types": "^4.0.0-alpha-v5.6", + "@clerk/types": "^4.0.0-alpha-v5.7", "@types/base-64": "^1.0.2", "@types/node": "^18.17.0", "@types/react": "*", @@ -33717,12 +33717,12 @@ }, "packages/fastify": { "name": "@clerk/fastify", - "version": "1.0.0-alpha-v5.6", + "version": "1.0.0-alpha-v5.7", "license": "MIT", "dependencies": { - "@clerk/backend": "1.0.0-alpha-v5.4", - "@clerk/shared": "2.0.0-alpha-v5.3", - "@clerk/types": "4.0.0-alpha-v5.6", + "@clerk/backend": "1.0.0-alpha-v5.5", + "@clerk/shared": "2.0.0-alpha-v5.4", + "@clerk/types": "4.0.0-alpha-v5.7", "cookies": "0.8.0" }, "devDependencies": { @@ -33740,17 +33740,17 @@ } }, "packages/gatsby-plugin-clerk": { - "version": "5.0.0-alpha-v5.6", + "version": "5.0.0-alpha-v5.7", "license": "MIT", "dependencies": { - "@clerk/backend": "1.0.0-alpha-v5.4", - "@clerk/clerk-react": "5.0.0-alpha-v5.6", - "@clerk/clerk-sdk-node": "5.0.0-alpha-v5.4", + "@clerk/backend": "1.0.0-alpha-v5.5", + "@clerk/clerk-react": "5.0.0-alpha-v5.7", + "@clerk/clerk-sdk-node": "5.0.0-alpha-v5.5", "cookie": "0.5.0", "tslib": "2.4.1" }, "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.6", + "@clerk/types": "4.0.0-alpha-v5.7", "@types/cookie": "^0.5.0", "@types/node": "^18.17.0", "eslint-config-custom": "*", @@ -33773,7 +33773,7 @@ "version": "2.0.0-alpha-v5.5", "license": "MIT", "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.6", + "@clerk/types": "4.0.0-alpha-v5.7", "@types/node": "^18.17.0", "eslint-config-custom": "*", "tsup": "*", @@ -33789,16 +33789,16 @@ }, "packages/nextjs": { "name": "@clerk/nextjs", - "version": "5.0.0-alpha-v5.6", + "version": "5.0.0-alpha-v5.7", "license": "MIT", "dependencies": { - "@clerk/backend": "1.0.0-alpha-v5.4", - "@clerk/clerk-react": "5.0.0-alpha-v5.6", - "@clerk/shared": "2.0.0-alpha-v5.3", + "@clerk/backend": "1.0.0-alpha-v5.5", + "@clerk/clerk-react": "5.0.0-alpha-v5.7", + "@clerk/shared": "2.0.0-alpha-v5.4", "path-to-regexp": "6.2.1" }, "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.6", + "@clerk/types": "4.0.0-alpha-v5.7", "@types/node": "^18.17.0", "@types/react": "*", "@types/react-dom": "*", @@ -33823,11 +33823,11 @@ }, "packages/react": { "name": "@clerk/clerk-react", - "version": "5.0.0-alpha-v5.6", + "version": "5.0.0-alpha-v5.7", "license": "MIT", "dependencies": { - "@clerk/shared": "2.0.0-alpha-v5.3", - "@clerk/types": "4.0.0-alpha-v5.6", + "@clerk/shared": "2.0.0-alpha-v5.4", + "@clerk/types": "4.0.0-alpha-v5.7", "eslint-config-custom": "*", "semver": "^7.5.4", "tslib": "2.4.1" @@ -33855,17 +33855,17 @@ }, "packages/remix": { "name": "@clerk/remix", - "version": "4.0.0-alpha-v5.6", + "version": "4.0.0-alpha-v5.7", "license": "MIT", "dependencies": { - "@clerk/backend": "1.0.0-alpha-v5.4", - "@clerk/clerk-react": "5.0.0-alpha-v5.6", - "@clerk/shared": "2.0.0-alpha-v5.3", + "@clerk/backend": "1.0.0-alpha-v5.5", + "@clerk/clerk-react": "5.0.0-alpha-v5.7", + "@clerk/shared": "2.0.0-alpha-v5.4", "cookie": "0.5.0", "tslib": "2.4.1" }, "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.6", + "@clerk/types": "4.0.0-alpha-v5.7", "@remix-run/react": "^2.0.0", "@remix-run/server-runtime": "^2.0.0", "@types/cookie": "^0.5.0", @@ -33891,16 +33891,16 @@ }, "packages/sdk-node": { "name": "@clerk/clerk-sdk-node", - "version": "5.0.0-alpha-v5.4", + "version": "5.0.0-alpha-v5.5", "license": "MIT", "dependencies": { - "@clerk/backend": "1.0.0-alpha-v5.4", - "@clerk/shared": "2.0.0-alpha-v5.3", + "@clerk/backend": "1.0.0-alpha-v5.5", + "@clerk/shared": "2.0.0-alpha-v5.4", "camelcase-keys": "6.2.2", "snakecase-keys": "3.2.1" }, "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.6", + "@clerk/types": "4.0.0-alpha-v5.7", "@types/express": "4.17.14", "@types/node": "^18.17.0", "eslint-config-custom": "*", @@ -33933,7 +33933,7 @@ }, "packages/shared": { "name": "@clerk/shared", - "version": "2.0.0-alpha-v5.3", + "version": "2.0.0-alpha-v5.4", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -33942,7 +33942,7 @@ "swr": "2.2.0" }, "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.6", + "@clerk/types": "4.0.0-alpha-v5.7", "@types/glob-to-regexp": "0.4.1", "@types/js-cookie": "3.0.2", "@types/node": "^18.17.0", @@ -33978,7 +33978,7 @@ "version": "2.0.0-alpha-v5.2", "license": "MIT", "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.6", + "@clerk/types": "4.0.0-alpha-v5.7", "@types/node": "^18.17.0", "eslint-config-custom": "*", "typescript": "*" @@ -33993,7 +33993,7 @@ }, "packages/types": { "name": "@clerk/types", - "version": "4.0.0-alpha-v5.6", + "version": "4.0.0-alpha-v5.7", "license": "MIT", "dependencies": { "csstype": "3.1.1" diff --git a/playground/chrome-extension/.env.example b/playground/chrome-extension/.env.example new file mode 100644 index 00000000000..4f4796f3fc9 --- /dev/null +++ b/playground/chrome-extension/.env.example @@ -0,0 +1 @@ +VITE_CLERK_PUBLISHABLE_KEY=YOUR_CLERK_PUBLISHABLE_KEY_GOES_HERE diff --git a/playground/chrome-extension/.gitignore b/playground/chrome-extension/.gitignore new file mode 100644 index 00000000000..a7b798ef93a --- /dev/null +++ b/playground/chrome-extension/.gitignore @@ -0,0 +1,32 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yalc/ +yalc.lock + +# manifests + +manifest.* +!manifest.*.example + +# testing +/coverage + +# production +/build +/dist + +# misc +.DS_Store +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/playground/chrome-extension/README.md b/playground/chrome-extension/README.md new file mode 100644 index 00000000000..44af4040080 --- /dev/null +++ b/playground/chrome-extension/README.md @@ -0,0 +1,79 @@ +

+ + + + + + +
+

+ +# Clerk Chrome Extension Starter + +This starter project shows how to use [Clerk](https://www.clerk.dev/?utm_source=github&utm_medium=starter_repos&utm_campaign=chrome_extension_start) authentication in a React based [Chrome Extension](https://developer.chrome.com/docs/extensions/). + +[![chat on Discord](https://img.shields.io/discord/856971667393609759.svg?logo=discord)](https://discord.com/invite/b5rXHjAg7A) +[![documentation](https://img.shields.io/badge/documentation-clerk-green.svg)](https://docs.clerk.dev) +[![twitter](https://img.shields.io/twitter/follow/ClerkDev?style=social)](https://twitter.com/intent/follow?screen_name=ClerkDev) + +If you run into issues, be sure to check our [main npm page](https://www.npmjs.com/package/@clerk/chrome-extension) for any updated settings/steps you may need to be aware of. + +--- + +**Clerk is Hiring!** + +Would you like to work on Open Source software and help maintain this repository? [Apply today!](https://apply.workable.com/clerk-dev/) + +--- + +## Introduction + +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). It demonstrates a basic password or OTP flow using ClerkJS Components in a Chrome Extension Popup. + + + +This repo will be enhanced with examples of authentication redirection flows such as OAuth or Magic Links and advance extension patterns +using [Manifest V3 service workers](https://developer.chrome.com/docs/extensions/mv3/service_workers/) and the new [chrome.storage API](https://developer.chrome.com/docs/extensions/reference/storage/). + +## Available Scripts + +In the project directory, you can run: + +### `npm start` + +Runs the app in the development mode.\ +Open [http://localhost:3000](http://localhost:3000) to view it in the browser. + +The page will reload if you make edits.\ +You will also see any lint errors in the console. + +### `npm test` + +Launches the test runner in the interactive watch mode.\ +See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. + +### `npm run build` + +Builds the app for production to the `build` folder.\ +It correctly bundles React in production mode and optimizes the build for the best performance. + +The build is minified and the filenames include the hashes.\ +Your app is ready to be deployed! + +See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. + +### `npm run eject` + +**Note: this is a one-way operation. Once you `eject`, you can’t go back!** + +If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. + +Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. + +You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. + +## Learn More + +You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). + +To learn React, check out the [React documentation](https://reactjs.org/). diff --git a/playground/chrome-extension/demo.png b/playground/chrome-extension/demo.png new file mode 100644 index 0000000000000000000000000000000000000000..4f7f1975a5e279a4ec8f5e1bc3ad910d5eed7ebf GIT binary patch literal 180543 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 zÐ9-r#{JnNZuU`_g$6&%BOgV_*t%Q6d2Y@bmL2TE0wWX+Q1f?H+pepQWT95+0Ne z&<*8(Fg0*aj$+fJ`&4c4LRo+NjQrp&G27*o$Au-6``Xa!LyEf4N@;cVsyj0d1_i6? zoKv_O9z9EpFhl*taxYswSo}WXv zT<>HyNeYu6&4*(LH~Cn9Tzf3_^+i$Nv6vg<#pyx0`qhpwqPJ6W80D;$Ssc~ymHs*E z=-C5;$MMt((Rf0)@|oze=8EC#8MjRj`ZSZHKp+wg>aboFv^#wwsueU;n8FE2+`L&z9%3+Oh5k*>kGd8#f5L zP%UstE-ZXeYqCd+oNbg$u3nyL0nEJF%D4F0_6Ms1?wgjNtE0JaOdy7P#=b{;QwZ1c z`FYrEMkGpTNxs{9ikUShwHd__e>VM?v0LWtP{u5#WMg$?VRlv=Pt z@@caML*Uk%npy`Vx0O#9MAheWCu(_QtgE-pH!~jg^6)Y1Ny{lDEC{f&@6$WF4uK=Q zQLka=pUJWorb5T@$Zt(LFtK#ZSz$LhFFSQ?+C&y7e1F5NgGsci5qI_nt6sc~hy%^baYp z#h<-DN98}s%t?`scyjwW4@0%Q_Y`DfHX(`AKeFgcx9Y^r&O9J|$ipQdyk=22K*rhH6K>nLm`hB?dHYiSqK z(5a`d|Mcpz-u({!P9$D}1FnCjDd7*Bxu(W$YE4#|m~)a{S+E*OcmTtL8(qr#6IQ4k zrBE*@=$lYVgGu9FRyI`1-93nZt6ZZ*KLQ9k0p~dk4u?%v6XC|a3zc{agHHTnkSYHz z3f*iLWb`@{$1`1)I+Yit-Dx$U%Ud0T@4>#p_D-FYPxd{YRwvr7FX{3tsVDLi-EN8` z<^j=XrTS4v7sSe(&STP5iiSLD+7H2#2R-*UMtta<_2?=psxO5?RbyE7>b42-wBd@% zqggpQ;Egf6zJnK)81KX7V_TGHDN;ml)Ee`*TpKd|a~dflKVXNf(}*YgI9gdDBh20l zxiRY1yNAcH=yWG=c`2)^E;*SpH2hf#UnLZq=CL zveva3IP}tLMom&+r-MTT2klTFR*HPBE{1s>Dw%|~wlijBu8Q7FFJVF=J<9JYPwO&6 zmG!a`LNP9MK>?LAG72x$ENgW*;2-Vn>4})yNumWJgj|ICn<7E8J=J(V6Z71hH>|yV zwyb>F4BAFU>3F!s_*$L%QuAFg^AB#a7ij+XG3+4QPjx6=CBIl$8*uJ?axtBFUu|9T zIES=9ktg;Jp=X{9awxsgb@OL8RxrNY@8^L|@v_vND1nG~heGhqO>!&WZdH!#;nZi~ z?uZH{i*inIgbq~Zgo*GaoYRwj$czXq)W5h$?yr-wz1=5W=158%_|88Vh0kl zYFgS^|7!iDlqxDOA2J&Bf{m?Y%nb;k7X!-(ZnXaN%tJoE>EL-+c(0P@7D}>vGd%3S zS0k!7GFGO1(i@t6q{PAO zrneU}1s(wBNMGU@NVgwR#fuV1?Wqe$A8uos9$?;+T5e#28V4hZOdvFLZrhA3to7o1 z#e5n}S0^*7Tu*6I7g;~C4{^FB6tg}sOSG#hgFL1)o&o}Fg_XW|!u@OjF|z3>l8#>P zjs4@A8k?Jo-#9IT*J(RS2wICs^jFF2>%z@p4ylw+5Ou@Fk6ylxj;UqI)MGKdu&bWw z_+c4Qxa-K2d3VIpFO3O2k&((Nd?u~sa-gMLxtW?q`34z~Oy7Srp`)(HErAie9N{wa zh!Ju|!RWiPov;W1>MT>>!_gz@@0dK`_G&5(oRG0Y%ly1Ghy0$xYR}!dOQudmX21w! zh>tb~)Oj4mb`-PvXD%(7S^=u$$>)6O%acys0BwB#Ozn4`q&IP-VH@$!gI20mj2D2? zJkULx#ragUf61cr$%i#X0h*l+c282yblVt{b9QklQgus!u_h>+VaWUEOM_?KNvzyk zZ$$|Ee*AJs&F)Xl9G!ef%AR$S2WXTj0HvzmoAZszI4h}sFGD(CYHj&0*DJ)=_J6PL;4Yswyf{OHw$Y_)YF0d8HHv zJ$pz$JfFT?f5>Z%$PPZJ8%hhu4z*^+3b7_!@Vc2R)eRA^Exuls%ZP)U&JRX2_s%*! zCW78mR&IA(C`2uxURczQ5opZisdj#)CH&Ui|5YJ@|4i`|g)|9{t*{=&XJlb1CmBD@ zz4%n&prl;QlGQFg-n(woAvN0Ur+UN{eXKGMXwA2b^z0@q`5qRQ^ zO=nPN>g8^h$W%y#OTQj$C8Qv0p|d2b2P+lBrrJmibz%VEL?xVdLOdieZ9D(Wc#f24 z#>kwHx*j8IO3nZd`RT1ZNe3yfw1Pt9SkY7*uU;0SmvK{mOz8D|F89+E$s4VP;VlT& z+nkE+S3mf#mT%9+d~%q3PUjUw1A$hr(SknfKCGCXUhNdq%_&we2hjO_^Zt#x__PC_ z*_y}-n{oZXpddOn2e%=YCUbZq_^>im8Yx)DZWSf=DXule+|Hv64_;VpP4=U>9x%zkt|c$$j%l#}F||3X(2#H##L`e_OP`)6_5 zjPYfGtWy`!n?Dr)JOPr9xne zuL#qMuewh~Hc9wOsm%7MMgoOXKGbbSOxjoHS#`rAjh3xg{ zjI%31UdtdeV%6%XN}5~mj0woawb|egCL4n*LPGMOjUnfcFeH7WazEVUk(PePvm8vn zt3yE>)XWYtlpg!xddWy{IRcmv*xT<@5zVf?vQxQsSz;(|*pbx{KNB-EmkC9@Q(y+8 z4dxrh3yC;bt1W*^Tzz7q;CH=$u?nCUC$A1T;adRWH~Gyjic-yi zMlZA_oarw)ZOe}slf8h)*-2iDtc-k@F|{+}eH#G!sxe-Qi+|dk2x3-TvVA$izS{kh zzNeSjv^#<>TU6!Xr*xTJ)^1Vs|C%lsIWFdr{B{$`-o2v>i;g#gL__IRGXXOW&ypdr zp<-4q4BOj-tsSn)rEBQ)RJ;S%=DenjOd4RS91V5k1e&8-TX}EQKikZC3W`ohV6vO4 zs=N#K{tD#k#N9lxLNXRI*l*@JAW;ee>9HqTjP-tZ-JYI+3fWx4hL49ILw+xJg6Plq!@G!ACDJl7W&p z@mBDr%ILh(c(ERk7+hX9qxY=nAU*5y_4NT+D`eJT%Z-f#DL4ZPfERhjNfEgj8M;84 zPAw-boD#=BQ?ms7Z=)z+@MnjIu&K@=k*&!o*+m=htROd8Z3`d~0r=mKiy^JC8*viM z8pYE<+7G$$l!2iWHcBZ0xh%`haWSCAkhCYrzBzcYG{hi*w1niJI`VsLzp$IE zC^PTrkJ%z;U*Zzh26wSNYxa38H z1-(r-kAq8-mWNE>v9ZU%vNE#f{MHWSIwRzhxnauV$Ol9uB#C~X@a|DtS=Ti*2r|CV z^#diZ@8esxrLt4a=0B{%k%z3`$#xx-}PzeHk7w!9k2GsV=ENbMr0;v64`$&_IfYoSz z>Hp5HUqv~B zr8+7~m02+=Az?i!HKqKp7|5hP`+qH&IABgg$0T?N&B;nobs!L+)2m=lXl4DUDnyF< zz72I@4@#RUJR-uFkdrCo@cx@Ijr|T~&QkT{Q-wj{CPrlIlaILMw0T zm_O5QacZVtMaU^+h(sJRUDv?8hb(iNrEPA$;1E*SuVfsD%Q=vOj#M>7@_JBW`4!5O zfV^ooM)vgd^z(wVnl#^ZzJG@Eg;W_0j475dpg>Te5p&55m=JUhztx@F-4U^>Z&rc0)TNZS-r$6gDz{jI7Cz3nr75KP%9~2nL#*T_l^F?!RF&B8OlC*bWQN~4sVmsyhIemNWOu@88*nL$yp@Vt!jrS*y~!_7hz2*CGOWM${{i&3V{{Lt5im3r=3YPqo~0+Y3|Fa7 zOI;yah6jbO9v>x_zP?%2-4`+R!MClNAXcB3`XD}rZyA1nYoDyA%!&MF(V>1PqKgGNoSr7)h0iO=wRC|fVw1TRg5z3-xk)*mIgWf` zdlnG#7g~njdXFioT}|&PHlN$US~{vu%F7;3lNSM0A8FP6&PlL{zqwKZa4ZwviG)%% z(gNa}1a@o5cn=eT}=(`xHU*?_f>y&qSf_FpDQsa5^7xIxFxT zx)k;9mJpDuY3Hq1bOPa-@VJ?GVbEVDfXm72zdgfK4k1^=364lYi||PUph7y?`P`D| z{9+gk$O+++Pq5vmyjeU%(vY~8^HSdAbacRLb9zEoCF}T))aV_T#td(a{jMhuMf0ce zi;Zpx7iO@&+3vg(p&_PrT-sUC@~4qgvDh08&mTyAQhB3(x-XIzj`!1_hN3r@UymYh z{f*umjrm+>yLrpkxsVq(f(_~f0}A+#9x?b zi1rpP`AK~tR>(P@((S)6KWW+Zj7b1D?teDp2fTZ$Vl00V1B z%)y%PTEd%yBBR}#N9`~1cAu``J z*AApY2fu3njfh|V5D{YihrR66FZ!85cacC{u}q*x1{~UEx9cob3PiQb#69*TN{3|zuG&LE_zV}{u`qK zGKG8180i?-wP#GMtTA5uzER#gjSA*{o|AJ4e`5hauD<@^`yPDqi^HiM=kr~L1bxYN znB_3W|L~QcGdprRUnhsYV*p&&_jgv8{X-&R%_>{1(c=2M;raQ}|MN}_o=&6s-UM_2 zy9WK0U2*@gt0n4xDxx;uG8aRsSeq{n$@13E(->W@3B#FrLE}sAU-+Ze)ck?zGYI$nWb}R zzF7IZ*1~slwZ%ITLgG?P$&0h2$SH?rIRK?v>gSn@C@4-aOm+i8fTanG)Nla#JJ~EB zTt*=Vty@WdDX{zo3Uf59u!^8iv6aD8Hqn5)1O|x~f6>`!{u0j(aY8zR>vaz&EF6HS zH98~X*@R8WdQI0gpSK01Qcvz*iwX9fpJfkH%x3QKy|f%+Rf{$7&9kjTX76=UH52mY z*E8ze9O9w*W77kJRQ)t|sa;K}2kfq>`9P8xglfi$A}_l*5p;H|fB|k(()iS*Q-7>w zAkFtK17OpA3YeG+p!xZ5LugMDpTYQG%Eaxzs77i<1q}E3=l7*x5HhRz+}zxu%|`QY znNTQgHvs21G&Df?^FLQ7rnM-6!DTPBE7E>Z&`I806bfkdk=MZDN&_{@j7UzFWC2Ij zfPS8MH9T^zc$x06Hz%jwiSPnS`j_eZSVCU>!@s(932A>g?tg5H|Bq$*f8etJ@8;c~ z{#mK@C{w)SmfXOEt#Dd1x!aP_fFL0*r@B9#%w?p3-eDh zg@R7gI8wjh*@?~ibTtiR-xEL?*8Zw1NcN(?Zz+obR8Q}H51`W75%(E6airtmQ2Bgk zRxU(n{pEyji~FzqTPzNnJF!MMRE+zpSEk94*z!%ssK&H?9RrT`cDlU<8MfX`L~2;7 zum1hrm)9!xY`Z)*$?<#`X0@aOYi*yY4%Uhhce<4lXM^sINOsXWtA1Mm+^3DapS(KvoG@E`{VTt$AsqMZRhup!>bFU9=GLT{iq~Q#$@ToMSuvsMT7bua zbiuz|OF8NJU51pHg5uf%zMRES0qu^^`jPk}j8<5$%2sQsh3{Y|Q!A zya(5A78Wh)g?)bddofhF+dqIDNiG{oIkPl6!L>uUiuW%X6kgLHHs(KRa3p*g20Ef# zNkW)|yt{hYKpTDI+`B-O*;D-CNGoS@lf**0q#sgTE;#+(B!uj#f$u@^KB_QYp=(U% zz@4f)tq=e$US83$FR5IWbasxYwdZ1VZ6LAeW#NgH%$Z?; zT(lBh>uK)3h`|kexPq3@f1kTaKqe)qPh>-*)AOBs<>$oLN2n+E1RsKUD2_HAC`tHR((GU#^ zN!_ij#T?yv{1|eSKij^}V!~D{B2Vd+;o;QfB{w?a&?28fAgb*;m+Esa-|F&>2VkGD zxECn8wAV33r}jG|c7+~sLcCi_!=DWuwCn6=>UyLiB>*Z^zhvy^uIjKjzBm##-EKHx z-|0NroAsvp!W~l+H0yTxyTZE-JM@~A=~yA0?|4?GgO-A?8kbk9vvCL}Ux)CmI}UGD zchi%}z@AvVE}0Xz4|1fKx`sqrKkFR6QrFTC91D9*6X zV}ss%hl@7bEmJQq@2$C{_v~(=fvT$Mg}(RJ0go9%PM|ky#beUGew%zyk2Bv6d6bPE z>?%m(ft>at=sRBa?@`&D4gdm?(qfqtZwo24*6utxNH?Rq%d%ryf>FG4Vn$x zZ7s~%()uUv=0^JyZL$AXw3U$5Qp3#fWfo)^n-|G&Vt)sYt+=&2&murDIlTUTUXRjR z|H@L>$WuCJ9?3pNcbJ#ztQj5*`mCSOYT+*WO23?bZdx{M zRPnAwBSk0KmAB3SrH}s5rQ5dw=FVUu3Y?d^!->iEHAwYg)xqtD$j^)bo}2fX>mso> z&%DIPnw@R!=yy3silrt__wXObhgKEv_J#EU|M;H(n3Km$4@!+)#V};@y_|O-XDwd*ttY)+IoJP`_Pkkt^Vg)bH-`Z#!9FJ3`(Q;Eak<#WguvTt5GLa*&Unw{3GWTJO;ITVstMaT{(m@8; zTh!R)MeDev$XSEeUy~M3vI*Pb_F0b4p{%s<5(DhP{hw&pqFmqgU-7i1GY0ALlbS{Q z0Zme01n1kctt01SrA`6LDZ6onrt>`;i_3JJ?HE0G%B8-5#GzS6-oh) zql;Ay026f*7-LQ=n%pCotMdt*b{o7Hh(@4o1q}|~r?7cCxi`Jf*4=JW;;4>ra?|&+ ziiu|J*RrGs1lP<5Cxmm}WfPC#mXE}`CjOuxNH4+6v?k9-F0|3MK~P}BE2r4kylH=> zAY*(`50|`_D~{grhYcEfSqIi;`PN+>?~~H|pU}&zOczO@L(uW?!_nbV#36 zj+c#xluW-mVeMR8j!lWilw-rCXcO%P(;L$SH0+~Z1LBt;%eB%F%Mj290Rj1_LM z=~c;2R@hT;S2x)6sD9NDt-*d8!(#B1#l;2KAGeb3PPET%7uMCQL$ftm$wkoG{mOv> z9ymEg+s(;s)An^PBX}Ozjx)kPH>uCyTb*}+ddn3oKUD>3`c5!EY@1V6_Z64iitV8s z-B`XEvjJ$!TA;&maKpE1&gm$vBj2SniNzw-O}j?z8SA({bDJ#NyHV@i}V{OPstDKYO9GhQ2A;F(6rL7xAN6{GcR?hc5+%< z-|P!9ai;RvW$<%d^o@*b_r}zY)x1+GBF}c#YwB&aWnVJJkmP!Cum*&ge zy2Pb$Nh*&jmwq*ku2+&&zxt*KckhxTcQ%QbHKe_?YJu!1zbPAo_gtBvHUAXd3XlG0 zJm{y>;*g`qlBWV<&GlU3hU)6aoc?7=LB)i~x30|}-1ETWwQViv>=)rU#xq3!Q@LHx@6a@kHRzLlB>1Lt2msc069A8!ENhEUp}@_ui8ldd9(8is^mg+C1M1Bg5oM%J`(M9nB zVEg~4w|mIdfj}Tv7wJ2N%~M0=`}4bV%jFrrTLaaBWP-n@~8E19= z@`TOkXX%CUy3)c-D(LD^V5b{t5mIJhwiqnXZNnzKTK{@hYnW?yY-*?HiAD0_3*?lC zP5cSUWS~L*$EokINO;JtbjDX#oQy^lW%@yf5$hv)k(-sBh8vX#AR}et1-&Y+*&{vK zC}}QY;=dbtx2tHme#bYg+hc|%_3d7*8$&H?{c)?y@`#GWI#kUVj~r<+F;Z^>anFL% z>R1T^zL&8bN5WNc^DglQ$fCpr@O{nTMLa*tUxD;J+F028p+)7rRyirOBzlT26mDKM zE!X>!+~iUqkk5Vb`^k@pNOTg1k7lzI-H9nS7Q1NfR+8pyZ3RHyZtmtR0fCNNO5OJ4 zF5D?ISZrruOjW+zz<2b79MH+h%l>EC{BARZyS~Doyo)TgGXms9OMEHUY*d0m2&%kF zQs~9k)18O>&+6~>CX5Xpt)}=5pBA2;tbQ8v)=M3VQaz3L`0*>C%fD?5s4^n(BL1;a z-&a2IrTi;Cd0y6`?hCe(CMU6bZ#s1lgE^BuN5XwvjLp^^7uF8;Q8kx!19<|sUV>bu%@8R3jTr|`{+ce-WRntQygLqYD5gdqYQ@%MO?44RW8x@Z3VzW`(| zj~5lZ7P>7=t7^9)CV@>msA`2(IqvWjP<`THW}BF>=z`M7?w3q?NA4^}{ezVp%OKy> zBHhYKts-&vDi=gFw#Lf9#W2KvIX{}+VfJl~e!$(WEbnT2fL*@TpBp1*L7wsT@3Th} z&3xM$&Mt9QydBGyO@vEci&5yf&iNchH6D^b+&yxrnfttc(No|MH|KS)TS53@)AXt5 zVSHznLTb^{lFFcS%*El^4$RZ(z@v=v!{wp<7Jdk@<2&wAp~`04?UUT*)Ep4Ip3vE* z%rMzgPR(5LIp#$7yvw`%s4z@%zf^IivXs!q{^ga95(;-x+rgf+*8*KM^jmCywh9@x zJ-E(yXcPV$T1*4udt&nDBniG@t$pq}WO($|rX&nqU~?VC%6}bZz2EQbx}Yz0M6gr~ zs0qK_@q3u}`lo>6TOdn|%{x5AxmKGTDq~8$vu+f-UD{t=Ccq8zIWxlZwJ5`!RjWZ^~K)WWJ#4z z=XOLkN}3Ko>vH_U&UrA_$g)$BE!eOXvvCbIoJH+;fgI#^SE|=Gv<$}610lM6z8NJZ z<7l09B*_k3tpStj6}_xa1mw-*C2Z@zJ#owaM(Oq$M7Fh;h3GFPl;=1jjdLcT`p@F zxU9Qb&dpkLx)R5IRrIH^v!!$y__VjnkXl<%%uy5^uCm?0wcxbw?RmPWz`tRAzq}7? zT;Z{AJ|S*Z>KzhZ=^tl|BR1lg%O(SjU3ieG&Sl?e1QvTq^C8n}xr8_Uw|eLIZ#h9 zZRARbx3u(hCcI0YIxij&wjKUFUXC>|OTD=3&P`}9C{X{#=aO|e?MpVx7_|sAgU3~u z`|ue9FJYcNboKJWO^PX?@0OBP~poF$^LaF{^F33l0_B>#df`4 zf^3~h;C|wiPA8~js^&YE{=vcH{Ew%0o@aJETFq7|5c3uOf}j4G{oY6Wm3}ktut!&Y zu9o?y;I~eX+J5$SbYIQBW!T(N^cE+0hU_;@$2fIQ)*S5AH^9uCA}Fj?k{9+yaeR4y zoewMh^(Svp1pGUMe-c_ivJPeMaM1=<39}rozkLwe?kK+V7Kqp643XWPR54qp4mMot z)*q7fP@&^(cZ;lYOJk=(0hmb?RcymD`SNUZmFlBxV}=QJGS|B9#yxrOnMumZqfl)2 z)|qrtJJDmGBVpQV`Gf{}OgFpE^x)IU8meN;whC_UJS$FdM78B2;yVt-edkI=KiPZJ zzVE&@pH7AyG~Vt6;F)#243LXN9QOUK2{oNzn_Pl^?>iG9V>JSLOU!KUFUKtWzM+Te zYe4MTT!1wi1f(^qT6Biw^*AOIw*f$=3d5ziT}jTGW}}6|gG5fvG_kb4Riigw0=wyNd*?G~V(a119yVr$(`qSAh}-si_niV(f0`|@7o5?8|22&r zR(%_J>})rM%&>$K#g`dYQrYwK$fLp(w?mj12!bi;aJ6H`x7rXS?(KEVc$(sCI@xIS zL2?$`6{rIW<=uKU&ytQI`4uAUWx#wdQK0Ld5X#bkAeEFn2?&1FO)mU#D3Ht|g{%3X zX_OmD9_>Q?3;1QjARW6SG*uyh!YQdQS!1U6&5;j+fKYC**J!rQaix(b(K2)rPb0KE zC3M`v{aKSkL&=$jg)l>?(BVhHlaV{C)7FW(cH~k7D;vQ~=}iokv2MA`5JX>8cQyDA z&U0pvflEHRx)Y&fk@~cg(htt>zv3ouxP`GraXvzL4`=4*{bKu??|_8r z^PPpY{mHoWJk5$V3jb8C;56{qx&4QuO1S)5-{sjB4TQlYHzQc~0(*0lbKvgdA%m2- z%OQR>w@o6u-{lBR%UfG^jw9g#y;VMEQi)YXW)tw`y;v_=*?6-iTLLQQBQ|epe>jo>%fI+#Vm+<0Q8q7VmbSb-Jb&dG|UrUl|pZ zP=4^35_g|43j=$r&>JLv-W$IYWI34nTHtQfY-4qp zc#v;d2r^p3;2!>3UTyaC5$r-mak4hf;HY}bgt*KQ!9M67(tbN;fE|>08GbZ-H6+cj zyzQU$oks5K<9@WULtm7eX-?p<2r?@+v^o_AY1i}gbqr+ND$4F$W}Pg5Lw09Iyi<~I zJ1(=(6~a#(9pVB#gO7j9o^>Lrw@C5U;zT5*nEy`ULVj`egTz*FKclY`+xO+WYLzLn zv7m~iOg$9hoqv~}(YRcZ8=U>>Y`!h@1F1;mt~^8$%gdw7ujq7M=EnSZR$ex+Ptuu(2i zeGka##k*We37rWZZy(oZ%SIqWK~`B6s>~Ee#yF7=ZO^t&d-sT#3sJrfaVY__N5{cD zvZe6zTj<5f;1Lh4T%S)mF`>P{1a9W53=9I zrucPuCATkf2q?|*%#L4duW%gzxRPd0?%W(C@^h0p%A*xXHqfW~?PiS%z$rF|$DvIn zoV*(>2^}_9nD=hi8HuV`1`FaMfSDGx-X524Jqj>4z*i%dj~F( zvc2mU4-+#;_lFysytTc_E-VIQg0g+R=hG#Vat=JAvSDr{1ce(L?Rp`?yGv<<^cP#@ zS3^FgzvuPDy^F1ekHQZrM_qxE)?wCDvXxI-3RC3+nMc*>zQop{!ds)+pn>XXMQCdeHM0e4Q&z@8lbnm9cX>ct6i^_Dy+8P|hG8&Ee6y25^^wj4t#mG<|C z2mSD`^OP;00d%QruJS)%U813+3k`*uS-xgRbiAUp;PJ^XMeS3#`RK%F#X5GJr<;o& zNl_MK_%>H(K*oOgcV>tOak9tubH0slD#>2SL-lV$1y{s|>)fBz?aZpT!9v0pSWa=~ zKauE}Lv|XL1+zfuDW0~I{J|T(WUZCojfD|4W;um$0-MQdvf|YHFpH1aHQPyVtGSv2 zeC|(DXLy`$Xp(McSXmB$u8b|hFUx!mj+qOo1IvfF(m}1j#fLfm(y8!{4;uOjmGbMv zJ5-26bJWku;mO2@vWS4Sq+kT~lmT+vXM$xONNJ-BE?fp|yfn}7E`eL}=YXh27?L3+5qKIp_+V)Ln%8)<@ z4UrwS5CG@BA5i(=uc7Cq)#aZzYS*K8gq>v%-#F`wM0_CCe71!+OVXzDLVX=Dwp)T6 zr+4M0CH1%^{XX*@?m(#YbCm~$EWcU~(J6Am+%(&k+;ZYQO}hPF`4N&2S?d)f@Yql| zhrljW&^6T((-gYE;0O&aoxBZ~kA()iPQHT%Yr8S>j|~=8&me6V&i5sH<8x9M`WT#B z$#`M^7kghG4rTxL-D;^UB`IqWijeGMEnD_1MKQ>d-PpG=Gl>Wx3E740OJrw8D3mN? zn`|>=UuLElh8e?q>Ha;x`+kn+ecu1yNxe+=G)~@iM-(r9Eq}* z-Aaui-ema)#O}U00Sb(#^z%kqRu3`bUKLcC(A#BwO+Y)7b@hCCt)o+d0&X`Ht(zXH z2h9)ZJ-Hb8Qg&ogvq53|=O$(sJGQhX#LYx%JdT(gM49JKY(ftkBs6tmyOQ|0ktEuHb<(ujQ{ACk8~RtB%%WP(a)n+#nF zRCN~4ltYy4Ejj6HVyfUCfoyv_= zz&E`^o^};&z$x4>#QNu$8bFKt(sv`I`1&H^Px_7(r=L%p<#fm&FT^#&u@WH-o2+bR zV_}tb%TNu|Q_ndY+L1O)yeAoLJpAI4tNDa&k^SJf zCe&Bi<=8LmPY*SWTcvUrf1J*{$-5-#SL!455$dp!3jYL`fE8Nufpl_aOGNX#c3LZH zERgTkh|AOnv5>eFT5kwR01i)6LQ%a7PzmAcQH0d!c$8IawxY-#aTSHQ_U^ZI>i{D= zS6<|zv?i48l2{mDFf>oa9ofLIfNJP={iU}Mgz)1@g@G`k;%igRu)R9 zvs2xl!M{S*ud_=t)C^ZbLCPNiX%|P+LH3L!ZSO?ze4WJ5C2Z()xKjCsBQya=`#7#gGEKlw$A$L!h|z7bHcHoe2ceQdjU=i ztU_=tTZ%)9(JF_n-4kOP0z-?B+%LvOa!QBnv_mmXN3Tzz@_^*o4bt{F3Z$GT{i{fM zSjPT#!A~0RP__YQPhe_ucEY~rcx#}+rwOQ3Ce%j%kK{<&;E;E%beqWyXDJ&}OaTg| z4skl+oBLGaj%Ctc0xSb9Tk;iZj4Z3$3eIS=2U9Ti!DuMU`Ysov|I?7b5GMSV)TfuJ z1x(71I%Hb2Lb|RAk3Prh?Cc5?E7@KiGO>n7?jAfv%#Ctr5}V5_oSQRg%*8rPMM!tT zTR-1HS2$;fjMx;jB2xgTy)=08z#59y^|(-5%_=qVDnDFek{RorFWnc#`QtGAPgAVq zt924kS>>ChX1w9!)ELTRlHhBlYTZ*48{r#%_skc|vjVQ3=y{xqf;FV18L2)QhzuQ( zmI@CT?+iAqLQ{#Ygzsw+bnols<~D!uWtOKg?BBVdQKOX!GN*3*9+gtz!vq9zfn=UKLKq)(3Gt*E*wW zE#5}TbCzQ>g{cxb3{s^+=Uw`@)nzv1jY5RFGNFmfN45ik@e501O&=$?&M=V2?I4}B zi`TtK(_~-A2u9BFxG0JW=7_&XoF4(Nojzv$JcOeST>H*~>*ZR0(BWW#sXN&@_lG|U zO-UAi0ZQlr$6P26Rmm+9V>)FEz(JWI2|Q7HclW&t)(DG<3H)Amue&I4&@H?e?5a2J ziW%k-Cv}|$-0F~l?D&uDI$pM2@P*p^M^9RTe#+7)*rNfX0VylApIIlfw6b&`@u(Q* z2k6$q!w1Cs9(y?G^6h>DHqL8f)z$o4ywTfIis(Za2@EVNTb)s^^jdRaVPN{{yfWe~ z5KP8n%2)0lxEQ$^PzyDOrFiAt4{}$52G7H?Lk?CXgg=S!RwQs5?8_F3+j_=&=lgQt z=CZGZpUHS+@y{DW1ML<1rC4yl_}7;b3OC$!t(~6Nu~h^0=jYY&-UXV716R($iEpn3 z4<5>09p5575yg+riNAw$twLb5K4OCgm;8pcB9FQubbI6h3D%an8#-E@Si8)m&WAc^ z%WY%->8+wHM_l8MK|wr`O^f8h%@b^YLg#5^$wNsSe6n&RC2l#Pj8b?!3$jjgU)Nt|+lw<7f2nv)?Y z$`6X915s)upB%qDK{(OS@GeXM`Q%Y;;v7{$Mmf(fO^#;JcwYGt#sU|wrUB2 zR*(0x{a#+8{WLT!>ApGn5;t2U_iAjbaDmZr9tZ)s_m5Y?bsImS$*RtS%YIJlH)-XA z*1@2~N3GvpB=x^aP}%=HZYAA~FF!vQA?J18;N}3&`rx#i*95P5rwTXZcykWM0oIz+ zTE&j{C^-H}TLchK)g_1YSLQ1_)^)pkEVQ2PdNk)hzSVk^qJaRQ(blGgO_+f41qfww zR+v}V+$x~D(I#mk+%H8EYZq&MmPK^}aOH?YR}NzS?$1^g6U4loL|qU3kc7P#?l_@t zaQqy>=f~OZ7`j^gMjOUvgQwsF=C=xkk$aR(Jg3}sFGmz>j|nEq#4UD(-JA547`7JX zEJn{%(^}B9&|(+l6LmVG(9%lM_$pOUL}~ucgo0F4#0ZtZoE5KQdt1o`A1)`KV-&2}^q@(qzWeK(#6T zA7P019~v#|?)|0zLNFHw)uOPw5Dp034?jBu2-GrFb%BXd^_j4-W~P~h^xI#A^;_E~ zUSjKL0A+TlLq$GZWASBL|FJN^IH%bi>&?Mq3+8&ep0|>~tk5W=nT=GM%9s1{T+T5& zC(;X2nn7={Pi~G6wBxHPOh!vytaVmfiygqSC_H%$#!+`hq@*0Dl4VMUq&;5APE356 zl+Q&9OONV!ETC76dLrB)exMPmFDe7jOhVT&D`4n5ba@p_q3~9TePZ?G zn@y1`;MK;C~C%G z;z}DqBq%@f?Z0hQnN@PjKFRss11P^MI&#}rE5~Jv`=O+n1cUnVUomFo%VAf4K7+ww0)GsP%Gs`Iy+1T110a~(#WX7Txv*sb7S zhpFCHi4WY}!r;oiugd(`?8_uRGa*M#q{2~FuAWx``G?ngmE+pS1AZ8g$T=7A&I@320zII%5L)S(nHYVQ9L0Zl2gXBtMJB<=D`e!^}Oq1TaiL7pXWmT zzU$FmqR$zy{!pR&OBKV}a0HN2gH`_)f4CeqxRSr}dEHtCYx{Z0Ce)>i1vD->_(uC3 z=Pl{2ZeA$g%*bZpla1|9gVHzBc9tZg2>sToY2*@-0Elol4`g{xCa$f z1x~fOvQvw*dY!B|rfzw<0!bwWZXh9}P(9K6M$(g6au5`^pL5^Lwl+`jTj#lCFyIZN zbTLjCf7Mls8z7-ruwQ1Xa^$+_KqSnMKH$#DctdV)*TF{p2{j_J7qs5h$F`ImSUvoy zYOD6j51yAVYb(i3&Rka#RDT14>dkaadxH(a?!DE9r`*t9{Unpm5PU^#CWJn?_WhLv z?}D65>DFHf?1f9R_;zR>NRuqD{m!JcDg5ZfV5!S3+64e~9_JQLuMHtcO0_cW!yCYs z$Vllf-IGrVPSma6@R)_VTevggRaI;)FS)&+0lfYlsO)+^S?DBj z?HU^A_?YF!XEyAo#O*w$zf5ZxQ=*uA}H{sHflQ)Dz#aIS(f{!BeO^NFxx4fwM zX9SS|xvQ>~zY|n~q@1mIEMk87tn@;A*d1wvYfV#x?-_{v)8IIio0u z^v_EpW6!P&d(HE<@SEMdnoet369+%(Ix*2ySZzqpglX^0zYa|2`OK;Q)mq!M(An#| zc=f(yR`Dk^ips|ytAAX-RTpeR1_0p-Tr5hrb7?74`ju;fZ^2Osrcg~wzsp2{cu@Pp zzJZ`yh6^CWk!?7-`l6rGhoIzpfqC8M&U{Gd2A0ZEOrO_{r}I15I*XRM{8r$%I6$Di zn)0#i`=Rh#zuIiFx_S7S%d~R{Wg5O@hR%%w|74dhO(2`zs7ls28GnujeqzI?3KV_i zhwL{BLq{Da+(;*f**b_8kbju~fPL6*j&6<}5*b^lou8r#0L5a+0s$|IQ!b4Sywv-+ znafj=Vb?n6+O)Rn2TWy%+-uQDK)_DK`?V4BkOWog-svXa4P`?XXKFA$nDlMk$#J+p z3$NL44?eCPlK%>RV0oa=swY;epMaXsRcGKvZme?o^asnNopDuMoXF+_G=4slVi?6y zJ6gq>`zL)84(_x>eu~R3By9a_gQxy%@ISmqaF|YmQDO_B2?sJ_N^vImDt;Nb62$|M z?d2(*EQ%JDZQHJHpb-SYOf*Xo!Vf`8PL>uT)?KTFX!b^WjgoSQs|$ND$}#PbQ0#yzgk^l9|H@wxVnlo9u7O`>J|Ks2 zdtdKMUOcn#URgma2No$qXIs1koL`xFoM4Cw(-kj=mQ~`9?(864lK+f&QC7%nE5CLH zg65cCIe-VpwT=%Ecn8+pl{%h9vdX9L?0IDHB zUm>?sRS))h9|@0H^Y=4@+0s!?4eeBr-uA_smSS~j$MKDYnmI$6rH{S+;q!oGEypQE!u!J{uAP%UDDk-^sYh{cpoLM5p_9-$9 zs4^p^T8kTdF1hKixeh49B|Cu9d%k8A(s*IyTZ zGR|x3b%ioD=GgFs}du?_cM2;85A@K3OJgC6S=K|3+C9m^hG(u?fbe zH3%OHX_nC5LI#x$PUW7aZR(&}2xKd>PgZ&0aI|TmrGt~A9NYy77{NyT@4{~OKFD#} zw5gfddO`{+G3Me&Y)l!$tq?l_#HeKiZ9(4T3`430-%Iw)i@v zO=}@`B>J{uthdmi6^I_jbu_2*Xf;2xtn&3Onq8`7e*bwMoLKf3o*QVqA!7dM_~V(U zApD)~tKNKpF^u&Kjn5XEy@_k@uN0J){nM3S=!-2z9oGh$9DHW3XoFnbrn@H~lOFS5 zyNh-?i@K@1dDjJH>KqzhFB3B;%-l@_rm7!N6bjew&)%wed;^ZE3SBxXu47y``?2Nn zYbjm2ujj7bWt|sh)azGpV!bN-^|snAh8wwe`)^-mWZ>6PV>MP|Joe1ttIn+!MAk}0 z6O0-lKRvA603}!|xd)nOf$q~D^i8GhFPcTeFE9wRBNG(2?>-F7s_Pg}(;FS#^^L~f z<$0ce&`Nr}=lot~BGaF-tNUR89(5vTo;}{|#xA-?WZ9NF0h#r7L|`fl`VL|2He?o$AY$>iqH|48frH6E5OfV zOG^{=Inn1+#aow66c(3+>tp>6cwra8559%4R^l~MFRnTS*E+X#_R6?i?dxR0dW1Y( zq+L^YTp2c0^c1BMrW-VL(GtV=8MRfh{zki}tKGr!(zYTUOfU zd`VHZ_s_3g9<$Drm7=5;VryLvNAH^BtY)e!gjHd=!sM2Gsnq*`B@jT_AWSxqU= z_Zo@Am?k!vBzu`{;cAq8izYkJ=(wKi z-!uP&TbyGzlAZJuQ26;F{M;mUTC6QqnT%}%t4zA%65XnrYiV+2U{>Ee+Hch#rQv|M zK*CIETSrp>Hl3Or10NGBgYBsuImY@_ZIkgb_jniUY)==XCZ0;sGM`YGrwsme<zqD+f`8MIFFYmi8&f6lM#CC%{wCs_92nS0xm42Odp-l6(c z2PT>XYNtcYyun@6q)TyR`C{Db>*@8_0H>ydF#5^Sh6x`jh51}m)PqO1!ASR}E#{4x z96rz8OOketQwU<#xi~9VIg^=!7Z+zT7*A^_8OWx^zC9D+ZL`0&DRB-~Oh^(xSwQ7s z2Q#Cozq{LLG|6$VxqV_yKDIlWwOYymb< zNg*0!MF=buLwQ$G(Go~fjdlGHaKZ$Vj8xLvzQ2?=>1>9JqfyC%+$9p=MGS&@RAHw_ zoy;C1gt=C+%VAYc%MZU^_|}RyWX97Y&*qyb_ew&cnb-D8t*POw(FZ&$5^M>4je_ZI z#0O`7l`wZCYVo*!-YUw0Pppnv`SxFt!v$3k?Yg`3a{LuNFVeF;mqv>cUV}`1`1s4HCf_+{ z6Jr8^XjTIee;L<`(12)Fy&<(;I(^Q3DHDzA2cZ{&{IZ}1bB#8YYap_wDd|c?W=DVsaDVW{`bF1lzo=I~h+XJK{)uUk} zwL}{nfX^{f8LdxqAJU;PRy?|=apo8E#|VMCNw=KikDxDhK)&BqGOVCm?{BrAVB0D0 z(1rz}zC4&DQ{T5x4*FzLqhmIMhrbqOiZAW0wg$*-{eBhuXvAh9$`lAJo~_w2-;+xt z@=Fg=o_8y*wORuEth9V_nHpJm$tklP>12&L7h|R|x^N1a>+rBfoCpmVML$+sTt~gm%kLAYrpB)Au_TWe94*;=|ulw{}LvX0OHKc%gXVhAGZ+>0DR~ zVWQV@e|K?fT3>k;s}9;$ae3pvLw_BJgCPj+D~Dka5X@=UD?I(%Sk-OQ79Lz+HJTM_e2W_dbp_b47bHS6yG%CjSiTq47TuV0&%iH#aMoYIUcdI$Au2y{qFd zeUP7^k}^7GWn`u_RFF4}45XoKlmV|-(bBGE*@NSQS{Yfor1BB3LGg(^{^#TChhoq# zuG4O{em3ci-nY9y?A1_Gr&3TKnx^uz*nXj=x5{;N7%^sLFQc&g*?tleVnXWmyWf$x ztwVM=MeMeXdlS6(8_^S)vAnoyQ^xf$cs|CbOTy4Ki(^-tZ@!<5{4%lbU!oQlsi(K* z(U|6}8d@V>eI9J$HQ~}GMsB3V`6<-q=`6hzr)^C69(cCAb^UgI;aEe#{FHCscz-V_ zn39Hw7U#OKpWIBy`Q=9Dj1}r#(?ql*M}|~gC4!5fZ?mYqQdH&Emy|8cl8smN-rf#M za+E%uVk?yy^WrE9r71sTgNH0z6Tf{aGF(b0=WD}u-WwmKuuch22*GlT zS?IS?r&RE5#O#U}%m{n}usF4l`)z;OrT`Kra*$Gja9d3Q#x!5iezDI)x-MeJ4WF0H zyYtcLq49T3?8mY_sOftzzpk{Uo)xETJi5nNo0~twz4bN~wBpdh6L6OOT4;=TiR;<; z!x&2}(VxB6iYcUw4ZOgBeVan5lei&0(;+^Bd)-z%4gTvDDNT#~ZA4iLHstIU*KDYZ z#%N3DDOF-EA#GwAp7jQ*iGaUeF8A$EHZ@ZGIL!oRQd6B15~O9kw|i^!Z8u$1Lh?7W zL{`OCK0ly9YDP)y7b8-8e{_ye=NSH&Uf&hK@VG=H1h|CD4?)?POUKaks{37Y@b{~| zKjSG2CT$K{!#&AxpnVwIaK@_Es_OpE!!OZHaAZKArCZAAb)Y=$CxctE3jV|(*# zIee*km&B~NuVEeZTNS@2D&BGr)z)(dzs4`jX-w`oEm2>FCGdZJlI5SW?N8E3wVia$ z;F;W1>m~u0oFemp7^@L8hDQ35;547-kKjX$-SvxJBeKM;d<3<{{U`6amE-qw%tGZ? zU#L3*pi6&RLT@dTnDSWZ3sM&8Riff2?qc>-i(VsXYwH}?PCI{A`q_1{JNo(AB#s&D zduYd>`+fsF$N6D^3GS=h=t!IZ+Py?;`Y9PPT3frdI2CA5yrTP>gd#}GrfpUKi%MLV zehiAlRC*acf>!0A-4B*ukw8Pd&N_*VXqtkb=a^isd2Bxivyj?NbP?^|oZWCM` zx@I|CyO}3U3G|s4ace+Wy(6|DPzRN8DDGi|z?NnAfZ#;ct>*%?mZD9ad_I`T6QCtH z!@d5iRtZ9N)LNB;@bTa_o=?~%TMLSXl8KtBcjAQD{ZsZHZX2^zjyXN;cPUF^gt&Co_ zgB_<9GXYN-3TQ=}jiR8L@7j56^tGymm3Z@vxd$KMe?C?Q=Gm=83+F86#X;CPKdKWXBk^WeqKE0~qt-trLC^8Nt^4=_Jf=&SYByZz$AxI)}%< z*u8a@lID5XtD>;}BA+@gRyWV$uqGy#L_{EF$DXuPSk<1NguR7RR-9S{SFxUxZV^%9 zbL_NR5EyG^d>%`*G-P)nC6T9o^3kGiug9{w1U?)d+%`WXIzNH4!V$wlhq7gxGqY3* z#^_U2R%$FVnr%2Bjk6)QhF?n6^Vj%!?6lGFl4zI(fjWE~TkEg1Ttux$EpPYwaU5cS z>)bAU{+&+KJLAG}@|KY4I!6IHjy<1eBIi{O_D)y4cOYf^+wkSQ=C=!N+G^}HR84Fl zHdT3`X2=&_*(WI6AwAYIiP=A8p{c>{Qjc}@-6bgbHoz-N?J1d-Da4xI%GbEP?MV2h z?em4yWZ(W(Hrnfn>cur)2Gu~Q*Yhs|6^d&&q#7vFxK^BhFS2ij_q#s7MB7G;(&qP% z70#Tr`xN^GWpvdg_6}0}fQV?-hy>2Y!bXC#E}sQ||LJcXf#&)tyQCCb*-nyF?P9H# zu*>I>WOMK^M8!F)U^$K7?kO?+zPt$(7Pn%}mtEG6-t1S_Bf*M>3ygiCMCvfScRMIY z)xu74JSd-O>Q?T@X3YMXil~_8`LSWoscdiKdz9?;d^H#kd&X9n-O$iGfA;v=gZrpM zj}5pCB(8Knr3B&@b4ptzR2wm9yCp+)|F|`2ZnU<7%errFQ$>@ru%U{4bF1~1*36fb zp%A|HO6Z3=+srGsl(xyC2TqJFK$F|CRNiZH(^C!Z_;B(;_0}iQcPC%6eR32pyddkn z9SS8;xs%UM(R5i$F!gL*3G`X_7T%(U8CcE7-j^?(TRL~rxX`O$e?JJLT)`KxLk{j6 zuKjdu^XpxXvjuuX{fqk;#?A>>XJ(=r2?PQ))s~W`}`qX_Me&Wsfy3Oxx*~xX7X$wF2Zo$ij@eto#^r_xD z>*JscRZZ_Xb9{252S8M--EP$!QsFH^|3N$bGPEGTlJ0XLwdQp1|a{-&xjQr5w5AQ9u3UG}+6R2xozYf|W~W-lKJ9>G3ElzC|Nx zv<5AYFEou8V*~L(zu=+eaTy$*FEMVHtKH0scp;H%T1hn{&TO=k&Q?RPK+;jTA785c zWO-|&O}-n?wCEFla_=1QJP+Oa$tS&VPqRsG4bm@d1U|GDE>CAkQ839$!> z(W2`ToMzJ@YsKgRGyqXJ!K=U@zFW2lJllw(p~9YBbb%j zO|N>Eylj?Pn=Ts{nq9uvYbs(KM)`O5Kh#Z~Gzk+O>6_|Jpno{Y*ikoWi?KXLs29uoMR$%E$4C0Yxbsf91+mN(7554Xus z;G71*5dsyKMF7mm5di>4ncjO|f08#XrE)Y>&*TcEN*OWqXhL7Ls6a5TV9dGId8D{1 zzxS-`2w2|5Y$O|s$HiYhmHK?3DD8>sp*Y&IV>nOmhG~;mfyY{4IFlUq)`Js6eECYd z8hc9*X_;j?f&TD^uPZrod)3{{OsqsG4>42_o@9J$wS2!9H|?|OUxHpjiEAGwW30A zUiqp5C;xtK1Cesa*-)2BsANY-bFZauygy7{H<_nEn^v3)*vcZeE3}98V zqfTj4!jpkfAE0d*SimdQ$|rh^MMrw#+VutY_z@$pN~*I>>ACokhW(16;%zR^y)32u z&#H79-X#X|E3Ny9vGDQ7EftO%U+D=h=j)kr+zKiPzJX}LRPrSCp2yD!fj$ghBsX*_ z+VlEiH{Hv&cv}6W=QsuZoa1zhAh!$7I%LJM!TjeXg47fb4L*`A#Oe??G|%Fzgc z$%_Kqjl~F6UAiSA;%MdJSkpMJ#4pv8{yTxh&<)iGI5vd}mozs}KaWm9o}( zHBWEOWj@lgW=dx$3L>#aYqGIl<8TMRb_J2k^l1Fk71XtYgW$DQ32zz=MI}IQ;cIa| zy^y~3cw9Uy|j8zXs6^X$0Ri|q`%bz&o z+t|&ER$Jw8p=EU=gJo4Hk*db`FR^ecPui4NUE!uL2qPDF;+m9Cua7FRb+dB0MwgOK z`z*FwL=Eh_)vJGed;7!A>U}OSukO-opCRvI%yZANiaFV}a;aYa(-QM3Rb1$@23&I$ z2$fxW!aAzW@jlij85N6i!pss4&WckSbjaiAw!{z?fM;xiLf+OO+pN##1h1Y+9uWLS zeiwDX570gtd58vVU{1H+*O}`@nRf~^?M^-PYCoy}%$d`Y_W0F482*J8H#QKI)HLwH zcR<<6)vN|SHp(a2y1SSGu)t1%R7nc#=J3R-R+{+pGQFi0oEZCTVY;hs8njYDD&qlj zRZ~b+oeEbg8mQvsoF;ANh^tTck$}{*Su(q3%Ra@kUeEFmBYAV@PpRYIB+s9H{qvW< z7@&W=WD+{e$d&$`k^f=I5A&M;@fqivhn6yPVHDje?rxtEb0HN=>O!Heb-CLNxQ#lApbhuqG740(zCq-62F*VeB(*d&$oeHn))U`HvuV$xBvCyIRAjk z*{RN+I1Qof?{HO%JGqr7SYNGzZjny^xrSBULx^_kpFcqdTo&ikh?nW-f_`60j3S%? zH4L(7E?VUl^1QcXy%zmRm@js{K4iuny`T}G(t5R9{d3$#3t1>po5&Ho#FWT_W%LZ~ z(9wAE*1!SnsByv9Zt4V^;PH~Vi&ox|J$!IB((ZDsW?|O#rh_+Xxj=j6t8`gA633s* zp^F6|Tb$BAz+Kpdqo4VO?yxaVA>^%h-A_*TL}|>Y^lGRa+?bwwgFCnTRgzyyuom1csV1+>XQ~U0I>K*4d?^@s z><`deI7F0^ntx-@kf%rTj9AX_H{5#xY}*xgGuNA8pqLAeb5m|Si7Ys_GzXtVQ^aHw zxvK44(=UxgdN^*$ZI4m&Nrt&Y`iiCsEvE;uFStR`B>x<|b2LzIYGuP;Wz_o&Yy94_SA?3(3D(5Y z*%2z zZd6nhs6=eG?O4svv1kZom^d^}Y71Xq*@12AD0m3fz1t05)JbuE_fo}|_P|gxsehaW z%bupTbg-j|JYQvA=;ilaoc{oRYq^)xGNv3^QDKwM%n?k={uHq5uOT~`Uu8XZk@Rp| zmAcb8^TjaXZK(#YD27&PgPIbzIYx>8KSYYN0v%2OP;#n zLmh43-KLNE4oc{OHM~&TcS>~PV~G%8Peb7;NdlfyV2=?I3I<@aZ+j8Th(@X0x-W+OF4`hHN`1gw1Q{$r^V?Y@SfoWI_jWvnpRvWFnGm|J@LJ{-i3v{&?i27kf!guekg0NJI~^Y+w{?Uw(q@S zfqA&xUbM-aW54g|bzd@fpb#4+z2|Cn5}vK?*KOFaX9;`feOWTR(Y&=`8(r7n*B{5+ zCP^N_gR#VeVDb0RANR@~b^BKb49=Gd_ zF0V6a&02Ilxc?nZLJDfiPASMAOuzSJ;g`e7Aa`{KQR1R^JHI^7>w%eb=5*lAveke`jD? zMR>n)zDI2@TB})!`1z%Mx5_;mU(v*sC;oSa&eC8J&jr|T!+kyPp>Qtz2f3UefG82*5IRlW>R&~>;i%rNDb*t5lPruMgj znJAIuzwu4Gd!cd-=Hm78lr|`*7R-J& zX=r`3MK*ykul%+9(1v1`urb>1xNz&SD(`N5HT+`A z9+G#~=5g4QG#QQhDdDf`tSfch7Qf9j<-s6BQ;Qu2A39)%6d%pSyJ=P`N%ery(M4Q} zkEM)4ut>h*Yeg>E&nW~&5S=0)?~jOs(PFV_iIr@w&Zgr7sg{-w!_(mT47RTw*NN2I zZ*gc2mh(;br9s4{u;L1Q@l)h@_7^Nm2W=i;`R@upef6e4%H;pSQVKQv_M0TisNj$p>rm8U2A7>x)Rmz1qOy}v-@!93 zGi_P@NgtelgXN4=1FUR99%w90?RjFqtK`HMhdi3+W1%;Opy)-?i-XP?NPyanp9}Ln zmK&{YhpoMJnNQS$t(ZWp^-bF!Zz3ts>+14D%hGWU!+v;)a0V%!s;$6N8zkJylWI+) zT}}}?)qORuI7&DBktHB9{6n93dr%@1>~hv<~{8Yd+U0^3wAF4($U93x_j_qV%Dx8g7T{P|fi%Rxrz z7G9Z~KC?#RF^kXU!Y4T2`F7klHX6rR%bVy;%jpn}Qi&Tn`J!+$vyV2@`lt^B1Dx2C3I3MZ#pQC)oygKs8F75$<)W@kX(rlUCAJI;DwwGu>D zGiSPV@X5bXMJGB+8-QKiK#?rQc(t{gq0kkZu%%(hna>z6Ma_Xudsbm?QTsL+Dk^|2OM-lHu}2_NQ9x3}$M%rnAe#2hrea7QK3=S;%wOfSFM4E5%Olp3?!QhOklhO%SB63h%ImWp$LjqvVB zjM3s~xmyNBaMU*U2k@6c&JvC;0mq4l;qv9t$LE)i1KCa(_AuAs(*B#Oz6`W2=W~C! z`CN^I!B2#nw#%I8o4^Qaj%T~^Ah4~=NVhraJBsVXdl6MmqLi81!V z#A0MjZMV|KLY(=G=j9A*Z7td0=79} z1b!}{3X#zz)UFK^ZrD5wI+OP-AtsgzIsf9e$SQs=BBQpzt}LdK^Xzsk7v*ywu;j+G z%ac;g$`~t$AIfqkD~cHNTxj`cfNCV~(GvxP>O#T8@P_=8`PKZL`8^Fg@+|S_IU&}I zCyr&E(&lJ>KSSW6y6q`vUA}o>w<1?fP3J$L-VCy>)U#PIFggIwe^w5E)Li>kTyoKL z=l1WOH~?Oar+((^?CALm<^?JCA@RBm4r!Jf2E)9nEZf_RmF@==`d{8>?>uIqZ-ke< z_=QiKs&VFs(xc?8)i@2vU*J6I*N=xevg}#UD`8X(9@@Q~Xx+|>y*lw|;2AQOnU_6t zt?jW2lzWK~9F3~^l}1o}pLjj}iT|_dE0>;4^T7r3SXN{_YFc^{#+dqh_vAdXBQ#I5 zbD8y=mOullYvnN?=oJ|2n@s%0GPS~$rv_6&NM1m|rqPhW!U$(YQKQwhz zBoqlh|KgUD!tD>`=Xt}6z0P0AH}?+hgi3#@|67LEz&7{#6-k~~PBS^S4?Djm)sOcc*3~%w;YuB9SC`?XcJ|d`U z%%uaJF3#^%;X$FsTR(rESnizo>s)XagZ4vXHBOh`{fLjx^XIa>ND{)_E)GKy;E`0L zX3QILt|FISm_~{>%l`0dLes}yk#>`CQv*?-)-qyJ@<8msiQa+T5YFVJln&qAWw>P4 zp;Lc+wwYwzdJh9?)72n150T~)`J4T6#ajYn*f?v3;y9wGyl&gpO^5O8HB$~3aRqh1 zs)gaYfyg}}vHKS-ejG3*+%}Ux6)=b0K4>OfO~2%FusRgb{CQeVm?00+T5(@KSEbs3O+bLK0C9%E#ZT{4bREwgbUu<%rv}7`Oc^3Ji*8!*-Exy0&a13YFZk}qNIe(1lk2$@Lbq!vvYL6>D zk_#mi2u{1hcYb}cOLV00U-UCdH;#%4-PXA$+dJhs{;^3z`qYz-XicHFJv3sxgtD;D z){pmttnqYO+|!{YJrD%X&8e|y1-&Ncyjtll%^-Y@>*Z(ql5v)FzgAV;%DhPHZ2aB$ z3nRnDA8V1XMnsh8Q8M9NOTm8_=h`rW&}puXSVANu$_?mhRMna|98X3m^*%hh*Y;?GjsC-iWUG}tFK*DCCC z?rJNGu_inX`?@_!C7bb_4De1_I1Q^*d|8EI&5?S=N<=3JpIT%r`HeM~^yZN(jFAtm z)5>xQ8Oo{ExhCiDz)Pc5a;x2L#f9oB^j9v>ikR^&+fUQpYa~rMQFGcIWp$Xq^V)@z zmqBAaqWjc7p3G*@;@DC}cP-YJJ?LD`FGfLn#U4w%$d4a$At6T0)TTcK$k!)}T$%1V zycik?T5+(lUo3jejVVWD>6396b>&bOx5sXlF?BSr-Svc`o{E^I*&rE8%c0E@an&T? zG}29mPlnP`(!hPo_ZyX)P==GT8-(g^S#+q01C9hc9>T!oJCPcxB7=C$k$wSLRfhaL z3cGk}=PiCbMhJ;s@-M~x@`A4m8kD^n^VM>6MauDR9W9V|eGfDD8`+48XBefnnUekz|2xeE8syH zN=tF=Mv$Sa)^s!F1@TRG);#26LY5D6iMyq8*|`cY*z;X;ID?A|FUuxYJJU7~0ijOF z_qxcD%-WX`6P-xnvz2{Wng#D)_w|Y`8Q%Ila94U#fyGPTQHxPTaJ<{x`i)pQ0dv& zdoty878D!=gE)HbsF-MCe%@aS zD4<$wOq53pxoN!khJg8$C2xJDBDeokto#Gt2Fv&6Ho0eGl84EC80b2$3V=ix7udM} z)d*rN_m5;Wv%vC;JB@+5{e<&?OO|~&-{WvlZdzT%ZRp@hUD|{vWmIB1$GGf2geRNH zRvO&wjKhdTG9Y4)WL1J*@Tmx?@!*s(X9^mTkaE{b*O%ZN$*US0-TkuqR!l!>K>d6d zRLMb=!5@1LoelKm>ILfdmL^$-(@8m!)+TK=D$sI@5`}h_N{;tDmERGs&V>9!%-*+) zuT4B?mPs%*e3`lq&P*rxLRG(fE6l1OMrPDf4WYhU-7_CqvQ;c`kv4`SOQ6Y}!)iX@ zSPRE)VrSP?`k7xE(1Mm{C*O3eMH^niUFnu76i!dEl3&$)uvU^x({%Ih+)k>GJ2ESI zsuO?lk%WJgk-1;Mnqjrh!kh#lWHru9lMf5yZ{(~ga^!Q|>FoF3I^1 zP+bmWJ*)G)zj6L8{=tj7*3Qdq-|2w3pCl$RMML7WVf+H0>~>BY9IBx9ZjFtCy`W6b z!-}%_YM8RehoTk(>_+(N?ZV?ciD*Yos=()EQ$tnyZxdfl%y%wHaZulR_(=F&^TeFr zJa=R*R{hm{VG)v+ncX z%E|MOWtZM&w}F{K?ZKD>HDO?h-`5ufAM);^M1hjhLVl0jmj^|cKV|fe6c#xv(3dS) zxK5eE6Af;3q{Lw}h){DR(8>b+bpAytmLj{6x(*FLMGx0_JzWUZ-24Nmh^86wWLx*f zl`jhT+(nqo-mNo4#bngHn!Zk(eZ-V1=)YOmWN%Aa(K2;ZaZ=PQ&Ezk7JQwedVi~P8 z8u28pUcXh3CtGYZWw>U3ahtz&iN-}dSI?Of`d0_o@PPY>To00a>78 z%r8m3t$_ai5Q^VD{u190e>8pVOUY_je$Aw9SNywZ-=7IELl^vxwUe0UUJf3~5E%`M zos47rH=N?~(^Te(mP4e{TV8waolU;>BNx^^{SLPci*b64M%9crx1^hCC>pNFvgT11 zyBQVu_}O1!pV=|f;d@NB!qT+y!ACllRD`N5yYIU>KE(mB3lcQk-`TVlLy%;7h^HT= zBo(bU7fM7n2JH=;3ZZ4ib>FcxCZepS5j+~_nU#NBpptuUZq3cERO}V;m4x?IyxG1S z;XCyYln!6KN#*#GYB>`qCGcWWnUAHd_d2cv|B&2n4Z;*_&SBGN_al1FC_2a0GiUCj zE(3e@S2yYfD!E9FBwf>xns7gl6DPPFa9yIq+&1kv0{Pk`jYVFltVa6vk>zvj&#Nz! zCfh~*OORv5Qf852sZn!AGhb?fyGJh;@}<8h<@ZLW%3QF#@nscf3-ywNZ1KJE;Qhkr zS3Qz)v72s3dRM>-BbaalzlME>2ntTPf-FqcwugP`Q@_9}O!% zP<|+$FgvUyD$*!zNuNx#bM-AX)cCkf|x*SF@7Z)OCY79+ZSc>3LA6yoi~tjawT*2N}?~{(BWZK0+q05KbdQv z(GWR+(Pv8-6MfFw5aXHfXoBXmKaX~OmM56E2dmwF3*Ii?zQGbl-#B@`Perw}YZvyQ zY1_WVR0#TVd~oV#CLFyoTlw)^vg(zx!*D+tG{Js-B~~^rKu%<1_mN7eWxHlf)B5AZ z?VmY&O(*%Ro=?9AZZHRK6sTB}U3&@V20q-VYk4D3{F%{91-Q=K#=t%ds6+}OCMijz z9acD{j~!eHzE8R(W6iZj`5lg@x44l&^a4vtkF1JEMyPQv3-ET`&O0olRS0a~*(_J^ z#uW)1+fe99ll$Vvos|#Gap|X8bxH!vqKD_^OS>2M`>Ltd{873C(s(x9JKKo@kdVCc zIYz-MY2N#3V9w{BBZ>A8*OMl( zHTv9;fj%<*kGK`rPlTq3cg@rGC5kg6I=x^LFQ)cZex4-xQuFYPMLIo#kJRXwKO0 zBjb7cR*Rj9g06#)rhWu+%4-~F5rIrG9(gg;u)11CSzK5m728?QU^?XFniYu!cm_an z3hxo$hi1;J2d@0bGNtEnZ_sovVJT#f8+qMMxeW5vMof3&?cd|c$CF$PGptCFQQ{CD z#RVz=fwvfi@y_G+MFZQd9XP(L{XvqPe(aU6lnbMT9C5*ygo8Xy^0&39V!O)gFC@EJ z_R%Ngivb!=WqJ>f0vZS|MVzZe(BPlz5R8@N{J>G^$Qc;-cm!-Y@OlF#J3r4-D9QVZ~U_;$_o)Ba_ch6*Cr5JDd^g%CL z@7cOftr+pdeaf@v&v`w?e*Z=VQQ-Dm*VDg46r;|0cCb*gan>|1X@kcnA8(;%#C~DS zde@}X{5eLMU=IXPA&`wnVh1peDu-_hu zHD({L8_$aokIHGydh`I$IB0 z`yGXEE)u(6d6M`KFkQ?n3}|Y+53Ft@;dY~FjpAbs5xVv3z<gCKW!NB(j`dk zz2JuK8D&vr8XK*Ase9Vuat^D5p6dqoTj5bUsO9X^Tf+x{gy+G$gWUd15Lbo0%5ZU< z=4C0-DvfXF!w#6eFN&XOvqptcg$a=uVxL+E?fZh?n!|B4|4cOP3OElEup3qpp@kofs*lHYXX;DkN9YbiS8QM$<8{mx zA%K_s_lgkj`^GuazF)>XM&j`WLQ2HpI2dvKs~_d~pr;MSyOycNYjc-=9qAwd3V0n@ zXDf0Ht1A2YX(i-8q6F zC;Sa^ZQvu}Iky7DuZ9Vf^L()CZZ-}uzh)c7aR$_jSl&lJtFIIbStwq;H2kH<%uxkr zswxrslMGOKjS2$@Ip8SFzlX0i9>!nCA1WX9u`N!yAau({OW2;a)9vV(wz!SqRObY@ z_^>LEe|mDQW)Isqmsggw==zA)Z~KdaVywh8ZA1JoMrEv2h{!3J&s*(FkyfZm}W0=&d*>#@H4RQstLy3UA&1 zW;6{(mHCUHa#epTw+VZZMnGfKC;e!N#xe1l#E;SEZN)8wzgK$>%amyTD*+;~DBU*E z>g3Z#)&pv`qxwt0FC>BMvH<8`J%cPIVXF5zRa5Hpt*oC>tJR4uz3Z)-FoU{{Zs;lg zuVTM?ZTniIJISg@amUDMoc)28kN9KshijmBV#N4o;xqSlndsIs&YWhEQP^7g;UbOJ zLisxVLe5jpF?AogRL}|ha+PKG<4LHOwIRxy``=o#l@eH?dW;Lk#dZsH0-#(XF_jwK zGrTZM8Rt;XYxjHH^vGCG^VSL*zfVM)tfr2RaJX^<6cX?ZsLE-Y?i=^w(>=5%iZ90r zCu!~%DusWy9UoF&#wgkgRCMTBAXD+JG4?yJS!hr+UUqPYZ{6fh7}PFi>s{IDaKL0c z7*v=h;+L!XM&si6O?P__3Mp{%Z4^#&Fm^`|ss?fYvePoUTwKfLz9!96ib8qBK? z&O3a&_T_TilN0+nZ-kk?L^J5JyPsj?aCYKCk^@WnU9f)O+kiIPY&K8nqpQ^773{a( z*@mc}0stIXGTsY&%gyUp!gXu@ekG>@7fTzg`a|9kq*}howm7^G9|gunK7g3OZMM#| zX3VIf!Nx5}z|B@(nRj?|Bk>LVSQ*1u&(P%>^4d>U8apXZDkSf455Y1Vw;ScS?Cd6g z1XgliOR8i1|MfE?FvF6@Cd%LReG*|4Hk08?jh)zB;{fogQ+IjJi;AgR0ZUD=A=-5596;AG8THNJR!BY_6gs{ zrQVk?Yi8koaXrgfJiwTw*Fc_=k>`=q?c1qWZzpqzXR3b*IMyAmy$-4&n*ii?^k=?9 z4KMU|eUboIQBHuf@U|-OtsifTXQZZoGBg@4M?8yZxSwpKA1-D=?eG-yt2 zI6~W6?+3!MyRwhMZlYucTU% z(yb+9B>pbLN=2{7*Zr@+R_FiL-7XQ}`qN&xtk5}MkfpRpl12W_$3g@3wubW0)w@PZ zl1{>D7o{FAB-y6e%u$Xh9Yhw3En`3(27-F}4Ak8)$;USqv{g{jq$`e-iE^VBF%xw@ z#XJ10q}Nt4wsPv^04T;Q45Yojp(KqROzY$x71PJw>$4l?%$AsKdCY<_$19i+^!xrg z0k2f99u8*UG`+L%2E5ody3)fQxW35#A)~j*U*I%OCD>cc$fjQ?m!Y~8-xwMYTS&0B7wbQ$46{QT9(d@Ar;wb;PjC~bY^U3WsK3wHxa zvgVeSa<5W9@syt%wPH$xVjNT-9Mq-8sV?6Od9lHhu8Nu#sP@Umx)Ki)(#iPBP{2yby#4JgPR0KY!R-e2e=3RBAkhF_8u+&k6#6*!**Yu^p&tpip7!W zc4m@uGqCHC7X(Z=gE|x=iz}ckNnJFiNWH)#)>TVyM_|!WKn3)azoIHAYG1mKg-F#BC93cAFdKwG?e-xA;S7Z? z8V5N1(AsILtvN)Zqd3`E?SE;GGYUwSL)1OHX z(62!sKdxAXUd+%J4436=FX`Zk=le^?&nWG8Lf7Qp)iFrje~ zLpaDzL*s*wl7t9){I5z!Bx!LeN`x34{x{0ds9Zd6@J;Ci87g}CK%o%r&9B72GsXY>=cx>Qo6UFkyl!Y$}j~ z)Bc;-)ez7U9AT;LWVtL#*d2-PXblUM0}iT9XevNmfaCBF3I@JtUiK$&^fnlgD7)L% zdnJSGX<^$`uL~p0&WOokLc_7UR!1@qUEVc2{_a*08~!I~7gLzW_t z=l(x@))?&cCdxhmO4UQZ#?apH;NWz>v5uRBM;AjoU+)4h8xS@fTsW3-KfmDk=|4u) zOdCJ`#4#?h;MtL_T9HACvex*7@Nq>**_dok?!$3;n_zqZ0r4Cdt$Lkm6&v^Q#ZX#i z;q92>s{SfAk?qYuJNF9{sm;^z*Z;7lZRw4m%znxgN~t_M%li zCze>DKEo53%F`%Dm%GS#^+r&Ws1{V|=Jztb_?K$!*g%ZLioPF~9_VgVxr z*JDsP)2B=Xh_M>jEKANJ8&SpI`p2Gzn-XaUz0erQ{Eq*(XryUaDbk>y2!b_jHzp2D zH)d=$_pTu~<{-nU?Ytn({SK>e4E_4M5dt7<^&eiQc&3-BddXlm=}=J-{1m7ECQY z2BuzE5cms|VAoq>(7&+hPQ>nc`%%fZl&Bhz`*K^3{N@+a@xxg`k$W-*e@0KhV9l`N zpgTJ0lA#Q~&%&%_Tl4V7LmSM0h`W!;kLJY9Lo_`SS6+Zj5da*pfW%XW1HPmF-*+tP zJ_p}1(MAv?9Kqf9?#xm_5TOWECgjv3=iyqPG>d0M>pZEVXp5?XB+N!(#cghxt#)G` z#u(_6gX4#u3FzZ%64BPGLZ!pmH0#{LAM-~kgF3(qT4Uw+!1(xE{=vAfCgj?B-@+11 zC!BlTUy1lD{=YJ^1)VWM=HG;E{vMX)8#$(8y*@i2Q0w^zj+sXq#PR^gFwCy~Cq#*2 z1ARpU3Pj?5pWYpW%+?L-Joo#77Itm#l_@bC03?(@l#H>hVvrsAo@NDGx4ii7C57m% z)Z4|D5f3Zb^ei@o-KKEjd71h*hnc<&?9Lb1M((K=wC}QHdHgFNUG${QCPfA+Dh2-s z*eRR}9ISx{a{U`jBw>KF6mKnQNbuO~%m3kQ6{01Pc6A~(fb=c?Un;J-PopH%<7zo6 zi{KfLD?mejO}=1@?zx>}(9nhu(UEgdBf-eB2uYNYl&R9aX4b&~5$(XS(Fz#CTc6#o$p zMir_7izzKY>m2{}vIL~&eqd1@rsLypH{DH#UD2%CuySJ~rda6{lxfD&DWtV_A6Hhh zoz)$b?kQzBhh>jl@gm7o{;8~*hi*(}9#3n(tWfec?{gAyPBkWdiIs|n7UO=0Ee09^G6$gej?#m(LsNujSEW6T&C))~GsOp-;k4R?%5S(6uU#*lAW zkX@;sva9*?Sn{-TDaBf#ap)AqgfjJaM8RJ4Ej&sP|6BPCKqs~3DE)UjJC8`t@h1AX z0S7yC%RA4>#k&?C{1E5@tYdTQJf_b~6HNJ3Pmjl02zk*HCIt+$PKqeUunjAa4hx z(>Ad}Nfz*(Kxv19dss4rr)ZnN2E?somytRyy4~}GL zn~Sb7eq?lZbk&n~pGyld)hiIqGE~!1tK#X)!(;p$uO8h8O8mF~qA{jjZ()j~zbv&# zBfllr%Bjng75mBZp*3&L{DB}WD_avF#8FO}JuX_qzc~CG&{R)5L4fn#NqAH-BU-A} z1FkyGzjT#-=uQc`GNS)+Wx#dbp^VP~$aHjBr35%^e_=_pyJv~2mR@3TyZSI471hr% z0}3J?!*cvjBZ>-^VP9&(!P%1149DC}$-a5N&}d+*WBO}31hO?(WOY9=+R}%Gg{>WY zn(oqFUD^6PbLaU|mp{P3^Mf?eomNqpkZTHVa}l0lg4ru4M|GC{#(%r=U#U&mx-ML2(QP=%V;@yw0vERTm_((Y1%h;pPW(>6#f4?q&Rjk$ zeWVM-fg9|~=_KLQ;d7*oVei1#vHZ{L0ROyFk4I(?sZzE#wTH-8^`d%*)=fX5wW4yA zJ!2g?t19MmS*xWF9*BXVP#UDXsi(WTe7=&8F>iC%TY5HllO2{p5}uNYnwGTz$X%?> z|Bwsd09@e*BK}EK@beJVCR#-zGI;S~^56_)rJ|B5f9U$~tXOuB%UIPf5`znJU;b16 zdx_BZGMTAUWvY=vrIJnX;#|vGAMr$LX2g5yzhX3vKL9kf10hv9j_j+$^wg2rENP?h ze0#-g;DT&7R{kOa^KU`>KfSp|(i?D8G%;iM39AQ$b)2Q!rWSQJL&N*ERv05K5|jwl z|4!y#zy46uMD0m&r?Vc9+#WI{r(ea-ndVWlX!WIu?~b?x*4 zg&Cb?6#w6g27wnL0pGxpC7Q;@A;F=1w_%2)<$(~Z+rY%{O)46Hjsu6HGLpORLmFJF>#DXhW8ci8pxD3$d-tCQn}z) zWrmn&dWbCia{7-!la@O}{aeZC8dVvj|6XBVOP>54Wmf;T;#rnE{x;FqYE?;juTlSH z)34uwo=;fy9-S+t`P6XUP~%|oeg|uQsGdz9M|3cntcbjkMWe97U36BV$wx0aJ#Bo9J&*%;Y!e{^N%_qVx;Y#bW zuv$q0%NOoYNYCCEZ`iI=o3+{cJWF>hHFj<5mR%kugo${Xl0%aDY zmDP&8QYrr)0Lr5OACxt|hI%%W%cyCFL942-B_0_^@a$c!89`<0 z95AO*!Pp(yDMh}3TmON=)KMhcC<7X4pc^r!t_IQfh=5pDf!eeAAMFJL*9(&0YV&1tP!AKb~Sy?OsLI+gcIR&^U|+fC3S8aUE+#({0kFD7Tf=JN1HP#LuFf?OEL+t5w`@^EOOXak zErC0&46|F2AiwS|z*NV@$JLNlAxQHdW3I8z)LPWPwmtr8kMN2l^1V!I>R9aCl_{(l z+O*Hc%ei=GfegTjj?aH_BKeL^QFViM%_$njit0;IMu?-`J(mkc4)Cb+-QU|}&1vox z6a`|6ya^y8r%$ciN{NQmEEF+XApDq%lk53w(jUYT5!-aG_ALYja5zh31v z(7|n_>P5FSRBY78@lA29mpZWuT9y2*pE0{Dr*cMgg^F!E7u;Xvx&^+i@3b6X^{D0w ziKz>Bwvj(HQV}pVJ$*<&MD@fH2|%Mu@;_Bbc`${WQ9V!h*RsUEhCxL91B(mMSBLew zHh1b4NibU=n&3V*{FH>Ia(ktIR@KtpM0ez6Cx~{M^KrVa>`QHmRLTgUp56UBSJWiJ zy&^lLrBO4#HMA?yrmR0K4;eETY^}4=8S)>}%T9F9+|B{Z75}MSSv{g*eHGf@FY3Ww zbSgZ}Iq4&F13C&P@y*5n!u`oRaC`}p{cOFwqZUCaD*F?Olg?X^qh4;5*PW9de%{qr zv_y)`JatL5yvl5O-F0zId8$(<-*ROwh%n`5iv<&Qp#A-iB`315TfJoiFFQ6(O&V{K zHVt-g?{n!qw}MNj`~%cbp73l7iYyTo{#gqI4!5aJ$Q_X0Eo}Rg5$f50aRj*N0HD1_v3wY6i}@kvU&<$ zRvCW@8~CQ3jzQ~^U|W?RN+=GDpQzkvX&W|Vh|*%Mkz6UB`&L>rJ8=KRPBAws&P966 z1tG((YLO{)gVjkNz^K)e5s|;1uhqIHKZ_wnsG^ylPB#C z-Jg~4_;6hJ_3t>|j5iwa7zQeU#`Aube9>ivu6ztGGEmkw)EMwVKyqqv8m9X~B{jO4 zGom0zW`ikVDPj8uABLo|`@dNLDd(8=xIitOntd2?WcDD|l@1esR#G4TRXs$J`2U?Z3U~lbf>gkMIB2O zo|tJnyB%d3rxmO9b(cun(9Ez;8)5yH?qJ!iO`3RgC%$>cB>=uFu|O24L37z(>bQ)7 z>Mmgmry?>)6om!%dt`Ev(V*ztjLGvs3l}l315f1I)esvqD#j2C$AA8+&tGGTuZ4e2 zwNTx0(kG9ZwS>kc9BuErKDv`1>I1!*3mZ@_>s&Nf6T|GwUA+V{NT*W<8TpT|ABCwC zFKnD`n6-7vU1l=@+1eOPQiK<04petqW1%Mcp@>aRzi7{xW^b6kJ9j(#&83Ef+@>PA zB&6Zh%fkU3y~&HZaM^E}mCs{}sogZVTf!B2y_z9cu7zJ@YFlL@{v$FGq>6aa11P4v z$y1A**c8&UHtd5H#tywxkB;MM+uXYh(2A}yAJM8`w1OX;>ytm`dYSy+xq?*@naxCG z>-S)i!i8zF31+vQ%B}R~TytO1sZXf~L+s=!wcYcCN}{OyFcMgWN>VKh#^v8WevZEteC zE47itu5u$5=noHHp;}x5E+c9RVM&QC$ldL$B2_wrO$`mvdM(_Uj#WPtN{N)wH!LtH zM1+RMX==%oqSslnsK>rGg9#Y=SBs_&;L7uGFV6hwQ-oXR%?#sob}VOr(7|axV>&Ah zO*W8iOE`KU^e`4mX1O&)PU}O(j+(SKX^6?4{3wGBUD;u?lBRn1Htq$znsqfT`{tWq zs?oxs0y@};Q(NcEzUflI^N|gyffovWl;z!A`|pXu7C(!>S~D4R?0*1UKyl(yy~=)E zw?AD=em#7H>4hMoreLGld!}nw9I;wj^q1rZzI9l^^CeqYe1YtwI6hON-2pbPJc+bkjv!DN9MNL5N{v-icdhd`HB>~ zee+BqtzV;`^h#ciWS=lKIizogiKnVpZy-wHS=_!)8@+8@Vi_YRh1kaY=26+6cXG@N z$0@?Vn>qrz3p9}RSn&xtJKMtT=oeeoZxcN(bX+`h0L+r$Y1!@6SE@UO$$>&qNunKq zztxV*ZYtohGtXrKb~2t(ZWhGN_+!d7nwWCUX$d`*#VfT$RYq`gui(d5pmOU!@WJrT z1qH)C#uZ^*Vw(qTOi=+HFDGZman}5!c^^)%x*0r!^R6qj6o!Y9-`TR*Qn4NsuG~RL zlil7rS&qRexgkC99{;X4%_R+eI>tvdetv#B^%PuLw>+*IKQpNFyJObCf5!|-F%bQ- z<|dsVDP7r9NmYlk@E2?2{3iJP{G$e%z0fuNnU%Q-=l;9ncMUdom}||QaNfhxS$JS? zAe|a&{1cstBSKs-jld!3jl&^{SA3%%zAGgvU30Iy-l+PbTIdYo=ddeqA4LgdHEVp} z;oSNxu0?{1k?ogiXs>#h7*z5qQvX|SvP&vnm;4egf7M*s{6hJqEzkw%;~7(w!fS;b zrrrV$dO`n)#}%ojd3uQ1>Qu;uK}z;rU^sVL zOR%aaVb1yNv4|U6n%jX<{#$yLaQ(hwINz16YezLgR`V{t+h>8v>%D9ZUr^s=#S3(n zv7!Epnk3x)>Xfs(D1@{`?<|Q^o{<8wEXZc*<%&0^O9x6&Bjk`6U_af62Lz4ob9kT4 zWV95v7OXLgDXVWqeC9{%Q~LyLKNe~fy1c+9tQ^VgfVQV4^4=xCNyVKKC0o5l%sL&~ zLR9~0UgM4!(uN)?_|L*kQLArG8PZ}MhyYeNH<48AQJ&V=l}AZ~UTFo^E^u|h6O+#} zi<`z25iVh1ed^z6^*Zo1Pf*{NC}OlwCej4`Bhx7&JmW*UdhR+G@@8Y*%OUq4vN1N5 zj#*tL-_YpH^X%ZGBv`j(IYQrzbC$UnRTq6_e3gCQCQw6LyJc^~s8lln>>g8jg7pQs z5{t*(wag-fPyX(9L;}jJJvv;^dnF%PjdXm-{ylW%w1ya|I9^ut-EwE(??GDj3&l^gqo07MS!P zM{fb;=@wO!lPkdDQq5_ zh%jZ1Ybjuo3+O+fUIKsXfs*@N}S{Z4b2=d>b56(?B2NE~J$(b|&+HrwCK8jd}y(=X}F^Z8|bLpQuvL*xb zfMMKX>fjC{hF+P|_Sbj$+MH^RWj2wx@P<+vEfVNZ4)f^ZzdYtru-QrLef^pYxAXo$0#?F97HH)!Zns*0f^4!a5+6M(|wjeg*- z8Lprk?+!OsQfRfKX;D)ykSS(&A5}zW;`q2-QhU-$5y{=zA3qIbJYV!$Ow^L4;d!J< z@Cn!uyK^6}*sOtQ2QPMdtPTOcm*QuQVB^PqNr z8XZS0qj`oVWK&MpC(S9se6(vO(gHMEU?&C;DcOHT+S?@^mBhkiKJfYF_I}6X$WrC3 z9_QsB+$-#R>V4W>H%kxxfooF{sJa;vV|%V;AFmp%2=q|vr8wW_#}`PsdaRc-m1?w( z(@aC{#Qbu0IGgFxrG^Y1*FGPfedI!39}i{nF7c>oT(vFxoy>xO0*gV>^a7=)t$m;Q zO@b;=BacZT8y8SBDdQL8vVV+laaN$x+gjqMc0YQ!*|I8djDDHMZ<`^LZPidM+#T79 z9&tS)y1Us}Q6#?hBR7TuG8voKRbykiz(J`n@Wt9Kb6tC%-8hT-L6?w)97 z_QlfKgagyYfWeC`J>Q{_qc*)a2ZW+-TtcnbDJJX&02zgg9xJno|y;llaqxkpp9KsZu=<-Wtbdk3wiEy!R`a+3!~)3Tvy(=QNxjj?$y%= zVUCrJf#hwM$er4~Qz9+~>Qljrw;j&g=@7=&8)B;`K;VXa8& z&??^J(nNKa_p99c0ez>?(B|u`>EH>M7G78-%jO&>Giyh!5ZUfTu>%UBJ?reS&=DnQ z$B08wg4<|zX+uNZ&x?{D|Uo9 zD(SkZQQif8!8XPh2>k)vNYEGbc70_Rq}C?6DQGgQzrkf9znK(0c;}(Nedx(0rNg-9 zi=HLNS|cVp8FU<+9%+J$}c_Zh!EezF!`&(C0x3H1@+Sx=3bNv&RCpcF3Z zkZp$0u8Nqy&Dj8KsLcezM9W0SC7+g&UOGFOrDbYF7l3}d_ijPAbVJ9HXk?0 zW8nd5$-xU9E~AyWhc0|q#$5Q8YwKn{-adNyH89(LYvObEvvC{ckaVkUszem5Q-SmL zN!bL@r!{BDpa@8d@q6MV@ul)_lRJmIZ^;6drkEVqOluVTT zBz&h(ZxAVTCZ)&AxXe>>lx0rD;0h&wwbPGfU(m2{zYhQZs{18Vdvd8 z!x{ZJG7w|mKqHm=!$<*o)zIVaHn=6f@8Dn-X!Gs!4?ggppoAvpeWX@JJmF80+Ud4G zm#xE{CPZM7#e}7c_VCWO>7}i>Maui0D-xo``O+|^Ky5=P1hNxzCs}ieSUxY$VcdN` zk>c)8tbJ5I9>aEr9$!e9)(Y*?_G5!GyBt5ZUQ>C?8>v+XW(gH1W7<5c-geVIcve1Y z=WYu{3Ruz(Z?7?&l>Fq<0Z5$#H}%xK&l+Qk_;56<#1VlgQMZsV8$xTq(9U$Qq)RwY zxALiW*r6bWV&dO?(B4DdoCfrj0!G7y_43;MF0uNMW2nPa7_9ja(y+Fr z3X2?;c(vB~+PgSR^Mc8P2qyFwD~W3Xi8yQS@>G>}8aZxOUKD&5Om`jTWAkc_K5@ty z1k!B>F>HH$S>k}EP9IdFtlC--Oe+jWyNh%y;kf#DS3dKWKOFN|Q7_$V7n$kBZ?YzB zi4dJL;+MKak!PSfVn*S#IC2lY+WlZ)tu)e6H~qm2>i$g}Y4l32&IH2cVC9ADYK)5O z6hNk8dDHKE+wEkQI()Y*ZiN?4 z1vJgLPktSUzC&g9C~j$rPqz}kQT14FuRe@6dnDJwN7aHV0+w~qrb|mQ8kf!OS+!m- zg7Q3wwtkHqDn)^*XRvKgJS>mAw>tv@fwG@Da<>Zv*Rtb0#46YUnPI;e@Hu2yW2 zT8@?_UlnpJ|EDs;KFL{}(rvx^;n?}4u_(uh{wBHVO2Lq?)#O66Py1cA0g@Sf!A1B1 zIr&qRDb{((1_mF0XB8qLpG` zSA{-1MsR(aw2Akp=66S>zd%BV-`!~L>uoOk#^P|Vu@T`5Z)!R3?cB^spBUFAw)6Gs z-TBGjQLah>1HDz~s;DX~UBRt{OjcR!uq@hjtDnaNy_}%1n(Jv)Iyvwq_mUE`7Obs& z110;cUc!#kl|Gus!|-@rS0{NG^+jVcAkmppx6KB2)n#Zf>=^~WWzS>V@*Vlo!wR=& zJDKUVPW|z1sF<0NJ3*gToEJ=w9!bA@^oLzb#ZyelO&~h{0rIETi1I$>K;d@lxy1cA z`_hsUg{*IgCJr$t=!j5;xc$)wuw%d34~#kTf5sf4R)YjP>L_uRwJ86dDDIcvgg$e} zL4viq7EGKJ1L&mhP0#2_#a45i2$j*+F>}Ek)&wu}wMs7Dsu-RRPD!BF+})m&n5NPc zbg?b8T5wF2NEJJ5ZTQadxdz_4F0{K=+^ncAq1%@W*)&7d_>;80kIGcN!Ra#jlp>At zE;8U1jd=lfl+R@!9;oeM*Fpl-(yW6!*Q~<++y`WM#oB!BPkSdE%Kq$b+EyVe3N9*- z1-Qcx?(!Rs^4|1Q^DRCyZN9v=;qnr5MvD|Xmc2z`(fir=c#MA*y=xkOcenEo5c%WI zH^TiE8>L5t9E0YOe;$!Sb!mH zI4!`u#(p%FFv5V|$z2FRRh2SVlJd^^d6OzcGR?FbmT6Jnp#*?RgX*lKg&90XrLgv|0bLB-$QJ#v4D@M;)hLxIU~Zqwo3r9;qosRtYK(wfs3F$)^10>|F}gMg)i3 zE_~&{j&?5A+5b?$Qdd5_e_)=qtKy~U>Zk&P{8_aUh`$%HbZ*I}N7%laH{m4#IiXkr zpFQ_YZCMSNJL6sRjB9T5b4k_Xc z=t69_+#v^v7g5`9bt8l;1$Kq<`QkFFtgBs%OrS=2_YBuI1*KNSxU0*V`98GA$Xbmt zue-e0=g2#rO{RVzrnXWAaO=7g=R^(dt~)nx!DRx;TV@3D!z!;24K*jl+2#(wQKN!H z{$wjfUBnLkF-$lx)t9{1etvX}9F2(fg_qNxFK~WR<*Xt>+=g02d62i*z^-%h`SAof zkGfqcMRV+SQJPY)Y%a{jG5Wh!tB%;uR4WII;V+VhGyXn(N<%>KnaA`Y{Cfg93HtH( zp1I#13i|Y6#`VpzeT!prwN9;!UEt%(9$z|VqD?u&m%e~|k}B8F1M;!DC2Je40@T#5 z1xQApSMTJ3g1iR8n{qV~zN^uup3T8*zHlx5(iF3&h{uuA^tg|Idql*zK@ycR$*RER zCNEBUey_Q_quaD@luTad)m`uO+lKmgRj5;yOeOz>il#pRK1Y3P1^QEfXE~uR$>v}H zk#GYsmO;fKakOr&>QjAvk!j8V>S(q$ZqFTL_9%*7cKKyh#lG&wYD&VpD@S1vj1 z_RbLtOOeVxIIe<4yN=b=OEi;^VS58yuB#~!Ir@U16oO>Q>#;JJq_02Qf2(<_Ow%Hy z_QH_}WF60Sd8zq#Kd@v8w{On^4od#6Ue*{B#W4DvaQMqlmHOX&FsF*|f?O~4jO%e> zeLb(figG_FnGfM}UG@Tx18$=lM$YwiFGlpW7E@`$8$8QTjOaq8venJHdi zNO1O2b!@$aj{2FDHBO4+bTrnP=mX_*0x5H z#gNgWRBp#AIOgg4#URw4Z!6%!Og-<8@}al;mwQ~yNFggkUMZLdJB(Of;PKpwuM+=F z3Vy;Kfz?xUM4*3(eQ+lb*eX+6)9M(AlRsoA`VBjad8ebz2fKciDQVvOw7LQ$FvUm{MqS_1irXr zH6V9rn4Z)AP~rHl*$pwEZKCEPEeb7f&!+_nAt_*?o3oIQnd^ zl0-}}rz#+^a6nI|ifXsA-AJWk>BWMnNGqjsG-XA#rRiGN{qw(52#Q}Rgw6zy08p76 zt7|W9H{e$lzNzk0`re)IgqMY6QJ?RNRt$98HA@_D{in}) zXy5i5;7c>)$n4J#RuL+>7pj)^P`+&7jTa&TH(#=~LL;ku>|=am$_AgnMoVYzM5)Uy z&*Yen0z|?PUctR=j{PI@J{ULT>(p#oQ^OmWJhkB51OY2bH7&7K=Y80a81DG6G0RoZRpAjKZs zcmWWZ=Wj%QaGm{8u4y2j{GsKK2KZsPV$LX4*%wjYPT3+j`QNT zPpZqtCoG>7FK|bu#(Rg#qoB%BSzyE!w2Kl1RG>5FKWj1ml02ys8t8 z%B1<4)D(zXN8cTyAm<;JM zqm^J|;T?Q3x>-~m?gn`V*NQqz#xUCBQ_T*@*nD%XT4(~v-Nds{Ii>cmXny@vpm&5N z$Y~(uGJT*vOtBu|?O9vG*HUqq+99K>E1(P^&dAG*8+-p6f4#JzJ*>y<>L!yhIKQ|` z@1&?@h98i5@thRO^+x9JCsW^1Q2OnupPsjhmD)vEwq4OEFsBL|vW}n2m5qyk-thpr zA+-06)QFg0!J?p`G*nE}n_4NsfsAYE%GS2mqL+j9T!%~x+W7U_uw&l0a>;tX*7U4M zx{duEdo|sd5WTONr9_xEIvXQ0rna2Sft96*cHJNj%Nh;orTcjX6!s5ggcd+3wSQHC ztM;8)vauO2n#v@*m3r3m0}B*ypxVHr9J)&&s?nDsE_2DWZ;b^jlW*I^PYB*gRPyL$ zqijBqYUnk_2!8MBV(uu3&0Cms(84O(nvmh-&O1}i3?cW_F)o+8ySl_|Y(l?;A+ zfN#JO2(J6VuEA*oc6WC+L@4+Q5hA(@NT7~k9~L4z7uv!OGRB2 zhHJZI+GU3{>SO%Plx(KbW}+oER0A$ZrJ}P*nR<=_$F4e)uHM&iEi_455@VxJR}8)mkS65zsid35GP+TzAPaC=q+aeU0moou5}ZaLip)> zqtm*T(vdKWvXyt%Qyt0)JkQ@J3GJMDQSG-UmI^nl9FR_RiZ^C61DT zjvV1GwQX-KUTZtwUzfFGPKC6aqH46!x@};d;>UsPW84A^eWf99v3^yyf}m{iR?jN} zvIcJA{p@?Wt3${H>Hb}>7)>8)r2`-!jrk9@2HvV^iGIJKea4&#S=f6wIJFaGfCJR) z9qJX^bB^{PZj5Di3*9P{6q{G%ecW>*clcdDQCIwS3M$JR6=OThzM)NBpxekV=)7pc zW14Lx!OdK5N=J+s%*mZ^DQ~(m@fRcl$ENvaLUv28^xZqZuVYPpDJ8N}MxBqdn6W*(6;~POC%C; z9$BcZV~Z>Gs<}v8HuNm6Z?SHJ1)JWQBxRkIUpb9M<-XDT^dyOOK|@j=HWq_;+o8`G zanIKDSY|HG_1Bt~>oFhA!wvQOZ8P;#^?4_nNHDD*y&omFTU1IhToZNZ43xC-4{G5T zTNiTj7%-=#92FDjnh!w3$0=qxRrWqzMdX`MX6R4*wo9=2cBoG@N9n{Xo5=eO^d}9A zijE47%niDL|+btQ6>@weclT|F&=-9?xiP{a3i zNro8BYzYzGh z-@O=4400>rTBEA;qZLPk*b0oZE+Q|;uNH@Urhm$4g%j;bMd@_h63WG}VPLDE7r;`B z9rE))fWb6vYQdkl)j$7v85Gc8oO5%biXFd#bnIIzblMnvDzRi&#cCsJwnQ|n<{a3t zUd1gjp~LZTEQn4d^0X{%|D)EsCj7DHGh-1SWn$4|Eu^tB=3@~`E@FJozR0X>d_VK1 zPbsKc9!PQCWt%5THilb6_+^?CU1qiu8BLgQQ_HS@Cw znIaphv$YuqxikytTYeUC7=2HX1R@ePqiEllQ4Fy?H1IMA!P{}0EVgmmvTU(w%Zs*= zgGM9WrF(%$`1+bsm#jLE3j788_1`%kCPgQ1ujhlj{C3fLR-R>JG(XdXn$Eb>>(g>C z5sLfLn`Z6oB_m}!W3eAz%kw$p3aS?w-P*Z0AS1)G^X(f_Jd@2Ry9w3CT+WO)xaV26 zJX6ccF`^|r;of%&o#e2t{m^zGvnT~#U^Am>su!Y5mTE%()M9S~-+paKMZW`Qu|E6b z=v3f7k0QrRfJ4-p8hm^4D}4J8zu!&2W`&#&BNI^OR(0O7QI~g`B0kgb#$ZloCG2;R z8)muKBJBz4y{Sr-rIgY~bgCVEzV`IjVRRkjY#R-8>J4_K(?@sM^?pk5@ zC-0v$=n4E=t2tRJX{27+&2iHLc^yKH$`lff446Y-mN-=42ZQ5k0(|5I{eFNQXizAu z#Dy8ygB`e?P}cC6EW|2ozl;NCf;pJYW9T~Gz*fAXO6Oo6jz+#I3_Xw5f5eG<88d}u zyof=@-Z3k5BI1WF77z`Gb;FT2bzJt#rMApU8C8qrA~{SV9c#ZB4=Vd>yNc&+an9Cz zGB7capUe{$5N+iTmbVP*eD43*l%#OC+DQ$S)dwe9m$ zw8U%>9j97#GP1O<<4iOY=__+w03{3USP8Njay&M73iwHcSVdyc{B4S(xrjs?f%=sd)ele%Qm&* zMK;P(yDtq&y5B-V^xtk3a$T+)L`|vEWvKAg$S;9U^blba-raPpb+TCwoB4aoa(rM` zKB?N?^r*J&rCs?Azk|t2*8Rps{q6kTRH>U7SlmU)`~aoW%z*)?oYW6}mIXgDlThf&34O9uVJ_}ad=p3+*x22NaMdU)_vi)La>q-1+c*N!>3s$oRsffx)uIv^=j78}wlHG|3{Ui)P zrnU~cz^Nu2I^QndXJbgsq|V8(B|JMK93cC%f$92t?n@~+qhg4!%@>iTjS*Xa@lGmA zA3yYju-0>5v`jejq$ZI-quLn`$R(@+8RGTXyi+63Ps$24FWtBl$*cye2e3gIhBtZ* zt~Mm#@OO_L@J+xN*iHb3hiI4fhLoaEwpDqnxbXHgVI32}zyo3;JdQ%A6dY{%Xc{~y zC<_ib-wPbDXhaep7lj7V;82nF7cC79>dsCjR_9$6^AOON1lE<>^@~&eN+9G^#ZK31 zxf@m%+K!(3R*gOfbU#lIbLCCnpqXY(p4F5{h^Po3;BJZS8)))(^sKyt@$bxhDowD` zT9YcJz_taz!1mUp2Qr>K)K{Sxeb=x;ujCTsFq(qix@7wH8&gm-{g0dpyb5E>sa#gy ztHOidUXw`9a+qKbrA?U`P)sVYg+jv+Lw) zzJ?$KMp<*mH@D1j?dUi+LIYrYpDPxX*+!%3vSpi#_5Vt*M&)h1R9PTpjRmrf<(vQA zIvpN>ugpw%fG!`{D!sI(RCVWLZMOgJ>O;jtT$M8 zZq|HSe4wcn&ed80;fpqr04hru8U*$N55gDqpZJ2^5uc!3Oa}jdT1b$FjG&^3V7lET z4<}jupk|A;f^q7txC%s=x)#3gXcj&s7K^l6cHM)fnw*FMEJ%jh*&A`S^%X8epU)b+ zy^#6WEC9C&$xz7^&{#`5{)wzcKGe=n`xgKQa5*A%y@gvr%KB54-JH6`jOK&{>LOBl zOU#;4#v~ol?7`b_V;$4VJ!7@qfx@2eBf?7APk!_kDTYIPpa6H+8SDXVKd=XEHl`ph z`^z3!IF-xpdsT99>=|(s$M?P0=@(XEHl>_0aaZwXF$Hcp33=IqsbLNJgRQm#E705h zkY)DChst-h3ph9m6#mT~2l{aRNN&ZR>2`4$1=!;wEp0~+jlXztwkBXOe3`@C2~)WE zxNFa}n;Od7KDYym;n0AkkpOVv>WTm5LO3JgC{WA%8fOvSD8>ac0SHEZ`Gnm&V6Efg zoAA3;pU0ur5apjp!pgFk;1*p`tHm}^yx4?&CJ6j4shREHmU&_RK`-a(Ps<=Cr+(!a z;0brfiiVvTSoN)gs_ZhJCuN>nd^1!#N1FWRE6ubS2W;!T%X7|dike0NgTd?p8#!o1 z&cDeKN>2n;=Q{25t|9CNd=bIbF{q=%M}Bi{xCZw`o4=YGU5X9AV`aYnIvr;ev7PW- zmDFaQg~(>T6OQ?!tG4mg5z86nV36N}wv)pO4gu|3QWiDF>Y_M+hN zXTG8$yeasGN#(sJd=ebAGwot-t6IJhEh){8omW*B5IN$nznyYAr#K>SW9(B(9PjrD z0}8wU|2_w!PiCW*7QnwWz;7VMXVI(aJ5=dD$ElZOGV}7TFvy7~ z*_$u-^QY0ml164&94AoAh;ArWA-d14R)9XdEp1BZR&iH)@a^)761vymiBhkDoi6xe zeS-goPjrVN);0^~$BI`C8V6++>EhLGs%crDAB0+NYBO1)gIRp9AOe2&KSR$axdic2 zriWZiRfy-Ds}q{tTTtiA09{i43`=*AUrnvnDhOP)T69f2kkILfT!a4GzoEy#Yi#Yu z*K#{Qk7J%AN#LGs!_2Wv2hQAm{Jh3@C5iJbaMTJ+g2-er&-uJj`NNDezwmVMZQD2G zd=Uv7g=3sy$)efawQB3_JFM7I+pnNKA^_YA z+d_OE+I#tux01s$X(4au=T?Y*rNsl!LKmgI$XKjt9y?e!r`jtr)_$FOqDKDmMcO0I zaQ7sgTo@prQ>D|Fxj1e93RLfOgedC|yuCa?>APck($aX%0SW4p<;=R!o;HG*RohRj zhw4n|U`vNyWS^VzJ?bugv7#=+FU9Nj-|W?*Y<{om=cB2q9SME1Nl+#7NYuU-Q6PdCK35aKdjuwYGhbyyp=&Fw>xZ2`C(@AMaC*10L=KlDZ`b?80t zqG%{xO5R_RmIBJZ>#M9~)_)WUagS$v%g-yNMQmV5mL!VLt3jn@=Vq=y43em++B*Z7p6!?%8z0K}d37I`SV{_+dgWq%tz zJNnv%5c=$Y^n$yen>sDkm$-?oRIWYms*zW}sMfifQko&w{>xx;@N3U#psyI)*1GpU z$3I)OAMc?}StB1u(d@aDVn@`8aYZP0yGG%PzK~^pSVe!?n?3;xOM&UAjU!VmiMgj3xuMI-t^IdWuGr^<`KhZtT>H3 z=vPL!YcRBkf>Ke+of(X}6+ojrF6{HiA-$g3<6n$w3KXo^bi7fqd2WZ@KHEPYkk0W) z(@JIBYMOllo<^iN{qrOTWZj#WH>pX%(?lX}%ja;L)zN0va8S-vu!}5yijWR$_}6TYM@Fdl0MNRF(yS_xO-rtdqRSJ=i5jS0AjU*}$p5Ahk0M!& zLPtTPpI>9t@-{dh5_WGVKiKOa)nS5|7Dx9(!M|hpD|`LFtuMT z+?;{xuK#l=`RXQ~M>ebtsPK?C2<{1$qje!ctUk7+tY4M16Fza@uKM^>6^3?7%9-Ce zK{%&khgIcKu+>iRXVHQluK0=DNf*mq1h0_ijmK}ham<)D&h}ZZJuMg9C@<7*#MXSZ zE<=vhFxg!++$8mpiF%#WF~w;H*yYEbu0^=mVqu=nwjKAHa~i!qSe+#=>lOS4W40*}oh$ z^E)MlPurXb^$a2G*`Pg50vqpINh!6gmxn+AyylNp3YPo;j-7R%mG)lBsIB7oJib<} zW-!s@bO`6KOJx-JRf6S+CYr4VY@}iu`5U!i-NI0Q@-JBci*z_U&dQISK;wgIkz^0# zP%*j<1u}e>O!1f535265r;a-1-M79VD2<=!Zz9$hDw75Ypmv-=ujJz48j(PjTU34)1nfa(qJM6r3^-(T$y zIFx*BY;$zZc(dcTbgo&9eQ5bw1y(vw!0tIbP;$iw)$6xaSUXxmJ>`%c<7(P?(>Vfm zm@VkELK{d$sh9`3OJ~+NS>Nj5^iH}(#E*%>1cN4~;)wBekv%y>ioR!kfur2oEG2*{ykV zi5vR3U}3SGh0Eb*_Hq<K;$=^mmV8D!#B3H z%bO^=&g-1yw2irM4}e~zCg2KLp$bmPS}-S%Suy@CuH{`<#Mn99Uru-eeDa5cU5a;D zA0YjH93P;pX|s*uY@ENT;3PW0&$S`xgYrh%pg96m7VDyk)V>WC%F+GyML0rlxpOh@kfCuAY+ zJ~w`~@7?QvxR!GIcC=fMQk$CsVM6{;p{sQMr#kpcbNRoJjDG|IRJolYj4S3Vr^jSY z*hKx~Pfy2dSW+e^f(MP@@hTwM|Cy@5Iq|{&-sQE&DNHB{Uz!}t;pYIN&3{whmS=nZ06g09&;Lp*5 zwoI5%rVm*z+>5M%k1{(H9~Q3lU-!0-G<|COor;UORk=P^uLTdDJ~r=etCRuF3l8i- zZMu_fYq-7)T{rCz(WZ{tz4Z-Ld(G=PLbEakFS!zXEVAK zc?&HR>neGlR?OKCG*u1Q0lpxK3nk7!HyYG&D*zbj0y~|WfF~$h{AoVVk>|+O zPxpHb2;EKJ9~}Xz~j3YnDU5zH%(T2D(<9IRi%kj*KZ&|C%}B8R4}_q?eo)eVm(&5R)V9KY3vjTS`zHd_1?N{+-`j2W4`xAKl8z8bRnTepOd{z|_3 z);8K5^clOCAX3DwYPcnY{nU?aAguIaZ_H^`6Ux=Qa}4UD(!ee8sUeXN#OW*lNC+i= ze}_nLcy(Ij`NeEhE3(#MI3Xv(Dgur@S$h$=_fPFM1vJ6NZ{tI!oBz=mOh9`Cm_afY zW_NAt83|%llhXd47eevw$Dd$}YbsH32i3Q3OUcS>+I2IIL(*#nJo}6#fUE zd*R>5T#y${WXT`R4DLR<3{hDeh{`hGnCWWmple2E$8;Q?-OPaWiGa^Pv)o_frhyrm zfU_Bz{hEYvFGBIpquS8*FLxm_V&RS5E&a2{2n!&C4Ssbmw17ViCK>sU>H?(3j^FBq zd{%G%7{57m$pYZWXJK z{!(wAuDn^fIGg=cgKayq$Y|wjLZoU86KHd#egL%z{ABZWP|%D`ImD8YV|B7)$V%zcPE1Cjb=C|!MJCs8;N^{CKC!B~`te?KA;Q%NmaUPll_6v#; zKnpI8&0RJ=9Vd4I9mME^PUUU0Hhzz(?E}U7>98OpC%r;=a4mvfES=zDr{4c5J5q6303=v? z@;;70mD;8-0Y9%{@%-7YW~+&SCp;q)B_%rJ&#Jj^dyrrYfPa7QU5NJDJ7AY}(e*g{ z6y%?zr~TeKP7iO@b_{M<7vS>H?UTdPGrl|+LcSNiIF4h{6t=fdXu(Re4Dc>q_$W_J zfm+Dz(+(f(bIb?7+_1Pc8P~(>QL9e`p~ZMU+tbbliGFFO|2h@ubM%<7{K{iy^_;@V zJeG{dNtrQ?L)rX>#Zc5RVr|}!qupxJD5o#sRE_)>)x79y#o8PfLktcVQljNB!-d#wbgEt4cCRayEarGC8} zdvBB~`^~?%4TMv!yg(5QK4XGSD%OvcR3w9Xt){ht36JG)Xif@{H9{(5SsxDVKDw7t z1Nsfe?w|Wd7D)p^lJp@YeLfZ>`A}CIevoO_Z`5wq%M6LCBl(y;oYdJsGz<%dGAflp z4i(xntNCYur1$4P6vYY%jy_}I$nscl1Z2!tK_*Q9#Z(Yf`q=G!jxr{ophLkn`nt)=+<`3EZbY}&m9YtYZn;Fx>+sB3^{K9SV}-lPxicy0yM7{-Qo4G#VD=HUZ8% z^F?6>aY$tnE_2PR2YE8a#>RTdF}8t3+RxujQCF-qFtit0498!?$Hs5N=g=x{e8%p^ z7|bzt<4;}c{pJ<9r)>{q1!(*Pw^R7nz6i5gO*DyJ8!WX60#=bdjeG6-AllBa!|kKM zdXF%L<6O=&b#6a$K4s2HeTlwYU3Jh9fX($mJgLbVsF!4j2bUh7@7lSipSQi^o z{Ld`sMdw;HFsLRE(S?IBEFY#bIFSBzSZnHY9 z8BVt+N{ZuQ1gSCRl&j$^kN>ou@9V@pxHUQKa!{U8JmN_cXIAG=#cDZL7s!3cLkv~1 zFZ1c}Wsb9Itqt7jMq4#d0>=u%z7b1sM=Wnj2>;%&{mOC}j-;iyD@~YTu%rtnV+YL< zxE+9X;S==&k>+7qw&Fhb1u7QGH->@=&H4#3k?cka3*_+88Xtzw*(DQ^0}Dy_AKke| z|59we<-A`(x3-41^OnBa(+K^lONYk~z<4m=Zd^6k7oR`oiE_>bd1Qrk25+IE7?~s zgN!6V?lxM)fsRm>A>CQ2uVNhQgEnpmMQgrrD3cSDe)Q$-J)W0!rU|xZQpxX#*NW4{ z+yuU&_U3b9VM5)Nvo3Mzew9}hx)spreMJ_`7=%D0+)p}vP{V4ng+PA=ai{_gLT|cS zuvcN&7-d)gf4r%i3r|Qj>klb3wu`&(4vY5!n7fdo`}Jf}BhheZMO2C~dUwYosWpS? zmPU~VzCFhGA`OC|$M~D|q#gNVGLaiMAsd1F(vaJ00o^(-B%pWL~yhNvsxmO1Y56q6J!<(a()<7CEXg0{@*F)1Hj;t3Xik%=&k zGA}iHOmQ(uD&mH2jduXpSa)zmVhOszCRei^wCS$nzlX(pdcPO@jxqZ?;>x-Ox5KnS z+2h9{lC^>{(7}aRmeXzYC|#OM$D56BQCs(%k;UE@dGv7bKcvI2B=GJF7SuZ!6Zw_4 z)-nfQO{QGYVut@`|sqCnMuNgld@I$}V457k_Ct zj4XPOO1?QwymZG`+i6)uKFM$PomAL(m`;W1=u{SZA<&Dtg1acFc095nfrQgE+$;Y< zPz^T;hjH-Qe1B1bf#$c$gFTCu4_=M?s+F7jBS?@K7>p7U^PNTg&VN8}^t{S(7xdY+wVU*#cZWBKO|8Zn*|##a&Q>J`Q9jMlhtk^-@ex?oXqOMF0N1eJ(Zr-W4FUMjX7v9We4~^y>?C&%x zNHT>u9t8H?3bqc`C9|3Bk}m9hN~%`;>|GhSCQ@XPw>_J~dP=TjF1K;b|0_4cs91Tc zm_Un+z>KWG?JrKdTE*dT3i}7^J-U9+8i=v1^*>g(fs5j6FVLH5gpu5jqF~Xg*tC6o zLOc+`uB)7xksmY2?b%KMdjv{ZxYwnioGRhwTd6=nkvcG;5DW7gNya@oVgM=3*8T3};#o)1PXhe;P5Pe#s^*=$!SKSw(x{Z%W=NIvguB3a7VgL z>Yz}jdcp1bRLuHZ??dO!?;e5Ceuy=IcH_1r5z-Jr2f!187_A{l>{v)9W*eZ$Nh3>_o4{8fOT)bZ2QbzbAYC%@qn5VV}=o1Lq4ND7#?8M))!0G3prLLl1aM ze0D)Il!V~+$=2o|)GKBO3;Af`g!4rt+**SBmTe0OA9sp^S7jNIpW848sexaa;~rXO zru@d|8=rCsVut>)A7q90f*r38m}HkLE3*}lP5@%kNX+!~B+;lLU;zQiu?`K4%>tpY zhO6h?jg$QytfTC~C>rF>dh`6qo!L+J(eF5r+t%`;{;dHu+`JnDR^#4mEw9T5UYs~N z=6Z&LzJcMZbou1#!+y|qXj$3vv62bhF_#r>(XVMPP-#{VkK;utgDXrUnv-ZgGSSucIa#+}?1AU?>Gk-K@0=t%-u#({x~pUtk+Rt}O!iPkG?m?XGq&}tJ~?rIAk(Zu&}Ajk!ehibs0d1JnUv-1^ev)#<=ya$`LLY5oS zL@9Qh$mMDxhu4R#Pr>3Ku;aBrft}X*IK&f7jkA>G3YDeMxv_%UxhC-VWL%8+W9bg! zQF_nw*fT@D_;P+ij$7klz@@be5Sc%3L^Mj@pvVIfz40y$ z3#PR7E>2ZYCZ-G9CqAkORka|J?wo0D3D?gVql4`P#<4{hPvEAo$HkD87%^jy7RSYM71awy8tgcWX7HFSwH1jWHXD1ZrT+QGCJ&2` zIbIX$P8_5E9ZF{Z&}P#5^B*0(ZF|ZhKp7QBtw(fX9^)?-D|=Etmfk(DqX^FMn7HTlY(-#E7D3z zA%MsqP~vHNqd*v~gRrCnPAvB@StbO8xU1EeHw|_(9pZT7HBfITjSiTx4Sw}Mj_-Nw zzRGIv-jwY;@?gJaS)ekkMDr;-A}9@y&sX6)3fqlz*)?Tjg#IIQBCLTv(oixPn_g7! z-7XFiLZ~OwbN9(5sQM;H3x!f{Y$)A4PAJXe^u2!?zSyk*yVl1W?GUr*9Ix)n=h8Mh zQ|9SHr2BU-ZriC5iq)hJ@W!cRb_0m^47I$v5s-1#f!zKEO4R3eJtfe_ECEgujllfU z(o<6dE^rOV34#>zevF{p>43h$jtZn>1iMk-0MPjY{OWK_pa#gQ#ow{=iW;_{a2Oq# zkAo$%VDutm;Y_F0EAmbW&Y6Y6ovGaZiG~XYsi8W_T?zLh(yO^8eEd&CuIG6cmxNs` zI0xS*0|;xDV*&7nne=Q}dRA!~qw0Gw1$ozMYv~i-c%URKAcD<6G-RCJBqK+ZYVrx$ zt>u1;N~Uth4OmAas0=(NOWfL*!;Trf2@r+u2_%&Vr5~r*qeTLz@*_aAhYAWr);|@9 z1ZpfVd*GYOt~%KuV@m@L=cO(CmEKMF$Ko?=HS)%8?BD~g%RTt!LFw!dW%$+YQWpg` zAC&;y_EZP7ByH+X9GL&(Pp=3%>7^G3_brHWOb3ICF7yXzt?)RngDh54kRwiyMr_R=Pk;XMR{gY zP@WDCq=SvtKI6;Q?QIM*1AW&v;1uY`O_{>Mb|K!CfHJrj*bL6%0#PJd6q*|k z=0U%3kQ(^zK?#Edz1dHA6#U#9o26ZulEW`2O~_LJ0O$AZfC?#AvcEkmN%5vTQ-h0V ze{*#FHMOrlnBUN-W)S0!xcXjUF|-}8dK%=QUxW|OfWMW3-tHOp?Us*|UxG&F5|a+7 zSyh$)T#DT_kV=`A)K>VA^L3r80z`uuL~c*h;_t6=w$Tfv0A=Uagy#uKgq+JLJjv7T zZb?V5iU4|T>DOt}m%mBwXlxhQmzY4gw~Yych#8)EhYo%DQWZ`v_+f(SwR&JzT0mqA zDH?p}Kz<>~RG=u%f9oy9xfF^EDU{&z3DBLL?*E!Zm39 zZ~>|4aK9WSQSRsYD_!;8E>}!8X`EH(_|IhH-(26|(=|-Bp{zt}vn%&+gORz7dkRnM zA-Tkut8pUABDQ}y=#NZy93lxD8yoTT6mqE~Lr^COgYxYuii@Om} zR{RZ{6^|SzEB>kYgA*gPOCVnx^QK=dl@;7dSX&$(#wD7NM@J~Gcrs-91A87B9y>!cFWNRzO^MSFzsbs$px^Jj(d&e?%E)HX4$4&)5<5>d3!p514v;( z*3<1YtZ*nafQ|l55=0-_CM-#|I|fPqweXU1>V*F9TF<|`=Y%Z`qKmAjzTB%g*moob z)s>8e%~8KFhU_v{PTAl8n@@Btv6_^K6GZCG_2lU5ROnPXuK+}?UC_RbzT=MlviGV` zA~fubja51~{?l)}>Z+FawElzZ$?*U<#jTXqa4BK6ODtU{*6`(rlxD4c-tJrx-S?iKkgN!fuohxL>*)D47sw$!s}I>r$ktAn)mK@@^Y` zMPWg&E>mvm{_UchyVb?;CS10OiKgAw#lazDm;KX9$4t9yyEp;1irH18b@f^MuDtI3 ztb$<_rr(6=hn<8@xS>eA{JHUSH}HMD4ECZz8Y}GbRC}OrQUn+B(EHx3k|(1p1K@rU z|NRXq3A=`x^IJr{W&&064JmDh1y1N6A4>55@8|xX?f&5?NVGdje|TU%*529td}L@} zg^`m=*Fpd(ZGK0rC>DwS@*W_HT)E4gb{Xdl8x?w7yKA^`qfx15Wi${wYxO?lj1>Rg z8KGyOVdRrTrA?RYzQ#R82em|eUvMer`s1Osh8xOIk^AUr6#{U3VVWy0^c-^E-2K9G zoh;T+$}oP2!(0Vd`61RW`HpaZ2Z#5q!(R|QRw#YQsa#iCXFl7{L^inZg;>yHz)MBh zKVH$a+q#f9xX}{#T|1gJTU*BlTr6rF|M{@udAKKjJ9Qsi=t?mu);v@I8gbl>KPm^%d~5o!{I)NB9q3yr<^UKg6s; z+~{|B%g=d$XWR~81*4b1f8v$;;K_1p@D?e@Xj4_*lNAy{F~?ce@*#h2ub$OvZhtJNTnN|Uuv ziFFbwZ+>IU!C;$t;|0foPktMv7i?qtSQXq*p>1tHxW|uuVHf~@`+_F4luY}_bXMf# z2l<6nKA)6D#w)1Q?54Nn=e_@$1z=TKYE;O#WxzI&$Gm37v7*o_HyMjYBDie&_=`q7 zXdOc>)!a~)WlKkoJhy{8k~^=xf~@cR;5gQwC-hw?wT{*>+M+UVF=^TRZecYbKH2ol zZm3(uFtCN!A>YxahTm@K+}Eh*99&dn9Fs2z4k^(OL!`t)K5c~c>AK+K`SjGR4%u|9 zlX(_;sXH%v;SNcL+cS361p9y7DNYAgnEEnU;q_>Pef2IOi|(m{234PthfopyEdc}# z9se^lsL@ixtxGNpvvo*2Jk4@kd!ucVmErwNkyzsQqoYm&AVheJMFhlg5J5<_s*R`C z*H*)#V^q{hAG=*^WhAAJipAB4d)%I<+)1&t1RIs1e3clA^9@j( z?>}*C)}nuB{I>2Eq8@u%4!HGII37S(d@u~+uE#mm%e0An`nvABUUP*NgH>(e)ujWA zEtIp$PP6{Jv1)mfC9&_cve0N{niJC>Mw8Gu*)d8R;?38|60am2ZP%9zg;q=z>$)4q zbY1eCRx!JtA?m?0`<58%7BD(~i)|o-heKiU`OYP~PQ04p#Ly|*?3QqV`n_XU-A?x1 zAiMD4-ihB|iawg@NHqujF6Q9Y#+U1{Wtac9g{mBc9ilgGwz$pN@*fATEQ+34*H(`X zq%q(k;0IGmcH4ijO$sMy!DWY7KkD02B8}4=r*e!J1nzT3;&BjMGUS6&u2N7*zv&oP zzTVepR?w+z<{~=;36C#mmO$wljq>Hao$kCEH9QCPgUz-p*taK$FQA9_%)4x>2~@0s z#PD1aF*M}^?)?z|t1c9pI1!CoVv7EQU~j&&;t>Q=d@? zh8_KQ3;5W`6ct%Dq6!SVnPNG?P?cbvY?|Tk5-`|Rq`~bFFME|lAgwX;{kY!7N`8eI z{6f1$EAea>vRe+?go9fuN>-ZWRq`jlDBgSPbLwex$wEMVZBYV_g;6|KPYLaSc4>Z#(C50` zAFd#I?n90<=+xhbQt=r3i3lY(n}ZFP0~Ml#p_S00VxW_k1QuK5Uys|H1EX%;1vfS- z50FKmWv#sJ(vm$90{iV3_qZO_nJ0_?r$FTKQX5f;Ud6D@;HI3(B3=wt%k4)#^GjW* z@aRS8Ey*!ne+JSGJ|<^|^3|9{YmnL7y3%!~o_eC%I*-nn^B2B|*iNi$Uuk4sl;QsF z)={K=vrkg4WWq=U#A){P;@Y(7xln_bM%*^L9KX78Psn102X10 zW_nd(o4&h@ zj8$#Cvl*io`R3j$P%3Yf54arco$R{~Va&UeU~lpMR{mMz23g1p_u2c{w>QPU{mbLN z{nyI4Z=$|a#^Y9?eXXCZg_`jIlFk@&fiAx`6oFOwmFn#;rfgsogGG4O|*#Xq>QUYbwkL8$53mX9e z0q3yD361$hP%ludv=hDm;fWVhXu01)ygiVIbDdMQGpy@({HcUbub~LK9wtd4w&Mbe zw`+5zVbOGPPON#;tFr2LC-wZmxYpdWat89PRU-^-D%H~j zA0`&CTN4@_PuxLYr9P0UJ{8GtZ@E4okK1h4?1FhW#RKjJFWji4Y@R5aNSp`>oY=S` z$@qAfm0>n-RxLh(r`vF-fLGS523$88u>j=QmgjF;2{lab46lkGFrg;HC&DJYx0#bj zhy-e@w-|J`B)Tk`OW0cZ*&37gQH!JUaPkoMww)NKm3lSp0ZNzM zVsyjcUbw-GEJ5qNWfxH4%;ia1%u#&<-!ICR_%2q4+3Rxjd^aRHEH7Z;sn9lHGHx%g zpAo;WQ27JGrYh5gZTVLIC0r@18--LHxUj@8RvMtS?Cez5hYJcOmF8=E`O(JKmwgqU z5}SdsBloBwZp{Vz!ReK7;J0woOue2d(lq};7g}l9ouRT{WwVehk^y$i=e>Cgm&Wwd zWfCtoK^1&~6I5(ZU^1`f)4PD`G#XBc%zwPvsiGr*UQOz4@$J|*ezyiHL5)KPt8oWq zj@{^?aT%WRU{gf1t;GG$028ZCA2SyfRP_xzU9_ zZ)@(3e->!EE%l2Fc>Zo36iG4ZG0e})Kmf^L9=Z6;p?v9!FkT7h9OY%0W}^UQ9G`*Q za8S}QDty#e_joq5$d+%h%!+n^J(s96=2_Lb1pvMbtOgh#!Iz)kkeU~N)Iwr9ZI)Y4 z_dfe{VGwj{k(Be*6>jhtyK)enVdpG;c}wS8!Td@tVFQR=I>{m$G)yffZOZir`$muV z7SM|=GeVmm@t&?SGF;uY0xQ^6iPA7D2(uW@h5L&&t}Os|bl)I{jQA11*K zg<%JGYRQ7!+lyz)NfUMUW>gk(8)1!7%@w5kc72|nsjD5ny&z=F?}MPlsLh)tX zs#U=5#fPM=n{5iCx>K+>fdmC=O54?gCJ9Ur`PW=S~S@`3eYr*dCX+ur+_~=`){RI3T@TPPT-$h-LMBG#Fz&y{K%dDVc&gI z+ht{(uUDudX)u#f!@ExlUp8*AxQZk*R=oUWgf9-eI5bn}Zb zU8;1&vo%10Tf`roPdwO)J4p3&;j<$vKiFH$#(5@!Y~OL2)fhIWSAd;emDILwj!}4lA4JGTIt%q3EA4o$}?dbnn=9(0FIcw=~-fGzZk@G}zmzn{2^56yDE(!Q=y{PiJ zcr~Rx5H!k!`;;(48x`Hts)FQ{N&DNCxZPO^P_^}R-~D6DB;`LY6atCwawW76B;B!WvHPWH+K z?S?JelkLq23hm3p^%IfbOxl~^s;t+_v(Mm3XiY;^cNn;Q)Ikc)=YO49Egxd>U*?hE zZs#6DKfJF=&__gZlYQ?yo{J$pnfRj~(EBl4epv{)L6Ru6H!X`1G|ZYoUq-+G|JZx; zc&PXOZ~RoJ6FCtTWzCi%w8>5-jipGkWG#{{J2ST7RD@(?iAu=6lXZ;2lDj2*K+#(zSn&{T=#YVcmLO;9?g8_{dvE(=j-)+zQ!bnsfBgc&kkK~T(|YJ zZJUDeG;3o|mb5e}U(gy$($c+P2;7B>;n(x#e0BOxxR zvG&Y@P1jT>t;G*atamL8m}cxJDx{TA5Dp7qG)QaodE$J$agq9mZiU4t@`|$Mv6T{= zueECJ?mQD2Q(a&tFp+UX?x5D*xJ03Mc0`TxuJ>(qnuH9~ng}GzLTX1xjNC!Jm9HGL z!ps_KYvI3|9-e%wqyi$FVlf%f!{J&YsO|5x+FyEvh>|BBUyN_s=*K&0}Wl>!HMrE~NJ6!V3 ziR9d|^jwLLC+L(**3BZOMY)4*IQp4zD}xd~Q`jejW#U0CL{|0jZ-^M6uVyIcg$lJ&XPJ2AsuzwV zu3t|(}t8)9OQqkNC_d<5JW}DW=MpKVEm5J&k@N<^VFR{=)nBM#%o|((mhAwAXx24HD?v zlzC6h3E{SBTJqg)1&2$I)-VxOBXe}a!VeJ)S%Ms;Q5X3*q#V%BLZ8)O>;tN5{=av# zEZB8;j@yDXNKf&A$9Sgyd?t~5$ST%!Is9GKti;I$waDP{j2r%LzSve;!};d)rI>PJ z2B?L_<5^mlX6d24UD6?9Lj0wlQoir>g7fID$1(@aWIIEylNJkq=m&0zz zhoN$c8@g;cULUjPBnuZ5uV`)xtsC;+-ZuIaa}G}5qFA>IbI!_C`Le3l1PAa7^XT;1 zm^Ds@KS7ywp^_DBpP0zEMZdUyu2nqbBIvERZ3?MPj^5GmNen#xA`SRRl|=2Qn0i$U zT?7Jw*Mm7u$_sf^8v4=Wl()~UbdfTKyM~kQlGM!WiM5Z*#JY$*clgMgIRf`OZes0( zWb7NFZgCpm3r{8KH7T{Q2YBh%x!qndY!BZ|D3R(h{K5lLaZ?SQ>9}SOW|D*I` z+UXgeOjUbRi30jqc1m-JSaS0=wI;&!Qt?)2Tc$57ep}S6`h0GlxtdIo{H0B$83uv= z*CikF0%sLAp2A)@kFVI43<~%wS8b2+(Vch7BaH_4LtK}0&6uq$0t8zbO~(_MJe!>g z>(~R67FeAJ>e4NfETYfqv(jvO zTi93E#@^x3bUO|w5AFU(aSoH%-y7%3Wyylt+goN{rqg<`gLV?9`(?-ZCep1#;7U?# zg+=v;w$&X9EWa$LbS|Io9JD#R24=M8)z0%IWvNm&wJwL~4ZM9LLYC!FT&~*^oyy|5 zh-}a|d=R*~aG-K~4UO}tm{ZG&Xq5VdDOgP5+iKie3itn-J$Qy&YG7fMQl}(eqWkfy z!tGpmTd`=uGd5oGvu6r{)tYMw*}jew3pw6on$^@F@jhqTLq#q1$o(PTy>?zI!%lap z>EEHA?6h9l2P?>9%HFwUtrph4F%rW;=P6~W7X%N&ayByB%`!(two9f_|c?aemN zwIcf^LxQp}Pn-yU`pu$H^uX109$r;-*u4c1(mmYNJfm)BnCegyiTIA3>yy3!b>)?n@+k06pH~ku)ZJzEGWjcRw{607_ zO+hmIgEb*w0SPBin=tBfe#Erv8-6G0}j@OW=%>+S$fmdr{*yVvn2Qb2XC|vNS11WqAjIU1!v7OnVh}wR2 z4>zvf*TiA5wYFVc-0U?QesB8ihm>E1)6Z;dHHmU=jHGpq+ORHgG7zw0fZXHR)xG z<$!_wflZ7EAsPy&k8x)tE1?A6l4B>q-?y6tzraYw=uwlSw5z9q=4oF4bTobvokE+#z)VVh$=`oF4a|Jy&E&IftmBFdWLNE7H^$ZFm6oF=Gbbkc zdPQlW&f_M)GPXVIP})T6aEq3?P&3Pb6n*y8EqNQxh0!y!;j>$T9w7Pol}S8%>RO0$ z>=yP#36m;Q^+t`RnoOsU9Xb%je|I@NX9dx#cC#Nq#TODU(EI9)%^#nAk&<$n1dxHR z^Q6Acd={Qis3<-Lo_6>k%=H_=m`52Rq4pxst-T)$EI|6~?nA^(`66mkOJak?b*`vW z7Hxc^m$6Zsrq{RQRWUXQfZJhn3aaJoQ)qVXx$$>iuXOPhzjD62);~?kElR$sR};}L z^-Om$T=KRZr2`Caz4roD7-UKQBJsxt4!)A1BU=u_sAe`(mVP%McKEE5;mqr9+I~B} zaRYe@=X?Z0vCX#$45}$7iU#4kNr?@_xfQo)jE>{MJpn1VC~szW8vK@3;x#%vbpmlA ztSH~5>!HOP*X&r2ZrRB~V*B8I0`#i8fBxhZH>HLs`Z_CG)6P{Vn$zflH zhZ|?4)LZBR>ss5s_EA!8L;iiqGgbL}%j1+ZHN)>ju7yi?mdETyWR%m}IHH&P&KJZa zPU6@@f=gl~R~+E{T5Nw7$%D zR_}_${L?d4t0{pBGitgaVj2Kg$r+XPgi74vHaRiCOg;Hl@6tNVUxZxkB`U_fflxa0 zd=dpG&iG^(_Pm+#m#kh-{_b|Ascnxxu_*ycaAK&}j4na#w)(@?1${zc$m<1HI!z3&z$n-lpcW z#s)6MwAstU4%t4di~%WrcgEkb0_&8hm=-{^O7%W`;C?9@u6;?qbp+L zL%rrU;@IHChRhzK`bD zW<6qB+Mx9tU_En4V|F=tkMOfrj88zhjHr4qIh~`tQRsMKcKU{kL&>L9>(J_A4gQhS zZr)pb_=aVGu9X8cI9KU_6`P8sy*0Ur& zp0y+vWa9!DGA5_g&f}dyg!KPqOZkY%O%Y+ePu9)1i}yCUx7rTO5JkGZj5 zY}?Zd?b)8p8Vs#dudmpk%_NGX_pSgWQ_iJP_uj~9f>g#D+e;zpWp8Ew+kARt)AVRNRx|ly?q}afuo3{N zrnqidlr|_ak{Mj8RIYq#U`t?+xc2s_kxfK-KMxEPg}8Wl$?3pR6R(Naoh6|BLE4Hx0%ic?NO_w)=Kx?^Osf@9I-jU*_Ta>^h2^HL1^bI5YSr7D z{eUU-zV?NQP`~d=>zsu)uk;O>$O4?bIyO}3`t&wun*M%+Qu0)6Gj_fx6tEB$q8;AM zk9zo>O(SYT!_mc;!5nn?chtM&amo9!tf*yA!0c!xax}MW=Vw&r_uFS~fnMob9>&b$ z0}oPhbhfDI`BA@WdG*ANQ1eZTEytW2hy*<;?XB}n$k@D0KJS>RL|9_?i{G;Cr8X=A zECTB10q6BAN}-h?iPN;c`qo-c;Xs}YJKF=O(IbHwkK|T|kEg*`>V)VFH#VjSgEt%s zDrQ9yGikApPVI!=ApJxRJ7cS}b$%Onza3j9=Q2iN3h$KuBVx@gB;6zU0X3*;(4jk z^nC^xJVR}p$&bnCY^flODNI9OrUJy++0e0~DS54E^vp~~Vm{#sf0DLw-%V3i4m$G1GJsqCR5ve4m!!-Agt)zCL%w$# z+)1pimaK4&(wW~ zJp3b=jh(^ET4m(q4azsQ)tL3XR7)G+A4sbhP z`C^SBMn_(W5)tDZC+AgC2~4F1I4LJGPoeGdcoPwTJlPBR!VH{q22luFr2aajXZ{rJW_!dj<7c@z4lzo$0 za{TmpYtYHYXfEnugQ`KBvYWJDXP@}veB3sbydSwSt;8xGJ)z!Uv4N<&+f5J+Ofl?v z#?KuRcRj)P>TUTi%(COJ_8^#TMV<#l`z{$f&irDkF!#go}?{3r*ZESQ36e6I=`s-~8dgM*>#(riZ?J ztiK$R{yLfM(uBI`19}I)-L;pF_y2m=@#Qg;kT;0aStmqF7e?PiS_Ql zT=Rn>Z>I?^yB2CZm-HQBas+c4Exwy$t9SW3^e+2rsVRIDaFftzZs$PFTbqFPL9w5j z`|5WfYSQrdfW8@`O9y5p&!amywX`}*I^8tq(H=o$Tn23#s@aBm=)wTcls~*b=UvA3 zo4^3Ussa>icUy`=zcr@Xn(dkpe52{bZ`FB^L3V0afDyZ@wj!?W{o9Nz9n7Uq>FukX z+5aFR%M##eTeOy=2*74;gxv3;HxZQ0vJEs_HWccjaCnu*g^N`(#6-dM(vxLd?#9Cmc*tybuii zmot~s9fX_CN9y62aK9NV%9IaP;)2~PVwGK`vEz&*1>zMn2 zaSGEE)%$fup!;``Ut=sQ{-K{;$-XaWjtSvk)B~2ICIhJxeCpPcez7=W)jfbrzlSH= zoZU>_$hX972I>;bqQgOfZ}HK>wqY1#?+WI9h9hc+ws;U;CwYQ0EDsys0)B^(=gU04 zDdgF=6n*$qM<3zp8fc;Ve0qwT4ER+gq}48w5H>;S=0M%`2OT0T6q<<1$L;e=G z3@oLlEN>P@mkW)^nm1}VB;uCLx0g8(1GX6xb@Qb*NyE5{ny4_8(ARx>=RrUU1%=cz zSaQlOwlkM5Z?EW8dKkn;E_?IpM}TrK(V9vt27@$mJghdjId3H%c;AD46(3K2z39>C zcd9$&-rK4BDSTR|QInl-bol+H%>ir?O~3~b!zcuKxHkCZg(>yUi4g%?)klX1^A*1=YqZFTre zg!Xtpv1q3AAC#1rGTG zps|NEY2WM}ixus0%=u5x)aV>L%CUKzINtqC9(VY0TfX-4i#82E|lH{!~+02h4zJsE?d-w~CwxOI8qP6goH z9pJXj^cEKX74rQ3L#N%`ALNlg`Ik=TnkoP#6ixgGbF$`i$qX1UYNn?02wt{*VA3FN zcatkbrU$3f&rx)V;=!SnGTt5*?!P(a*lUV#7?0su@C0IKk1j8~_iB(I?)WBIuo}+w z*nLWi$U(E?cq)9&#zabF%W~$Zwj~vU61jA-ZxV5dlWicgNfg%_Bz=TmveN?Xa2}5b zMK%Z&O0#k{JEzE$$7_C5Paw7aHeF03YvEWgp+C7@yf8(l6QTapBSENw3JaScZ`(I3 zh_BpSBTu3XB_cq3-cGc!T2cD+R4Be^!c8a&cPIoO%ZdGwe`Q z-FN@pQ$w>(gTBcBXRNJI5&`gUOWKB>$Z-4W0Fjv(inZFAl*5%7AgN>CZP zW=tsqg%3z^Sx=v{qgR#WF4#iTul-iB;wD$ldgDINJL&K}MxM1F%r~_n!$K3}@->oQ z1U%7?WasqYjtLMGUij_%s8hE(N$~u&Pw;* zsYQQCl6jY5Re!D&IUEkJf?Fim8N|HN$W=QLm;EOANrH+uaSp@(IlCV*SWS9*uDvS* z!0Z+u3OkDLCcmvshHr-H`IC9s!dI23W_6X?uOSycv+|1l5CpTk{Js^>)W7if-<`A# ze@6D*zmYf&sK~ITK*PiG4vJqL))NLKQkrz9FgW^(6k?2Ts@$0PM)z2~H+Mja+(EFr z5-hYhy?48fJ;YbFf$)09y|`}hg3BVH2CyUd>L~$SxO6(of6Vt9@HvJ-&{%xin|}xT z|CLg5KvPEJ!FLTnQ_;`tfCR6u_%Pmlcj*lF$PH{}G>CaY^Zr?+=1~XHs{<-O!c_je zYQr*uAE*5RU0~q&pWhk1tMAm6;p|)(sz)MttNa&|h`qSP1qe;Uj!h>uca&9msd;kxZ{BT(h8&PQ6^<{9|fJ%o?Mj{f@{>b0DaaEGvp=sItxZ zmVLf=4uYp!wSoBPALRBLU6BWZN~YS{;l|!GX?SQx7)X_gNjnaeHxECguFenv!M$k| zq<@{rS>43!vzMO${*h|vm7OatZWK-EO9XtP%iBBCoW+^D%u!$@0`Q!K%!E($G$xQ-i9}4=NC4D=24|=iZwjdl_U3 z!6e*lTjj$^UwPE?RUREmt@x3lMpjeDKyeXlY(}f*XG14&Az@b`lZSrkpA^dDLcps@ zecO5CU-Wi)OWR2@HSz9!r=<(DS>%>W4Dj=^D??|3dWkaBy6)m3J!S4W_x27=;Okza z6W%{{z5<-i9+}gBCyD&|2+yv73F6;mcNh|xyJ?<)BD@QaPMKc*USH0VPtXmv21qT^ zf*uQKWHT*yqYtA*_o^TN>1u(6)PUNg2YC$f#oahCz{8ukSzSsvjc$N{!3PwYdcBUi zzgl~-%CYxLItG?Fo!4s+aaAV!slfTapX|;dKe+(C*peOQ&D-5f(F5jDqZG{kwVVfIBh0*dFFi zo4-(V>-gYnyvu4h%p1RYB8((Q9o6|hye>LMju82Z}tIs>p#$`9L z5F%We#-iNB#Fd2(wx;{s^q?pYaZPZ!UXwYvI#Qz(d>H=Mw|V7*9pw9ycYOcYZZi}fH1A}Oi3iw^phC;mCmxAbD)$TL8psec zMYcRf{8;*qZ}~o%27aBYOm@o2pWVstY|v$$-npzJqPrM=2A5SQxaoo>9P3lSNqW@w zZc4w;wJ6TGRo#Pm*LG82%1hktc4K(cYoLEZo=@Lws(N-tJ7KAX;7M8>FG$_eq( zZMF>�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 FngBXNOBnzF literal 0 HcmV?d00001 diff --git a/playground/chrome-extension/manifest.dev.json.example b/playground/chrome-extension/manifest.dev.json.example new file mode 100644 index 00000000000..fcad1a80f12 --- /dev/null +++ b/playground/chrome-extension/manifest.dev.json.example @@ -0,0 +1,5 @@ +{ + "host_permissions": [ + "*://localhost:*/*" + ] +} diff --git a/playground/chrome-extension/manifest.json.example b/playground/chrome-extension/manifest.json.example new file mode 100644 index 00000000000..a3ba1fc727a --- /dev/null +++ b/playground/chrome-extension/manifest.json.example @@ -0,0 +1,21 @@ +{ + "manifest_version": 3, + "name": "Clerk Chrome Extension Playground", + "description": "Playground App for the Clerk Chrome Extension", + "action": { + "default_popup": "src/pages/popup/index.html", + "default_icon": { + "32": "icon-32.png" + } + }, + "icons": { + "128": "icon-128.png" + }, + "permissions": [ + "cookies", + "storage" + ], + "host_permissions": [ + "*:///" + ] +} diff --git a/playground/chrome-extension/nodemon.json b/playground/chrome-extension/nodemon.json new file mode 100644 index 00000000000..72faa888928 --- /dev/null +++ b/playground/chrome-extension/nodemon.json @@ -0,0 +1,14 @@ +{ + "env": { + "__DEV__": "true" + }, + "watch": [ + ".yalc/**/*", "src", "utils", "vite.config.ts", "manifest.json", "manifest.dev.json", "node_modules/@clerk/**/*" + ], + "ext": "tsx,css,html,ts,json", + "ignore": [ + "src/**/*.spec.ts" + ], + "exec": "vite build", + "delay": "1000" +} diff --git a/playground/chrome-extension/package.json b/playground/chrome-extension/package.json new file mode 100644 index 00000000000..e3b991cb021 --- /dev/null +++ b/playground/chrome-extension/package.json @@ -0,0 +1,49 @@ +{ + "name": "clerk-chrome-extension-starter", + "version": "0.1.0", + "private": true, + "type": "module", + "dependencies": { + "@clerk/chrome-extension": "file:.yalc/@clerk/chrome-extension", + "@clerk/clerk-js": "file:.yalc/@clerk/clerk-js", + "@clerk/clerk-react": "file:.yalc/@clerk/clerk-react", + "@clerk/localizations": "file:.yalc/@clerk/localizations", + "@clerk/shared": "file:.yalc/@clerk/shared", + "@clerk/themes": "file:.yalc/@clerk/themes", + "@clerk/types": "file:.yalc/@clerk/types", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-router-dom": "^6.9.0", + "webextension-polyfill": "^0.10.0" + }, + "devDependencies": { + "@crxjs/vite-plugin": "^1.0.14", + "@types/chrome": "^0.0.253", + "@types/node": "^18.17.1", + "@types/react": "^18.2.39", + "@types/react-dom": "^18.2.17", + "@types/webextension-polyfill": "^0.10.0", + "@typescript-eslint/eslint-plugin": "^5.49.0", + "@typescript-eslint/parser": "^5.49.0", + "@vitejs/plugin-react-swc": "^3.0.1", + "autoprefixer": "^10.4.16", + "eslint": "^8.32.0", + "eslint-config-prettier": "^8.6.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.32.1", + "eslint-plugin-react-hooks": "^4.3.0", + "fs-extra": "^11.1.0", + "nodemon": "^2.0.20", + "postcss": "^8.4.31", + "tailwindcss": "^3.3.5", + "ts-node": "^10.9.1", + "typescript": "^4.9.4", + "vite": "^4.5.0" + }, + "scripts": { + "build": "vite build", + "dev": "npm run yalc:add && nodemon", + "yalc:add": "yalc add -- @clerk/chrome-extension @clerk/clerk-react @clerk/clerk-js @clerk/localizations @clerk/themes @clerk/types @clerk/shared" + } +} diff --git a/playground/chrome-extension/public/clerk-logo-dark.png b/playground/chrome-extension/public/clerk-logo-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..1faeb9411dad12afcd0da917ef64b220278200c4 GIT binary patch literal 12638 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 M07*qoM6N<$g1b0y9RL6T literal 0 HcmV?d00001 diff --git a/playground/chrome-extension/public/clerk-logo-light.png b/playground/chrome-extension/public/clerk-logo-light.png new file mode 100644 index 0000000000000000000000000000000000000000..fe83c603236421132e8c7acedc843aa16f5390bf GIT binary patch literal 4812 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 literal 0 HcmV?d00001 diff --git a/playground/chrome-extension/public/dev-icon-32.png b/playground/chrome-extension/public/dev-icon-32.png new file mode 100644 index 0000000000000000000000000000000000000000..2b72ebdb2ced5484f58647dc0f46ffb9b2e9b1d1 GIT binary patch literal 2529 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 \ No newline at end of file diff --git a/playground/chrome-extension/src/assets/styles/index.css b/playground/chrome-extension/src/assets/styles/index.css new file mode 100644 index 00000000000..ca969544352 --- /dev/null +++ b/playground/chrome-extension/src/assets/styles/index.css @@ -0,0 +1,17 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + width: 800px; + height: 600px; + max-width: 780px; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} \ No newline at end of file diff --git a/playground/chrome-extension/src/assets/styles/tailwind.css b/playground/chrome-extension/src/assets/styles/tailwind.css new file mode 100644 index 00000000000..b5c61c95671 --- /dev/null +++ b/playground/chrome-extension/src/assets/styles/tailwind.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/playground/chrome-extension/src/global.d.ts b/playground/chrome-extension/src/global.d.ts new file mode 100644 index 00000000000..7ad3edd14db --- /dev/null +++ b/playground/chrome-extension/src/global.d.ts @@ -0,0 +1,11 @@ +declare module '*.svg' { + import React = require('react'); + export const ReactComponent: React.SFC>; + const src: string; + export default src; +} + +declare module '*.json' { + const content: string; + export default content; +} diff --git a/playground/chrome-extension/src/pages/background/index.ts b/playground/chrome-extension/src/pages/background/index.ts new file mode 100644 index 00000000000..def0db5c2cf --- /dev/null +++ b/playground/chrome-extension/src/pages/background/index.ts @@ -0,0 +1 @@ +console.log('background script loaded'); diff --git a/playground/chrome-extension/src/pages/content/index.tsx b/playground/chrome-extension/src/pages/content/index.tsx new file mode 100644 index 00000000000..693adb4fc2f --- /dev/null +++ b/playground/chrome-extension/src/pages/content/index.tsx @@ -0,0 +1,20 @@ +import { createRoot } from 'react-dom/client'; +import './style.css' +const div = document.createElement('div'); +div.id = '__root'; +document.body.appendChild(div); + +const rootContainer = document.querySelector('#__root'); +if (!rootContainer) throw new Error("Can't find Options root element"); +const root = createRoot(rootContainer); +root.render( +
+ content script loaded +
+); + +try { + console.log('content script loaded'); +} catch (e) { + console.error(e); +} diff --git a/playground/chrome-extension/src/pages/content/style.css b/playground/chrome-extension/src/pages/content/style.css new file mode 100644 index 00000000000..954c6f5f4f9 --- /dev/null +++ b/playground/chrome-extension/src/pages/content/style.css @@ -0,0 +1,6 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; +.langin{ + color: aliceblue; +} \ No newline at end of file diff --git a/playground/chrome-extension/src/pages/devtools/index.html b/playground/chrome-extension/src/pages/devtools/index.html new file mode 100644 index 00000000000..e17e5b9ded2 --- /dev/null +++ b/playground/chrome-extension/src/pages/devtools/index.html @@ -0,0 +1,10 @@ + + + + + Devtools + + + + + diff --git a/playground/chrome-extension/src/pages/devtools/index.ts b/playground/chrome-extension/src/pages/devtools/index.ts new file mode 100644 index 00000000000..11a69a5ec40 --- /dev/null +++ b/playground/chrome-extension/src/pages/devtools/index.ts @@ -0,0 +1,7 @@ +import Browser from 'webextension-polyfill'; + +Browser + .devtools + .panels + .create('Dev Tools', 'icon-32.png', 'src/pages/panel/index.html') + .catch(console.error); diff --git a/playground/chrome-extension/src/pages/newtab/Newtab.css b/playground/chrome-extension/src/pages/newtab/Newtab.css new file mode 100644 index 00000000000..74b5e053450 --- /dev/null +++ b/playground/chrome-extension/src/pages/newtab/Newtab.css @@ -0,0 +1,38 @@ +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/playground/chrome-extension/src/pages/newtab/Newtab.tsx b/playground/chrome-extension/src/pages/newtab/Newtab.tsx new file mode 100644 index 00000000000..38ce5dc4dc5 --- /dev/null +++ b/playground/chrome-extension/src/pages/newtab/Newtab.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import logo from '@assets/img/logo.svg'; +import '@pages/newtab/Newtab.css'; + +export default function Newtab(): JSX.Element { + return ( +
+ ); +} diff --git a/playground/chrome-extension/src/pages/newtab/index.css b/playground/chrome-extension/src/pages/newtab/index.css new file mode 100644 index 00000000000..ec2585e8c0b --- /dev/null +++ b/playground/chrome-extension/src/pages/newtab/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/playground/chrome-extension/src/pages/newtab/index.html b/playground/chrome-extension/src/pages/newtab/index.html new file mode 100644 index 00000000000..7e455b9a872 --- /dev/null +++ b/playground/chrome-extension/src/pages/newtab/index.html @@ -0,0 +1,12 @@ + + + + + New tab + + + +
+ + + diff --git a/playground/chrome-extension/src/pages/newtab/index.tsx b/playground/chrome-extension/src/pages/newtab/index.tsx new file mode 100644 index 00000000000..61c4bd4c607 --- /dev/null +++ b/playground/chrome-extension/src/pages/newtab/index.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import { createRoot } from 'react-dom/client'; +import Newtab from '@pages/newtab/Newtab'; +import '@pages/newtab/index.css'; +import '@assets/styles/tailwind.css'; + +function init() { + const rootContainer = document.querySelector("#__root"); + if (!rootContainer) throw new Error("Can't find Newtab root element"); + const root = createRoot(rootContainer); + root.render(); +} + +init(); diff --git a/playground/chrome-extension/src/pages/options/Options.css b/playground/chrome-extension/src/pages/options/Options.css new file mode 100644 index 00000000000..1ea51cba69a --- /dev/null +++ b/playground/chrome-extension/src/pages/options/Options.css @@ -0,0 +1,8 @@ +.container { + width: 100%; + height: 50vh; + font-size: 2rem; + display: flex; + align-items: center; + justify-content: center; +} diff --git a/playground/chrome-extension/src/pages/options/Options.tsx b/playground/chrome-extension/src/pages/options/Options.tsx new file mode 100644 index 00000000000..b6c79c8683e --- /dev/null +++ b/playground/chrome-extension/src/pages/options/Options.tsx @@ -0,0 +1,6 @@ +import React from 'react'; +import '@pages/options/Options.css'; + +export default function Options(): JSX.Element { + return
Options
; +} diff --git a/playground/chrome-extension/src/pages/options/index.html b/playground/chrome-extension/src/pages/options/index.html new file mode 100644 index 00000000000..fe96b7fd26d --- /dev/null +++ b/playground/chrome-extension/src/pages/options/index.html @@ -0,0 +1,12 @@ + + + + + Options + + + +
+ + + diff --git a/playground/chrome-extension/src/pages/options/index.tsx b/playground/chrome-extension/src/pages/options/index.tsx new file mode 100644 index 00000000000..da48ac11b06 --- /dev/null +++ b/playground/chrome-extension/src/pages/options/index.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { createRoot } from 'react-dom/client'; +import Options from '@pages/options/Options'; + +function init() { + const rootContainer = document.querySelector("#__root"); + if (!rootContainer) throw new Error("Can't find Options root element"); + const root = createRoot(rootContainer); + root.render(); +} + +init(); diff --git a/playground/chrome-extension/src/pages/panel/Panel.css b/playground/chrome-extension/src/pages/panel/Panel.css new file mode 100644 index 00000000000..843f23e8c89 --- /dev/null +++ b/playground/chrome-extension/src/pages/panel/Panel.css @@ -0,0 +1,7 @@ +body { + background-color: #242424; +} + +.container { + color: #ffffff; +} \ No newline at end of file diff --git a/playground/chrome-extension/src/pages/panel/Panel.tsx b/playground/chrome-extension/src/pages/panel/Panel.tsx new file mode 100644 index 00000000000..44eb2ed1cee --- /dev/null +++ b/playground/chrome-extension/src/pages/panel/Panel.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import '@pages/panel/Panel.css'; + +export default function Panel(): JSX.Element { + return ( +
+

Dev Tools Panel

+
+ ); +} diff --git a/playground/chrome-extension/src/pages/panel/index.html b/playground/chrome-extension/src/pages/panel/index.html new file mode 100644 index 00000000000..564b65b3b84 --- /dev/null +++ b/playground/chrome-extension/src/pages/panel/index.html @@ -0,0 +1,12 @@ + + + + + Devtools Panel + + + +
+ + + diff --git a/playground/chrome-extension/src/pages/panel/index.tsx b/playground/chrome-extension/src/pages/panel/index.tsx new file mode 100644 index 00000000000..88de29b6616 --- /dev/null +++ b/playground/chrome-extension/src/pages/panel/index.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import { createRoot } from 'react-dom/client'; +import Panel from '@pages/panel/Panel'; +import '@assets/styles/tailwind.css'; + +function init() { + const rootContainer = document.querySelector("#__root"); + if (!rootContainer) throw new Error("Can't find Panel root element"); + const root = createRoot(rootContainer); + root.render(); +} + +init(); diff --git a/playground/chrome-extension/src/pages/popup/Popup.tsx b/playground/chrome-extension/src/pages/popup/Popup.tsx new file mode 100644 index 00000000000..6e74decc36a --- /dev/null +++ b/playground/chrome-extension/src/pages/popup/Popup.tsx @@ -0,0 +1,127 @@ +import React from 'react'; +import { Routes, Route, MemoryRouter, useNavigate } from "react-router-dom"; +import { + SignedIn, + SignedOut, + SignIn, + SignUp, + useAuth, + useUser, + ClerkProvider, +} from "@clerk/chrome-extension"; + +import "./index.css"; + +function HelloUser() { + const { isSignedIn, user } = useUser(); + const { getToken, signOut } = useAuth(); + + const [sessionToken, setSessionToken] = React.useState(""); + + React.useEffect(() => { + const scheduler = setInterval(async () => { + const token = await getToken(); + setSessionToken(token as string); + }, 1000); + + return () => clearInterval(scheduler); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + if (!isSignedIn) { + return null; + } + + return ( +
+

Hi, {user.primaryEmailAddress?.emailAddress}!

+

Clerk Session Token: {sessionToken}

+

+ +

+
+ ); +} + +const publishableKey = import.meta.env.VITE_CLERK_PUBLISHABLE_KEY || ""; + +function ClerkProviderWithRoutes() { + const navigate = useNavigate(); + + return ( + navigate(to)} + routerReplace={to => navigate(to, { replace: true })} + syncSessionWithTab + > +
+
+

Welcome to Clerk Chrome Extension Starter!

+ + Learn more about Clerk + +
+
+ + } /> + + + + + + + + + } + /> + +
+
+
+ ); +} + +function App() { + return ( + + + + ); +} + +export default App; + + +// export default function Popup(): JSX.Element { +// return ( +//
+//
+// logo +//

+// Edit src/pages/popup/Popup.jsx and save to reload. +//

+// +// Learn React! +// +//

Popup styled with TailwindCSS!

+//
+//
+// ); +// } + + + diff --git a/playground/chrome-extension/src/pages/popup/index.css b/playground/chrome-extension/src/pages/popup/index.css new file mode 100644 index 00000000000..0ce546ca434 --- /dev/null +++ b/playground/chrome-extension/src/pages/popup/index.css @@ -0,0 +1,37 @@ +body { + width: 300px; + height: 260px; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + position: relative; +} + + +.App { + text-align: center; +} + +.App-header { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: #282c34; +} + +.App-main { + margin-top: 1em; + display: flex; + justify-content: center; +} + +.App-link { + font-size: 1rem; + color: #6C47FF; +} diff --git a/playground/chrome-extension/src/pages/popup/index.html b/playground/chrome-extension/src/pages/popup/index.html new file mode 100644 index 00000000000..7b8317aab84 --- /dev/null +++ b/playground/chrome-extension/src/pages/popup/index.html @@ -0,0 +1,12 @@ + + + + + Popup + + + +
+ + + diff --git a/playground/chrome-extension/src/pages/popup/index.tsx b/playground/chrome-extension/src/pages/popup/index.tsx new file mode 100644 index 00000000000..c62dee0cc17 --- /dev/null +++ b/playground/chrome-extension/src/pages/popup/index.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import { createRoot } from 'react-dom/client'; +import '@pages/popup/index.css'; +import '@assets/styles/tailwind.css'; +import Popup from '@pages/popup/Popup'; + +function init() { + const rootContainer = document.querySelector("#__root"); + if (!rootContainer) throw new Error("Can't find Popup root element"); + const root = createRoot(rootContainer); + root.render(); +} + +init(); diff --git a/playground/chrome-extension/src/vite-env.d.ts b/playground/chrome-extension/src/vite-env.d.ts new file mode 100644 index 00000000000..11f02fe2a00 --- /dev/null +++ b/playground/chrome-extension/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/playground/chrome-extension/tailwind.config.cjs b/playground/chrome-extension/tailwind.config.cjs new file mode 100644 index 00000000000..6369be41f75 --- /dev/null +++ b/playground/chrome-extension/tailwind.config.cjs @@ -0,0 +1,12 @@ +module.exports = { + content: ["./src/**/*.{js,jsx,ts,tsx}"], + theme: { + extend: { + animation: { + 'spin-slow': 'spin 20s linear infinite', + } + }, + }, + prefix: '', + plugins: [], +} diff --git a/playground/chrome-extension/tsconfig.json b/playground/chrome-extension/tsconfig.json new file mode 100644 index 00000000000..e7dd6922229 --- /dev/null +++ b/playground/chrome-extension/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "esnext", + "types": ["vite/client", "node", "chrome"], + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "noEmit": true, + "jsx": "react-jsx", + "baseUrl": ".", + "paths": { + "@src/*": ["src/*"], + "@assets/*": ["src/assets/*"], + "@pages/*": ["src/pages/*"] + } + }, + "include": ["src", "utils", "vite.config.ts"], +} diff --git a/playground/chrome-extension/vite.config.ts b/playground/chrome-extension/vite.config.ts new file mode 100644 index 00000000000..fba72e76389 --- /dev/null +++ b/playground/chrome-extension/vite.config.ts @@ -0,0 +1,70 @@ +import react from '@vitejs/plugin-react-swc'; +import { resolve } from 'path'; +import fs from 'fs'; +import { defineConfig } from 'vite'; +import { crx, ManifestV3Export } from '@crxjs/vite-plugin'; + +import manifest from './manifest.json'; +import devManifest from './manifest.dev.json'; +import pkg from './package.json'; + +const root = resolve(__dirname, 'src'); +const pagesDir = resolve(root, 'pages'); +const assetsDir = resolve(root, 'assets'); +const outDir = resolve(__dirname, 'dist'); +const publicDir = resolve(__dirname, 'public'); + +const isDev = process.env.__DEV__ === 'true'; + +const extensionManifest = { + ...manifest, + ...(isDev ? devManifest : {} as ManifestV3Export), + name: isDev ? `DEV: ${ manifest.name }` : manifest.name, + version: pkg.version, +}; + +// plugin to remove dev icons from prod build +function stripDevIcons (apply: boolean) { + if (apply) return null + + return { + name: 'strip-dev-icons', + resolveId (source: string) { + return source === 'virtual-module' ? source : null + }, + renderStart (outputOptions: any, inputOptions: any) { + const outDir = outputOptions.dir + fs.rm(resolve(outDir, 'dev-icon-32.png'), () => console.log(`Deleted dev-icon-32.png frm prod build`)) + fs.rm(resolve(outDir, 'dev-icon-128.png'), () => console.log(`Deleted dev-icon-128.png frm prod build`)) + } + } +} + +const crxPlugin = crx({ + manifest: extensionManifest as ManifestV3Export, + contentScripts: { + injectCss: true, + } +}) + +export default defineConfig({ + resolve: { + alias: { + '@src': root, + '@assets': assetsDir, + '@pages': pagesDir, + }, + }, + plugins: [ + react(), + crxPlugin, + stripDevIcons(isDev) + ], + publicDir, + build: { + emptyOutDir: true, // !isDev, + outDir, + minify: !isDev, + sourcemap: isDev + }, +}); diff --git a/playground/vite-react-ts/.gitignore b/playground/vite-react-ts/.gitignore index a547bf36d8d..d7de12f3812 100644 --- a/playground/vite-react-ts/.gitignore +++ b/playground/vite-react-ts/.gitignore @@ -12,6 +12,8 @@ dist dist-ssr *.local +.env + # Editor directories and files .vscode/* !.vscode/extensions.json From 53710b7739056999b119a758d64f5e04b0d4c9a2 Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Sun, 3 Dec 2023 19:16:27 -0500 Subject: [PATCH 2/6] feat(clerk-js,chrome-extension,shared): Expand WebSSO capabilities (Content Scripts) [SDK-836] --- .changeset/shiny-glasses-switch.md | 29 +++++++ .../chrome-extension/src/ClerkProvider.tsx | 33 ++------ .../src/__snapshots__/exports.test.ts.snap | 1 + packages/chrome-extension/src/cache.ts | 31 ------- packages/chrome-extension/src/constants.ts | 1 + packages/chrome-extension/src/content.ts | 55 ++++++++++++ packages/chrome-extension/src/errors.ts | 10 +++ packages/chrome-extension/src/index.ts | 3 +- packages/chrome-extension/src/singleton.ts | 69 ++++++++------- packages/chrome-extension/src/utils.test.ts | 67 --------------- packages/chrome-extension/src/utils.ts | 17 ---- .../src/utils/cookies.test.ts | 56 +++++++++++++ .../chrome-extension/src/utils/cookies.ts | 3 + .../src/utils/storage.test.ts | 84 +++++++++++++++++++ .../chrome-extension/src/utils/storage.ts | 18 ++++ .../clerk-js/src/core/devBrowserHandler.ts | 8 ++ packages/shared/package.json | 11 +-- packages/shared/src/extensionSyncManager.ts | 59 +++++++++++++ packages/shared/subpaths.mjs | 8 +- .../src/pages/content/index.tsx | 22 +---- 20 files changed, 383 insertions(+), 202 deletions(-) create mode 100644 .changeset/shiny-glasses-switch.md delete mode 100644 packages/chrome-extension/src/cache.ts create mode 100644 packages/chrome-extension/src/constants.ts create mode 100644 packages/chrome-extension/src/content.ts create mode 100644 packages/chrome-extension/src/errors.ts delete mode 100644 packages/chrome-extension/src/utils.test.ts delete mode 100644 packages/chrome-extension/src/utils.ts create mode 100644 packages/chrome-extension/src/utils/cookies.test.ts create mode 100644 packages/chrome-extension/src/utils/cookies.ts create mode 100644 packages/chrome-extension/src/utils/storage.test.ts create mode 100644 packages/chrome-extension/src/utils/storage.ts create mode 100644 packages/shared/src/extensionSyncManager.ts diff --git a/.changeset/shiny-glasses-switch.md b/.changeset/shiny-glasses-switch.md new file mode 100644 index 00000000000..9d52570a675 --- /dev/null +++ b/.changeset/shiny-glasses-switch.md @@ -0,0 +1,29 @@ +--- +'@clerk/chrome-extension': major +'@clerk/clerk-js': minor +'@clerk/shared': minor +--- + +Expand the ability for `@clerk/chrome-extension` WebSSO to sync with host applications which use URL-based session syncing. + +### How to Update + +**WebSSO Local Host Permissions:** + +Add the following to the top-level `content_scripts` array key in your `manifest.json` file: +```json +{ + "matches": ["*://localhost/*"], // URL of your host application + "js": ["src/content.tsx"] // Path to your content script +} +``` + +**Content Script:** + +In order to sync with your host application, you must add the following to your content script to the path specified in the `manifest.json` file above: + +```ts +import { ContentScript } from '@clerk/chrome-extension'; + +ContentScript.init(process.env.CLERK_PUBLISHABLE_KEY || ""); +``` diff --git a/packages/chrome-extension/src/ClerkProvider.tsx b/packages/chrome-extension/src/ClerkProvider.tsx index 52f613f003b..33be899b818 100644 --- a/packages/chrome-extension/src/ClerkProvider.tsx +++ b/packages/chrome-extension/src/ClerkProvider.tsx @@ -3,8 +3,6 @@ import type { ClerkProp, ClerkProviderProps as ClerkReactProviderProps } from '@ import { __internal__setErrorThrowerOptions, ClerkProvider as ClerkReactProvider } from '@clerk/clerk-react'; import React from 'react'; -import type { TokenCache } from './cache'; -import { ChromeStorageCache } from './cache'; import { buildClerk } from './singleton'; Clerk.sdkMetadata = { @@ -16,30 +14,21 @@ __internal__setErrorThrowerOptions({ packageName: '@clerk/chrome-extension', }); -type WebSSOClerkProviderCustomProps = - | { - syncSessionWithTab?: false; - tokenCache?: never; - } - | { - syncSessionWithTab: true; - tokenCache?: TokenCache; - }; +type WebSSOClerkProviderCustomProps = { + syncSessionWithTab?: boolean; +}; type WebSSOClerkProviderProps = ClerkReactProviderProps & WebSSOClerkProviderCustomProps; const WebSSOClerkProvider = (props: WebSSOClerkProviderProps): JSX.Element | null => { - const { children, tokenCache: runtimeTokenCache, ...rest } = props; + const { children, ...rest } = props; const { publishableKey = '' } = props; const [clerkInstance, setClerkInstance] = React.useState(null); - // When syncSessionWithTab is set tokenCache is an optional parameter that defaults to ChromeStorageCache - const tokenCache = runtimeTokenCache || ChromeStorageCache; - React.useEffect(() => { void (async () => { - setClerkInstance(await buildClerk({ publishableKey, tokenCache })); + setClerkInstance(await buildClerk({ publishableKey })); })(); }, []); @@ -73,14 +62,6 @@ const StandaloneClerkProvider = (props: ClerkReactProviderProps): JSX.Element => type ChromeExtensionClerkProviderProps = WebSSOClerkProviderProps; -export function ClerkProvider(props: ChromeExtensionClerkProviderProps): JSX.Element | null { - const { tokenCache, syncSessionWithTab, ...rest } = props; - return syncSessionWithTab ? ( - - ) : ( - - ); +export function ClerkProvider({ syncSessionWithTab, ...rest }: ChromeExtensionClerkProviderProps): JSX.Element | null { + return syncSessionWithTab ? : ; } diff --git a/packages/chrome-extension/src/__snapshots__/exports.test.ts.snap b/packages/chrome-extension/src/__snapshots__/exports.test.ts.snap index 5850b5cf888..9f2f3d56060 100644 --- a/packages/chrome-extension/src/__snapshots__/exports.test.ts.snap +++ b/packages/chrome-extension/src/__snapshots__/exports.test.ts.snap @@ -6,6 +6,7 @@ exports[`public exports should not include a breaking change 1`] = ` "ClerkLoaded", "ClerkLoading", "ClerkProvider", + "ContentScript", "CreateOrganization", "EmailLinkErrorCode", "Experimental__Gate", diff --git a/packages/chrome-extension/src/cache.ts b/packages/chrome-extension/src/cache.ts deleted file mode 100644 index 597368ffa26..00000000000 --- a/packages/chrome-extension/src/cache.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { getFromStorage, setInStorage } from './utils'; - -export interface TokenCache { - getToken: (key: string) => Promise; - saveToken: (key: string, token: string) => Promise; -} - -const createMemoryTokenCache = (): TokenCache => { - const cache: Record = {}; - return { - saveToken: (key, token) => { - cache[key] = token; - return Promise.resolve(); - }, - getToken: key => { - return Promise.resolve(cache[key]); - }, - }; -}; - -// Use chrome.storage (local or sync) to persist Clerk client JWT. -// More information athttps://developer.chrome.com/docs/extensions/reference/storage -const createChromeStorageCache = (): TokenCache => { - return { - saveToken: setInStorage, - getToken: getFromStorage, - }; -}; - -export const ChromeStorageCache = createChromeStorageCache(); -export const MemoryTokenCache = createMemoryTokenCache(); diff --git a/packages/chrome-extension/src/constants.ts b/packages/chrome-extension/src/constants.ts new file mode 100644 index 00000000000..3bf8a76ae3a --- /dev/null +++ b/packages/chrome-extension/src/constants.ts @@ -0,0 +1 @@ +export const STORAGE_KEY_CLIENT_JWT = '__clerk_client_jwt'; diff --git a/packages/chrome-extension/src/content.ts b/packages/chrome-extension/src/content.ts new file mode 100644 index 00000000000..299acfdcce5 --- /dev/null +++ b/packages/chrome-extension/src/content.ts @@ -0,0 +1,55 @@ +import { parsePublishableKey } from '@clerk/shared'; +import { createExtensionSyncManager, events } from '@clerk/shared/extensionSyncManager'; + +import { STORAGE_KEY_CLIENT_JWT } from './constants'; +import { ClerkChromeExtensionError, logErrorHandler } from './errors'; +import { ChromeStorageCache } from './utils/storage'; + +export const ContentScript = { + init(publishableKey: string) { + try { + // Ensure we have a publishable key + if (!publishableKey) { + throw new ClerkChromeExtensionError('Missing publishable key.'); + } + + // Parse the publishable key + const { frontendApi, instanceType } = parsePublishableKey(publishableKey) || {}; + + // Ensure we have a valid publishable key + if (!frontendApi || !instanceType) { + throw new ClerkChromeExtensionError('Invalid publishable key.'); + } + + // Ensure we're in a development environment + if (instanceType !== 'development') { + throw new ClerkChromeExtensionError(` + You're attempting to load the Clerk Chrome Extension content script in an unsupported environment. + Please update your manifest.json to exclude production URLs in content_scripts. + `); + } + + // Create an extension sync manager + const extensionSyncManager = createExtensionSyncManager(); + + // Listen for token update events from other Clerk hosts + extensionSyncManager.on(events.DevJWTUpdate, ({ data }) => { + // Ignore events from other Clerk hosts + if (data.frontendApi !== frontendApi) { + console.log('Received a token update event for a different Clerk host. Ignoring.'); + return; + } + + const KEY = ChromeStorageCache.createKey(data.frontendApi, STORAGE_KEY_CLIENT_JWT); + + if (data.action === 'set') { + void ChromeStorageCache.set(KEY, data.token); + } else if (data.action === 'remove') { + void ChromeStorageCache.remove(KEY); + } + }); + } catch (e) { + logErrorHandler(e as Error); + } + }, +}; diff --git a/packages/chrome-extension/src/errors.ts b/packages/chrome-extension/src/errors.ts new file mode 100644 index 00000000000..0067fb2eefa --- /dev/null +++ b/packages/chrome-extension/src/errors.ts @@ -0,0 +1,10 @@ +// error handler that logs the error (used in cookie retrieval and token saving) +export const logErrorHandler = (err: Error) => console.error(err); + +export class ClerkChromeExtensionError extends Error { + clerk: boolean = true; + + constructor(message: string) { + super(`[Clerk: Chrome Extension]: ${message}`); + } +} diff --git a/packages/chrome-extension/src/index.ts b/packages/chrome-extension/src/index.ts index e16785a2c57..e5bd9848c43 100644 --- a/packages/chrome-extension/src/index.ts +++ b/packages/chrome-extension/src/index.ts @@ -1,6 +1,5 @@ -// eslint-disable-next-line import/export export * from '@clerk/clerk-react'; +export { ContentScript } from './content'; // order matters since we want override @clerk/clerk-react ClerkProvider -// eslint-disable-next-line import/export export { ClerkProvider } from './ClerkProvider'; diff --git a/packages/chrome-extension/src/singleton.ts b/packages/chrome-extension/src/singleton.ts index 21caa55bd05..8d81ca29d51 100644 --- a/packages/chrome-extension/src/singleton.ts +++ b/packages/chrome-extension/src/singleton.ts @@ -1,53 +1,58 @@ import { Clerk } from '@clerk/clerk-js'; import type { ClerkProp } from '@clerk/clerk-react'; +import { parsePublishableKey } from '@clerk/shared'; -import type { TokenCache } from './cache'; -import { convertPublishableKeyToFrontendAPIOrigin, getClientCookie } from './utils'; - -const KEY = '__clerk_client_jwt'; +import { STORAGE_KEY_CLIENT_JWT } from './constants'; +import { logErrorHandler } from './errors'; +import { getClientCookie } from './utils/cookies'; +import { ChromeStorageCache } from './utils/storage'; export let clerk: ClerkProp; type BuildClerkOptions = { publishableKey: string; - tokenCache: TokenCache; }; -// error handler that logs the error (used in cookie retrieval and token saving) -const logErrorHandler = (err: Error) => console.error(err); +export async function buildClerk({ publishableKey }: BuildClerkOptions): Promise { + if (clerk) { + return clerk; + } -export async function buildClerk({ publishableKey, tokenCache }: BuildClerkOptions): Promise { - if (!clerk) { - const clerkFrontendAPIOrigin = convertPublishableKeyToFrontendAPIOrigin(publishableKey); + const { frontendApi, instanceType } = parsePublishableKey(publishableKey) || {}; - const clientCookie = await getClientCookie(clerkFrontendAPIOrigin).catch(logErrorHandler); + if (!frontendApi || !instanceType) { + throw new Error('Invalid publishable key.'); + } - // TODO: Listen to client cookie changes and sync updates - // https://developer.chrome.com/docs/extensions/reference/cookies/#event-onChanged + const clientCookie = await getClientCookie(frontendApi).catch(logErrorHandler); - if (clientCookie) { - await tokenCache.saveToken(KEY, clientCookie.value).catch(logErrorHandler); - } + // TODO: Listen to client cookie changes and sync updates + // https://developer.chrome.com/docs/extensions/reference/cookies/#event-onChanged - clerk = new Clerk(publishableKey); + const KEY = ChromeStorageCache.createKey(frontendApi, STORAGE_KEY_CLIENT_JWT); - // @ts-expect-error - clerk.__unstable__onBeforeRequest(async requestInit => { - requestInit.credentials = 'omit'; - requestInit.url?.searchParams.append('_is_native', '1'); + if (clientCookie) { + await ChromeStorageCache.set(KEY, clientCookie.value).catch(logErrorHandler); + } - const jwt = await tokenCache.getToken(KEY); - (requestInit.headers as Headers).set('authorization', jwt || ''); - }); + clerk = new Clerk(publishableKey); - // @ts-expect-error - clerk.__unstable__onAfterResponse(async (_, response) => { - const authHeader = response.headers.get('authorization'); - if (authHeader) { - await tokenCache.saveToken(KEY, authHeader); - } - }); - } + // @ts-expect-error - Clerk doesn't expose this unstable method + clerk.__unstable__onBeforeRequest(async requestInit => { + requestInit.credentials = 'omit'; + requestInit.url?.searchParams.append('_is_native', '1'); + + const jwt = await ChromeStorageCache.get(KEY); + (requestInit.headers as Headers).set('authorization', jwt || ''); + }); + + // @ts-expect-error - Clerk doesn't expose this unstable method + clerk.__unstable__onAfterResponse(async (_, response) => { + const authHeader = response.headers.get('authorization'); + if (authHeader) { + await ChromeStorageCache.set(KEY, authHeader); + } + }); return clerk; } diff --git a/packages/chrome-extension/src/utils.test.ts b/packages/chrome-extension/src/utils.test.ts deleted file mode 100644 index d0c1ff69e1a..00000000000 --- a/packages/chrome-extension/src/utils.test.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { convertPublishableKeyToFrontendAPIOrigin, getClientCookie, getFromStorage, setInStorage } from './utils'; - -describe('utils', () => { - const _chrome = globalThis.chrome; - - beforeAll(() => { - globalThis.chrome = { - storage: { - // @ts-ignore - local: { set: jest.fn(), get: jest.fn(k => Promise.resolve({ [k]: `storage.get:${k}` })) }, - }, - // @ts-ignore - cookies: { get: jest.fn(({ url, name }) => `cookies.get:${url}:${name}`) }, - }; - }); - - beforeEach(() => { - jest.clearAllMocks(); - }); - - afterAll(() => { - globalThis.chrome = _chrome; - }); - - describe('convertPublishableKeyToFrontendAPIOrigin(key)', () => { - test('returns FAPI domain for production', () => { - const livePk = 'pk_live_ZXhhbXBsZS5jbGVyay5hY2NvdW50cy5kZXYk'; - - expect(convertPublishableKeyToFrontendAPIOrigin(livePk)).toEqual('https://example.clerk.accounts.dev'); - }); - - test('returns FAPI domain for development', () => { - const devPk = 'pk_test_ZXhhbXBsZS5jbGVyay5hY2NvdW50cy5kZXYk'; - - expect(convertPublishableKeyToFrontendAPIOrigin(devPk)).toEqual('https://example.clerk.accounts.dev'); - }); - - test('returns FAPI domain for invalid key', () => { - const invalidPk = 'pk_ZXhhbXBsZS5jbGVyay5hY2NvdW50cy5kZXYk'; - - const errMsg = 'The string to be decoded contains invalid characters.'; - expect(() => convertPublishableKeyToFrontendAPIOrigin(invalidPk)).toThrowError(errMsg); - }); - }); - - describe('getClientCookie(url)', () => { - test('returns cookie value from chrome.cookies if is set for url', async () => { - const url = 'http://localhost:3000'; - await expect(getClientCookie(url)).resolves.toEqual(`cookies.get:${url}:__client`); - }); - }); - - describe('setInStorage(key, value)', () => { - test('sets value in chrome.storage', async () => { - await setInStorage('key', 'value'); - - expect(globalThis.chrome.storage.local.set).toBeCalledTimes(1); - expect(globalThis.chrome.storage.local.set).toBeCalledWith({ key: 'value' }); - }); - }); - - describe('getFromStorage(key)', () => { - test('gets value from chrome.storage', async () => { - await expect(getFromStorage('key')).resolves.toEqual(`storage.get:key`); - }); - }); -}); diff --git a/packages/chrome-extension/src/utils.ts b/packages/chrome-extension/src/utils.ts deleted file mode 100644 index c627450b5c7..00000000000 --- a/packages/chrome-extension/src/utils.ts +++ /dev/null @@ -1,17 +0,0 @@ -export function convertPublishableKeyToFrontendAPIOrigin(key = '') { - return `https://${atob(key.replace(/pk_(test|live)_/, '')).slice(0, -1)}`; -} - -export async function getClientCookie(url: string) { - return chrome.cookies.get({ url, name: '__client' }); -} - -export function setInStorage(key: string, value: string) { - return chrome.storage.local.set({ [key]: value }); -} - -export function getFromStorage(key: string) { - return chrome.storage.local.get(key).then(result => { - return result[key]; - }); -} diff --git a/packages/chrome-extension/src/utils/cookies.test.ts b/packages/chrome-extension/src/utils/cookies.test.ts new file mode 100644 index 00000000000..2cd3c4982cf --- /dev/null +++ b/packages/chrome-extension/src/utils/cookies.test.ts @@ -0,0 +1,56 @@ +import { getClientCookie } from './cookies'; + +const domain = 'clerk.domain.com'; +const createCookie = ( + name: string, + value: string, + opts: Partial>, +): chrome.cookies.Cookie => ({ + domain: 'clerk.domain.com', + secure: true, + httpOnly: true, + path: '/', + storeId: '0', + session: false, + hostOnly: false, + sameSite: 'no_restriction', + ...opts, + name, + value, +}); + +describe('utils', () => { + const _chrome = globalThis.chrome; + + // export function get(details: Details): Promise; + + globalThis.chrome = { + // @ts-expect-error - Mock + cookies: { + get: jest.fn(), + // get: jest.fn(({ url, name }) => `cookies.get:${url}:${name}`), + }, + }; + + afterEach(() => jest.resetAllMocks()); + afterAll(() => { + jest.clearAllMocks(); + globalThis.chrome = _chrome; + }); + + // export function get(details: Details): Promise; + describe('getClientCookie', () => { + const url = `https://${domain}`; + const name = '__client'; + const cookie = createCookie(name, 'foo', { domain }); + + test('returns cookie value from chrome.cookies if is set for url', async () => { + const getMock = jest.mocked(globalThis.chrome.cookies.get).mockResolvedValue(cookie); + + expect(await getClientCookie(url)).toBe(cookie); + + expect(getMock).toHaveBeenCalledTimes(1); + expect(getMock).toHaveBeenCalledWith({ url, name }); + }); + }); +}); diff --git a/packages/chrome-extension/src/utils/cookies.ts b/packages/chrome-extension/src/utils/cookies.ts new file mode 100644 index 00000000000..760df91e581 --- /dev/null +++ b/packages/chrome-extension/src/utils/cookies.ts @@ -0,0 +1,3 @@ +export async function getClientCookie(url: string) { + return chrome.cookies.get({ url, name: '__client' }); +} diff --git a/packages/chrome-extension/src/utils/storage.test.ts b/packages/chrome-extension/src/utils/storage.test.ts new file mode 100644 index 00000000000..d2cea9515ff --- /dev/null +++ b/packages/chrome-extension/src/utils/storage.test.ts @@ -0,0 +1,84 @@ +import { ChromeStorageCache } from './storage'; + +type ChromeStorageGetPromise = ( + keys?: string | string[] | { [key: string]: any } | null, +) => Promise<{ [key: string]: any }>; + +describe('ChromeStorageCache', () => { + const KEY = 'foo'; + const VALUE = 'bar'; + + const _void = void 0; + const _chrome = globalThis.chrome; + + globalThis.chrome = { + storage: { + // @ts-expect-error - Mock + local: { + get: jest.fn(), + remove: jest.fn(), + set: jest.fn(), + }, + }, + }; + + afterEach(() => jest.resetAllMocks()); + + afterAll(() => { + jest.clearAllMocks(); + globalThis.chrome = _chrome; + }); + + describe('createKey', () => { + test('returns a string key', () => { + expect(ChromeStorageCache.createKey('a', 'b', 'c')).toBe('a|b|c'); + }); + + test('omits falsy values', () => { + // @ts-expect-error - Testing; Intentionally passing undefined value + expect(ChromeStorageCache.createKey('a', undefined, false, null, 'c')).toBe('a|c'); + }); + }); + + describe('set', () => { + test('setting the storage cache', () => { + const setMock = jest.mocked(globalThis.chrome.storage.local.set).mockImplementationOnce(() => void 0); + + expect(ChromeStorageCache.set(KEY, VALUE)).toBe(_void); + expect(setMock).toHaveBeenCalledTimes(1); + expect(setMock).toHaveBeenCalledWith({ [KEY]: VALUE }); + }); + }); + + describe('remove', () => { + test('removing from the storage cache', () => { + const removeMock = jest.mocked(globalThis.chrome.storage.local.remove).mockImplementationOnce(() => void 0); + + expect(ChromeStorageCache.remove(KEY)).toBe(_void); + expect(removeMock).toHaveBeenCalledTimes(1); + expect(removeMock).toHaveBeenCalledWith(KEY); + }); + }); + + describe('get', () => { + test('value missing', async () => { + const getMock = jest.mocked(globalThis.chrome.storage.local.get).mockResolvedValue({}); + + ChromeStorageCache.get(KEY); + + expect(await ChromeStorageCache.get(KEY)).toBeUndefined(); + expect(getMock).toHaveBeenCalledTimes(2); // Called Twice?! + expect(getMock).toHaveBeenCalledWith(KEY); + }); + + test('value exists', async () => { + const getMock = jest + .mocked(globalThis.chrome.storage.local.get) + .mockResolvedValue({ [KEY]: VALUE }); + + expect(await ChromeStorageCache.get(KEY)).toBe(VALUE); + expect(getMock).toHaveBeenCalledTimes(1); + expect(getMock).toHaveBeenCalledWith(KEY); + }); + }); +}); diff --git a/packages/chrome-extension/src/utils/storage.ts b/packages/chrome-extension/src/utils/storage.ts new file mode 100644 index 00000000000..21ec4c88d6d --- /dev/null +++ b/packages/chrome-extension/src/utils/storage.ts @@ -0,0 +1,18 @@ +type ChromeStorageCacheOptions = { + storageArea?: 'local' | 'sync'; +}; + +// Use chrome.storage (local or sync) to persist Clerk client JWT. +// More information at https://developer.chrome.com/docs/extensions/reference/storage +const createChromeStorageCache = (opts: ChromeStorageCacheOptions = {}) => { + const __storageArea = opts.storageArea || 'local'; + + return { + createKey: (...keys: string[]) => keys.filter(Boolean).join('|'), + get: (key: string) => chrome.storage[__storageArea].get(key).then(result => result[key] || undefined), + remove: (key: string) => chrome.storage[__storageArea].remove(key), + set: (key: string, value: string) => chrome.storage[__storageArea].set({ [key]: value }), + }; +}; + +export const ChromeStorageCache = createChromeStorageCache(); diff --git a/packages/clerk-js/src/core/devBrowserHandler.ts b/packages/clerk-js/src/core/devBrowserHandler.ts index 90851a2575a..0013c0d192e 100644 --- a/packages/clerk-js/src/core/devBrowserHandler.ts +++ b/packages/clerk-js/src/core/devBrowserHandler.ts @@ -4,6 +4,7 @@ import { getDevBrowserJWTFromURL, setDevBrowserJWTInURL, } from '@clerk/shared/devBrowser'; +import { createExtensionSyncManager, events as extensionSyncEvents } from '@clerk/shared/extensionSyncManager'; import { buildURL, createCookieHandler, isDevOrStagingUrl, runIframe } from '../utils'; import { clerkErrorDevInitFailed } from './errors'; @@ -34,6 +35,7 @@ export function createDevBrowserHandler({ fapiClient, }: CreateDevBrowserHandlerOptions): DevBrowserHandler { const cookieHandler = createCookieHandler(); + const extensionSyncManager = createExtensionSyncManager(); const key = DEV_BROWSER_SSO_JWT_KEY; let usesUrlBasedSessionSyncing = true; @@ -46,12 +48,18 @@ export function createDevBrowserHandler({ localStorage.setItem(key, jwt); // Append dev browser JWT to cookies, because server-side redirects (e.g. middleware) has no access to local storage cookieHandler.setDevBrowserCookie(jwt); + + if (jwt) { + extensionSyncManager.dispatch(extensionSyncEvents.DevJWTUpdate, { action: 'set', token: jwt, frontendApi }); + } } function removeDevBrowserJWT() { // TODO: Maybe clear keys for both dev session sync modes to be on the safe side? localStorage.removeItem(key); cookieHandler.removeDevBrowserCookie(); + + extensionSyncManager.dispatch(extensionSyncEvents.DevJWTUpdate, { action: 'remove', frontendApi }); } // location.host == *.[lcl.dev](http://lcl.dev) diff --git a/packages/shared/package.json b/packages/shared/package.json index ea5f893d1f7..75ce762caa7 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -45,13 +45,16 @@ "main": "./dist/index.js", "files": [ "dist", + "apiUrlFromPublishableKey", "browser", "callWithRetry", "color", + "constants", "cookie", "date", "deprecated", "error", + "extensionSyncManager", "file", "globs", "handleValueOrFn", @@ -62,13 +65,11 @@ "localStorageBroadcastChannel", "poller", "proxy", - "underscore", - "url", "react", - "constants", - "apiUrlFromPublishableKey", + "telemetry", "scripts", - "telemetry" + "underscore", + "url" ], "scripts": { "build": "tsup", diff --git a/packages/shared/src/extensionSyncManager.ts b/packages/shared/src/extensionSyncManager.ts new file mode 100644 index 00000000000..1e333f34e6b --- /dev/null +++ b/packages/shared/src/extensionSyncManager.ts @@ -0,0 +1,59 @@ +export const events = { + DevJWTUpdate: 'clerk:sync:dev:jwt:update', +} as const; + +type SyncEvent = (typeof events)[keyof typeof events]; + +type SyncPayloads = { + [events.DevJWTUpdate]: + | { + action: 'set'; + token: string; + frontendApi: string; + } + | { + action: 'remove'; + frontendApi: string; + }; +}; + +type SyncPayload = SyncPayloads[E] & { + event: E; +}; + +type SyncHandler = (evt: MessageEvent>) => void; + +export function createExtensionSyncManager() { + const listeners = new Map>(); + + function dispatch( + event: E, + payload: SyncPayloads[E], + targetOrigin: string = window.location.origin, + transfer?: Transferable[], + ) { + window.postMessage({ event, ...payload } satisfies SyncPayload, targetOrigin, transfer); + } + + function on(event: E, handler: SyncHandler) { + const wrappedHandler: SyncHandler = evt => { + // Only accept messages from ourselves + if (evt.source === window && evt.data.event === event) { + handler(evt); + } + }; + + window.addEventListener('message', wrappedHandler, false); + listeners.set(event, wrappedHandler); + } + + function off(event: E) { + const handler = listeners.get(event); + if (handler) { + window.removeEventListener('message', handler, false); + listeners.delete(event); + } + } + + return { dispatch, off, on }; +} diff --git a/packages/shared/subpaths.mjs b/packages/shared/subpaths.mjs index 7aeddf9defd..5a07267f703 100644 --- a/packages/shared/subpaths.mjs +++ b/packages/shared/subpaths.mjs @@ -2,13 +2,17 @@ // We have to polyfill our "exports" subpaths :cry: export const subpathNames = [ + 'apiUrlFromPublishableKey', 'browser', 'callWithRetry', 'color', + 'constants', 'cookie', 'date', 'deprecated', + 'devBrowser', 'error', + 'extensionSyncManager', 'file', 'globs', 'handleValueOrFn', @@ -19,11 +23,9 @@ export const subpathNames = [ 'localStorageBroadcastChannel', 'poller', 'proxy', + 'telemetry', 'underscore', 'url', - 'constants', - 'apiUrlFromPublishableKey', - 'telemetry', ]; export const subpathFoldersBarrel = ['react']; diff --git a/playground/chrome-extension/src/pages/content/index.tsx b/playground/chrome-extension/src/pages/content/index.tsx index 693adb4fc2f..f8115e18b1b 100644 --- a/playground/chrome-extension/src/pages/content/index.tsx +++ b/playground/chrome-extension/src/pages/content/index.tsx @@ -1,20 +1,4 @@ -import { createRoot } from 'react-dom/client'; -import './style.css' -const div = document.createElement('div'); -div.id = '__root'; -document.body.appendChild(div); +import { ContentScript } from '@clerk/chrome-extension'; -const rootContainer = document.querySelector('#__root'); -if (!rootContainer) throw new Error("Can't find Options root element"); -const root = createRoot(rootContainer); -root.render( -
- content script loaded -
-); - -try { - console.log('content script loaded'); -} catch (e) { - console.error(e); -} +const publishableKey = import.meta.env.VITE_CLERK_PUBLISHABLE_KEY || ""; +ContentScript.init(publishableKey); From 59559bd56724f2a610b8d1ea2ba7e77e2de1e241 Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Mon, 4 Dec 2023 17:34:38 -0500 Subject: [PATCH 3/6] chore(*): Expand Chrome Extension Playground --- playground/chrome-extension/README.md | 35 ++++- .../manifest.dev.json.example | 9 +- .../chrome-extension/manifest.json.example | 19 ++- playground/chrome-extension/package.json | 1 - .../src/assets/styles/index.css | 48 ++++++- .../src/assets/styles/tailwind.css | 3 - .../components/App.tsx} | 0 .../src/components/AuthProvider.tsx | 24 ++++ .../src/components/ClerkHeader.tsx | 17 +++ .../src/components/CurrentUser.tsx | 34 +++++ .../src/components/Layout.tsx | 13 ++ .../src/pages/content/style.css | 6 - .../src/pages/devtools/index.html | 14 +- .../src/pages/devtools/index.ts | 7 +- .../src/pages/{newtab => new-tab}/index.html | 0 .../src/pages/{newtab => new-tab}/index.tsx | 9 +- .../src/pages/new-tab/new-tab.tsx | 53 ++++++++ .../src/pages/newtab/Newtab.css | 38 ------ .../src/pages/newtab/Newtab.tsx | 24 ---- .../src/pages/newtab/index.css | 13 -- .../src/pages/options/Options.css | 8 -- .../src/pages/options/Options.tsx | 6 - .../src/pages/options/index.tsx | 5 +- .../src/pages/options/options.tsx | 54 ++++++++ .../src/pages/options/style.css | 5 + .../src/pages/panel/Panel.tsx | 10 -- .../src/pages/panel/index.tsx | 4 +- .../src/pages/panel/panel.tsx | 54 ++++++++ .../src/pages/panel/{Panel.css => style.css} | 0 .../src/pages/popup/Popup.tsx | 127 ------------------ .../src/pages/popup/index.css | 37 ----- .../src/pages/popup/index.tsx | 7 +- .../src/pages/popup/popup.tsx | 53 ++++++++ .../src/pages/popup/style.css | 12 ++ .../chrome-extension/tailwind.config.cjs | 12 -- playground/chrome-extension/tsconfig.json | 5 +- playground/chrome-extension/vite.config.ts | 13 +- 37 files changed, 450 insertions(+), 329 deletions(-) delete mode 100644 playground/chrome-extension/src/assets/styles/tailwind.css rename playground/chrome-extension/{public/contentStyle.css => src/components/App.tsx} (100%) create mode 100644 playground/chrome-extension/src/components/AuthProvider.tsx create mode 100644 playground/chrome-extension/src/components/ClerkHeader.tsx create mode 100644 playground/chrome-extension/src/components/CurrentUser.tsx create mode 100644 playground/chrome-extension/src/components/Layout.tsx delete mode 100644 playground/chrome-extension/src/pages/content/style.css rename playground/chrome-extension/src/pages/{newtab => new-tab}/index.html (100%) rename playground/chrome-extension/src/pages/{newtab => new-tab}/index.tsx (50%) create mode 100644 playground/chrome-extension/src/pages/new-tab/new-tab.tsx delete mode 100644 playground/chrome-extension/src/pages/newtab/Newtab.css delete mode 100644 playground/chrome-extension/src/pages/newtab/Newtab.tsx delete mode 100644 playground/chrome-extension/src/pages/newtab/index.css delete mode 100644 playground/chrome-extension/src/pages/options/Options.css delete mode 100644 playground/chrome-extension/src/pages/options/Options.tsx create mode 100644 playground/chrome-extension/src/pages/options/options.tsx create mode 100644 playground/chrome-extension/src/pages/options/style.css delete mode 100644 playground/chrome-extension/src/pages/panel/Panel.tsx create mode 100644 playground/chrome-extension/src/pages/panel/panel.tsx rename playground/chrome-extension/src/pages/panel/{Panel.css => style.css} (100%) delete mode 100644 playground/chrome-extension/src/pages/popup/Popup.tsx delete mode 100644 playground/chrome-extension/src/pages/popup/index.css create mode 100644 playground/chrome-extension/src/pages/popup/popup.tsx create mode 100644 playground/chrome-extension/src/pages/popup/style.css delete mode 100644 playground/chrome-extension/tailwind.config.cjs diff --git a/playground/chrome-extension/README.md b/playground/chrome-extension/README.md index 44af4040080..ba335c8bc96 100644 --- a/playground/chrome-extension/README.md +++ b/playground/chrome-extension/README.md @@ -28,7 +28,40 @@ Would you like to work on Open Source software and help maintain this repository ## Introduction -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). It demonstrates a basic password or OTP flow using ClerkJS Components in a Chrome Extension Popup. +This project was bootstrapped with [Vite](https://vitejs.dev/) with [CRXJ](https://crxjs.dev/vite-plugin/). + +It's a kitchen-sink starter of how to use ClerkJS in a Chrome Extension either as a Standalone App or alongside a Web Application via WebSSO. + +It demonstrates a basic password or OTP flow using ClerkJS Components in the following extension contexts: + +- [x] Popup +- [x] Chrome Pages + - [x] New Tab + - [x] History + - [x] Bookmark Manager +- [x] Dev Tools +- [x] Extension Options + +## Getting Started + +- Clone this repo +- Run `npm install` +- Copy manifest examples: `cp manifest.json.example manifest.json; cp manifest.dev.json.example manifest.dev.json` + + + + + + + + + + + + +This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). + +It demonstrates a basic password or OTP flow using ClerkJS Components in a Chrome Extension Popup. diff --git a/playground/chrome-extension/manifest.dev.json.example b/playground/chrome-extension/manifest.dev.json.example index fcad1a80f12..d12bce00848 100644 --- a/playground/chrome-extension/manifest.dev.json.example +++ b/playground/chrome-extension/manifest.dev.json.example @@ -1,5 +1,10 @@ { "host_permissions": [ - "*://localhost:*/*" - ] + "*://localhost/*", + "*:///*" + ], + "icons": { + "32": "dev-icon-32.png", + "128": "dev-icon-128.png" + } } diff --git a/playground/chrome-extension/manifest.json.example b/playground/chrome-extension/manifest.json.example index a3ba1fc727a..28a4d787323 100644 --- a/playground/chrome-extension/manifest.json.example +++ b/playground/chrome-extension/manifest.json.example @@ -3,19 +3,24 @@ "name": "Clerk Chrome Extension Playground", "description": "Playground App for the Clerk Chrome Extension", "action": { - "default_popup": "src/pages/popup/index.html", - "default_icon": { - "32": "icon-32.png" - } + "default_popup": "src/pages/popup/index.html" }, + "chrome_url_overrides": { + "newtab": "src/pages/new-tab/index.html" + }, + "devtools_page": "src/pages/devtools/index.html", + "host_permissions": [ + "https:///*" + ], "icons": { + "32": "icon-32.png", "128": "icon-128.png" }, + "options_ui": { + "page": "src/pages/options/index.html" + }, "permissions": [ "cookies", "storage" - ], - "host_permissions": [ - "*:///" ] } diff --git a/playground/chrome-extension/package.json b/playground/chrome-extension/package.json index e3b991cb021..c2f86f174d9 100644 --- a/playground/chrome-extension/package.json +++ b/playground/chrome-extension/package.json @@ -36,7 +36,6 @@ "fs-extra": "^11.1.0", "nodemon": "^2.0.20", "postcss": "^8.4.31", - "tailwindcss": "^3.3.5", "ts-node": "^10.9.1", "typescript": "^4.9.4", "vite": "^4.5.0" diff --git a/playground/chrome-extension/src/assets/styles/index.css b/playground/chrome-extension/src/assets/styles/index.css index ca969544352..811bc018e2e 100644 --- a/playground/chrome-extension/src/assets/styles/index.css +++ b/playground/chrome-extension/src/assets/styles/index.css @@ -5,13 +5,47 @@ body { sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; +} + +code, pre { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; +} + +.App { + text-align: center; + background-color: #282c34; + color: white; + min-height: 100vh; +} + +.App-container { + text-align: center; + padding: 24px; +} - width: 800px; - height: 600px; - max-width: 780px; +.App-logo { + height: 40vmin; + pointer-events: none; } -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} \ No newline at end of file +.App-header { + min-height: 50vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + + +.Clerk-session-token { + margin: auto; + max-width: 90%; + white-space: pre-wrap; + word-wrap: break-word; +} diff --git a/playground/chrome-extension/src/assets/styles/tailwind.css b/playground/chrome-extension/src/assets/styles/tailwind.css deleted file mode 100644 index b5c61c95671..00000000000 --- a/playground/chrome-extension/src/assets/styles/tailwind.css +++ /dev/null @@ -1,3 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; diff --git a/playground/chrome-extension/public/contentStyle.css b/playground/chrome-extension/src/components/App.tsx similarity index 100% rename from playground/chrome-extension/public/contentStyle.css rename to playground/chrome-extension/src/components/App.tsx diff --git a/playground/chrome-extension/src/components/AuthProvider.tsx b/playground/chrome-extension/src/components/AuthProvider.tsx new file mode 100644 index 00000000000..a17bc85293f --- /dev/null +++ b/playground/chrome-extension/src/components/AuthProvider.tsx @@ -0,0 +1,24 @@ +import React from 'react'; +import { useNavigate } from "react-router-dom"; +import { ClerkProvider } from "@clerk/chrome-extension"; + +const publishableKey = import.meta.env.VITE_CLERK_PUBLISHABLE_KEY || ""; + +export type AuthProviderProps = { + children: React.ReactNode, + syncSessionWithTab?: boolean +} + +export function AuthProvider(props: AuthProviderProps) { + const navigate = useNavigate(); + + return ( + navigate(to)} + routerReplace={to => navigate(to, { replace: true })} + {...props} + /> + ) +} + diff --git a/playground/chrome-extension/src/components/ClerkHeader.tsx b/playground/chrome-extension/src/components/ClerkHeader.tsx new file mode 100644 index 00000000000..043822336e3 --- /dev/null +++ b/playground/chrome-extension/src/components/ClerkHeader.tsx @@ -0,0 +1,17 @@ +import React from 'react'; + +export function ClerkHeader(type: string) { + return ( +
+

Welcome to the Clerk Chrome Extension Starter ({type})!

+ + Learn more about Clerk + +
+ ); +} diff --git a/playground/chrome-extension/src/components/CurrentUser.tsx b/playground/chrome-extension/src/components/CurrentUser.tsx new file mode 100644 index 00000000000..b021e7724bd --- /dev/null +++ b/playground/chrome-extension/src/components/CurrentUser.tsx @@ -0,0 +1,34 @@ +import * as React from 'react'; +import { useAuth, useUser } from "@clerk/chrome-extension"; + +export function CurrentUser() { + const [sessionToken, setSessionToken] = React.useState(""); + const { isSignedIn, user } = useUser(); + const { getToken, signOut } = useAuth(); + + React.useEffect(() => { + const scheduler = setInterval(async () => { + const token = await getToken(); + console.log("Getting token", token) + setSessionToken(token as string); + }, 1000); + + return () => clearInterval(scheduler); + }, []); + + if (!isSignedIn) { + return null; + } + + const email = user.primaryEmailAddress?.emailAddress; + + return ( +
+

Hi, {email ? `${email}!` : ''}

+

Clerk Session Token:

+
{sessionToken}
+ + +
+ ); +} diff --git a/playground/chrome-extension/src/components/Layout.tsx b/playground/chrome-extension/src/components/Layout.tsx new file mode 100644 index 00000000000..9c91f59e21a --- /dev/null +++ b/playground/chrome-extension/src/components/Layout.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import { MemoryRouter } from "react-router-dom"; +import { AuthProvider, AuthProviderProps } from './AuthProvider'; + +type LayoutProps = AuthProviderProps + +export function Layout(props: LayoutProps) { + return ( + + + + ); +} diff --git a/playground/chrome-extension/src/pages/content/style.css b/playground/chrome-extension/src/pages/content/style.css deleted file mode 100644 index 954c6f5f4f9..00000000000 --- a/playground/chrome-extension/src/pages/content/style.css +++ /dev/null @@ -1,6 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; -.langin{ - color: aliceblue; -} \ No newline at end of file diff --git a/playground/chrome-extension/src/pages/devtools/index.html b/playground/chrome-extension/src/pages/devtools/index.html index e17e5b9ded2..666bb682e32 100644 --- a/playground/chrome-extension/src/pages/devtools/index.html +++ b/playground/chrome-extension/src/pages/devtools/index.html @@ -1,10 +1,10 @@ - - - Devtools - - - - + + + Devtools + + + + diff --git a/playground/chrome-extension/src/pages/devtools/index.ts b/playground/chrome-extension/src/pages/devtools/index.ts index 11a69a5ec40..cf2258c594f 100644 --- a/playground/chrome-extension/src/pages/devtools/index.ts +++ b/playground/chrome-extension/src/pages/devtools/index.ts @@ -1,7 +1,6 @@ -import Browser from 'webextension-polyfill'; +import browser from 'webextension-polyfill'; -Browser +browser .devtools .panels - .create('Dev Tools', 'icon-32.png', 'src/pages/panel/index.html') - .catch(console.error); + .create('Clerk Starter', 'icon-32.png', 'src/pages/panel/index.html'); diff --git a/playground/chrome-extension/src/pages/newtab/index.html b/playground/chrome-extension/src/pages/new-tab/index.html similarity index 100% rename from playground/chrome-extension/src/pages/newtab/index.html rename to playground/chrome-extension/src/pages/new-tab/index.html diff --git a/playground/chrome-extension/src/pages/newtab/index.tsx b/playground/chrome-extension/src/pages/new-tab/index.tsx similarity index 50% rename from playground/chrome-extension/src/pages/newtab/index.tsx rename to playground/chrome-extension/src/pages/new-tab/index.tsx index 61c4bd4c607..d9554514046 100644 --- a/playground/chrome-extension/src/pages/newtab/index.tsx +++ b/playground/chrome-extension/src/pages/new-tab/index.tsx @@ -1,14 +1,13 @@ import React from 'react'; import { createRoot } from 'react-dom/client'; -import Newtab from '@pages/newtab/Newtab'; -import '@pages/newtab/index.css'; -import '@assets/styles/tailwind.css'; +import NewTab from './new-tab'; +import '@assets/styles/index.css'; function init() { const rootContainer = document.querySelector("#__root"); - if (!rootContainer) throw new Error("Can't find Newtab root element"); + if (!rootContainer) throw new Error("Can't find NewTab root element"); const root = createRoot(rootContainer); - root.render(); + root.render(); } init(); diff --git a/playground/chrome-extension/src/pages/new-tab/new-tab.tsx b/playground/chrome-extension/src/pages/new-tab/new-tab.tsx new file mode 100644 index 00000000000..1bf078aafae --- /dev/null +++ b/playground/chrome-extension/src/pages/new-tab/new-tab.tsx @@ -0,0 +1,53 @@ +import React from 'react'; +import { Routes, Route } from "react-router-dom"; +import { + SignedIn, + SignedOut, + SignIn, + SignUp, +} from "@clerk/chrome-extension"; + +import "@assets/styles/index.css" + +import { Layout } from '@components/Layout'; +import { CurrentUser } from '@components/CurrentUser'; + +function NewTab() { + return ( + +
+
+

Welcome to the Clerk Chrome Extension Starter!

+ + Learn more about Clerk + +
+
+ + } /> + + + + + + + + + } + /> + +
+
+
+ ); +} + +export default NewTab; diff --git a/playground/chrome-extension/src/pages/newtab/Newtab.css b/playground/chrome-extension/src/pages/newtab/Newtab.css deleted file mode 100644 index 74b5e053450..00000000000 --- a/playground/chrome-extension/src/pages/newtab/Newtab.css +++ /dev/null @@ -1,38 +0,0 @@ -.App { - text-align: center; -} - -.App-logo { - height: 40vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/playground/chrome-extension/src/pages/newtab/Newtab.tsx b/playground/chrome-extension/src/pages/newtab/Newtab.tsx deleted file mode 100644 index 38ce5dc4dc5..00000000000 --- a/playground/chrome-extension/src/pages/newtab/Newtab.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react'; -import logo from '@assets/img/logo.svg'; -import '@pages/newtab/Newtab.css'; - -export default function Newtab(): JSX.Element { - return ( -
-
- logo -

- Edit src/pages/newtab/Newtab.tsx and save to reload. -

- - Learn React! - -
-
- ); -} diff --git a/playground/chrome-extension/src/pages/newtab/index.css b/playground/chrome-extension/src/pages/newtab/index.css deleted file mode 100644 index ec2585e8c0b..00000000000 --- a/playground/chrome-extension/src/pages/newtab/index.css +++ /dev/null @@ -1,13 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} diff --git a/playground/chrome-extension/src/pages/options/Options.css b/playground/chrome-extension/src/pages/options/Options.css deleted file mode 100644 index 1ea51cba69a..00000000000 --- a/playground/chrome-extension/src/pages/options/Options.css +++ /dev/null @@ -1,8 +0,0 @@ -.container { - width: 100%; - height: 50vh; - font-size: 2rem; - display: flex; - align-items: center; - justify-content: center; -} diff --git a/playground/chrome-extension/src/pages/options/Options.tsx b/playground/chrome-extension/src/pages/options/Options.tsx deleted file mode 100644 index b6c79c8683e..00000000000 --- a/playground/chrome-extension/src/pages/options/Options.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import React from 'react'; -import '@pages/options/Options.css'; - -export default function Options(): JSX.Element { - return
Options
; -} diff --git a/playground/chrome-extension/src/pages/options/index.tsx b/playground/chrome-extension/src/pages/options/index.tsx index da48ac11b06..95e37316a39 100644 --- a/playground/chrome-extension/src/pages/options/index.tsx +++ b/playground/chrome-extension/src/pages/options/index.tsx @@ -1,6 +1,9 @@ import React from 'react'; import { createRoot } from 'react-dom/client'; -import Options from '@pages/options/Options'; +import Options from './options'; + +import '@assets/styles/index.css'; +import './style.css'; function init() { const rootContainer = document.querySelector("#__root"); diff --git a/playground/chrome-extension/src/pages/options/options.tsx b/playground/chrome-extension/src/pages/options/options.tsx new file mode 100644 index 00000000000..0da9bae1595 --- /dev/null +++ b/playground/chrome-extension/src/pages/options/options.tsx @@ -0,0 +1,54 @@ +import React from 'react'; +import { Routes, Route } from "react-router-dom"; +import { + SignedIn, + SignedOut, + SignIn, + SignUp, +} from "@clerk/chrome-extension"; + +import '@assets/styles/index.css'; +import './style.css'; + +import { Layout } from '@components/Layout'; +import { CurrentUser } from '@components/CurrentUser'; + +function Options() { + return ( + +
+
+

Welcome to the Clerk Chrome Extension Starter!

+ + Learn more about Clerk + +
+
+ + } /> + + + + + + + + + } + /> + +
+
+
+ ); +} + +export default Options; diff --git a/playground/chrome-extension/src/pages/options/style.css b/playground/chrome-extension/src/pages/options/style.css new file mode 100644 index 00000000000..58bfd509d4e --- /dev/null +++ b/playground/chrome-extension/src/pages/options/style.css @@ -0,0 +1,5 @@ +body { + width: 500px; + min-height: 350px; + /* margin: 0; */ +} diff --git a/playground/chrome-extension/src/pages/panel/Panel.tsx b/playground/chrome-extension/src/pages/panel/Panel.tsx deleted file mode 100644 index 44eb2ed1cee..00000000000 --- a/playground/chrome-extension/src/pages/panel/Panel.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import '@pages/panel/Panel.css'; - -export default function Panel(): JSX.Element { - return ( -
-

Dev Tools Panel

-
- ); -} diff --git a/playground/chrome-extension/src/pages/panel/index.tsx b/playground/chrome-extension/src/pages/panel/index.tsx index 88de29b6616..a94a05621c0 100644 --- a/playground/chrome-extension/src/pages/panel/index.tsx +++ b/playground/chrome-extension/src/pages/panel/index.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { createRoot } from 'react-dom/client'; -import Panel from '@pages/panel/Panel'; -import '@assets/styles/tailwind.css'; +import Panel from '@pages/panel/panel'; +import '@assets/styles/index.css'; function init() { const rootContainer = document.querySelector("#__root"); diff --git a/playground/chrome-extension/src/pages/panel/panel.tsx b/playground/chrome-extension/src/pages/panel/panel.tsx new file mode 100644 index 00000000000..0da9bae1595 --- /dev/null +++ b/playground/chrome-extension/src/pages/panel/panel.tsx @@ -0,0 +1,54 @@ +import React from 'react'; +import { Routes, Route } from "react-router-dom"; +import { + SignedIn, + SignedOut, + SignIn, + SignUp, +} from "@clerk/chrome-extension"; + +import '@assets/styles/index.css'; +import './style.css'; + +import { Layout } from '@components/Layout'; +import { CurrentUser } from '@components/CurrentUser'; + +function Options() { + return ( + +
+
+

Welcome to the Clerk Chrome Extension Starter!

+ + Learn more about Clerk + +
+
+ + } /> + + + + + + + + + } + /> + +
+
+
+ ); +} + +export default Options; diff --git a/playground/chrome-extension/src/pages/panel/Panel.css b/playground/chrome-extension/src/pages/panel/style.css similarity index 100% rename from playground/chrome-extension/src/pages/panel/Panel.css rename to playground/chrome-extension/src/pages/panel/style.css diff --git a/playground/chrome-extension/src/pages/popup/Popup.tsx b/playground/chrome-extension/src/pages/popup/Popup.tsx deleted file mode 100644 index 6e74decc36a..00000000000 --- a/playground/chrome-extension/src/pages/popup/Popup.tsx +++ /dev/null @@ -1,127 +0,0 @@ -import React from 'react'; -import { Routes, Route, MemoryRouter, useNavigate } from "react-router-dom"; -import { - SignedIn, - SignedOut, - SignIn, - SignUp, - useAuth, - useUser, - ClerkProvider, -} from "@clerk/chrome-extension"; - -import "./index.css"; - -function HelloUser() { - const { isSignedIn, user } = useUser(); - const { getToken, signOut } = useAuth(); - - const [sessionToken, setSessionToken] = React.useState(""); - - React.useEffect(() => { - const scheduler = setInterval(async () => { - const token = await getToken(); - setSessionToken(token as string); - }, 1000); - - return () => clearInterval(scheduler); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - if (!isSignedIn) { - return null; - } - - return ( -
-

Hi, {user.primaryEmailAddress?.emailAddress}!

-

Clerk Session Token: {sessionToken}

-

- -

-
- ); -} - -const publishableKey = import.meta.env.VITE_CLERK_PUBLISHABLE_KEY || ""; - -function ClerkProviderWithRoutes() { - const navigate = useNavigate(); - - return ( - navigate(to)} - routerReplace={to => navigate(to, { replace: true })} - syncSessionWithTab - > -
-
-

Welcome to Clerk Chrome Extension Starter!

- - Learn more about Clerk - -
-
- - } /> - - - - - - - - - } - /> - -
-
-
- ); -} - -function App() { - return ( - - - - ); -} - -export default App; - - -// export default function Popup(): JSX.Element { -// return ( -//
-//
-// logo -//

-// Edit src/pages/popup/Popup.jsx and save to reload. -//

-// -// Learn React! -// -//

Popup styled with TailwindCSS!

-//
-//
-// ); -// } - - - diff --git a/playground/chrome-extension/src/pages/popup/index.css b/playground/chrome-extension/src/pages/popup/index.css deleted file mode 100644 index 0ce546ca434..00000000000 --- a/playground/chrome-extension/src/pages/popup/index.css +++ /dev/null @@ -1,37 +0,0 @@ -body { - width: 300px; - height: 260px; - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - - position: relative; -} - - -.App { - text-align: center; -} - -.App-header { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: #282c34; -} - -.App-main { - margin-top: 1em; - display: flex; - justify-content: center; -} - -.App-link { - font-size: 1rem; - color: #6C47FF; -} diff --git a/playground/chrome-extension/src/pages/popup/index.tsx b/playground/chrome-extension/src/pages/popup/index.tsx index c62dee0cc17..84ac3bafc2a 100644 --- a/playground/chrome-extension/src/pages/popup/index.tsx +++ b/playground/chrome-extension/src/pages/popup/index.tsx @@ -1,8 +1,9 @@ import React from 'react'; import { createRoot } from 'react-dom/client'; -import '@pages/popup/index.css'; -import '@assets/styles/tailwind.css'; -import Popup from '@pages/popup/Popup'; +import Popup from './popup'; + +import '@assets/styles/index.css'; +import './style.css'; function init() { const rootContainer = document.querySelector("#__root"); diff --git a/playground/chrome-extension/src/pages/popup/popup.tsx b/playground/chrome-extension/src/pages/popup/popup.tsx new file mode 100644 index 00000000000..65405e7a569 --- /dev/null +++ b/playground/chrome-extension/src/pages/popup/popup.tsx @@ -0,0 +1,53 @@ +import React from 'react'; +import { Routes, Route } from "react-router-dom"; +import { + SignedIn, + SignedOut, + SignIn, + SignUp, +} from "@clerk/chrome-extension"; + +import "./style.css"; +import "@assets/styles/index.css"; +import { Layout } from '@components/Layout'; +import { CurrentUser } from '@components/CurrentUser'; + +function Popup() { + return ( + +
+
+

Welcome to the Clerk Chrome Extension Starter!

+ + Learn more about Clerk + +
+
+ + } /> + + + + + + + + + } + /> + +
+
+
+ ); +} + +export default Popup; diff --git a/playground/chrome-extension/src/pages/popup/style.css b/playground/chrome-extension/src/pages/popup/style.css new file mode 100644 index 00000000000..fba137537e8 --- /dev/null +++ b/playground/chrome-extension/src/pages/popup/style.css @@ -0,0 +1,12 @@ +body { + width: 500px; + min-height: 350px; + margin: 0; + position: relative; +} + +.container { + text-align: center; + padding: 24px; +} + diff --git a/playground/chrome-extension/tailwind.config.cjs b/playground/chrome-extension/tailwind.config.cjs deleted file mode 100644 index 6369be41f75..00000000000 --- a/playground/chrome-extension/tailwind.config.cjs +++ /dev/null @@ -1,12 +0,0 @@ -module.exports = { - content: ["./src/**/*.{js,jsx,ts,tsx}"], - theme: { - extend: { - animation: { - 'spin-slow': 'spin 20s linear infinite', - } - }, - }, - prefix: '', - plugins: [], -} diff --git a/playground/chrome-extension/tsconfig.json b/playground/chrome-extension/tsconfig.json index e7dd6922229..0ccd6fc47a8 100644 --- a/playground/chrome-extension/tsconfig.json +++ b/playground/chrome-extension/tsconfig.json @@ -17,9 +17,10 @@ "jsx": "react-jsx", "baseUrl": ".", "paths": { - "@src/*": ["src/*"], "@assets/*": ["src/assets/*"], - "@pages/*": ["src/pages/*"] + "@components/*": ["src/components/*"], + "@pages/*": ["src/pages/*"], + "@src/*": ["src/*"] } }, "include": ["src", "utils", "vite.config.ts"], diff --git a/playground/chrome-extension/vite.config.ts b/playground/chrome-extension/vite.config.ts index fba72e76389..4687369e360 100644 --- a/playground/chrome-extension/vite.config.ts +++ b/playground/chrome-extension/vite.config.ts @@ -11,6 +11,7 @@ import pkg from './package.json'; const root = resolve(__dirname, 'src'); const pagesDir = resolve(root, 'pages'); const assetsDir = resolve(root, 'assets'); +const componentsDir = resolve(root, 'components'); const outDir = resolve(__dirname, 'dist'); const publicDir = resolve(__dirname, 'public'); @@ -19,7 +20,7 @@ const isDev = process.env.__DEV__ === 'true'; const extensionManifest = { ...manifest, ...(isDev ? devManifest : {} as ManifestV3Export), - name: isDev ? `DEV: ${ manifest.name }` : manifest.name, + name: isDev ? `DEV: ${manifest.name}` : manifest.name, version: pkg.version, }; @@ -50,9 +51,10 @@ const crxPlugin = crx({ export default defineConfig({ resolve: { alias: { - '@src': root, '@assets': assetsDir, + '@components': componentsDir, '@pages': pagesDir, + '@src': root, }, }, plugins: [ @@ -65,6 +67,11 @@ export default defineConfig({ emptyOutDir: true, // !isDev, outDir, minify: !isDev, - sourcemap: isDev + sourcemap: isDev, + rollupOptions: { + input: { + panel: 'src/pages/panel/index.html', + }, + }, }, }); From 7fc6a2daa6f0c0c76bc58c949063d5a470a39050 Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Tue, 5 Dec 2023 20:09:21 -0500 Subject: [PATCH 4/6] feat(chrome-extension,shared): Extended WebSSO Features --- packages/chrome-extension/README.md | 5 +- packages/chrome-extension/jest.config.js | 4 +- packages/chrome-extension/jest.setup.ts | 6 + packages/chrome-extension/package.json | 5 +- .../chrome-extension/src/ClerkProvider.tsx | 28 ++-- .../src/__snapshots__/exports.test.ts.snap | 2 +- packages/chrome-extension/src/content.ts | 8 +- packages/chrome-extension/src/errors.ts | 2 +- packages/chrome-extension/src/index.ts | 1 + packages/chrome-extension/src/singleton.ts | 46 ++++-- .../src/utils/cookies.test.ts | 55 +++---- .../chrome-extension/src/utils/cookies.ts | 6 +- .../src/utils/storage.test.ts | 102 ++++++++----- .../chrome-extension/src/utils/storage.ts | 45 +++++- .../src/utils/validation.test.ts | 68 +++++++++ .../chrome-extension/src/utils/validation.ts | 43 ++++++ packages/chrome-extension/tsconfig.lint.json | 4 + packages/shared/src/constants.ts | 1 + playground/chrome-extension/.gitignore | 18 --- playground/chrome-extension/README.md | 92 +++--------- .../manifest.dev.json.example | 2 +- .../chrome-extension/manifest.json.example | 2 +- playground/chrome-extension/package.json | 9 -- .../public/clerk-logo-dark.png | Bin 12638 -> 0 bytes .../public/clerk-logo-light.png | Bin 4812 -> 0 bytes .../chrome-extension/src/assets/img/logo.svg | 1 - .../src/assets/styles/index.css | 141 ++++++++++++++---- .../chrome-extension/src/components/App.tsx | 0 .../src/components/AuthProvider.tsx | 24 --- .../src/components/ClerkHeader.tsx | 17 --- .../src/components/CurrentUser.tsx | 18 ++- .../src/components/Layout.tsx | 13 -- .../src/components/SharedApp.tsx | 78 ++++++++++ .../src/pages/content/index.tsx | 5 +- .../src/pages/new-tab/index.html | 16 +- .../src/pages/new-tab/index.tsx | 2 - .../src/pages/new-tab/new-tab.tsx | 53 +------ .../src/pages/options/index.html | 16 +- .../src/pages/options/index.tsx | 4 - .../src/pages/options/options.tsx | 54 +------ .../src/pages/options/style.css | 5 - .../src/pages/panel/index.html | 16 +- .../src/pages/panel/index.tsx | 4 +- .../src/pages/panel/panel.tsx | 58 +------ .../src/pages/panel/style.css | 7 - .../src/pages/popup/index.html | 16 +- .../src/pages/popup/index.tsx | 4 - .../src/pages/popup/popup.tsx | 53 +------ .../src/pages/popup/style.css | 12 -- playground/chrome-extension/tsconfig.json | 7 +- playground/chrome-extension/vite.config.ts | 49 ++---- 51 files changed, 605 insertions(+), 622 deletions(-) create mode 100644 packages/chrome-extension/jest.setup.ts create mode 100644 packages/chrome-extension/src/utils/validation.test.ts create mode 100644 packages/chrome-extension/src/utils/validation.ts create mode 100644 packages/chrome-extension/tsconfig.lint.json delete mode 100644 playground/chrome-extension/public/clerk-logo-dark.png delete mode 100644 playground/chrome-extension/public/clerk-logo-light.png delete mode 100644 playground/chrome-extension/src/assets/img/logo.svg delete mode 100644 playground/chrome-extension/src/components/App.tsx delete mode 100644 playground/chrome-extension/src/components/AuthProvider.tsx delete mode 100644 playground/chrome-extension/src/components/ClerkHeader.tsx delete mode 100644 playground/chrome-extension/src/components/Layout.tsx create mode 100644 playground/chrome-extension/src/components/SharedApp.tsx delete mode 100644 playground/chrome-extension/src/pages/options/style.css delete mode 100644 playground/chrome-extension/src/pages/panel/style.css delete mode 100644 playground/chrome-extension/src/pages/popup/style.css diff --git a/packages/chrome-extension/README.md b/packages/chrome-extension/README.md index bae26037817..b4280f6c21e 100644 --- a/packages/chrome-extension/README.md +++ b/packages/chrome-extension/README.md @@ -117,12 +117,13 @@ WebSSO usage snippet: // ... navigate(to)} + routerPush={to => navigate(to)} + routerReplace={to => navigate(to, { replace: true })} syncSessionWithTab > {/* ... */} -//... +// ... ``` Examples of a chrome extension using the `@clerk/chrome-extension` package for authentication diff --git a/packages/chrome-extension/jest.config.js b/packages/chrome-extension/jest.config.js index 82554df0854..3bc23afa620 100644 --- a/packages/chrome-extension/jest.config.js +++ b/packages/chrome-extension/jest.config.js @@ -6,13 +6,13 @@ module.exports = { roots: ['/src'], testEnvironment: 'jsdom', - setupFilesAfterEnv: ['../../jest.setup-after-env.ts'], + setupFilesAfterEnv: ['../../jest.setup-after-env.ts', '/jest.setup.ts'], moduleDirectories: ['node_modules', '/src'], transform: { '^.+\\.m?tsx?$': ['ts-jest', { diagnostics: false }], }, - + clearMocks: true, testRegex: ['/src/.*.test.[jt]sx?$'], testPathIgnorePatterns: ['/node_modules/'], diff --git a/packages/chrome-extension/jest.setup.ts b/packages/chrome-extension/jest.setup.ts new file mode 100644 index 00000000000..23d4e35a7c3 --- /dev/null +++ b/packages/chrome-extension/jest.setup.ts @@ -0,0 +1,6 @@ +import { chrome } from 'jest-chrome'; + +// @ts-expect-error - Mock implementation +chrome.runtime.id = 'chrome-extension-test'; + +Object.assign(globalThis, { chrome, browser: chrome }); diff --git a/packages/chrome-extension/package.json b/packages/chrome-extension/package.json index e93e89b4901..e4dc3653520 100644 --- a/packages/chrome-extension/package.json +++ b/packages/chrome-extension/package.json @@ -46,14 +46,17 @@ }, "dependencies": { "@clerk/clerk-js": "5.0.0-alpha-v5.7", - "@clerk/clerk-react": "5.0.0-alpha-v5.7" + "@clerk/clerk-react": "5.0.0-alpha-v5.7", + "webextension-polyfill": "^0.10.0" }, "devDependencies": { "@types/chrome": "*", "@types/node": "^18.17.0", "@types/react": "*", "@types/react-dom": "*", + "@types/webextension-polyfill": "^0.10.7", "eslint-config-custom": "*", + "jest-chrome": "^0.8.0", "tsup": "*", "typescript": "*" }, diff --git a/packages/chrome-extension/src/ClerkProvider.tsx b/packages/chrome-extension/src/ClerkProvider.tsx index 33be899b818..d78dbcd7e21 100644 --- a/packages/chrome-extension/src/ClerkProvider.tsx +++ b/packages/chrome-extension/src/ClerkProvider.tsx @@ -4,6 +4,7 @@ import { __internal__setErrorThrowerOptions, ClerkProvider as ClerkReactProvider import React from 'react'; import { buildClerk } from './singleton'; +import { type StorageCache } from './utils/storage'; Clerk.sdkMetadata = { name: PACKAGE_NAME, @@ -14,23 +15,31 @@ __internal__setErrorThrowerOptions({ packageName: '@clerk/chrome-extension', }); -type WebSSOClerkProviderCustomProps = { - syncSessionWithTab?: boolean; -}; +type WebSSOClerkProviderCustomProps = + | { + syncSessionHost?: never; + syncSessionWithTab?: false; + storageCache?: never; + } + | { + syncSessionHost?: string; + syncSessionWithTab: true; + storageCache?: StorageCache; + }; type WebSSOClerkProviderProps = ClerkReactProviderProps & WebSSOClerkProviderCustomProps; const WebSSOClerkProvider = (props: WebSSOClerkProviderProps): JSX.Element | null => { - const { children, ...rest } = props; + const { children, storageCache: runtimeStorageCache, syncSessionWithTab, ...rest } = props; const { publishableKey = '' } = props; const [clerkInstance, setClerkInstance] = React.useState(null); React.useEffect(() => { void (async () => { - setClerkInstance(await buildClerk({ publishableKey })); + setClerkInstance(await buildClerk({ publishableKey, storageCache: runtimeStorageCache })); })(); - }, []); + }, []); // eslint-disable-line react-hooks/exhaustive-deps if (!clerkInstance) { return null; @@ -60,8 +69,9 @@ const StandaloneClerkProvider = (props: ClerkReactProviderProps): JSX.Element => ); }; -type ChromeExtensionClerkProviderProps = WebSSOClerkProviderProps; +export type ChromeExtensionClerkProviderProps = WebSSOClerkProviderProps; -export function ClerkProvider({ syncSessionWithTab, ...rest }: ChromeExtensionClerkProviderProps): JSX.Element | null { - return syncSessionWithTab ? : ; +export function ClerkProvider(props: ChromeExtensionClerkProviderProps): JSX.Element | null { + const { syncSessionHost, storageCache, syncSessionWithTab, ...rest } = props; + return syncSessionWithTab ? : ; } diff --git a/packages/chrome-extension/src/__snapshots__/exports.test.ts.snap b/packages/chrome-extension/src/__snapshots__/exports.test.ts.snap index 9f2f3d56060..39c05499d05 100644 --- a/packages/chrome-extension/src/__snapshots__/exports.test.ts.snap +++ b/packages/chrome-extension/src/__snapshots__/exports.test.ts.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`public exports should not include a breaking change 1`] = ` -[ +Array [ "AuthenticateWithRedirectCallback", "ClerkLoaded", "ClerkLoading", diff --git a/packages/chrome-extension/src/content.ts b/packages/chrome-extension/src/content.ts index 299acfdcce5..2fd259ebaa2 100644 --- a/packages/chrome-extension/src/content.ts +++ b/packages/chrome-extension/src/content.ts @@ -3,7 +3,7 @@ import { createExtensionSyncManager, events } from '@clerk/shared/extensionSyncM import { STORAGE_KEY_CLIENT_JWT } from './constants'; import { ClerkChromeExtensionError, logErrorHandler } from './errors'; -import { ChromeStorageCache } from './utils/storage'; +import { BrowserStorageCache } from './utils/storage'; export const ContentScript = { init(publishableKey: string) { @@ -40,12 +40,12 @@ export const ContentScript = { return; } - const KEY = ChromeStorageCache.createKey(data.frontendApi, STORAGE_KEY_CLIENT_JWT); + const KEY = BrowserStorageCache.createKey(data.frontendApi, STORAGE_KEY_CLIENT_JWT); if (data.action === 'set') { - void ChromeStorageCache.set(KEY, data.token); + void BrowserStorageCache.set(KEY, data.token); } else if (data.action === 'remove') { - void ChromeStorageCache.remove(KEY); + void BrowserStorageCache.remove(KEY); } }); } catch (e) { diff --git a/packages/chrome-extension/src/errors.ts b/packages/chrome-extension/src/errors.ts index 0067fb2eefa..08634d9f674 100644 --- a/packages/chrome-extension/src/errors.ts +++ b/packages/chrome-extension/src/errors.ts @@ -1,5 +1,5 @@ // error handler that logs the error (used in cookie retrieval and token saving) -export const logErrorHandler = (err: Error) => console.error(err); +export const logErrorHandler = (err: Error) => console.error(err, err.stack); export class ClerkChromeExtensionError extends Error { clerk: boolean = true; diff --git a/packages/chrome-extension/src/index.ts b/packages/chrome-extension/src/index.ts index e5bd9848c43..f489db83aa4 100644 --- a/packages/chrome-extension/src/index.ts +++ b/packages/chrome-extension/src/index.ts @@ -1,5 +1,6 @@ export * from '@clerk/clerk-react'; export { ContentScript } from './content'; +export type { ChromeExtensionClerkProviderProps } from './ClerkProvider'; // order matters since we want override @clerk/clerk-react ClerkProvider export { ClerkProvider } from './ClerkProvider'; diff --git a/packages/chrome-extension/src/singleton.ts b/packages/chrome-extension/src/singleton.ts index 8d81ca29d51..7c40a17ac6c 100644 --- a/packages/chrome-extension/src/singleton.ts +++ b/packages/chrome-extension/src/singleton.ts @@ -1,56 +1,70 @@ import { Clerk } from '@clerk/clerk-js'; import type { ClerkProp } from '@clerk/clerk-react'; -import { parsePublishableKey } from '@clerk/shared'; +import { CLIENT_JWT_KEY, DEV_BROWSER_JWT_MARKER } from '@clerk/shared'; +import browser from 'webextension-polyfill'; import { STORAGE_KEY_CLIENT_JWT } from './constants'; import { logErrorHandler } from './errors'; import { getClientCookie } from './utils/cookies'; -import { ChromeStorageCache } from './utils/storage'; +import { BrowserStorageCache, type StorageCache } from './utils/storage'; +import { parseAndValidatePublishableKey, validateManifest } from './utils/validation'; export let clerk: ClerkProp; type BuildClerkOptions = { publishableKey: string; + storageCache?: StorageCache; + syncSessionHost?: string; }; -export async function buildClerk({ publishableKey }: BuildClerkOptions): Promise { +export async function buildClerk({ + publishableKey, + storageCache = BrowserStorageCache, + syncSessionHost = 'http://localhost', +}: BuildClerkOptions): Promise { if (clerk) { return clerk; } - const { frontendApi, instanceType } = parsePublishableKey(publishableKey) || {}; + // Will throw if manifest is invalid + validateManifest(browser.runtime.getManifest()); - if (!frontendApi || !instanceType) { - throw new Error('Invalid publishable key.'); - } + // Will throw if publishableKey is invalid + const { frontendApi, instanceType } = parseAndValidatePublishableKey(publishableKey); - const clientCookie = await getClientCookie(frontendApi).catch(logErrorHandler); + const isProd = instanceType === 'production'; - // TODO: Listen to client cookie changes and sync updates - // https://developer.chrome.com/docs/extensions/reference/cookies/#event-onChanged + // Get client cookie from browser + const clientCookie = await (isProd + ? getClientCookie(frontendApi, CLIENT_JWT_KEY) + : getClientCookie(syncSessionHost, DEV_BROWSER_JWT_MARKER) + ).catch(logErrorHandler); - const KEY = ChromeStorageCache.createKey(frontendApi, STORAGE_KEY_CLIENT_JWT); + // Create StorageCache key + const CACHE_KEY = storageCache.createKey(isProd ? frontendApi : syncSessionHost, STORAGE_KEY_CLIENT_JWT); if (clientCookie) { - await ChromeStorageCache.set(KEY, clientCookie.value).catch(logErrorHandler); + await storageCache.set(CACHE_KEY, clientCookie.value).catch(logErrorHandler); } clerk = new Clerk(publishableKey); - // @ts-expect-error - Clerk doesn't expose this unstable method + // @ts-expect-error - Clerk doesn't expose this unstable method publicly clerk.__unstable__onBeforeRequest(async requestInit => { requestInit.credentials = 'omit'; requestInit.url?.searchParams.append('_is_native', '1'); - const jwt = await ChromeStorageCache.get(KEY); + const jwt = await storageCache.get(CACHE_KEY); + (requestInit.headers as Headers).set('authorization', jwt || ''); }); - // @ts-expect-error - Clerk doesn't expose this unstable method + // @ts-expect-error - Clerk doesn't expose this unstable method publicly clerk.__unstable__onAfterResponse(async (_, response) => { const authHeader = response.headers.get('authorization'); + if (authHeader) { - await ChromeStorageCache.set(KEY, authHeader); + await storageCache.set(CACHE_KEY, authHeader); } }); diff --git a/packages/chrome-extension/src/utils/cookies.test.ts b/packages/chrome-extension/src/utils/cookies.test.ts index 2cd3c4982cf..3b1da25ce13 100644 --- a/packages/chrome-extension/src/utils/cookies.test.ts +++ b/packages/chrome-extension/src/utils/cookies.test.ts @@ -1,53 +1,34 @@ +import browser from 'webextension-polyfill'; + import { getClientCookie } from './cookies'; -const domain = 'clerk.domain.com'; -const createCookie = ( - name: string, - value: string, - opts: Partial>, -): chrome.cookies.Cookie => ({ - domain: 'clerk.domain.com', - secure: true, +type RequiredCookieOpts = 'domain' | 'name' | 'value'; +type CreateCookieOpts = Pick & + Partial>; + +const createCookie = (opts: CreateCookieOpts): browser.Cookies.Cookie => ({ + firstPartyDomain: opts.domain, + hostOnly: false, httpOnly: true, path: '/', - storeId: '0', + sameSite: 'lax', + secure: true, session: false, - hostOnly: false, - sameSite: 'no_restriction', + storeId: '0', ...opts, - name, - value, }); -describe('utils', () => { - const _chrome = globalThis.chrome; - - // export function get(details: Details): Promise; - - globalThis.chrome = { - // @ts-expect-error - Mock - cookies: { - get: jest.fn(), - // get: jest.fn(({ url, name }) => `cookies.get:${url}:${name}`), - }, - }; - - afterEach(() => jest.resetAllMocks()); - afterAll(() => { - jest.clearAllMocks(); - globalThis.chrome = _chrome; - }); - - // export function get(details: Details): Promise; +describe('browser.cookies', () => { describe('getClientCookie', () => { + const domain = 'clerk.domain.com'; const url = `https://${domain}`; const name = '__client'; - const cookie = createCookie(name, 'foo', { domain }); + const cookie = createCookie({ name, value: 'foo', domain }); - test('returns cookie value from chrome.cookies if is set for url', async () => { - const getMock = jest.mocked(globalThis.chrome.cookies.get).mockResolvedValue(cookie); + test('returns cookie value from browser.cookies if is set for url', async () => { + const getMock = jest.mocked(browser.cookies.get).mockResolvedValue(cookie); - expect(await getClientCookie(url)).toBe(cookie); + expect(await getClientCookie(url, name)).toBe(cookie); expect(getMock).toHaveBeenCalledTimes(1); expect(getMock).toHaveBeenCalledWith({ url, name }); diff --git a/packages/chrome-extension/src/utils/cookies.ts b/packages/chrome-extension/src/utils/cookies.ts index 760df91e581..8aca56a2422 100644 --- a/packages/chrome-extension/src/utils/cookies.ts +++ b/packages/chrome-extension/src/utils/cookies.ts @@ -1,3 +1,5 @@ -export async function getClientCookie(url: string) { - return chrome.cookies.get({ url, name: '__client' }); +import browser from 'webextension-polyfill'; + +export async function getClientCookie(url: string, name: string) { + return browser.cookies.get({ url, name }); } diff --git a/packages/chrome-extension/src/utils/storage.test.ts b/packages/chrome-extension/src/utils/storage.test.ts index d2cea9515ff..c0575bf8cbe 100644 --- a/packages/chrome-extension/src/utils/storage.test.ts +++ b/packages/chrome-extension/src/utils/storage.test.ts @@ -1,60 +1,39 @@ -import { ChromeStorageCache } from './storage'; +import browser from 'webextension-polyfill'; -type ChromeStorageGetPromise = ( - keys?: string | string[] | { [key: string]: any } | null, -) => Promise<{ [key: string]: any }>; +import { BrowserStorageCache, MemoryStorageCache } from './storage'; -describe('ChromeStorageCache', () => { +describe('StorageCache', () => { const KEY = 'foo'; const VALUE = 'bar'; const _void = void 0; - const _chrome = globalThis.chrome; - - globalThis.chrome = { - storage: { - // @ts-expect-error - Mock - local: { - get: jest.fn(), - remove: jest.fn(), - set: jest.fn(), - }, - }, - }; - - afterEach(() => jest.resetAllMocks()); - - afterAll(() => { - jest.clearAllMocks(); - globalThis.chrome = _chrome; - }); describe('createKey', () => { test('returns a string key', () => { - expect(ChromeStorageCache.createKey('a', 'b', 'c')).toBe('a|b|c'); + expect(BrowserStorageCache.createKey('a', 'b', 'c')).toBe('a|b|c'); }); test('omits falsy values', () => { // @ts-expect-error - Testing; Intentionally passing undefined value - expect(ChromeStorageCache.createKey('a', undefined, false, null, 'c')).toBe('a|c'); + expect(BrowserStorageCache.createKey('a', undefined, false, null, 'c')).toBe('a|c'); }); }); describe('set', () => { - test('setting the storage cache', () => { - const setMock = jest.mocked(globalThis.chrome.storage.local.set).mockImplementationOnce(() => void 0); + test('setting the storage cache', async () => { + const setMock = jest.mocked(browser.storage.local.set).mockResolvedValueOnce(_void); - expect(ChromeStorageCache.set(KEY, VALUE)).toBe(_void); + expect(await BrowserStorageCache.set(KEY, VALUE)).toBe(_void); expect(setMock).toHaveBeenCalledTimes(1); expect(setMock).toHaveBeenCalledWith({ [KEY]: VALUE }); }); }); describe('remove', () => { - test('removing from the storage cache', () => { - const removeMock = jest.mocked(globalThis.chrome.storage.local.remove).mockImplementationOnce(() => void 0); + test('removing from the storage cache', async () => { + const removeMock = jest.mocked(browser.storage.local.remove).mockResolvedValueOnce(_void); - expect(ChromeStorageCache.remove(KEY)).toBe(_void); + expect(await BrowserStorageCache.remove(KEY)).toBe(_void); expect(removeMock).toHaveBeenCalledTimes(1); expect(removeMock).toHaveBeenCalledWith(KEY); }); @@ -62,23 +41,64 @@ describe('ChromeStorageCache', () => { describe('get', () => { test('value missing', async () => { - const getMock = jest.mocked(globalThis.chrome.storage.local.get).mockResolvedValue({}); - - ChromeStorageCache.get(KEY); + const getMock = jest.mocked(browser.storage.local.get).mockResolvedValue({}); - expect(await ChromeStorageCache.get(KEY)).toBeUndefined(); - expect(getMock).toHaveBeenCalledTimes(2); // Called Twice?! + expect(await BrowserStorageCache.get(KEY)).toBeUndefined(); + expect(getMock).toHaveBeenCalledTimes(1); expect(getMock).toHaveBeenCalledWith(KEY); }); test('value exists', async () => { - const getMock = jest - .mocked(globalThis.chrome.storage.local.get) - .mockResolvedValue({ [KEY]: VALUE }); + const getMock = jest.mocked(browser.storage.local.get).mockResolvedValue({ [KEY]: VALUE }); - expect(await ChromeStorageCache.get(KEY)).toBe(VALUE); + expect(await BrowserStorageCache.get(KEY)).toBe(VALUE); expect(getMock).toHaveBeenCalledTimes(1); expect(getMock).toHaveBeenCalledWith(KEY); }); }); }); + +describe('MemoryStorageCache', () => { + const KEY = 'foo'; + const VALUE = 'bar'; + + const _void = void 0; + + describe('createKey', () => { + test('returns a string key', () => { + expect(MemoryStorageCache.createKey('a', 'b', 'c')).toBe('a|b|c'); + }); + + test('omits falsy values', () => { + // @ts-expect-error - Testing; Intentionally passing undefined value + expect(MemoryStorageCache.createKey('a', undefined, false, null, 'c')).toBe('a|c'); + }); + }); + + describe('set', () => { + test('setting the storage cache', async () => { + await MemoryStorageCache.set(KEY, VALUE); + expect(await MemoryStorageCache.get(KEY)).toBe(VALUE); + }); + }); + + describe('remove', () => { + test('removing from the storage cache', async () => { + expect(await MemoryStorageCache.set(KEY, VALUE)).toBe(_void); + expect(await MemoryStorageCache.get(KEY)).toBe(VALUE); + expect(await MemoryStorageCache.remove(KEY)).toBe(_void); + expect(await MemoryStorageCache.get(KEY)).toBeUndefined(); + }); + }); + + describe('get', () => { + test('value missing', async () => { + expect(await MemoryStorageCache.get(KEY)).toBeUndefined(); + }); + + test('value exists', async () => { + expect(await MemoryStorageCache.set(KEY, VALUE)).toBe(_void); + expect(await MemoryStorageCache.get(KEY)).toBe(VALUE); + }); + }); +}); diff --git a/packages/chrome-extension/src/utils/storage.ts b/packages/chrome-extension/src/utils/storage.ts index 21ec4c88d6d..8dedf36bb09 100644 --- a/packages/chrome-extension/src/utils/storage.ts +++ b/packages/chrome-extension/src/utils/storage.ts @@ -1,18 +1,47 @@ -type ChromeStorageCacheOptions = { +import browser from 'webextension-polyfill'; + +type StorageCacheOptions = { storageArea?: 'local' | 'sync'; }; -// Use chrome.storage (local or sync) to persist Clerk client JWT. +export type StorageCache = { + createKey: (...keys: string[]) => string; + get: (key: string) => Promise; + remove: (key: string) => Promise; + set: (key: string, value: string) => Promise; +}; + +const createKey: StorageCache['createKey'] = (...keys: string[]) => keys.filter(Boolean).join('|'); + +// Use browser.storage (local or sync) to persist Clerk client JWT. // More information at https://developer.chrome.com/docs/extensions/reference/storage -const createChromeStorageCache = (opts: ChromeStorageCacheOptions = {}) => { +const createBrowserStorageCache = (opts: StorageCacheOptions = {}): StorageCache => { const __storageArea = opts.storageArea || 'local'; return { - createKey: (...keys: string[]) => keys.filter(Boolean).join('|'), - get: (key: string) => chrome.storage[__storageArea].get(key).then(result => result[key] || undefined), - remove: (key: string) => chrome.storage[__storageArea].remove(key), - set: (key: string, value: string) => chrome.storage[__storageArea].set({ [key]: value }), + createKey, + get: (key: string) => browser.storage[__storageArea].get(key).then(result => result[key] || undefined), + remove: (key: string) => browser.storage[__storageArea].remove(key), + set: (key: string, value: string) => browser.storage[__storageArea].set({ [key]: value }), + }; +}; + +const createMemoryStorageCache = (): StorageCache => { + const cache: Map = new Map(); + + return { + createKey, + get: (key: string) => Promise.resolve(cache.get(key)), + remove: (key: string) => { + cache.delete(key); + return Promise.resolve(); + }, + set: (key: string, value: string) => { + cache.set(key, value); + return Promise.resolve(); + }, }; }; -export const ChromeStorageCache = createChromeStorageCache(); +export const BrowserStorageCache = createBrowserStorageCache(); +export const MemoryStorageCache = createMemoryStorageCache(); diff --git a/packages/chrome-extension/src/utils/validation.test.ts b/packages/chrome-extension/src/utils/validation.test.ts new file mode 100644 index 00000000000..792273f023d --- /dev/null +++ b/packages/chrome-extension/src/utils/validation.test.ts @@ -0,0 +1,68 @@ +import browser, { type Manifest } from 'webextension-polyfill'; + +import { validateManifest } from './validation'; + +const validClerkManifest = { + permissions: ['cookies', 'storage'], + host_permissions: ['https://*/*'], +} as Manifest.WebExtensionManifest; + +describe('browser.runtime', () => { + test('polyfill', async () => { + const mockGetManifest = (browser.runtime.getManifest = jest.fn().mockReturnValue({})); + + expect(() => browser.runtime.getManifest()).not.toThrowError(); + expect(mockGetManifest).toHaveBeenCalledTimes(1); + }); + + describe('validateManifest(manifest)', () => { + test('valid configuration', async () => { + browser.runtime.getManifest = jest.fn().mockReturnValue({ + permissions: ['cookies', 'storage'], + host_permissions: ['https://*/*'], + } as Manifest.WebExtensionManifest); + + expect(() => validateManifest(validClerkManifest)).not.toThrowError(); + }); + + describe('invalid configuration', () => { + describe('permissions', () => { + test('missing root key', async () => { + const manifest = { + host_permissions: ['https://*/*'], + } as Manifest.WebExtensionManifest; + + expect(() => validateManifest(manifest)).toThrowError(/^Missing `permissions`/); + }); + + test('missing cookies', async () => { + const manifest = { + permissions: ['storage'], + host_permissions: ['https://*/*'], + } as Manifest.WebExtensionManifest; + + expect(() => validateManifest(manifest)).toThrowError(/^Missing `cookies`/); + }); + + test('missing storage', async () => { + const manifest = { + permissions: ['cookies'], + host_permissions: ['https://*/*'], + } as Manifest.WebExtensionManifest; + + expect(() => validateManifest(manifest)).toThrowError(/^Missing `storage`/); + }); + }); + + describe('host_permissions', () => { + test('should work', async () => { + const manifest = { + permissions: ['cookies', 'storage'], + } as Manifest.WebExtensionManifest; + + expect(() => validateManifest(manifest)).toThrowError(/^Missing `host_permissions`/); + }); + }); + }); + }); +}); diff --git a/packages/chrome-extension/src/utils/validation.ts b/packages/chrome-extension/src/utils/validation.ts new file mode 100644 index 00000000000..f222f29e5d3 --- /dev/null +++ b/packages/chrome-extension/src/utils/validation.ts @@ -0,0 +1,43 @@ +import { isPublishableKey, parsePublishableKey } from '@clerk/shared'; +import type { PublishableKey } from '@clerk/types'; +import type { Manifest } from 'webextension-polyfill'; + +import { ClerkChromeExtensionError } from '../errors'; + +export function parseAndValidatePublishableKey(publishableKey: string): PublishableKey { + if (!isPublishableKey(publishableKey)) { + throw new ClerkChromeExtensionError('Invalid publishable key'); + } + + const key = parsePublishableKey(publishableKey); + + if (!key?.frontendApi) { + throw new ClerkChromeExtensionError('Missing Frontend API from publishableKey'); + } + + if (!key?.instanceType) { + throw new ClerkChromeExtensionError('Missing Instance Type from publishableKey'); + } + + return key; +} + +export function validateManifest(manifest: Manifest.WebExtensionManifest): void { + if (!manifest.permissions) { + throw new Error('Missing `permissions` key in manifest.json'); + } + + if (!manifest.host_permissions) { + throw new Error('Missing `host_permissions` key in manifest.json'); + } + + if (!manifest.permissions.includes('cookies')) { + throw new Error('Missing `cookies` in the `permissions` key in manifest.json'); + } + + if (!manifest.permissions.includes('storage')) { + throw new Error('Missing `storage` in the `permissions` key in manifest.json'); + } + + // TODO: Validate hosts +} diff --git a/packages/chrome-extension/tsconfig.lint.json b/packages/chrome-extension/tsconfig.lint.json new file mode 100644 index 00000000000..41f511c28c8 --- /dev/null +++ b/packages/chrome-extension/tsconfig.lint.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "include": ["src", "./*.ts"] +} diff --git a/packages/shared/src/constants.ts b/packages/shared/src/constants.ts index bf3fc978401..9febf9a924f 100644 --- a/packages/shared/src/constants.ts +++ b/packages/shared/src/constants.ts @@ -16,3 +16,4 @@ export const STAGING_ENV_SUFFIXES = ['.accountsstage.dev']; export const LOCAL_API_URL = 'https://api.lclclerk.com'; export const STAGING_API_URL = 'https://api.clerkstage.dev'; export const PROD_API_URL = 'https://api.clerk.com'; +export const CLIENT_JWT_KEY = '__client'; diff --git a/playground/chrome-extension/.gitignore b/playground/chrome-extension/.gitignore index a7b798ef93a..b780dd861d3 100644 --- a/playground/chrome-extension/.gitignore +++ b/playground/chrome-extension/.gitignore @@ -1,20 +1,10 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - # dependencies /node_modules -/.pnp -.pnp.js -.yalc/ -yalc.lock # manifests - manifest.* !manifest.*.example -# testing -/coverage - # production /build /dist @@ -22,11 +12,3 @@ manifest.* # misc .DS_Store .env -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/playground/chrome-extension/README.md b/playground/chrome-extension/README.md index ba335c8bc96..ec04cbcaf49 100644 --- a/playground/chrome-extension/README.md +++ b/playground/chrome-extension/README.md @@ -32,81 +32,35 @@ This project was bootstrapped with [Vite](https://vitejs.dev/) with [CRXJ](https It's a kitchen-sink starter of how to use ClerkJS in a Chrome Extension either as a Standalone App or alongside a Web Application via WebSSO. -It demonstrates a basic password or OTP flow using ClerkJS Components in the following extension contexts: - -- [x] Popup -- [x] Chrome Pages - - [x] New Tab - - [x] History - - [x] Bookmark Manager -- [x] Dev Tools -- [x] Extension Options - -## Getting Started - -- Clone this repo -- Run `npm install` -- Copy manifest examples: `cp manifest.json.example manifest.json; cp manifest.dev.json.example manifest.dev.json` - - - - - - - - - - - - -This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). - -It demonstrates a basic password or OTP flow using ClerkJS Components in a Chrome Extension Popup. - -This repo will be enhanced with examples of authentication redirection flows such as OAuth or Magic Links and advance extension patterns -using [Manifest V3 service workers](https://developer.chrome.com/docs/extensions/mv3/service_workers/) and the new [chrome.storage API](https://developer.chrome.com/docs/extensions/reference/storage/). - -## Available Scripts - -In the project directory, you can run: - -### `npm start` - -Runs the app in the development mode.\ -Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.\ -You will also see any lint errors in the console. - -### `npm test` - -Launches the test runner in the interactive watch mode.\ -See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. - -### `npm run build` - -Builds the app for production to the `build` folder.\ -It correctly bundles React in production mode and optimizes the build for the best performance. - -The build is minified and the filenames include the hashes.\ -Your app is ready to be deployed! - -See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. - -### `npm run eject` +It demonstrates a basic password or OTP flow using ClerkJS Components in the following extension contexts: -**Note: this is a one-way operation. Once you `eject`, you can’t go back!** +- [x] Popup `action.*` +- [x] Chrome Pages + - [x] New Tab `chrome_url_overrides.newtab` + - [x] History `chrome_url_overrides.history` + - [x] Bookmark Manager `chrome_url_overrides.bookmarks` +- [x] Dev Tools `devtools_page` +- [x] Extension Options `options_ui` -If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. +You may safely remove any of the above contexts from the `manifest.json` if you do not need them. -Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. +This repo will be enhanced with examples of authentication redirection flows such as OAuth or Magic Links and advanced extension patterns. -You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. +## Getting Started -## Learn More +1. Sign up for a Clerk account at [https://clerk.com](https://dashboard.clerk.com/sign-up?utm_source=github&utm_medium=template_repos&utm_campaign=chrome_extension_template). +2. Go to the [Clerk dashboard](https://dashboard.clerk.com?utm_source=github&utm_medium=template_repos&utm_campaign=chrome_extension_template) and create an application. +3. Clone the repository `git clone https://github.com/clerkinc/clerk-chrome-extension-starter.git clerk-chrome-extension-starter` +4. Go to the project directory: cd clerk-chrome-extension-starter +5. Install dependencies: `npm install` +6. Copy example files and sent the required variables in each file: + - `cp .env.example .env` + - `cp manifest.json.example manifest.json` + - `cp manifest.dev.json.example manifest.dev.json` (The attributes in this file overwrite the attributes in `manifest.json` when running in development mode.) +7. Launch the development server: `npm run dev` -You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). +The files generated in the `dist` directory can be loaded as an unpacked extension in Chrome. -To learn React, check out the [React documentation](https://reactjs.org/). +PLEASE NOTE: Any changes to the manifest require a reload of the extension in [chrome://extensions/](chrome://extensions/). diff --git a/playground/chrome-extension/manifest.dev.json.example b/playground/chrome-extension/manifest.dev.json.example index d12bce00848..4e80c18a706 100644 --- a/playground/chrome-extension/manifest.dev.json.example +++ b/playground/chrome-extension/manifest.dev.json.example @@ -1,7 +1,7 @@ { "host_permissions": [ "*://localhost/*", - "*:///*" + "https:///*" ], "icons": { "32": "dev-icon-32.png", diff --git a/playground/chrome-extension/manifest.json.example b/playground/chrome-extension/manifest.json.example index 28a4d787323..adf133812bc 100644 --- a/playground/chrome-extension/manifest.json.example +++ b/playground/chrome-extension/manifest.json.example @@ -10,7 +10,7 @@ }, "devtools_page": "src/pages/devtools/index.html", "host_permissions": [ - "https:///*" + "https:///*" ], "icons": { "32": "icon-32.png", diff --git a/playground/chrome-extension/package.json b/playground/chrome-extension/package.json index c2f86f174d9..fe85b6c9017 100644 --- a/playground/chrome-extension/package.json +++ b/playground/chrome-extension/package.json @@ -23,17 +23,8 @@ "@types/react": "^18.2.39", "@types/react-dom": "^18.2.17", "@types/webextension-polyfill": "^0.10.0", - "@typescript-eslint/eslint-plugin": "^5.49.0", - "@typescript-eslint/parser": "^5.49.0", "@vitejs/plugin-react-swc": "^3.0.1", "autoprefixer": "^10.4.16", - "eslint": "^8.32.0", - "eslint-config-prettier": "^8.6.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-react": "^7.32.1", - "eslint-plugin-react-hooks": "^4.3.0", - "fs-extra": "^11.1.0", "nodemon": "^2.0.20", "postcss": "^8.4.31", "ts-node": "^10.9.1", diff --git a/playground/chrome-extension/public/clerk-logo-dark.png b/playground/chrome-extension/public/clerk-logo-dark.png deleted file mode 100644 index 1faeb9411dad12afcd0da917ef64b220278200c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12638 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 M07*qoM6N<$g1b0y9RL6T diff --git a/playground/chrome-extension/public/clerk-logo-light.png b/playground/chrome-extension/public/clerk-logo-light.png deleted file mode 100644 index fe83c603236421132e8c7acedc843aa16f5390bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4812 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 mHuFLrgIBP6*_g+-MgI?)oZC}SKyKUs0000 \ No newline at end of file diff --git a/playground/chrome-extension/src/assets/styles/index.css b/playground/chrome-extension/src/assets/styles/index.css index 811bc018e2e..629dadba4fa 100644 --- a/playground/chrome-extension/src/assets/styles/index.css +++ b/playground/chrome-extension/src/assets/styles/index.css @@ -1,51 +1,134 @@ +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;700&family=Source+Code+Pro&display=swap'); + body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + background-color: #0c042a; + font-family: 'Inter', sans-serif; + font-weight: 400; + margin: 0; + padding: 24px; } -code, pre { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; +pre { + background-image: radial-gradient(at 50% 100%, rgba(91, 197, 239, 0.1) 0%, rgba(255, 255, 255, 0) 80%, rgba(91, 197, 239, 0) 80%); + background: linear-gradient(0deg, rgba(28, 15, 77, 0.12) -52.71%, rgba(28, 15, 77, 0) 85%),rgba(10, 12, 61, 1); + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 12px; + box-shadow: 0px 42px 56px rgba(5, 1, 54, 0.42),0px 17.5466px 23.3955px rgba(5, 1, 54, 0.301919),0px 9.38125px 12.5083px rgba(5, 1, 54, 0.250365),0px 5.25905px 7.01207px rgba(5, 1, 54, 0.21),0px 2.79304px 3.72406px rgba(5, 1, 54, 0.169635),0px 1.16225px 1.54966px rgba(5, 1, 54, 0.118081); + font-family: 'Source Code Pro', monospace; + font-weight: 400; + letter-spacing: 1px; + line-height: 1.5; + margin: auto; + max-width: 100%; + min-height: 100px; + padding: 1.5rem; + text-align: left; + white-space: pre-wrap; + word-wrap: break-word; + user-select: all; } -.App { - text-align: center; - background-color: #282c34; - color: white; - min-height: 100vh; +a { + color: #61dafb; } -.App-container { - text-align: center; - padding: 24px; +h1 { + font-size: 56px; + font-weight: 700; + letter-spacing: -1.12px; + margin: 2vh 0 0; + margin-bottom: 5vh; } -.App-logo { - height: 40vmin; - pointer-events: none; +h2 { + font-size: 32px; + font-weight: 700; + letter-spacing: -1.12px; + margin: 0; } -.App-header { - min-height: 50vh; +header { + align-items: center; + border-bottom: 1px solid #3d3b3b; + color: white; display: flex; flex-direction: column; - align-items: center; justify-content: center; - font-size: calc(10px + 2vmin); - color: white; + min-height: 40vh; + padding-bottom: 5vh; } -.App-link { - color: #61dafb; +main { + margin-left: 2vw; + margin-right: 2vw; + text-align: left; } - -.Clerk-session-token { +.cl-rootBox { margin: auto; - max-width: 90%; - white-space: pre-wrap; +} + +.container { + color: white; + display: flex; + flex-direction: column; + gap: 10vh; + margin-inline: auto; + min-height: 100vh; + text-align: center; + width: 600px; +} + +.content { + display: flex; + flex-direction: column; + gap: 18px; +} + +button, a.button { + align-items: center; + appearance: none; + background: #FFFFFF; + border: 0 solid #d8dde8; + border-width: 0; + border-style: solid; + border-radius: 0.5rem; + border-color: #D8DDE8; + box-sizing: border-box; + box-shadow: 0px 1px 2px rgba(57, 67, 86, 0.08); + color: #6C47FF; + cursor: pointer; + display: inline-flex; + font-size: 14px; + font-weight: 700; + height: 3rem; + justify-content: center; + line-height: 1.2; + margin: 0; + min-width: 2.5rem; + min-height: 48px; + outline: 2px solid transparent; + outline-offset: 2px; + overflow: visible; + text-decoration: none; + text-transform: uppercase; + padding: 0; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-inline-start: 1rem; + padding-inline-end: 1rem; + position: relative; + user-select: none; + vertical-align: middle; + white-space: nowrap; + width: 225px; word-wrap: break-word; + z-index: 100; +} + +a.invert { + background: #6C47FF; + color: #FFFFFF; } diff --git a/playground/chrome-extension/src/components/App.tsx b/playground/chrome-extension/src/components/App.tsx deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/playground/chrome-extension/src/components/AuthProvider.tsx b/playground/chrome-extension/src/components/AuthProvider.tsx deleted file mode 100644 index a17bc85293f..00000000000 --- a/playground/chrome-extension/src/components/AuthProvider.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react'; -import { useNavigate } from "react-router-dom"; -import { ClerkProvider } from "@clerk/chrome-extension"; - -const publishableKey = import.meta.env.VITE_CLERK_PUBLISHABLE_KEY || ""; - -export type AuthProviderProps = { - children: React.ReactNode, - syncSessionWithTab?: boolean -} - -export function AuthProvider(props: AuthProviderProps) { - const navigate = useNavigate(); - - return ( - navigate(to)} - routerReplace={to => navigate(to, { replace: true })} - {...props} - /> - ) -} - diff --git a/playground/chrome-extension/src/components/ClerkHeader.tsx b/playground/chrome-extension/src/components/ClerkHeader.tsx deleted file mode 100644 index 043822336e3..00000000000 --- a/playground/chrome-extension/src/components/ClerkHeader.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; - -export function ClerkHeader(type: string) { - return ( -
-

Welcome to the Clerk Chrome Extension Starter ({type})!

- - Learn more about Clerk - -
- ); -} diff --git a/playground/chrome-extension/src/components/CurrentUser.tsx b/playground/chrome-extension/src/components/CurrentUser.tsx index b021e7724bd..5b8d5ddb796 100644 --- a/playground/chrome-extension/src/components/CurrentUser.tsx +++ b/playground/chrome-extension/src/components/CurrentUser.tsx @@ -1,15 +1,14 @@ -import * as React from 'react'; +import { useEffect, useState } from 'react'; import { useAuth, useUser } from "@clerk/chrome-extension"; export function CurrentUser() { - const [sessionToken, setSessionToken] = React.useState(""); + const [sessionToken, setSessionToken] = useState(""); const { isSignedIn, user } = useUser(); const { getToken, signOut } = useAuth(); - React.useEffect(() => { + useEffect(() => { const scheduler = setInterval(async () => { const token = await getToken(); - console.log("Getting token", token) setSessionToken(token as string); }, 1000); @@ -23,12 +22,15 @@ export function CurrentUser() { const email = user.primaryEmailAddress?.emailAddress; return ( -
+

Hi, {email ? `${email}!` : ''}

-

Clerk Session Token:

-
{sessionToken}
- +
+

Clerk Session Token:

+
{sessionToken}
+
+ +
); } diff --git a/playground/chrome-extension/src/components/Layout.tsx b/playground/chrome-extension/src/components/Layout.tsx deleted file mode 100644 index 9c91f59e21a..00000000000 --- a/playground/chrome-extension/src/components/Layout.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import React from 'react'; -import { MemoryRouter } from "react-router-dom"; -import { AuthProvider, AuthProviderProps } from './AuthProvider'; - -type LayoutProps = AuthProviderProps - -export function Layout(props: LayoutProps) { - return ( - - - - ); -} diff --git a/playground/chrome-extension/src/components/SharedApp.tsx b/playground/chrome-extension/src/components/SharedApp.tsx new file mode 100644 index 00000000000..7b49b579938 --- /dev/null +++ b/playground/chrome-extension/src/components/SharedApp.tsx @@ -0,0 +1,78 @@ +import { ClerkProvider, type ChromeExtensionClerkProviderProps } from "@clerk/chrome-extension"; +import { Routes, Route, useNavigate } from "react-router-dom"; +import { + SignedIn, + SignedOut, + SignIn, + SignUp, +} from "@clerk/chrome-extension"; + +import "@/assets/styles/index.css" + +import { CurrentUser } from '@/components/CurrentUser'; + +const publishableKey = import.meta.env.VITE_CLERK_PUBLISHABLE_KEY || ""; + +export type SharedAppProps = Pick & { + className?: string; +} + +export function SharedApp({ className, ...rest }: SharedAppProps) { + const navigate = useNavigate(); + + return ( + navigate(to)} + routerReplace={to => navigate(to, { replace: true })} + syncSessionWithTab + {...rest} + > +
+
+ + + + + + + + + + + + + + + + + +

Clerk Chrome Extension Starter!

+ + + Learn more about Clerk + +
+ +
+ + } /> + + + + + + + + + } + /> + +
+
+
+ ); +} diff --git a/playground/chrome-extension/src/pages/content/index.tsx b/playground/chrome-extension/src/pages/content/index.tsx index f8115e18b1b..de0869e4012 100644 --- a/playground/chrome-extension/src/pages/content/index.tsx +++ b/playground/chrome-extension/src/pages/content/index.tsx @@ -1,4 +1 @@ -import { ContentScript } from '@clerk/chrome-extension'; - -const publishableKey = import.meta.env.VITE_CLERK_PUBLISHABLE_KEY || ""; -ContentScript.init(publishableKey); +console.log('content script loaded') diff --git a/playground/chrome-extension/src/pages/new-tab/index.html b/playground/chrome-extension/src/pages/new-tab/index.html index 7e455b9a872..e794ed94acd 100644 --- a/playground/chrome-extension/src/pages/new-tab/index.html +++ b/playground/chrome-extension/src/pages/new-tab/index.html @@ -1,12 +1,12 @@ - - - New tab - + + + New tab + - -
- - + +
+ + diff --git a/playground/chrome-extension/src/pages/new-tab/index.tsx b/playground/chrome-extension/src/pages/new-tab/index.tsx index d9554514046..48b5565878b 100644 --- a/playground/chrome-extension/src/pages/new-tab/index.tsx +++ b/playground/chrome-extension/src/pages/new-tab/index.tsx @@ -1,7 +1,5 @@ -import React from 'react'; import { createRoot } from 'react-dom/client'; import NewTab from './new-tab'; -import '@assets/styles/index.css'; function init() { const rootContainer = document.querySelector("#__root"); diff --git a/playground/chrome-extension/src/pages/new-tab/new-tab.tsx b/playground/chrome-extension/src/pages/new-tab/new-tab.tsx index 1bf078aafae..aeb1cd4b2dc 100644 --- a/playground/chrome-extension/src/pages/new-tab/new-tab.tsx +++ b/playground/chrome-extension/src/pages/new-tab/new-tab.tsx @@ -1,53 +1,12 @@ -import React from 'react'; -import { Routes, Route } from "react-router-dom"; -import { - SignedIn, - SignedOut, - SignIn, - SignUp, -} from "@clerk/chrome-extension"; - -import "@assets/styles/index.css" - -import { Layout } from '@components/Layout'; -import { CurrentUser } from '@components/CurrentUser'; +import { MemoryRouter } from "react-router-dom"; +import { SharedApp } from '@/components/SharedApp'; function NewTab() { return ( - -
-
-

Welcome to the Clerk Chrome Extension Starter!

- - Learn more about Clerk - -
-
- - } /> - - - - - - - - - } - /> - -
-
-
- ); + + + + ) } export default NewTab; diff --git a/playground/chrome-extension/src/pages/options/index.html b/playground/chrome-extension/src/pages/options/index.html index fe96b7fd26d..db5fa745afe 100644 --- a/playground/chrome-extension/src/pages/options/index.html +++ b/playground/chrome-extension/src/pages/options/index.html @@ -1,12 +1,12 @@ - - - Options - + + + Options + - -
- - + +
+ + diff --git a/playground/chrome-extension/src/pages/options/index.tsx b/playground/chrome-extension/src/pages/options/index.tsx index 95e37316a39..48630999fb9 100644 --- a/playground/chrome-extension/src/pages/options/index.tsx +++ b/playground/chrome-extension/src/pages/options/index.tsx @@ -1,10 +1,6 @@ -import React from 'react'; import { createRoot } from 'react-dom/client'; import Options from './options'; -import '@assets/styles/index.css'; -import './style.css'; - function init() { const rootContainer = document.querySelector("#__root"); if (!rootContainer) throw new Error("Can't find Options root element"); diff --git a/playground/chrome-extension/src/pages/options/options.tsx b/playground/chrome-extension/src/pages/options/options.tsx index 0da9bae1595..f2b20d9fed4 100644 --- a/playground/chrome-extension/src/pages/options/options.tsx +++ b/playground/chrome-extension/src/pages/options/options.tsx @@ -1,54 +1,12 @@ -import React from 'react'; -import { Routes, Route } from "react-router-dom"; -import { - SignedIn, - SignedOut, - SignIn, - SignUp, -} from "@clerk/chrome-extension"; - -import '@assets/styles/index.css'; -import './style.css'; - -import { Layout } from '@components/Layout'; -import { CurrentUser } from '@components/CurrentUser'; +import { MemoryRouter } from "react-router-dom"; +import { SharedApp } from '@/components/SharedApp'; function Options() { return ( - -
-
-

Welcome to the Clerk Chrome Extension Starter!

- - Learn more about Clerk - -
-
- - } /> - - - - - - - - - } - /> - -
-
-
- ); + + + + ) } export default Options; diff --git a/playground/chrome-extension/src/pages/options/style.css b/playground/chrome-extension/src/pages/options/style.css deleted file mode 100644 index 58bfd509d4e..00000000000 --- a/playground/chrome-extension/src/pages/options/style.css +++ /dev/null @@ -1,5 +0,0 @@ -body { - width: 500px; - min-height: 350px; - /* margin: 0; */ -} diff --git a/playground/chrome-extension/src/pages/panel/index.html b/playground/chrome-extension/src/pages/panel/index.html index 564b65b3b84..7aa306d0ca7 100644 --- a/playground/chrome-extension/src/pages/panel/index.html +++ b/playground/chrome-extension/src/pages/panel/index.html @@ -1,12 +1,12 @@ - - - Devtools Panel - + + + Devtools Panel + - -
- - + +
+ + diff --git a/playground/chrome-extension/src/pages/panel/index.tsx b/playground/chrome-extension/src/pages/panel/index.tsx index a94a05621c0..88ce49ce797 100644 --- a/playground/chrome-extension/src/pages/panel/index.tsx +++ b/playground/chrome-extension/src/pages/panel/index.tsx @@ -1,7 +1,5 @@ -import React from 'react'; import { createRoot } from 'react-dom/client'; -import Panel from '@pages/panel/panel'; -import '@assets/styles/index.css'; +import Panel from './panel'; function init() { const rootContainer = document.querySelector("#__root"); diff --git a/playground/chrome-extension/src/pages/panel/panel.tsx b/playground/chrome-extension/src/pages/panel/panel.tsx index 0da9bae1595..a2ae4f3cb00 100644 --- a/playground/chrome-extension/src/pages/panel/panel.tsx +++ b/playground/chrome-extension/src/pages/panel/panel.tsx @@ -1,54 +1,12 @@ -import React from 'react'; -import { Routes, Route } from "react-router-dom"; -import { - SignedIn, - SignedOut, - SignIn, - SignUp, -} from "@clerk/chrome-extension"; +import { MemoryRouter } from "react-router-dom"; +import { SharedApp } from '@/components/SharedApp'; -import '@assets/styles/index.css'; -import './style.css'; - -import { Layout } from '@components/Layout'; -import { CurrentUser } from '@components/CurrentUser'; - -function Options() { +function Panel() { return ( - -
-
-

Welcome to the Clerk Chrome Extension Starter!

- - Learn more about Clerk - -
-
- - } /> - - - - - - - - - } - /> - -
-
-
- ); + + + + ) } -export default Options; +export default Panel; diff --git a/playground/chrome-extension/src/pages/panel/style.css b/playground/chrome-extension/src/pages/panel/style.css deleted file mode 100644 index 843f23e8c89..00000000000 --- a/playground/chrome-extension/src/pages/panel/style.css +++ /dev/null @@ -1,7 +0,0 @@ -body { - background-color: #242424; -} - -.container { - color: #ffffff; -} \ No newline at end of file diff --git a/playground/chrome-extension/src/pages/popup/index.html b/playground/chrome-extension/src/pages/popup/index.html index 7b8317aab84..b60f054fcee 100644 --- a/playground/chrome-extension/src/pages/popup/index.html +++ b/playground/chrome-extension/src/pages/popup/index.html @@ -1,12 +1,12 @@ - - - Popup - + + + Popup + - -
- - + +
+ + diff --git a/playground/chrome-extension/src/pages/popup/index.tsx b/playground/chrome-extension/src/pages/popup/index.tsx index 84ac3bafc2a..695a35a37d8 100644 --- a/playground/chrome-extension/src/pages/popup/index.tsx +++ b/playground/chrome-extension/src/pages/popup/index.tsx @@ -1,10 +1,6 @@ -import React from 'react'; import { createRoot } from 'react-dom/client'; import Popup from './popup'; -import '@assets/styles/index.css'; -import './style.css'; - function init() { const rootContainer = document.querySelector("#__root"); if (!rootContainer) throw new Error("Can't find Popup root element"); diff --git a/playground/chrome-extension/src/pages/popup/popup.tsx b/playground/chrome-extension/src/pages/popup/popup.tsx index 65405e7a569..f3fa7470612 100644 --- a/playground/chrome-extension/src/pages/popup/popup.tsx +++ b/playground/chrome-extension/src/pages/popup/popup.tsx @@ -1,53 +1,12 @@ -import React from 'react'; -import { Routes, Route } from "react-router-dom"; -import { - SignedIn, - SignedOut, - SignIn, - SignUp, -} from "@clerk/chrome-extension"; - -import "./style.css"; -import "@assets/styles/index.css"; -import { Layout } from '@components/Layout'; -import { CurrentUser } from '@components/CurrentUser'; +import { MemoryRouter } from "react-router-dom"; +import { SharedApp } from '@/components/SharedApp'; function Popup() { return ( - -
-
-

Welcome to the Clerk Chrome Extension Starter!

- - Learn more about Clerk - -
-
- - } /> - - - - - - - - - } - /> - -
-
-
- ); + + + + ) } export default Popup; diff --git a/playground/chrome-extension/src/pages/popup/style.css b/playground/chrome-extension/src/pages/popup/style.css deleted file mode 100644 index fba137537e8..00000000000 --- a/playground/chrome-extension/src/pages/popup/style.css +++ /dev/null @@ -1,12 +0,0 @@ -body { - width: 500px; - min-height: 350px; - margin: 0; - position: relative; -} - -.container { - text-align: center; - padding: 24px; -} - diff --git a/playground/chrome-extension/tsconfig.json b/playground/chrome-extension/tsconfig.json index 0ccd6fc47a8..5dd31527680 100644 --- a/playground/chrome-extension/tsconfig.json +++ b/playground/chrome-extension/tsconfig.json @@ -17,11 +17,8 @@ "jsx": "react-jsx", "baseUrl": ".", "paths": { - "@assets/*": ["src/assets/*"], - "@components/*": ["src/components/*"], - "@pages/*": ["src/pages/*"], - "@src/*": ["src/*"] + "@/*": ["src/*"] } }, - "include": ["src", "utils", "vite.config.ts"], + "include": ["src", "vite.config.ts"], } diff --git a/playground/chrome-extension/vite.config.ts b/playground/chrome-extension/vite.config.ts index 4687369e360..0e40558bb78 100644 --- a/playground/chrome-extension/vite.config.ts +++ b/playground/chrome-extension/vite.config.ts @@ -1,46 +1,23 @@ -import react from '@vitejs/plugin-react-swc'; +import { fileURLToPath, URL } from 'url'; import { resolve } from 'path'; -import fs from 'fs'; -import { defineConfig } from 'vite'; + +import react from '@vitejs/plugin-react-swc'; import { crx, ManifestV3Export } from '@crxjs/vite-plugin'; +import { defineConfig } from 'vite'; import manifest from './manifest.json'; import devManifest from './manifest.dev.json'; import pkg from './package.json'; -const root = resolve(__dirname, 'src'); -const pagesDir = resolve(root, 'pages'); -const assetsDir = resolve(root, 'assets'); -const componentsDir = resolve(root, 'components'); -const outDir = resolve(__dirname, 'dist'); -const publicDir = resolve(__dirname, 'public'); - const isDev = process.env.__DEV__ === 'true'; const extensionManifest = { ...manifest, ...(isDev ? devManifest : {} as ManifestV3Export), - name: isDev ? `DEV: ${manifest.name}` : manifest.name, + name: isDev ? `[DEV] ${manifest.name}` : manifest.name, version: pkg.version, }; -// plugin to remove dev icons from prod build -function stripDevIcons (apply: boolean) { - if (apply) return null - - return { - name: 'strip-dev-icons', - resolveId (source: string) { - return source === 'virtual-module' ? source : null - }, - renderStart (outputOptions: any, inputOptions: any) { - const outDir = outputOptions.dir - fs.rm(resolve(outDir, 'dev-icon-32.png'), () => console.log(`Deleted dev-icon-32.png frm prod build`)) - fs.rm(resolve(outDir, 'dev-icon-128.png'), () => console.log(`Deleted dev-icon-128.png frm prod build`)) - } - } -} - const crxPlugin = crx({ manifest: extensionManifest as ManifestV3Export, contentScripts: { @@ -50,22 +27,18 @@ const crxPlugin = crx({ export default defineConfig({ resolve: { - alias: { - '@assets': assetsDir, - '@components': componentsDir, - '@pages': pagesDir, - '@src': root, - }, + alias: [ + { find: '@/', replacement: fileURLToPath(new URL('./src/', import.meta.url)) }, + ], }, plugins: [ react(), crxPlugin, - stripDevIcons(isDev) ], - publicDir, + publicDir: resolve(__dirname, 'public'), build: { - emptyOutDir: true, // !isDev, - outDir, + emptyOutDir: !isDev, + outDir: resolve(__dirname, 'dist'), minify: !isDev, sourcemap: isDev, rollupOptions: { From e935e928b50700fa381742cdd3b3457bc7c97274 Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Tue, 5 Dec 2023 20:18:26 -0500 Subject: [PATCH 5/6] chore(shared): Remove unecessary files --- package-lock.json | 17025 +++++++++------- .../src/__snapshots__/exports.test.ts.snap | 1 - packages/chrome-extension/src/content.ts | 55 - packages/chrome-extension/src/index.ts | 1 - .../clerk-js/src/core/devBrowserHandler.ts | 8 - packages/shared/package.json | 11 +- packages/shared/src/extensionSyncManager.ts | 59 - packages/shared/subpaths.mjs | 8 +- 8 files changed, 9634 insertions(+), 7534 deletions(-) delete mode 100644 packages/chrome-extension/src/content.ts delete mode 100644 packages/shared/src/extensionSyncManager.ts diff --git a/package-lock.json b/package-lock.json index 1f8e4639fcb..38b523b2630 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8186,15 +8186,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/chrome": { - "version": "0.0.237", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/filesystem": "*", - "@types/har-format": "*" - } - }, "node_modules/@types/common-tags": { "version": "1.8.2", "dev": true, @@ -8521,6 +8512,13 @@ "version": "4.0.0", "license": "MIT" }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true, + "peer": true + }, "node_modules/@types/prop-types": { "version": "15.7.5", "dev": true, @@ -8678,6 +8676,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/webextension-polyfill": { + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@types/webextension-polyfill/-/webextension-polyfill-0.10.7.tgz", + "integrity": "sha512-10ql7A0qzBmFB+F+qAke/nP1PIonS0TXZAOMVOxEUsm+lGSW6uwVcISFNa0I4Oyj0884TZVWGGMIWeXOVSNFHw==", + "dev": true + }, "node_modules/@types/webpack-dev-server": { "version": "4.7.2", "dev": true, @@ -11084,6 +11088,13 @@ "wcwidth": "^1.0.1" } }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true, + "peer": true + }, "node_modules/browser-tabs-lock": { "version": "1.2.15", "hasInstallScript": true, @@ -21123,71 +21134,213 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "devOptional": true, + "node_modules/jest-jasmine2": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "dev": true, + "peer": true, "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@jest/environment": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "throat": "^6.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "devOptional": true, + "node_modules/jest-jasmine2/node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "devOptional": true, + "node_modules/jest-jasmine2/node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dev": true, + "peer": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-leak-detector/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "devOptional": true + "node_modules/jest-jasmine2/node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "devOptional": true, + "node_modules/jest-jasmine2/node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dev": true, + "peer": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dev": true, + "peer": true, "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "node_modules/jest-jasmine2/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dev": true, + "peer": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/jest-jasmine2/node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dev": true, + "peer": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-jasmine2/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -21198,11 +21351,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/chalk": { + "node_modules/jest-jasmine2/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "dev": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -21214,11 +21368,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { + "node_modules/jest-jasmine2/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -21226,317 +21381,384 @@ "node": ">=7.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/color-name": { + "node_modules/jest-jasmine2/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true + "dev": true, + "peer": true }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "node_modules/jest-jasmine2/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "peer": true, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "devOptional": true, + "node_modules/jest-jasmine2/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dev": true, + "peer": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "devOptional": true, + "node_modules/jest-jasmine2/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=10" + "node": "*" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-matcher-utils/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "devOptional": true - }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/jest-jasmine2/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "devOptional": true, + "node_modules/jest-jasmine2/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "peer": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", - "devOptional": true, - "license": "MIT", + "node_modules/jest-jasmine2/node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dev": true, + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "devOptional": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "node_modules/jest-jasmine2/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "peer": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" }, "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", - "devOptional": true, - "license": "MIT", + "node_modules/jest-jasmine2/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "peer": true, "dependencies": { - "color-name": "~1.1.4" + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { - "node": ">=7.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.4", - "devOptional": true, - "license": "MIT" - }, - "node_modules/jest-message-util/node_modules/has-flag": { - "version": "4.0.0", - "devOptional": true, - "license": "MIT", + "node_modules/jest-jasmine2/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "devOptional": true, + "node_modules/jest-jasmine2/node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, + "peer": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/types": "^27.5.1", + "@types/node": "*" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "devOptional": true, + "node_modules/jest-jasmine2/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "dev": true, + "peer": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "devOptional": true - }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "7.2.0", - "devOptional": true, - "license": "MIT", + "node_modules/jest-jasmine2/node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "dev": true, + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "devOptional": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" + "node_modules/jest-jasmine2/node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "devOptional": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" + "node_modules/jest-jasmine2/node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "devOptional": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "devOptional": true, + "node_modules/jest-jasmine2/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "peer": true, "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" + "picomatch": "^2.2.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "devOptional": true, + "node_modules/jest-jasmine2/node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "dev": true, + "peer": true, "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "node_modules/jest-jasmine2/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 10.13.0" } }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "node_modules/jest-jasmine2/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, - "dependencies": { - "color-name": "~1.1.4" - }, + "node_modules/jest-jasmine2/node_modules/resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "dev": true, + "peer": true, "engines": { - "node": ">=7.0.0" + "node": ">=10" } }, - "node_modules/jest-resolve/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true - }, - "node_modules/jest-resolve/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "node_modules/jest-jasmine2/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-resolve/node_modules/supports-color": { + "node_modules/jest-jasmine2/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -21544,39 +21766,67 @@ "node": ">=8" } }, - "node_modules/jest-runner": { + "node_modules/jest-leak-detector": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "devOptional": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "devOptional": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "devOptional": true + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "devOptional": true, "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/ansi-styles": { + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -21591,7 +21841,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runner/node_modules/chalk": { + "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -21607,7 +21857,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runner/node_modules/color-convert": { + "node_modules/jest-matcher-utils/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -21619,13 +21869,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-runner/node_modules/color-name": { + "node_modules/jest-matcher-utils/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "devOptional": true }, - "node_modules/jest-runner/node_modules/has-flag": { + "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -21634,52 +21884,39 @@ "node": ">=8" } }, - "node_modules/jest-runner/node_modules/jest-worker": { + "node_modules/jest-matcher-utils/node_modules/pretty-format": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "devOptional": true, "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "devOptional": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runner/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "devOptional": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "devOptional": true }, - "node_modules/jest-runner/node_modules/supports-color": { + "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -21691,44 +21928,30 @@ "node": ">=8" } }, - "node_modules/jest-runtime": { + "node_modules/jest-message-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "devOptional": true, "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", + "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", - "@types/node": "*", + "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "stack-utils": "^2.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/ansi-styles": { + "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "devOptional": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -21739,11 +21962,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/chalk": { + "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "devOptional": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -21755,11 +21977,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/color-convert": { + "node_modules/jest-message-util/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "devOptional": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -21767,46 +21988,55 @@ "node": ">=7.0.0" } }, - "node_modules/jest-runtime/node_modules/color-name": { + "node_modules/jest-message-util/node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, - "node_modules/jest-runtime/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "devOptional": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "devOptional": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/supports-color": { + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "devOptional": true + }, + "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "devOptional": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -21814,40 +22044,82 @@ "node": ">=8" } }, - "node_modules/jest-snapshot": { + "node_modules/jest-mock": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "devOptional": true, "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" + "@types/node": "*", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "devOptional": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "devOptional": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "devOptional": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "devOptional": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "devOptional": true, "dependencies": { @@ -21860,7 +22132,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/chalk": { + "node_modules/jest-resolve/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -21876,7 +22148,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/color-convert": { + "node_modules/jest-resolve/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -21888,13 +22160,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-snapshot/node_modules/color-name": { + "node_modules/jest-resolve/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "devOptional": true }, - "node_modules/jest-snapshot/node_modules/has-flag": { + "node_modules/jest-resolve/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -21903,39 +22175,7 @@ "node": ">=8" } }, - "node_modules/jest-snapshot/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "devOptional": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "devOptional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "devOptional": true - }, - "node_modules/jest-snapshot/node_modules/supports-color": { + "node_modules/jest-resolve/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -21947,27 +22187,43 @@ "node": ">=8" } }, - "node_modules/jest-util": { + "node_modules/jest-runner": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "devOptional": true, "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "ci-info": "^3.2.0", + "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-util/node_modules/ansi-styles": { + "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "devOptional": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -21978,10 +22234,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-util/node_modules/chalk": { + "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "devOptional": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -21993,10 +22250,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-util/node_modules/color-convert": { + "node_modules/jest-runner/node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "devOptional": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -22004,23 +22262,71 @@ "node": ">=7.0.0" } }, - "node_modules/jest-util/node_modules/color-name": { + "node_modules/jest-runner/node_modules/color-name": { "version": "1.1.4", - "devOptional": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true }, - "node_modules/jest-util/node_modules/has-flag": { + "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "devOptional": true, - "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-util/node_modules/supports-color": { + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "devOptional": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "devOptional": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "devOptional": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -22028,24 +22334,40 @@ "node": ">=8" } }, - "node_modules/jest-validate": { + "node_modules/jest-runtime": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "devOptional": true, "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", + "@types/node": "*", "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-validate/node_modules/ansi-styles": { + "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -22060,7 +22382,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-validate/node_modules/chalk": { + "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -22076,7 +22398,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-validate/node_modules/color-convert": { + "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -22088,54 +22410,42 @@ "node": ">=7.0.0" } }, - "node_modules/jest-validate/node_modules/color-name": { + "node_modules/jest-runtime/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "devOptional": true }, - "node_modules/jest-validate/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "devOptional": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "devOptional": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=8" } }, - "node_modules/jest-validate/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "devOptional": true - }, - "node_modules/jest-validate/node_modules/supports-color": { + "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -22147,26 +22457,52 @@ "node": ">=8" } }, - "node_modules/jest-watcher": { + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "devOptional": true, "dependencies": { - "@jest/test-result": "^29.7.0", + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", + "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "emittery": "^0.13.1", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", "jest-util": "^29.7.0", - "string-length": "^4.0.1" + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-watcher/node_modules/ansi-styles": { + "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -22181,7 +22517,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-watcher/node_modules/chalk": { + "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -22197,7 +22533,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-watcher/node_modules/color-convert": { + "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -22209,13 +22545,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-watcher/node_modules/color-name": { + "node_modules/jest-snapshot/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "devOptional": true }, - "node_modules/jest-watcher/node_modules/has-flag": { + "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -22224,7 +22560,39 @@ "node": ">=8" } }, - "node_modules/jest-watcher/node_modules/supports-color": { + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "devOptional": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "devOptional": true + }, + "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -22236,530 +22604,1270 @@ "node": ">=8" } }, - "node_modules/jest-worker": { - "version": "26.6.2", - "dev": true, - "license": "MIT", + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "devOptional": true, "dependencies": { + "@jest/types": "^29.6.3", "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">= 10.13.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "devOptional": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "devOptional": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jju": { - "version": "1.4.0", - "license": "MIT" - }, - "node_modules/joi": { - "version": "17.10.1", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "devOptional": true, + "license": "MIT", "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/joycon": { - "version": "3.1.1", - "dev": true, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "devOptional": true, + "license": "MIT" + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/js-cookie": { - "version": "3.0.1", + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "devOptional": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "3.14.1", + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "devOptional": true, - "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jsdom": { - "version": "20.0.3", - "dev": true, - "license": "MIT", + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" + "node": ">=8" }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jsdom/node_modules/form-data": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, + "dependencies": { + "color-name": "~1.1.4" }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-loader": { - "version": "0.5.7", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "license": "MIT" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "dev": true, - "license": "(AFL-2.1 OR BSD-3-Clause)" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "license": "MIT" + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "dev": true, - "license": "ISC" + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } }, - "node_modules/json5": { - "version": "2.2.3", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "devOptional": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jsonfile": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jsonpack": { - "version": "1.1.5", - "dev": true - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" + "node_modules/jest-validate/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "devOptional": true }, - "node_modules/JSONStream": { - "version": "1.3.5", - "dev": true, - "license": "(MIT OR Apache-2.0)", + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" + "has-flag": "^4.0.0" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/jsonwebtoken": { - "version": "9.0.2", - "dev": true, - "license": "MIT", + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "devOptional": true, "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" }, "engines": { - "node": ">=12", - "npm": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jsprim": { - "version": "1.4.2", - "dev": true, - "license": "MIT", + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.6.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jsx-ast-utils": { - "version": "3.3.3", - "license": "MIT", + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, "dependencies": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4.0" - } - }, - "node_modules/junk": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz", - "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==", - "dev": true, - "engines": { - "node": ">=12.20" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/just-extend": { - "version": "4.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jwa": { - "version": "1.4.1", - "dev": true, - "license": "MIT", + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/jws": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" } }, - "node_modules/keygrip": { - "version": "1.1.0", - "license": "MIT", + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, "dependencies": { - "tsscmp": "1.0.6" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/keyv": { - "version": "4.5.3", + "node_modules/jest-worker": { + "version": "26.6.2", "dev": true, "license": "MIT", "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "dev": true, - "license": "MIT", + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" } }, - "node_modules/kleur": { - "version": "4.1.5", + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/klona": { - "version": "2.0.6", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/language-subtag-registry": { - "version": "0.3.22", - "license": "CC0-1.0" + "node_modules/jju": { + "version": "1.4.0", + "license": "MIT" }, - "node_modules/language-tags": { - "version": "1.0.5", - "license": "MIT", + "node_modules/joi": { + "version": "17.10.1", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "language-subtag-registry": "~0.3.2" + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" } }, - "node_modules/latest-version": { - "version": "7.0.0", + "node_modules/joycon": { + "version": "3.1.1", "dev": true, "license": "MIT", - "dependencies": { - "package-json": "^8.1.0" - }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/launch-editor": { - "version": "2.6.0", - "dev": true, + "node_modules/js-cookie": { + "version": "3.0.1", "license": "MIT", - "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.7.3" + "engines": { + "node": ">=12" } }, - "node_modules/legacy-swc-helpers": { - "name": "@swc/helpers", - "version": "0.4.14", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - } + "node_modules/js-tokens": { + "version": "4.0.0", + "license": "MIT" }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "node_modules/js-yaml": { + "version": "3.14.1", "devOptional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/light-my-request": { - "version": "5.9.2", - "license": "BSD-3-Clause", - "dependencies": { - "cookie": "^0.5.0", - "process-warning": "^2.0.0", - "set-cookie-parser": "^2.4.1" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/lilconfig": { - "version": "2.1.0", + "node_modules/jsbn": { + "version": "0.1.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", "license": "MIT" }, - "node_modules/linkfs": { - "version": "2.1.0", - "dev": true - }, - "node_modules/lint-staged": { - "version": "14.0.1", + "node_modules/jsdom": { + "version": "20.0.3", "dev": true, "license": "MIT", "dependencies": { - "chalk": "5.3.0", - "commander": "11.0.0", - "debug": "4.3.4", - "execa": "7.2.0", - "lilconfig": "2.1.0", - "listr2": "6.6.1", - "micromatch": "4.0.5", - "pidtree": "0.6.0", - "string-argv": "0.3.2", - "yaml": "2.3.1" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=14" }, - "funding": { - "url": "https://opencollective.com/lint-staged" + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/lint-staged/node_modules/chalk": { - "version": "5.3.0", + "node_modules/jsdom/node_modules/form-data": { + "version": "4.0.0", "dev": true, "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": ">= 6" } }, - "node_modules/lint-staged/node_modules/commander": { - "version": "11.0.0", - "dev": true, + "node_modules/jsesc": { + "version": "2.5.2", "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { - "node": ">=16" + "node": ">=4" } }, - "node_modules/lint-staged/node_modules/execa": { - "version": "7.2.0", + "node_modules/json-buffer": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-loader": { + "version": "0.5.7", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/json5": { + "version": "2.2.3", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpack": { + "version": "1.1.5", + "dev": true + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.3", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/junk": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz", + "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/just-extend": { + "version": "4.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/jwa": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keygrip": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/keyv": { + "version": "4.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.5", + "license": "MIT", + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/latest-version": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "package-json": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/launch-editor": { + "version": "2.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "node_modules/legacy-swc-helpers": { + "name": "@swc/helpers", + "version": "0.4.14", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/light-my-request": { + "version": "5.9.2", + "license": "BSD-3-Clause", + "dependencies": { + "cookie": "^0.5.0", + "process-warning": "^2.0.0", + "set-cookie-parser": "^2.4.1" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "license": "MIT" + }, + "node_modules/linkfs": { + "version": "2.1.0", + "dev": true + }, + "node_modules/lint-staged": { + "version": "14.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "5.3.0", + "commander": "11.0.0", + "debug": "4.3.4", + "execa": "7.2.0", + "lilconfig": "2.1.0", + "listr2": "6.6.1", + "micromatch": "4.0.5", + "pidtree": "0.6.0", + "string-argv": "0.3.2", + "yaml": "2.3.1" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/commander": { + "version": "11.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/lint-staged/node_modules/execa": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/human-signals": { + "version": "4.3.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/lint-staged/node_modules/is-stream": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/mimic-fn": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/onetime": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/lint-staged/node_modules/yaml": { + "version": "2.3.1", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 14" + } + }, + "node_modules/listr2": { + "version": "6.6.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^5.0.1", + "rfdc": "^1.3.0", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/eventemitter3": { + "version": "5.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/lmdb": { + "version": "2.5.3", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "msgpackr": "^1.5.4", + "node-addon-api": "^4.3.0", + "node-gyp-build-optional-packages": "5.0.3", + "ordered-binary": "^1.2.4", + "weak-lru-cache": "^1.2.2" + }, + "optionalDependencies": { + "@lmdb/lmdb-darwin-arm64": "2.5.3", + "@lmdb/lmdb-darwin-x64": "2.5.3", + "@lmdb/lmdb-linux-arm": "2.5.3", + "@lmdb/lmdb-linux-arm64": "2.5.3", + "@lmdb/lmdb-linux-x64": "2.5.3", + "@lmdb/lmdb-win32-x64": "2.5.3" + } + }, + "node_modules/lmdb/node_modules/node-addon-api": { + "version": "4.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/load-json-file": { + "version": "4.0.0", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" }, "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/load-tsconfig": { + "version": "0.2.5", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/load-yaml-file": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.5", + "js-yaml": "^3.13.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/load-yaml-file/node_modules/pify": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/load-yaml-file/node_modules/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lock": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lockfile": { + "version": "1.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "signal-exit": "^3.0.2" } }, - "node_modules/lint-staged/node_modules/human-signals": { + "node_modules/lockfile/node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/lodash": { + "version": "4.17.21", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.deburr": { + "version": "4.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.every": { + "version": "4.6.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.foreach": { + "version": "4.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isfunction": { + "version": "3.0.9", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.map": { + "version": "4.6.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.maxby": { + "version": "4.6.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "license": "MIT" + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.upperfirst": { "version": "4.3.1", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=14.18.0" - } + "license": "MIT" }, - "node_modules/lint-staged/node_modules/is-stream": { - "version": "3.0.0", + "node_modules/log-update": { + "version": "5.0.1", "dev": true, "license": "MIT", + "dependencies": { + "ansi-escapes": "^5.0.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^5.0.0", + "strip-ansi": "^7.0.1", + "wrap-ansi": "^8.0.1" + }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -22767,10 +23875,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/mimic-fn": { - "version": "4.0.0", + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "5.0.0", "dev": true, "license": "MIT", + "dependencies": { + "type-fest": "^1.0.2" + }, "engines": { "node": ">=12" }, @@ -22778,85 +23889,63 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/onetime": { - "version": "6.0.0", + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.0.1", "dev": true, "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "license": "ISC" - }, - "node_modules/lint-staged/node_modules/yaml": { - "version": "2.3.1", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 14" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/listr2": { - "version": "6.6.1", + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", "dev": true, "license": "MIT", - "dependencies": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^5.0.1", - "rfdc": "^1.3.0", - "wrap-ansi": "^8.1.0" - }, "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" + "node": ">=12" }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/listr2/node_modules/ansi-regex": { - "version": "6.0.1", + "node_modules/log-update/node_modules/cli-cursor": { + "version": "4.0.0", "dev": true, "license": "MIT", + "dependencies": { + "restore-cursor": "^4.0.0" + }, "engines": { - "node": ">=12" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr2/node_modules/ansi-styles": { - "version": "6.2.1", + "node_modules/log-update/node_modules/restore-cursor": { + "version": "4.0.0", "dev": true, "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, "engines": { - "node": ">=12" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr2/node_modules/eventemitter3": { - "version": "5.0.1", + "node_modules/log-update/node_modules/signal-exit": { + "version": "3.0.7", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/listr2/node_modules/string-width": { + "node_modules/log-update/node_modules/string-width": { "version": "5.1.2", "dev": true, "license": "MIT", @@ -22872,7 +23961,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr2/node_modules/strip-ansi": { + "node_modules/log-update/node_modules/strip-ansi": { "version": "7.1.0", "dev": true, "license": "MIT", @@ -22886,7 +23975,18 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/listr2/node_modules/wrap-ansi": { + "node_modules/log-update/node_modules/type-fest": { + "version": "1.4.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { "version": "8.1.0", "dev": true, "license": "MIT", @@ -22902,6468 +24002,7057 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/lmdb": { - "version": "2.5.3", - "dev": true, - "hasInstallScript": true, + "node_modules/loose-envify": { + "version": "1.4.0", "license": "MIT", "dependencies": { - "msgpackr": "^1.5.4", - "node-addon-api": "^4.3.0", - "node-gyp-build-optional-packages": "5.0.3", - "ordered-binary": "^1.2.4", - "weak-lru-cache": "^1.2.2" + "js-tokens": "^3.0.0 || ^4.0.0" }, - "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "2.5.3", - "@lmdb/lmdb-darwin-x64": "2.5.3", - "@lmdb/lmdb-linux-arm": "2.5.3", - "@lmdb/lmdb-linux-arm64": "2.5.3", - "@lmdb/lmdb-linux-x64": "2.5.3", - "@lmdb/lmdb-win32-x64": "2.5.3" + "bin": { + "loose-envify": "cli.js" } }, - "node_modules/lmdb/node_modules/node-addon-api": { - "version": "4.3.0", + "node_modules/loupe": { + "version": "2.3.6", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.0" + } }, - "node_modules/load-json-file": { - "version": "4.0.0", + "node_modules/lowdb": { + "version": "1.0.0", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", + "graceful-fs": "^4.1.3", + "is-promise": "^2.1.0", + "lodash": "4", "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "steno": "^0.4.1" }, "engines": { "node": ">=4" } }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", + "node_modules/lower-case": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lower-case-first": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/lru_map": { + "version": "0.3.3", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lru-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "es5-ext": "~0.10.2" + } + }, + "node_modules/lz-string": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "dev": true, + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "devOptional": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", "dev": true, "license": "MIT", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "p-defer": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", + "node_modules/map-age-cleaner/node_modules/p-defer": { + "version": "1.0.0", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/load-tsconfig": { - "version": "0.2.5", + "node_modules/map-cache": { + "version": "0.2.2", "dev": true, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=0.10.0" } }, - "node_modules/load-yaml-file": { - "version": "0.2.0", - "dev": true, + "node_modules/map-obj": { + "version": "4.3.0", "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.5", - "js-yaml": "^3.13.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/load-yaml-file/node_modules/pify": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "node_modules/map-stream": { + "version": "0.1.0", + "dev": true }, - "node_modules/load-yaml-file/node_modules/strip-bom": { - "version": "3.0.0", + "node_modules/marked": { + "version": "5.1.2", "dev": true, "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, "engines": { - "node": ">=4" + "node": ">= 16" } }, - "node_modules/loader-runner": { - "version": "4.3.0", + "node_modules/marked-terminal": { + "version": "5.2.0", "dev": true, "license": "MIT", + "dependencies": { + "ansi-escapes": "^6.2.0", + "cardinal": "^2.1.1", + "chalk": "^5.2.0", + "cli-table3": "^0.6.3", + "node-emoji": "^1.11.0", + "supports-hyperlinks": "^2.3.0" + }, "engines": { - "node": ">=6.11.5" + "node": ">=14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" } }, - "node_modules/loader-utils": { - "version": "2.0.4", + "node_modules/marked-terminal/node_modules/ansi-escapes": { + "version": "6.2.0", "dev": true, "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "type-fest": "^3.0.0" }, "engines": { - "node": ">=8.9.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/locate-path": { - "version": "6.0.0", + "node_modules/marked-terminal/node_modules/chalk": { + "version": "5.3.0", + "dev": true, "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/lock": { - "version": "1.1.0", + "node_modules/marked-terminal/node_modules/type-fest": { + "version": "3.13.1", "dev": true, - "license": "MIT" + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/lockfile": { - "version": "1.0.4", + "node_modules/matcher": { + "version": "3.0.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "signal-exit": "^3.0.2" + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/lockfile/node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "license": "ISC" - }, - "node_modules/lodash": { - "version": "4.17.21", - "license": "MIT" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", + "node_modules/mdn-data": { + "version": "2.0.14", "dev": true, - "license": "MIT" + "license": "CC0-1.0" }, - "node_modules/lodash.debounce": { - "version": "4.0.8", + "node_modules/meant": { + "version": "1.0.3", "dev": true, "license": "MIT" }, - "node_modules/lodash.deburr": { - "version": "4.1.0", + "node_modules/media-typer": { + "version": "0.3.0", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/lodash.every": { - "version": "4.6.0", + "node_modules/mem": { + "version": "8.1.1", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/mem?sponsor=1" + } }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", + "node_modules/mem/node_modules/mimic-fn": { + "version": "3.1.0", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/lodash.foreach": { - "version": "4.5.0", + "node_modules/memfs": { + "version": "3.5.2", "dev": true, - "license": "MIT" + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } }, - "node_modules/lodash.get": { - "version": "4.4.2", + "node_modules/memoizee": { + "version": "0.4.15", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + } }, - "node_modules/lodash.includes": { - "version": "4.3.0", + "node_modules/memorystream": { + "version": "0.3.1", "dev": true, - "license": "MIT" + "engines": { + "node": ">= 0.10.0" + } }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", + "node_modules/meow": { + "version": "6.1.1", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "^4.0.2", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.13.1", + "yargs-parser": "^18.1.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/lodash.isfunction": { - "version": "3.0.9", + "node_modules/meow/node_modules/type-fest": { + "version": "0.13.1", "dev": true, - "license": "MIT" + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", + "node_modules/merge-descriptors": { + "version": "1.0.1", "dev": true, "license": "MIT" }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "dev": true, + "node_modules/merge-stream": { + "version": "2.0.0", "license": "MIT" }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "dev": true, - "license": "MIT" + "node_modules/merge2": { + "version": "1.4.1", + "license": "MIT", + "engines": { + "node": ">= 8" + } }, - "node_modules/lodash.isstring": { - "version": "4.0.1", + "node_modules/methods": { + "version": "1.1.2", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/lodash.kebabcase": { - "version": "4.1.1", - "dev": true, - "license": "MIT" + "node_modules/micromatch": { + "version": "4.0.5", + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } }, - "node_modules/lodash.map": { - "version": "4.6.0", + "node_modules/mime": { + "version": "3.0.0", "dev": true, - "license": "MIT" + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } }, - "node_modules/lodash.maxby": { - "version": "4.6.0", + "node_modules/mime-db": { + "version": "1.52.0", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/lodash.memoize": { - "version": "4.1.2", + "node_modules/mime-types": { + "version": "2.1.35", "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "license": "MIT" + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } }, - "node_modules/lodash.mergewith": { - "version": "4.6.2", - "dev": true, - "license": "MIT" + "node_modules/mimic-fn": { + "version": "2.1.0", + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/lodash.once": { - "version": "4.1.1", + "node_modules/mimic-response": { + "version": "1.0.1", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/lodash.snakecase": { - "version": "4.1.1", - "dev": true, - "license": "MIT" + "node_modules/min-indent": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/lodash.sortby": { - "version": "4.7.0", + "node_modules/mini-css-extract-plugin": { + "version": "1.6.2", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "webpack-sources": "^1.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.0.0" + } }, - "node_modules/lodash.startcase": { - "version": "4.4.0", + "node_modules/miniflare": { + "version": "2.14.0", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@miniflare/cache": "2.14.0", + "@miniflare/cli-parser": "2.14.0", + "@miniflare/core": "2.14.0", + "@miniflare/d1": "2.14.0", + "@miniflare/durable-objects": "2.14.0", + "@miniflare/html-rewriter": "2.14.0", + "@miniflare/http-server": "2.14.0", + "@miniflare/kv": "2.14.0", + "@miniflare/queues": "2.14.0", + "@miniflare/r2": "2.14.0", + "@miniflare/runner-vm": "2.14.0", + "@miniflare/scheduler": "2.14.0", + "@miniflare/shared": "2.14.0", + "@miniflare/sites": "2.14.0", + "@miniflare/storage-file": "2.14.0", + "@miniflare/storage-memory": "2.14.0", + "@miniflare/web-sockets": "2.14.0", + "kleur": "^4.1.4", + "semiver": "^1.1.0", + "source-map-support": "^0.5.20", + "undici": "5.20.0" + }, + "bin": { + "miniflare": "bootstrap.js" + }, + "engines": { + "node": ">=16.13" + }, + "peerDependencies": { + "@miniflare/storage-redis": "2.14.0", + "cron-schedule": "^3.0.4", + "ioredis": "^4.27.9" + }, + "peerDependenciesMeta": { + "@miniflare/storage-redis": { + "optional": true + }, + "cron-schedule": { + "optional": true + }, + "ioredis": { + "optional": true + } + } }, - "node_modules/lodash.truncate": { - "version": "4.4.2", + "node_modules/miniflare/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/lodash.uniq": { - "version": "4.5.0", + "node_modules/miniflare/node_modules/source-map-support": { + "version": "0.5.21", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } }, - "node_modules/lodash.upperfirst": { - "version": "4.3.1", + "node_modules/minimalistic-assert": { + "version": "1.0.1", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/log-update": { - "version": "5.0.1", - "dev": true, - "license": "MIT", + "node_modules/minimatch": { + "version": "3.1.2", + "license": "ISC", "dependencies": { - "ansi-escapes": "^5.0.0", - "cli-cursor": "^4.0.0", - "slice-ansi": "^5.0.0", - "strip-ansi": "^7.0.1", - "wrap-ansi": "^8.0.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/log-update/node_modules/ansi-escapes": { - "version": "5.0.0", + "node_modules/minimist-options": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "type-fest": "^1.0.2" + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "6.0.1", + "node_modules/minimist-options/node_modules/arrify": { + "version": "1.0.1", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "6.2.1", + "node_modules/minipass": { + "version": "7.0.4", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/log-update/node_modules/cli-cursor": { - "version": "4.0.0", + "node_modules/mitt": { + "version": "1.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/mixme": { + "version": "0.5.9", "dev": true, "license": "MIT", - "dependencies": { - "restore-cursor": "^4.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8.0.0" } }, - "node_modules/log-update/node_modules/restore-cursor": { - "version": "4.0.0", + "node_modules/mkdirp": { + "version": "0.5.6", "dev": true, "license": "MIT", "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "minimist": "^1.2.6" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/log-update/node_modules/signal-exit": { - "version": "3.0.7", + "node_modules/mkdirp-classic": { + "version": "0.5.3", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/log-update/node_modules/string-width": { - "version": "5.1.2", + "node_modules/moment": { + "version": "2.29.4", "dev": true, "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/log-update/node_modules/strip-ansi": { - "version": "7.1.0", + "node_modules/mri": { + "version": "1.2.0", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=4" } }, - "node_modules/log-update/node_modules/type-fest": { - "version": "1.4.0", + "node_modules/mrmime": { + "version": "1.0.1", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "8.1.0", + "node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/msgpackr": { + "version": "1.9.8", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" } }, - "node_modules/loose-envify": { - "version": "1.4.0", + "node_modules/msgpackr-extract": { + "version": "3.0.2", + "dev": true, + "hasInstallScript": true, "license": "MIT", + "optional": true, "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "node-gyp-build-optional-packages": "5.0.7" }, "bin": { - "loose-envify": "cli.js" + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2" } }, - "node_modules/loupe": { - "version": "2.3.6", + "node_modules/msgpackr-extract/node_modules/node-gyp-build-optional-packages": { + "version": "5.0.7", "dev": true, "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.0" + "optional": true, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" } }, - "node_modules/lowdb": { - "version": "1.0.0", + "node_modules/multer": { + "version": "1.4.5-lts.1", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.3", - "is-promise": "^2.1.0", - "lodash": "4", - "pify": "^3.0.0", - "steno": "^0.4.1" + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" + "node": ">= 6.0.0" } }, - "node_modules/lower-case-first": { - "version": "2.0.2", + "node_modules/multicast-dns": { + "version": "7.2.5", "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.0.3" + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" } }, - "node_modules/lowercase-keys": { - "version": "2.0.0", + "node_modules/mustache": { + "version": "4.2.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "bin": { + "mustache": "bin/mustache" } }, - "node_modules/lru_map": { - "version": "0.3.3", + "node_modules/mute-stream": { + "version": "0.0.8", "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } + "license": "ISC" }, - "node_modules/lru-queue": { - "version": "0.1.0", + "node_modules/mv": { + "version": "2.1.1", "dev": true, "license": "MIT", "dependencies": { - "es5-ext": "~0.10.2" - } - }, - "node_modules/lz-string": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "bin": { - "lz-string": "bin/bin.js" + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "engines": { + "node": ">=0.8.0" } }, - "node_modules/make-dir": { - "version": "3.1.0", + "node_modules/mv/node_modules/glob": { + "version": "6.0.4", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "semver": "^6.0.0" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", + "node_modules/mv/node_modules/rimraf": { + "version": "2.4.5", "dev": true, "license": "ISC", + "dependencies": { + "glob": "^6.0.1" + }, "bin": { - "semver": "bin/semver.js" + "rimraf": "bin.js" } }, - "node_modules/make-error": { - "version": "1.3.6", + "node_modules/mz": { + "version": "2.7.0", "dev": true, - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "devOptional": true, + "license": "MIT", "dependencies": { - "tmpl": "1.0.5" + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" } }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", + "node_modules/nanoclone": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.6", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", - "dependencies": { - "p-defer": "^1.0.0" + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=6" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/map-age-cleaner/node_modules/p-defer": { - "version": "1.0.0", + "node_modules/napi-build-utils": { + "version": "1.0.2", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/map-cache": { - "version": "0.2.2", + "node_modules/natural-compare": { + "version": "1.4.0", + "license": "MIT" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ncp": { + "version": "2.0.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "bin": { + "ncp": "bin/ncp" } }, - "node_modules/map-obj": { - "version": "4.3.0", + "node_modules/negotiator": { + "version": "0.6.3", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/map-stream": { - "version": "0.1.0", + "node_modules/neo-async": { + "version": "2.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/nested-error-stacks": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz", + "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==", "dev": true }, - "node_modules/marked": { - "version": "5.1.2", + "node_modules/next": { + "version": "13.4.19", "dev": true, "license": "MIT", + "dependencies": { + "@next/env": "13.4.19", + "@swc/helpers": "0.5.1", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001406", + "postcss": "8.4.14", + "styled-jsx": "5.1.1", + "watchpack": "2.4.0", + "zod": "3.21.4" + }, "bin": { - "marked": "bin/marked.js" + "next": "dist/bin/next" }, "engines": { - "node": ">= 16" - } - }, - "node_modules/marked-terminal": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^6.2.0", - "cardinal": "^2.1.1", - "chalk": "^5.2.0", - "cli-table3": "^0.6.3", - "node-emoji": "^1.11.0", - "supports-hyperlinks": "^2.3.0" + "node": ">=16.8.0" }, - "engines": { - "node": ">=14.13.1 || >=16.0.0" + "optionalDependencies": { + "@next/swc-darwin-arm64": "13.4.19", + "@next/swc-darwin-x64": "13.4.19", + "@next/swc-linux-arm64-gnu": "13.4.19", + "@next/swc-linux-arm64-musl": "13.4.19", + "@next/swc-linux-x64-gnu": "13.4.19", + "@next/swc-linux-x64-musl": "13.4.19", + "@next/swc-win32-arm64-msvc": "13.4.19", + "@next/swc-win32-ia32-msvc": "13.4.19", + "@next/swc-win32-x64-msvc": "13.4.19" }, "peerDependencies": { - "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + "@opentelemetry/api": "^1.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "sass": { + "optional": true + } } }, - "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "6.2.0", + "node_modules/next-tick": { + "version": "1.1.0", "dev": true, - "license": "MIT", + "license": "ISC" + }, + "node_modules/next/node_modules/@swc/helpers": { + "version": "0.5.1", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "type-fest": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "tslib": "^2.4.0" } }, - "node_modules/marked-terminal/node_modules/chalk": { - "version": "5.3.0", + "node_modules/next/node_modules/postcss": { + "version": "8.4.14", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": "^10 || ^12 || >=14" } }, - "node_modules/marked-terminal/node_modules/type-fest": { - "version": "3.13.1", + "node_modules/nice-try": { + "version": "1.0.5", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/matcher": { - "version": "3.0.0", + "node_modules/nise": { + "version": "5.1.4", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "escape-string-regexp": "^4.0.0" - }, - "engines": { - "node": ">=10" + "@sinonjs/commons": "^2.0.0", + "@sinonjs/fake-timers": "^10.0.2", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" } }, - "node_modules/mdn-data": { - "version": "2.0.14", + "node_modules/nise/node_modules/@sinonjs/commons": { + "version": "2.0.0", "dev": true, - "license": "CC0-1.0" + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } }, - "node_modules/meant": { - "version": "1.0.3", + "node_modules/nise/node_modules/isarray": { + "version": "0.0.1", "dev": true, "license": "MIT" }, - "node_modules/media-typer": { - "version": "0.3.0", + "node_modules/nise/node_modules/path-to-regexp": { + "version": "1.8.0", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6" + "dependencies": { + "isarray": "0.0.1" } }, - "node_modules/mem": { - "version": "8.1.1", - "dev": true, + "node_modules/no-case": { + "version": "3.0.4", "license": "MIT", "dependencies": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/mem?sponsor=1" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, - "node_modules/mem/node_modules/mimic-fn": { - "version": "3.1.0", + "node_modules/nock": { + "version": "13.3.1", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/memfs": { - "version": "3.5.2", - "dev": true, - "license": "Unlicense", "dependencies": { - "fs-monkey": "^1.0.3" + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.21", + "propagate": "^2.0.0" }, "engines": { - "node": ">= 4.0.0" + "node": ">= 10.13" } }, - "node_modules/memoizee": { - "version": "0.4.15", + "node_modules/node-abi": { + "version": "3.47.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" } }, - "node_modules/memorystream": { - "version": "0.3.1", + "node_modules/node-addon-api": { + "version": "7.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/node-domexception": { + "version": "1.0.0", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", "engines": { - "node": ">= 0.10.0" + "node": ">=10.5.0" } }, - "node_modules/meow": { - "version": "6.1.1", + "node_modules/node-emoji": { + "version": "1.11.0", "dev": true, "license": "MIT", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "^4.0.2", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "lodash": "^4.17.21" } }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.13.1", + "node_modules/node-fetch": { + "version": "2.7.0", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, "engines": { - "node": ">=10" + "node": "4.x || >=6.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/merge-descriptors": { - "version": "1.0.1", + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", "dev": true, "license": "MIT" }, - "node_modules/merge-stream": { - "version": "2.0.0", - "license": "MIT" + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "dev": true, + "license": "BSD-2-Clause" }, - "node_modules/merge2": { - "version": "1.4.1", + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "dev": true, "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { - "node": ">= 8" + "node": ">= 6.13.0" } }, - "node_modules/methods": { - "version": "1.1.2", + "node_modules/node-gyp-build-optional-packages": { + "version": "5.0.3", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6" + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" } }, - "node_modules/micromatch": { - "version": "4.0.5", + "node_modules/node-html-parser": { + "version": "5.4.2", + "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" + "css-select": "^4.2.1", + "he": "1.2.0" } }, - "node_modules/mime": { - "version": "3.0.0", + "node_modules/node-int64": { + "version": "0.4.0", + "devOptional": true, + "license": "MIT" + }, + "node_modules/node-object-hash": { + "version": "2.3.10", "dev": true, "license": "MIT", - "bin": { - "mime": "cli.js" - }, "engines": { - "node": ">=10.0.0" + "node": ">=0.10.0" } }, - "node_modules/mime-db": { - "version": "1.52.0", + "node_modules/node-releases": { + "version": "2.0.13", + "license": "MIT" + }, + "node_modules/node-watch": { + "version": "0.7.3", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "dev": true, - "license": "MIT", + "node_modules/normalize-package-data": { + "version": "2.5.0", + "license": "BSD-2-Clause", "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "2.8.9", + "license": "ISC" + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/mimic-response": { - "version": "1.0.1", + "node_modules/normalize-range": { + "version": "0.1.2", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/min-indent": { - "version": "1.0.1", + "node_modules/normalize-url": { + "version": "6.1.0", + "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mini-css-extract-plugin": { - "version": "1.6.2", + "node_modules/npm-bundled": { + "version": "2.0.1", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "webpack-sources": "^1.1.0" + "npm-normalize-package-bin": "^2.0.0" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.4.0 || ^5.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/miniflare": { - "version": "2.14.0", + "node_modules/npm-cli-adduser": { + "version": "1.1.4", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@miniflare/cache": "2.14.0", - "@miniflare/cli-parser": "2.14.0", - "@miniflare/core": "2.14.0", - "@miniflare/d1": "2.14.0", - "@miniflare/durable-objects": "2.14.0", - "@miniflare/html-rewriter": "2.14.0", - "@miniflare/http-server": "2.14.0", - "@miniflare/kv": "2.14.0", - "@miniflare/queues": "2.14.0", - "@miniflare/r2": "2.14.0", - "@miniflare/runner-vm": "2.14.0", - "@miniflare/scheduler": "2.14.0", - "@miniflare/shared": "2.14.0", - "@miniflare/sites": "2.14.0", - "@miniflare/storage-file": "2.14.0", - "@miniflare/storage-memory": "2.14.0", - "@miniflare/web-sockets": "2.14.0", - "kleur": "^4.1.4", - "semiver": "^1.1.0", - "source-map-support": "^0.5.20", - "undici": "5.20.0" + "commander": "^2.19.0" }, "bin": { - "miniflare": "bootstrap.js" - }, - "engines": { - "node": ">=16.13" - }, - "peerDependencies": { - "@miniflare/storage-redis": "2.14.0", - "cron-schedule": "^3.0.4", - "ioredis": "^4.27.9" + "npm-cli-adduser": "index.js" + } + }, + "node_modules/npm-cli-adduser/node_modules/commander": { + "version": "2.20.3", + "dev": true, + "license": "MIT" + }, + "node_modules/npm-cli-login": { + "version": "1.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "npm-registry-client": "8.6.0", + "snyk": "^1.124.1" }, - "peerDependenciesMeta": { - "@miniflare/storage-redis": { - "optional": true - }, - "cron-schedule": { - "optional": true - }, - "ioredis": { - "optional": true - } + "bin": { + "npm-cli-login": "bin/npm-cli-login.js" } }, - "node_modules/miniflare/node_modules/source-map": { - "version": "0.6.1", + "node_modules/npm-normalize-package-bin": { + "version": "2.0.0", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/miniflare/node_modules/source-map-support": { - "version": "0.5.21", + "node_modules/npm-package-arg": { + "version": "6.1.1", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", + "node_modules/npm-package-arg/node_modules/builtins": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "2.8.9", "dev": true, "license": "ISC" }, - "node_modules/minimatch": { - "version": "3.1.2", + "node_modules/npm-package-arg/node_modules/semver": { + "version": "5.7.2", + "dev": true, "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "bin": { + "semver": "bin/semver" } }, - "node_modules/minimist": { - "version": "1.2.8", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/npm-package-arg/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "builtins": "^1.0.3" } }, - "node_modules/minimist-options": { - "version": "4.1.0", + "node_modules/npm-packlist": { + "version": "5.1.3", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "bin": { + "npm-packlist": "bin/index.js" }, "engines": { - "node": ">= 6" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/minimist-options/node_modules/arrify": { - "version": "1.0.1", + "node_modules/npm-registry-client": { + "version": "8.6.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "license": "ISC", + "dependencies": { + "concat-stream": "^1.5.2", + "graceful-fs": "^4.1.6", + "normalize-package-data": "~1.0.1 || ^2.0.0", + "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", + "once": "^1.3.3", + "request": "^2.74.0", + "retry": "^0.10.0", + "safe-buffer": "^5.1.1", + "semver": "2 >=2.2.1 || 3.x || 4 || 5", + "slide": "^1.1.3", + "ssri": "^5.2.4" + }, + "optionalDependencies": { + "npmlog": "2 || ^3.1.0 || ^4.0.0" } }, - "node_modules/minipass": { - "version": "7.0.4", + "node_modules/npm-registry-client/node_modules/retry": { + "version": "0.10.1", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" + "node": "*" } }, - "node_modules/mitt": { - "version": "1.2.0", + "node_modules/npm-registry-client/node_modules/semver": { + "version": "5.7.2", "dev": true, - "license": "MIT" + "license": "ISC", + "bin": { + "semver": "bin/semver" + } }, - "node_modules/mixme": { - "version": "0.5.9", + "node_modules/npm-run-all": { + "version": "4.1.5", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, "engines": { - "node": ">= 8.0.0" + "node": ">= 4" } }, - "node_modules/mkdirp": { - "version": "0.5.6", + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.6" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=4.8" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/moment": { - "version": "2.29.4", + "node_modules/npm-run-all/node_modules/pidtree": { + "version": "0.3.1", "dev": true, "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, "engines": { - "node": "*" + "node": ">=0.10" } }, - "node_modules/mri": { + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.2", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { "version": "1.2.0", "dev": true, "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/mrmime": { - "version": "1.0.1", + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/ms": { - "version": "2.1.2", - "license": "MIT" - }, - "node_modules/msgpackr": { - "version": "1.9.8", + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", "dev": true, - "license": "MIT", - "optionalDependencies": { - "msgpackr-extract": "^3.0.2" + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "node_modules/msgpackr-extract": { - "version": "3.0.2", - "dev": true, - "hasInstallScript": true, + "node_modules/npm-run-path": { + "version": "5.1.0", "license": "MIT", - "optional": true, "dependencies": { - "node-gyp-build-optional-packages": "5.0.7" + "path-key": "^4.0.0" }, - "bin": { - "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "optionalDependencies": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2", - "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, - "node_modules/msgpackr-extract/node_modules/node-gyp-build-optional-packages": { - "version": "5.0.7", + "node_modules/npx-import": { + "version": "1.1.4", "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" + "license": "ISC", + "dependencies": { + "execa": "^6.1.0", + "parse-package-name": "^1.0.0", + "semver": "^7.3.7", + "validate-npm-package-name": "^4.0.0" } }, - "node_modules/multer": { - "version": "1.4.5-lts.1", + "node_modules/npx-import/node_modules/execa": { + "version": "6.1.0", "dev": true, "license": "MIT", "dependencies": { - "append-field": "^1.0.0", - "busboy": "^1.0.0", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.4", - "object-assign": "^4.1.1", - "type-is": "^1.6.4", - "xtend": "^4.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^3.0.1", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">= 6.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/multicast-dns": { - "version": "7.2.5", + "node_modules/npx-import/node_modules/human-signals": { + "version": "3.0.1", "dev": true, - "license": "MIT", - "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" + "license": "Apache-2.0", + "engines": { + "node": ">=12.20.0" } }, - "node_modules/mustache": { - "version": "4.2.0", + "node_modules/npx-import/node_modules/is-stream": { + "version": "3.0.0", "dev": true, "license": "MIT", - "bin": { - "mustache": "bin/mustache" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mute-stream": { - "version": "0.0.8", + "node_modules/npx-import/node_modules/mimic-fn": { + "version": "4.0.0", "dev": true, - "license": "ISC" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/mv": { - "version": "2.1.1", + "node_modules/npx-import/node_modules/onetime": { + "version": "6.0.0", "dev": true, "license": "MIT", "dependencies": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=0.8.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mv/node_modules/glob": { - "version": "6.0.4", + "node_modules/npx-import/node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/npx-import/node_modules/validate-npm-package-name": { + "version": "4.0.0", "dev": true, "license": "ISC", "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "builtins": "^5.0.0" }, "engines": { - "node": "*" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/mv/node_modules/rimraf": { - "version": "2.4.5", + "node_modules/nth-check": { + "version": "2.1.1", "dev": true, - "license": "ISC", + "license": "BSD-2-Clause", "dependencies": { - "glob": "^6.0.1" + "boolbase": "^1.0.0" }, - "bin": { - "rimraf": "bin.js" + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/mz": { - "version": "2.7.0", + "node_modules/null-loader": { + "version": "4.0.1", "dev": true, "license": "MIT", "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/nanoclone": { - "version": "0.2.1", + "node_modules/nullthrows": { + "version": "1.1.1", "dev": true, "license": "MIT" }, - "node_modules/nanoid": { - "version": "3.3.6", + "node_modules/number-is-nan": { + "version": "1.0.1", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, + "optional": true, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=0.10.0" } }, - "node_modules/napi-build-utils": { - "version": "1.0.2", + "node_modules/nwsapi": { + "version": "2.2.5", "dev": true, "license": "MIT" }, - "node_modules/natural-compare": { - "version": "1.4.0", - "license": "MIT" - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", + "node_modules/oauth-sign": { + "version": "0.9.0", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "engines": { + "node": "*" + } }, - "node_modules/ncp": { - "version": "2.0.0", - "dev": true, + "node_modules/object-assign": { + "version": "4.1.1", "license": "MIT", - "bin": { - "ncp": "bin/ncp" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/negotiator": { - "version": "0.6.3", - "dev": true, + "node_modules/object-inspect": { + "version": "1.12.3", "license": "MIT", - "engines": { - "node": ">= 0.6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "dev": true, - "license": "MIT" + "node_modules/object-is": { + "version": "1.1.5", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/nested-error-stacks": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz", - "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==", - "dev": true + "node_modules/object-keys": { + "version": "1.1.1", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, - "node_modules/next": { - "version": "13.4.19", - "dev": true, + "node_modules/object.assign": { + "version": "4.1.4", "license": "MIT", "dependencies": { - "@next/env": "13.4.19", - "@swc/helpers": "0.5.1", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", - "styled-jsx": "5.1.1", - "watchpack": "2.4.0", - "zod": "3.21.4" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" }, - "bin": { - "next": "dist/bin/next" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.6", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { - "node": ">=16.8.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "13.4.19", - "@next/swc-darwin-x64": "13.4.19", - "@next/swc-linux-arm64-gnu": "13.4.19", - "@next/swc-linux-arm64-musl": "13.4.19", - "@next/swc-linux-x64-gnu": "13.4.19", - "@next/swc-linux-x64-musl": "13.4.19", - "@next/swc-win32-arm64-msvc": "13.4.19", - "@next/swc-win32-ia32-msvc": "13.4.19", - "@next/swc-win32-x64-msvc": "13.4.19" + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.6", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass": "^1.3.0" + "engines": { + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "sass": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/next-tick": { - "version": "1.1.0", - "dev": true, - "license": "ISC" + "node_modules/object.groupby": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } }, - "node_modules/next/node_modules/@swc/helpers": { - "version": "0.5.1", - "dev": true, - "license": "Apache-2.0", + "node_modules/object.hasown": { + "version": "1.1.2", + "license": "MIT", "dependencies": { - "tslib": "^2.4.0" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/next/node_modules/postcss": { - "version": "8.4.14", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], + "node_modules/object.values": { + "version": "1.1.6", "license": "MIT", "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nice-try": { - "version": "1.0.5", + "node_modules/obuf": { + "version": "1.1.2", "dev": true, "license": "MIT" }, - "node_modules/nise": { - "version": "5.1.4", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "^10.0.2", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" - } + "node_modules/on-exit-leak-free": { + "version": "2.1.0", + "license": "MIT" }, - "node_modules/nise/node_modules/@sinonjs/commons": { - "version": "2.0.0", + "node_modules/on-finished": { + "version": "2.4.1", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "type-detect": "4.0.8" + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/nise/node_modules/isarray": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/nise/node_modules/path-to-regexp": { - "version": "1.8.0", + "node_modules/on-headers": { + "version": "1.0.2", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "license": "ISC", "dependencies": { - "isarray": "0.0.1" + "wrappy": "1" } }, - "node_modules/no-case": { - "version": "3.0.4", + "node_modules/onetime": { + "version": "5.1.2", "license": "MIT", "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nock": { - "version": "13.3.1", + "node_modules/open": { + "version": "8.4.2", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.1.0", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.21", - "propagate": "^2.0.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">= 10.13" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/node-abi": { - "version": "3.47.0", + "node_modules/opener": { + "version": "1.5.2", + "dev": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/opentracing": { + "version": "0.14.7", "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/optionator": { + "version": "0.9.3", "license": "MIT", "dependencies": { - "semver": "^7.3.5" + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" }, "engines": { - "node": ">=10" + "node": ">= 0.8.0" } }, - "node_modules/node-addon-api": { - "version": "7.0.0", + "node_modules/ordered-binary": { + "version": "1.4.1", "dev": true, "license": "MIT" }, - "node_modules/node-domexception": { - "version": "1.0.0", + "node_modules/os-homedir": { + "version": "1.0.2", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], "license": "MIT", "engines": { - "node": ">=10.5.0" + "node": ">=0.10.0" } }, - "node_modules/node-emoji": { - "version": "1.11.0", + "node_modules/os-tmpdir": { + "version": "1.0.2", "dev": true, "license": "MIT", - "dependencies": { - "lodash": "^4.17.21" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/node-fetch": { - "version": "2.7.0", + "node_modules/osenv": { + "version": "0.1.5", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", + "node_modules/outdent": { + "version": "0.5.0", "dev": true, "license": "MIT" }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", + "node_modules/p-cancelable": { + "version": "2.1.1", "dev": true, "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/node-forge": { - "version": "1.3.1", + "node_modules/p-defer": { + "version": "3.0.0", "dev": true, - "license": "(BSD-3-Clause OR GPL-2.0)", + "license": "MIT", "engines": { - "node": ">= 6.13.0" + "node": ">=8" } }, - "node_modules/node-gyp-build-optional-packages": { - "version": "5.0.3", + "node_modules/p-event": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-5.0.1.tgz", + "integrity": "sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==", "dev": true, - "license": "MIT", - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" + "dependencies": { + "p-timeout": "^5.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/node-html-parser": { - "version": "5.4.2", + "node_modules/p-filter": { + "version": "2.1.0", "dev": true, "license": "MIT", "dependencies": { - "css-select": "^4.2.1", - "he": "1.2.0" + "p-map": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/node-int64": { - "version": "0.4.0", - "devOptional": true, - "license": "MIT" - }, - "node_modules/node-object-hash": { - "version": "2.3.10", + "node_modules/p-finally": { + "version": "1.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/node-releases": { - "version": "2.0.13", - "license": "MIT" - }, - "node_modules/node-watch": { - "version": "0.7.3", - "dev": true, + "node_modules/p-limit": { + "version": "2.3.0", "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "license": "BSD-2-Clause", + "node_modules/p-locate": { + "version": "5.0.0", + "license": "MIT", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "2.8.9", - "license": "ISC" - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "license": "ISC", - "bin": { - "semver": "bin/semver" + "node_modules/p-locate/node_modules/p-limit": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "devOptional": true, + "node_modules/p-map": { + "version": "2.1.0", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/normalize-range": { - "version": "0.1.2", + "node_modules/p-retry": { + "version": "4.6.2", "dev": true, "license": "MIT", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/normalize-url": { - "version": "6.1.0", + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 4" + } + }, + "node_modules/p-timeout": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", + "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", + "dev": true, + "engines": { + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-bundled": { - "version": "2.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^2.0.0" - }, + "node_modules/p-try": { + "version": "2.2.0", + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=6" } }, - "node_modules/npm-cli-adduser": { - "version": "1.1.4", + "node_modules/package-json": { + "version": "8.1.1", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "commander": "^2.19.0" + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" }, - "bin": { - "npm-cli-adduser": "index.js" + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-cli-adduser/node_modules/commander": { - "version": "2.20.3", + "node_modules/package-json/node_modules/@sindresorhus/is": { + "version": "5.6.0", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } }, - "node_modules/npm-cli-login": { - "version": "1.0.0", + "node_modules/package-json/node_modules/@szmarczak/http-timer": { + "version": "5.0.1", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "npm-registry-client": "8.6.0", - "snyk": "^1.124.1" + "defer-to-connect": "^2.0.1" }, - "bin": { - "npm-cli-login": "bin/npm-cli-login.js" + "engines": { + "node": ">=14.16" } }, - "node_modules/npm-normalize-package-bin": { - "version": "2.0.0", + "node_modules/package-json/node_modules/cacheable-lookup": { + "version": "7.0.0", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=14.16" } }, - "node_modules/npm-package-arg": { - "version": "6.1.1", + "node_modules/package-json/node_modules/cacheable-request": { + "version": "10.2.13", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "hosted-git-info": "^2.7.1", - "osenv": "^0.1.5", - "semver": "^5.6.0", - "validate-npm-package-name": "^3.0.0" + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" } }, - "node_modules/npm-package-arg/node_modules/builtins": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/npm-package-arg/node_modules/hosted-git-info": { - "version": "2.8.9", - "dev": true, - "license": "ISC" - }, - "node_modules/npm-package-arg/node_modules/semver": { - "version": "5.7.2", + "node_modules/package-json/node_modules/got": { + "version": "12.6.1", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/npm-package-arg/node_modules/validate-npm-package-name": { - "version": "3.0.0", + "node_modules/package-json/node_modules/http2-wrapper": { + "version": "2.2.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "builtins": "^1.0.3" + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" } }, - "node_modules/npm-packlist": { - "version": "5.1.3", + "node_modules/package-json/node_modules/lowercase-keys": { + "version": "3.0.0", "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-registry-client": { - "version": "8.6.0", + "node_modules/package-json/node_modules/mimic-response": { + "version": "4.0.0", "dev": true, - "license": "ISC", - "dependencies": { - "concat-stream": "^1.5.2", - "graceful-fs": "^4.1.6", - "normalize-package-data": "~1.0.1 || ^2.0.0", - "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", - "once": "^1.3.3", - "request": "^2.74.0", - "retry": "^0.10.0", - "safe-buffer": "^5.1.1", - "semver": "2 >=2.2.1 || 3.x || 4 || 5", - "slide": "^1.1.3", - "ssri": "^5.2.4" + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "optionalDependencies": { - "npmlog": "2 || ^3.1.0 || ^4.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-registry-client/node_modules/retry": { - "version": "0.10.1", + "node_modules/package-json/node_modules/normalize-url": { + "version": "8.0.0", "dev": true, "license": "MIT", "engines": { - "node": "*" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-registry-client/node_modules/semver": { - "version": "5.7.2", + "node_modules/package-json/node_modules/p-cancelable": { + "version": "3.0.0", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "license": "MIT", + "engines": { + "node": ">=12.20" } }, - "node_modules/npm-run-all": { - "version": "4.1.5", + "node_modules/package-json/node_modules/quick-lru": { + "version": "5.1.1", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" - }, "engines": { - "node": ">= 4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-run-all/node_modules/cross-spawn": { - "version": "6.0.5", + "node_modules/package-json/node_modules/responselike": { + "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "lowercase-keys": "^3.0.0" }, "engines": { - "node": ">=4.8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-run-all/node_modules/path-key": { - "version": "2.0.1", + "node_modules/param-case": { + "version": "3.0.4", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/npm-run-all/node_modules/pidtree": { - "version": "0.3.1", - "dev": true, + "node_modules/parent-module": { + "version": "1.0.1", "license": "MIT", - "bin": { - "pidtree": "bin/pidtree.js" + "dependencies": { + "callsites": "^3.0.0" }, "engines": { - "node": ">=0.10" + "node": ">=6" } }, - "node_modules/npm-run-all/node_modules/semver": { - "version": "5.7.2", + "node_modules/parse-filepath": { + "version": "1.0.2", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "license": "MIT", + "dependencies": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + }, + "engines": { + "node": ">=0.8" } }, - "node_modules/npm-run-all/node_modules/shebang-command": { - "version": "1.2.0", - "dev": true, + "node_modules/parse-json": { + "version": "5.2.0", "license": "MIT", "dependencies": { - "shebang-regex": "^1.0.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-run-all/node_modules/shebang-regex": { - "version": "1.0.0", + "node_modules/parse-ms": { + "version": "2.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/npm-run-all/node_modules/which": { - "version": "1.3.1", + "node_modules/parse-package-name": { + "version": "1.0.0", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/parse-path": { + "version": "7.0.0", + "dev": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" + "protocols": "^2.0.0" } }, - "node_modules/npm-run-path": { - "version": "5.1.0", + "node_modules/parse-url": { + "version": "8.1.0", + "dev": true, "license": "MIT", "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "parse-path": "^7.0.0" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^4.4.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", + "node_modules/parseurl": { + "version": "1.3.3", + "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/npmlog": { - "version": "4.1.2", + "node_modules/pascal-case": { + "version": "3.1.2", "dev": true, - "license": "ISC", - "optional": true, + "license": "MIT", "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/npx-import": { - "version": "1.1.4", + "node_modules/password-prompt": { + "version": "1.1.3", "dev": true, - "license": "ISC", + "license": "0BSD", "dependencies": { - "execa": "^6.1.0", - "parse-package-name": "^1.0.0", - "semver": "^7.3.7", - "validate-npm-package-name": "^4.0.0" + "ansi-escapes": "^4.3.2", + "cross-spawn": "^7.0.3" + } + }, + "node_modules/path-case": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/npx-import/node_modules/execa": { - "version": "6.1.0", - "dev": true, + "node_modules/path-is-absolute": { + "version": "1.0.1", "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/npx-import/node_modules/human-signals": { - "version": "3.0.1", - "dev": true, - "license": "Apache-2.0", + "node_modules/path-key": { + "version": "3.1.1", + "license": "MIT", "engines": { - "node": ">=12.20.0" + "node": ">=8" } }, - "node_modules/npx-import/node_modules/is-stream": { - "version": "3.0.0", + "node_modules/path-parse": { + "version": "1.0.7", + "license": "MIT" + }, + "node_modules/path-root": { + "version": "0.1.1", "dev": true, "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "dependencies": { + "path-root-regex": "^0.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/npx-import/node_modules/mimic-fn": { - "version": "4.0.0", + "node_modules/path-root-regex": { + "version": "0.1.2", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/npx-import/node_modules/onetime": { - "version": "6.0.0", + "node_modules/path-scurry": { + "version": "1.10.1", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "mimic-fn": "^4.0.0" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npx-import/node_modules/signal-exit": { - "version": "3.0.7", + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.0.1", "dev": true, - "license": "ISC" + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } }, - "node_modules/npx-import/node_modules/validate-npm-package-name": { + "node_modules/path-to-regexp": { + "version": "6.2.1", + "license": "MIT" + }, + "node_modules/path-type": { "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", "dev": true, - "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "*" } }, - "node_modules/nth-check": { - "version": "2.1.1", + "node_modules/pause-stream": { + "version": "0.0.11", "dev": true, - "license": "BSD-2-Clause", + "license": [ + "MIT", + "Apache2" + ], "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "through": "~2.3" } }, - "node_modules/null-loader": { - "version": "4.0.1", + "node_modules/peek-readable": { + "version": "4.1.0", "dev": true, "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, "engines": { - "node": ">= 10.13.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/nullthrows": { - "version": "1.1.1", + "node_modules/performance-now": { + "version": "2.1.0", "dev": true, "license": "MIT" }, - "node_modules/number-is-nan": { - "version": "1.0.1", + "node_modules/physical-cpu-count": { + "version": "2.0.0", "dev": true, + "license": "ISC" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", "license": "MIT", - "optional": true, "engines": { - "node": ">=0.10.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/nwsapi": { - "version": "2.2.5", + "node_modules/pidtree": { + "version": "0.6.0", "dev": true, - "license": "MIT" + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } }, - "node_modules/oauth-sign": { - "version": "0.9.0", + "node_modules/pify": { + "version": "3.0.0", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "engines": { - "node": "*" + "node": ">=4" } }, - "node_modules/object-assign": { - "version": "4.1.1", + "node_modules/pino": { + "version": "8.14.1", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "v1.0.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^2.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.1.0", + "thread-stream": "^2.0.0" + }, + "bin": { + "pino": "bin.js" } }, - "node_modules/object-inspect": { - "version": "1.12.3", + "node_modules/pino-abstract-transport": { + "version": "1.0.0", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" } }, - "node_modules/object-is": { - "version": "1.1.5", + "node_modules/pino-abstract-transport/node_modules/buffer": { + "version": "6.0.3", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/pino-abstract-transport/node_modules/readable-stream": { + "version": "4.4.0", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/object-keys": { - "version": "1.1.1", + "node_modules/pino-abstract-transport/node_modules/split2": { + "version": "4.2.0", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/pino-std-serializers": { + "version": "6.2.1", + "license": "MIT" + }, + "node_modules/pirates": { + "version": "4.0.5", + "devOptional": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">= 6" } }, - "node_modules/object.assign": { - "version": "4.1.4", + "node_modules/pkg-dir": { + "version": "4.2.0", + "devOptional": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" + "find-up": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/object.entries": { - "version": "1.1.6", + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "devOptional": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/object.fromentries": { - "version": "2.0.6", + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "devOptional": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "p-locate": "^4.1.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/object.groupby": { - "version": "1.0.1", + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "devOptional": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/object.hasown": { - "version": "1.1.2", + "node_modules/pkg-up": { + "version": "3.1.0", + "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "find-up": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/object.values": { - "version": "1.1.6", + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "locate-path": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/obuf": { - "version": "1.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/on-exit-leak-free": { - "version": "2.1.0", - "license": "MIT" - }, - "node_modules/on-finished": { - "version": "2.4.1", + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { - "ee-first": "1.1.1" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=6" } }, - "node_modules/on-headers": { - "version": "1.0.2", + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", "dependencies": { - "wrappy": "1" + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/onetime": { - "version": "5.1.2", + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "dev": true, "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/open": { - "version": "8.4.2", + "node_modules/pkginfo": { + "version": "0.4.1", "dev": true, "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4.0" } }, - "node_modules/opener": { - "version": "1.5.2", + "node_modules/platform": { + "version": "1.3.6", "dev": true, - "license": "(WTFPL OR MIT)", + "license": "MIT" + }, + "node_modules/playwright": { + "version": "1.39.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.39.0" + }, "bin": { - "opener": "bin/opener-bin.js" + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "2.3.2" } }, - "node_modules/opentracing": { - "version": "0.14.7", + "node_modules/playwright-core": { + "version": "1.39.0", "dev": true, "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, "engines": { - "node": ">=0.10" + "node": ">=16" } }, - "node_modules/optionator": { - "version": "0.9.3", + "node_modules/plist": { + "version": "3.1.0", + "dev": true, "license": "MIT", "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=10.4.0" } }, - "node_modules/ordered-binary": { - "version": "1.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/os-homedir": { - "version": "1.0.2", + "node_modules/plist/node_modules/@xmldom/xmldom": { + "version": "0.8.10", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10.0.0" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", + "node_modules/plist/node_modules/xmlbuilder": { + "version": "15.1.1", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/osenv": { - "version": "0.1.5", - "dev": true, - "license": "ISC", - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "node": ">=8.0" } }, - "node_modules/outdent": { - "version": "0.5.0", - "dev": true, - "license": "MIT" - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "dev": true, + "node_modules/pluralize": { + "version": "8.0.0", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/p-defer": { - "version": "3.0.0", + "node_modules/portfinder": { + "version": "1.0.32", "dev": true, "license": "MIT", + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, "engines": { - "node": ">=8" + "node": ">= 0.12.0" } }, - "node_modules/p-event": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-5.0.1.tgz", - "integrity": "sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==", + "node_modules/portfinder/node_modules/async": { + "version": "2.6.4", "dev": true, + "license": "MIT", "dependencies": { - "p-timeout": "^5.0.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "lodash": "^4.17.14" } }, - "node_modules/p-filter": { - "version": "2.1.0", + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", "dev": true, "license": "MIT", "dependencies": { - "p-map": "^2.0.0" - }, - "engines": { - "node": ">=8" + "ms": "^2.1.1" } }, - "node_modules/p-finally": { - "version": "1.0.0", + "node_modules/postcss": { + "version": "8.4.29", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, "engines": { - "node": ">=4" + "node": "^10 || ^12 || >=14" } }, - "node_modules/p-limit": { - "version": "2.3.0", + "node_modules/postcss-calc": { + "version": "8.2.4", + "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.2.2" } }, - "node_modules/p-locate": { - "version": "5.0.0", + "node_modules/postcss-colormin": { + "version": "5.3.1", + "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=10" + "node": "^10 || ^12 || >=14.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "3.1.0", + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=10" + "node": "^10 || ^12 || >=14.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/p-map": { - "version": "2.1.0", + "node_modules/postcss-discard-comments": { + "version": "5.1.2", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/p-retry": { - "version": "4.6.2", + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", "dev": true, "license": "MIT", - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, "engines": { - "node": ">=8" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/p-retry/node_modules/retry": { - "version": "0.13.1", + "node_modules/postcss-discard-empty": { + "version": "5.1.1", "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/p-timeout": { + "node_modules/postcss-discard-overridden": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz", - "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": "^10 || ^12 || >=14.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/p-try": { - "version": "2.2.0", + "node_modules/postcss-flexbugs-fixes": { + "version": "5.0.2", + "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "peerDependencies": { + "postcss": "^8.1.4" } }, - "node_modules/package-json": { - "version": "8.1.1", + "node_modules/postcss-load-config": { + "version": "4.0.1", "dev": true, "license": "MIT", "dependencies": { - "got": "^12.1.0", - "registry-auth-token": "^5.0.1", - "registry-url": "^6.0.0", - "semver": "^7.3.7" + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" }, "engines": { - "node": ">=14.16" + "node": ">= 14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/package-json/node_modules/@sindresorhus/is": { - "version": "5.6.0", + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "2.3.2", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 14" + } + }, + "node_modules/postcss-loader": { + "version": "5.3.0", "dev": true, "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "semver": "^7.3.4" + }, "engines": { - "node": ">=14.16" + "node": ">= 10.13.0" }, "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" } }, - "node_modules/package-json/node_modules/@szmarczak/http-timer": { - "version": "5.0.1", + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", "dev": true, "license": "MIT", "dependencies": { - "defer-to-connect": "^2.0.1" + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" }, "engines": { - "node": ">=14.16" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/package-json/node_modules/cacheable-lookup": { - "version": "7.0.0", + "node_modules/postcss-merge-rules": { + "version": "5.1.4", "dev": true, "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, "engines": { - "node": ">=14.16" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/package-json/node_modules/cacheable-request": { - "version": "10.2.13", + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", "dev": true, "license": "MIT", "dependencies": { - "@types/http-cache-semantics": "^4.0.1", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.3", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=14.16" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/package-json/node_modules/got": { - "version": "12.6.1", + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", "dev": true, "license": "MIT", "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.8", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=14.16" + "node": "^10 || ^12 || >=14.0" }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/package-json/node_modules/http2-wrapper": { - "version": "2.2.0", + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", "dev": true, "license": "MIT", "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" + "postcss-selector-parser": "^6.0.5" }, "engines": { - "node": ">=10.19.0" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/package-json/node_modules/lowercase-keys": { + "node_modules/postcss-modules-extract-imports": { "version": "3.0.0", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/package-json/node_modules/mimic-response": { - "version": "4.0.0", + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", "dev": true, "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/package-json/node_modules/normalize-url": { - "version": "8.0.0", + "node_modules/postcss-modules-scope": { + "version": "3.0.0", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, "engines": { - "node": ">=14.16" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/package-json/node_modules/p-cancelable": { - "version": "3.0.0", + "node_modules/postcss-modules-values": { + "version": "4.0.0", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, "engines": { - "node": ">=12.20" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/package-json/node_modules/quick-lru": { - "version": "5.1.1", + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": "^10 || ^12 || >=14.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/package-json/node_modules/responselike": { - "version": "3.0.0", + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", "dev": true, "license": "MIT", "dependencies": { - "lowercase-keys": "^3.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=14.16" + "node": "^10 || ^12 || >=14.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/param-case": { - "version": "3.0.4", + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", "dev": true, "license": "MIT", "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=6" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/parse-filepath": { - "version": "1.0.2", + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", "dev": true, "license": "MIT", "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.8" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/parse-json": { - "version": "5.2.0", + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=8" + "node": "^10 || ^12 || >=14.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/parse-ms": { - "version": "2.1.0", + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", "dev": true, "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=6" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/parse-package-name": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/parse-path": { - "version": "7.0.0", + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", "dev": true, "license": "MIT", "dependencies": { - "protocols": "^2.0.0" + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/parse-url": { - "version": "8.1.0", + "node_modules/postcss-normalize-url": { + "version": "5.1.0", "dev": true, "license": "MIT", "dependencies": { - "parse-path": "^7.0.0" + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/parse5": { - "version": "7.1.2", + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", "dev": true, "license": "MIT", "dependencies": { - "entities": "^4.4.0" + "postcss-value-parser": "^4.2.0" }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "dev": true, - "license": "MIT", "engines": { - "node": ">= 0.8" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/pascal-case": { - "version": "3.1.2", + "node_modules/postcss-ordered-values": { + "version": "5.1.3", "dev": true, "license": "MIT", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/password-prompt": { - "version": "1.1.3", + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", "dev": true, - "license": "0BSD", + "license": "MIT", "dependencies": { - "ansi-escapes": "^4.3.2", - "cross-spawn": "^7.0.3" + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/path-case": { - "version": "3.0.4", + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", "dev": true, "license": "MIT", "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/path-exists": { - "version": "4.0.0", + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "dev": true, "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", + "node_modules/postcss-svgo": { + "version": "5.1.0", + "dev": true, "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/path-key": { - "version": "3.1.1", + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "dev": true, "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, "engines": { - "node": ">=8" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/path-parse": { - "version": "1.0.7", + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "dev": true, "license": "MIT" }, - "node_modules/path-root": { - "version": "0.1.1", + "node_modules/prebuild-install": { + "version": "7.1.1", "dev": true, "license": "MIT", "dependencies": { - "path-root-regex": "^0.1.0" + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/path-root-regex": { - "version": "0.1.2", + "node_modules/prebuild-install/node_modules/detect-libc": { + "version": "2.0.2", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/path-scurry": { - "version": "1.10.1", + "node_modules/prebuild-install/node_modules/readable-stream": { + "version": "3.6.2", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 6" } }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.1", + "node_modules/prebuild-install/node_modules/tar-fs": { + "version": "2.1.1", "dev": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/path-to-regexp": { - "version": "6.2.1", - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" } }, - "node_modules/pathval": { - "version": "1.1.1", + "node_modules/prebuild-install/node_modules/tar-stream": { + "version": "2.2.0", "dev": true, "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, "engines": { - "node": "*" + "node": ">=6" } }, - "node_modules/pause-stream": { - "version": "0.0.11", + "node_modules/preferred-pm": { + "version": "3.0.3", "dev": true, - "license": [ - "MIT", - "Apache2" - ], + "license": "MIT", "dependencies": { - "through": "~2.3" + "find-up": "^5.0.0", + "find-yarn-workspace-root2": "1.2.16", + "path-exists": "^4.0.0", + "which-pm": "2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/peek-readable": { - "version": "4.1.0", - "dev": true, + "node_modules/prelude-ls": { + "version": "1.2.1", "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" + "node": ">= 0.8.0" } }, - "node_modules/performance-now": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/physical-cpu-count": { + "node_modules/prepend-http": { "version": "2.0.0", "dev": true, - "license": "ISC" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "license": "ISC" + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/picomatch": { - "version": "2.3.1", + "node_modules/prettier": { + "version": "2.8.8", + "devOptional": true, "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, "engines": { - "node": ">=8.6" + "node": ">=10.13.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/pidtree": { - "version": "0.6.0", - "dev": true, + "node_modules/prettier-plugin-packagejson": { + "version": "2.4.6", "license": "MIT", - "bin": { - "pidtree": "bin/pidtree.js" + "dependencies": { + "sort-package-json": "2.6.0", + "synckit": "0.8.5" }, - "engines": { - "node": ">=0.10" + "peerDependencies": { + "prettier": ">= 1.16.0" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } } }, - "node_modules/pify": { - "version": "3.0.0", + "node_modules/pretty-bytes": { + "version": "5.6.0", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pino": { - "version": "8.14.1", + "node_modules/pretty-error": { + "version": "2.1.2", + "dev": true, "license": "MIT", "dependencies": { - "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "v1.0.0", - "pino-std-serializers": "^6.0.0", - "process-warning": "^2.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.1.0", - "thread-stream": "^2.0.0" - }, - "bin": { - "pino": "bin.js" + "lodash": "^4.17.20", + "renderkid": "^2.0.4" } }, - "node_modules/pino-abstract-transport": { - "version": "1.0.0", + "node_modules/pretty-format": { + "version": "27.5.1", + "dev": true, "license": "MIT", "dependencies": { - "readable-stream": "^4.0.0", - "split2": "^4.0.0" - } - }, - "node_modules/pino-abstract-transport/node_modules/buffer": { - "version": "6.0.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "dev": true, "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/pino-abstract-transport/node_modules/readable-stream": { - "version": "4.4.0", + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/pretty-ms": { + "version": "7.0.1", + "dev": true, "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" + "parse-ms": "^2.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pino-abstract-transport/node_modules/split2": { - "version": "4.2.0", - "license": "ISC", + "node_modules/process": { + "version": "0.11.10", + "license": "MIT", "engines": { - "node": ">= 10.x" + "node": ">= 0.6.0" } }, - "node_modules/pino-std-serializers": { - "version": "6.2.1", + "node_modules/process-nextick-args": { + "version": "2.0.1", + "dev": true, "license": "MIT" }, - "node_modules/pirates": { - "version": "4.0.5", - "devOptional": true, + "node_modules/process-warning": { + "version": "2.2.0", + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "dev": true, "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=0.4.0" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "devOptional": true, + "node_modules/promise": { + "version": "7.3.1", + "dev": true, "license": "MIT", "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" + "asap": "~2.0.3" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", + "node_modules/prompts": { + "version": "2.4.2", "devOptional": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", "devOptional": true, "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "devOptional": true, + "node_modules/prop-types": { + "version": "15.8.1", "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" } }, - "node_modules/pkg-up": { - "version": "3.1.0", + "node_modules/propagate": { + "version": "2.0.1", "dev": true, "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", + "node_modules/proper-lockfile": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" } }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", + "node_modules/proper-lockfile/node_modules/signal-exit": { + "version": "3.0.7", "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } + "license": "ISC" }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", + "node_modules/property-expr": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/proto-list": { + "version": "1.2.4", + "dev": true, + "license": "ISC" + }, + "node_modules/protocols": { + "version": "2.0.1", "dev": true, + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", "license": "MIT", "dependencies": { - "p-limit": "^2.0.0" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" }, "engines": { - "node": ">=6" + "node": ">= 0.10" } }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", + "node_modules/ps-tree": { + "version": "1.2.0", "dev": true, "license": "MIT", + "dependencies": { + "event-stream": "=3.3.4" + }, + "bin": { + "ps-tree": "bin/ps-tree.js" + }, "engines": { - "node": ">=4" + "node": ">= 0.10" } }, - "node_modules/pkginfo": { - "version": "0.4.1", + "node_modules/pseudomap": { + "version": "1.0.2", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } + "license": "ISC" }, - "node_modules/platform": { - "version": "1.3.6", + "node_modules/psl": { + "version": "1.9.0", "dev": true, "license": "MIT" }, - "node_modules/playwright": { - "version": "1.39.0", + "node_modules/publint": { + "version": "0.2.4", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "playwright-core": "1.39.0" + "npm-packlist": "^5.1.3", + "picocolors": "^1.0.0", + "sade": "^1.8.1" }, "bin": { - "playwright": "cli.js" + "publint": "lib/cli.js" }, "engines": { "node": ">=16" }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.39.0", - "dev": true, - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=16" + "funding": { + "url": "https://bjornlu.com/sponsor" } }, - "node_modules/plist": { - "version": "3.1.0", + "node_modules/pump": { + "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { - "@xmldom/xmldom": "^0.8.8", - "base64-js": "^1.5.1", - "xmlbuilder": "^15.1.1" - }, - "engines": { - "node": ">=10.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/plist/node_modules/@xmldom/xmldom": { - "version": "0.8.10", - "dev": true, + "node_modules/punycode": { + "version": "2.3.0", "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=6" } }, - "node_modules/plist/node_modules/xmlbuilder": { - "version": "15.1.1", + "node_modules/pure-rand": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "devOptional": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/q": { + "version": "1.5.1", "dev": true, "license": "MIT", "engines": { - "node": ">=8.0" + "node": ">=0.6.0", + "teleport": ">=0.2.0" } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "license": "MIT", - "engines": { - "node": ">=4" + }, + "node_modules/qrcode.react": { + "version": "3.1.0", + "license": "ISC", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/portfinder": { - "version": "1.0.32", - "dev": true, - "license": "MIT", + "node_modules/qs": { + "version": "6.11.0", + "license": "BSD-3-Clause", "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" + "side-channel": "^1.0.4" }, "engines": { - "node": ">= 0.12.0" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/portfinder/node_modules/async": { - "version": "2.6.4", + "node_modules/query-string": { + "version": "6.14.1", "dev": true, "license": "MIT", "dependencies": { - "lodash": "^4.17.14" + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", + "node_modules/querystringify": { + "version": "2.2.0", "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } + "license": "MIT" }, - "node_modules/postcss": { - "version": "8.4.29", - "dev": true, + "node_modules/queue-microtask": { + "version": "1.2.3", "funding": [ { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "type": "github", + "url": "https://github.com/sponsors/feross" }, { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" + "type": "patreon", + "url": "https://www.patreon.com/feross" }, { - "type": "github", - "url": "https://github.com/sponsors/ai" + "type": "consulting", + "url": "https://feross.org/support" } ], + "license": "MIT" + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "4.0.1", "license": "MIT", - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=8" } }, - "node_modules/postcss-calc": { - "version": "8.2.4", + "node_modules/qunit": { + "version": "2.19.4", "dev": true, "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" + "commander": "7.2.0", + "node-watch": "0.7.3", + "tiny-glob": "0.2.9" }, - "peerDependencies": { - "postcss": "^8.2.2" + "bin": { + "qunit": "bin/qunit.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/postcss-colormin": { - "version": "5.3.1", + "node_modules/qunit/node_modules/commander": { + "version": "7.2.0", "dev": true, "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">= 10" } }, - "node_modules/postcss-convert-values": { - "version": "5.1.3", + "node_modules/randombytes": { + "version": "2.1.0", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "safe-buffer": "^5.1.0" } }, - "node_modules/postcss-discard-comments": { - "version": "5.1.2", + "node_modules/range-parser": { + "version": "1.2.1", "dev": true, "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">= 0.6" } }, - "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", + "node_modules/raw-body": { + "version": "2.5.1", "dev": true, "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, - "peerDependencies": { - "postcss": "^8.2.15" + "engines": { + "node": ">= 0.8" } }, - "node_modules/postcss-discard-empty": { - "version": "5.1.1", + "node_modules/raw-loader": { + "version": "4.0.2", "dev": true, "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "postcss": "^8.2.15" + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/postcss-discard-overridden": { - "version": "5.1.0", + "node_modules/rc": { + "version": "1.2.8", "dev": true, - "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, - "peerDependencies": { - "postcss": "^8.2.15" + "bin": { + "rc": "cli.js" } }, - "node_modules/postcss-flexbugs-fixes": { - "version": "5.0.2", + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", "dev": true, "license": "MIT", - "peerDependencies": { - "postcss": "^8.1.4" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/postcss-load-config": { - "version": "4.0.1", - "dev": true, + "node_modules/react": { + "version": "18.2.0", "license": "MIT", "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^2.1.1" - }, - "engines": { - "node": ">= 14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" + "loose-envify": "^1.1.0" }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-load-config/node_modules/yaml": { - "version": "2.3.2", - "dev": true, - "license": "ISC", "engines": { - "node": ">= 14" + "node": ">=0.10.0" } }, - "node_modules/postcss-loader": { - "version": "5.3.0", + "node_modules/react-dev-utils": { + "version": "12.0.1", "dev": true, "license": "MIT", "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "semver": "^7.3.4" + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" + "node": ">=14" } }, - "node_modules/postcss-merge-longhand": { - "version": "5.1.7", + "node_modules/react-dev-utils/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" + "color-convert": "^2.0.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=8" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/postcss-merge-rules": { - "version": "5.1.4", + "node_modules/react-dev-utils/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=10" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/postcss-minify-font-values": { - "version": "5.1.0", + "node_modules/react-dev-utils/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=7.0.0" } }, - "node_modules/postcss-minify-gradients": { - "version": "5.1.1", + "node_modules/react-dev-utils/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "license": "MIT", - "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } + "license": "MIT" }, - "node_modules/postcss-minify-params": { - "version": "5.1.4", + "node_modules/react-dev-utils/node_modules/globby": { + "version": "11.1.0", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=10" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-minify-selectors": { - "version": "5.2.1", + "node_modules/react-dev-utils/node_modules/has-flag": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.2.1", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">= 12.13.0" } }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.3", + "node_modules/react-dev-utils/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">=8" } }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "dev": true, - "license": "ISC", + "node_modules/react-dom": { + "version": "18.2.0", + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" }, "peerDependencies": { - "postcss": "^8.1.0" + "react": "^18.2.0" } }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", + "node_modules/react-error-overlay": { + "version": "6.0.11", "dev": true, - "license": "ISC", - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } + "license": "MIT" }, - "node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "dev": true, + "node_modules/react-is": { + "version": "16.13.1", + "license": "MIT" + }, + "node_modules/react-native-url-polyfill": { + "version": "2.0.0", "license": "MIT", - "engines": { - "node": "^10 || ^12 || >=14.0" + "dependencies": { + "whatwg-url-without-unicode": "8.0.0-3" }, "peerDependencies": { - "postcss": "^8.2.15" + "react-native": "*" } }, - "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", + "node_modules/react-refresh": { + "version": "0.14.0", "dev": true, "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-normalize-positions": { - "version": "5.1.1", + "node_modules/react-refresh-typescript": { + "version": "2.0.9", "dev": true, "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, "peerDependencies": { - "postcss": "^8.2.15" + "react-refresh": "0.10.x || 0.11.x || 0.12.x || 0.13.x || 0.14.x", + "typescript": "^4.8 || ^5.0" } }, - "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.1", + "node_modules/react-router": { + "version": "6.16.0", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@remix-run/router": "1.9.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=14.0.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "react": ">=16.8" } }, - "node_modules/postcss-normalize-string": { - "version": "5.1.0", + "node_modules/react-router-dom": { + "version": "6.16.0", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@remix-run/router": "1.9.0", + "react-router": "6.16.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=14.0.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "react": ">=16.8", + "react-dom": ">=16.8" } }, - "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", + "node_modules/react-server-dom-webpack": { + "version": "0.0.0-experimental-c8b778b7f-20220825", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "acorn": "^6.2.1", + "loose-envify": "^1.1.0", + "neo-async": "^2.6.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=0.10.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "react": "0.0.0-experimental-c8b778b7f-20220825", + "webpack": "^5.59.0" } }, - "node_modules/postcss-normalize-unicode": { - "version": "5.1.1", + "node_modules/react-server-dom-webpack/node_modules/acorn": { + "version": "6.4.2", "dev": true, "license": "MIT", - "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.4.0" } }, - "node_modules/postcss-normalize-url": { - "version": "5.1.0", + "node_modules/read": { + "version": "1.0.7", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" + "mute-stream": "~0.0.4" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.8" } }, - "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", + "node_modules/read-pkg": { + "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=4" } }, - "node_modules/postcss-ordered-values": { - "version": "5.1.3", - "dev": true, + "node_modules/read-pkg-up": { + "version": "7.0.1", "license": "MIT", "dependencies": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=8" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-reduce-initial": { - "version": "5.1.2", - "dev": true, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "dev": true, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "p-locate": "^4.1.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "dev": true, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", "license": "MIT", "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/postcss-svgo": { - "version": "5.1.0", - "dev": true, + "node_modules/read-pkg-up/node_modules/read-pkg": { + "version": "5.2.0", "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/postcss-unique-selectors": { - "version": "5.1.1", + "node_modules/read-pkg-up/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.5" + "pify": "^3.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=4" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/prebuild-install": { - "version": "7.1.1", + "node_modules/read-yaml-file": { + "version": "1.1.0", "dev": true, "license": "MIT", "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" + "graceful-fs": "^4.1.5", + "js-yaml": "^3.6.1", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/prebuild-install/node_modules/detect-libc": { - "version": "2.0.2", + "node_modules/read-yaml-file/node_modules/pify": { + "version": "4.0.1", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/prebuild-install/node_modules/readable-stream": { - "version": "3.6.2", + "node_modules/read-yaml-file/node_modules/strip-bom": { + "version": "3.0.0", "dev": true, "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, "engines": { - "node": ">= 6" + "node": ">=4" } }, - "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", + "node_modules/readable-stream": { + "version": "2.3.8", "dev": true, "license": "MIT", "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/prebuild-install/node_modules/tar-stream": { - "version": "2.2.0", + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.2", "dev": true, "license": "MIT", "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "readable-stream": "^3.6.0" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/preferred-pm": { - "version": "3.0.3", + "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { + "version": "3.6.2", "dev": true, "license": "MIT", "dependencies": { - "find-up": "^5.0.0", - "find-yarn-workspace-root2": "1.2.16", - "path-exists": "^4.0.0", - "which-pm": "2.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", + "node_modules/readdirp": { + "version": "3.6.0", + "dev": true, "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=8.10.0" } }, - "node_modules/prepend-http": { - "version": "2.0.0", - "dev": true, + "node_modules/real-require": { + "version": "0.2.0", "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 12.13.0" } }, - "node_modules/prettier": { - "version": "2.8.8", - "devOptional": true, + "node_modules/rechoir": { + "version": "0.8.0", + "dev": true, "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" + "dependencies": { + "resolve": "^1.20.0" }, "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "node": ">= 10.13.0" } }, - "node_modules/prettier-plugin-packagejson": { - "version": "2.4.6", + "node_modules/recursive-readdir": { + "version": "2.2.3", + "dev": true, "license": "MIT", "dependencies": { - "sort-package-json": "2.6.0", - "synckit": "0.8.5" - }, - "peerDependencies": { - "prettier": ">= 1.16.0" - }, - "peerDependenciesMeta": { - "prettier": { - "optional": true - } + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/pretty-bytes": { - "version": "5.6.0", + "node_modules/redent": { + "version": "3.0.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/pretty-error": { - "version": "2.1.2", + "node_modules/redeyed": { + "version": "2.1.1", "dev": true, "license": "MIT", "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" + "esprima": "~4.0.0" } }, - "node_modules/pretty-format": { - "version": "27.5.1", + "node_modules/redux": { + "version": "4.2.1", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@babel/runtime": "^7.9.2" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", + "node_modules/redux-thunk": { + "version": "2.4.2", "dev": true, "license": "MIT", + "peerDependencies": { + "redux": "^4" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/pretty-format/node_modules/react-is": { - "version": "17.0.2", + "node_modules/regenerate": { + "version": "1.4.2", "dev": true, "license": "MIT" }, - "node_modules/pretty-ms": { - "version": "7.0.1", + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", "dev": true, "license": "MIT", "dependencies": { - "parse-ms": "^2.1.0" + "regenerate": "^1.4.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/process": { - "version": "0.11.10", + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6.0" + "dependencies": { + "@babel/runtime": "^7.8.4" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "dev": true, - "license": "MIT" + "node_modules/regexp-tree": { + "version": "0.1.27", + "license": "MIT", + "bin": { + "regexp-tree": "bin/regexp-tree" + } }, - "node_modules/process-warning": { - "version": "2.2.0", - "license": "MIT" + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/progress": { - "version": "2.0.3", + "node_modules/regexpp": { + "version": "3.2.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/promise": { - "version": "7.3.1", + "node_modules/regexpu-core": { + "version": "5.3.2", "dev": true, "license": "MIT", "dependencies": { - "asap": "~2.0.3" + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/prompts": { - "version": "2.4.2", - "devOptional": true, + "node_modules/registry-auth-token": { + "version": "5.0.2", + "dev": true, "license": "MIT", "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "@pnpm/npm-conf": "^2.1.0" }, "engines": { - "node": ">= 6" + "node": ">=14" } }, - "node_modules/prompts/node_modules/kleur": { - "version": "3.0.3", - "devOptional": true, + "node_modules/registry-url": { + "version": "6.0.1", + "dev": true, "license": "MIT", + "dependencies": { + "rc": "1.2.8" + }, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/prop-types": { - "version": "15.8.1", - "license": "MIT", + "node_modules/regjsparser": { + "version": "0.9.1", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" } }, - "node_modules/propagate": { - "version": "2.0.1", + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" + "bin": { + "jsesc": "bin/jsesc" } }, - "node_modules/proper-lockfile": { - "version": "4.1.2", + "node_modules/relay-runtime": { + "version": "12.0.0", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.4", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" + "@babel/runtime": "^7.0.0", + "fbjs": "^3.0.0", + "invariant": "^2.2.4" } }, - "node_modules/proper-lockfile/node_modules/signal-exit": { - "version": "3.0.7", + "node_modules/remove-trailing-separator": { + "version": "1.1.0", "dev": true, "license": "ISC" }, - "node_modules/property-expr": { - "version": "2.0.5", + "node_modules/renderkid": { + "version": "2.0.7", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + } }, - "node_modules/proto-list": { - "version": "1.2.4", + "node_modules/renderkid/node_modules/ansi-regex": { + "version": "2.1.1", "dev": true, - "license": "ISC" + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/protocols": { - "version": "2.0.1", + "node_modules/renderkid/node_modules/strip-ansi": { + "version": "3.0.1", "dev": true, - "license": "MIT" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", "license": "MIT", "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/request": { + "version": "2.88.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" }, "engines": { - "node": ">= 0.10" + "node": ">= 6" } }, - "node_modules/ps-tree": { - "version": "1.2.0", + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", "dev": true, "license": "MIT", "dependencies": { - "event-stream": "=3.3.4" - }, - "bin": { - "ps-tree": "bin/ps-tree.js" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.12" } }, - "node_modules/pseudomap": { - "version": "1.0.2", - "dev": true, - "license": "ISC" - }, - "node_modules/psl": { - "version": "1.9.0", + "node_modules/request/node_modules/qs": { + "version": "6.5.3", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } }, - "node_modules/publint": { - "version": "0.2.4", + "node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "npm-packlist": "^5.1.3", - "picocolors": "^1.0.0", - "sade": "^1.8.1" - }, - "bin": { - "publint": "lib/cli.js" + "psl": "^1.1.28", + "punycode": "^2.1.1" }, "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://bjornlu.com/sponsor" + "node": ">=0.8" } }, - "node_modules/pump": { - "version": "3.0.0", + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", "dev": true, "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "bin": { + "uuid": "bin/uuid" } }, - "node_modules/punycode": { - "version": "2.3.0", + "node_modules/require-directory": { + "version": "2.1.1", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/pure-rand": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", - "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", - "devOptional": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, - "node_modules/q": { - "version": "1.5.1", - "dev": true, + "node_modules/require-from-string": { + "version": "2.0.2", "license": "MIT", "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qrcode.react": { - "version": "3.1.0", - "license": "ISC", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "node": ">=0.10.0" } }, - "node_modules/qs": { - "version": "6.11.0", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/require-main-filename": { + "version": "2.0.0", + "dev": true, + "license": "ISC" }, - "node_modules/query-string": { - "version": "6.14.1", + "node_modules/require-package-name": { + "version": "2.0.1", "dev": true, + "license": "MIT" + }, + "node_modules/requireindex": { + "version": "1.2.0", "license": "MIT", - "dependencies": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.5" } }, - "node_modules/querystringify": { - "version": "2.2.0", + "node_modules/requires-port": { + "version": "1.0.0", "dev": true, "license": "MIT" }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/queue-tick": { - "version": "1.0.1", + "node_modules/reselect": { + "version": "4.1.8", "dev": true, "license": "MIT" }, - "node_modules/quick-format-unescaped": { - "version": "4.0.4", - "license": "MIT" - }, - "node_modules/quick-lru": { - "version": "4.0.1", + "node_modules/resolve": { + "version": "1.22.4", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/qunit": { - "version": "2.19.4", + "node_modules/resolve-alpn": { + "version": "1.2.1", "dev": true, + "license": "MIT" + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "devOptional": true, "license": "MIT", "dependencies": { - "commander": "7.2.0", - "node-watch": "0.7.3", - "tiny-glob": "0.2.9" - }, - "bin": { - "qunit": "bin/qunit.js" + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/qunit/node_modules/commander": { - "version": "7.2.0", - "dev": true, + "node_modules/resolve-from": { + "version": "5.0.0", + "devOptional": true, "license": "MIT", "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/randombytes": { - "version": "2.1.0", + "node_modules/resolve-global": { + "version": "1.0.0", "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "^5.1.0" + "global-dirs": "^0.1.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/range-parser": { - "version": "1.2.1", - "dev": true, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", "license": "MIT", - "engines": { - "node": ">= 0.6" + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/raw-body": { - "version": "2.5.1", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "devOptional": true, "engines": { - "node": ">= 0.8" + "node": ">=10" } }, - "node_modules/raw-loader": { - "version": "4.0.2", + "node_modules/responselike": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "lowercase-keys": "^2.0.0" }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rc": { - "version": "1.2.8", + "node_modules/restore-cursor": { + "version": "3.1.0", "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "license": "MIT", "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, - "bin": { - "rc": "cli.js" + "engines": { + "node": ">=8" } }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", "dev": true, + "license": "ISC" + }, + "node_modules/ret": { + "version": "0.2.2", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/react": { - "version": "18.2.0", + "node_modules/retry": { + "version": "0.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - }, "engines": { + "iojs": ">=1.0.0", "node": ">=0.10.0" } }, - "node_modules/react-dev-utils": { - "version": "12.0.1", + "node_modules/rfdc": { + "version": "1.3.0", + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "5.0.5", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@babel/code-frame": "^7.16.0", - "address": "^1.1.2", - "browserslist": "^4.18.1", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "detect-port-alt": "^1.1.6", - "escape-string-regexp": "^4.0.0", - "filesize": "^8.0.6", - "find-up": "^5.0.0", - "fork-ts-checker-webpack-plugin": "^6.5.0", - "global-modules": "^2.0.0", - "globby": "^11.0.4", - "gzip-size": "^6.0.0", - "immer": "^9.0.7", - "is-root": "^2.1.0", - "loader-utils": "^3.2.0", - "open": "^8.4.0", - "pkg-up": "^3.1.0", - "prompts": "^2.4.2", - "react-error-overlay": "^6.0.11", - "recursive-readdir": "^2.2.2", - "shell-quote": "^1.7.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" }, "engines": { "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/react-dev-utils/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "balanced-match": "^1.0.0" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "10.3.10", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/react-dev-utils/node_modules/chalk": { - "version": "4.1.2", + "node_modules/rimraf/node_modules/minimatch": { + "version": "9.0.3", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/react-dev-utils/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/roarr": { + "version": "2.15.4", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "color-name": "~1.1.4" + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=8.0" } }, - "node_modules/react-dev-utils/node_modules/color-name": { - "version": "1.1.4", + "node_modules/roarr/node_modules/sprintf-js": { + "version": "1.1.3", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause" }, - "node_modules/react-dev-utils/node_modules/globby": { - "version": "11.1.0", + "node_modules/rollup": { + "version": "3.23.1", "dev": true, "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-applescript": { + "version": "5.0.0", + "license": "MIT", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "execa": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-dev-utils/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/run-async": { + "version": "2.4.1", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.12.0" } }, - "node_modules/react-dev-utils/node_modules/loader-utils": { - "version": "3.2.1", + "node_modules/run-parallel": { + "version": "1.2.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sade": { + "version": "1.8.1", "dev": true, "license": "MIT", + "dependencies": { + "mri": "^1.1.0" + }, "engines": { - "node": ">= 12.13.0" + "node": ">=6" } }, - "node_modules/react-dev-utils/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, + "node_modules/safe-array-concat": { + "version": "1.0.1", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" }, "engines": { - "node": ">=8" + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/react-dom": { - "version": "18.2.0", + "node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" }, - "peerDependencies": { - "react": "^18.2.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/react-error-overlay": { - "version": "6.0.11", - "dev": true, - "license": "MIT" - }, - "node_modules/react-is": { - "version": "16.13.1", - "license": "MIT" - }, - "node_modules/react-native-url-polyfill": { + "node_modules/safe-regex2": { "version": "2.0.0", "license": "MIT", "dependencies": { - "whatwg-url-without-unicode": "8.0.0-3" - }, - "peerDependencies": { - "react-native": "*" + "ret": "~0.2.0" } }, - "node_modules/react-refresh": { - "version": "0.14.0", - "dev": true, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/react-refresh-typescript": { - "version": "2.0.9", + "node_modules/safer-buffer": { + "version": "2.1.2", "dev": true, - "license": "MIT", - "peerDependencies": { - "react-refresh": "0.10.x || 0.11.x || 0.12.x || 0.13.x || 0.14.x", - "typescript": "^4.8 || ^5.0" - } + "license": "MIT" }, - "node_modules/react-router": { - "version": "6.16.0", + "node_modules/sax": { + "version": "1.2.4", "dev": true, - "license": "MIT", + "license": "ISC" + }, + "node_modules/saxes": { + "version": "6.0.0", + "dev": true, + "license": "ISC", "dependencies": { - "@remix-run/router": "1.9.0" + "xmlchars": "^2.2.0" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": ">=16.8" + "node": ">=v12.22.7" } }, - "node_modules/react-router-dom": { - "version": "6.16.0", + "node_modules/scheduler": { + "version": "0.23.0", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "3.3.0", "dev": true, "license": "MIT", "dependencies": { - "@remix-run/router": "1.9.0", - "react-router": "6.16.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">=14.0.0" + "node": ">= 10.13.0" }, - "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/react-server-dom-webpack": { - "version": "0.0.0-experimental-c8b778b7f-20220825", + "node_modules/secure-compare": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "license": "BSD-3-Clause" + }, + "node_modules/select-hose": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/selfsigned": { + "version": "2.1.1", "dev": true, "license": "MIT", "dependencies": { - "acorn": "^6.2.1", - "loose-envify": "^1.1.0", - "neo-async": "^2.6.1" + "node-forge": "^1" }, "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "react": "0.0.0-experimental-c8b778b7f-20220825", - "webpack": "^5.59.0" + "node": ">=10" } }, - "node_modules/react-server-dom-webpack/node_modules/acorn": { - "version": "6.4.2", + "node_modules/semiver": { + "version": "1.1.0", "dev": true, "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": ">=6" } }, - "node_modules/read": { - "version": "1.0.7", - "dev": true, + "node_modules/semver": { + "version": "7.5.4", "license": "ISC", "dependencies": { - "mute-stream": "~0.0.4" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=0.8" + "node": ">=10" } }, - "node_modules/read-pkg": { - "version": "3.0.0", + "node_modules/semver-compare": { + "version": "1.0.0", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/read-pkg-up": { - "version": "7.0.1", + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "license": "ISC" + }, + "node_modules/send": { + "version": "0.18.0", + "dev": true, "license": "MIT", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8.0" } }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "ms": "2.0.0" } }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "5.0.0", + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "dev": true, "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" + "bin": { + "mime": "cli.js" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "4.1.0", + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/read-pkg-up/node_modules/read-pkg": { - "version": "5.2.0", + "node_modules/sentence-case": { + "version": "3.0.4", + "dev": true, "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" } }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" + "node_modules/serialize-javascript": { + "version": "5.0.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" } }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", + "node_modules/serve-index": { + "version": "1.9.1", "dev": true, "license": "MIT", "dependencies": { - "pify": "^3.0.0" + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" }, "engines": { - "node": ">=4" + "node": ">= 0.8.0" } }, - "node_modules/read-yaml-file": { - "version": "1.1.0", + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.5", - "js-yaml": "^3.6.1", - "pify": "^4.0.1", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" + "ms": "2.0.0" } }, - "node_modules/read-yaml-file/node_modules/pify": { - "version": "4.0.1", + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "node_modules/read-yaml-file/node_modules/strip-bom": { - "version": "3.0.0", + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", "dev": true, "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/readable-stream": { - "version": "2.3.8", + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "license": "ISC" }, - "node_modules/readable-stream/node_modules/isarray": { - "version": "1.0.0", + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", "dev": true, "license": "MIT" }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.2", + "node_modules/serve-static": { + "version": "1.15.0", "dev": true, "license": "MIT", "dependencies": { - "readable-stream": "^3.6.0" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" + "node": ">= 0.8.0" } }, - "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { - "version": "3.6.2", + "node_modules/set-blocking": { + "version": "2.0.0", "dev": true, + "license": "ISC" + }, + "node_modules/set-cookie-parser": { + "version": "2.6.0", + "license": "MIT" + }, + "node_modules/set-function-name": { + "version": "2.0.1", "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" } }, - "node_modules/readdirp": { - "version": "3.6.0", + "node_modules/setimmediate": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "dev": true, + "license": "ISC" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", "dev": true, "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "kind-of": "^6.0.2" }, "engines": { - "node": ">=8.10.0" + "node": ">=8" } }, - "node_modules/real-require": { - "version": "0.2.0", - "license": "MIT", - "engines": { - "node": ">= 12.13.0" - } + "node_modules/shallow-compare": { + "version": "1.2.2", + "dev": true, + "license": "MIT" }, - "node_modules/rechoir": { - "version": "0.8.0", + "node_modules/sharp": { + "version": "0.32.5", "dev": true, - "license": "MIT", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "resolve": "^1.20.0" + "color": "^4.2.3", + "detect-libc": "^2.0.2", + "node-addon-api": "^6.1.0", + "prebuild-install": "^7.1.1", + "semver": "^7.5.4", + "simple-get": "^4.0.1", + "tar-fs": "^3.0.4", + "tunnel-agent": "^0.6.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">=14.15.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/recursive-readdir": { - "version": "2.2.3", + "node_modules/sharp/node_modules/detect-libc": { + "version": "2.0.2", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/sharp/node_modules/node-addon-api": { + "version": "6.1.0", "dev": true, + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", "license": "MIT", "dependencies": { - "minimatch": "^3.0.5" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" } }, - "node_modules/redent": { + "node_modules/shebang-regex": { "version": "3.0.0", - "dev": true, "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/redeyed": { - "version": "2.1.1", + "node_modules/shell-quote": { + "version": "1.8.1", "dev": true, "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "license": "MIT", "dependencies": { - "esprima": "~4.0.0" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/redux": { - "version": "4.2.1", + "node_modules/signal-exit": { + "version": "4.0.1", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/signedsource": { + "version": "1.0.0", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", "dependencies": { - "@babel/runtime": "^7.9.2" + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" } }, - "node_modules/redux-thunk": { - "version": "2.4.2", + "node_modules/simple-plist": { + "version": "1.3.1", "dev": true, "license": "MIT", - "peerDependencies": { - "redux": "^4" + "dependencies": { + "bplist-creator": "0.1.0", + "bplist-parser": "0.3.1", + "plist": "^3.0.5" } }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.4", + "node_modules/simple-swizzle": { + "version": "0.2.2", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "is-arrayish": "^0.3.1" } }, - "node_modules/regenerate": { - "version": "1.4.2", + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", "dev": true, "license": "MIT" }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", + "node_modules/sinon": { + "version": "14.0.2", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "regenerate": "^1.4.2" + "@sinonjs/commons": "^2.0.0", + "@sinonjs/fake-timers": "^9.1.2", + "@sinonjs/samsam": "^7.0.1", + "diff": "^5.0.0", + "nise": "^5.1.2", + "supports-color": "^7.2.0" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "license": "MIT" - }, - "node_modules/regenerator-transform": { - "version": "0.15.1", + "node_modules/sinon/node_modules/@sinonjs/commons": { + "version": "2.0.0", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@babel/runtime": "^7.8.4" + "type-detect": "4.0.8" } }, - "node_modules/regexp-tree": { - "version": "0.1.27", - "license": "MIT", - "bin": { - "regexp-tree": "bin/regexp-tree" + "node_modules/sinon/node_modules/@sinonjs/fake-timers": { + "version": "9.1.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^1.7.0" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "license": "MIT", + "node_modules/sinon/node_modules/@sinonjs/fake-timers/node_modules/@sinonjs/commons": { + "version": "1.8.6", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "type-detect": "4.0.8" } }, - "node_modules/regexpp": { - "version": "3.2.0", + "node_modules/sinon/node_modules/has-flag": { + "version": "4.0.0", "dev": true, "license": "MIT", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/regexpu-core": { - "version": "5.3.2", + "node_modules/sinon/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/registry-auth-token": { - "version": "5.0.2", + "node_modules/sirv": { + "version": "1.0.19", "dev": true, "license": "MIT", "dependencies": { - "@pnpm/npm-conf": "^2.1.0" + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" }, "engines": { - "node": ">=14" + "node": ">= 10" } }, - "node_modules/registry-url": { - "version": "6.0.1", + "node_modules/sisteransi": { + "version": "1.0.5", + "devOptional": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", "dev": true, "license": "MIT", "dependencies": { - "rc": "1.2.8" + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" }, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/regjsparser": { - "version": "0.9.1", + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~0.5.0" + "license": "MIT", + "engines": { + "node": ">=12" }, - "bin": { - "regjsparser": "bin/parser" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", + "node_modules/slide": { + "version": "1.1.6", "dev": true, - "bin": { - "jsesc": "bin/jsesc" + "license": "ISC", + "engines": { + "node": "*" } }, - "node_modules/relay-runtime": { - "version": "12.0.0", + "node_modules/slugify": { + "version": "1.6.6", "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.0.0", - "fbjs": "^3.0.0", - "invariant": "^2.2.4" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/renderkid": { - "version": "2.0.7", + "node_modules/smartwrap": { + "version": "2.0.2", "dev": true, "license": "MIT", "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" - } - }, - "node_modules/renderkid/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", + "array.prototype.flat": "^1.2.3", + "breakword": "^1.0.5", + "grapheme-splitter": "^1.0.4", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1", + "yargs": "^15.1.0" + }, + "bin": { + "smartwrap": "src/terminal-adapter.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/renderkid/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/smartwrap/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/request": { - "version": "2.88.2", + "node_modules/smartwrap/node_modules/cliui": { + "version": "6.0.0", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", + "node_modules/smartwrap/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.12" + "node": ">=7.0.0" } }, - "node_modules/request/node_modules/qs": { - "version": "6.5.3", + "node_modules/smartwrap/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } + "license": "MIT" }, - "node_modules/request/node_modules/tough-cookie": { - "version": "2.5.0", + "node_modules/smartwrap/node_modules/find-up": { + "version": "4.1.0", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=0.8" + "node": ">=8" } }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", + "node_modules/smartwrap/node_modules/locate-path": { + "version": "5.0.0", "dev": true, "license": "MIT", - "bin": { - "uuid": "bin/uuid" + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "devOptional": true, + "node_modules/smartwrap/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/require-from-string": { - "version": "2.0.2", + "node_modules/smartwrap/node_modules/wrap-ansi": { + "version": "6.2.0", + "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", + "node_modules/smartwrap/node_modules/y18n": { + "version": "4.0.3", "dev": true, "license": "ISC" }, - "node_modules/require-package-name": { - "version": "2.0.1", + "node_modules/smartwrap/node_modules/yargs": { + "version": "15.4.1", "dev": true, - "license": "MIT" - }, - "node_modules/requireindex": { - "version": "1.2.0", "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, "engines": { - "node": ">=0.10.5" + "node": ">=8" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/reselect": { - "version": "4.1.8", - "dev": true, - "license": "MIT" + "node_modules/snake-case": { + "version": "3.0.4", + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } }, - "node_modules/resolve": { - "version": "1.22.4", + "node_modules/snakecase-keys": { + "version": "5.4.4", "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "map-obj": "^4.1.0", + "snake-case": "^3.0.4", + "type-fest": "^2.5.2" }, - "bin": { - "resolve": "bin/resolve" + "engines": { + "node": ">=12" + } + }, + "node_modules/snakecase-keys/node_modules/type-fest": { + "version": "2.19.0", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", + "node_modules/snyk": { + "version": "1.1234.0", "dev": true, - "license": "MIT" - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "devOptional": true, - "license": "MIT", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "resolve-from": "^5.0.0" + "@sentry/node": "^7.36.0", + "global-agent": "^3.0.0" + }, + "bin": { + "snyk": "bin/snyk" }, "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/resolve-global": { - "version": "1.0.0", + "node_modules/socket.io": { + "version": "4.7.1", "dev": true, "license": "MIT", "dependencies": { - "global-dirs": "^0.1.1" + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.0", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" }, "engines": { - "node": ">=8" + "node": ">=10.0.0" } }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", + "node_modules/socket.io-adapter": { + "version": "2.5.2", + "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + "dependencies": { + "ws": "~8.11.0" } }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "devOptional": true, + "node_modules/socket.io-adapter/node_modules/ws": { + "version": "8.11.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/responselike": { - "version": "2.0.1", + "node_modules/socket.io-client": { + "version": "4.7.1", "dev": true, "license": "MIT", "dependencies": { - "lowercase-keys": "^2.0.0" + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.5.1", + "socket.io-parser": "~4.2.4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=10.0.0" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", + "node_modules/socket.io-parser": { + "version": "4.2.4", "dev": true, "license": "MIT", "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" }, "engines": { - "node": ">=8" + "node": ">=10.0.0" } }, - "node_modules/restore-cursor/node_modules/signal-exit": { - "version": "3.0.7", + "node_modules/sockjs": { + "version": "0.3.24", "dev": true, - "license": "ISC" - }, - "node_modules/ret": { - "version": "0.2.2", "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" } }, - "node_modules/retry": { - "version": "0.12.0", - "dev": true, + "node_modules/sonic-boom": { + "version": "3.3.0", "license": "MIT", - "engines": { - "node": ">= 4" + "dependencies": { + "atomic-sleep": "^1.0.0" } }, - "node_modules/reusify": { - "version": "1.0.4", + "node_modules/sort-keys": { + "version": "2.0.0", + "dev": true, "license": "MIT", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/rfdc": { - "version": "1.3.0", + "node_modules/sort-object-keys": { + "version": "1.1.3", "license": "MIT" }, - "node_modules/rimraf": { - "version": "5.0.5", - "dev": true, - "license": "ISC", + "node_modules/sort-package-json": { + "version": "2.6.0", + "license": "MIT", "dependencies": { - "glob": "^10.3.7" + "detect-indent": "^7.0.1", + "detect-newline": "^4.0.0", + "get-stdin": "^9.0.0", + "git-hooks-list": "^3.0.0", + "globby": "^13.1.2", + "is-plain-obj": "^4.1.0", + "sort-object-keys": "^1.1.3" }, "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "sort-package-json": "cli.js" } }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, + "node_modules/sort-package-json/node_modules/detect-indent": { + "version": "7.0.1", "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": ">=12.20" } }, - "node_modules/rimraf/node_modules/glob": { - "version": "10.3.10", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, + "node_modules/sort-package-json/node_modules/detect-newline": { + "version": "4.0.1", + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "9.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "node_modules/sort-package-json/node_modules/is-plain-obj": { + "version": "4.1.0", + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/roarr": { - "version": "2.15.4", + "node_modules/source-list-map": { + "version": "2.0.1", "dev": true, + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.5.7", "license": "BSD-3-Clause", - "dependencies": { - "boolean": "^3.0.1", - "detect-node": "^2.0.4", - "globalthis": "^1.0.1", - "json-stringify-safe": "^5.0.1", - "semver-compare": "^1.0.0", - "sprintf-js": "^1.1.2" - }, "engines": { - "node": ">=8.0" + "node": ">=0.10.0" } }, - "node_modules/roarr/node_modules/sprintf-js": { - "version": "1.1.3", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/rollup": { - "version": "3.23.1", + "node_modules/source-map-js": { + "version": "1.0.2", "dev": true, - "license": "MIT", - "bin": { - "rollup": "dist/bin/rollup" - }, + "license": "BSD-3-Clause", "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=0.10.0" } }, - "node_modules/run-applescript": { - "version": "5.0.0", - "license": "MIT", + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "devOptional": true, "dependencies": { - "execa": "^5.0.0" - }, + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/run-async": { - "version": "2.4.1", + "node_modules/spawndamnit": { + "version": "2.0.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.12.0" + "dependencies": { + "cross-spawn": "^5.1.0", + "signal-exit": "^3.0.2" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/spawndamnit/node_modules/cross-spawn": { + "version": "5.1.0", + "dev": true, "license": "MIT", "dependencies": { - "queue-microtask": "^1.2.2" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "node_modules/sade": { - "version": "1.8.1", + "node_modules/spawndamnit/node_modules/lru-cache": { + "version": "4.1.5", + "dev": true, + "license": "ISC", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/spawndamnit/node_modules/shebang-command": { + "version": "1.2.0", "dev": true, "license": "MIT", "dependencies": { - "mri": "^1.1.0" + "shebang-regex": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/safe-array-concat": { - "version": "1.0.1", + "node_modules/spawndamnit/node_modules/shebang-regex": { + "version": "1.0.0", + "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", + "node_modules/spawndamnit/node_modules/signal-exit": { + "version": "3.0.7", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" + "license": "ISC" }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "license": "MIT", + "node_modules/spawndamnit/node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" + "isexe": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "which": "bin/which" } }, - "node_modules/safe-regex2": { - "version": "2.0.0", - "license": "MIT", + "node_modules/spawndamnit/node_modules/yallist": { + "version": "2.1.2", + "dev": true, + "license": "ISC" + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "license": "Apache-2.0", "dependencies": { - "ret": "~0.2.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/safe-stable-stringify": { - "version": "2.4.3", + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/sax": { - "version": "1.2.4", - "dev": true, - "license": "ISC" + "node_modules/spdx-license-ids": { + "version": "3.0.13", + "license": "CC0-1.0" }, - "node_modules/saxes": { - "version": "6.0.0", + "node_modules/spdy": { + "version": "4.0.2", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "xmlchars": "^2.2.0" + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" }, "engines": { - "node": ">=v12.22.7" + "node": ">=6.0.0" } }, - "node_modules/scheduler": { - "version": "0.23.0", + "node_modules/spdy-transport": { + "version": "3.0.0", + "dev": true, "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0" + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" } }, - "node_modules/schema-utils": { - "version": "3.3.0", + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.2", "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">= 6" } }, - "node_modules/secure-compare": { - "version": "3.0.1", + "node_modules/specificity": { + "version": "0.4.1", "dev": true, - "license": "MIT" + "license": "MIT", + "bin": { + "specificity": "bin/specificity" + } }, - "node_modules/secure-json-parse": { - "version": "2.7.0", - "license": "BSD-3-Clause" + "node_modules/split-on-first": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/select-hose": { - "version": "2.0.0", + "node_modules/split2": { + "version": "3.2.2", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "readable-stream": "^3.0.0" + } }, - "node_modules/selfsigned": { - "version": "2.1.1", + "node_modules/split2/node_modules/readable-stream": { + "version": "3.6.2", "dev": true, "license": "MIT", "dependencies": { - "node-forge": "^1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/semiver": { - "version": "1.1.0", + "node_modules/sponge-case": { + "version": "1.0.1", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "tslib": "^2.0.3" } }, - "node_modules/semver": { - "version": "7.5.4", - "license": "ISC", + "node_modules/sprintf-js": { + "version": "1.0.3", + "devOptional": true, + "license": "BSD-3-Clause" + }, + "node_modules/sshpk": { + "version": "1.17.0", + "dev": true, + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" }, "bin": { - "semver": "bin/semver.js" + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/semver-compare": { - "version": "1.0.0", + "node_modules/ssri": { + "version": "5.3.0", "dev": true, - "license": "MIT" - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", "license": "ISC", "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "safe-buffer": "^5.1.1" } }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" + "node_modules/stable": { + "version": "0.1.8", + "dev": true, + "license": "MIT" }, - "node_modules/send": { - "version": "0.18.0", + "node_modules/stack-trace": { + "version": "0.0.10", "dev": true, "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, "engines": { - "node": ">= 0.8.0" + "node": "*" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "dev": true, + "node_modules/stack-utils": { + "version": "2.0.6", + "devOptional": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/send/node_modules/debug/node_modules/ms": { + "node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "dev": true, + "devOptional": true, "license": "MIT", - "bin": { - "mime": "cli.js" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", + "node_modules/stackframe": { + "version": "1.3.4", "dev": true, "license": "MIT" }, - "node_modules/send/node_modules/statuses": { - "version": "2.0.1", + "node_modules/statuses": { + "version": "1.5.0", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">= 0.6" } }, - "node_modules/sentence-case": { - "version": "3.0.4", + "node_modules/steno": { + "version": "0.4.4", "dev": true, "license": "MIT", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" + "graceful-fs": "^4.1.3" } }, - "node_modules/serialize-javascript": { - "version": "5.0.1", + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/stream-buffers": { + "version": "2.2.0", "dev": true, - "license": "BSD-3-Clause", + "license": "Unlicense", + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/stream-combiner": { + "version": "0.0.4", + "dev": true, + "license": "MIT", "dependencies": { - "randombytes": "^2.1.0" + "duplexer": "~0.1.1" } }, - "node_modules/serve-index": { - "version": "1.9.1", + "node_modules/stream-shift": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/stream-transform": { + "version": "2.1.3", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, + "mixme": "^0.5.1" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "dev": true, "engines": { - "node": ">= 0.8.0" + "node": ">=10.0.0" } }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", + "node_modules/streamx": { + "version": "2.15.1", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" } }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", + "node_modules/strict-uri-encode": { + "version": "2.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=4" } }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", + "node_modules/string_decoder": { + "version": "1.1.1", "dev": true, "license": "MIT", "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" + "safe-buffer": "~5.1.0" } }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", "dev": true, "license": "MIT" }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/serve-static": { - "version": "1.15.0", + "node_modules/string-argv": { + "version": "0.3.2", "dev": true, "license": "MIT", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, "engines": { - "node": ">= 0.8.0" + "node": ">=0.6.19" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/set-cookie-parser": { - "version": "2.6.0", - "license": "MIT" - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "license": "MIT", + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "devOptional": true, "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" } }, - "node_modules/setimmediate": { - "version": "1.0.5", + "node_modules/string-natural-compare": { + "version": "3.0.1", "dev": true, "license": "MIT" }, - "node_modules/setprototypeof": { - "version": "1.2.0", + "node_modules/string-similarity": { + "version": "1.2.2", "dev": true, - "license": "ISC" + "license": "ISC", + "dependencies": { + "lodash.every": "^4.6.0", + "lodash.flattendeep": "^4.4.0", + "lodash.foreach": "^4.5.0", + "lodash.map": "^4.6.0", + "lodash.maxby": "^4.6.0" + } }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "dev": true, + "node_modules/string-width": { + "version": "4.2.3", + "devOptional": true, "license": "MIT", "dependencies": { - "kind-of": "^6.0.2" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/shallow-compare": { - "version": "1.2.2", - "dev": true, - "license": "MIT" - }, - "node_modules/sharp": { - "version": "0.32.5", + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.2", - "node-addon-api": "^6.1.0", - "prebuild-install": "^7.1.1", - "semver": "^7.5.4", - "simple-get": "^4.0.1", - "tar-fs": "^3.0.4", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=14.15.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/sharp/node_modules/detect-libc": { - "version": "2.0.2", - "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=8" } }, - "node_modules/sharp/node_modules/node-addon-api": { - "version": "6.1.0", + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", "dev": true, "license": "MIT" }, - "node_modules/shebang-command": { - "version": "2.0.0", + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/shebang-regex": { + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "devOptional": true, + "license": "MIT" + }, + "node_modules/string-width/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/shell-quote": { - "version": "1.8.1", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", + "node_modules/string.prototype.matchall": { + "version": "4.0.8", "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "4.0.1", + "node_modules/string.prototype.padend": { + "version": "3.1.4", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, "engines": { - "node": ">=14" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/signedsource": { - "version": "1.0.0", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/simple-get": { - "version": "4.0.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/simple-plist": { - "version": "1.3.1", - "dev": true, + "node_modules/string.prototype.trim": { + "version": "1.2.7", "license": "MIT", "dependencies": { - "bplist-creator": "0.1.0", - "bplist-parser": "0.3.1", - "plist": "^3.0.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "dev": true, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", "license": "MIT", "dependencies": { - "is-arrayish": "^0.3.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "dev": true, - "license": "MIT" - }, - "node_modules/sinon": { - "version": "14.0.2", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "license": "MIT", "dependencies": { - "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "^9.1.2", - "@sinonjs/samsam": "^7.0.1", - "diff": "^5.0.0", - "nise": "^5.1.2", - "supports-color": "^7.2.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sinon/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/strip-ansi": { + "version": "6.0.1", + "license": "MIT", "dependencies": { - "type-detect": "4.0.8" + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/sinon/node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@sinonjs/commons": "^1.7.0" + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/sinon/node_modules/@sinonjs/fake-timers/node_modules/@sinonjs/commons": { - "version": "1.8.6", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "devOptional": true, + "engines": { + "node": ">=8" } }, - "node_modules/sinon/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/strip-eof": { + "version": "1.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/sinon/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, + "node_modules/strip-final-newline": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sirv": { - "version": "1.0.19", - "dev": true, + "node_modules/strip-indent": { + "version": "3.0.0", "license": "MIT", "dependencies": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^1.0.0" + "min-indent": "^1.0.0" }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/sisteransi": { - "version": "1.0.5", - "devOptional": true, - "license": "MIT" - }, - "node_modules/slash": { - "version": "3.0.0", + "node_modules/strip-json-comments": { + "version": "3.1.1", "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/slice-ansi": { - "version": "5.0.0", + "node_modules/strtok3": { + "version": "6.3.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", + "node_modules/style-loader": { + "version": "2.0.0", "dev": true, "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, "engines": { - "node": ">=12" + "node": ">= 10.13.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/slide": { - "version": "1.1.6", + "node_modules/style-to-object": { + "version": "0.4.2", "dev": true, - "license": "ISC", - "engines": { - "node": "*" + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.1.1" } }, - "node_modules/slugify": { - "version": "1.6.6", + "node_modules/styled-jsx": { + "version": "5.1.1", "dev": true, "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, "engines": { - "node": ">=8.0.0" + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/smartwrap": { - "version": "2.0.2", + "node_modules/stylehacks": { + "version": "5.1.1", "dev": true, "license": "MIT", "dependencies": { - "array.prototype.flat": "^1.2.3", - "breakword": "^1.0.5", - "grapheme-splitter": "^1.0.4", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1", - "yargs": "^15.1.0" - }, - "bin": { - "smartwrap": "src/terminal-adapter.js" + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" }, "engines": { - "node": ">=6" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/smartwrap/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/stylis": { + "version": "4.2.0", + "license": "MIT" + }, + "node_modules/sucrase": { + "version": "3.32.0", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/smartwrap/node_modules/cliui": { - "version": "6.0.0", + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "license": "MIT", + "engines": { + "node": ">= 6" } }, - "node_modules/smartwrap/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/smartwrap/node_modules/color-name": { - "version": "1.1.4", + "node_modules/sudo-prompt": { + "version": "8.2.5", "dev": true, "license": "MIT" }, - "node_modules/smartwrap/node_modules/find-up": { - "version": "4.1.0", - "dev": true, + "node_modules/supports-color": { + "version": "5.5.0", "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/smartwrap/node_modules/locate-path": { - "version": "5.0.0", + "node_modules/supports-hyperlinks": { + "version": "2.3.0", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/smartwrap/node_modules/p-locate": { - "version": "4.1.0", + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { "node": ">=8" } }, - "node_modules/smartwrap/node_modules/wrap-ansi": { - "version": "6.2.0", + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/smartwrap/node_modules/y18n": { - "version": "4.0.3", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-parser": { + "version": "2.0.4", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/smartwrap/node_modules/yargs": { - "version": "15.4.1", + "node_modules/svgo": { + "version": "2.8.0", "dev": true, "license": "MIT", "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" }, "engines": { - "node": ">=8" + "node": ">=10.13.0" } }, - "node_modules/snake-case": { - "version": "3.0.4", + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "dev": true, "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" + "engines": { + "node": ">= 10" } }, - "node_modules/snakecase-keys": { - "version": "5.4.4", + "node_modules/swap-case": { + "version": "2.0.2", + "dev": true, "license": "MIT", "dependencies": { - "map-obj": "^4.1.0", - "snake-case": "^3.0.4", - "type-fest": "^2.5.2" - }, - "engines": { - "node": ">=12" + "tslib": "^2.0.3" } }, - "node_modules/snakecase-keys/node_modules/type-fest": { - "version": "2.19.0", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=12.20" + "node_modules/swr": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.2.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/snyk": { - "version": "1.1234.0", + "node_modules/symbol-tree": { + "version": "3.2.4", "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", + "license": "MIT" + }, + "node_modules/synckit": { + "version": "0.8.5", + "license": "MIT", "dependencies": { - "@sentry/node": "^7.36.0", - "global-agent": "^3.0.0" - }, - "bin": { - "snyk": "bin/snyk" + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" }, "engines": { - "node": ">=12" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" } }, - "node_modules/socket.io": { - "version": "4.7.1", + "node_modules/tabbable": { + "version": "6.1.2", + "license": "MIT" + }, + "node_modules/table": { + "version": "6.8.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "cors": "~2.8.5", - "debug": "~4.3.2", - "engine.io": "~6.5.0", - "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.4" + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=10.0.0" } }, - "node_modules/socket.io-adapter": { - "version": "2.5.2", + "node_modules/table/node_modules/ajv": { + "version": "8.12.0", "dev": true, "license": "MIT", "dependencies": { - "ws": "~8.11.0" - } - }, - "node_modules/socket.io-adapter/node_modules/ws": { - "version": "8.11.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/socket.io-client": { - "version": "4.7.1", + "node_modules/table/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.5.1", - "socket.io-parser": "~4.2.4" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/socket.io-parser": { - "version": "4.2.4", + "node_modules/table/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10.0.0" + "node": ">=7.0.0" } }, - "node_modules/sockjs": { - "version": "0.3.24", + "node_modules/table/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "license": "MIT", - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } + "license": "MIT" }, - "node_modules/sonic-boom": { - "version": "3.3.0", + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, "license": "MIT", - "dependencies": { - "atomic-sleep": "^1.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/sort-keys": { - "version": "2.0.0", + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/table/node_modules/slice-ansi": { + "version": "4.0.0", "dev": true, "license": "MIT", "dependencies": { - "is-plain-obj": "^1.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/sort-object-keys": { - "version": "1.1.3", - "license": "MIT" + "node_modules/tapable": { + "version": "2.2.1", + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/sort-package-json": { - "version": "2.6.0", + "node_modules/tar-fs": { + "version": "3.0.4", + "dev": true, "license": "MIT", "dependencies": { - "detect-indent": "^7.0.1", - "detect-newline": "^4.0.0", - "get-stdin": "^9.0.0", - "git-hooks-list": "^3.0.0", - "globby": "^13.1.2", - "is-plain-obj": "^4.1.0", - "sort-object-keys": "^1.1.3" - }, - "bin": { - "sort-package-json": "cli.js" + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" } }, - "node_modules/sort-package-json/node_modules/detect-indent": { - "version": "7.0.1", + "node_modules/tar-stream": { + "version": "3.1.6", + "dev": true, "license": "MIT", - "engines": { - "node": ">=12.20" + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, - "node_modules/sort-package-json/node_modules/detect-newline": { - "version": "4.0.1", + "node_modules/term-size": { + "version": "2.2.1", + "dev": true, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sort-package-json/node_modules/is-plain-obj": { - "version": "4.1.0", - "license": "MIT", + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/source-list-map": { - "version": "2.0.1", + "node_modules/terser": { + "version": "5.17.7", "dev": true, - "license": "MIT" - }, - "node_modules/source-map": { - "version": "0.5.7", - "license": "BSD-3-Clause", + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/source-map-js": { - "version": "1.0.2", + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "devOptional": true, + "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true, + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } } }, - "node_modules/spawndamnit": { - "version": "2.0.0", + "node_modules/terser-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "cross-spawn": "^5.1.0", - "signal-exit": "^3.0.2" + "engines": { + "node": ">=8" } }, - "node_modules/spawndamnit/node_modules/cross-spawn": { - "version": "5.1.0", + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", "dev": true, "license": "MIT", "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" } }, - "node_modules/spawndamnit/node_modules/lru-cache": { - "version": "4.1.5", + "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { + "version": "6.0.1", "dev": true, - "license": "ISC", + "license": "BSD-3-Clause", "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "randombytes": "^2.1.0" } }, - "node_modules/spawndamnit/node_modules/shebang-command": { - "version": "1.2.0", + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", "dev": true, "license": "MIT", "dependencies": { - "shebang-regex": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/spawndamnit/node_modules/shebang-regex": { - "version": "1.0.0", + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/spawndamnit/node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "license": "ISC" - }, - "node_modules/spawndamnit/node_modules/which": { - "version": "1.3.1", + "node_modules/terser/node_modules/source-map-support": { + "version": "0.5.21", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/spawndamnit/node_modules/yallist": { - "version": "2.1.2", - "dev": true, - "license": "ISC" - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "license": "Apache-2.0", + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "devOptional": true, "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "license": "MIT", + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "devOptional": true, "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.13", - "license": "CC0-1.0" - }, - "node_modules/spdy": { - "version": "4.0.2", + "node_modules/text-extensions": { + "version": "1.9.0", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10" } }, - "node_modules/spdy-transport": { - "version": "3.0.0", + "node_modules/text-table": { + "version": "0.2.0", + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" + "any-promise": "^1.0.0" } }, - "node_modules/spdy-transport/node_modules/readable-stream": { - "version": "3.6.2", + "node_modules/thenify-all": { + "version": "1.6.0", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "thenify": ">= 3.1.0 < 4" }, "engines": { - "node": ">= 6" + "node": ">=0.8" } }, - "node_modules/specificity": { - "version": "0.4.1", - "dev": true, + "node_modules/thread-stream": { + "version": "2.3.0", "license": "MIT", - "bin": { - "specificity": "bin/specificity" + "dependencies": { + "real-require": "^0.2.0" } }, - "node_modules/split-on-first": { - "version": "1.1.0", + "node_modules/throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "peer": true }, - "node_modules/split2": { - "version": "3.2.2", + "node_modules/through": { + "version": "2.3.8", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/through2": { + "version": "4.0.2", + "dev": true, + "license": "MIT", "dependencies": { - "readable-stream": "^3.0.0" + "readable-stream": "3" } }, - "node_modules/split2/node_modules/readable-stream": { + "node_modules/through2/node_modules/readable-stream": { "version": "3.6.2", "dev": true, "license": "MIT", @@ -29376,572 +31065,680 @@ "node": ">= 6" } }, - "node_modules/sponge-case": { - "version": "1.0.1", + "node_modules/thunky": { + "version": "1.1.0", "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "devOptional": true, - "license": "BSD-3-Clause" + "license": "MIT" }, - "node_modules/sshpk": { - "version": "1.17.0", + "node_modules/time-span": { + "version": "4.0.0", "dev": true, "license": "MIT", "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" + "convert-hrtime": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ssri": { - "version": "5.3.0", + "node_modules/timers-ext": { + "version": "0.1.7", "dev": true, "license": "ISC", "dependencies": { - "safe-buffer": "^5.1.1" + "es5-ext": "~0.10.46", + "next-tick": "1" } }, - "node_modules/stable": { - "version": "0.1.8", + "node_modules/tiny-glob": { + "version": "0.2.9", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } }, - "node_modules/stack-trace": { - "version": "0.0.10", + "node_modules/tiny-lru": { + "version": "10.4.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/title-case": { + "version": "3.0.3", "dev": true, "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/titleize": { + "version": "3.0.0", + "license": "MIT", "engines": { - "node": "*" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stack-utils": { - "version": "2.0.6", - "devOptional": true, + "node_modules/tmp": { + "version": "0.0.33", + "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^2.0.0" + "os-tmpdir": "~1.0.2" }, "engines": { - "node": ">=10" + "node": ">=0.6.0" } }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "devOptional": true + }, + "node_modules/to-fast-properties": { "version": "2.0.0", - "devOptional": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/stackframe": { - "version": "1.3.4", - "dev": true, + "node_modules/to-no-case": { + "version": "1.0.2", "license": "MIT" }, - "node_modules/statuses": { - "version": "1.5.0", - "dev": true, + "node_modules/to-regex-range": { + "version": "5.0.1", "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=8.0" } }, - "node_modules/steno": { - "version": "0.4.4", - "dev": true, + "node_modules/to-snake-case": { + "version": "1.0.0", "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.3" + "to-space-case": "^1.0.0" } }, - "node_modules/stop-iteration-iterator": { + "node_modules/to-space-case": { "version": "1.0.0", "license": "MIT", "dependencies": { - "internal-slot": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" + "to-no-case": "^1.0.0" } }, - "node_modules/stream-buffers": { - "version": "2.2.0", + "node_modules/toggle-selection": { + "version": "1.0.6", + "license": "MIT" + }, + "node_modules/toidentifier": { + "version": "1.0.1", "dev": true, - "license": "Unlicense", + "license": "MIT", "engines": { - "node": ">= 0.10.0" + "node": ">=0.6" } }, - "node_modules/stream-combiner": { - "version": "0.0.4", + "node_modules/token-types": { + "version": "4.2.1", "dev": true, "license": "MIT", "dependencies": { - "duplexer": "~0.1.1" + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/stream-shift": { - "version": "1.0.1", + "node_modules/toposort": { + "version": "2.0.2", "dev": true, "license": "MIT" }, - "node_modules/stream-transform": { - "version": "2.1.3", + "node_modules/totalist": { + "version": "1.1.0", "dev": true, "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "mixme": "^0.5.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" } }, - "node_modules/streamsearch": { - "version": "1.1.0", + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">= 4.0.0" } }, - "node_modules/streamx": { - "version": "2.15.1", + "node_modules/tr46": { + "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { - "fast-fifo": "^1.1.0", - "queue-tick": "^1.0.1" + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" } }, - "node_modules/strict-uri-encode": { - "version": "2.0.0", + "node_modules/tree-kill": { + "version": "1.2.2", "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "bin": { + "tree-kill": "cli.js" } }, - "node_modules/string_decoder": { - "version": "1.1.1", + "node_modules/trim-newlines": { + "version": "3.0.1", "dev": true, "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" + "engines": { + "node": ">=8" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", + "node_modules/true-case-path": { + "version": "2.2.1", "dev": true, - "license": "MIT" + "license": "Apache-2.0" }, - "node_modules/string-argv": { - "version": "0.3.2", - "dev": true, + "node_modules/ts-api-utils": { + "version": "1.0.3", "license": "MIT", "engines": { - "node": ">=0.6.19" + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" } }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "devOptional": true, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/ts-jest": { + "version": "29.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } } }, - "node_modules/string-natural-compare": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/string-similarity": { - "version": "1.2.2", + "node_modules/ts-jest/node_modules/yargs-parser": { + "version": "21.1.1", "dev": true, "license": "ISC", - "dependencies": { - "lodash.every": "^4.6.0", - "lodash.flattendeep": "^4.4.0", - "lodash.foreach": "^4.5.0", - "lodash.map": "^4.6.0", - "lodash.maxby": "^4.6.0" + "engines": { + "node": ">=12" } }, - "node_modules/string-width": { - "version": "4.2.3", - "devOptional": true, + "node_modules/ts-loader": { + "version": "9.4.3", + "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" }, "engines": { - "node": ">=8" + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } }, - "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "node_modules/ts-loader/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "devOptional": true, + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.4", + "dev": true, "license": "MIT" }, - "node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "devOptional": true, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.padend": { - "version": "3.1.4", + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/string.prototype.trim": { - "version": "1.2.7", + "node_modules/ts-node": { + "version": "10.9.1", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" }, - "engines": { - "node": ">= 0.4" + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", + "node_modules/tsconfig-paths": { + "version": "3.14.2", "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "dev": true, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "minimist": "^1.2.0" }, - "engines": { - "node": ">=8" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "devOptional": true, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "dev": true, + "node_modules/tslib": { + "version": "2.6.2", + "license": "0BSD" + }, + "node_modules/tsscmp": { + "version": "1.0.6", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.6.x" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", + "node_modules/tsup": { + "version": "7.2.0", + "dev": true, "license": "MIT", + "dependencies": { + "bundle-require": "^4.0.0", + "cac": "^6.7.12", + "chokidar": "^3.5.1", + "debug": "^4.3.1", + "esbuild": "^0.18.2", + "execa": "^5.0.0", + "globby": "^11.0.3", + "joycon": "^3.0.1", + "postcss-load-config": "^4.0.1", + "resolve-from": "^5.0.0", + "rollup": "^3.2.5", + "source-map": "0.8.0-beta.0", + "sucrase": "^3.20.3", + "tree-kill": "^1.2.2" + }, + "bin": { + "tsup": "dist/cli-default.js", + "tsup-node": "dist/cli-node.js" + }, "engines": { - "node": ">=12" + "node": ">=16.14" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@swc/core": "^1", + "postcss": "^8.4.12", + "typescript": ">=4.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "postcss": { + "optional": true + }, + "typescript": { + "optional": true + } } }, - "node_modules/strip-indent": { - "version": "3.0.0", + "node_modules/tsup/node_modules/bundle-require": { + "version": "4.0.1", + "dev": true, "license": "MIT", "dependencies": { - "min-indent": "^1.0.0" + "load-tsconfig": "^0.2.3" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.17" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", + "node_modules/tsup/node_modules/esbuild": { + "version": "0.18.20", + "dev": true, + "hasInstallScript": true, "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": ">=8" + "node": ">=12" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" } }, - "node_modules/strtok3": { - "version": "6.3.0", + "node_modules/tsup/node_modules/globby": { + "version": "11.1.0", "dev": true, "license": "MIT", "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.1.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { "node": ">=10" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/style-loader": { - "version": "2.0.0", + "node_modules/tsup/node_modules/source-map": { + "version": "0.8.0-beta.0", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" + "whatwg-url": "^7.0.0" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "node": ">= 8" } }, - "node_modules/style-to-object": { - "version": "0.4.2", + "node_modules/tsup/node_modules/tr46": { + "version": "1.0.1", "dev": true, "license": "MIT", "dependencies": { - "inline-style-parser": "0.1.1" + "punycode": "^2.1.0" } }, - "node_modules/styled-jsx": { - "version": "5.1.1", + "node_modules/tsup/node_modules/webidl-conversions": { + "version": "4.0.2", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/tsup/node_modules/whatwg-url": { + "version": "7.1.0", "dev": true, "license": "MIT", "dependencies": { - "client-only": "0.0.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } }, - "node_modules/stylehacks": { - "version": "5.1.1", - "dev": true, + "node_modules/tsutils": { + "version": "3.21.0", "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" + "tslib": "^1.8.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">= 6" }, "peerDependencies": { - "postcss": "^8.2.15" + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/stylis": { - "version": "4.2.0", - "license": "MIT" + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" }, - "node_modules/sucrase": { - "version": "3.32.0", + "node_modules/tty-table": { + "version": "4.2.1", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "7.1.6", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" + "chalk": "^4.1.2", + "csv": "^5.5.3", + "kleur": "^4.1.5", + "smartwrap": "^2.0.2", + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.1", + "yargs": "^17.7.1" }, "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" + "tty-table": "adapters/terminal-adapter.js" }, "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/sucrase/node_modules/commander": { - "version": "4.1.1", + "node_modules/tty-table/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/sucrase/node_modules/glob": { - "version": "7.1.6", - "dev": true, - "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/sudo-prompt": { - "version": "8.2.5", + "node_modules/tty-table/node_modules/chalk": { + "version": "4.1.2", "dev": true, - "license": "MIT" - }, - "node_modules/supports-color": { - "version": "5.5.0", "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", + "node_modules/tty-table/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { + "node_modules/tty-table/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/tty-table/node_modules/has-flag": { "version": "4.0.0", "dev": true, "license": "MIT", @@ -29949,7 +31746,7 @@ "node": ">=8" } }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { + "node_modules/tty-table/node_modules/supports-color": { "version": "7.2.0", "dev": true, "license": "MIT", @@ -29960,3386 +31757,3816 @@ "node": ">=8" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "license": "MIT", + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } }, - "node_modules/svg-parser": { - "version": "2.0.4", - "dev": true, - "license": "MIT" - }, - "node_modules/svgo": { - "version": "2.8.0", + "node_modules/tunnel-agent": { + "version": "0.6.0", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" + "safe-buffer": "^5.0.1" }, "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/svgo/node_modules/commander": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" + "node": "*" } }, - "node_modules/swap-case": { - "version": "2.0.2", + "node_modules/turbo": { + "version": "1.10.16", + "resolved": "https://registry.npmjs.org/turbo/-/turbo-1.10.16.tgz", + "integrity": "sha512-2CEaK4FIuSZiP83iFa9GqMTQhroW2QryckVqUydmg4tx78baftTOS0O+oDAhvo9r9Nit4xUEtC1RAHoqs6ZEtg==", "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/swr": { - "version": "2.2.0", - "license": "MIT", - "dependencies": { - "use-sync-external-store": "^1.2.0" + "bin": { + "turbo": "bin/turbo" }, - "peerDependencies": { - "react": "^16.11.0 || ^17.0.0 || ^18.0.0" + "optionalDependencies": { + "turbo-darwin-64": "1.10.16", + "turbo-darwin-arm64": "1.10.16", + "turbo-linux-64": "1.10.16", + "turbo-linux-arm64": "1.10.16", + "turbo-windows-64": "1.10.16", + "turbo-windows-arm64": "1.10.16" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", + "node_modules/turbo-darwin-64": { + "version": "1.10.16", + "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-1.10.16.tgz", + "integrity": "sha512-+Jk91FNcp9e9NCLYlvDDlp2HwEDp14F9N42IoW3dmHI5ZkGSXzalbhVcrx3DOox3QfiNUHxzWg4d7CnVNCuuMg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" - }, - "node_modules/synckit": { - "version": "0.8.5", - "license": "MIT", - "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/tabbable": { - "version": "6.1.2", - "license": "MIT" + "node_modules/turbo-darwin-arm64": { + "version": "1.10.16", + "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.10.16.tgz", + "integrity": "sha512-jqGpFZipIivkRp/i+jnL8npX0VssE6IAVNKtu573LXtssZdV/S+fRGYA16tI46xJGxSAivrZ/IcgZrV6Jk80bw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/table": { - "version": "6.8.1", + "node_modules/turbo-linux-64": { + "version": "1.10.16", + "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-1.10.16.tgz", + "integrity": "sha512-PpqEZHwLoizQ6sTUvmImcRmACyRk9EWLXGlqceogPZsJ1jTRK3sfcF9fC2W56zkSIzuLEP07k5kl+ZxJd8JMcg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/table/node_modules/ajv": { - "version": "8.12.0", + "node_modules/turbo-linux-arm64": { + "version": "1.10.16", + "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-1.10.16.tgz", + "integrity": "sha512-TMjFYz8to1QE0fKVXCIvG/4giyfnmqcQIwjdNfJvKjBxn22PpbjeuFuQ5kNXshUTRaTJihFbuuCcb5OYFNx4uw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/table/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/turbo-windows-64": { + "version": "1.10.16", + "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-1.10.16.tgz", + "integrity": "sha512-+jsf68krs0N66FfC4/zZvioUap/Tq3sPFumnMV+EBo8jFdqs4yehd6+MxIwYTjSQLIcpH8KoNMB0gQYhJRLZzw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/table/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/turbo-windows-arm64": { + "version": "1.10.16", + "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-1.10.16.tgz", + "integrity": "sha512-sKm3hcMM1bl0B3PLG4ifidicOGfoJmOEacM5JtgBkYM48ncMHjkHfFY7HrJHZHUnXM4l05RQTpLFoOl/uIo2HQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/table/node_modules/color-name": { - "version": "1.1.4", + "node_modules/tweetnacl": { + "version": "0.14.5", "dev": true, - "license": "MIT" + "license": "Unlicense" }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "node_modules/typanion": { + "version": "3.14.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" - } + "workspaces": [ + "website" + ] }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", + "node_modules/type": { + "version": "1.2.0", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/table/node_modules/slice-ansi": { - "version": "4.0.0", - "dev": true, + "node_modules/type-check": { + "version": "0.4.0", "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "prelude-ls": "^1.2.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">= 0.8.0" } }, - "node_modules/tapable": { - "version": "2.2.1", + "node_modules/type-detect": { + "version": "4.0.8", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=6" - } - }, - "node_modules/tar-fs": { - "version": "3.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - } - }, - "node_modules/tar-stream": { - "version": "3.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" + "node": ">=4" } }, - "node_modules/term-size": { - "version": "2.2.1", - "dev": true, - "license": "MIT", + "node_modules/type-fest": { + "version": "0.20.2", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/terser": { - "version": "5.17.7", + "node_modules/type-is": { + "version": "1.6.18", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, "engines": { - "node": ">=10" + "node": ">= 0.6" } }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.9", + "node_modules/type-of": { + "version": "2.0.1", "dev": true, + "license": "MIT" + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } + "node": ">= 0.4" } }, - "node_modules/terser-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/terser-webpack-plugin/node_modules/jest-worker": { - "version": "27.5.1", - "dev": true, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", "license": "MIT", "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" }, "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { - "version": "6.0.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/terser-webpack-plugin/node_modules/supports-color": { - "version": "8.1.1", - "dev": true, + "node_modules/typed-array-length": { + "version": "1.0.4", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", + "node_modules/typedarray": { + "version": "0.0.6", "dev": true, "license": "MIT" }, - "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, "engines": { - "node": ">=0.10.0" + "node": ">=14.17" } }, - "node_modules/terser/node_modules/source-map-support": { - "version": "0.5.21", + "node_modules/ua-parser-js": { + "version": "1.0.35", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "engines": { + "node": "*" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "devOptional": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "node_modules/uglify-js": { + "version": "3.17.4", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" }, "engines": { - "node": ">=8" + "node": ">=0.8.0" } }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "devOptional": true, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/text-extensions": { - "version": "1.9.0", + "node_modules/unc-path-regex": { + "version": "0.1.2", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10" + "node": ">=0.10.0" } }, - "node_modules/text-table": { - "version": "0.2.0", - "license": "MIT" - }, - "node_modules/thenify": { - "version": "3.3.1", + "node_modules/undici": { + "version": "5.20.0", "dev": true, "license": "MIT", "dependencies": { - "any-promise": "^1.0.0" + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=12.18" } }, - "node_modules/thenify-all": { - "version": "1.6.0", + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "devOptional": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", "dev": true, "license": "MIT", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, "engines": { - "node": ">=0.8" + "node": ">=4" } }, - "node_modules/thread-stream": { - "version": "2.3.0", + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "dev": true, "license": "MIT", "dependencies": { - "real-require": "^0.2.0" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/through": { - "version": "2.3.8", + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/through2": { - "version": "4.0.2", + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", "dev": true, "license": "MIT", - "dependencies": { - "readable-stream": "3" + "engines": { + "node": ">=4" } }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.2", + "node_modules/union": { + "version": "0.5.0", "dev": true, - "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "qs": "^6.4.0" }, "engines": { - "node": ">= 6" + "node": ">= 0.8.0" } }, - "node_modules/thunky": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/time-span": { - "version": "4.0.0", + "node_modules/unique-string": { + "version": "2.0.0", "dev": true, "license": "MIT", "dependencies": { - "convert-hrtime": "^3.0.0" + "crypto-random-string": "^2.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/timers-ext": { - "version": "0.1.7", + "node_modules/universal-user-agent": { + "version": "6.0.0", "dev": true, - "license": "ISC", - "dependencies": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } + "license": "ISC" }, - "node_modules/tiny-glob": { - "version": "0.2.9", + "node_modules/universalify": { + "version": "0.1.2", "dev": true, "license": "MIT", - "dependencies": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } - }, - "node_modules/tiny-lru": { - "version": "10.4.1", - "license": "BSD-3-Clause", "engines": { - "node": ">=12" + "node": ">= 4.0.0" } }, - "node_modules/title-case": { - "version": "3.0.3", + "node_modules/unix-crypt-td-js": { + "version": "1.1.4", "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } + "license": "BSD-3-Clause" }, - "node_modules/titleize": { - "version": "3.0.0", + "node_modules/unixify": { + "version": "1.0.0", + "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "normalize-path": "^2.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/tmp": { - "version": "0.0.33", + "node_modules/unixify/node_modules/normalize-path": { + "version": "2.1.1", "dev": true, "license": "MIT", "dependencies": { - "os-tmpdir": "~1.0.2" + "remove-trailing-separator": "^1.0.1" }, "engines": { - "node": ">=0.6.0" + "node": ">=0.10.0" } }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "devOptional": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", + "node_modules/unpipe": { + "version": "1.0.0", + "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.8" } }, - "node_modules/to-no-case": { - "version": "1.0.2", - "license": "MIT" + "node_modules/untildify": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/to-regex-range": { - "version": "5.0.1", + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "escalade": "^3.1.1", + "picocolors": "^1.0.0" }, - "engines": { - "node": ">=8.0" + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "node_modules/to-snake-case": { - "version": "1.0.0", + "node_modules/upper-case": { + "version": "2.0.2", + "dev": true, "license": "MIT", "dependencies": { - "to-space-case": "^1.0.0" + "tslib": "^2.0.3" } }, - "node_modules/to-space-case": { - "version": "1.0.0", + "node_modules/upper-case-first": { + "version": "2.0.2", + "dev": true, "license": "MIT", "dependencies": { - "to-no-case": "^1.0.0" + "tslib": "^2.0.3" } }, - "node_modules/toggle-selection": { - "version": "1.0.6", - "license": "MIT" + "node_modules/uri-js": { + "version": "4.4.1", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } }, - "node_modules/toidentifier": { - "version": "1.0.1", + "node_modules/url": { + "version": "0.11.1", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.6" + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.0" } }, - "node_modules/token-types": { - "version": "4.2.1", + "node_modules/url-join": { + "version": "4.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/url-loader": { + "version": "4.1.1", "dev": true, "license": "MIT", "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">= 10.13.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } } }, - "node_modules/toposort": { - "version": "2.0.2", + "node_modules/url-parse": { + "version": "1.5.10", + "dev": true, + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", "dev": true, "license": "MIT" }, - "node_modules/totalist": { - "version": "1.1.0", + "node_modules/urlpattern-polyfill": { + "version": "4.0.3", "dev": true, + "license": "MIT" + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", "license": "MIT", - "engines": { - "node": ">=6" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/tough-cookie": { - "version": "4.1.3", + "node_modules/util-deprecate": { + "version": "1.0.2", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } + "license": "MIT" }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", + "node_modules/utila": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/utility-types": { + "version": "3.10.0", "dev": true, "license": "MIT", "engines": { - "node": ">= 4.0.0" + "node": ">= 4" } }, - "node_modules/tr46": { - "version": "3.0.0", + "node_modules/utils-merge": { + "version": "1.0.1", "dev": true, "license": "MIT", - "dependencies": { - "punycode": "^2.1.1" - }, "engines": { - "node": ">=12" + "node": ">= 0.4.0" } }, - "node_modules/tree-kill": { - "version": "1.2.2", + "node_modules/uuid": { + "version": "8.3.2", "dev": true, "license": "MIT", "bin": { - "tree-kill": "cli.js" + "uuid": "dist/bin/uuid" } }, - "node_modules/trim-newlines": { - "version": "3.0.1", + "node_modules/v8-compile-cache": { + "version": "2.4.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/true-case-path": { - "version": "2.2.1", + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", "dev": true, - "license": "Apache-2.0" + "license": "MIT" }, - "node_modules/ts-api-utils": { - "version": "1.0.3", - "license": "MIT", - "engines": { - "node": ">=16.13.0" + "node_modules/v8-to-istanbul": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", + "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", + "devOptional": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" }, - "peerDependencies": { - "typescript": ">=4.2.0" + "engines": { + "node": ">=10.12.0" } }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "dev": true, - "license": "Apache-2.0" + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "devOptional": true }, - "node_modules/ts-jest": { - "version": "29.1.0", - "dev": true, - "license": "MIT", + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "license": "Apache-2.0", "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "^21.0.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "21.1.1", + "node_modules/validate-npm-package-name": { + "version": "5.0.0", "dev": true, "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/ts-loader": { - "version": "9.4.3", - "dev": true, - "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" + "builtins": "^5.0.0" }, "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/ts-loader/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/validator": { + "version": "13.11.0", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.10" } }, - "node_modules/ts-loader/node_modules/chalk": { - "version": "4.1.2", + "node_modules/value-or-promise": { + "version": "1.0.12", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=12" } }, - "node_modules/ts-loader/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/vary": { + "version": "1.1.2", "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.8" } }, - "node_modules/ts-loader/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/ts-loader/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/verdaccio": { + "version": "5.26.3", "dev": true, "license": "MIT", + "dependencies": { + "@verdaccio/config": "7.0.0-next.2", + "@verdaccio/core": "7.0.0-next.2", + "@verdaccio/local-storage": "10.3.3", + "@verdaccio/logger-7": "7.0.0-next.2", + "@verdaccio/middleware": "7.0.0-next.2", + "@verdaccio/search": "7.0.0-next.1", + "@verdaccio/signature": "7.0.0-next.0", + "@verdaccio/streams": "10.2.1", + "@verdaccio/tarball": "12.0.0-next.2", + "@verdaccio/ui-theme": "7.0.0-next.2", + "@verdaccio/url": "12.0.0-next.2", + "@verdaccio/utils": "7.0.0-next.2", + "async": "3.2.4", + "clipanion": "3.2.1", + "compression": "1.7.4", + "cookies": "0.8.0", + "cors": "2.8.5", + "debug": "^4.3.4", + "envinfo": "7.10.0", + "express": "4.18.2", + "express-rate-limit": "5.5.1", + "fast-safe-stringify": "2.1.1", + "handlebars": "4.7.8", + "js-yaml": "4.1.0", + "JSONStream": "1.3.5", + "jsonwebtoken": "9.0.2", + "kleur": "4.1.5", + "lodash": "4.17.21", + "lru-cache": "7.18.3", + "mime": "3.0.0", + "mkdirp": "1.0.4", + "mv": "2.1.1", + "pkginfo": "0.4.1", + "request": "2.88.2", + "semver": "7.5.4", + "validator": "13.11.0", + "verdaccio-audit": "12.0.0-next.2", + "verdaccio-htpasswd": "12.0.0-next.2" + }, + "bin": { + "verdaccio": "bin/verdaccio" + }, "engines": { - "node": ">=8" + "node": ">=12.18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" } }, - "node_modules/ts-loader/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/verdaccio-audit": { + "version": "12.0.0-next.2", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@verdaccio/config": "7.0.0-next.2", + "@verdaccio/core": "7.0.0-next.2", + "express": "4.18.2", + "https-proxy-agent": "5.0.1", + "node-fetch": "cjs" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" } }, - "node_modules/ts-node": { - "version": "10.9.1", + "node_modules/verdaccio-audit/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, - "license": "MIT", "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" + "whatwg-url": "^5.0.0" }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" + "engines": { + "node": "4.x || >=6.0.0" }, "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" + "encoding": "^0.1.0" }, "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { + "encoding": { "optional": true } } }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", + "node_modules/verdaccio-audit/node_modules/tr46": { + "version": "0.0.3", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } + "license": "MIT" }, - "node_modules/tsconfig-paths": { - "version": "3.14.2", - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } + "node_modules/verdaccio-audit/node_modules/webidl-conversions": { + "version": "3.0.1", + "dev": true, + "license": "BSD-2-Clause" }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", + "node_modules/verdaccio-audit/node_modules/whatwg-url": { + "version": "5.0.0", + "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "node_modules/tsscmp": { - "version": "1.0.6", - "license": "MIT", - "engines": { - "node": ">=0.6.x" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "node_modules/tsup": { - "version": "7.2.0", + "node_modules/verdaccio-htpasswd": { + "version": "12.0.0-next.2", "dev": true, "license": "MIT", "dependencies": { - "bundle-require": "^4.0.0", - "cac": "^6.7.12", - "chokidar": "^3.5.1", - "debug": "^4.3.1", - "esbuild": "^0.18.2", - "execa": "^5.0.0", - "globby": "^11.0.3", - "joycon": "^3.0.1", - "postcss-load-config": "^4.0.1", - "resolve-from": "^5.0.0", - "rollup": "^3.2.5", - "source-map": "0.8.0-beta.0", - "sucrase": "^3.20.3", - "tree-kill": "^1.2.2" - }, - "bin": { - "tsup": "dist/cli-default.js", - "tsup-node": "dist/cli-node.js" + "@verdaccio/core": "7.0.0-next.2", + "@verdaccio/file-locking": "12.0.0-next.0", + "apache-md5": "1.1.8", + "bcryptjs": "2.4.3", + "core-js": "3.30.2", + "debug": "4.3.4", + "http-errors": "2.0.0", + "unix-crypt-td-js": "1.1.4" }, "engines": { - "node": ">=16.14" - }, - "peerDependencies": { - "@swc/core": "^1", - "postcss": "^8.4.12", - "typescript": ">=4.1.0" + "node": ">=14", + "npm": ">=6" }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "postcss": { - "optional": true - }, - "typescript": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" } }, - "node_modules/tsup/node_modules/bundle-require": { - "version": "4.0.1", + "node_modules/verdaccio-htpasswd/node_modules/@verdaccio/file-locking": { + "version": "12.0.0-next.0", "dev": true, "license": "MIT", "dependencies": { - "load-tsconfig": "^0.2.3" + "lockfile": "1.0.4" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=12" }, - "peerDependencies": { - "esbuild": ">=0.17" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" } }, - "node_modules/tsup/node_modules/esbuild": { - "version": "0.18.20", + "node_modules/verdaccio-htpasswd/node_modules/core-js": { + "version": "3.30.2", "dev": true, "hasInstallScript": true, "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/tsup/node_modules/globby": { - "version": "11.1.0", + "node_modules/verdaccio/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/verdaccio/node_modules/async": { + "version": "3.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/verdaccio/node_modules/js-yaml": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "argparse": "^2.0.1" }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/verdaccio/node_modules/lru-cache": { + "version": "7.18.3", + "dev": true, + "license": "ISC", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/tsup/node_modules/source-map": { - "version": "0.8.0-beta.0", + "node_modules/verdaccio/node_modules/mkdirp": { + "version": "1.0.4", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "whatwg-url": "^7.0.0" + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" }, "engines": { - "node": ">= 8" + "node": ">=10" } }, - "node_modules/tsup/node_modules/tr46": { - "version": "1.0.1", + "node_modules/verror": { + "version": "1.10.0", "dev": true, + "engines": [ + "node >=0.6.0" + ], "license": "MIT", "dependencies": { - "punycode": "^2.1.0" + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" } }, - "node_modules/tsup/node_modules/webidl-conversions": { - "version": "4.0.2", + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", "dev": true, - "license": "BSD-2-Clause" + "license": "MIT" }, - "node_modules/tsup/node_modules/whatwg-url": { - "version": "7.1.0", + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "browser-process-hrtime": "^1.0.0" } }, - "node_modules/tsutils": { - "version": "3.21.0", + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^1.8.1" + "xml-name-validator": "^4.0.0" }, "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "node": ">=14" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "license": "0BSD" - }, - "node_modules/tty-table": { - "version": "4.2.1", - "dev": true, - "license": "MIT", + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "devOptional": true, "dependencies": { - "chalk": "^4.1.2", - "csv": "^5.5.3", - "kleur": "^4.1.5", - "smartwrap": "^2.0.2", - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.1", - "yargs": "^17.7.1" - }, - "bin": { - "tty-table": "adapters/terminal-adapter.js" - }, - "engines": { - "node": ">=8.0.0" + "makeerror": "1.0.12" } }, - "node_modules/tty-table/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/watchpack": { + "version": "2.4.0", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=10.13.0" } }, - "node_modules/tty-table/node_modules/chalk": { - "version": "4.1.2", + "node_modules/wbuf": { + "version": "1.7.3", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "minimalistic-assert": "^1.0.0" } }, - "node_modules/tty-table/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/wcwidth": { + "version": "1.0.1", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "defaults": "^1.0.3" } }, - "node_modules/tty-table/node_modules/color-name": { - "version": "1.1.4", + "node_modules/weak-lru-cache": { + "version": "1.2.2", "dev": true, "license": "MIT" }, - "node_modules/tty-table/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/web-streams-polyfill": { + "version": "3.2.1", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/tty-table/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/webextension-polyfill": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/webextension-polyfill/-/webextension-polyfill-0.10.0.tgz", + "integrity": "sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==" }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "node_modules/webidl-conversions": { + "version": "7.0.0", "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + "node": ">=12" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", + "node_modules/webpack": { + "version": "5.88.2", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "safe-buffer": "^5.0.1" + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" }, - "engines": { - "node": "*" - } - }, - "node_modules/turbo": { - "version": "1.10.16", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-1.10.16.tgz", - "integrity": "sha512-2CEaK4FIuSZiP83iFa9GqMTQhroW2QryckVqUydmg4tx78baftTOS0O+oDAhvo9r9Nit4xUEtC1RAHoqs6ZEtg==", - "dev": true, "bin": { - "turbo": "bin/turbo" + "webpack": "bin/webpack.js" }, - "optionalDependencies": { - "turbo-darwin-64": "1.10.16", - "turbo-darwin-arm64": "1.10.16", - "turbo-linux-64": "1.10.16", - "turbo-linux-arm64": "1.10.16", - "turbo-windows-64": "1.10.16", - "turbo-windows-arm64": "1.10.16" - } - }, - "node_modules/turbo-darwin-64": { - "version": "1.10.16", - "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-1.10.16.tgz", - "integrity": "sha512-+Jk91FNcp9e9NCLYlvDDlp2HwEDp14F9N42IoW3dmHI5ZkGSXzalbhVcrx3DOox3QfiNUHxzWg4d7CnVNCuuMg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/turbo-darwin-arm64": { - "version": "1.10.16", - "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.10.16.tgz", - "integrity": "sha512-jqGpFZipIivkRp/i+jnL8npX0VssE6IAVNKtu573LXtssZdV/S+fRGYA16tI46xJGxSAivrZ/IcgZrV6Jk80bw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/turbo-linux-64": { - "version": "1.10.16", - "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-1.10.16.tgz", - "integrity": "sha512-PpqEZHwLoizQ6sTUvmImcRmACyRk9EWLXGlqceogPZsJ1jTRK3sfcF9fC2W56zkSIzuLEP07k5kl+ZxJd8JMcg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/turbo-linux-arm64": { - "version": "1.10.16", - "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-1.10.16.tgz", - "integrity": "sha512-TMjFYz8to1QE0fKVXCIvG/4giyfnmqcQIwjdNfJvKjBxn22PpbjeuFuQ5kNXshUTRaTJihFbuuCcb5OYFNx4uw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/turbo-windows-64": { - "version": "1.10.16", - "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-1.10.16.tgz", - "integrity": "sha512-+jsf68krs0N66FfC4/zZvioUap/Tq3sPFumnMV+EBo8jFdqs4yehd6+MxIwYTjSQLIcpH8KoNMB0gQYhJRLZzw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } }, - "node_modules/turbo-windows-arm64": { - "version": "1.10.16", - "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-1.10.16.tgz", - "integrity": "sha512-sKm3hcMM1bl0B3PLG4ifidicOGfoJmOEacM5JtgBkYM48ncMHjkHfFY7HrJHZHUnXM4l05RQTpLFoOl/uIo2HQ==", - "cpu": [ - "arm64" - ], + "node_modules/webpack-bundle-analyzer": { + "version": "4.9.0", "dev": true, - "optional": true, - "os": [ - "win32" - ] + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } }, - "node_modules/tweetnacl": { - "version": "0.14.5", + "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, - "license": "Unlicense" + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } }, - "node_modules/typanion": { - "version": "3.14.0", + "node_modules/webpack-bundle-analyzer/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", - "workspaces": [ - "website" - ] + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } }, - "node_modules/type": { - "version": "1.2.0", + "node_modules/webpack-bundle-analyzer/node_modules/color-convert": { + "version": "2.0.1", "dev": true, - "license": "ISC" - }, - "node_modules/type-check": { - "version": "0.4.0", "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.8.0" + "node": ">=7.0.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "devOptional": true, + "node_modules/webpack-bundle-analyzer/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 10" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "license": "(MIT OR CC0-1.0)", + "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/type-is": { - "version": "1.6.18", + "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/type-of": { - "version": "2.0.1", + "node_modules/webpack-bundle-analyzer/node_modules/ws": { + "version": "7.5.9", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } }, - "node_modules/typed-array-buffer": { - "version": "1.0.0", + "node_modules/webpack-cli": { + "version": "5.1.3", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">= 0.4" + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } } }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "colorette": "^1.2.2", + "mem": "^8.1.1", + "memfs": "^3.2.2", + "mime-types": "^2.1.30", + "range-parser": "^1.2.1", + "schema-utils": "^3.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">= v10.23.3" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", + "node_modules/webpack-dev-middleware/node_modules/colorette": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/webpack-dev-server": { + "version": "4.15.0", + "dev": true, "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">= 0.4" + "node": ">= 12.13.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } } }, - "node_modules/typed-array-length": { - "version": "1.0.4", + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.12.0", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", "dev": true, "license": "MIT", "dependencies": { - "is-typedarray": "^1.0.0" + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/typescript": { - "version": "5.2.2", - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "node_modules/webpack-dev-server/node_modules/default-gateway": { + "version": "6.0.3", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^5.0.0" }, "engines": { - "node": ">=14.17" + "node": ">= 10" } }, - "node_modules/ua-parser-js": { - "version": "1.0.35", + "node_modules/webpack-dev-server/node_modules/glob": { + "version": "7.2.3", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "license": "MIT", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/uglify-js": { - "version": "3.17.4", + "node_modules/webpack-dev-server/node_modules/ipaddr.js": { + "version": "2.1.0", "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">= 10" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "license": "MIT", + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/webpack-dev-server/node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/unc-path-regex": { - "version": "0.1.2", + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.1", "dev": true, "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/undici": { - "version": "5.20.0", + "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { + "version": "5.3.3", "dev": true, "license": "MIT", "dependencies": { - "busboy": "^1.6.0" + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">=12.18" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "devOptional": true - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", + "node_modules/webpack-merge": { + "version": "5.9.0", "dev": true, "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, "engines": { - "node": ">=4" + "node": ">=10.0.0" } }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", + "node_modules/webpack-sources": { + "version": "1.4.3", "dev": true, "license": "MIT", "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" } }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", + "node_modules/webpack-sources/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", + "node_modules/webpack-stats-plugin": { + "version": "1.1.3", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/union": { + "node_modules/webpack-virtual-modules": { "version": "0.5.0", "dev": true, + "license": "MIT" + }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "qs": "^6.4.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8.0.0" } }, - "node_modules/unique-string": { - "version": "2.0.0", + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", "dev": true, - "license": "MIT", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">=8" + "node": ">=4.0" } }, - "node_modules/universal-user-agent": { - "version": "6.0.0", + "node_modules/webpack/node_modules/webpack-sources": { + "version": "3.2.3", "dev": true, - "license": "ISC" + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } }, - "node_modules/universalify": { - "version": "0.1.2", + "node_modules/webpod": { + "version": "0.0.2", "dev": true, "license": "MIT", + "bin": { + "webpod": "dist/index.js" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, "engines": { - "node": ">= 4.0.0" + "node": ">=0.8.0" } }, - "node_modules/unix-crypt-td-js": { - "version": "1.1.4", + "node_modules/websocket-extensions": { + "version": "0.1.4", "dev": true, - "license": "BSD-3-Clause" + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } }, - "node_modules/unixify": { - "version": "1.0.0", + "node_modules/whatwg-encoding": { + "version": "2.0.0", "dev": true, "license": "MIT", "dependencies": { - "normalize-path": "^2.1.1" + "iconv-lite": "0.6.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/unixify/node_modules/normalize-path": { - "version": "2.1.1", + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", "dev": true, "license": "MIT", "dependencies": { - "remove-trailing-separator": "^1.0.1" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/unpipe": { - "version": "1.0.0", + "node_modules/whatwg-mimetype": { + "version": "3.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=12" } }, - "node_modules/untildify": { - "version": "4.0.0", + "node_modules/whatwg-url": { + "version": "11.0.0", + "dev": true, "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.11", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/whatwg-url-without-unicode": { + "version": "8.0.0-3", "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" + "buffer": "^5.4.3", + "punycode": "^2.1.1", + "webidl-conversions": "^5.0.0" }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "engines": { + "node": ">=10" } }, - "node_modules/upper-case": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" + "node_modules/whatwg-url-without-unicode/node_modules/webidl-conversions": { + "version": "5.0.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=8" } }, - "node_modules/upper-case-first": { + "node_modules/which": { "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "license": "BSD-2-Clause", + "license": "ISC", "dependencies": { - "punycode": "^2.1.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/url": { - "version": "0.11.1", - "dev": true, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", "license": "MIT", "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.11.0" + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/url-join": { - "version": "4.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/url-loader": { - "version": "4.1.1", - "dev": true, + "node_modules/which-builtin-type": { + "version": "1.1.3", "license": "MIT", "dependencies": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.27", - "schema-utils": "^3.0.0" + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "file-loader": "*", - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "file-loader": { - "optional": true - } + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "dev": true, + "node_modules/which-collection": { + "version": "1.0.1", "license": "MIT", "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/urlpattern-polyfill": { - "version": "4.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/use-sync-external-store": { - "version": "1.2.0", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/utila": { - "version": "0.4.0", + "node_modules/which-module": { + "version": "2.0.1", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/utility-types": { - "version": "3.10.0", + "node_modules/which-pm": { + "version": "2.0.0", "dev": true, "license": "MIT", + "dependencies": { + "load-yaml-file": "^0.2.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=8.15" } }, - "node_modules/utils-merge": { - "version": "1.0.1", - "dev": true, + "node_modules/which-typed-array": { + "version": "1.1.11", "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/uuid": { - "version": "8.3.2", + "node_modules/wide-align": { + "version": "1.1.5", "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "license": "ISC", + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" } }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", + "node_modules/widest-line": { + "version": "3.1.0", "dev": true, - "license": "MIT" - }, - "node_modules/v8-to-istanbul": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", - "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", - "devOptional": true, + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" + "string-width": "^4.0.0" }, "engines": { - "node": ">=10.12.0" + "node": ">=8" } }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "devOptional": true + "node_modules/wildcard": { + "version": "2.0.1", + "dev": true, + "license": "MIT" }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "node_modules/word-wrap": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/validate-npm-package-name": { - "version": "5.0.0", + "node_modules/wordwrap": { + "version": "1.0.0", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/workerd": { + "version": "1.20230518.0", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "bin": { + "workerd": "bin/workerd" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "@cloudflare/workerd-darwin-64": "1.20230518.0", + "@cloudflare/workerd-darwin-arm64": "1.20230518.0", + "@cloudflare/workerd-linux-64": "1.20230518.0", + "@cloudflare/workerd-linux-arm64": "1.20230518.0", + "@cloudflare/workerd-windows-64": "1.20230518.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "devOptional": true, + "license": "MIT", "dependencies": { - "builtins": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/validator": { - "version": "13.11.0", + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">= 0.10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/value-or-promise": { - "version": "1.0.12", + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/vary": { - "version": "1.1.2", + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">= 0.8" + "node": ">=7.0.0" } }, - "node_modules/verdaccio": { - "version": "5.26.3", + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "devOptional": true, "license": "MIT", "dependencies": { - "@verdaccio/config": "7.0.0-next.2", - "@verdaccio/core": "7.0.0-next.2", - "@verdaccio/local-storage": "10.3.3", - "@verdaccio/logger-7": "7.0.0-next.2", - "@verdaccio/middleware": "7.0.0-next.2", - "@verdaccio/search": "7.0.0-next.1", - "@verdaccio/signature": "7.0.0-next.0", - "@verdaccio/streams": "10.2.1", - "@verdaccio/tarball": "12.0.0-next.2", - "@verdaccio/ui-theme": "7.0.0-next.2", - "@verdaccio/url": "12.0.0-next.2", - "@verdaccio/utils": "7.0.0-next.2", - "async": "3.2.4", - "clipanion": "3.2.1", - "compression": "1.7.4", - "cookies": "0.8.0", - "cors": "2.8.5", - "debug": "^4.3.4", - "envinfo": "7.10.0", - "express": "4.18.2", - "express-rate-limit": "5.5.1", - "fast-safe-stringify": "2.1.1", - "handlebars": "4.7.8", - "js-yaml": "4.1.0", - "JSONStream": "1.3.5", - "jsonwebtoken": "9.0.2", - "kleur": "4.1.5", - "lodash": "4.17.21", - "lru-cache": "7.18.3", - "mime": "3.0.0", - "mkdirp": "1.0.4", - "mv": "2.1.1", - "pkginfo": "0.4.1", - "request": "2.88.2", - "semver": "7.5.4", - "validator": "13.11.0", - "verdaccio-audit": "12.0.0-next.2", - "verdaccio-htpasswd": "12.0.0-next.2" - }, - "bin": { - "verdaccio": "bin/verdaccio" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=12.18" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/verdaccio-audit": { - "version": "12.0.0-next.2", - "dev": true, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "devOptional": true, "license": "MIT", "dependencies": { - "@verdaccio/config": "7.0.0-next.2", - "@verdaccio/core": "7.0.0-next.2", - "express": "4.18.2", - "https-proxy-agent": "5.0.1", - "node-fetch": "cjs" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" + "node": ">=7.0.0" } }, - "node_modules/verdaccio-audit/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "devOptional": true, + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", "dev": true, + "license": "ISC", "dependencies": { - "whatwg-url": "^5.0.0" - }, + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.13.0", + "dev": true, + "license": "MIT", "engines": { - "node": "4.x || >=6.0.0" + "node": ">=10.0.0" }, "peerDependencies": { - "encoding": "^0.1.0" + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { - "encoding": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { "optional": true } } }, - "node_modules/verdaccio-audit/node_modules/tr46": { - "version": "0.0.3", + "node_modules/xcode": { + "version": "3.0.1", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "dependencies": { + "simple-plist": "^1.1.0", + "uuid": "^7.0.3" + }, + "engines": { + "node": ">=10.0.0" + } }, - "node_modules/verdaccio-audit/node_modules/webidl-conversions": { - "version": "3.0.1", + "node_modules/xcode/node_modules/uuid": { + "version": "7.0.3", "dev": true, - "license": "BSD-2-Clause" + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } }, - "node_modules/verdaccio-audit/node_modules/whatwg-url": { - "version": "5.0.0", + "node_modules/xdg-basedir": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/verdaccio-htpasswd": { - "version": "12.0.0-next.2", + "node_modules/xml-name-validator": { + "version": "4.0.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/xml2js": { + "version": "0.6.0", "dev": true, "license": "MIT", "dependencies": { - "@verdaccio/core": "7.0.0-next.2", - "@verdaccio/file-locking": "12.0.0-next.0", - "apache-md5": "1.1.8", - "bcryptjs": "2.4.3", - "core-js": "3.30.2", - "debug": "4.3.4", - "http-errors": "2.0.0", - "unix-crypt-td-js": "1.1.4" + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" }, "engines": { - "node": ">=14", - "npm": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" + "node": ">=4.0.0" } }, - "node_modules/verdaccio-htpasswd/node_modules/@verdaccio/file-locking": { - "version": "12.0.0-next.0", + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", "dev": true, "license": "MIT", - "dependencies": { - "lockfile": "1.0.4" - }, "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" + "node": ">=4.0" } }, - "node_modules/verdaccio-htpasswd/node_modules/core-js": { - "version": "3.30.2", + "node_modules/xmlbuilder": { + "version": "14.0.0", "dev": true, - "hasInstallScript": true, "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "engines": { + "node": ">=8.0" } }, - "node_modules/verdaccio/node_modules/argparse": { - "version": "2.0.1", + "node_modules/xmlchars": { + "version": "2.2.0", "dev": true, - "license": "Python-2.0" + "license": "MIT" }, - "node_modules/verdaccio/node_modules/async": { - "version": "3.2.4", + "node_modules/xmlhttprequest-ssl": { + "version": "2.0.0", "dev": true, - "license": "MIT" + "engines": { + "node": ">=0.4.0" + } }, - "node_modules/verdaccio/node_modules/js-yaml": { - "version": "4.1.0", + "node_modules/xstate": { + "version": "4.38.2", "dev": true, "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/xstate" } }, - "node_modules/verdaccio/node_modules/lru-cache": { - "version": "7.18.3", + "node_modules/xtend": { + "version": "4.0.2", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=0.4" } }, - "node_modules/verdaccio/node_modules/mkdirp": { - "version": "1.0.4", + "node_modules/xxhash-wasm": { + "version": "0.4.2", "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "devOptional": true, + "license": "ISC", "engines": { "node": ">=10" } }, - "node_modules/verror": { - "version": "1.10.0", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } + "node_modules/yallist": { + "version": "3.1.1", + "license": "ISC" }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "dev": true, - "license": "MIT" + "node_modules/yaml": { + "version": "1.10.2", + "license": "ISC", + "engines": { + "node": ">= 6" + } }, - "node_modules/w3c-xmlserializer": { - "version": "4.0.0", + "node_modules/yaml-loader": { + "version": "0.8.0", "dev": true, "license": "MIT", "dependencies": { - "xml-name-validator": "^4.0.0" + "javascript-stringify": "^2.0.1", + "loader-utils": "^2.0.0", + "yaml": "^2.0.0" }, "engines": { - "node": ">=14" + "node": ">= 12.13" } }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "devOptional": true, - "dependencies": { - "makeerror": "1.0.12" + "node_modules/yaml-loader/node_modules/yaml": { + "version": "2.3.2", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 14" } }, - "node_modules/watchpack": { - "version": "2.4.0", - "dev": true, + "node_modules/yargs": { + "version": "17.7.2", + "devOptional": true, "license": "MIT", "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10.13.0" + "node": ">=12" } }, - "node_modules/wbuf": { - "version": "1.7.3", + "node_modules/yargs-parser": { + "version": "18.1.3", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "minimalistic-assert": "^1.0.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/wcwidth": { - "version": "1.0.1", + "node_modules/yargs-parser/node_modules/camelcase": { + "version": "5.3.1", "dev": true, "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" + "engines": { + "node": ">=6" } }, - "node_modules/weak-lru-cache": { - "version": "1.2.2", - "dev": true, - "license": "MIT" + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "devOptional": true, + "license": "ISC", + "engines": { + "node": ">=12" + } }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", + "node_modules/yn": { + "version": "3.1.1", "dev": true, "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/yocto-queue": { + "version": "0.1.0", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack": { - "version": "5.88.2", + "node_modules/yoga-layout-prebuilt": { + "version": "1.10.0", "dev": true, "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" + "@types/yoga-layout": "1.9.2" }, "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "node": ">=8" + } + }, + "node_modules/youch": { + "version": "2.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/stack-trace": "0.0.29", + "cookie": "^0.4.1", + "mustache": "^4.2.0", + "stack-trace": "0.0.10" } }, - "node_modules/webpack-bundle-analyzer": { - "version": "4.9.0", + "node_modules/youch/node_modules/cookie": { + "version": "0.4.2", "dev": true, "license": "MIT", - "dependencies": { - "@discoveryjs/json-ext": "0.5.7", - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", - "commander": "^7.2.0", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "opener": "^1.5.2", - "sirv": "^1.0.7", - "ws": "^7.3.1" - }, - "bin": { - "webpack-bundle-analyzer": "lib/bin/analyzer.js" - }, "engines": { - "node": ">= 10.13.0" + "node": ">= 0.6" } }, - "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/yup": { + "version": "0.32.11", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@babel/runtime": "^7.15.4", + "@types/lodash": "^4.14.175", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "nanoclone": "^0.2.1", + "property-expr": "^2.0.4", + "toposort": "^2.0.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=10" } }, - "node_modules/webpack-bundle-analyzer/node_modules/chalk": { - "version": "4.1.2", + "node_modules/yurnalist": { + "version": "2.1.0", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "chalk": "^2.4.2", + "inquirer": "^7.0.0", + "is-ci": "^2.0.0", + "read": "^1.0.7", + "strip-ansi": "^5.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=4.0.0" } }, - "node_modules/webpack-bundle-analyzer/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/yurnalist/node_modules/ansi-regex": { + "version": "4.1.1", "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=6" } }, - "node_modules/webpack-bundle-analyzer/node_modules/color-name": { - "version": "1.1.4", + "node_modules/yurnalist/node_modules/ci-info": { + "version": "2.0.0", "dev": true, "license": "MIT" }, - "node_modules/webpack-bundle-analyzer/node_modules/commander": { - "version": "7.2.0", + "node_modules/yurnalist/node_modules/is-ci": { + "version": "2.0.0", "dev": true, "license": "MIT", - "engines": { - "node": ">= 10" + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" } }, - "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/yurnalist/node_modules/strip-ansi": { + "version": "5.2.0", "dev": true, "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/zod": { + "version": "3.21.4", "dev": true, "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zx": { + "version": "7.2.3", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "has-flag": "^4.0.0" + "@types/fs-extra": "^11.0.1", + "@types/minimist": "^1.2.2", + "@types/node": "^18.16.3", + "@types/ps-tree": "^1.1.2", + "@types/which": "^3.0.0", + "chalk": "^5.2.0", + "fs-extra": "^11.1.1", + "fx": "*", + "globby": "^13.1.4", + "minimist": "^1.2.8", + "node-fetch": "3.3.1", + "ps-tree": "^1.2.0", + "webpod": "^0", + "which": "^3.0.0", + "yaml": "^2.2.2" + }, + "bin": { + "zx": "build/cli.js" }, "engines": { - "node": ">=8" + "node": ">= 16.0.0" } }, - "node_modules/webpack-bundle-analyzer/node_modules/ws": { - "version": "7.5.9", + "node_modules/zx/node_modules/chalk": { + "version": "5.2.0", "dev": true, "license": "MIT", "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/webpack-cli": { - "version": "5.1.3", + "node_modules/zx/node_modules/node-fetch": { + "version": "3.3.1", "dev": true, "license": "MIT", "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.1.1", - "@webpack-cli/info": "^2.0.2", - "@webpack-cli/serve": "^2.0.5", - "colorette": "^2.0.14", - "commander": "^10.0.1", - "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^3.1.1", - "rechoir": "^0.8.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, "engines": { - "node": ">=14.15.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/zx/node_modules/which": { + "version": "3.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" }, - "peerDependencies": { - "webpack": "5.x.x" + "bin": { + "node-which": "bin/which.js" }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/zx/node_modules/yaml": { + "version": "2.3.1", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 14" + } + }, + "packages/backend": { + "name": "@clerk/backend", + "version": "1.0.0-alpha-v5.5", + "license": "MIT", + "dependencies": { + "@clerk/shared": "2.0.0-alpha-v5.4", + "cookie": "0.5.0", + "snakecase-keys": "5.4.4", + "tslib": "2.4.1" + }, + "devDependencies": { + "@clerk/types": "4.0.0-alpha-v5.7", + "@cloudflare/workers-types": "^3.18.0", + "@types/chai": "^4.3.3", + "@types/cookie": "^0.5.1", + "@types/node": "^18.17.0", + "@types/qunit": "^2.19.7", + "@types/sinon": "^10.0.13", + "chai": "^4.3.6", + "edge-runtime": "^2.0.0", + "esbuild": "^0.15.12", + "esbuild-register": "^3.3.3", + "eslint-config-custom": "*", + "miniflare": "^2.12.1", + "npm-run-all": "^4.1.5", + "qunit": "^2.19.3", + "sinon": "^14.0.1", + "tsup": "*", + "typescript": "*", + "workerd": "^1.20230518.0" + }, + "engines": { + "node": ">=18.17.0" + } + }, + "packages/backend/node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "packages/chrome-extension": { + "name": "@clerk/chrome-extension", + "version": "1.0.0-alpha-v5.7", + "license": "MIT", + "dependencies": { + "@clerk/clerk-js": "5.0.0-alpha-v5.7", + "@clerk/clerk-react": "5.0.0-alpha-v5.7", + "webextension-polyfill": "^0.10.0" + }, + "devDependencies": { + "@types/chrome": "*", + "@types/node": "^18.17.0", + "@types/react": "*", + "@types/react-dom": "*", + "@types/webextension-polyfill": "^0.10.7", + "eslint-config-custom": "*", + "jest-chrome": "^0.8.0", + "tsup": "*", + "typescript": "*" + }, + "engines": { + "node": ">=18.17.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" } }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "10.0.1", + "packages/chrome-extension/node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, - "license": "MIT", + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, "engines": { - "node": ">=14" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/webpack-dev-middleware": { - "version": "4.3.0", + "packages/chrome-extension/node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "colorette": "^1.2.2", - "mem": "^8.1.1", - "memfs": "^3.2.2", - "mime-types": "^2.1.30", - "range-parser": "^1.2.1", - "schema-utils": "^3.0.0" + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= v10.23.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/webpack-dev-middleware/node_modules/colorette": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack-dev-server": { - "version": "4.15.0", + "packages/chrome-extension/node_modules/@jest/core/node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.13.0" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-cli": { + "ts-node": { "optional": true } } }, - "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.12.0", + "packages/chrome-extension/node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/webpack-dev-server/node_modules/ajv-keywords": { - "version": "5.1.0", + "packages/chrome-extension/node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "fast-deep-equal": "^3.1.3" + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" }, - "peerDependencies": { - "ajv": "^8.8.2" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/webpack-dev-server/node_modules/default-gateway": { - "version": "6.0.3", + "packages/chrome-extension/node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "dev": true, - "license": "BSD-2-Clause", + "peer": true, "dependencies": { - "execa": "^5.0.0" + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" }, "engines": { - "node": ">= 10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/webpack-dev-server/node_modules/glob": { - "version": "7.2.3", + "packages/chrome-extension/node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "dev": true, - "license": "ISC", + "peer": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" }, "engines": { - "node": "*" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/webpack-dev-server/node_modules/ipaddr.js": { - "version": "2.1.0", + "packages/chrome-extension/node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "dev": true, - "license": "MIT", + "peer": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, "engines": { - "node": ">= 10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack-dev-server/node_modules/rimraf": { - "version": "3.0.2", + "packages/chrome-extension/node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "dev": true, - "license": "ISC", + "peer": true, "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.1", + "packages/chrome-extension/node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { - "version": "5.3.3", + "packages/chrome-extension/node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "packages/chrome-extension/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/webpack-merge": { - "version": "5.9.0", + "packages/chrome-extension/node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" + "type-detect": "4.0.8" } }, - "node_modules/webpack-sources": { - "version": "1.4.3", + "packages/chrome-extension/node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "@sinonjs/commons": "^1.7.0" } }, - "node_modules/webpack-sources/node_modules/source-map": { - "version": "0.6.1", + "packages/chrome-extension/node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true, - "license": "BSD-3-Clause", + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/webpack-stats-plugin": { - "version": "1.1.3", + "packages/chrome-extension/node_modules/@types/chrome": { + "version": "0.0.114", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.114.tgz", + "integrity": "sha512-i7qRr74IrxHtbnrZSKUuP5Uvd5EOKwlwJq/yp7+yTPihOXnPhNQO4Z5bqb1XTnrjdbUKEJicaVVbhcgtRijmLA==", "dev": true, - "license": "MIT" + "dependencies": { + "@types/filesystem": "*", + "@types/har-format": "*" + } }, - "node_modules/webpack-virtual-modules": { - "version": "0.5.0", + "packages/chrome-extension/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, - "license": "MIT" + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", + "packages/chrome-extension/node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", "dev": true, - "license": "BSD-2-Clause", + "peer": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" } }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", + "packages/chrome-extension/node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, - "license": "BSD-2-Clause", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=4.0" + "node": ">=0.4.0" } }, - "node_modules/webpack/node_modules/webpack-sources": { - "version": "3.2.3", + "packages/chrome-extension/node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true, - "license": "MIT", + "peer": true, "engines": { - "node": ">=10.13.0" + "node": ">=0.4.0" } }, - "node_modules/webpod": { - "version": "0.0.2", + "packages/chrome-extension/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", - "bin": { - "webpod": "dist/index.js" + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/websocket-driver": { - "version": "0.7.4", + "packages/chrome-extension/node_modules/babel-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", "dev": true, - "license": "Apache-2.0", + "peer": true, "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" }, "engines": { - "node": ">=0.8.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/websocket-extensions": { - "version": "0.1.4", + "packages/chrome-extension/node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", "dev": true, - "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, "engines": { - "node": ">=0.8.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", + "packages/chrome-extension/node_modules/babel-preset-jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "iconv-lite": "0.6.3" + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">=12" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", + "packages/chrome-extension/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", + "packages/chrome-extension/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/whatwg-url": { - "version": "11.0.0", + "packages/chrome-extension/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12" + "node": ">=7.0.0" } }, - "node_modules/whatwg-url-without-unicode": { - "version": "8.0.0-3", - "license": "MIT", + "packages/chrome-extension/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "packages/chrome-extension/node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true, + "peer": true + }, + "packages/chrome-extension/node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "peer": true, "dependencies": { - "buffer": "^5.4.3", - "punycode": "^2.1.1", - "webidl-conversions": "^5.0.0" + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/whatwg-url-without-unicode/node_modules/webidl-conversions": { - "version": "5.0.0", - "license": "BSD-2-Clause", - "engines": { - "node": ">=8" - } + "packages/chrome-extension/node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true, + "peer": true }, - "node_modules/which": { - "version": "2.0.2", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, + "packages/chrome-extension/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "peer": true, "engines": { - "node": ">= 8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "license": "MIT", + "packages/chrome-extension/node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "peer": true, "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "webidl-conversions": "^5.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/which-builtin-type": { - "version": "1.1.3", - "license": "MIT", - "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, + "packages/chrome-extension/node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "peer": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/which-collection": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" + "packages/chrome-extension/node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/which-module": { - "version": "2.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/which-pm": { - "version": "2.0.0", + "packages/chrome-extension/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "load-yaml-file": "^0.2.0", - "path-exists": "^4.0.0" + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" }, "engines": { - "node": ">=8.15" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/which-typed-array": { - "version": "1.1.11", - "license": "MIT", + "packages/chrome-extension/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "peer": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">= 0.4" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/wide-align": { - "version": "1.1.5", + "packages/chrome-extension/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/widest-line": { - "version": "3.1.0", + "packages/chrome-extension/node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "string-width": "^4.0.0" + "whatwg-encoding": "^1.0.5" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/wildcard": { - "version": "2.0.1", + "packages/chrome-extension/node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "dev": true, - "license": "MIT" + "peer": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } }, - "node_modules/word-wrap": { - "version": "1.2.5", + "packages/chrome-extension/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, - "license": "MIT", + "peer": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/wordwrap": { - "version": "1.0.0", + "packages/chrome-extension/node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT" + "peer": true, + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/workerd": { - "version": "1.20230518.0", + "packages/chrome-extension/node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, "bin": { - "workerd": "bin/workerd" + "jest": "bin/jest.js" }, "engines": { - "node": ">=16" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "optionalDependencies": { - "@cloudflare/workerd-darwin-64": "1.20230518.0", - "@cloudflare/workerd-darwin-arm64": "1.20230518.0", - "@cloudflare/workerd-linux-64": "1.20230518.0", - "@cloudflare/workerd-linux-arm64": "1.20230518.0", - "@cloudflare/workerd-windows-64": "1.20230518.0" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "devOptional": true, - "license": "MIT", + "packages/chrome-extension/node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dev": true, + "peer": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", + "packages/chrome-extension/node_modules/jest-chrome": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/jest-chrome/-/jest-chrome-0.8.0.tgz", + "integrity": "sha512-39RR1GT9nI4e4jsuH1vIf4l5ApxxkcstjGJr+GsOURL8f4Db0UlbRnsZaM+ZRniaGtokqklUH5VFKGZZ6YztUg==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" + "@types/chrome": "^0.0.114" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "peerDependencies": { + "jest": "^26.0.1 || ^27.0.0" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", + "packages/chrome-extension/node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", + "packages/chrome-extension/node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "color-name": "~1.1.4" + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">=7.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", + "packages/chrome-extension/node_modules/jest-cli/node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "devOptional": true, - "license": "MIT", + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } } }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "devOptional": true, - "license": "MIT", + "packages/chrome-extension/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "peer": true, "dependencies": { - "color-name": "~1.1.4" + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { - "node": ">=7.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "devOptional": true, - "license": "MIT" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", + "packages/chrome-extension/node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", "dev": true, - "license": "ISC", + "peer": true, "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "license": "ISC" - }, - "node_modules/ws": { - "version": "8.13.0", + "packages/chrome-extension/node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/xcode": { - "version": "3.0.1", + "packages/chrome-extension/node_modules/jest-environment-jsdom": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", "dev": true, - "license": "Apache-2.0", + "peer": true, "dependencies": { - "simple-plist": "^1.1.0", - "uuid": "^7.0.3" + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" }, "engines": { - "node": ">=10.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/xcode/node_modules/uuid": { - "version": "7.0.3", + "packages/chrome-extension/node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "peer": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/xdg-basedir": { - "version": "4.0.0", + "packages/chrome-extension/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true, - "license": "MIT", + "peer": true, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/xml-name-validator": { - "version": "4.0.0", + "packages/chrome-extension/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, - "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, "engines": { - "node": ">=12" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/xml2js": { - "version": "0.6.0", + "packages/chrome-extension/node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { - "node": ">=4.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/xml2js/node_modules/xmlbuilder": { - "version": "11.0.1", + "packages/chrome-extension/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dev": true, - "license": "MIT", + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, "engines": { - "node": ">=4.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/xmlbuilder": { - "version": "14.0.0", + "packages/chrome-extension/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, - "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, "engines": { - "node": ">=8.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/xmlchars": { - "version": "2.2.0", + "packages/chrome-extension/node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dev": true, - "license": "MIT" + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "node_modules/xmlhttprequest-ssl": { - "version": "2.0.0", + "packages/chrome-extension/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, + "peer": true, "engines": { - "node": ">=0.4.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/xstate": { - "version": "4.38.2", + "packages/chrome-extension/node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/xstate" + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/xtend": { - "version": "4.0.2", + "packages/chrome-extension/node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", "dev": true, - "license": "MIT", + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, "engines": { - "node": ">=0.4" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/xxhash-wasm": { - "version": "0.4.2", + "packages/chrome-extension/node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", "dev": true, - "license": "MIT" - }, - "node_modules/y18n": { - "version": "5.0.8", - "devOptional": true, - "license": "ISC", + "peer": true, + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/yallist": { - "version": "3.1.1", - "license": "ISC" + "packages/chrome-extension/node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "node_modules/yaml": { - "version": "1.10.2", - "license": "ISC", + "packages/chrome-extension/node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, "engines": { - "node": ">= 6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/yaml-loader": { - "version": "0.8.0", + "packages/chrome-extension/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "javascript-stringify": "^2.0.1", - "loader-utils": "^2.0.0", - "yaml": "^2.0.0" + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">= 12.13" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/yaml-loader/node_modules/yaml": { - "version": "2.3.2", + "packages/chrome-extension/node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", "dev": true, - "license": "ISC", + "peer": true, + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, "engines": { - "node": ">= 14" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/yargs": { - "version": "17.7.2", - "devOptional": true, - "license": "MIT", + "packages/chrome-extension/node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dev": true, + "peer": true, "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" }, "engines": { - "node": ">=12" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/yargs-parser": { - "version": "18.1.3", + "packages/chrome-extension/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, - "license": "ISC", + "peer": true, "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=6" + "node": ">= 10.13.0" } }, - "node_modules/yargs-parser/node_modules/camelcase": { - "version": "5.3.1", + "packages/chrome-extension/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "devOptional": true, - "license": "ISC", + "packages/chrome-extension/node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "peer": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/yn": { - "version": "3.1.1", + "packages/chrome-extension/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "peer": true }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "license": "MIT", + "packages/chrome-extension/node_modules/resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "dev": true, + "peer": true, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yoga-layout-prebuilt": { - "version": "1.10.0", + "packages/chrome-extension/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "@types/yoga-layout": "1.9.2" + "glob": "^7.1.3" }, - "engines": { - "node": ">=8" + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/youch": { - "version": "2.2.2", + "packages/chrome-extension/node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "@types/stack-trace": "0.0.29", - "cookie": "^0.4.1", - "mustache": "^4.2.0", - "stack-trace": "0.0.10" + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/youch/node_modules/cookie": { - "version": "0.4.2", + "packages/chrome-extension/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "MIT", + "peer": true, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/yup": { - "version": "0.32.11", + "packages/chrome-extension/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "@babel/runtime": "^7.15.4", - "@types/lodash": "^4.14.175", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "nanoclone": "^0.2.1", - "property-expr": "^2.0.4", - "toposort": "^2.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/yurnalist": { + "packages/chrome-extension/node_modules/tr46": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, - "license": "BSD-2-Clause", + "peer": true, "dependencies": { - "chalk": "^2.4.2", - "inquirer": "^7.0.0", - "is-ci": "^2.0.0", - "read": "^1.0.7", - "strip-ansi": "^5.2.0" + "punycode": "^2.1.1" }, "engines": { - "node": ">=4.0.0" + "node": ">=8" } }, - "node_modules/yurnalist/node_modules/ansi-regex": { - "version": "4.1.1", + "packages/chrome-extension/node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", "dev": true, - "license": "MIT", + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, "engines": { - "node": ">=6" + "node": ">=10.12.0" } }, - "node_modules/yurnalist/node_modules/ci-info": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/yurnalist/node_modules/is-ci": { - "version": "2.0.0", + "packages/chrome-extension/node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, - "license": "MIT", - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" + "peer": true, + "engines": { + "node": ">= 8" } }, - "node_modules/yurnalist/node_modules/strip-ansi": { - "version": "5.2.0", + "packages/chrome-extension/node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "ansi-regex": "^4.1.0" + "xml-name-validator": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/zod": { - "version": "3.21.4", + "packages/chrome-extension/node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" + "peer": true, + "engines": { + "node": ">=10.4" } }, - "node_modules/zx": { - "version": "7.2.3", + "packages/chrome-extension/node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "dev": true, - "license": "Apache-2.0", + "peer": true, "dependencies": { - "@types/fs-extra": "^11.0.1", - "@types/minimist": "^1.2.2", - "@types/node": "^18.16.3", - "@types/ps-tree": "^1.1.2", - "@types/which": "^3.0.0", - "chalk": "^5.2.0", - "fs-extra": "^11.1.1", - "fx": "*", - "globby": "^13.1.4", - "minimist": "^1.2.8", - "node-fetch": "3.3.1", - "ps-tree": "^1.2.0", - "webpod": "^0", - "which": "^3.0.0", - "yaml": "^2.2.2" - }, - "bin": { - "zx": "build/cli.js" - }, - "engines": { - "node": ">= 16.0.0" + "iconv-lite": "0.4.24" } }, - "node_modules/zx/node_modules/chalk": { - "version": "5.2.0", + "packages/chrome-extension/node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "peer": true }, - "node_modules/zx/node_modules/node-fetch": { - "version": "3.3.1", + "packages/chrome-extension/node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "node": ">=10" } }, - "node_modules/zx/node_modules/which": { - "version": "3.0.1", + "packages/chrome-extension/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" + "peer": true, + "engines": { + "node": ">=8.3.0" }, - "bin": { - "node-which": "bin/which.js" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/zx/node_modules/yaml": { - "version": "2.3.1", + "packages/chrome-extension/node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true, - "license": "ISC", - "engines": { - "node": ">= 14" - } + "peer": true }, - "packages/backend": { - "name": "@clerk/backend", - "version": "1.0.0-alpha-v5.5", - "license": "MIT", + "packages/chrome-extension/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "peer": true, "dependencies": { - "@clerk/shared": "2.0.0-alpha-v5.4", - "cookie": "0.5.0", - "snakecase-keys": "5.4.4", - "tslib": "2.4.1" - }, - "devDependencies": { - "@clerk/types": "4.0.0-alpha-v5.7", - "@cloudflare/workers-types": "^3.18.0", - "@types/chai": "^4.3.3", - "@types/cookie": "^0.5.1", - "@types/node": "^18.17.0", - "@types/qunit": "^2.19.7", - "@types/sinon": "^10.0.13", - "chai": "^4.3.6", - "edge-runtime": "^2.0.0", - "esbuild": "^0.15.12", - "esbuild-register": "^3.3.3", - "eslint-config-custom": "*", - "miniflare": "^2.12.1", - "npm-run-all": "^4.1.5", - "qunit": "^2.19.3", - "sinon": "^14.0.1", - "tsup": "*", - "typescript": "*", - "workerd": "^1.20230518.0" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=18.17.0" + "node": ">=10" } }, - "packages/backend/node_modules/tslib": { - "version": "2.4.1", - "license": "0BSD" - }, - "packages/chrome-extension": { - "name": "@clerk/chrome-extension", - "version": "1.0.0-alpha-v5.7", - "license": "MIT", - "dependencies": { - "@clerk/clerk-js": "5.0.0-alpha-v5.7", - "@clerk/clerk-react": "5.0.0-alpha-v5.7" - }, - "devDependencies": { - "@types/chrome": "*", - "@types/node": "^18.17.0", - "@types/react": "*", - "@types/react-dom": "*", - "eslint-config-custom": "*", - "tsup": "*", - "typescript": "*" - }, + "packages/chrome-extension/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "peer": true, "engines": { - "node": ">=18.17.0" - }, - "peerDependencies": { - "react": ">=18", - "react-dom": ">=18" + "node": ">=10" } }, "packages/clerk-js": { diff --git a/packages/chrome-extension/src/__snapshots__/exports.test.ts.snap b/packages/chrome-extension/src/__snapshots__/exports.test.ts.snap index 39c05499d05..238d2e898d3 100644 --- a/packages/chrome-extension/src/__snapshots__/exports.test.ts.snap +++ b/packages/chrome-extension/src/__snapshots__/exports.test.ts.snap @@ -6,7 +6,6 @@ Array [ "ClerkLoaded", "ClerkLoading", "ClerkProvider", - "ContentScript", "CreateOrganization", "EmailLinkErrorCode", "Experimental__Gate", diff --git a/packages/chrome-extension/src/content.ts b/packages/chrome-extension/src/content.ts deleted file mode 100644 index 2fd259ebaa2..00000000000 --- a/packages/chrome-extension/src/content.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { parsePublishableKey } from '@clerk/shared'; -import { createExtensionSyncManager, events } from '@clerk/shared/extensionSyncManager'; - -import { STORAGE_KEY_CLIENT_JWT } from './constants'; -import { ClerkChromeExtensionError, logErrorHandler } from './errors'; -import { BrowserStorageCache } from './utils/storage'; - -export const ContentScript = { - init(publishableKey: string) { - try { - // Ensure we have a publishable key - if (!publishableKey) { - throw new ClerkChromeExtensionError('Missing publishable key.'); - } - - // Parse the publishable key - const { frontendApi, instanceType } = parsePublishableKey(publishableKey) || {}; - - // Ensure we have a valid publishable key - if (!frontendApi || !instanceType) { - throw new ClerkChromeExtensionError('Invalid publishable key.'); - } - - // Ensure we're in a development environment - if (instanceType !== 'development') { - throw new ClerkChromeExtensionError(` - You're attempting to load the Clerk Chrome Extension content script in an unsupported environment. - Please update your manifest.json to exclude production URLs in content_scripts. - `); - } - - // Create an extension sync manager - const extensionSyncManager = createExtensionSyncManager(); - - // Listen for token update events from other Clerk hosts - extensionSyncManager.on(events.DevJWTUpdate, ({ data }) => { - // Ignore events from other Clerk hosts - if (data.frontendApi !== frontendApi) { - console.log('Received a token update event for a different Clerk host. Ignoring.'); - return; - } - - const KEY = BrowserStorageCache.createKey(data.frontendApi, STORAGE_KEY_CLIENT_JWT); - - if (data.action === 'set') { - void BrowserStorageCache.set(KEY, data.token); - } else if (data.action === 'remove') { - void BrowserStorageCache.remove(KEY); - } - }); - } catch (e) { - logErrorHandler(e as Error); - } - }, -}; diff --git a/packages/chrome-extension/src/index.ts b/packages/chrome-extension/src/index.ts index f489db83aa4..8591e7867b9 100644 --- a/packages/chrome-extension/src/index.ts +++ b/packages/chrome-extension/src/index.ts @@ -1,5 +1,4 @@ export * from '@clerk/clerk-react'; -export { ContentScript } from './content'; export type { ChromeExtensionClerkProviderProps } from './ClerkProvider'; // order matters since we want override @clerk/clerk-react ClerkProvider diff --git a/packages/clerk-js/src/core/devBrowserHandler.ts b/packages/clerk-js/src/core/devBrowserHandler.ts index 0013c0d192e..90851a2575a 100644 --- a/packages/clerk-js/src/core/devBrowserHandler.ts +++ b/packages/clerk-js/src/core/devBrowserHandler.ts @@ -4,7 +4,6 @@ import { getDevBrowserJWTFromURL, setDevBrowserJWTInURL, } from '@clerk/shared/devBrowser'; -import { createExtensionSyncManager, events as extensionSyncEvents } from '@clerk/shared/extensionSyncManager'; import { buildURL, createCookieHandler, isDevOrStagingUrl, runIframe } from '../utils'; import { clerkErrorDevInitFailed } from './errors'; @@ -35,7 +34,6 @@ export function createDevBrowserHandler({ fapiClient, }: CreateDevBrowserHandlerOptions): DevBrowserHandler { const cookieHandler = createCookieHandler(); - const extensionSyncManager = createExtensionSyncManager(); const key = DEV_BROWSER_SSO_JWT_KEY; let usesUrlBasedSessionSyncing = true; @@ -48,18 +46,12 @@ export function createDevBrowserHandler({ localStorage.setItem(key, jwt); // Append dev browser JWT to cookies, because server-side redirects (e.g. middleware) has no access to local storage cookieHandler.setDevBrowserCookie(jwt); - - if (jwt) { - extensionSyncManager.dispatch(extensionSyncEvents.DevJWTUpdate, { action: 'set', token: jwt, frontendApi }); - } } function removeDevBrowserJWT() { // TODO: Maybe clear keys for both dev session sync modes to be on the safe side? localStorage.removeItem(key); cookieHandler.removeDevBrowserCookie(); - - extensionSyncManager.dispatch(extensionSyncEvents.DevJWTUpdate, { action: 'remove', frontendApi }); } // location.host == *.[lcl.dev](http://lcl.dev) diff --git a/packages/shared/package.json b/packages/shared/package.json index 75ce762caa7..ea5f893d1f7 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -45,16 +45,13 @@ "main": "./dist/index.js", "files": [ "dist", - "apiUrlFromPublishableKey", "browser", "callWithRetry", "color", - "constants", "cookie", "date", "deprecated", "error", - "extensionSyncManager", "file", "globs", "handleValueOrFn", @@ -65,11 +62,13 @@ "localStorageBroadcastChannel", "poller", "proxy", + "underscore", + "url", "react", - "telemetry", + "constants", + "apiUrlFromPublishableKey", "scripts", - "underscore", - "url" + "telemetry" ], "scripts": { "build": "tsup", diff --git a/packages/shared/src/extensionSyncManager.ts b/packages/shared/src/extensionSyncManager.ts deleted file mode 100644 index 1e333f34e6b..00000000000 --- a/packages/shared/src/extensionSyncManager.ts +++ /dev/null @@ -1,59 +0,0 @@ -export const events = { - DevJWTUpdate: 'clerk:sync:dev:jwt:update', -} as const; - -type SyncEvent = (typeof events)[keyof typeof events]; - -type SyncPayloads = { - [events.DevJWTUpdate]: - | { - action: 'set'; - token: string; - frontendApi: string; - } - | { - action: 'remove'; - frontendApi: string; - }; -}; - -type SyncPayload = SyncPayloads[E] & { - event: E; -}; - -type SyncHandler = (evt: MessageEvent>) => void; - -export function createExtensionSyncManager() { - const listeners = new Map>(); - - function dispatch( - event: E, - payload: SyncPayloads[E], - targetOrigin: string = window.location.origin, - transfer?: Transferable[], - ) { - window.postMessage({ event, ...payload } satisfies SyncPayload, targetOrigin, transfer); - } - - function on(event: E, handler: SyncHandler) { - const wrappedHandler: SyncHandler = evt => { - // Only accept messages from ourselves - if (evt.source === window && evt.data.event === event) { - handler(evt); - } - }; - - window.addEventListener('message', wrappedHandler, false); - listeners.set(event, wrappedHandler); - } - - function off(event: E) { - const handler = listeners.get(event); - if (handler) { - window.removeEventListener('message', handler, false); - listeners.delete(event); - } - } - - return { dispatch, off, on }; -} diff --git a/packages/shared/subpaths.mjs b/packages/shared/subpaths.mjs index 5a07267f703..7aeddf9defd 100644 --- a/packages/shared/subpaths.mjs +++ b/packages/shared/subpaths.mjs @@ -2,17 +2,13 @@ // We have to polyfill our "exports" subpaths :cry: export const subpathNames = [ - 'apiUrlFromPublishableKey', 'browser', 'callWithRetry', 'color', - 'constants', 'cookie', 'date', 'deprecated', - 'devBrowser', 'error', - 'extensionSyncManager', 'file', 'globs', 'handleValueOrFn', @@ -23,9 +19,11 @@ export const subpathNames = [ 'localStorageBroadcastChannel', 'poller', 'proxy', - 'telemetry', 'underscore', 'url', + 'constants', + 'apiUrlFromPublishableKey', + 'telemetry', ]; export const subpathFoldersBarrel = ['react']; From 7d734659f0fa612aef40c49506227a9576fd0a9f Mon Sep 17 00:00:00 2001 From: Tom Milewski Date: Wed, 6 Dec 2023 10:08:31 -0500 Subject: [PATCH 6/6] chore(repo): Ensure correct jest version --- package-lock.json | 2246 +---------------- package.json | 4 + packages/chrome-extension/jest.setup.ts | 5 +- packages/chrome-extension/package.json | 1 - .../src/__snapshots__/exports.test.ts.snap | 2 +- 5 files changed, 30 insertions(+), 2228 deletions(-) diff --git a/package-lock.json b/package-lock.json index 38b523b2630..200792db5e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,6 +44,7 @@ "http-server": "^14.1.1", "husky": "^8.0.3", "jest": "^29.7.0", + "jest-chrome": "^0.8.0", "jest-environment-jsdom": "^29.3.1", "lint-staged": "^14.0.1", "npm-cli-adduser": "^1.1.4", @@ -8186,6 +8187,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/chrome": { + "version": "0.0.114", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.114.tgz", + "integrity": "sha512-i7qRr74IrxHtbnrZSKUuP5Uvd5EOKwlwJq/yp7+yTPihOXnPhNQO4Z5bqb1XTnrjdbUKEJicaVVbhcgtRijmLA==", + "dev": true, + "dependencies": { + "@types/filesystem": "*", + "@types/har-format": "*" + } + }, "node_modules/@types/common-tags": { "version": "1.8.2", "dev": true, @@ -8512,13 +8523,6 @@ "version": "4.0.0", "license": "MIT" }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true, - "peer": true - }, "node_modules/@types/prop-types": { "version": "15.7.5", "dev": true, @@ -11088,13 +11092,6 @@ "wcwidth": "^1.0.1" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true, - "peer": true - }, "node_modules/browser-tabs-lock": { "version": "1.2.15", "hasInstallScript": true, @@ -20353,6 +20350,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/jest-chrome": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/jest-chrome/-/jest-chrome-0.8.0.tgz", + "integrity": "sha512-39RR1GT9nI4e4jsuH1vIf4l5ApxxkcstjGJr+GsOURL8f4Db0UlbRnsZaM+ZRniaGtokqklUH5VFKGZZ6YztUg==", + "dev": true, + "dependencies": { + "@types/chrome": "^0.0.114" + }, + "peerDependencies": { + "jest": "^26.0.1 || ^27.0.0" + } + }, "node_modules/jest-circus": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", @@ -21134,638 +21143,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", - "dev": true, - "peer": true, - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "peer": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/jest-jasmine2/node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", - "dev": true, - "peer": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/jest-jasmine2/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-jasmine2/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/jest-jasmine2/node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "peer": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-jasmine2/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-jasmine2/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-jasmine2/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-leak-detector": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", @@ -22457,20 +21834,6 @@ "node": ">=8" } }, - "node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/jest-snapshot": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", @@ -30828,23 +30191,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/terser": { "version": "5.17.7", "dev": true, @@ -31032,13 +30378,6 @@ "real-require": "^0.2.0" } }, - "node_modules/throat": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", - "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", - "dev": true, - "peer": true - }, "node_modules/through": { "version": "2.3.8", "dev": true, @@ -32639,17 +31978,6 @@ "dev": true, "license": "MIT" }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "dev": true, - "peer": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, "node_modules/w3c-xmlserializer": { "version": "4.0.0", "dev": true, @@ -34030,7 +33358,6 @@ "@types/react-dom": "*", "@types/webextension-polyfill": "^0.10.7", "eslint-config-custom": "*", - "jest-chrome": "^0.8.0", "tsup": "*", "typescript": "*" }, @@ -34042,1533 +33369,6 @@ "react-dom": ">=18" } }, - "packages/chrome-extension/node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "packages/chrome-extension/node_modules/@jest/core/node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "packages/chrome-extension/node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "dev": true, - "peer": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "packages/chrome-extension/node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", - "dev": true, - "peer": true, - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "peer": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "packages/chrome-extension/node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", - "dev": true, - "peer": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "packages/chrome-extension/node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 6" - } - }, - "packages/chrome-extension/node_modules/@types/chrome": { - "version": "0.0.114", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.114.tgz", - "integrity": "sha512-i7qRr74IrxHtbnrZSKUuP5Uvd5EOKwlwJq/yp7+yTPihOXnPhNQO4Z5bqb1XTnrjdbUKEJicaVVbhcgtRijmLA==", - "dev": true, - "dependencies": { - "@types/filesystem": "*", - "@types/har-format": "*" - } - }, - "packages/chrome-extension/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "dev": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "packages/chrome-extension/node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "peer": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "packages/chrome-extension/node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "packages/chrome-extension/node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4.0" - } - }, - "packages/chrome-extension/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "packages/chrome-extension/node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "packages/chrome-extension/node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "peer": true, - "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "packages/chrome-extension/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "packages/chrome-extension/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "peer": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "packages/chrome-extension/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "packages/chrome-extension/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "packages/chrome-extension/node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true, - "peer": true - }, - "packages/chrome-extension/node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "peer": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "packages/chrome-extension/node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true, - "peer": true - }, - "packages/chrome-extension/node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "peer": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "packages/chrome-extension/node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "packages/chrome-extension/node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "packages/chrome-extension/node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "peer": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/chrome-extension/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "packages/chrome-extension/node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "peer": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, - "packages/chrome-extension/node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "peer": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "packages/chrome-extension/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "packages/chrome-extension/node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "packages/chrome-extension/node_modules/jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/core": "^27.5.1", - "import-local": "^3.0.2", - "jest-cli": "^27.5.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "packages/chrome-extension/node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-chrome": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/jest-chrome/-/jest-chrome-0.8.0.tgz", - "integrity": "sha512-39RR1GT9nI4e4jsuH1vIf4l5ApxxkcstjGJr+GsOURL8f4Db0UlbRnsZaM+ZRniaGtokqklUH5VFKGZZ6YztUg==", - "dev": true, - "dependencies": { - "@types/chrome": "^0.0.114" - }, - "peerDependencies": { - "jest": "^26.0.1 || ^27.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "packages/chrome-extension/node_modules/jest-cli/node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "packages/chrome-extension/node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "dev": true, - "peer": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "packages/chrome-extension/node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "dev": true, - "peer": true, - "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true, - "peer": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", - "dev": true, - "peer": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "packages/chrome-extension/node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "packages/chrome-extension/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "packages/chrome-extension/node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "peer": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "packages/chrome-extension/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true, - "peer": true - }, - "packages/chrome-extension/node_modules/resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, - "packages/chrome-extension/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/chrome-extension/node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "peer": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "packages/chrome-extension/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "packages/chrome-extension/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "packages/chrome-extension/node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "peer": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "packages/chrome-extension/node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", - "dev": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "packages/chrome-extension/node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "packages/chrome-extension/node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "peer": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "packages/chrome-extension/node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.4" - } - }, - "packages/chrome-extension/node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "peer": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "packages/chrome-extension/node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true, - "peer": true - }, - "packages/chrome-extension/node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "peer": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "packages/chrome-extension/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "packages/chrome-extension/node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true, - "peer": true - }, - "packages/chrome-extension/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "peer": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "packages/chrome-extension/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, "packages/clerk-js": { "name": "@clerk/clerk-js", "version": "5.0.0-alpha-v5.7", diff --git a/package.json b/package.json index bfbfb338c6c..358fe856159 100644 --- a/package.json +++ b/package.json @@ -80,6 +80,7 @@ "http-server": "^14.1.1", "husky": "^8.0.3", "jest": "^29.7.0", + "jest-chrome": "^0.8.0", "jest-environment-jsdom": "^29.3.1", "lint-staged": "^14.0.1", "npm-cli-adduser": "^1.1.4", @@ -101,5 +102,8 @@ "engines": { "node": ">=18.17.0", "npm": ">=8.5.0" + }, + "overrides": { + "jest": "$jest" } } diff --git a/packages/chrome-extension/jest.setup.ts b/packages/chrome-extension/jest.setup.ts index 23d4e35a7c3..b5df3d97614 100644 --- a/packages/chrome-extension/jest.setup.ts +++ b/packages/chrome-extension/jest.setup.ts @@ -1,6 +1,5 @@ import { chrome } from 'jest-chrome'; -// @ts-expect-error - Mock implementation +// @ts-expect-error - required for the browser polyfill chrome.runtime.id = 'chrome-extension-test'; - -Object.assign(globalThis, { chrome, browser: chrome }); +Object.assign(global, { chrome, browser: chrome }); diff --git a/packages/chrome-extension/package.json b/packages/chrome-extension/package.json index e4dc3653520..e0721ea2029 100644 --- a/packages/chrome-extension/package.json +++ b/packages/chrome-extension/package.json @@ -56,7 +56,6 @@ "@types/react-dom": "*", "@types/webextension-polyfill": "^0.10.7", "eslint-config-custom": "*", - "jest-chrome": "^0.8.0", "tsup": "*", "typescript": "*" }, diff --git a/packages/chrome-extension/src/__snapshots__/exports.test.ts.snap b/packages/chrome-extension/src/__snapshots__/exports.test.ts.snap index 238d2e898d3..5850b5cf888 100644 --- a/packages/chrome-extension/src/__snapshots__/exports.test.ts.snap +++ b/packages/chrome-extension/src/__snapshots__/exports.test.ts.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`public exports should not include a breaking change 1`] = ` -Array [ +[ "AuthenticateWithRedirectCallback", "ClerkLoaded", "ClerkLoading",