~repos /edge-city

#react#js#ssr

git clone https://pyrossh.dev/repos/edge-city.git

edge-city is a next level meta-framework for react that runs only on edge runtimes


c35b08de Peter John

2 years ago
rename app
Files changed (46) hide show
  1. packages/cli/index.js → edge-city/cli.js +18 -11
  2. {packages/runtime → edge-city}/index.js +0 -0
  3. {packages/cli → edge-city}/package.json +12 -5
  4. {packages/example → example}/.gitignore +0 -0
  5. {packages/example → example}/.vscode/extensions.json +0 -0
  6. {packages/example → example}/.vscode/settings.json +0 -0
  7. {packages/example → example}/components/Counter/Counter.jsx +0 -0
  8. {packages/example → example}/components/Layout/Layout.css +0 -0
  9. {packages/example → example}/components/Layout/Layout.jsx +1 -1
  10. {packages/example → example}/components/Timer/Timer.jsx +0 -0
  11. {packages/example → example}/components/Todo/Todo.css +0 -0
  12. {packages/example → example}/components/Todo/Todo.jsx +0 -0
  13. {packages/example → example}/db/index.js +0 -0
  14. {packages/example → example}/db/migrations/0000_empty_shatterstar.sql +0 -0
  15. {packages/example → example}/db/migrations/meta/0000_snapshot.json +0 -0
  16. {packages/example → example}/db/migrations/meta/_journal.json +0 -0
  17. {packages/example → example}/drizzle.config.json +0 -0
  18. {packages/example → example}/jsconfig.json +0 -0
  19. {packages/example → example}/package.json +5 -9
  20. {packages/example → example}/pages/_404/page.css +0 -0
  21. {packages/example → example}/pages/_404/page.jsx +0 -0
  22. {packages/example → example}/pages/_500/page.css +0 -0
  23. {packages/example → example}/pages/_500/page.jsx +0 -0
  24. {packages/example → example}/pages/about/page.css +0 -0
  25. {packages/example → example}/pages/about/page.jsx +8 -5
  26. {packages/example → example}/pages/page.css +0 -0
  27. {packages/example → example}/pages/page.jsx +2 -2
  28. {packages/example → example}/pages/page.spec.js +1 -1
  29. {packages/example → example}/playwright.config.js +3 -4
  30. example/readme.md +22 -0
  31. {packages/example → example}/services/auth.service.js +0 -0
  32. {packages/example → example}/services/todos.service.js +0 -0
  33. {packages/example → example}/services/todos.service.test.js +0 -0
  34. {packages/example → example}/static/favicon.ico +0 -0
  35. {packages/example → example}/static/logo192.png +0 -0
  36. {packages/example → example}/static/logo512.png +0 -0
  37. {packages/example → example}/static/manifest.json +0 -0
  38. {packages/example → example}/static/robots.txt +0 -0
  39. {packages/cli → example/static}/todos/page.css +0 -0
  40. {packages/cli → example/static}/todos/page.jsx +1 -1
  41. package-lock.json +0 -6
  42. packages/example/readme.md +0 -18
  43. packages/runtime/package.json +0 -16
  44. pnpm-lock.yaml +141 -126
  45. pnpm-workspace.yaml +2 -1
  46. readme.md +16 -9
packages/cli/index.js → edge-city/cli.js RENAMED
@@ -14,13 +14,14 @@ import pc from 'picocolors';
14
14
  import ms from 'ms';
15
15
 
16
16
  const __dirname = path.dirname(import.meta.url.replace("file://", ""));
17
+ const appName = "edge-city";
17
18
  const version = JSON.parse(fs.readFileSync(path.join(__dirname, "package.json"))).version;
