@samitouri / QOS-React / commits / ca587425fe

Implement react-server-dom-parcel (#31725)

This adds a new `react-server-dom-parcel-package`, which is an RSC integration for the Parcel bundler. It is mostly copied from the existing webpack/turbopack integrations, with some changes to utilize Parcel runtime APIs for loading and executing bundles/modules. See https://github.com/parcel-bundler/parcel/pull/10043 for the Parcel side of this, which includes the plugin needed to generate client and server references. https://github.com/parcel-bundler/rsc-examples also includes examples of various ways to use RSCs with Parcel. Differences from other integrations: * Client and server modules are all part of the same graph, and we use Parcel's [environments](https://parceljs.org/plugin-system/transformer/#the-environment) to distinguish them. The server is the Parcel build entry point, and it imports and renders server components in route handlers. When a `"use client"` directive is seen, the environment changes and Parcel creates a new client bundle for the page, combining all client modules together. CSS from both client and server components are also combined automatically. * There is no separate manifest file that needs to be passed around by the user. A [Runtime](https://parceljs.org/plugin-system/runtime/) plugin injects client and server references as needed into the relevant bundles, and registers server action ids using `react-server-dom-parcel` automatically. * A special `<Resources>` component is also generated by Parcel to render the `<script>` and `<link rel="stylesheet">` elements needed for a page, using the relevant info from the bundle graph. Note: I've already published a 0.0.x version of this package to npm for testing purposes but happy to add whoever needs access to it as well. ### Questions * How to test this in the React repo. I'll have integration tests in Parcel, but setting up all the different mocks and environments to simulate that here seems challenging. I could try to copy how Webpack/Turbopack do it but it's a bit different. * Where to put TypeScript types. Right now I have some ambient types in my [example repo](https://github.com/parcel-bundler/rsc-examples/blob/main/types.d.ts) but it would be nice for users not to copy and paste these. Can I include them in the package or do they need to maintained separately in definitelytyped? I would really prefer not to have to maintain code in three different repos ideally. --------- Co-authored-by: Sebastian Markbage <sebastian@calyptus.eu>

Devon Govett committed Dec 11, 2024 at 22:58 UTC ca587425fe21b644bebb336f058f1a0d9763631b
70 files changed +5212
.eslintrc.js
+7
@@ -330,6 +330,7 @@ module.exports = {
330 'packages/react-server-dom-esm/**/*.js',
331 'packages/react-server-dom-webpack/**/*.js',
332 'packages/react-server-dom-turbopack/**/*.js',
333 + 'packages/react-server-dom-parcel/**/*.js',
334 'packages/react-server-dom-fb/**/*.js',
335 'packages/react-test-renderer/**/*.js',
336 'packages/react-debug-tools/**/*.js',
@@ -481,6 +482,12 @@ module.exports = {
482 __turbopack_require__: 'readonly',
483 },
484 },
485 + {
486 + files: ['packages/react-server-dom-parcel/**/*.js'],
487 + globals: {
488 + parcelRequire: 'readonly',
489 + },
490 + },
491 {
492 files: ['packages/scheduler/**/*.js'],
493 globals: {
ReactVersions.js
+1
@@ -40,6 +40,7 @@ const stablePackages = {
40 'react-dom': ReactVersion,
41 'react-server-dom-webpack': ReactVersion,
42 'react-server-dom-turbopack': ReactVersion,
43 + 'react-server-dom-parcel': ReactVersion,
44 'react-is': ReactVersion,
45 'react-reconciler': '0.31.0',
46 'react-refresh': '0.16.0',
fixtures/flight-parcel/.gitignore new
+5
@@ -0,0 +1,5 @@
1 +.parcel-cache
2 +.DS_Store
3 +node_modules
4 +dist
5 +todos.json
fixtures/flight-parcel/.parcelrc new
+4
@@ -0,0 +1,4 @@
1 +{
2 + "extends": "@parcel/config-default",
3 + "runtimes": ["...", "@parcel/runtime-rsc"]
4 +}
fixtures/flight-parcel/package.json new
+51
@@ -0,0 +1,51 @@
1 +{
2 + "name": "flight-parcel",
3 + "private": true,
4 + "workspaces": [
5 + "examples/*"
6 + ],
7 + "server": "dist/server.js",
8 + "targets": {
9 + "server": {
10 + "source": "src/server.tsx",
11 + "context": "react-server",
12 + "outputFormat": "commonjs",
13 + "includeNodeModules": {
14 + "express": false
15 + }
16 + }
17 + },
18 + "scripts": {
19 + "predev": "cp -r ../../build/oss-experimental/* ./node_modules/",
20 + "prebuild": "cp -r ../../build/oss-experimental/* ./node_modules/",
21 + "dev": "concurrently \"npm run dev:watch\" \"npm run dev:start\"",
22 + "dev:watch": "NODE_ENV=development parcel watch",
23 + "dev:start": "NODE_ENV=development node dist/server.js",
24 + "build": "parcel build",
25 + "start": "node dist/server.js"
26 + },
27 + "@parcel/resolver-default": {
28 + "packageExports": true
29 + },
30 + "dependencies": {
31 + "@parcel/config-default": "2.0.0-dev.1789",
32 + "@parcel/runtime-rsc": "2.13.3-dev.3412",
33 + "@types/parcel-env": "^0.0.6",
34 + "@types/express": "*",
35 + "@types/node": "^22.10.1",
36 + "@types/react": "^19",
37 + "@types/react-dom": "^19",
38 + "concurrently": "^7.3.0",
39 + "express": "^4.18.2",
40 + "parcel": "2.0.0-dev.1787",
41 + "process": "^0.11.10",
42 + "react": "experimental",
43 + "react-dom": "experimental",
44 + "react-server-dom-parcel": "experimental",
45 + "rsc-html-stream": "^0.0.4",
46 + "ws": "^8.8.1"
47 + },
48 + "@parcel/bundler-default": {
49 + "minBundleSize": 0
50 + }
51 +}
fixtures/flight-parcel/src/Dialog.tsx new
+21
@@ -0,0 +1,21 @@
1 +'use client';
2 +
3 +import {ReactNode, useRef} from 'react';
4 +
5 +export function Dialog({
6 + trigger,
7 + children,
8 +}: {
9 + trigger: ReactNode;
10 + children: ReactNode;
11 +}) {
12 + let ref = useRef<HTMLDialogElement | null>(null);
13 + return (
14 + <>
15 + <button onClick={() => ref.current?.showModal()}>{trigger}</button>
16 + <dialog ref={ref} onSubmit={() => ref.current?.close()}>
17 + {children}
18 + </dialog>
19 + </>
20 + );
21 +}
fixtures/flight-parcel/src/TodoCreate.tsx new
+18
@@ -0,0 +1,18 @@
1 +import {createTodo} from './actions';
2 +
3 +export function TodoCreate() {
4 + return (
5 + <form action={createTodo}>
6 + <label>
7 + Title: <input name="title" />
8 + </label>
9 + <label>
10 + Description: <textarea name="description" />
11 + </label>
12 + <label>
13 + Due date: <input type="date" name="dueDate" />
14 + </label>
15 + <button>Add todo</button>
16 + </form>
17 + );
18 +}
fixtures/flight-parcel/src/TodoDetail.tsx new
+25
@@ -0,0 +1,25 @@
1 +import {getTodo, updateTodo} from './actions';
2 +
3 +export async function TodoDetail({id}: {id: number}) {
4 + let todo = await getTodo(id);
5 + if (!todo) {
6 + return <p>Todo not found</p>;
7 + }
8 +
9 + return (
10 + <form className="todo" action={updateTodo.bind(null, todo.id)}>
11 + <label>
12 + Title: <input name="title" defaultValue={todo.title} />
13 + </label>
14 + <label>
15 + Description:{' '}
16 + <textarea name="description" defaultValue={todo.description} />
17 + </label>
18 + <label>
19 + Due date:{' '}
20 + <input type="date" name="dueDate" defaultValue={todo.dueDate} />
21 + </label>
22 + <button type="submit">Update todo</button>
23 + </form>
24 + );
25 +}
fixtures/flight-parcel/src/TodoItem.tsx new
+37
@@ -0,0 +1,37 @@
1 +'use client';
2 +
3 +import {startTransition, useOptimistic} from 'react';
4 +import {deleteTodo, setTodoComplete, type Todo as ITodo} from './actions';
5 +
6 +export function TodoItem({
7 + todo,
8 + isSelected,
9 +}: {
10 + todo: ITodo;
11 + isSelected: boolean;
12 +}) {
13 + let [isOptimisticComplete, setOptimisticComplete] = useOptimistic(
14 + todo.isComplete,
15 + );
16 +
17 + return (
18 + <li data-selected={isSelected || undefined}>
19 + <input
20 + type="checkbox"
21 + checked={isOptimisticComplete}
22 + onChange={e => {
23 + startTransition(async () => {
24 + setOptimisticComplete(e.target.checked);
25 + await setTodoComplete(todo.id, e.target.checked);
26 + });
27 + }}
28 + />
29 + <a
30 + href={`/todos/${todo.id}`}
31 + aria-current={isSelected ? 'page' : undefined}>
32 + {todo.title}
33 + </a>
34 + <button onClick={() => deleteTodo(todo.id)}>x</button>
35 + </li>
36 + );
37 +}
fixtures/flight-parcel/src/TodoList.tsx new
+13
@@ -0,0 +1,13 @@
1 +import {TodoItem} from './TodoItem';
2 +import {getTodos} from './actions';
3 +
4 +export async function TodoList({id}: {id: number | undefined}) {
5 + let todos = await getTodos();
6 + return (
7 + <ul className="todo-list">
8 + {todos.map(todo => (
9 + <TodoItem key={todo.id} todo={todo} isSelected={todo.id === id} />
10 + ))}
11 + </ul>
12 + );
13 +}
fixtures/flight-parcel/src/Todos.css new
+63
@@ -0,0 +1,63 @@
1 +body {
2 + font-family: system-ui;
3 + color-scheme: light dark;
4 +}
5 +
6 +form {
7 + display: grid;
8 + grid-template-columns: auto 1fr;
9 + flex-direction: column;
10 + max-width: 400px;
11 + gap: 8px;
12 +}
13 +
14 +label {
15 + display: contents;
16 +}
17 +
18 +main {
19 + display: flex;
20 + gap: 32px;
21 +}
22 +
23 +.todo-column {
24 + width: 250px;
25 +}
26 +
27 +header {
28 + display: flex;
29 + align-items: center;
30 + justify-content: space-between;
31 + max-width: 250px;
32 + padding: 8px;
33 + padding-right: 40px;
34 + box-sizing: border-box;
35 +}
36 +
37 +.todo-list {
38 + max-width: 250px;
39 + padding: 0;
40 + list-style: none;
41 + padding-right: 32px;
42 + border-right: 1px solid gray;
43 +
44 + li {
45 + display: flex;
46 + gap: 8px;
47 + padding: 8px;
48 + border-radius: 8px;
49 + accent-color: light-dark(black, white);
50 +
51 + a {
52 + color: inherit;
53 + text-decoration: none;
54 + width: 100%;
55 + }
56 +
57 + &[data-selected] {
58 + background-color: light-dark(#222, #ddd);
59 + color: light-dark(#ddd, #222);
60 + accent-color: light-dark(white, black);
61 + }
62 + }
63 +}
fixtures/flight-parcel/src/Todos.tsx new
+35
@@ -0,0 +1,35 @@
1 +'use server-entry';
2 +
3 +import './client';
4 +import './Todos.css';
5 +import {Resources} from '@parcel/runtime-rsc';
6 +import {Dialog} from './Dialog';
7 +import {TodoDetail} from './TodoDetail';
8 +import {TodoCreate} from './TodoCreate';
9 +import {TodoList} from './TodoList';
10 +
11 +export async function Todos({id}: {id?: number}) {
12 + return (
13 + <html style={{colorScheme: 'dark light'}}>
14 + <head>
15 + <title>Todos</title>
16 + <Resources />
17 + </head>
18 + <body>
19 + <header>
20 + <h1>Todos</h1>
21 + <Dialog trigger="+">
22 + <h2>Add todo</h2>
23 + <TodoCreate />
24 + </Dialog>
25 + </header>
26 + <main>
27 + <div className="todo-column">
28 + <TodoList id={id} />
29 + </div>
30 + {id != null ? <TodoDetail key={id} id={id} /> : <p>Select a todo</p>}
31 + </main>
32 + </body>
33 + </html>
34 + );
35 +}
fixtures/flight-parcel/src/actions.ts new
+75
@@ -0,0 +1,75 @@
1 +'use server';
2 +
3 +import fs from 'fs/promises';
4 +
5 +export interface Todo {
6 + id: number;
7 + title: string;
8 + description: string;
9 + dueDate: string;
10 + isComplete: boolean;
11 +}
12 +
13 +export async function getTodos(): Promise<Todo[]> {
14 + try {
15 + let contents = await fs.readFile('todos.json', 'utf8');
16 + return JSON.parse(contents);
17 + } catch {
18 + await fs.writeFile('todos.json', '[]');
19 + return [];
20 + }
21 +}
22 +
23 +export async function getTodo(id: number): Promise<Todo | undefined> {
24 + let todos = await getTodos();
25 + return todos.find(todo => todo.id === id);
26 +}
27 +
28 +export async function createTodo(formData: FormData) {
29 + let todos = await getTodos();
30 + let title = formData.get('title');
31 + let description = formData.get('description');
32 + let dueDate = formData.get('dueDate');
33 + let id = todos.length > 0 ? Math.max(...todos.map(todo => todo.id)) + 1 : 0;
34 + todos.push({
35 + id,
36 + title: typeof title === 'string' ? title : '',
37 + description: typeof description === 'string' ? description : '',
38 + dueDate: typeof dueDate === 'string' ? dueDate : new Date().toISOString(),
39 + isComplete: false,
40 + });
41 + await fs.writeFile('todos.json', JSON.stringify(todos));
42 +}
43 +
44 +export async function updateTodo(id: number, formData: FormData) {
45 + let todos = await getTodos();
46 + let title = formData.get('title');
47 + let description = formData.get('description');
48 + let dueDate = formData.get('dueDate');
49 + let todo = todos.find(todo => todo.id === id);
50 + if (todo) {
51 + todo.title = typeof title === 'string' ? title : '';
52 + todo.description = typeof description === 'string' ? description : '';
53 + todo.dueDate =
54 + typeof dueDate === 'string' ? dueDate : new Date().toISOString();
55 + await fs.writeFile('todos.json', JSON.stringify(todos));
56 + }
57 +}
58 +
59 +export async function setTodoComplete(id: number, isComplete: boolean) {
60 + let todos = await getTodos();
61 + let todo = todos.find(todo => todo.id === id);
62 + if (todo) {
63 + todo.isComplete = isComplete;
64 + await fs.writeFile('todos.json', JSON.stringify(todos));
65 + }
66 +}
67 +
68 +export async function deleteTodo(id: number) {
69 + let todos = await getTodos();
70 + let index = todos.findIndex(todo => todo.id === id);
71 + if (index >= 0) {
72 + todos.splice(index, 1);
73 + await fs.writeFile('todos.json', JSON.stringify(todos));
74 + }
75 +}
fixtures/flight-parcel/src/client.tsx new
+113
@@ -0,0 +1,113 @@
1 +'use client-entry';
2 +
3 +import {
4 + useState,
5 + use,
6 + startTransition,
7 + useInsertionEffect,
8 + ReactElement,
9 +} from 'react';
10 +import ReactDOM from 'react-dom/client';
11 +import {
12 + createFromReadableStream,
13 + createFromFetch,
14 + encodeReply,
15 + setServerCallback,
16 +} from 'react-server-dom-parcel/client';
17 +import {rscStream} from 'rsc-html-stream/client';
18 +
19 +// Stream in initial RSC payload embedded in the HTML.
20 +let initialRSCPayload = createFromReadableStream<ReactElement>(rscStream);
21 +let updateRoot:
22 + | ((root: ReactElement, cb?: (() => void) | null) => void)
23 + | null = null;
24 +
25 +function Content() {
26 + // Store the current root element in state, along with a callback
27 + // to call once rendering is complete.
28 + let [[root, cb], setRoot] = useState<[ReactElement, (() => void) | null]>([
29 + use(initialRSCPayload),
30 + null,
31 + ]);
32 + updateRoot = (root, cb) => setRoot([root, cb ?? null]);
33 + useInsertionEffect(() => cb?.());
34 + return root;
35 +}
36 +
37 +// Hydrate initial page content.
38 +startTransition(() => {
39 + ReactDOM.hydrateRoot(document, <Content />);
40 +});
41 +
42 +// A very simple router. When we navigate, we'll fetch a new RSC payload from the server,
43 +// and in a React transition, stream in the new page. Once complete, we'll pushState to
44 +// update the URL in the browser.
45 +async function navigate(pathname: string, push = false) {
46 + let res = fetch(pathname, {
47 + headers: {
48 + Accept: 'text/x-component',
49 + },
50 + });
51 + let root = await createFromFetch<ReactElement>(res);
52 + startTransition(() => {
53 + updateRoot!(root, () => {
54 + if (push) {
55 + history.pushState(null, '', pathname);
56 + push = false;
57 + }
58 + });
59 + });
60 +}
61 +
62 +// Intercept link clicks to perform RSC navigation.
63 +document.addEventListener('click', e => {
64 + let link = (e.target as Element).closest('a');
65 + if (
66 + link &&
67 + link instanceof HTMLAnchorElement &&
68 + link.href &&
69 + (!link.target || link.target === '_self') &&
70 + link.origin === location.origin &&
71 + !link.hasAttribute('download') &&
72 + e.button === 0 && // left clicks only
73 + !e.metaKey && // open in new tab (mac)
74 + !e.ctrlKey && // open in new tab (windows)
75 + !e.altKey && // download
76 + !e.shiftKey &&
77 + !e.defaultPrevented
78 + ) {
79 + e.preventDefault();
80 + navigate(link.pathname, true);
81 + }
82 +});
83 +
84 +// When the user clicks the back button, navigate with RSC.
85 +window.addEventListener('popstate', e => {
86 + navigate(location.pathname);
87 +});
88 +
89 +// Intercept HMR window reloads, and do it with RSC instead.
90 +window.addEventListener('parcelhmrreload', e => {
91 + e.preventDefault();
92 + navigate(location.pathname);
93 +});
94 +
95 +// Setup a callback to perform server actions.
96 +// This sends a POST request to the server, and updates the page with the response.
97 +setServerCallback(async function (id: string, args: any[]) {
98 + console.log('Handling server action', id, args);
99 + const response = fetch(location.pathname, {
100 + method: 'POST',
101 + headers: {
102 + Accept: 'text/x-component',
103 + 'rsc-action-id': id,
104 + },
105 + body: await encodeReply(args),
106 + });
107 + const {result, root} = await createFromFetch<{
108 + root: JSX.Element;
109 + result: any;
110 + }>(response);
111 + startTransition(() => updateRoot!(root));
112 + return result;
113 +});
fixtures/flight-parcel/src/server.tsx new
+137
@@ -0,0 +1,137 @@
1 +// Server dependencies.
2 +import express, {
3 + type Request as ExpressRequest,
4 + type Response as ExpressResponse,
5 +} from 'express';
6 +import {Readable} from 'node:stream';
7 +import type {ReadableStream as NodeReadableStream} from 'stream/web';
8 +import {
9 + renderToReadableStream,
10 + loadServerAction,
11 + decodeReply,
12 + decodeAction,
13 +} from 'react-server-dom-parcel/server.edge';
14 +import {injectRSCPayload} from 'rsc-html-stream/server';
15 +
16 +// Client dependencies, used for SSR.
17 +// These must run in the same environment as client components (e.g. same instance of React).
18 +import {createFromReadableStream} from 'react-server-dom-parcel/client' with {env: 'react-client'};
19 +import {renderToReadableStream as renderHTMLToReadableStream} from 'react-dom/server' with {env: 'react-client'};
20 +import ReactClient, {ReactElement} from 'react' with {env: 'react-client'};
21 +
22 +// Page components. These must have "use server-entry" so they are treated as code splitting entry points.
23 +import {Todos} from './Todos';
24 +
25 +const app = express();
26 +
27 +app.use(function (req, res, next) {
28 + res.setHeader('Access-Control-Allow-Methods', 'GET,HEAD,POST');
29 + res.setHeader('Access-Control-Allow-Origin', '*');
30 + res.setHeader('Access-Control-Allow-Headers', 'rsc-action');
31 + next();
32 +});
33 +
34 +app.use(express.static('dist'));
35 +
36 +app.get('/', async (req, res) => {
37 + await render(req, res, <Todos />);
38 +});
39 +
40 +app.post('/', async (req, res) => {
41 + await handleAction(req, res, <Todos />);
42 +});
43 +
44 +app.get('/todos/:id', async (req, res) => {
45 + await render(req, res, <Todos id={Number(req.params.id)} />);
46 +});
47 +
48 +app.post('/todos/:id', async (req, res) => {
49 + await handleAction(req, res, <Todos id={Number(req.params.id)} />);
50 +});
51 +
52 +async function render(
53 + req: ExpressRequest,
54 + res: ExpressResponse,
55 + component: ReactElement,
56 + actionResult?: any,
57 +) {
58 + // Render RSC payload.
59 + let root: any = component;
60 + if (actionResult) {
61 + root = {result: actionResult, root};
62 + }
63 + let stream = renderToReadableStream(root);
64 + if (req.accepts('text/html')) {
65 + res.setHeader('Content-Type', 'text/html');
66 +
67 + // Use client react to render the RSC payload to HTML.
68 + let [s1, s2] = stream.tee();
69 + let data = createFromReadableStream<ReactElement>(s1);
70 + function Content() {
71 + return ReactClient.use(data);
72 + }
73 +
74 + let htmlStream = await renderHTMLToReadableStream(<Content />);
75 + let response = htmlStream.pipeThrough(injectRSCPayload(s2));
76 + Readable.fromWeb(response as NodeReadableStream).pipe(res);
77 + } else {
78 + res.set('Content-Type', 'text/x-component');
79 + Readable.fromWeb(stream as NodeReadableStream).pipe(res);
80 + }
81 +}
82 +
83 +// Handle server actions.
84 +async function handleAction(
85 + req: ExpressRequest,
86 + res: ExpressResponse,
87 + component: ReactElement,
88 +) {
89 + let id = req.get('rsc-action-id');
90 + let request = new Request('http://localhost' + req.url, {
91 + method: 'POST',
92 + headers: req.headers as any,
93 + body: Readable.toWeb(req) as ReadableStream,
94 + // @ts-ignore
95 + duplex: 'half',
96 + });
97 +
98 + if (id) {
99 + let action = await loadServerAction(id);
100 + let body = req.is('multipart/form-data')
101 + ? await request.formData()
102 + : await request.text();
103 + let args = await decodeReply<any[]>(body);
104 + let result = action.apply(null, args);
105 + try {
106 + // Wait for any mutations
107 + await result;
108 + } catch (x) {
109 + // We handle the error on the client
110 + }
111 +
112 + await render(req, res, component, result);
113 + } else {
114 + // Form submitted by browser (progressive enhancement).
115 + let formData = await request.formData();
116 + let action = await decodeAction(formData);
117 + try {
118 + // Wait for any mutations
119 + await action();
120 + } catch (err) {
121 + // TODO render error page?
122 + }
123 + await render(req, res, component);
124 + }
125 +}
126 +
127 +let server = app.listen(3001);
128 +console.log('Server listening on port 3001');
129 +
130 +// Restart the server when it changes.
131 +if (module.hot) {
132 + module.hot.dispose(() => {
133 + server.close();
134 + });
135 +
136 + module.hot.accept();
137 +}
fixtures/flight-parcel/tsconfig.json new
+12
@@ -0,0 +1,12 @@
1 +{
2 + "compilerOptions": {
3 + "strict": true,
4 + "jsx": "react-jsx",
5 + "allowSyntheticDefaultImports": true,
6 + "moduleResolution": "node",
7 + "module": "esnext",
8 + "isolatedModules": true,
9 + "esModuleInterop": true,
10 + "target": "es2022"
11 + }
12 +}
fixtures/flight-parcel/types.d.ts new
+21
@@ -0,0 +1,21 @@
1 +// TODO: move these into their respective packages.
2 +
3 +declare module 'react-server-dom-parcel/client' {
4 + export function createFromFetch<T>(res: Promise<Response>): Promise<T>;
5 + export function createFromReadableStream<T>(stream: ReadableStream): Promise<T>;
6 + export function encodeReply(value: any): Promise<string | URLSearchParams | FormData>;
7 +
8 + type CallServerCallback = <T>(id: string, args: any[]) => Promise<T>;
9 + export function setServerCallback(cb: CallServerCallback): void;
10 +}
11 +
12 +declare module 'react-server-dom-parcel/server.edge' {
13 + export function renderToReadableStream(value: any): ReadableStream;
14 + export function loadServerAction(id: string): Promise<(...args: any[]) => any>;
15 + export function decodeReply<T>(body: string | FormData): Promise<T>;
16 + export function decodeAction(body: FormData): Promise<(...args: any[]) => any>;
17 +}
18 +
19 +declare module '@parcel/runtime-rsc' {
20 + export function Resources(): JSX.Element;
21 +}
fixtures/flight-parcel/yarn.lock new
+2330
@@ -0,0 +1,2330 @@
1 +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 +# yarn lockfile v1
3 +
4 +
5 +"@babel/code-frame@^7.0.0":
6 + version "7.26.2"
7 + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
8 + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
9 + dependencies:
10 + "@babel/helper-validator-identifier" "^7.25.9"
11 + js-tokens "^4.0.0"
12 + picocolors "^1.0.0"
13 +
14 +"@babel/helper-validator-identifier@^7.25.9":
15 + version "7.25.9"
16 + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
17 + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
18 +
19 +"@babel/runtime@^7.21.0":
20 + version "7.26.0"
21 + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1"
22 + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==
23 + dependencies:
24 + regenerator-runtime "^0.14.0"
25 +
26 +"@lezer/common@^1.0.0":
27 + version "1.2.3"
28 + resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.3.tgz#138fcddab157d83da557554851017c6c1e5667fd"
29 + integrity sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==
30 +
31 +"@lezer/lr@^1.0.0":
32 + version "1.4.2"
33 + resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.2.tgz#931ea3dea8e9de84e90781001dae30dea9ff1727"
34 + integrity sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==
35 + dependencies:
36 + "@lezer/common" "^1.0.0"
37 +
38 +"@lmdb/lmdb-darwin-arm64@2.8.5":
39 + version "2.8.5"
40 + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.8.5.tgz#895d8cb16a9d709ce5fedd8b60022903b875e08e"
41 + integrity sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw==
42 +
43 +"@lmdb/lmdb-darwin-x64@2.8.5":
44 + version "2.8.5"
45 + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.8.5.tgz#ca243534c8b37d5516c557e4624256d18dd63184"
46 + integrity sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug==
47 +
48 +"@lmdb/lmdb-linux-arm64@2.8.5":
49 + version "2.8.5"
50 + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.8.5.tgz#b44a8023057e21512eefb9f6120096843b531c1e"
51 + integrity sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww==
52 +
53 +"@lmdb/lmdb-linux-arm@2.8.5":
54 + version "2.8.5"
55 + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.8.5.tgz#17bd54740779c3e4324e78e8f747c21416a84b3d"
56 + integrity sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg==
57 +
58 +"@lmdb/lmdb-linux-x64@2.8.5":
59 + version "2.8.5"
60 + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.8.5.tgz#6c61835b6cc58efdf79dbd5e8c72a38300a90302"
61 + integrity sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ==
62 +
63 +"@lmdb/lmdb-win32-x64@2.8.5":
64 + version "2.8.5"
65 + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.8.5.tgz#8233e8762440b0f4632c47a09b1b6f23de8b934c"
66 + integrity sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ==
67 +
68 +"@mischnic/json-sourcemap@^0.1.0":
69 + version "0.1.1"
70 + resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz#0ef9b015a8f575dd9a8720d9a6b4dbc988425906"
71 + integrity sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==
72 + dependencies:
73 + "@lezer/common" "^1.0.0"
74 + "@lezer/lr" "^1.0.0"
75 + json5 "^2.2.1"
76 +
77 +"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3":
78 + version "3.0.3"
79 + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz#9edec61b22c3082018a79f6d1c30289ddf3d9d11"
80 + integrity sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==
81 +
82 +"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3":
83 + version "3.0.3"
84 + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz#33677a275204898ad8acbf62734fc4dc0b6a4855"
85 + integrity sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==
86 +
87 +"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3":
88 + version "3.0.3"
89 + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz#19edf7cdc2e7063ee328403c1d895a86dd28f4bb"
90 + integrity sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==
91 +
92 +"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3":
93 + version "3.0.3"
94 + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz#94fb0543ba2e28766c3fc439cabbe0440ae70159"
95 + integrity sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==
96 +
97 +"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3":
98 + version "3.0.3"
99 + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz#4a0609ab5fe44d07c9c60a11e4484d3c38bbd6e3"
100 + integrity sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==
101 +
102 +"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3":
103 + version "3.0.3"
104 + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz#0aa5502d547b57abfc4ac492de68e2006e417242"
105 + integrity sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==
106 +
107 +"@parcel/bundler-default@2.0.0-dev.1789+0b82b13d6":
108 + version "2.0.0-dev.1789"
109 + resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.0.0-dev.1789.tgz#815e0e6c96046621eead2fb0c71c1ac3337b39ec"
110 + integrity sha512-UCXy0G/kbJnB5fLbzU9dRdmRT3dbPAFvyHSWgOXeNZG1qn2ckGXQJFEoIfhtvpoGPUb4b0EM+vM4mOwnkXYziQ==
111 + dependencies:
112 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
113 + "@parcel/graph" "3.3.3-dev.3412+0b82b13d6"
114 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
115 + "@parcel/rust" "2.13.3-dev.3412+0b82b13d6"
116 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
117 + nullthrows "^1.1.1"
118 +
119 +"@parcel/cache@2.0.0-dev.1789+0b82b13d6":
120 + version "2.0.0-dev.1789"
121 + resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.0.0-dev.1789.tgz#19e63615bba7b1a0871fef38263ed89759722bd8"
122 + integrity sha512-/Vzv6w8JE+vgPA+5zXIntgXRLeg9YA6nOMhA2OGyjHnMouNeyUggPjalTtv+upxkPwRyME4DT4fq8Pzx/EsC6w==
123 + dependencies:
124 + "@parcel/fs" "2.0.0-dev.1789+0b82b13d6"
125 + "@parcel/logger" "2.0.0-dev.1789+0b82b13d6"
126 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
127 + lmdb "2.8.5"
128 +
129 +"@parcel/codeframe@2.0.0-dev.1789+0b82b13d6":
130 + version "2.0.0-dev.1789"
131 + resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.0.0-dev.1789.tgz#60ce9718e8d7d472d472f2d1e8bbd9dc8af7e8ac"
132 + integrity sha512-a6loCDmJHg/87bAL7+Nu4fN09ByXqO16vUGpO/YCZk0Ub6CypCqE7UX+t4OQFmpImGy52OkbuMSeAFNPKb+FyQ==
133 + dependencies:
134 + chalk "^4.1.2"
135 +
136 +"@parcel/compressor-raw@2.13.3-dev.3412+0b82b13d6":
137 + version "2.13.3-dev.3412"
138 + resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.13.3-dev.3412.tgz#b61fa5341a51c28587e82c86f8dbc3e0ae3452ec"
139 + integrity sha512-rF+LwyX8X9o48cIfVOZGl1YcR1VZlH/C0TkLab8yEDeue7PwKaVJczdJDR1z+1KHQt7bZRtAu+Thz/PjSeHP4w==
140 + dependencies:
141 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
142 +
143 +"@parcel/config-default@2.0.0-dev.1789", "@parcel/config-default@2.0.0-dev.1789+0b82b13d6":
144 + version "2.0.0-dev.1789"
145 + resolved "https://registry.yarnpkg.com/@parcel/config-default/-/config-default-2.0.0-dev.1789.tgz#5dc90f7733cf5b49a62448dfe5603de47ce9c364"
146 + integrity sha512-mfXeHjrCQaT+8N9TjAmNHq2rA7JPTux1hDjVg5A84gkwXTkO2V4j8GTARq6Bdz2MoH7PuKcDNwsU8eQpMzpTEg==
147 + dependencies:
148 + "@parcel/bundler-default" "2.0.0-dev.1789+0b82b13d6"
149 + "@parcel/compressor-raw" "2.13.3-dev.3412+0b82b13d6"
150 + "@parcel/namer-default" "2.0.0-dev.1789+0b82b13d6"
151 + "@parcel/optimizer-css" "2.13.3-dev.3412+0b82b13d6"
152 + "@parcel/optimizer-htmlnano" "2.0.0-dev.1789+0b82b13d6"
153 + "@parcel/optimizer-image" "2.13.3-dev.3412+0b82b13d6"
154 + "@parcel/optimizer-svgo" "2.13.3-dev.3412+0b82b13d6"
155 + "@parcel/optimizer-swc" "2.13.3-dev.3412+0b82b13d6"
156 + "@parcel/packager-css" "2.0.0-dev.1789+0b82b13d6"
157 + "@parcel/packager-html" "2.0.0-dev.1789+0b82b13d6"
158 + "@parcel/packager-js" "2.0.0-dev.1789+0b82b13d6"
159 + "@parcel/packager-raw" "2.0.0-dev.1789+0b82b13d6"
160 + "@parcel/packager-svg" "2.13.3-dev.3412+0b82b13d6"
161 + "@parcel/packager-wasm" "2.13.3-dev.3412+0b82b13d6"
162 + "@parcel/reporter-dev-server" "2.0.0-dev.1789+0b82b13d6"
163 + "@parcel/resolver-default" "2.0.0-dev.1789+0b82b13d6"
164 + "@parcel/runtime-browser-hmr" "2.0.0-dev.1789+0b82b13d6"
165 + "@parcel/runtime-js" "2.0.0-dev.1789+0b82b13d6"
166 + "@parcel/runtime-react-refresh" "2.0.0-dev.1789+0b82b13d6"
167 + "@parcel/runtime-service-worker" "2.13.3-dev.3412+0b82b13d6"
168 + "@parcel/transformer-babel" "2.0.0-dev.1789+0b82b13d6"
169 + "@parcel/transformer-css" "2.0.0-dev.1789+0b82b13d6"
170 + "@parcel/transformer-html" "2.0.0-dev.1789+0b82b13d6"
171 + "@parcel/transformer-image" "2.13.3-dev.3412+0b82b13d6"
172 + "@parcel/transformer-js" "2.0.0-dev.1789+0b82b13d6"
173 + "@parcel/transformer-json" "2.0.0-dev.1789+0b82b13d6"
174 + "@parcel/transformer-postcss" "2.0.0-dev.1789+0b82b13d6"
175 + "@parcel/transformer-posthtml" "2.0.0-dev.1789+0b82b13d6"
176 + "@parcel/transformer-raw" "2.0.0-dev.1789+0b82b13d6"
177 + "@parcel/transformer-react-refresh-wrap" "2.0.0-dev.1789+0b82b13d6"
178 + "@parcel/transformer-svg" "2.13.3-dev.3412+0b82b13d6"
179 +
180 +"@parcel/core@2.0.0-dev.1787+0b82b13d6":
181 + version "2.0.0-dev.1787"
182 + resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.0.0-dev.1787.tgz#95c757595d4a9e6dbdf7a7efe3337bfc1c6bd616"
183 + integrity sha512-yyLhl32e4e5cJLFMOPRIMiOZRxh9K7t/KU3E3wOok+BURevMFtPhDlLy94BbJAvYycCw91uiY1bQdyej+MPcQg==
184 + dependencies:
185 + "@mischnic/json-sourcemap" "^0.1.0"
186 + "@parcel/cache" "2.0.0-dev.1789+0b82b13d6"
187 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
188 + "@parcel/events" "2.0.0-dev.1789+0b82b13d6"
189 + "@parcel/feature-flags" "2.13.3-dev.3412+0b82b13d6"
190 + "@parcel/fs" "2.0.0-dev.1789+0b82b13d6"
191 + "@parcel/graph" "3.3.3-dev.3412+0b82b13d6"
192 + "@parcel/logger" "2.0.0-dev.1789+0b82b13d6"
193 + "@parcel/package-manager" "2.0.0-dev.1789+0b82b13d6"
194 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
195 + "@parcel/profiler" "2.13.3-dev.3412+0b82b13d6"
196 + "@parcel/rust" "2.13.3-dev.3412+0b82b13d6"
197 + "@parcel/source-map" "^2.1.1"
198 + "@parcel/types" "2.0.0-dev.1789+0b82b13d6"
199 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
200 + "@parcel/workers" "2.0.0-dev.1789+0b82b13d6"
201 + base-x "^3.0.8"
202 + browserslist "^4.6.6"
203 + clone "^2.1.1"
204 + dotenv "^16.4.5"
205 + dotenv-expand "^11.0.6"
206 + json5 "^2.2.0"
207 + msgpackr "^1.9.9"
208 + nullthrows "^1.1.1"
209 + semver "^7.5.2"
210 +
211 +"@parcel/diagnostic@2.0.0-dev.1789+0b82b13d6":
212 + version "2.0.0-dev.1789"
213 + resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.0.0-dev.1789.tgz#0be5c2e675c7488f79e26efc3cd8a77500ae3cf5"
214 + integrity sha512-TvTGBOCIeRDgWShhKRL1G/p78kCrqEP7m6k2QHuY3tHWO7rsXr25zUDec4G/u0knpuUwxaivuX5f7b5jPPD7Rg==
215 + dependencies:
216 + "@mischnic/json-sourcemap" "^0.1.0"
217 + nullthrows "^1.1.1"
218 +
219 +"@parcel/events@2.0.0-dev.1789+0b82b13d6":
220 + version "2.0.0-dev.1789"
221 + resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.0.0-dev.1789.tgz#16776859ec582ed05dd24e5edd34a1f7e78170ed"
222 + integrity sha512-jHuRvZrNerTjY7KvqVhtdZgyC4vv2QTE599Fh2EZeEXU7d+SQmDIoMeZwqUPy9Q8FW+SOVvgl1YQ6Mhc/NNyNA==
223 +
224 +"@parcel/feature-flags@2.13.3-dev.3412+0b82b13d6":
225 + version "2.13.3-dev.3412"
226 + resolved "https://registry.yarnpkg.com/@parcel/feature-flags/-/feature-flags-2.13.3-dev.3412.tgz#e823b957d364158d7c189ba179ad20142b8237ba"
227 + integrity sha512-GClA//tlUQHuiBe+Lw/zDP85Ri5F/fZshOZ9Z6q/x3CWrDmdZVwInkQWC9CYsILXPGU7b4ZW6XdEsB6Rbrnt+Q==
228 +
229 +"@parcel/fs@2.0.0-dev.1789+0b82b13d6":
230 + version "2.0.0-dev.1789"
231 + resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.0.0-dev.1789.tgz#49c1b1a9e41ccf70334265adaec696e8f71ce92f"
232 + integrity sha512-9dLlvCCUyY1g6A8tGfIx03Q/T1gZlKWjQ0n3Tla5HiWe+4QG5X0vuToOjVxr66Ju1GJImwj3qNzMv0wkmhj7mw==
233 + dependencies:
234 + "@parcel/feature-flags" "2.13.3-dev.3412+0b82b13d6"
235 + "@parcel/rust" "2.13.3-dev.3412+0b82b13d6"
236 + "@parcel/types-internal" "2.13.3-dev.3412+0b82b13d6"
237 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
238 + "@parcel/watcher" "^2.0.7"
239 + "@parcel/workers" "2.0.0-dev.1789+0b82b13d6"
240 +
241 +"@parcel/graph@3.3.3-dev.3412+0b82b13d6":
242 + version "3.3.3-dev.3412"
243 + resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-3.3.3-dev.3412.tgz#3913c41f7052c73c4157ddf80b0d6c134e0d45c9"
244 + integrity sha512-ADEMR+Bg+nIjaliyYCGUPK7iyiaNU0x3MNRylg9GMXoB4bfUqCGsWzpR4FYGbSUijVnDOfQfaoHZVI5hwopATg==
245 + dependencies:
246 + "@parcel/feature-flags" "2.13.3-dev.3412+0b82b13d6"
247 + nullthrows "^1.1.1"
248 +
249 +"@parcel/logger@2.0.0-dev.1789+0b82b13d6":
250 + version "2.0.0-dev.1789"
251 + resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.0.0-dev.1789.tgz#fd1f9786210b10d3e3447e824fc17599b1cd7014"
252 + integrity sha512-1StCxPppvriJLiI8bF/gmdHM00qnJTdq8vs83gA8l1OeL/g3LtAyRKznraRwBhMtagN5UB4JKBLIpPaUlTZlng==
253 + dependencies:
254 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
255 + "@parcel/events" "2.0.0-dev.1789+0b82b13d6"
256 +
257 +"@parcel/markdown-ansi@2.0.0-dev.1789+0b82b13d6":
258 + version "2.0.0-dev.1789"
259 + resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.0.0-dev.1789.tgz#089789e3e6b4b272ad6e634f204a3da68dce1892"
260 + integrity sha512-C4erPSJiVtHmbTf9LU9Q8fNwzdvZn9RPeZ8fbbl1k6vcCKBh7i/pTnKI/ijz/cFEa6ThBvim+0FR6BaBa9RtMA==
261 + dependencies:
262 + chalk "^4.1.2"
263 +
264 +"@parcel/namer-default@2.0.0-dev.1789+0b82b13d6":
265 + version "2.0.0-dev.1789"
266 + resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.0.0-dev.1789.tgz#1260d41e9721e06d4caedaada52dbebe6c0f6f57"
267 + integrity sha512-xKRfmUeGQXpxbAQR/oDRt0ti1bA6OcEmd74MCNQiJnRErNA/qqxiRhqaOYNfIXD80s2cWmIuFy1s1kRB1NiCWA==
268 + dependencies:
269 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
270 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
271 + nullthrows "^1.1.1"
272 +
273 +"@parcel/node-resolver-core@3.4.3-dev.3412+0b82b13d6":
274 + version "3.4.3-dev.3412"
275 + resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-3.4.3-dev.3412.tgz#dcf90ac15ae9b2e397a57d75aaed625c1b5e0a42"
276 + integrity sha512-tE8S192z/uiDxRgTs8TVw6+XylHsgv7IAkFWw1RfKaWQHxl5Pi57yM6MIl42tgChgcUfhChqf5qkZAiBPgaQ0g==
277 + dependencies:
278 + "@mischnic/json-sourcemap" "^0.1.0"
279 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
280 + "@parcel/fs" "2.0.0-dev.1789+0b82b13d6"
281 + "@parcel/rust" "2.13.3-dev.3412+0b82b13d6"
282 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
283 + nullthrows "^1.1.1"
284 + semver "^7.5.2"
285 +
286 +"@parcel/optimizer-css@2.13.3-dev.3412+0b82b13d6":
287 + version "2.13.3-dev.3412"
288 + resolved "https://registry.yarnpkg.com/@parcel/optimizer-css/-/optimizer-css-2.13.3-dev.3412.tgz#6f1d7e6963a49d6586c00a57bedc0dfcf00a5810"
289 + integrity sha512-cNvDfgS6Kp8Y+uEsWgm+I7wnuo6myntvY3cD5osvhybFitmmobosoqNL6aMmMm1onVxYH4QMgqOW06lT5ggmvg==
290 + dependencies:
291 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
292 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
293 + "@parcel/source-map" "^2.1.1"
294 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
295 + browserslist "^4.6.6"
296 + lightningcss "^1.22.1"
297 + nullthrows "^1.1.1"
298 +
299 +"@parcel/optimizer-htmlnano@2.0.0-dev.1789+0b82b13d6":
300 + version "2.0.0-dev.1789"
301 + resolved "https://registry.yarnpkg.com/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.0.0-dev.1789.tgz#1874dd4677602ca89c76ca1c03712bf3ea4de229"
302 + integrity sha512-sRCzArD9pwoliZ0h3KQN0ILKQpy9MyTJBuD8Ptwv/IakvwP0bg4dvisW5o3ELH2jyq9KSP3Gz/oJ2fQUF4xm8A==
303 + dependencies:
304 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
305 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
306 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
307 + htmlnano "^2.0.0"
308 + nullthrows "^1.1.1"
309 + posthtml "^0.16.5"
310 +
311 +"@parcel/optimizer-image@2.13.3-dev.3412+0b82b13d6":
312 + version "2.13.3-dev.3412"
313 + resolved "https://registry.yarnpkg.com/@parcel/optimizer-image/-/optimizer-image-2.13.3-dev.3412.tgz#3918e075c24749d72f29e12e7ef566d8cbc690ba"
314 + integrity sha512-w+IN2lmrX3f4Vk+WUg+m4hUKFl5ae+0mzXa+0u7MIIaqe136kfSBE53I2E5reqQVoieWybuUfnQYbVUANKjUXg==
315 + dependencies:
316 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
317 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
318 + "@parcel/rust" "2.13.3-dev.3412+0b82b13d6"
319 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
320 + "@parcel/workers" "2.0.0-dev.1789+0b82b13d6"
321 +
322 +"@parcel/optimizer-svgo@2.13.3-dev.3412+0b82b13d6":
323 + version "2.13.3-dev.3412"
324 + resolved "https://registry.yarnpkg.com/@parcel/optimizer-svgo/-/optimizer-svgo-2.13.3-dev.3412.tgz#643b3596957e163e2c143ca8abfd74ed29489ccf"
325 + integrity sha512-Qm+5F5iFtymzDpR2szA/SrdZgfMrTBmQxFee92XHxGjjlyIujcfBspCMLxkGb5HwUcqgbc+dIXOmOlf4FROCMg==
326 + dependencies:
327 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
328 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
329 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
330 +
331 +"@parcel/optimizer-swc@2.13.3-dev.3412+0b82b13d6":
332 + version "2.13.3-dev.3412"
333 + resolved "https://registry.yarnpkg.com/@parcel/optimizer-swc/-/optimizer-swc-2.13.3-dev.3412.tgz#49821dd7bdaf0f5f4f3f283f2986fa03fb0558af"
334 + integrity sha512-hpHkrFOyRNRzAfjPpFgJpICVSOmIgfFc3+toR3O8vpV4vhQu8O6uZaRlIt+LZR/5FFI8kVA0RVPkUmTiYg4Arw==
335 + dependencies:
336 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
337 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
338 + "@parcel/source-map" "^2.1.1"
339 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
340 + "@swc/core" "^1.7.26"
341 + nullthrows "^1.1.1"
342 +
343 +"@parcel/package-manager@2.0.0-dev.1789+0b82b13d6":
344 + version "2.0.0-dev.1789"
345 + resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.0.0-dev.1789.tgz#1b1282ffb5e2a51998c095fdb0ef6b400cef14c2"
346 + integrity sha512-6lZLvyS6W1i806rWXCj4GywmFKc2zt1s2Tk0sSI+tmyj1wZvYq3iBwhBYsZ9xFikec5eDS2oXfIITD0bnbDYxA==
347 + dependencies:
348 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
349 + "@parcel/fs" "2.0.0-dev.1789+0b82b13d6"
350 + "@parcel/logger" "2.0.0-dev.1789+0b82b13d6"
351 + "@parcel/node-resolver-core" "3.4.3-dev.3412+0b82b13d6"
352 + "@parcel/types" "2.0.0-dev.1789+0b82b13d6"
353 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
354 + "@parcel/workers" "2.0.0-dev.1789+0b82b13d6"
355 + "@swc/core" "^1.7.26"
356 + semver "^7.5.2"
357 +
358 +"@parcel/packager-css@2.0.0-dev.1789+0b82b13d6":
359 + version "2.0.0-dev.1789"
360 + resolved "https://registry.yarnpkg.com/@parcel/packager-css/-/packager-css-2.0.0-dev.1789.tgz#8d076a20f628b021bbc25b8ede1e2f28cd518c2c"
361 + integrity sha512-Oqq/9o+q/COi1k8pD5529XZJUR/n3QNLi0Rlvfclb1PFBurk21WL3huFlii1MXqdtxN0KqP8m9GMpbic+km7BQ==
362 + dependencies:
363 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
364 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
365 + "@parcel/source-map" "^2.1.1"
366 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
367 + lightningcss "^1.22.1"
368 + nullthrows "^1.1.1"
369 +
370 +"@parcel/packager-html@2.0.0-dev.1789+0b82b13d6":
371 + version "2.0.0-dev.1789"
372 + resolved "https://registry.yarnpkg.com/@parcel/packager-html/-/packager-html-2.0.0-dev.1789.tgz#cb9c0e83c2a63283eaa25848e89ab608f6c63f82"
373 + integrity sha512-jz14m6z5PoE5W58hzbWhle4A/TH5y4X9JTIume8ts13P+xbcSLpCxzqVT9OglleHIxlZbseiKG1PRBaa/ZDh8Q==
374 + dependencies:
375 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
376 + "@parcel/types" "2.0.0-dev.1789+0b82b13d6"
377 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
378 + nullthrows "^1.1.1"
379 + posthtml "^0.16.5"
380 +
381 +"@parcel/packager-js@2.0.0-dev.1789+0b82b13d6":
382 + version "2.0.0-dev.1789"
383 + resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.0.0-dev.1789.tgz#7b8f38f05c4fc83b31770aec0fb2b3b0624f515b"
384 + integrity sha512-MSbdZsbD56258/okHC+D8PsSNyz5ziD6I6dEx9bOTq7x8RjFowa9yQS1fcN0ua+kSqqDkKk3B3lX6+jxvFeX8w==
385 + dependencies:
386 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
387 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
388 + "@parcel/rust" "2.13.3-dev.3412+0b82b13d6"
389 + "@parcel/source-map" "^2.1.1"
390 + "@parcel/types" "2.0.0-dev.1789+0b82b13d6"
391 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
392 + globals "^13.2.0"
393 + nullthrows "^1.1.1"
394 +
395 +"@parcel/packager-raw@2.0.0-dev.1789+0b82b13d6":
396 + version "2.0.0-dev.1789"
397 + resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.0.0-dev.1789.tgz#017048d8cee41f6971c57f3ea9021f5cb76fc54b"
398 + integrity sha512-dwWwzxp8rL9x5JLoF8gOukKp3cWXn4UpfwPEo1lgCElYRO+QEdui4mWPT6Ci8WAK4Nr/kDY6PqX4Vyf/erJpvg==
399 + dependencies:
400 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
401 +
402 +"@parcel/packager-svg@2.13.3-dev.3412+0b82b13d6":
403 + version "2.13.3-dev.3412"
404 + resolved "https://registry.yarnpkg.com/@parcel/packager-svg/-/packager-svg-2.13.3-dev.3412.tgz#f6a8928c06347c1286bbfd9fb92f019cf9a9fd63"
405 + integrity sha512-kUNENa6nhT84a/8L5u+S8MiN6EUVKiRdlD8aYUF0xxbiTYvt/uDboUxvHHPZuoNp9I1TmQqX7sQ1yivEVIccyA==
406 + dependencies:
407 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
408 + "@parcel/types" "2.0.0-dev.1789+0b82b13d6"
409 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
410 + posthtml "^0.16.4"
411 +
412 +"@parcel/packager-wasm@2.13.3-dev.3412+0b82b13d6":
413 + version "2.13.3-dev.3412"
414 + resolved "https://registry.yarnpkg.com/@parcel/packager-wasm/-/packager-wasm-2.13.3-dev.3412.tgz#c7eb96fcb65bbf1e550cadd8d05f521fe4651644"
415 + integrity sha512-b3mYX+TOYySN0KGLOe8Vz+eas2vNGnF2qLvrd3h8FvrgxUDiOaWRFQZ1Ep13/+8VyIbSrOuTVznau7jz4Ee2Cg==
416 + dependencies:
417 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
418 +
419 +"@parcel/plugin@2.0.0-dev.1789+0b82b13d6":
420 + version "2.0.0-dev.1789"
421 + resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.0.0-dev.1789.tgz#b4678e9197352e1e6b734913580ee826f10d2f5a"
422 + integrity sha512-zxWiQ/aXiD6qYPPs8Q0GQd+sYWJcDuOQPc6wuDFxehiBw1+cEL5EeJyKCdeh7HoYuCZHDEnKjK+f3k511zTzTw==
423 + dependencies:
424 + "@parcel/types" "2.0.0-dev.1789+0b82b13d6"
425 +
426 +"@parcel/profiler@2.13.3-dev.3412+0b82b13d6":
427 + version "2.13.3-dev.3412"
428 + resolved "https://registry.yarnpkg.com/@parcel/profiler/-/profiler-2.13.3-dev.3412.tgz#a271b4402150ae19534ea19f9c25d7f61663eaf5"
429 + integrity sha512-a6btgthz0hRDy6ASQgGb/HQSxvrV0B5VfVYkL+QjTSdcybXklMTrP0qHHBoUkOWCpJ/xePvu3JzKhOlc76W2hw==
430 + dependencies:
431 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
432 + "@parcel/events" "2.0.0-dev.1789+0b82b13d6"
433 + "@parcel/types-internal" "2.13.3-dev.3412+0b82b13d6"
434 + chrome-trace-event "^1.0.2"
435 +
436 +"@parcel/reporter-cli@2.0.0-dev.1789+0b82b13d6":
437 + version "2.0.0-dev.1789"
438 + resolved "https://registry.yarnpkg.com/@parcel/reporter-cli/-/reporter-cli-2.0.0-dev.1789.tgz#d5822f505bbdb1fe9d460015acc4c44b0666c37e"
439 + integrity sha512-M6J3P/eVfQXCt4+VcQVS05AB5IyH7SmI9iPTKH9E30gORdndciydgQLsdoU/nx1N2c33x41P/8hHfpqUKzGvHg==
440 + dependencies:
441 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
442 + "@parcel/types" "2.0.0-dev.1789+0b82b13d6"
443 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
444 + chalk "^4.1.2"
445 + term-size "^2.2.1"
446 +
447 +"@parcel/reporter-dev-server@2.0.0-dev.1789+0b82b13d6":
448 + version "2.0.0-dev.1789"
449 + resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.0.0-dev.1789.tgz#86377aeffc57539732624ca56ea74ec7042ce783"
450 + integrity sha512-8Xmh8YEd9QN7TgwicOSsL2Vdtk5JWoXu4lIvLLn96ux8pHs8ReVE/r2o29xsIwy43uhRQbwYSX8tG1FDxUnuiw==
451 + dependencies:
452 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
453 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
454 +
455 +"@parcel/reporter-tracer@2.13.3-dev.3412+0b82b13d6":
456 + version "2.13.3-dev.3412"
457 + resolved "https://registry.yarnpkg.com/@parcel/reporter-tracer/-/reporter-tracer-2.13.3-dev.3412.tgz#f953447f6132a69895fbc27f65fb3d2ca541071e"
458 + integrity sha512-oKoact1zmzW6bcbAg0X3JVZ2zZjovFqpTc/6P2vdF2FiBAwaafq4RdTRPdAh8z1YnqJU3Kh1ONaY+wfTzxCtYQ==
459 + dependencies:
460 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
461 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
462 + chrome-trace-event "^1.0.3"
463 + nullthrows "^1.1.1"
464 +
465 +"@parcel/resolver-default@2.0.0-dev.1789+0b82b13d6":
466 + version "2.0.0-dev.1789"
467 + resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.0.0-dev.1789.tgz#54bfa782a4dc687ce3c9ca9c2d80f37b176a28df"
468 + integrity sha512-h6YC6BZJcNFW1Wz7x3PXFyFTjyrPfjybtmObEUWgFQVkqwGfGRiNfpQqdNDNeABeE0Fn46dX/FymQ7u4LzQPVg==
469 + dependencies:
470 + "@parcel/node-resolver-core" "3.4.3-dev.3412+0b82b13d6"
471 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
472 +
473 +"@parcel/runtime-browser-hmr@2.0.0-dev.1789+0b82b13d6":
474 + version "2.0.0-dev.1789"
475 + resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.0.0-dev.1789.tgz#c5ba22bb7afeb3ad8acc48d47176fd57f1fb33e6"
476 + integrity sha512-0Kqd2Wlc+piflkz46YIEz0+FglS6BBzyREW0e8rYbD2BHlnunbifl7E4e899UdfWSjRUFa1brHlUBFjidGwQgQ==
477 + dependencies:
478 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
479 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
480 +
481 +"@parcel/runtime-js@2.0.0-dev.1789+0b82b13d6":
482 + version "2.0.0-dev.1789"
483 + resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.0.0-dev.1789.tgz#324661b5976a8ef982fd53dfde20ebc1b84c03f8"
484 + integrity sha512-2mxG1sZgTDoMddBcrRa/vaqUaVtMUw5Sn+DonubGn68SJdQ9JWzJt5dmpy2mbleCBlFjRI5X8jjNfvbFciLkAw==
485 + dependencies:
486 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
487 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
488 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
489 + nullthrows "^1.1.1"
490 +
491 +"@parcel/runtime-react-refresh@2.0.0-dev.1789+0b82b13d6":
492 + version "2.0.0-dev.1789"
493 + resolved "https://registry.yarnpkg.com/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.0.0-dev.1789.tgz#08d92779681acd628a7e86284c3c13338723e0b4"
494 + integrity sha512-3TCh5PHa7e+NQ4ZHCDPTZNrOiV1BDJdl7zFkjMyl8BWOa80cJbt3F0PrF5xx+VVQ3LtMoQH3RtjsvyfoHlhn9Q==
495 + dependencies:
496 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
497 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
498 + react-error-overlay "6.0.9"
499 + react-refresh ">=0.9 <=0.14"
500 +
501 +"@parcel/runtime-rsc@2.13.3-dev.3412":
502 + version "2.13.3-dev.3412"
503 + resolved "https://registry.yarnpkg.com/@parcel/runtime-rsc/-/runtime-rsc-2.13.3-dev.3412.tgz#434cc6afeff78027b6703af5ef27fdbbddd3d6df"
504 + integrity sha512-kz+kJWJkQhEDIcnJhiG5PbG2zX4hRkwwiS7aIbby/9rMHexaENy54KMA6+PbMLXZdSlq42HvUSPyW3nHOz7+ew==
505 + dependencies:
506 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
507 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
508 + nullthrows "^1.1.1"
509 +
510 +"@parcel/runtime-service-worker@2.13.3-dev.3412+0b82b13d6":
511 + version "2.13.3-dev.3412"
512 + resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.13.3-dev.3412.tgz#c59e6ce37e8e961d2f14b8bc03a5818a9f905cf7"
513 + integrity sha512-okUqDtRuFAknQpg7EhmOYvqCn8rTWAW3Ldcv/qD5OzfcQPAI/kmAACDEf1UOWzv7+SCKs1ihRZZ0AfW//j0VJQ==
514 + dependencies:
515 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
516 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
517 + nullthrows "^1.1.1"
518 +
519 +"@parcel/rust@2.13.3-dev.3412+0b82b13d6":
520 + version "2.13.3-dev.3412"
521 + resolved "https://registry.yarnpkg.com/@parcel/rust/-/rust-2.13.3-dev.3412.tgz#40016415f749f2d52b46e9bc32522b45e6f176ad"
522 + integrity sha512-Bqf7lcrs+FDZ1bUASwPTBC1SYKLO+8fjcP9VzTHHH0xgcv9wAVslzLwn2S3763rP3sZeQHlXLabO4nDUrqfxQw==
523 +
524 +"@parcel/source-map@^2.1.1":
525 + version "2.1.1"
526 + resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.1.1.tgz#fb193b82dba6dd62cc7a76b326f57bb35000a782"
527 + integrity sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==
528 + dependencies:
529 + detect-libc "^1.0.3"
530 +
531 +"@parcel/transformer-babel@2.0.0-dev.1789+0b82b13d6":
532 + version "2.0.0-dev.1789"
533 + resolved "https://registry.yarnpkg.com/@parcel/transformer-babel/-/transformer-babel-2.0.0-dev.1789.tgz#559177c6236a0b65ca9a22fbfba108030cef7534"
534 + integrity sha512-PLkE6NQGJfydZ+juCESwTbMrinfKwGYwEeYganBKmWCccnYUgSqKF4QWab2sMMXvXNnyazgE/NzPmgyBQEtW4A==
535 + dependencies:
536 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
537 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
538 + "@parcel/source-map" "^2.1.1"
539 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
540 + browserslist "^4.6.6"
541 + json5 "^2.2.0"
542 + nullthrows "^1.1.1"
543 + semver "^7.5.2"
544 +
545 +"@parcel/transformer-css@2.0.0-dev.1789+0b82b13d6":
546 + version "2.0.0-dev.1789"
547 + resolved "https://registry.yarnpkg.com/@parcel/transformer-css/-/transformer-css-2.0.0-dev.1789.tgz#b9144e0bcb7bfd0e64c0768bbb36d2a3c6b985ce"
548 + integrity sha512-TB0KorHhRHJ5C5AWdbXpbwao0g1rzQj0d/ptieoQUip3IBzEUjJn99YqpOCJI6AeOHZYMMcfUkdCEy7Aghk4Aw==
549 + dependencies:
550 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
551 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
552 + "@parcel/source-map" "^2.1.1"
553 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
554 + browserslist "^4.6.6"
555 + lightningcss "^1.22.1"
556 + nullthrows "^1.1.1"
557 +
558 +"@parcel/transformer-html@2.0.0-dev.1789+0b82b13d6":
559 + version "2.0.0-dev.1789"
560 + resolved "https://registry.yarnpkg.com/@parcel/transformer-html/-/transformer-html-2.0.0-dev.1789.tgz#ac382abafdfc1c4bb4de8a7bf7c0423084f67e69"
561 + integrity sha512-HDeTR0ah8mtHalB65BkbmUR1Xgi2BJmZNTRvUn6x3Rd6qS4YUzuAA5en6k64XruZOwP5nvhnkWR1Lwa/h9XfBQ==
562 + dependencies:
563 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
564 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
565 + "@parcel/rust" "2.13.3-dev.3412+0b82b13d6"
566 + nullthrows "^1.1.1"
567 + posthtml "^0.16.5"
568 + posthtml-parser "^0.12.1"
569 + posthtml-render "^3.0.0"
570 + semver "^7.5.2"
571 + srcset "4"
572 +
573 +"@parcel/transformer-image@2.13.3-dev.3412+0b82b13d6":
574 + version "2.13.3-dev.3412"
575 + resolved "https://registry.yarnpkg.com/@parcel/transformer-image/-/transformer-image-2.13.3-dev.3412.tgz#acd31d217748aa5ac95c7aa1562da47336e2dce1"
576 + integrity sha512-A3958b4pQYcSPYwdJn7oHPdGe7LXF7LC9kq/HA5jIcnY5iWqpmeZ0E4QxjuZcOCcMdezUTl9VOKy1Lo++g4YLQ==
577 + dependencies:
578 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
579 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
580 + "@parcel/workers" "2.0.0-dev.1789+0b82b13d6"
581 + nullthrows "^1.1.1"
582 +
583 +"@parcel/transformer-js@2.0.0-dev.1789+0b82b13d6":
584 + version "2.0.0-dev.1789"
585 + resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.0.0-dev.1789.tgz#bbd1a08f14d153a422ae2b1d8221e2af44a2a2f4"
586 + integrity sha512-FxdroHko0GONty4gM8lJ8gmftwFw+rRX+4m2i4fMOZ+ekARLAoSiQ7uhob2PcIuNeOPvzeHxjV6eg2F9skUasw==
587 + dependencies:
588 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
589 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
590 + "@parcel/rust" "2.13.3-dev.3412+0b82b13d6"
591 + "@parcel/source-map" "^2.1.1"
592 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
593 + "@parcel/workers" "2.0.0-dev.1789+0b82b13d6"
594 + "@swc/helpers" "^0.5.0"
595 + browserslist "^4.6.6"
596 + nullthrows "^1.1.1"
597 + regenerator-runtime "^0.14.1"
598 + semver "^7.5.2"
599 +
600 +"@parcel/transformer-json@2.0.0-dev.1789+0b82b13d6":
601 + version "2.0.0-dev.1789"
602 + resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.0.0-dev.1789.tgz#3f712d8e1343d65e5f92898d4c47723cfc10e877"
603 + integrity sha512-1u7UowT1KhzNviHJnhdHV8aULBM0JgOk9vOIAe+7aVXvl5SGQSO/s87oAxUcIodKePqkRIBU27dqf2i3VHBuoQ==
604 + dependencies:
605 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
606 + json5 "^2.2.0"
607 +
608 +"@parcel/transformer-postcss@2.0.0-dev.1789+0b82b13d6":
609 + version "2.0.0-dev.1789"
610 + resolved "https://registry.yarnpkg.com/@parcel/transformer-postcss/-/transformer-postcss-2.0.0-dev.1789.tgz#19ee839823eda37940b1edef6c81c4074894e695"
611 + integrity sha512-zzMXmUblf/4VrKPukvqM+24vTFx+W/x0POJwUJ9vcer+e2FV9gAPcYvMMdEHbqNoO6dcs7J4o/DnmqgCDF3IrQ==
612 + dependencies:
613 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
614 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
615 + "@parcel/rust" "2.13.3-dev.3412+0b82b13d6"
616 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
617 + clone "^2.1.1"
618 + nullthrows "^1.1.1"
619 + postcss-value-parser "^4.2.0"
620 + semver "^7.5.2"
621 +
622 +"@parcel/transformer-posthtml@2.0.0-dev.1789+0b82b13d6":
623 + version "2.0.0-dev.1789"
624 + resolved "https://registry.yarnpkg.com/@parcel/transformer-posthtml/-/transformer-posthtml-2.0.0-dev.1789.tgz#ac9f937485a748bf3cba1fb689488093ecb0e7db"
625 + integrity sha512-JNx5LhRh2W0D7pACy1APzr00EH/Lxm54p5BT0B+fAVavuQvyHdYjtLS1L/B3wBKIPQNJNqkgjatebH/OnGrZOQ==
626 + dependencies:
627 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
628 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
629 + nullthrows "^1.1.1"
630 + posthtml "^0.16.5"
631 + posthtml-parser "^0.12.1"
632 + posthtml-render "^3.0.0"
633 + semver "^7.5.2"
634 +
635 +"@parcel/transformer-raw@2.0.0-dev.1789+0b82b13d6":
636 + version "2.0.0-dev.1789"
637 + resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.0.0-dev.1789.tgz#0e2c5f826dabe7f929e06b54e1e91f1efec4e2c9"
638 + integrity sha512-LKq8UFFmERO4be0rjPkLC4yziXDMRbule7l6mSXMCh3t+TIlGu7K/8SWLidNQk8C8yxePt6sl5MYsend7rbYLA==
639 + dependencies:
640 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
641 +
642 +"@parcel/transformer-react-refresh-wrap@2.0.0-dev.1789+0b82b13d6":
643 + version "2.0.0-dev.1789"
644 + resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.0.0-dev.1789.tgz#12371b903f77de2d27aed2ddbf4cbdacbd3713e2"
645 + integrity sha512-nk9d4/XSv0kTrvEN0Rt8KbZrMpHRlPOlMvqlpRx+gGIZabT/XL67wg6CgzoVT/fLOF50B/9hHIs/ecpQQnDHGg==
646 + dependencies:
647 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
648 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
649 + react-refresh ">=0.9 <=0.14"
650 +
651 +"@parcel/transformer-svg@2.13.3-dev.3412+0b82b13d6":
652 + version "2.13.3-dev.3412"
653 + resolved "https://registry.yarnpkg.com/@parcel/transformer-svg/-/transformer-svg-2.13.3-dev.3412.tgz#76679120fb7599f27e2dd86c7b75108c97e58f83"
654 + integrity sha512-A9tRc+OjjZ5/UA0Ej6SHj1Rim7ue0379duV3mgk+VduvfEIZ1GQjgKgkrGpMJDZ/pPsoM23GLjLa/ZyYOFbV1A==
655 + dependencies:
656 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
657 + "@parcel/plugin" "2.0.0-dev.1789+0b82b13d6"
658 + "@parcel/rust" "2.13.3-dev.3412+0b82b13d6"
659 + nullthrows "^1.1.1"
660 + posthtml "^0.16.5"
661 + posthtml-parser "^0.12.1"
662 + posthtml-render "^3.0.0"
663 + semver "^7.5.2"
664 +
665 +"@parcel/types-internal@2.13.3-dev.3412+0b82b13d6":
666 + version "2.13.3-dev.3412"
667 + resolved "https://registry.yarnpkg.com/@parcel/types-internal/-/types-internal-2.13.3-dev.3412.tgz#47bbe12a0a9b51d6c11fed394e98af61c05d95af"
668 + integrity sha512-EKVDGRxLamtSeH7xAZUciz8eH5zQCExnhqlQNtsRB+9jFoz5hGlsGOX6U7rimSUbe6Hw1DtX9jo5SqtyVRZ+ug==
669 + dependencies:
670 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
671 + "@parcel/feature-flags" "2.13.3-dev.3412+0b82b13d6"
672 + "@parcel/source-map" "^2.1.1"
673 + utility-types "^3.10.0"
674 +
675 +"@parcel/types@2.0.0-dev.1789+0b82b13d6":
676 + version "2.0.0-dev.1789"
677 + resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.0.0-dev.1789.tgz#58f406fb572bd3687025bb34fcbdb77f6cf1b47a"
678 + integrity sha512-Jh6mHW1HPfwg/CRcNfQoZM9hr0nXvQhSXG+/AUxczcxYzc/KflReYHzyk4du4Z3dS/m9QT+3arVvbVhnZLsOeA==
679 + dependencies:
680 + "@parcel/types-internal" "2.13.3-dev.3412+0b82b13d6"
681 + "@parcel/workers" "2.0.0-dev.1789+0b82b13d6"
682 +
683 +"@parcel/utils@2.0.0-dev.1789+0b82b13d6":
684 + version "2.0.0-dev.1789"
685 + resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.0.0-dev.1789.tgz#5f9f208359fbf85c84a07102be6a34dc28bbf7af"
686 + integrity sha512-SeTQr4rWpvq/yjp5kZrACvewMgz/Q5QuekSlEViICPfsI1L9BNfnNdacAbqOTpsZGW/p/RVobEamQqjIjzhBTQ==
687 + dependencies:
688 + "@parcel/codeframe" "2.0.0-dev.1789+0b82b13d6"
689 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
690 + "@parcel/logger" "2.0.0-dev.1789+0b82b13d6"
691 + "@parcel/markdown-ansi" "2.0.0-dev.1789+0b82b13d6"
692 + "@parcel/rust" "2.13.3-dev.3412+0b82b13d6"
693 + "@parcel/source-map" "^2.1.1"
694 + chalk "^4.1.2"
695 + nullthrows "^1.1.1"
696 +
697 +"@parcel/watcher-android-arm64@2.5.0":
698 + version "2.5.0"
699 + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz#e32d3dda6647791ee930556aee206fcd5ea0fb7a"
700 + integrity sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==
701 +
702 +"@parcel/watcher-darwin-arm64@2.5.0":
703 + version "2.5.0"
704 + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz#0d9e680b7e9ec1c8f54944f1b945aa8755afb12f"
705 + integrity sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==
706 +
707 +"@parcel/watcher-darwin-x64@2.5.0":
708 + version "2.5.0"
709 + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz#f9f1d5ce9d5878d344f14ef1856b7a830c59d1bb"
710 + integrity sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==
711 +
712 +"@parcel/watcher-freebsd-x64@2.5.0":
713 + version "2.5.0"
714 + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz#2b77f0c82d19e84ff4c21de6da7f7d096b1a7e82"
715 + integrity sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==
716 +
717 +"@parcel/watcher-linux-arm-glibc@2.5.0":
718 + version "2.5.0"
719 + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz#92ed322c56dbafa3d2545dcf2803334aee131e42"
720 + integrity sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==
721 +
722 +"@parcel/watcher-linux-arm-musl@2.5.0":
723 + version "2.5.0"
724 + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz#cd48e9bfde0cdbbd2ecd9accfc52967e22f849a4"
725 + integrity sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==
726 +
727 +"@parcel/watcher-linux-arm64-glibc@2.5.0":
728 + version "2.5.0"
729 + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz#7b81f6d5a442bb89fbabaf6c13573e94a46feb03"
730 + integrity sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==
731 +
732 +"@parcel/watcher-linux-arm64-musl@2.5.0":
733 + version "2.5.0"
734 + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz#dcb8ff01077cdf59a18d9e0a4dff7a0cfe5fd732"
735 + integrity sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==
736 +
737 +"@parcel/watcher-linux-x64-glibc@2.5.0":
738 + version "2.5.0"
739 + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz#2e254600fda4e32d83942384d1106e1eed84494d"
740 + integrity sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==
741 +
742 +"@parcel/watcher-linux-x64-musl@2.5.0":
743 + version "2.5.0"
744 + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz#01fcea60fedbb3225af808d3f0a7b11229792eef"
745 + integrity sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==
746 +
747 +"@parcel/watcher-win32-arm64@2.5.0":
748 + version "2.5.0"
749 + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz#87cdb16e0783e770197e52fb1dc027bb0c847154"
750 + integrity sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==
751 +
752 +"@parcel/watcher-win32-ia32@2.5.0":
753 + version "2.5.0"
754 + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz#778c39b56da33e045ba21c678c31a9f9d7c6b220"
755 + integrity sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==
756 +
757 +"@parcel/watcher-win32-x64@2.5.0":
758 + version "2.5.0"
759 + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz#33873876d0bbc588aacce38e90d1d7480ce81cb7"
760 + integrity sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==
761 +
762 +"@parcel/watcher@^2.0.7":
763 + version "2.5.0"
764 + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.0.tgz#5c88818b12b8de4307a9d3e6dc3e28eba0dfbd10"
765 + integrity sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==
766 + dependencies:
767 + detect-libc "^1.0.3"
768 + is-glob "^4.0.3"
769 + micromatch "^4.0.5"
770 + node-addon-api "^7.0.0"
771 + optionalDependencies:
772 + "@parcel/watcher-android-arm64" "2.5.0"
773 + "@parcel/watcher-darwin-arm64" "2.5.0"
774 + "@parcel/watcher-darwin-x64" "2.5.0"
775 + "@parcel/watcher-freebsd-x64" "2.5.0"
776 + "@parcel/watcher-linux-arm-glibc" "2.5.0"
777 + "@parcel/watcher-linux-arm-musl" "2.5.0"
778 + "@parcel/watcher-linux-arm64-glibc" "2.5.0"
779 + "@parcel/watcher-linux-arm64-musl" "2.5.0"
780 + "@parcel/watcher-linux-x64-glibc" "2.5.0"
781 + "@parcel/watcher-linux-x64-musl" "2.5.0"
782 + "@parcel/watcher-win32-arm64" "2.5.0"
783 + "@parcel/watcher-win32-ia32" "2.5.0"
784 + "@parcel/watcher-win32-x64" "2.5.0"
785 +
786 +"@parcel/workers@2.0.0-dev.1789+0b82b13d6":
787 + version "2.0.0-dev.1789"
788 + resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.0.0-dev.1789.tgz#d9cbfac188ff6d87858735ff23d304be03060bbe"
789 + integrity sha512-qtjpw3tfoK8Mr3jbF4YISwYqwRIpAeKhpnSX/r73Jz3iVbCvi+WuYv26A1CexSkc4jGWGnXJRAEQSI/4h1vYuQ==
790 + dependencies:
791 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
792 + "@parcel/logger" "2.0.0-dev.1789+0b82b13d6"
793 + "@parcel/profiler" "2.13.3-dev.3412+0b82b13d6"
794 + "@parcel/types-internal" "2.13.3-dev.3412+0b82b13d6"
795 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
796 + nullthrows "^1.1.1"
797 +
798 +"@swc/core-darwin-arm64@1.10.1":
799 + version "1.10.1"
800 + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.1.tgz#faaaab19b4a039ae67ef661c0144a6f20fe8a78e"
801 + integrity sha512-NyELPp8EsVZtxH/mEqvzSyWpfPJ1lugpTQcSlMduZLj1EASLO4sC8wt8hmL1aizRlsbjCX+r0PyL+l0xQ64/6Q==
802 +
803 +"@swc/core-darwin-x64@1.10.1":
804 + version "1.10.1"
805 + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.10.1.tgz#754600f453abd24471c202d48836f1161d798f49"
806 + integrity sha512-L4BNt1fdQ5ZZhAk5qoDfUnXRabDOXKnXBxMDJ+PWLSxOGBbWE6aJTnu4zbGjJvtot0KM46m2LPAPY8ttknqaZA==
807 +
808 +"@swc/core-linux-arm-gnueabihf@1.10.1":
809 + version "1.10.1"
810 + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.1.tgz#b0f43c482d0d1819b382a4eb4a0733ce2e386257"
811 + integrity sha512-Y1u9OqCHgvVp2tYQAJ7hcU9qO5brDMIrA5R31rwWQIAKDkJKtv3IlTHF0hrbWk1wPR0ZdngkQSJZple7G+Grvw==
812 +
813 +"@swc/core-linux-arm64-gnu@1.10.1":
814 + version "1.10.1"
815 + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.1.tgz#e02a9e22c25ba85ef00335742e549e06284cf33a"
816 + integrity sha512-tNQHO/UKdtnqjc7o04iRXng1wTUXPgVd8Y6LI4qIbHVoVPwksZydISjMcilKNLKIwOoUQAkxyJ16SlOAeADzhQ==
817 +
818 +"@swc/core-linux-arm64-musl@1.10.1":
819 + version "1.10.1"
820 + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.1.tgz#3a0530af8f8bd3717f2f1bd8a2f5183fc58d4cf1"
821 + integrity sha512-x0L2Pd9weQ6n8dI1z1Isq00VHFvpBClwQJvrt3NHzmR+1wCT/gcYl1tp9P5xHh3ldM8Cn4UjWCw+7PaUgg8FcQ==
822 +
823 +"@swc/core-linux-x64-gnu@1.10.1":
824 + version "1.10.1"
825 + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.1.tgz#5eb4d282b047a22896ab1d4627403be4c3e4fa6a"
826 + integrity sha512-yyYEwQcObV3AUsC79rSzN9z6kiWxKAVJ6Ntwq2N9YoZqSPYph+4/Am5fM1xEQYf/kb99csj0FgOelomJSobxQA==
827 +
828 +"@swc/core-linux-x64-musl@1.10.1":
829 + version "1.10.1"
830 + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.1.tgz#890f2eda3e67ccc6817cdd04eff91e6ad9e761c4"
831 + integrity sha512-tcaS43Ydd7Fk7sW5ROpaf2Kq1zR+sI5K0RM+0qYLYYurvsJruj3GhBCaiN3gkzd8m/8wkqNqtVklWaQYSDsyqA==
832 +
833 +"@swc/core-win32-arm64-msvc@1.10.1":
834 + version "1.10.1"
835 + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.1.tgz#4ea7b2a2fab47f801d31ea8b001a141efaa5e6bf"
836 + integrity sha512-D3Qo1voA7AkbOzQ2UGuKNHfYGKL6eejN8VWOoQYtGHHQi1p5KK/Q7V1ku55oxXBsj79Ny5FRMqiRJpVGad7bjQ==
837 +
838 +"@swc/core-win32-ia32-msvc@1.10.1":
839 + version "1.10.1"
840 + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.1.tgz#729102669ccdb72e69884cce58e3686ac63d6f36"
841 + integrity sha512-WalYdFoU3454Og+sDKHM1MrjvxUGwA2oralknXkXL8S0I/8RkWZOB++p3pLaGbTvOO++T+6znFbQdR8KRaa7DA==
842 +
843 +"@swc/core-win32-x64-msvc@1.10.1":
844 + version "1.10.1"
845 + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.1.tgz#7d665a7c69642861aed850ecb0cdf5d87197edda"
846 + integrity sha512-JWobfQDbTnoqaIwPKQ3DVSywihVXlQMbDuwik/dDWlj33A8oEHcjPOGs4OqcA3RHv24i+lfCQpM3Mn4FAMfacA==
847 +
848 +"@swc/core@^1.7.26":
849 + version "1.10.1"
850 + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.10.1.tgz#16b3b8284bafb0ecabb253925796883971e5a761"
851 + integrity sha512-rQ4dS6GAdmtzKiCRt3LFVxl37FaY1cgL9kSUTnhQ2xc3fmHOd7jdJK/V4pSZMG1ruGTd0bsi34O2R0Olg9Zo/w==
852 + dependencies:
853 + "@swc/counter" "^0.1.3"
854 + "@swc/types" "^0.1.17"
855 + optionalDependencies:
856 + "@swc/core-darwin-arm64" "1.10.1"
857 + "@swc/core-darwin-x64" "1.10.1"
858 + "@swc/core-linux-arm-gnueabihf" "1.10.1"
859 + "@swc/core-linux-arm64-gnu" "1.10.1"
860 + "@swc/core-linux-arm64-musl" "1.10.1"
861 + "@swc/core-linux-x64-gnu" "1.10.1"
862 + "@swc/core-linux-x64-musl" "1.10.1"
863 + "@swc/core-win32-arm64-msvc" "1.10.1"
864 + "@swc/core-win32-ia32-msvc" "1.10.1"
865 + "@swc/core-win32-x64-msvc" "1.10.1"
866 +
867 +"@swc/counter@^0.1.3":
868 + version "0.1.3"
869 + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9"
870 + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==
871 +
872 +"@swc/helpers@^0.5.0":
873 + version "0.5.15"
874 + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7"
875 + integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==
876 + dependencies:
877 + tslib "^2.8.0"
878 +
879 +"@swc/types@^0.1.17":
880 + version "0.1.17"
881 + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.17.tgz#bd1d94e73497f27341bf141abdf4c85230d41e7c"
882 + integrity sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==
883 + dependencies:
884 + "@swc/counter" "^0.1.3"
885 +
886 +"@types/body-parser@*":
887 + version "1.19.5"
888 + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4"
889 + integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==
890 + dependencies:
891 + "@types/connect" "*"
892 + "@types/node" "*"
893 +
894 +"@types/connect@*":
895 + version "3.4.38"
896 + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858"
897 + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==
898 + dependencies:
899 + "@types/node" "*"
900 +
901 +"@types/express-serve-static-core@^5.0.0":
902 + version "5.0.2"
903 + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.2.tgz#812d2871e5eea17fb0bd5214dda7a7b748c0e12a"
904 + integrity sha512-vluaspfvWEtE4vcSDlKRNer52DvOGrB2xv6diXy6UKyKW0lqZiWHGNApSyxOv+8DE5Z27IzVvE7hNkxg7EXIcg==
905 + dependencies:
906 + "@types/node" "*"
907 + "@types/qs" "*"
908 + "@types/range-parser" "*"
909 + "@types/send" "*"
910 +
911 +"@types/express@*":
912 + version "5.0.0"
913 + resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.0.tgz#13a7d1f75295e90d19ed6e74cab3678488eaa96c"
914 + integrity sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==
915 + dependencies:
916 + "@types/body-parser" "*"
917 + "@types/express-serve-static-core" "^5.0.0"
918 + "@types/qs" "*"
919 + "@types/serve-static" "*"
920 +
921 +"@types/http-errors@*":
922 + version "2.0.4"
923 + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f"
924 + integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==
925 +
926 +"@types/mime@^1":
927 + version "1.3.5"
928 + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690"
929 + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==
930 +
931 +"@types/node@*", "@types/node@^22.10.1":
932 + version "22.10.2"
933 + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.2.tgz#a485426e6d1fdafc7b0d4c7b24e2c78182ddabb9"
934 + integrity sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==
935 + dependencies:
936 + undici-types "~6.20.0"
937 +
938 +"@types/parcel-env@^0.0.6":
939 + version "0.0.6"
940 + resolved "https://registry.yarnpkg.com/@types/parcel-env/-/parcel-env-0.0.6.tgz#6432ed891bf178e39582b906b396c72c72179099"
941 + integrity sha512-HlPNbKhUe+0xVqzeqttl/gFC27dUZCjrUSI6MlfGoudjCtNeVOwm2kmDalkfXVWXsj4NJ4oa0PO3SdtOdGaGDg==
942 +
943 +"@types/qs@*":
944 + version "6.9.17"
945 + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.17.tgz#fc560f60946d0aeff2f914eb41679659d3310e1a"
946 + integrity sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==
947 +
948 +"@types/range-parser@*":
949 + version "1.2.7"
950 + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb"
951 + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==
952 +
953 +"@types/react-dom@^19":
954 + version "19.0.2"
955 + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.0.2.tgz#ad21f9a1ee881817995fd3f7fd33659c87e7b1b7"
956 + integrity sha512-c1s+7TKFaDRRxr1TxccIX2u7sfCnc3RxkVyBIUA2lCpyqCF+QoAwQ/CBg7bsMdVwP120HEH143VQezKtef5nCg==
957 +
958 +"@types/react@^19":
959 + version "19.0.1"
960 + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.0.1.tgz#a000d5b78f473732a08cecbead0f3751e550b3df"
961 + integrity sha512-YW6614BDhqbpR5KtUYzTA+zlA7nayzJRA9ljz9CQoxthR0sDisYZLuvSMsil36t4EH/uAt8T52Xb4sVw17G+SQ==
962 + dependencies:
963 + csstype "^3.0.2"
964 +
965 +"@types/send@*":
966 + version "0.17.4"
967 + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a"
968 + integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==
969 + dependencies:
970 + "@types/mime" "^1"
971 + "@types/node" "*"
972 +
973 +"@types/serve-static@*":
974 + version "1.15.7"
975 + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714"
976 + integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==
977 + dependencies:
978 + "@types/http-errors" "*"
979 + "@types/node" "*"
980 + "@types/send" "*"
981 +
982 +accepts@~1.3.8:
983 + version "1.3.8"
984 + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
985 + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
986 + dependencies:
987 + mime-types "~2.1.34"
988 + negotiator "0.6.3"
989 +
990 +ansi-regex@^5.0.1:
991 + version "5.0.1"
992 + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
993 + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
994 +
995 +ansi-styles@^4.0.0, ansi-styles@^4.1.0:
996 + version "4.3.0"
997 + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
998 + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
999 + dependencies:
1000 + color-convert "^2.0.1"
1001 +
1002 +argparse@^2.0.1:
1003 + version "2.0.1"
1004 + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
1005 + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
1006 +
1007 +array-flatten@1.1.1:
1008 + version "1.1.1"
1009 + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
1010 + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
1011 +
1012 +base-x@^3.0.8:
1013 + version "3.0.10"
1014 + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.10.tgz#62de58653f8762b5d6f8d9fe30fa75f7b2585a75"
1015 + integrity sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==
1016 + dependencies:
1017 + safe-buffer "^5.0.1"
1018 +
1019 +body-parser@1.20.3:
1020 + version "1.20.3"
1021 + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6"
1022 + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==
1023 + dependencies:
1024 + bytes "3.1.2"
1025 + content-type "~1.0.5"
1026 + debug "2.6.9"
1027 + depd "2.0.0"
1028 + destroy "1.2.0"
1029 + http-errors "2.0.0"
1030 + iconv-lite "0.4.24"
1031 + on-finished "2.4.1"
1032 + qs "6.13.0"
1033 + raw-body "2.5.2"
1034 + type-is "~1.6.18"
1035 + unpipe "1.0.0"
1036 +
1037 +braces@^3.0.3:
1038 + version "3.0.3"
1039 + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
1040 + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
1041 + dependencies:
1042 + fill-range "^7.1.1"
1043 +
1044 +browserslist@^4.6.6:
1045 + version "4.24.2"
1046 + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580"
1047 + integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==
1048 + dependencies:
1049 + caniuse-lite "^1.0.30001669"
1050 + electron-to-chromium "^1.5.41"
1051 + node-releases "^2.0.18"
1052 + update-browserslist-db "^1.1.1"
1053 +
1054 +bytes@3.1.2:
1055 + version "3.1.2"
1056 + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
1057 + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
1058 +
1059 +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1:
1060 + version "1.0.1"
1061 + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz#32e5892e6361b29b0b545ba6f7763378daca2840"
1062 + integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==
1063 + dependencies:
1064 + es-errors "^1.3.0"
1065 + function-bind "^1.1.2"
1066 +
1067 +call-bind@^1.0.8:
1068 + version "1.0.8"
1069 + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
1070 + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
1071 + dependencies:
1072 + call-bind-apply-helpers "^1.0.0"
1073 + es-define-property "^1.0.0"
1074 + get-intrinsic "^1.2.4"
1075 + set-function-length "^1.2.2"
1076 +
1077 +call-bound@^1.0.2:
1078 + version "1.0.2"
1079 + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.2.tgz#9dbd4daf9f5f753bec3e4c8fbb8a2ecc4de6c39b"
1080 + integrity sha512-0lk0PHFe/uz0vl527fG9CgdE9WdafjDbCXvBbs+LUv000TVt2Jjhqbs4Jwm8gz070w8xXyEAxrPOMullsxXeGg==
1081 + dependencies:
1082 + call-bind "^1.0.8"
1083 + get-intrinsic "^1.2.5"
1084 +
1085 +callsites@^3.0.0:
1086 + version "3.1.0"
1087 + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
1088 + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
1089 +
1090 +caniuse-lite@^1.0.30001669:
1091 + version "1.0.30001687"
1092 + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz#d0ac634d043648498eedf7a3932836beba90ebae"
1093 + integrity sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==
1094 +
1095 +chalk@^4.1.0, chalk@^4.1.2:
1096 + version "4.1.2"
1097 + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
1098 + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
1099 + dependencies:
1100 + ansi-styles "^4.1.0"
1101 + supports-color "^7.1.0"
1102 +
1103 +chrome-trace-event@^1.0.2, chrome-trace-event@^1.0.3:
1104 + version "1.0.4"
1105 + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b"
1106 + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==
1107 +
1108 +cliui@^8.0.1:
1109 + version "8.0.1"
1110 + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
1111 + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
1112 + dependencies:
1113 + string-width "^4.2.0"
1114 + strip-ansi "^6.0.1"
1115 + wrap-ansi "^7.0.0"
1116 +
1117 +clone@^2.1.1:
1118 + version "2.1.2"
1119 + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
1120 + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==
1121 +
1122 +color-convert@^2.0.1:
1123 + version "2.0.1"
1124 + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
1125 + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
1126 + dependencies:
1127 + color-name "~1.1.4"
1128 +
1129 +color-name@~1.1.4:
1130 + version "1.1.4"
1131 + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
1132 + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
1133 +
1134 +commander@^12.1.0:
1135 + version "12.1.0"
1136 + resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3"
1137 + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==
1138 +
1139 +concurrently@^7.3.0:
1140 + version "7.6.0"
1141 + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.6.0.tgz#531a6f5f30cf616f355a4afb8f8fcb2bba65a49a"
1142 + integrity sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==
1143 + dependencies:
1144 + chalk "^4.1.0"
1145 + date-fns "^2.29.1"
1146 + lodash "^4.17.21"
1147 + rxjs "^7.0.0"
1148 + shell-quote "^1.7.3"
1149 + spawn-command "^0.0.2-1"
1150 + supports-color "^8.1.0"
1151 + tree-kill "^1.2.2"
1152 + yargs "^17.3.1"
1153 +
1154 +content-disposition@0.5.4:
1155 + version "0.5.4"
1156 + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
1157 + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
1158 + dependencies:
1159 + safe-buffer "5.2.1"
1160 +
1161 +content-type@~1.0.4, content-type@~1.0.5:
1162 + version "1.0.5"
1163 + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
1164 + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
1165 +
1166 +cookie-signature@1.0.6:
1167 + version "1.0.6"
1168 + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
1169 + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
1170 +
1171 +cookie@0.7.1:
1172 + version "0.7.1"
1173 + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9"
1174 + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==
1175 +
1176 +cosmiconfig@^9.0.0:
1177 + version "9.0.0"
1178 + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d"
1179 + integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==
1180 + dependencies:
1181 + env-paths "^2.2.1"
1182 + import-fresh "^3.3.0"
1183 + js-yaml "^4.1.0"
1184 + parse-json "^5.2.0"
1185 +
1186 +csstype@^3.0.2:
1187 + version "3.1.3"
1188 + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
1189 + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
1190 +
1191 +date-fns@^2.29.1:
1192 + version "2.30.0"
1193 + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0"
1194 + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==
1195 + dependencies:
1196 + "@babel/runtime" "^7.21.0"
1197 +
1198 +debug@2.6.9:
1199 + version "2.6.9"
1200 + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
1201 + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
1202 + dependencies:
1203 + ms "2.0.0"
1204 +
1205 +define-data-property@^1.1.4:
1206 + version "1.1.4"
1207 + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
1208 + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
1209 + dependencies:
1210 + es-define-property "^1.0.0"
1211 + es-errors "^1.3.0"
1212 + gopd "^1.0.1"
1213 +
1214 +depd@2.0.0:
1215 + version "2.0.0"
1216 + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
1217 + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
1218 +
1219 +destroy@1.2.0:
1220 + version "1.2.0"
1221 + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
1222 + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
1223 +
1224 +detect-libc@^1.0.3:
1225 + version "1.0.3"
1226 + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
1227 + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
1228 +
1229 +detect-libc@^2.0.1:
1230 + version "2.0.3"
1231 + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700"
1232 + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==
1233 +
1234 +dom-serializer@^1.0.1:
1235 + version "1.4.1"
1236 + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30"
1237 + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==
1238 + dependencies:
1239 + domelementtype "^2.0.1"
1240 + domhandler "^4.2.0"
1241 + entities "^2.0.0"
1242 +
1243 +dom-serializer@^2.0.0:
1244 + version "2.0.0"
1245 + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53"
1246 + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==
1247 + dependencies:
1248 + domelementtype "^2.3.0"
1249 + domhandler "^5.0.2"
1250 + entities "^4.2.0"
1251 +
1252 +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0:
1253 + version "2.3.0"
1254 + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
1255 + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
1256 +
1257 +domhandler@^4.2.0, domhandler@^4.2.2:
1258 + version "4.3.1"
1259 + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c"
1260 + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==
1261 + dependencies:
1262 + domelementtype "^2.2.0"
1263 +
1264 +domhandler@^5.0.2, domhandler@^5.0.3:
1265 + version "5.0.3"
1266 + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31"
1267 + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==
1268 + dependencies:
1269 + domelementtype "^2.3.0"
1270 +
1271 +domutils@^2.8.0:
1272 + version "2.8.0"
1273 + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
1274 + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
1275 + dependencies:
1276 + dom-serializer "^1.0.1"
1277 + domelementtype "^2.2.0"
1278 + domhandler "^4.2.0"
1279 +
1280 +domutils@^3.1.0:
1281 + version "3.1.0"
1282 + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e"
1283 + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==
1284 + dependencies:
1285 + dom-serializer "^2.0.0"
1286 + domelementtype "^2.3.0"
1287 + domhandler "^5.0.3"
1288 +
1289 +dotenv-expand@^11.0.6:
1290 + version "11.0.7"
1291 + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08"
1292 + integrity sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==
1293 + dependencies:
1294 + dotenv "^16.4.5"
1295 +
1296 +dotenv@^16.4.5:
1297 + version "16.4.7"
1298 + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26"
1299 + integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==
1300 +
1301 +dunder-proto@^1.0.0:
1302 + version "1.0.0"
1303 + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.0.tgz#c2fce098b3c8f8899554905f4377b6d85dabaa80"
1304 + integrity sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==
1305 + dependencies:
1306 + call-bind-apply-helpers "^1.0.0"
1307 + es-errors "^1.3.0"
1308 + gopd "^1.2.0"
1309 +
1310 +ee-first@1.1.1:
1311 + version "1.1.1"
1312 + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
1313 + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
1314 +
1315 +electron-to-chromium@^1.5.41:
1316 + version "1.5.73"
1317 + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.73.tgz#f32956ce40947fa3c8606726a96cd8fb5bb5f720"
1318 + integrity sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg==
1319 +
1320 +emoji-regex@^8.0.0:
1321 + version "8.0.0"
1322 + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
1323 + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
1324 +
1325 +encodeurl@~1.0.2:
1326 + version "1.0.2"
1327 + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
1328 + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
1329 +
1330 +encodeurl@~2.0.0:
1331 + version "2.0.0"
1332 + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
1333 + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
1334 +
1335 +entities@^2.0.0:
1336 + version "2.2.0"
1337 + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
1338 + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
1339 +
1340 +entities@^3.0.1:
1341 + version "3.0.1"
1342 + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4"
1343 + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==
1344 +
1345 +entities@^4.2.0, entities@^4.5.0:
1346 + version "4.5.0"
1347 + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
1348 + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
1349 +
1350 +env-paths@^2.2.1:
1351 + version "2.2.1"
1352 + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
1353 + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
1354 +
1355 +error-ex@^1.3.1:
1356 + version "1.3.2"
1357 + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
1358 + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
1359 + dependencies:
1360 + is-arrayish "^0.2.1"
1361 +
1362 +es-define-property@^1.0.0, es-define-property@^1.0.1:
1363 + version "1.0.1"
1364 + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa"
1365 + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
1366 +
1367 +es-errors@^1.3.0:
1368 + version "1.3.0"
1369 + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
1370 + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
1371 +
1372 +es-object-atoms@^1.0.0:
1373 + version "1.0.0"
1374 + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941"
1375 + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==
1376 + dependencies:
1377 + es-errors "^1.3.0"
1378 +
1379 +escalade@^3.1.1, escalade@^3.2.0:
1380 + version "3.2.0"
1381 + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
1382 + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
1383 +
1384 +escape-html@~1.0.3:
1385 + version "1.0.3"
1386 + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
1387 + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
1388 +
1389 +etag@~1.8.1:
1390 + version "1.8.1"
1391 + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
1392 + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
1393 +
1394 +express@^4.18.2:
1395 + version "4.21.2"
1396 + resolved "https://registry.yarnpkg.com/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32"
1397 + integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==
1398 + dependencies:
1399 + accepts "~1.3.8"
1400 + array-flatten "1.1.1"
1401 + body-parser "1.20.3"
1402 + content-disposition "0.5.4"
1403 + content-type "~1.0.4"
1404 + cookie "0.7.1"
1405 + cookie-signature "1.0.6"
1406 + debug "2.6.9"
1407 + depd "2.0.0"
1408 + encodeurl "~2.0.0"
1409 + escape-html "~1.0.3"
1410 + etag "~1.8.1"
1411 + finalhandler "1.3.1"
1412 + fresh "0.5.2"
1413 + http-errors "2.0.0"
1414 + merge-descriptors "1.0.3"
1415 + methods "~1.1.2"
1416 + on-finished "2.4.1"
1417 + parseurl "~1.3.3"
1418 + path-to-regexp "0.1.12"
1419 + proxy-addr "~2.0.7"
1420 + qs "6.13.0"
1421 + range-parser "~1.2.1"
1422 + safe-buffer "5.2.1"
1423 + send "0.19.0"
1424 + serve-static "1.16.2"
1425 + setprototypeof "1.2.0"
1426 + statuses "2.0.1"
1427 + type-is "~1.6.18"
1428 + utils-merge "1.0.1"
1429 + vary "~1.1.2"
1430 +
1431 +fill-range@^7.1.1:
1432 + version "7.1.1"
1433 + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
1434 + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
1435 + dependencies:
1436 + to-regex-range "^5.0.1"
1437 +
1438 +finalhandler@1.3.1:
1439 + version "1.3.1"
1440 + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019"
1441 + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==
1442 + dependencies:
1443 + debug "2.6.9"
1444 + encodeurl "~2.0.0"
1445 + escape-html "~1.0.3"
1446 + on-finished "2.4.1"
1447 + parseurl "~1.3.3"
1448 + statuses "2.0.1"
1449 + unpipe "~1.0.0"
1450 +
1451 +forwarded@0.2.0:
1452 + version "0.2.0"
1453 + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
1454 + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
1455 +
1456 +fresh@0.5.2:
1457 + version "0.5.2"
1458 + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
1459 + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
1460 +
1461 +function-bind@^1.1.2:
1462 + version "1.1.2"
1463 + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
1464 + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
1465 +
1466 +get-caller-file@^2.0.5:
1467 + version "2.0.5"
1468 + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
1469 + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
1470 +
1471 +get-intrinsic@^1.2.4, get-intrinsic@^1.2.5:
1472 + version "1.2.6"
1473 + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.6.tgz#43dd3dd0e7b49b82b2dfcad10dc824bf7fc265d5"
1474 + integrity sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==
1475 + dependencies:
1476 + call-bind-apply-helpers "^1.0.1"
1477 + dunder-proto "^1.0.0"
1478 + es-define-property "^1.0.1"
1479 + es-errors "^1.3.0"
1480 + es-object-atoms "^1.0.0"
1481 + function-bind "^1.1.2"
1482 + gopd "^1.2.0"
1483 + has-symbols "^1.1.0"
1484 + hasown "^2.0.2"
1485 + math-intrinsics "^1.0.0"
1486 +
1487 +get-port@^4.2.0:
1488 + version "4.2.0"
1489 + resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119"
1490 + integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==
1491 +
1492 +globals@^13.2.0:
1493 + version "13.24.0"
1494 + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
1495 + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
1496 + dependencies:
1497 + type-fest "^0.20.2"
1498 +
1499 +gopd@^1.0.1, gopd@^1.2.0:
1500 + version "1.2.0"
1501 + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
1502 + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
1503 +
1504 +has-flag@^4.0.0:
1505 + version "4.0.0"
1506 + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1507 + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1508 +
1509 +has-property-descriptors@^1.0.2:
1510 + version "1.0.2"
1511 + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
1512 + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
1513 + dependencies:
1514 + es-define-property "^1.0.0"
1515 +
1516 +has-symbols@^1.1.0:
1517 + version "1.1.0"
1518 + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338"
1519 + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
1520 +
1521 +hasown@^2.0.2:
1522 + version "2.0.2"
1523 + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
1524 + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
1525 + dependencies:
1526 + function-bind "^1.1.2"
1527 +
1528 +htmlnano@^2.0.0:
1529 + version "2.1.1"
1530 + resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-2.1.1.tgz#9ba84e145cd8b7cd4c783d9ab8ff46a80e79b59b"
1531 + integrity sha512-kAERyg/LuNZYmdqgCdYvugyLWNFAm8MWXpQMz1pLpetmCbFwoMxvkSoaAMlFrOC4OKTWI4KlZGT/RsNxg4ghOw==
1532 + dependencies:
1533 + cosmiconfig "^9.0.0"
1534 + posthtml "^0.16.5"
1535 + timsort "^0.3.0"
1536 +
1537 +htmlparser2@^7.1.1:
1538 + version "7.2.0"
1539 + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5"
1540 + integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==
1541 + dependencies:
1542 + domelementtype "^2.0.1"
1543 + domhandler "^4.2.2"
1544 + domutils "^2.8.0"
1545 + entities "^3.0.1"
1546 +
1547 +htmlparser2@^9.0.0:
1548 + version "9.1.0"
1549 + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-9.1.0.tgz#cdb498d8a75a51f739b61d3f718136c369bc8c23"
1550 + integrity sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==
1551 + dependencies:
1552 + domelementtype "^2.3.0"
1553 + domhandler "^5.0.3"
1554 + domutils "^3.1.0"
1555 + entities "^4.5.0"
1556 +
1557 +http-errors@2.0.0:
1558 + version "2.0.0"
1559 + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
1560 + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
1561 + dependencies:
1562 + depd "2.0.0"
1563 + inherits "2.0.4"
1564 + setprototypeof "1.2.0"
1565 + statuses "2.0.1"
1566 + toidentifier "1.0.1"
1567 +
1568 +iconv-lite@0.4.24:
1569 + version "0.4.24"
1570 + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
1571 + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
1572 + dependencies:
1573 + safer-buffer ">= 2.1.2 < 3"
1574 +
1575 +import-fresh@^3.3.0:
1576 + version "3.3.0"
1577 + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
1578 + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
1579 + dependencies:
1580 + parent-module "^1.0.0"
1581 + resolve-from "^4.0.0"
1582 +
1583 +inherits@2.0.4:
1584 + version "2.0.4"
1585 + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
1586 + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
1587 +
1588 +ipaddr.js@1.9.1:
1589 + version "1.9.1"
1590 + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
1591 + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
1592 +
1593 +is-arrayish@^0.2.1:
1594 + version "0.2.1"
1595 + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
1596 + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
1597 +
1598 +is-extglob@^2.1.1:
1599 + version "2.1.1"
1600 + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1601 + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
1602 +
1603 +is-fullwidth-code-point@^3.0.0:
1604 + version "3.0.0"
1605 + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
1606 + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
1607 +
1608 +is-glob@^4.0.3:
1609 + version "4.0.3"
1610 + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
1611 + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
1612 + dependencies:
1613 + is-extglob "^2.1.1"
1614 +
1615 +is-json@^2.0.1:
1616 + version "2.0.1"
1617 + resolved "https://registry.yarnpkg.com/is-json/-/is-json-2.0.1.tgz#6be166d144828a131d686891b983df62c39491ff"
1618 + integrity sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==
1619 +
1620 +is-number@^7.0.0:
1621 + version "7.0.0"
1622 + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
1623 + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
1624 +
1625 +js-tokens@^4.0.0:
1626 + version "4.0.0"
1627 + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
1628 + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
1629 +
1630 +js-yaml@^4.1.0:
1631 + version "4.1.0"
1632 + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
1633 + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
1634 + dependencies:
1635 + argparse "^2.0.1"
1636 +
1637 +json-parse-even-better-errors@^2.3.0:
1638 + version "2.3.1"
1639 + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
1640 + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
1641 +
1642 +json5@^2.2.0, json5@^2.2.1:
1643 + version "2.2.3"
1644 + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
1645 + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
1646 +
1647 +lightningcss-darwin-arm64@1.28.2:
1648 + version "1.28.2"
1649 + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.28.2.tgz#a906fd84cb43d753cb5db9c367f8f38482e8fb03"
1650 + integrity sha512-/8cPSqZiusHSS+WQz0W4NuaqFjquys1x+NsdN/XOHb+idGHJSoJ7SoQTVl3DZuAgtPZwFZgRfb/vd1oi8uX6+g==
1651 +
1652 +lightningcss-darwin-x64@1.28.2:
1653 + version "1.28.2"
1654 + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.28.2.tgz#6c43249d4ae821416d0d78403eae56111d0c6a94"
1655 + integrity sha512-R7sFrXlgKjvoEG8umpVt/yutjxOL0z8KWf0bfPT3cYMOW4470xu5qSHpFdIOpRWwl3FKNMUdbKtMUjYt0h2j4g==
1656 +
1657 +lightningcss-freebsd-x64@1.28.2:
1658 + version "1.28.2"
1659 + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.28.2.tgz#804bc6652c6721e94a92e7bbb5e65165376cf108"
1660 + integrity sha512-l2qrCT+x7crAY+lMIxtgvV10R8VurzHAoUZJaVFSlHrN8kRLTvEg9ObojIDIexqWJQvJcVVV3vfzsEynpiuvgA==
1661 +
1662 +lightningcss-linux-arm-gnueabihf@1.28.2:
1663 + version "1.28.2"
1664 + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.28.2.tgz#c32595127b565690d854c9ff641831e4ad739ee1"
1665 + integrity sha512-DKMzpICBEKnL53X14rF7hFDu8KKALUJtcKdFUCW5YOlGSiwRSgVoRjM97wUm/E0NMPkzrTi/rxfvt7ruNK8meg==
1666 +
1667 +lightningcss-linux-arm64-gnu@1.28.2:
1668 + version "1.28.2"
1669 + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.28.2.tgz#85646f08c5efbfd7c94f8e5ed6392d5cf95fa42c"
1670 + integrity sha512-nhfjYkfymWZSxdtTNMWyhFk2ImUm0X7NAgJWFwnsYPOfmtWQEapzG/DXZTfEfMjSzERNUNJoQjPAbdqgB+sjiw==
1671 +
1672 +lightningcss-linux-arm64-musl@1.28.2:
1673 + version "1.28.2"
1674 + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.28.2.tgz#4d9bc20cf6de28c4d0c586d81c577891555ad831"
1675 + integrity sha512-1SPG1ZTNnphWvAv8RVOymlZ8BDtAg69Hbo7n4QxARvkFVCJAt0cgjAw1Fox0WEhf4PwnyoOBaVH0Z5YNgzt4dA==
1676 +
1677 +lightningcss-linux-x64-gnu@1.28.2:
1678 + version "1.28.2"
1679 + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.28.2.tgz#74bd797d7157817c4e42ec45f1844a69636a9d82"
1680 + integrity sha512-ZhQy0FcO//INWUdo/iEdbefntTdpPVQ0XJwwtdbBuMQe+uxqZoytm9M+iqR9O5noWFaxK+nbS2iR/I80Q2Ofpg==
1681 +
1682 +lightningcss-linux-x64-musl@1.28.2:
1683 + version "1.28.2"
1684 + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.28.2.tgz#13ce6db4c491ebbb93099d6427746ab7bff3774f"
1685 + integrity sha512-alb/j1NMrgQmSFyzTbN1/pvMPM+gdDw7YBuQ5VSgcFDypN3Ah0BzC2dTZbzwzaMdUVDszX6zH5MzjfVN1oGuww==
1686 +
1687 +lightningcss-win32-arm64-msvc@1.28.2:
1688 + version "1.28.2"
1689 + resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.28.2.tgz#eaae12c4a58a545a3adf40b22ba9625e5c0ebd29"
1690 + integrity sha512-WnwcjcBeAt0jGdjlgbT9ANf30pF0C/QMb1XnLnH272DQU8QXh+kmpi24R55wmWBwaTtNAETZ+m35ohyeMiNt+g==
1691 +
1692 +lightningcss-win32-x64-msvc@1.28.2:
1693 + version "1.28.2"
1694 + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.28.2.tgz#1f7c4474b2dc3dd1c12e22de32e4de23bdfa41e7"
1695 + integrity sha512-3piBifyT3avz22o6mDKywQC/OisH2yDK+caHWkiMsF82i3m5wDBadyCjlCQ5VNgzYkxrWZgiaxHDdd5uxsi0/A==
1696 +
1697 +lightningcss@^1.22.1:
1698 + version "1.28.2"
1699 + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.28.2.tgz#cc26fad9ad64a621bd39ac6248095891cf584cce"
1700 + integrity sha512-ePLRrbt3fgjXI5VFZOLbvkLD5ZRuxGKm+wJ3ujCqBtL3NanDHPo/5zicR5uEKAPiIjBYF99BM4K4okvMznjkVA==
1701 + dependencies:
1702 + detect-libc "^1.0.3"
1703 + optionalDependencies:
1704 + lightningcss-darwin-arm64 "1.28.2"
1705 + lightningcss-darwin-x64 "1.28.2"
1706 + lightningcss-freebsd-x64 "1.28.2"
1707 + lightningcss-linux-arm-gnueabihf "1.28.2"
1708 + lightningcss-linux-arm64-gnu "1.28.2"
1709 + lightningcss-linux-arm64-musl "1.28.2"
1710 + lightningcss-linux-x64-gnu "1.28.2"
1711 + lightningcss-linux-x64-musl "1.28.2"
1712 + lightningcss-win32-arm64-msvc "1.28.2"
1713 + lightningcss-win32-x64-msvc "1.28.2"
1714 +
1715 +lines-and-columns@^1.1.6:
1716 + version "1.2.4"
1717 + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
1718 + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
1719 +
1720 +lmdb@2.8.5:
1721 + version "2.8.5"
1722 + resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.8.5.tgz#ce191110c755c0951caa062722e300c703973837"
1723 + integrity sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==
1724 + dependencies:
1725 + msgpackr "^1.9.5"
1726 + node-addon-api "^6.1.0"
1727 + node-gyp-build-optional-packages "5.1.1"
1728 + ordered-binary "^1.4.1"
1729 + weak-lru-cache "^1.2.2"
1730 + optionalDependencies:
1731 + "@lmdb/lmdb-darwin-arm64" "2.8.5"
1732 + "@lmdb/lmdb-darwin-x64" "2.8.5"
1733 + "@lmdb/lmdb-linux-arm" "2.8.5"
1734 + "@lmdb/lmdb-linux-arm64" "2.8.5"
1735 + "@lmdb/lmdb-linux-x64" "2.8.5"
1736 + "@lmdb/lmdb-win32-x64" "2.8.5"
1737 +
1738 +lodash@^4.17.21:
1739 + version "4.17.21"
1740 + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
1741 + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
1742 +
1743 +math-intrinsics@^1.0.0:
1744 + version "1.0.0"
1745 + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.0.0.tgz#4e04bf87c85aa51e90d078dac2252b4eb5260817"
1746 + integrity sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==
1747 +
1748 +media-typer@0.3.0:
1749 + version "0.3.0"
1750 + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
1751 + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
1752 +
1753 +merge-descriptors@1.0.3:
1754 + version "1.0.3"
1755 + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5"
1756 + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==
1757 +
1758 +methods@~1.1.2:
1759 + version "1.1.2"
1760 + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
1761 + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
1762 +
1763 +micromatch@^4.0.5:
1764 + version "4.0.8"
1765 + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
1766 + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
1767 + dependencies:
1768 + braces "^3.0.3"
1769 + picomatch "^2.3.1"
1770 +
1771 +mime-db@1.52.0:
1772 + version "1.52.0"
1773 + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
1774 + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
1775 +
1776 +mime-types@~2.1.24, mime-types@~2.1.34:
1777 + version "2.1.35"
1778 + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
1779 + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
1780 + dependencies:
1781 + mime-db "1.52.0"
1782 +
1783 +mime@1.6.0:
1784 + version "1.6.0"
1785 + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
1786 + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
1787 +
1788 +ms@2.0.0:
1789 + version "2.0.0"
1790 + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
1791 + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
1792 +
1793 +ms@2.1.3:
1794 + version "2.1.3"
1795 + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
1796 + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
1797 +
1798 +msgpackr-extract@^3.0.2:
1799 + version "3.0.3"
1800 + resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz#e9d87023de39ce714872f9e9504e3c1996d61012"
1801 + integrity sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==
1802 + dependencies:
1803 + node-gyp-build-optional-packages "5.2.2"
1804 + optionalDependencies:
1805 + "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.3"
1806 + "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.3"
1807 + "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.3"
1808 + "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.3"
1809 + "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.3"
1810 + "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.3"
1811 +
1812 +msgpackr@^1.9.5, msgpackr@^1.9.9:
1813 + version "1.11.2"
1814 + resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.11.2.tgz#4463b7f7d68f2e24865c395664973562ad24473d"
1815 + integrity sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==
1816 + optionalDependencies:
1817 + msgpackr-extract "^3.0.2"
1818 +
1819 +negotiator@0.6.3:
1820 + version "0.6.3"
1821 + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
1822 + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
1823 +
1824 +node-addon-api@^6.1.0:
1825 + version "6.1.0"
1826 + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76"
1827 + integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==
1828 +
1829 +node-addon-api@^7.0.0:
1830 + version "7.1.1"
1831 + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558"
1832 + integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==
1833 +
1834 +node-gyp-build-optional-packages@5.1.1:
1835 + version "5.1.1"
1836 + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz#52b143b9dd77b7669073cbfe39e3f4118bfc603c"
1837 + integrity sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==
1838 + dependencies:
1839 + detect-libc "^2.0.1"
1840 +
1841 +node-gyp-build-optional-packages@5.2.2:
1842 + version "5.2.2"
1843 + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz#522f50c2d53134d7f3a76cd7255de4ab6c96a3a4"
1844 + integrity sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==
1845 + dependencies:
1846 + detect-libc "^2.0.1"
1847 +
1848 +node-releases@^2.0.18:
1849 + version "2.0.19"
1850 + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314"
1851 + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==
1852 +
1853 +nullthrows@^1.1.1:
1854 + version "1.1.1"
1855 + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1"
1856 + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==
1857 +
1858 +object-inspect@^1.13.3:
1859 + version "1.13.3"
1860 + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a"
1861 + integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==
1862 +
1863 +on-finished@2.4.1:
1864 + version "2.4.1"
1865 + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
1866 + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
1867 + dependencies:
1868 + ee-first "1.1.1"
1869 +
1870 +ordered-binary@^1.4.1:
1871 + version "1.5.3"
1872 + resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.5.3.tgz#8bee2aa7a82c3439caeb1e80c272fd4cf51170fb"
1873 + integrity sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==
1874 +
1875 +parcel@2.0.0-dev.1787:
1876 + version "2.0.0-dev.1787"
1877 + resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.0.0-dev.1787.tgz#036c9155b5daf942e5cabaa6738bc8ea96d2f8fc"
1878 + integrity sha512-u6uPbkrrhHaTBm7d5RLP9VMgjJkFs23QAMLkqAFcM+M2WQRfb0S6sW0jksRgheEOvpkOlxLgJxXQ6Ein2JZtLw==
1879 + dependencies:
1880 + "@parcel/config-default" "2.0.0-dev.1789+0b82b13d6"
1881 + "@parcel/core" "2.0.0-dev.1787+0b82b13d6"
1882 + "@parcel/diagnostic" "2.0.0-dev.1789+0b82b13d6"
1883 + "@parcel/events" "2.0.0-dev.1789+0b82b13d6"
1884 + "@parcel/feature-flags" "2.13.3-dev.3412+0b82b13d6"
1885 + "@parcel/fs" "2.0.0-dev.1789+0b82b13d6"
1886 + "@parcel/logger" "2.0.0-dev.1789+0b82b13d6"
1887 + "@parcel/package-manager" "2.0.0-dev.1789+0b82b13d6"
1888 + "@parcel/reporter-cli" "2.0.0-dev.1789+0b82b13d6"
1889 + "@parcel/reporter-dev-server" "2.0.0-dev.1789+0b82b13d6"
1890 + "@parcel/reporter-tracer" "2.13.3-dev.3412+0b82b13d6"
1891 + "@parcel/utils" "2.0.0-dev.1789+0b82b13d6"
1892 + chalk "^4.1.2"
1893 + commander "^12.1.0"
1894 + get-port "^4.2.0"
1895 +
1896 +parent-module@^1.0.0:
1897 + version "1.0.1"
1898 + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
1899 + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
1900 + dependencies:
1901 + callsites "^3.0.0"
1902 +
1903 +parse-json@^5.2.0:
1904 + version "5.2.0"
1905 + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
1906 + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
1907 + dependencies:
1908 + "@babel/code-frame" "^7.0.0"
1909 + error-ex "^1.3.1"
1910 + json-parse-even-better-errors "^2.3.0"
1911 + lines-and-columns "^1.1.6"
1912 +
1913 +parseurl@~1.3.3:
1914 + version "1.3.3"
1915 + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
1916 + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
1917 +
1918 +path-to-regexp@0.1.12:
1919 + version "0.1.12"
1920 + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7"
1921 + integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==
1922 +
1923 +picocolors@^1.0.0, picocolors@^1.1.0:
1924 + version "1.1.1"
1925 + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
1926 + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
1927 +
1928 +picomatch@^2.3.1:
1929 + version "2.3.1"
1930 + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
1931 + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
1932 +
1933 +postcss-value-parser@^4.2.0:
1934 + version "4.2.0"
1935 + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
1936 + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
1937 +
1938 +posthtml-parser@^0.11.0:
1939 + version "0.11.0"
1940 + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.11.0.tgz#25d1c7bf811ea83559bc4c21c189a29747a24b7a"
1941 + integrity sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==
1942 + dependencies:
1943 + htmlparser2 "^7.1.1"
1944 +
1945 +posthtml-parser@^0.12.1:
1946 + version "0.12.1"
1947 + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.12.1.tgz#f29cc2eec3e6dd0bb99ac169f49963515adbff21"
1948 + integrity sha512-rYFmsDLfYm+4Ts2Oh4DCDSZPtdC1BLnRXAobypVzX9alj28KGl65dIFtgDY9zB57D0TC4Qxqrawuq/2et1P0GA==
1949 + dependencies:
1950 + htmlparser2 "^9.0.0"
1951 +
1952 +posthtml-render@^3.0.0:
1953 + version "3.0.0"
1954 + resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-3.0.0.tgz#97be44931496f495b4f07b99e903cc70ad6a3205"
1955 + integrity sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==
1956 + dependencies:
1957 + is-json "^2.0.1"
1958 +
1959 +posthtml@^0.16.4, posthtml@^0.16.5:
1960 + version "0.16.6"
1961 + resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.16.6.tgz#e2fc407f67a64d2fa3567afe770409ffdadafe59"
1962 + integrity sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==
1963 + dependencies:
1964 + posthtml-parser "^0.11.0"
1965 + posthtml-render "^3.0.0"
1966 +
1967 +process@^0.11.10:
1968 + version "0.11.10"
1969 + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
1970 + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
1971 +
1972 +proxy-addr@~2.0.7:
1973 + version "2.0.7"
1974 + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
1975 + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
1976 + dependencies:
1977 + forwarded "0.2.0"
1978 + ipaddr.js "1.9.1"
1979 +
1980 +qs@6.13.0:
1981 + version "6.13.0"
1982 + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
1983 + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==
1984 + dependencies:
1985 + side-channel "^1.0.6"
1986 +
1987 +range-parser@~1.2.1:
1988 + version "1.2.1"
1989 + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
1990 + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
1991 +
1992 +raw-body@2.5.2:
1993 + version "2.5.2"
1994 + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a"
1995 + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==
1996 + dependencies:
1997 + bytes "3.1.2"
1998 + http-errors "2.0.0"
1999 + iconv-lite "0.4.24"
2000 + unpipe "1.0.0"
2001 +
2002 +react-dom@experimental:
2003 + version "0.0.0-experimental-79ddf5b5-20241210"
2004 + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-0.0.0-experimental-79ddf5b5-20241210.tgz#c140f191e7a88be5d4c38d34f7cf1dbf38a9a71d"
2005 + integrity sha512-bAB3yL0kntJWIC01+WprH/XAp7KATXSZ0kc6lUN9A1jMMDYTDOBmN0ghCMnDe/5lalJJouqGAmRd5bkji9HqwQ==
2006 + dependencies:
2007 + scheduler "0.0.0-experimental-79ddf5b5-20241210"
2008 +
2009 +react-error-overlay@6.0.9:
2010 + version "6.0.9"
2011 + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a"
2012 + integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==
2013 +
2014 +"react-refresh@>=0.9 <=0.14":
2015 + version "0.14.2"
2016 + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9"
2017 + integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==
2018 +
2019 +react-server-dom-parcel@experimental:
2020 + version "0.0.1"
2021 + resolved "https://registry.yarnpkg.com/react-server-dom-parcel/-/react-server-dom-parcel-0.0.1.tgz#2653c2b39a857fbd17770d27d6f08bd139803f09"
2022 + integrity sha512-f93wv8gycm4ltcQRqpSlgYyT6cJxmjJdRmXw3deQoXowDlP44W4RRzwHQ70u1xseCpHFIORmuHVXk7+Fk8RFtQ==
2023 +
2024 +react@experimental:
2025 + version "0.0.0-experimental-79ddf5b5-20241210"
2026 + resolved "https://registry.yarnpkg.com/react/-/react-0.0.0-experimental-79ddf5b5-20241210.tgz#d1c620a36dfa02337f69c4eaeee230fec6742b72"
2027 + integrity sha512-+e7TiHmfdCEzR942m4ukOBf/4jd41Mc8M/ExOGYT7LtbrXCX/HCw9RqffaYZXdMd3+QD/nBzx9f/DTDLzP8FLA==
2028 +
2029 +regenerator-runtime@^0.14.0, regenerator-runtime@^0.14.1:
2030 + version "0.14.1"
2031 + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
2032 + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
2033 +
2034 +require-directory@^2.1.1:
2035 + version "2.1.1"
2036 + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
2037 + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
2038 +
2039 +resolve-from@^4.0.0:
2040 + version "4.0.0"
2041 + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
2042 + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
2043 +
2044 +rsc-html-stream@^0.0.4:
2045 + version "0.0.4"
2046 + resolved "https://registry.yarnpkg.com/rsc-html-stream/-/rsc-html-stream-0.0.4.tgz#0ae70518eeac305852533b9ad60aefacce72ed95"
2047 + integrity sha512-1isiXIrlTI/vRLTvS3O4fMrO9qIHje1FSphufrIV5QfzHUgBDCZFwP9b8+rH63nbhxtcKTqfyziwM+2khfX0Uw==
2048 +
2049 +rxjs@^7.0.0:
2050 + version "7.8.1"
2051 + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543"
2052 + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==
2053 + dependencies:
2054 + tslib "^2.1.0"
2055 +
2056 +safe-buffer@5.2.1, safe-buffer@^5.0.1:
2057 + version "5.2.1"
2058 + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
2059 + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
2060 +
2061 +"safer-buffer@>= 2.1.2 < 3":
2062 + version "2.1.2"
2063 + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
2064 + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
2065 +
2066 +scheduler@0.0.0-experimental-79ddf5b5-20241210:
2067 + version "0.0.0-experimental-79ddf5b5-20241210"
2068 + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.0.0-experimental-79ddf5b5-20241210.tgz#2b6c17201831aa8f8e35e65ad95c7cf5362b5454"
2069 + integrity sha512-Rg1aDzPQWVLENsVBlZbIS1buG55XTCEN7tOz0qk+pCnhswwa7h0VzGFVmX8CLuWnTYQYWw9ldFrjKLDM1Q1k3g==
2070 +
2071 +semver@^7.5.2:
2072 + version "7.6.3"
2073 + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
2074 + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
2075 +
2076 +send@0.19.0:
2077 + version "0.19.0"
2078 + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8"
2079 + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==
2080 + dependencies:
2081 + debug "2.6.9"
2082 + depd "2.0.0"
2083 + destroy "1.2.0"
2084 + encodeurl "~1.0.2"
2085 + escape-html "~1.0.3"
2086 + etag "~1.8.1"
2087 + fresh "0.5.2"
2088 + http-errors "2.0.0"
2089 + mime "1.6.0"
2090 + ms "2.1.3"
2091 + on-finished "2.4.1"
2092 + range-parser "~1.2.1"
2093 + statuses "2.0.1"
2094 +
2095 +serve-static@1.16.2:
2096 + version "1.16.2"
2097 + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296"
2098 + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==
2099 + dependencies:
2100 + encodeurl "~2.0.0"
2101 + escape-html "~1.0.3"
2102 + parseurl "~1.3.3"
2103 + send "0.19.0"
2104 +
2105 +set-function-length@^1.2.2:
2106 + version "1.2.2"
2107 + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
2108 + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
2109 + dependencies:
2110 + define-data-property "^1.1.4"
2111 + es-errors "^1.3.0"
2112 + function-bind "^1.1.2"
2113 + get-intrinsic "^1.2.4"
2114 + gopd "^1.0.1"
2115 + has-property-descriptors "^1.0.2"
2116 +
2117 +setprototypeof@1.2.0:
2118 + version "1.2.0"
2119 + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
2120 + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
2121 +
2122 +shell-quote@^1.7.3:
2123 + version "1.8.2"
2124 + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.2.tgz#d2d83e057959d53ec261311e9e9b8f51dcb2934a"
2125 + integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==
2126 +
2127 +side-channel-list@^1.0.0:
2128 + version "1.0.0"
2129 + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad"
2130 + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==
2131 + dependencies:
2132 + es-errors "^1.3.0"
2133 + object-inspect "^1.13.3"
2134 +
2135 +side-channel-map@^1.0.1:
2136 + version "1.0.1"
2137 + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42"
2138 + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==
2139 + dependencies:
2140 + call-bound "^1.0.2"
2141 + es-errors "^1.3.0"
2142 + get-intrinsic "^1.2.5"
2143 + object-inspect "^1.13.3"
2144 +
2145 +side-channel-weakmap@^1.0.2:
2146 + version "1.0.2"
2147 + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea"
2148 + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==
2149 + dependencies:
2150 + call-bound "^1.0.2"
2151 + es-errors "^1.3.0"
2152 + get-intrinsic "^1.2.5"
2153 + object-inspect "^1.13.3"
2154 + side-channel-map "^1.0.1"
2155 +
2156 +side-channel@^1.0.6:
2157 + version "1.1.0"
2158 + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9"
2159 + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==
2160 + dependencies:
2161 + es-errors "^1.3.0"
2162 + object-inspect "^1.13.3"
2163 + side-channel-list "^1.0.0"
2164 + side-channel-map "^1.0.1"
2165 + side-channel-weakmap "^1.0.2"
2166 +
2167 +spawn-command@^0.0.2-1:
2168 + version "0.0.2"
2169 + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e"
2170 + integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==
2171 +
2172 +srcset@4:
2173 + version "4.0.0"
2174 + resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4"
2175 + integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==
2176 +
2177 +statuses@2.0.1:
2178 + version "2.0.1"
2179 + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
2180 + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
2181 +
2182 +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
2183 + version "4.2.3"
2184 + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
2185 + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
2186 + dependencies:
2187 + emoji-regex "^8.0.0"
2188 + is-fullwidth-code-point "^3.0.0"
2189 + strip-ansi "^6.0.1"
2190 +
2191 +strip-ansi@^6.0.0, strip-ansi@^6.0.1:
2192 + version "6.0.1"
2193 + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
2194 + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
2195 + dependencies:
2196 + ansi-regex "^5.0.1"
2197 +
2198 +supports-color@^7.1.0:
2199 + version "7.2.0"
2200 + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
2201 + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
2202 + dependencies:
2203 + has-flag "^4.0.0"
2204 +
2205 +supports-color@^8.1.0:
2206 + version "8.1.1"
2207 + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
2208 + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
2209 + dependencies:
2210 + has-flag "^4.0.0"
2211 +
2212 +term-size@^2.2.1:
2213 + version "2.2.1"
2214 + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54"
2215 + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==
2216 +
2217 +timsort@^0.3.0:
2218 + version "0.3.0"
2219 + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
2220 + integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==
2221 +
2222 +to-regex-range@^5.0.1:
2223 + version "5.0.1"
2224 + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
2225 + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
2226 + dependencies:
2227 + is-number "^7.0.0"
2228 +
2229 +toidentifier@1.0.1:
2230 + version "1.0.1"
2231 + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
2232 + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
2233 +
2234 +tree-kill@^1.2.2:
2235 + version "1.2.2"
2236 + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
2237 + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
2238 +
2239 +tslib@^2.1.0, tslib@^2.8.0:
2240 + version "2.8.1"
2241 + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
2242 + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
2243 +
2244 +type-fest@^0.20.2:
2245 + version "0.20.2"
2246 + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
2247 + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
2248 +
2249 +type-is@~1.6.18:
2250 + version "1.6.18"
2251 + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
2252 + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
2253 + dependencies:
2254 + media-typer "0.3.0"
2255 + mime-types "~2.1.24"
2256 +
2257 +undici-types@~6.20.0:
2258 + version "6.20.0"
2259 + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433"
2260 + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==
2261 +
2262 +unpipe@1.0.0, unpipe@~1.0.0:
2263 + version "1.0.0"
2264 + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
2265 + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
2266 +
2267 +update-browserslist-db@^1.1.1:
2268 + version "1.1.1"
2269 + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5"
2270 + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==
2271 + dependencies:
2272 + escalade "^3.2.0"
2273 + picocolors "^1.1.0"
2274 +
2275 +utility-types@^3.10.0:
2276 + version "3.11.0"
2277 + resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.11.0.tgz#607c40edb4f258915e901ea7995607fdf319424c"
2278 + integrity sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==
2279 +
2280 +utils-merge@1.0.1:
2281 + version "1.0.1"
2282 + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
2283 + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
2284 +
2285 +vary@~1.1.2:
2286 + version "1.1.2"
2287 + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
2288 + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
2289 +
2290 +weak-lru-cache@^1.2.2:
2291 + version "1.2.2"
2292 + resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19"
2293 + integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==
2294 +
2295 +wrap-ansi@^7.0.0:
2296 + version "7.0.0"
2297 + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
2298 + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
2299 + dependencies:
2300 + ansi-styles "^4.0.0"
2301 + string-width "^4.1.0"
2302 + strip-ansi "^6.0.0"
2303 +
2304 +ws@^8.8.1:
2305 + version "8.18.0"
2306 + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc"
2307 + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==
2308 +
2309 +y18n@^5.0.5:
2310 + version "5.0.8"
2311 + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
2312 + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
2313 +
2314 +yargs-parser@^21.1.1:
2315 + version "21.1.1"
2316 + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
2317 + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
2318 +
2319 +yargs@^17.3.1:
2320 + version "17.7.2"
2321 + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
2322 + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
2323 + dependencies:
2324 + cliui "^8.0.1"
2325 + escalade "^3.1.1"
2326 + get-caller-file "^2.0.5"
2327 + require-directory "^2.1.1"
2328 + string-width "^4.2.3"
2329 + y18n "^5.0.5"
2330 + yargs-parser "^21.1.1"
packages/react-client/src/forks/ReactFlightClientConfig.dom-browser-parcel.js new
+17
@@ -0,0 +1,17 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export {default as rendererVersion} from 'shared/ReactVersion';
11 +export const rendererPackageName = 'react-server-dom-parcel';
12 +
13 +export * from 'react-client/src/ReactFlightClientStreamConfigWeb';
14 +export * from 'react-client/src/ReactClientConsoleConfigBrowser';
15 +export * from 'react-server-dom-parcel/src/shared/ReactFlightClientConfigBundlerParcel';
16 +export * from 'react-dom-bindings/src/shared/ReactFlightClientConfigDOM';
17 +export const usedWithSSR = false;
packages/react-client/src/forks/ReactFlightClientConfig.dom-edge-parcel.js new
+17
@@ -0,0 +1,17 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export {default as rendererVersion} from 'shared/ReactVersion';
11 +export const rendererPackageName = 'react-server-dom-parcel';
12 +
13 +export * from 'react-client/src/ReactFlightClientStreamConfigWeb';
14 +export * from 'react-client/src/ReactClientConsoleConfigServer';
15 +export * from 'react-server-dom-parcel/src/shared/ReactFlightClientConfigBundlerParcel';
16 +export * from 'react-dom-bindings/src/shared/ReactFlightClientConfigDOM';
17 +export const usedWithSSR = true;
packages/react-client/src/forks/ReactFlightClientConfig.dom-node-parcel.js new
+17
@@ -0,0 +1,17 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export {default as rendererVersion} from 'shared/ReactVersion';
11 +export const rendererPackageName = 'react-server-dom-parcel';
12 +
13 +export * from 'react-client/src/ReactFlightClientStreamConfigNode';
14 +export * from 'react-client/src/ReactClientConsoleConfigServer';
15 +export * from 'react-server-dom-parcel/src/shared/ReactFlightClientConfigBundlerParcel';
16 +export * from 'react-dom-bindings/src/shared/ReactFlightClientConfigDOM';
17 +export const usedWithSSR = true;
packages/react-server-dom-parcel/README.md new
+5
@@ -0,0 +1,5 @@
1 +# react-server-dom-parcel
2 +
3 +Experimental React Flight bindings for DOM using Parcel.
4 +
5 +**Use it at your own risk.**
packages/react-server-dom-parcel/client.browser.js new
+10
@@ -0,0 +1,10 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export * from './src/client/ReactFlightDOMClientBrowser';
packages/react-server-dom-parcel/client.edge.js new
+10
@@ -0,0 +1,10 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export * from './src/client/ReactFlightDOMClientEdge';
packages/react-server-dom-parcel/client.js new
+10
@@ -0,0 +1,10 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export * from './client.browser';
packages/react-server-dom-parcel/client.node.js new
+10
@@ -0,0 +1,10 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export * from './src/client/ReactFlightDOMClientNode';
packages/react-server-dom-parcel/index.js new
+10
@@ -0,0 +1,10 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +throw new Error('Use react-server-dom-parcel/client instead.');
packages/react-server-dom-parcel/npm/client.browser.js new
+7
@@ -0,0 +1,7 @@
1 +'use strict';
2 +
3 +if (process.env.NODE_ENV === 'production') {
4 + module.exports = require('./cjs/react-server-dom-parcel-client.browser.production.js');
5 +} else {
6 + module.exports = require('./cjs/react-server-dom-parcel-client.browser.development.js');
7 +}
packages/react-server-dom-parcel/npm/client.edge.js new
+7
@@ -0,0 +1,7 @@
1 +'use strict';
2 +
3 +if (process.env.NODE_ENV === 'production') {
4 + module.exports = require('./cjs/react-server-dom-parcel-client.edge.production.js');
5 +} else {
6 + module.exports = require('./cjs/react-server-dom-parcel-client.edge.development.js');
7 +}
packages/react-server-dom-parcel/npm/client.js new
+3
@@ -0,0 +1,3 @@
1 +'use strict';
2 +
3 +module.exports = require('./client.browser');
packages/react-server-dom-parcel/npm/client.node.js new
+7
@@ -0,0 +1,7 @@
1 +'use strict';
2 +
3 +if (process.env.NODE_ENV === 'production') {
4 + module.exports = require('./cjs/react-server-dom-parcel-client.node.production.js');
5 +} else {
6 + module.exports = require('./cjs/react-server-dom-parcel-client.node.development.js');
7 +}
packages/react-server-dom-parcel/npm/index.js new
+12
@@ -0,0 +1,12 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +'use strict';
11 +
12 +throw new Error('Use react-server-dom-parcel/client instead.');
packages/react-server-dom-parcel/npm/server.browser.js new
+7
@@ -0,0 +1,7 @@
1 +'use strict';
2 +
3 +if (process.env.NODE_ENV === 'production') {
4 + module.exports = require('./cjs/react-server-dom-parcel-server.browser.production.js');
5 +} else {
6 + module.exports = require('./cjs/react-server-dom-parcel-server.browser.development.js');
7 +}
packages/react-server-dom-parcel/npm/server.edge.js new
+7
@@ -0,0 +1,7 @@
1 +'use strict';
2 +
3 +if (process.env.NODE_ENV === 'production') {
4 + module.exports = require('./cjs/react-server-dom-parcel-server.edge.production.js');
5 +} else {
6 + module.exports = require('./cjs/react-server-dom-parcel-server.edge.development.js');
7 +}
packages/react-server-dom-parcel/npm/server.js new
+6
@@ -0,0 +1,6 @@
1 +'use strict';
2 +
3 +throw new Error(
4 + 'The React Server Writer cannot be used outside a react-server environment. ' +
5 + 'You must configure Node.js using the `--conditions react-server` flag.'
6 +);
packages/react-server-dom-parcel/npm/server.node.js new
+7
@@ -0,0 +1,7 @@
1 +'use strict';
2 +
3 +if (process.env.NODE_ENV === 'production') {
4 + module.exports = require('./cjs/react-server-dom-parcel-server.node.production.js');
5 +} else {
6 + module.exports = require('./cjs/react-server-dom-parcel-server.node.development.js');
7 +}
packages/react-server-dom-parcel/package.json new
+86
@@ -0,0 +1,86 @@
1 +{
2 + "name": "react-server-dom-parcel",
3 + "description": "React Server Components bindings for DOM using Parcel. This is intended to be integrated into meta-frameworks. It is not intended to be imported directly.",
4 + "version": "19.0.0",
5 + "private": true,
6 + "keywords": [
7 + "react"
8 + ],
9 + "homepage": "https://reactjs.org/",
10 + "bugs": "https://github.com/facebook/react/issues",
11 + "license": "MIT",
12 + "files": [
13 + "LICENSE",
14 + "README.md",
15 + "index.js",
16 + "client.js",
17 + "client.browser.js",
18 + "client.edge.js",
19 + "client.node.js",
20 + "server.js",
21 + "server.browser.js",
22 + "server.edge.js",
23 + "server.node.js",
24 + "static.js",
25 + "static.browser.js",
26 + "static.edge.js",
27 + "static.node.js",
28 + "cjs/"
29 + ],
30 + "exports": {
31 + ".": "./index.js",
32 + "./client": {
33 + "workerd": "./client.edge.js",
34 + "deno": "./client.edge.js",
35 + "worker": "./client.edge.js",
36 + "node": "./client.node.js",
37 + "edge-light": "./client.edge.js",
38 + "browser": "./client.browser.js",
39 + "default": "./client.browser.js"
40 + },
41 + "./client.browser": "./client.browser.js",
42 + "./client.edge": "./client.edge.js",
43 + "./client.node": "./client.node.js",
44 + "./server": {
45 + "react-server": {
46 + "workerd": "./server.edge.js",
47 + "deno": "./server.browser.js",
48 + "node": "./server.node.js",
49 + "edge-light": "./server.edge.js",
50 + "browser": "./server.browser.js"
51 + },
52 + "default": "./server.js"
53 + },
54 + "./server.browser": "./server.browser.js",
55 + "./server.edge": "./server.edge.js",
56 + "./server.node": "./server.node.js",
57 + "./static": {
58 + "react-server": {
59 + "workerd": "./static.edge.js",
60 + "deno": "./static.browser.js",
61 + "node": "./static.node.js",
62 + "edge-light": "./static.edge.js",
63 + "browser": "./static.browser.js"
64 + },
65 + "default": "./static.js"
66 + },
67 + "./static.browser": "./static.browser.js",
68 + "./static.edge": "./static.edge.js",
69 + "./static.node": "./static.node.js",
70 + "./src/*": "./src/*.js",
71 + "./package.json": "./package.json"
72 + },
73 + "main": "index.js",
74 + "repository": {
75 + "type" : "git",
76 + "url" : "https://github.com/facebook/react.git",
77 + "directory": "packages/react-server-dom-parcel"
78 + },
79 + "engines": {
80 + "node": ">=0.10.0"
81 + },
82 + "peerDependencies": {
83 + "react": "^19.0.0",
84 + "react-dom": "^19.0.0"
85 + }
86 +}
packages/react-server-dom-parcel/server.browser.js new
+20
@@ -0,0 +1,20 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export {
11 + renderToReadableStream,
12 + decodeReply,
13 + decodeAction,
14 + decodeFormState,
15 + createClientReference,
16 + registerServerReference,
17 + createTemporaryReferenceSet,
18 + registerServerActions,
19 + loadServerAction,
20 +} from './src/server/react-flight-dom-server.browser';
packages/react-server-dom-parcel/server.edge.js new
+20
@@ -0,0 +1,20 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export {
11 + renderToReadableStream,
12 + decodeReply,
13 + decodeAction,
14 + decodeFormState,
15 + createClientReference,
16 + registerServerReference,
17 + createTemporaryReferenceSet,
18 + registerServerActions,
19 + loadServerAction,
20 +} from './src/server/react-flight-dom-server.edge';
packages/react-server-dom-parcel/server.js new
+13
@@ -0,0 +1,13 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +throw new Error(
11 + 'The React Server cannot be used outside a react-server environment. ' +
12 + 'You must configure Node.js using the `--conditions react-server` flag.',
13 +);
packages/react-server-dom-parcel/server.node.js new
+21
@@ -0,0 +1,21 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export {
11 + renderToPipeableStream,
12 + decodeReplyFromBusboy,
13 + decodeReply,
14 + decodeAction,
15 + decodeFormState,
16 + createClientReference,
17 + registerServerReference,
18 + createTemporaryReferenceSet,
19 + registerServerActions,
20 + loadServerAction,
21 +} from './src/server/react-flight-dom-server.node';
packages/react-server-dom-parcel/src/ReactFlightParcelReferences.js new
+126
@@ -0,0 +1,126 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +import type {ReactClientValue} from 'react-server/src/ReactFlightServer';
11 +
12 +export type ServerReference<T: Function> = T & {
13 + $$typeof: symbol,
14 + $$id: string,
15 + $$bound: null | Array<ReactClientValue>,
16 + $$location?: Error,
17 +};
18 +
19 +// eslint-disable-next-line no-unused-vars
20 +export type ClientReference<T> = {
21 + $$typeof: symbol,
22 + $$id: string,
23 + $$name: string,
24 + $$bundles: Array<string>,
25 +};
26 +
27 +const CLIENT_REFERENCE_TAG = Symbol.for('react.client.reference');
28 +const SERVER_REFERENCE_TAG = Symbol.for('react.server.reference');
29 +
30 +export function isClientReference(reference: Object): boolean {
31 + return reference.$$typeof === CLIENT_REFERENCE_TAG;
32 +}
33 +
34 +export function isServerReference(reference: Object): boolean {
35 + return reference.$$typeof === SERVER_REFERENCE_TAG;
36 +}
37 +
38 +export function createClientReference<T>(
39 + id: string,
40 + exportName: string,
41 + bundles: Array<string>,
42 +): ClientReference<T> {
43 + return {
44 + $$typeof: CLIENT_REFERENCE_TAG,
45 + $$id: id,
46 + $$name: exportName,
47 + $$bundles: bundles,
48 + };
49 +}
50 +
51 +// $FlowFixMe[method-unbinding]
52 +const FunctionBind = Function.prototype.bind;
53 +// $FlowFixMe[method-unbinding]
54 +const ArraySlice = Array.prototype.slice;
55 +function bind(this: ServerReference<any>): any {
56 + // $FlowFixMe[prop-missing]
57 + const newFn = FunctionBind.apply(this, arguments);
58 + if (this.$$typeof === SERVER_REFERENCE_TAG) {
59 + if (__DEV__) {
60 + const thisBind = arguments[0];
61 + if (thisBind != null) {
62 + console.error(
63 + 'Cannot bind "this" of a Server Action. Pass null or undefined as the first argument to .bind().',
64 + );
65 + }
66 + }
67 + const args = ArraySlice.call(arguments, 1);
68 + const $$typeof = {value: SERVER_REFERENCE_TAG};
69 + const $$id = {value: this.$$id};
70 + const $$bound = {value: this.$$bound ? this.$$bound.concat(args) : args};
71 + return Object.defineProperties(
72 + (newFn: any),
73 + __DEV__
74 + ? {
75 + $$typeof,
76 + $$id,
77 + $$bound,
78 + $$location: {
79 + value: this.$$location,
80 + configurable: true,
81 + },
82 + bind: {value: bind, configurable: true},
83 + }
84 + : {
85 + $$typeof,
86 + $$id,
87 + $$bound,
88 + bind: {value: bind, configurable: true},
89 + },
90 + );
91 + }
92 + return newFn;
93 +}
94 +
95 +export function registerServerReference<T>(
96 + reference: ServerReference<T>,
97 + id: string,
98 + exportName: string,
99 +): ServerReference<T> {
100 + const $$typeof = {value: SERVER_REFERENCE_TAG};
101 + const $$id = {
102 + value: id + '#' + exportName,
103 + configurable: true,
104 + };
105 + const $$bound = {value: null, configurable: true};
106 + return Object.defineProperties(
107 + (reference: any),
108 + __DEV__
109 + ? {
110 + $$typeof,
111 + $$id,
112 + $$bound,
113 + $$location: {
114 + value: Error('react-stack-top-frame'),
115 + configurable: true,
116 + },
117 + bind: {value: bind, configurable: true},
118 + }
119 + : {
120 + $$typeof,
121 + $$id,
122 + $$bound,
123 + bind: {value: bind, configurable: true},
124 + },
125 + );
126 +}
packages/react-server-dom-parcel/src/client/ReactFlightDOMClientBrowser.js new
+179
@@ -0,0 +1,179 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +import type {Thenable} from 'shared/ReactTypes.js';
11 +import type {Response as FlightResponse} from 'react-client/src/ReactFlightClient';
12 +import type {ReactServerValue} from 'react-client/src/ReactFlightReplyClient';
13 +import type {ServerReferenceId} from '../shared/ReactFlightClientConfigBundlerParcel';
14 +
15 +import {
16 + createResponse,
17 + getRoot,
18 + reportGlobalError,
19 + processBinaryChunk,
20 + close,
21 +} from 'react-client/src/ReactFlightClient';
22 +
23 +import {
24 + processReply,
25 + createServerReference as createServerReferenceImpl,
26 +} from 'react-client/src/ReactFlightReplyClient';
27 +
28 +import type {TemporaryReferenceSet} from 'react-client/src/ReactFlightTemporaryReferences';
29 +
30 +export {createTemporaryReferenceSet} from 'react-client/src/ReactFlightTemporaryReferences';
31 +export type {TemporaryReferenceSet};
32 +
33 +type CallServerCallback = <A, T>(id: string, args: A) => Promise<T>;
34 +
35 +let callServer: CallServerCallback | null = null;
36 +export function setServerCallback(fn: CallServerCallback) {
37 + callServer = fn;
38 +}
39 +
40 +function callCurrentServerCallback<A, T>(
41 + id: ServerReferenceId,
42 + args: A,
43 +): Promise<T> {
44 + if (!callServer) {
45 + throw new Error(
46 + 'No server callback has been registered. Call setServerCallback to register one.',
47 + );
48 + }
49 + return callServer(id, args);
50 +}
51 +
52 +export function createServerReference<A: Iterable<any>, T>(
53 + id: string,
54 + exportName: string,
55 +): (...A) => Promise<T> {
56 + return createServerReferenceImpl(
57 + id + '#' + exportName,
58 + callCurrentServerCallback,
59 + );
60 +}
61 +
62 +function startReadingFromStream(
63 + response: FlightResponse,
64 + stream: ReadableStream,
65 +): void {
66 + const reader = stream.getReader();
67 + function progress({
68 + done,
69 + value,
70 + }: {
71 + done: boolean,
72 + value: ?any,
73 + ...
74 + }): void | Promise<void> {
75 + if (done) {
76 + close(response);
77 + return;
78 + }
79 + const buffer: Uint8Array = (value: any);
80 + processBinaryChunk(response, buffer);
81 + return reader.read().then(progress).catch(error);
82 + }
83 + function error(e: any) {
84 + reportGlobalError(response, e);
85 + }
86 + reader.read().then(progress).catch(error);
87 +}
88 +
89 +export type Options = {
90 + temporaryReferences?: TemporaryReferenceSet,
91 + replayConsoleLogs?: boolean,
92 + environmentName?: string,
93 +};
94 +
95 +export function createFromReadableStream<T>(
96 + stream: ReadableStream,
97 + options?: Options,
98 +): Thenable<T> {
99 + const response: FlightResponse = createResponse(
100 + null, // bundlerConfig
101 + null, // serverReferenceConfig
102 + null, // moduleLoading
103 + callCurrentServerCallback,
104 + undefined, // encodeFormAction
105 + undefined, // nonce
106 + options && options.temporaryReferences
107 + ? options.temporaryReferences
108 + : undefined,
109 + undefined, // TODO: findSourceMapUrl
110 + __DEV__ ? (options ? options.replayConsoleLogs !== false : true) : false, // defaults to true
111 + __DEV__ && options && options.environmentName
112 + ? options.environmentName
113 + : undefined,
114 + );
115 + startReadingFromStream(response, stream);
116 + return getRoot(response);
117 +}
118 +
119 +export function createFromFetch<T>(
120 + promiseForResponse: Promise<Response>,
121 + options?: Options,
122 +): Thenable<T> {
123 + const response: FlightResponse = createResponse(
124 + null, // bundlerConfig
125 + null, // serverReferenceConfig
126 + null, // moduleLoading
127 + callCurrentServerCallback,
128 + undefined, // encodeFormAction
129 + undefined, // nonce
130 + options && options.temporaryReferences
131 + ? options.temporaryReferences
132 + : undefined,
133 + undefined, // TODO: findSourceMapUrl
134 + __DEV__ ? (options ? options.replayConsoleLogs !== false : true) : false, // defaults to true
135 + __DEV__ && options && options.environmentName
136 + ? options.environmentName
137 + : undefined,
138 + );
139 + promiseForResponse.then(
140 + function (r) {
141 + startReadingFromStream(response, (r.body: any));
142 + },
143 + function (e) {
144 + reportGlobalError(response, e);
145 + },
146 + );
147 + return getRoot(response);
148 +}
149 +
150 +export function encodeReply(
151 + value: ReactServerValue,
152 + options?: {temporaryReferences?: TemporaryReferenceSet, signal?: AbortSignal},
153 +): Promise<
154 + string | URLSearchParams | FormData,
155 +> /* We don't use URLSearchParams yet but maybe */ {
156 + return new Promise((resolve, reject) => {
157 + const abort = processReply(
158 + value,
159 + '', // formFieldPrefix
160 + options && options.temporaryReferences
161 + ? options.temporaryReferences
162 + : undefined,
163 + resolve,
164 + reject,
165 + );
166 + if (options && options.signal) {
167 + const signal = options.signal;
168 + if (signal.aborted) {
169 + abort((signal: any).reason);
170 + } else {
171 + const listener = () => {
172 + abort((signal: any).reason);
173 + signal.removeEventListener('abort', listener);
174 + };
175 + signal.addEventListener('abort', listener);
176 + }
177 + }
178 + });
179 +}
packages/react-server-dom-parcel/src/client/ReactFlightDOMClientEdge.js new
+161
@@ -0,0 +1,161 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +import type {Thenable, ReactCustomFormAction} from 'shared/ReactTypes.js';
11 +
12 +import type {Response as FlightResponse} from 'react-client/src/ReactFlightClient';
13 +import type {ReactServerValue} from 'react-client/src/ReactFlightReplyClient';
14 +
15 +import {
16 + createResponse,
17 + getRoot,
18 + reportGlobalError,
19 + processBinaryChunk,
20 + close,
21 +} from 'react-client/src/ReactFlightClient';
22 +
23 +import {
24 + processReply,
25 + createServerReference as createServerReferenceImpl,
26 +} from 'react-client/src/ReactFlightReplyClient';
27 +
28 +import type {TemporaryReferenceSet} from 'react-client/src/ReactFlightTemporaryReferences';
29 +
30 +export {createTemporaryReferenceSet} from 'react-client/src/ReactFlightTemporaryReferences';
31 +export type {TemporaryReferenceSet};
32 +
33 +function noServerCall() {
34 + throw new Error(
35 + 'Server Functions cannot be called during initial render. ' +
36 + 'This would create a fetch waterfall. Try to use a Server Component ' +
37 + 'to pass data to Client Components instead.',
38 + );
39 +}
40 +
41 +export function createServerReference<A: Iterable<any>, T>(
42 + id: string,
43 + exportName: string,
44 +): (...A) => Promise<T> {
45 + return createServerReferenceImpl(id + '#' + exportName, noServerCall);
46 +}
47 +
48 +type EncodeFormActionCallback = <A>(
49 + id: any,
50 + args: Promise<A>,
51 +) => ReactCustomFormAction;
52 +
53 +export type Options = {
54 + nonce?: string,
55 + encodeFormAction?: EncodeFormActionCallback,
56 + temporaryReferences?: TemporaryReferenceSet,
57 + replayConsoleLogs?: boolean,
58 + environmentName?: string,
59 +};
60 +
61 +function createResponseFromOptions(options?: Options) {
62 + return createResponse(
63 + null, // bundlerConfig
64 + null, // serverReferenceConfig
65 + null, // moduleLoading
66 + noServerCall,
67 + options ? options.encodeFormAction : undefined,
68 + options && typeof options.nonce === 'string' ? options.nonce : undefined,
69 + options && options.temporaryReferences
70 + ? options.temporaryReferences
71 + : undefined,
72 + undefined, // TODO: findSourceMapUrl
73 + __DEV__ && options ? options.replayConsoleLogs === true : false, // defaults to false
74 + __DEV__ && options && options.environmentName
75 + ? options.environmentName
76 + : undefined,
77 + );
78 +}
79 +
80 +function startReadingFromStream(
81 + response: FlightResponse,
82 + stream: ReadableStream,
83 +): void {
84 + const reader = stream.getReader();
85 + function progress({
86 + done,
87 + value,
88 + }: {
89 + done: boolean,
90 + value: ?any,
91 + ...
92 + }): void | Promise<void> {
93 + if (done) {
94 + close(response);
95 + return;
96 + }
97 + const buffer: Uint8Array = (value: any);
98 + processBinaryChunk(response, buffer);
99 + return reader.read().then(progress).catch(error);
100 + }
101 + function error(e: any) {
102 + reportGlobalError(response, e);
103 + }
104 + reader.read().then(progress).catch(error);
105 +}
106 +
107 +export function createFromReadableStream<T>(
108 + stream: ReadableStream,
109 + options?: Options,
110 +): Thenable<T> {
111 + const response: FlightResponse = createResponseFromOptions(options);
112 + startReadingFromStream(response, stream);
113 + return getRoot(response);
114 +}
115 +
116 +export function createFromFetch<T>(
117 + promiseForResponse: Promise<Response>,
118 + options?: Options,
119 +): Thenable<T> {
120 + const response: FlightResponse = createResponseFromOptions(options);
121 + promiseForResponse.then(
122 + function (r) {
123 + startReadingFromStream(response, (r.body: any));
124 + },
125 + function (e) {
126 + reportGlobalError(response, e);
127 + },
128 + );
129 + return getRoot(response);
130 +}
131 +
132 +export function encodeReply(
133 + value: ReactServerValue,
134 + options?: {temporaryReferences?: TemporaryReferenceSet, signal?: AbortSignal},
135 +): Promise<
136 + string | URLSearchParams | FormData,
137 +> /* We don't use URLSearchParams yet but maybe */ {
138 + return new Promise((resolve, reject) => {
139 + const abort = processReply(
140 + value,
141 + '',
142 + options && options.temporaryReferences
143 + ? options.temporaryReferences
144 + : undefined,
145 + resolve,
146 + reject,
147 + );
148 + if (options && options.signal) {
149 + const signal = options.signal;
150 + if (signal.aborted) {
151 + abort((signal: any).reason);
152 + } else {
153 + const listener = () => {
154 + abort((signal: any).reason);
155 + signal.removeEventListener('abort', listener);
156 + };
157 + signal.addEventListener('abort', listener);
158 + }
159 + }
160 + });
161 +}
packages/react-server-dom-parcel/src/client/ReactFlightDOMClientNode.js new
+77
@@ -0,0 +1,77 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +import type {Thenable, ReactCustomFormAction} from 'shared/ReactTypes.js';
11 +import type {Response} from 'react-client/src/ReactFlightClient';
12 +import type {Readable} from 'stream';
13 +
14 +import {
15 + createResponse,
16 + getRoot,
17 + reportGlobalError,
18 + processBinaryChunk,
19 + close,
20 +} from 'react-client/src/ReactFlightClient';
21 +
22 +import {createServerReference as createServerReferenceImpl} from 'react-client/src/ReactFlightReplyClient';
23 +
24 +function noServerCall() {
25 + throw new Error(
26 + 'Server Functions cannot be called during initial render. ' +
27 + 'This would create a fetch waterfall. Try to use a Server Component ' +
28 + 'to pass data to Client Components instead.',
29 + );
30 +}
31 +
32 +export function createServerReference<A: Iterable<any>, T>(
33 + id: string,
34 + exportName: string,
35 +): (...A) => Promise<T> {
36 + return createServerReferenceImpl(id + '#' + exportName, noServerCall);
37 +}
38 +
39 +type EncodeFormActionCallback = <A>(
40 + id: any,
41 + args: Promise<A>,
42 +) => ReactCustomFormAction;
43 +
44 +export type Options = {
45 + nonce?: string,
46 + encodeFormAction?: EncodeFormActionCallback,
47 + replayConsoleLogs?: boolean,
48 + environmentName?: string,
49 +};
50 +
51 +export function createFromNodeStream<T>(
52 + stream: Readable,
53 + options?: Options,
54 +): Thenable<T> {
55 + const response: Response = createResponse(
56 + null, // bundlerConfig
57 + null, // serverReferenceConfig
58 + null, // moduleLoading
59 + noServerCall,
60 + options ? options.encodeFormAction : undefined,
61 + options && typeof options.nonce === 'string' ? options.nonce : undefined,
62 + undefined, // TODO: If encodeReply is supported, this should support temporaryReferences
63 + undefined, // TODO: findSourceMapUrl
64 + __DEV__ && options ? options.replayConsoleLogs === true : false, // defaults to false
65 + __DEV__ && options && options.environmentName
66 + ? options.environmentName
67 + : undefined,
68 + );
69 + stream.on('data', chunk => {
70 + processBinaryChunk(response, chunk);
71 + });
72 + stream.on('error', error => {
73 + reportGlobalError(response, error);
74 + });
75 + stream.on('end', () => close(response));
76 + return getRoot(response);
77 +}
packages/react-server-dom-parcel/src/server/ReactFlightDOMServerBrowser.js new
+214
@@ -0,0 +1,214 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +import type {ReactClientValue} from 'react-server/src/ReactFlightServer';
11 +import type {ReactFormState, Thenable} from 'shared/ReactTypes';
12 +import {
13 + preloadModule,
14 + requireModule,
15 + resolveServerReference,
16 + type ServerManifest,
17 + type ServerReferenceId,
18 +} from '../shared/ReactFlightClientConfigBundlerParcel';
19 +
20 +import {
21 + createRequest,
22 + createPrerenderRequest,
23 + startWork,
24 + startFlowing,
25 + stopFlowing,
26 + abort,
27 +} from 'react-server/src/ReactFlightServer';
28 +
29 +import {
30 + createResponse,
31 + close,
32 + getRoot,
33 +} from 'react-server/src/ReactFlightReplyServer';
34 +
35 +import {
36 + decodeAction as decodeActionImpl,
37 + decodeFormState as decodeFormStateImpl,
38 +} from 'react-server/src/ReactFlightActionServer';
39 +
40 +export {
41 + createClientReference,
42 + registerServerReference,
43 +} from '../ReactFlightParcelReferences';
44 +
45 +import type {TemporaryReferenceSet} from 'react-server/src/ReactFlightServerTemporaryReferences';
46 +
47 +export {createTemporaryReferenceSet} from 'react-server/src/ReactFlightServerTemporaryReferences';
48 +export type {TemporaryReferenceSet};
49 +
50 +type Options = {
51 + environmentName?: string | (() => string),
52 + filterStackFrame?: (url: string, functionName: string) => boolean,
53 + identifierPrefix?: string,
54 + signal?: AbortSignal,
55 + temporaryReferences?: TemporaryReferenceSet,
56 + onError?: (error: mixed) => void,
57 + onPostpone?: (reason: string) => void,
58 +};
59 +
60 +export function renderToReadableStream(
61 + model: ReactClientValue,
62 + options?: Options,
63 +): ReadableStream {
64 + const request = createRequest(
65 + model,
66 + null,
67 + options ? options.onError : undefined,
68 + options ? options.identifierPrefix : undefined,
69 + options ? options.onPostpone : undefined,
70 + options ? options.temporaryReferences : undefined,
71 + __DEV__ && options ? options.environmentName : undefined,
72 + __DEV__ && options ? options.filterStackFrame : undefined,
73 + );
74 + if (options && options.signal) {
75 + const signal = options.signal;
76 + if (signal.aborted) {
77 + abort(request, (signal: any).reason);
78 + } else {
79 + const listener = () => {
80 + abort(request, (signal: any).reason);
81 + signal.removeEventListener('abort', listener);
82 + };
83 + signal.addEventListener('abort', listener);
84 + }
85 + }
86 + const stream = new ReadableStream(
87 + {
88 + type: 'bytes',
89 + start: (controller): ?Promise<void> => {
90 + startWork(request);
91 + },
92 + pull: (controller): ?Promise<void> => {
93 + startFlowing(request, controller);
94 + },
95 + cancel: (reason): ?Promise<void> => {
96 + stopFlowing(request);
97 + abort(request, reason);
98 + },
99 + },
100 + // $FlowFixMe[prop-missing] size() methods are not allowed on byte streams.
101 + {highWaterMark: 0},
102 + );
103 + return stream;
104 +}
105 +
106 +type StaticResult = {
107 + prelude: ReadableStream,
108 +};
109 +
110 +export function prerender(
111 + model: ReactClientValue,
112 + options?: Options,
113 +): Promise<StaticResult> {
114 + return new Promise((resolve, reject) => {
115 + const onFatalError = reject;
116 + function onAllReady() {
117 + const stream = new ReadableStream(
118 + {
119 + type: 'bytes',
120 + start: (controller): ?Promise<void> => {
121 + startWork(request);
122 + },
123 + pull: (controller): ?Promise<void> => {
124 + startFlowing(request, controller);
125 + },
126 + cancel: (reason): ?Promise<void> => {
127 + stopFlowing(request);
128 + abort(request, reason);
129 + },
130 + },
131 + // $FlowFixMe[prop-missing] size() methods are not allowed on byte streams.
132 + {highWaterMark: 0},
133 + );
134 + resolve({prelude: stream});
135 + }
136 + const request = createPrerenderRequest(
137 + model,
138 + null,
139 + onAllReady,
140 + onFatalError,
141 + options ? options.onError : undefined,
142 + options ? options.identifierPrefix : undefined,
143 + options ? options.onPostpone : undefined,
144 + options ? options.temporaryReferences : undefined,
145 + __DEV__ && options ? options.environmentName : undefined,
146 + __DEV__ && options ? options.filterStackFrame : undefined,
147 + );
148 + if (options && options.signal) {
149 + const signal = options.signal;
150 + if (signal.aborted) {
151 + const reason = (signal: any).reason;
152 + abort(request, reason);
153 + } else {
154 + const listener = () => {
155 + const reason = (signal: any).reason;
156 + abort(request, reason);
157 + signal.removeEventListener('abort', listener);
158 + };
159 + signal.addEventListener('abort', listener);
160 + }
161 + }
162 + startWork(request);
163 + });
164 +}
165 +
166 +let serverManifest = {};
167 +export function registerServerActions(manifest: ServerManifest) {
168 + // This function is called by the bundler to register the manifest.
169 + serverManifest = manifest;
170 +}
171 +
172 +export function decodeReply<T>(
173 + body: string | FormData,
174 + options?: {temporaryReferences?: TemporaryReferenceSet},
175 +): Thenable<T> {
176 + if (typeof body === 'string') {
177 + const form = new FormData();
178 + form.append('0', body);
179 + body = form;
180 + }
181 + const response = createResponse(
182 + serverManifest,
183 + '',
184 + options ? options.temporaryReferences : undefined,
185 + body,
186 + );
187 + const root = getRoot<T>(response);
188 + close(response);
189 + return root;
190 +}
191 +
192 +export function decodeAction<T>(body: FormData): Promise<() => T> | null {
193 + return decodeActionImpl(body, serverManifest);
194 +}
195 +
196 +export function decodeFormState<S>(
197 + actionResult: S,
198 + body: FormData,
199 +): Promise<ReactFormState<S, ServerReferenceId> | null> {
200 + return decodeFormStateImpl(actionResult, body, serverManifest);
201 +}
202 +
203 +export function loadServerAction<F: (...any[]) => any>(id: string): Promise<F> {
204 + const reference = resolveServerReference<any>(serverManifest, id);
205 + return Promise.resolve(reference)
206 + .then(() => preloadModule(reference))
207 + .then(() => {
208 + const fn = requireModule(reference);
209 + if (typeof fn !== 'function') {
210 + throw new Error('Server actions must be functions');
211 + }
212 + return fn;
213 + });
214 +}
packages/react-server-dom-parcel/src/server/ReactFlightDOMServerEdge.js new
+214
@@ -0,0 +1,214 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +import type {ReactClientValue} from 'react-server/src/ReactFlightServer';
11 +import type {ReactFormState, Thenable} from 'shared/ReactTypes';
12 +import {
13 + preloadModule,
14 + requireModule,
15 + resolveServerReference,
16 + type ServerManifest,
17 + type ServerReferenceId,
18 +} from '../shared/ReactFlightClientConfigBundlerParcel';
19 +
20 +import {
21 + createRequest,
22 + createPrerenderRequest,
23 + startWork,
24 + startFlowing,
25 + stopFlowing,
26 + abort,
27 +} from 'react-server/src/ReactFlightServer';
28 +
29 +import {
30 + createResponse,
31 + close,
32 + getRoot,
33 +} from 'react-server/src/ReactFlightReplyServer';
34 +
35 +import {
36 + decodeAction as decodeActionImpl,
37 + decodeFormState as decodeFormStateImpl,
38 +} from 'react-server/src/ReactFlightActionServer';
39 +
40 +export {
41 + createClientReference,
42 + registerServerReference,
43 +} from '../ReactFlightParcelReferences';
44 +
45 +import type {TemporaryReferenceSet} from 'react-server/src/ReactFlightServerTemporaryReferences';
46 +
47 +export {createTemporaryReferenceSet} from 'react-server/src/ReactFlightServerTemporaryReferences';
48 +export type {TemporaryReferenceSet};
49 +
50 +type Options = {
51 + environmentName?: string | (() => string),
52 + filterStackFrame?: (url: string, functionName: string) => boolean,
53 + identifierPrefix?: string,
54 + signal?: AbortSignal,
55 + temporaryReferences?: TemporaryReferenceSet,
56 + onError?: (error: mixed) => void,
57 + onPostpone?: (reason: string) => void,
58 +};
59 +
60 +export function renderToReadableStream(
61 + model: ReactClientValue,
62 + options?: Options,
63 +): ReadableStream {
64 + const request = createRequest(
65 + model,
66 + null,
67 + options ? options.onError : undefined,
68 + options ? options.identifierPrefix : undefined,
69 + options ? options.onPostpone : undefined,
70 + options ? options.temporaryReferences : undefined,
71 + __DEV__ && options ? options.environmentName : undefined,
72 + __DEV__ && options ? options.filterStackFrame : undefined,
73 + );
74 + if (options && options.signal) {
75 + const signal = options.signal;
76 + if (signal.aborted) {
77 + abort(request, (signal: any).reason);
78 + } else {
79 + const listener = () => {
80 + abort(request, (signal: any).reason);
81 + signal.removeEventListener('abort', listener);
82 + };
83 + signal.addEventListener('abort', listener);
84 + }
85 + }
86 + const stream = new ReadableStream(
87 + {
88 + type: 'bytes',
89 + start: (controller): ?Promise<void> => {
90 + startWork(request);
91 + },
92 + pull: (controller): ?Promise<void> => {
93 + startFlowing(request, controller);
94 + },
95 + cancel: (reason): ?Promise<void> => {
96 + stopFlowing(request);
97 + abort(request, reason);
98 + },
99 + },
100 + // $FlowFixMe[prop-missing] size() methods are not allowed on byte streams.
101 + {highWaterMark: 0},
102 + );
103 + return stream;
104 +}
105 +
106 +type StaticResult = {
107 + prelude: ReadableStream,
108 +};
109 +
110 +export function prerender(
111 + model: ReactClientValue,
112 + options?: Options,
113 +): Promise<StaticResult> {
114 + return new Promise((resolve, reject) => {
115 + const onFatalError = reject;
116 + function onAllReady() {
117 + const stream = new ReadableStream(
118 + {
119 + type: 'bytes',
120 + start: (controller): ?Promise<void> => {
121 + startWork(request);
122 + },
123 + pull: (controller): ?Promise<void> => {
124 + startFlowing(request, controller);
125 + },
126 + cancel: (reason): ?Promise<void> => {
127 + stopFlowing(request);
128 + abort(request, reason);
129 + },
130 + },
131 + // $FlowFixMe[prop-missing] size() methods are not allowed on byte streams.
132 + {highWaterMark: 0},
133 + );
134 + resolve({prelude: stream});
135 + }
136 + const request = createPrerenderRequest(
137 + model,
138 + null,
139 + onAllReady,
140 + onFatalError,
141 + options ? options.onError : undefined,
142 + options ? options.identifierPrefix : undefined,
143 + options ? options.onPostpone : undefined,
144 + options ? options.temporaryReferences : undefined,
145 + __DEV__ && options ? options.environmentName : undefined,
146 + __DEV__ && options ? options.filterStackFrame : undefined,
147 + );
148 + if (options && options.signal) {
149 + const signal = options.signal;
150 + if (signal.aborted) {
151 + const reason = (signal: any).reason;
152 + abort(request, reason);
153 + } else {
154 + const listener = () => {
155 + const reason = (signal: any).reason;
156 + abort(request, reason);
157 + signal.removeEventListener('abort', listener);
158 + };
159 + signal.addEventListener('abort', listener);
160 + }
161 + }
162 + startWork(request);
163 + });
164 +}
165 +
166 +let serverManifest = {};
167 +export function registerServerActions(manifest: ServerManifest) {
168 + // This function is called by the bundler to register the manifest.
169 + serverManifest = manifest;
170 +}
171 +
172 +export function decodeReply<T>(
173 + body: string | FormData,
174 + options?: {temporaryReferences?: TemporaryReferenceSet},
175 +): Thenable<T> {
176 + if (typeof body === 'string') {
177 + const form = new FormData();
178 + form.append('0', body);
179 + body = form;
180 + }
181 + const response = createResponse(
182 + serverManifest,
183 + '',
184 + options ? options.temporaryReferences : undefined,
185 + body,
186 + );
187 + const root = getRoot<T>(response);
188 + close(response);
189 + return root;
190 +}
191 +
192 +export function decodeAction<T>(body: FormData): Promise<() => T> | null {
193 + return decodeActionImpl(body, serverManifest);
194 +}
195 +
196 +export function decodeFormState<S>(
197 + actionResult: S,
198 + body: FormData,
199 +): Promise<ReactFormState<S, ServerReferenceId> | null> {
200 + return decodeFormStateImpl(actionResult, body, serverManifest);
201 +}
202 +
203 +export function loadServerAction<F: (...any[]) => any>(id: string): Promise<F> {
204 + const reference = resolveServerReference<any>(serverManifest, id);
205 + return Promise.resolve(reference)
206 + .then(() => preloadModule(reference))
207 + .then(() => {
208 + const fn = requireModule(reference);
209 + if (typeof fn !== 'function') {
210 + throw new Error('Server actions must be functions');
211 + }
212 + return fn;
213 + });
214 +}
packages/react-server-dom-parcel/src/server/ReactFlightDOMServerNode.js new
+317
@@ -0,0 +1,317 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +import type {
11 + Request,
12 + ReactClientValue,
13 +} from 'react-server/src/ReactFlightServer';
14 +import type {Destination} from 'react-server/src/ReactServerStreamConfigNode';
15 +import type {Busboy} from 'busboy';
16 +import type {Writable} from 'stream';
17 +import type {ReactFormState, Thenable} from 'shared/ReactTypes';
18 +import type {
19 + ServerManifest,
20 + ServerReferenceId,
21 +} from '../shared/ReactFlightClientConfigBundlerParcel';
22 +
23 +import {Readable} from 'stream';
24 +import {
25 + createRequest,
26 + createPrerenderRequest,
27 + startWork,
28 + startFlowing,
29 + stopFlowing,
30 + abort,
31 +} from 'react-server/src/ReactFlightServer';
32 +
33 +import {
34 + createResponse,
35 + reportGlobalError,
36 + close,
37 + resolveField,
38 + resolveFileInfo,
39 + resolveFileChunk,
40 + resolveFileComplete,
41 + getRoot,
42 +} from 'react-server/src/ReactFlightReplyServer';
43 +
44 +import {
45 + decodeAction as decodeActionImpl,
46 + decodeFormState as decodeFormStateImpl,
47 +} from 'react-server/src/ReactFlightActionServer';
48 +import {
49 + preloadModule,
50 + requireModule,
51 + resolveServerReference,
52 +} from '../shared/ReactFlightClientConfigBundlerParcel';
53 +
54 +export {
55 + createClientReference,
56 + registerServerReference,
57 +} from '../ReactFlightParcelReferences';
58 +
59 +import type {TemporaryReferenceSet} from 'react-server/src/ReactFlightServerTemporaryReferences';
60 +
61 +export {createTemporaryReferenceSet} from 'react-server/src/ReactFlightServerTemporaryReferences';
62 +export type {TemporaryReferenceSet};
63 +
64 +function createDrainHandler(destination: Destination, request: Request) {
65 + return () => startFlowing(request, destination);
66 +}
67 +
68 +function createCancelHandler(request: Request, reason: string) {
69 + return () => {
70 + stopFlowing(request);
71 + abort(request, new Error(reason));
72 + };
73 +}
74 +
75 +type Options = {
76 + environmentName?: string | (() => string),
77 + filterStackFrame?: (url: string, functionName: string) => boolean,
78 + onError?: (error: mixed) => void,
79 + onPostpone?: (reason: string) => void,
80 + identifierPrefix?: string,
81 + temporaryReferences?: TemporaryReferenceSet,
82 +};
83 +
84 +type PipeableStream = {
85 + abort(reason: mixed): void,
86 + pipe<T: Writable>(destination: T): T,
87 +};
88 +
89 +export function renderToPipeableStream(
90 + model: ReactClientValue,
91 + options?: Options,
92 +): PipeableStream {
93 + const request = createRequest(
94 + model,
95 + null,
96 + options ? options.onError : undefined,
97 + options ? options.identifierPrefix : undefined,
98 + options ? options.onPostpone : undefined,
99 + options ? options.temporaryReferences : undefined,
100 + __DEV__ && options ? options.environmentName : undefined,
101 + __DEV__ && options ? options.filterStackFrame : undefined,
102 + );
103 + let hasStartedFlowing = false;
104 + startWork(request);
105 + return {
106 + pipe<T: Writable>(destination: T): T {
107 + if (hasStartedFlowing) {
108 + throw new Error(
109 + 'React currently only supports piping to one writable stream.',
110 + );
111 + }
112 + hasStartedFlowing = true;
113 + startFlowing(request, destination);
114 + destination.on('drain', createDrainHandler(destination, request));
115 + destination.on(
116 + 'error',
117 + createCancelHandler(
118 + request,
119 + 'The destination stream errored while writing data.',
120 + ),
121 + );
122 + destination.on(
123 + 'close',
124 + createCancelHandler(request, 'The destination stream closed early.'),
125 + );
126 + return destination;
127 + },
128 + abort(reason: mixed) {
129 + abort(request, reason);
130 + },
131 + };
132 +}
133 +
134 +function createFakeWritable(readable: any): Writable {
135 + // The current host config expects a Writable so we create
136 + // a fake writable for now to push into the Readable.
137 + return ({
138 + write(chunk) {
139 + return readable.push(chunk);
140 + },
141 + end() {
142 + readable.push(null);
143 + },
144 + destroy(error) {
145 + readable.destroy(error);
146 + },
147 + }: any);
148 +}
149 +
150 +type PrerenderOptions = {
151 + environmentName?: string | (() => string),
152 + filterStackFrame?: (url: string, functionName: string) => boolean,
153 + onError?: (error: mixed) => void,
154 + onPostpone?: (reason: string) => void,
155 + identifierPrefix?: string,
156 + temporaryReferences?: TemporaryReferenceSet,
157 + signal?: AbortSignal,
158 +};
159 +
160 +type StaticResult = {
161 + prelude: Readable,
162 +};
163 +
164 +export function prerenderToNodeStream(
165 + model: ReactClientValue,
166 + options?: PrerenderOptions,
167 +): Promise<StaticResult> {
168 + return new Promise((resolve, reject) => {
169 + const onFatalError = reject;
170 + function onAllReady() {
171 + const readable: Readable = new Readable({
172 + read() {
173 + startFlowing(request, writable);
174 + },
175 + });
176 + const writable = createFakeWritable(readable);
177 + resolve({prelude: readable});
178 + }
179 +
180 + const request = createPrerenderRequest(
181 + model,
182 + null,
183 + onAllReady,
184 + onFatalError,
185 + options ? options.onError : undefined,
186 + options ? options.identifierPrefix : undefined,
187 + options ? options.onPostpone : undefined,
188 + options ? options.temporaryReferences : undefined,
189 + __DEV__ && options ? options.environmentName : undefined,
190 + __DEV__ && options ? options.filterStackFrame : undefined,
191 + );
192 + if (options && options.signal) {
193 + const signal = options.signal;
194 + if (signal.aborted) {
195 + const reason = (signal: any).reason;
196 + abort(request, reason);
197 + } else {
198 + const listener = () => {
199 + const reason = (signal: any).reason;
200 + abort(request, reason);
201 + signal.removeEventListener('abort', listener);
202 + };
203 + signal.addEventListener('abort', listener);
204 + }
205 + }
206 + startWork(request);
207 + });
208 +}
209 +
210 +let serverManifest = {};
211 +export function registerServerActions(manifest: ServerManifest) {
212 + // This function is called by the bundler to register the manifest.
213 + serverManifest = manifest;
214 +}
215 +
216 +export function decodeReplyFromBusboy<T>(
217 + busboyStream: Busboy,
218 + options?: {temporaryReferences?: TemporaryReferenceSet},
219 +): Thenable<T> {
220 + const response = createResponse(
221 + serverManifest,
222 + '',
223 + options ? options.temporaryReferences : undefined,
224 + );
225 + let pendingFiles = 0;
226 + const queuedFields: Array<string> = [];
227 + busboyStream.on('field', (name, value) => {
228 + if (pendingFiles > 0) {
229 + // Because the 'end' event fires two microtasks after the next 'field'
230 + // we would resolve files and fields out of order. To handle this properly
231 + // we queue any fields we receive until the previous file is done.
232 + queuedFields.push(name, value);
233 + } else {
234 + resolveField(response, name, value);
235 + }
236 + });
237 + busboyStream.on('file', (name, value, {filename, encoding, mimeType}) => {
238 + if (encoding.toLowerCase() === 'base64') {
239 + throw new Error(
240 + "React doesn't accept base64 encoded file uploads because we don't expect " +
241 + "form data passed from a browser to ever encode data that way. If that's " +
242 + 'the wrong assumption, we can easily fix it.',
243 + );
244 + }
245 + pendingFiles++;
246 + const file = resolveFileInfo(response, name, filename, mimeType);
247 + value.on('data', chunk => {
248 + resolveFileChunk(response, file, chunk);
249 + });
250 + value.on('end', () => {
251 + resolveFileComplete(response, name, file);
252 + pendingFiles--;
253 + if (pendingFiles === 0) {
254 + // Release any queued fields
255 + for (let i = 0; i < queuedFields.length; i += 2) {
256 + resolveField(response, queuedFields[i], queuedFields[i + 1]);
257 + }
258 + queuedFields.length = 0;
259 + }
260 + });
261 + });
262 + busboyStream.on('finish', () => {
263 + close(response);
264 + });
265 + busboyStream.on('error', err => {
266 + reportGlobalError(
267 + response,
268 + // $FlowFixMe[incompatible-call] types Error and mixed are incompatible
269 + err,
270 + );
271 + });
272 + return getRoot(response);
273 +}
274 +
275 +export function decodeReply<T>(
276 + body: string | FormData,
277 + options?: {temporaryReferences?: TemporaryReferenceSet},
278 +): Thenable<T> {
279 + if (typeof body === 'string') {
280 + const form = new FormData();
281 + form.append('0', body);
282 + body = form;
283 + }
284 + const response = createResponse(
285 + serverManifest,
286 + '',
287 + options ? options.temporaryReferences : undefined,
288 + body,
289 + );
290 + const root = getRoot<T>(response);
291 + close(response);
292 + return root;
293 +}
294 +
295 +export function decodeAction<T>(body: FormData): Promise<() => T> | null {
296 + return decodeActionImpl(body, serverManifest);
297 +}
298 +
299 +export function decodeFormState<S>(
300 + actionResult: S,
301 + body: FormData,
302 +): Promise<ReactFormState<S, ServerReferenceId> | null> {
303 + return decodeFormStateImpl(actionResult, body, serverManifest);
304 +}
305 +
306 +export function loadServerAction<F: (...any[]) => any>(id: string): Promise<F> {
307 + const reference = resolveServerReference<any>(serverManifest, id);
308 + return Promise.resolve(reference)
309 + .then(() => preloadModule(reference))
310 + .then(() => {
311 + const fn = requireModule(reference);
312 + if (typeof fn !== 'function') {
313 + throw new Error('Server actions must be functions');
314 + }
315 + return fn;
316 + });
317 +}
packages/react-server-dom-parcel/src/server/ReactFlightServerConfigParcelBundler.js new
+66
@@ -0,0 +1,66 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +import type {ReactClientValue} from 'react-server/src/ReactFlightServer';
11 +import type {ImportMetadata} from '../shared/ReactFlightImportMetadata';
12 +
13 +import type {
14 + ClientReference,
15 + ServerReference,
16 +} from '../ReactFlightParcelReferences';
17 +
18 +export type {ClientReference, ServerReference};
19 +
20 +export type ClientManifest = null;
21 +export type ServerReferenceId = string;
22 +export type ClientReferenceMetadata = ImportMetadata;
23 +export type ClientReferenceKey = string;
24 +
25 +export {
26 + isClientReference,
27 + isServerReference,
28 +} from '../ReactFlightParcelReferences';
29 +
30 +export function getClientReferenceKey(
31 + reference: ClientReference<any>,
32 +): ClientReferenceKey {
33 + return reference.$$id + '#' + reference.$$name;
34 +}
35 +
36 +export function resolveClientReferenceMetadata<T>(
37 + config: ClientManifest,
38 + clientReference: ClientReference<T>,
39 +): ClientReferenceMetadata {
40 + return [
41 + clientReference.$$id,
42 + clientReference.$$name,
43 + clientReference.$$bundles,
44 + ];
45 +}
46 +
47 +export function getServerReferenceId<T>(
48 + config: ClientManifest,
49 + serverReference: ServerReference<T>,
50 +): ServerReferenceId {
51 + return serverReference.$$id;
52 +}
53 +
54 +export function getServerReferenceBoundArguments<T>(
55 + config: ClientManifest,
56 + serverReference: ServerReference<T>,
57 +): null | Array<ReactClientValue> {
58 + return serverReference.$$bound;
59 +}
60 +
61 +export function getServerReferenceLocation<T>(
62 + config: ClientManifest,
63 + serverReference: ServerReference<T>,
64 +): void | Error {
65 + return serverReference.$$location;
66 +}
packages/react-server-dom-parcel/src/server/react-flight-dom-server.browser.js new
+21
@@ -0,0 +1,21 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export {
11 + renderToReadableStream,
12 + prerender,
13 + decodeReply,
14 + decodeAction,
15 + decodeFormState,
16 + createClientReference,
17 + registerServerReference,
18 + createTemporaryReferenceSet,
19 + registerServerActions,
20 + loadServerAction,
21 +} from './ReactFlightDOMServerBrowser';
packages/react-server-dom-parcel/src/server/react-flight-dom-server.browser.stable.js new
+20
@@ -0,0 +1,20 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export {
11 + renderToReadableStream,
12 + decodeReply,
13 + decodeAction,
14 + decodeFormState,
15 + createClientReference,
16 + registerServerReference,
17 + createTemporaryReferenceSet,
18 + registerServerActions,
19 + loadServerAction,
20 +} from './ReactFlightDOMServerBrowser';
packages/react-server-dom-parcel/src/server/react-flight-dom-server.edge.js new
+21
@@ -0,0 +1,21 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export {
11 + renderToReadableStream,
12 + prerender,
13 + decodeReply,
14 + decodeAction,
15 + decodeFormState,
16 + createClientReference,
17 + registerServerReference,
18 + createTemporaryReferenceSet,
19 + registerServerActions,
20 + loadServerAction,
21 +} from './ReactFlightDOMServerEdge';
packages/react-server-dom-parcel/src/server/react-flight-dom-server.edge.stable.js new
+20
@@ -0,0 +1,20 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export {
11 + renderToReadableStream,
12 + decodeReply,
13 + decodeAction,
14 + decodeFormState,
15 + createClientReference,
16 + registerServerReference,
17 + createTemporaryReferenceSet,
18 + registerServerActions,
19 + loadServerAction,
20 +} from './ReactFlightDOMServerEdge';
packages/react-server-dom-parcel/src/server/react-flight-dom-server.node.js new
+22
@@ -0,0 +1,22 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export {
11 + renderToPipeableStream,
12 + prerenderToNodeStream,
13 + decodeReplyFromBusboy,
14 + decodeReply,
15 + decodeAction,
16 + decodeFormState,
17 + createClientReference,
18 + registerServerReference,
19 + createTemporaryReferenceSet,
20 + registerServerActions,
21 + loadServerAction,
22 +} from './ReactFlightDOMServerNode';
packages/react-server-dom-parcel/src/server/react-flight-dom-server.node.stable.js new
+21
@@ -0,0 +1,21 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export {
11 + renderToPipeableStream,
12 + decodeReplyFromBusboy,
13 + decodeReply,
14 + decodeAction,
15 + decodeFormState,
16 + createClientReference,
17 + registerServerReference,
18 + createTemporaryReferenceSet,
19 + registerServerActions,
20 + loadServerAction,
21 +} from './ReactFlightDOMServerNode';
packages/react-server-dom-parcel/src/shared/ReactFlightClientConfigBundlerParcel.js new
+83
@@ -0,0 +1,83 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +import type {Thenable} from 'shared/ReactTypes';
11 +
12 +import type {ImportMetadata} from './ReactFlightImportMetadata';
13 +
14 +import {ID, NAME, BUNDLES} from './ReactFlightImportMetadata';
15 +
16 +export type ServerManifest = {
17 + [string]: Array<string>,
18 +};
19 +export type SSRModuleMap = null;
20 +export type ModuleLoading = null;
21 +export type ServerConsumerModuleMap = null;
22 +export type ServerReferenceId = string;
23 +
24 +export opaque type ClientReferenceMetadata = ImportMetadata;
25 +
26 +// eslint-disable-next-line no-unused-vars
27 +export opaque type ClientReference<T> = {
28 + // Module id.
29 + id: string,
30 + // Export name.
31 + name: string,
32 + // List of bundle URLs, relative to the distDir.
33 + bundles: Array<string>,
34 +};
35 +
36 +export function prepareDestinationForModule(
37 + moduleLoading: ModuleLoading,
38 + nonce: ?string,
39 + metadata: ClientReferenceMetadata,
40 +) {
41 + return;
42 +}
43 +
44 +export function resolveClientReference<T>(
45 + bundlerConfig: null,
46 + metadata: ClientReferenceMetadata,
47 +): ClientReference<T> {
48 + // Reference is already resolved during the build.
49 + return {
50 + id: metadata[ID],
51 + name: metadata[NAME],
52 + bundles: metadata[BUNDLES],
53 + };
54 +}
55 +
56 +export function resolveServerReference<T>(
57 + bundlerConfig: ServerManifest,
58 + ref: ServerReferenceId,
59 +): ClientReference<T> {
60 + const idx = ref.lastIndexOf('#');
61 + const id = ref.slice(0, idx);
62 + const name = ref.slice(idx + 1);
63 + const bundles = bundlerConfig[id];
64 + if (!bundles) {
65 + throw new Error('Invalid server action: ' + ref);
66 + }
67 + return {
68 + id,
69 + name,
70 + bundles,
71 + };
72 +}
73 +
74 +export function preloadModule<T>(
75 + metadata: ClientReference<T>,
76 +): null | Thenable<any> {
77 + return Promise.all(metadata.bundles.map(url => parcelRequire.load(url)));
78 +}
79 +
80 +export function requireModule<T>(metadata: ClientReference<T>): T {
81 + const moduleExports = parcelRequire(metadata.id);
82 + return moduleExports[metadata.name];
83 +}
packages/react-server-dom-parcel/src/shared/ReactFlightImportMetadata.js new
+20
@@ -0,0 +1,20 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +// This is the parsed shape of the wire format which is why it is
11 +// condensed to only the essentialy information
12 +export type ImportMetadata = [
13 + /* id */ string,
14 + /* name */ string,
15 + /* bundles */ Array<string>,
16 +];
17 +
18 +export const ID = 0;
19 +export const NAME = 1;
20 +export const BUNDLES = 2;
packages/react-server-dom-parcel/static.browser.js new
+10
@@ -0,0 +1,10 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export {prerender} from './src/server/react-flight-dom-server.browser';
packages/react-server-dom-parcel/static.edge.js new
+10
@@ -0,0 +1,10 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export {prerender} from './src/server/react-flight-dom-server.edge';
packages/react-server-dom-parcel/static.js new
+13
@@ -0,0 +1,13 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +throw new Error(
11 + 'The React Server cannot be used outside a react-server environment. ' +
12 + 'You must configure Node.js using the `--conditions react-server` flag.',
13 +);
packages/react-server-dom-parcel/static.node.js new
+10
@@ -0,0 +1,10 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +export {prerenderToNodeStream} from './src/server/react-flight-dom-server.node';
packages/react-server/src/forks/ReactFlightServerConfig.dom-browser-parcel.js new
+25
@@ -0,0 +1,25 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +import type {Request} from 'react-server/src/ReactFlightServer';
11 +import type {ReactComponentInfo} from 'shared/ReactTypes';
12 +
13 +export * from 'react-server-dom-parcel/src/server/ReactFlightServerConfigParcelBundler';
14 +export * from 'react-dom-bindings/src/server/ReactFlightServerConfigDOM';
15 +
16 +export const supportsRequestStorage = false;
17 +export const requestStorage: AsyncLocalStorage<Request | void> = (null: any);
18 +
19 +export const supportsComponentStorage = false;
20 +export const componentStorage: AsyncLocalStorage<ReactComponentInfo | void> =
21 + (null: any);
22 +
23 +export * from '../ReactFlightServerConfigDebugNoop';
24 +
25 +export * from '../ReactFlightStackConfigV8';
packages/react-server/src/forks/ReactFlightServerConfig.dom-edge-parcel.js new
+41
@@ -0,0 +1,41 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +import type {Request} from 'react-server/src/ReactFlightServer';
10 +import type {ReactComponentInfo} from 'shared/ReactTypes';
11 +
12 +export * from 'react-server-dom-parcel/src/server/ReactFlightServerConfigParcelBundler';
13 +export * from 'react-dom-bindings/src/server/ReactFlightServerConfigDOM';
14 +
15 +// For now, we get this from the global scope, but this will likely move to a module.
16 +export const supportsRequestStorage = typeof AsyncLocalStorage === 'function';
17 +export const requestStorage: AsyncLocalStorage<Request | void> =
18 + supportsRequestStorage ? new AsyncLocalStorage() : (null: any);
19 +
20 +export const supportsComponentStorage: boolean =
21 + __DEV__ && supportsRequestStorage;
22 +export const componentStorage: AsyncLocalStorage<ReactComponentInfo | void> =
23 + supportsComponentStorage ? new AsyncLocalStorage() : (null: any);
24 +
25 +// We use the Node version but get access to async_hooks from a global.
26 +import type {HookCallbacks, AsyncHook} from 'async_hooks';
27 +export const createAsyncHook: HookCallbacks => AsyncHook =
28 + typeof async_hooks === 'object'
29 + ? async_hooks.createHook
30 + : function () {
31 + return ({
32 + enable() {},
33 + disable() {},
34 + }: any);
35 + };
36 +export const executionAsyncId: () => number =
37 + typeof async_hooks === 'object' ? async_hooks.executionAsyncId : (null: any);
38 +
39 +export * from '../ReactFlightServerConfigDebugNode';
40 +
41 +export * from '../ReactFlightStackConfigV8';
packages/react-server/src/forks/ReactFlightServerConfig.dom-node-parcel.js new
+30
@@ -0,0 +1,30 @@
1 +/**
2 + * Copyright (c) Meta Platforms, Inc. and affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + *
7 + * @flow
8 + */
9 +
10 +import {AsyncLocalStorage} from 'async_hooks';
11 +
12 +import type {Request} from 'react-server/src/ReactFlightServer';
13 +import type {ReactComponentInfo} from 'shared/ReactTypes';
14 +
15 +export * from 'react-server-dom-parcel/src/server/ReactFlightServerConfigParcelBundler';
16 +export * from 'react-dom-bindings/src/server/ReactFlightServerConfigDOM';
17 +
18 +export const supportsRequestStorage = true;
19 +export const requestStorage: AsyncLocalStorage<Request | void> =
20 + new AsyncLocalStorage();
21 +
22 +export const supportsComponentStorage = __DEV__;
23 +export const componentStorage: AsyncLocalStorage<ReactComponentInfo | void> =
24 + supportsComponentStorage ? new AsyncLocalStorage() : (null: any);
25 +
26 +export {createHook as createAsyncHook, executionAsyncId} from 'async_hooks';
27 +
28 +export * from '../ReactFlightServerConfigDebugNode';
29 +
30 +export * from '../ReactFlightStackConfigV8';
scripts/flow/environment.js
+5
@@ -103,6 +103,11 @@ declare const __turbopack_require__: ((id: string) => any) & {
103 u: string => string,
104 };
105
106 +declare var parcelRequire: {
107 + (id: string): any,
108 + load: (url: string) => Promise<mixed>,
109 +};
110 +
111 declare module 'fs/promises' {
112 declare const access: (path: string, mode?: number) => Promise<void>;
113 declare const lstat: (
scripts/rollup/bundles.js
+64
@@ -621,6 +621,70 @@ const bundles = [
621 externals: ['react', 'react-dom'],
622 },
623
624 + /******* React Server DOM Parcel Server *******/
625 + {
626 + bundleTypes: [NODE_DEV, NODE_PROD],
627 + moduleType: RENDERER,
628 + entry: 'react-server-dom-parcel/src/server/react-flight-dom-server.browser',
629 + name: 'react-server-dom-parcel-server.browser',
630 + condition: 'react-server',
631 + global: 'ReactServerDOMServer',
632 + minifyWithProdErrorCodes: false,
633 + wrapWithModuleBoundaries: false,
634 + externals: ['react', 'react-dom'],
635 + },
636 + {
637 + bundleTypes: [NODE_DEV, NODE_PROD],
638 + moduleType: RENDERER,
639 + entry: 'react-server-dom-parcel/src/server/react-flight-dom-server.node',
640 + name: 'react-server-dom-parcel-server.node',
641 + condition: 'react-server',
642 + global: 'ReactServerDOMServer',
643 + minifyWithProdErrorCodes: false,
644 + wrapWithModuleBoundaries: false,
645 + externals: ['react', 'util', 'async_hooks', 'react-dom'],
646 + },
647 + {
648 + bundleTypes: [NODE_DEV, NODE_PROD],
649 + moduleType: RENDERER,
650 + entry: 'react-server-dom-parcel/src/server/react-flight-dom-server.edge',
651 + name: 'react-server-dom-parcel-server.edge',
652 + condition: 'react-server',
653 + global: 'ReactServerDOMServer',
654 + minifyWithProdErrorCodes: false,
655 + wrapWithModuleBoundaries: false,
656 + externals: ['react', 'util', 'async_hooks', 'react-dom'],
657 + },
658 +
659 + /******* React Server DOM Parcel Client *******/
660 + {
661 + bundleTypes: [NODE_DEV, NODE_PROD],
662 + moduleType: RENDERER,
663 + entry: 'react-server-dom-parcel/client.browser',
664 + global: 'ReactServerDOMClient',
665 + minifyWithProdErrorCodes: false,
666 + wrapWithModuleBoundaries: false,
667 + externals: ['react', 'react-dom'],
668 + },
669 + {
670 + bundleTypes: [NODE_DEV, NODE_PROD],
671 + moduleType: RENDERER,
672 + entry: 'react-server-dom-parcel/client.node',
673 + global: 'ReactServerDOMClient',
674 + minifyWithProdErrorCodes: false,
675 + wrapWithModuleBoundaries: false,
676 + externals: ['react', 'react-dom', 'util'],
677 + },
678 + {
679 + bundleTypes: [NODE_DEV, NODE_PROD],
680 + moduleType: RENDERER,
681 + entry: 'react-server-dom-parcel/client.edge',
682 + global: 'ReactServerDOMClient',
683 + minifyWithProdErrorCodes: false,
684 + wrapWithModuleBoundaries: false,
685 + externals: ['react', 'react-dom'],
686 + },
687 +
688 /******* React Server DOM ESM Server *******/
689 {
690 bundleTypes: [NODE_DEV, NODE_PROD],
scripts/rollup/validate/eslintrc.cjs.js
+3
@@ -64,6 +64,9 @@ module.exports = {
64 __turbopack_load__: 'readonly',
65 __turbopack_require__: 'readonly',
66
67 + // Flight Parcel
68 + parcelRequire: 'readonly',
69 +
70 // jest
71 expect: 'readonly',
72 jest: 'readonly',
scripts/rollup/validate/eslintrc.cjs2015.js
+3
@@ -62,6 +62,9 @@ module.exports = {
62 __turbopack_load__: 'readonly',
63 __turbopack_require__: 'readonly',
64
65 + // Flight Parcel
66 + parcelRequire: 'readonly',
67 +
68 // jest
69 expect: 'readonly',
70 jest: 'readonly',
scripts/rollup/validate/eslintrc.esm.js
+3
@@ -64,6 +64,9 @@ module.exports = {
64 __turbopack_load__: 'readonly',
65 __turbopack_require__: 'readonly',
66
67 + // Flight Parcel
68 + parcelRequire: 'readonly',
69 +
70 // jest
71 expect: 'readonly',
72 jest: 'readonly',
scripts/shared/inlinedHostConfigs.js
+116
@@ -189,6 +189,49 @@ module.exports = [
189 isFlowTyped: true,
190 isServerSupported: true,
191 },
192 + {
193 + shortName: 'dom-node-parcel',
194 + entryPoints: [
195 + 'react-server-dom-parcel/client.node',
196 + 'react-server-dom-parcel/src/server/react-flight-dom-server.node',
197 + ],
198 + paths: [
199 + 'react-dom',
200 + 'react-dom-bindings',
201 + 'react-dom/client',
202 + 'react-dom/profiling',
203 + 'react-dom/server',
204 + 'react-dom/server.node',
205 + 'react-dom/static',
206 + 'react-dom/static.node',
207 + 'react-dom/src/server/react-dom-server.node',
208 + 'react-dom/src/server/ReactDOMFizzServerNode.js', // react-dom/server.node
209 + 'react-dom/src/server/ReactDOMFizzStaticNode.js',
210 + 'react-dom-bindings/src/server/ReactDOMFlightServerHostDispatcher.js',
211 + 'react-dom-bindings/src/server/ReactFlightServerConfigDOM.js',
212 + 'react-dom-bindings/src/shared/ReactFlightClientConfigDOM.js',
213 + 'react-server-dom-parcel',
214 + 'react-server-dom-parcel/client.node',
215 + 'react-server-dom-parcel/server',
216 + 'react-server-dom-parcel/server.node',
217 + 'react-server-dom-parcel/static',
218 + 'react-server-dom-parcel/static.node',
219 + 'react-server-dom-parcel/src/client/ReactFlightDOMClientNode.js', // react-server-dom-parcel/client.node
220 + 'react-server-dom-parcel/src/shared/ReactFlightClientConfigBundlerParcel.js',
221 + 'react-server-dom-parcel/src/server/react-flight-dom-server.node',
222 + 'react-server-dom-parcel/src/server/ReactFlightDOMServerNode.js', // react-server-dom-parcel/src/server/react-flight-dom-server.node
223 + 'react-server-dom-parcel/node-register',
224 + 'react-server-dom-parcel/src/ReactFlightParcelNodeRegister.js',
225 + 'react-devtools',
226 + 'react-devtools-core',
227 + 'react-devtools-shell',
228 + 'react-devtools-shared',
229 + 'shared/ReactDOMSharedInternals',
230 + 'react-server/src/ReactFlightServerConfigDebugNode.js',
231 + ],
232 + isFlowTyped: true,
233 + isServerSupported: true,
234 + },
235 {
236 shortName: 'dom-bun',
237 entryPoints: ['react-dom/src/server/react-dom-server.bun.js'],
@@ -270,6 +313,40 @@ module.exports = [
313 isFlowTyped: true,
314 isServerSupported: true,
315 },
316 + {
317 + shortName: 'dom-browser-parcel',
318 + entryPoints: [
319 + 'react-server-dom-parcel/client.browser',
320 + 'react-server-dom-parcel/src/server/react-flight-dom-server.browser',
321 + ],
322 + paths: [
323 + 'react-dom',
324 + 'react-dom/client',
325 + 'react-dom/profiling',
326 + 'react-dom/server',
327 + 'react-dom/server.node',
328 + 'react-dom-bindings',
329 + 'react-dom-bindings/src/server/ReactDOMFlightServerHostDispatcher.js',
330 + 'react-dom-bindings/src/server/ReactFlightServerConfigDOM.js',
331 + 'react-dom-bindings/src/shared/ReactFlightClientConfigDOM.js',
332 + 'react-server-dom-parcel',
333 + 'react-server-dom-parcel/client',
334 + 'react-server-dom-parcel/client.browser',
335 + 'react-server-dom-parcel/server.browser',
336 + 'react-server-dom-parcel/static.browser',
337 + 'react-server-dom-parcel/src/client/ReactFlightDOMClientBrowser.js', // react-server-dom-parcel/client.browser
338 + 'react-server-dom-parcel/src/shared/ReactFlightClientConfigBundlerParcel.js',
339 + 'react-server-dom-parcel/src/server/react-flight-dom-server.browser',
340 + 'react-server-dom-parcel/src/server/ReactFlightDOMServerBrowser.js', // react-server-dom-parcel/src/server/react-flight-dom-server.browser
341 + 'react-devtools',
342 + 'react-devtools-core',
343 + 'react-devtools-shell',
344 + 'react-devtools-shared',
345 + 'shared/ReactDOMSharedInternals',
346 + ],
347 + isFlowTyped: true,
348 + isServerSupported: true,
349 + },
350 {
351 shortName: 'dom-edge-webpack',
352 entryPoints: [
@@ -352,6 +429,45 @@ module.exports = [
429 isFlowTyped: true,
430 isServerSupported: true,
431 },
432 + {
433 + shortName: 'dom-edge-parcel',
434 + entryPoints: [
435 + 'react-server-dom-parcel/client.edge',
436 + 'react-server-dom-parcel/src/server/react-flight-dom-server.edge',
437 + ],
438 + paths: [
439 + 'react-dom',
440 + 'react-dom/src/ReactDOMReactServer.js',
441 + 'react-dom-bindings',
442 + 'react-dom/client',
443 + 'react-dom/profiling',
444 + 'react-dom/server.edge',
445 + 'react-dom/static.edge',
446 + 'react-dom/unstable_testing',
447 + 'react-dom/src/server/react-dom-server.edge',
448 + 'react-dom/src/server/ReactDOMFizzServerEdge.js', // react-dom/server.edge
449 + 'react-dom/src/server/ReactDOMFizzStaticEdge.js',
450 + 'react-dom-bindings/src/server/ReactDOMFlightServerHostDispatcher.js',
451 + 'react-dom-bindings/src/server/ReactFlightServerConfigDOM.js',
452 + 'react-dom-bindings/src/shared/ReactFlightClientConfigDOM.js',
453 + 'react-server-dom-parcel',
454 + 'react-server-dom-parcel/client.edge',
455 + 'react-server-dom-parcel/server.edge',
456 + 'react-server-dom-parcel/static.edge',
457 + 'react-server-dom-parcel/src/client/ReactFlightDOMClientEdge.js', // react-server-dom-parcel/client.edge
458 + 'react-server-dom-parcel/src/shared/ReactFlightClientConfigBundlerParcel.js',
459 + 'react-server-dom-parcel/src/server/react-flight-dom-server.edge',
460 + 'react-server-dom-parcel/src/server/ReactFlightDOMServerEdge.js', // react-server-dom-parcel/src/server/react-flight-dom-server.edge
461 + 'react-devtools',
462 + 'react-devtools-core',
463 + 'react-devtools-shell',
464 + 'react-devtools-shared',
465 + 'shared/ReactDOMSharedInternals',
466 + 'react-server/src/ReactFlightServerConfigDebugNode.js',
467 + ],
468 + isFlowTyped: true,
469 + isServerSupported: true,
470 + },
471 {
472 shortName: 'dom-node-esm',
473 entryPoints: [