├── .github
├── CODEOWNERS
├── FUNDING.yml
└── workflows
│ └── ci.yml
├── .gitignore
├── .nvmrc
├── LICENSE
├── README.md
├── examples
├── 01-blur-up
│ ├── index.html
│ ├── package.json
│ ├── src
│ │ ├── App.tsx
│ │ ├── Img.tsx
│ │ ├── assets
│ │ │ └── blur.jpg
│ │ ├── img.css
│ │ ├── irrelevant
│ │ │ ├── index.css
│ │ │ └── index.tsx
│ │ ├── main.tsx
│ │ └── vite-env.d.ts
│ ├── tsconfig.json
│ └── vite.config.ts
├── 02-blur-down
│ ├── index.html
│ ├── package.json
│ ├── src
│ │ ├── App.tsx
│ │ ├── Img.tsx
│ │ ├── assets
│ │ │ └── blur.jpg
│ │ ├── img.css
│ │ ├── irrelevant
│ │ │ ├── index.css
│ │ │ └── index.tsx
│ │ ├── main.tsx
│ │ └── vite-env.d.ts
│ ├── tsconfig.json
│ └── vite.config.ts
└── 03-blur-comparison
│ ├── index.html
│ ├── package.json
│ ├── src
│ ├── App.tsx
│ ├── Img.tsx
│ ├── assets
│ │ └── blur.jpg
│ ├── img.css
│ ├── irrelevant
│ │ ├── index.css
│ │ └── index.tsx
│ ├── main.tsx
│ └── vite-env.d.ts
│ ├── tsconfig.json
│ └── vite.config.ts
├── package.json
├── pnpm-lock.yaml
└── pnpm-workspace.yaml
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | # global
2 | * @joe-bell
3 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: joe-bell
2 | custom: https://plaiceholder.co
3 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 |
3 | on:
4 | push:
5 | branches: [main]
6 | pull_request:
7 | branches: [main]
8 |
9 | jobs:
10 | build:
11 | runs-on: ubuntu-latest
12 | steps:
13 | - uses: actions/checkout@v2
14 |
15 | - name: Read .nvmrc
16 | run: echo ::set-output name=NVMRC::$(cat .nvmrc)
17 | id: nvm
18 |
19 | - name: Setup Node.js
20 | uses: actions/setup-node@v2.1.5
21 | with:
22 | node-version: "${{ steps.nvm.outputs.NVMRC }}"
23 |
24 | - run: npm run setup && pnpm install
25 | - run: pnpx prettier . --check --ignore-path .gitignore
26 | - run: pnpm run build
27 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .DS_Store
3 | dist
4 | dist-ssr
5 | *.local
6 | .pnpm-debug.log
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | 14.17.5
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | ⚠️ Disclaimer
3 | Please avoid copying any code without reading the article in full.
4 | This is an experimental technique that comes with caveats.
5 |
6 |
7 | ---
8 |
9 |
10 | "Blur Down"
11 |
12 |
13 |
14 | An experimental approach to deblurring images on load 🌫
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/examples/01-blur-up/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Demo: Loading Images With the “Blur Down” Technique
7 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/examples/01-blur-up/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "01-blur-up",
3 | "scripts": {
4 | "lint": "tsc --noEmit",
5 | "start": "vite",
6 | "build": "tsc && vite build"
7 | },
8 | "dependencies": {
9 | "react": "^17.0.0",
10 | "react-dom": "^17.0.0"
11 | },
12 | "devDependencies": {
13 | "@types/react": "^17.0.0",
14 | "@types/react-dom": "^17.0.0",
15 | "@vitejs/plugin-react-refresh": "^1.3.1",
16 | "typescript": "^4.3.5",
17 | "vite": "^2.5.1"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/examples/01-blur-up/src/App.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 | import { Layout, LayoutItem, LayoutTitle } from "./irrelevant";
3 | import { Img } from "./Img";
4 |
5 | import blurImgSrc from "./assets/blur.jpg";
6 |
7 | const blurImg = {
8 | alt: "Damon Albarn of the band 'Blur'",
9 | src: blurImgSrc,
10 | height: 1338,
11 | width: 2373,
12 | // Note: In production, you should generate your placeholder on the
13 | // server-side or at build time (e.g. via https://plaiceholder.co)
14 | //
15 | // In this example we'll use https://plaiceholder.co's unique CSS-only
16 | // placeholder approach, but these transitions will work just the same with
17 | // base64, blurhash and more…
18 | placeholder: {
19 | backgroundImage:
20 | "linear-gradient(90deg, rgb(62,38,99) 25%,rgb(48,23,55) 25% 50%,rgb(60,32,51) 50% 75%,rgb(12,5,27) 75% 100%),linear-gradient(90deg, rgb(46,24,75) 25%,rgb(49,23,40) 25% 50%,rgb(41,20,25) 50% 75%,rgb(11,7,17) 75% 100%)",
21 | backgroundPosition: "0 0 ,0 100%",
22 | backgroundSize: "100% 50%",
23 | backgroundRepeat: "no-repeat",
24 | },
25 | };
26 |
27 | const App = () => (
28 |
29 |
30 | Blur Up
31 |
32 |
33 |
34 | );
35 |
36 | export default App;
37 |
--------------------------------------------------------------------------------
/examples/01-blur-up/src/Img.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 | import "./img.css";
3 |
4 | interface IImageProps {
5 | src: string;
6 | alt: string;
7 | height: number;
8 | placeholder: React.CSSProperties;
9 | width: number;
10 | variant: "blur-down" | "blur-up";
11 | }
12 |
13 | export const Img: React.FC = ({
14 | alt,
15 | src,
16 | height,
17 | placeholder,
18 | width,
19 | variant,
20 | }) => {
21 | const [isLoaded, setIsLoaded] = React.useState(false);
22 |
23 | return (
24 |
34 |
35 |
setIsLoaded(true)}
40 | />
41 |
42 | );
43 | };
44 |
--------------------------------------------------------------------------------
/examples/01-blur-up/src/assets/blur.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joe-bell/blur-down/3d7b9d2a6e3d2d5d2bffc8dffaf095bef7d3c749/examples/01-blur-up/src/assets/blur.jpg
--------------------------------------------------------------------------------
/examples/01-blur-up/src/img.css:
--------------------------------------------------------------------------------
1 | /* Base
2 | =========================================== */
3 |
4 | /**
5 | * 1. Enforce hardware acceleration
6 | * 2. Optional: prevent CLS by defining the aspect ratio up front.
7 | * `--img-aspect-ratio` is set via inline `style`, and determined via the
8 | * required `width` and `height` props.
9 | * 3. Visually hide alt-text
10 | */
11 | .img {
12 | --img-blur: 42px;
13 | --img-scale: 1.5;
14 | --img-transition-duration: 1.2s;
15 | display: block;
16 | position: relative;
17 | overflow: hidden;
18 | transform: translateZ(0); /* [1] */
19 | padding-bottom: var(--img-aspect-ratio); /* [2] */
20 | }
21 |
22 | .img__element /* [2] */,
23 | .img__placeholder {
24 | inset: 0;
25 | position: absolute;
26 | display: block;
27 | max-width: 100%;
28 | width: 100%;
29 | height: 100%;
30 | }
31 |
32 | .img__element {
33 | font-size: 0; /* [3] */
34 | opacity: 0;
35 | }
36 |
37 | /* Variants
38 | =========================================== */
39 |
40 | /**
41 | * "Blur Down"
42 | */
43 | .img--blur-down .img__element,
44 | .img--blur-down .img__placeholder {
45 | filter: blur(var(--img-blur));
46 | transform: scale(var(--img-scale));
47 | }
48 |
49 | @media (prefers-reduced-motion: no-preference) {
50 | .img--blur-down .img__element {
51 | transition: var(--img-transition-duration) ease;
52 | transition-property: filter, opacity, transform;
53 | will-change: filter, transform;
54 | }
55 | }
56 |
57 | .img--blur-down.is-loaded .img__element {
58 | opacity: 1;
59 | transform: scale(1);
60 | filter: blur(0);
61 | }
62 |
63 | /**
64 | * "Blur Up"
65 | */
66 | .img--blur-up .img__placeholder {
67 | filter: blur(var(--img-blur));
68 | transform: scale(var(--img-scale));
69 | }
70 |
71 | @media (prefers-reduced-motion: no-preference) {
72 | .img--blur-up .img__element {
73 | transition: calc(var(--img-transition-duration) * 2) ease;
74 | transition-property: opacity;
75 | }
76 | }
77 |
78 | .img--blur-up.is-loaded .img__element {
79 | opacity: 1;
80 | }
81 |
--------------------------------------------------------------------------------
/examples/01-blur-up/src/irrelevant/index.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --space-md: 1rem;
3 | --space-sm: 0.5rem;
4 | }
5 |
6 | html,
7 | blockquote,
8 | body,
9 | p,
10 | ul,
11 | li {
12 | margin: 0;
13 | padding: 0;
14 | }
15 |
16 | html {
17 | font-family: Inter var, ui-sans-serif, system-ui, -apple-system,
18 | BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans,
19 | sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol,
20 | Noto Color Emoji;
21 | font-size: 100%;
22 | line-height: 1.2;
23 | -webkit-font-smoothing: antialiased;
24 | -moz-osx-font-smoothing: grayscale;
25 | }
26 |
27 | code {
28 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
29 | monospace;
30 | }
31 |
32 | a {
33 | color: inherit;
34 | font-weight: 600;
35 | text-decoration: underline;
36 | }
37 |
38 | .container {
39 | max-width: 640px;
40 | margin: var(--space-md) auto 0 auto;
41 | padding-left: var(--space-md);
42 | padding-right: var(--space-md);
43 | margin-top: var(--space-md);
44 | }
45 |
46 | .header {
47 | display: flex;
48 | color: #c05621;
49 | background: #fffaf0;
50 | padding: 0.75rem;
51 | border-radius: 0.5rem;
52 | border: 1px solid #fed7aa;
53 | }
54 |
55 | .header__icon {
56 | margin-right: 0.75rem;
57 | }
58 |
59 | .layout {
60 | display: flex;
61 | list-style-type: none;
62 | align-items: center;
63 | justify-content: center;
64 | }
65 |
66 | .layout__item {
67 | width: 100%;
68 | text-align: center;
69 | }
70 |
71 | .layout__item + .layout__item {
72 | margin-left: var(--space-md);
73 | }
74 |
75 | .layout__item > * + * {
76 | margin-top: var(--space-sm);
77 | }
78 |
79 | .layout__title {
80 | font-size: 1.2rem;
81 | font-weight: 600;
82 | }
83 |
84 | .mt-md {
85 | margin-top: var(--space-md);
86 | }
87 |
--------------------------------------------------------------------------------
/examples/01-blur-up/src/irrelevant/index.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 |
3 | export const Layout: React.FC = (props) => (
4 |
5 |
19 |
20 |
21 |
22 |
23 | );
24 |
25 | export const LayoutItem: React.FC = (props) => (
26 | {props.children}
27 | );
28 |
29 | export const LayoutTitle: React.FC = (props) => (
30 | {props.children}
31 | );
32 |
--------------------------------------------------------------------------------
/examples/01-blur-up/src/main.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom";
3 | import "./irrelevant/index.css";
4 | import App from "./App";
5 |
6 | ReactDOM.render(
7 |
8 |
9 | ,
10 | document.getElementById("root")
11 | );
12 |
--------------------------------------------------------------------------------
/examples/01-blur-up/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/examples/01-blur-up/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
5 | "allowJs": false,
6 | "skipLibCheck": false,
7 | "esModuleInterop": false,
8 | "allowSyntheticDefaultImports": true,
9 | "strict": true,
10 | "forceConsistentCasingInFileNames": true,
11 | "module": "ESNext",
12 | "moduleResolution": "Node",
13 | "resolveJsonModule": true,
14 | "isolatedModules": true,
15 | "noEmit": true,
16 | "jsx": "react"
17 | },
18 | "include": ["./src"]
19 | }
20 |
--------------------------------------------------------------------------------
/examples/01-blur-up/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 | import reactRefresh from "@vitejs/plugin-react-refresh";
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [reactRefresh()],
7 | });
8 |
--------------------------------------------------------------------------------
/examples/02-blur-down/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Demo: Loading Images With the “Blur Down” Technique
7 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/examples/02-blur-down/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "02-blur-down",
3 | "scripts": {
4 | "lint": "tsc --noEmit",
5 | "start": "vite",
6 | "build": "tsc && vite build"
7 | },
8 | "dependencies": {
9 | "react": "^17.0.0",
10 | "react-dom": "^17.0.0"
11 | },
12 | "devDependencies": {
13 | "@types/react": "^17.0.0",
14 | "@types/react-dom": "^17.0.0",
15 | "@vitejs/plugin-react-refresh": "^1.3.1",
16 | "typescript": "^4.3.5",
17 | "vite": "^2.5.1"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/examples/02-blur-down/src/App.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 | import { Layout, LayoutItem, LayoutTitle } from "./irrelevant";
3 | import { Img } from "./Img";
4 |
5 | import blurImgSrc from "./assets/blur.jpg";
6 |
7 | const blurImg = {
8 | alt: "Damon Albarn of the band 'Blur'",
9 | src: blurImgSrc,
10 | height: 1338,
11 | width: 2373,
12 | // Note: In production, you should generate your placeholder on the
13 | // server-side or at build time (e.g. via https://plaiceholder.co)
14 | //
15 | // In this example we'll use https://plaiceholder.co's unique CSS-only
16 | // placeholder approach, but these transitions will work just the same with
17 | // base64, blurhash and more…
18 | placeholder: {
19 | backgroundImage:
20 | "linear-gradient(90deg, rgb(62,38,99) 25%,rgb(48,23,55) 25% 50%,rgb(60,32,51) 50% 75%,rgb(12,5,27) 75% 100%),linear-gradient(90deg, rgb(46,24,75) 25%,rgb(49,23,40) 25% 50%,rgb(41,20,25) 50% 75%,rgb(11,7,17) 75% 100%)",
21 | backgroundPosition: "0 0 ,0 100%",
22 | backgroundSize: "100% 50%",
23 | backgroundRepeat: "no-repeat",
24 | },
25 | };
26 |
27 | const App = () => (
28 |
29 |
30 | Blur Down
31 |
32 |
33 |
34 | );
35 |
36 | export default App;
37 |
--------------------------------------------------------------------------------
/examples/02-blur-down/src/Img.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 | import "./img.css";
3 |
4 | interface IImageProps {
5 | src: string;
6 | alt: string;
7 | height: number;
8 | placeholder: React.CSSProperties;
9 | width: number;
10 | variant: "blur-down" | "blur-up";
11 | }
12 |
13 | export const Img: React.FC = ({
14 | alt,
15 | src,
16 | height,
17 | placeholder,
18 | width,
19 | variant,
20 | }) => {
21 | const [isLoaded, setIsLoaded] = React.useState(false);
22 |
23 | return (
24 |
34 |
35 |
setIsLoaded(true)}
40 | />
41 |
42 | );
43 | };
44 |
--------------------------------------------------------------------------------
/examples/02-blur-down/src/assets/blur.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joe-bell/blur-down/3d7b9d2a6e3d2d5d2bffc8dffaf095bef7d3c749/examples/02-blur-down/src/assets/blur.jpg
--------------------------------------------------------------------------------
/examples/02-blur-down/src/img.css:
--------------------------------------------------------------------------------
1 | /* Base
2 | =========================================== */
3 |
4 | /**
5 | * 1. Enforce hardware acceleration
6 | * 2. Optional: prevent CLS by defining the aspect ratio up front.
7 | * `--img-aspect-ratio` is set via inline `style`, and determined via the
8 | * required `width` and `height` props.
9 | * 3. Visually hide alt-text
10 | */
11 | .img {
12 | --img-blur: 42px;
13 | --img-scale: 1.5;
14 | --img-transition-duration: 1.2s;
15 | display: block;
16 | position: relative;
17 | overflow: hidden;
18 | transform: translateZ(0); /* [1] */
19 | padding-bottom: var(--img-aspect-ratio); /* [2] */
20 | }
21 |
22 | .img__element /* [2] */,
23 | .img__placeholder {
24 | inset: 0;
25 | position: absolute;
26 | display: block;
27 | max-width: 100%;
28 | width: 100%;
29 | height: 100%;
30 | }
31 |
32 | .img__element {
33 | font-size: 0; /* [3] */
34 | opacity: 0;
35 | }
36 |
37 | /* Variants
38 | =========================================== */
39 |
40 | /**
41 | * "Blur Down"
42 | */
43 | .img--blur-down .img__element,
44 | .img--blur-down .img__placeholder {
45 | filter: blur(var(--img-blur));
46 | transform: scale(var(--img-scale));
47 | }
48 |
49 | @media (prefers-reduced-motion: no-preference) {
50 | .img--blur-down .img__element {
51 | transition: var(--img-transition-duration) ease;
52 | transition-property: filter, opacity, transform;
53 | will-change: filter, transform;
54 | }
55 | }
56 |
57 | .img--blur-down.is-loaded .img__element {
58 | opacity: 1;
59 | transform: scale(1);
60 | filter: blur(0);
61 | }
62 |
63 | /**
64 | * "Blur Up"
65 | */
66 | .img--blur-up .img__placeholder {
67 | filter: blur(var(--img-blur));
68 | transform: scale(var(--img-scale));
69 | }
70 |
71 | @media (prefers-reduced-motion: no-preference) {
72 | .img--blur-up .img__element {
73 | transition: calc(var(--img-transition-duration) * 2) ease;
74 | transition-property: opacity;
75 | }
76 | }
77 |
78 | .img--blur-up.is-loaded .img__element {
79 | opacity: 1;
80 | }
81 |
--------------------------------------------------------------------------------
/examples/02-blur-down/src/irrelevant/index.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --space-md: 1rem;
3 | --space-sm: 0.5rem;
4 | }
5 |
6 | html,
7 | blockquote,
8 | body,
9 | p,
10 | ul,
11 | li {
12 | margin: 0;
13 | padding: 0;
14 | }
15 |
16 | html {
17 | font-family: Inter var, ui-sans-serif, system-ui, -apple-system,
18 | BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans,
19 | sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol,
20 | Noto Color Emoji;
21 | font-size: 100%;
22 | line-height: 1.2;
23 | -webkit-font-smoothing: antialiased;
24 | -moz-osx-font-smoothing: grayscale;
25 | }
26 |
27 | code {
28 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
29 | monospace;
30 | }
31 |
32 | a {
33 | color: inherit;
34 | font-weight: 600;
35 | text-decoration: underline;
36 | }
37 |
38 | .container {
39 | max-width: 640px;
40 | margin: var(--space-md) auto 0 auto;
41 | padding-left: var(--space-md);
42 | padding-right: var(--space-md);
43 | margin-top: var(--space-md);
44 | }
45 |
46 | .header {
47 | display: flex;
48 | color: #c05621;
49 | background: #fffaf0;
50 | padding: 0.75rem;
51 | border-radius: 0.5rem;
52 | border: 1px solid #fed7aa;
53 | }
54 |
55 | .header__icon {
56 | margin-right: 0.75rem;
57 | }
58 |
59 | .layout {
60 | display: flex;
61 | list-style-type: none;
62 | align-items: center;
63 | justify-content: center;
64 | }
65 |
66 | .layout__item {
67 | width: 100%;
68 | text-align: center;
69 | }
70 |
71 | .layout__item + .layout__item {
72 | margin-left: var(--space-md);
73 | }
74 |
75 | .layout__item > * + * {
76 | margin-top: var(--space-sm);
77 | }
78 |
79 | .layout__title {
80 | font-size: 1.2rem;
81 | font-weight: 600;
82 | }
83 |
84 | .mt-md {
85 | margin-top: var(--space-md);
86 | }
87 |
--------------------------------------------------------------------------------
/examples/02-blur-down/src/irrelevant/index.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 |
3 | export const Layout: React.FC = (props) => (
4 |
5 |
19 |
20 |
21 |
22 |
23 | );
24 |
25 | export const LayoutItem: React.FC = (props) => (
26 | {props.children}
27 | );
28 |
29 | export const LayoutTitle: React.FC = (props) => (
30 | {props.children}
31 | );
32 |
--------------------------------------------------------------------------------
/examples/02-blur-down/src/main.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom";
3 | import "./irrelevant/index.css";
4 | import App from "./App";
5 |
6 | ReactDOM.render(
7 |
8 |
9 | ,
10 | document.getElementById("root")
11 | );
12 |
--------------------------------------------------------------------------------
/examples/02-blur-down/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/examples/02-blur-down/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
5 | "allowJs": false,
6 | "skipLibCheck": false,
7 | "esModuleInterop": false,
8 | "allowSyntheticDefaultImports": true,
9 | "strict": true,
10 | "forceConsistentCasingInFileNames": true,
11 | "module": "ESNext",
12 | "moduleResolution": "Node",
13 | "resolveJsonModule": true,
14 | "isolatedModules": true,
15 | "noEmit": true,
16 | "jsx": "react"
17 | },
18 | "include": ["./src"]
19 | }
20 |
--------------------------------------------------------------------------------
/examples/02-blur-down/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 | import reactRefresh from "@vitejs/plugin-react-refresh";
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [reactRefresh()],
7 | });
8 |
--------------------------------------------------------------------------------
/examples/03-blur-comparison/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Demo: Loading Images With the “Blur Down” Technique
7 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/examples/03-blur-comparison/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "03-blur-comparison",
3 | "scripts": {
4 | "lint": "tsc --noEmit",
5 | "start": "vite",
6 | "build": "tsc && vite build"
7 | },
8 | "dependencies": {
9 | "react": "^17.0.0",
10 | "react-dom": "^17.0.0"
11 | },
12 | "devDependencies": {
13 | "@types/react": "^17.0.0",
14 | "@types/react-dom": "^17.0.0",
15 | "@vitejs/plugin-react-refresh": "^1.3.1",
16 | "typescript": "^4.3.5",
17 | "vite": "^2.5.1"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/examples/03-blur-comparison/src/App.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 | import { Layout, LayoutItem, LayoutTitle } from "./irrelevant";
3 | import { Img } from "./Img";
4 |
5 | import blurImgSrc from "./assets/blur.jpg";
6 |
7 | const blurImg = {
8 | alt: "Damon Albarn of the band 'Blur'",
9 | src: blurImgSrc,
10 | height: 1338,
11 | width: 2373,
12 | // Note: In production, you should generate your placeholder on the
13 | // server-side or at build time (e.g. via https://plaiceholder.co)
14 | //
15 | // In this example we'll use https://plaiceholder.co's unique CSS-only
16 | // placeholder approach, but these transitions will work just the same with
17 | // base64, blurhash and more…
18 | placeholder: {
19 | backgroundImage:
20 | "linear-gradient(90deg, rgb(62,38,99) 25%,rgb(48,23,55) 25% 50%,rgb(60,32,51) 50% 75%,rgb(12,5,27) 75% 100%),linear-gradient(90deg, rgb(46,24,75) 25%,rgb(49,23,40) 25% 50%,rgb(41,20,25) 50% 75%,rgb(11,7,17) 75% 100%)",
21 | backgroundPosition: "0 0 ,0 100%",
22 | backgroundSize: "100% 50%",
23 | backgroundRepeat: "no-repeat",
24 | },
25 | };
26 |
27 | const App = () => (
28 |
29 |
30 | Blur Down
31 |
32 |
33 |
34 |
35 | Blur Up
36 |
37 |
38 |
39 | );
40 |
41 | export default App;
42 |
--------------------------------------------------------------------------------
/examples/03-blur-comparison/src/Img.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 | import "./img.css";
3 |
4 | interface IImageProps {
5 | src: string;
6 | alt: string;
7 | height: number;
8 | placeholder: React.CSSProperties;
9 | width: number;
10 | variant: "blur-down" | "blur-up";
11 | }
12 |
13 | export const Img: React.FC = ({
14 | alt,
15 | src,
16 | height,
17 | placeholder,
18 | width,
19 | variant,
20 | }) => {
21 | const [isLoaded, setIsLoaded] = React.useState(false);
22 |
23 | return (
24 |
34 |
35 |
setIsLoaded(true)}
40 | />
41 |
42 | );
43 | };
44 |
--------------------------------------------------------------------------------
/examples/03-blur-comparison/src/assets/blur.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/joe-bell/blur-down/3d7b9d2a6e3d2d5d2bffc8dffaf095bef7d3c749/examples/03-blur-comparison/src/assets/blur.jpg
--------------------------------------------------------------------------------
/examples/03-blur-comparison/src/img.css:
--------------------------------------------------------------------------------
1 | /* Base
2 | =========================================== */
3 |
4 | /**
5 | * 1. Enforce hardware acceleration
6 | * 2. Optional: prevent CLS by defining the aspect ratio up front.
7 | * `--img-aspect-ratio` is set via inline `style`, and determined via the
8 | * required `width` and `height` props.
9 | * 3. Visually hide alt-text
10 | */
11 | .img {
12 | --img-blur: 42px;
13 | --img-scale: 1.5;
14 | --img-transition-duration: 1.2s;
15 | display: block;
16 | position: relative;
17 | overflow: hidden;
18 | transform: translateZ(0); /* [1] */
19 | padding-bottom: var(--img-aspect-ratio); /* [2] */
20 | }
21 |
22 | .img__element /* [2] */,
23 | .img__placeholder {
24 | inset: 0;
25 | position: absolute;
26 | display: block;
27 | max-width: 100%;
28 | width: 100%;
29 | height: 100%;
30 | }
31 |
32 | .img__element {
33 | font-size: 0; /* [3] */
34 | opacity: 0;
35 | }
36 |
37 | /* Variants
38 | =========================================== */
39 |
40 | /**
41 | * "Blur Down"
42 | */
43 | .img--blur-down .img__element,
44 | .img--blur-down .img__placeholder {
45 | filter: blur(var(--img-blur));
46 | transform: scale(var(--img-scale));
47 | }
48 |
49 | @media (prefers-reduced-motion: no-preference) {
50 | .img--blur-down .img__element {
51 | transition: var(--img-transition-duration) ease;
52 | transition-property: filter, opacity, transform;
53 | will-change: filter, transform;
54 | }
55 | }
56 |
57 | .img--blur-down.is-loaded .img__element {
58 | opacity: 1;
59 | transform: scale(1);
60 | filter: blur(0);
61 | }
62 |
63 | /**
64 | * "Blur Up"
65 | */
66 | .img--blur-up .img__placeholder {
67 | filter: blur(var(--img-blur));
68 | transform: scale(var(--img-scale));
69 | }
70 |
71 | @media (prefers-reduced-motion: no-preference) {
72 | .img--blur-up .img__element {
73 | transition: calc(var(--img-transition-duration) * 2) ease;
74 | transition-property: opacity;
75 | }
76 | }
77 |
78 | .img--blur-up.is-loaded .img__element {
79 | opacity: 1;
80 | }
81 |
--------------------------------------------------------------------------------
/examples/03-blur-comparison/src/irrelevant/index.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --space-md: 1rem;
3 | --space-sm: 0.5rem;
4 | }
5 |
6 | html,
7 | blockquote,
8 | body,
9 | p,
10 | ul,
11 | li {
12 | margin: 0;
13 | padding: 0;
14 | }
15 |
16 | html {
17 | font-family: Inter var, ui-sans-serif, system-ui, -apple-system,
18 | BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans,
19 | sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol,
20 | Noto Color Emoji;
21 | font-size: 100%;
22 | line-height: 1.2;
23 | -webkit-font-smoothing: antialiased;
24 | -moz-osx-font-smoothing: grayscale;
25 | }
26 |
27 | code {
28 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
29 | monospace;
30 | }
31 |
32 | a {
33 | color: inherit;
34 | font-weight: 600;
35 | text-decoration: underline;
36 | }
37 |
38 | .container {
39 | max-width: 640px;
40 | margin: var(--space-md) auto 0 auto;
41 | padding-left: var(--space-md);
42 | padding-right: var(--space-md);
43 | margin-top: var(--space-md);
44 | }
45 |
46 | .header {
47 | display: flex;
48 | color: #c05621;
49 | background: #fffaf0;
50 | padding: 0.75rem;
51 | border-radius: 0.5rem;
52 | border: 1px solid #fed7aa;
53 | }
54 |
55 | .header__icon {
56 | margin-right: 0.75rem;
57 | }
58 |
59 | .layout {
60 | display: flex;
61 | list-style-type: none;
62 | align-items: center;
63 | justify-content: center;
64 | }
65 |
66 | .layout__item {
67 | width: 100%;
68 | text-align: center;
69 | }
70 |
71 | .layout__item + .layout__item {
72 | margin-left: var(--space-md);
73 | }
74 |
75 | .layout__item > * + * {
76 | margin-top: var(--space-sm);
77 | }
78 |
79 | .layout__title {
80 | font-size: 1.2rem;
81 | font-weight: 600;
82 | }
83 |
84 | .mt-md {
85 | margin-top: var(--space-md);
86 | }
87 |
--------------------------------------------------------------------------------
/examples/03-blur-comparison/src/irrelevant/index.tsx:
--------------------------------------------------------------------------------
1 | import * as React from "react";
2 |
3 | export const Layout: React.FC = (props) => (
4 |
5 |
19 |
20 |
21 |
22 |
23 | );
24 |
25 | export const LayoutItem: React.FC = (props) => (
26 | {props.children}
27 | );
28 |
29 | export const LayoutTitle: React.FC = (props) => (
30 | {props.children}
31 | );
32 |
--------------------------------------------------------------------------------
/examples/03-blur-comparison/src/main.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom";
3 | import "./irrelevant/index.css";
4 | import App from "./App";
5 |
6 | ReactDOM.render(
7 |
8 |
9 | ,
10 | document.getElementById("root")
11 | );
12 |
--------------------------------------------------------------------------------
/examples/03-blur-comparison/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/examples/03-blur-comparison/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "lib": ["DOM", "DOM.Iterable", "ESNext"],
5 | "allowJs": false,
6 | "skipLibCheck": false,
7 | "esModuleInterop": false,
8 | "allowSyntheticDefaultImports": true,
9 | "strict": true,
10 | "forceConsistentCasingInFileNames": true,
11 | "module": "ESNext",
12 | "moduleResolution": "Node",
13 | "resolveJsonModule": true,
14 | "isolatedModules": true,
15 | "noEmit": true,
16 | "jsx": "react"
17 | },
18 | "include": ["./src"]
19 | }
20 |
--------------------------------------------------------------------------------
/examples/03-blur-comparison/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 | import reactRefresh from "@vitejs/plugin-react-refresh";
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [reactRefresh()],
7 | });
8 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "name": "root",
4 | "scripts": {
5 | "preinstall": "npx only-allow pnpm",
6 | "build": "pnpm run build --r --stream",
7 | "lint": "pnpm run lint --r --stream",
8 | "setup": "npm i -g pnpm@6.14.3",
9 | "commit": "git-cz"
10 | },
11 | "engines": {
12 | "pnpm": ">=6.14.3"
13 | },
14 | "commitlint": {
15 | "extends": [
16 | "@commitlint/config-conventional"
17 | ]
18 | },
19 | "config": {
20 | "commitizen": {
21 | "path": "cz-conventional-changelog"
22 | }
23 | },
24 | "husky": {
25 | "hooks": {
26 | "pre-commit": "pnpm run lint && lint-staged"
27 | }
28 | },
29 | "lint-staged": {
30 | "*": "prettier --ignore-unknown --write"
31 | },
32 | "devDependencies": {
33 | "commitizen": "4.2.4",
34 | "cz-conventional-changelog": "3.3.0",
35 | "husky": "4.3.8",
36 | "lint-staged": "11.1.2",
37 | "prettier": "2.3.2"
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.3
2 |
3 | importers:
4 | .:
5 | specifiers:
6 | commitizen: 4.2.4
7 | cz-conventional-changelog: 3.3.0
8 | husky: 4.3.8
9 | lint-staged: 11.1.2
10 | prettier: 2.3.2
11 | devDependencies:
12 | commitizen: 4.2.4
13 | cz-conventional-changelog: 3.3.0
14 | husky: 4.3.8
15 | lint-staged: 11.1.2
16 | prettier: 2.3.2
17 |
18 | examples/01-blur-up:
19 | specifiers:
20 | "@types/react": ^17.0.0
21 | "@types/react-dom": ^17.0.0
22 | "@vitejs/plugin-react-refresh": ^1.3.1
23 | react: ^17.0.0
24 | react-dom: ^17.0.0
25 | typescript: ^4.3.5
26 | vite: ^2.5.1
27 | dependencies:
28 | react: 17.0.2
29 | react-dom: 17.0.2_react@17.0.2
30 | devDependencies:
31 | "@types/react": 17.0.19
32 | "@types/react-dom": 17.0.9
33 | "@vitejs/plugin-react-refresh": 1.3.6
34 | typescript: 4.3.5
35 | vite: 2.5.1
36 |
37 | examples/02-blur-down:
38 | specifiers:
39 | "@types/react": ^17.0.0
40 | "@types/react-dom": ^17.0.0
41 | "@vitejs/plugin-react-refresh": ^1.3.1
42 | react: ^17.0.0
43 | react-dom: ^17.0.0
44 | typescript: ^4.3.5
45 | vite: ^2.5.1
46 | dependencies:
47 | react: 17.0.2
48 | react-dom: 17.0.2_react@17.0.2
49 | devDependencies:
50 | "@types/react": 17.0.19
51 | "@types/react-dom": 17.0.9
52 | "@vitejs/plugin-react-refresh": 1.3.6
53 | typescript: 4.3.5
54 | vite: 2.5.1
55 |
56 | examples/03-blur-comparison:
57 | specifiers:
58 | "@types/react": ^17.0.0
59 | "@types/react-dom": ^17.0.0
60 | "@vitejs/plugin-react-refresh": ^1.3.1
61 | react: ^17.0.0
62 | react-dom: ^17.0.0
63 | typescript: ^4.3.5
64 | vite: ^2.5.1
65 | dependencies:
66 | react: 17.0.2
67 | react-dom: 17.0.2_react@17.0.2
68 | devDependencies:
69 | "@types/react": 17.0.19
70 | "@types/react-dom": 17.0.9
71 | "@vitejs/plugin-react-refresh": 1.3.6
72 | typescript: 4.3.5
73 | vite: 2.5.1
74 |
75 | packages:
76 | /@babel/code-frame/7.14.5:
77 | resolution:
78 | {
79 | integrity: sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==,
80 | }
81 | engines: { node: ">=6.9.0" }
82 | dependencies:
83 | "@babel/highlight": 7.14.5
84 | dev: true
85 |
86 | /@babel/compat-data/7.15.0:
87 | resolution:
88 | {
89 | integrity: sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==,
90 | }
91 | engines: { node: ">=6.9.0" }
92 | dev: true
93 |
94 | /@babel/core/7.15.0:
95 | resolution:
96 | {
97 | integrity: sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==,
98 | }
99 | engines: { node: ">=6.9.0" }
100 | dependencies:
101 | "@babel/code-frame": 7.14.5
102 | "@babel/generator": 7.15.0
103 | "@babel/helper-compilation-targets": 7.15.0_@babel+core@7.15.0
104 | "@babel/helper-module-transforms": 7.15.0
105 | "@babel/helpers": 7.15.3
106 | "@babel/parser": 7.15.3
107 | "@babel/template": 7.14.5
108 | "@babel/traverse": 7.15.0
109 | "@babel/types": 7.15.0
110 | convert-source-map: 1.8.0
111 | debug: 4.3.2
112 | gensync: 1.0.0-beta.2
113 | json5: 2.2.0
114 | semver: 6.3.0
115 | source-map: 0.5.7
116 | transitivePeerDependencies:
117 | - supports-color
118 | dev: true
119 |
120 | /@babel/generator/7.15.0:
121 | resolution:
122 | {
123 | integrity: sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==,
124 | }
125 | engines: { node: ">=6.9.0" }
126 | dependencies:
127 | "@babel/types": 7.15.0
128 | jsesc: 2.5.2
129 | source-map: 0.5.7
130 | dev: true
131 |
132 | /@babel/helper-compilation-targets/7.15.0_@babel+core@7.15.0:
133 | resolution:
134 | {
135 | integrity: sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==,
136 | }
137 | engines: { node: ">=6.9.0" }
138 | peerDependencies:
139 | "@babel/core": ^7.0.0
140 | dependencies:
141 | "@babel/compat-data": 7.15.0
142 | "@babel/core": 7.15.0
143 | "@babel/helper-validator-option": 7.14.5
144 | browserslist: 4.16.8
145 | semver: 6.3.0
146 | dev: true
147 |
148 | /@babel/helper-function-name/7.14.5:
149 | resolution:
150 | {
151 | integrity: sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==,
152 | }
153 | engines: { node: ">=6.9.0" }
154 | dependencies:
155 | "@babel/helper-get-function-arity": 7.14.5
156 | "@babel/template": 7.14.5
157 | "@babel/types": 7.15.0
158 | dev: true
159 |
160 | /@babel/helper-get-function-arity/7.14.5:
161 | resolution:
162 | {
163 | integrity: sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==,
164 | }
165 | engines: { node: ">=6.9.0" }
166 | dependencies:
167 | "@babel/types": 7.15.0
168 | dev: true
169 |
170 | /@babel/helper-hoist-variables/7.14.5:
171 | resolution:
172 | {
173 | integrity: sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==,
174 | }
175 | engines: { node: ">=6.9.0" }
176 | dependencies:
177 | "@babel/types": 7.15.0
178 | dev: true
179 |
180 | /@babel/helper-member-expression-to-functions/7.15.0:
181 | resolution:
182 | {
183 | integrity: sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==,
184 | }
185 | engines: { node: ">=6.9.0" }
186 | dependencies:
187 | "@babel/types": 7.15.0
188 | dev: true
189 |
190 | /@babel/helper-module-imports/7.14.5:
191 | resolution:
192 | {
193 | integrity: sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==,
194 | }
195 | engines: { node: ">=6.9.0" }
196 | dependencies:
197 | "@babel/types": 7.15.0
198 | dev: true
199 |
200 | /@babel/helper-module-transforms/7.15.0:
201 | resolution:
202 | {
203 | integrity: sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==,
204 | }
205 | engines: { node: ">=6.9.0" }
206 | dependencies:
207 | "@babel/helper-module-imports": 7.14.5
208 | "@babel/helper-replace-supers": 7.15.0
209 | "@babel/helper-simple-access": 7.14.8
210 | "@babel/helper-split-export-declaration": 7.14.5
211 | "@babel/helper-validator-identifier": 7.14.9
212 | "@babel/template": 7.14.5
213 | "@babel/traverse": 7.15.0
214 | "@babel/types": 7.15.0
215 | transitivePeerDependencies:
216 | - supports-color
217 | dev: true
218 |
219 | /@babel/helper-optimise-call-expression/7.14.5:
220 | resolution:
221 | {
222 | integrity: sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==,
223 | }
224 | engines: { node: ">=6.9.0" }
225 | dependencies:
226 | "@babel/types": 7.15.0
227 | dev: true
228 |
229 | /@babel/helper-plugin-utils/7.14.5:
230 | resolution:
231 | {
232 | integrity: sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==,
233 | }
234 | engines: { node: ">=6.9.0" }
235 | dev: true
236 |
237 | /@babel/helper-replace-supers/7.15.0:
238 | resolution:
239 | {
240 | integrity: sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==,
241 | }
242 | engines: { node: ">=6.9.0" }
243 | dependencies:
244 | "@babel/helper-member-expression-to-functions": 7.15.0
245 | "@babel/helper-optimise-call-expression": 7.14.5
246 | "@babel/traverse": 7.15.0
247 | "@babel/types": 7.15.0
248 | transitivePeerDependencies:
249 | - supports-color
250 | dev: true
251 |
252 | /@babel/helper-simple-access/7.14.8:
253 | resolution:
254 | {
255 | integrity: sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==,
256 | }
257 | engines: { node: ">=6.9.0" }
258 | dependencies:
259 | "@babel/types": 7.15.0
260 | dev: true
261 |
262 | /@babel/helper-split-export-declaration/7.14.5:
263 | resolution:
264 | {
265 | integrity: sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==,
266 | }
267 | engines: { node: ">=6.9.0" }
268 | dependencies:
269 | "@babel/types": 7.15.0
270 | dev: true
271 |
272 | /@babel/helper-validator-identifier/7.14.9:
273 | resolution:
274 | {
275 | integrity: sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==,
276 | }
277 | engines: { node: ">=6.9.0" }
278 | dev: true
279 |
280 | /@babel/helper-validator-option/7.14.5:
281 | resolution:
282 | {
283 | integrity: sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==,
284 | }
285 | engines: { node: ">=6.9.0" }
286 | dev: true
287 |
288 | /@babel/helpers/7.15.3:
289 | resolution:
290 | {
291 | integrity: sha512-HwJiz52XaS96lX+28Tnbu31VeFSQJGOeKHJeaEPQlTl7PnlhFElWPj8tUXtqFIzeN86XxXoBr+WFAyK2PPVz6g==,
292 | }
293 | engines: { node: ">=6.9.0" }
294 | dependencies:
295 | "@babel/template": 7.14.5
296 | "@babel/traverse": 7.15.0
297 | "@babel/types": 7.15.0
298 | transitivePeerDependencies:
299 | - supports-color
300 | dev: true
301 |
302 | /@babel/highlight/7.14.5:
303 | resolution:
304 | {
305 | integrity: sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==,
306 | }
307 | engines: { node: ">=6.9.0" }
308 | dependencies:
309 | "@babel/helper-validator-identifier": 7.14.9
310 | chalk: 2.4.2
311 | js-tokens: 4.0.0
312 | dev: true
313 |
314 | /@babel/parser/7.15.3:
315 | resolution:
316 | {
317 | integrity: sha512-O0L6v/HvqbdJawj0iBEfVQMc3/6WP+AeOsovsIgBFyJaG+W2w7eqvZB7puddATmWuARlm1SX7DwxJ/JJUnDpEA==,
318 | }
319 | engines: { node: ">=6.0.0" }
320 | hasBin: true
321 | dev: true
322 |
323 | /@babel/plugin-transform-react-jsx-self/7.14.9_@babel+core@7.15.0:
324 | resolution:
325 | {
326 | integrity: sha512-Fqqu0f8zv9W+RyOnx29BX/RlEsBRANbOf5xs5oxb2aHP4FKbLXxIaVPUiCti56LAR1IixMH4EyaixhUsKqoBHw==,
327 | }
328 | engines: { node: ">=6.9.0" }
329 | peerDependencies:
330 | "@babel/core": ^7.0.0-0
331 | dependencies:
332 | "@babel/core": 7.15.0
333 | "@babel/helper-plugin-utils": 7.14.5
334 | dev: true
335 |
336 | /@babel/plugin-transform-react-jsx-source/7.14.5_@babel+core@7.15.0:
337 | resolution:
338 | {
339 | integrity: sha512-1TpSDnD9XR/rQ2tzunBVPThF5poaYT9GqP+of8fAtguYuI/dm2RkrMBDemsxtY0XBzvW7nXjYM0hRyKX9QYj7Q==,
340 | }
341 | engines: { node: ">=6.9.0" }
342 | peerDependencies:
343 | "@babel/core": ^7.0.0-0
344 | dependencies:
345 | "@babel/core": 7.15.0
346 | "@babel/helper-plugin-utils": 7.14.5
347 | dev: true
348 |
349 | /@babel/template/7.14.5:
350 | resolution:
351 | {
352 | integrity: sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==,
353 | }
354 | engines: { node: ">=6.9.0" }
355 | dependencies:
356 | "@babel/code-frame": 7.14.5
357 | "@babel/parser": 7.15.3
358 | "@babel/types": 7.15.0
359 | dev: true
360 |
361 | /@babel/traverse/7.15.0:
362 | resolution:
363 | {
364 | integrity: sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==,
365 | }
366 | engines: { node: ">=6.9.0" }
367 | dependencies:
368 | "@babel/code-frame": 7.14.5
369 | "@babel/generator": 7.15.0
370 | "@babel/helper-function-name": 7.14.5
371 | "@babel/helper-hoist-variables": 7.14.5
372 | "@babel/helper-split-export-declaration": 7.14.5
373 | "@babel/parser": 7.15.3
374 | "@babel/types": 7.15.0
375 | debug: 4.3.2
376 | globals: 11.12.0
377 | transitivePeerDependencies:
378 | - supports-color
379 | dev: true
380 |
381 | /@babel/types/7.15.0:
382 | resolution:
383 | {
384 | integrity: sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==,
385 | }
386 | engines: { node: ">=6.9.0" }
387 | dependencies:
388 | "@babel/helper-validator-identifier": 7.14.9
389 | to-fast-properties: 2.0.0
390 | dev: true
391 |
392 | /@commitlint/execute-rule/13.0.0:
393 | resolution:
394 | {
395 | integrity: sha512-lBz2bJhNAgkkU/rFMAw3XBNujbxhxlaFHY3lfKB/MxpAa+pIfmWB3ig9i1VKe0wCvujk02O0WiMleNaRn2KJqw==,
396 | }
397 | engines: { node: ">=v12" }
398 | dev: true
399 | optional: true
400 |
401 | /@commitlint/load/13.1.0:
402 | resolution:
403 | {
404 | integrity: sha512-zlZbjJCWnWmBOSwTXis8H7I6pYk6JbDwOCuARA6B9Y/qt2PD+NCo0E/7EuaaFoxjHl+o56QR5QttuMBrf+BJzg==,
405 | }
406 | engines: { node: ">=v12" }
407 | dependencies:
408 | "@commitlint/execute-rule": 13.0.0
409 | "@commitlint/resolve-extends": 13.0.0
410 | "@commitlint/types": 13.1.0
411 | chalk: 4.1.2
412 | cosmiconfig: 7.0.1
413 | lodash: 4.17.21
414 | resolve-from: 5.0.0
415 | dev: true
416 | optional: true
417 |
418 | /@commitlint/resolve-extends/13.0.0:
419 | resolution:
420 | {
421 | integrity: sha512-1SyaE+UOsYTkQlTPUOoj4NwxQhGFtYildVS/d0TJuK8a9uAJLw7bhCLH2PEeH5cC2D1do4Eqhx/3bLDrSLH3hg==,
422 | }
423 | engines: { node: ">=v12" }
424 | dependencies:
425 | import-fresh: 3.3.0
426 | lodash: 4.17.21
427 | resolve-from: 5.0.0
428 | resolve-global: 1.0.0
429 | dev: true
430 | optional: true
431 |
432 | /@commitlint/types/13.1.0:
433 | resolution:
434 | {
435 | integrity: sha512-zcVjuT+OfKt8h91vhBxt05RMcTGEx6DM7Q9QZeuMbXFk6xgbsSEDMMapbJPA1bCZ81fa/1OQBijSYPrKvtt06g==,
436 | }
437 | engines: { node: ">=v12" }
438 | dependencies:
439 | chalk: 4.1.2
440 | dev: true
441 | optional: true
442 |
443 | /@rollup/pluginutils/4.1.1:
444 | resolution:
445 | {
446 | integrity: sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ==,
447 | }
448 | engines: { node: ">= 8.0.0" }
449 | dependencies:
450 | estree-walker: 2.0.2
451 | picomatch: 2.3.0
452 | dev: true
453 |
454 | /@types/parse-json/4.0.0:
455 | resolution:
456 | {
457 | integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==,
458 | }
459 | dev: true
460 |
461 | /@types/prop-types/15.7.4:
462 | resolution:
463 | {
464 | integrity: sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==,
465 | }
466 | dev: true
467 |
468 | /@types/react-dom/17.0.9:
469 | resolution:
470 | {
471 | integrity: sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg==,
472 | }
473 | dependencies:
474 | "@types/react": 17.0.19
475 | dev: true
476 |
477 | /@types/react/17.0.19:
478 | resolution:
479 | {
480 | integrity: sha512-sX1HisdB1/ZESixMTGnMxH9TDe8Sk709734fEQZzCV/4lSu9kJCPbo2PbTRoZM+53Pp0P10hYVyReUueGwUi4A==,
481 | }
482 | dependencies:
483 | "@types/prop-types": 15.7.4
484 | "@types/scheduler": 0.16.2
485 | csstype: 3.0.8
486 | dev: true
487 |
488 | /@types/scheduler/0.16.2:
489 | resolution:
490 | {
491 | integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==,
492 | }
493 | dev: true
494 |
495 | /@vitejs/plugin-react-refresh/1.3.6:
496 | resolution:
497 | {
498 | integrity: sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA==,
499 | }
500 | engines: { node: ">=12.0.0" }
501 | dependencies:
502 | "@babel/core": 7.15.0
503 | "@babel/plugin-transform-react-jsx-self": 7.14.9_@babel+core@7.15.0
504 | "@babel/plugin-transform-react-jsx-source": 7.14.5_@babel+core@7.15.0
505 | "@rollup/pluginutils": 4.1.1
506 | react-refresh: 0.10.0
507 | transitivePeerDependencies:
508 | - supports-color
509 | dev: true
510 |
511 | /aggregate-error/3.1.0:
512 | resolution:
513 | {
514 | integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==,
515 | }
516 | engines: { node: ">=8" }
517 | dependencies:
518 | clean-stack: 2.2.0
519 | indent-string: 4.0.0
520 | dev: true
521 |
522 | /ansi-colors/4.1.1:
523 | resolution:
524 | {
525 | integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==,
526 | }
527 | engines: { node: ">=6" }
528 | dev: true
529 |
530 | /ansi-escapes/3.2.0:
531 | resolution:
532 | {
533 | integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==,
534 | }
535 | engines: { node: ">=4" }
536 | dev: true
537 |
538 | /ansi-escapes/4.3.2:
539 | resolution:
540 | {
541 | integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==,
542 | }
543 | engines: { node: ">=8" }
544 | dependencies:
545 | type-fest: 0.21.3
546 | dev: true
547 |
548 | /ansi-regex/3.0.0:
549 | resolution: { integrity: sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= }
550 | engines: { node: ">=4" }
551 | dev: true
552 |
553 | /ansi-regex/4.1.0:
554 | resolution:
555 | {
556 | integrity: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==,
557 | }
558 | engines: { node: ">=6" }
559 | dev: true
560 |
561 | /ansi-regex/5.0.0:
562 | resolution:
563 | {
564 | integrity: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==,
565 | }
566 | engines: { node: ">=8" }
567 | dev: true
568 |
569 | /ansi-styles/3.2.1:
570 | resolution:
571 | {
572 | integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==,
573 | }
574 | engines: { node: ">=4" }
575 | dependencies:
576 | color-convert: 1.9.3
577 | dev: true
578 |
579 | /ansi-styles/4.3.0:
580 | resolution:
581 | {
582 | integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==,
583 | }
584 | engines: { node: ">=8" }
585 | dependencies:
586 | color-convert: 2.0.1
587 | dev: true
588 |
589 | /astral-regex/2.0.0:
590 | resolution:
591 | {
592 | integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==,
593 | }
594 | engines: { node: ">=8" }
595 | dev: true
596 |
597 | /balanced-match/1.0.2:
598 | resolution:
599 | {
600 | integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==,
601 | }
602 | dev: true
603 |
604 | /brace-expansion/1.1.11:
605 | resolution:
606 | {
607 | integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==,
608 | }
609 | dependencies:
610 | balanced-match: 1.0.2
611 | concat-map: 0.0.1
612 | dev: true
613 |
614 | /braces/3.0.2:
615 | resolution:
616 | {
617 | integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==,
618 | }
619 | engines: { node: ">=8" }
620 | dependencies:
621 | fill-range: 7.0.1
622 | dev: true
623 |
624 | /browserslist/4.16.8:
625 | resolution:
626 | {
627 | integrity: sha512-sc2m9ohR/49sWEbPj14ZSSZqp+kbi16aLao42Hmn3Z8FpjuMaq2xCA2l4zl9ITfyzvnvyE0hcg62YkIGKxgaNQ==,
628 | }
629 | engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 }
630 | hasBin: true
631 | dependencies:
632 | caniuse-lite: 1.0.30001252
633 | colorette: 1.3.0
634 | electron-to-chromium: 1.3.818
635 | escalade: 3.1.1
636 | node-releases: 1.1.75
637 | dev: true
638 |
639 | /cachedir/2.2.0:
640 | resolution:
641 | {
642 | integrity: sha512-VvxA0xhNqIIfg0V9AmJkDg91DaJwryutH5rVEZAhcNi4iJFj9f+QxmAjgK1LT9I8OgToX27fypX6/MeCXVbBjQ==,
643 | }
644 | engines: { node: ">=6" }
645 | dev: true
646 |
647 | /callsites/3.1.0:
648 | resolution:
649 | {
650 | integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==,
651 | }
652 | engines: { node: ">=6" }
653 | dev: true
654 |
655 | /caniuse-lite/1.0.30001252:
656 | resolution:
657 | {
658 | integrity: sha512-I56jhWDGMtdILQORdusxBOH+Nl/KgQSdDmpJezYddnAkVOmnoU8zwjTV9xAjMIYxr0iPreEAVylCGcmHCjfaOw==,
659 | }
660 | dev: true
661 |
662 | /chalk/2.4.2:
663 | resolution:
664 | {
665 | integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==,
666 | }
667 | engines: { node: ">=4" }
668 | dependencies:
669 | ansi-styles: 3.2.1
670 | escape-string-regexp: 1.0.5
671 | supports-color: 5.5.0
672 | dev: true
673 |
674 | /chalk/4.1.2:
675 | resolution:
676 | {
677 | integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==,
678 | }
679 | engines: { node: ">=10" }
680 | dependencies:
681 | ansi-styles: 4.3.0
682 | supports-color: 7.2.0
683 | dev: true
684 |
685 | /chardet/0.7.0:
686 | resolution:
687 | {
688 | integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==,
689 | }
690 | dev: true
691 |
692 | /ci-info/2.0.0:
693 | resolution:
694 | {
695 | integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==,
696 | }
697 | dev: true
698 |
699 | /clean-stack/2.2.0:
700 | resolution:
701 | {
702 | integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==,
703 | }
704 | engines: { node: ">=6" }
705 | dev: true
706 |
707 | /cli-cursor/2.1.0:
708 | resolution: { integrity: sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= }
709 | engines: { node: ">=4" }
710 | dependencies:
711 | restore-cursor: 2.0.0
712 | dev: true
713 |
714 | /cli-cursor/3.1.0:
715 | resolution:
716 | {
717 | integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==,
718 | }
719 | engines: { node: ">=8" }
720 | dependencies:
721 | restore-cursor: 3.1.0
722 | dev: true
723 |
724 | /cli-truncate/2.1.0:
725 | resolution:
726 | {
727 | integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==,
728 | }
729 | engines: { node: ">=8" }
730 | dependencies:
731 | slice-ansi: 3.0.0
732 | string-width: 4.2.2
733 | dev: true
734 |
735 | /cli-width/2.2.1:
736 | resolution:
737 | {
738 | integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==,
739 | }
740 | dev: true
741 |
742 | /color-convert/1.9.3:
743 | resolution:
744 | {
745 | integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==,
746 | }
747 | dependencies:
748 | color-name: 1.1.3
749 | dev: true
750 |
751 | /color-convert/2.0.1:
752 | resolution:
753 | {
754 | integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==,
755 | }
756 | engines: { node: ">=7.0.0" }
757 | dependencies:
758 | color-name: 1.1.4
759 | dev: true
760 |
761 | /color-name/1.1.3:
762 | resolution: { integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= }
763 | dev: true
764 |
765 | /color-name/1.1.4:
766 | resolution:
767 | {
768 | integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==,
769 | }
770 | dev: true
771 |
772 | /colorette/1.3.0:
773 | resolution:
774 | {
775 | integrity: sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==,
776 | }
777 | dev: true
778 |
779 | /commander/7.2.0:
780 | resolution:
781 | {
782 | integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==,
783 | }
784 | engines: { node: ">= 10" }
785 | dev: true
786 |
787 | /commitizen/4.2.4:
788 | resolution:
789 | {
790 | integrity: sha512-LlZChbDzg3Ir3O2S7jSo/cgWp5/QwylQVr59K4xayVq8S4/RdKzSyJkghAiZZHfhh5t4pxunUoyeg0ml1q/7aw==,
791 | }
792 | engines: { node: ">= 10" }
793 | hasBin: true
794 | dependencies:
795 | cachedir: 2.2.0
796 | cz-conventional-changelog: 3.2.0
797 | dedent: 0.7.0
798 | detect-indent: 6.0.0
799 | find-node-modules: 2.1.2
800 | find-root: 1.1.0
801 | fs-extra: 8.1.0
802 | glob: 7.1.4
803 | inquirer: 6.5.2
804 | is-utf8: 0.2.1
805 | lodash: 4.17.21
806 | minimist: 1.2.5
807 | strip-bom: 4.0.0
808 | strip-json-comments: 3.0.1
809 | dev: true
810 |
811 | /compare-versions/3.6.0:
812 | resolution:
813 | {
814 | integrity: sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==,
815 | }
816 | dev: true
817 |
818 | /concat-map/0.0.1:
819 | resolution: { integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= }
820 | dev: true
821 |
822 | /conventional-commit-types/3.0.0:
823 | resolution:
824 | {
825 | integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==,
826 | }
827 | dev: true
828 |
829 | /convert-source-map/1.8.0:
830 | resolution:
831 | {
832 | integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==,
833 | }
834 | dependencies:
835 | safe-buffer: 5.1.2
836 | dev: true
837 |
838 | /cosmiconfig/7.0.1:
839 | resolution:
840 | {
841 | integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==,
842 | }
843 | engines: { node: ">=10" }
844 | dependencies:
845 | "@types/parse-json": 4.0.0
846 | import-fresh: 3.3.0
847 | parse-json: 5.2.0
848 | path-type: 4.0.0
849 | yaml: 1.10.2
850 | dev: true
851 |
852 | /cross-spawn/7.0.3:
853 | resolution:
854 | {
855 | integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==,
856 | }
857 | engines: { node: ">= 8" }
858 | dependencies:
859 | path-key: 3.1.1
860 | shebang-command: 2.0.0
861 | which: 2.0.2
862 | dev: true
863 |
864 | /csstype/3.0.8:
865 | resolution:
866 | {
867 | integrity: sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==,
868 | }
869 | dev: true
870 |
871 | /cz-conventional-changelog/3.2.0:
872 | resolution:
873 | {
874 | integrity: sha512-yAYxeGpVi27hqIilG1nh4A9Bnx4J3Ov+eXy4koL3drrR+IO9GaWPsKjik20ht608Asqi8TQPf0mczhEeyAtMzg==,
875 | }
876 | engines: { node: ">= 10" }
877 | dependencies:
878 | chalk: 2.4.2
879 | commitizen: 4.2.4
880 | conventional-commit-types: 3.0.0
881 | lodash.map: 4.6.0
882 | longest: 2.0.1
883 | word-wrap: 1.2.3
884 | optionalDependencies:
885 | "@commitlint/load": 13.1.0
886 | dev: true
887 |
888 | /cz-conventional-changelog/3.3.0:
889 | resolution:
890 | {
891 | integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==,
892 | }
893 | engines: { node: ">= 10" }
894 | dependencies:
895 | chalk: 2.4.2
896 | commitizen: 4.2.4
897 | conventional-commit-types: 3.0.0
898 | lodash.map: 4.6.0
899 | longest: 2.0.1
900 | word-wrap: 1.2.3
901 | optionalDependencies:
902 | "@commitlint/load": 13.1.0
903 | dev: true
904 |
905 | /debug/4.3.2:
906 | resolution:
907 | {
908 | integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==,
909 | }
910 | engines: { node: ">=6.0" }
911 | peerDependencies:
912 | supports-color: "*"
913 | peerDependenciesMeta:
914 | supports-color:
915 | optional: true
916 | dependencies:
917 | ms: 2.1.2
918 | dev: true
919 |
920 | /dedent/0.7.0:
921 | resolution: { integrity: sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= }
922 | dev: true
923 |
924 | /detect-file/1.0.0:
925 | resolution: { integrity: sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= }
926 | engines: { node: ">=0.10.0" }
927 | dev: true
928 |
929 | /detect-indent/6.0.0:
930 | resolution:
931 | {
932 | integrity: sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==,
933 | }
934 | engines: { node: ">=8" }
935 | dev: true
936 |
937 | /electron-to-chromium/1.3.818:
938 | resolution:
939 | {
940 | integrity: sha512-c/Z9gIr+jDZAR9q+mn40hEc1NharBT+8ejkarjbCDnBNFviI6hvcC5j2ezkAXru//bTnQp5n6iPi0JA83Tla1Q==,
941 | }
942 | dev: true
943 |
944 | /emoji-regex/8.0.0:
945 | resolution:
946 | {
947 | integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==,
948 | }
949 | dev: true
950 |
951 | /enquirer/2.3.6:
952 | resolution:
953 | {
954 | integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==,
955 | }
956 | engines: { node: ">=8.6" }
957 | dependencies:
958 | ansi-colors: 4.1.1
959 | dev: true
960 |
961 | /error-ex/1.3.2:
962 | resolution:
963 | {
964 | integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==,
965 | }
966 | dependencies:
967 | is-arrayish: 0.2.1
968 | dev: true
969 |
970 | /esbuild/0.12.23:
971 | resolution:
972 | {
973 | integrity: sha512-qvS4aKnmKikoWGscd5lVAzgobMovlH/JhaWitRiQ8xJx0x1Fym0pqVjMFs43Nvff8WpibeWm+fWoLK88T1U0Xw==,
974 | }
975 | hasBin: true
976 | requiresBuild: true
977 | dev: true
978 |
979 | /escalade/3.1.1:
980 | resolution:
981 | {
982 | integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==,
983 | }
984 | engines: { node: ">=6" }
985 | dev: true
986 |
987 | /escape-string-regexp/1.0.5:
988 | resolution: { integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= }
989 | engines: { node: ">=0.8.0" }
990 | dev: true
991 |
992 | /estree-walker/2.0.2:
993 | resolution:
994 | {
995 | integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==,
996 | }
997 | dev: true
998 |
999 | /execa/5.1.1:
1000 | resolution:
1001 | {
1002 | integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==,
1003 | }
1004 | engines: { node: ">=10" }
1005 | dependencies:
1006 | cross-spawn: 7.0.3
1007 | get-stream: 6.0.1
1008 | human-signals: 2.1.0
1009 | is-stream: 2.0.1
1010 | merge-stream: 2.0.0
1011 | npm-run-path: 4.0.1
1012 | onetime: 5.1.2
1013 | signal-exit: 3.0.3
1014 | strip-final-newline: 2.0.0
1015 | dev: true
1016 |
1017 | /expand-tilde/2.0.2:
1018 | resolution: { integrity: sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= }
1019 | engines: { node: ">=0.10.0" }
1020 | dependencies:
1021 | homedir-polyfill: 1.0.3
1022 | dev: true
1023 |
1024 | /external-editor/3.1.0:
1025 | resolution:
1026 | {
1027 | integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==,
1028 | }
1029 | engines: { node: ">=4" }
1030 | dependencies:
1031 | chardet: 0.7.0
1032 | iconv-lite: 0.4.24
1033 | tmp: 0.0.33
1034 | dev: true
1035 |
1036 | /figures/2.0.0:
1037 | resolution: { integrity: sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= }
1038 | engines: { node: ">=4" }
1039 | dependencies:
1040 | escape-string-regexp: 1.0.5
1041 | dev: true
1042 |
1043 | /fill-range/7.0.1:
1044 | resolution:
1045 | {
1046 | integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==,
1047 | }
1048 | engines: { node: ">=8" }
1049 | dependencies:
1050 | to-regex-range: 5.0.1
1051 | dev: true
1052 |
1053 | /find-node-modules/2.1.2:
1054 | resolution:
1055 | {
1056 | integrity: sha512-x+3P4mbtRPlSiVE1Qco0Z4YLU8WFiFcuWTf3m75OV9Uzcfs2Bg+O9N+r/K0AnmINBW06KpfqKwYJbFlFq4qNug==,
1057 | }
1058 | dependencies:
1059 | findup-sync: 4.0.0
1060 | merge: 2.1.1
1061 | dev: true
1062 |
1063 | /find-root/1.1.0:
1064 | resolution:
1065 | {
1066 | integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==,
1067 | }
1068 | dev: true
1069 |
1070 | /find-up/5.0.0:
1071 | resolution:
1072 | {
1073 | integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==,
1074 | }
1075 | engines: { node: ">=10" }
1076 | dependencies:
1077 | locate-path: 6.0.0
1078 | path-exists: 4.0.0
1079 | dev: true
1080 |
1081 | /find-versions/4.0.0:
1082 | resolution:
1083 | {
1084 | integrity: sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==,
1085 | }
1086 | engines: { node: ">=10" }
1087 | dependencies:
1088 | semver-regex: 3.1.2
1089 | dev: true
1090 |
1091 | /findup-sync/4.0.0:
1092 | resolution:
1093 | {
1094 | integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==,
1095 | }
1096 | engines: { node: ">= 8" }
1097 | dependencies:
1098 | detect-file: 1.0.0
1099 | is-glob: 4.0.1
1100 | micromatch: 4.0.4
1101 | resolve-dir: 1.0.1
1102 | dev: true
1103 |
1104 | /fs-extra/8.1.0:
1105 | resolution:
1106 | {
1107 | integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==,
1108 | }
1109 | engines: { node: ">=6 <7 || >=8" }
1110 | dependencies:
1111 | graceful-fs: 4.2.8
1112 | jsonfile: 4.0.0
1113 | universalify: 0.1.2
1114 | dev: true
1115 |
1116 | /fs.realpath/1.0.0:
1117 | resolution: { integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8= }
1118 | dev: true
1119 |
1120 | /fsevents/2.3.2:
1121 | resolution:
1122 | {
1123 | integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==,
1124 | }
1125 | engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
1126 | os: [darwin]
1127 | requiresBuild: true
1128 | dev: true
1129 | optional: true
1130 |
1131 | /function-bind/1.1.1:
1132 | resolution:
1133 | {
1134 | integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==,
1135 | }
1136 | dev: true
1137 |
1138 | /gensync/1.0.0-beta.2:
1139 | resolution:
1140 | {
1141 | integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==,
1142 | }
1143 | engines: { node: ">=6.9.0" }
1144 | dev: true
1145 |
1146 | /get-own-enumerable-property-symbols/3.0.2:
1147 | resolution:
1148 | {
1149 | integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==,
1150 | }
1151 | dev: true
1152 |
1153 | /get-stream/6.0.1:
1154 | resolution:
1155 | {
1156 | integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==,
1157 | }
1158 | engines: { node: ">=10" }
1159 | dev: true
1160 |
1161 | /glob/7.1.4:
1162 | resolution:
1163 | {
1164 | integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==,
1165 | }
1166 | dependencies:
1167 | fs.realpath: 1.0.0
1168 | inflight: 1.0.6
1169 | inherits: 2.0.4
1170 | minimatch: 3.0.4
1171 | once: 1.4.0
1172 | path-is-absolute: 1.0.1
1173 | dev: true
1174 |
1175 | /global-dirs/0.1.1:
1176 | resolution: { integrity: sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= }
1177 | engines: { node: ">=4" }
1178 | dependencies:
1179 | ini: 1.3.8
1180 | dev: true
1181 | optional: true
1182 |
1183 | /global-modules/1.0.0:
1184 | resolution:
1185 | {
1186 | integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==,
1187 | }
1188 | engines: { node: ">=0.10.0" }
1189 | dependencies:
1190 | global-prefix: 1.0.2
1191 | is-windows: 1.0.2
1192 | resolve-dir: 1.0.1
1193 | dev: true
1194 |
1195 | /global-prefix/1.0.2:
1196 | resolution: { integrity: sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= }
1197 | engines: { node: ">=0.10.0" }
1198 | dependencies:
1199 | expand-tilde: 2.0.2
1200 | homedir-polyfill: 1.0.3
1201 | ini: 1.3.8
1202 | is-windows: 1.0.2
1203 | which: 1.3.1
1204 | dev: true
1205 |
1206 | /globals/11.12.0:
1207 | resolution:
1208 | {
1209 | integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==,
1210 | }
1211 | engines: { node: ">=4" }
1212 | dev: true
1213 |
1214 | /graceful-fs/4.2.8:
1215 | resolution:
1216 | {
1217 | integrity: sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==,
1218 | }
1219 | dev: true
1220 |
1221 | /has-flag/3.0.0:
1222 | resolution: { integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0= }
1223 | engines: { node: ">=4" }
1224 | dev: true
1225 |
1226 | /has-flag/4.0.0:
1227 | resolution:
1228 | {
1229 | integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==,
1230 | }
1231 | engines: { node: ">=8" }
1232 | dev: true
1233 |
1234 | /has/1.0.3:
1235 | resolution:
1236 | {
1237 | integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==,
1238 | }
1239 | engines: { node: ">= 0.4.0" }
1240 | dependencies:
1241 | function-bind: 1.1.1
1242 | dev: true
1243 |
1244 | /homedir-polyfill/1.0.3:
1245 | resolution:
1246 | {
1247 | integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==,
1248 | }
1249 | engines: { node: ">=0.10.0" }
1250 | dependencies:
1251 | parse-passwd: 1.0.0
1252 | dev: true
1253 |
1254 | /human-signals/2.1.0:
1255 | resolution:
1256 | {
1257 | integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==,
1258 | }
1259 | engines: { node: ">=10.17.0" }
1260 | dev: true
1261 |
1262 | /husky/4.3.8:
1263 | resolution:
1264 | {
1265 | integrity: sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==,
1266 | }
1267 | engines: { node: ">=10" }
1268 | hasBin: true
1269 | requiresBuild: true
1270 | dependencies:
1271 | chalk: 4.1.2
1272 | ci-info: 2.0.0
1273 | compare-versions: 3.6.0
1274 | cosmiconfig: 7.0.1
1275 | find-versions: 4.0.0
1276 | opencollective-postinstall: 2.0.3
1277 | pkg-dir: 5.0.0
1278 | please-upgrade-node: 3.2.0
1279 | slash: 3.0.0
1280 | which-pm-runs: 1.0.0
1281 | dev: true
1282 |
1283 | /iconv-lite/0.4.24:
1284 | resolution:
1285 | {
1286 | integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==,
1287 | }
1288 | engines: { node: ">=0.10.0" }
1289 | dependencies:
1290 | safer-buffer: 2.1.2
1291 | dev: true
1292 |
1293 | /import-fresh/3.3.0:
1294 | resolution:
1295 | {
1296 | integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==,
1297 | }
1298 | engines: { node: ">=6" }
1299 | dependencies:
1300 | parent-module: 1.0.1
1301 | resolve-from: 4.0.0
1302 | dev: true
1303 |
1304 | /indent-string/4.0.0:
1305 | resolution:
1306 | {
1307 | integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==,
1308 | }
1309 | engines: { node: ">=8" }
1310 | dev: true
1311 |
1312 | /inflight/1.0.6:
1313 | resolution: { integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= }
1314 | dependencies:
1315 | once: 1.4.0
1316 | wrappy: 1.0.2
1317 | dev: true
1318 |
1319 | /inherits/2.0.4:
1320 | resolution:
1321 | {
1322 | integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==,
1323 | }
1324 | dev: true
1325 |
1326 | /ini/1.3.8:
1327 | resolution:
1328 | {
1329 | integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==,
1330 | }
1331 | dev: true
1332 |
1333 | /inquirer/6.5.2:
1334 | resolution:
1335 | {
1336 | integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==,
1337 | }
1338 | engines: { node: ">=6.0.0" }
1339 | dependencies:
1340 | ansi-escapes: 3.2.0
1341 | chalk: 2.4.2
1342 | cli-cursor: 2.1.0
1343 | cli-width: 2.2.1
1344 | external-editor: 3.1.0
1345 | figures: 2.0.0
1346 | lodash: 4.17.21
1347 | mute-stream: 0.0.7
1348 | run-async: 2.4.1
1349 | rxjs: 6.6.7
1350 | string-width: 2.1.1
1351 | strip-ansi: 5.2.0
1352 | through: 2.3.8
1353 | dev: true
1354 |
1355 | /is-arrayish/0.2.1:
1356 | resolution: { integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= }
1357 | dev: true
1358 |
1359 | /is-core-module/2.6.0:
1360 | resolution:
1361 | {
1362 | integrity: sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==,
1363 | }
1364 | dependencies:
1365 | has: 1.0.3
1366 | dev: true
1367 |
1368 | /is-extglob/2.1.1:
1369 | resolution: { integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= }
1370 | engines: { node: ">=0.10.0" }
1371 | dev: true
1372 |
1373 | /is-fullwidth-code-point/2.0.0:
1374 | resolution: { integrity: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= }
1375 | engines: { node: ">=4" }
1376 | dev: true
1377 |
1378 | /is-fullwidth-code-point/3.0.0:
1379 | resolution:
1380 | {
1381 | integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==,
1382 | }
1383 | engines: { node: ">=8" }
1384 | dev: true
1385 |
1386 | /is-glob/4.0.1:
1387 | resolution:
1388 | {
1389 | integrity: sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==,
1390 | }
1391 | engines: { node: ">=0.10.0" }
1392 | dependencies:
1393 | is-extglob: 2.1.1
1394 | dev: true
1395 |
1396 | /is-number/7.0.0:
1397 | resolution:
1398 | {
1399 | integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==,
1400 | }
1401 | engines: { node: ">=0.12.0" }
1402 | dev: true
1403 |
1404 | /is-obj/1.0.1:
1405 | resolution: { integrity: sha1-PkcprB9f3gJc19g6iW2rn09n2w8= }
1406 | engines: { node: ">=0.10.0" }
1407 | dev: true
1408 |
1409 | /is-regexp/1.0.0:
1410 | resolution: { integrity: sha1-/S2INUXEa6xaYz57mgnof6LLUGk= }
1411 | engines: { node: ">=0.10.0" }
1412 | dev: true
1413 |
1414 | /is-stream/2.0.1:
1415 | resolution:
1416 | {
1417 | integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==,
1418 | }
1419 | engines: { node: ">=8" }
1420 | dev: true
1421 |
1422 | /is-unicode-supported/0.1.0:
1423 | resolution:
1424 | {
1425 | integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==,
1426 | }
1427 | engines: { node: ">=10" }
1428 | dev: true
1429 |
1430 | /is-utf8/0.2.1:
1431 | resolution: { integrity: sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= }
1432 | dev: true
1433 |
1434 | /is-windows/1.0.2:
1435 | resolution:
1436 | {
1437 | integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==,
1438 | }
1439 | engines: { node: ">=0.10.0" }
1440 | dev: true
1441 |
1442 | /isexe/2.0.0:
1443 | resolution: { integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= }
1444 | dev: true
1445 |
1446 | /js-tokens/4.0.0:
1447 | resolution:
1448 | {
1449 | integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==,
1450 | }
1451 |
1452 | /jsesc/2.5.2:
1453 | resolution:
1454 | {
1455 | integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==,
1456 | }
1457 | engines: { node: ">=4" }
1458 | hasBin: true
1459 | dev: true
1460 |
1461 | /json-parse-even-better-errors/2.3.1:
1462 | resolution:
1463 | {
1464 | integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==,
1465 | }
1466 | dev: true
1467 |
1468 | /json5/2.2.0:
1469 | resolution:
1470 | {
1471 | integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==,
1472 | }
1473 | engines: { node: ">=6" }
1474 | hasBin: true
1475 | dependencies:
1476 | minimist: 1.2.5
1477 | dev: true
1478 |
1479 | /jsonfile/4.0.0:
1480 | resolution: { integrity: sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= }
1481 | optionalDependencies:
1482 | graceful-fs: 4.2.8
1483 | dev: true
1484 |
1485 | /lines-and-columns/1.1.6:
1486 | resolution: { integrity: sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= }
1487 | dev: true
1488 |
1489 | /lint-staged/11.1.2:
1490 | resolution:
1491 | {
1492 | integrity: sha512-6lYpNoA9wGqkL6Hew/4n1H6lRqF3qCsujVT0Oq5Z4hiSAM7S6NksPJ3gnr7A7R52xCtiZMcEUNNQ6d6X5Bvh9w==,
1493 | }
1494 | hasBin: true
1495 | dependencies:
1496 | chalk: 4.1.2
1497 | cli-truncate: 2.1.0
1498 | commander: 7.2.0
1499 | cosmiconfig: 7.0.1
1500 | debug: 4.3.2
1501 | enquirer: 2.3.6
1502 | execa: 5.1.1
1503 | listr2: 3.11.0_enquirer@2.3.6
1504 | log-symbols: 4.1.0
1505 | micromatch: 4.0.4
1506 | normalize-path: 3.0.0
1507 | please-upgrade-node: 3.2.0
1508 | string-argv: 0.3.1
1509 | stringify-object: 3.3.0
1510 | transitivePeerDependencies:
1511 | - supports-color
1512 | dev: true
1513 |
1514 | /listr2/3.11.0_enquirer@2.3.6:
1515 | resolution:
1516 | {
1517 | integrity: sha512-XLJVe2JgXCyQTa3FbSv11lkKExYmEyA4jltVo8z4FX10Vt1Yj8IMekBfwim0BSOM9uj1QMTJvDQQpHyuPbB/dQ==,
1518 | }
1519 | engines: { node: ">=10.0.0" }
1520 | peerDependencies:
1521 | enquirer: ">= 2.3.0 < 3"
1522 | dependencies:
1523 | cli-truncate: 2.1.0
1524 | colorette: 1.3.0
1525 | enquirer: 2.3.6
1526 | log-update: 4.0.0
1527 | p-map: 4.0.0
1528 | rxjs: 6.6.7
1529 | through: 2.3.8
1530 | wrap-ansi: 7.0.0
1531 | dev: true
1532 |
1533 | /locate-path/6.0.0:
1534 | resolution:
1535 | {
1536 | integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==,
1537 | }
1538 | engines: { node: ">=10" }
1539 | dependencies:
1540 | p-locate: 5.0.0
1541 | dev: true
1542 |
1543 | /lodash.map/4.6.0:
1544 | resolution: { integrity: sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= }
1545 | dev: true
1546 |
1547 | /lodash/4.17.21:
1548 | resolution:
1549 | {
1550 | integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==,
1551 | }
1552 | dev: true
1553 |
1554 | /log-symbols/4.1.0:
1555 | resolution:
1556 | {
1557 | integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==,
1558 | }
1559 | engines: { node: ">=10" }
1560 | dependencies:
1561 | chalk: 4.1.2
1562 | is-unicode-supported: 0.1.0
1563 | dev: true
1564 |
1565 | /log-update/4.0.0:
1566 | resolution:
1567 | {
1568 | integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==,
1569 | }
1570 | engines: { node: ">=10" }
1571 | dependencies:
1572 | ansi-escapes: 4.3.2
1573 | cli-cursor: 3.1.0
1574 | slice-ansi: 4.0.0
1575 | wrap-ansi: 6.2.0
1576 | dev: true
1577 |
1578 | /longest/2.0.1:
1579 | resolution: { integrity: sha1-eB4YMpaqlPbU2RbcM10NF676I/g= }
1580 | engines: { node: ">=0.10.0" }
1581 | dev: true
1582 |
1583 | /loose-envify/1.4.0:
1584 | resolution:
1585 | {
1586 | integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==,
1587 | }
1588 | hasBin: true
1589 | dependencies:
1590 | js-tokens: 4.0.0
1591 | dev: false
1592 |
1593 | /merge-stream/2.0.0:
1594 | resolution:
1595 | {
1596 | integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==,
1597 | }
1598 | dev: true
1599 |
1600 | /merge/2.1.1:
1601 | resolution:
1602 | {
1603 | integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==,
1604 | }
1605 | dev: true
1606 |
1607 | /micromatch/4.0.4:
1608 | resolution:
1609 | {
1610 | integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==,
1611 | }
1612 | engines: { node: ">=8.6" }
1613 | dependencies:
1614 | braces: 3.0.2
1615 | picomatch: 2.3.0
1616 | dev: true
1617 |
1618 | /mimic-fn/1.2.0:
1619 | resolution:
1620 | {
1621 | integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==,
1622 | }
1623 | engines: { node: ">=4" }
1624 | dev: true
1625 |
1626 | /mimic-fn/2.1.0:
1627 | resolution:
1628 | {
1629 | integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==,
1630 | }
1631 | engines: { node: ">=6" }
1632 | dev: true
1633 |
1634 | /minimatch/3.0.4:
1635 | resolution:
1636 | {
1637 | integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==,
1638 | }
1639 | dependencies:
1640 | brace-expansion: 1.1.11
1641 | dev: true
1642 |
1643 | /minimist/1.2.5:
1644 | resolution:
1645 | {
1646 | integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==,
1647 | }
1648 | dev: true
1649 |
1650 | /ms/2.1.2:
1651 | resolution:
1652 | {
1653 | integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==,
1654 | }
1655 | dev: true
1656 |
1657 | /mute-stream/0.0.7:
1658 | resolution: { integrity: sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= }
1659 | dev: true
1660 |
1661 | /nanoid/3.1.25:
1662 | resolution:
1663 | {
1664 | integrity: sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==,
1665 | }
1666 | engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 }
1667 | hasBin: true
1668 | dev: true
1669 |
1670 | /node-releases/1.1.75:
1671 | resolution:
1672 | {
1673 | integrity: sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==,
1674 | }
1675 | dev: true
1676 |
1677 | /normalize-path/3.0.0:
1678 | resolution:
1679 | {
1680 | integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==,
1681 | }
1682 | engines: { node: ">=0.10.0" }
1683 | dev: true
1684 |
1685 | /npm-run-path/4.0.1:
1686 | resolution:
1687 | {
1688 | integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==,
1689 | }
1690 | engines: { node: ">=8" }
1691 | dependencies:
1692 | path-key: 3.1.1
1693 | dev: true
1694 |
1695 | /object-assign/4.1.1:
1696 | resolution: { integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= }
1697 | engines: { node: ">=0.10.0" }
1698 | dev: false
1699 |
1700 | /once/1.4.0:
1701 | resolution: { integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E= }
1702 | dependencies:
1703 | wrappy: 1.0.2
1704 | dev: true
1705 |
1706 | /onetime/2.0.1:
1707 | resolution: { integrity: sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= }
1708 | engines: { node: ">=4" }
1709 | dependencies:
1710 | mimic-fn: 1.2.0
1711 | dev: true
1712 |
1713 | /onetime/5.1.2:
1714 | resolution:
1715 | {
1716 | integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==,
1717 | }
1718 | engines: { node: ">=6" }
1719 | dependencies:
1720 | mimic-fn: 2.1.0
1721 | dev: true
1722 |
1723 | /opencollective-postinstall/2.0.3:
1724 | resolution:
1725 | {
1726 | integrity: sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==,
1727 | }
1728 | hasBin: true
1729 | dev: true
1730 |
1731 | /os-tmpdir/1.0.2:
1732 | resolution: { integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= }
1733 | engines: { node: ">=0.10.0" }
1734 | dev: true
1735 |
1736 | /p-limit/3.1.0:
1737 | resolution:
1738 | {
1739 | integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==,
1740 | }
1741 | engines: { node: ">=10" }
1742 | dependencies:
1743 | yocto-queue: 0.1.0
1744 | dev: true
1745 |
1746 | /p-locate/5.0.0:
1747 | resolution:
1748 | {
1749 | integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==,
1750 | }
1751 | engines: { node: ">=10" }
1752 | dependencies:
1753 | p-limit: 3.1.0
1754 | dev: true
1755 |
1756 | /p-map/4.0.0:
1757 | resolution:
1758 | {
1759 | integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==,
1760 | }
1761 | engines: { node: ">=10" }
1762 | dependencies:
1763 | aggregate-error: 3.1.0
1764 | dev: true
1765 |
1766 | /parent-module/1.0.1:
1767 | resolution:
1768 | {
1769 | integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==,
1770 | }
1771 | engines: { node: ">=6" }
1772 | dependencies:
1773 | callsites: 3.1.0
1774 | dev: true
1775 |
1776 | /parse-json/5.2.0:
1777 | resolution:
1778 | {
1779 | integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==,
1780 | }
1781 | engines: { node: ">=8" }
1782 | dependencies:
1783 | "@babel/code-frame": 7.14.5
1784 | error-ex: 1.3.2
1785 | json-parse-even-better-errors: 2.3.1
1786 | lines-and-columns: 1.1.6
1787 | dev: true
1788 |
1789 | /parse-passwd/1.0.0:
1790 | resolution: { integrity: sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= }
1791 | engines: { node: ">=0.10.0" }
1792 | dev: true
1793 |
1794 | /path-exists/4.0.0:
1795 | resolution:
1796 | {
1797 | integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==,
1798 | }
1799 | engines: { node: ">=8" }
1800 | dev: true
1801 |
1802 | /path-is-absolute/1.0.1:
1803 | resolution: { integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18= }
1804 | engines: { node: ">=0.10.0" }
1805 | dev: true
1806 |
1807 | /path-key/3.1.1:
1808 | resolution:
1809 | {
1810 | integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==,
1811 | }
1812 | engines: { node: ">=8" }
1813 | dev: true
1814 |
1815 | /path-parse/1.0.7:
1816 | resolution:
1817 | {
1818 | integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==,
1819 | }
1820 | dev: true
1821 |
1822 | /path-type/4.0.0:
1823 | resolution:
1824 | {
1825 | integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==,
1826 | }
1827 | engines: { node: ">=8" }
1828 | dev: true
1829 |
1830 | /picomatch/2.3.0:
1831 | resolution:
1832 | {
1833 | integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==,
1834 | }
1835 | engines: { node: ">=8.6" }
1836 | dev: true
1837 |
1838 | /pkg-dir/5.0.0:
1839 | resolution:
1840 | {
1841 | integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==,
1842 | }
1843 | engines: { node: ">=10" }
1844 | dependencies:
1845 | find-up: 5.0.0
1846 | dev: true
1847 |
1848 | /please-upgrade-node/3.2.0:
1849 | resolution:
1850 | {
1851 | integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==,
1852 | }
1853 | dependencies:
1854 | semver-compare: 1.0.0
1855 | dev: true
1856 |
1857 | /postcss/8.3.6:
1858 | resolution:
1859 | {
1860 | integrity: sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==,
1861 | }
1862 | engines: { node: ^10 || ^12 || >=14 }
1863 | dependencies:
1864 | colorette: 1.3.0
1865 | nanoid: 3.1.25
1866 | source-map-js: 0.6.2
1867 | dev: true
1868 |
1869 | /prettier/2.3.2:
1870 | resolution:
1871 | {
1872 | integrity: sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==,
1873 | }
1874 | engines: { node: ">=10.13.0" }
1875 | hasBin: true
1876 | dev: true
1877 |
1878 | /react-dom/17.0.2_react@17.0.2:
1879 | resolution:
1880 | {
1881 | integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==,
1882 | }
1883 | peerDependencies:
1884 | react: 17.0.2
1885 | dependencies:
1886 | loose-envify: 1.4.0
1887 | object-assign: 4.1.1
1888 | react: 17.0.2
1889 | scheduler: 0.20.2
1890 | dev: false
1891 |
1892 | /react-refresh/0.10.0:
1893 | resolution:
1894 | {
1895 | integrity: sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==,
1896 | }
1897 | engines: { node: ">=0.10.0" }
1898 | dev: true
1899 |
1900 | /react/17.0.2:
1901 | resolution:
1902 | {
1903 | integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==,
1904 | }
1905 | engines: { node: ">=0.10.0" }
1906 | dependencies:
1907 | loose-envify: 1.4.0
1908 | object-assign: 4.1.1
1909 | dev: false
1910 |
1911 | /resolve-dir/1.0.1:
1912 | resolution: { integrity: sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= }
1913 | engines: { node: ">=0.10.0" }
1914 | dependencies:
1915 | expand-tilde: 2.0.2
1916 | global-modules: 1.0.0
1917 | dev: true
1918 |
1919 | /resolve-from/4.0.0:
1920 | resolution:
1921 | {
1922 | integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==,
1923 | }
1924 | engines: { node: ">=4" }
1925 | dev: true
1926 |
1927 | /resolve-from/5.0.0:
1928 | resolution:
1929 | {
1930 | integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==,
1931 | }
1932 | engines: { node: ">=8" }
1933 | dev: true
1934 | optional: true
1935 |
1936 | /resolve-global/1.0.0:
1937 | resolution:
1938 | {
1939 | integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==,
1940 | }
1941 | engines: { node: ">=8" }
1942 | dependencies:
1943 | global-dirs: 0.1.1
1944 | dev: true
1945 | optional: true
1946 |
1947 | /resolve/1.20.0:
1948 | resolution:
1949 | {
1950 | integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==,
1951 | }
1952 | dependencies:
1953 | is-core-module: 2.6.0
1954 | path-parse: 1.0.7
1955 | dev: true
1956 |
1957 | /restore-cursor/2.0.0:
1958 | resolution: { integrity: sha1-n37ih/gv0ybU/RYpI9YhKe7g368= }
1959 | engines: { node: ">=4" }
1960 | dependencies:
1961 | onetime: 2.0.1
1962 | signal-exit: 3.0.3
1963 | dev: true
1964 |
1965 | /restore-cursor/3.1.0:
1966 | resolution:
1967 | {
1968 | integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==,
1969 | }
1970 | engines: { node: ">=8" }
1971 | dependencies:
1972 | onetime: 5.1.2
1973 | signal-exit: 3.0.3
1974 | dev: true
1975 |
1976 | /rollup/2.56.3:
1977 | resolution:
1978 | {
1979 | integrity: sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg==,
1980 | }
1981 | engines: { node: ">=10.0.0" }
1982 | hasBin: true
1983 | optionalDependencies:
1984 | fsevents: 2.3.2
1985 | dev: true
1986 |
1987 | /run-async/2.4.1:
1988 | resolution:
1989 | {
1990 | integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==,
1991 | }
1992 | engines: { node: ">=0.12.0" }
1993 | dev: true
1994 |
1995 | /rxjs/6.6.7:
1996 | resolution:
1997 | {
1998 | integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==,
1999 | }
2000 | engines: { npm: ">=2.0.0" }
2001 | dependencies:
2002 | tslib: 1.14.1
2003 | dev: true
2004 |
2005 | /safe-buffer/5.1.2:
2006 | resolution:
2007 | {
2008 | integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==,
2009 | }
2010 | dev: true
2011 |
2012 | /safer-buffer/2.1.2:
2013 | resolution:
2014 | {
2015 | integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==,
2016 | }
2017 | dev: true
2018 |
2019 | /scheduler/0.20.2:
2020 | resolution:
2021 | {
2022 | integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==,
2023 | }
2024 | dependencies:
2025 | loose-envify: 1.4.0
2026 | object-assign: 4.1.1
2027 | dev: false
2028 |
2029 | /semver-compare/1.0.0:
2030 | resolution: { integrity: sha1-De4hahyUGrN+nvsXiPavxf9VN/w= }
2031 | dev: true
2032 |
2033 | /semver-regex/3.1.2:
2034 | resolution:
2035 | {
2036 | integrity: sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA==,
2037 | }
2038 | engines: { node: ">=8" }
2039 | dev: true
2040 |
2041 | /semver/6.3.0:
2042 | resolution:
2043 | {
2044 | integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==,
2045 | }
2046 | hasBin: true
2047 | dev: true
2048 |
2049 | /shebang-command/2.0.0:
2050 | resolution:
2051 | {
2052 | integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==,
2053 | }
2054 | engines: { node: ">=8" }
2055 | dependencies:
2056 | shebang-regex: 3.0.0
2057 | dev: true
2058 |
2059 | /shebang-regex/3.0.0:
2060 | resolution:
2061 | {
2062 | integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==,
2063 | }
2064 | engines: { node: ">=8" }
2065 | dev: true
2066 |
2067 | /signal-exit/3.0.3:
2068 | resolution:
2069 | {
2070 | integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==,
2071 | }
2072 | dev: true
2073 |
2074 | /slash/3.0.0:
2075 | resolution:
2076 | {
2077 | integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==,
2078 | }
2079 | engines: { node: ">=8" }
2080 | dev: true
2081 |
2082 | /slice-ansi/3.0.0:
2083 | resolution:
2084 | {
2085 | integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==,
2086 | }
2087 | engines: { node: ">=8" }
2088 | dependencies:
2089 | ansi-styles: 4.3.0
2090 | astral-regex: 2.0.0
2091 | is-fullwidth-code-point: 3.0.0
2092 | dev: true
2093 |
2094 | /slice-ansi/4.0.0:
2095 | resolution:
2096 | {
2097 | integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==,
2098 | }
2099 | engines: { node: ">=10" }
2100 | dependencies:
2101 | ansi-styles: 4.3.0
2102 | astral-regex: 2.0.0
2103 | is-fullwidth-code-point: 3.0.0
2104 | dev: true
2105 |
2106 | /source-map-js/0.6.2:
2107 | resolution:
2108 | {
2109 | integrity: sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==,
2110 | }
2111 | engines: { node: ">=0.10.0" }
2112 | dev: true
2113 |
2114 | /source-map/0.5.7:
2115 | resolution: { integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= }
2116 | engines: { node: ">=0.10.0" }
2117 | dev: true
2118 |
2119 | /string-argv/0.3.1:
2120 | resolution:
2121 | {
2122 | integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==,
2123 | }
2124 | engines: { node: ">=0.6.19" }
2125 | dev: true
2126 |
2127 | /string-width/2.1.1:
2128 | resolution:
2129 | {
2130 | integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==,
2131 | }
2132 | engines: { node: ">=4" }
2133 | dependencies:
2134 | is-fullwidth-code-point: 2.0.0
2135 | strip-ansi: 4.0.0
2136 | dev: true
2137 |
2138 | /string-width/4.2.2:
2139 | resolution:
2140 | {
2141 | integrity: sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==,
2142 | }
2143 | engines: { node: ">=8" }
2144 | dependencies:
2145 | emoji-regex: 8.0.0
2146 | is-fullwidth-code-point: 3.0.0
2147 | strip-ansi: 6.0.0
2148 | dev: true
2149 |
2150 | /stringify-object/3.3.0:
2151 | resolution:
2152 | {
2153 | integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==,
2154 | }
2155 | engines: { node: ">=4" }
2156 | dependencies:
2157 | get-own-enumerable-property-symbols: 3.0.2
2158 | is-obj: 1.0.1
2159 | is-regexp: 1.0.0
2160 | dev: true
2161 |
2162 | /strip-ansi/4.0.0:
2163 | resolution: { integrity: sha1-qEeQIusaw2iocTibY1JixQXuNo8= }
2164 | engines: { node: ">=4" }
2165 | dependencies:
2166 | ansi-regex: 3.0.0
2167 | dev: true
2168 |
2169 | /strip-ansi/5.2.0:
2170 | resolution:
2171 | {
2172 | integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==,
2173 | }
2174 | engines: { node: ">=6" }
2175 | dependencies:
2176 | ansi-regex: 4.1.0
2177 | dev: true
2178 |
2179 | /strip-ansi/6.0.0:
2180 | resolution:
2181 | {
2182 | integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==,
2183 | }
2184 | engines: { node: ">=8" }
2185 | dependencies:
2186 | ansi-regex: 5.0.0
2187 | dev: true
2188 |
2189 | /strip-bom/4.0.0:
2190 | resolution:
2191 | {
2192 | integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==,
2193 | }
2194 | engines: { node: ">=8" }
2195 | dev: true
2196 |
2197 | /strip-final-newline/2.0.0:
2198 | resolution:
2199 | {
2200 | integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==,
2201 | }
2202 | engines: { node: ">=6" }
2203 | dev: true
2204 |
2205 | /strip-json-comments/3.0.1:
2206 | resolution:
2207 | {
2208 | integrity: sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==,
2209 | }
2210 | engines: { node: ">=8" }
2211 | dev: true
2212 |
2213 | /supports-color/5.5.0:
2214 | resolution:
2215 | {
2216 | integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==,
2217 | }
2218 | engines: { node: ">=4" }
2219 | dependencies:
2220 | has-flag: 3.0.0
2221 | dev: true
2222 |
2223 | /supports-color/7.2.0:
2224 | resolution:
2225 | {
2226 | integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==,
2227 | }
2228 | engines: { node: ">=8" }
2229 | dependencies:
2230 | has-flag: 4.0.0
2231 | dev: true
2232 |
2233 | /through/2.3.8:
2234 | resolution: { integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= }
2235 | dev: true
2236 |
2237 | /tmp/0.0.33:
2238 | resolution:
2239 | {
2240 | integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==,
2241 | }
2242 | engines: { node: ">=0.6.0" }
2243 | dependencies:
2244 | os-tmpdir: 1.0.2
2245 | dev: true
2246 |
2247 | /to-fast-properties/2.0.0:
2248 | resolution: { integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= }
2249 | engines: { node: ">=4" }
2250 | dev: true
2251 |
2252 | /to-regex-range/5.0.1:
2253 | resolution:
2254 | {
2255 | integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==,
2256 | }
2257 | engines: { node: ">=8.0" }
2258 | dependencies:
2259 | is-number: 7.0.0
2260 | dev: true
2261 |
2262 | /tslib/1.14.1:
2263 | resolution:
2264 | {
2265 | integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==,
2266 | }
2267 | dev: true
2268 |
2269 | /type-fest/0.21.3:
2270 | resolution:
2271 | {
2272 | integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==,
2273 | }
2274 | engines: { node: ">=10" }
2275 | dev: true
2276 |
2277 | /typescript/4.3.5:
2278 | resolution:
2279 | {
2280 | integrity: sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==,
2281 | }
2282 | engines: { node: ">=4.2.0" }
2283 | hasBin: true
2284 | dev: true
2285 |
2286 | /universalify/0.1.2:
2287 | resolution:
2288 | {
2289 | integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==,
2290 | }
2291 | engines: { node: ">= 4.0.0" }
2292 | dev: true
2293 |
2294 | /vite/2.5.1:
2295 | resolution:
2296 | {
2297 | integrity: sha512-FwmLbbz8MB1pBs9dKoRDgpiqoijif8hSK1+NNUYc12/cnf+pM2UFhhQ1rcpXgbMhm/5c2USZdVAf0FSkSxaFDA==,
2298 | }
2299 | engines: { node: ">=12.2.0" }
2300 | hasBin: true
2301 | dependencies:
2302 | esbuild: 0.12.23
2303 | postcss: 8.3.6
2304 | resolve: 1.20.0
2305 | rollup: 2.56.3
2306 | optionalDependencies:
2307 | fsevents: 2.3.2
2308 | dev: true
2309 |
2310 | /which-pm-runs/1.0.0:
2311 | resolution: { integrity: sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= }
2312 | dev: true
2313 |
2314 | /which/1.3.1:
2315 | resolution:
2316 | {
2317 | integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==,
2318 | }
2319 | hasBin: true
2320 | dependencies:
2321 | isexe: 2.0.0
2322 | dev: true
2323 |
2324 | /which/2.0.2:
2325 | resolution:
2326 | {
2327 | integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==,
2328 | }
2329 | engines: { node: ">= 8" }
2330 | hasBin: true
2331 | dependencies:
2332 | isexe: 2.0.0
2333 | dev: true
2334 |
2335 | /word-wrap/1.2.3:
2336 | resolution:
2337 | {
2338 | integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==,
2339 | }
2340 | engines: { node: ">=0.10.0" }
2341 | dev: true
2342 |
2343 | /wrap-ansi/6.2.0:
2344 | resolution:
2345 | {
2346 | integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==,
2347 | }
2348 | engines: { node: ">=8" }
2349 | dependencies:
2350 | ansi-styles: 4.3.0
2351 | string-width: 4.2.2
2352 | strip-ansi: 6.0.0
2353 | dev: true
2354 |
2355 | /wrap-ansi/7.0.0:
2356 | resolution:
2357 | {
2358 | integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==,
2359 | }
2360 | engines: { node: ">=10" }
2361 | dependencies:
2362 | ansi-styles: 4.3.0
2363 | string-width: 4.2.2
2364 | strip-ansi: 6.0.0
2365 | dev: true
2366 |
2367 | /wrappy/1.0.2:
2368 | resolution: { integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= }
2369 | dev: true
2370 |
2371 | /yaml/1.10.2:
2372 | resolution:
2373 | {
2374 | integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==,
2375 | }
2376 | engines: { node: ">= 6" }
2377 | dev: true
2378 |
2379 | /yocto-queue/0.1.0:
2380 | resolution:
2381 | {
2382 | integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==,
2383 | }
2384 | engines: { node: ">=10" }
2385 | dev: true
2386 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - "examples/*"
3 |
--------------------------------------------------------------------------------