18
19
  const cli = meow(`
19
- parotta v${version}
20
+ ${appName} v${version}
20
21
 
21
22
  Usage
22
- $ parotta build cloudflare
23
+ $ ${appName} build cloudflare
23
- $ parotta build vercel
24
+ $ ${appName} build vercel
24
25
  `, {
25
26
  importMeta: import.meta,
26
27
  autoVersion: true,
@@ -29,7 +30,7 @@ if (cli.input.length != 2) {
29
30
  cli.showHelp();
30
31
  process.exit(0);
31
32
  }
32
- console.log(`parotta v${version}`)
33
+ console.log(`${appName} v${version}`)
33
34
  console.log(`running with NODE_ENV=${process.env.NODE_ENV}`);
34
35
 
35
36
  const ensureDir = (d) => {
@@ -38,11 +39,17 @@ const ensureDir = (d) => {
38
39
  }
39
40
  }
40
41
 
42
+ const cleanDir = (d) => {
43
+ if (fs.existsSync(d)) {
44
+ fs.rmSync(d, { recursive: true });
45
+ }
46
+ }
47
+
41
48
  const isProd = process.env.NODE_ENV === "production";
42
49
  const buildDir = path.join(process.cwd(), "build");
43
50
  const staticDir = path.join(buildDir, "static");
44
51
  const createDirs = () => {
45
- fs.rmSync(buildDir, { recursive: true });
52
+ cleanDir(buildDir);
46
53
  ensureDir(buildDir);
47
54
  ensureDir(staticDir);
48
55
  }
@@ -133,12 +140,12 @@ const bundlePages = async () => {
133
140
  const buildStart = Date.now();
134
141
  const outfile = `build/functions${r.out}`;
135
142
  await bundleJs({ entryPoints: [r.in], outfile }, {
136
- name: "parotta-page-plugin",
143
+ name: "page-plugin",
137
144
  setup(build) {
138
145
  build.onLoad({ filter: /\\*.page.jsx/, namespace: undefined }, (args) => {
139
146
  const data = fs.readFileSync(args.path);
140
147
  const newSrc = `
141
- import { renderPage } from "parotta-runtime";
148
+ import { renderPage } from "edge-city";
142
149
  ${data.toString()}
143
150
 
144
151
  export function onRequest(context) {
@@ -175,12 +182,12 @@ const bundlePages = async () => {
175
182
  entryNames: '[dir]/[name]',
176
183
  chunkNames: 'chunks/[name]-[hash]'
177
184
  }, {
178
- name: "parotta-page-js-plugin",
185
+ name: "page-js-plugin",
179
186
  setup(build) {
180
187
  build.onLoad({ filter: /\\*.page.jsx/, namespace: undefined }, (args) => {
181
188
  const data = fs.readFileSync(args.path);
182
189
  const newSrc = `
183
- import { hydrateApp } from "parotta-runtime";
190
+ import { hydrateApp } from "edge-city";
184
191
  ${data.toString()}
185
192
 
186
193
  const searchParams = new URL(import.meta.url).searchParams;
@@ -216,7 +223,7 @@ const bundleServices = async () => {
216
223
  for (const p of Object.keys(pkg)) {
217
224
  const buildStart = Date.now();
218
225
  const result = await bundleJs({ write: false }, s, `build/functions/_rpc${dest}.js`, {
219
- name: "parotta-service-plugin",
226
+ name: "service-plugin",
220
227
  setup(build) {
221
228
  build.onLoad({ filter: /\\*.service.js/, namespace: undefined }, async (args) => {
222
229
  const src = fs.readFileSync(args.path);
@@ -301,7 +308,7 @@ main();
301
308
  // }
302
309
  // })
303
310
  // if (addRpcImport) {
304
- // lines.unshift(`import { rpc } from "parotta/runtime";`);
311
+ // lines.unshift(`import { rpc } from "edge-city";`);
305
312
  // }
306
313
  // // remove .css and .service imports
307
314
  // const filteredJsx = lines.filter((ln) => !ln.includes(`.css"`) && !ln.includes(`.service"`)).join("\n");
{packages/runtime → edge-city}/index.js RENAMED
File without changes
{packages/cli → edge-city}/package.json RENAMED
@@ -1,15 +1,19 @@
1
1
  {
2
- "name": "parotta-cli",
2
+ "name": "edge-city",
3
3
  "version": "0.5.0",
4
4
  "type": "module",
5
+ "main": "index.js",
5
6
  "dependencies": {
7
+ "history": "^5.3.0",
8
+ "radix3": "^1.0.0"
9
+ },
10
+ "devDependencies": {
6
11
  "autoprefixer": "^10.4.14",
7
12
  "bytes": "3.1.2",
8
13
  "esbuild": "0.17.19",
9
14
  "meow": "12.0.1",
10
15
  "mime-types": "2.1.35",
11
16
  "ms": "2.1.3",
12
- "parotta-runtime": "workspace:*",
13
17
  "picocolors": "1.0.0",
14
18
  "postcss": "^8.4.21",
15
19
  "postcss-custom-media": "^9.1.2",
@@ -19,9 +23,12 @@
19
23
  },
20
24
  "peerDependencies": {
21
25
  "react": "*",
22
- "react-dom": "*"
26
+ "react-dom": "*",
27
+ "nprogress": "*",
28
+ "react-error-boundary": "*",
29
+ "react-helmet-async": "*"
23
30
  },
24
31
  "bin": {
25
- "parotta": "index.js"
32
+ "edge-city": "cli.js"
26
33
  }
27
- }
34
+ }
{packages/example → example}/.gitignore RENAMED
File without changes
{packages/example → example}/.vscode/extensions.json RENAMED
File without changes
{packages/example → example}/.vscode/settings.json RENAMED
File without changes
{packages/example → example}/components/Counter/Counter.jsx RENAMED
File without changes
{packages/example → example}/components/Layout/Layout.css RENAMED
File without changes
{packages/example → example}/components/Layout/Layout.jsx RENAMED
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { Link } from "parotta-runtime";
2
+ import { Link } from "edge-city";
3
3
  import "modern-normalize";
4
4
  import "nprogress";
5
5
  import "./Layout.css";
{packages/example → example}/components/Timer/Timer.jsx RENAMED
File without changes
{packages/example → example}/components/Todo/Todo.css RENAMED
File without changes
{packages/example → example}/components/Todo/Todo.jsx RENAMED
File without changes
{packages/example → example}/db/index.js RENAMED
File without changes
{packages/example → example}/db/migrations/0000_empty_shatterstar.sql RENAMED
File without changes
{packages/example → example}/db/migrations/meta/0000_snapshot.json RENAMED
File without changes
{packages/example → example}/db/migrations/meta/_journal.json RENAMED
File without changes
{packages/example → example}/drizzle.config.json RENAMED
File without changes
{packages/example → example}/jsconfig.json RENAMED
File without changes
{packages/example → example}/package.json RENAMED
@@ -1,10 +1,10 @@
1
1
  {
2
- "name": "parotta-example",
2
+ "name": "edge-city-example",
3
3
  "type": "module",
4
4
  "scripts": {
5
- "dev": "parotta build cloudflare",
5
+ "dev": "edge-city build cloudflare",
6
6
  "dev-server": "wrangler pages dev static --local --live-reload",
7
- "build": "NODE_ENV=production parotta build cloudflare",
7
+ "build": "NODE_ENV=production edge-city build cloudflare",
8
8
  "test": "bun test",
9
9
  "test-e2e": "playwright test"
10
10
  },
@@ -14,7 +14,7 @@
14
14
  "modern-normalize": "^2.0.0",
15
15
  "normalize.css": "^8.0.1",
16
16
  "nprogress": "0.2.0",
17
- "parotta-runtime": "workspace:*",
17
+ "edge-city": "workspace:*",
18
18
  "react": "18.2.0",
19
19
  "react-aria-components": "1.0.0-alpha.3",
20
20
  "react-dom": "18.2.0",
@@ -27,11 +27,7 @@
27
27
  "devDependencies": {
28
28
  "@playwright/test": "^1.31.2",
29
29
  "eslint": "^8.35.0",
30
- "eslint-config-react-app": "^7.0.1",
30
+ "eslint-config-react-app": "^7.0.1"
31
- "parotta-cli": "workspace:*"
32
- },
33
- "parotta": {
34
- "hydrate": true
35
31
  },
36
32
  "prettier": {
37
33
  "printWidth": 120
{packages/example → example}/pages/_404/page.css RENAMED
File without changes
{packages/example → example}/pages/_404/page.jsx RENAMED
File without changes
{packages/example → example}/pages/_500/page.css RENAMED
File without changes
{packages/example → example}/pages/_500/page.jsx RENAMED
File without changes
{packages/example → example}/pages/about/page.css RENAMED
File without changes
{packages/example → example}/pages/about/page.jsx RENAMED
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { Link, useRouter } from "parotta-runtime";
2
+ import { Link, useRouter } from "edge-city";
3
3
  import { Helmet } from 'react-helmet-async';
4
4
  import Layout from '@/components/Layout/Layout';
5
5
  import "./page.css";
@@ -10,12 +10,15 @@ export const Page = () => {
10
10
  <Layout>
11
11
  <div className="about-page">
12
12
  <Helmet>
13
- <title>About Page @ {router.pathname}</title>
13
+ <title>About | Edge City</title>
14
- <meta name="description" content="Showcase of using parotta meta-framework." />
14
+ <meta name="description" content="Showcase of using edge-city meta-framework." />
15
15
  </Helmet>
16
16
  <div>
17
- <h1>About Page @ {router.pathname}</h1>
17
+ <h1>About Page</h1>
18
+ <p>
19
+ Path: {router.pathname}
20
+ </p>
18
- <p>Showcase of using parotta meta-framework.</p>
21
+ <p>Showcase of using edge-city meta-framework.</p>
19
22
  </div>
20
23
  <footer>
21
24
  <Link href="/">Back</Link>
{packages/example → example}/pages/page.css RENAMED
File without changes
{packages/example → example}/pages/page.jsx RENAMED
@@ -1,5 +1,5 @@
1
1
  import { useEffect } from 'react';
2
- import { useRouter } from "parotta-runtime";
2
+ import { useRouter } from "edge-city";
3
3
  import Layout from '@/components/Layout/Layout';
4
4
  import Counter from "@/components/Counter/Counter";
5
5
  import { Helmet } from 'react-helmet-async';
@@ -13,7 +13,7 @@ const Page = () => {
13
13
  return (
14
14
  <Layout>
15
15
  <Helmet>
16
- <title>Parotta App</title>
16
+ <title>Edge City</title>
17
17
  </Helmet>
18
18
  <div className="home-page">
19
19
  <h1>Home Page</h1>
{packages/example → example}/pages/page.spec.js RENAMED
@@ -6,7 +6,7 @@
6
6
  // })
7
7
 
8
8
  // test('has title', async ({ page }) => {
9
- // await expect(page).toHaveTitle(/Parotta/);
9
+ // await expect(page).toHaveTitle(/Edge City/);
10
10
  // });
11
11
 
12
12
  // test('has links', async ({ page }) => {
{packages/example → example}/playwright.config.js RENAMED
@@ -58,8 +58,7 @@ export default defineConfig({
58
58
  ],
59
59
  outputDir: 'test-results/',
60
60
  webServer: {
61
- command: '../parotta/cli.js',
61
+ command: 'npm run dev',
62
- port: 3000,
62
+ port: 8788,
63
63
  },
64
- });
64
+ });
65
-
example/readme.md ADDED
@@ -0,0 +1,22 @@
1
+ # Sample edge-city app
2
+
3
+ ## Requirements
4
+
5
+ 1. node >= v20
6
+
7
+ ## Setup
8
+
9
+ 1. `npm i`
10
+ 2. `npx playright install`
11
+
12
+ ## Running
13
+
14
+ `npm run dev`
15
+
16
+ ## Testing
17
+
18
+ `npm test`
19
+
20
+ ## Build
21
+
22
+ `npm run build`
{packages/example → example}/services/auth.service.js RENAMED
File without changes
{packages/example → example}/services/todos.service.js RENAMED
File without changes
{packages/example → example}/services/todos.service.test.js RENAMED
File without changes
{packages/example → example}/static/favicon.ico RENAMED
File without changes
{packages/example → example}/static/logo192.png RENAMED
File without changes
{packages/example → example}/static/logo512.png RENAMED
File without changes
{packages/example → example}/static/manifest.json RENAMED
File without changes
{packages/example → example}/static/robots.txt RENAMED
File without changes
{packages/cli → example/static}/todos/page.css RENAMED
File without changes
{packages/cli → example/static}/todos/page.jsx RENAMED
@@ -1,6 +1,6 @@
1
1
  import React, { Suspense } from 'react';
2
2
  import { Helmet } from 'react-helmet-async';
3
- import { useQuery, useMutation } from "parotta-runtime";
3
+ import { useQuery, useMutation } from "edge-city";
4
4
  import { useForm } from 'react-hook-form';
5
5
  import Todo from "@/components/Todo/Todo";
6
6
  import { TextField, Label, Input } from 'react-aria-components';
package-lock.json DELETED
@@ -1,6 +0,0 @@
1
- {
2
- "name": "parotta",
3
- "lockfileVersion": 3,
4
- "requires": true,
5
- "packages": {}
6
- }
packages/example/readme.md DELETED
@@ -1,18 +0,0 @@
1
- # Sample Parotta Application
2
-
3
- ## Requirements
4
-
5
- 1. bun >= v0.5.8
6
-
7
- ## Setup
8
-
9
- 1. `bun i`
10
- 2. `bunx playright install`
11
-
12
- ## Running
13
-
14
- `bun run dev`
15
-
16
- ## Testing
17
-
18
- `bun test`
packages/runtime/package.json DELETED
@@ -1,16 +0,0 @@
1
- {
2
- "name": "parotta-runtime",
3
- "version": "0.5.0",
4
- "type": "module",
5
- "dependencies": {
6
- "history": "^5.3.0",
7
- "radix3": "^1.0.0"
8
- },
9
- "peerDependencies": {
10
- "react": "*",
11
- "react-dom": "*",
12
- "nprogress": "*",
13
- "react-error-boundary": "*",
14
- "react-helmet-async": "*"
15
- }
16
- }
pnpm-lock.yaml CHANGED
@@ -2,8 +2,30 @@ lockfileVersion: '6.0'
2
2
 
3
3
  importers:
4
4
 
5
- packages/cli:
5
+ edge-city:
6
6
  dependencies:
7
+ history:
8
+ specifier: ^5.3.0
9
+ version: 5.3.0
10
+ nprogress:
11
+ specifier: '*'
12
+ version: 0.2.0
13
+ radix3:
14
+ specifier: ^1.0.0
15
+ version: 1.0.0
16
+ react:
17
+ specifier: '*'
18
+ version: 18.2.0
19
+ react-dom:
20
+ specifier: '*'
21
+ version: 18.2.0(react@18.2.0)
22
+ react-error-boundary:
23
+ specifier: '*'
24
+ version: 4.0.4(react@18.2.0)
25
+ react-helmet-async:
26
+ specifier: '*'
27
+ version: 1.3.0(react-dom@18.2.0)(react@18.2.0)
28
+ devDependencies:
7
29
  autoprefixer:
8
30
  specifier: ^10.4.14
9
31
  version: 10.4.14(postcss@8.4.21)
@@ -25,9 +47,6 @@ importers:
25
47
  ms:
26
48
  specifier: 2.1.3
27
49
  version: 2.1.3
28
- parotta-runtime:
29
- specifier: workspace:*
30
- version: link:../runtime
31
50
  picocolors:
32
51
  specifier: 1.0.0
33
52
  version: 1.0.0
@@ -40,17 +59,11 @@ importers:
40
59
  postcss-nesting:
41
60
  specifier: ^11.2.1
42
61
  version: 11.2.1(postcss@8.4.21)
43
- react:
44
- specifier: '*'
45
- version: 18.2.0
46
- react-dom:
47
- specifier: '*'
48
- version: 18.2.0(react@18.2.0)
49
62
  walkdir:
50
63
  specifier: 0.4.1
51
64
  version: 0.4.1
52
65
 
53
- packages/example:
66
+ example:
54
67
  dependencies:
55
68
  '@neondatabase/serverless':
56
69
  specifier: ^0.2.9
@@ -58,6 +71,9 @@ importers:
58
71
  drizzle-orm:
59
72
  specifier: 0.26.0
60
73
  version: 0.26.0(@neondatabase/serverless@0.2.9)
74
+ edge-city:
75
+ specifier: workspace:*
76
+ version: link:../edge-city
61
77
  modern-normalize:
62
78
  specifier: ^2.0.0
63
79
  version: 2.0.0
@@ -67,9 +83,6 @@ importers:
67
83
  nprogress:
68
84
  specifier: 0.2.0
69
85
  version: 0.2.0
70
- parotta-runtime:
71
- specifier: workspace:*
72
- version: link:../runtime
73
86
  react:
74
87
  specifier: 18.2.0
75
88
  version: 18.2.0
@@ -104,33 +117,6 @@ importers:
104
117
  eslint-config-react-app:
105
118
  specifier: ^7.0.1
106
119
  version: 7.0.1(@babel/plugin-syntax-flow@7.21.4)(@babel/plugin-transform-react-jsx@7.21.5)(eslint@8.35.0)(typescript@5.0.4)
107
- parotta-cli:
108
- specifier: workspace:*
109
- version: link:../cli
110
-
111
- packages/runtime:
112
- dependencies:
113
- history:
114
- specifier: ^5.3.0
115
- version: 5.3.0
116
- nprogress:
117
- specifier: '*'
118
- version: 0.2.0
119
- radix3:
120
- specifier: ^1.0.0
121
- version: 1.0.0
122
- react:
123
- specifier: '*'
124
- version: 18.2.0
125
- react-dom:
126
- specifier: '*'
127
- version: 18.2.0(react@18.2.0)
128
- react-error-boundary:
129
- specifier: '*'
130
- version: 4.0.4(react@18.2.0)
131
- react-helmet-async:
132
- specifier: '*'
133
- version: 1.3.0(react-dom@18.2.0)(react@18.2.0)
134
120
 
135
121
  packages:
136
122
 
@@ -147,6 +133,7 @@ packages:
147
133
  engines: {node: '>=6.9.0'}
148
134
  dependencies:
149
135
  '@babel/highlight': 7.18.6
136
+ dev: true
150
137
 
151
138
  /@babel/compat-data@7.21.7:
152
139
  resolution: {integrity: sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==}
@@ -396,6 +383,7 @@ packages:
396
383
  /@babel/helper-validator-identifier@7.19.1:
397
384
  resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
398
385
  engines: {node: '>=6.9.0'}
386
+ dev: true
399
387
 
400
388
  /@babel/helper-validator-option@7.21.0:
401
389
  resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==}
@@ -432,6 +420,7 @@ packages:
432
420
  '@babel/helper-validator-identifier': 7.19.1
433
421
  chalk: 2.4.2
434
422
  js-tokens: 4.0.0
423
+ dev: true
435
424
 
436
425
  /@babel/parser@7.21.8:
437
426
  resolution: {integrity: sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==}
@@ -1486,7 +1475,7 @@ packages:
1486
1475
  dependencies:
1487
1476
  '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1)
1488
1477
  '@csstools/css-tokenizer': 2.1.1
1489
- dev: false
1478
+ dev: true
1490
1479
 
1491
1480
  /@csstools/css-parser-algorithms@2.1.1(@csstools/css-tokenizer@2.1.1):
1492
1481
  resolution: {integrity: sha512-viRnRh02AgO4mwIQb2xQNJju0i+Fh9roNgmbR5xEuG7J3TGgxjnE95HnBLgsFJOJOksvcfxOUCgODcft6Y07cA==}
@@ -1495,12 +1484,12 @@ packages:
1495
1484
  '@csstools/css-tokenizer': ^2.1.1
1496
1485
  dependencies:
1497
1486
  '@csstools/css-tokenizer': 2.1.1
1498
- dev: false
1487
+ dev: true
1499
1488
 
1500
1489
  /@csstools/css-tokenizer@2.1.1:
1501
1490
  resolution: {integrity: sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==}
1502
1491
  engines: {node: ^14 || ^16 || >=18}
1503
- dev: false
1492
+ dev: true
1504
1493
 
1505
1494
  /@csstools/media-query-list-parser@2.0.4(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1):
1506
1495
  resolution: {integrity: sha512-GyYot6jHgcSDZZ+tLSnrzkR7aJhF2ZW6d+CXH66mjy5WpAQhZD4HDke2OQ36SivGRWlZJpAz7TzbW6OKlEpxAA==}
@@ -1511,7 +1500,7 @@ packages:
1511
1500
  dependencies:
1512
1501
  '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1)
1513
1502
  '@csstools/css-tokenizer': 2.1.1
1514
- dev: false
1503
+ dev: true
1515
1504
 
1516
1505
  /@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.0.13):
1517
1506
  resolution: {integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==}
@@ -1520,7 +1509,7 @@ packages:
1520
1509
  postcss-selector-parser: ^6.0.10
1521
1510
  dependencies:
1522
1511
  postcss-selector-parser: 6.0.13
1523
- dev: false
1512
+ dev: true
1524
1513
 
1525
1514
  /@esbuild/android-arm64@0.17.19:
1526
1515
  resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==}
@@ -1528,7 +1517,7 @@ packages:
1528
1517
  cpu: [arm64]
1529
1518
  os: [android]
1530
1519
  requiresBuild: true
1531
- dev: false
1520
+ dev: true
1532
1521
  optional: true
1533
1522
 
1534
1523
  /@esbuild/android-arm@0.17.19:
@@ -1537,7 +1526,7 @@ packages:
1537
1526
  cpu: [arm]
1538
1527
  os: [android]
1539
1528
  requiresBuild: true
1540
- dev: false
1529
+ dev: true
1541
1530
  optional: true
1542
1531
 
1543
1532
  /@esbuild/android-x64@0.17.19:
@@ -1546,7 +1535,7 @@ packages:
1546
1535
  cpu: [x64]
1547
1536
  os: [android]
1548
1537
  requiresBuild: true
1549
- dev: false
1538
+ dev: true
1550
1539
  optional: true
1551
1540
 
1552
1541
  /@esbuild/darwin-arm64@0.17.19:
@@ -1555,7 +1544,7 @@ packages:
1555
1544
  cpu: [arm64]
1556
1545
  os: [darwin]
1557
1546
  requiresBuild: true
1558
- dev: false
1547
+ dev: true
1559
1548
  optional: true
1560
1549
 
1561
1550
  /@esbuild/darwin-x64@0.17.19:
@@ -1564,7 +1553,7 @@ packages:
1564
1553
  cpu: [x64]
1565
1554
  os: [darwin]
1566
1555
  requiresBuild: true
1567
- dev: false
1556
+ dev: true
1568
1557
  optional: true
1569
1558
 
1570
1559
  /@esbuild/freebsd-arm64@0.17.19:
@@ -1573,7 +1562,7 @@ packages:
1573
1562
  cpu: [arm64]
1574
1563
  os: [freebsd]
1575
1564
  requiresBuild: true
1576
- dev: false
1565
+ dev: true
1577
1566
  optional: true
1578
1567
 
1579
1568
  /@esbuild/freebsd-x64@0.17.19:
@@ -1582,7 +1571,7 @@ packages:
1582
1571
  cpu: [x64]
1583
1572
  os: [freebsd]
1584
1573
  requiresBuild: true
1585
- dev: false
1574
+ dev: true
1586
1575
  optional: true
1587
1576
 
1588
1577
  /@esbuild/linux-arm64@0.17.19:
@@ -1591,7 +1580,7 @@ packages:
1591
1580
  cpu: [arm64]
1592
1581
  os: [linux]
1593
1582
  requiresBuild: true
1594
- dev: false
1583
+ dev: true
1595
1584
  optional: true
1596
1585
 
1597
1586
  /@esbuild/linux-arm@0.17.19:
@@ -1600,7 +1589,7 @@ packages:
1600
1589
  cpu: [arm]
1601
1590
  os: [linux]
1602
1591
  requiresBuild: true
1603
- dev: false
1592
+ dev: true
1604
1593
  optional: true
1605
1594
 
1606
1595
  /@esbuild/linux-ia32@0.17.19:
@@ -1609,7 +1598,7 @@ packages:
1609
1598
  cpu: [ia32]
1610
1599
  os: [linux]
1611
1600
  requiresBuild: true
1612
- dev: false
1601
+ dev: true
1613
1602
  optional: true
1614
1603
 
1615
1604
  /@esbuild/linux-loong64@0.17.19:
@@ -1618,7 +1607,7 @@ packages:
1618
1607
  cpu: [loong64]
1619
1608
  os: [linux]
1620
1609
  requiresBuild: true
1621
- dev: false
1610
+ dev: true
1622
1611
  optional: true
1623
1612
 
1624
1613
  /@esbuild/linux-mips64el@0.17.19:
@@ -1627,7 +1616,7 @@ packages:
1627
1616
  cpu: [mips64el]
1628
1617
  os: [linux]
1629
1618
  requiresBuild: true
1630
- dev: false
1619
+ dev: true
1631
1620
  optional: true
1632
1621
 
1633
1622
  /@esbuild/linux-ppc64@0.17.19:
@@ -1636,7 +1625,7 @@ packages:
1636
1625
  cpu: [ppc64]
1637
1626
  os: [linux]
1638
1627
  requiresBuild: true
1639
- dev: false
1628
+ dev: true
1640
1629
  optional: true
1641
1630
 
1642
1631
  /@esbuild/linux-riscv64@0.17.19:
@@ -1645,7 +1634,7 @@ packages:
1645
1634
  cpu: [riscv64]
1646
1635
  os: [linux]
1647
1636
  requiresBuild: true
1648
- dev: false
1637
+ dev: true
1649
1638
  optional: true
1650
1639
 
1651
1640
  /@esbuild/linux-s390x@0.17.19:
@@ -1654,7 +1643,7 @@ packages:
1654
1643
  cpu: [s390x]
1655
1644
  os: [linux]
1656
1645
  requiresBuild: true
1657
- dev: false
1646
+ dev: true
1658
1647
  optional: true
1659
1648
 
1660
1649
  /@esbuild/linux-x64@0.17.19:
@@ -1663,7 +1652,7 @@ packages:
1663
1652
  cpu: [x64]
1664
1653
  os: [linux]
1665
1654
  requiresBuild: true
1666
- dev: false
1655
+ dev: true
1667
1656
  optional: true
1668
1657
 
1669
1658
  /@esbuild/netbsd-x64@0.17.19:
@@ -1672,7 +1661,7 @@ packages:
1672
1661
  cpu: [x64]
1673
1662
  os: [netbsd]
1674
1663
  requiresBuild: true
1675
- dev: false
1664
+ dev: true
1676
1665
  optional: true
1677
1666
 
1678
1667
  /@esbuild/openbsd-x64@0.17.19:
@@ -1681,7 +1670,7 @@ packages:
1681
1670
  cpu: [x64]
1682
1671
  os: [openbsd]
1683
1672
  requiresBuild: true
1684
- dev: false
1673
+ dev: true
1685
1674
  optional: true
1686
1675
 
1687
1676
  /@esbuild/sunos-x64@0.17.19:
@@ -1690,7 +1679,7 @@ packages:
1690
1679
  cpu: [x64]
1691
1680
  os: [sunos]
1692
1681
  requiresBuild: true
1693
- dev: false
1682
+ dev: true
1694
1683
  optional: true
1695
1684
 
1696
1685
  /@esbuild/win32-arm64@0.17.19:
@@ -1699,7 +1688,7 @@ packages:
1699
1688
  cpu: [arm64]
1700
1689
  os: [win32]
1701
1690
  requiresBuild: true
1702
- dev: false
1691
+ dev: true
1703
1692
  optional: true
1704
1693
 
1705
1694
  /@esbuild/win32-ia32@0.17.19:
@@ -1708,7 +1697,7 @@ packages:
1708
1697
  cpu: [ia32]
1709
1698
  os: [win32]
1710
1699
  requiresBuild: true
1711
- dev: false
1700
+ dev: true
1712
1701
  optional: true
1713
1702
 
1714
1703
  /@esbuild/win32-x64@0.17.19:
@@ -1717,7 +1706,7 @@ packages:
1717
1706
  cpu: [x64]
1718
1707
  os: [win32]
1719
1708
  requiresBuild: true
1720
- dev: false
1709
+ dev: true
1721
1710
  optional: true
1722
1711
 
1723
1712
  /@eslint-community/eslint-utils@4.4.0(eslint@8.35.0):
@@ -3132,7 +3121,7 @@ packages:
3132
3121
 
3133
3122
  /@types/minimist@1.2.2:
3134
3123
  resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==}
3135
- dev: false
3124
+ dev: true
3136
3125
 
3137
3126
  /@types/node@20.2.1:
3138
3127
  resolution: {integrity: sha512-DqJociPbZP1lbZ5SQPk4oag6W7AyaGMO6gSfRwq3PWl4PXTwJpRQJhDq4W0kzrg3w6tJ1SwlvGZ5uKFHY13LIg==}
@@ -3140,7 +3129,7 @@ packages:
3140
3129
 
3141
3130
  /@types/normalize-package-data@2.4.1:
3142
3131
  resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
3143
- dev: false
3132
+ dev: true
3144
3133
 
3145
3134
  /@types/parse-json@4.0.0:
3146
3135
  resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==}
@@ -3326,6 +3315,7 @@ packages:
3326
3315
  engines: {node: '>=4'}
3327
3316
  dependencies:
3328
3317
  color-convert: 1.9.3
3318
+ dev: true
3329
3319
 
3330
3320
  /ansi-styles@4.3.0:
3331
3321
  resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
@@ -3400,7 +3390,7 @@ packages:
3400
3390
  /arrify@1.0.1:
3401
3391
  resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
3402
3392
  engines: {node: '>=0.10.0'}
3403
- dev: false
3393
+ dev: true
3404
3394
 
3405
3395
  /ast-types-flow@0.0.7:
3406
3396
  resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==}
@@ -3420,7 +3410,7 @@ packages:
3420
3410
  picocolors: 1.0.0
3421
3411
  postcss: 8.4.21
3422
3412
  postcss-value-parser: 4.2.0
3423
- dev: false
3413
+ dev: true
3424
3414
 
3425
3415
  /available-typed-arrays@1.0.5:
3426
3416
  resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
@@ -3538,11 +3528,12 @@ packages:
3538
3528
  electron-to-chromium: 1.4.402
3539
3529
  node-releases: 2.0.10
3540
3530
  update-browserslist-db: 1.0.11(browserslist@4.21.5)
3531
+ dev: true
3541
3532
 
3542
3533
  /bytes@3.1.2:
3543
3534
  resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
3544
3535
  engines: {node: '>= 0.8'}
3545
- dev: false
3536
+ dev: true
3546
3537
 
3547
3538
  /call-bind@1.0.2:
3548
3539
  resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
@@ -3564,15 +3555,16 @@ packages:
3564
3555
  map-obj: 4.3.0
3565
3556
  quick-lru: 6.1.1
3566
3557
  type-fest: 2.19.0
3567
- dev: false
3558
+ dev: true
3568
3559
 
3569
3560
  /camelcase@7.0.1:
3570
3561
  resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==}
3571
3562
  engines: {node: '>=14.16'}
3572
- dev: false
3563
+ dev: true
3573
3564
 
3574
3565
  /caniuse-lite@1.0.30001488:
3575
3566
  resolution: {integrity: sha512-NORIQuuL4xGpIy6iCCQGN4iFjlBXtfKWIenlUuyZJumLRIindLb7wXM+GO8erEhb7vXfcnf4BAg2PrSDN5TNLQ==}
3567
+ dev: true
3576
3568
 
3577
3569
  /chalk@2.4.2:
3578
3570
  resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
@@ -3581,6 +3573,7 @@ packages:
3581
3573
  ansi-styles: 3.2.1
3582
3574
  escape-string-regexp: 1.0.5
3583
3575
  supports-color: 5.5.0
3576
+ dev: true
3584
3577
 
3585
3578
  /chalk@4.1.2:
3586
3579
  resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
@@ -3599,6 +3592,7 @@ packages:
3599
3592
  resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
3600
3593
  dependencies:
3601
3594
  color-name: 1.1.3
3595
+ dev: true
3602
3596
 
3603
3597
  /color-convert@2.0.1:
3604
3598
  resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
@@ -3609,6 +3603,7 @@ packages:
3609
3603
 
3610
3604
  /color-name@1.1.3:
3611
3605
  resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
3606
+ dev: true
3612
3607
 
3613
3608
  /color-name@1.1.4:
3614
3609
  resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
@@ -3656,7 +3651,7 @@ packages:
3656
3651
  resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
3657
3652
  engines: {node: '>=4'}
3658
3653
  hasBin: true
3659
- dev: false
3654
+ dev: true
3660
3655
 
3661
3656
  /damerau-levenshtein@1.0.8:
3662
3657
  resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
@@ -3693,12 +3688,12 @@ packages:
3693
3688
  map-obj: 4.3.0
3694
3689
  quick-lru: 6.1.1
3695
3690
  type-fest: 3.11.0
3696
- dev: false
3691
+ dev: true
3697
3692
 
3698
3693
  /decamelize@6.0.0:
3699
3694
  resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==}
3700
3695
  engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
3701
- dev: false
3696
+ dev: true
3702
3697
 
3703
3698
  /deep-equal@2.2.1:
3704
3699
  resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==}
@@ -3820,6 +3815,7 @@ packages:
3820
3815
 
3821
3816
  /electron-to-chromium@1.4.402:
3822
3817
  resolution: {integrity: sha512-gWYvJSkohOiBE6ecVYXkrDgNaUjo47QEKK0kQzmWyhkH+yoYiG44bwuicTGNSIQRG3WDMsWVZJLRnJnLNkbWvA==}
3818
+ dev: true
3823
3819
 
3824
3820
  /emoji-regex@9.2.2:
3825
3821
  resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
@@ -3829,6 +3825,7 @@ packages:
3829
3825
  resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
3830
3826
  dependencies:
3831
3827
  is-arrayish: 0.2.1
3828
+ dev: true
3832
3829
 
3833
3830
  /es-abstract@1.21.2:
3834
3831
  resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==}
@@ -3910,7 +3907,7 @@ packages:
3910
3907
 
3911
3908
  /esbuild-plugin-resolve@2.0.0:
3912
3909
  resolution: {integrity: sha512-eJy9B8yDW5X/J48eWtR1uVmv+DKfHvYYnrrcqQoe/nUkVHVOTZlJnSevkYyGOz6hI90t036Y5QIPDrGzmppxfg==}
3913
- dev: false
3910
+ dev: true
3914
3911
 
3915
3912
  /esbuild@0.17.19:
3916
3913
  resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==}
@@ -3940,15 +3937,17 @@ packages:
3940
3937
  '@esbuild/win32-arm64': 0.17.19
3941
3938
  '@esbuild/win32-ia32': 0.17.19
3942
3939
  '@esbuild/win32-x64': 0.17.19
3943
- dev: false
3940
+ dev: true
3944
3941
 
3945
3942
  /escalade@3.1.1:
3946
3943
  resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
3947
3944
  engines: {node: '>=6'}
3945
+ dev: true
3948
3946
 
3949
3947
  /escape-string-regexp@1.0.5:
3950
3948
  resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
3951
3949
  engines: {node: '>=0.8.0'}
3950
+ dev: true
3952
3951
 
3953
3952
  /escape-string-regexp@4.0.0:
3954
3953
  resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
@@ -4349,7 +4348,7 @@ packages:
4349
4348
  dependencies:
4350
4349
  locate-path: 7.2.0
4351
4350
  path-exists: 5.0.0
4352
- dev: false
4351
+ dev: true
4353
4352
 
4354
4353
  /flat-cache@3.0.4:
4355
4354
  resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
@@ -4371,7 +4370,7 @@ packages:
4371
4370
 
4372
4371
  /fraction.js@4.2.0:
4373
4372
  resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
4374
- dev: false
4373
+ dev: true
4375
4374
 
4376
4375
  /fs.realpath@1.0.0:
4377
4376
  resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
@@ -4387,6 +4386,7 @@ packages:
4387
4386
 
4388
4387
  /function-bind@1.1.1:
4389
4388
  resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
4389
+ dev: true
4390
4390
 
4391
4391
  /function.prototype.name@1.1.5:
4392
4392
  resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
@@ -4493,7 +4493,7 @@ packages:
4493
4493
  /hard-rejection@2.1.0:
4494
4494
  resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
4495
4495
  engines: {node: '>=6'}
4496
- dev: false
4496
+ dev: true
4497
4497
 
4498
4498
  /has-bigints@1.0.2:
4499
4499
  resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
@@ -4502,6 +4502,7 @@ packages:
4502
4502
  /has-flag@3.0.0:
4503
4503
  resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
4504
4504
  engines: {node: '>=4'}
4505
+ dev: true
4505
4506
 
4506
4507
  /has-flag@4.0.0:
4507
4508
  resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
@@ -4536,6 +4537,7 @@ packages:
4536
4537
  engines: {node: '>= 0.4.0'}
4537
4538
  dependencies:
4538
4539
  function-bind: 1.1.1
4540
+ dev: true
4539
4541
 
4540
4542
  /history@5.3.0:
4541
4543
  resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==}
@@ -4548,14 +4550,14 @@ packages:
4548
4550
  engines: {node: '>=10'}
4549
4551
  dependencies:
4550
4552
  lru-cache: 6.0.0
4551
- dev: false
4553
+ dev: true
4552
4554
 
4553
4555
  /hosted-git-info@6.1.1:
4554
4556
  resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==}
4555
4557
  engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
4556
4558
  dependencies:
4557
4559
  lru-cache: 7.18.3
4558
- dev: false
4560
+ dev: true
4559
4561
 
4560
4562
  /ignore@5.2.4:
4561
4563
  resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
@@ -4578,7 +4580,7 @@ packages:
4578
4580
  /indent-string@5.0.0:
4579
4581
  resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==}
4580
4582
  engines: {node: '>=12'}
4581
- dev: false
4583
+ dev: true
4582
4584
 
4583
4585
  /inflight@1.0.6:
4584
4586
  resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
@@ -4633,6 +4635,7 @@ packages:
4633
4635
 
4634
4636
  /is-arrayish@0.2.1:
4635
4637
  resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
4638
+ dev: true
4636
4639
 
4637
4640
  /is-bigint@1.0.4:
4638
4641
  resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
@@ -4657,6 +4660,7 @@ packages:
4657
4660
  resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==}
4658
4661
  dependencies:
4659
4662
  has: 1.0.3
4663
+ dev: true
4660
4664
 
4661
4665
  /is-date-object@1.0.5:
4662
4666
  resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
@@ -4706,7 +4710,7 @@ packages:
4706
4710
  /is-plain-obj@1.1.0:
4707
4711
  resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
4708
4712
  engines: {node: '>=0.10.0'}
4709
- dev: false
4713
+ dev: true
4710
4714
 
4711
4715
  /is-regex@1.1.4:
4712
4716
  resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
@@ -4803,6 +4807,7 @@ packages:
4803
4807
 
4804
4808
  /json-parse-even-better-errors@2.3.1:
4805
4809
  resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
4810
+ dev: true
4806
4811
 
4807
4812
  /json-schema-traverse@0.4.1:
4808
4813
  resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
@@ -4836,7 +4841,7 @@ packages:
4836
4841
  /kind-of@6.0.3:
4837
4842
  resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
4838
4843
  engines: {node: '>=0.10.0'}
4839
- dev: false
4844
+ dev: true
4840
4845
 
4841
4846
  /language-subtag-registry@0.3.22:
4842
4847
  resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==}
