├── pnpm-workspace.yaml
├── .npmrc
├── README.md
├── 202-node-async
├── 202-node-async.pdf
├── src
│ ├── components
│ │ ├── MarkerOptional.vue
│ │ ├── Marker.vue
│ │ └── MarkerVersion.vue
│ ├── public
│ │ └── images
│ │ │ ├── emqx-dashboard.png
│ │ │ ├── mqttx-in-out.png
│ │ │ └── mqttx-pub-sub.png
│ ├── style.css
│ ├── package.json
│ └── slides.md
└── README.md
├── 203-node-mixed
├── 203-node-mixed.pdf
├── src
│ ├── public
│ │ └── images
│ │ │ └── mqttx-out.jpg
│ ├── style.css
│ ├── package.json
│ └── slides.md
└── README.md
├── 101-ofn-overview
└── src
│ ├── package.json
│ └── slides.md
├── package.json
├── .github
└── dependabot.yml
├── netlify.toml
├── .gitignore
├── LICENSE
└── pnpm-lock.yaml
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - '*/src'
3 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | shamefully-hoist=true
2 | ignore-workspace-root-check=true
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # openfunction-talks
2 | Presentation slides of OpenFunction topics
3 |
--------------------------------------------------------------------------------
/202-node-async/202-node-async.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devops/openfunction-talks/main/202-node-async/202-node-async.pdf
--------------------------------------------------------------------------------
/203-node-mixed/203-node-mixed.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devops/openfunction-talks/main/203-node-mixed/203-node-mixed.pdf
--------------------------------------------------------------------------------
/202-node-async/src/components/MarkerOptional.vue:
--------------------------------------------------------------------------------
1 |
2 | Optional
3 |
--------------------------------------------------------------------------------
/203-node-mixed/src/public/images/mqttx-out.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devops/openfunction-talks/main/203-node-mixed/src/public/images/mqttx-out.jpg
--------------------------------------------------------------------------------
/202-node-async/src/public/images/emqx-dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devops/openfunction-talks/main/202-node-async/src/public/images/emqx-dashboard.png
--------------------------------------------------------------------------------
/202-node-async/src/public/images/mqttx-in-out.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devops/openfunction-talks/main/202-node-async/src/public/images/mqttx-in-out.png
--------------------------------------------------------------------------------
/202-node-async/src/public/images/mqttx-pub-sub.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devops/openfunction-talks/main/202-node-async/src/public/images/mqttx-pub-sub.png
--------------------------------------------------------------------------------
/202-node-async/src/components/Marker.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/202-node-async/src/components/MarkerVersion.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/202-node-async/src/style.css:
--------------------------------------------------------------------------------
1 | .footnotes-sep {
2 | @apply mt-20 opacity-10;
3 | }
4 |
5 | .footnotes {
6 | @apply text-sm opacity-75;
7 | }
8 |
9 | .footnotes p {
10 | @apply my-1;
11 | }
12 |
13 | .footnote-backref {
14 | display: none;
15 | }
--------------------------------------------------------------------------------
/203-node-mixed/src/style.css:
--------------------------------------------------------------------------------
1 | .footnotes-sep {
2 | @apply mt-20 opacity-10;
3 | }
4 |
5 | .footnotes {
6 | @apply text-sm opacity-75;
7 | }
8 |
9 | .footnotes p {
10 | @apply my-1;
11 | }
12 |
13 | .footnote-backref {
14 | display: none;
15 | }
16 |
17 | .slidev-code {
18 | @apply w-95/100;
19 | }
20 |
21 | blockquote {
22 | @apply w-95/100;
23 | }
--------------------------------------------------------------------------------
/203-node-mixed/README.md:
--------------------------------------------------------------------------------
1 | # Triggering Async Function From HTTP Request
2 |
3 | - Tricky Part of Async Function
4 | - HTTP Comes to the Rescue
5 | - Invoke Async in A Sync Way
6 | - Lab: HTTP Trigger MQTT Bindings
7 | - Sample Function and Manifest
8 | - Deploy Sample Function
9 | - HTTP~ Fire!
10 |
11 | > The slide is powered by [Slidev](https://sli.dev/).
12 |
--------------------------------------------------------------------------------
/202-node-async/README.md:
--------------------------------------------------------------------------------
1 | # Node.js Async Function Quickstart
2 |
3 | - Prerequsites
4 | - Your First Async Function
5 | - A sample async function
6 | - Build Function Image via Pack Optional
7 | - Lab: MQTT Forwarder
8 | - Set up MQTT Broker Optional
9 | - Lab 1: MQTT Input and Output Binding
10 | - Lab 2: MQTT Pub and Sub
11 |
12 | > The slide is powered by [Slidev](https://sli.dev/).
13 |
--------------------------------------------------------------------------------
/101-ofn-overview/src/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "101-ofn-overview",
3 | "private": true,
4 | "scripts": {
5 | "dev": "slidev",
6 | "build": "slidev build --base /2022/101-ofn-overview/ --out ../../dist/2022/101-ofn-overview"
7 | },
8 | "dependencies": {
9 | "@slidev/cli": "^0.33.0",
10 | "@slidev/theme-default": "*",
11 | "slidev-theme-light-icons": "^1.0.2"
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "scripts": {
4 | "build": "rimraf dist && pnpm -r run build",
5 | "export": "pnpm -r run export"
6 | },
7 | "devDependencies": {
8 | "@iconify/json": "^2.1.61",
9 | "@slidev/cli": "^0.33.0",
10 | "@slidev/theme-default": "^0.21.2",
11 | "playwright-chromium": "^1.22.2",
12 | "pnpm": "^7.2.1",
13 | "rimraf": "^3.0.2"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/202-node-async/src/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "202-node-async",
3 | "private": true,
4 | "scripts": {
5 | "dev": "slidev",
6 | "build": "slidev build --base /2022/202-node-async/ --out ../../dist/2022/202-node-async",
7 | "export": "slidev export --dark --with-clicks --output ../202-node-async.pdf"
8 | },
9 | "dependencies": {
10 | "@slidev/cli": "^0.33.0",
11 | "@slidev/theme-default": "*",
12 | "@slidev/theme-seriph": "*"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/203-node-mixed/src/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "203-node-mixed",
3 | "private": true,
4 | "scripts": {
5 | "dev": "slidev",
6 | "build": "slidev build --base /2022/203-node-mixed/ --out ../../dist/2022/203-node-mixed",
7 | "export": "slidev export --dark --with-clicks --output ../203-node-mixed.pdf"
8 | },
9 | "dependencies": {
10 | "@slidev/cli": "^0.33.0",
11 | "@slidev/theme-default": "*",
12 | "@slidev/theme-seriph": "*"
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: docker
4 | directory: '/'
5 | schedule:
6 | interval: daily
7 | open-pull-requests-limit: 10
8 | - package-ecosystem: npm
9 | directory: '/'
10 | schedule:
11 | interval: daily
12 | open-pull-requests-limit: 10
13 | labels:
14 | - 'type: dependencies'
15 | - package-ecosystem: 'github-actions'
16 | directory: '/'
17 | schedule:
18 | interval: 'daily'
19 |
--------------------------------------------------------------------------------
/netlify.toml:
--------------------------------------------------------------------------------
1 | [build.environment]
2 | NPM_FLAGS = "--prefix=/dev/null"
3 | NODE_VERSION = "14"
4 | PLAYWRIGHT_BROWSERS_PATH = "0"
5 |
6 | [build]
7 | publish = "dist"
8 | command = "npx pnpm i --store=node_modules/.pnpm-store && npx pnpm run build"
9 |
10 | [[redirects]]
11 | from = "/2022/101-ofn-overview/*"
12 | to = "/2022/101-ofn-overview/index.html"
13 | status = 200
14 |
15 | [[redirects]]
16 | from = "/2022/202-node-async/*"
17 | to = "/2022/202-node-async/index.html"
18 | status = 200
19 |
20 | [[redirects]]
21 | from = "/2022/203-node-mixed/*"
22 | to = "/2022/203-node-mixed/index.html"
23 | status = 200
24 |
25 | [[redirects]]
26 | from = "/"
27 | to = "https://openfunction.dev"
28 | status = 302
29 | force = true
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 | *.lcov
24 |
25 | # nyc test coverage
26 | .nyc_output
27 |
28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29 | .grunt
30 |
31 | # Bower dependency directory (https://bower.io/)
32 | bower_components
33 |
34 | # node-waf configuration
35 | .lock-wscript
36 |
37 | # Compiled binary addons (https://nodejs.org/api/addons.html)
38 | build/Release
39 |
40 | # Dependency directories
41 | node_modules/
42 | jspm_packages/
43 |
44 | # TypeScript v1 declaration files
45 | typings/
46 |
47 | # TypeScript cache
48 | *.tsbuildinfo
49 |
50 | # Optional npm cache directory
51 | .npm
52 |
53 | # Optional eslint cache
54 | .eslintcache
55 |
56 | # Microbundle cache
57 | .rpt2_cache/
58 | .rts2_cache_cjs/
59 | .rts2_cache_es/
60 | .rts2_cache_umd/
61 |
62 | # Optional REPL history
63 | .node_repl_history
64 |
65 | # Output of 'npm pack'
66 | *.tgz
67 |
68 | # Yarn Integrity file
69 | .yarn-integrity
70 |
71 | # dotenv environment variables file
72 | .env
73 | .env.test
74 |
75 | # parcel-bundler cache (https://parceljs.org/)
76 | .cache
77 |
78 | # Next.js build output
79 | .next
80 |
81 | # Nuxt.js build / generate output
82 | .nuxt
83 | dist
84 |
85 | # Gatsby files
86 | .cache/
87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js
88 | # https://nextjs.org/blog/next-9-1#public-directory-support
89 | # public
90 |
91 | # vuepress build output
92 | .vuepress/dist
93 |
94 | # Serverless directories
95 | .serverless/
96 |
97 | # FuseBox cache
98 | .fusebox/
99 |
100 | # DynamoDB Local files
101 | .dynamodb/
102 |
103 | # TernJS port file
104 | .tern-port
105 |
106 | # VSCode cache
107 | .vscode
108 | .history
109 |
110 | # Netlify / Vercel
111 | .netlify
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Creative Commons Legal Code
2 |
3 | CC0 1.0 Universal
4 |
5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
12 | HEREUNDER.
13 |
14 | Statement of Purpose
15 |
16 | The laws of most jurisdictions throughout the world automatically confer
17 | exclusive Copyright and Related Rights (defined below) upon the creator
18 | and subsequent owner(s) (each and all, an "owner") of an original work of
19 | authorship and/or a database (each, a "Work").
20 |
21 | Certain owners wish to permanently relinquish those rights to a Work for
22 | the purpose of contributing to a commons of creative, cultural and
23 | scientific works ("Commons") that the public can reliably and without fear
24 | of later claims of infringement build upon, modify, incorporate in other
25 | works, reuse and redistribute as freely as possible in any form whatsoever
26 | and for any purposes, including without limitation commercial purposes.
27 | These owners may contribute to the Commons to promote the ideal of a free
28 | culture and the further production of creative, cultural and scientific
29 | works, or to gain reputation or greater distribution for their Work in
30 | part through the use and efforts of others.
31 |
32 | For these and/or other purposes and motivations, and without any
33 | expectation of additional consideration or compensation, the person
34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she
35 | is an owner of Copyright and Related Rights in the Work, voluntarily
36 | elects to apply CC0 to the Work and publicly distribute the Work under its
37 | terms, with knowledge of his or her Copyright and Related Rights in the
38 | Work and the meaning and intended legal effect of CC0 on those rights.
39 |
40 | 1. Copyright and Related Rights. A Work made available under CC0 may be
41 | protected by copyright and related or neighboring rights ("Copyright and
42 | Related Rights"). Copyright and Related Rights include, but are not
43 | limited to, the following:
44 |
45 | i. the right to reproduce, adapt, distribute, perform, display,
46 | communicate, and translate a Work;
47 | ii. moral rights retained by the original author(s) and/or performer(s);
48 | iii. publicity and privacy rights pertaining to a person's image or
49 | likeness depicted in a Work;
50 | iv. rights protecting against unfair competition in regards to a Work,
51 | subject to the limitations in paragraph 4(a), below;
52 | v. rights protecting the extraction, dissemination, use and reuse of data
53 | in a Work;
54 | vi. database rights (such as those arising under Directive 96/9/EC of the
55 | European Parliament and of the Council of 11 March 1996 on the legal
56 | protection of databases, and under any national implementation
57 | thereof, including any amended or successor version of such
58 | directive); and
59 | vii. other similar, equivalent or corresponding rights throughout the
60 | world based on applicable law or treaty, and any national
61 | implementations thereof.
62 |
63 | 2. Waiver. To the greatest extent permitted by, but not in contravention
64 | of, applicable law, Affirmer hereby overtly, fully, permanently,
65 | irrevocably and unconditionally waives, abandons, and surrenders all of
66 | Affirmer's Copyright and Related Rights and associated claims and causes
67 | of action, whether now known or unknown (including existing as well as
68 | future claims and causes of action), in the Work (i) in all territories
69 | worldwide, (ii) for the maximum duration provided by applicable law or
70 | treaty (including future time extensions), (iii) in any current or future
71 | medium and for any number of copies, and (iv) for any purpose whatsoever,
72 | including without limitation commercial, advertising or promotional
73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
74 | member of the public at large and to the detriment of Affirmer's heirs and
75 | successors, fully intending that such Waiver shall not be subject to
76 | revocation, rescission, cancellation, termination, or any other legal or
77 | equitable action to disrupt the quiet enjoyment of the Work by the public
78 | as contemplated by Affirmer's express Statement of Purpose.
79 |
80 | 3. Public License Fallback. Should any part of the Waiver for any reason
81 | be judged legally invalid or ineffective under applicable law, then the
82 | Waiver shall be preserved to the maximum extent permitted taking into
83 | account Affirmer's express Statement of Purpose. In addition, to the
84 | extent the Waiver is so judged Affirmer hereby grants to each affected
85 | person a royalty-free, non transferable, non sublicensable, non exclusive,
86 | irrevocable and unconditional license to exercise Affirmer's Copyright and
87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the
88 | maximum duration provided by applicable law or treaty (including future
89 | time extensions), (iii) in any current or future medium and for any number
90 | of copies, and (iv) for any purpose whatsoever, including without
91 | limitation commercial, advertising or promotional purposes (the
92 | "License"). The License shall be deemed effective as of the date CC0 was
93 | applied by Affirmer to the Work. Should any part of the License for any
94 | reason be judged legally invalid or ineffective under applicable law, such
95 | partial invalidity or ineffectiveness shall not invalidate the remainder
96 | of the License, and in such case Affirmer hereby affirms that he or she
97 | will not (i) exercise any of his or her remaining Copyright and Related
98 | Rights in the Work or (ii) assert any associated claims and causes of
99 | action with respect to the Work, in either case contrary to Affirmer's
100 | express Statement of Purpose.
101 |
102 | 4. Limitations and Disclaimers.
103 |
104 | a. No trademark or patent rights held by Affirmer are waived, abandoned,
105 | surrendered, licensed or otherwise affected by this document.
106 | b. Affirmer offers the Work as-is and makes no representations or
107 | warranties of any kind concerning the Work, express, implied,
108 | statutory or otherwise, including without limitation warranties of
109 | title, merchantability, fitness for a particular purpose, non
110 | infringement, or the absence of latent or other defects, accuracy, or
111 | the present or absence of errors, whether or not discoverable, all to
112 | the greatest extent permissible under applicable law.
113 | c. Affirmer disclaims responsibility for clearing rights of other persons
114 | that may apply to the Work or any use thereof, including without
115 | limitation any person's Copyright and Related Rights in the Work.
116 | Further, Affirmer disclaims responsibility for obtaining any necessary
117 | consents, permissions or other rights required for any use of the
118 | Work.
119 | d. Affirmer understands and acknowledges that Creative Commons is not a
120 | party to this document and has no duty or obligation with respect to
121 | this CC0 or use of the Work.
122 |
--------------------------------------------------------------------------------
/203-node-mixed/src/slides.md:
--------------------------------------------------------------------------------
1 | ---
2 | hideInToc: true
3 | download: 'https://github.com/webup/openfunction-talks/raw/main/203-node-async/203-node-mixed.pdf'
4 | # try also 'default' to start with a default theme
5 | # theme: seriph
6 | # random image from a curated Unsplash collection by Anthony
7 | # like them? see https://unsplash.com/collections/94734566/slidev
8 | background: https://source.unsplash.com/collection/94734566/1920x1080
9 | # apply any windi css classes to the current slide
10 | class: 'text-center'
11 | # https://sli.dev/custom/highlighters.html
12 | # highlighter: shiki
13 | # show line numbers in code blocks
14 | lineNumbers: false
15 | # some information about the slides, markdown enabled
16 | info: |
17 | ## OpenFunction Tutorials
18 |
19 | Hands-on tutorial on Node.js Functions Framework
20 |
21 | Learn more at [OpenFunction](https://openfunction.dev/)
22 | # persist drawings in exports and build
23 | drawings:
24 | persist: false
25 | ---
26 |
27 | # OpenFunction 203
28 |
29 | Triggering Async Function From HTTP Request
30 |
31 |
32 |
33 | Press Space for next page
34 |
35 |
36 |
37 |
47 |
48 | ---
49 | layout: intro
50 | hideInToc: true
51 | ---
52 |
53 | # Haili Zhang
54 |
55 |
56 | KubeSphere Ambassador, CNCF OpenFunction TOC Memeber.
57 | Cloud Platform Director of UISEE© Technology.
58 | Cloud Native focuses: Kubernetes, DevOps, Observability, Service Mesh, Serverless.
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | ---
75 | hideInToc: true
76 | ---
77 |
78 | # Table of Content
79 |
80 |
81 |
82 | ---
83 | title: Tricky Part of Async Function
84 | layout: iframe-right
85 | url: https://embeds.onemodel.app/d/iframe/aiOvN37uC1OEIrKh6yGADkuuyLPuaGFG4bc4OTl6TrL3h10zvCt2MbG020YB
86 | ---
87 |
88 | ## Tricky Part of Async Func
89 |
90 |
91 |
92 | ###### Pros
93 |
94 | * By leveraging Dapr, async function could nearly connect with everthing ...
95 | * Check [Dapr Bindings](https://docs.dapr.io/reference/components-reference/supported-bindings/)
96 | * Check [Dapr PubSub Brokers](https://docs.dapr.io/reference/components-reference/supported-pubsub/)
97 |
98 |
99 |
100 | ###### Cons
101 |
102 | * NEED ***events*** to pull the trigger
103 | * Usually coming in from external systems, or interface with external systems
104 | * e.g. message queue, cron, K8s events
105 | * Also rather unfriendly for testing
106 | * We need a MQTT client tool to serve as the event publisher, remember [that](https://openfunction-talks.netlify.app/2022/202-node-async/13)?
107 |
108 |
109 | ---
110 | title: HTTP Comes to the Rescue
111 | layout: iframe-right
112 | url: https://embeds.onemodel.app/d/iframe/QDvoHGiYvG9o2SjZB7bP0VJ63fT2UfM4ovw7jhWX2VA2rSwgUJ4MuwKA2TRQ
113 | ---
114 |
115 | ## HTTP Comes to the Rescue
116 |
117 |
118 |
119 | ###### Idea
120 |
121 | * Use HTTP sync function as trigger
122 | * `POST` data to one sync function
123 | * Sync function bridge data to event hub
124 | * With async function subscribed to hub
125 |
126 |
127 |
128 | ###### Solution
129 |
130 | * Enable Dapr output binding and pub in sync function runtime [^1]
131 | * Check the figure aside as an example 👉
132 |
133 | [^1]: Feature introduced in [OpenFunction 0.6.0](https://github.com/OpenFunction/OpenFunction/releases/tag/v0.6.0) along with [Node.js Function Framework 0.5.0](https://github.com/OpenFunction/functions-framework-nodejs/releases/tag/v0.5.0)
134 |
135 | ---
136 | layout: statement
137 | hideInToc: true
138 | ---
139 |
140 | # Invoke Async in A Sync Way!
141 |
142 | ---
143 | title: Invoke Async in A Sync Way
144 | layout: two-cols
145 | ---
146 |
147 | ## Same function signature
148 |
149 | Exactly the same async function [signature](https://openfunction-talks.netlify.app/2022/202-node-async/5).
150 |
151 | ```js
152 | function (ctx, data) {}
153 | ```
154 |
155 | > `data`: Request [body](https://devdocs.io/express/index#req.body) data, parsed as JSON by default
156 |
157 |
158 |
159 | ###### Extensions
160 |
161 | * `ctx.req`: The pass-through Express standard HTTP [request](https://devdocs.io/express-request/) object
162 | * `ctx.res`: The pass-through Express standard HTTP [response](https://devdocs.io/express-response/) object
163 | * These two methods are optional for use, even no response made by `ctx.res` would NOT block the HTTP request handler
164 |
165 | ::right::
166 |
167 | ## Specific signature type
168 |
169 | New type `openfunction` ready to work.
170 |
171 | * OpenFunction Function CRD:
172 |
173 | ```yaml{9-}
174 | apiVersion: core.openfunction.io/v1beta1
175 | kind: Function
176 | metadata:
177 | name: func-name
178 | spec:
179 | serving:
180 | # default to knative
181 | runtime: knative
182 | params:
183 | # default to http
184 | FUNCTION_SIGNATURE_TYPE: openfunction
185 | ```
186 |
187 | * CLI: `--signature-type=openfunction`
188 | * ENV: `FUNCTION_SIGNATURE_TYPE=openfunction`
189 |
190 | ---
191 | layout: center
192 | class: text-center
193 | ---
194 |
195 | # Lab: HTTP Trigger MQTT Bindings
196 |
197 | ---
198 | title: Sample Function and Manifest
199 | level: 2
200 | layout: two-cols
201 | ---
202 |
203 | # Sample Function
204 |
205 | Another plain forwarder
206 |
207 | ```js
208 | // Standard Express style HTTP sync function
209 | export const tryKnative = (req, res) => {
210 | res.send(`Hello, ${req.query.u || 'World'}!`);
211 | };
212 |
213 | // OpenFunction standard function which could
214 | // set bridge between sync and async function
215 | export const tryKnativeAsync = async (ctx, data) => {
216 | console.log('Data received: %o', data);
217 |
218 | // Forward HTTP body to Dapr outputs
219 | await ctx.send(data);
220 |
221 | // Send something back as HTTP response
222 | // when necessary
223 | // ctx.res.send(data);
224 | };
225 | ```
226 |
227 | > Remember to build the function, either when applying Function CR manifest or directly via [Pack](https://openfunction-talks.netlify.app/2022/202-node-async/7) CLI tool
228 |
229 | ::right::
230 |
231 | # Sample CR Manifest
232 |
233 | Check out full content in [http-trigger.yml](https://github.com/OpenFunction/samples/blob/main/functions/knative/with-output-binding-node/http-trigger.yaml)
234 |
235 | ```yaml{4-7|8-}
236 | spec:
237 | image: '//'
238 | serving:
239 | runtime: knative
240 | params:
241 | FUNCTION_TARGET: tryKnativeAsync
242 | FUNCTION_SIGNATURE_TYPE: openfunction
243 | outputs:
244 | - name: mqtt-output
245 | component: mqtt-out
246 | operation: create
247 | bindings:
248 | mqtt-out:
249 | type: bindings.mqtt
250 | version: v1
251 | metadata:
252 | - name: consumerID
253 | value: '{uuid}'
254 | - name: url
255 | value: tcp://admin:public@emqx:1883
256 | - name: topic
257 | value: out
258 | ```
259 |
260 | ---
261 | title: Deploy Sample Function
262 | level: 2
263 | ---
264 |
265 | # Deploy Sample Function
266 |
267 | * Apply function , and check running states
268 |
269 | ```bash
270 | $ kubectl apply -f http-trigger.yaml
271 | function.core.openfunction.io/sample-node-http-trigger created
272 |
273 | $ kubectl get fn
274 | NAME BUILDSTATE SERVINGSTATE BUILDER SERVING URL AGE
275 | sample-node-http-trigger Skipped Running serving-7d75d http://openfunction.io/default/sample-node-http-trigger 6d
276 |
277 | $ kubectl get deploy
278 | NAME READY UP-TO-DATE AVAILABLE AGE
279 | ...
280 | serving-7d75d-ksvc-xn768-v200-deployment 0/0 0 0 6d14h
281 | ...
282 | ```
283 |
284 |
285 |
286 | > Knative runtime would autoscale the deployment replica to `0`, if no incoming request for a period of time.
287 |
288 |
289 | ---
290 | title: HTTP~ Fire!
291 | level: 2
292 | layout: image-right
293 | image: images/mqttx-out.jpg
294 | ---
295 |
296 | # HTTP~ Fire!
297 |
298 | Send request to domain ingress.
299 |
300 | * `POST` data to target function URL:
301 |
302 | ```bash
303 | curl -d '{"hello":"ofn"}' \
304 | -H 'Content-Type: application/json' \
305 | http://openfunction.io/default/sample-node-http-trigger
306 | ```
307 |
308 | * Wait a second (may be few more seconds for cold start), you would get results:
309 | * From terminal: `{"hello":"ofn"}`
310 | * From [MQTT X](https://mqttx.app/) [^1] desktop client 👉
311 |
312 | [^1]: See also: OpenFunction 202 - [Set up MQTT Broker](https://openfunction-talks.netlify.app/2022/202-node-async/9)
313 |
314 | ---
315 | layout: center
316 | class: text-center
317 | hideInToc: true
318 | ---
319 |
320 | # Learn More
321 |
322 | [Discord](https://discord.gg/awpAh8W5xW) · [Slack](https://cloud-native.slack.com/archives/C03ETDMD3LZ)
323 |
324 |
325 |
326 | [OpenFunction](https://openfunction.dev/) · [Node.js Functions Framework](https://github.com/OpenFunction/functions-framework-nodejs)
327 |
--------------------------------------------------------------------------------
/101-ofn-overview/src/slides.md:
--------------------------------------------------------------------------------
1 | ---
2 | hideInToc: true
3 | title: OpenFunction 101
4 | # try also 'default' to start with a default theme
5 | theme: light-icons
6 | # random image from a curated Unsplash collection by Anthony
7 | layout: intro
8 | image: https://source.unsplash.com/collection/94734566/1920x1080
9 | # apply any windi css classes to the current slide
10 | class: 'text-center'
11 | # https://sli.dev/custom/highlighters.html
12 | # highlighter: shiki
13 | # show line numbers in code blocks
14 | lineNumbers: false
15 | # some information about the slides, markdown enabled
16 | info: |
17 | ## OpenFunction Tutorials
18 |
19 | OpenFunction overview introduction
20 |
21 | Learn more at [OpenFunction](https://openfunction.dev/)
22 | # persist drawings in exports and build
23 | drawings:
24 | persist: false
25 | ---
26 |
27 |
28 |
29 | Press Space for next page
30 |
31 |
32 |
33 |
34 |
35 | OpenFunction 101
36 |
37 |
38 | OVERVIEW
39 |
40 |
41 |
42 | ---
43 | hideInToc: true
44 | layout: image-left
45 | image: 'https://s2.loli.net/2022/05/08/XRTdnohGA9rlewu.png'
46 | equal: true
47 | ---
48 |
49 | # Haili Zhang
50 |
51 |
52 | CNCF OpenFunction TOC Member, KubeSphere Ambassador.
53 | Cloud Platform Director of UISEE©, a leading autonomous driving company.
54 | Cloud Native focuses: Kubernetes, DevOps, Observability, Service Mesh, Serverless.
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 | ---
69 | hideInToc: true
70 | ---
71 |
72 | # Table of Content
73 |
74 |
75 |
76 | ---
77 | title: Learnings from CNCF and Datadog Reports
78 | layout: two-cols
79 | ---
80 |
81 | # CNCF Survey 2021
82 |
83 | * Container Adoption and Kubernetes have truly gone mainstream – usage has risen across organizations globally, particularly in large businesses.
84 | * According to CNCF’s respondents, 96% of organizations are either using or evaluating Kubernetes – a record high since our surveys began in 2016.
85 | * Kubernetes has demonstrated impressive growth over the past 12 months with 5.6 million developers using Kubernetes today.
86 |
87 | ::right::
88 |
89 |
90 |
91 | ---
92 | hideInToc: true
93 | layout: two-cols
94 | ---
95 |
96 | # Serverless Boosts 🚀
97 |
98 | "As the popularity of FaaS products like AWS Lambda continues to grow, we have also seen a significant increase in adoption of other types of serverless technologies offered by Azure, Google Cloud, and AWS."
99 |
100 | 
101 |
102 | ::right::
103 |
104 |
105 |
106 | ---
107 | hideInToc: true
108 | layout: image
109 | image: https://www.cncf.io/wp-content/uploads//2022/02/p9_Repor-01-10-1.svg
110 | class: bg-slate-50 bg-origin-content
111 | ---
112 |
113 | # Serverless Platform War?
114 |
115 | "Hosted platforms (75%) are the most popular"
116 |
117 |
122 |
123 | ---
124 |
125 | # Why need cloud agnostic Serverless platform?
126 |
127 | Kubernetes brings the possibility of cloud-agnostic: multiple, distributed cloud.
128 |
129 |
130 |
131 | But it’s difficult to be cloud-agnostic for Serverless
132 | * Each cloud provider has its own Serverless platform
133 | * Further more, these platforms are coupled with their own cloud backend services
134 |
135 |
136 |
137 | Is it possible to build a cloud agnostic Serverless platform? 🤔
138 |
139 | ---
140 | title: How to build a cloud agnostic Serverless platform?
141 | layout: iframe-right
142 | url: https://embeds.onemodel.app/d/iframe/aWmQ2ljcbrB0R0nqvdoVZEojQWRhSYxthan97wncdULJmUalBkURa06aNAfx
143 | ---
144 |
145 | # What is Serverless?
146 |
147 | Let's make core concepts clear first.
148 |
149 | "Serverless computing = FaaS + BaaS." [^1]
150 |
151 | * Cloud functions — packaged as FaaS (Function as a Service) offerings — represent the core of serverless computing
152 | * Cloud platforms also provide specialized serverless frameworks that cater to specific app requirements as BaaS (Backend as a Service) offerings
153 |
154 | [^1]: [Cloud Programming Simplified: A Berkeley View on Serverless Computing](https://www2.eecs.berkeley.edu/Pubs/TechRpts/2019/EECS-2019-3.pdf). Feb 10, 2019.
155 |
156 |
173 |
174 | ---
175 | hideInToc: true
176 | layout: iframe-right
177 | url: https://embeds.onemodel.app/d/iframe/mOmUABwfsD0d6cgwGRyzt8vih5uoeXldJO4hyWdUUAjl2g7YeWeQf44kkQxh
178 | ---
179 |
180 | # How to construct?
181 |
182 | We need adapt various backend services.
183 |
184 | [Dapr](https://dapr.io/) decouples the distributed apps with underlying backend services .
185 |
186 | 
187 |
188 | > Dapr provides you with APIs that abstract away the complexity of common challenges developers encounter regularly when building distributed applications. These API building blocks can be leveraged as the need arises - use one, several or all to develop your application faster and deliver your solution on time.
189 |
190 | ---
191 | hideInToc: true
192 | layout: iframe-right
193 | url: https://keda.sh/docs/2.7/concepts/#architecture
194 | ---
195 |
196 | # How to construct?
197 |
198 | We need achieve "zero-scale".
199 |
200 | [KEDA](https://keda.sh/) is a Kubernetes-based Event Driven Autoscaler. With KEDA, you can drive the scaling of any container in Kubernetes based on the number of events needing to be processed.
201 |
202 | * KEDA is a single-purpose and lightweight component that can be added into any Kubernetes cluster.
203 | * KEDA works alongside standard Kubernetes components like the Horizontal Pod Autoscaler and can extend functionality without overwriting or duplication.
204 |
205 | ---
206 | title: 'OpenFunction: Less codes. More Functions!'
207 | layout: image-left
208 | image: https://github.com/benjaminhuo/artwork/raw/master/projects/openfunction/icon/color/openfunction-icon-color.png
209 | equal: true
210 | ---
211 |
212 | [OpenFunction](https://openfunction.dev/) is a cloud-native open source FaaS (Function as a Service) platform aiming to let you focus on your business logic without having to maintain the underlying runtime environment and infrastructure.
213 |
214 | You can concentrate on developing business-related source code in the form of functions.
215 |
216 | ---
217 | layout: iframe
218 | url: https://www.youtube.com/embed/YWZsXdAXFO8?start=580
219 | ---
220 |
221 | ---
222 | title: Architecture Overview of OpenFunction
223 | layout: center-image
224 | image: https://openfunction.dev/openfunction-0.5-architecture.png
225 | ---
226 |
227 |
228 | Architecture Overview of OpenFunction
229 |
230 |
231 | ---
232 | layout: iframe
233 | url: https://embeds.onemodel.app/d/iframe/RZ3djGBjCkM8p2aOjZnvf0UNWPRA5zPVxbk5d6AHl5sowHNhYk6qQLMvGmMB
234 | ---
235 |
236 | ---
237 | layout: center
238 | class: text-center
239 | ---
240 |
241 | # Use Case: Online Data Processing
242 |
243 | Using OpenFunction in Autonomous Driving
244 |
245 | ---
246 | layout: iframe
247 | url: https://embeds.onemodel.app/d/iframe/abvQuuS6QoSkz1MPovXXslweJcsCPoPG73anxZoLu58lFe3UCIS58rytKe8H
248 | ---
249 |
250 | ---
251 | hideInToc: true
252 | ---
253 |
254 | # Why need a cloud agnostic Serverless platform?
255 |
256 | ### Why Cloud Agnostic
257 |
258 | * Different customers require to use different cloud providers
259 | * Some customers’ vehicle data is sensitive and are required to be isolated from public clouds
260 |
261 |
262 |
263 | ### Why Serverless
264 |
265 | * Autonomous driving has so many application scenarios, there're requirements to use different processing logics for different scenarios even for the same data source
266 | * Data types and processing modules are complex, multi-language support is required
267 | * Massive events need to be handled in real time
268 | * Data processing logics tend to be changed frequently based on rapidly changing requirements
269 |
270 | ---
271 | layout: iframe
272 | url: https://embeds.onemodel.app/d/iframe/QSsJOLQszQIxATltAMwPEpcjjLiWa6aZAuHM890P0eBdXN7lXsXehj1Lg5GA
273 | ---
274 |
275 | ---
276 | hideInToc: true
277 | layout: two-cols
278 | class: m-3
279 | ---
280 |
281 | # Dapr Matters
282 |
283 | * Data from different sensors and processing modules· are complex
284 | * Different cloud providers have different backend services that may result in duplicated implementations over the same data processing logic
285 | * Pub/Sub and Bindings make it easy to set up event-driven architecture for data processing with async functions
286 |
287 | ::right::
288 |
289 | # KEDA Matters
290 |
291 | * AI drivers need to retain human working habits to a certain extent, so there are obvious peaks and valleys in traffic based on working schedules
292 | * For security reasons, data refresh frequently and sensors produce massive data, so workload should be scalable
293 | * The usage of compute resources directly affects project cost
294 |
295 | ---
296 | hideInToc: true
297 | layout: center-image
298 | ---
299 |
300 |
301 | Explore More
302 |
303 |
307 |
308 |
313 |
--------------------------------------------------------------------------------
/202-node-async/src/slides.md:
--------------------------------------------------------------------------------
1 | ---
2 | hideInToc: true
3 | download: 'https://github.com/webup/openfunction-talks/raw/main/202-node-async/202-node-async.pdf'
4 | # try also 'default' to start with a default theme
5 | # theme: seriph
6 | # random image from a curated Unsplash collection by Anthony
7 | # like them? see https://unsplash.com/collections/94734566/slidev
8 | background: https://source.unsplash.com/collection/94734566/1920x1080
9 | # apply any windi css classes to the current slide
10 | class: 'text-center'
11 | # https://sli.dev/custom/highlighters.html
12 | # highlighter: shiki
13 | # show line numbers in code blocks
14 | lineNumbers: false
15 | # some information about the slides, markdown enabled
16 | info: |
17 | ## OpenFunction Tutorials
18 |
19 | Hands-on tutorial on Node.js Functions Framework
20 |
21 | Learn more at [OpenFunction](https://openfunction.dev/)
22 | # persist drawings in exports and build
23 | drawings:
24 | persist: false
25 | ---
26 |
27 | # OpenFunction 202
28 |
29 | Node.js Async Function Quickstart
30 |
31 |
32 |
33 | Press Space for next page
34 |
35 |
36 |
37 |
47 |
48 | ---
49 | hideInToc: true
50 | layout: intro
51 | ---
52 |
53 | # Haili Zhang
54 |
55 |
56 | KubeSphere Ambassador, CNCF OpenFunction TOC Member.
57 | Cloud Platform Director of UISEE© Technology.
58 | Cloud Native focuses: Kubernetes, DevOps, Observability, Service Mesh, Serverless.
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | ---
75 | hideInToc: true
76 | ---
77 |
78 | # Table of Content
79 |
80 |
81 |
82 | ---
83 |
84 | # Prerequsites
85 |
86 | Use [`ofn`](https://github.com/OpenFunction/cli) [^1] [^2] CLI tool to deploy OpenFunction.
87 |
88 | * Install OpenFunction with Async Runtime only [^3]
89 |
90 | ```bash
91 | $ ofn install --async
92 | ```
93 |
94 | * Install OpenFunction with Async Runtime and function build framework
95 |
96 | ```bash
97 | $ ofn install --async --shipwright
98 | ```
99 |
100 | [^1]: Add `--region-cn` option in case you have limited access to gcr.io or github.com
101 | [^2]: Use `--dry-run` to peek the components and their versions to be installed by the current command
102 | [^3]: Please refer to learn how to build function image at local
103 |
104 | ---
105 | hideInToc: true
106 | layout: center
107 | class: text-center
108 | ---
109 |
110 | # Your First Async Function
111 |
112 | A brief walkthrough
113 |
114 | ---
115 | title: Your First Async Function
116 | ---
117 |
118 |
119 |
120 | # Async
121 |
122 | ```js
123 | function (ctx, data) {}
124 | ```
125 |
126 |
127 |
128 |
129 | ###### Parameters
130 |
131 | * `ctx`: OpenFunction [context](https://github.com/OpenFunction/functions-framework-nodejs/blob/master/src/openfunction/function_context.ts) object
132 | * `ctx.send(payload, output?)`: Send `payload` to all or one specific `output` of Dapr Output [Binding](https://docs.dapr.io/reference/components-reference/supported-bindings/) or Pub [Broker](https://docs.dapr.io/reference/components-reference/supported-pubsub/)
133 | * `data`: Data recieved from Dapr Input Binding or Sub Broker
134 |
135 | ###### Notice
136 |
137 | * `ctx.send` CAN be invoked where necessary, when you have certain outgoing data to send
138 |
139 |
140 |
141 |
142 |
143 | # (HTTP) Sync
144 |
145 | ```js
146 | function (req, res) {}
147 | ```
148 |
149 |
150 |
151 |
152 |
153 | ###### Parameters
154 |
155 | * `req`: Express standard [request](https://devdocs.io/express-request/) object
156 | * `res`: Express standard [response](https://devdocs.io/express-response/) object
157 | * `res.send(body)`: Use this method to send HTTP response in most common cases
158 |
159 | ###### NOTICE
160 | * Response process SHOULD be explictly ended with `res.send()`, `res.json()`, `res.end()` and alike methods
161 |
162 |
163 |
164 |
165 |
166 | ---
167 | title: A sample async function
168 | level: 2
169 | ---
170 |
171 | # A sample function: `tryAsync`
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 | ###### index.mjs
180 |
181 | ```js
182 | // Async function
183 | export const tryAsync = (ctx, data) => {
184 | console.log('Data received: %o', data);
185 | ctx.send(data);
186 | };
187 |
188 | // HTTP sync function
189 | export const tryKnative = (req, res) => {
190 | res.send(`Hello, ${req.query.u || 'World'}!`);
191 | };
192 | ```
193 |
194 |
195 |
196 |
197 |
198 | ###### package.json
199 |
200 | ```json
201 | {
202 | "main": "index.mjs",
203 | "scripts": {
204 | "start": "functions-framework --target=tryKnative"
205 | },
206 | "dependencies": {
207 | "@openfunction/functions-framework": "^0.4.1"
208 | }
209 | }
210 | ```
211 |
212 |
213 |
214 |
215 |
216 | ###### Notice
217 |
218 | * Serveral async and sync functions CAN be placed in ONE SINGLE JavaScript file
219 | * Target function CAN be assigned when applying Function CR
220 | * In `package.json`, `sciprts` and `dependencies` sections could be omitted
221 | * [@openfucntion/openfunction-framework](https://www.npmjs.com/package/@openfunction/functions-framework/v/0.4.1) lib would be automatically added during build
222 | * `start` script is highly recommeneded for local development
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 | ---
231 | title: Build Function Image via Pack
232 | level: 2
233 | ---
234 |
235 | # Build Function Image via Pack
236 |
237 | Local build is recommended if your Kubernetes nodes have limited access to GitHub or Docker Hub.
238 |
239 | 1. Install Cloud Native Buildpacks project's [Pack](https://buildpacks.io/docs/tools/pack/) CLI tool
240 |
241 | 1. Use `pack` tool to build your function image at local [^1]
242 |
243 | ```bash {all|1|2|3|all}
244 | pack build -B openfunction/builder-node:v2-16.13 \ # Builder image, `16` is the latest version
245 | -e FUNC_NAME=tryKnative \ # Default entry point function
246 | -p src \ # Path of source files to be built
247 | /:
248 | ```
249 |
250 | 1. Push function image to target container repository (e.g. Docker Hub)
251 |
252 | ```bash
253 | docker push /:
254 | ```
255 |
256 | [^1]: `pack` tool would download builder image during the build process
257 |
258 | ---
259 | layout: center
260 | class: text-center
261 | ---
262 |
263 | # Lab: [MQTT](https://www.emqx.com/en/mqtt) Forwarder
264 |
265 | Use async function to bridge MQTT messages among topic channels
266 |
267 | ---
268 | title: Set up MQTT Broker
269 | level: 2
270 | ---
271 |
272 | # Set up MQTT Broker
273 |
274 | In this lab, we will use [EMQX](https://www.emqx.io/) as the broker infrastructure. Learn [full steps](https://www.emqx.com/en/blog/rapidly-deploy-emqx-clusters-on-kubernetes-via-helm).
275 |
276 | 1. Add EMQX Helm Chart repository
277 |
278 | ```bash
279 | helm repo add emqx https://repos.emqx.io/charts
280 | helm repo update
281 | ```
282 |
283 | 1. Search available charts of EMQX
284 |
285 | ```plain
286 | helm search repo emqx
287 |
288 | NAME CHART VERSION APP VERSION DESCRIPTION
289 | emqx/emqx 4.4.3 4.4.3 A Helm chart for EMQX
290 | emqx/emqx-ee 4.4.3 4.4.3 A Helm chart for EMQ X
291 | ```
292 |
293 | 1. Deploy single replica of EMQX, and expose NodePort service
294 |
295 | ```bash
296 | helm install emqx emqx/emqx --set replicaCount=1 --set service.type=NodePort
297 | ```
298 |
299 |
300 | ---
301 | hideInToc: true
302 | layout: image
303 | image: images/emqx-dashboard.png
304 | class: text-center
305 | ---
306 |
307 | ###### EQMX Dashboard Screenshot
308 |
309 | ---
310 | title: "Lab 1: MQTT Input and Output Binding"
311 | level: 2
312 | layout: two-cols
313 | ---
314 |
315 | ```yaml {all|9-10|11-13|17-19|20-26}
316 | apiVersion: core.openfunction.io/v1beta1
317 | kind: Function
318 | metadata:
319 | name: sample-node-async-bindings
320 | spec:
321 | version: v2.0.0
322 | image: '/:'
323 | serving:
324 | # default to knative
325 | runtime: async
326 | annotations:
327 | # default to "grpc"
328 | dapr.io/app-protocol: http
329 | template:
330 | containers:
331 | - name: function
332 | params:
333 | # default to FUNC_NAME value
334 | FUNCTION_TARGET: tryAsync
335 | inputs:
336 | - name: mqtt-input
337 | component: mqtt-in
338 | outputs:
339 | - name: mqtt-output
340 | component: mqtt-out
341 | operation: create
342 |
343 | ```
344 |
345 | ::right::
346 |
347 |
348 |
349 | ```yaml
350 | bindings:
351 | mqtt-in:
352 | type: bindings.mqtt
353 | version: v1
354 | metadata:
355 | - name: consumerID
356 | value: '{uuid}'
357 | - name: url
358 | value: tcp://admin:public@emqx:1883
359 | - name: topic
360 | value: in
361 | mqtt-out:
362 | type: bindings.mqtt
363 | version: v1
364 | metadata:
365 | - name: consumerID
366 | value: '{uuid}'
367 | - name: url
368 | value: tcp://admin:public@emqx:1883
369 | - name: topic
370 | value: out
371 | ```
372 |
373 | > * Dapr Component - Bindings - [MQTT](https://docs.dapr.io/reference/components-reference/supported-bindings/mqtt/)
374 | > * OpenFunction - Function CRD - [DaprIO](https://openfunction.dev/docs/reference/component-reference/function-spec/#daprio)
375 | > * Check full [sample](https://github.com/OpenFunction/samples/tree/main/functions/async/mqtt-io-node) codes
376 |
377 |
378 |
379 |
384 |
385 | ---
386 | title: Deploy Function
387 | level: 3
388 | ---
389 |
390 | # Lab 1: MQTT Input and Output Binding
391 |
392 | * Apply function , and check running states
393 |
394 | ```bash
395 | $ kubectl apply -f async-bindings.yaml
396 | function.core.openfunction.io/sample-node-async-bindings created
397 |
398 | $ kubectl get fn
399 | NAME BUILDSTATE SERVINGSTATE BUILDER SERVING URL AGE
400 | sample-node-async-bindings Skipped Running serving-8f7xc 140m
401 |
402 | $ kubectl get po
403 | NAME READY STATUS RESTARTS AGE
404 | serving-8f7xc-deployment-v200-l78xc-564c6b5bf7-vksg7 2/2 Running 0 141m
405 | ```
406 |
407 | * Furthermore, check whether `function` container output correct logs
408 |
409 | ```bash
410 | $ kubectl logs -c function serving-8f7xc-deployment-v200-l78xc-564c6b5bf7-vksg7
411 | ...
412 | [Dapr-JS] Listening on 8080
413 | [Dapr-JS] Letting Dapr pick-up the server (Maximum 60s wait time)
414 | [Dapr-JS] - Waiting till Dapr Started (#0)
415 | [Dapr-JS] Server Started
416 | ```
417 |
418 | ---
419 | title: Trigger Event
420 | level: 3
421 | layout: image-right
422 | image: images/mqttx-in-out.png
423 | ---
424 |
425 | # Lab 1: Trigger Event
426 |
427 | See also: [MQTT X](https://mqttx.app/) desktop client
428 |
429 | * Connect EQMX server via NodePort mapped to `tcp:1883`
430 | * Publish `{"msg": "hello"}` to `in` topic
431 | * Payload received in `out` topic 👇 👉
432 | * Check the `function` container log
433 |
434 | ```bash
435 | $ kubectl logs -c function serving-8f7xc-deployment-v200-l78xc-564c6b5bf7-vksg7
436 | ...
437 | [Dapr-JS] Listening on 8080
438 | [Dapr-JS] Letting Dapr pick-up the server (Maximum 60s wait time)
439 | [Dapr-JS] - Waiting till Dapr Started (#0)
440 | [Dapr-JS] Server Started
441 | Data received: { msg: 'hello' }
442 | ```
443 |
444 | ---
445 | title: "Lab 2: MQTT Pub and Sub"
446 | level: 2
447 | layout: two-cols
448 | ---
449 |
450 | ```yaml {all|9-10|11-13|15-17|18-25}
451 | apiVersion: core.openfunction.io/v1beta1
452 | kind: Function
453 | metadata:
454 | name: sample-node-async-pubsub
455 | spec:
456 | version: v2.0.0
457 | image: '/:'
458 | serving:
459 | # default to knative
460 | runtime: async
461 | annotations:
462 | # default to "grpc"
463 | dapr.io/app-protocol: http
464 | template: ...
465 | params:
466 | # default to FUNC_NAME value
467 | FUNCTION_TARGET: tryAsync
468 | inputs:
469 | - name: mqtt-sub
470 | component: mqtt-pubsub
471 | topic: sub
472 | outputs:
473 | - name: mqtt-pub
474 | component: mqtt-pubsub
475 | topic: pub
476 |
477 | ```
478 |
479 | ::right::
480 |
481 |
482 |
483 | ```yaml
484 | pubsub:
485 | mqtt-pubsub:
486 | type: pubsub.mqtt
487 | version: v1
488 | metadata:
489 | - name: consumerID
490 | value: '{uuid}'
491 | - name: url
492 | value: tcp://admin:public@emqx:1883
493 | - name: qos
494 | value: 1
495 | ```
496 |
497 | > * Dapr Component - Pub/Sub Brokers - [MQTT](https://docs.dapr.io/reference/components-reference/supported-pubsub/setup-mqtt/)
498 | > * OpenFunction - Function CRD - [DaprIO](https://openfunction.dev/docs/reference/component-reference/function-spec/#daprio)
499 | > * `topic` field is required for pubsub component
500 | > * Check full [sample](https://github.com/OpenFunction/samples/tree/main/functions/async/mqtt-io-node) codes
501 |
502 |
503 |
504 |
509 |
510 | ---
511 | title: Deploy Function
512 | level: 3
513 | ---
514 |
515 | # Lab 2: MQTT Pub and Sub
516 |
517 | * Apply function , and check running states
518 |
519 | ```bash
520 | $ kubectl apply -f async-pubsub.yaml
521 | function.core.openfunction.io/sample-node-async-pubsub created
522 |
523 | $ kubectl get fn
524 | NAME BUILDSTATE SERVINGSTATE BUILDER SERVING URL AGE
525 | sample-node-async-pubsub Skipped Running serving-2qfkl 140m
526 |
527 | $ kubectl get po
528 | NAME READY STATUS RESTARTS AGE
529 | serving-2qfkl-deployment-v200-6cshf-57c8b5b8dd-ztmbf 2/2 Running 0 141m
530 | ```
531 |
532 | * Furthermore, check whether `function` container output correct logs
533 |
534 | ```bash
535 | $ kubectl logs -c function serving-2qfkl-deployment-v200-6cshf-57c8b5b8dd-ztmbf
536 | ...
537 | [Dapr-JS] Listening on 8080
538 | [Dapr-JS] Letting Dapr pick-up the server (Maximum 60s wait time)
539 | [Dapr-JS] - Waiting till Dapr Started (#0)
540 | [Dapr API][PubSub] Registered 1 PubSub Subscriptions
541 | [Dapr-JS] Server Started
542 | ```
543 |
544 | ---
545 | title: Trigger Event
546 | level: 3
547 | layout: image-right
548 | image: images/mqttx-pub-sub.png
549 | ---
550 |
551 | # Lab 2: Trigger Event
552 |
553 | * Connect EQMX server via NodePort mapped to `tcp:1883`
554 | * Publish a [CloudEvents](https://cloudevents.io/) event to `pub` topic
555 | * CloudEvents payload got in `sub` 👉
556 | * Pure data recieved in async function 👇
557 | * Check the `function` container log
558 |
559 | ```bash
560 | $ kubectl logs -c function serving-2qfkl-deployment-v200-6cshf-57c8b5b8dd-ztmbf
561 | ...
562 | [Dapr-JS] Listening on 8080
563 | [Dapr-JS] Letting Dapr pick-up the server (Maximum 60s wait time)
564 | [Dapr-JS] - Waiting till Dapr Started (#0)
565 | [Dapr API][PubSub] Registered 1 PubSub Subscriptions
566 | [Dapr-JS] Server Started
567 | Data received: { orderId: '100' }
568 | ```
569 |
570 | ---
571 | hideInToc: true
572 | layout: center
573 | class: text-center
574 | ---
575 |
576 | # Learn More
577 |
578 | [Discord](https://discord.gg/awpAh8W5xW) · [Slack](https://cloud-native.slack.com/archives/C03ETDMD3LZ)
579 |
580 |
581 |
582 | [OpenFunction](https://openfunction.dev/) · [Node.js Functions Framework](https://github.com/OpenFunction/functions-framework-nodejs)
583 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.4
2 |
3 | importers:
4 |
5 | .:
6 | specifiers:
7 | '@iconify/json': ^2.1.61
8 | '@slidev/cli': ^0.33.0
9 | '@slidev/theme-default': ^0.21.2
10 | playwright-chromium: ^1.22.2
11 | pnpm: ^7.2.1
12 | rimraf: ^3.0.2
13 | devDependencies:
14 | '@iconify/json': 2.1.61
15 | '@slidev/cli': 0.33.0_playwright-chromium@1.22.2
16 | '@slidev/theme-default': 0.21.2
17 | playwright-chromium: 1.22.2
18 | pnpm: 7.2.1
19 | rimraf: 3.0.2
20 |
21 | 101-ofn-overview/src:
22 | specifiers:
23 | '@slidev/cli': ^0.33.0
24 | '@slidev/theme-default': '*'
25 | slidev-theme-light-icons: ^1.0.2
26 | dependencies:
27 | '@slidev/cli': 0.33.0
28 | '@slidev/theme-default': 0.21.2
29 | slidev-theme-light-icons: 1.0.2
30 |
31 | 202-node-async/src:
32 | specifiers:
33 | '@slidev/cli': ^0.33.0
34 | '@slidev/theme-default': '*'
35 | '@slidev/theme-seriph': '*'
36 | dependencies:
37 | '@slidev/cli': 0.33.0
38 | '@slidev/theme-default': 0.21.2
39 | '@slidev/theme-seriph': 0.21.2
40 |
41 | 203-node-mixed/src:
42 | specifiers:
43 | '@slidev/cli': ^0.33.0
44 | '@slidev/theme-default': '*'
45 | '@slidev/theme-seriph': '*'
46 | dependencies:
47 | '@slidev/cli': 0.33.0
48 | '@slidev/theme-default': 0.21.2
49 | '@slidev/theme-seriph': 0.21.2
50 |
51 | packages:
52 |
53 | /@antfu/install-pkg/0.1.0:
54 | resolution: {integrity: sha512-VaIJd3d1o7irZfK1U0nvBsHMyjkuyMP3HKYVV53z8DKyulkHKmjhhtccXO51WSPeeSHIeoJEoNOKavYpS7jkZw==}
55 | dependencies:
56 | execa: 5.1.1
57 | find-up: 5.0.0
58 |
59 | /@antfu/utils/0.1.7:
60 | resolution: {integrity: sha512-XbmXbhrjfxQq+ishOKeUIK1VYxQV0B+ZkAQkz00bxhmQd5izdT0YRSDwkyH/KX46gFVBMd+6anvSDlciUt3L4A==}
61 | dev: false
62 |
63 | /@antfu/utils/0.5.2:
64 | resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==}
65 |
66 | /@babel/helper-validator-identifier/7.16.7:
67 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
68 | engines: {node: '>=6.9.0'}
69 |
70 | /@babel/parser/7.18.5:
71 | resolution: {integrity: sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==}
72 | engines: {node: '>=6.0.0'}
73 | hasBin: true
74 | dependencies:
75 | '@babel/types': 7.18.4
76 |
77 | /@babel/types/7.18.4:
78 | resolution: {integrity: sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==}
79 | engines: {node: '>=6.9.0'}
80 | dependencies:
81 | '@babel/helper-validator-identifier': 7.16.7
82 | to-fast-properties: 2.0.0
83 |
84 | /@braintree/sanitize-url/6.0.0:
85 | resolution: {integrity: sha512-mgmE7XBYY/21erpzhexk4Cj1cyTQ9LzvnTxtzM17BJ7ERMNE6W72mQRo0I1Ud8eFJ+RVVIcBNhLFZ3GX4XFz5w==}
86 |
87 | /@drauu/core/0.3.0:
88 | resolution: {integrity: sha512-rN2Nu70lDIqWrihwlrBlncv94PJrPUi2F91O8vnOEJYpb1qQnG5v8oFiYzfshiSmKzENPKHt7F8eaG5xoaLW4w==}
89 | dependencies:
90 | perfect-freehand: 1.1.0
91 |
92 | /@iconify-json/carbon/1.1.5:
93 | resolution: {integrity: sha512-ENl8CIEo+7JcRzpJ/58i+dDc3fkNOO7gyNGg4S4JN5cAiVpvltYTVO86Oei7rpl8bKypJ0vk3B0BbzzTw7DclA==}
94 | dependencies:
95 | '@iconify/types': 1.1.0
96 |
97 | /@iconify-json/ph/1.1.1:
98 | resolution: {integrity: sha512-sIHTY+c1F8x29BM49IqoccJ3T8mvVXPcrE4WOpJ3GsBaip2YqFJRYU60rw64UL6GEI13vWSD7NsZKq8ytTO87g==}
99 | dependencies:
100 | '@iconify/types': 1.1.0
101 |
102 | /@iconify/json-tools/1.0.10:
103 | resolution: {integrity: sha512-LFelJDOLZ6JHlmlAkgrvmcu4hpNPB91KYcr4f60D/exzU1eNOb4/KCVHIydGHIQFaOacIOD+Xy+B7P1z812cZg==}
104 | dev: false
105 |
106 | /@iconify/json/1.1.461:
107 | resolution: {integrity: sha512-9Y41Tk9s3LDt4WI20XySNhNX6qTJ/WOBeE3O2iyoV9LJ6gFEDjp0uTPzfRU9NUx7D6VkvQ/htJEuRe9LmyMqUA==}
108 | dev: false
109 |
110 | /@iconify/json/2.1.61:
111 | resolution: {integrity: sha512-oUnlQkA/eq6vqGSBrpZlcPd1fgeDV8PVe7QucGa7JzBnaIfKskdD0hJVYehzlTHZ4yBsTeTTmk43ddG7RtwRrQ==}
112 | dependencies:
113 | '@iconify/types': 1.1.0
114 | pathe: 0.2.0
115 | dev: true
116 |
117 | /@iconify/types/1.1.0:
118 | resolution: {integrity: sha512-Jh0llaK2LRXQoYsorIH8maClebsnzTcve+7U3rQUSnC11X4jtPnFuyatqFLvMxZ8MLG8dB4zfHsbPfuvxluONw==}
119 |
120 | /@iconify/utils/1.0.32:
121 | resolution: {integrity: sha512-m+rnw7qKHq/XF7DAi4BcFoEAcXBfqqMgQJh8brGEHeqE/RUvgDMjmxsHgWnVpFsG+VmjGyAiI7nwXdliCwEU0Q==}
122 | dependencies:
123 | '@antfu/install-pkg': 0.1.0
124 | '@antfu/utils': 0.5.2
125 | '@iconify/types': 1.1.0
126 | debug: 4.3.4
127 | kolorist: 1.5.1
128 | local-pkg: 0.4.1
129 | transitivePeerDependencies:
130 | - supports-color
131 |
132 | /@nodelib/fs.scandir/2.1.5:
133 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
134 | engines: {node: '>= 8'}
135 | dependencies:
136 | '@nodelib/fs.stat': 2.0.5
137 | run-parallel: 1.2.0
138 |
139 | /@nodelib/fs.stat/2.0.5:
140 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
141 | engines: {node: '>= 8'}
142 |
143 | /@nodelib/fs.walk/1.2.8:
144 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
145 | engines: {node: '>= 8'}
146 | dependencies:
147 | '@nodelib/fs.scandir': 2.1.5
148 | fastq: 1.13.0
149 |
150 | /@pdf-lib/standard-fonts/1.0.0:
151 | resolution: {integrity: sha512-hU30BK9IUN/su0Mn9VdlVKsWBS6GyhVfqjwl1FjZN4TxP6cCw0jP2w7V3Hf5uX7M0AZJ16vey9yE0ny7Sa59ZA==}
152 | dependencies:
153 | pako: 1.0.11
154 | dev: false
155 |
156 | /@pdf-lib/upng/1.0.1:
157 | resolution: {integrity: sha512-dQK2FUMQtowVP00mtIksrlZhdFXQZPC+taih1q4CvPZ5vqdxR/LKBaFg0oAfzd1GlHZXXSPdQfzQnt+ViGvEIQ==}
158 | dependencies:
159 | pako: 1.0.11
160 | dev: false
161 |
162 | /@polka/url/1.0.0-next.21:
163 | resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==}
164 | dev: false
165 |
166 | /@rollup/pluginutils/4.2.1:
167 | resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
168 | engines: {node: '>= 8.0.0'}
169 | dependencies:
170 | estree-walker: 2.0.2
171 | picomatch: 2.3.1
172 |
173 | /@slidev/cli/0.33.0:
174 | resolution: {integrity: sha512-Ej11pPmfya3xH8aPY+1Lyl1JSy/avQoAOyLB3Bv8nJ5MsdW+fcUj/u3OksaMbESPDly3A0RWU2Tda4NtfFVecg==}
175 | engines: {node: '>=14.0.0'}
176 | hasBin: true
177 | peerDependencies:
178 | playwright-chromium: ^1.10.0
179 | peerDependenciesMeta:
180 | playwright-chromium:
181 | optional: true
182 | dependencies:
183 | '@antfu/utils': 0.5.2
184 | '@iconify-json/carbon': 1.1.5
185 | '@iconify-json/ph': 1.1.1
186 | '@slidev/client': 0.33.0_vite@2.9.12
187 | '@slidev/parser': 0.33.0
188 | '@slidev/types': 0.33.0
189 | '@vitejs/plugin-vue': 2.3.3_vite@2.9.12+vue@3.2.37
190 | '@vue/compiler-sfc': 3.2.37
191 | cli-progress: 3.11.1
192 | codemirror: 5.65.5
193 | connect: 3.7.0
194 | debug: 4.3.4
195 | fast-glob: 3.2.11
196 | fs-extra: 10.1.0
197 | global-dirs: 3.0.0
198 | import-from: 4.0.0
199 | is-installed-globally: 0.4.0
200 | jiti: 1.13.0
201 | js-base64: 3.7.2
202 | katex: 0.15.6
203 | kolorist: 1.5.1
204 | markdown-it: 13.0.1
205 | markdown-it-footnote: 3.0.3
206 | markdown-it-link-attributes: 4.0.0
207 | monaco-editor: 0.33.0
208 | nanoid: 3.3.4
209 | open: 8.4.0
210 | plantuml-encoder: 1.4.0
211 | prismjs: 1.28.0
212 | prompts: 2.4.2
213 | resolve: 1.22.0
214 | resolve-from: 5.0.0
215 | resolve-global: 1.0.0
216 | shiki: 0.10.1
217 | unplugin-icons: 0.14.3_zzjg27s3eqfbklnrwy6rdd2pii
218 | unplugin-vue-components: 0.19.6_vite@2.9.12+vue@3.2.37
219 | vite: 2.9.12
220 | vite-plugin-md: 0.13.1_vite@2.9.12
221 | vite-plugin-remote-assets: 0.2.2_vite@2.9.12
222 | vite-plugin-vue-server-ref: 0.2.4_vite@2.9.12+vue@3.2.37
223 | vite-plugin-windicss: 1.8.4_vite@2.9.12
224 | vue: 3.2.37
225 | windicss: 3.5.4
226 | yargs: 17.5.1
227 | transitivePeerDependencies:
228 | - '@babel/parser'
229 | - '@babel/traverse'
230 | - '@nuxt/kit'
231 | - '@svgr/core'
232 | - '@vue/composition-api'
233 | - esbuild
234 | - less
235 | - rollup
236 | - sass
237 | - stylus
238 | - supports-color
239 | - vue-template-compiler
240 | - vue-template-es2015-compiler
241 | - webpack
242 | dev: false
243 |
244 | /@slidev/cli/0.33.0_playwright-chromium@1.22.2:
245 | resolution: {integrity: sha512-Ej11pPmfya3xH8aPY+1Lyl1JSy/avQoAOyLB3Bv8nJ5MsdW+fcUj/u3OksaMbESPDly3A0RWU2Tda4NtfFVecg==}
246 | engines: {node: '>=14.0.0'}
247 | hasBin: true
248 | peerDependencies:
249 | playwright-chromium: ^1.10.0
250 | peerDependenciesMeta:
251 | playwright-chromium:
252 | optional: true
253 | dependencies:
254 | '@antfu/utils': 0.5.2
255 | '@iconify-json/carbon': 1.1.5
256 | '@iconify-json/ph': 1.1.1
257 | '@slidev/client': 0.33.0_vite@2.9.12
258 | '@slidev/parser': 0.33.0
259 | '@slidev/types': 0.33.0
260 | '@vitejs/plugin-vue': 2.3.3_vite@2.9.12+vue@3.2.37
261 | '@vue/compiler-sfc': 3.2.37
262 | cli-progress: 3.11.1
263 | codemirror: 5.65.5
264 | connect: 3.7.0
265 | debug: 4.3.4
266 | fast-glob: 3.2.11
267 | fs-extra: 10.1.0
268 | global-dirs: 3.0.0
269 | import-from: 4.0.0
270 | is-installed-globally: 0.4.0
271 | jiti: 1.13.0
272 | js-base64: 3.7.2
273 | katex: 0.15.6
274 | kolorist: 1.5.1
275 | markdown-it: 13.0.1
276 | markdown-it-footnote: 3.0.3
277 | markdown-it-link-attributes: 4.0.0
278 | monaco-editor: 0.33.0
279 | nanoid: 3.3.4
280 | open: 8.4.0
281 | plantuml-encoder: 1.4.0
282 | playwright-chromium: 1.22.2
283 | prismjs: 1.28.0
284 | prompts: 2.4.2
285 | resolve: 1.22.0
286 | resolve-from: 5.0.0
287 | resolve-global: 1.0.0
288 | shiki: 0.10.1
289 | unplugin-icons: 0.14.3_zzjg27s3eqfbklnrwy6rdd2pii
290 | unplugin-vue-components: 0.19.6_vite@2.9.12+vue@3.2.37
291 | vite: 2.9.12
292 | vite-plugin-md: 0.13.1_vite@2.9.12
293 | vite-plugin-remote-assets: 0.2.2_vite@2.9.12
294 | vite-plugin-vue-server-ref: 0.2.4_vite@2.9.12+vue@3.2.37
295 | vite-plugin-windicss: 1.8.4_vite@2.9.12
296 | vue: 3.2.37
297 | windicss: 3.5.4
298 | yargs: 17.5.1
299 | transitivePeerDependencies:
300 | - '@babel/parser'
301 | - '@babel/traverse'
302 | - '@nuxt/kit'
303 | - '@svgr/core'
304 | - '@vue/composition-api'
305 | - esbuild
306 | - less
307 | - rollup
308 | - sass
309 | - stylus
310 | - supports-color
311 | - vue-template-compiler
312 | - vue-template-es2015-compiler
313 | - webpack
314 | dev: true
315 |
316 | /@slidev/cli/0.7.4:
317 | resolution: {integrity: sha512-psUwQw6XLn8ftfUMKY0e9eOKMXcZ2pYsz0JQdcWmYU6wx14GylArT+gj3MMAomdbTVyl7PgfWXqhrfG7ECTDxA==}
318 | engines: {node: '>=14.0.0'}
319 | hasBin: true
320 | peerDependencies:
321 | playwright-chromium: ^1.10.0
322 | peerDependenciesMeta:
323 | playwright-chromium:
324 | optional: true
325 | dependencies:
326 | '@antfu/utils': 0.1.7
327 | '@iconify/json': 1.1.461
328 | '@slidev/client': 0.7.4
329 | '@slidev/parser': 0.7.4
330 | '@slidev/types': 0.7.4
331 | '@vitejs/plugin-vue': 1.10.2_vite@2.9.12
332 | '@vue/compiler-sfc': 3.2.37
333 | cli-progress: 3.11.1
334 | codemirror: 5.65.5
335 | connect: 3.7.0
336 | fast-glob: 3.2.11
337 | fs-extra: 10.1.0
338 | jiti: 1.13.0
339 | js-base64: 3.7.2
340 | kolorist: 1.5.1
341 | markdown-it: 12.3.2
342 | markdown-it-katex: 2.0.3
343 | markdown-it-link-attributes: 3.0.0
344 | monaco-editor: 0.23.0
345 | pdf-lib: 1.17.1
346 | prismjs: 1.28.0
347 | prompts: 2.4.2
348 | shiki: 0.9.15
349 | sirv: 1.0.19
350 | vite: 2.9.12
351 | vite-plugin-components: 0.8.4_vite@2.9.12
352 | vite-plugin-icons: 0.5.1_rhrfcyn26yvunb2ux4b7slv7na
353 | vite-plugin-md: 0.6.7_vite@2.9.12
354 | vite-plugin-remote-assets: 0.2.2_vite@2.9.12
355 | vite-plugin-windicss: 0.16.7_vite@2.9.12
356 | vue: 3.2.37
357 | windicss: 3.5.4
358 | yargs: 17.5.1
359 | transitivePeerDependencies:
360 | - '@vue/composition-api'
361 | - less
362 | - sass
363 | - stylus
364 | - supports-color
365 | - vue-template-compiler
366 | dev: false
367 |
368 | /@slidev/client/0.33.0_vite@2.9.12:
369 | resolution: {integrity: sha512-c/0AOCkc2k/IqlYcbouRKfvM4GWa6B69+AvKE74N2sOy9kR59AR64UAMyeAIPhzOKFDl7m6crg6qOMacKU2nrQ==}
370 | engines: {node: '>=14.0.0'}
371 | dependencies:
372 | '@antfu/utils': 0.5.2
373 | '@slidev/parser': 0.33.0
374 | '@slidev/types': 0.33.0
375 | '@vueuse/core': 8.6.0_vue@3.2.37
376 | '@vueuse/head': 0.7.6_vue@3.2.37
377 | '@vueuse/motion': 2.0.0-beta.18_vue@3.2.37
378 | codemirror: 5.65.5
379 | defu: 6.0.0
380 | drauu: 0.3.0
381 | file-saver: 2.0.5
382 | js-base64: 3.7.2
383 | js-yaml: 4.1.0
384 | katex: 0.15.6
385 | mermaid: 9.1.2
386 | monaco-editor: 0.33.0
387 | nanoid: 3.3.4
388 | prettier: 2.7.0
389 | recordrtc: 5.6.2
390 | resolve: 1.22.0
391 | vite-plugin-windicss: 1.8.4_vite@2.9.12
392 | vue: 3.2.37
393 | vue-router: 4.0.16_vue@3.2.37
394 | vue-starport: 0.2.11
395 | windicss: 3.5.4
396 | transitivePeerDependencies:
397 | - '@nuxt/kit'
398 | - '@vue/composition-api'
399 | - supports-color
400 | - vite
401 |
402 | /@slidev/client/0.7.4:
403 | resolution: {integrity: sha512-5mR7VbRZStSaSF7C9/6Q/o01g8BQHkEGD8fDJH8Kx5kGd0NXyMK13Y04Mrvqbg1WpaTWvDCma2GR+J0cDh7oOQ==}
404 | engines: {node: '>=14.0.0'}
405 | dependencies:
406 | '@antfu/utils': 0.1.7
407 | '@slidev/parser': 0.7.4
408 | '@slidev/types': 0.7.4
409 | '@vueuse/core': 4.11.2_vue@3.2.37
410 | '@vueuse/head': 0.5.1_vue@3.2.37
411 | codemirror: 5.65.5
412 | file-saver: 2.0.5
413 | js-base64: 3.7.2
414 | js-yaml: 4.1.0
415 | monaco-editor: 0.23.0
416 | prettier: 2.7.0
417 | recordrtc: 5.6.2
418 | vue: 3.2.37
419 | vue-router: 4.0.16_vue@3.2.37
420 | windicss: 2.5.14
421 | transitivePeerDependencies:
422 | - '@vue/composition-api'
423 | dev: false
424 |
425 | /@slidev/parser/0.33.0:
426 | resolution: {integrity: sha512-9BEMg953NBpMncM6mxrB6HNZRGI3XySZrn/xw4BHt7O7Jzb0XCWyhE8892VsR5H57ZBGYQa0uaKJZXI0KHqxLg==}
427 | engines: {node: '>=14.0.0'}
428 | dependencies:
429 | '@slidev/types': 0.33.0
430 | js-yaml: 4.1.0
431 |
432 | /@slidev/parser/0.7.4:
433 | resolution: {integrity: sha512-1V+RglqOQmC4RNajdrYUqIDVins4tpbtzisl/V6yv9CkMq4sP/+MvdpRk8KR6SNkIPM1hgN+38C5AF+5DeQy3w==}
434 | engines: {node: '>=14.0.0'}
435 | dependencies:
436 | '@slidev/types': 0.7.4
437 | js-yaml: 4.1.0
438 | dev: false
439 |
440 | /@slidev/theme-default/0.21.2:
441 | resolution: {integrity: sha512-neUucFs2YrRZZd73QwvLTyRG/o1nerDFUR5t8YAmXVLTMzWfY71flQ6aAhjYf+WjsozYsOHcxi/pZtIzZ4VhTQ==}
442 | engines: {node: '>=14.0.0', slidev: '>=0.19.2'}
443 | dependencies:
444 | '@slidev/types': 0.22.7
445 | codemirror-theme-vars: 0.1.1
446 | prism-theme-vars: 0.2.2
447 | theme-vitesse: 0.1.14
448 |
449 | /@slidev/theme-default/0.7.9:
450 | resolution: {integrity: sha512-11+yoDYNiFcp0z5DCVUJK+apxdP25el1YI54Y5IfGNouk9UIjf0wZzDc5m73jF1dzQsHJkCMnqkMo3529TfuSQ==}
451 | engines: {node: '>=14.0.0'}
452 | peerDependencies:
453 | '@slidev/client': '*'
454 | shiki: '*'
455 | dependencies:
456 | '@slidev/types': 0.13.13
457 | codemirror-theme-vars: 0.1.1
458 | prism-theme-vars: 0.2.2
459 | theme-vitesse: 0.1.14
460 | dev: false
461 |
462 | /@slidev/theme-seriph/0.21.2:
463 | resolution: {integrity: sha512-D3zhFYBmH1X37LX1LvTUPxAM1EEK6vMfy4hyxI9JIBXuugVq1WrfjcD+Lt9HnLpH1EqD3Mk+gS0lP/uC2TaVQw==}
464 | engines: {node: '>=14.0.0', slidev: '>=0.19.3'}
465 | dependencies:
466 | '@slidev/types': 0.22.7
467 | codemirror-theme-vars: 0.1.1
468 | prism-theme-vars: 0.2.2
469 | theme-vitesse: 0.1.14
470 | dev: false
471 |
472 | /@slidev/types/0.13.13:
473 | resolution: {integrity: sha512-PdYByaK2yCFNP0J5UFonGXbjuIWSiNwaZklOe9QTZDClUOye6YprSffJpEHPPXb2ktyTf6BZIPd4YNhpTda70w==}
474 | engines: {node: '>=14.0.0'}
475 | dev: false
476 |
477 | /@slidev/types/0.22.7:
478 | resolution: {integrity: sha512-mCVKQbcGTv6d6n9aHpYNp5U04HF+FMbpY083vqpJ6Folc805BB1Am02eubaW0J6nM+dSOu2dDgPY+kIjs75sAQ==}
479 | engines: {node: '>=14.0.0'}
480 |
481 | /@slidev/types/0.33.0:
482 | resolution: {integrity: sha512-QBy1LAunbcZW5szWaoLj3oiWdnYRLeyXmxyGk9N/3x5XbR4NYLf4WMQsji4iLHADalyYwghw53QEhGJsmktQ3g==}
483 | engines: {node: '>=14.0.0'}
484 |
485 | /@slidev/types/0.7.4:
486 | resolution: {integrity: sha512-hqOGpvr0gFlQVwg1gs+KO2mWT2K3e93iCKG9xorNDQ6fmolNkWtXNr1aQ0pNlWUQpE4nYBK4WUK/E+2HIMONDQ==}
487 | engines: {node: '>=14.0.0'}
488 | dev: false
489 |
490 | /@types/linkify-it/3.0.2:
491 | resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==}
492 |
493 | /@types/markdown-it/12.2.3:
494 | resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==}
495 | dependencies:
496 | '@types/linkify-it': 3.0.2
497 | '@types/mdurl': 1.0.2
498 |
499 | /@types/mdurl/1.0.2:
500 | resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==}
501 |
502 | /@vitejs/plugin-vue/1.10.2_vite@2.9.12:
503 | resolution: {integrity: sha512-/QJ0Z9qfhAFtKRY+r57ziY4BSbGUTGsPRMpB/Ron3QPwBZM4OZAZHdTa4a8PafCwU5DTatXG8TMDoP8z+oDqJw==}
504 | engines: {node: '>=12.0.0'}
505 | peerDependencies:
506 | vite: ^2.5.10
507 | dependencies:
508 | vite: 2.9.12
509 | dev: false
510 |
511 | /@vitejs/plugin-vue/2.3.3_vite@2.9.12+vue@3.2.37:
512 | resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==}
513 | engines: {node: '>=12.0.0'}
514 | peerDependencies:
515 | vite: ^2.5.10
516 | vue: ^3.2.25
517 | dependencies:
518 | vite: 2.9.12
519 | vue: 3.2.37
520 |
521 | /@vue/compiler-core/3.2.37:
522 | resolution: {integrity: sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==}
523 | dependencies:
524 | '@babel/parser': 7.18.5
525 | '@vue/shared': 3.2.37
526 | estree-walker: 2.0.2
527 | source-map: 0.6.1
528 |
529 | /@vue/compiler-dom/3.2.37:
530 | resolution: {integrity: sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==}
531 | dependencies:
532 | '@vue/compiler-core': 3.2.37
533 | '@vue/shared': 3.2.37
534 |
535 | /@vue/compiler-sfc/3.2.37:
536 | resolution: {integrity: sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==}
537 | dependencies:
538 | '@babel/parser': 7.18.5
539 | '@vue/compiler-core': 3.2.37
540 | '@vue/compiler-dom': 3.2.37
541 | '@vue/compiler-ssr': 3.2.37
542 | '@vue/reactivity-transform': 3.2.37
543 | '@vue/shared': 3.2.37
544 | estree-walker: 2.0.2
545 | magic-string: 0.25.9
546 | postcss: 8.4.14
547 | source-map: 0.6.1
548 |
549 | /@vue/compiler-ssr/3.2.37:
550 | resolution: {integrity: sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==}
551 | dependencies:
552 | '@vue/compiler-dom': 3.2.37
553 | '@vue/shared': 3.2.37
554 |
555 | /@vue/devtools-api/6.1.4:
556 | resolution: {integrity: sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ==}
557 |
558 | /@vue/reactivity-transform/3.2.37:
559 | resolution: {integrity: sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==}
560 | dependencies:
561 | '@babel/parser': 7.18.5
562 | '@vue/compiler-core': 3.2.37
563 | '@vue/shared': 3.2.37
564 | estree-walker: 2.0.2
565 | magic-string: 0.25.9
566 |
567 | /@vue/reactivity/3.2.37:
568 | resolution: {integrity: sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==}
569 | dependencies:
570 | '@vue/shared': 3.2.37
571 |
572 | /@vue/runtime-core/3.2.37:
573 | resolution: {integrity: sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==}
574 | dependencies:
575 | '@vue/reactivity': 3.2.37
576 | '@vue/shared': 3.2.37
577 |
578 | /@vue/runtime-dom/3.2.37:
579 | resolution: {integrity: sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==}
580 | dependencies:
581 | '@vue/runtime-core': 3.2.37
582 | '@vue/shared': 3.2.37
583 | csstype: 2.6.20
584 |
585 | /@vue/server-renderer/3.2.37_vue@3.2.37:
586 | resolution: {integrity: sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==}
587 | peerDependencies:
588 | vue: 3.2.37
589 | dependencies:
590 | '@vue/compiler-ssr': 3.2.37
591 | '@vue/shared': 3.2.37
592 | vue: 3.2.37
593 |
594 | /@vue/shared/3.2.37:
595 | resolution: {integrity: sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==}
596 |
597 | /@vueuse/core/4.11.2_vue@3.2.37:
598 | resolution: {integrity: sha512-4A17XvKXpMR6829EVWvrdSKEeAjTWaiC3+xh51KEtlyCwvWQwZ0xwKDrbMj+e15ANxjHrTw/0bJVaWDfPQt/Pw==}
599 | dependencies:
600 | '@vueuse/shared': 4.11.2_vue@3.2.37
601 | vue-demi: 0.13.1_vue@3.2.37
602 | transitivePeerDependencies:
603 | - '@vue/composition-api'
604 | - vue
605 | dev: false
606 |
607 | /@vueuse/core/8.6.0_vue@3.2.37:
608 | resolution: {integrity: sha512-VirzExCm/N+QdrEWT7J4uSrvJ5hquKIAU9alQ37kUvIJk9XxCLxmfRnmekYc1kz2+6BnoyuKYXVmrMV351CB4w==}
609 | peerDependencies:
610 | '@vue/composition-api': ^1.1.0
611 | vue: ^2.6.0 || ^3.2.0
612 | peerDependenciesMeta:
613 | '@vue/composition-api':
614 | optional: true
615 | vue:
616 | optional: true
617 | dependencies:
618 | '@vueuse/metadata': 8.6.0
619 | '@vueuse/shared': 8.6.0_vue@3.2.37
620 | vue: 3.2.37
621 | vue-demi: 0.13.1_vue@3.2.37
622 |
623 | /@vueuse/head/0.5.1_vue@3.2.37:
624 | resolution: {integrity: sha512-xt6qgtItb4z/7vp664opQc0c2+ZoU9itMfvpmg4+h0uJcEnhl7LYxO4V+G8H7EVki7SyXDIFMfoCiCFaJrArmg==}
625 | peerDependencies:
626 | vue: '>=3'
627 | dependencies:
628 | vue: 3.2.37
629 | dev: false
630 |
631 | /@vueuse/head/0.7.6_vue@3.2.37:
632 | resolution: {integrity: sha512-cOWqCkT3WiF5oEpw+VVEWUJd9RLD5rc7DmnFp3cePsejp+t7686uKD9Z9ZU7Twb7R/BI8iexKTmXo9D/F3v6UA==}
633 | peerDependencies:
634 | vue: '>=3'
635 | dependencies:
636 | vue: 3.2.37
637 |
638 | /@vueuse/metadata/8.6.0:
639 | resolution: {integrity: sha512-F+CKPvaExsm7QgRr8y+ZNJFwXasn89rs5wth/HeX9lJ1q8XEt+HJ16Q5Sxh4rfG5YSKXrStveVge8TKvPjMjFA==}
640 |
641 | /@vueuse/motion/2.0.0-beta.18_vue@3.2.37:
642 | resolution: {integrity: sha512-mPeXxuqZp13lqpcb+345TnEP7tEOjC/wTkwf8be1Obzt3913lPpZPXgwKafMoocKRNOnMZye8Y6PqQOEKztk9A==}
643 | peerDependencies:
644 | '@nuxt/kit': npm:@nuxt/kit-edge@latest
645 | '@vue/composition-api': ^1.4.1
646 | vue: ^2.0.0 || >=3.0.0-rc.0
647 | peerDependenciesMeta:
648 | '@vue/composition-api':
649 | optional: true
650 | dependencies:
651 | '@vueuse/core': 8.6.0_vue@3.2.37
652 | '@vueuse/shared': 8.6.0_vue@3.2.37
653 | csstype: 3.1.0
654 | framesync: 6.1.0
655 | popmotion: 11.0.3
656 | style-value-types: 5.1.0
657 | vue: 3.2.37
658 | vue-demi: 0.13.1_vue@3.2.37
659 |
660 | /@vueuse/shared/4.11.2_vue@3.2.37:
661 | resolution: {integrity: sha512-vTbTi6ou7ljH3CkKVoaIaCAoWB5T1ewSogpL6VnO1duMPNuiv7x8K/LunMbnTg4tVyt6QwaiCuEq/kyS6AUBRg==}
662 | dependencies:
663 | vue-demi: 0.13.1_vue@3.2.37
664 | transitivePeerDependencies:
665 | - '@vue/composition-api'
666 | - vue
667 | dev: false
668 |
669 | /@vueuse/shared/8.6.0_vue@3.2.37:
670 | resolution: {integrity: sha512-Y/IVywZo7IfEoSSEtCYpkVEmPV7pU35mEIxV7PbD/D3ly18B3mEsBaPbtDkNM/QP3zAZ5mn4nEkOfddX4uwuIA==}
671 | peerDependencies:
672 | '@vue/composition-api': ^1.1.0
673 | vue: ^2.6.0 || ^3.2.0
674 | peerDependenciesMeta:
675 | '@vue/composition-api':
676 | optional: true
677 | vue:
678 | optional: true
679 | dependencies:
680 | vue: 3.2.37
681 | vue-demi: 0.13.1_vue@3.2.37
682 |
683 | /@windicss/config/1.8.4:
684 | resolution: {integrity: sha512-i4fFGFfZoRess6WMkauykHC3PFd9xKYVx7lSuLfMK7sgo6x3+l4dY42GbsWMHyLqH1sTMfyt1LgfXSIKYJozSA==}
685 | dependencies:
686 | debug: 4.3.4
687 | jiti: 1.13.0
688 | windicss: 3.5.4
689 | transitivePeerDependencies:
690 | - supports-color
691 |
692 | /@windicss/plugin-utils/0.16.7:
693 | resolution: {integrity: sha512-mxgTj/MkemN8JlyfaS20OAJ0BqTUoUlDT9wD/m5U+nUa5SN/r0kPlg1IW9SbmRTrYjNXWEENf9F0Fjb/X4zn6g==}
694 | dependencies:
695 | '@antfu/utils': 0.1.7
696 | debug: 4.3.4
697 | fast-glob: 3.2.11
698 | jiti: 1.13.0
699 | magic-string: 0.25.9
700 | micromatch: 4.0.5
701 | windicss: 3.5.4
702 | transitivePeerDependencies:
703 | - supports-color
704 | dev: false
705 |
706 | /@windicss/plugin-utils/1.8.4:
707 | resolution: {integrity: sha512-DqJVwAfzlgd8nYSNlmhXOey32pI8UwH7QiOWdFS/AR2O/q9oLDGHDn97Its/kZdfoyhi8ylwZNP2Pk0H7cihhQ==}
708 | dependencies:
709 | '@antfu/utils': 0.5.2
710 | '@windicss/config': 1.8.4
711 | debug: 4.3.4
712 | fast-glob: 3.2.11
713 | magic-string: 0.26.2
714 | micromatch: 4.0.5
715 | windicss: 3.5.4
716 | transitivePeerDependencies:
717 | - supports-color
718 |
719 | /ansi-regex/5.0.1:
720 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
721 | engines: {node: '>=8'}
722 |
723 | /ansi-styles/4.3.0:
724 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
725 | engines: {node: '>=8'}
726 | dependencies:
727 | color-convert: 2.0.1
728 |
729 | /anymatch/3.1.2:
730 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
731 | engines: {node: '>= 8'}
732 | dependencies:
733 | normalize-path: 3.0.0
734 | picomatch: 2.3.1
735 |
736 | /argparse/1.0.10:
737 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
738 | dependencies:
739 | sprintf-js: 1.0.3
740 |
741 | /argparse/2.0.1:
742 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
743 |
744 | /at-least-node/1.0.0:
745 | resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
746 | engines: {node: '>= 4.0.0'}
747 |
748 | /axios/0.21.4_debug@4.3.4:
749 | resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==}
750 | dependencies:
751 | follow-redirects: 1.15.1_debug@4.3.4
752 | transitivePeerDependencies:
753 | - debug
754 |
755 | /balanced-match/1.0.2:
756 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
757 |
758 | /binary-extensions/2.2.0:
759 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
760 | engines: {node: '>=8'}
761 |
762 | /brace-expansion/1.1.11:
763 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
764 | dependencies:
765 | balanced-match: 1.0.2
766 | concat-map: 0.0.1
767 |
768 | /brace-expansion/2.0.1:
769 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
770 | dependencies:
771 | balanced-match: 1.0.2
772 |
773 | /braces/3.0.2:
774 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
775 | engines: {node: '>=8'}
776 | dependencies:
777 | fill-range: 7.0.1
778 |
779 | /chalk/4.1.2:
780 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
781 | engines: {node: '>=10'}
782 | dependencies:
783 | ansi-styles: 4.3.0
784 | supports-color: 7.2.0
785 | dev: false
786 |
787 | /chokidar/3.5.3:
788 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
789 | engines: {node: '>= 8.10.0'}
790 | dependencies:
791 | anymatch: 3.1.2
792 | braces: 3.0.2
793 | glob-parent: 5.1.2
794 | is-binary-path: 2.1.0
795 | is-glob: 4.0.3
796 | normalize-path: 3.0.0
797 | readdirp: 3.6.0
798 | optionalDependencies:
799 | fsevents: 2.3.2
800 |
801 | /cli-progress/3.11.1:
802 | resolution: {integrity: sha512-TTMA2LHrYaZeNMcgZGO10oYqj9hvd03pltNtVbu4ddeyDTHlYV7gWxsFiuvaQlgwMBFCv1TukcjiODWFlb16tQ==}
803 | engines: {node: '>=4'}
804 | dependencies:
805 | string-width: 4.2.3
806 |
807 | /cliui/7.0.4:
808 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
809 | dependencies:
810 | string-width: 4.2.3
811 | strip-ansi: 6.0.1
812 | wrap-ansi: 7.0.0
813 |
814 | /codemirror-theme-vars/0.1.1:
815 | resolution: {integrity: sha512-Au0Ysn6tUMZB/1Jd5S8g4Or1kZxTuTnNx6MVs9H46Ad7w8IEjkHusH+4oyia/FBcVuAJO4DIlkDnPM8Qnnf1rg==}
816 |
817 | /codemirror/5.65.5:
818 | resolution: {integrity: sha512-HNyhvGLnYz5c+kIsB9QKVitiZUevha3ovbIYaQiGzKo7ECSL/elWD9RXt3JgNr0NdnyqE9/Rc/7uLfkJQL638w==}
819 |
820 | /color-convert/2.0.1:
821 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
822 | engines: {node: '>=7.0.0'}
823 | dependencies:
824 | color-name: 1.1.4
825 |
826 | /color-name/1.1.4:
827 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
828 |
829 | /commander/2.20.3:
830 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
831 |
832 | /commander/7.2.0:
833 | resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
834 | engines: {node: '>= 10'}
835 |
836 | /commander/8.3.0:
837 | resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
838 | engines: {node: '>= 12'}
839 |
840 | /concat-map/0.0.1:
841 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
842 |
843 | /connect/3.7.0:
844 | resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==}
845 | engines: {node: '>= 0.10.0'}
846 | dependencies:
847 | debug: 2.6.9
848 | finalhandler: 1.1.2
849 | parseurl: 1.3.3
850 | utils-merge: 1.0.1
851 | transitivePeerDependencies:
852 | - supports-color
853 |
854 | /cross-spawn/7.0.3:
855 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
856 | engines: {node: '>= 8'}
857 | dependencies:
858 | path-key: 3.1.1
859 | shebang-command: 2.0.0
860 | which: 2.0.2
861 |
862 | /csstype/2.6.20:
863 | resolution: {integrity: sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==}
864 |
865 | /csstype/3.1.0:
866 | resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==}
867 |
868 | /d3-array/1.2.4:
869 | resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==}
870 |
871 | /d3-array/3.1.6:
872 | resolution: {integrity: sha512-DCbBBNuKOeiR9h04ySRBMW52TFVc91O9wJziuyXw6Ztmy8D3oZbmCkOO3UHKC7ceNJsN2Mavo9+vwV8EAEUXzA==}
873 | engines: {node: '>=12'}
874 | dependencies:
875 | internmap: 2.0.3
876 |
877 | /d3-axis/1.0.12:
878 | resolution: {integrity: sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==}
879 |
880 | /d3-axis/3.0.0:
881 | resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==}
882 | engines: {node: '>=12'}
883 |
884 | /d3-brush/1.1.6:
885 | resolution: {integrity: sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==}
886 | dependencies:
887 | d3-dispatch: 1.0.6
888 | d3-drag: 1.2.5
889 | d3-interpolate: 1.4.0
890 | d3-selection: 1.4.2
891 | d3-transition: 1.3.2
892 |
893 | /d3-brush/3.0.0:
894 | resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==}
895 | engines: {node: '>=12'}
896 | dependencies:
897 | d3-dispatch: 3.0.1
898 | d3-drag: 3.0.0
899 | d3-interpolate: 3.0.1
900 | d3-selection: 3.0.0
901 | d3-transition: 3.0.1_d3-selection@3.0.0
902 |
903 | /d3-chord/1.0.6:
904 | resolution: {integrity: sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==}
905 | dependencies:
906 | d3-array: 1.2.4
907 | d3-path: 1.0.9
908 |
909 | /d3-chord/3.0.1:
910 | resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==}
911 | engines: {node: '>=12'}
912 | dependencies:
913 | d3-path: 3.0.1
914 |
915 | /d3-collection/1.0.7:
916 | resolution: {integrity: sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==}
917 |
918 | /d3-color/1.4.1:
919 | resolution: {integrity: sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==}
920 |
921 | /d3-color/3.1.0:
922 | resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==}
923 | engines: {node: '>=12'}
924 |
925 | /d3-contour/1.3.2:
926 | resolution: {integrity: sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==}
927 | dependencies:
928 | d3-array: 1.2.4
929 |
930 | /d3-contour/3.0.1:
931 | resolution: {integrity: sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ==}
932 | engines: {node: '>=12'}
933 | dependencies:
934 | d3-array: 3.1.6
935 |
936 | /d3-delaunay/6.0.2:
937 | resolution: {integrity: sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==}
938 | engines: {node: '>=12'}
939 | dependencies:
940 | delaunator: 5.0.0
941 |
942 | /d3-dispatch/1.0.6:
943 | resolution: {integrity: sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==}
944 |
945 | /d3-dispatch/3.0.1:
946 | resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==}
947 | engines: {node: '>=12'}
948 |
949 | /d3-drag/1.2.5:
950 | resolution: {integrity: sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==}
951 | dependencies:
952 | d3-dispatch: 1.0.6
953 | d3-selection: 1.4.2
954 |
955 | /d3-drag/3.0.0:
956 | resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==}
957 | engines: {node: '>=12'}
958 | dependencies:
959 | d3-dispatch: 3.0.1
960 | d3-selection: 3.0.0
961 |
962 | /d3-dsv/1.2.0:
963 | resolution: {integrity: sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==}
964 | hasBin: true
965 | dependencies:
966 | commander: 2.20.3
967 | iconv-lite: 0.4.24
968 | rw: 1.3.3
969 |
970 | /d3-dsv/3.0.1:
971 | resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==}
972 | engines: {node: '>=12'}
973 | hasBin: true
974 | dependencies:
975 | commander: 7.2.0
976 | iconv-lite: 0.6.3
977 | rw: 1.3.3
978 |
979 | /d3-ease/1.0.7:
980 | resolution: {integrity: sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==}
981 |
982 | /d3-ease/3.0.1:
983 | resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==}
984 | engines: {node: '>=12'}
985 |
986 | /d3-fetch/1.2.0:
987 | resolution: {integrity: sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==}
988 | dependencies:
989 | d3-dsv: 1.2.0
990 |
991 | /d3-fetch/3.0.1:
992 | resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==}
993 | engines: {node: '>=12'}
994 | dependencies:
995 | d3-dsv: 3.0.1
996 |
997 | /d3-force/1.2.1:
998 | resolution: {integrity: sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==}
999 | dependencies:
1000 | d3-collection: 1.0.7
1001 | d3-dispatch: 1.0.6
1002 | d3-quadtree: 1.0.7
1003 | d3-timer: 1.0.10
1004 |
1005 | /d3-force/3.0.0:
1006 | resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==}
1007 | engines: {node: '>=12'}
1008 | dependencies:
1009 | d3-dispatch: 3.0.1
1010 | d3-quadtree: 3.0.1
1011 | d3-timer: 3.0.1
1012 |
1013 | /d3-format/1.4.5:
1014 | resolution: {integrity: sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==}
1015 |
1016 | /d3-format/3.1.0:
1017 | resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==}
1018 | engines: {node: '>=12'}
1019 |
1020 | /d3-geo/1.12.1:
1021 | resolution: {integrity: sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==}
1022 | dependencies:
1023 | d3-array: 1.2.4
1024 |
1025 | /d3-geo/3.0.1:
1026 | resolution: {integrity: sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==}
1027 | engines: {node: '>=12'}
1028 | dependencies:
1029 | d3-array: 3.1.6
1030 |
1031 | /d3-hierarchy/1.1.9:
1032 | resolution: {integrity: sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==}
1033 |
1034 | /d3-hierarchy/3.1.2:
1035 | resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==}
1036 | engines: {node: '>=12'}
1037 |
1038 | /d3-interpolate/1.4.0:
1039 | resolution: {integrity: sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==}
1040 | dependencies:
1041 | d3-color: 1.4.1
1042 |
1043 | /d3-interpolate/3.0.1:
1044 | resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==}
1045 | engines: {node: '>=12'}
1046 | dependencies:
1047 | d3-color: 3.1.0
1048 |
1049 | /d3-path/1.0.9:
1050 | resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==}
1051 |
1052 | /d3-path/3.0.1:
1053 | resolution: {integrity: sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==}
1054 | engines: {node: '>=12'}
1055 |
1056 | /d3-polygon/1.0.6:
1057 | resolution: {integrity: sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==}
1058 |
1059 | /d3-polygon/3.0.1:
1060 | resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==}
1061 | engines: {node: '>=12'}
1062 |
1063 | /d3-quadtree/1.0.7:
1064 | resolution: {integrity: sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==}
1065 |
1066 | /d3-quadtree/3.0.1:
1067 | resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==}
1068 | engines: {node: '>=12'}
1069 |
1070 | /d3-random/1.1.2:
1071 | resolution: {integrity: sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==}
1072 |
1073 | /d3-random/3.0.1:
1074 | resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==}
1075 | engines: {node: '>=12'}
1076 |
1077 | /d3-scale-chromatic/1.5.0:
1078 | resolution: {integrity: sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==}
1079 | dependencies:
1080 | d3-color: 1.4.1
1081 | d3-interpolate: 1.4.0
1082 |
1083 | /d3-scale-chromatic/3.0.0:
1084 | resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==}
1085 | engines: {node: '>=12'}
1086 | dependencies:
1087 | d3-color: 3.1.0
1088 | d3-interpolate: 3.0.1
1089 |
1090 | /d3-scale/2.2.2:
1091 | resolution: {integrity: sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==}
1092 | dependencies:
1093 | d3-array: 1.2.4
1094 | d3-collection: 1.0.7
1095 | d3-format: 1.4.5
1096 | d3-interpolate: 1.4.0
1097 | d3-time: 1.1.0
1098 | d3-time-format: 2.3.0
1099 |
1100 | /d3-scale/4.0.2:
1101 | resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==}
1102 | engines: {node: '>=12'}
1103 | dependencies:
1104 | d3-array: 3.1.6
1105 | d3-format: 3.1.0
1106 | d3-interpolate: 3.0.1
1107 | d3-time: 3.0.0
1108 | d3-time-format: 4.1.0
1109 |
1110 | /d3-selection/1.4.2:
1111 | resolution: {integrity: sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==}
1112 |
1113 | /d3-selection/3.0.0:
1114 | resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==}
1115 | engines: {node: '>=12'}
1116 |
1117 | /d3-shape/1.3.7:
1118 | resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==}
1119 | dependencies:
1120 | d3-path: 1.0.9
1121 |
1122 | /d3-shape/3.1.0:
1123 | resolution: {integrity: sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==}
1124 | engines: {node: '>=12'}
1125 | dependencies:
1126 | d3-path: 3.0.1
1127 |
1128 | /d3-time-format/2.3.0:
1129 | resolution: {integrity: sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==}
1130 | dependencies:
1131 | d3-time: 1.1.0
1132 |
1133 | /d3-time-format/4.1.0:
1134 | resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==}
1135 | engines: {node: '>=12'}
1136 | dependencies:
1137 | d3-time: 3.0.0
1138 |
1139 | /d3-time/1.1.0:
1140 | resolution: {integrity: sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==}
1141 |
1142 | /d3-time/3.0.0:
1143 | resolution: {integrity: sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==}
1144 | engines: {node: '>=12'}
1145 | dependencies:
1146 | d3-array: 3.1.6
1147 |
1148 | /d3-timer/1.0.10:
1149 | resolution: {integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==}
1150 |
1151 | /d3-timer/3.0.1:
1152 | resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==}
1153 | engines: {node: '>=12'}
1154 |
1155 | /d3-transition/1.3.2:
1156 | resolution: {integrity: sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==}
1157 | dependencies:
1158 | d3-color: 1.4.1
1159 | d3-dispatch: 1.0.6
1160 | d3-ease: 1.0.7
1161 | d3-interpolate: 1.4.0
1162 | d3-selection: 1.4.2
1163 | d3-timer: 1.0.10
1164 |
1165 | /d3-transition/3.0.1_d3-selection@3.0.0:
1166 | resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==}
1167 | engines: {node: '>=12'}
1168 | peerDependencies:
1169 | d3-selection: 2 - 3
1170 | dependencies:
1171 | d3-color: 3.1.0
1172 | d3-dispatch: 3.0.1
1173 | d3-ease: 3.0.1
1174 | d3-interpolate: 3.0.1
1175 | d3-selection: 3.0.0
1176 | d3-timer: 3.0.1
1177 |
1178 | /d3-voronoi/1.1.4:
1179 | resolution: {integrity: sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==}
1180 |
1181 | /d3-zoom/1.8.3:
1182 | resolution: {integrity: sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==}
1183 | dependencies:
1184 | d3-dispatch: 1.0.6
1185 | d3-drag: 1.2.5
1186 | d3-interpolate: 1.4.0
1187 | d3-selection: 1.4.2
1188 | d3-transition: 1.3.2
1189 |
1190 | /d3-zoom/3.0.0:
1191 | resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==}
1192 | engines: {node: '>=12'}
1193 | dependencies:
1194 | d3-dispatch: 3.0.1
1195 | d3-drag: 3.0.0
1196 | d3-interpolate: 3.0.1
1197 | d3-selection: 3.0.0
1198 | d3-transition: 3.0.1_d3-selection@3.0.0
1199 |
1200 | /d3/5.16.0:
1201 | resolution: {integrity: sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==}
1202 | dependencies:
1203 | d3-array: 1.2.4
1204 | d3-axis: 1.0.12
1205 | d3-brush: 1.1.6
1206 | d3-chord: 1.0.6
1207 | d3-collection: 1.0.7
1208 | d3-color: 1.4.1
1209 | d3-contour: 1.3.2
1210 | d3-dispatch: 1.0.6
1211 | d3-drag: 1.2.5
1212 | d3-dsv: 1.2.0
1213 | d3-ease: 1.0.7
1214 | d3-fetch: 1.2.0
1215 | d3-force: 1.2.1
1216 | d3-format: 1.4.5
1217 | d3-geo: 1.12.1
1218 | d3-hierarchy: 1.1.9
1219 | d3-interpolate: 1.4.0
1220 | d3-path: 1.0.9
1221 | d3-polygon: 1.0.6
1222 | d3-quadtree: 1.0.7
1223 | d3-random: 1.1.2
1224 | d3-scale: 2.2.2
1225 | d3-scale-chromatic: 1.5.0
1226 | d3-selection: 1.4.2
1227 | d3-shape: 1.3.7
1228 | d3-time: 1.1.0
1229 | d3-time-format: 2.3.0
1230 | d3-timer: 1.0.10
1231 | d3-transition: 1.3.2
1232 | d3-voronoi: 1.1.4
1233 | d3-zoom: 1.8.3
1234 |
1235 | /d3/7.4.4:
1236 | resolution: {integrity: sha512-97FE+MYdAlV3R9P74+R3Uar7wUKkIFu89UWMjEaDhiJ9VxKvqaMxauImy8PC2DdBkdM2BxJOIoLxPrcZUyrKoQ==}
1237 | engines: {node: '>=12'}
1238 | dependencies:
1239 | d3-array: 3.1.6
1240 | d3-axis: 3.0.0
1241 | d3-brush: 3.0.0
1242 | d3-chord: 3.0.1
1243 | d3-color: 3.1.0
1244 | d3-contour: 3.0.1
1245 | d3-delaunay: 6.0.2
1246 | d3-dispatch: 3.0.1
1247 | d3-drag: 3.0.0
1248 | d3-dsv: 3.0.1
1249 | d3-ease: 3.0.1
1250 | d3-fetch: 3.0.1
1251 | d3-force: 3.0.0
1252 | d3-format: 3.1.0
1253 | d3-geo: 3.0.1
1254 | d3-hierarchy: 3.1.2
1255 | d3-interpolate: 3.0.1
1256 | d3-path: 3.0.1
1257 | d3-polygon: 3.0.1
1258 | d3-quadtree: 3.0.1
1259 | d3-random: 3.0.1
1260 | d3-scale: 4.0.2
1261 | d3-scale-chromatic: 3.0.0
1262 | d3-selection: 3.0.0
1263 | d3-shape: 3.1.0
1264 | d3-time: 3.0.0
1265 | d3-time-format: 4.1.0
1266 | d3-timer: 3.0.1
1267 | d3-transition: 3.0.1_d3-selection@3.0.0
1268 | d3-zoom: 3.0.0
1269 |
1270 | /dagre-d3/0.6.4:
1271 | resolution: {integrity: sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==}
1272 | dependencies:
1273 | d3: 5.16.0
1274 | dagre: 0.8.5
1275 | graphlib: 2.1.8
1276 | lodash: 4.17.21
1277 |
1278 | /dagre/0.8.5:
1279 | resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==}
1280 | dependencies:
1281 | graphlib: 2.1.8
1282 | lodash: 4.17.21
1283 |
1284 | /debug/2.6.9:
1285 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
1286 | peerDependencies:
1287 | supports-color: '*'
1288 | peerDependenciesMeta:
1289 | supports-color:
1290 | optional: true
1291 | dependencies:
1292 | ms: 2.0.0
1293 |
1294 | /debug/4.3.4:
1295 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
1296 | engines: {node: '>=6.0'}
1297 | peerDependencies:
1298 | supports-color: '*'
1299 | peerDependenciesMeta:
1300 | supports-color:
1301 | optional: true
1302 | dependencies:
1303 | ms: 2.1.2
1304 |
1305 | /define-lazy-prop/2.0.0:
1306 | resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
1307 | engines: {node: '>=8'}
1308 |
1309 | /defu/6.0.0:
1310 | resolution: {integrity: sha512-t2MZGLf1V2rV4VBZbWIaXKdX/mUcYW0n2znQZoADBkGGxYL8EWqCuCZBmJPJ/Yy9fofJkyuuSuo5GSwo0XdEgw==}
1311 |
1312 | /delaunator/5.0.0:
1313 | resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==}
1314 | dependencies:
1315 | robust-predicates: 3.0.1
1316 |
1317 | /dompurify/2.3.8:
1318 | resolution: {integrity: sha512-eVhaWoVibIzqdGYjwsBWodIQIaXFSB+cKDf4cfxLMsK0xiud6SE+/WCVx/Xw/UwQsa4cS3T2eITcdtmTg2UKcw==}
1319 |
1320 | /drauu/0.3.0:
1321 | resolution: {integrity: sha512-27n6beq5cN1PysN0jfwL7Oms2Rk/A2MOQzu9qjhSukKrmpZoypG85q/blTy1ADvh5ukctpYJdytnoQfyNnrgjQ==}
1322 | dependencies:
1323 | '@drauu/core': 0.3.0
1324 |
1325 | /ee-first/1.1.1:
1326 | resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
1327 |
1328 | /emoji-regex/8.0.0:
1329 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
1330 |
1331 | /encodeurl/1.0.2:
1332 | resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
1333 | engines: {node: '>= 0.8'}
1334 |
1335 | /entities/2.1.0:
1336 | resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==}
1337 | dev: false
1338 |
1339 | /entities/3.0.1:
1340 | resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==}
1341 | engines: {node: '>=0.12'}
1342 |
1343 | /esbuild-android-64/0.14.43:
1344 | resolution: {integrity: sha512-kqFXAS72K6cNrB6RiM7YJ5lNvmWRDSlpi7ZuRZ1hu1S3w0zlwcoCxWAyM23LQUyZSs1PbjHgdbbfYAN8IGh6xg==}
1345 | engines: {node: '>=12'}
1346 | cpu: [x64]
1347 | os: [android]
1348 | requiresBuild: true
1349 | optional: true
1350 |
1351 | /esbuild-android-arm64/0.14.43:
1352 | resolution: {integrity: sha512-bKS2BBFh+7XZY9rpjiHGRNA7LvWYbZWP87pLehggTG7tTaCDvj8qQGOU/OZSjCSKDYbgY7Q+oDw8RlYQ2Jt2BA==}
1353 | engines: {node: '>=12'}
1354 | cpu: [arm64]
1355 | os: [android]
1356 | requiresBuild: true
1357 | optional: true
1358 |
1359 | /esbuild-darwin-64/0.14.43:
1360 | resolution: {integrity: sha512-/3PSilx011ttoieRGkSZ0XV8zjBf2C9enV4ScMMbCT4dpx0mFhMOpFnCHkOK0pWGB8LklykFyHrWk2z6DENVUg==}
1361 | engines: {node: '>=12'}
1362 | cpu: [x64]
1363 | os: [darwin]
1364 | requiresBuild: true
1365 | optional: true
1366 |
1367 | /esbuild-darwin-arm64/0.14.43:
1368 | resolution: {integrity: sha512-1HyFUKs8DMCBOvw1Qxpr5Vv/ThNcVIFb5xgXWK3pyT40WPvgYIiRTwJCvNs4l8i5qWF8/CK5bQxJVDjQvtv0Yw==}
1369 | engines: {node: '>=12'}
1370 | cpu: [arm64]
1371 | os: [darwin]
1372 | requiresBuild: true
1373 | optional: true
1374 |
1375 | /esbuild-freebsd-64/0.14.43:
1376 | resolution: {integrity: sha512-FNWc05TPHYgaXjbPZO5/rJKSBslfG6BeMSs8GhwnqAKP56eEhvmzwnIz1QcC9cRVyO+IKqWNfmHFkCa1WJTULA==}
1377 | engines: {node: '>=12'}
1378 | cpu: [x64]
1379 | os: [freebsd]
1380 | requiresBuild: true
1381 | optional: true
1382 |
1383 | /esbuild-freebsd-arm64/0.14.43:
1384 | resolution: {integrity: sha512-amrYopclz3VohqisOPR6hA3GOWA3LZC1WDLnp21RhNmoERmJ/vLnOpnrG2P/Zao+/erKTCUqmrCIPVtj58DRoA==}
1385 | engines: {node: '>=12'}
1386 | cpu: [arm64]
1387 | os: [freebsd]
1388 | requiresBuild: true
1389 | optional: true
1390 |
1391 | /esbuild-linux-32/0.14.43:
1392 | resolution: {integrity: sha512-KoxoEra+9O3AKVvgDFvDkiuddCds6q71owSQEYwjtqRV7RwbPzKxJa6+uyzUulHcyGVq0g15K0oKG5CFBcvYDw==}
1393 | engines: {node: '>=12'}
1394 | cpu: [ia32]
1395 | os: [linux]
1396 | requiresBuild: true
1397 | optional: true
1398 |
1399 | /esbuild-linux-64/0.14.43:
1400 | resolution: {integrity: sha512-EwINwGMyiJMgBby5/SbMqKcUhS5AYAZ2CpEBzSowsJPNBJEdhkCTtEjk757TN/wxgbu3QklqDM6KghY660QCUw==}
1401 | engines: {node: '>=12'}
1402 | cpu: [x64]
1403 | os: [linux]
1404 | requiresBuild: true
1405 | optional: true
1406 |
1407 | /esbuild-linux-arm/0.14.43:
1408 | resolution: {integrity: sha512-e6YzQUoDxxtyamuF12eVzzRC7bbEFSZohJ6igQB9tBqnNmIQY3fI6Cns3z2wxtbZ3f2o6idkD2fQnlvs2902Dg==}
1409 | engines: {node: '>=12'}
1410 | cpu: [arm]
1411 | os: [linux]
1412 | requiresBuild: true
1413 | optional: true
1414 |
1415 | /esbuild-linux-arm64/0.14.43:
1416 | resolution: {integrity: sha512-UlSpjMWllAc70zYbHxWuDS3FJytyuR/gHJYBr8BICcTNb/TSOYVBg6U7b3jZ3mILTrgzwJUHwhEwK18FZDouUQ==}
1417 | engines: {node: '>=12'}
1418 | cpu: [arm64]
1419 | os: [linux]
1420 | requiresBuild: true
1421 | optional: true
1422 |
1423 | /esbuild-linux-mips64le/0.14.43:
1424 | resolution: {integrity: sha512-f+v8cInPEL1/SDP//CfSYzcDNgE4CY3xgDV81DWm3KAPWzhvxARrKxB1Pstf5mB56yAslJDxu7ryBUPX207EZA==}
1425 | engines: {node: '>=12'}
1426 | cpu: [mips64el]
1427 | os: [linux]
1428 | requiresBuild: true
1429 | optional: true
1430 |
1431 | /esbuild-linux-ppc64le/0.14.43:
1432 | resolution: {integrity: sha512-5wZYMDGAL/K2pqkdIsW+I4IR41kyfHr/QshJcNpUfK3RjB3VQcPWOaZmc+74rm4ZjVirYrtz+jWw0SgxtxRanA==}
1433 | engines: {node: '>=12'}
1434 | cpu: [ppc64]
1435 | os: [linux]
1436 | requiresBuild: true
1437 | optional: true
1438 |
1439 | /esbuild-linux-riscv64/0.14.43:
1440 | resolution: {integrity: sha512-lYcAOUxp85hC7lSjycJUVSmj4/9oEfSyXjb/ua9bNl8afonaduuqtw7hvKMoKuYnVwOCDw4RSfKpcnIRDWq+Bw==}
1441 | engines: {node: '>=12'}
1442 | cpu: [riscv64]
1443 | os: [linux]
1444 | requiresBuild: true
1445 | optional: true
1446 |
1447 | /esbuild-linux-s390x/0.14.43:
1448 | resolution: {integrity: sha512-27e43ZhHvhFE4nM7HqtUbMRu37I/4eNSUbb8FGZWszV+uLzMIsHDwLoBiJmw7G9N+hrehNPeQ4F5Ujad0DrUKQ==}
1449 | engines: {node: '>=12'}
1450 | cpu: [s390x]
1451 | os: [linux]
1452 | requiresBuild: true
1453 | optional: true
1454 |
1455 | /esbuild-netbsd-64/0.14.43:
1456 | resolution: {integrity: sha512-2mH4QF6hHBn5zzAfxEI/2eBC0mspVsZ6UVo821LpAJKMvLJPBk3XJO5xwg7paDqSqpl7p6IRrAenW999AEfJhQ==}
1457 | engines: {node: '>=12'}
1458 | cpu: [x64]
1459 | os: [netbsd]
1460 | requiresBuild: true
1461 | optional: true
1462 |
1463 | /esbuild-openbsd-64/0.14.43:
1464 | resolution: {integrity: sha512-ZhQpiZjvqCqO8jKdGp9+8k9E/EHSA+zIWOg+grwZasI9RoblqJ1QiZqqi7jfd6ZrrG1UFBNGe4m0NFxCFbMVbg==}
1465 | engines: {node: '>=12'}
1466 | cpu: [x64]
1467 | os: [openbsd]
1468 | requiresBuild: true
1469 | optional: true
1470 |
1471 | /esbuild-sunos-64/0.14.43:
1472 | resolution: {integrity: sha512-DgxSi9DaHReL9gYuul2rrQCAapgnCJkh3LSHPKsY26zytYppG0HgkgVF80zjIlvEsUbGBP/GHQzBtrezj/Zq1Q==}
1473 | engines: {node: '>=12'}
1474 | cpu: [x64]
1475 | os: [sunos]
1476 | requiresBuild: true
1477 | optional: true
1478 |
1479 | /esbuild-windows-32/0.14.43:
1480 | resolution: {integrity: sha512-Ih3+2O5oExiqm0mY6YYE5dR0o8+AspccQ3vIAtRodwFvhuyGLjb0Hbmzun/F3Lw19nuhPMu3sW2fqIJ5xBxByw==}
1481 | engines: {node: '>=12'}
1482 | cpu: [ia32]
1483 | os: [win32]
1484 | requiresBuild: true
1485 | optional: true
1486 |
1487 | /esbuild-windows-64/0.14.43:
1488 | resolution: {integrity: sha512-8NsuNfI8xwFuJbrCuI+aBqNTYkrWErejFO5aYM+yHqyHuL8mmepLS9EPzAzk8rvfaJrhN0+RvKWAcymViHOKEw==}
1489 | engines: {node: '>=12'}
1490 | cpu: [x64]
1491 | os: [win32]
1492 | requiresBuild: true
1493 | optional: true
1494 |
1495 | /esbuild-windows-arm64/0.14.43:
1496 | resolution: {integrity: sha512-7ZlD7bo++kVRblJEoG+cepljkfP8bfuTPz5fIXzptwnPaFwGS6ahvfoYzY7WCf5v/1nX2X02HDraVItTgbHnKw==}
1497 | engines: {node: '>=12'}
1498 | cpu: [arm64]
1499 | os: [win32]
1500 | requiresBuild: true
1501 | optional: true
1502 |
1503 | /esbuild/0.14.43:
1504 | resolution: {integrity: sha512-Uf94+kQmy/5jsFwKWiQB4hfo/RkM9Dh7b79p8yqd1tshULdr25G2szLz631NoH3s2ujnKEKVD16RmOxvCNKRFA==}
1505 | engines: {node: '>=12'}
1506 | hasBin: true
1507 | requiresBuild: true
1508 | optionalDependencies:
1509 | esbuild-android-64: 0.14.43
1510 | esbuild-android-arm64: 0.14.43
1511 | esbuild-darwin-64: 0.14.43
1512 | esbuild-darwin-arm64: 0.14.43
1513 | esbuild-freebsd-64: 0.14.43
1514 | esbuild-freebsd-arm64: 0.14.43
1515 | esbuild-linux-32: 0.14.43
1516 | esbuild-linux-64: 0.14.43
1517 | esbuild-linux-arm: 0.14.43
1518 | esbuild-linux-arm64: 0.14.43
1519 | esbuild-linux-mips64le: 0.14.43
1520 | esbuild-linux-ppc64le: 0.14.43
1521 | esbuild-linux-riscv64: 0.14.43
1522 | esbuild-linux-s390x: 0.14.43
1523 | esbuild-netbsd-64: 0.14.43
1524 | esbuild-openbsd-64: 0.14.43
1525 | esbuild-sunos-64: 0.14.43
1526 | esbuild-windows-32: 0.14.43
1527 | esbuild-windows-64: 0.14.43
1528 | esbuild-windows-arm64: 0.14.43
1529 |
1530 | /escalade/3.1.1:
1531 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
1532 | engines: {node: '>=6'}
1533 |
1534 | /escape-html/1.0.3:
1535 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
1536 |
1537 | /esprima/4.0.1:
1538 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
1539 | engines: {node: '>=4'}
1540 | hasBin: true
1541 |
1542 | /estree-walker/2.0.2:
1543 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
1544 |
1545 | /execa/5.1.1:
1546 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
1547 | engines: {node: '>=10'}
1548 | dependencies:
1549 | cross-spawn: 7.0.3
1550 | get-stream: 6.0.1
1551 | human-signals: 2.1.0
1552 | is-stream: 2.0.1
1553 | merge-stream: 2.0.0
1554 | npm-run-path: 4.0.1
1555 | onetime: 5.1.2
1556 | signal-exit: 3.0.7
1557 | strip-final-newline: 2.0.0
1558 |
1559 | /extend-shallow/2.0.1:
1560 | resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
1561 | engines: {node: '>=0.10.0'}
1562 | dependencies:
1563 | is-extendable: 0.1.1
1564 |
1565 | /fast-glob/3.2.11:
1566 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==}
1567 | engines: {node: '>=8.6.0'}
1568 | dependencies:
1569 | '@nodelib/fs.stat': 2.0.5
1570 | '@nodelib/fs.walk': 1.2.8
1571 | glob-parent: 5.1.2
1572 | merge2: 1.4.1
1573 | micromatch: 4.0.5
1574 |
1575 | /fastq/1.13.0:
1576 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
1577 | dependencies:
1578 | reusify: 1.0.4
1579 |
1580 | /file-saver/2.0.5:
1581 | resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==}
1582 |
1583 | /fill-range/7.0.1:
1584 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
1585 | engines: {node: '>=8'}
1586 | dependencies:
1587 | to-regex-range: 5.0.1
1588 |
1589 | /finalhandler/1.1.2:
1590 | resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==}
1591 | engines: {node: '>= 0.8'}
1592 | dependencies:
1593 | debug: 2.6.9
1594 | encodeurl: 1.0.2
1595 | escape-html: 1.0.3
1596 | on-finished: 2.3.0
1597 | parseurl: 1.3.3
1598 | statuses: 1.5.0
1599 | unpipe: 1.0.0
1600 | transitivePeerDependencies:
1601 | - supports-color
1602 |
1603 | /find-up/5.0.0:
1604 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1605 | engines: {node: '>=10'}
1606 | dependencies:
1607 | locate-path: 6.0.0
1608 | path-exists: 4.0.0
1609 |
1610 | /follow-redirects/1.15.1_debug@4.3.4:
1611 | resolution: {integrity: sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==}
1612 | engines: {node: '>=4.0'}
1613 | peerDependencies:
1614 | debug: '*'
1615 | peerDependenciesMeta:
1616 | debug:
1617 | optional: true
1618 | dependencies:
1619 | debug: 4.3.4
1620 |
1621 | /framesync/6.0.1:
1622 | resolution: {integrity: sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==}
1623 | dependencies:
1624 | tslib: 2.4.0
1625 |
1626 | /framesync/6.1.0:
1627 | resolution: {integrity: sha512-aBX+hdWAvwiJYeQlFLY2533VxeL6OEu71CAgV4GGKksrj6+dE6i7K86WSSiRBEARCoJn5bFqffhg4l07eA27tg==}
1628 | dependencies:
1629 | tslib: 2.4.0
1630 |
1631 | /fs-extra/10.1.0:
1632 | resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
1633 | engines: {node: '>=12'}
1634 | dependencies:
1635 | graceful-fs: 4.2.10
1636 | jsonfile: 6.1.0
1637 | universalify: 2.0.0
1638 |
1639 | /fs-extra/9.1.0:
1640 | resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==}
1641 | engines: {node: '>=10'}
1642 | dependencies:
1643 | at-least-node: 1.0.0
1644 | graceful-fs: 4.2.10
1645 | jsonfile: 6.1.0
1646 | universalify: 2.0.0
1647 |
1648 | /fs.realpath/1.0.0:
1649 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1650 | dev: true
1651 |
1652 | /fsevents/2.3.2:
1653 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
1654 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1655 | os: [darwin]
1656 | requiresBuild: true
1657 | optional: true
1658 |
1659 | /function-bind/1.1.1:
1660 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
1661 |
1662 | /get-caller-file/2.0.5:
1663 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
1664 | engines: {node: 6.* || 8.* || >= 10.*}
1665 |
1666 | /get-stream/6.0.1:
1667 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
1668 | engines: {node: '>=10'}
1669 |
1670 | /glob-parent/5.1.2:
1671 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1672 | engines: {node: '>= 6'}
1673 | dependencies:
1674 | is-glob: 4.0.3
1675 |
1676 | /glob/7.2.0:
1677 | resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==}
1678 | dependencies:
1679 | fs.realpath: 1.0.0
1680 | inflight: 1.0.6
1681 | inherits: 2.0.4
1682 | minimatch: 3.1.2
1683 | once: 1.4.0
1684 | path-is-absolute: 1.0.1
1685 | dev: true
1686 |
1687 | /global-dirs/0.1.1:
1688 | resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==}
1689 | engines: {node: '>=4'}
1690 | dependencies:
1691 | ini: 1.3.8
1692 |
1693 | /global-dirs/3.0.0:
1694 | resolution: {integrity: sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==}
1695 | engines: {node: '>=10'}
1696 | dependencies:
1697 | ini: 2.0.0
1698 |
1699 | /graceful-fs/4.2.10:
1700 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
1701 |
1702 | /graphlib/2.1.8:
1703 | resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==}
1704 | dependencies:
1705 | lodash: 4.17.21
1706 |
1707 | /gray-matter/4.0.3:
1708 | resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
1709 | engines: {node: '>=6.0'}
1710 | dependencies:
1711 | js-yaml: 3.14.1
1712 | kind-of: 6.0.3
1713 | section-matter: 1.0.0
1714 | strip-bom-string: 1.0.0
1715 |
1716 | /has-flag/4.0.0:
1717 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1718 | engines: {node: '>=8'}
1719 | dev: false
1720 |
1721 | /has/1.0.3:
1722 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
1723 | engines: {node: '>= 0.4.0'}
1724 | dependencies:
1725 | function-bind: 1.1.1
1726 |
1727 | /hey-listen/1.0.8:
1728 | resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==}
1729 |
1730 | /human-signals/2.1.0:
1731 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
1732 | engines: {node: '>=10.17.0'}
1733 |
1734 | /iconv-lite/0.4.24:
1735 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
1736 | engines: {node: '>=0.10.0'}
1737 | dependencies:
1738 | safer-buffer: 2.1.2
1739 |
1740 | /iconv-lite/0.6.3:
1741 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
1742 | engines: {node: '>=0.10.0'}
1743 | dependencies:
1744 | safer-buffer: 2.1.2
1745 |
1746 | /import-from/4.0.0:
1747 | resolution: {integrity: sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==}
1748 | engines: {node: '>=12.2'}
1749 |
1750 | /inflight/1.0.6:
1751 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1752 | dependencies:
1753 | once: 1.4.0
1754 | wrappy: 1.0.2
1755 | dev: true
1756 |
1757 | /inherits/2.0.4:
1758 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1759 | dev: true
1760 |
1761 | /ini/1.3.8:
1762 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
1763 |
1764 | /ini/2.0.0:
1765 | resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==}
1766 | engines: {node: '>=10'}
1767 |
1768 | /internmap/2.0.3:
1769 | resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
1770 | engines: {node: '>=12'}
1771 |
1772 | /is-binary-path/2.1.0:
1773 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1774 | engines: {node: '>=8'}
1775 | dependencies:
1776 | binary-extensions: 2.2.0
1777 |
1778 | /is-core-module/2.9.0:
1779 | resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==}
1780 | dependencies:
1781 | has: 1.0.3
1782 |
1783 | /is-docker/2.2.1:
1784 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
1785 | engines: {node: '>=8'}
1786 | hasBin: true
1787 |
1788 | /is-extendable/0.1.1:
1789 | resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
1790 | engines: {node: '>=0.10.0'}
1791 |
1792 | /is-extglob/2.1.1:
1793 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1794 | engines: {node: '>=0.10.0'}
1795 |
1796 | /is-fullwidth-code-point/3.0.0:
1797 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1798 | engines: {node: '>=8'}
1799 |
1800 | /is-glob/4.0.3:
1801 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1802 | engines: {node: '>=0.10.0'}
1803 | dependencies:
1804 | is-extglob: 2.1.1
1805 |
1806 | /is-installed-globally/0.4.0:
1807 | resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==}
1808 | engines: {node: '>=10'}
1809 | dependencies:
1810 | global-dirs: 3.0.0
1811 | is-path-inside: 3.0.3
1812 |
1813 | /is-number/7.0.0:
1814 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1815 | engines: {node: '>=0.12.0'}
1816 |
1817 | /is-path-inside/3.0.3:
1818 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1819 | engines: {node: '>=8'}
1820 |
1821 | /is-stream/2.0.1:
1822 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
1823 | engines: {node: '>=8'}
1824 |
1825 | /is-wsl/2.2.0:
1826 | resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
1827 | engines: {node: '>=8'}
1828 | dependencies:
1829 | is-docker: 2.2.1
1830 |
1831 | /isexe/2.0.0:
1832 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1833 |
1834 | /jiti/1.13.0:
1835 | resolution: {integrity: sha512-/n9mNxZj/HDSrincJ6RP+L+yXbpnB8FybySBa+IjIaoH9FIxBbrbRT5XUbe8R7zuVM2AQqNMNDDqz0bzx3znOQ==}
1836 | hasBin: true
1837 |
1838 | /js-base64/3.7.2:
1839 | resolution: {integrity: sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==}
1840 |
1841 | /js-yaml/3.14.1:
1842 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
1843 | hasBin: true
1844 | dependencies:
1845 | argparse: 1.0.10
1846 | esprima: 4.0.1
1847 |
1848 | /js-yaml/4.1.0:
1849 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1850 | hasBin: true
1851 | dependencies:
1852 | argparse: 2.0.1
1853 |
1854 | /jsonc-parser/3.0.0:
1855 | resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==}
1856 |
1857 | /jsonfile/6.1.0:
1858 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
1859 | dependencies:
1860 | universalify: 2.0.0
1861 | optionalDependencies:
1862 | graceful-fs: 4.2.10
1863 |
1864 | /katex/0.15.6:
1865 | resolution: {integrity: sha512-UpzJy4yrnqnhXvRPhjEuLA4lcPn6eRngixW7Q3TJErjg3Aw2PuLFBzTkdUb89UtumxjhHTqL3a5GDGETMSwgJA==}
1866 | hasBin: true
1867 | dependencies:
1868 | commander: 8.3.0
1869 |
1870 | /katex/0.6.0:
1871 | resolution: {integrity: sha512-rS4mY3SvHYg5LtQV6RBcK0if7ur6plyEukAOV+jGGPqFImuzu8fHL6M752iBmRGoUyF0bhZbAPoezehn7xYksA==}
1872 | hasBin: true
1873 | dependencies:
1874 | match-at: 0.1.1
1875 | dev: false
1876 |
1877 | /khroma/2.0.0:
1878 | resolution: {integrity: sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==}
1879 |
1880 | /kind-of/6.0.3:
1881 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
1882 | engines: {node: '>=0.10.0'}
1883 |
1884 | /kleur/3.0.3:
1885 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
1886 | engines: {node: '>=6'}
1887 |
1888 | /kolorist/1.5.1:
1889 | resolution: {integrity: sha512-lxpCM3HTvquGxKGzHeknB/sUjuVoUElLlfYnXZT73K8geR9jQbroGlSCFBax9/0mpGoD3kzcMLnOlGQPJJNyqQ==}
1890 |
1891 | /light-icons/1.0.10:
1892 | resolution: {integrity: sha512-EBB6iexm7JEceMxP1C1FjKaezzxkZFdRNP/J/TEl/kLPNjhTbvsVkGJkWgBdX3Cpzw0KThlfml4RJi2Mybr+mA==}
1893 | dev: false
1894 |
1895 | /linkify-it/3.0.3:
1896 | resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==}
1897 | dependencies:
1898 | uc.micro: 1.0.6
1899 | dev: false
1900 |
1901 | /linkify-it/4.0.1:
1902 | resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==}
1903 | dependencies:
1904 | uc.micro: 1.0.6
1905 |
1906 | /local-pkg/0.4.1:
1907 | resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==}
1908 | engines: {node: '>=14'}
1909 |
1910 | /locate-path/6.0.0:
1911 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1912 | engines: {node: '>=10'}
1913 | dependencies:
1914 | p-locate: 5.0.0
1915 |
1916 | /lodash/4.17.21:
1917 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1918 |
1919 | /magic-string/0.25.9:
1920 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
1921 | dependencies:
1922 | sourcemap-codec: 1.4.8
1923 |
1924 | /magic-string/0.26.2:
1925 | resolution: {integrity: sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==}
1926 | engines: {node: '>=12'}
1927 | dependencies:
1928 | sourcemap-codec: 1.4.8
1929 |
1930 | /markdown-it-footnote/3.0.3:
1931 | resolution: {integrity: sha512-YZMSuCGVZAjzKMn+xqIco9d1cLGxbELHZ9do/TSYVzraooV8ypsppKNmUJ0fVH5ljkCInQAtFpm8Rb3eXSrt5w==}
1932 |
1933 | /markdown-it-katex/2.0.3:
1934 | resolution: {integrity: sha512-nUkkMtRWeg7OpdflamflE/Ho/pWl64Lk9wNBKOmaj33XkQdumhXAIYhI0WO03GeiycPCsxbmX536V5NEXpC3Ng==}
1935 | dependencies:
1936 | katex: 0.6.0
1937 | dev: false
1938 |
1939 | /markdown-it-link-attributes/3.0.0:
1940 | resolution: {integrity: sha512-B34ySxVeo6MuEGSPCWyIYryuXINOvngNZL87Mp7YYfKIf6DcD837+lXA8mo6EBbauKsnGz22ZH0zsbOiQRWTNg==}
1941 | dev: false
1942 |
1943 | /markdown-it-link-attributes/4.0.0:
1944 | resolution: {integrity: sha512-ssjxSLlLfQBkX6BvAx1rCPrx7ZoK91llQQvS3P7KXvlbnVD34OUkfXwWecN7su/7mrI/HOW0RI5szdJOIqYC3w==}
1945 |
1946 | /markdown-it/12.3.2:
1947 | resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==}
1948 | hasBin: true
1949 | dependencies:
1950 | argparse: 2.0.1
1951 | entities: 2.1.0
1952 | linkify-it: 3.0.3
1953 | mdurl: 1.0.1
1954 | uc.micro: 1.0.6
1955 | dev: false
1956 |
1957 | /markdown-it/13.0.1:
1958 | resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==}
1959 | hasBin: true
1960 | dependencies:
1961 | argparse: 2.0.1
1962 | entities: 3.0.1
1963 | linkify-it: 4.0.1
1964 | mdurl: 1.0.1
1965 | uc.micro: 1.0.6
1966 |
1967 | /match-at/0.1.1:
1968 | resolution: {integrity: sha512-h4Yd392z9mST+dzc+yjuybOGFNOZjmXIPKWjxBd1Bb23r4SmDOsk2NYCU2BMUBGbSpZqwVsZYNq26QS3xfaT3Q==}
1969 | dev: false
1970 |
1971 | /mdurl/1.0.1:
1972 | resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
1973 |
1974 | /merge-stream/2.0.0:
1975 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
1976 |
1977 | /merge2/1.4.1:
1978 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1979 | engines: {node: '>= 8'}
1980 |
1981 | /mermaid/9.1.2:
1982 | resolution: {integrity: sha512-RVf3hBKqiMfyORHboCaEjOAK1TomLO50hYRPvlTrZCXlCniM5pRpe8UlkHBjjpaLtioZnbdYv/vEVj7iKnwkJQ==}
1983 | dependencies:
1984 | '@braintree/sanitize-url': 6.0.0
1985 | d3: 7.4.4
1986 | dagre: 0.8.5
1987 | dagre-d3: 0.6.4
1988 | dompurify: 2.3.8
1989 | graphlib: 2.1.8
1990 | khroma: 2.0.0
1991 | moment-mini: 2.24.0
1992 | stylis: 4.1.1
1993 |
1994 | /micromatch/4.0.5:
1995 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1996 | engines: {node: '>=8.6'}
1997 | dependencies:
1998 | braces: 3.0.2
1999 | picomatch: 2.3.1
2000 |
2001 | /mimic-fn/2.1.0:
2002 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
2003 | engines: {node: '>=6'}
2004 |
2005 | /minimatch/3.1.2:
2006 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
2007 | dependencies:
2008 | brace-expansion: 1.1.11
2009 |
2010 | /minimatch/5.1.0:
2011 | resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==}
2012 | engines: {node: '>=10'}
2013 | dependencies:
2014 | brace-expansion: 2.0.1
2015 |
2016 | /moment-mini/2.24.0:
2017 | resolution: {integrity: sha512-9ARkWHBs+6YJIvrIp0Ik5tyTTtP9PoV0Ssu2Ocq5y9v8+NOOpWiRshAp8c4rZVWTOe+157on/5G+zj5pwIQFEQ==}
2018 |
2019 | /monaco-editor/0.23.0:
2020 | resolution: {integrity: sha512-q+CP5zMR/aFiMTE9QlIavGyGicKnG2v/H8qVvybLzeFsARM8f6G9fL0sMST2tyVYCwDKkGamZUI6647A0jR/Lg==}
2021 | dev: false
2022 |
2023 | /monaco-editor/0.33.0:
2024 | resolution: {integrity: sha512-VcRWPSLIUEgQJQIE0pVT8FcGBIgFoxz7jtqctE+IiCxWugD0DwgyQBcZBhdSrdMC84eumoqMZsGl2GTreOzwqw==}
2025 |
2026 | /mrmime/1.0.1:
2027 | resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==}
2028 | engines: {node: '>=10'}
2029 | dev: false
2030 |
2031 | /ms/2.0.0:
2032 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
2033 |
2034 | /ms/2.1.2:
2035 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
2036 |
2037 | /nanoid/3.3.4:
2038 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
2039 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
2040 | hasBin: true
2041 |
2042 | /normalize-path/3.0.0:
2043 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
2044 | engines: {node: '>=0.10.0'}
2045 |
2046 | /npm-run-path/4.0.1:
2047 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
2048 | engines: {node: '>=8'}
2049 | dependencies:
2050 | path-key: 3.1.1
2051 |
2052 | /on-finished/2.3.0:
2053 | resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==}
2054 | engines: {node: '>= 0.8'}
2055 | dependencies:
2056 | ee-first: 1.1.1
2057 |
2058 | /once/1.4.0:
2059 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
2060 | dependencies:
2061 | wrappy: 1.0.2
2062 | dev: true
2063 |
2064 | /onetime/5.1.2:
2065 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
2066 | engines: {node: '>=6'}
2067 | dependencies:
2068 | mimic-fn: 2.1.0
2069 |
2070 | /open/8.4.0:
2071 | resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==}
2072 | engines: {node: '>=12'}
2073 | dependencies:
2074 | define-lazy-prop: 2.0.0
2075 | is-docker: 2.2.1
2076 | is-wsl: 2.2.0
2077 |
2078 | /p-limit/3.1.0:
2079 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
2080 | engines: {node: '>=10'}
2081 | dependencies:
2082 | yocto-queue: 0.1.0
2083 |
2084 | /p-locate/5.0.0:
2085 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
2086 | engines: {node: '>=10'}
2087 | dependencies:
2088 | p-limit: 3.1.0
2089 |
2090 | /pako/1.0.11:
2091 | resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
2092 | dev: false
2093 |
2094 | /parseurl/1.3.3:
2095 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
2096 | engines: {node: '>= 0.8'}
2097 |
2098 | /path-exists/4.0.0:
2099 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
2100 | engines: {node: '>=8'}
2101 |
2102 | /path-is-absolute/1.0.1:
2103 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
2104 | engines: {node: '>=0.10.0'}
2105 | dev: true
2106 |
2107 | /path-key/3.1.1:
2108 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
2109 | engines: {node: '>=8'}
2110 |
2111 | /path-parse/1.0.7:
2112 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
2113 |
2114 | /pathe/0.2.0:
2115 | resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==}
2116 | dev: true
2117 |
2118 | /pdf-lib/1.17.1:
2119 | resolution: {integrity: sha512-V/mpyJAoTsN4cnP31vc0wfNA1+p20evqqnap0KLoRUN0Yk/p3wN52DOEsL4oBFcLdb76hlpKPtzJIgo67j/XLw==}
2120 | dependencies:
2121 | '@pdf-lib/standard-fonts': 1.0.0
2122 | '@pdf-lib/upng': 1.0.1
2123 | pako: 1.0.11
2124 | tslib: 1.14.1
2125 | dev: false
2126 |
2127 | /perfect-freehand/1.1.0:
2128 | resolution: {integrity: sha512-nVWukMN9qlii1dQsQHVvfaNpeOAWVLgTZP6e/tFcU6cWlLo+6YdvfRGBL2u5pU11APlPbHeB0SpMcGA8ZjPgcQ==}
2129 |
2130 | /picocolors/1.0.0:
2131 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
2132 |
2133 | /picomatch/2.3.1:
2134 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
2135 | engines: {node: '>=8.6'}
2136 |
2137 | /plantuml-encoder/1.4.0:
2138 | resolution: {integrity: sha512-sxMwpDw/ySY1WB2CE3+IdMuEcWibJ72DDOsXLkSmEaSzwEUaYBT6DWgOfBiHGCux4q433X6+OEFWjlVqp7gL6g==}
2139 |
2140 | /playwright-chromium/1.22.2:
2141 | resolution: {integrity: sha512-msRcdCIJkdM2R6S+NMJZ02uyZHzJ7TIzkjzs3usDJ1Pwacp9HMhv9T/S4AxtpFXFmvMZq7UJYb0x+tCdHx9+0w==}
2142 | engines: {node: '>=14'}
2143 | hasBin: true
2144 | requiresBuild: true
2145 | dependencies:
2146 | playwright-core: 1.22.2
2147 | dev: true
2148 |
2149 | /playwright-core/1.22.2:
2150 | resolution: {integrity: sha512-w/hc/Ld0RM4pmsNeE6aL/fPNWw8BWit2tg+TfqJ3+p59c6s3B6C8mXvXrIPmfQEobkcFDc+4KirNzOQ+uBSP1Q==}
2151 | engines: {node: '>=14'}
2152 | hasBin: true
2153 | dev: true
2154 |
2155 | /pnpm/7.2.1:
2156 | resolution: {integrity: sha512-Z2Wg7YHxeit2U+0aSj+doBPF9+ER0e3VLOGuJOQbk8rzIxK6zMtrQ0ICieCUGPWRM0Vbwj8yIcTKzO22Yhs/Cg==}
2157 | engines: {node: '>=14.6'}
2158 | hasBin: true
2159 | dev: true
2160 |
2161 | /popmotion/11.0.3:
2162 | resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==}
2163 | dependencies:
2164 | framesync: 6.0.1
2165 | hey-listen: 1.0.8
2166 | style-value-types: 5.0.0
2167 | tslib: 2.4.0
2168 |
2169 | /postcss/8.4.14:
2170 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==}
2171 | engines: {node: ^10 || ^12 || >=14}
2172 | dependencies:
2173 | nanoid: 3.3.4
2174 | picocolors: 1.0.0
2175 | source-map-js: 1.0.2
2176 |
2177 | /prettier/2.7.0:
2178 | resolution: {integrity: sha512-nwoX4GMFgxoPC6diHvSwmK/4yU8FFH3V8XWtLQrbj4IBsK2pkYhG4kf/ljF/haaZ/aii+wNJqISrCDPgxGWDVQ==}
2179 | engines: {node: '>=10.13.0'}
2180 | hasBin: true
2181 |
2182 | /prism-theme-vars/0.2.2:
2183 | resolution: {integrity: sha512-EL9ifuU/F8tEldoCa2sspiiLWysCL54xDbf2gN/ubwdtbuJROqOGopG5kSwunapwaioT+jLUQ/Ky+7jnv62xJA==}
2184 |
2185 | /prismjs/1.28.0:
2186 | resolution: {integrity: sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==}
2187 | engines: {node: '>=6'}
2188 |
2189 | /prompts/2.4.2:
2190 | resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
2191 | engines: {node: '>= 6'}
2192 | dependencies:
2193 | kleur: 3.0.3
2194 | sisteransi: 1.0.5
2195 |
2196 | /queue-microtask/1.2.3:
2197 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
2198 |
2199 | /readdirp/3.6.0:
2200 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
2201 | engines: {node: '>=8.10.0'}
2202 | dependencies:
2203 | picomatch: 2.3.1
2204 |
2205 | /recordrtc/5.6.2:
2206 | resolution: {integrity: sha512-1QNKKNtl7+KcwD1lyOgP3ZlbiJ1d0HtXnypUy7yq49xEERxk31PHvE9RCciDrulPCY7WJ+oz0R9hpNxgsIurGQ==}
2207 |
2208 | /require-directory/2.1.1:
2209 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
2210 | engines: {node: '>=0.10.0'}
2211 |
2212 | /resolve-from/5.0.0:
2213 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
2214 | engines: {node: '>=8'}
2215 |
2216 | /resolve-global/1.0.0:
2217 | resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==}
2218 | engines: {node: '>=8'}
2219 | dependencies:
2220 | global-dirs: 0.1.1
2221 |
2222 | /resolve/1.22.0:
2223 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
2224 | hasBin: true
2225 | dependencies:
2226 | is-core-module: 2.9.0
2227 | path-parse: 1.0.7
2228 | supports-preserve-symlinks-flag: 1.0.0
2229 |
2230 | /reusify/1.0.4:
2231 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
2232 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
2233 |
2234 | /rimraf/3.0.2:
2235 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
2236 | hasBin: true
2237 | dependencies:
2238 | glob: 7.2.0
2239 | dev: true
2240 |
2241 | /robust-predicates/3.0.1:
2242 | resolution: {integrity: sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==}
2243 |
2244 | /rollup/2.75.6:
2245 | resolution: {integrity: sha512-OEf0TgpC9vU6WGROJIk1JA3LR5vk/yvqlzxqdrE2CzzXnqKXNzbAwlWUXis8RS3ZPe7LAq+YUxsRa0l3r27MLA==}
2246 | engines: {node: '>=10.0.0'}
2247 | hasBin: true
2248 | optionalDependencies:
2249 | fsevents: 2.3.2
2250 |
2251 | /run-parallel/1.2.0:
2252 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
2253 | dependencies:
2254 | queue-microtask: 1.2.3
2255 |
2256 | /rw/1.3.3:
2257 | resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==}
2258 |
2259 | /safer-buffer/2.1.2:
2260 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
2261 |
2262 | /section-matter/1.0.0:
2263 | resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
2264 | engines: {node: '>=4'}
2265 | dependencies:
2266 | extend-shallow: 2.0.1
2267 | kind-of: 6.0.3
2268 |
2269 | /shebang-command/2.0.0:
2270 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
2271 | engines: {node: '>=8'}
2272 | dependencies:
2273 | shebang-regex: 3.0.0
2274 |
2275 | /shebang-regex/3.0.0:
2276 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
2277 | engines: {node: '>=8'}
2278 |
2279 | /shiki/0.10.1:
2280 | resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==}
2281 | dependencies:
2282 | jsonc-parser: 3.0.0
2283 | vscode-oniguruma: 1.6.2
2284 | vscode-textmate: 5.2.0
2285 |
2286 | /shiki/0.9.15:
2287 | resolution: {integrity: sha512-/Y0z9IzhJ8nD9nbceORCqu6NgT9X6I8Fk8c3SICHI5NbZRLdZYFaB233gwct9sU0vvSypyaL/qaKvzyQGJBZSw==}
2288 | dependencies:
2289 | jsonc-parser: 3.0.0
2290 | vscode-oniguruma: 1.6.2
2291 | vscode-textmate: 5.2.0
2292 | dev: false
2293 |
2294 | /signal-exit/3.0.7:
2295 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
2296 |
2297 | /sirv/1.0.19:
2298 | resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==}
2299 | engines: {node: '>= 10'}
2300 | dependencies:
2301 | '@polka/url': 1.0.0-next.21
2302 | mrmime: 1.0.1
2303 | totalist: 1.1.0
2304 | dev: false
2305 |
2306 | /sisteransi/1.0.5:
2307 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
2308 |
2309 | /slidev-theme-light-icons/1.0.2:
2310 | resolution: {integrity: sha512-rcXi/ugBjVVqL9gMDZGjQuxnVXGLMcrpRsM4MHeccAa0KXldheBq4s5VfiuzpUFxBz938dJGfTyAt0HVr0ViBg==}
2311 | engines: {node: '>=14.0.0'}
2312 | dependencies:
2313 | '@slidev/cli': 0.7.4
2314 | '@slidev/theme-default': 0.7.9
2315 | light-icons: 1.0.10
2316 | transitivePeerDependencies:
2317 | - '@slidev/client'
2318 | - '@vue/composition-api'
2319 | - less
2320 | - playwright-chromium
2321 | - sass
2322 | - shiki
2323 | - stylus
2324 | - supports-color
2325 | - vue-template-compiler
2326 | dev: false
2327 |
2328 | /source-map-js/1.0.2:
2329 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
2330 | engines: {node: '>=0.10.0'}
2331 |
2332 | /source-map/0.6.1:
2333 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
2334 | engines: {node: '>=0.10.0'}
2335 |
2336 | /sourcemap-codec/1.4.8:
2337 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
2338 |
2339 | /sprintf-js/1.0.3:
2340 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
2341 |
2342 | /statuses/1.5.0:
2343 | resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
2344 | engines: {node: '>= 0.6'}
2345 |
2346 | /string-width/4.2.3:
2347 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
2348 | engines: {node: '>=8'}
2349 | dependencies:
2350 | emoji-regex: 8.0.0
2351 | is-fullwidth-code-point: 3.0.0
2352 | strip-ansi: 6.0.1
2353 |
2354 | /strip-ansi/6.0.1:
2355 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
2356 | engines: {node: '>=8'}
2357 | dependencies:
2358 | ansi-regex: 5.0.1
2359 |
2360 | /strip-bom-string/1.0.0:
2361 | resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==}
2362 | engines: {node: '>=0.10.0'}
2363 |
2364 | /strip-final-newline/2.0.0:
2365 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
2366 | engines: {node: '>=6'}
2367 |
2368 | /style-value-types/5.0.0:
2369 | resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==}
2370 | dependencies:
2371 | hey-listen: 1.0.8
2372 | tslib: 2.4.0
2373 |
2374 | /style-value-types/5.1.0:
2375 | resolution: {integrity: sha512-DRIfBtjxQ4ztBZpexkFcI+UR7pODC5qLMf2Syt+bH98PAHHRH2tQnzxBuDQlqcAoYar6GzWnj8iAfqfwnEzCiQ==}
2376 | dependencies:
2377 | hey-listen: 1.0.8
2378 | tslib: 2.4.0
2379 |
2380 | /stylis/4.1.1:
2381 | resolution: {integrity: sha512-lVrM/bNdhVX2OgBFNa2YJ9Lxj7kPzylieHd3TNjuGE0Re9JB7joL5VUKOVH1kdNNJTgGPpT8hmwIAPLaSyEVFQ==}
2382 |
2383 | /supports-color/7.2.0:
2384 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
2385 | engines: {node: '>=8'}
2386 | dependencies:
2387 | has-flag: 4.0.0
2388 | dev: false
2389 |
2390 | /supports-preserve-symlinks-flag/1.0.0:
2391 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
2392 | engines: {node: '>= 0.4'}
2393 |
2394 | /theme-vitesse/0.1.14:
2395 | resolution: {integrity: sha512-b5s+Zpfaw5+djoCJ9AEbcTbpiTlLsOvGM9oblDmmWRGWNqg9oXtEYO/uwubwx77novHBI6zNuwZRHKNlAIBo4A==}
2396 | engines: {vscode: ^1.43.0}
2397 |
2398 | /to-fast-properties/2.0.0:
2399 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
2400 | engines: {node: '>=4'}
2401 |
2402 | /to-regex-range/5.0.1:
2403 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2404 | engines: {node: '>=8.0'}
2405 | dependencies:
2406 | is-number: 7.0.0
2407 |
2408 | /totalist/1.1.0:
2409 | resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==}
2410 | engines: {node: '>=6'}
2411 | dev: false
2412 |
2413 | /tslib/1.14.1:
2414 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
2415 | dev: false
2416 |
2417 | /tslib/2.4.0:
2418 | resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
2419 |
2420 | /uc.micro/1.0.6:
2421 | resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==}
2422 |
2423 | /ufo/0.7.11:
2424 | resolution: {integrity: sha512-IT3q0lPvtkqQ8toHQN/BkOi4VIqoqheqM1FnkNWT9y0G8B3xJhwnoKBu5OHx8zHDOvveQzfKuFowJ0VSARiIDg==}
2425 |
2426 | /universalify/2.0.0:
2427 | resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
2428 | engines: {node: '>= 10.0.0'}
2429 |
2430 | /unpipe/1.0.0:
2431 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
2432 | engines: {node: '>= 0.8'}
2433 |
2434 | /unplugin-icons/0.14.3_zzjg27s3eqfbklnrwy6rdd2pii:
2435 | resolution: {integrity: sha512-PyyNMACpZ/EAiG3B6K1wPGZ151VGdlHIEx8/utgP546yVmPpV/xC1k1V2eEebf71fGm3WD6gzPrERNsbMgIVgg==}
2436 | peerDependencies:
2437 | '@svgr/core': '>=5.5.0'
2438 | '@vue/compiler-sfc': ^3.0.2
2439 | vue-template-compiler: ^2.6.12
2440 | vue-template-es2015-compiler: ^1.9.0
2441 | peerDependenciesMeta:
2442 | '@svgr/core':
2443 | optional: true
2444 | '@vue/compiler-sfc':
2445 | optional: true
2446 | vue-template-compiler:
2447 | optional: true
2448 | vue-template-es2015-compiler:
2449 | optional: true
2450 | dependencies:
2451 | '@antfu/install-pkg': 0.1.0
2452 | '@antfu/utils': 0.5.2
2453 | '@iconify/utils': 1.0.32
2454 | '@vue/compiler-sfc': 3.2.37
2455 | debug: 4.3.4
2456 | kolorist: 1.5.1
2457 | local-pkg: 0.4.1
2458 | unplugin: 0.6.3_vite@2.9.12
2459 | transitivePeerDependencies:
2460 | - esbuild
2461 | - rollup
2462 | - supports-color
2463 | - vite
2464 | - webpack
2465 |
2466 | /unplugin-vue-components/0.19.6_vite@2.9.12+vue@3.2.37:
2467 | resolution: {integrity: sha512-APvrJ9Hpid1MLT0G4PWerMJgARhNw6dzz0pcCwCxaO2DR7VyvDacMqjOQNC6ukq7FSw3wzD8VH+9i3EFXwkGmw==}
2468 | engines: {node: '>=14'}
2469 | peerDependencies:
2470 | '@babel/parser': ^7.15.8
2471 | '@babel/traverse': ^7.15.4
2472 | vue: 2 || 3
2473 | peerDependenciesMeta:
2474 | '@babel/parser':
2475 | optional: true
2476 | '@babel/traverse':
2477 | optional: true
2478 | dependencies:
2479 | '@antfu/utils': 0.5.2
2480 | '@rollup/pluginutils': 4.2.1
2481 | chokidar: 3.5.3
2482 | debug: 4.3.4
2483 | fast-glob: 3.2.11
2484 | local-pkg: 0.4.1
2485 | magic-string: 0.26.2
2486 | minimatch: 5.1.0
2487 | resolve: 1.22.0
2488 | unplugin: 0.6.3_vite@2.9.12
2489 | vue: 3.2.37
2490 | transitivePeerDependencies:
2491 | - esbuild
2492 | - rollup
2493 | - supports-color
2494 | - vite
2495 | - webpack
2496 |
2497 | /unplugin/0.6.3_vite@2.9.12:
2498 | resolution: {integrity: sha512-CoW88FQfCW/yabVc4bLrjikN9HC8dEvMU4O7B6K2jsYMPK0l6iAnd9dpJwqGcmXJKRCU9vwSsy653qg+RK0G6A==}
2499 | peerDependencies:
2500 | esbuild: '>=0.13'
2501 | rollup: ^2.50.0
2502 | vite: ^2.3.0
2503 | webpack: 4 || 5
2504 | peerDependenciesMeta:
2505 | esbuild:
2506 | optional: true
2507 | rollup:
2508 | optional: true
2509 | vite:
2510 | optional: true
2511 | webpack:
2512 | optional: true
2513 | dependencies:
2514 | chokidar: 3.5.3
2515 | vite: 2.9.12
2516 | webpack-sources: 3.2.3
2517 | webpack-virtual-modules: 0.4.3
2518 |
2519 | /utils-merge/1.0.1:
2520 | resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
2521 | engines: {node: '>= 0.4.0'}
2522 |
2523 | /vite-plugin-components/0.8.4_vite@2.9.12:
2524 | resolution: {integrity: sha512-h6/FNBKBXc4TIcHxnFYxa4+aBGDZusqp/6Ra3LBvwolwFuX6k8qPsBbXkBP0I+UwOkyHw9iU2xJ4rdYBGyN+0Q==}
2525 | deprecated: renamed to `unplugin-vue-components`, see https://github.com/antfu/unplugin-vue-components/releases/tag/v0.14.0
2526 | peerDependencies:
2527 | vite: ^2.0.0-beta.69
2528 | dependencies:
2529 | chokidar: 3.5.3
2530 | debug: 4.3.4
2531 | fast-glob: 3.2.11
2532 | minimatch: 3.1.2
2533 | vite: 2.9.12
2534 | transitivePeerDependencies:
2535 | - supports-color
2536 | dev: false
2537 |
2538 | /vite-plugin-icons/0.5.1_rhrfcyn26yvunb2ux4b7slv7na:
2539 | resolution: {integrity: sha512-snEQYVnZ7NFEShFpki3vL9vj8k7M60PO6SXQTZgzIgrwlVsTsGzgsLw8B73v4DzEygPS7wuw3q6XqlZDVUMSiQ==}
2540 | deprecated: renamed to `unplugin-icons`, see https://github.com/antfu/unplugin-icons/releases/tag/v0.7.0
2541 | peerDependencies:
2542 | '@iconify/json': '*'
2543 | '@vue/compiler-sfc': ^3.0.2
2544 | vue-template-compiler: ^2.6.12
2545 | dependencies:
2546 | '@iconify/json': 1.1.461
2547 | '@iconify/json-tools': 1.0.10
2548 | '@vue/compiler-sfc': 3.2.37
2549 | vue-template-es2015-compiler: 1.9.1
2550 | dev: false
2551 |
2552 | /vite-plugin-md/0.13.1_vite@2.9.12:
2553 | resolution: {integrity: sha512-ZLXRuhQCFVCvxTE79CtSOj71TknT7Hube5SN3aU65k7FpsIQ8ftQhMn3PbdVjHUlQRR462IuPsTYbyXHyrOmOQ==}
2554 | peerDependencies:
2555 | vite: ^2.0.0
2556 | dependencies:
2557 | '@antfu/utils': 0.5.2
2558 | '@rollup/pluginutils': 4.2.1
2559 | '@types/markdown-it': 12.2.3
2560 | '@vue/runtime-core': 3.2.37
2561 | gray-matter: 4.0.3
2562 | markdown-it: 13.0.1
2563 | vite: 2.9.12
2564 |
2565 | /vite-plugin-md/0.6.7_vite@2.9.12:
2566 | resolution: {integrity: sha512-R9i61r1y6gfelJKtHiHkw6NOkucFzGRgy7VL7bqMufiSh1UNyYKZrpiQtagzavpBlJSVk34lfEyfyKpQyeuocQ==}
2567 | peerDependencies:
2568 | vite: ^2.0.0
2569 | dependencies:
2570 | gray-matter: 4.0.3
2571 | markdown-it: 12.3.2
2572 | vite: 2.9.12
2573 | dev: false
2574 |
2575 | /vite-plugin-remote-assets/0.2.2_vite@2.9.12:
2576 | resolution: {integrity: sha512-Hl2g1EGJW7jHjNKQ0hf96LJEbfmintfQLBIgKJkyFPyjO1NH3gNUheFgBoxi6G4/nbE9hHzpIIr30iwm1NxLlQ==}
2577 | peerDependencies:
2578 | vite: ^2.0.0
2579 | dependencies:
2580 | axios: 0.21.4_debug@4.3.4
2581 | debug: 4.3.4
2582 | fs-extra: 9.1.0
2583 | magic-string: 0.25.9
2584 | vite: 2.9.12
2585 | transitivePeerDependencies:
2586 | - supports-color
2587 |
2588 | /vite-plugin-vue-server-ref/0.2.4_vite@2.9.12+vue@3.2.37:
2589 | resolution: {integrity: sha512-+WAiq0fSfP+LbmTbx2BkDrL6sGWrb0sUGZPk+G3ZbbmowFNh3TY+f+AV1ofce0rKs4hvH3zBuXxEAkTf/wQqRA==}
2590 | peerDependencies:
2591 | vite: ^2.0.0
2592 | vue: ^3.0.0-0
2593 | dependencies:
2594 | debug: 4.3.4
2595 | ufo: 0.7.11
2596 | vite: 2.9.12
2597 | vue: 3.2.37
2598 | transitivePeerDependencies:
2599 | - supports-color
2600 |
2601 | /vite-plugin-windicss/0.16.7_vite@2.9.12:
2602 | resolution: {integrity: sha512-fNBLO2EBdQsJNU3IyehSmqPdrHc6Ve+hPYDaf5SrW8nGd9Wbd8ZVh6cX/1blRcjMw0qOjgcx7GM8pRWBjhzt3Q==}
2603 | peerDependencies:
2604 | vite: ^2.0.1
2605 | dependencies:
2606 | '@windicss/plugin-utils': 0.16.7
2607 | chalk: 4.1.2
2608 | debug: 4.3.4
2609 | vite: 2.9.12
2610 | windicss: 3.5.4
2611 | transitivePeerDependencies:
2612 | - supports-color
2613 | dev: false
2614 |
2615 | /vite-plugin-windicss/1.8.4_vite@2.9.12:
2616 | resolution: {integrity: sha512-LSZAO8BZn3x406GRbYX5t5ONXXJVdqiQtN1qrznLA/Dy5/NzZVhfcrL6N1qEYYO7HsCDT4pLAjTzObvDnM9Y8A==}
2617 | peerDependencies:
2618 | vite: ^2.0.1
2619 | dependencies:
2620 | '@windicss/plugin-utils': 1.8.4
2621 | debug: 4.3.4
2622 | kolorist: 1.5.1
2623 | vite: 2.9.12
2624 | windicss: 3.5.4
2625 | transitivePeerDependencies:
2626 | - supports-color
2627 |
2628 | /vite/2.9.12:
2629 | resolution: {integrity: sha512-suxC36dQo9Rq1qMB2qiRorNJtJAdxguu5TMvBHOc/F370KvqAe9t48vYp+/TbPKRNrMh/J55tOUmkuIqstZaew==}
2630 | engines: {node: '>=12.2.0'}
2631 | hasBin: true
2632 | peerDependencies:
2633 | less: '*'
2634 | sass: '*'
2635 | stylus: '*'
2636 | peerDependenciesMeta:
2637 | less:
2638 | optional: true
2639 | sass:
2640 | optional: true
2641 | stylus:
2642 | optional: true
2643 | dependencies:
2644 | esbuild: 0.14.43
2645 | postcss: 8.4.14
2646 | resolve: 1.22.0
2647 | rollup: 2.75.6
2648 | optionalDependencies:
2649 | fsevents: 2.3.2
2650 |
2651 | /vscode-oniguruma/1.6.2:
2652 | resolution: {integrity: sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==}
2653 |
2654 | /vscode-textmate/5.2.0:
2655 | resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==}
2656 |
2657 | /vue-demi/0.13.1_vue@3.2.37:
2658 | resolution: {integrity: sha512-xmkJ56koG3ptpLnpgmIzk9/4nFf4CqduSJbUM0OdPoU87NwRuZ6x49OLhjSa/fC15fV+5CbEnrxU4oyE022svg==}
2659 | engines: {node: '>=12'}
2660 | hasBin: true
2661 | requiresBuild: true
2662 | peerDependencies:
2663 | '@vue/composition-api': ^1.0.0-rc.1
2664 | vue: ^3.0.0-0 || ^2.6.0
2665 | peerDependenciesMeta:
2666 | '@vue/composition-api':
2667 | optional: true
2668 | dependencies:
2669 | vue: 3.2.37
2670 |
2671 | /vue-router/4.0.16_vue@3.2.37:
2672 | resolution: {integrity: sha512-JcO7cb8QJLBWE+DfxGUL3xUDOae/8nhM1KVdnudadTAORbuxIC/xAydC5Zr/VLHUDQi1ppuTF5/rjBGzgzrJNA==}
2673 | peerDependencies:
2674 | vue: ^3.2.0
2675 | dependencies:
2676 | '@vue/devtools-api': 6.1.4
2677 | vue: 3.2.37
2678 |
2679 | /vue-starport/0.2.11:
2680 | resolution: {integrity: sha512-JUG5ZTvVwD8HY6M5/0dl9BTVSFfjDbDqG8cb1F0hY2wO1OTkIac+iwX8yr4f5U+2jxie6RGchoyJzQktVTwkUQ==}
2681 | dependencies:
2682 | '@vueuse/core': 8.6.0_vue@3.2.37
2683 | vue: 3.2.37
2684 | transitivePeerDependencies:
2685 | - '@vue/composition-api'
2686 |
2687 | /vue-template-es2015-compiler/1.9.1:
2688 | resolution: {integrity: sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==}
2689 | dev: false
2690 |
2691 | /vue/3.2.37:
2692 | resolution: {integrity: sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==}
2693 | dependencies:
2694 | '@vue/compiler-dom': 3.2.37
2695 | '@vue/compiler-sfc': 3.2.37
2696 | '@vue/runtime-dom': 3.2.37
2697 | '@vue/server-renderer': 3.2.37_vue@3.2.37
2698 | '@vue/shared': 3.2.37
2699 |
2700 | /webpack-sources/3.2.3:
2701 | resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
2702 | engines: {node: '>=10.13.0'}
2703 |
2704 | /webpack-virtual-modules/0.4.3:
2705 | resolution: {integrity: sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==}
2706 |
2707 | /which/2.0.2:
2708 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2709 | engines: {node: '>= 8'}
2710 | hasBin: true
2711 | dependencies:
2712 | isexe: 2.0.0
2713 |
2714 | /windicss/2.5.14:
2715 | resolution: {integrity: sha512-8Lm7U1M5AzJPbiaVSVz7qWdETRzlkv//5LBMICBBAojos1jo09lUGhNZ5rBzHeldB9JmqYMDOGgrrXHExu0EAg==}
2716 | engines: {node: '>= 12'}
2717 | hasBin: true
2718 | dev: false
2719 |
2720 | /windicss/3.5.4:
2721 | resolution: {integrity: sha512-x2Iu0a69dtNiKHMkR886lx0WKbZI5GqvXyvGBCJ2VA6rcjKYjnzCA/Ljd6hNQBfqlkSum8J+qAVcCfLzQFI4rQ==}
2722 | engines: {node: '>= 12'}
2723 | hasBin: true
2724 |
2725 | /wrap-ansi/7.0.0:
2726 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
2727 | engines: {node: '>=10'}
2728 | dependencies:
2729 | ansi-styles: 4.3.0
2730 | string-width: 4.2.3
2731 | strip-ansi: 6.0.1
2732 |
2733 | /wrappy/1.0.2:
2734 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2735 | dev: true
2736 |
2737 | /y18n/5.0.8:
2738 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
2739 | engines: {node: '>=10'}
2740 |
2741 | /yargs-parser/21.0.1:
2742 | resolution: {integrity: sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==}
2743 | engines: {node: '>=12'}
2744 |
2745 | /yargs/17.5.1:
2746 | resolution: {integrity: sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==}
2747 | engines: {node: '>=12'}
2748 | dependencies:
2749 | cliui: 7.0.4
2750 | escalade: 3.1.1
2751 | get-caller-file: 2.0.5
2752 | require-directory: 2.1.1
2753 | string-width: 4.2.3
2754 | y18n: 5.0.8
2755 | yargs-parser: 21.0.1
2756 |
2757 | /yocto-queue/0.1.0:
2758 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
2759 | engines: {node: '>=10'}
2760 |
--------------------------------------------------------------------------------