├── .gitignore
├── LICENSE
├── README.md
├── _transformer_rules
├── 001-replace-className-with-class.toml
├── 002-replace-useState-with-createSignal.toml
├── 003-replace-react-import-with-solid-js.toml
├── README.md
└── transformers.js
├── docs
├── .nojekyll
├── assets
│ ├── img
│ │ └── react2solid-hero.png
│ ├── index.95e4ee6a.js
│ ├── index.f42cc39e.css
│ └── reactjs-solidjs-libs-alternatives.csv
└── index.html
├── index.html
├── logo.png
├── package-lock.json
├── package.json
├── pnpm-lock.yaml
├── postcss.config.js
├── public
└── assets
│ ├── img
│ └── react2solid-hero.png
│ └── reactjs-solidjs-libs-alternatives.csv
├── src
├── App.tsx
├── components
│ ├── JqInput.tsx
│ ├── ReactAstEditor.tsx
│ ├── ReactCodeEditor.tsx
│ ├── SolidAstEditor.tsx
│ └── SolidCodeEditor.tsx
├── index.css
├── index.tsx
├── lib
│ ├── csv.ts
│ ├── jqAsyncChain.ts
│ └── jsonStringifyEscape.ts
├── pages
│ ├── about.tsx
│ ├── builder.tsx
│ ├── cli.tsx
│ ├── converter.tsx
│ ├── error404.tsx
│ ├── home.tsx
│ ├── libs-alternatives.tsx
│ ├── migration-guide.tsx
│ └── test-cases.tsx
└── routes.ts
├── tailwind.config.js
├── tsconfig.json
└── vite.config.ts
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 R. Rajesh Jeba Anbiah
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # ReactJS to SolidJS Converter aka Transpiler
4 |
5 | SolidJS is the framework known for its performance (based on the [js framework benchmark](https://github.com/krausest/js-framework-benchmark) project). react2solid is an attempt to create a React to Solid code converter.
6 |
7 | This project has 5 sub-projects or modules:
8 |
9 | 1. Language agnostic React to Solid transformer rules and test cases
10 | 1. ReactJS to SolidJS transpiler - JavaScript frontend
11 | 1. React to Solid converter - CLI version, for batch conversion
12 | 1. React.js to Solid.js transformer rules builder - Web UI
13 | 1. Automatic ReactJS to SolidJS migration guide - from the transformer rules
14 |
15 | ## Demo
16 |
17 | [ReactJS to SolidJS Converter & Utilities](https://rrjanbiah.github.io/react2solid/)
18 |
19 | ## Status
20 |
21 | Started with swc, JMESPath and Rust in mind, but had to switch to the Babel, jq and SolidJS due to multiple challenges (such as [1](https://github.com/swc-project/swc/discussions/4241), [2](https://github.com/rrjanbiah/react2solid/issues/6), [3](https://github.com/rrjanbiah/react2solid/issues/8)). Now, an MVP is ready without CLI.
22 |
23 | ## Architecture / Approach
24 |
25 | 1. Idea is to avoid hardcoding of parser rules
26 | 1. Create language agnostic transpiler rules using `jq` selectors and also keep test case scripts along with that
27 | 1. Using Babel, get AST for the ReactJS code
28 | 1. Apply `jq` selection on the AST
29 | 1. Convert the AST to JavaScript/SolidJS
30 | 1. For string transformer, it is merely string replace over the code (no AST conversion)
31 |
32 |
33 | ## Acknowledgments
34 |
35 | * `schwartzworld` of Hacker News for suggesting SolidJS hackathon
36 | * @ryansolid for creating SolidJS and the awesome community (especially Discord)
37 |
38 |
39 | ## Roadmap
40 |
41 | - [ ] v0.0.1
42 | - [x] Basic folder structure and naming conventions for the transform rules
43 | - [x] ReactJS to SolidJS transpiler - JavaScript frontend
44 | - [x] Builder UI (partly)
45 | - [x] Automatic migration guide generation
46 | - [x] ReactJS to SolidJS libraries alternatives (MVP, not handled in code)
47 | - [ ] v0.0.2
48 | - [ ] Refactor for code duplication and TOML structure
49 | - [ ] v0.0.3
50 | - [ ] Rust-based converter. Switch to swc?
51 |
52 | ## Contributing
53 |
54 | * Feel free to post any issues or suggestions
55 | * Submit your transform rules using the builder (TODO. Till then feel free to submit PR)
56 |
57 |
58 | ## Support / Sponsor
59 |
60 | **Hire Me**, **Recommend Me** for any remote/freelancer opportunity
61 |
62 | Contact Email: rrjanbiah-at-Y!com
63 |
64 | Twitter: [@rrjanbiah](https://twitter.com/rrjanbiah) (DM open)
65 |
--------------------------------------------------------------------------------
/_transformer_rules/001-replace-className-with-class.toml:
--------------------------------------------------------------------------------
1 | [rule]
2 | transformer.0.string.search = 'className'
3 | transformer.0.string.replace = 'class'
4 |
5 |
6 | # rule human description i18n
7 | [languages]
8 |
9 | [languages.en]
10 | title = 'In JSX, replace `className` with `class`'
11 | description = '''
12 | Unlike in React, SolidJS doesn't need the weird `className` for the CSS styling. So, we can use the normal CSS `class` itself.
13 | '''
14 |
15 |
16 | [testcases]
17 |
18 | [testcases.0]
19 | test = 'className in style attribute gets replaced'
20 |
21 | input = '''
22 | const element = (
23 |
24 | Hello, world!
25 |
26 | );
27 | '''
28 | # Expected output
29 | output = '''
30 | const element =
31 | Hello, world!
32 | ;
33 | '''
34 |
35 | [testcases.1]
36 | test = 'className in other parts are not affected'
37 |
38 | input = '''
39 | let className = 'menu';
40 | '''
41 | # Expected output
42 | output = '''
43 | let className = 'menu';
44 | '''
45 |
46 |
47 | [meta]
48 | author = "@rrjanbiah" # GitHub username
49 | # references
50 | credits.0 = "https://www.youtube.com/watch?v=wu6HvLoi9VQ"
51 |
--------------------------------------------------------------------------------
/_transformer_rules/002-replace-useState-with-createSignal.toml:
--------------------------------------------------------------------------------
1 | [rule]
2 | transformer.0.string.search = 'useState'
3 | transformer.0.string.replace = 'createSignal'
4 |
5 |
6 | # rule human description i18n
7 | [languages]
8 |
9 | [languages.en]
10 | title = 'Replace `useState` with `createSignal`'
11 | description = '''
12 | `createSignal` is the SolidJS equivalent of React `useState`
13 | '''
14 |
15 |
16 | [testcases]
17 |
18 | [testcases.0]
19 | test = 'useState gets replaced with createSignal'
20 |
21 | input = '''
22 | const [count, setCount] = useState(0);
23 | '''
24 | # Expected output
25 | output = '''
26 | const [count, setCount] = createSignal(0);
27 | '''
28 |
29 |
30 | [meta]
31 | author = "@rrjanbiah" # GitHub username
32 | # references
33 | credits.0 = "https://www.youtube.com/watch?v=wu6HvLoi9VQ"
34 |
--------------------------------------------------------------------------------
/_transformer_rules/003-replace-react-import-with-solid-js.toml:
--------------------------------------------------------------------------------
1 | [rule]
2 | transformer.0.jq = 'walk(if type == "object" and .value == "react" then .value |= "solid-js" else . end)'
3 |
4 |
5 | # rule human description i18n
6 | [languages]
7 |
8 | [languages.en]
9 | title = 'Replace `react` import with `solid-js`'
10 | description = '''
11 | Replace the `react` library in import with `solid-js`
12 | '''
13 |
14 |
15 | [testcases]
16 |
17 | [testcases.0]
18 | test = 'react gets replaced with solid-js in import'
19 |
20 | input = '''
21 | import React, { useState } from 'react';
22 | '''
23 | # Expected output
24 | output = '''
25 | import React, { useState } from "solid-js";
26 | '''
27 |
28 |
29 | [meta]
30 | author = "@rrjanbiah" # GitHub username
31 | # references
32 | credits.0 = "https://www.youtube.com/watch?v=wu6HvLoi9VQ"
33 |
--------------------------------------------------------------------------------
/_transformer_rules/README.md:
--------------------------------------------------------------------------------
1 | Language agnostic React to Solid code transformation rule, human readable description along with test cases (aka, sample use cases) are stored in `toml` files.
2 |
3 | File name convention: `%03x-slug.toml` (hexadecimal serial number in 3-digit, accompanied with the slug)
4 |
5 | TODO: Define filename length
6 |
7 | `reactjs-solidjs-libs-alternatives.csv` - SolidJS alternatives libraries for ReactJS in CSV
8 |
--------------------------------------------------------------------------------
/_transformer_rules/transformers.js:
--------------------------------------------------------------------------------
1 | // TOML to JSON converted rules
2 | // TODO: Find better approach
3 |
4 | export function transformersJson() {
5 | return [{
6 | "languages": {
7 | "en": {
8 | "description": "Unlike in React, SolidJS doesn't need the weird `className` for the CSS styling. So, we can use the normal CSS `class` itself.\n",
9 | "title": "In JSX, replace `className` with `class`"
10 | }
11 | },
12 | "meta": {
13 | "author": "@rrjanbiah",
14 | "credits": [
15 | "https://www.youtube.com/watch?v=wu6HvLoi9VQ"
16 | ]
17 | },
18 | "rule": {
19 | "transformer": [
20 | {
21 | "string": {
22 | "replace": "class",
23 | "search": "className"
24 | }
25 | }
26 | ]
27 | },
28 | "testcases": [
29 | {
30 | "input": "const element = (\n \n Hello, world!\n \n);\n",
31 | "output": "const element = (\n \n Hello, world!\n \n);\n",
32 | "test": "className in style attribute gets replaced"
33 | },
34 | {
35 | "input": "let className = 'menu';\n",
36 | "output": "let className = 'menu';\n",
37 | "test": "className in other parts are not affected"
38 | }
39 | ]
40 | },
41 | {
42 | "languages": {
43 | "en": {
44 | "description": "`createSignal` is the SolidJS equivalent of React `useState`\n",
45 | "title": "Replace `useState` with `createSignal`"
46 | }
47 | },
48 | "meta": {
49 | "author": "@rrjanbiah",
50 | "credits": {
51 | "0": "https://www.youtube.com/watch?v=wu6HvLoi9VQ"
52 | }
53 | },
54 | "rule": {
55 | "transformer": [
56 | {
57 | "string": {
58 | "replace": "createSignal",
59 | "search": "useState"
60 | }
61 | }
62 | ]
63 | },
64 | "testcases": [
65 | {
66 | "input": "const [count, setCount] = useState(0);\n",
67 | "output": "const [count, setCount] = createSignal(0);\n",
68 | "test": "useState gets replaced with createSignal"
69 | }
70 | ]
71 | },
72 | {
73 | "languages": {
74 | "en": {
75 | "description": "Replace the `react` library in import with `solid-js`\n",
76 | "title": "Replace `react` import with `solid-js`"
77 | }
78 | },
79 | "meta": {
80 | "author": "@rrjanbiah",
81 | "credits": [
82 | "https://www.youtube.com/watch?v=wu6HvLoi9VQ"
83 | ]
84 | },
85 | "rule": {
86 | "transformer": [
87 | {
88 | "jq": "walk(if type == \"object\" and .value == \"react\" then .value |= \"solid-js\" else . end)"
89 | }
90 | ]
91 | },
92 | "testcases": [
93 | {
94 | "input": "import React, { useState } from 'react';\n",
95 | "output": "import React, { useState } from \"solid-js\";",
96 | "test": "react gets replaced with solid-js in import"
97 | }
98 | ]
99 | }]
100 | }
101 |
--------------------------------------------------------------------------------
/docs/.nojekyll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rrjanbiah/react2solid/8a3839d29d6394b1899066be4d9146f87dbe99e0/docs/.nojekyll
--------------------------------------------------------------------------------
/docs/assets/img/react2solid-hero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rrjanbiah/react2solid/8a3839d29d6394b1899066be4d9146f87dbe99e0/docs/assets/img/react2solid-hero.png
--------------------------------------------------------------------------------
/docs/assets/index.f42cc39e.css:
--------------------------------------------------------------------------------
1 | *,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.relative{position:relative}.m-0{margin:0}.m-2{margin:.5rem}.-m-2{margin:-.5rem}.-m-4{margin:-1rem}.mx-auto{margin-left:auto;margin-right:auto}.-my-8{margin-top:-2rem;margin-bottom:-2rem}.mb-4{margin-bottom:1rem}.ml-3{margin-left:.75rem}.mr-5{margin-right:1.25rem}.mt-4{margin-top:1rem}.ml-2{margin-left:.5rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mb-6{margin-bottom:1.5rem}.mb-2{margin-bottom:.5rem}.mt-10{margin-top:2.5rem}.mb-12{margin-bottom:3rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-8{margin-bottom:2rem}.mt-6{margin-top:1.5rem}.mb-3{margin-bottom:.75rem}.mr-3{margin-right:.75rem}.mt-3{margin-top:.75rem}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.h-10{height:2.5rem}.h-5{height:1.25rem}.h-4{height:1rem}.h-screen{height:100vh}.h-1{height:.25rem}.h-12{height:3rem}.h-32{height:8rem}.h-16{height:4rem}.h-2{height:.5rem}.h-full{height:100%}.h-8{height:2rem}.h-6{height:1.5rem}.w-10{width:2.5rem}.w-5{width:1.25rem}.w-4{width:1rem}.w-full{width:100%}.w-20{width:5rem}.w-12{width:3rem}.w-1\/2{width:50%}.w-16{width:4rem}.w-2{width:.5rem}.w-5\/6{width:83.333333%}.w-8{width:2rem}.w-6{width:1.5rem}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.table-auto{table-layout:auto}.resize-none{resize:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.divide-y-2>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(2px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(2px * var(--tw-divide-y-reverse))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(243 244 246 / var(--tw-divide-opacity))}.overflow-auto{overflow:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.border-0{border-width:0px}.border{border-width:1px}.border-2{border-width:2px}.border-t{border-top-width:1px}.border-t-0{border-top-width:0px}.border-t-2{border-top-width:2px}.border-solid{border-style:solid}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity))}.bg-indigo-500{--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity))}.bg-opacity-50{--tw-bg-opacity: .5}.bg-clip-padding{background-clip:padding-box}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-5{padding:1.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-8{padding:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.px-4{padding-left:1rem;padding-right:1rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-24{padding-top:6rem;padding-bottom:6rem}.pl-4{padding-left:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-bold{font-weight:700}.font-semibold{font-weight:600}.leading-relaxed{line-height:1.625}.leading-8{line-height:2rem}.leading-6{line-height:1.5rem}.tracking-widest{letter-spacing:.1em}.tracking-wider{letter-spacing:.05em}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-indigo-500{--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.outline-none{outline:2px solid transparent;outline-offset:2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,fill,stroke,-webkit-text-decoration-color;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,-webkit-text-decoration-color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\:border-indigo-500:hover{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-indigo-600:hover{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.hover\:text-indigo-500:hover{--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity))}.focus\:border-blue-600:focus{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity))}.focus\:border-indigo-500:focus{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity))}.focus\:bg-white:focus{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.focus\:text-gray-700:focus{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-indigo-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(199 210 254 / var(--tw-ring-opacity))}@media (min-width: 640px){.sm\:ml-4{margin-left:1rem}.sm\:mt-0{margin-top:0}.sm\:ml-auto{margin-left:auto}.sm\:w-auto{width:auto}.sm\:w-1\/2{width:50%}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:border-l-2{border-left-width:2px}.sm\:border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.sm\:py-2{padding-top:.5rem;padding-bottom:.5rem}.sm\:pl-4{padding-left:1rem}.sm\:pr-16{padding-right:4rem}.sm\:text-left{text-align:left}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}}@media (min-width: 768px){.md\:mb-0{margin-bottom:0}.md\:mr-auto{margin-right:auto}.md\:ml-4{margin-left:1rem}.md\:mt-0{margin-top:0}.md\:mb-2{margin-bottom:.5rem}.md\:w-2\/3{width:66.666667%}.md\:w-1\/12{width:8.333333%}.md\:w-3\/6{width:50%}.md\:w-1\/3{width:33.333333%}.md\:w-1\/2{width:50%}.md\:w-64{width:16rem}.md\:flex-grow{flex-grow:1}.md\:flex-row{flex-direction:row}.md\:flex-nowrap{flex-wrap:nowrap}.md\:justify-start{justify-content:flex-start}.md\:border-l{border-left-width:1px}.md\:border-gray-400{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity))}.md\:py-1{padding-top:.25rem;padding-bottom:.25rem}.md\:pl-4{padding-left:1rem}}@media (min-width: 1024px){.lg\:mb-0{margin-bottom:0}.lg\:w-2\/3{width:66.666667%}.lg\:w-1\/2{width:50%}.lg\:w-2\/6{width:33.333333%}}
2 |
--------------------------------------------------------------------------------
/docs/assets/reactjs-solidjs-libs-alternatives.csv:
--------------------------------------------------------------------------------
1 | Keywords,ReactJS Lib,ReactJS Lib URL,SolidJS Lib,SolidJS Lib URL,API Match Score
2 | "meta,title,head,SEO",next/head,https://nextjs.org/docs/api-reference/next/head,solid-meta,https://github.com/solidjs/solid-meta,90
3 | "virtualized,window,performance",react-virtualized,https://bvaughn.github.io/react-virtualized/,solid-virtual-container,https://github.com/minht11/solid-virtual-container,50
4 | "virtualized,window,performance",react-window,https://github.com/bvaughn/react-window,solid-windowed,https://github.com/titoBouzout/solid-windowed,40
5 | markdown,remark-react,https://github.com/remarkjs/remark-react,solid-marked,https://github.com/LXSMNSYC/solid-marked,40
6 | "table,sort,pagination",sb-react-table,https://github.com/steelbrain/react-table,solid-simple-table,https://github.com/aminya/solid-simple-table,90
7 |
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | ReactJS to SolidJS Converter & Utilities
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | You need to enable JavaScript to run this app.
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | ReactJS to SolidJS Converter & Utilities
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | You need to enable JavaScript to run this app.
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rrjanbiah/react2solid/8a3839d29d6394b1899066be4d9146f87dbe99e0/logo.png
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react2solid",
3 | "version": "0.0.1",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@ampproject/remapping": {
8 | "version": "2.1.2",
9 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz",
10 | "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==",
11 | "dev": true,
12 | "requires": {
13 | "@jridgewell/trace-mapping": "^0.3.0"
14 | }
15 | },
16 | "@babel/code-frame": {
17 | "version": "7.16.7",
18 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz",
19 | "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
20 | "requires": {
21 | "@babel/highlight": "^7.16.7"
22 | }
23 | },
24 | "@babel/compat-data": {
25 | "version": "7.17.7",
26 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz",
27 | "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==",
28 | "dev": true
29 | },
30 | "@babel/core": {
31 | "version": "7.17.9",
32 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz",
33 | "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==",
34 | "dev": true,
35 | "requires": {
36 | "@ampproject/remapping": "^2.1.0",
37 | "@babel/code-frame": "^7.16.7",
38 | "@babel/generator": "^7.17.9",
39 | "@babel/helper-compilation-targets": "^7.17.7",
40 | "@babel/helper-module-transforms": "^7.17.7",
41 | "@babel/helpers": "^7.17.9",
42 | "@babel/parser": "^7.17.9",
43 | "@babel/template": "^7.16.7",
44 | "@babel/traverse": "^7.17.9",
45 | "@babel/types": "^7.17.0",
46 | "convert-source-map": "^1.7.0",
47 | "debug": "^4.1.0",
48 | "gensync": "^1.0.0-beta.2",
49 | "json5": "^2.2.1",
50 | "semver": "^6.3.0"
51 | }
52 | },
53 | "@babel/generator": {
54 | "version": "7.17.9",
55 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz",
56 | "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==",
57 | "requires": {
58 | "@babel/types": "^7.17.0",
59 | "jsesc": "^2.5.1",
60 | "source-map": "^0.5.0"
61 | }
62 | },
63 | "@babel/helper-annotate-as-pure": {
64 | "version": "7.16.7",
65 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz",
66 | "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==",
67 | "dev": true,
68 | "requires": {
69 | "@babel/types": "^7.16.7"
70 | }
71 | },
72 | "@babel/helper-compilation-targets": {
73 | "version": "7.17.7",
74 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz",
75 | "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==",
76 | "dev": true,
77 | "requires": {
78 | "@babel/compat-data": "^7.17.7",
79 | "@babel/helper-validator-option": "^7.16.7",
80 | "browserslist": "^4.17.5",
81 | "semver": "^6.3.0"
82 | }
83 | },
84 | "@babel/helper-create-class-features-plugin": {
85 | "version": "7.17.9",
86 | "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz",
87 | "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==",
88 | "dev": true,
89 | "requires": {
90 | "@babel/helper-annotate-as-pure": "^7.16.7",
91 | "@babel/helper-environment-visitor": "^7.16.7",
92 | "@babel/helper-function-name": "^7.17.9",
93 | "@babel/helper-member-expression-to-functions": "^7.17.7",
94 | "@babel/helper-optimise-call-expression": "^7.16.7",
95 | "@babel/helper-replace-supers": "^7.16.7",
96 | "@babel/helper-split-export-declaration": "^7.16.7"
97 | }
98 | },
99 | "@babel/helper-environment-visitor": {
100 | "version": "7.16.7",
101 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz",
102 | "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==",
103 | "requires": {
104 | "@babel/types": "^7.16.7"
105 | }
106 | },
107 | "@babel/helper-function-name": {
108 | "version": "7.17.9",
109 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz",
110 | "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==",
111 | "requires": {
112 | "@babel/template": "^7.16.7",
113 | "@babel/types": "^7.17.0"
114 | }
115 | },
116 | "@babel/helper-hoist-variables": {
117 | "version": "7.16.7",
118 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
119 | "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
120 | "requires": {
121 | "@babel/types": "^7.16.7"
122 | }
123 | },
124 | "@babel/helper-member-expression-to-functions": {
125 | "version": "7.17.7",
126 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz",
127 | "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==",
128 | "dev": true,
129 | "requires": {
130 | "@babel/types": "^7.17.0"
131 | }
132 | },
133 | "@babel/helper-module-imports": {
134 | "version": "7.16.7",
135 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz",
136 | "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==",
137 | "dev": true,
138 | "requires": {
139 | "@babel/types": "^7.16.7"
140 | }
141 | },
142 | "@babel/helper-module-transforms": {
143 | "version": "7.17.7",
144 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz",
145 | "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==",
146 | "dev": true,
147 | "requires": {
148 | "@babel/helper-environment-visitor": "^7.16.7",
149 | "@babel/helper-module-imports": "^7.16.7",
150 | "@babel/helper-simple-access": "^7.17.7",
151 | "@babel/helper-split-export-declaration": "^7.16.7",
152 | "@babel/helper-validator-identifier": "^7.16.7",
153 | "@babel/template": "^7.16.7",
154 | "@babel/traverse": "^7.17.3",
155 | "@babel/types": "^7.17.0"
156 | }
157 | },
158 | "@babel/helper-optimise-call-expression": {
159 | "version": "7.16.7",
160 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz",
161 | "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==",
162 | "dev": true,
163 | "requires": {
164 | "@babel/types": "^7.16.7"
165 | }
166 | },
167 | "@babel/helper-plugin-utils": {
168 | "version": "7.16.7",
169 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz",
170 | "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==",
171 | "dev": true
172 | },
173 | "@babel/helper-replace-supers": {
174 | "version": "7.16.7",
175 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz",
176 | "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==",
177 | "dev": true,
178 | "requires": {
179 | "@babel/helper-environment-visitor": "^7.16.7",
180 | "@babel/helper-member-expression-to-functions": "^7.16.7",
181 | "@babel/helper-optimise-call-expression": "^7.16.7",
182 | "@babel/traverse": "^7.16.7",
183 | "@babel/types": "^7.16.7"
184 | }
185 | },
186 | "@babel/helper-simple-access": {
187 | "version": "7.17.7",
188 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz",
189 | "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==",
190 | "dev": true,
191 | "requires": {
192 | "@babel/types": "^7.17.0"
193 | }
194 | },
195 | "@babel/helper-split-export-declaration": {
196 | "version": "7.16.7",
197 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
198 | "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
199 | "requires": {
200 | "@babel/types": "^7.16.7"
201 | }
202 | },
203 | "@babel/helper-validator-identifier": {
204 | "version": "7.16.7",
205 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
206 | "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw=="
207 | },
208 | "@babel/helper-validator-option": {
209 | "version": "7.16.7",
210 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz",
211 | "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==",
212 | "dev": true
213 | },
214 | "@babel/helpers": {
215 | "version": "7.17.9",
216 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz",
217 | "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==",
218 | "dev": true,
219 | "requires": {
220 | "@babel/template": "^7.16.7",
221 | "@babel/traverse": "^7.17.9",
222 | "@babel/types": "^7.17.0"
223 | }
224 | },
225 | "@babel/highlight": {
226 | "version": "7.17.9",
227 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz",
228 | "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==",
229 | "requires": {
230 | "@babel/helper-validator-identifier": "^7.16.7",
231 | "chalk": "^2.0.0",
232 | "js-tokens": "^4.0.0"
233 | }
234 | },
235 | "@babel/parser": {
236 | "version": "7.17.9",
237 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz",
238 | "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg=="
239 | },
240 | "@babel/plugin-syntax-jsx": {
241 | "version": "7.16.7",
242 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz",
243 | "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==",
244 | "dev": true,
245 | "requires": {
246 | "@babel/helper-plugin-utils": "^7.16.7"
247 | }
248 | },
249 | "@babel/plugin-syntax-typescript": {
250 | "version": "7.16.7",
251 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz",
252 | "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==",
253 | "dev": true,
254 | "requires": {
255 | "@babel/helper-plugin-utils": "^7.16.7"
256 | }
257 | },
258 | "@babel/plugin-transform-typescript": {
259 | "version": "7.16.8",
260 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz",
261 | "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==",
262 | "dev": true,
263 | "requires": {
264 | "@babel/helper-create-class-features-plugin": "^7.16.7",
265 | "@babel/helper-plugin-utils": "^7.16.7",
266 | "@babel/plugin-syntax-typescript": "^7.16.7"
267 | }
268 | },
269 | "@babel/preset-typescript": {
270 | "version": "7.16.7",
271 | "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz",
272 | "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==",
273 | "dev": true,
274 | "requires": {
275 | "@babel/helper-plugin-utils": "^7.16.7",
276 | "@babel/helper-validator-option": "^7.16.7",
277 | "@babel/plugin-transform-typescript": "^7.16.7"
278 | }
279 | },
280 | "@babel/template": {
281 | "version": "7.16.7",
282 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz",
283 | "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
284 | "requires": {
285 | "@babel/code-frame": "^7.16.7",
286 | "@babel/parser": "^7.16.7",
287 | "@babel/types": "^7.16.7"
288 | }
289 | },
290 | "@babel/traverse": {
291 | "version": "7.17.9",
292 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz",
293 | "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==",
294 | "requires": {
295 | "@babel/code-frame": "^7.16.7",
296 | "@babel/generator": "^7.17.9",
297 | "@babel/helper-environment-visitor": "^7.16.7",
298 | "@babel/helper-function-name": "^7.17.9",
299 | "@babel/helper-hoist-variables": "^7.16.7",
300 | "@babel/helper-split-export-declaration": "^7.16.7",
301 | "@babel/parser": "^7.17.9",
302 | "@babel/types": "^7.17.0",
303 | "debug": "^4.1.0",
304 | "globals": "^11.1.0"
305 | }
306 | },
307 | "@babel/types": {
308 | "version": "7.17.0",
309 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz",
310 | "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
311 | "requires": {
312 | "@babel/helper-validator-identifier": "^7.16.7",
313 | "to-fast-properties": "^2.0.0"
314 | }
315 | },
316 | "@esbuild-plugins/node-globals-polyfill": {
317 | "version": "0.1.1",
318 | "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.1.1.tgz",
319 | "integrity": "sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg=="
320 | },
321 | "@esbuild-plugins/node-modules-polyfill": {
322 | "version": "0.1.4",
323 | "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.1.4.tgz",
324 | "integrity": "sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg==",
325 | "dev": true,
326 | "requires": {
327 | "escape-string-regexp": "^4.0.0",
328 | "rollup-plugin-node-polyfills": "^0.2.1"
329 | },
330 | "dependencies": {
331 | "escape-string-regexp": {
332 | "version": "4.0.0",
333 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
334 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
335 | "dev": true
336 | }
337 | }
338 | },
339 | "@jridgewell/resolve-uri": {
340 | "version": "3.0.5",
341 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz",
342 | "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==",
343 | "dev": true
344 | },
345 | "@jridgewell/sourcemap-codec": {
346 | "version": "1.4.11",
347 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz",
348 | "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==",
349 | "dev": true
350 | },
351 | "@jridgewell/trace-mapping": {
352 | "version": "0.3.4",
353 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz",
354 | "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==",
355 | "dev": true,
356 | "requires": {
357 | "@jridgewell/resolve-uri": "^3.0.3",
358 | "@jridgewell/sourcemap-codec": "^1.4.10"
359 | }
360 | },
361 | "@nodelib/fs.scandir": {
362 | "version": "2.1.5",
363 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
364 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
365 | "dev": true,
366 | "requires": {
367 | "@nodelib/fs.stat": "2.0.5",
368 | "run-parallel": "^1.1.9"
369 | }
370 | },
371 | "@nodelib/fs.stat": {
372 | "version": "2.0.5",
373 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
374 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
375 | "dev": true
376 | },
377 | "@nodelib/fs.walk": {
378 | "version": "1.2.8",
379 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
380 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
381 | "dev": true,
382 | "requires": {
383 | "@nodelib/fs.scandir": "2.1.5",
384 | "fastq": "^1.6.0"
385 | }
386 | },
387 | "@types/babel__generator": {
388 | "version": "7.6.4",
389 | "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz",
390 | "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==",
391 | "dev": true,
392 | "requires": {
393 | "@babel/types": "^7.0.0"
394 | }
395 | },
396 | "@types/babel__traverse": {
397 | "version": "7.14.2",
398 | "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz",
399 | "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==",
400 | "dev": true,
401 | "requires": {
402 | "@babel/types": "^7.3.0"
403 | }
404 | },
405 | "@types/parse-json": {
406 | "version": "4.0.0",
407 | "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
408 | "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
409 | "dev": true
410 | },
411 | "acorn": {
412 | "version": "7.4.1",
413 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
414 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
415 | "dev": true
416 | },
417 | "acorn-node": {
418 | "version": "1.8.2",
419 | "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
420 | "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
421 | "dev": true,
422 | "requires": {
423 | "acorn": "^7.0.0",
424 | "acorn-walk": "^7.0.0",
425 | "xtend": "^4.0.2"
426 | }
427 | },
428 | "acorn-walk": {
429 | "version": "7.2.0",
430 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
431 | "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
432 | "dev": true
433 | },
434 | "ansi-styles": {
435 | "version": "3.2.1",
436 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
437 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
438 | "requires": {
439 | "color-convert": "^1.9.0"
440 | }
441 | },
442 | "anymatch": {
443 | "version": "3.1.2",
444 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
445 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
446 | "dev": true,
447 | "requires": {
448 | "normalize-path": "^3.0.0",
449 | "picomatch": "^2.0.4"
450 | }
451 | },
452 | "arg": {
453 | "version": "5.0.1",
454 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz",
455 | "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==",
456 | "dev": true
457 | },
458 | "autoprefixer": {
459 | "version": "10.4.4",
460 | "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz",
461 | "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==",
462 | "dev": true,
463 | "requires": {
464 | "browserslist": "^4.20.2",
465 | "caniuse-lite": "^1.0.30001317",
466 | "fraction.js": "^4.2.0",
467 | "normalize-range": "^0.1.2",
468 | "picocolors": "^1.0.0",
469 | "postcss-value-parser": "^4.2.0"
470 | }
471 | },
472 | "babel-plugin-jsx-dom-expressions": {
473 | "version": "0.32.11",
474 | "resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.32.11.tgz",
475 | "integrity": "sha512-hytqY33SGW6B3obSLt8K5X510UwtNkTktCCWgwba+QOOV0CowDFiqeL+0ru895FLacFaYANHFTu1y76dg3GVtw==",
476 | "dev": true,
477 | "requires": {
478 | "@babel/helper-module-imports": "7.16.0",
479 | "@babel/plugin-syntax-jsx": "^7.16.5",
480 | "@babel/types": "^7.16.0",
481 | "html-entities": "2.3.2"
482 | },
483 | "dependencies": {
484 | "@babel/helper-module-imports": {
485 | "version": "7.16.0",
486 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz",
487 | "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==",
488 | "dev": true,
489 | "requires": {
490 | "@babel/types": "^7.16.0"
491 | }
492 | }
493 | }
494 | },
495 | "babel-preset-solid": {
496 | "version": "1.3.13",
497 | "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.3.13.tgz",
498 | "integrity": "sha512-MZnmsceI9yiHlwwFCSALTJhadk2eea/+2UP4ec4jkPZFR+XRKTLoIwRkrBh7uLtvHF+3lHGyUaXtZukOmmUwhA==",
499 | "dev": true,
500 | "requires": {
501 | "babel-plugin-jsx-dom-expressions": "^0.32.11"
502 | }
503 | },
504 | "base64-js": {
505 | "version": "1.5.1",
506 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
507 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
508 | },
509 | "binary-extensions": {
510 | "version": "2.2.0",
511 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
512 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
513 | "dev": true
514 | },
515 | "braces": {
516 | "version": "3.0.2",
517 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
518 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
519 | "dev": true,
520 | "requires": {
521 | "fill-range": "^7.0.1"
522 | }
523 | },
524 | "browserslist": {
525 | "version": "4.20.2",
526 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz",
527 | "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==",
528 | "dev": true,
529 | "requires": {
530 | "caniuse-lite": "^1.0.30001317",
531 | "electron-to-chromium": "^1.4.84",
532 | "escalade": "^3.1.1",
533 | "node-releases": "^2.0.2",
534 | "picocolors": "^1.0.0"
535 | }
536 | },
537 | "buffer": {
538 | "version": "6.0.3",
539 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
540 | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
541 | "requires": {
542 | "base64-js": "^1.3.1",
543 | "ieee754": "^1.2.1"
544 | }
545 | },
546 | "callsites": {
547 | "version": "3.1.0",
548 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
549 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
550 | "dev": true
551 | },
552 | "camelcase-css": {
553 | "version": "2.0.1",
554 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
555 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
556 | "dev": true
557 | },
558 | "caniuse-lite": {
559 | "version": "1.0.30001327",
560 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz",
561 | "integrity": "sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==",
562 | "dev": true
563 | },
564 | "chalk": {
565 | "version": "2.4.2",
566 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
567 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
568 | "requires": {
569 | "ansi-styles": "^3.2.1",
570 | "escape-string-regexp": "^1.0.5",
571 | "supports-color": "^5.3.0"
572 | }
573 | },
574 | "chokidar": {
575 | "version": "3.5.3",
576 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
577 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
578 | "dev": true,
579 | "requires": {
580 | "anymatch": "~3.1.2",
581 | "braces": "~3.0.2",
582 | "fsevents": "~2.3.2",
583 | "glob-parent": "~5.1.2",
584 | "is-binary-path": "~2.1.0",
585 | "is-glob": "~4.0.1",
586 | "normalize-path": "~3.0.0",
587 | "readdirp": "~3.6.0"
588 | },
589 | "dependencies": {
590 | "glob-parent": {
591 | "version": "5.1.2",
592 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
593 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
594 | "dev": true,
595 | "requires": {
596 | "is-glob": "^4.0.1"
597 | }
598 | }
599 | }
600 | },
601 | "color-convert": {
602 | "version": "1.9.3",
603 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
604 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
605 | "requires": {
606 | "color-name": "1.1.3"
607 | }
608 | },
609 | "color-name": {
610 | "version": "1.1.3",
611 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
612 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
613 | },
614 | "convert-source-map": {
615 | "version": "1.8.0",
616 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz",
617 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
618 | "dev": true,
619 | "requires": {
620 | "safe-buffer": "~5.1.1"
621 | }
622 | },
623 | "cosmiconfig": {
624 | "version": "7.0.1",
625 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz",
626 | "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==",
627 | "dev": true,
628 | "requires": {
629 | "@types/parse-json": "^4.0.0",
630 | "import-fresh": "^3.2.1",
631 | "parse-json": "^5.0.0",
632 | "path-type": "^4.0.0",
633 | "yaml": "^1.10.0"
634 | }
635 | },
636 | "cssesc": {
637 | "version": "3.0.0",
638 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
639 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
640 | "dev": true
641 | },
642 | "debug": {
643 | "version": "4.3.4",
644 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
645 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
646 | "requires": {
647 | "ms": "2.1.2"
648 | }
649 | },
650 | "defined": {
651 | "version": "1.0.0",
652 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
653 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
654 | "dev": true
655 | },
656 | "detective": {
657 | "version": "5.2.0",
658 | "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz",
659 | "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==",
660 | "dev": true,
661 | "requires": {
662 | "acorn-node": "^1.6.1",
663 | "defined": "^1.0.0",
664 | "minimist": "^1.1.1"
665 | }
666 | },
667 | "didyoumean": {
668 | "version": "1.2.2",
669 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
670 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
671 | "dev": true
672 | },
673 | "dlv": {
674 | "version": "1.1.3",
675 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
676 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
677 | "dev": true
678 | },
679 | "electron-to-chromium": {
680 | "version": "1.4.106",
681 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz",
682 | "integrity": "sha512-ZYfpVLULm67K7CaaGP7DmjyeMY4naxsbTy+syVVxT6QHI1Ww8XbJjmr9fDckrhq44WzCrcC5kH3zGpdusxwwqg==",
683 | "dev": true
684 | },
685 | "error-ex": {
686 | "version": "1.3.2",
687 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
688 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
689 | "dev": true,
690 | "requires": {
691 | "is-arrayish": "^0.2.1"
692 | }
693 | },
694 | "esbuild": {
695 | "version": "0.14.34",
696 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.34.tgz",
697 | "integrity": "sha512-QIWdPT/gFF6hCaf4m7kP0cJ+JIuFkdHibI7vVFvu3eJS1HpVmYHWDulyN5WXwbRA0SX/7ZDaJ/1DH8SdY9xOJg==",
698 | "dev": true,
699 | "requires": {
700 | "esbuild-android-64": "0.14.34",
701 | "esbuild-android-arm64": "0.14.34",
702 | "esbuild-darwin-64": "0.14.34",
703 | "esbuild-darwin-arm64": "0.14.34",
704 | "esbuild-freebsd-64": "0.14.34",
705 | "esbuild-freebsd-arm64": "0.14.34",
706 | "esbuild-linux-32": "0.14.34",
707 | "esbuild-linux-64": "0.14.34",
708 | "esbuild-linux-arm": "0.14.34",
709 | "esbuild-linux-arm64": "0.14.34",
710 | "esbuild-linux-mips64le": "0.14.34",
711 | "esbuild-linux-ppc64le": "0.14.34",
712 | "esbuild-linux-riscv64": "0.14.34",
713 | "esbuild-linux-s390x": "0.14.34",
714 | "esbuild-netbsd-64": "0.14.34",
715 | "esbuild-openbsd-64": "0.14.34",
716 | "esbuild-sunos-64": "0.14.34",
717 | "esbuild-windows-32": "0.14.34",
718 | "esbuild-windows-64": "0.14.34",
719 | "esbuild-windows-arm64": "0.14.34"
720 | }
721 | },
722 | "esbuild-android-64": {
723 | "version": "0.14.34",
724 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.34.tgz",
725 | "integrity": "sha512-XfxcfJqmMYsT/LXqrptzFxmaR3GWzXHDLdFNIhm6S00zPaQF1TBBWm+9t0RZ6LRR7iwH57DPjaOeW20vMqI4Yw==",
726 | "dev": true,
727 | "optional": true
728 | },
729 | "esbuild-android-arm64": {
730 | "version": "0.14.34",
731 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.34.tgz",
732 | "integrity": "sha512-T02+NXTmSRL1Mc6puz+R9CB54rSPICkXKq6+tw8B6vxZFnCPzbJxgwIX4kcluz9p8nYBjF3+lSilTGWb7+Xgew==",
733 | "dev": true,
734 | "optional": true
735 | },
736 | "esbuild-darwin-64": {
737 | "version": "0.14.34",
738 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.34.tgz",
739 | "integrity": "sha512-pLRip2Bh4Ng7Bf6AMgCrSp3pPe/qZyf11h5Qo2mOfJqLWzSVjxrXW+CFRJfrOVP7TCnh/gmZSM2AFdCPB72vtw==",
740 | "dev": true,
741 | "optional": true
742 | },
743 | "esbuild-darwin-arm64": {
744 | "version": "0.14.34",
745 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.34.tgz",
746 | "integrity": "sha512-vpidSJEBxx6lf1NWgXC+DCmGqesJuZ5Y8aQVVsaoO4i8tRXbXb0whChRvop/zd3nfNM4dIl5EXAky0knRX5I6w==",
747 | "dev": true,
748 | "optional": true
749 | },
750 | "esbuild-freebsd-64": {
751 | "version": "0.14.34",
752 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.34.tgz",
753 | "integrity": "sha512-m0HBjePhe0hAQJgtMRMNV9kMgIyV4/qSnzPx42kRMQBcPhgjAq1JRu4Il26czC+9FgpMbFkUktb07f/Lwnc6CA==",
754 | "dev": true,
755 | "optional": true
756 | },
757 | "esbuild-freebsd-arm64": {
758 | "version": "0.14.34",
759 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.34.tgz",
760 | "integrity": "sha512-cpRc2B94L1KvMPPYB4D6G39jLqpKlD3noAMY4/e86iXXXkhUYJJEtTuyNFTa9JRpWM0xCAp4mxjHjoIiLuoCLA==",
761 | "dev": true,
762 | "optional": true
763 | },
764 | "esbuild-linux-32": {
765 | "version": "0.14.34",
766 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.34.tgz",
767 | "integrity": "sha512-8nQaEaoW7MH/K/RlozJa+lE1ejHIr8fuPIHhc513UebRav7HtXgQvxHQ6VZRUkWtep23M6dd7UqhwO1tMOfzQQ==",
768 | "dev": true,
769 | "optional": true
770 | },
771 | "esbuild-linux-64": {
772 | "version": "0.14.34",
773 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.34.tgz",
774 | "integrity": "sha512-Y3of4qQoLLlAgf042MlrY1P+7PnN9zWj8nVtw9XQG5hcLOZLz7IKpU35oeu7n4wvyaZHwvQqDJ93gRLqdJekcQ==",
775 | "dev": true,
776 | "optional": true
777 | },
778 | "esbuild-linux-arm": {
779 | "version": "0.14.34",
780 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.34.tgz",
781 | "integrity": "sha512-9lpq1NcJqssAF7alCO6zL3gvBVVt/lKw4oetUM7OgNnRX0OWpB+ZIO9FwCrSj/dMdmgDhPLf+119zB8QxSMmAg==",
782 | "dev": true,
783 | "optional": true
784 | },
785 | "esbuild-linux-arm64": {
786 | "version": "0.14.34",
787 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.34.tgz",
788 | "integrity": "sha512-IlWaGtj9ir7+Nrume1DGcyzBDlK8GcnJq0ANKwcI9pVw8tqr+6GD0eqyF9SF1mR8UmAp+odrx1H5NdR2cHdFHA==",
789 | "dev": true,
790 | "optional": true
791 | },
792 | "esbuild-linux-mips64le": {
793 | "version": "0.14.34",
794 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.34.tgz",
795 | "integrity": "sha512-k3or+01Rska1AjUyNjA4buEwB51eyN/xPQAoOx1CjzAQC3l8rpjUDw55kXyL63O/1MUi4ISvtNtl8gLwdyEcxw==",
796 | "dev": true,
797 | "optional": true
798 | },
799 | "esbuild-linux-ppc64le": {
800 | "version": "0.14.34",
801 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.34.tgz",
802 | "integrity": "sha512-+qxb8M9FfM2CJaVU7GgYpJOHM1ngQOx+/VrtBjb4C8oVqaPcESCeg2anjl+HRZy8VpYc71q/iBYausPPbJ+Keg==",
803 | "dev": true,
804 | "optional": true
805 | },
806 | "esbuild-linux-riscv64": {
807 | "version": "0.14.34",
808 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.34.tgz",
809 | "integrity": "sha512-Y717ltBdQ5j5sZIHdy1DV9kieo0wMip0dCmVSTceowCPYSn1Cg33Kd6981+F/3b9FDMzNWldZFOBRILViENZSA==",
810 | "dev": true,
811 | "optional": true
812 | },
813 | "esbuild-linux-s390x": {
814 | "version": "0.14.34",
815 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.34.tgz",
816 | "integrity": "sha512-bDDgYO4LhL4+zPs+WcBkXph+AQoPcQRTv18FzZS0WhjfH8TZx2QqlVPGhmhZ6WidrY+jKthUqO6UhGyIb4MpmA==",
817 | "dev": true,
818 | "optional": true
819 | },
820 | "esbuild-netbsd-64": {
821 | "version": "0.14.34",
822 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.34.tgz",
823 | "integrity": "sha512-cfaFGXdRt0+vHsjNPyF0POM4BVSHPSbhLPe8mppDc7GDDxjIl08mV1Zou14oDWMp/XZMjYN1kWYRSfftiD0vvQ==",
824 | "dev": true,
825 | "optional": true
826 | },
827 | "esbuild-openbsd-64": {
828 | "version": "0.14.34",
829 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.34.tgz",
830 | "integrity": "sha512-vmy9DxXVnRiI14s8GKuYBtess+EVcDALkbpTqd5jw4XITutIzyB7n4x0Tj5utAkKsgZJB22lLWGekr0ABnSLow==",
831 | "dev": true,
832 | "optional": true
833 | },
834 | "esbuild-sunos-64": {
835 | "version": "0.14.34",
836 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.34.tgz",
837 | "integrity": "sha512-eNPVatNET1F7tRMhii7goL/eptfxc0ALRjrj9SPFNqp0zmxrehBFD6BaP3R4LjMn6DbMO0jOAnTLFKr8NqcJAA==",
838 | "dev": true,
839 | "optional": true
840 | },
841 | "esbuild-windows-32": {
842 | "version": "0.14.34",
843 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.34.tgz",
844 | "integrity": "sha512-EFhpXyHEcnqWYe2rAHFd8dRw8wkrd9U+9oqcyoEL84GbanAYjiiIjBZsnR8kl0sCQ5w6bLpk7vCEIA2VS32Vcg==",
845 | "dev": true,
846 | "optional": true
847 | },
848 | "esbuild-windows-64": {
849 | "version": "0.14.34",
850 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.34.tgz",
851 | "integrity": "sha512-a8fbl8Ky7PxNEjf1aJmtxdDZj32/hC7S1OcA2ckEpCJRTjiKslI9vAdPpSjrKIWhws4Galpaawy0nB7fjHYf5Q==",
852 | "dev": true,
853 | "optional": true
854 | },
855 | "esbuild-windows-arm64": {
856 | "version": "0.14.34",
857 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.34.tgz",
858 | "integrity": "sha512-EYvmKbSa2B3sPnpC28UEu9jBK5atGV4BaVRE7CYGUci2Hlz4AvtV/LML+TcDMT6gBgibnN2gcltWclab3UutMg==",
859 | "dev": true,
860 | "optional": true
861 | },
862 | "escalade": {
863 | "version": "3.1.1",
864 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
865 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
866 | "dev": true
867 | },
868 | "escape-string-regexp": {
869 | "version": "1.0.5",
870 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
871 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
872 | },
873 | "estree-walker": {
874 | "version": "0.6.1",
875 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
876 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
877 | "dev": true
878 | },
879 | "fast-glob": {
880 | "version": "3.2.11",
881 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
882 | "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
883 | "dev": true,
884 | "requires": {
885 | "@nodelib/fs.stat": "^2.0.2",
886 | "@nodelib/fs.walk": "^1.2.3",
887 | "glob-parent": "^5.1.2",
888 | "merge2": "^1.3.0",
889 | "micromatch": "^4.0.4"
890 | },
891 | "dependencies": {
892 | "glob-parent": {
893 | "version": "5.1.2",
894 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
895 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
896 | "dev": true,
897 | "requires": {
898 | "is-glob": "^4.0.1"
899 | }
900 | }
901 | }
902 | },
903 | "fastq": {
904 | "version": "1.13.0",
905 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
906 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
907 | "dev": true,
908 | "requires": {
909 | "reusify": "^1.0.4"
910 | }
911 | },
912 | "fill-range": {
913 | "version": "7.0.1",
914 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
915 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
916 | "dev": true,
917 | "requires": {
918 | "to-regex-range": "^5.0.1"
919 | }
920 | },
921 | "fraction.js": {
922 | "version": "4.2.0",
923 | "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
924 | "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
925 | "dev": true
926 | },
927 | "fsevents": {
928 | "version": "2.3.2",
929 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
930 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
931 | "dev": true,
932 | "optional": true
933 | },
934 | "function-bind": {
935 | "version": "1.1.1",
936 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
937 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
938 | "dev": true
939 | },
940 | "gensync": {
941 | "version": "1.0.0-beta.2",
942 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
943 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
944 | "dev": true
945 | },
946 | "glob-parent": {
947 | "version": "6.0.2",
948 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
949 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
950 | "dev": true,
951 | "requires": {
952 | "is-glob": "^4.0.3"
953 | }
954 | },
955 | "globals": {
956 | "version": "11.12.0",
957 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
958 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
959 | },
960 | "has": {
961 | "version": "1.0.3",
962 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
963 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
964 | "dev": true,
965 | "requires": {
966 | "function-bind": "^1.1.1"
967 | }
968 | },
969 | "has-flag": {
970 | "version": "3.0.0",
971 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
972 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
973 | },
974 | "html-entities": {
975 | "version": "2.3.2",
976 | "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz",
977 | "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==",
978 | "dev": true
979 | },
980 | "ieee754": {
981 | "version": "1.2.1",
982 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
983 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
984 | },
985 | "import-fresh": {
986 | "version": "3.3.0",
987 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
988 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
989 | "dev": true,
990 | "requires": {
991 | "parent-module": "^1.0.0",
992 | "resolve-from": "^4.0.0"
993 | }
994 | },
995 | "is-arrayish": {
996 | "version": "0.2.1",
997 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
998 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
999 | "dev": true
1000 | },
1001 | "is-binary-path": {
1002 | "version": "2.1.0",
1003 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1004 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1005 | "dev": true,
1006 | "requires": {
1007 | "binary-extensions": "^2.0.0"
1008 | }
1009 | },
1010 | "is-core-module": {
1011 | "version": "2.8.1",
1012 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
1013 | "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
1014 | "dev": true,
1015 | "requires": {
1016 | "has": "^1.0.3"
1017 | }
1018 | },
1019 | "is-extglob": {
1020 | "version": "2.1.1",
1021 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1022 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1023 | "dev": true
1024 | },
1025 | "is-glob": {
1026 | "version": "4.0.3",
1027 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1028 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1029 | "dev": true,
1030 | "requires": {
1031 | "is-extglob": "^2.1.1"
1032 | }
1033 | },
1034 | "is-number": {
1035 | "version": "7.0.0",
1036 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1037 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1038 | "dev": true
1039 | },
1040 | "is-what": {
1041 | "version": "4.1.7",
1042 | "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.7.tgz",
1043 | "integrity": "sha512-DBVOQNiPKnGMxRMLIYSwERAS5MVY1B7xYiGnpgctsOFvVDz9f9PFXXxMcTOHuoqYp4NK9qFYQaIC1NRRxLMpBQ==",
1044 | "dev": true
1045 | },
1046 | "jq-web": {
1047 | "version": "0.5.1",
1048 | "resolved": "https://registry.npmjs.org/jq-web/-/jq-web-0.5.1.tgz",
1049 | "integrity": "sha512-3Fa3E6g3U1O1j46ljy0EM10yRr4txzILga8J7bqOG8F89gZ6Lilz82WG9z6TItWpYEO0YGa4W8yFGj+NMM1xqQ=="
1050 | },
1051 | "js-tokens": {
1052 | "version": "4.0.0",
1053 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1054 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
1055 | },
1056 | "jsesc": {
1057 | "version": "2.5.2",
1058 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
1059 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
1060 | },
1061 | "json-parse-even-better-errors": {
1062 | "version": "2.3.1",
1063 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
1064 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
1065 | "dev": true
1066 | },
1067 | "json5": {
1068 | "version": "2.2.1",
1069 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
1070 | "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
1071 | "dev": true
1072 | },
1073 | "lilconfig": {
1074 | "version": "2.0.5",
1075 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz",
1076 | "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==",
1077 | "dev": true
1078 | },
1079 | "lines-and-columns": {
1080 | "version": "1.2.4",
1081 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
1082 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
1083 | "dev": true
1084 | },
1085 | "magic-string": {
1086 | "version": "0.25.9",
1087 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
1088 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
1089 | "dev": true,
1090 | "requires": {
1091 | "sourcemap-codec": "^1.4.8"
1092 | }
1093 | },
1094 | "merge-anything": {
1095 | "version": "5.0.2",
1096 | "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-5.0.2.tgz",
1097 | "integrity": "sha512-POPQBWkBC0vxdgzRJ2Mkj4+2NTKbvkHo93ih+jGDhNMLzIw+rYKjO7949hOQM2X7DxMHH1uoUkwWFLIzImw7gA==",
1098 | "dev": true,
1099 | "requires": {
1100 | "is-what": "^4.1.6",
1101 | "ts-toolbelt": "^9.6.0"
1102 | }
1103 | },
1104 | "merge2": {
1105 | "version": "1.4.1",
1106 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
1107 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
1108 | "dev": true
1109 | },
1110 | "micromatch": {
1111 | "version": "4.0.5",
1112 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
1113 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
1114 | "dev": true,
1115 | "requires": {
1116 | "braces": "^3.0.2",
1117 | "picomatch": "^2.3.1"
1118 | }
1119 | },
1120 | "minimist": {
1121 | "version": "1.2.6",
1122 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
1123 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
1124 | "dev": true
1125 | },
1126 | "ms": {
1127 | "version": "2.1.2",
1128 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1129 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1130 | },
1131 | "nanoid": {
1132 | "version": "3.3.2",
1133 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz",
1134 | "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==",
1135 | "dev": true
1136 | },
1137 | "node-releases": {
1138 | "version": "2.0.2",
1139 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz",
1140 | "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==",
1141 | "dev": true
1142 | },
1143 | "normalize-path": {
1144 | "version": "3.0.0",
1145 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1146 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1147 | "dev": true
1148 | },
1149 | "normalize-range": {
1150 | "version": "0.1.2",
1151 | "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
1152 | "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
1153 | "dev": true
1154 | },
1155 | "object-hash": {
1156 | "version": "2.2.0",
1157 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz",
1158 | "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==",
1159 | "dev": true
1160 | },
1161 | "parent-module": {
1162 | "version": "1.0.1",
1163 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
1164 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
1165 | "dev": true,
1166 | "requires": {
1167 | "callsites": "^3.0.0"
1168 | }
1169 | },
1170 | "parse-json": {
1171 | "version": "5.2.0",
1172 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
1173 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
1174 | "dev": true,
1175 | "requires": {
1176 | "@babel/code-frame": "^7.0.0",
1177 | "error-ex": "^1.3.1",
1178 | "json-parse-even-better-errors": "^2.3.0",
1179 | "lines-and-columns": "^1.1.6"
1180 | }
1181 | },
1182 | "path-parse": {
1183 | "version": "1.0.7",
1184 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1185 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1186 | "dev": true
1187 | },
1188 | "path-type": {
1189 | "version": "4.0.0",
1190 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
1191 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
1192 | "dev": true
1193 | },
1194 | "picocolors": {
1195 | "version": "1.0.0",
1196 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1197 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
1198 | "dev": true
1199 | },
1200 | "picomatch": {
1201 | "version": "2.3.1",
1202 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1203 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1204 | "dev": true
1205 | },
1206 | "postcss": {
1207 | "version": "8.4.12",
1208 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz",
1209 | "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==",
1210 | "dev": true,
1211 | "requires": {
1212 | "nanoid": "^3.3.1",
1213 | "picocolors": "^1.0.0",
1214 | "source-map-js": "^1.0.2"
1215 | }
1216 | },
1217 | "postcss-js": {
1218 | "version": "4.0.0",
1219 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
1220 | "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==",
1221 | "dev": true,
1222 | "requires": {
1223 | "camelcase-css": "^2.0.1"
1224 | }
1225 | },
1226 | "postcss-load-config": {
1227 | "version": "3.1.4",
1228 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
1229 | "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
1230 | "dev": true,
1231 | "requires": {
1232 | "lilconfig": "^2.0.5",
1233 | "yaml": "^1.10.2"
1234 | }
1235 | },
1236 | "postcss-nested": {
1237 | "version": "5.0.6",
1238 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz",
1239 | "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==",
1240 | "dev": true,
1241 | "requires": {
1242 | "postcss-selector-parser": "^6.0.6"
1243 | }
1244 | },
1245 | "postcss-selector-parser": {
1246 | "version": "6.0.10",
1247 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
1248 | "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
1249 | "dev": true,
1250 | "requires": {
1251 | "cssesc": "^3.0.0",
1252 | "util-deprecate": "^1.0.2"
1253 | }
1254 | },
1255 | "postcss-value-parser": {
1256 | "version": "4.2.0",
1257 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
1258 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
1259 | "dev": true
1260 | },
1261 | "queue-microtask": {
1262 | "version": "1.2.3",
1263 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
1264 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
1265 | "dev": true
1266 | },
1267 | "quick-lru": {
1268 | "version": "5.1.1",
1269 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
1270 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
1271 | "dev": true
1272 | },
1273 | "readdirp": {
1274 | "version": "3.6.0",
1275 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1276 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1277 | "dev": true,
1278 | "requires": {
1279 | "picomatch": "^2.2.1"
1280 | }
1281 | },
1282 | "resolve": {
1283 | "version": "1.22.0",
1284 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
1285 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
1286 | "dev": true,
1287 | "requires": {
1288 | "is-core-module": "^2.8.1",
1289 | "path-parse": "^1.0.7",
1290 | "supports-preserve-symlinks-flag": "^1.0.0"
1291 | }
1292 | },
1293 | "resolve-from": {
1294 | "version": "4.0.0",
1295 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
1296 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
1297 | "dev": true
1298 | },
1299 | "reusify": {
1300 | "version": "1.0.4",
1301 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
1302 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
1303 | "dev": true
1304 | },
1305 | "rollup": {
1306 | "version": "2.70.1",
1307 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz",
1308 | "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==",
1309 | "dev": true,
1310 | "requires": {
1311 | "fsevents": "~2.3.2"
1312 | }
1313 | },
1314 | "rollup-plugin-inject": {
1315 | "version": "3.0.2",
1316 | "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz",
1317 | "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==",
1318 | "dev": true,
1319 | "requires": {
1320 | "estree-walker": "^0.6.1",
1321 | "magic-string": "^0.25.3",
1322 | "rollup-pluginutils": "^2.8.1"
1323 | }
1324 | },
1325 | "rollup-plugin-node-polyfills": {
1326 | "version": "0.2.1",
1327 | "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz",
1328 | "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==",
1329 | "dev": true,
1330 | "requires": {
1331 | "rollup-plugin-inject": "^3.0.0"
1332 | }
1333 | },
1334 | "rollup-pluginutils": {
1335 | "version": "2.8.2",
1336 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
1337 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
1338 | "dev": true,
1339 | "requires": {
1340 | "estree-walker": "^0.6.1"
1341 | }
1342 | },
1343 | "run-parallel": {
1344 | "version": "1.2.0",
1345 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
1346 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
1347 | "dev": true,
1348 | "requires": {
1349 | "queue-microtask": "^1.2.2"
1350 | }
1351 | },
1352 | "safe-buffer": {
1353 | "version": "5.1.2",
1354 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1355 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1356 | "dev": true
1357 | },
1358 | "semver": {
1359 | "version": "6.3.0",
1360 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1361 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
1362 | "dev": true
1363 | },
1364 | "solid-app-router": {
1365 | "version": "0.3.2",
1366 | "resolved": "https://registry.npmjs.org/solid-app-router/-/solid-app-router-0.3.2.tgz",
1367 | "integrity": "sha512-zh6Ui87xy23JUxrH0z1xAROJPpiuxa3JRx9jP2qqjr07q2EKQOjn9BrmTFvQd/azQWzLjSMU+hN2fy6kLh5Bdw=="
1368 | },
1369 | "solid-js": {
1370 | "version": "1.3.14",
1371 | "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.3.14.tgz",
1372 | "integrity": "sha512-eSLm3DTTAWvFnPJT4/PuHC1TAGSNF/aFG+dyuVRPfPepT7wV2SXllA1gf9gr5kBpuloqFxzLcqXy6B9VLSgCkQ=="
1373 | },
1374 | "solid-meta": {
1375 | "version": "0.27.3",
1376 | "resolved": "https://registry.npmjs.org/solid-meta/-/solid-meta-0.27.3.tgz",
1377 | "integrity": "sha512-XaVv0EPkoPvufzUOIMn4yOzZFnJvQPVBlpZFLc9zTFTUnb+cq/zuoWr0Sa0fEntodfVPe5j6NfvXwGE6pHQo+w=="
1378 | },
1379 | "solid-refresh": {
1380 | "version": "0.4.0",
1381 | "resolved": "https://registry.npmjs.org/solid-refresh/-/solid-refresh-0.4.0.tgz",
1382 | "integrity": "sha512-5XCUz845n/sHPzKK2i2G2EeV61tAmzv6SqzqhXcPaYhrgzVy7nKTQaBpKK8InKrriq9Z2JFF/mguIU00t/73xw==",
1383 | "dev": true,
1384 | "requires": {
1385 | "@babel/generator": "^7.16.0",
1386 | "@babel/helper-module-imports": "^7.16.0",
1387 | "@babel/types": "^7.16.0"
1388 | }
1389 | },
1390 | "source-map": {
1391 | "version": "0.5.7",
1392 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
1393 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
1394 | },
1395 | "source-map-js": {
1396 | "version": "1.0.2",
1397 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
1398 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
1399 | "dev": true
1400 | },
1401 | "sourcemap-codec": {
1402 | "version": "1.4.8",
1403 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
1404 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
1405 | "dev": true
1406 | },
1407 | "supports-color": {
1408 | "version": "5.5.0",
1409 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1410 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1411 | "requires": {
1412 | "has-flag": "^3.0.0"
1413 | }
1414 | },
1415 | "supports-preserve-symlinks-flag": {
1416 | "version": "1.0.0",
1417 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1418 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1419 | "dev": true
1420 | },
1421 | "tailwindcss": {
1422 | "version": "3.0.23",
1423 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.23.tgz",
1424 | "integrity": "sha512-+OZOV9ubyQ6oI2BXEhzw4HrqvgcARY38xv3zKcjnWtMIZstEsXdI9xftd1iB7+RbOnj2HOEzkA0OyB5BaSxPQA==",
1425 | "dev": true,
1426 | "requires": {
1427 | "arg": "^5.0.1",
1428 | "chalk": "^4.1.2",
1429 | "chokidar": "^3.5.3",
1430 | "color-name": "^1.1.4",
1431 | "cosmiconfig": "^7.0.1",
1432 | "detective": "^5.2.0",
1433 | "didyoumean": "^1.2.2",
1434 | "dlv": "^1.1.3",
1435 | "fast-glob": "^3.2.11",
1436 | "glob-parent": "^6.0.2",
1437 | "is-glob": "^4.0.3",
1438 | "normalize-path": "^3.0.0",
1439 | "object-hash": "^2.2.0",
1440 | "postcss": "^8.4.6",
1441 | "postcss-js": "^4.0.0",
1442 | "postcss-load-config": "^3.1.0",
1443 | "postcss-nested": "5.0.6",
1444 | "postcss-selector-parser": "^6.0.9",
1445 | "postcss-value-parser": "^4.2.0",
1446 | "quick-lru": "^5.1.1",
1447 | "resolve": "^1.22.0"
1448 | },
1449 | "dependencies": {
1450 | "ansi-styles": {
1451 | "version": "4.3.0",
1452 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1453 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1454 | "dev": true,
1455 | "requires": {
1456 | "color-convert": "^2.0.1"
1457 | }
1458 | },
1459 | "chalk": {
1460 | "version": "4.1.2",
1461 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
1462 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
1463 | "dev": true,
1464 | "requires": {
1465 | "ansi-styles": "^4.1.0",
1466 | "supports-color": "^7.1.0"
1467 | }
1468 | },
1469 | "color-convert": {
1470 | "version": "2.0.1",
1471 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1472 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1473 | "dev": true,
1474 | "requires": {
1475 | "color-name": "~1.1.4"
1476 | }
1477 | },
1478 | "color-name": {
1479 | "version": "1.1.4",
1480 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1481 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1482 | "dev": true
1483 | },
1484 | "has-flag": {
1485 | "version": "4.0.0",
1486 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1487 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1488 | "dev": true
1489 | },
1490 | "supports-color": {
1491 | "version": "7.2.0",
1492 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1493 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1494 | "dev": true,
1495 | "requires": {
1496 | "has-flag": "^4.0.0"
1497 | }
1498 | }
1499 | }
1500 | },
1501 | "to-fast-properties": {
1502 | "version": "2.0.0",
1503 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
1504 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
1505 | },
1506 | "to-regex-range": {
1507 | "version": "5.0.1",
1508 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1509 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1510 | "dev": true,
1511 | "requires": {
1512 | "is-number": "^7.0.0"
1513 | }
1514 | },
1515 | "ts-toolbelt": {
1516 | "version": "9.6.0",
1517 | "resolved": "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz",
1518 | "integrity": "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==",
1519 | "dev": true
1520 | },
1521 | "typescript": {
1522 | "version": "4.6.3",
1523 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz",
1524 | "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==",
1525 | "dev": true
1526 | },
1527 | "util-deprecate": {
1528 | "version": "1.0.2",
1529 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1530 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
1531 | "dev": true
1532 | },
1533 | "vite": {
1534 | "version": "2.9.1",
1535 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.1.tgz",
1536 | "integrity": "sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==",
1537 | "dev": true,
1538 | "requires": {
1539 | "esbuild": "^0.14.27",
1540 | "fsevents": "~2.3.2",
1541 | "postcss": "^8.4.12",
1542 | "resolve": "^1.22.0",
1543 | "rollup": "^2.59.0"
1544 | }
1545 | },
1546 | "vite-plugin-solid": {
1547 | "version": "2.2.6",
1548 | "resolved": "https://registry.npmjs.org/vite-plugin-solid/-/vite-plugin-solid-2.2.6.tgz",
1549 | "integrity": "sha512-J1RnmqkZZJSNYDW7vZj0giKKHLWGr9tS/gxR70WDSTYfhyXrgukbZdIfSEFbtrsg8ZiQ2t2zXcvkWoeefenqKw==",
1550 | "dev": true,
1551 | "requires": {
1552 | "@babel/core": "^7.16.12",
1553 | "@babel/preset-typescript": "^7.16.7",
1554 | "babel-preset-solid": "^1.3.0",
1555 | "merge-anything": "^5.0.2",
1556 | "solid-js": "^1.3.3",
1557 | "solid-refresh": "^0.4.0",
1558 | "vite": "^2.8.0"
1559 | }
1560 | },
1561 | "xtend": {
1562 | "version": "4.0.2",
1563 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
1564 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
1565 | "dev": true
1566 | },
1567 | "yaml": {
1568 | "version": "1.10.2",
1569 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
1570 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
1571 | "dev": true
1572 | }
1573 | }
1574 | }
1575 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react2solid",
3 | "version": "0.0.1",
4 | "description": "A set of utilities for the React to Solid conversion",
5 | "info": "react2solid has sub projects/modules: 1. Converter web UI, 2. Builder web UI, 3. CLI for batch conversion, 4. Migration guide, 5. Language agnostic transformation rules with test cases.",
6 | "homepage": "https://github.com/rrjanbiah/react2solid",
7 | "contributors": [
8 | {
9 | "name": "R. Rajesh Jeba Anbiah",
10 | "email": "rrjanbiah-at-Y!com",
11 | "url": "https://twitter.com/rrjanbiah"
12 | }
13 | ],
14 | "keywords": [
15 | "solidhack",
16 | "best_ecosystem",
17 | "solidjs",
18 | "react",
19 | "reactjs",
20 | "converter",
21 | "transpiler",
22 | "babel",
23 | "code-converter"
24 | ],
25 | "scripts": {
26 | "dev": "vite",
27 | "build": "vite build",
28 | "serve": "vite preview"
29 | },
30 | "license": "MIT",
31 | "devDependencies": {
32 | "@esbuild-plugins/node-modules-polyfill": "^0.1.4",
33 | "@types/babel__generator": "^7.6.4",
34 | "@types/babel__traverse": "^7.14.2",
35 | "autoprefixer": "^10.4.4",
36 | "postcss": "^8.4.12",
37 | "tailwindcss": "^3.0.23",
38 | "typescript": "^4.6.3",
39 | "vite": "^2.8.6",
40 | "vite-plugin-solid": "^2.2.6"
41 | },
42 | "dependencies": {
43 | "@babel/generator": "^7.17.9",
44 | "@babel/parser": "^7.17.9",
45 | "@babel/traverse": "^7.17.9",
46 | "@babel/types": "^7.17.0",
47 | "@esbuild-plugins/node-globals-polyfill": "^0.1.1",
48 | "buffer": "^6.0.3",
49 | "jq-web": "^0.5.1",
50 | "solid-app-router": "^0.3.2",
51 | "solid-js": "^1.3.13",
52 | "solid-meta": "^0.27.3"
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.3
2 |
3 | specifiers:
4 | solid-js: ^1.3.13
5 | typescript: ^4.6.3
6 | vite: ^2.8.6
7 | vite-plugin-solid: ^2.2.6
8 | vite-plugin-windicss: ^1.8.3
9 |
10 | dependencies:
11 | solid-js: 1.3.13
12 |
13 | devDependencies:
14 | typescript: 4.6.3
15 | vite: 2.8.6
16 | vite-plugin-solid: 2.2.6
17 | vite-plugin-windicss: 1.8.3_vite@2.8.6
18 |
19 | packages:
20 |
21 | /@ampproject/remapping/2.1.2:
22 | resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==}
23 | engines: {node: '>=6.0.0'}
24 | dependencies:
25 | '@jridgewell/trace-mapping': 0.3.4
26 | dev: true
27 |
28 | /@antfu/utils/0.5.0:
29 | resolution: {integrity: sha512-MrAQ/MrPSxbh1bBrmwJjORfJymw4IqSHFBXqvxaga3ZdDM+/zokYF8DjyJpSjY2QmpmgQrajDUBJOWrYeARfzA==}
30 | dev: true
31 |
32 | /@babel/code-frame/7.16.7:
33 | resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==}
34 | engines: {node: '>=6.9.0'}
35 | dependencies:
36 | '@babel/highlight': 7.16.10
37 | dev: true
38 |
39 | /@babel/compat-data/7.17.7:
40 | resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==}
41 | engines: {node: '>=6.9.0'}
42 | dev: true
43 |
44 | /@babel/core/7.17.8:
45 | resolution: {integrity: sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==}
46 | engines: {node: '>=6.9.0'}
47 | dependencies:
48 | '@ampproject/remapping': 2.1.2
49 | '@babel/code-frame': 7.16.7
50 | '@babel/generator': 7.17.7
51 | '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.17.8
52 | '@babel/helper-module-transforms': 7.17.7
53 | '@babel/helpers': 7.17.8
54 | '@babel/parser': 7.17.8
55 | '@babel/template': 7.16.7
56 | '@babel/traverse': 7.17.3
57 | '@babel/types': 7.17.0
58 | convert-source-map: 1.8.0
59 | debug: 4.3.4
60 | gensync: 1.0.0-beta.2
61 | json5: 2.2.1
62 | semver: 6.3.0
63 | transitivePeerDependencies:
64 | - supports-color
65 | dev: true
66 |
67 | /@babel/generator/7.17.7:
68 | resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==}
69 | engines: {node: '>=6.9.0'}
70 | dependencies:
71 | '@babel/types': 7.17.0
72 | jsesc: 2.5.2
73 | source-map: 0.5.7
74 | dev: true
75 |
76 | /@babel/helper-annotate-as-pure/7.16.7:
77 | resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==}
78 | engines: {node: '>=6.9.0'}
79 | dependencies:
80 | '@babel/types': 7.17.0
81 | dev: true
82 |
83 | /@babel/helper-compilation-targets/7.17.7_@babel+core@7.17.8:
84 | resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==}
85 | engines: {node: '>=6.9.0'}
86 | peerDependencies:
87 | '@babel/core': ^7.0.0
88 | dependencies:
89 | '@babel/compat-data': 7.17.7
90 | '@babel/core': 7.17.8
91 | '@babel/helper-validator-option': 7.16.7
92 | browserslist: 4.20.2
93 | semver: 6.3.0
94 | dev: true
95 |
96 | /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.17.8:
97 | resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==}
98 | engines: {node: '>=6.9.0'}
99 | peerDependencies:
100 | '@babel/core': ^7.0.0
101 | dependencies:
102 | '@babel/core': 7.17.8
103 | '@babel/helper-annotate-as-pure': 7.16.7
104 | '@babel/helper-environment-visitor': 7.16.7
105 | '@babel/helper-function-name': 7.16.7
106 | '@babel/helper-member-expression-to-functions': 7.17.7
107 | '@babel/helper-optimise-call-expression': 7.16.7
108 | '@babel/helper-replace-supers': 7.16.7
109 | '@babel/helper-split-export-declaration': 7.16.7
110 | transitivePeerDependencies:
111 | - supports-color
112 | dev: true
113 |
114 | /@babel/helper-environment-visitor/7.16.7:
115 | resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==}
116 | engines: {node: '>=6.9.0'}
117 | dependencies:
118 | '@babel/types': 7.17.0
119 | dev: true
120 |
121 | /@babel/helper-function-name/7.16.7:
122 | resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==}
123 | engines: {node: '>=6.9.0'}
124 | dependencies:
125 | '@babel/helper-get-function-arity': 7.16.7
126 | '@babel/template': 7.16.7
127 | '@babel/types': 7.17.0
128 | dev: true
129 |
130 | /@babel/helper-get-function-arity/7.16.7:
131 | resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==}
132 | engines: {node: '>=6.9.0'}
133 | dependencies:
134 | '@babel/types': 7.17.0
135 | dev: true
136 |
137 | /@babel/helper-hoist-variables/7.16.7:
138 | resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==}
139 | engines: {node: '>=6.9.0'}
140 | dependencies:
141 | '@babel/types': 7.17.0
142 | dev: true
143 |
144 | /@babel/helper-member-expression-to-functions/7.17.7:
145 | resolution: {integrity: sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==}
146 | engines: {node: '>=6.9.0'}
147 | dependencies:
148 | '@babel/types': 7.17.0
149 | dev: true
150 |
151 | /@babel/helper-module-imports/7.16.0:
152 | resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==}
153 | engines: {node: '>=6.9.0'}
154 | dependencies:
155 | '@babel/types': 7.17.0
156 | dev: true
157 |
158 | /@babel/helper-module-imports/7.16.7:
159 | resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==}
160 | engines: {node: '>=6.9.0'}
161 | dependencies:
162 | '@babel/types': 7.17.0
163 | dev: true
164 |
165 | /@babel/helper-module-transforms/7.17.7:
166 | resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==}
167 | engines: {node: '>=6.9.0'}
168 | dependencies:
169 | '@babel/helper-environment-visitor': 7.16.7
170 | '@babel/helper-module-imports': 7.16.7
171 | '@babel/helper-simple-access': 7.17.7
172 | '@babel/helper-split-export-declaration': 7.16.7
173 | '@babel/helper-validator-identifier': 7.16.7
174 | '@babel/template': 7.16.7
175 | '@babel/traverse': 7.17.3
176 | '@babel/types': 7.17.0
177 | transitivePeerDependencies:
178 | - supports-color
179 | dev: true
180 |
181 | /@babel/helper-optimise-call-expression/7.16.7:
182 | resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==}
183 | engines: {node: '>=6.9.0'}
184 | dependencies:
185 | '@babel/types': 7.17.0
186 | dev: true
187 |
188 | /@babel/helper-plugin-utils/7.16.7:
189 | resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==}
190 | engines: {node: '>=6.9.0'}
191 | dev: true
192 |
193 | /@babel/helper-replace-supers/7.16.7:
194 | resolution: {integrity: sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==}
195 | engines: {node: '>=6.9.0'}
196 | dependencies:
197 | '@babel/helper-environment-visitor': 7.16.7
198 | '@babel/helper-member-expression-to-functions': 7.17.7
199 | '@babel/helper-optimise-call-expression': 7.16.7
200 | '@babel/traverse': 7.17.3
201 | '@babel/types': 7.17.0
202 | transitivePeerDependencies:
203 | - supports-color
204 | dev: true
205 |
206 | /@babel/helper-simple-access/7.17.7:
207 | resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==}
208 | engines: {node: '>=6.9.0'}
209 | dependencies:
210 | '@babel/types': 7.17.0
211 | dev: true
212 |
213 | /@babel/helper-split-export-declaration/7.16.7:
214 | resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==}
215 | engines: {node: '>=6.9.0'}
216 | dependencies:
217 | '@babel/types': 7.17.0
218 | dev: true
219 |
220 | /@babel/helper-validator-identifier/7.16.7:
221 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
222 | engines: {node: '>=6.9.0'}
223 | dev: true
224 |
225 | /@babel/helper-validator-option/7.16.7:
226 | resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==}
227 | engines: {node: '>=6.9.0'}
228 | dev: true
229 |
230 | /@babel/helpers/7.17.8:
231 | resolution: {integrity: sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==}
232 | engines: {node: '>=6.9.0'}
233 | dependencies:
234 | '@babel/template': 7.16.7
235 | '@babel/traverse': 7.17.3
236 | '@babel/types': 7.17.0
237 | transitivePeerDependencies:
238 | - supports-color
239 | dev: true
240 |
241 | /@babel/highlight/7.16.10:
242 | resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==}
243 | engines: {node: '>=6.9.0'}
244 | dependencies:
245 | '@babel/helper-validator-identifier': 7.16.7
246 | chalk: 2.4.2
247 | js-tokens: 4.0.0
248 | dev: true
249 |
250 | /@babel/parser/7.17.8:
251 | resolution: {integrity: sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==}
252 | engines: {node: '>=6.0.0'}
253 | hasBin: true
254 | dev: true
255 |
256 | /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.8:
257 | resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==}
258 | engines: {node: '>=6.9.0'}
259 | peerDependencies:
260 | '@babel/core': ^7.0.0-0
261 | dependencies:
262 | '@babel/core': 7.17.8
263 | '@babel/helper-plugin-utils': 7.16.7
264 | dev: true
265 |
266 | /@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.17.8:
267 | resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==}
268 | engines: {node: '>=6.9.0'}
269 | peerDependencies:
270 | '@babel/core': ^7.0.0-0
271 | dependencies:
272 | '@babel/core': 7.17.8
273 | '@babel/helper-plugin-utils': 7.16.7
274 | dev: true
275 |
276 | /@babel/plugin-transform-typescript/7.16.8_@babel+core@7.17.8:
277 | resolution: {integrity: sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==}
278 | engines: {node: '>=6.9.0'}
279 | peerDependencies:
280 | '@babel/core': ^7.0.0-0
281 | dependencies:
282 | '@babel/core': 7.17.8
283 | '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.8
284 | '@babel/helper-plugin-utils': 7.16.7
285 | '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.8
286 | transitivePeerDependencies:
287 | - supports-color
288 | dev: true
289 |
290 | /@babel/preset-typescript/7.16.7_@babel+core@7.17.8:
291 | resolution: {integrity: sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==}
292 | engines: {node: '>=6.9.0'}
293 | peerDependencies:
294 | '@babel/core': ^7.0.0-0
295 | dependencies:
296 | '@babel/core': 7.17.8
297 | '@babel/helper-plugin-utils': 7.16.7
298 | '@babel/helper-validator-option': 7.16.7
299 | '@babel/plugin-transform-typescript': 7.16.8_@babel+core@7.17.8
300 | transitivePeerDependencies:
301 | - supports-color
302 | dev: true
303 |
304 | /@babel/template/7.16.7:
305 | resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==}
306 | engines: {node: '>=6.9.0'}
307 | dependencies:
308 | '@babel/code-frame': 7.16.7
309 | '@babel/parser': 7.17.8
310 | '@babel/types': 7.17.0
311 | dev: true
312 |
313 | /@babel/traverse/7.17.3:
314 | resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==}
315 | engines: {node: '>=6.9.0'}
316 | dependencies:
317 | '@babel/code-frame': 7.16.7
318 | '@babel/generator': 7.17.7
319 | '@babel/helper-environment-visitor': 7.16.7
320 | '@babel/helper-function-name': 7.16.7
321 | '@babel/helper-hoist-variables': 7.16.7
322 | '@babel/helper-split-export-declaration': 7.16.7
323 | '@babel/parser': 7.17.8
324 | '@babel/types': 7.17.0
325 | debug: 4.3.4
326 | globals: 11.12.0
327 | transitivePeerDependencies:
328 | - supports-color
329 | dev: true
330 |
331 | /@babel/types/7.17.0:
332 | resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==}
333 | engines: {node: '>=6.9.0'}
334 | dependencies:
335 | '@babel/helper-validator-identifier': 7.16.7
336 | to-fast-properties: 2.0.0
337 | dev: true
338 |
339 | /@jridgewell/resolve-uri/3.0.5:
340 | resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==}
341 | engines: {node: '>=6.0.0'}
342 | dev: true
343 |
344 | /@jridgewell/sourcemap-codec/1.4.11:
345 | resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==}
346 | dev: true
347 |
348 | /@jridgewell/trace-mapping/0.3.4:
349 | resolution: {integrity: sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==}
350 | dependencies:
351 | '@jridgewell/resolve-uri': 3.0.5
352 | '@jridgewell/sourcemap-codec': 1.4.11
353 | dev: true
354 |
355 | /@nodelib/fs.scandir/2.1.5:
356 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
357 | engines: {node: '>= 8'}
358 | dependencies:
359 | '@nodelib/fs.stat': 2.0.5
360 | run-parallel: 1.2.0
361 | dev: true
362 |
363 | /@nodelib/fs.stat/2.0.5:
364 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
365 | engines: {node: '>= 8'}
366 | dev: true
367 |
368 | /@nodelib/fs.walk/1.2.8:
369 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
370 | engines: {node: '>= 8'}
371 | dependencies:
372 | '@nodelib/fs.scandir': 2.1.5
373 | fastq: 1.13.0
374 | dev: true
375 |
376 | /@windicss/config/1.8.3:
377 | resolution: {integrity: sha512-1fvfZhRD7WfV/Xh6uIAYKIdbQWrwEgSdkFlHiLPzMDS44KjwNZILDzLAz9Y2W5H2K4MLGgGMnzGS89ECyjc0Ww==}
378 | dependencies:
379 | debug: 4.3.4
380 | jiti: 1.13.0
381 | windicss: 3.5.1
382 | transitivePeerDependencies:
383 | - supports-color
384 | dev: true
385 |
386 | /@windicss/plugin-utils/1.8.3:
387 | resolution: {integrity: sha512-emlMeDt73uNV1ZofLTDogcxqL9aZ5uIRYkjeHlrWiaDozFbX6Jc+a6eRo9Ieaar3JUryl6AnecTPHAiFDl4IXg==}
388 | dependencies:
389 | '@antfu/utils': 0.5.0
390 | '@windicss/config': 1.8.3
391 | debug: 4.3.4
392 | fast-glob: 3.2.11
393 | magic-string: 0.25.9
394 | micromatch: 4.0.5
395 | windicss: 3.5.1
396 | transitivePeerDependencies:
397 | - supports-color
398 | dev: true
399 |
400 | /ansi-styles/3.2.1:
401 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
402 | engines: {node: '>=4'}
403 | dependencies:
404 | color-convert: 1.9.3
405 | dev: true
406 |
407 | /babel-plugin-jsx-dom-expressions/0.32.11_@babel+core@7.17.8:
408 | resolution: {integrity: sha512-hytqY33SGW6B3obSLt8K5X510UwtNkTktCCWgwba+QOOV0CowDFiqeL+0ru895FLacFaYANHFTu1y76dg3GVtw==}
409 | dependencies:
410 | '@babel/helper-module-imports': 7.16.0
411 | '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.8
412 | '@babel/types': 7.17.0
413 | html-entities: 2.3.2
414 | transitivePeerDependencies:
415 | - '@babel/core'
416 | dev: true
417 |
418 | /babel-preset-solid/1.3.13_@babel+core@7.17.8:
419 | resolution: {integrity: sha512-MZnmsceI9yiHlwwFCSALTJhadk2eea/+2UP4ec4jkPZFR+XRKTLoIwRkrBh7uLtvHF+3lHGyUaXtZukOmmUwhA==}
420 | dependencies:
421 | babel-plugin-jsx-dom-expressions: 0.32.11_@babel+core@7.17.8
422 | transitivePeerDependencies:
423 | - '@babel/core'
424 | dev: true
425 |
426 | /braces/3.0.2:
427 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
428 | engines: {node: '>=8'}
429 | dependencies:
430 | fill-range: 7.0.1
431 | dev: true
432 |
433 | /browserslist/4.20.2:
434 | resolution: {integrity: sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==}
435 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
436 | hasBin: true
437 | dependencies:
438 | caniuse-lite: 1.0.30001320
439 | electron-to-chromium: 1.4.93
440 | escalade: 3.1.1
441 | node-releases: 2.0.2
442 | picocolors: 1.0.0
443 | dev: true
444 |
445 | /caniuse-lite/1.0.30001320:
446 | resolution: {integrity: sha512-MWPzG54AGdo3nWx7zHZTefseM5Y1ccM7hlQKHRqJkPozUaw3hNbBTMmLn16GG2FUzjR13Cr3NPfhIieX5PzXDA==}
447 | dev: true
448 |
449 | /chalk/2.4.2:
450 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
451 | engines: {node: '>=4'}
452 | dependencies:
453 | ansi-styles: 3.2.1
454 | escape-string-regexp: 1.0.5
455 | supports-color: 5.5.0
456 | dev: true
457 |
458 | /color-convert/1.9.3:
459 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
460 | dependencies:
461 | color-name: 1.1.3
462 | dev: true
463 |
464 | /color-name/1.1.3:
465 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=}
466 | dev: true
467 |
468 | /convert-source-map/1.8.0:
469 | resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==}
470 | dependencies:
471 | safe-buffer: 5.1.2
472 | dev: true
473 |
474 | /debug/4.3.4:
475 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
476 | engines: {node: '>=6.0'}
477 | peerDependencies:
478 | supports-color: '*'
479 | peerDependenciesMeta:
480 | supports-color:
481 | optional: true
482 | dependencies:
483 | ms: 2.1.2
484 | dev: true
485 |
486 | /electron-to-chromium/1.4.93:
487 | resolution: {integrity: sha512-ywq9Pc5Gwwpv7NG767CtoU8xF3aAUQJjH9//Wy3MBCg4w5JSLbJUq2L8IsCdzPMjvSgxuue9WcVaTOyyxCL0aQ==}
488 | dev: true
489 |
490 | /esbuild-android-64/0.14.27:
491 | resolution: {integrity: sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==}
492 | engines: {node: '>=12'}
493 | cpu: [x64]
494 | os: [android]
495 | requiresBuild: true
496 | dev: true
497 | optional: true
498 |
499 | /esbuild-android-arm64/0.14.27:
500 | resolution: {integrity: sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==}
501 | engines: {node: '>=12'}
502 | cpu: [arm64]
503 | os: [android]
504 | requiresBuild: true
505 | dev: true
506 | optional: true
507 |
508 | /esbuild-darwin-64/0.14.27:
509 | resolution: {integrity: sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==}
510 | engines: {node: '>=12'}
511 | cpu: [x64]
512 | os: [darwin]
513 | requiresBuild: true
514 | dev: true
515 | optional: true
516 |
517 | /esbuild-darwin-arm64/0.14.27:
518 | resolution: {integrity: sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==}
519 | engines: {node: '>=12'}
520 | cpu: [arm64]
521 | os: [darwin]
522 | requiresBuild: true
523 | dev: true
524 | optional: true
525 |
526 | /esbuild-freebsd-64/0.14.27:
527 | resolution: {integrity: sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==}
528 | engines: {node: '>=12'}
529 | cpu: [x64]
530 | os: [freebsd]
531 | requiresBuild: true
532 | dev: true
533 | optional: true
534 |
535 | /esbuild-freebsd-arm64/0.14.27:
536 | resolution: {integrity: sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==}
537 | engines: {node: '>=12'}
538 | cpu: [arm64]
539 | os: [freebsd]
540 | requiresBuild: true
541 | dev: true
542 | optional: true
543 |
544 | /esbuild-linux-32/0.14.27:
545 | resolution: {integrity: sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==}
546 | engines: {node: '>=12'}
547 | cpu: [ia32]
548 | os: [linux]
549 | requiresBuild: true
550 | dev: true
551 | optional: true
552 |
553 | /esbuild-linux-64/0.14.27:
554 | resolution: {integrity: sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==}
555 | engines: {node: '>=12'}
556 | cpu: [x64]
557 | os: [linux]
558 | requiresBuild: true
559 | dev: true
560 | optional: true
561 |
562 | /esbuild-linux-arm/0.14.27:
563 | resolution: {integrity: sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==}
564 | engines: {node: '>=12'}
565 | cpu: [arm]
566 | os: [linux]
567 | requiresBuild: true
568 | dev: true
569 | optional: true
570 |
571 | /esbuild-linux-arm64/0.14.27:
572 | resolution: {integrity: sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==}
573 | engines: {node: '>=12'}
574 | cpu: [arm64]
575 | os: [linux]
576 | requiresBuild: true
577 | dev: true
578 | optional: true
579 |
580 | /esbuild-linux-mips64le/0.14.27:
581 | resolution: {integrity: sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==}
582 | engines: {node: '>=12'}
583 | cpu: [mips64el]
584 | os: [linux]
585 | requiresBuild: true
586 | dev: true
587 | optional: true
588 |
589 | /esbuild-linux-ppc64le/0.14.27:
590 | resolution: {integrity: sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==}
591 | engines: {node: '>=12'}
592 | cpu: [ppc64]
593 | os: [linux]
594 | requiresBuild: true
595 | dev: true
596 | optional: true
597 |
598 | /esbuild-linux-riscv64/0.14.27:
599 | resolution: {integrity: sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==}
600 | engines: {node: '>=12'}
601 | cpu: [riscv64]
602 | os: [linux]
603 | requiresBuild: true
604 | dev: true
605 | optional: true
606 |
607 | /esbuild-linux-s390x/0.14.27:
608 | resolution: {integrity: sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==}
609 | engines: {node: '>=12'}
610 | cpu: [s390x]
611 | os: [linux]
612 | requiresBuild: true
613 | dev: true
614 | optional: true
615 |
616 | /esbuild-netbsd-64/0.14.27:
617 | resolution: {integrity: sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==}
618 | engines: {node: '>=12'}
619 | cpu: [x64]
620 | os: [netbsd]
621 | requiresBuild: true
622 | dev: true
623 | optional: true
624 |
625 | /esbuild-openbsd-64/0.14.27:
626 | resolution: {integrity: sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==}
627 | engines: {node: '>=12'}
628 | cpu: [x64]
629 | os: [openbsd]
630 | requiresBuild: true
631 | dev: true
632 | optional: true
633 |
634 | /esbuild-sunos-64/0.14.27:
635 | resolution: {integrity: sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==}
636 | engines: {node: '>=12'}
637 | cpu: [x64]
638 | os: [sunos]
639 | requiresBuild: true
640 | dev: true
641 | optional: true
642 |
643 | /esbuild-windows-32/0.14.27:
644 | resolution: {integrity: sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==}
645 | engines: {node: '>=12'}
646 | cpu: [ia32]
647 | os: [win32]
648 | requiresBuild: true
649 | dev: true
650 | optional: true
651 |
652 | /esbuild-windows-64/0.14.27:
653 | resolution: {integrity: sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==}
654 | engines: {node: '>=12'}
655 | cpu: [x64]
656 | os: [win32]
657 | requiresBuild: true
658 | dev: true
659 | optional: true
660 |
661 | /esbuild-windows-arm64/0.14.27:
662 | resolution: {integrity: sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==}
663 | engines: {node: '>=12'}
664 | cpu: [arm64]
665 | os: [win32]
666 | requiresBuild: true
667 | dev: true
668 | optional: true
669 |
670 | /esbuild/0.14.27:
671 | resolution: {integrity: sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==}
672 | engines: {node: '>=12'}
673 | hasBin: true
674 | requiresBuild: true
675 | optionalDependencies:
676 | esbuild-android-64: 0.14.27
677 | esbuild-android-arm64: 0.14.27
678 | esbuild-darwin-64: 0.14.27
679 | esbuild-darwin-arm64: 0.14.27
680 | esbuild-freebsd-64: 0.14.27
681 | esbuild-freebsd-arm64: 0.14.27
682 | esbuild-linux-32: 0.14.27
683 | esbuild-linux-64: 0.14.27
684 | esbuild-linux-arm: 0.14.27
685 | esbuild-linux-arm64: 0.14.27
686 | esbuild-linux-mips64le: 0.14.27
687 | esbuild-linux-ppc64le: 0.14.27
688 | esbuild-linux-riscv64: 0.14.27
689 | esbuild-linux-s390x: 0.14.27
690 | esbuild-netbsd-64: 0.14.27
691 | esbuild-openbsd-64: 0.14.27
692 | esbuild-sunos-64: 0.14.27
693 | esbuild-windows-32: 0.14.27
694 | esbuild-windows-64: 0.14.27
695 | esbuild-windows-arm64: 0.14.27
696 | dev: true
697 |
698 | /escalade/3.1.1:
699 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
700 | engines: {node: '>=6'}
701 | dev: true
702 |
703 | /escape-string-regexp/1.0.5:
704 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=}
705 | engines: {node: '>=0.8.0'}
706 | dev: true
707 |
708 | /fast-glob/3.2.11:
709 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==}
710 | engines: {node: '>=8.6.0'}
711 | dependencies:
712 | '@nodelib/fs.stat': 2.0.5
713 | '@nodelib/fs.walk': 1.2.8
714 | glob-parent: 5.1.2
715 | merge2: 1.4.1
716 | micromatch: 4.0.5
717 | dev: true
718 |
719 | /fastq/1.13.0:
720 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
721 | dependencies:
722 | reusify: 1.0.4
723 | dev: true
724 |
725 | /fill-range/7.0.1:
726 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
727 | engines: {node: '>=8'}
728 | dependencies:
729 | to-regex-range: 5.0.1
730 | dev: true
731 |
732 | /fsevents/2.3.2:
733 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
734 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
735 | os: [darwin]
736 | requiresBuild: true
737 | dev: true
738 | optional: true
739 |
740 | /function-bind/1.1.1:
741 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
742 | dev: true
743 |
744 | /gensync/1.0.0-beta.2:
745 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
746 | engines: {node: '>=6.9.0'}
747 | dev: true
748 |
749 | /glob-parent/5.1.2:
750 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
751 | engines: {node: '>= 6'}
752 | dependencies:
753 | is-glob: 4.0.3
754 | dev: true
755 |
756 | /globals/11.12.0:
757 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
758 | engines: {node: '>=4'}
759 | dev: true
760 |
761 | /has-flag/3.0.0:
762 | resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=}
763 | engines: {node: '>=4'}
764 | dev: true
765 |
766 | /has/1.0.3:
767 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
768 | engines: {node: '>= 0.4.0'}
769 | dependencies:
770 | function-bind: 1.1.1
771 | dev: true
772 |
773 | /html-entities/2.3.2:
774 | resolution: {integrity: sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==}
775 | dev: true
776 |
777 | /is-core-module/2.8.1:
778 | resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==}
779 | dependencies:
780 | has: 1.0.3
781 | dev: true
782 |
783 | /is-extglob/2.1.1:
784 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=}
785 | engines: {node: '>=0.10.0'}
786 | dev: true
787 |
788 | /is-glob/4.0.3:
789 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
790 | engines: {node: '>=0.10.0'}
791 | dependencies:
792 | is-extglob: 2.1.1
793 | dev: true
794 |
795 | /is-number/7.0.0:
796 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
797 | engines: {node: '>=0.12.0'}
798 | dev: true
799 |
800 | /is-what/4.1.7:
801 | resolution: {integrity: sha512-DBVOQNiPKnGMxRMLIYSwERAS5MVY1B7xYiGnpgctsOFvVDz9f9PFXXxMcTOHuoqYp4NK9qFYQaIC1NRRxLMpBQ==}
802 | engines: {node: '>=12.13'}
803 | dev: true
804 |
805 | /jiti/1.13.0:
806 | resolution: {integrity: sha512-/n9mNxZj/HDSrincJ6RP+L+yXbpnB8FybySBa+IjIaoH9FIxBbrbRT5XUbe8R7zuVM2AQqNMNDDqz0bzx3znOQ==}
807 | hasBin: true
808 | dev: true
809 |
810 | /js-tokens/4.0.0:
811 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
812 | dev: true
813 |
814 | /jsesc/2.5.2:
815 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
816 | engines: {node: '>=4'}
817 | hasBin: true
818 | dev: true
819 |
820 | /json5/2.2.1:
821 | resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==}
822 | engines: {node: '>=6'}
823 | hasBin: true
824 | dev: true
825 |
826 | /kolorist/1.5.1:
827 | resolution: {integrity: sha512-lxpCM3HTvquGxKGzHeknB/sUjuVoUElLlfYnXZT73K8geR9jQbroGlSCFBax9/0mpGoD3kzcMLnOlGQPJJNyqQ==}
828 | dev: true
829 |
830 | /magic-string/0.25.9:
831 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
832 | dependencies:
833 | sourcemap-codec: 1.4.8
834 | dev: true
835 |
836 | /merge-anything/5.0.2:
837 | resolution: {integrity: sha512-POPQBWkBC0vxdgzRJ2Mkj4+2NTKbvkHo93ih+jGDhNMLzIw+rYKjO7949hOQM2X7DxMHH1uoUkwWFLIzImw7gA==}
838 | engines: {node: '>=12.13'}
839 | dependencies:
840 | is-what: 4.1.7
841 | ts-toolbelt: 9.6.0
842 | dev: true
843 |
844 | /merge2/1.4.1:
845 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
846 | engines: {node: '>= 8'}
847 | dev: true
848 |
849 | /micromatch/4.0.5:
850 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
851 | engines: {node: '>=8.6'}
852 | dependencies:
853 | braces: 3.0.2
854 | picomatch: 2.3.1
855 | dev: true
856 |
857 | /ms/2.1.2:
858 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
859 | dev: true
860 |
861 | /nanoid/3.3.1:
862 | resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==}
863 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
864 | hasBin: true
865 | dev: true
866 |
867 | /node-releases/2.0.2:
868 | resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==}
869 | dev: true
870 |
871 | /path-parse/1.0.7:
872 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
873 | dev: true
874 |
875 | /picocolors/1.0.0:
876 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
877 | dev: true
878 |
879 | /picomatch/2.3.1:
880 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
881 | engines: {node: '>=8.6'}
882 | dev: true
883 |
884 | /postcss/8.4.12:
885 | resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==}
886 | engines: {node: ^10 || ^12 || >=14}
887 | dependencies:
888 | nanoid: 3.3.1
889 | picocolors: 1.0.0
890 | source-map-js: 1.0.2
891 | dev: true
892 |
893 | /queue-microtask/1.2.3:
894 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
895 | dev: true
896 |
897 | /resolve/1.22.0:
898 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
899 | hasBin: true
900 | dependencies:
901 | is-core-module: 2.8.1
902 | path-parse: 1.0.7
903 | supports-preserve-symlinks-flag: 1.0.0
904 | dev: true
905 |
906 | /reusify/1.0.4:
907 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
908 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
909 | dev: true
910 |
911 | /rollup/2.70.1:
912 | resolution: {integrity: sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==}
913 | engines: {node: '>=10.0.0'}
914 | hasBin: true
915 | optionalDependencies:
916 | fsevents: 2.3.2
917 | dev: true
918 |
919 | /run-parallel/1.2.0:
920 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
921 | dependencies:
922 | queue-microtask: 1.2.3
923 | dev: true
924 |
925 | /safe-buffer/5.1.2:
926 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
927 | dev: true
928 |
929 | /semver/6.3.0:
930 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
931 | hasBin: true
932 | dev: true
933 |
934 | /solid-js/1.3.13:
935 | resolution: {integrity: sha512-1EBEIW9u2yqT5QNjFdvz/tMAoKsDdaRA2Jbgykd2Dt13Ia0D4mV+BFvPkOaseSyu7DsMKS23+ZZofV8BVKmpuQ==}
936 |
937 | /solid-refresh/0.4.0_solid-js@1.3.13:
938 | resolution: {integrity: sha512-5XCUz845n/sHPzKK2i2G2EeV61tAmzv6SqzqhXcPaYhrgzVy7nKTQaBpKK8InKrriq9Z2JFF/mguIU00t/73xw==}
939 | peerDependencies:
940 | solid-js: ^1.3.0
941 | dependencies:
942 | '@babel/generator': 7.17.7
943 | '@babel/helper-module-imports': 7.16.7
944 | '@babel/types': 7.17.0
945 | solid-js: 1.3.13
946 | dev: true
947 |
948 | /source-map-js/1.0.2:
949 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
950 | engines: {node: '>=0.10.0'}
951 | dev: true
952 |
953 | /source-map/0.5.7:
954 | resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=}
955 | engines: {node: '>=0.10.0'}
956 | dev: true
957 |
958 | /sourcemap-codec/1.4.8:
959 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
960 | dev: true
961 |
962 | /supports-color/5.5.0:
963 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
964 | engines: {node: '>=4'}
965 | dependencies:
966 | has-flag: 3.0.0
967 | dev: true
968 |
969 | /supports-preserve-symlinks-flag/1.0.0:
970 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
971 | engines: {node: '>= 0.4'}
972 | dev: true
973 |
974 | /to-fast-properties/2.0.0:
975 | resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=}
976 | engines: {node: '>=4'}
977 | dev: true
978 |
979 | /to-regex-range/5.0.1:
980 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
981 | engines: {node: '>=8.0'}
982 | dependencies:
983 | is-number: 7.0.0
984 | dev: true
985 |
986 | /ts-toolbelt/9.6.0:
987 | resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==}
988 | dev: true
989 |
990 | /typescript/4.6.3:
991 | resolution: {integrity: sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==}
992 | engines: {node: '>=4.2.0'}
993 | hasBin: true
994 | dev: true
995 |
996 | /vite-plugin-solid/2.2.6:
997 | resolution: {integrity: sha512-J1RnmqkZZJSNYDW7vZj0giKKHLWGr9tS/gxR70WDSTYfhyXrgukbZdIfSEFbtrsg8ZiQ2t2zXcvkWoeefenqKw==}
998 | dependencies:
999 | '@babel/core': 7.17.8
1000 | '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8
1001 | babel-preset-solid: 1.3.13_@babel+core@7.17.8
1002 | merge-anything: 5.0.2
1003 | solid-js: 1.3.13
1004 | solid-refresh: 0.4.0_solid-js@1.3.13
1005 | vite: 2.8.6
1006 | transitivePeerDependencies:
1007 | - less
1008 | - sass
1009 | - stylus
1010 | - supports-color
1011 | dev: true
1012 |
1013 | /vite-plugin-windicss/1.8.3_vite@2.8.6:
1014 | resolution: {integrity: sha512-RIw2GD6H6cKNE8wZXVOBs4L1uTicVS0FaAkeqXvy1oyuXLC4SXmvnzEuoK0+qFuWJjW0ECNwE8eU+ZZhzNQKUg==}
1015 | peerDependencies:
1016 | vite: ^2.0.1
1017 | dependencies:
1018 | '@windicss/plugin-utils': 1.8.3
1019 | debug: 4.3.4
1020 | kolorist: 1.5.1
1021 | vite: 2.8.6
1022 | windicss: 3.5.1
1023 | transitivePeerDependencies:
1024 | - supports-color
1025 | dev: true
1026 |
1027 | /vite/2.8.6:
1028 | resolution: {integrity: sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==}
1029 | engines: {node: '>=12.2.0'}
1030 | hasBin: true
1031 | peerDependencies:
1032 | less: '*'
1033 | sass: '*'
1034 | stylus: '*'
1035 | peerDependenciesMeta:
1036 | less:
1037 | optional: true
1038 | sass:
1039 | optional: true
1040 | stylus:
1041 | optional: true
1042 | dependencies:
1043 | esbuild: 0.14.27
1044 | postcss: 8.4.12
1045 | resolve: 1.22.0
1046 | rollup: 2.70.1
1047 | optionalDependencies:
1048 | fsevents: 2.3.2
1049 | dev: true
1050 |
1051 | /windicss/3.5.1:
1052 | resolution: {integrity: sha512-E1hYZATcZFci/XhGS0sJAMRxULjnK+glNukE78Ku7xeb3jxgMY55fFOdIrav+GjQCsgR+IZxPq9/DwmO6eyc4Q==}
1053 | engines: {node: '>= 12'}
1054 | hasBin: true
1055 | dev: true
1056 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | purge: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'],
3 | plugins: {
4 | tailwindcss: {},
5 | autoprefixer: {},
6 | },
7 | };
8 |
--------------------------------------------------------------------------------
/public/assets/img/react2solid-hero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rrjanbiah/react2solid/8a3839d29d6394b1899066be4d9146f87dbe99e0/public/assets/img/react2solid-hero.png
--------------------------------------------------------------------------------
/public/assets/reactjs-solidjs-libs-alternatives.csv:
--------------------------------------------------------------------------------
1 | Keywords,ReactJS Lib,ReactJS Lib URL,SolidJS Lib,SolidJS Lib URL,API Match Score
2 | "meta,title,head,SEO",next/head,https://nextjs.org/docs/api-reference/next/head,solid-meta,https://github.com/solidjs/solid-meta,90
3 | "virtualized,window,performance",react-virtualized,https://bvaughn.github.io/react-virtualized/,solid-virtual-container,https://github.com/minht11/solid-virtual-container,50
4 | "virtualized,window,performance",react-window,https://github.com/bvaughn/react-window,solid-windowed,https://github.com/titoBouzout/solid-windowed,40
5 | markdown,remark-react,https://github.com/remarkjs/remark-react,solid-marked,https://github.com/LXSMNSYC/solid-marked,40
6 | "table,sort,pagination",sb-react-table,https://github.com/steelbrain/react-table,solid-simple-table,https://github.com/aminya/solid-simple-table,90
7 |
--------------------------------------------------------------------------------
/src/App.tsx:
--------------------------------------------------------------------------------
1 | import type { Component } from 'solid-js';
2 | import { Link, useRoutes, useLocation } from 'solid-app-router';
3 |
4 | import { routes } from './routes';
5 |
6 | const App: Component = () => {
7 | const location = useLocation();
8 | const Route = useRoutes(routes);
9 |
10 |
11 | return (
12 | <>
13 |
14 |
15 |
16 |
17 |
18 |
19 |
react2solid
20 |
21 |
22 | About
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
Convert
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
48 |
49 |
50 |
react2solid
51 |
52 |
Email:
53 | rrjanbiah-at-Y!com Available for remote/freelance :-)
54 |
55 |
56 |
57 |
59 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
© 2022 —
70 | @rrjanbiah
71 |
72 |
Humbly
73 | made in a village in 🇮🇳
74 |
75 |
76 |
77 | >
78 | );
79 | };
80 |
81 | export default App;
82 |
--------------------------------------------------------------------------------
/src/components/JqInput.tsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rrjanbiah/react2solid/8a3839d29d6394b1899066be4d9146f87dbe99e0/src/components/JqInput.tsx
--------------------------------------------------------------------------------
/src/components/ReactAstEditor.tsx:
--------------------------------------------------------------------------------
1 | import { Component } from "solid-js";
2 |
3 | const ReactAstEditor: Component = (props) => {
4 | return (
5 | <>
6 |
9 | >
10 | );
11 | };
12 |
13 | export default ReactAstEditor;
--------------------------------------------------------------------------------
/src/components/ReactCodeEditor.tsx:
--------------------------------------------------------------------------------
1 | import { Component } from "solid-js";
2 |
3 | const ReactCodeEditor: Component = (props) => {
4 | return (
5 | <>
6 |
9 | >
10 | );
11 | };
12 |
13 | export default ReactCodeEditor;
--------------------------------------------------------------------------------
/src/components/SolidAstEditor.tsx:
--------------------------------------------------------------------------------
1 | import { Component } from "solid-js";
2 |
3 | const SolidAstEditor: Component = (props) => {
4 | return (
5 | <>
6 |
9 | >
10 | );
11 | };
12 |
13 | export default SolidAstEditor;
--------------------------------------------------------------------------------
/src/components/SolidCodeEditor.tsx:
--------------------------------------------------------------------------------
1 | import { Component } from "solid-js";
2 |
3 | const SolidCodeEditor: Component = (props) => {
4 | return (
5 | <>
6 |
9 | >
10 | );
11 | };
12 |
13 | export default SolidCodeEditor;
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
--------------------------------------------------------------------------------
/src/index.tsx:
--------------------------------------------------------------------------------
1 | /* @refresh reload */
2 | import './index.css';
3 | import { render } from 'solid-js/web';
4 | import { Router, hashIntegration} from 'solid-app-router';
5 | import { MetaProvider } from 'solid-meta';
6 |
7 | import App from './App';
8 |
9 | render(
10 | () => (
11 |
12 |
13 |
14 |
15 |
16 | ),
17 | document.getElementById('root') as HTMLElement,
18 | );
19 |
--------------------------------------------------------------------------------
/src/lib/csv.ts:
--------------------------------------------------------------------------------
1 | // https://stackoverflow.com/questions/1293147/example-javascript-code-to-parse-csv-data/14991797#14991797
2 | export function parseCSV(str) {
3 | var arr = [];
4 | var quote = false; // 'true' means we're inside a quoted field
5 |
6 | // Iterate over each character, keep track of current row and column (of the returned array)
7 | for (var row = 0, col = 0, c = 0; c < str.length; c++) {
8 | var cc = str[c], nc = str[c + 1]; // Current character, next character
9 | arr[row] = arr[row] || []; // Create a new row if necessary
10 | arr[row][col] = arr[row][col] || ''; // Create a new column (start with empty string) if necessary
11 |
12 | // If the current character is a quotation mark, and we're inside a
13 | // quoted field, and the next character is also a quotation mark,
14 | // add a quotation mark to the current column and skip the next character
15 | if (cc == '"' && quote && nc == '"') { arr[row][col] += cc; ++c; continue; }
16 |
17 | // If it's just one quotation mark, begin/end quoted field
18 | if (cc == '"') { quote = !quote; continue; }
19 |
20 | // If it's a comma and we're not in a quoted field, move on to the next column
21 | if (cc == ',' && !quote) { ++col; continue; }
22 |
23 | // If it's a newline (CRLF) and we're not in a quoted field, skip the next character
24 | // and move on to the next row and move to column 0 of that new row
25 | if (cc == '\r' && nc == '\n' && !quote) { ++row; col = 0; ++c; continue; }
26 |
27 | // If it's a newline (LF or CR) and we're not in a quoted field,
28 | // move on to the next row and move to column 0 of that new row
29 | if (cc == '\n' && !quote) { ++row; col = 0; continue; }
30 | if (cc == '\r' && !quote) { ++row; col = 0; continue; }
31 |
32 | // Otherwise, append the current character to the current column
33 | arr[row][col] += cc;
34 | }
35 | return arr;
36 | }
37 |
38 | // GitHub Copilot :-)
39 | export function csvString2json(csvString) {
40 | const csvArray = parseCSV(csvString);
41 | const jsonArray = [];
42 | for (let i = 1; i < csvArray.length; i++) {
43 | const row = csvArray[i];
44 | const jsonRow = {};
45 | for (let j = 0; j < row.length; j++) {
46 | const key = csvArray[0][j];
47 | const value = row[j];
48 | jsonRow[key] = value;
49 | }
50 | jsonArray.push(jsonRow);
51 | }
52 | return jsonArray;
53 | }
--------------------------------------------------------------------------------
/src/lib/jqAsyncChain.ts:
--------------------------------------------------------------------------------
1 | // Credits: @fabiospampinato / https://discord.com/channels/722131463138705510/962717115406774322/962720783191396452
2 |
3 | import jq from 'jq-web';
4 |
5 | // transformers means jq selectors as they have manipulation functions too
6 |
7 | export async function jqAsyncChain(transformers, initialJson?) {
8 | let json = initialJson;
9 | for (const transformer of transformers) {
10 | try {
11 | json = await jq.promised.json(json, transformer);
12 | } catch { }
13 | }
14 | return json;
15 | }
16 |
--------------------------------------------------------------------------------
/src/lib/jsonStringifyEscape.ts:
--------------------------------------------------------------------------------
1 | // https://stackoverflow.com/questions/4253367/how-to-escape-a-json-string-containing-newline-characters-using-javascript/14137856#14137856
2 | // Unfortunately, JSON.stringify() doesn't escape newlines in strings, hence JSON.parse() will fail
3 | // pass it as a second param to JSON.stringify()
4 | export function jsonStringifyEscape(key: any, val: any) {
5 | if (typeof (val) != "string") {
6 | return val;
7 | }
8 | return val
9 | .replace(/[\\]/g, '\\\\')
10 | .replace(/[\/]/g, '\\/')
11 | .replace(/[\b]/g, '\\b')
12 | .replace(/[\f]/g, '\\f')
13 | .replace(/[\n]/g, '\\n')
14 | .replace(/[\r]/g, '\\r')
15 | .replace(/[\t]/g, '\\t')
16 | .replace(/[\"]/g, '\\"')
17 | .replace(/\\'/g, "\\'");
18 | }
19 |
20 |
--------------------------------------------------------------------------------
/src/pages/about.tsx:
--------------------------------------------------------------------------------
1 | import { Title, Meta } from "solid-meta";
2 |
3 | const About = () => {
4 | const pageTitle = 'About react2solid';
5 | const pageDescription = 'react2solid is a set of utilities for the React to Solid conversion.';
6 |
7 | return (
8 | <>
9 |
10 |
11 | {pageTitle}
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
{pageTitle}
31 |
{pageDescription}
32 |
33 |
34 |
35 |
36 |
37 |
38 |
Original idea about the project was to build a converter tool for ReactJS to SolidJS—without hardcoding the parser logic.
39 |
Hence, initially started with the SWC project (Rust) and JMESPath. But, due to multiple challenges and crossroads... and due to SolidHack's deadline, currently using Babel, jq-web and SolidJS. Eventually, have to move to SWC and make it Rust centric.
40 |
41 |
42 |
43 |
44 | >
45 | );
46 | };
47 |
48 | export default About;
--------------------------------------------------------------------------------
/src/pages/builder.tsx:
--------------------------------------------------------------------------------
1 | import generate from "@babel/generator";
2 | import { parse } from "@babel/parser";
3 | import { createEffect, createSignal, Show } from "solid-js";
4 | import { Title, Meta } from "solid-meta";
5 | import ReactCodeEditor from "../components/ReactCodeEditor";
6 | import SolidCodeEditor from "../components/SolidCodeEditor";
7 | import { jqAsyncChain } from "../lib/jqAsyncChain";
8 | import ReactAstEditor from "../components/ReactAstEditor";
9 | import SolidAstEditor from "../components/SolidAstEditor";
10 | import { jsonStringifyEscape } from "../lib/jsonStringifyEscape";
11 |
12 | const Builder = () => {
13 | const pageTitle = 'Build ReactJS to SolidJS Transformer Rules';
14 | const pageDescription = 'Online builder for React to SolidJS transformer rules';
15 |
16 | const [reactCode, setReactCode] = createSignal('');
17 | const [reactAst, setReactAst] = createSignal('');
18 | const [jqTransformer, setJqTransformer] = createSignal('.');
19 | const [solidAst, setSolidAst] = createSignal('');
20 | const [solidCode, setSolidCode] = createSignal();
21 | const [reactErrorMessage, setReactErrorMessage] = createSignal('');
22 |
23 | createEffect(() => {
24 | let reactCodeString = reactCode();
25 |
26 | /*
27 | if (stringTransformers.length > 0) {
28 | // run through string transformers...
29 | stringTransformers.forEach(transformer => {
30 | reactCodeString = reactCodeString.replaceAll(transformer.search, transformer.replace);
31 | });
32 | // update here in case, if there are no jq transformers...
33 | setSolidCode(reactCodeString);
34 | } */
35 | if (jqTransformer().length > 0) {
36 | let l_reactAst;
37 | setReactErrorMessage(''); // clear error message
38 | try {
39 | l_reactAst = parse(reactCodeString, { sourceType: "module", plugins: ["jsx"], errorRecovery: false});
40 | setReactAst(JSON.stringify(l_reactAst, jsonStringifyEscape, 2));
41 | } catch (e) {
42 | setReactErrorMessage(e.message);
43 | setReactAst('');
44 | }
45 | let l_solidAst = l_reactAst;
46 | jqAsyncChain([jqTransformer()], l_solidAst).then(result => {
47 | setSolidAst(JSON.stringify(result, jsonStringifyEscape, 2));
48 | const { code: l_solidCode } = generate(result);
49 | setSolidCode(l_solidCode);
50 | });
51 | }
52 | });
53 |
54 | return (
55 | <>
56 |
57 |
58 | {pageTitle}
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
{pageTitle}
78 |
{pageDescription}
79 |
80 |
81 |
Notice: Work in progress. Only jq transformer related stuffs are done.
82 |
83 |
84 |
85 |
86 |
87 |
88 |
1 ReactJS Code
89 |
90 | }>
91 |
92 |
{reactErrorMessage}
93 |
94 |
95 |
96 |
97 |
98 |
5 SolidJS Code
99 |
100 |
101 |
102 |
103 |
104 |
105 |
2 ReactJS AST
106 |
107 |
108 |
109 |
110 |
4 SolidJS AST
111 |
112 |
113 |
114 |
115 |
116 |
3
118 | ReactJS AST to SolidJS AST Transformer Rules
119 |
String Transformer
120 |
126 |
132 |
jq Transformer
133 |
setJqTransformer(ev.target.value)}
137 | />
138 |
139 |
140 |
141 | Preview Output Above
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
Metadata and Human Readable Info
151 |
Human readable details for the migration guide and test cases
152 |
Important: Below form is yet to be developed.
153 |
154 |
155 |
156 |
161 |
166 |
171 |
Test case input and expected output will be generated based on above preview.
172 |
177 |
Author will be automatically filled with GitHub submitter user handle
178 |
179 |
180 | Download Transformer Rule
181 |
182 |
Submit the downloaded TOML file in the project GitHub
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 | >
191 | );
192 | };
193 |
194 | export default Builder;
--------------------------------------------------------------------------------
/src/pages/cli.tsx:
--------------------------------------------------------------------------------
1 | import { Title, Meta } from "solid-meta";
2 |
3 | const Cli = () => {
4 | const pageTitle = 'ReactJS to SolidJS CLI for batch conversion';
5 | const pageDescription = 'CLI for React to SolidJS batch code conversion';
6 |
7 | return (
8 | <>
9 |
10 |
11 | {pageTitle}
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
{pageTitle}
31 |
{pageDescription}
32 |
33 |
34 |
35 |
36 |
37 |
38 | !
39 |
40 |
41 |
TODO
42 |
Challenges: Currently using jq-web and so couldn't make CLI easily.
43 |
44 |
45 |
46 |
47 | >
48 | );
49 | };
50 |
51 | export default Cli;
--------------------------------------------------------------------------------
/src/pages/converter.tsx:
--------------------------------------------------------------------------------
1 | import { parse } from "@babel/parser";
2 | import generate from "@babel/generator";
3 | import { createEffect, createSignal, Show } from "solid-js";
4 | import { Title, Meta } from "solid-meta";
5 | import ReactCodeEditor from "../components/ReactCodeEditor";
6 | import SolidCodeEditor from "../components/SolidCodeEditor";
7 | import { jqAsyncChain } from "../lib/jqAsyncChain";
8 | import { transformersJson } from "../../_transformer_rules/transformers.js";
9 |
10 | // prepare transformers...
11 | let jqTransformers = await jqAsyncChain(['.. | .jq?'], transformersJson());
12 | jqTransformers = jqTransformers.filter(Boolean); // remove null through filter
13 | let stringTransformers = await jqAsyncChain(['.. | .string?'], transformersJson());
14 | stringTransformers = stringTransformers.filter(Boolean); // remove null through filter
15 |
16 | const Converter = () => {
17 | const pageTitle = 'ReactJS to SolidJS Converter';
18 | const pageDescription = 'React to SolidJS online code converter aka transpiler';
19 | const [reactCode, setReactCode] = createSignal('');
20 | const [solidCode, setSolidCode] = createSignal();
21 | const [reactErrorMessage, setReactErrorMessage] = createSignal('');
22 |
23 | createEffect(() => {
24 | // For string transformers, no need to run through AST
25 | // TODO: Recheck if so.. what if someone breaks the JSON?
26 | let reactCodeString = reactCode();
27 | if (stringTransformers.length > 0) {
28 | // run through string transformers...
29 | stringTransformers.forEach(transformer => {
30 | reactCodeString = reactCodeString.replaceAll(transformer.search, transformer.replace);
31 | });
32 | // update here in case, if there are no jq transformers...
33 | setSolidCode(reactCodeString);
34 | }
35 | if (jqTransformers.length > 0) {
36 | let reactAst;
37 | setReactErrorMessage(''); // clear error message
38 | try {
39 | reactAst = parse(reactCodeString, { sourceType: "module", plugins: ["jsx"], errorRecovery: false });
40 | } catch (e) {
41 | setReactErrorMessage(e.message);
42 | }
43 | let solidAst = reactAst;
44 | jqAsyncChain(jqTransformers, solidAst).then(result => {
45 | const { code: solidCode } = generate(result);
46 | setSolidCode(solidCode);
47 | });
48 | }
49 | });
50 |
51 | return (
52 | <>
53 |
54 |
55 | {pageTitle}
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
{pageTitle}
75 |
{pageDescription}
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
ReactJS Code
85 |
86 | }>
87 |
88 |
{reactErrorMessage}
89 |
90 |
91 |
92 |
93 |
94 |
SolidJS Code
95 |
96 |
97 |
98 |
99 |
100 |
101 | >
102 | );
103 | };
104 |
105 | export default Converter;
--------------------------------------------------------------------------------
/src/pages/error404.tsx:
--------------------------------------------------------------------------------
1 | import { Title, Meta } from "solid-meta";
2 | // import { DEV } from 'solid-js';
3 |
4 | const Error404 = () => {
5 | const pageTitle = '404 - Not Found';
6 | /*
7 | if (DEV === undefined) { // for production in GitHub pages, throw server 404
8 | // https://codelabs.developers.google.com/codelabs/making-a-single-page-app-search-friendly#6
9 | window.location.href = "/404";
10 | }
11 | */
12 | return (
13 | <>
14 |
15 | {pageTitle}
16 |
17 |
18 |
19 |
{pageTitle}
20 |
If this is an error, please report it in the GitHub project page . Thank you!
21 |
22 |
23 |
24 |
25 | >
26 | );
27 | };
28 |
29 | export default Error404;
--------------------------------------------------------------------------------
/src/pages/home.tsx:
--------------------------------------------------------------------------------
1 | import { Title, Meta } from "solid-meta";
2 | import { Link } from 'solid-app-router';
3 |
4 | const Home = () => {
5 | const pageTitle = 'ReactJS to SolidJS Converter & Utilities';
6 | const pageDescription = 'React to Solid code conversion related utilities';
7 | return (
8 | <>
9 |
10 |
11 | {pageTitle}
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
32 |
34 |
35 | Our life is a creation of our mind. — Buddha
36 |
38 |
39 |
ReactJS to SolidJS Conversion
40 |
react2solid is a set of utilities for the React to Solid conversion.
41 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
64 |
65 |
ReactJS to SolidJS transpiler - JavaScript frontend
66 |
Convert
67 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
85 |
86 |
React.js to Solid.js transformer rules builder - Web UI
87 |
Build
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
105 |
106 |
React to Solid converter - CLI version, for batch conversion
107 |
CLI
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
123 |
Migration Guide
124 |
125 |
126 |
Automatic ReactJS to SolidJS migration guide - from the transformer rules
127 |
Migration Guide
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
143 |
Libraries Alternatives
144 |
145 |
146 |
Alternative or equivalent libraries in SolidJS for ReactJS
147 |
Libraries Alternatives
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
164 |
Test cases
165 |
166 |
167 |
React to Solid transformer rules and test cases
168 |
Test cases
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
Have issues or ideas? Please visit the react2solid project page
184 |
GitHub
185 |
186 |
187 |
188 | >
189 | );
190 | };
191 |
192 | export default Home;
--------------------------------------------------------------------------------
/src/pages/libs-alternatives.tsx:
--------------------------------------------------------------------------------
1 | import { For } from "solid-js";
2 | import { Title, Meta } from "solid-meta";
3 | import { csvString2json } from "../lib/csv";
4 |
5 | const response = await fetch("./assets/reactjs-solidjs-libs-alternatives.csv");
6 | const data = await response.text();
7 | const alternativeLibs = csvString2json(data);
8 |
9 | const LibsAlternatives = () => {
10 | const pageTitle = 'ReactJS to SolidJS Libraries Alternatives';
11 | const pageDescription = 'Find alternative or equivalent SolidJS libraries for ReactJS libraries';
12 |
13 | return (
14 | <>
15 |
16 |
17 | {pageTitle}
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
{pageTitle}
37 |
{pageDescription}
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 | Keywords
47 | ReactJS Lib
48 | SolidJS Lib
49 | API Match Score
50 |
51 |
52 |
53 | {(alternativeLib, i) =>
54 |
55 | {alternativeLib["Keywords"]}
56 | {alternativeLib["ReactJS Lib"]}
57 |
58 |
59 |
60 | {alternativeLib["SolidJS Lib"]}
61 |
62 |
63 | {alternativeLib["API Match Score"]}
64 |
65 | }
66 |
67 |
68 |
69 |
70 |
78 |
79 |
80 | >
81 | );
82 | };
83 |
84 | export default LibsAlternatives;
--------------------------------------------------------------------------------
/src/pages/migration-guide.tsx:
--------------------------------------------------------------------------------
1 | import { Title, Meta } from "solid-meta";
2 | import { Link } from 'solid-app-router';
3 | import { transformersJson } from "../../_transformer_rules/transformers.js";
4 | import { For } from "solid-js";
5 |
6 | const MigrationGuide = () => {
7 | const pageTitle = 'ReactJS to SolidJS - Migration Guide';
8 | const pageDescription = 'Migration guide for React to SolidJS code conversion. Find tips or steps for the conversion with example React and Solid codes.';
9 |
10 | let tTransformers = transformersJson();
11 |
12 | return (
13 | <>
14 |
15 |
16 | {pageTitle}
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
40 |
41 |
42 |
{(tTransformer, i) =>
43 | <>
44 |
45 |
46 | !
47 |
48 |
49 |
{tTransformer.languages.en.title}
50 |
{tTransformer.languages.en.description}
51 |
52 |
53 |
54 | {(tTestCase, j) =>
55 | <>
56 |
57 |
58 |
Example (ReactJS):
59 |
{tTestCase.input}
60 |
61 |
62 |
Example (SolidJS):
63 |
{tTestCase.output}
64 |
65 |
66 | >
67 | }
68 | >
69 | }
70 |
71 |
72 | >
73 | );
74 | };
75 |
76 | export default MigrationGuide;
--------------------------------------------------------------------------------
/src/pages/test-cases.tsx:
--------------------------------------------------------------------------------
1 | import { parse } from "@babel/parser";
2 | import generate from "@babel/generator";
3 | import { Title, Meta } from "solid-meta";
4 | import { Link } from 'solid-app-router';
5 | import { jqAsyncChain } from "../lib/jqAsyncChain";
6 | import { transformersJson } from "../../_transformer_rules/transformers.js";
7 | import { For } from "solid-js";
8 |
9 |
10 | async function react2solid(reactCodeString, transformerType, transformerRule) {
11 | if (transformerType === 'string') {
12 | return reactCodeString.replaceAll(transformerRule.search, transformerRule.replace);
13 | }
14 | if (transformerType === 'jq') {
15 | let reactAst;
16 | try {
17 | reactAst = parse(reactCodeString, { sourceType: "module", plugins: ["jsx"], errorRecovery: true });
18 | } catch (e) { console.error(e); }
19 | let solidAst = reactAst;
20 | solidAst = await jqAsyncChain([transformerRule], solidAst);
21 | const { code: solidCode } = generate(solidAst);
22 | return solidCode;
23 | }
24 | };
25 |
26 |
27 |
28 |
29 | const TestCases = () => {
30 | const pageTitle = 'Test Cases - ReactJS to SolidJS Transformer Rules';
31 | const pageDescription = 'React to SolidJS transformer rules related test cases';
32 |
33 | let tTransformers = transformersJson();
34 | // stuff test case results...
35 | Object.keys(tTransformers).forEach(i => {
36 | //console.log(tTransformers[i].languages.en.title);
37 | // console.log(tTransformers[i].languages.en.description);
38 | Object.keys(tTransformers[i].testcases).forEach(j => {
39 | // console.log(tTransformers[i].testcases[j].test);
40 | // console.log(tTransformers[i].testcases[j].input);
41 | // console.log(tTransformers[i].testcases[j].output);
42 | Object.keys(tTransformers[i].rule.transformer).forEach(async k => {
43 | //console.log(tTransformers[i].rule.transformer[k].string);
44 | //console.log(tTransformers[i].rule.transformer[k].jq);
45 | if (tTransformers[i].rule.transformer[k].string !== undefined) {
46 | tTransformers[i].rule.transformer[k].transformerType = 'string';
47 | tTransformers[i].rule.transformer[k].transformer = tTransformers[i].rule.transformer[k].string;
48 | } else if (tTransformers[i].rule.transformer[k].jq !== undefined) {
49 | tTransformers[i].rule.transformer[k].transformerType = 'jq';
50 | tTransformers[i].rule.transformer[k].transformer = tTransformers[i].rule.transformer[k].jq;
51 | }
52 | tTransformers[i].testcases[j].result = 'Pass';
53 | tTransformers[i].testcases[j].actualOutput = tTransformers[i].testcases[j].output;
54 | tTransformers[i].testcases[j].actualOutput = await react2solid(tTransformers[i].testcases[j].input, tTransformers[i].rule.transformer[k].transformerType, tTransformers[i].rule.transformer[k].transformer);
55 | if (tTransformers[i].testcases[j].actualOutput === tTransformers[i].testcases[j].output) {
56 | tTransformers[i].testcases[j].result = 'Pass';
57 | } else {
58 | tTransformers[i].testcases[j].result = 'Fail';
59 | }
60 | });
61 | });
62 | });
63 | console.log(tTransformers); // TODO: Some keys (stuffed keys??) appear in console, but don't get displayed in JSX
64 |
65 | return (
66 | <>
67 |
68 |
69 | {pageTitle}
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
93 |
94 |
95 |
{(tTransformer, i) =>
96 | <>
97 | {(tTestCase, j) =>
98 | <>
99 |
100 |
101 | Result: {tTestCase.result}
102 |
103 |
104 |
{tTestCase.test}
105 |
Input: {tTestCase.input}
106 |
Expected Output: {tTestCase.output}
107 |
Actual Output: {tTestCase.actualOutput}
108 |
109 |
110 | >
111 | }
112 | >
113 | }
114 |
115 |
116 | >
117 | );
118 | };
119 |
120 | export default TestCases;
--------------------------------------------------------------------------------
/src/routes.ts:
--------------------------------------------------------------------------------
1 | import { lazy } from 'solid-js';
2 | import type { RouteDefinition } from 'solid-app-router';
3 |
4 | import Home from './pages/home';
5 | import Converter from './pages/converter';
6 | import Builder from './pages/builder';
7 | import Cli from './pages/cli';
8 | import MigrationGuide from './pages/migration-guide';
9 | import LibsAlternatives from './pages/libs-alternatives';
10 | import TestCases from './pages/test-cases';
11 | import Error404 from './pages/error404';
12 | import About from './pages/about';
13 |
14 | export const routes: RouteDefinition[] = [
15 | {
16 | path: '/',
17 | component: Home,
18 | },
19 | {
20 | path: '/about',
21 | component: About,
22 | },
23 | {
24 | path: '/reactjs-to-solidjs-converter',
25 | component: Converter,
26 | },
27 | {
28 | path: '/builder',
29 | component: Builder,
30 | },
31 | {
32 | path: '/reactjs-to-solidjs-cli-converter',
33 | component: Cli,
34 | },
35 | {
36 | path: '/reactjs-to-solidjs-migration-guide',
37 | component: MigrationGuide,
38 | },
39 | {
40 | path: '/reactjs-to-solidjs-migration-guide',
41 | component: MigrationGuide,
42 | },
43 | {
44 | path: '/reactjs-solidjs-libs-alternatives',
45 | component: LibsAlternatives,
46 | },
47 | {
48 | path: '/test-cases',
49 | component: TestCases,
50 | },
51 | {
52 | path: '/*',
53 | component: Error404,
54 | },
55 | ];
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | content: [
3 | './index.html',
4 | './src/**/*.{js,ts,jsx,tsx,css,md,mdx,html,json,scss}',
5 | ],
6 | darkMode: 'class',
7 | theme: {
8 | extend: {},
9 | },
10 | plugins: [],
11 | };
12 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ESNext",
4 | "module": "ESNext",
5 | "moduleResolution": "node",
6 | "allowSyntheticDefaultImports": true,
7 | "esModuleInterop": true,
8 | "jsx": "preserve",
9 | "jsxImportSource": "solid-js",
10 | "types": ["vite/client"],
11 | "noEmit": true,
12 | "isolatedModules": true
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import NodeGlobalsPolyfillPlugin from '@esbuild-plugins/node-globals-polyfill';
2 | import { defineConfig } from 'vite';
3 | import solidPlugin from 'vite-plugin-solid';
4 | import rollupNodePolyFill from 'rollup-plugin-node-polyfills'
5 |
6 |
7 | export default defineConfig({
8 | base: './', // default is / and it breaks in GitHub pages
9 | optimizeDeps: {
10 | esbuildOptions: {
11 | // Node.js global to browser globalThis
12 | define: {
13 | global: 'globalThis'
14 | },
15 | // Enable esbuild polyfill plugins
16 | plugins: [
17 | NodeGlobalsPolyfillPlugin({
18 | process: true,
19 | buffer: true
20 | })
21 | ]
22 | }
23 | },
24 | plugins: [solidPlugin()],
25 | build: {
26 | rollupOptions: {
27 | plugins: [
28 | // Enable rollup polyfills plugin
29 | // used during production bundling
30 | rollupNodePolyFill()
31 | ]
32 | },
33 | target: 'esnext',
34 | polyfillDynamicImport: false,
35 | }
36 | });
--------------------------------------------------------------------------------