@@ -4858,6 +4863,7 @@ packages:
4858
4863
 
4859
4864
  /lines-and-columns@1.2.4:
4860
4865
  resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
4866
+ dev: true
4861
4867
 
4862
4868
  /locate-path@6.0.0:
4863
4869
  resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
@@ -4871,7 +4877,7 @@ packages:
4871
4877
  engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
4872
4878
  dependencies:
4873
4879
  p-locate: 6.0.0
4874
- dev: false
4880
+ dev: true
4875
4881
 
4876
4882
  /lodash.debounce@4.0.8:
4877
4883
  resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
@@ -4902,16 +4908,17 @@ packages:
4902
4908
  engines: {node: '>=10'}
4903
4909
  dependencies:
4904
4910
  yallist: 4.0.0
4911
+ dev: true
4905
4912
 
4906
4913
  /lru-cache@7.18.3:
4907
4914
  resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
4908
4915
  engines: {node: '>=12'}
4909
- dev: false
4916
+ dev: true
4910
4917
 
4911
4918
  /map-obj@4.3.0:
4912
4919
  resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
4913
4920
  engines: {node: '>=8'}
4914
- dev: false
4921
+ dev: true
4915
4922
 
4916
4923
  /meow@12.0.1:
4917
4924
  resolution: {integrity: sha512-/QOqMALNoKQcJAOOdIXjNLtfcCdLXbMFyB1fOOPdm6RzfBTlsuodOCTBDjVbeUSmgDQb8UI2oONqYGtq1PKKKA==}
