diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml
index 048dbc5..6c4876e 100644
--- a/.github/workflows/e2e-tests.yml
+++ b/.github/workflows/e2e-tests.yml
@@ -12,6 +12,7 @@ on:
- all
- android
- ios
+ - web
pull_request:
types: [ready_for_review]
branches:
@@ -189,3 +190,60 @@ jobs:
app: ios/build/Build/Products/Debug-iphonesimulator/HarnessPlayground.app
runner: ios
projectRoot: apps/playground
+
+ e2e-web:
+ name: E2E Web
+ runs-on: macos-latest
+ if: ${{ (github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'main') || (github.event_name == 'workflow_dispatch' && (github.event.inputs.platform == 'all' || github.event.inputs.platform == 'web')) }}
+
+ env:
+ HARNESS_DEBUG: true
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+
+ - name: Install pnpm
+ uses: pnpm/action-setup@v2
+ with:
+ version: latest
+
+ - name: Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: '24.10.0'
+ cache: 'pnpm'
+
+ - name: Install dependencies
+ run: |
+ pnpm install
+
+ - name: Build packages
+ run: |
+ pnpm nx run-many -t build --projects="packages/*"
+
+ - name: Run React Native Harness (Safari)
+ uses: ./actions/web
+ with:
+ runner: web:safari
+ projectRoot: apps/playground
+
+# Test: "waitFor › should use custom interval and timeout options",
+# is flacky on Chrome in GitHub CI runners
+#
+# - name: Run React Native Harness (Chrome)
+# uses: ./actions/web
+# with:
+# runner: web:chrome
+# projectRoot: apps/playground
+
+# Test: "waitFor › should use custom interval and timeout options",
+# fails on Firefox in GitHub CI runners
+#
+# - name: Run React Native Harness (Firefox)
+# uses: ./actions/web
+# with:
+# runner: web:firefox
+# projectRoot: apps/playground
+
+
\ No newline at end of file
diff --git a/actions/shared/index.cjs b/actions/shared/index.cjs
index c1de695..41e40ce 100644
--- a/actions/shared/index.cjs
+++ b/actions/shared/index.cjs
@@ -29,9 +29,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
mod
));
-// ../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js
+// ../../node_modules/picocolors/picocolors.js
var require_picocolors = __commonJS({
- "../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js"(exports2, module2) {
+ "../../node_modules/picocolors/picocolors.js"(exports2, module2) {
"use strict";
var p = process || {};
var argv = p.argv || [];
@@ -102,9 +102,9 @@ var require_picocolors = __commonJS({
}
});
-// ../../node_modules/.pnpm/sisteransi@1.0.5/node_modules/sisteransi/src/index.js
+// ../../node_modules/sisteransi/src/index.js
var require_src = __commonJS({
- "../../node_modules/.pnpm/sisteransi@1.0.5/node_modules/sisteransi/src/index.js"(exports2, module2) {
+ "../../node_modules/sisteransi/src/index.js"(exports2, module2) {
"use strict";
var ESC = "\x1B";
var CSI = `${ESC}[`;
@@ -158,9 +158,9 @@ var require_src = __commonJS({
}
});
-// ../../node_modules/.pnpm/is-unicode-supported@0.1.0/node_modules/is-unicode-supported/index.js
+// ../../node_modules/is-unicode-supported/index.js
var require_is_unicode_supported = __commonJS({
- "../../node_modules/.pnpm/is-unicode-supported@0.1.0/node_modules/is-unicode-supported/index.js"(exports2, module2) {
+ "../../node_modules/is-unicode-supported/index.js"(exports2, module2) {
"use strict";
module2.exports = () => {
if (process.platform !== "win32") {
@@ -172,7 +172,7 @@ var require_is_unicode_supported = __commonJS({
}
});
-// ../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/esm/v3/external.js
+// ../../node_modules/zod/dist/esm/v3/external.js
var external_exports = {};
__export(external_exports, {
BRAND: () => BRAND,
@@ -284,7 +284,7 @@ __export(external_exports, {
void: () => voidType
});
-// ../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/esm/v3/helpers/util.js
+// ../../node_modules/zod/dist/esm/v3/helpers/util.js
var util;
(function(util3) {
util3.assertEqual = (_) => {
@@ -418,7 +418,7 @@ var getParsedType = (data) => {
}
};
-// ../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/esm/v3/ZodError.js
+// ../../node_modules/zod/dist/esm/v3/ZodError.js
var ZodIssueCode = util.arrayToEnum([
"invalid_type",
"invalid_literal",
@@ -535,7 +535,7 @@ ZodError.create = (issues) => {
return error;
};
-// ../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/esm/v3/locales/en.js
+// ../../node_modules/zod/dist/esm/v3/locales/en.js
var errorMap = (issue, _ctx) => {
let message;
switch (issue.code) {
@@ -636,7 +636,7 @@ var errorMap = (issue, _ctx) => {
};
var en_default = errorMap;
-// ../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/esm/v3/errors.js
+// ../../node_modules/zod/dist/esm/v3/errors.js
var overrideErrorMap = en_default;
function setErrorMap(map) {
overrideErrorMap = map;
@@ -645,7 +645,7 @@ function getErrorMap() {
return overrideErrorMap;
}
-// ../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/esm/v3/helpers/parseUtil.js
+// ../../node_modules/zod/dist/esm/v3/helpers/parseUtil.js
var makeIssue = (params) => {
const { data, path: path4, errorMaps, issueData } = params;
const fullPath = [...path4, ...issueData.path || []];
@@ -755,14 +755,14 @@ var isDirty = (x) => x.status === "dirty";
var isValid = (x) => x.status === "valid";
var isAsync = (x) => typeof Promise !== "undefined" && x instanceof Promise;
-// ../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/esm/v3/helpers/errorUtil.js
+// ../../node_modules/zod/dist/esm/v3/helpers/errorUtil.js
var errorUtil;
(function(errorUtil2) {
errorUtil2.errToObj = (message) => typeof message === "string" ? { message } : message || {};
errorUtil2.toString = (message) => typeof message === "string" ? message : message?.message;
})(errorUtil || (errorUtil = {}));
-// ../../node_modules/.pnpm/zod@3.25.67/node_modules/zod/dist/esm/v3/types.js
+// ../../node_modules/zod/dist/esm/v3/types.js
var ParseInputLazyPath = class {
constructor(parent, value, path4, key) {
this._cachedPath = [];
@@ -4214,6 +4214,7 @@ var ConfigSchema = external_exports.object({
appRegistryComponentName: external_exports.string().min(1, "App registry component name is required"),
runners: external_exports.array(external_exports.any()).min(1, "At least one runner is required"),
defaultRunner: external_exports.string().optional(),
+ webSocketPort: external_exports.number().optional().default(3001),
bridgeTimeout: external_exports.number().min(1e3, "Bridge timeout must be at least 1 second").default(6e4),
resetEnvironmentBetweenTestFiles: external_exports.boolean().optional().default(true),
unstable__skipAlreadyIncludedModules: external_exports.boolean().optional().default(false),
@@ -4233,7 +4234,7 @@ var ConfigSchema = external_exports.object({
// ../tools/dist/logger.js
var import_node_util2 = __toESM(require("util"), 1);
-// ../../node_modules/.pnpm/@clack+core@1.0.0-alpha.5/node_modules/@clack/core/dist/index.mjs
+// ../../node_modules/@clack/core/dist/index.mjs
var import_node_process = require("process");
var V = __toESM(require("readline"), 1);
var import_node_readline = __toESM(require("readline"), 1);
@@ -4251,7 +4252,7 @@ var C = { actions: new Set(gt), aliases: /* @__PURE__ */ new Map([["k", "up"], [
var At = globalThis.process.platform.startsWith("win");
var G = Symbol("clack:cancel");
-// ../../node_modules/.pnpm/@clack+prompts@1.0.0-alpha.5/node_modules/@clack/prompts/dist/index.mjs
+// ../../node_modules/@clack/prompts/dist/index.mjs
var import_picocolors = __toESM(require_picocolors(), 1);
var import_node_process2 = __toESM(require("process"), 1);
var import_node_fs = require("fs");
diff --git a/actions/web/action.yml b/actions/web/action.yml
new file mode 100644
index 0000000..ecd7678
--- /dev/null
+++ b/actions/web/action.yml
@@ -0,0 +1,27 @@
+name: React Native Harness for Web
+description: Run React Native Harness tests on Web
+inputs:
+ runner:
+ description: The runner to use
+ required: true
+ type: string
+ projectRoot:
+ description: The project root directory
+ required: false
+ type: string
+runs:
+ using: 'composite'
+ steps:
+ - name: Load React Native Harness configuration
+ id: load-config
+ shell: bash
+ env:
+ INPUT_RUNNER: ${{ inputs.runner }}
+ INPUT_PROJECTROOT: ${{ inputs.projectRoot }}
+ run: |
+ node ${{ github.action_path }}/../shared/index.cjs
+ - name: Run E2E tests
+ shell: bash
+ working-directory: ${{ inputs.projectRoot }}
+ run: |
+ pnpm react-native-harness --harnessRunner ${{ inputs.runner }}
diff --git a/actions/web/index.cjs b/actions/web/index.cjs
new file mode 100644
index 0000000..3918c74
--- /dev/null
+++ b/actions/web/index.cjs
@@ -0,0 +1 @@
+"use strict";
diff --git a/apps/playground/index.js b/apps/playground/index.js
index 13a2105..ef670a4 100644
--- a/apps/playground/index.js
+++ b/apps/playground/index.js
@@ -2,8 +2,14 @@
* @format
*/
-import { AppRegistry } from 'react-native';
+import { AppRegistry, Platform } from 'react-native';
import App from './src/app/App';
import { name as appName } from './app.json';
AppRegistry.registerComponent(appName, () => App);
+
+if (Platform.OS === 'web') {
+ AppRegistry.runApplication(appName, {
+ rootTag: document.getElementById('root'),
+ });
+}
\ No newline at end of file
diff --git a/apps/playground/metro.config.js b/apps/playground/metro.config.js
index 6eee231..8f00baa 100644
--- a/apps/playground/metro.config.js
+++ b/apps/playground/metro.config.js
@@ -1,6 +1,7 @@
const { withNxMetro } = require('@nx/react-native');
const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');
const path = require('path');
+const fs = require('fs');
const defaultConfig = getDefaultConfig(__dirname);
@@ -17,7 +18,32 @@ const customConfig = {
cacheVersion: '@react-native-harness/playground',
resolver: {
unstable_enablePackageExports: true,
+
},
+ server: {
+ ...(defaultConfig.server || {}),
+ enhanceMiddleware: (middleware, server) => {
+ return (req, res, next) => {
+ // Serve our HTML shell at / and /index.html
+ if (req.url === '/' || req.url === '/index.html') {
+ const htmlPath = path.join(projectRoot, 'web', 'index.html');
+
+ fs.readFile(htmlPath, 'utf8', (err, data) => {
+ if (err) {
+ res.writeHead(500, { 'Content-Type': 'text/plain' });
+ res.end('Error loading index.html: ' + err.message);
+ return;
+ }
+
+ res.writeHead(200, { 'Content-Type': 'text/html' });
+ res.end(data);
+ });
+ return;
+ }
+ return middleware(req, res, next);
+ };
+ },
+ }
};
module.exports = withNxMetro(mergeConfig(defaultConfig, customConfig), {
@@ -26,4 +52,30 @@ module.exports = withNxMetro(mergeConfig(defaultConfig, customConfig), {
path.resolve(projectRoot, 'node_modules'),
path.resolve(monorepoRoot, 'node_modules'),
],
+}).then((config) => {
+ const defaultResolveRequest = config.resolver.resolveRequest;
+ config.resolver.resolveRequest = (context, moduleName, platform) => {
+ if (platform === 'web') {
+
+ if (moduleName.includes('NativeSourceCode') ||
+ moduleName.includes('NativePlatformConstants') ||
+ moduleName.includes('NativeDevSettings') ||
+ moduleName.includes('NativeLogBox') ||
+ moduleName.includes('NativeRedBox')
+ ) {
+ return {
+ type: 'empty',
+ };
+ } else if (moduleName === 'react-native') {
+ return {
+ type: 'sourceFile',
+ filePath: require.resolve('react-native-web'),
+ };
+ }
+ }
+ // Everything else: default behavior
+ return defaultResolveRequest(context, moduleName, platform);
+ };
+
+ return config;
});
diff --git a/apps/playground/package.json b/apps/playground/package.json
index 9bef03f..ca1b964 100644
--- a/apps/playground/package.json
+++ b/apps/playground/package.json
@@ -7,7 +7,9 @@
},
"dependencies": {
"react": "19.1.1",
- "react-native": "0.82.1"
+ "react-dom": "19.1.1",
+ "react-native": "0.82.1",
+ "react-native-web": "^0.21.2"
},
"devDependencies": {
"react-native-harness": "workspace:*",
@@ -22,6 +24,7 @@
"jest": "^30.2.0",
"@react-native-harness/platform-android": "workspace:*",
"@react-native-harness/platform-apple": "workspace:*",
- "@react-native-harness/platform-vega": "workspace:*"
+ "@react-native-harness/platform-vega": "workspace:*",
+ "@react-native-harness/platform-web": "workspace:*"
}
}
diff --git a/apps/playground/rn-harness.config.mjs b/apps/playground/rn-harness.config.mjs
index 0c49b64..2071137 100644
--- a/apps/playground/rn-harness.config.mjs
+++ b/apps/playground/rn-harness.config.mjs
@@ -12,6 +12,9 @@ import {
vegaPlatform,
vegaEmulator,
} from '@react-native-harness/platform-vega';
+import {
+ webPlatform,
+} from '@react-native-harness/platform-web';
const config = {
entryPoint: './index.js',
@@ -48,6 +51,21 @@ const config = {
device: vegaEmulator('VegaTV_1'),
bundleId: 'com.playground',
}),
+ webPlatform({
+ name: 'web:chrome',
+ browserName: 'chrome',
+ appUrl: 'http://localhost:8081/index.html',
+ }),
+ webPlatform({
+ name: 'web:firefox',
+ browserName: 'firefox',
+ appUrl: 'http://localhost:8081/index.html',
+ }),
+ webPlatform({
+ name: 'web:safari',
+ browserName: 'safari',
+ appUrl: 'http://localhost:8081/index.html',
+ }),
],
defaultRunner: 'android',
bridgeTimeout: 120000,
diff --git a/apps/playground/tsconfig.app.json b/apps/playground/tsconfig.app.json
index 3b6ab83..843492b 100644
--- a/apps/playground/tsconfig.app.json
+++ b/apps/playground/tsconfig.app.json
@@ -33,6 +33,9 @@
"react-native-harness.d.ts"
],
"references": [
+ {
+ "path": "../../packages/platform-web/tsconfig.lib.json"
+ },
{
"path": "../../packages/platform-vega/tsconfig.lib.json"
},
diff --git a/apps/playground/tsconfig.json b/apps/playground/tsconfig.json
index b495afc..3d65290 100644
--- a/apps/playground/tsconfig.json
+++ b/apps/playground/tsconfig.json
@@ -3,6 +3,9 @@
"files": [],
"include": [],
"references": [
+ {
+ "path": "../../packages/platform-web"
+ },
{
"path": "../../packages/platform-vega"
},
diff --git a/apps/playground/web/index.html b/apps/playground/web/index.html
new file mode 100644
index 0000000..d50c56b
--- /dev/null
+++ b/apps/playground/web/index.html
@@ -0,0 +1,29 @@
+
+
+
+
+ react-native-harness
+
+
+
+
+
+
+
+
+
diff --git a/packages/bridge/src/shared.ts b/packages/bridge/src/shared.ts
index 86ed98a..950861a 100644
--- a/packages/bridge/src/shared.ts
+++ b/packages/bridge/src/shared.ts
@@ -39,7 +39,7 @@ export type {
export { DeviceNotRespondingError } from './errors.js';
export type DeviceDescriptor = {
- platform: 'ios' | 'android' | 'vega';
+ platform: 'ios' | 'android' | 'vega' | 'web';
manufacturer: string;
model: string;
osVersion: string;
diff --git a/packages/github-action/src/web/action.yml b/packages/github-action/src/web/action.yml
new file mode 100644
index 0000000..ecd7678
--- /dev/null
+++ b/packages/github-action/src/web/action.yml
@@ -0,0 +1,27 @@
+name: React Native Harness for Web
+description: Run React Native Harness tests on Web
+inputs:
+ runner:
+ description: The runner to use
+ required: true
+ type: string
+ projectRoot:
+ description: The project root directory
+ required: false
+ type: string
+runs:
+ using: 'composite'
+ steps:
+ - name: Load React Native Harness configuration
+ id: load-config
+ shell: bash
+ env:
+ INPUT_RUNNER: ${{ inputs.runner }}
+ INPUT_PROJECTROOT: ${{ inputs.projectRoot }}
+ run: |
+ node ${{ github.action_path }}/../shared/index.cjs
+ - name: Run E2E tests
+ shell: bash
+ working-directory: ${{ inputs.projectRoot }}
+ run: |
+ pnpm react-native-harness --harnessRunner ${{ inputs.runner }}
diff --git a/packages/github-action/src/web/index.ts b/packages/github-action/src/web/index.ts
new file mode 100644
index 0000000..fcbabe1
--- /dev/null
+++ b/packages/github-action/src/web/index.ts
@@ -0,0 +1 @@
+// This file is intentionally empty.
diff --git a/packages/github-action/tsup.config.mts b/packages/github-action/tsup.config.mts
index 57b00f7..8d15b46 100644
--- a/packages/github-action/tsup.config.mts
+++ b/packages/github-action/tsup.config.mts
@@ -3,7 +3,7 @@ import fs from 'node:fs';
import path from 'node:path';
const OUT_DIR = path.resolve('../../actions');
-const TARGETS = ['ios', 'android'];
+const TARGETS = ['ios', 'android', 'web'];
const packageJson = JSON.parse(
fs.readFileSync(path.resolve('./package.json'), 'utf8')
diff --git a/packages/platform-android/tsconfig.json b/packages/platform-android/tsconfig.json
index 56b5cd9..879e515 100644
--- a/packages/platform-android/tsconfig.json
+++ b/packages/platform-android/tsconfig.json
@@ -3,6 +3,9 @@
"files": [],
"include": [],
"references": [
+ {
+ "path": "../config"
+ },
{
"path": "../tools"
},
diff --git a/packages/platform-android/tsconfig.lib.json b/packages/platform-android/tsconfig.lib.json
index 1ff1d7b..ec9fadc 100644
--- a/packages/platform-android/tsconfig.lib.json
+++ b/packages/platform-android/tsconfig.lib.json
@@ -11,6 +11,9 @@
},
"include": ["src/**/*.ts"],
"references": [
+ {
+ "path": "../config/tsconfig.lib.json"
+ },
{
"path": "../tools/tsconfig.lib.json"
},
diff --git a/packages/platform-web/eslint.config.mjs b/packages/platform-web/eslint.config.mjs
new file mode 100644
index 0000000..c334bc0
--- /dev/null
+++ b/packages/platform-web/eslint.config.mjs
@@ -0,0 +1,19 @@
+import baseConfig from '../../eslint.config.mjs';
+
+export default [
+ ...baseConfig,
+ {
+ files: ['**/*.json'],
+ rules: {
+ '@nx/dependency-checks': [
+ 'error',
+ {
+ ignoredFiles: ['{projectRoot}/eslint.config.{js,cjs,mjs,ts,cts,mts}'],
+ },
+ ],
+ },
+ languageOptions: {
+ parser: await import('jsonc-eslint-parser'),
+ },
+ },
+];
diff --git a/packages/platform-web/package.json b/packages/platform-web/package.json
new file mode 100644
index 0000000..84a44ac
--- /dev/null
+++ b/packages/platform-web/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "@react-native-harness/platform-web",
+ "description": "Web platform for React Native Harness",
+ "version": "1.0.0-alpha.19",
+ "type": "module",
+ "main": "./dist/index.js",
+ "module": "./dist/index.js",
+ "types": "./dist/index.d.ts",
+ "exports": {
+ "./package.json": "./package.json",
+ ".": {
+ "development": "./src/index.ts",
+ "types": "./dist/index.d.ts",
+ "import": "./dist/index.js",
+ "default": "./dist/index.js"
+ }
+ },
+ "dependencies": {
+ "@react-native-harness/platforms": "workspace:*",
+ "@wdio/logger": "^9.18.0",
+ "tslib": "^2.3.0",
+ "webdriver": "^9.22.0",
+ "zod": "^3.25.67"
+ },
+ "license": "MIT"
+}
diff --git a/packages/platform-web/src/config.ts b/packages/platform-web/src/config.ts
new file mode 100644
index 0000000..e52170b
--- /dev/null
+++ b/packages/platform-web/src/config.ts
@@ -0,0 +1,9 @@
+import { z } from 'zod';
+
+export const WebPlatformConfigSchema = z.object({
+ name: z.string().min(1, 'Name is required'),
+ browserName: z.string().min(1, 'browserName is required'),
+ appUrl: z.string().url('appUrl must be a valid URL').default('http://localhost:8081'),
+});
+
+export type WebPlatformConfig = z.infer;
diff --git a/packages/platform-web/src/factory.ts b/packages/platform-web/src/factory.ts
new file mode 100644
index 0000000..7b87806
--- /dev/null
+++ b/packages/platform-web/src/factory.ts
@@ -0,0 +1,13 @@
+import { HarnessPlatform } from '@react-native-harness/platforms';
+import {
+ type WebPlatformConfig,
+} from './config.js';
+
+
+export const webPlatform = (
+ config: WebPlatformConfig
+): HarnessPlatform => ({
+ name: config.name,
+ config,
+ runner: import.meta.resolve('./runner.js'),
+});
\ No newline at end of file
diff --git a/packages/platform-web/src/index.ts b/packages/platform-web/src/index.ts
new file mode 100644
index 0000000..dfa8fab
--- /dev/null
+++ b/packages/platform-web/src/index.ts
@@ -0,0 +1,4 @@
+export {
+ webPlatform,
+} from './factory.js';
+export type { WebPlatformConfig } from './config.js';
\ No newline at end of file
diff --git a/packages/platform-web/src/runner.ts b/packages/platform-web/src/runner.ts
new file mode 100644
index 0000000..c6370e3
--- /dev/null
+++ b/packages/platform-web/src/runner.ts
@@ -0,0 +1,47 @@
+import WebDriver from 'webdriver';
+import { HarnessPlatformRunner } from '@react-native-harness/platforms';
+import { WebPlatformConfigSchema, type WebPlatformConfig } from './config.js';
+import logger from '@wdio/logger';
+
+const logLevel = !process.env.HARNESS_DEBUG ? 'silent' : 'info';
+
+logger.setLogLevelsConfig({
+ webdriver: logLevel,
+ '@wdio/utils': logLevel,
+ chromedriver: logLevel,
+ geckodriver: logLevel,
+});
+
+const getWebRunner = async (
+ config: WebPlatformConfig
+): Promise => {
+
+ const parsedConfig = WebPlatformConfigSchema.parse(config);
+
+ const capabilities: Record = {
+ browserName: parsedConfig.browserName,
+ };
+
+ const client = await WebDriver.newSession({
+ path: '/',
+ logLevel: 'warn',
+ capabilities,
+ });
+
+ return {
+ startApp: async () => {
+ await client.navigateTo(parsedConfig.appUrl);
+ },
+ restartApp: async () => {
+ await client.navigateTo(parsedConfig.appUrl);
+ },
+ stopApp: async () => {
+ await client.navigateTo('about:blank');
+ },
+ dispose: async () => {
+ await client.deleteSession();
+ },
+ };
+};
+
+export default getWebRunner;
diff --git a/packages/platform-web/tsconfig.json b/packages/platform-web/tsconfig.json
new file mode 100644
index 0000000..9f9888e
--- /dev/null
+++ b/packages/platform-web/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "files": [],
+ "include": [],
+ "references": [
+ {
+ "path": "../platforms"
+ },
+ {
+ "path": "./tsconfig.lib.json"
+ }
+ ]
+}
diff --git a/packages/platform-web/tsconfig.lib.json b/packages/platform-web/tsconfig.lib.json
new file mode 100644
index 0000000..c4f31bf
--- /dev/null
+++ b/packages/platform-web/tsconfig.lib.json
@@ -0,0 +1,18 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "baseUrl": ".",
+ "rootDir": "src",
+ "outDir": "dist",
+ "tsBuildInfoFile": "dist/tsconfig.lib.tsbuildinfo",
+ "emitDeclarationOnly": false,
+ "forceConsistentCasingInFileNames": true,
+ "types": ["node"]
+ },
+ "include": ["src/**/*.ts"],
+ "references": [
+ {
+ "path": "../platforms/tsconfig.lib.json"
+ }
+ ]
+}
diff --git a/packages/runtime/src/client/getDeviceDescriptor.ts b/packages/runtime/src/client/getDeviceDescriptor.ts
index 1b0ff2f..5a4de35 100644
--- a/packages/runtime/src/client/getDeviceDescriptor.ts
+++ b/packages/runtime/src/client/getDeviceDescriptor.ts
@@ -11,7 +11,7 @@ const getPlatform = (): Platform | PlatformKeplerStatic => {
};
export type DeviceDescriptor = {
- platform: 'ios' | 'android' | 'vega';
+ platform: 'ios' | 'android' | 'vega' | 'web';
manufacturer: string;
model: string;
osVersion: string;
@@ -47,5 +47,14 @@ export const getDeviceDescriptor = (): DeviceDescriptor => {
};
}
+ if (platform.OS === 'web') {
+ return {
+ platform: 'web',
+ manufacturer: '',
+ model: '',
+ osVersion: '',
+ };
+ }
+
throw new Error('Unsupported platform');
};
diff --git a/packages/runtime/src/entry-point.ts b/packages/runtime/src/entry-point.ts
index aa65fcd..858a983 100644
--- a/packages/runtime/src/entry-point.ts
+++ b/packages/runtime/src/entry-point.ts
@@ -1,4 +1,4 @@
-import { AppRegistry } from 'react-native';
+import { AppRegistry, Platform } from 'react-native';
import { getHarnessGlobal } from './globals.js';
import { UI } from './ui/index.js';
@@ -6,3 +6,9 @@ AppRegistry.registerComponent(
getHarnessGlobal().appRegistryComponentName,
() => UI
);
+
+if (Platform.OS === 'web') {
+ AppRegistry.runApplication(getHarnessGlobal().appRegistryComponentName, {
+ rootTag: document.getElementById('root'),
+ });
+}
diff --git a/packages/runtime/src/initialize.ts b/packages/runtime/src/initialize.ts
index 454b0d8..ee9b55f 100644
--- a/packages/runtime/src/initialize.ts
+++ b/packages/runtime/src/initialize.ts
@@ -1,3 +1,4 @@
+import { Platform } from 'react-native';
import { getDeviceDescriptor } from './client/getDeviceDescriptor.js';
import { getClient } from './client/index.js';
import { disableHMRWhenReady } from './disableHMRWhenReady.js';
@@ -22,7 +23,10 @@ const HMRClient =
// Wait for HMRClient to be initialized
setTimeout(() => {
- void disableHMRWhenReady(() => HMRClient.disable(), 50).then(() =>
+ void disableHMRWhenReady(() => {
+ if (Platform.OS !== 'web') {
+ HMRClient.disable();
+ }}, 50).then(() =>
getClient().then((client) =>
client.rpc.reportReady(getDeviceDescriptor())
)
diff --git a/packages/runtime/src/utils/dev-server.ts b/packages/runtime/src/utils/dev-server.ts
index e1aadba..b784d7f 100644
--- a/packages/runtime/src/utils/dev-server.ts
+++ b/packages/runtime/src/utils/dev-server.ts
@@ -1,6 +1,11 @@
+import { Platform } from 'react-native';
import getDevServer from 'react-native/Libraries/Core/Devtools/getDevServer';
export const getDevServerUrl = (): string => {
- const devServer = getDevServer();
- return devServer.url;
+ if (Platform.OS === 'web') {
+ return `${window.location.origin}/`;
+ } else {
+ const devServer = getDevServer();
+ return devServer.url;
+ }
};
diff --git a/packages/runtime/tsconfig.lib.json b/packages/runtime/tsconfig.lib.json
index 5effb71..fc01dfa 100644
--- a/packages/runtime/tsconfig.lib.json
+++ b/packages/runtime/tsconfig.lib.json
@@ -8,7 +8,8 @@
"emitDeclarationOnly": false,
"forceConsistentCasingInFileNames": true,
"types": ["node"],
- "jsx": "react-jsx"
+ "jsx": "react-jsx",
+ "lib": ["ES2022", "DOM"]
},
"include": ["src/**/*.ts", "src/**/*.tsx"],
"references": [
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7c031f2..84c3235 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -31,7 +31,7 @@ importers:
version: 22.0.4(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))
'@nx/react-native':
specifier: 22.0.4
- version: 22.0.4(b6bdbf441fca35f932c3e030670387b0)
+ version: 22.0.4(aa93444fbdc9e9232615a5e145daec19)
'@nx/rollup':
specifier: 22.0.4
version: 22.0.4(@babel/core@7.27.4)(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))(ts-node@9.1.1(typescript@5.9.3))(typescript@5.9.3)
@@ -131,9 +131,15 @@ importers:
react:
specifier: 19.1.1
version: 19.1.1
+ react-dom:
+ specifier: 19.1.1
+ version: 19.1.1(react@19.1.1)
react-native:
specifier: 0.82.1
version: 0.82.1(@babel/core@7.27.4)(@react-native-community/cli@20.0.0(typescript@5.9.3))(@react-native/metro-config@0.82.1(@babel/core@7.27.4))(@types/react@19.1.13)(react@19.1.1)
+ react-native-web:
+ specifier: ^0.21.2
+ version: 0.21.2(encoding@0.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
devDependencies:
'@react-native-community/cli':
specifier: 20.0.0
@@ -156,12 +162,15 @@ importers:
'@react-native-harness/platform-vega':
specifier: workspace:*
version: link:../../packages/platform-vega
+ '@react-native-harness/platform-web':
+ specifier: workspace:*
+ version: link:../../packages/platform-web
'@react-native/babel-preset':
specifier: 0.82.1
version: 0.82.1(@babel/core@7.27.4)
'@react-native/eslint-config':
specifier: 0.82.1
- version: 0.82.1(eslint@9.29.0(jiti@2.6.0))(jest@30.2.0(@types/node@18.16.9)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3)))(prettier@2.8.8)(typescript@5.9.3)
+ version: 0.82.1(eslint@9.29.0(jiti@2.6.0))(jest@30.2.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3)))(prettier@2.8.8)(typescript@5.9.3)
'@react-native/metro-config':
specifier: 0.82.1
version: 0.82.1(@babel/core@7.27.4)
@@ -170,7 +179,7 @@ importers:
version: 0.82.1
jest:
specifier: ^30.2.0
- version: 30.2.0(@types/node@18.16.9)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3))
+ version: 30.2.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3))
react-native-harness:
specifier: workspace:*
version: link:../../packages/react-native-harness
@@ -398,6 +407,24 @@ importers:
specifier: ^3.25.67
version: 3.25.67
+ packages/platform-web:
+ dependencies:
+ '@react-native-harness/platforms':
+ specifier: workspace:*
+ version: link:../platforms
+ '@wdio/logger':
+ specifier: ^9.18.0
+ version: 9.18.0
+ tslib:
+ specifier: ^2.3.0
+ version: 2.8.1
+ webdriver:
+ specifier: ^9.22.0
+ version: 9.22.0
+ zod:
+ specifier: ^3.25.67
+ version: 3.25.67
+
packages/platforms:
dependencies:
tslib:
@@ -2139,6 +2166,14 @@ packages:
'@polka/url@1.0.0-next.29':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
+ '@promptbook/utils@0.69.5':
+ resolution: {integrity: sha512-xm5Ti/Hp3o4xHrsK9Yy3MS6KbDxYbq485hDsFvxqaNA7equHLPdo8H8faTitTeb14QCDfLW4iwCxdVYu5sn6YQ==}
+
+ '@puppeteer/browsers@2.11.0':
+ resolution: {integrity: sha512-n6oQX6mYkG8TRPuPXmbPidkUbsSRalhmaaVAQxvH1IkQy63cwsH+kOjB3e4cpCDHg0aSvsiX9bQ4s2VB6mGWUQ==}
+ engines: {node: '>=18'}
+ hasBin: true
+
'@react-native-community/cli-clean@20.0.0':
resolution: {integrity: sha512-YmdNRcT+Dp8lC7CfxSDIfPMbVPEXVFzBH62VZNbYGxjyakqAvoQUFTYPgM2AyFusAr4wDFbDOsEv88gCDwR3ig==}
@@ -2250,6 +2285,9 @@ packages:
resolution: {integrity: sha512-mAY6R3xnDMlmDOrUCAtLTjIkli26DZt4LNVuAjDEdnlv5sHANOr5x4qpMn7ea1p9Q/tpfHLalPQUQeJ8CZH4gA==}
engines: {node: '>= 20.19.4'}
+ '@react-native/normalize-colors@0.74.89':
+ resolution: {integrity: sha512-qoMMXddVKVhZ8PA1AbUCk83trpd6N+1nF2A6k1i6LsQObyS92fELuk8kU/lQs6M7BsMHwqyLCpQJ1uFgNvIQXg==}
+
'@react-native/normalize-colors@0.82.1':
resolution: {integrity: sha512-CCfTR1uX+Z7zJTdt3DNX9LUXr2zWXsNOyLbwupW2wmRzrxlHRYfmLgTABzRL/cKhh0Ubuwn15o72MQChvCRaHw==}
@@ -2858,6 +2896,9 @@ packages:
resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
engines: {node: '>= 10'}
+ '@tootallnate/quickjs-emscripten@0.23.0':
+ resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==}
+
'@trysound/sax@0.2.0':
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
engines: {node: '>=10.13.0'}
@@ -2979,6 +3020,9 @@ packages:
'@types/unist@3.0.3':
resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+ '@types/which@2.0.2':
+ resolution: {integrity: sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==}
+
'@types/ws@8.18.1':
resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
@@ -2988,6 +3032,9 @@ packages:
'@types/yargs@17.0.33':
resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==}
+ '@types/yauzl@2.10.3':
+ resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
+
'@typescript-eslint/eslint-plugin@8.46.4':
resolution: {integrity: sha512-R48VhmTJqplNyDxCyqqVkFSZIx1qX6PzwqgcXn1olLrzxcSBDlOsbtcnQuQhNtnNiJ4Xe5gREI1foajYaYU2Vg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -3299,6 +3346,25 @@ packages:
'@vscode/sudo-prompt@9.3.1':
resolution: {integrity: sha512-9ORTwwS74VaTn38tNbQhsA5U44zkJfcb0BdTSyyG6frP4e8KMtHuTXYmwefe5dpL8XB1aGSIVTaLjD3BbWb5iA==}
+ '@wdio/config@9.22.0':
+ resolution: {integrity: sha512-SQsTSZowEI+whPlwPLsX9ICr6BiG39NLmzED7OWfaowribQ0XylRhoWodcRu6cB/ZCzminZajBUG5XgarNWnRw==}
+ engines: {node: '>=18.20.0'}
+
+ '@wdio/logger@9.18.0':
+ resolution: {integrity: sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==}
+ engines: {node: '>=18.20.0'}
+
+ '@wdio/protocols@9.16.2':
+ resolution: {integrity: sha512-h3k97/lzmyw5MowqceAuY3HX/wGJojXHkiPXA3WlhGPCaa2h4+GovV2nJtRvknCKsE7UHA1xB5SWeI8MzloBew==}
+
+ '@wdio/types@9.20.0':
+ resolution: {integrity: sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==}
+ engines: {node: '>=18.20.0'}
+
+ '@wdio/utils@9.22.0':
+ resolution: {integrity: sha512-5j2nn2bBjj41wxXsVT43sUMOKR0qiKNDRG1UcKQ6NkfsWFObSehMAS0a9ZZu//+ooTxRkwHjvLdQrXIrPnTLzg==}
+ engines: {node: '>=18.20.0'}
+
'@webassemblyjs/ast@1.14.1':
resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==}
@@ -3372,6 +3438,10 @@ packages:
resolution: {integrity: sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==}
engines: {node: '>=18.12.0'}
+ '@zip.js/zip.js@2.8.11':
+ resolution: {integrity: sha512-0fztsk/0ryJ+2PPr9EyXS5/Co7OK8q3zY/xOoozEWaUsL5x+C0cyZ4YyMuUffOO2Dx/rAdq4JMPqW0VUtm+vzA==}
+ engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=18.0.0'}
+
'@zkochan/js-yaml@0.0.7':
resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==}
hasBin: true
@@ -3558,6 +3628,10 @@ packages:
ast-types-flow@0.0.8:
resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
+ ast-types@0.13.4:
+ resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==}
+ engines: {node: '>=4'}
+
ast-v8-to-istanbul@0.3.3:
resolution: {integrity: sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==}
@@ -3608,6 +3682,14 @@ packages:
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
engines: {node: '>= 0.4'}
+ b4a@1.7.3:
+ resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==}
+ peerDependencies:
+ react-native-b4a: '*'
+ peerDependenciesMeta:
+ react-native-b4a:
+ optional: true
+
babel-jest@29.7.0:
resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -3701,6 +3783,44 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ bare-events@2.8.2:
+ resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==}
+ peerDependencies:
+ bare-abort-controller: '*'
+ peerDependenciesMeta:
+ bare-abort-controller:
+ optional: true
+
+ bare-fs@4.5.2:
+ resolution: {integrity: sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==}
+ engines: {bare: '>=1.16.0'}
+ peerDependencies:
+ bare-buffer: '*'
+ peerDependenciesMeta:
+ bare-buffer:
+ optional: true
+
+ bare-os@3.6.2:
+ resolution: {integrity: sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==}
+ engines: {bare: '>=1.14.0'}
+
+ bare-path@3.0.0:
+ resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==}
+
+ bare-stream@2.7.0:
+ resolution: {integrity: sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==}
+ peerDependencies:
+ bare-buffer: '*'
+ bare-events: '*'
+ peerDependenciesMeta:
+ bare-buffer:
+ optional: true
+ bare-events:
+ optional: true
+
+ bare-url@2.3.2:
+ resolution: {integrity: sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==}
+
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
@@ -3712,6 +3832,10 @@ packages:
resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==}
engines: {node: '>= 0.8'}
+ basic-ftp@5.0.5:
+ resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==}
+ engines: {node: '>=10.0.0'}
+
big.js@5.2.2:
resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
@@ -3772,6 +3896,9 @@ packages:
buffer-builder@0.2.0:
resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==}
+ buffer-crc32@0.2.13:
+ resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
+
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
@@ -3878,6 +4005,10 @@ packages:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
+ chalk@5.6.2:
+ resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==}
+ engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+
char-regex@1.0.2:
resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
engines: {node: '>=10'}
@@ -4144,6 +4275,9 @@ packages:
resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==}
engines: {node: '>=12.0.0'}
+ cross-fetch@3.2.0:
+ resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==}
+
cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
@@ -4154,6 +4288,9 @@ packages:
peerDependencies:
postcss: ^8.0.9
+ css-in-js-utils@3.1.0:
+ resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==}
+
css-select@4.3.0:
resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
@@ -4217,6 +4354,10 @@ packages:
damerau-levenshtein@1.0.8:
resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
+ data-uri-to-buffer@6.0.2:
+ resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==}
+ engines: {node: '>= 14'}
+
data-urls@4.0.0:
resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==}
engines: {node: '>=14'}
@@ -4265,6 +4406,15 @@ packages:
supports-color:
optional: true
+ debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
decamelize@1.2.0:
resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
engines: {node: '>=0.10.0'}
@@ -4273,6 +4423,10 @@ packages:
resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==}
engines: {node: '>=10'}
+ decamelize@6.0.1:
+ resolution: {integrity: sha512-G7Cqgaelq68XHJNGlZ7lrNQyhZGsFqpwtGFexqUv4IQdjKoSYF7ipZ9UuTJZUSQXFj/XaoBLuEVIVqr8EJngEQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
decimal.js@10.5.0:
resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==}
@@ -4297,6 +4451,10 @@ packages:
deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ deepmerge-ts@7.1.5:
+ resolution: {integrity: sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==}
+ engines: {node: '>=16.0.0'}
+
deepmerge@4.3.1:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
@@ -4316,6 +4474,10 @@ packages:
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
+ degenerator@5.0.1:
+ resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==}
+ engines: {node: '>= 14'}
+
delayed-stream@1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
@@ -4435,6 +4597,15 @@ packages:
resolution: {integrity: sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==}
engines: {node: '>=6.0.0'}
+ edge-paths@3.0.5:
+ resolution: {integrity: sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg==}
+ engines: {node: '>=14.0.0'}
+
+ edgedriver@6.2.0:
+ resolution: {integrity: sha512-49G6010o0VYXUMNi5OvxqE9O/kazs0qmJVqHcSHNvp1VfojO21Kb/NaJN40uy11yrlGHRp7y6a372xoCnShzlA==}
+ engines: {node: '>=20.0.0'}
+ hasBin: true
+
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
@@ -4596,6 +4767,11 @@ packages:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
+ escodegen@2.1.0:
+ resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
+ engines: {node: '>=6.0'}
+ hasBin: true
+
eslint-config-prettier@10.1.5:
resolution: {integrity: sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==}
hasBin: true
@@ -4809,6 +4985,9 @@ packages:
eventemitter3@4.0.7:
resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
+ events-universal@1.0.1:
+ resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==}
+
events@3.3.0:
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
engines: {node: '>=0.8.x'}
@@ -4851,9 +5030,17 @@ packages:
extend@3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+ extract-zip@2.0.1:
+ resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==}
+ engines: {node: '>= 10.17.0'}
+ hasBin: true
+
fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ fast-fifo@1.3.2:
+ resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
+
fast-glob@3.3.3:
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
engines: {node: '>=8.6.0'}
@@ -4871,6 +5058,10 @@ packages:
resolution: {integrity: sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==}
hasBin: true
+ fast-xml-parser@5.3.3:
+ resolution: {integrity: sha512-2O3dkPAAC6JavuMm8+4+pgTk+5hoAs+CjZ+sWcQLkX9+/tHRuTkQh/Oaifr8qDmZ8iEHb771Ea6G8CdwkrgvYA==}
+ hasBin: true
+
fastq@1.19.1:
resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
@@ -4882,6 +5073,15 @@ packages:
fb-watchman@2.0.2:
resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==}
+ fbjs-css-vars@1.0.2:
+ resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==}
+
+ fbjs@3.0.5:
+ resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==}
+
+ fd-slicer@1.1.0:
+ resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
+
fdir@6.5.0:
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
engines: {node: '>=12.0.0'}
@@ -5056,6 +5256,11 @@ packages:
resolution: {integrity: sha512-2Sp1hWuO8m5fqeFDusyhKqYPT+7rGLw34N3qonDcdRP8+n7M7Gl/yKp/q7oCxnnJ6pWCectOmLFJpsMU/++KrQ==}
engines: {node: '>=8.3.0'}
+ geckodriver@6.1.0:
+ resolution: {integrity: sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==}
+ engines: {node: '>=20.0.0'}
+ hasBin: true
+
generic-names@4.0.0:
resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==}
@@ -5075,10 +5280,18 @@ packages:
resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==}
engines: {node: '>=8.0.0'}
+ get-port@7.1.0:
+ resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==}
+ engines: {node: '>=16'}
+
get-proto@1.0.1:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
+ get-stream@5.2.0:
+ resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
+ engines: {node: '>=8'}
+
get-stream@6.0.1:
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
engines: {node: '>=10'}
@@ -5087,6 +5300,10 @@ packages:
resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
engines: {node: '>= 0.4'}
+ get-uri@6.0.5:
+ resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==}
+ engines: {node: '>= 14'}
+
github-slugger@2.0.0:
resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
@@ -5286,6 +5503,10 @@ packages:
resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
engines: {node: '>= 6'}
+ http-proxy-agent@7.0.2:
+ resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
+ engines: {node: '>= 14'}
+
http-proxy-middleware@3.0.5:
resolution: {integrity: sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -5311,6 +5532,9 @@ packages:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
engines: {node: '>=10.17.0'}
+ hyphenate-style-name@1.1.0:
+ resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==}
+
iconv-lite@0.4.24:
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
engines: {node: '>=0.10.0'}
@@ -5376,6 +5600,9 @@ packages:
engines: {node: '>=8'}
hasBin: true
+ import-meta-resolve@4.2.0:
+ resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==}
+
imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
@@ -5393,6 +5620,9 @@ packages:
inline-style-parser@0.2.4:
resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==}
+ inline-style-prefixer@7.0.1:
+ resolution: {integrity: sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==}
+
internal-slot@1.1.0:
resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
engines: {node: '>= 0.4'}
@@ -5400,6 +5630,10 @@ packages:
invariant@2.2.4:
resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
+ ip-address@10.1.0:
+ resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==}
+ engines: {node: '>= 12'}
+
ipaddr.js@1.9.1:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
@@ -5613,6 +5847,10 @@ packages:
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ isexe@3.1.1:
+ resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==}
+ engines: {node: '>=16'}
+
isomorphic-ws@5.0.0:
resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==}
peerDependencies:
@@ -6097,6 +6335,9 @@ packages:
resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==}
engines: {node: '>= 12.13.0'}
+ locate-app@2.5.0:
+ resolution: {integrity: sha512-xIqbzPMBYArJRmPGUZD9CzV9wOqmVtQnaAn3wrj3s6WYW0bQvPI7x+sPYUGmDTYMHefVK//zc6HEYZ1qnxIK+Q==}
+
locate-path@3.0.0:
resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==}
engines: {node: '>=6'}
@@ -6152,6 +6393,13 @@ packages:
resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==}
hasBin: true
+ loglevel-plugin-prefix@0.8.4:
+ resolution: {integrity: sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==}
+
+ loglevel@1.9.2:
+ resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==}
+ engines: {node: '>= 0.6.0'}
+
long-timeout@0.1.1:
resolution: {integrity: sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==}
@@ -6174,6 +6422,10 @@ packages:
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+ lru-cache@7.18.3:
+ resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
+ engines: {node: '>=12'}
+
luxon@3.6.1:
resolution: {integrity: sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==}
engines: {node: '>=12'}
@@ -6287,6 +6539,9 @@ packages:
memoize-one@5.2.1:
resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==}
+ memoize-one@6.0.0:
+ resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
+
merge-descriptors@1.0.3:
resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
@@ -6537,6 +6792,9 @@ packages:
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
engines: {node: '>=16 || 14 >=14.17'}
+ mitt@3.0.1:
+ resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
+
mkdirp@0.5.6:
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
hasBin: true
@@ -6549,6 +6807,10 @@ packages:
mlly@1.8.0:
resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
+ modern-tar@0.7.3:
+ resolution: {integrity: sha512-4W79zekKGyYU4JXVmB78DOscMFaJth2gGhgfTl2alWE4rNe3nf4N2pqenQ0rEtIewrnD79M687Ouba3YGTLOvg==}
+ engines: {node: '>=18.0.0'}
+
moment@2.30.1:
resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==}
@@ -6615,6 +6877,10 @@ packages:
neo-async@2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
+ netmask@2.0.2:
+ resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==}
+ engines: {node: '>= 0.4.0'}
+
no-case@3.0.4:
resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
@@ -6842,6 +7108,14 @@ packages:
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
engines: {node: '>=6'}
+ pac-proxy-agent@7.2.0:
+ resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==}
+ engines: {node: '>= 14'}
+
+ pac-resolver@7.0.1:
+ resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==}
+ engines: {node: '>= 14'}
+
package-json-from-dist@1.0.1:
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
@@ -6914,6 +7188,9 @@ packages:
peberminta@0.9.0:
resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==}
+ pend@1.2.0:
+ resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==}
+
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@@ -7219,10 +7496,17 @@ packages:
process-nextick-args@2.0.1:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+ progress@2.0.3:
+ resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
+ engines: {node: '>=0.4.0'}
+
promise.series@0.2.0:
resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==}
engines: {node: '>=0.12'}
+ promise@7.3.1:
+ resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==}
+
promise@8.3.0:
resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==}
@@ -7250,6 +7534,10 @@ packages:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
+ proxy-agent@6.5.0:
+ resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==}
+ engines: {node: '>= 14'}
+
proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
@@ -7259,6 +7547,9 @@ packages:
psl@1.15.0:
resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==}
+ pump@3.0.3:
+ resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==}
+
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
@@ -7305,6 +7596,11 @@ packages:
peerDependencies:
react: ^19.1.1
+ react-dom@19.2.3:
+ resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==}
+ peerDependencies:
+ react: ^19.2.3
+
react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
@@ -7314,6 +7610,12 @@ packages:
react-lazy-with-preload@2.2.1:
resolution: {integrity: sha512-ONSb8gizLE5jFpdHAclZ6EAAKuFX2JydnFXPPPjoUImZlLjGtKzyBS8SJgJq7CpLgsGKh9QCZdugJyEEOVC16Q==}
+ react-native-web@0.21.2:
+ resolution: {integrity: sha512-SO2t9/17zM4iEnFvlu2DA9jqNbzNhoUP+AItkoCOyFmDMOhUnBBznBDCYN92fGdfAkfQlWzPoez6+zLxFNsZEg==}
+ peerDependencies:
+ react: ^18.0.0 || ^19.0.0
+ react-dom: ^18.0.0 || ^19.0.0
+
react-native@0.82.1:
resolution: {integrity: sha512-tFAqcU7Z4g49xf/KnyCEzI4nRTu1Opcx05Ov2helr8ZTg1z7AJR/3sr2rZ+AAVlAs2IXk+B0WOxXGmdD3+4czA==}
engines: {node: '>= 20.19.4'}
@@ -7495,6 +7797,10 @@ packages:
resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
engines: {node: '>=8'}
+ ret@0.5.0:
+ resolution: {integrity: sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==}
+ engines: {node: '>=10'}
+
retry@0.12.0:
resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
engines: {node: '>= 4'}
@@ -7560,6 +7866,10 @@ packages:
rxjs@7.8.2:
resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
+ safaridriver@1.0.0:
+ resolution: {integrity: sha512-J92IFbskyo7OYB3Dt4aTdyhag1GlInrfbPCmMteb7aBK7PwlnGz1HI0+oyNN97j7pV9DqUAVoVgkNRMrfY47mQ==}
+ engines: {node: '>=18.0.0'}
+
safe-array-concat@1.1.3:
resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
engines: {node: '>=0.4'}
@@ -7584,6 +7894,9 @@ packages:
resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
engines: {node: '>= 0.4'}
+ safe-regex2@5.0.0:
+ resolution: {integrity: sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==}
+
safe-stable-stringify@2.5.0:
resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
engines: {node: '>=10'}
@@ -7710,6 +8023,9 @@ packages:
scheduler@0.26.0:
resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==}
+ scheduler@0.27.0:
+ resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
+
schema-utils@3.3.0:
resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==}
engines: {node: '>= 10.13.0'}
@@ -7750,6 +8066,11 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ semver@7.7.3:
+ resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
+ engines: {node: '>=10'}
+ hasBin: true
+
send@0.19.0:
resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==}
engines: {node: '>= 0.8.0'}
@@ -7784,6 +8105,9 @@ packages:
resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
engines: {node: '>= 0.4'}
+ setimmediate@1.0.5:
+ resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
+
setprototypeof@1.2.0:
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
@@ -7843,9 +8167,21 @@ packages:
resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==}
engines: {node: '>=6'}
+ smart-buffer@4.2.0:
+ resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
+ engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
+
snake-case@3.0.4:
resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==}
+ socks-proxy-agent@8.0.5:
+ resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==}
+ engines: {node: '>= 14'}
+
+ socks@2.8.7:
+ resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==}
+ engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
+
sorted-array-functions@1.3.0:
resolution: {integrity: sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==}
@@ -7881,6 +8217,13 @@ packages:
space-separated-tokens@2.0.2:
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
+ spacetrim@0.11.59:
+ resolution: {integrity: sha512-lLYsktklSRKprreOm7NXReW8YiX2VBjbgmXYEziOoGf/qsJqAEACaDvoTtUOycwjpaSh+bT8eu0KrJn7UNxiCg==}
+
+ split2@4.2.0:
+ resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
+ engines: {node: '>= 10.x'}
+
sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
@@ -7930,6 +8273,9 @@ packages:
resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==}
engines: {node: '>=8.0'}
+ streamx@2.23.0:
+ resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==}
+
string-hash@1.1.3:
resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==}
@@ -8018,6 +8364,9 @@ packages:
strnum@1.1.2:
resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==}
+ strnum@2.1.2:
+ resolution: {integrity: sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==}
+
style-inject@0.3.0:
resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==}
@@ -8033,6 +8382,9 @@ packages:
peerDependencies:
postcss: ^8.2.15
+ styleq@0.1.3:
+ resolution: {integrity: sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==}
+
stylus@0.64.0:
resolution: {integrity: sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA==}
engines: {node: '>=16'}
@@ -8091,10 +8443,16 @@ packages:
resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==}
engines: {node: '>=6'}
+ tar-fs@3.1.1:
+ resolution: {integrity: sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==}
+
tar-stream@2.2.0:
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
engines: {node: '>=6'}
+ tar-stream@3.1.7:
+ resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
+
telnet-client@1.2.8:
resolution: {integrity: sha512-W+w4k3QAmULVNhBVT2Fei369kGZCh/TH25M7caJAXW+hLxwoQRuw0di3cX4l0S9fgH3Mvq7u+IFMoBDpEw/eIg==}
@@ -8127,6 +8485,9 @@ packages:
resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==}
engines: {node: '>=18'}
+ text-decoder@1.2.3:
+ resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==}
+
text-hex@1.0.0:
resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==}
@@ -8289,6 +8650,10 @@ packages:
resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==}
engines: {node: '>=8'}
+ type-fest@4.26.0:
+ resolution: {integrity: sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==}
+ engines: {node: '>=16'}
+
type-is@1.6.18:
resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
engines: {node: '>= 0.6'}
@@ -8325,6 +8690,10 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
+ ua-parser-js@1.0.41:
+ resolution: {integrity: sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==}
+ hasBin: true
+
ufo@1.6.1:
resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
@@ -8335,6 +8704,10 @@ packages:
undici-types@6.21.0:
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
+ undici@6.22.0:
+ resolution: {integrity: sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==}
+ engines: {node: '>=18.17'}
+
unhead@2.0.17:
resolution: {integrity: sha512-xX3PCtxaE80khRZobyWCVxeFF88/Tg9eJDcJWY9us727nsTC7C449B8BUfVBmiF2+3LjPcmqeoB2iuMs0U4oJQ==}
@@ -8431,6 +8804,10 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ userhome@1.0.1:
+ resolution: {integrity: sha512-5cnLm4gseXjAclKowC4IjByaGsjtAoV6PrOQOljplNB54ReUYJP8HdAFq2muHinSDAh09PPX/uXDPfdxRHvuSA==}
+ engines: {node: '>= 0.8.0'}
+
utf8-byte-length@1.0.5:
resolution: {integrity: sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==}
@@ -8541,6 +8918,11 @@ packages:
resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==}
engines: {node: '>=14'}
+ wait-port@1.1.0:
+ resolution: {integrity: sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q==}
+ engines: {node: '>=10'}
+ hasBin: true
+
walker@1.0.8:
resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
@@ -8554,6 +8936,10 @@ packages:
web-namespaces@2.0.1:
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
+ webdriver@9.22.0:
+ resolution: {integrity: sha512-jf4irPhIJAssrF3mqUrBZGZnzjRfM86Q24ePUOgFKWI04LtdvRsnc9SsWU05mrN/a6pTJzGps6GsvLpNhvcalg==}
+ engines: {node: '>=18.20.0'}
+
webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
@@ -8621,6 +9007,11 @@ packages:
engines: {node: '>= 8'}
hasBin: true
+ which@6.0.0:
+ resolution: {integrity: sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==}
+ engines: {node: ^20.17.0 || >=22.9.0}
+ hasBin: true
+
why-is-node-running@2.3.0:
resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
engines: {node: '>=8'}
@@ -8754,6 +9145,9 @@ packages:
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
+ yauzl@2.10.0:
+ resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==}
+
yn@3.1.1:
resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
engines: {node: '>=6'}
@@ -10025,7 +10419,7 @@ snapshots:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
jest-mock: 29.7.0
'@jest/environment@30.2.0':
@@ -10050,7 +10444,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -10059,7 +10453,7 @@ snapshots:
dependencies:
'@jest/types': 30.2.0
'@sinonjs/fake-timers': 13.0.5
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
jest-message-util: 30.2.0
jest-mock: 30.2.0
jest-util: 30.2.0
@@ -10077,7 +10471,7 @@ snapshots:
'@jest/pattern@30.0.1':
dependencies:
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
jest-regex-util: 30.0.1
'@jest/reporters@30.2.0':
@@ -10088,7 +10482,7 @@ snapshots:
'@jest/transform': 30.2.0
'@jest/types': 30.2.0
'@jridgewell/trace-mapping': 0.3.25
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
chalk: 4.1.2
collect-v8-coverage: 1.0.2
exit-x: 0.2.2
@@ -10188,7 +10582,7 @@ snapshots:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
'@types/yargs': 17.0.33
chalk: 4.1.2
@@ -10300,13 +10694,13 @@ snapshots:
- utf-8-validate
- vue-tsc
- '@module-federation/data-prefetch@0.21.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@module-federation/data-prefetch@0.21.4(react-dom@19.2.3(react@19.1.1))(react@19.1.1)':
dependencies:
'@module-federation/runtime': 0.21.4
'@module-federation/sdk': 0.21.4
fs-extra: 9.1.0
react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react-dom: 19.2.3(react@19.1.1)
'@module-federation/dts-plugin@0.21.4(typescript@5.9.3)':
dependencies:
@@ -10333,11 +10727,11 @@ snapshots:
- supports-color
- utf-8-validate
- '@module-federation/enhanced@0.21.4(@rspack/core@1.5.6(@swc/helpers@0.5.17))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.3)(webpack@5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17)))':
+ '@module-federation/enhanced@0.21.4(@rspack/core@1.5.6(@swc/helpers@0.5.17))(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(typescript@5.9.3)(webpack@5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17)))':
dependencies:
'@module-federation/bridge-react-webpack-plugin': 0.21.4
'@module-federation/cli': 0.21.4(typescript@5.9.3)
- '@module-federation/data-prefetch': 0.21.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@module-federation/data-prefetch': 0.21.4(react-dom@19.2.3(react@19.1.1))(react@19.1.1)
'@module-federation/dts-plugin': 0.21.4(typescript@5.9.3)
'@module-federation/error-codes': 0.21.4
'@module-federation/inject-external-runtime-core-plugin': 0.21.4(@module-federation/runtime-tools@0.21.4)
@@ -10390,9 +10784,9 @@ snapshots:
- utf-8-validate
- vue-tsc
- '@module-federation/node@2.7.23(@rspack/core@1.5.6(@swc/helpers@0.5.17))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.3)(webpack@5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17)))':
+ '@module-federation/node@2.7.23(@rspack/core@1.5.6(@swc/helpers@0.5.17))(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(typescript@5.9.3)(webpack@5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17)))':
dependencies:
- '@module-federation/enhanced': 0.21.4(@rspack/core@1.5.6(@swc/helpers@0.5.17))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.3)(webpack@5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17)))
+ '@module-federation/enhanced': 0.21.4(@rspack/core@1.5.6(@swc/helpers@0.5.17))(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(typescript@5.9.3)(webpack@5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17)))
'@module-federation/runtime': 0.21.4
'@module-federation/sdk': 0.21.4
btoa: 1.2.1
@@ -10401,7 +10795,7 @@ snapshots:
webpack: 5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17))
optionalDependencies:
react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react-dom: 19.2.3(react@19.1.1)
transitivePeerDependencies:
- '@rspack/core'
- bufferutil
@@ -10518,13 +10912,13 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.19.1
- '@nx/detox@22.0.4(9b1a4b49f421cf013b90dafab0a49a31)':
+ '@nx/detox@22.0.4(5f23339e7d3937f61e4376afb0db3521)':
dependencies:
'@nx/devkit': 22.0.4(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))
'@nx/eslint': 22.0.4(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@zkochan/js-yaml@0.0.7)(eslint@9.29.0(jiti@2.4.2))(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))
'@nx/jest': 22.0.4(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))(ts-node@9.1.1(typescript@5.9.3))(typescript@5.9.3)
'@nx/js': 22.0.4(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))
- '@nx/react': 22.0.4(@babel/core@7.27.4)(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)(@types/babel__core@7.20.5)(@zkochan/js-yaml@0.0.7)(eslint@9.29.0(jiti@2.4.2))(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(ts-node@9.1.1(typescript@5.9.3))(typescript@5.9.3)(vite@7.2.2(@types/node@20.19.25)(jiti@2.4.2)(less@4.1.3)(lightningcss@1.27.0)(sass-embedded@1.89.2)(sass@1.89.2)(stylus@0.64.0)(terser@5.42.0)(yaml@2.8.0))(vitest@3.2.4)(webpack@5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17)))
+ '@nx/react': 22.0.4(@babel/core@7.27.4)(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)(@types/babel__core@7.20.5)(@zkochan/js-yaml@0.0.7)(eslint@9.29.0(jiti@2.4.2))(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(ts-node@9.1.1(typescript@5.9.3))(typescript@5.9.3)(vite@7.2.2(@types/node@20.19.25)(jiti@2.4.2)(less@4.1.3)(lightningcss@1.27.0)(sass-embedded@1.89.2)(sass@1.89.2)(stylus@0.64.0)(terser@5.42.0)(yaml@2.8.0))(vitest@3.2.4)(webpack@5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17)))
detox: 20.46.0(@jest/environment@30.2.0)(@jest/types@30.2.0)(expect@30.2.0)(jest-environment-node@30.2.0)(jest@30.2.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3)))
tslib: 2.8.1
transitivePeerDependencies:
@@ -10686,10 +11080,10 @@ snapshots:
- nx
- supports-color
- '@nx/module-federation@22.0.4(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.3)':
+ '@nx/module-federation@22.0.4(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(typescript@5.9.3)':
dependencies:
- '@module-federation/enhanced': 0.21.4(@rspack/core@1.5.6(@swc/helpers@0.5.17))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.3)(webpack@5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17)))
- '@module-federation/node': 2.7.23(@rspack/core@1.5.6(@swc/helpers@0.5.17))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.3)(webpack@5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17)))
+ '@module-federation/enhanced': 0.21.4(@rspack/core@1.5.6(@swc/helpers@0.5.17))(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(typescript@5.9.3)(webpack@5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17)))
+ '@module-federation/node': 2.7.23(@rspack/core@1.5.6(@swc/helpers@0.5.17))(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(typescript@5.9.3)(webpack@5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17)))
'@module-federation/sdk': 0.21.4
'@nx/devkit': 22.0.4(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))
'@nx/js': 22.0.4(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))
@@ -10750,12 +11144,12 @@ snapshots:
'@nx/nx-win32-x64-msvc@22.0.4':
optional: true
- '@nx/react-native@22.0.4(b6bdbf441fca35f932c3e030670387b0)':
+ '@nx/react-native@22.0.4(aa93444fbdc9e9232615a5e145daec19)':
dependencies:
'@nx/devkit': 22.0.4(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))
'@nx/eslint': 22.0.4(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@zkochan/js-yaml@0.0.7)(eslint@9.29.0(jiti@2.4.2))(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))
'@nx/js': 22.0.4(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))
- '@nx/react': 22.0.4(@babel/core@7.27.4)(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)(@types/babel__core@7.20.5)(@zkochan/js-yaml@0.0.7)(eslint@9.29.0(jiti@2.4.2))(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(ts-node@9.1.1(typescript@5.9.3))(typescript@5.9.3)(vite@7.2.2(@types/node@20.19.25)(jiti@2.4.2)(less@4.1.3)(lightningcss@1.27.0)(sass-embedded@1.89.2)(sass@1.89.2)(stylus@0.64.0)(terser@5.42.0)(yaml@2.8.0))(vitest@3.2.4)(webpack@5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17)))
+ '@nx/react': 22.0.4(@babel/core@7.27.4)(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)(@types/babel__core@7.20.5)(@zkochan/js-yaml@0.0.7)(eslint@9.29.0(jiti@2.4.2))(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(ts-node@9.1.1(typescript@5.9.3))(typescript@5.9.3)(vite@7.2.2(@types/node@20.19.25)(jiti@2.4.2)(less@4.1.3)(lightningcss@1.27.0)(sass-embedded@1.89.2)(sass@1.89.2)(stylus@0.64.0)(terser@5.42.0)(yaml@2.8.0))(vitest@3.2.4)(webpack@5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17)))
ajv: 8.17.1
enhanced-resolve: 5.18.3
ignore: 5.3.2
@@ -10766,7 +11160,7 @@ snapshots:
tsconfig-paths: 4.2.0
tslib: 2.8.1
optionalDependencies:
- '@nx/detox': 22.0.4(9b1a4b49f421cf013b90dafab0a49a31)
+ '@nx/detox': 22.0.4(5f23339e7d3937f61e4376afb0db3521)
'@nx/rollup': 22.0.4(@babel/core@7.27.4)(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))(ts-node@9.1.1(typescript@5.9.3))(typescript@5.9.3)
transitivePeerDependencies:
- '@babel/core'
@@ -10801,12 +11195,12 @@ snapshots:
- webpack
- webpack-cli
- '@nx/react@22.0.4(@babel/core@7.27.4)(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)(@types/babel__core@7.20.5)(@zkochan/js-yaml@0.0.7)(eslint@9.29.0(jiti@2.4.2))(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(ts-node@9.1.1(typescript@5.9.3))(typescript@5.9.3)(vite@7.2.2(@types/node@20.19.25)(jiti@2.4.2)(less@4.1.3)(lightningcss@1.27.0)(sass-embedded@1.89.2)(sass@1.89.2)(stylus@0.64.0)(terser@5.42.0)(yaml@2.8.0))(vitest@3.2.4)(webpack@5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17)))':
+ '@nx/react@22.0.4(@babel/core@7.27.4)(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)(@types/babel__core@7.20.5)(@zkochan/js-yaml@0.0.7)(eslint@9.29.0(jiti@2.4.2))(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(ts-node@9.1.1(typescript@5.9.3))(typescript@5.9.3)(vite@7.2.2(@types/node@20.19.25)(jiti@2.4.2)(less@4.1.3)(lightningcss@1.27.0)(sass-embedded@1.89.2)(sass@1.89.2)(stylus@0.64.0)(terser@5.42.0)(yaml@2.8.0))(vitest@3.2.4)(webpack@5.102.1(@swc/core@1.5.29(@swc/helpers@0.5.17)))':
dependencies:
'@nx/devkit': 22.0.4(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))
'@nx/eslint': 22.0.4(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@zkochan/js-yaml@0.0.7)(eslint@9.29.0(jiti@2.4.2))(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))
'@nx/js': 22.0.4(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))
- '@nx/module-federation': 22.0.4(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.3)
+ '@nx/module-federation': 22.0.4(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/helpers@0.5.17)(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))(react-dom@19.2.3(react@19.1.1))(react@19.1.1)(typescript@5.9.3)
'@nx/rollup': 22.0.4(@babel/core@7.27.4)(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))(ts-node@9.1.1(typescript@5.9.3))(typescript@5.9.3)
'@nx/web': 22.0.4(@babel/traverse@7.27.4)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(nx@22.0.4(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.9.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))
'@phenomnomnominal/tsquery': 5.0.1(typescript@5.9.3)
@@ -11009,6 +11403,25 @@ snapshots:
'@polka/url@1.0.0-next.29': {}
+ '@promptbook/utils@0.69.5':
+ dependencies:
+ spacetrim: 0.11.59
+
+ '@puppeteer/browsers@2.11.0':
+ dependencies:
+ debug: 4.4.3
+ extract-zip: 2.0.1
+ progress: 2.0.3
+ proxy-agent: 6.5.0
+ semver: 7.7.3
+ tar-fs: 3.1.1
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - bare-buffer
+ - react-native-b4a
+ - supports-color
+
'@react-native-community/cli-clean@20.0.0':
dependencies:
'@react-native-community/cli-tools': 20.0.0
@@ -11251,7 +11664,7 @@ snapshots:
- supports-color
- utf-8-validate
- '@react-native/eslint-config@0.82.1(eslint@9.29.0(jiti@2.6.0))(jest@30.2.0(@types/node@18.16.9)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3)))(prettier@2.8.8)(typescript@5.9.3)':
+ '@react-native/eslint-config@0.82.1(eslint@9.29.0(jiti@2.6.0))(jest@30.2.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3)))(prettier@2.8.8)(typescript@5.9.3)':
dependencies:
'@babel/core': 7.27.4
'@babel/eslint-parser': 7.28.5(@babel/core@7.27.4)(eslint@9.29.0(jiti@2.6.0))
@@ -11262,7 +11675,7 @@ snapshots:
eslint-config-prettier: 8.10.2(eslint@9.29.0(jiti@2.6.0))
eslint-plugin-eslint-comments: 3.2.0(eslint@9.29.0(jiti@2.6.0))
eslint-plugin-ft-flow: 2.0.3(@babel/eslint-parser@7.28.5(@babel/core@7.27.4)(eslint@9.29.0(jiti@2.6.0)))(eslint@9.29.0(jiti@2.6.0))
- eslint-plugin-jest: 29.1.0(@typescript-eslint/eslint-plugin@8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.29.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.29.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.29.0(jiti@2.6.0))(jest@30.2.0(@types/node@18.16.9)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3)))(typescript@5.9.3)
+ eslint-plugin-jest: 29.1.0(@typescript-eslint/eslint-plugin@8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.29.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.29.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.29.0(jiti@2.6.0))(jest@30.2.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3)))(typescript@5.9.3)
eslint-plugin-react: 7.35.0(eslint@9.29.0(jiti@2.6.0))
eslint-plugin-react-hooks: 5.2.0(eslint@9.29.0(jiti@2.6.0))
eslint-plugin-react-native: 4.1.0(eslint@9.29.0(jiti@2.6.0))
@@ -11296,9 +11709,12 @@ snapshots:
transitivePeerDependencies:
- '@babel/core'
- bufferutil
+ - bufferutil
- supports-color
- utf-8-validate
+ '@react-native/normalize-colors@0.74.89': {}
+
'@react-native/normalize-colors@0.82.1': {}
'@react-native/typescript-config@0.82.1': {}
@@ -11911,6 +12327,8 @@ snapshots:
'@tootallnate/once@2.0.0': {}
+ '@tootallnate/quickjs-emscripten@0.23.0': {}
+
'@trysound/sax@0.2.0': {}
'@tybys/wasm-util@0.10.1':
@@ -11978,16 +12396,16 @@ snapshots:
'@types/fs-extra@8.1.5':
dependencies:
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
'@types/glob@7.2.0':
dependencies:
'@types/minimatch': 5.1.2
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
'@types/graceful-fs@4.1.9':
dependencies:
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
'@types/hast@3.0.4':
dependencies:
@@ -11995,7 +12413,7 @@ snapshots:
'@types/http-proxy@1.17.16':
dependencies:
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
'@types/istanbul-lib-coverage@2.0.6': {}
@@ -12046,6 +12464,8 @@ snapshots:
'@types/unist@3.0.3': {}
+ '@types/which@2.0.2': {}
+
'@types/ws@8.18.1':
dependencies:
'@types/node': 18.16.9
@@ -12056,6 +12476,11 @@ snapshots:
dependencies:
'@types/yargs-parser': 21.0.3
+ '@types/yauzl@2.10.3':
+ dependencies:
+ '@types/node': 20.19.25
+ optional: true
+
'@typescript-eslint/eslint-plugin@8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.29.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.29.0(jiti@2.6.0))(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.1
@@ -12118,7 +12543,7 @@ snapshots:
dependencies:
'@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3)
'@typescript-eslint/types': 8.46.4
- debug: 4.4.1
+ debug: 4.4.3
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -12127,7 +12552,7 @@ snapshots:
dependencies:
'@typescript-eslint/tsconfig-utils': 8.47.0(typescript@5.9.3)
'@typescript-eslint/types': 8.47.0
- debug: 4.4.1
+ debug: 4.4.3
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
@@ -12179,7 +12604,7 @@ snapshots:
'@typescript-eslint/types': 8.47.0
'@typescript-eslint/typescript-estree': 8.47.0(typescript@5.9.3)
'@typescript-eslint/utils': 8.47.0(eslint@9.29.0(jiti@2.4.2))(typescript@5.9.3)
- debug: 4.4.1
+ debug: 4.4.3
eslint: 9.29.0(jiti@2.4.2)
ts-api-utils: 2.1.0(typescript@5.9.3)
typescript: 5.9.3
@@ -12441,6 +12866,56 @@ snapshots:
'@vscode/sudo-prompt@9.3.1': {}
+ '@wdio/config@9.22.0':
+ dependencies:
+ '@wdio/logger': 9.18.0
+ '@wdio/types': 9.20.0
+ '@wdio/utils': 9.22.0
+ deepmerge-ts: 7.1.5
+ glob: 10.4.5
+ import-meta-resolve: 4.2.0
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - bare-buffer
+ - react-native-b4a
+ - supports-color
+
+ '@wdio/logger@9.18.0':
+ dependencies:
+ chalk: 5.6.2
+ loglevel: 1.9.2
+ loglevel-plugin-prefix: 0.8.4
+ safe-regex2: 5.0.0
+ strip-ansi: 7.1.0
+
+ '@wdio/protocols@9.16.2': {}
+
+ '@wdio/types@9.20.0':
+ dependencies:
+ '@types/node': 20.19.25
+
+ '@wdio/utils@9.22.0':
+ dependencies:
+ '@puppeteer/browsers': 2.11.0
+ '@wdio/logger': 9.18.0
+ '@wdio/types': 9.20.0
+ decamelize: 6.0.1
+ deepmerge-ts: 7.1.5
+ edgedriver: 6.2.0
+ geckodriver: 6.1.0
+ get-port: 7.1.0
+ import-meta-resolve: 4.2.0
+ locate-app: 2.5.0
+ mitt: 3.0.1
+ safaridriver: 1.0.0
+ split2: 4.2.0
+ wait-port: 1.1.0
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - bare-buffer
+ - react-native-b4a
+ - supports-color
+
'@webassemblyjs/ast@1.14.1':
dependencies:
'@webassemblyjs/helper-numbers': 1.13.2
@@ -12544,6 +13019,8 @@ snapshots:
js-yaml: 3.14.1
tslib: 2.8.1
+ '@zip.js/zip.js@2.8.11': {}
+
'@zkochan/js-yaml@0.0.7':
dependencies:
argparse: 2.0.1
@@ -12737,6 +13214,10 @@ snapshots:
ast-types-flow@0.0.8: {}
+ ast-types@0.13.4:
+ dependencies:
+ tslib: 2.8.1
+
ast-v8-to-istanbul@0.3.3:
dependencies:
'@jridgewell/trace-mapping': 0.3.25
@@ -12783,6 +13264,8 @@ snapshots:
axobject-query@4.1.0: {}
+ b4a@1.7.3: {}
+
babel-jest@29.7.0(@babel/core@7.27.4):
dependencies:
'@babel/core': 7.27.4
@@ -12939,6 +13422,43 @@ snapshots:
balanced-match@1.0.2: {}
+ bare-events@2.8.2: {}
+
+ bare-fs@4.5.2:
+ dependencies:
+ bare-events: 2.8.2
+ bare-path: 3.0.0
+ bare-stream: 2.7.0(bare-events@2.8.2)
+ bare-url: 2.3.2
+ fast-fifo: 1.3.2
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+ optional: true
+
+ bare-os@3.6.2:
+ optional: true
+
+ bare-path@3.0.0:
+ dependencies:
+ bare-os: 3.6.2
+ optional: true
+
+ bare-stream@2.7.0(bare-events@2.8.2):
+ dependencies:
+ streamx: 2.23.0
+ optionalDependencies:
+ bare-events: 2.8.2
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+ optional: true
+
+ bare-url@2.3.2:
+ dependencies:
+ bare-path: 3.0.0
+ optional: true
+
base64-js@1.5.1: {}
baseline-browser-mapping@2.8.29: {}
@@ -12947,6 +13467,8 @@ snapshots:
dependencies:
safe-buffer: 5.1.2
+ basic-ftp@5.0.5: {}
+
big.js@5.2.2: {}
binary-extensions@2.3.0: {}
@@ -13023,6 +13545,8 @@ snapshots:
buffer-builder@0.2.0:
optional: true
+ buffer-crc32@0.2.13: {}
+
buffer-from@1.1.2: {}
buffer@5.7.1:
@@ -13140,6 +13664,8 @@ snapshots:
ansi-styles: 4.3.0
supports-color: 7.2.0
+ chalk@5.6.2: {}
+
char-regex@1.0.2: {}
character-entities-html4@2.1.0: {}
@@ -13170,7 +13696,7 @@ snapshots:
chrome-launcher@0.15.2:
dependencies:
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@@ -13181,7 +13707,7 @@ snapshots:
chromium-edge-launcher@0.2.0:
dependencies:
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@@ -13400,6 +13926,12 @@ snapshots:
dependencies:
luxon: 3.6.1
+ cross-fetch@3.2.0(encoding@0.1.13):
+ dependencies:
+ node-fetch: 2.7.0(encoding@0.1.13)
+ transitivePeerDependencies:
+ - encoding
+
cross-spawn@7.0.6:
dependencies:
path-key: 3.1.1
@@ -13410,6 +13942,10 @@ snapshots:
dependencies:
postcss: 8.5.6
+ css-in-js-utils@3.1.0:
+ dependencies:
+ hyphenate-style-name: 1.1.0
+
css-select@4.3.0:
dependencies:
boolbase: 1.0.0
@@ -13505,6 +14041,8 @@ snapshots:
damerau-levenshtein@1.0.8: {}
+ data-uri-to-buffer@6.0.2: {}
+
data-urls@4.0.0:
dependencies:
abab: 2.0.6
@@ -13545,11 +14083,17 @@ snapshots:
dependencies:
ms: 2.1.3
+ debug@4.4.3:
+ dependencies:
+ ms: 2.1.3
+
decamelize@1.2.0: {}
decamelize@4.0.0:
optional: true
+ decamelize@6.0.1: {}
+
decimal.js@10.5.0: {}
decode-named-character-reference@1.2.0:
@@ -13566,6 +14110,8 @@ snapshots:
deep-is@0.1.4: {}
+ deepmerge-ts@7.1.5: {}
+
deepmerge@4.3.1: {}
defaults@1.0.4:
@@ -13586,6 +14132,12 @@ snapshots:
has-property-descriptors: 1.0.2
object-keys: 1.1.1
+ degenerator@5.0.1:
+ dependencies:
+ ast-types: 0.13.4
+ escodegen: 2.1.0
+ esprima: 4.0.1
+
delayed-stream@1.0.0: {}
delegates@1.0.0: {}
@@ -13635,7 +14187,7 @@ snapshots:
proper-lockfile: 3.2.0
resolve-from: 5.0.0
sanitize-filename: 1.6.3
- semver: 7.7.2
+ semver: 7.7.3
serialize-error: 8.1.0
shell-quote: 1.8.3
signal-exit: 3.0.7
@@ -13747,6 +14299,24 @@ snapshots:
easy-stack@1.0.1:
optional: true
+ edge-paths@3.0.5:
+ dependencies:
+ '@types/which': 2.0.2
+ which: 2.0.2
+
+ edgedriver@6.2.0:
+ dependencies:
+ '@wdio/logger': 9.18.0
+ '@zip.js/zip.js': 2.8.11
+ decamelize: 6.0.1
+ edge-paths: 3.0.5
+ fast-xml-parser: 5.3.3
+ http-proxy-agent: 7.0.2
+ https-proxy-agent: 7.0.6
+ which: 6.0.0
+ transitivePeerDependencies:
+ - supports-color
+
ee-first@1.1.1: {}
ejs@3.1.10:
@@ -14003,6 +14573,14 @@ snapshots:
escape-string-regexp@5.0.0: {}
+ escodegen@2.1.0:
+ dependencies:
+ esprima: 4.0.1
+ estraverse: 5.3.0
+ esutils: 2.0.3
+ optionalDependencies:
+ source-map: 0.6.1
+
eslint-config-prettier@10.1.5(eslint@9.29.0(jiti@2.4.2)):
dependencies:
eslint: 9.29.0(jiti@2.4.2)
@@ -14071,13 +14649,13 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-jest@29.1.0(@typescript-eslint/eslint-plugin@8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.29.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.29.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.29.0(jiti@2.6.0))(jest@30.2.0(@types/node@18.16.9)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3)))(typescript@5.9.3):
+ eslint-plugin-jest@29.1.0(@typescript-eslint/eslint-plugin@8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.29.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.29.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.29.0(jiti@2.6.0))(jest@30.2.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3)))(typescript@5.9.3):
dependencies:
'@typescript-eslint/utils': 8.46.4(eslint@9.29.0(jiti@2.6.0))(typescript@5.9.3)
eslint: 9.29.0(jiti@2.6.0)
optionalDependencies:
'@typescript-eslint/eslint-plugin': 8.46.4(@typescript-eslint/parser@8.46.4(eslint@9.29.0(jiti@2.6.0))(typescript@5.9.3))(eslint@9.29.0(jiti@2.6.0))(typescript@5.9.3)
- jest: 30.2.0(@types/node@18.16.9)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3))
+ jest: 30.2.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3))
transitivePeerDependencies:
- supports-color
- typescript
@@ -14337,6 +14915,12 @@ snapshots:
eventemitter3@4.0.7: {}
+ events-universal@1.0.1:
+ dependencies:
+ bare-events: 2.8.2
+ transitivePeerDependencies:
+ - bare-abort-controller
+
events@3.3.0: {}
execa@5.1.1:
@@ -14415,8 +14999,20 @@ snapshots:
extend@3.0.2: {}
+ extract-zip@2.0.1:
+ dependencies:
+ debug: 4.4.3
+ get-stream: 5.2.0
+ yauzl: 2.10.0
+ optionalDependencies:
+ '@types/yauzl': 2.10.3
+ transitivePeerDependencies:
+ - supports-color
+
fast-deep-equal@3.1.3: {}
+ fast-fifo@1.3.2: {}
+
fast-glob@3.3.3:
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -14435,6 +15031,10 @@ snapshots:
dependencies:
strnum: 1.1.2
+ fast-xml-parser@5.3.3:
+ dependencies:
+ strnum: 2.1.2
+
fastq@1.19.1:
dependencies:
reusify: 1.1.0
@@ -14445,6 +15045,24 @@ snapshots:
dependencies:
bser: 2.1.1
+ fbjs-css-vars@1.0.2: {}
+
+ fbjs@3.0.5(encoding@0.1.13):
+ dependencies:
+ cross-fetch: 3.2.0(encoding@0.1.13)
+ fbjs-css-vars: 1.0.2
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ promise: 7.3.1
+ setimmediate: 1.0.5
+ ua-parser-js: 1.0.41
+ transitivePeerDependencies:
+ - encoding
+
+ fd-slicer@1.1.0:
+ dependencies:
+ pend: 1.2.0
+
fdir@6.5.0(picomatch@4.0.3):
optionalDependencies:
picomatch: 4.0.3
@@ -14642,6 +15260,17 @@ snapshots:
funpermaproxy@1.1.0:
optional: true
+ geckodriver@6.1.0:
+ dependencies:
+ '@wdio/logger': 9.18.0
+ '@zip.js/zip.js': 2.8.11
+ decamelize: 6.0.1
+ http-proxy-agent: 7.0.2
+ https-proxy-agent: 7.0.6
+ modern-tar: 0.7.3
+ transitivePeerDependencies:
+ - supports-color
+
generic-names@4.0.0:
dependencies:
loader-utils: 3.3.1
@@ -14665,11 +15294,17 @@ snapshots:
get-package-type@0.1.0: {}
+ get-port@7.1.0: {}
+
get-proto@1.0.1:
dependencies:
dunder-proto: 1.0.1
es-object-atoms: 1.1.1
+ get-stream@5.2.0:
+ dependencies:
+ pump: 3.0.3
+
get-stream@6.0.1: {}
get-symbol-description@1.1.0:
@@ -14678,6 +15313,14 @@ snapshots:
es-errors: 1.3.0
get-intrinsic: 1.3.0
+ get-uri@6.0.5:
+ dependencies:
+ basic-ftp: 5.0.5
+ data-uri-to-buffer: 6.0.2
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
github-slugger@2.0.0: {}
glob-parent@5.1.2:
@@ -14996,6 +15639,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ http-proxy-agent@7.0.2:
+ dependencies:
+ agent-base: 7.1.4
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
http-proxy-middleware@3.0.5:
dependencies:
'@types/http-proxy': 1.17.16
@@ -15044,12 +15694,14 @@ snapshots:
https-proxy-agent@7.0.6:
dependencies:
agent-base: 7.1.4
- debug: 4.4.1
+ debug: 4.4.3
transitivePeerDependencies:
- supports-color
human-signals@2.1.0: {}
+ hyphenate-style-name@1.1.0: {}
+
iconv-lite@0.4.24:
dependencies:
safer-buffer: 2.1.2
@@ -15106,6 +15758,8 @@ snapshots:
pkg-dir: 4.2.0
resolve-cwd: 3.0.0
+ import-meta-resolve@4.2.0: {}
+
imurmurhash@0.1.4: {}
inflight@1.0.6:
@@ -15119,6 +15773,10 @@ snapshots:
inline-style-parser@0.2.4: {}
+ inline-style-prefixer@7.0.1:
+ dependencies:
+ css-in-js-utils: 3.1.0
+
internal-slot@1.1.0:
dependencies:
es-errors: 1.3.0
@@ -15129,6 +15787,8 @@ snapshots:
dependencies:
loose-envify: 1.4.0
+ ip-address@10.1.0: {}
+
ipaddr.js@1.9.1: {}
is-absolute-url@4.0.1: {}
@@ -15310,6 +15970,8 @@ snapshots:
isexe@2.0.0: {}
+ isexe@3.1.1: {}
+
isomorphic-ws@5.0.0(ws@8.18.0):
dependencies:
ws: 8.18.0
@@ -15389,7 +16051,7 @@ snapshots:
'@jest/expect': 30.2.0
'@jest/test-result': 30.2.0
'@jest/types': 30.2.0
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
chalk: 4.1.2
co: 4.6.0
dedent: 1.6.0(babel-plugin-macros@3.1.0)
@@ -15409,25 +16071,6 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-cli@30.2.0(@types/node@18.16.9)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3)):
- dependencies:
- '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3))
- '@jest/test-result': 30.2.0
- '@jest/types': 30.2.0
- chalk: 4.1.2
- exit-x: 0.2.2
- import-local: 3.2.0
- jest-config: 30.2.0(@types/node@18.16.9)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3))
- jest-util: 30.2.0
- jest-validate: 30.2.0
- yargs: 17.7.2
- transitivePeerDependencies:
- - '@types/node'
- - babel-plugin-macros
- - esbuild-register
- - supports-color
- - ts-node
-
jest-cli@30.2.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3)):
dependencies:
'@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3))
@@ -15576,7 +16219,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.9
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -15642,13 +16285,13 @@ snapshots:
jest-mock@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
jest-util: 29.7.0
jest-mock@30.2.0:
dependencies:
'@jest/types': 30.2.0
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
jest-util: 30.2.0
jest-pnp-resolver@1.2.3(jest-resolve@30.2.0):
@@ -15760,7 +16403,7 @@ snapshots:
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -15806,7 +16449,7 @@ snapshots:
jest-worker@27.5.1:
dependencies:
- '@types/node': 18.16.9
+ '@types/node': 20.19.25
merge-stream: 2.0.0
supports-color: 8.1.1
@@ -15825,19 +16468,6 @@ snapshots:
merge-stream: 2.0.0
supports-color: 8.1.1
- jest@30.2.0(@types/node@18.16.9)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3)):
- dependencies:
- '@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3))
- '@jest/types': 30.2.0
- import-local: 3.2.0
- jest-cli: 30.2.0(@types/node@18.16.9)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3))
- transitivePeerDependencies:
- - '@types/node'
- - babel-plugin-macros
- - esbuild-register
- - supports-color
- - ts-node
-
jest@30.2.0(@types/node@20.19.25)(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3)):
dependencies:
'@jest/core': 30.2.0(babel-plugin-macros@3.1.0)(ts-node@9.1.1(typescript@5.9.3))
@@ -15850,7 +16480,6 @@ snapshots:
- esbuild-register
- supports-color
- ts-node
- optional: true
jiti@2.4.2: {}
@@ -16114,6 +16743,12 @@ snapshots:
loader-utils@3.3.1: {}
+ locate-app@2.5.0:
+ dependencies:
+ '@promptbook/utils': 0.69.5
+ type-fest: 4.26.0
+ userhome: 1.0.1
+
locate-path@3.0.0:
dependencies:
p-locate: 3.0.0
@@ -16153,7 +16788,7 @@ snapshots:
log4js@6.9.1:
dependencies:
date-format: 4.0.14
- debug: 4.4.1
+ debug: 4.4.3
flatted: 3.3.3
rfdc: 1.4.1
streamroller: 3.1.5
@@ -16176,6 +16811,10 @@ snapshots:
dayjs: 1.11.13
yargs: 15.4.1
+ loglevel-plugin-prefix@0.8.4: {}
+
+ loglevel@1.9.2: {}
+
long-timeout@0.1.1: {}
longest-streak@3.1.0: {}
@@ -16196,6 +16835,8 @@ snapshots:
dependencies:
yallist: 3.1.1
+ lru-cache@7.18.3: {}
+
luxon@3.6.1: {}
magic-string@0.30.17:
@@ -16414,6 +17055,8 @@ snapshots:
memoize-one@5.2.1: {}
+ memoize-one@6.0.0: {}
+
merge-descriptors@1.0.3: {}
merge-stream@2.0.0: {}
@@ -16842,7 +17485,7 @@ snapshots:
micromark@4.0.2:
dependencies:
'@types/debug': 4.1.12
- debug: 4.4.1
+ debug: 4.4.3
decode-named-character-reference: 1.2.0
devlop: 1.1.0
micromark-core-commonmark: 2.0.3
@@ -16914,6 +17557,8 @@ snapshots:
minipass@7.1.2: {}
+ mitt@3.0.1: {}
+
mkdirp@0.5.6:
dependencies:
minimist: 1.2.8
@@ -16928,6 +17573,8 @@ snapshots:
pkg-types: 1.3.1
ufo: 1.6.1
+ modern-tar@0.7.3: {}
+
moment@2.30.1:
optional: true
@@ -16985,6 +17632,8 @@ snapshots:
neo-async@2.6.2: {}
+ netmask@2.0.2: {}
+
no-case@3.0.4:
dependencies:
lower-case: 2.0.2
@@ -17272,6 +17921,24 @@ snapshots:
p-try@2.2.0: {}
+ pac-proxy-agent@7.2.0:
+ dependencies:
+ '@tootallnate/quickjs-emscripten': 0.23.0
+ agent-base: 7.1.4
+ debug: 4.4.3
+ get-uri: 6.0.5
+ http-proxy-agent: 7.0.2
+ https-proxy-agent: 7.0.6
+ pac-resolver: 7.0.1
+ socks-proxy-agent: 8.0.5
+ transitivePeerDependencies:
+ - supports-color
+
+ pac-resolver@7.0.1:
+ dependencies:
+ degenerator: 5.0.1
+ netmask: 2.0.2
+
package-json-from-dist@1.0.1: {}
parent-module@1.0.1:
@@ -17336,6 +18003,8 @@ snapshots:
peberminta@0.9.0: {}
+ pend@1.2.0: {}
+
picocolors@1.1.1: {}
picomatch@2.3.1: {}
@@ -17611,8 +18280,14 @@ snapshots:
process-nextick-args@2.0.1:
optional: true
+ progress@2.0.3: {}
+
promise.series@0.2.0: {}
+ promise@7.3.1:
+ dependencies:
+ asap: 2.0.6
+
promise@8.3.0:
dependencies:
asap: 2.0.6
@@ -17647,6 +18322,19 @@ snapshots:
forwarded: 0.2.0
ipaddr.js: 1.9.1
+ proxy-agent@6.5.0:
+ dependencies:
+ agent-base: 7.1.4
+ debug: 4.4.3
+ http-proxy-agent: 7.0.2
+ https-proxy-agent: 7.0.6
+ lru-cache: 7.18.3
+ pac-proxy-agent: 7.2.0
+ proxy-from-env: 1.1.0
+ socks-proxy-agent: 8.0.5
+ transitivePeerDependencies:
+ - supports-color
+
proxy-from-env@1.1.0: {}
prr@1.0.1:
@@ -17656,6 +18344,11 @@ snapshots:
dependencies:
punycode: 2.3.1
+ pump@3.0.3:
+ dependencies:
+ end-of-stream: 1.4.5
+ once: 1.4.0
+
punycode@2.3.1: {}
pure-rand@7.0.1: {}
@@ -17704,12 +18397,32 @@ snapshots:
react: 19.1.1
scheduler: 0.26.0
+ react-dom@19.2.3(react@19.1.1):
+ dependencies:
+ react: 19.1.1
+ scheduler: 0.27.0
+
react-is@16.13.1: {}
react-is@18.3.1: {}
react-lazy-with-preload@2.2.1: {}
+ react-native-web@0.21.2(encoding@0.1.13)(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ dependencies:
+ '@babel/runtime': 7.27.6
+ '@react-native/normalize-colors': 0.74.89
+ fbjs: 3.0.5(encoding@0.1.13)
+ inline-style-prefixer: 7.0.1
+ memoize-one: 6.0.0
+ nullthrows: 1.1.1
+ postcss-value-parser: 4.2.0
+ react: 19.1.1
+ react-dom: 19.1.1(react@19.1.1)
+ styleq: 0.1.3
+ transitivePeerDependencies:
+ - encoding
+
react-native@0.82.1(@babel/core@7.27.4)(@react-native-community/cli@20.0.0(typescript@5.9.3))(@react-native/metro-config@0.82.1(@babel/core@7.27.4))(@types/react@19.1.13)(react@19.1.1):
dependencies:
'@jest/create-cache-key-function': 29.7.0
@@ -17993,6 +18706,8 @@ snapshots:
onetime: 5.1.2
signal-exit: 3.0.7
+ ret@0.5.0: {}
+
retry@0.12.0:
optional: true
@@ -18093,6 +18808,8 @@ snapshots:
tslib: 2.8.1
optional: true
+ safaridriver@1.0.0: {}
+
safe-array-concat@1.1.3:
dependencies:
call-bind: 1.0.8
@@ -18121,6 +18838,10 @@ snapshots:
es-errors: 1.3.0
is-regex: 1.2.1
+ safe-regex2@5.0.0:
+ dependencies:
+ ret: 0.5.0
+
safe-stable-stringify@2.5.0:
optional: true
@@ -18226,6 +18947,8 @@ snapshots:
scheduler@0.26.0: {}
+ scheduler@0.27.0: {}
+
schema-utils@3.3.0:
dependencies:
'@types/json-schema': 7.0.15
@@ -18266,6 +18989,8 @@ snapshots:
semver@7.7.2: {}
+ semver@7.7.3: {}
+
send@0.19.0:
dependencies:
debug: 2.6.9
@@ -18328,6 +19053,8 @@ snapshots:
es-errors: 1.3.0
es-object-atoms: 1.1.1
+ setimmediate@1.0.5: {}
+
setprototypeof@1.2.0: {}
shebang-command@2.0.0:
@@ -18399,11 +19126,26 @@ snapshots:
astral-regex: 1.0.0
is-fullwidth-code-point: 2.0.0
+ smart-buffer@4.2.0: {}
+
snake-case@3.0.4:
dependencies:
dot-case: 3.0.4
tslib: 2.8.1
+ socks-proxy-agent@8.0.5:
+ dependencies:
+ agent-base: 7.1.4
+ debug: 4.4.3
+ socks: 2.8.7
+ transitivePeerDependencies:
+ - supports-color
+
+ socks@2.8.7:
+ dependencies:
+ ip-address: 10.1.0
+ smart-buffer: 4.2.0
+
sorted-array-functions@1.3.0: {}
source-map-js@1.2.1: {}
@@ -18433,6 +19175,10 @@ snapshots:
space-separated-tokens@2.0.2: {}
+ spacetrim@0.11.59: {}
+
+ split2@4.2.0: {}
+
sprintf-js@1.0.3: {}
stable@0.1.8: {}
@@ -18474,11 +19220,20 @@ snapshots:
streamroller@3.1.5:
dependencies:
date-format: 4.0.14
- debug: 4.4.1
+ debug: 4.4.3
fs-extra: 8.1.0
transitivePeerDependencies:
- supports-color
+ streamx@2.23.0:
+ dependencies:
+ events-universal: 1.0.1
+ fast-fifo: 1.3.2
+ text-decoder: 1.2.3
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+
string-hash@1.1.3: {}
string-length@4.0.2:
@@ -18592,6 +19347,8 @@ snapshots:
strnum@1.1.2: {}
+ strnum@2.1.2: {}
+
style-inject@0.3.0: {}
style-to-js@1.1.17:
@@ -18608,10 +19365,12 @@ snapshots:
postcss: 8.5.6
postcss-selector-parser: 6.1.2
+ styleq@0.1.3: {}
+
stylus@0.64.0:
dependencies:
'@adobe/css-tools': 4.3.3
- debug: 4.4.1
+ debug: 4.4.3
glob: 10.4.5
sax: 1.4.1
source-map: 0.7.6
@@ -18679,6 +19438,18 @@ snapshots:
tapable@2.3.0: {}
+ tar-fs@3.1.1:
+ dependencies:
+ pump: 3.0.3
+ tar-stream: 3.1.7
+ optionalDependencies:
+ bare-fs: 4.5.2
+ bare-path: 3.0.0
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - bare-buffer
+ - react-native-b4a
+
tar-stream@2.2.0:
dependencies:
bl: 4.1.0
@@ -18687,6 +19458,15 @@ snapshots:
inherits: 2.0.4
readable-stream: 3.6.2
+ tar-stream@3.1.7:
+ dependencies:
+ b4a: 1.7.3
+ fast-fifo: 1.3.2
+ streamx: 2.23.0
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - react-native-b4a
+
telnet-client@1.2.8:
dependencies:
bluebird: 3.7.2
@@ -18722,6 +19502,12 @@ snapshots:
glob: 10.4.5
minimatch: 9.0.5
+ text-decoder@1.2.3:
+ dependencies:
+ b4a: 1.7.3
+ transitivePeerDependencies:
+ - react-native-b4a
+
text-hex@1.0.0:
optional: true
@@ -18874,6 +19660,8 @@ snapshots:
type-fest@0.7.1: {}
+ type-fest@4.26.0: {}
+
type-is@1.6.18:
dependencies:
media-typer: 0.3.0
@@ -18931,6 +19719,8 @@ snapshots:
typescript@5.9.3: {}
+ ua-parser-js@1.0.41: {}
+
ufo@1.6.1: {}
unbox-primitive@1.1.0:
@@ -18942,6 +19732,8 @@ snapshots:
undici-types@6.21.0: {}
+ undici@6.22.0: {}
+
unhead@2.0.17:
dependencies:
hookable: 5.5.3
@@ -19063,6 +19855,8 @@ snapshots:
dependencies:
react: 19.1.1
+ userhome@1.0.1: {}
+
utf8-byte-length@1.0.5:
optional: true
@@ -19187,6 +19981,14 @@ snapshots:
dependencies:
xml-name-validator: 4.0.0
+ wait-port@1.1.0:
+ dependencies:
+ chalk: 4.1.2
+ commander: 9.5.0
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
walker@1.0.8:
dependencies:
makeerror: 1.0.12
@@ -19202,6 +20004,27 @@ snapshots:
web-namespaces@2.0.1: {}
+ webdriver@9.22.0:
+ dependencies:
+ '@types/node': 20.19.25
+ '@types/ws': 8.18.1
+ '@wdio/config': 9.22.0
+ '@wdio/logger': 9.18.0
+ '@wdio/protocols': 9.16.2
+ '@wdio/types': 9.20.0
+ '@wdio/utils': 9.22.0
+ deepmerge-ts: 7.1.5
+ https-proxy-agent: 7.0.6
+ undici: 6.22.0
+ ws: 8.18.2
+ transitivePeerDependencies:
+ - bare-abort-controller
+ - bare-buffer
+ - bufferutil
+ - react-native-b4a
+ - supports-color
+ - utf-8-validate
+
webidl-conversions@3.0.1: {}
webidl-conversions@7.0.0: {}
@@ -19309,6 +20132,10 @@ snapshots:
dependencies:
isexe: 2.0.0
+ which@6.0.0:
+ dependencies:
+ isexe: 3.1.1
+
why-is-node-running@2.3.0:
dependencies:
siginfo: 2.0.0
@@ -19431,6 +20258,11 @@ snapshots:
y18n: 5.0.8
yargs-parser: 21.1.1
+ yauzl@2.10.0:
+ dependencies:
+ buffer-crc32: 0.2.13
+ fd-slicer: 1.1.0
+
yn@3.1.1:
optional: true
diff --git a/tsconfig.json b/tsconfig.json
index a4d2764..0222c3d 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -48,6 +48,9 @@
{
"path": "./packages/platform-vega"
},
+ {
+ "path": "./packages/platform-web"
+ },
{
"path": "./packages/bundler-metro"
},