@@ -4929,7 +4936,7 @@ packages:
4929
4936
  trim-newlines: 5.0.0
4930
4937
  type-fest: 3.11.0
4931
4938
  yargs-parser: 21.1.1
4932
- dev: false
4939
+ dev: true
4933
4940
 
4934
4941
  /merge2@1.4.1:
4935
4942
  resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
@@ -4947,19 +4954,19 @@ packages:
4947
4954
  /mime-db@1.52.0:
4948
4955
  resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
4949
4956
  engines: {node: '>= 0.6'}
4950
- dev: false
4957
+ dev: true
4951
4958
 
4952
4959
  /mime-types@2.1.35:
4953
4960
  resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
4954
4961
  engines: {node: '>= 0.6'}
4955
4962
  dependencies:
4956
4963
  mime-db: 1.52.0
4957
- dev: false
4964
+ dev: true
4958
4965
 
4959
4966
  /min-indent@1.0.1:
4960
4967
  resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
4961
4968
  engines: {node: '>=4'}
4962
- dev: false
4969
+ dev: true
4963
4970
 
4964
4971
  /minimatch@3.1.2:
4965
4972
  resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
@@ -4974,7 +4981,7 @@ packages:
4974
4981
  arrify: 1.0.1
4975
4982
  is-plain-obj: 1.1.0
4976
4983
  kind-of: 6.0.3
4977
- dev: false
4984
+ dev: true
4978
4985
 
4979
4986
  /minimist@1.2.8:
4980
4987
  resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
@@ -4991,12 +4998,13 @@ packages:
4991
4998
 
4992
4999
  /ms@2.1.3:
4993
5000
  resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
5001
+ dev: true
4994
5002
 
4995
5003
  /nanoid@3.3.6:
4996
5004
  resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
4997
5005
  engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
4998
5006
  hasBin: true
4999
- dev: false
5007
+ dev: true
5000
5008
 
5001
5009
  /natural-compare-lite@1.4.0:
5002
5010
  resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
@@ -5008,6 +5016,7 @@ packages:
5008
5016
 
5009
5017
  /node-releases@2.0.10:
5010
5018
  resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==}
5019
+ dev: true
5011
5020
 
5012
5021
  /normalize-package-data@3.0.3:
5013
5022
  resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==}
@@ -5017,7 +5026,7 @@ packages:
5017
5026
  is-core-module: 2.12.1
5018
5027
  semver: 7.5.1
5019
5028
  validate-npm-package-license: 3.0.4
5020
- dev: false
5029
+ dev: true
5021
5030
 
5022
5031
  /normalize-package-data@5.0.0:
5023
5032
  resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==}
@@ -5027,12 +5036,12 @@ packages:
5027
5036
  is-core-module: 2.12.1
5028
5037
  semver: 7.5.1
5029
5038
  validate-npm-package-license: 3.0.4
5030
- dev: false
5039
+ dev: true
5031
5040
 
5032
5041
  /normalize-range@0.1.2:
5033
5042
  resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
5034
5043
  engines: {node: '>=0.10.0'}
5035
- dev: false
5044
+ dev: true
5036
5045
 
5037
5046
  /normalize.css@8.0.1:
5038
5047
  resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==}
@@ -5137,7 +5146,7 @@ packages:
5137
5146
  engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
5138
5147
  dependencies:
5139
5148
  yocto-queue: 1.0.0
5140
- dev: false
5149
+ dev: true
5141
5150
 
5142
5151
  /p-locate@5.0.0:
5143
5152
  resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
@@ -5151,7 +5160,7 @@ packages:
5151
5160
  engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
5152
5161
  dependencies:
5153
5162
  p-limit: 4.0.0
5154
- dev: false
5163
+ dev: true
5155
5164
 
5156
5165
  /parent-module@1.0.1:
5157
5166
  resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
@@ -5168,6 +5177,7 @@ packages:
5168
5177
  error-ex: 1.3.2
5169
5178
  json-parse-even-better-errors: 2.3.1
5170
5179
  lines-and-columns: 1.2.4
5180
+ dev: true
5171
5181
 
5172
5182
  /path-exists@4.0.0:
5173
5183
  resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
@@ -5177,7 +5187,7 @@ packages:
5177
5187
  /path-exists@5.0.0:
5178
5188
  resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
5179
5189
  engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
5180
- dev: false
5190
+ dev: true
5181
5191
 
5182
5192
  /path-is-absolute@1.0.1:
5183
5193
  resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
@@ -5200,6 +5210,7 @@ packages:
5200
5210
 
5201
5211
  /picocolors@1.0.0:
5202
5212
  resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
5213
+ dev: true
5203
5214
 
5204
5215
  /picomatch@2.3.1:
5205
5216
  resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
@@ -5223,7 +5234,7 @@ packages:
5223
5234
  '@csstools/css-tokenizer': 2.1.1
5224
5235
  '@csstools/media-query-list-parser': 2.0.4(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1)
5225
5236
  postcss: 8.4.21
5226
- dev: false
5237
+ dev: true
5227
5238
 
5228
5239
  /postcss-nesting@11.2.1(postcss@8.4.21):
5229
5240
  resolution: {integrity: sha512-E6Jq74Jo/PbRAtZioON54NPhUNJYxVWhwxbweYl1vAoBYuGlDIts5yhtKiZFLvkvwT73e/9nFrW3oMqAtgG+GQ==}
@@ -5234,7 +5245,7 @@ packages:
5234
5245
  '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13)
5235
5246
  postcss: 8.4.21
5236
5247
  postcss-selector-parser: 6.0.13
5237
- dev: false
5248
+ dev: true
5238
5249
 
5239
5250
  /postcss-selector-parser@6.0.13:
5240
5251
  resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
@@ -5242,11 +5253,11 @@ packages:
5242
5253
  dependencies:
5243
5254
  cssesc: 3.0.0
5244
5255
  util-deprecate: 1.0.2
5245
- dev: false
5256
+ dev: true
5246
5257
 
5247
5258
  /postcss-value-parser@4.2.0:
5248
5259
  resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
5249
- dev: false
5260
+ dev: true
5250
5261
 
5251
5262
  /postcss@8.4.21:
5252
5263
  resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==}
@@ -5255,7 +5266,7 @@ packages:
5255
5266
  nanoid: 3.3.6
5256
5267
  picocolors: 1.0.0
5257
5268
  source-map-js: 1.0.2
5258
- dev: false
5269
+ dev: true
5259
5270
 
5260
5271
  /prelude-ls@1.2.1:
5261
5272
  resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
@@ -5281,7 +5292,7 @@ packages:
5281
5292
  /quick-lru@6.1.1:
5282
5293
  resolution: {integrity: sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==}
5283
5294
  engines: {node: '>=12'}
5284
- dev: false
5295
+ dev: true
5285
5296
 
5286
5297
  /radix3@1.0.0:
5287
5298
  resolution: {integrity: sha512-6n3AEXth91ASapMVKiEh2wrbFJmI+NBilrWE0AbiGgfm0xet0QXC8+a3K19r1UVYjUjctUgB053c3V/J6V0kCQ==}
@@ -5447,7 +5458,7 @@ packages:
5447
5458
  find-up: 6.3.0
5448
5459
  read-pkg: 7.1.0
5449
5460
  type-fest: 2.19.0
5450
- dev: false
5461
+ dev: true
5451
5462
 
5452
5463
  /read-pkg@7.1.0:
5453
5464
  resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==}
@@ -5457,7 +5468,7 @@ packages:
5457
5468
  normalize-package-data: 3.0.3
5458
5469
  parse-json: 5.2.0
5459
5470
  type-fest: 2.19.0
5460
- dev: false
5471
+ dev: true
5461
5472
 
5462
5473
  /redent@4.0.0:
5463
5474
  resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==}
@@ -5465,7 +5476,7 @@ packages:
5465
5476
  dependencies:
5466
5477
  indent-string: 5.0.0
5467
5478
  strip-indent: 4.0.0
5468
- dev: false
5479
+ dev: true
5469
5480
 
5470
5481
  /regenerate-unicode-properties@10.1.0:
5471
5482
  resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==}
@@ -5586,6 +5597,7 @@ packages:
5586
5597
  hasBin: true
5587
5598
  dependencies:
5588
5599
  lru-cache: 6.0.0
5600
+ dev: true
5589
5601
 
5590
5602
  /shallowequal@1.1.0:
5591
5603
  resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==}
@@ -5619,29 +5631,29 @@ packages:
5619
5631
  /source-map-js@1.0.2:
5620
5632
  resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
5621
5633
  engines: {node: '>=0.10.0'}
5622
- dev: false
5634
+ dev: true
5623
5635
 
5624
5636
  /spdx-correct@3.2.0:
5625
5637
  resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
5626
5638
  dependencies:
5627
5639
  spdx-expression-parse: 3.0.1
5628
5640
  spdx-license-ids: 3.0.13
5629
- dev: false
5641
+ dev: true
5630
5642
 
5631
5643
  /spdx-exceptions@2.3.0:
5632
5644
  resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==}
5633
- dev: false
5645
+ dev: true
5634
5646
 
5635
5647
  /spdx-expression-parse@3.0.1:
5636
5648
  resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
5637
5649
  dependencies:
5638
5650
  spdx-exceptions: 2.3.0
5639
5651
  spdx-license-ids: 3.0.13
5640
- dev: false
5652
+ dev: true
5641
5653
 
5642
5654
  /spdx-license-ids@3.0.13:
5643
5655
  resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==}
5644
- dev: false
5656
+ dev: true
5645
5657
 
5646
5658
  /sql-highlight@4.3.2:
5647
5659
  resolution: {integrity: sha512-7r6R5QKkiyKdMPMMdoUYwHbFZWdRhjJNxb0vUsFqloSZybGgFRcnM8IDZ9ZQSV2s6MWbtwn6O130+2ySL86oOA==}
@@ -5714,7 +5726,7 @@ packages:
5714
5726
  engines: {node: '>=12'}
5715
5727
  dependencies:
5716
5728
  min-indent: 1.0.1
5717
- dev: false
5729
+ dev: true
5718
5730
 
5719
5731
  /strip-json-comments@3.1.1:
5720
5732
  resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
@@ -5726,6 +5738,7 @@ packages:
5726
5738
  engines: {node: '>=4'}
5727
5739
  dependencies:
5728
5740
  has-flag: 3.0.0
5741
+ dev: true
5729
5742
 
5730
5743
  /supports-color@7.2.0:
5731
5744
  resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
@@ -5758,7 +5771,7 @@ packages:
5758
5771
  /trim-newlines@5.0.0:
5759
5772
  resolution: {integrity: sha512-kstfs+hgwmdsOadN3KgA+C68wPJwnZq4DN6WMDCvZapDWEF34W2TyPKN2v2+BJnZgIz5QOfxFeldLyYvdgRAwg==}
5760
5773
  engines: {node: '>=14.16'}
5761
- dev: false
5774
+ dev: true
5762
5775
 
5763
5776
  /tsconfig-paths@3.14.2:
5764
5777
  resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==}
@@ -5802,12 +5815,12 @@ packages:
5802
5815
  /type-fest@2.19.0:
5803
5816
  resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
5804
5817
  engines: {node: '>=12.20'}
5805
- dev: false
5818
+ dev: true
5806
5819
 
5807
5820
  /type-fest@3.11.0:
5808
5821
  resolution: {integrity: sha512-JaPw5U9ixP0XcpUbQoVSbxSDcK/K4nww20C3kjm9yE6cDRRhptU28AH60VWf9ltXmCrIfIbtt9J+2OUk2Uqiaw==}
5809
5822
  engines: {node: '>=14.16'}
5810
- dev: false
5823
+ dev: true
5811
5824
 
5812
5825
  /typed-array-length@1.0.4:
5813
5826
  resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
@@ -5864,6 +5877,7 @@ packages:
5864
5877
  browserslist: 4.21.5
5865
5878
  escalade: 3.1.1
5866
5879
  picocolors: 1.0.0
5880
+ dev: true
5867
5881
 
5868
5882
  /uri-js@4.4.1:
5869
5883
  resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
@@ -5881,19 +5895,19 @@ packages:
5881
5895
 
5882
5896
  /util-deprecate@1.0.2:
5883
5897
  resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
5884
- dev: false
5898
+ dev: true
5885
5899
 
5886
5900
  /validate-npm-package-license@3.0.4:
5887
5901
  resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
5888
5902
  dependencies:
5889
5903
  spdx-correct: 3.2.0
5890
5904
  spdx-expression-parse: 3.0.1
5891
- dev: false
5905
+ dev: true
5892
5906
 
5893
5907
  /walkdir@0.4.1:
5894
5908
  resolution: {integrity: sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==}
5895
5909
  engines: {node: '>=6.0.0'}
5896
- dev: false
5910
+ dev: true
5897
5911
 
5898
5912
  /which-boxed-primitive@1.0.2:
5899
5913
  resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
@@ -5949,6 +5963,7 @@ packages:
5949
5963
 
5950
5964
  /yallist@4.0.0:
5951
5965
  resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
5966
+ dev: true
5952
5967
 
5953
5968
  /yaml@1.10.2:
5954
5969
  resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
@@ -5958,7 +5973,7 @@ packages:
5958
5973
  /yargs-parser@21.1.1:
5959
5974
  resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
5960
5975
  engines: {node: '>=12'}
5961
- dev: false
5976
+ dev: true
5962
5977
 
5963
5978
  /yocto-queue@0.1.0:
5964
5979
  resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
@@ -5968,7 +5983,7 @@ packages:
5968
5983
  /yocto-queue@1.0.0:
5969
5984
  resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
5970
5985
  engines: {node: '>=12.20'}
5971
- dev: false
5986
+ dev: true
5972
5987
 
5973
5988
  /zod@3.21.4:
5974
5989
  resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==}
pnpm-workspace.yaml CHANGED
@@ -1,2 +1,3 @@
1
1
  packages:
2
- - 'packages/*'
2
+ - 'edge-city'
3
+ - 'example'
readme.md CHANGED
@@ -1,20 +1,27 @@
1
- # parotta
1
+ # Edge City
2
2
 
3
- parotta is a next level meta-framework for react that runs only on edge runtimes.
3
+ edge-city is a next level meta-framework for react that runs only on edge runtimes.
4
- It uses bun as its bundler/transpiler and development mode as its quick and fast.
4
+ It uses esbuild as its bundler/transpiler.
5
- It uses File System routing with streaming SSR + CSR as the method to render pages.
5
+ It uses file system routing (similar to next app router) with streaming SSR + CSR render pages.
6
6
  It is very opionated and has set of idiomatic ways of doing things.
7
7
  It has an inbuilt rpc mechanism to access server resources instead of a typical REST API.
8
+ It aims to have almost the same router api as nextjs router for ease of use.
8
9
 
9
- During development each request for a page is executed in a separate vercel edge-runtime vm.
10
+ During development each request for a page is executed in a separate edge-runtime (miniflare/vercel) vm.
10
11
  During production each page is packaged to an esm function adapted to the platform of your choice.
11
12
 
12
- ### Todo
13
+ ## Why?
13
- 1. Hydrate rpc cache
14
- 2. Build a docs website using parotta
14
+ Because its really hard to have a streaming SSR + CSR setup in nextjs currently.
15
+ The only other framework is rakkasjs but it doesn't maitaing as smooth transition from nextjs.
15
16
 
16
17
  ### Supported platforms
17
18
  1. [Cloudflare page functions](https://developers.cloudflare.com/pages/platform/functions/routing/)
18
19
  2. [Vercel edge functions](https://vercel.com/docs/concepts/functions/edge-functions)
19
20
  3. [Netlify edge functions](https://docs.netlify.com/edge-functions/overview/)
20
- 4. [Deno Deploy](https://deno.com/deploy)
21
+ 4. [Deno Deploy](https://deno.com/deploy)
22
+
23
+ ### Todo
24
+ 1. Hydrate rpc cache
25
+ 2. Build a docs website
26
+ 3. Fix 404/500 pages not routing
27
+ 3. Add Env variables `PUBLIC_` for client