diff --git a/frameworks/react/workspace-platform-starter/.gitignore b/frameworks/react/workspace-platform-starter/.gitignore
new file mode 100644
index 0000000..0e4656e
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/.gitignore
@@ -0,0 +1,28 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+# Runtime files copied to public folder
+public/openfin
+public/common
diff --git a/frameworks/react/workspace-platform-starter/README.md b/frameworks/react/workspace-platform-starter/README.md
new file mode 100644
index 0000000..d77c785
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/README.md
@@ -0,0 +1,66 @@
+# React Wrapper for Workspace Platform Starter
+
+This project provides a React wrapper for the [workspace-platform-starter](https://github.com/built-on-openfin/workspace-starter/tree/main/how-to/workspace-platform-starter) for teams
+who prefer to use the build tooling available in the React ecosystem such as hot reloading.
+
+The workspace platform starter source files are for demonstration purposes and to help get started building your own project. Once the source is added to your project, consider it your
+source code to manage for your production build. Once initial setup is complete, you should review the features you need and turn off many of the modules in the manifest.fin.json, and
+remove many of the app endpoints listed in "appProvider" / "endpointIds".
+
+## Prerequsites
+
+Please follow the [getting started](https://resources.here.io/docs/core/develop/) guide to install the OpenFin RVM.
+
+## Copy workspace-platform-starter source files
+
+Manually add the original workspace-platform-starter source files into this project:
+
+Clone the main workspace-starter repo:
+
+```
+git clone https://github.com/built-on-openfin/workspace-starter.git --depth=1
+```
+
+Manually copy the following folders from the **how-to/workspace-platform-starter** directory:
+
+```
+client/src/framework
+client/src/modules
+public/common
+```
+
+And paste them into the **/openfin** folder in this project so that you have:
+
+```
+/openfin/common
+/openfin/framework
+/openfin/modules
+```
+
+### Develop
+
+```
+npm install
+npm start
+```
+
+Launch [fin://localhost:8080/manifest.fin.json](fin://localhost:8080/manifest.fin.json)
+
+### Build for production
+
+```
+npm install
+npm run build
+```
+
+The files to deploy will be in the `dist` folder
+
+### Preview production build
+
+```
+npm run preview
+```
+Launch [fin://localhost:8080/manifest.fin.json](fin://localhost:8080/manifest.fin.json)
+
+
+
diff --git a/frameworks/react/workspace-platform-starter/eslint.config.js b/frameworks/react/workspace-platform-starter/eslint.config.js
new file mode 100644
index 0000000..a8b75a3
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/eslint.config.js
@@ -0,0 +1,25 @@
+import js from "@eslint/js";
+import globals from "globals";
+import reactHooks from "eslint-plugin-react-hooks";
+import reactRefresh from "eslint-plugin-react-refresh";
+import tseslint from "typescript-eslint";
+
+export default tseslint.config(
+ { ignores: ["dist", "openfin/**", "public"] },
+ {
+ extends: [js.configs.recommended, ...tseslint.configs.recommended],
+ files: ["**/*.{ts,tsx}"],
+ languageOptions: {
+ ecmaVersion: 2020,
+ globals: globals.browser,
+ },
+ plugins: {
+ "react-hooks": reactHooks,
+ "react-refresh": reactRefresh,
+ },
+ rules: {
+ ...reactHooks.configs.recommended.rules,
+ "react-refresh/only-export-components": ["warn", { allowConstantExport: true }],
+ }
+ },
+);
diff --git a/frameworks/react/workspace-platform-starter/index.html b/frameworks/react/workspace-platform-starter/index.html
new file mode 100644
index 0000000..0cd3c67
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ OpenFin Workspace Platform Starter
+
+
+
+
+
+
diff --git a/frameworks/react/workspace-platform-starter/openfin/.eslintignore b/frameworks/react/workspace-platform-starter/openfin/.eslintignore
new file mode 100644
index 0000000..7352ff3
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/openfin/.eslintignore
@@ -0,0 +1,3 @@
+framework/
+modules/
+common/
diff --git a/frameworks/react/workspace-platform-starter/package-lock.json b/frameworks/react/workspace-platform-starter/package-lock.json
new file mode 100644
index 0000000..5078083
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/package-lock.json
@@ -0,0 +1,5177 @@
+{
+ "name": "workspace-platform-starter",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "workspace-platform-starter",
+ "version": "0.0.0",
+ "dependencies": {
+ "@finos/fdc3": "2.0.3",
+ "@openfin/cloud-interop": "0.41.131",
+ "@openfin/openid-connect": "^1.0.0",
+ "@openfin/snap-sdk": "1.3.0",
+ "@openfin/workspace": "21.0.12",
+ "@openfin/workspace-platform": "21.0.12",
+ "react": "^19.1.0",
+ "react-dom": "^19.1.0",
+ "react-router-dom": "^7.6.1"
+ },
+ "devDependencies": {
+ "@eslint/js": "^9.25.0",
+ "@openfin/core": "41.102.1",
+ "@openfin/node-adapter": "41.102.1",
+ "@rollup/plugin-commonjs": "^28.0.3",
+ "@rollup/plugin-node-resolve": "^16.0.1",
+ "@rollup/plugin-terser": "^0.4.4",
+ "@rollup/plugin-typescript": "^12.1.2",
+ "@types/react": "^19.1.2",
+ "@types/react-dom": "^19.1.2",
+ "@vitejs/plugin-react": "^4.4.1",
+ "eslint": "^9.25.0",
+ "eslint-plugin-react-hooks": "^5.2.0",
+ "eslint-plugin-react-refresh": "^0.4.19",
+ "globals": "^16.0.0",
+ "rollup-plugin-copy": "^3.5.0",
+ "typescript": "~5.8.3",
+ "typescript-eslint": "^8.30.1",
+ "vite": "^6.3.5",
+ "vite-plugin-static-copy": "^3.0.0"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
+ "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.3.tgz",
+ "integrity": "sha512-V42wFfx1ymFte+ecf6iXghnnP8kWTO+ZLXIyZq+1LAXHHvTZdVxicn4yiVYdYMGaCO3tmqub11AorKkv+iodqw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.3.tgz",
+ "integrity": "sha512-hyrN8ivxfvJ4i0fIJuV4EOlV0WDMz5Ui4StRTgVaAvWeiRCilXgwVvxJKtFQ3TKtHgJscB2YiXKGNJuVwhQMtA==",
+ "license": "MIT",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.27.3",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-module-transforms": "^7.27.3",
+ "@babel/helpers": "^7.27.3",
+ "@babel/parser": "^7.27.3",
+ "@babel/template": "^7.27.2",
+ "@babel/traverse": "^7.27.3",
+ "@babel/types": "^7.27.3",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.3.tgz",
+ "integrity": "sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.27.3",
+ "@babel/types": "^7.27.3",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
+ "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.27.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
+ "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.27.2",
+ "@babel/helper-validator-option": "^7.27.1",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
+ "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz",
+ "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/traverse": "^7.27.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
+ "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
+ "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.3.tgz",
+ "integrity": "sha512-h/eKy9agOya1IGuLaZ9tEUgz+uIRXcbtOhRtUyyMf8JFmn1iT13vnl/IGVWSkdOCG/pC57U4S1jnAabAavTMwg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.27.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.3.tgz",
+ "integrity": "sha512-xyYxRj6+tLNDTWi0KCBcZ9V7yg3/lwL9DWh9Uwh/RIVlIfFidggcgxKX3GCXwCiswwcGRawBKbEg2LG/Y8eJhw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.27.3"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz",
+ "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz",
+ "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz",
+ "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.3.tgz",
+ "integrity": "sha512-7EYtGezsdiDMyY80+65EzwiGmcJqpmcZCojSXaRgdrBaGtWTgDZKq69cPIVped6MkIM78cTQ2GOiEYjwOlG4xw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.27.2",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
+ "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/parser": "^7.27.2",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.3.tgz",
+ "integrity": "sha512-lId/IfN/Ye1CIu8xG7oKBHXd2iNb2aW1ilPszzGcJug6M8RCKfVNcYhpI5+bMvFYjK7lXIM0R+a+6r8xhHp2FQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@babel/generator": "^7.27.3",
+ "@babel/parser": "^7.27.3",
+ "@babel/template": "^7.27.2",
+ "@babel/types": "^7.27.3",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.3.tgz",
+ "integrity": "sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@emotion/is-prop-valid": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz",
+ "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==",
+ "license": "MIT",
+ "dependencies": {
+ "@emotion/memoize": "^0.9.0"
+ }
+ },
+ "node_modules/@emotion/memoize": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
+ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/stylis": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
+ "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==",
+ "license": "MIT"
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.7.5",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
+ "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==",
+ "license": "MIT"
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz",
+ "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz",
+ "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz",
+ "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz",
+ "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz",
+ "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz",
+ "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz",
+ "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz",
+ "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz",
+ "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz",
+ "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz",
+ "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz",
+ "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz",
+ "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz",
+ "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz",
+ "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz",
+ "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz",
+ "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz",
+ "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz",
+ "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz",
+ "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz",
+ "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz",
+ "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz",
+ "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz",
+ "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz",
+ "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
+ "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/config-array": {
+ "version": "0.20.0",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz",
+ "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/object-schema": "^2.1.6",
+ "debug": "^4.3.1",
+ "minimatch": "^3.1.2"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz",
+ "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/core": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz",
+ "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
+ "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz",
+ "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "9.27.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.27.0.tgz",
+ "integrity": "sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ }
+ },
+ "node_modules/@eslint/object-schema": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz",
+ "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz",
+ "integrity": "sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^0.14.0",
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ }
+ },
+ "node_modules/@finos/fdc3": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@finos/fdc3/-/fdc3-2.0.3.tgz",
+ "integrity": "sha512-sq+iGbjU6yRl7xHhp62nB1tV4biFaHZgUAInzPTJvzXWl9xjZMmXvvbeZW6WGZaCSvjQhJPSrmWs+4z2c73T+g==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/@humanfs/core": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+ "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node": {
+ "version": "0.16.6",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
+ "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+ "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
+ "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
+ "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/set-array": "^1.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz",
+ "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
+ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
+ "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@openfin/cloud-interop": {
+ "version": "0.41.131",
+ "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.41.131.tgz",
+ "integrity": "sha512-XWklv0tg1AVhTIKFjmpPbDSmYKvjvGO0aa3LZ8sg2kiQHl3TAx3k9k/yVpNW6wBHe9BEJQSMWR/6RJRDzTKkoA==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "@openfin/cloud-interop-core-api": "0.0.1-alpha.05c8c77"
+ },
+ "peerDependencies": {
+ "@openfin/core": "41.102.1"
+ }
+ },
+ "node_modules/@openfin/cloud-interop-core-api": {
+ "version": "0.0.1-alpha.05c8c77",
+ "resolved": "https://registry.npmjs.org/@openfin/cloud-interop-core-api/-/cloud-interop-core-api-0.0.1-alpha.05c8c77.tgz",
+ "integrity": "sha512-mKlAKrWZbaPWqBBZeOTfVi3uF52odeNpKCVXc6U18+VQIhYrmp/UuLrsJ/JuH7Yk3jyXI+nwa17vVlBNY1pIQQ==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "mqtt": "^5.3.1",
+ "zod": "^3.24.1"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-linux-x64-gnu": "*"
+ }
+ },
+ "node_modules/@openfin/core": {
+ "version": "41.102.1",
+ "resolved": "https://registry.npmjs.org/@openfin/core/-/core-41.102.1.tgz",
+ "integrity": "sha512-O07+UkqX+PRHYZS4vDEf3parPSyi0Rb/adOLbObhDWEKsb6Ms6nhvrYjGSp/STbQ/PzfWGav5IPk/wHkGZ0pjQ==",
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "@types/node": "^20.14.2",
+ "events": "^3.0.0",
+ "lodash": "^4.17.21",
+ "ws": "^7.3.0"
+ }
+ },
+ "node_modules/@openfin/microsoft365": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@openfin/microsoft365/-/microsoft365-1.0.1.tgz",
+ "integrity": "sha512-mCueBhfLYEDkoQr8bkPhSFPnjMEatcfjuJAYoCT/0bO9g+8vl+Oc65wiDOTfo4soJlN0Qamb9jgShYkGIsyiLg==",
+ "license": "SEE LICENSE IN LICENSE.MD",
+ "dependencies": {
+ "@finos/fdc3": "^1.2.0",
+ "lodash": "^4.17.21",
+ "lzutf8": "^0.6.3"
+ }
+ },
+ "node_modules/@openfin/microsoft365/node_modules/@finos/fdc3": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@finos/fdc3/-/fdc3-1.2.0.tgz",
+ "integrity": "sha512-im/vqpS96qsCKMPkwR/Fg2t2FQtwh+/LOvTekIY0eYyuz/CZQoqhwcxwk/Re0pqJiA3inisV7DSfQ1JYLi+bxw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@openfin/node-adapter": {
+ "version": "41.102.1",
+ "resolved": "https://registry.npmjs.org/@openfin/node-adapter/-/node-adapter-41.102.1.tgz",
+ "integrity": "sha512-pxvl9jA/96GMiAHv69zWEr7Ozq73xB6ggoZipkllumnHokqCfuLCuyagVlylZrI9lwE27Hbyd6bbEIFsN5oFjA==",
+ "dev": true,
+ "license": "SEE LICENSE IN LICENSE.md",
+ "dependencies": {
+ "@openfin/core": "41.102.1",
+ "@types/node": "^20.14.2",
+ "lodash": "^4.17.21",
+ "ws": "^7.3.0"
+ }
+ },
+ "node_modules/@openfin/openid-connect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@openfin/openid-connect/-/openid-connect-1.0.0.tgz",
+ "integrity": "sha512-OnqootwLHjfb4YkZBwlflsg9TeDF8rHma5cf9jsNUWvuwEbP9+Y53641OFiCxaGH0erKQ13OflL/SA7QqdndYw==",
+ "license": "SEE LICENSE IN LICENSE.MD",
+ "dependencies": {
+ "jose": "^4.14.4"
+ }
+ },
+ "node_modules/@openfin/snap-sdk": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@openfin/snap-sdk/-/snap-sdk-1.3.0.tgz",
+ "integrity": "sha512-ZOAnm0YuDNRgkXA67sdXAywJNxU+RFn1Fdh0jwZGPBDeySTZol2kh2g9oVVWxteHyZFdQzrSKIssm4XTV3joiw==",
+ "license": "SEE LICENSE IN LICENSE.MD",
+ "dependencies": {
+ "@openfin/core": "^41.100.117",
+ "events": "^3.3.0"
+ }
+ },
+ "node_modules/@openfin/workspace": {
+ "version": "21.0.12",
+ "resolved": "https://registry.npmjs.org/@openfin/workspace/-/workspace-21.0.12.tgz",
+ "integrity": "sha512-nt5rWLZxOFH3rGrIxW4/PL4JR4SuHMpUPEuSYOH4rwc2pt3DfkYNWtyc2LL/oalMJsC5M9zhQiLx7FFSkZuQgw==",
+ "license": "SEE LICENSE IN LICENSE.MD",
+ "dependencies": {
+ "@openfin/microsoft365": "^1.0.1",
+ "i18next": "^23.7.16",
+ "idb-keyval": "^6.2.0",
+ "lodash.debounce": "^4.0.8",
+ "openfin-notifications": "2.11.0-alpha-3997",
+ "react-i18next": "^14.0.0",
+ "title-case": "3.0.3"
+ },
+ "peerDependencies": {
+ "@openfin/core": "41.102.1"
+ }
+ },
+ "node_modules/@openfin/workspace-platform": {
+ "version": "21.0.12",
+ "resolved": "https://registry.npmjs.org/@openfin/workspace-platform/-/workspace-platform-21.0.12.tgz",
+ "integrity": "sha512-JKbCXrGqi1dTNG53kLW31OXKCqOnH9ze3omyPJEO2M7jewBfOR/5ZHcoiBBwMI/UHYDN+Go19sXnlNMX7TDISg==",
+ "license": "SEE LICENSE IN LICENSE.MD",
+ "dependencies": {
+ "i18next": "^23.7.16",
+ "idb-keyval": "^6.2.0",
+ "lodash.debounce": "^4.0.8",
+ "react-i18next": "^14.0.0"
+ },
+ "peerDependencies": {
+ "@openfin/core": "41.102.1"
+ }
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.0-beta.9",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.9.tgz",
+ "integrity": "sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@rollup/plugin-commonjs": {
+ "version": "28.0.3",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.3.tgz",
+ "integrity": "sha512-pyltgilam1QPdn+Zd9gaCfOLcnjMEJ9gV+bTw6/r73INdvzf1ah9zLIJBm+kW7R6IUFIQ1YO+VqZtYxZNWFPEQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@rollup/pluginutils": "^5.0.1",
+ "commondir": "^1.0.1",
+ "estree-walker": "^2.0.2",
+ "fdir": "^6.2.0",
+ "is-reference": "1.2.1",
+ "magic-string": "^0.30.3",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=16.0.0 || 14 >= 14.17"
+ },
+ "peerDependencies": {
+ "rollup": "^2.68.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/plugin-commonjs/node_modules/fdir": {
+ "version": "6.4.5",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz",
+ "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/plugin-commonjs/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/@rollup/plugin-node-resolve": {
+ "version": "16.0.1",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.1.tgz",
+ "integrity": "sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@rollup/pluginutils": "^5.0.1",
+ "@types/resolve": "1.20.2",
+ "deepmerge": "^4.2.2",
+ "is-module": "^1.0.0",
+ "resolve": "^1.22.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.78.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/plugin-terser": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz",
+ "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "serialize-javascript": "^6.0.1",
+ "smob": "^1.0.0",
+ "terser": "^5.17.4"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/plugin-typescript": {
+ "version": "12.1.2",
+ "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.1.2.tgz",
+ "integrity": "sha512-cdtSp154H5sv637uMr1a8OTWB0L1SWDSm1rDGiyfcGcvQ6cuTs4MDk2BVEBGysUWago4OJN4EQZqOTl/QY3Jgg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@rollup/pluginutils": "^5.1.0",
+ "resolve": "^1.22.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^2.14.0||^3.0.0||^4.0.0",
+ "tslib": "*",
+ "typescript": ">=3.7.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ },
+ "tslib": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz",
+ "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/pluginutils/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz",
+ "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz",
+ "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz",
+ "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz",
+ "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz",
+ "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz",
+ "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz",
+ "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz",
+ "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz",
+ "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz",
+ "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz",
+ "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz",
+ "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz",
+ "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz",
+ "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz",
+ "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz",
+ "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz",
+ "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz",
+ "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz",
+ "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz",
+ "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
+ "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.20.7",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz",
+ "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
+ "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/fs-extra": {
+ "version": "8.1.5",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.5.tgz",
+ "integrity": "sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/minimatch": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
+ "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "20.17.52",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.52.tgz",
+ "integrity": "sha512-2aj++KfxubvW/Lc0YyXE3OEW7Es8TWn1MsRzYgcOGyTNQxi0L8rxQUCZ7ZbyOBWZQD5I63PV9egZWMsapVaklg==",
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.19.2"
+ }
+ },
+ "node_modules/@types/react": {
+ "version": "19.1.6",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.6.tgz",
+ "integrity": "sha512-JeG0rEWak0N6Itr6QUx+X60uQmN+5t3j9r/OVDtWzFXKaj6kD1BwJzOksD0FF6iWxZlbE1kB0q9vtnU2ekqa1Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "csstype": "^3.0.2"
+ }
+ },
+ "node_modules/@types/react-dom": {
+ "version": "19.1.5",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.5.tgz",
+ "integrity": "sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "^19.0.0"
+ }
+ },
+ "node_modules/@types/readable-stream": {
+ "version": "4.0.20",
+ "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.20.tgz",
+ "integrity": "sha512-eLgbR5KwUh8+6pngBDxS32MymdCsCHnGtwHTrC0GDorbc7NbcnkZAWptDLgZiRk9VRas+B6TyRgPDucq4zRs8g==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/resolve": {
+ "version": "1.20.2",
+ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
+ "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "8.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.0.tgz",
+ "integrity": "sha512-CACyQuqSHt7ma3Ns601xykeBK/rDeZa3w6IS6UtMQbixO5DWy+8TilKkviGDH6jtWCo8FGRKEK5cLLkPvEammQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "8.33.0",
+ "@typescript-eslint/type-utils": "8.33.0",
+ "@typescript-eslint/utils": "8.33.0",
+ "@typescript-eslint/visitor-keys": "8.33.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^7.0.0",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^8.33.0",
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz",
+ "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "8.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.33.0.tgz",
+ "integrity": "sha512-JaehZvf6m0yqYp34+RVnihBAChkqeH+tqqhS0GuX1qgPpwLvmTPheKEs6OeCK6hVJgXZHJ2vbjnC9j119auStQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "8.33.0",
+ "@typescript-eslint/types": "8.33.0",
+ "@typescript-eslint/typescript-estree": "8.33.0",
+ "@typescript-eslint/visitor-keys": "8.33.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/project-service": {
+ "version": "8.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.0.tgz",
+ "integrity": "sha512-d1hz0u9l6N+u/gcrk6s6gYdl7/+pp8yHheRTqP6X5hVDKALEaTn8WfGiit7G511yueBEL3OpOEpD+3/MBdoN+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/tsconfig-utils": "^8.33.0",
+ "@typescript-eslint/types": "^8.33.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "8.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.33.0.tgz",
+ "integrity": "sha512-LMi/oqrzpqxyO72ltP+dBSP6V0xiUb4saY7WLtxSfiNEBI8m321LLVFU9/QDJxjDQG9/tjSqKz/E3380TEqSTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.33.0",
+ "@typescript-eslint/visitor-keys": "8.33.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/tsconfig-utils": {
+ "version": "8.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.0.tgz",
+ "integrity": "sha512-sTkETlbqhEoiFmGr1gsdq5HyVbSOF0145SYDJ/EQmXHtKViCaGvnyLqWFFHtEXoS0J1yU8Wyou2UGmgW88fEug==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "8.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.33.0.tgz",
+ "integrity": "sha512-lScnHNCBqL1QayuSrWeqAL5GmqNdVUQAAMTaCwdYEdWfIrSrOGzyLGRCHXcCixa5NK6i5l0AfSO2oBSjCjf4XQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "8.33.0",
+ "@typescript-eslint/utils": "8.33.0",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.0.tgz",
+ "integrity": "sha512-DKuXOKpM5IDT1FA2g9x9x1Ug81YuKrzf4mYX8FAVSNu5Wo/LELHWQyM1pQaDkI42bX15PWl0vNPt1uGiIFUOpg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.0.tgz",
+ "integrity": "sha512-vegY4FQoB6jL97Tu/lWRsAiUUp8qJTqzAmENH2k59SJhw0Th1oszb9Idq/FyyONLuNqT1OADJPXfyUNOR8SzAQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/project-service": "8.33.0",
+ "@typescript-eslint/tsconfig-utils": "8.33.0",
+ "@typescript-eslint/types": "8.33.0",
+ "@typescript-eslint/visitor-keys": "8.33.0",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.3.2",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^2.1.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.33.0.tgz",
+ "integrity": "sha512-lPFuQaLA9aSNa7D5u2EpRiqdAUhzShwGg/nhpBlc4GR6kcTABttCuyjFs8BcEZ8VWrjCBof/bePhP3Q3fS+Yrw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.7.0",
+ "@typescript-eslint/scope-manager": "8.33.0",
+ "@typescript-eslint/types": "8.33.0",
+ "@typescript-eslint/typescript-estree": "8.33.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.33.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.0.tgz",
+ "integrity": "sha512-7RW7CMYoskiz5OOGAWjJFxgb7c5UNjTG292gYhWeOAcFmYCtVCSqjqSBj5zMhxbXo2JOW95YYrUWJfU0zrpaGQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.33.0",
+ "eslint-visitor-keys": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@vitejs/plugin-react": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.5.0.tgz",
+ "integrity": "sha512-JuLWaEqypaJmOJPLWwO335Ig6jSgC1FTONCWAxnqcQthLTK/Yc9aH6hr9z/87xciejbQcnP3GnA1FWUSWeXaeg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.26.10",
+ "@babel/plugin-transform-react-jsx-self": "^7.25.9",
+ "@babel/plugin-transform-react-jsx-source": "^7.25.9",
+ "@rolldown/pluginutils": "1.0.0-beta.9",
+ "@types/babel__core": "^7.20.5",
+ "react-refresh": "^0.17.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0"
+ }
+ },
+ "node_modules/abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "license": "MIT",
+ "dependencies": {
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.14.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
+ "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true,
+ "license": "Python-2.0"
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-plugin-styled-components": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz",
+ "integrity": "sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/plugin-syntax-jsx": "^7.22.5",
+ "lodash": "^4.17.21",
+ "picomatch": "^2.3.1"
+ },
+ "peerDependencies": {
+ "styled-components": ">= 2"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bl": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-6.1.0.tgz",
+ "integrity": "sha512-ClDyJGQkc8ZtzdAAbAwBmhMSpwN/sC9HA8jxdYm6nVUbCfZbe2mgza4qh7AuEYyEPB/c4Kznf9s66bnsKMQDjw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/readable-stream": "^4.0.0",
+ "buffer": "^6.0.3",
+ "inherits": "^2.0.4",
+ "readable-stream": "^4.2.0"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.25.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz",
+ "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001718",
+ "electron-to-chromium": "^1.5.160",
+ "node-releases": "^2.0.19",
+ "update-browserslist-db": "^1.1.3"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "license": "MIT"
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelize": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
+ "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001720",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001720.tgz",
+ "integrity": "sha512-Ec/2yV2nNPwb4DnTANEV99ZWwm3ZWfdlfkQbWSDDt+PsXEVYwlhPH8tdMaPunYTKKmz7AnHi2oNEi1GcmKCD8g==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/colorette": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz",
+ "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/commist": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/commist/-/commist-3.2.0.tgz",
+ "integrity": "sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw==",
+ "license": "MIT"
+ },
+ "node_modules/commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/concat-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
+ "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
+ "engines": [
+ "node >= 6.0"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.0.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "node_modules/concat-stream/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "license": "MIT"
+ },
+ "node_modules/cookie": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
+ "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css-color-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
+ "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/css-to-react-native": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
+ "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "camelize": "^1.0.0",
+ "css-color-keywords": "^1.0.0",
+ "postcss-value-parser": "^4.0.2"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/debug": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.161",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.161.tgz",
+ "integrity": "sha512-hwtetwfKNZo/UlwHIVBlKZVdy7o8bIZxxKs0Mv/ROPiQQQmDgdm5a+KvKtBsxM8ZjFzTaCeLoodZ8jiBE3o9rA==",
+ "license": "ISC"
+ },
+ "node_modules/esbuild": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz",
+ "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.5",
+ "@esbuild/android-arm": "0.25.5",
+ "@esbuild/android-arm64": "0.25.5",
+ "@esbuild/android-x64": "0.25.5",
+ "@esbuild/darwin-arm64": "0.25.5",
+ "@esbuild/darwin-x64": "0.25.5",
+ "@esbuild/freebsd-arm64": "0.25.5",
+ "@esbuild/freebsd-x64": "0.25.5",
+ "@esbuild/linux-arm": "0.25.5",
+ "@esbuild/linux-arm64": "0.25.5",
+ "@esbuild/linux-ia32": "0.25.5",
+ "@esbuild/linux-loong64": "0.25.5",
+ "@esbuild/linux-mips64el": "0.25.5",
+ "@esbuild/linux-ppc64": "0.25.5",
+ "@esbuild/linux-riscv64": "0.25.5",
+ "@esbuild/linux-s390x": "0.25.5",
+ "@esbuild/linux-x64": "0.25.5",
+ "@esbuild/netbsd-arm64": "0.25.5",
+ "@esbuild/netbsd-x64": "0.25.5",
+ "@esbuild/openbsd-arm64": "0.25.5",
+ "@esbuild/openbsd-x64": "0.25.5",
+ "@esbuild/sunos-x64": "0.25.5",
+ "@esbuild/win32-arm64": "0.25.5",
+ "@esbuild/win32-ia32": "0.25.5",
+ "@esbuild/win32-x64": "0.25.5"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "9.27.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.27.0.tgz",
+ "integrity": "sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.12.1",
+ "@eslint/config-array": "^0.20.0",
+ "@eslint/config-helpers": "^0.2.1",
+ "@eslint/core": "^0.14.0",
+ "@eslint/eslintrc": "^3.3.1",
+ "@eslint/js": "9.27.0",
+ "@eslint/plugin-kit": "^0.3.1",
+ "@humanfs/node": "^0.16.6",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@humanwhocodes/retry": "^0.4.2",
+ "@types/estree": "^1.0.6",
+ "@types/json-schema": "^7.0.15",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "debug": "^4.3.2",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^8.3.0",
+ "eslint-visitor-keys": "^4.2.0",
+ "espree": "^10.3.0",
+ "esquery": "^1.5.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^8.0.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz",
+ "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-react-refresh": {
+ "version": "0.4.20",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz",
+ "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "eslint": ">=8.40"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz",
+ "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+ "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/espree": {
+ "version": "10.3.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
+ "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "acorn": "^8.14.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^4.2.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-unique-numbers": {
+ "version": "8.0.13",
+ "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-8.0.13.tgz",
+ "integrity": "sha512-7OnTFAVPefgw2eBJ1xj2PGGR9FwYzSUso9decayHgCDX4sJkHLdcsYTytTg+tYv+wKF3U8gJuSBz2jJpQV4u/g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.23.8",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=16.1.0"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
+ "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flat-cache": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
+ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/fs-extra": {
+ "version": "11.3.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
+ "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz",
+ "integrity": "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globby": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz",
+ "integrity": "sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/glob": "^7.1.1",
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.0.3",
+ "glob": "^7.1.3",
+ "ignore": "^5.1.1",
+ "merge2": "^1.2.3",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/help-me": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz",
+ "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==",
+ "license": "MIT"
+ },
+ "node_modules/hoist-non-react-statics": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
+ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "react-is": "^16.7.0"
+ }
+ },
+ "node_modules/hoist-non-react-statics/node_modules/react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
+ "license": "MIT"
+ },
+ "node_modules/html-parse-stringify": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz",
+ "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==",
+ "license": "MIT",
+ "dependencies": {
+ "void-elements": "3.1.0"
+ }
+ },
+ "node_modules/i18next": {
+ "version": "23.16.8",
+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.8.tgz",
+ "integrity": "sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://locize.com"
+ },
+ {
+ "type": "individual",
+ "url": "https://locize.com/i18next.html"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.23.2"
+ }
+ },
+ "node_modules/idb-keyval": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.2.tgz",
+ "integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "license": "ISC"
+ },
+ "node_modules/ip-address": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
+ "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+ "license": "MIT",
+ "dependencies": {
+ "jsbn": "1.1.0",
+ "sprintf-js": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-module": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
+ "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz",
+ "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-reference": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
+ "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/jose": {
+ "version": "4.15.9",
+ "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz",
+ "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/panva"
+ }
+ },
+ "node_modules/js-sdsl": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz",
+ "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/js-sdsl"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsbn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
+ "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
+ "license": "MIT"
+ },
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "license": "MIT"
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/lzutf8": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/lzutf8/-/lzutf8-0.6.3.tgz",
+ "integrity": "sha512-CAkF9HKrM+XpB0f3DepQ2to2iUEo0zrbh+XgBqgNBc1+k8HMM3u/YSfHI3Dr4GmoTIez2Pr/If1XFl3rU26AwA==",
+ "license": "MIT",
+ "dependencies": {
+ "readable-stream": "^4.0.0"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.17",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
+ "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0"
+ }
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/mqtt": {
+ "version": "5.13.0",
+ "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.13.0.tgz",
+ "integrity": "sha512-pR+z+ChxFl3n8AKLQbTONVOOg/jl4KiKQRBAi78tjd6PksOWvl1nl9L8ZHOZ3MiavZfrUOjok2ddwc1VymGWRg==",
+ "license": "MIT",
+ "dependencies": {
+ "commist": "^3.2.0",
+ "concat-stream": "^2.0.0",
+ "debug": "^4.4.0",
+ "help-me": "^5.0.0",
+ "lru-cache": "^10.4.3",
+ "minimist": "^1.2.8",
+ "mqtt-packet": "^9.0.2",
+ "number-allocator": "^1.0.14",
+ "readable-stream": "^4.7.0",
+ "rfdc": "^1.4.1",
+ "socks": "^2.8.3",
+ "split2": "^4.2.0",
+ "worker-timers": "^7.1.8",
+ "ws": "^8.18.0"
+ },
+ "bin": {
+ "mqtt": "build/bin/mqtt.js",
+ "mqtt_pub": "build/bin/pub.js",
+ "mqtt_sub": "build/bin/sub.js"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/mqtt-packet": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-9.0.2.tgz",
+ "integrity": "sha512-MvIY0B8/qjq7bKxdN1eD+nrljoeaai+qjLJgfRn3TiMuz0pamsIWY2bFODPZMSNmabsLANXsLl4EMoWvlaTZWA==",
+ "license": "MIT",
+ "dependencies": {
+ "bl": "^6.0.8",
+ "debug": "^4.3.4",
+ "process-nextick-args": "^2.0.1"
+ }
+ },
+ "node_modules/mqtt/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "license": "ISC"
+ },
+ "node_modules/mqtt/node_modules/ws": {
+ "version": "8.18.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz",
+ "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.11",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.19",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
+ "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
+ "license": "MIT"
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/number-allocator": {
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz",
+ "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.3.1",
+ "js-sdsl": "4.3.0"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/openfin-notifications": {
+ "version": "2.11.0-alpha-3997",
+ "resolved": "https://registry.npmjs.org/openfin-notifications/-/openfin-notifications-2.11.0-alpha-3997.tgz",
+ "integrity": "sha512-BIxCdQjhTX0DYSEa7+qnvrYjn7rhzU4w5Ja5ZWx2UaO2ydQjO/VJDzTnff65MOEa1SZczPlKrGXgR9HPqBiY5Q==",
+ "license": "SEE LICENSE IN LICENSE.MD",
+ "dependencies": {
+ "openfin-service-async": "^1.0.1",
+ "openfin-service-signal": "^1.0.0",
+ "react": "^18.3.1",
+ "semver-compare": "^1.0.0",
+ "styled-components": "^5.3.11"
+ },
+ "peerDependencies": {
+ "@openfin/core": "41.102.1"
+ }
+ },
+ "node_modules/openfin-notifications/node_modules/react": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/openfin-service-async": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/openfin-service-async/-/openfin-service-async-1.0.1.tgz",
+ "integrity": "sha512-kbIdcyfnOYaCg6+iFueX5HpbJ6FDv1FHjNb1dkld0IY2gI+Y163NVE1/GUoagije/PmAkwqFEkwKv4Mg9+Gl9g==",
+ "license": "ISC",
+ "peerDependencies": {
+ "openfin-service-signal": "^1.0.0"
+ }
+ },
+ "node_modules/openfin-service-signal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/openfin-service-signal/-/openfin-service-signal-1.0.0.tgz",
+ "integrity": "sha512-X9fptYE3f5e9tQsU0pdVR3vojYglqBKB+rPJ6h8uC1VFs4mVSMBa+hyHLtIiQf+s7G9gDxsnXm61N3igP5Ipqw==",
+ "license": "ISC"
+ },
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-map": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz",
+ "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.3",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
+ "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.8",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "license": "MIT"
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "license": "MIT"
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/react": {
+ "version": "19.1.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz",
+ "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "19.1.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz",
+ "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==",
+ "license": "MIT",
+ "dependencies": {
+ "scheduler": "^0.26.0"
+ },
+ "peerDependencies": {
+ "react": "^19.1.0"
+ }
+ },
+ "node_modules/react-i18next": {
+ "version": "14.1.3",
+ "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.1.3.tgz",
+ "integrity": "sha512-wZnpfunU6UIAiJ+bxwOiTmBOAaB14ha97MjOEnLGac2RJ+h/maIYXZuTHlmyqQVX1UVHmU1YDTQ5vxLmwfXTjw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.23.9",
+ "html-parse-stringify": "^3.0.1"
+ },
+ "peerDependencies": {
+ "i18next": ">= 23.2.3",
+ "react": ">= 16.8.0"
+ },
+ "peerDependenciesMeta": {
+ "react-dom": {
+ "optional": true
+ },
+ "react-native": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-is": {
+ "version": "19.1.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.0.tgz",
+ "integrity": "sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/react-refresh": {
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
+ "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-router": {
+ "version": "7.6.1",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.1.tgz",
+ "integrity": "sha512-hPJXXxHJZEsPFNVbtATH7+MMX43UDeOauz+EAU4cgqTn7ojdI9qQORqS8Z0qmDlL1TclO/6jLRYUEtbWidtdHQ==",
+ "license": "MIT",
+ "dependencies": {
+ "cookie": "^1.0.1",
+ "set-cookie-parser": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=18",
+ "react-dom": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-router-dom": {
+ "version": "7.6.1",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.1.tgz",
+ "integrity": "sha512-vxU7ei//UfPYQ3iZvHuO1D/5fX3/JOqhNTbRR+WjSBWxf9bIvpWK+ftjmdfJHzPOuMQKe2fiEdG+dZX6E8uUpA==",
+ "license": "MIT",
+ "dependencies": {
+ "react-router": "7.6.1"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz",
+ "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==",
+ "license": "MIT",
+ "dependencies": {
+ "abort-controller": "^3.0.0",
+ "buffer": "^6.0.3",
+ "events": "^3.3.0",
+ "process": "^0.11.10",
+ "string_decoder": "^1.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.10",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+ "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.16.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rfdc": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
+ "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",
+ "license": "MIT"
+ },
+ "node_modules/rollup": {
+ "version": "4.41.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz",
+ "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "1.0.7"
+ },
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=18.0.0",
+ "npm": ">=8.0.0"
+ },
+ "optionalDependencies": {
+ "@rollup/rollup-android-arm-eabi": "4.41.1",
+ "@rollup/rollup-android-arm64": "4.41.1",
+ "@rollup/rollup-darwin-arm64": "4.41.1",
+ "@rollup/rollup-darwin-x64": "4.41.1",
+ "@rollup/rollup-freebsd-arm64": "4.41.1",
+ "@rollup/rollup-freebsd-x64": "4.41.1",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.41.1",
+ "@rollup/rollup-linux-arm-musleabihf": "4.41.1",
+ "@rollup/rollup-linux-arm64-gnu": "4.41.1",
+ "@rollup/rollup-linux-arm64-musl": "4.41.1",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.41.1",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1",
+ "@rollup/rollup-linux-riscv64-gnu": "4.41.1",
+ "@rollup/rollup-linux-riscv64-musl": "4.41.1",
+ "@rollup/rollup-linux-s390x-gnu": "4.41.1",
+ "@rollup/rollup-linux-x64-gnu": "4.41.1",
+ "@rollup/rollup-linux-x64-musl": "4.41.1",
+ "@rollup/rollup-win32-arm64-msvc": "4.41.1",
+ "@rollup/rollup-win32-ia32-msvc": "4.41.1",
+ "@rollup/rollup-win32-x64-msvc": "4.41.1",
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/rollup-plugin-copy": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.5.0.tgz",
+ "integrity": "sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/fs-extra": "^8.0.1",
+ "colorette": "^1.1.0",
+ "fs-extra": "^8.1.0",
+ "globby": "10.0.1",
+ "is-plain-object": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8.3"
+ }
+ },
+ "node_modules/rollup-plugin-copy/node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/rollup-plugin-copy/node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "dev": true,
+ "license": "MIT",
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/rollup-plugin-copy/node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/scheduler": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz",
+ "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==",
+ "license": "MIT"
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/semver-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+ "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==",
+ "license": "MIT"
+ },
+ "node_modules/serialize-javascript": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
+ "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/set-cookie-parser": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
+ "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==",
+ "license": "MIT"
+ },
+ "node_modules/shallowequal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
+ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==",
+ "license": "MIT"
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/smob": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz",
+ "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/socks": {
+ "version": "2.8.4",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz",
+ "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ip-address": "^9.0.5",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/split2": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">= 10.x"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+ "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/styled-components": {
+ "version": "5.3.11",
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.11.tgz",
+ "integrity": "sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/traverse": "^7.4.5",
+ "@emotion/is-prop-valid": "^1.1.0",
+ "@emotion/stylis": "^0.8.4",
+ "@emotion/unitless": "^0.7.4",
+ "babel-plugin-styled-components": ">= 1.12.0",
+ "css-to-react-native": "^3.0.0",
+ "hoist-non-react-statics": "^3.0.0",
+ "shallowequal": "^1.1.0",
+ "supports-color": "^5.5.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/styled-components"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8.0",
+ "react-dom": ">= 16.8.0",
+ "react-is": ">= 16.8.0"
+ }
+ },
+ "node_modules/styled-components/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/styled-components/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.40.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.40.0.tgz",
+ "integrity": "sha512-cfeKl/jjwSR5ar7d0FGmave9hFGJT8obyo0z+CrQOylLDbk7X81nPU6vq9VORa5jU30SkDnT2FXjLbR8HLP+xA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.14.0",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/tinyglobby": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
+ "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fdir": "^6.4.4",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/SuperchupuDev"
+ }
+ },
+ "node_modules/tinyglobby/node_modules/fdir": {
+ "version": "6.4.5",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz",
+ "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tinyglobby/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/title-case": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz",
+ "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/ts-api-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
+ "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.12"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+ "license": "MIT"
+ },
+ "node_modules/typescript": {
+ "version": "5.8.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/typescript-eslint": {
+ "version": "8.33.0",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.33.0.tgz",
+ "integrity": "sha512-5YmNhF24ylCsvdNW2oJwMzTbaeO4bg90KeGtMjUw0AGtHksgEPLRTUil+coHwCfiu4QjVJFnjp94DmU6zV7DhQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "8.33.0",
+ "@typescript-eslint/parser": "8.33.0",
+ "@typescript-eslint/utils": "8.33.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <5.9.0"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+ "license": "MIT"
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
+ "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "license": "MIT"
+ },
+ "node_modules/vite": {
+ "version": "6.3.5",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz",
+ "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "^0.25.0",
+ "fdir": "^6.4.4",
+ "picomatch": "^4.0.2",
+ "postcss": "^8.5.3",
+ "rollup": "^4.34.9",
+ "tinyglobby": "^0.2.13"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+ "jiti": ">=1.21.0",
+ "less": "*",
+ "lightningcss": "^1.21.0",
+ "sass": "*",
+ "sass-embedded": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-plugin-static-copy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-3.0.0.tgz",
+ "integrity": "sha512-Uki9pPUQ4ZnoMEdIFabvoh9h6Bh9Q1m3iF7BrZvoiF30reREpJh2gZb4jOnW1/uYFzyRiLCmFSkM+8hwiq1vWQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": "^3.5.3",
+ "fs-extra": "^11.3.0",
+ "p-map": "^7.0.3",
+ "picocolors": "^1.1.1",
+ "tinyglobby": "^0.2.13"
+ },
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^5.0.0 || ^6.0.0"
+ }
+ },
+ "node_modules/vite/node_modules/fdir": {
+ "version": "6.4.5",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz",
+ "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite/node_modules/picomatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+ "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/void-elements": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
+ "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/worker-timers": {
+ "version": "7.1.8",
+ "resolved": "https://registry.npmjs.org/worker-timers/-/worker-timers-7.1.8.tgz",
+ "integrity": "sha512-R54psRKYVLuzff7c1OTFcq/4Hue5Vlz4bFtNEIarpSiCYhpifHU3aIQI29S84o1j87ePCYqbmEJPqwBTf+3sfw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.24.5",
+ "tslib": "^2.6.2",
+ "worker-timers-broker": "^6.1.8",
+ "worker-timers-worker": "^7.0.71"
+ }
+ },
+ "node_modules/worker-timers-broker": {
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/worker-timers-broker/-/worker-timers-broker-6.1.8.tgz",
+ "integrity": "sha512-FUCJu9jlK3A8WqLTKXM9E6kAmI/dR1vAJ8dHYLMisLNB/n3GuaFIjJ7pn16ZcD1zCOf7P6H62lWIEBi+yz/zQQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.24.5",
+ "fast-unique-numbers": "^8.0.13",
+ "tslib": "^2.6.2",
+ "worker-timers-worker": "^7.0.71"
+ }
+ },
+ "node_modules/worker-timers-worker": {
+ "version": "7.0.71",
+ "resolved": "https://registry.npmjs.org/worker-timers-worker/-/worker-timers-worker-7.0.71.tgz",
+ "integrity": "sha512-ks/5YKwZsto1c2vmljroppOKCivB/ma97g9y77MAAz2TBBjPPgpoOiS1qYQKIgvGTr2QYPT3XhJWIB6Rj2MVPQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.24.5",
+ "tslib": "^2.6.2"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/ws": {
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "license": "ISC"
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zod": {
+ "version": "3.25.34",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.34.tgz",
+ "integrity": "sha512-lZHvSc2PpWdcfpHlyB33HA9nqP16GpC9IpiG4lYq9jZCJVLZNnWd6Y1cj79bcLSBKTkxepfpjckPv5Y5VOPlwA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ }
+ }
+}
diff --git a/frameworks/react/workspace-platform-starter/package.json b/frameworks/react/workspace-platform-starter/package.json
new file mode 100644
index 0000000..124ee20
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/package.json
@@ -0,0 +1,47 @@
+{
+ "name": "workspace-platform-starter",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "prestart": "npm run build:openfin",
+ "dev": "vite",
+ "start": "npm run dev",
+ "build": "tsc -b && npm run build:openfin && vite build",
+ "build:openfin": "rollup -c rollup.config.mjs",
+ "lint": "eslint .",
+ "preview": "vite preview --port 8080"
+ },
+ "dependencies": {
+ "@finos/fdc3": "2.0.3",
+ "@openfin/cloud-interop": "0.41.131",
+ "@openfin/openid-connect": "^1.0.0",
+ "@openfin/snap-sdk": "1.3.0",
+ "@openfin/workspace": "21.0.12",
+ "@openfin/workspace-platform": "21.0.12",
+ "react": "^19.1.0",
+ "react-dom": "^19.1.0",
+ "react-router-dom": "^7.6.1"
+ },
+ "devDependencies": {
+ "@eslint/js": "^9.25.0",
+ "@openfin/core": "41.102.1",
+ "@openfin/node-adapter": "41.102.1",
+ "@rollup/plugin-commonjs": "^28.0.3",
+ "@rollup/plugin-node-resolve": "^16.0.1",
+ "@rollup/plugin-terser": "^0.4.4",
+ "@rollup/plugin-typescript": "^12.1.2",
+ "@types/react": "^19.1.2",
+ "@types/react-dom": "^19.1.2",
+ "@vitejs/plugin-react": "^4.4.1",
+ "eslint": "^9.25.0",
+ "eslint-plugin-react-hooks": "^5.2.0",
+ "eslint-plugin-react-refresh": "^0.4.19",
+ "globals": "^16.0.0",
+ "rollup-plugin-copy": "^3.5.0",
+ "typescript": "~5.8.3",
+ "typescript-eslint": "^8.30.1",
+ "vite": "^6.3.5",
+ "vite-plugin-static-copy": "^3.0.0"
+ }
+}
diff --git a/frameworks/react/workspace-platform-starter/public/app.css b/frameworks/react/workspace-platform-starter/public/app.css
new file mode 100644
index 0000000..cf6a78d
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/public/app.css
@@ -0,0 +1,945 @@
+@import url('https://fonts.googleapis.com/css2?family=Inter&display=swap');
+
+:root {
+ --brand-background: var(--theme-background-primary, #1e1f23);
+ --brand-border: var(--theme-background4, #2f3136);
+ --brand-primary: var(--theme-brand-primary, #0a76d3);
+ --brand-text: var(--theme-text-default, #ffffff);
+ --brand-text-secondary: var(--theme-text-help, #c9cbd2);
+ --brand-input-background: var(--theme-background5, #383a40);
+ --brand-input-border: var(--theme-background6, #53565f);
+ --brand-input-border-highlight: var(--theme-input-focused, #c9cbd2);
+ --brand-table-header: var(--theme-background1, #111214);
+ --brand-table-header-text: var(--theme-text-default, #ffffff);
+ --brand-table-row-even: var(--theme-background3, #24262b);
+ --brand-table-row-odd: var(--theme-background4, #2f3136);
+ --brand-error: var(--theme-status-critical, #be1d1f);
+ --brand-success: var(--theme-status-success, #35c759);
+
+ accent-color: var(--brand-primary);
+}
+
+.theme-light {
+ --brand-background: var(--theme-background-primary, #fafbfe);
+ --brand-border: var(--theme-background4, #eceef1);
+ --brand-primary: var(--theme-brand-primary, #0a76d3);
+ --brand-text: var(--theme-text-default, #111214);
+ --brand-text-secondary: var(--theme-text-help, #2f3136);
+ --brand-input-background: var(--theme-background5, #dddfe4);
+ --brand-input-border: var(--theme-background6, #c9cbd2);
+ --brand-input-border-highlight: var(--theme-input-focused, #c9cbd2);
+ --brand-table-header: var(--theme-background1, #ffffff);
+ --brand-table-header-text: var(--theme-text-default, #111214);
+ --brand-table-row-even: var(--theme-background3, #eceef1);
+ --brand-table-row-odd: var(--theme-background4, #c9cbd2);
+ --brand-error: var(--theme-status-critical, #be1d1f);
+ --brand-success: var(--theme-status-success, #35c759);
+}
+
+.primary {
+ color: var(--brand-primary);
+}
+
+.error {
+ color: var(--brand-error);
+}
+
+.success {
+ color: var(--brand-success);
+}
+
+::selection {
+ background-color: var(--brand-primary);
+}
+
+* {
+ font-family: Inter, 'Sans Serif', sans-serif;
+ box-sizing: border-box;
+}
+
+html,
+body {
+ height: 100%;
+}
+
+body {
+ display: flex;
+ justify-content: stretch;
+ align-items: stretch;
+ overflow: hidden;
+ padding: 20px;
+ margin: 0;
+ background-color: var(--brand-background);
+ color: var(--brand-text);
+}
+
+body.border {
+ padding: 20px;
+ margin: 0;
+ background-color: var(--brand-background);
+ color: var(--brand-text);
+ border: 1px solid #000000;
+ border-radius: 5px;
+ width: 100%;
+ height: 100%;
+}
+
+body.border-light {
+ border-color: var(--brand-input-border-highlight);
+}
+
+body.small {
+ padding: 15px;
+}
+
+h1 {
+ font-size: 24px;
+ font-weight: 700;
+ line-height: 1;
+ margin-block-start: 0;
+ margin-block-end: 0;
+}
+h1.tag {
+ font-size: 12px;
+ font-weight: normal;
+ margin-top: 5px;
+ color: var(--brand-text-secondary);
+}
+
+h2 {
+ font-size: 20px;
+ font-weight: 700;
+ line-height: 1;
+ margin-block-start: 0;
+ margin-block-end: 0;
+}
+
+h3 {
+ font-size: 16px;
+ font-weight: 700;
+ line-height: 1;
+ margin-block-start: 0;
+ margin-block-end: 0;
+}
+
+h4 {
+ font-size: 14px;
+ font-weight: 700;
+ line-height: 1;
+ margin-block-start: 0;
+ margin-block-end: 0;
+}
+
+h5 {
+ font-size: 12px;
+ font-weight: 700;
+ line-height: 1;
+ margin-block-start: 0;
+ margin-block-end: 0;
+}
+
+p {
+ color: var(--brand-text-secondary);
+ font-size: 12px;
+ margin-block-start: 0;
+ margin-block-end: 0;
+}
+
+::-webkit-scrollbar {
+ width: 8px;
+ height: 8px;
+}
+::-webkit-scrollbar-track {
+ background: var(--brand-input-background);
+ border-radius: 5px;
+}
+::-webkit-scrollbar-thumb {
+ background: var(--brand-border);
+ border-radius: 5px;
+ border: 1px solid var(--brand-input-border);
+}
+::-webkit-scrollbar-thumb:hover {
+ border: 1px solid var(--brand-input-border-highlight);
+}
+
+main {
+ min-height: 100px;
+}
+
+a {
+ color: var(--brand-primary);
+ font-size: 12px;
+ font-weight: bold;
+ outline: none;
+ text-decoration: none;
+}
+
+a:hover,
+a:focus {
+ text-decoration: underline;
+}
+
+button,
+input[type='button'],
+::-webkit-file-upload-button,
+a.button,
+footer a {
+ background-color: var(--brand-primary);
+ border: 2px solid var(--brand-primary);
+ color: #ffffff;
+ border-radius: 5px;
+ padding: 8px 20px;
+ text-align: left;
+ cursor: pointer;
+ font-size: 12px;
+ font-weight: bold;
+ text-decoration: none;
+ outline: 0;
+ white-space: nowrap;
+ transition-property: background-color, color, opacity;
+ transition-duration: 200ms;
+ transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
+}
+
+a.button:hover,
+footer a:hover {
+ text-decoration: none;
+}
+
+a.button:focus,
+a.button:hover,
+input[type='button']:focus,
+input[type='button']:hover,
+input[type='file']:focus::-webkit-file-upload-button,
+input[type='file']:hover::-webkit-file-upload-button,
+::-webkit-file-upload-button:hover,
+footer a:focus,
+footer a:not(:disabled):hover,
+button:not(:disabled):focus,
+button:not(:disabled):hover {
+ background-image: linear-gradient(rgba(255, 255, 255, 0.1) 0 0);
+}
+
+button.image {
+ width: 40px;
+ height: 40px;
+ padding: 0px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+button.image > img {
+ width: 32px;
+ height: 32px;
+}
+button.secondary {
+ background-color: var(--brand-input-background);
+ color: var(--brand-text);
+ border-color: var(--brand-input-border);
+}
+button.secondary:not(:disabled):hover {
+ background-color: var(--brand-input-background);
+}
+button.plain {
+ border-color: transparent;
+ background-color: transparent;
+ color: var(--brand-primary);
+}
+button.plain:not(:disabled):not(:read-only):hover {
+ border-color: transparent;
+ background-color: transparent;
+}
+
+button.small,
+a.button.small,
+::-webkit-file-upload-button,
+td button {
+ padding: 5px 10px;
+ font-size: 10px;
+}
+td button.plain {
+ width: auto;
+ height: auto;
+}
+
+button.center {
+ text-align: center;
+}
+
+::-webkit-file-upload-button {
+ margin-right: 10px;
+}
+
+pre {
+ margin: 0;
+ padding: 5px;
+ border-radius: 5px;
+ font-size: 12px;
+ font-family: 'Courier New', Courier, monospace;
+ white-space: pre-wrap;
+ border: 1px solid var(--brand-input-border);
+ background-color: var(--brand-input-background);
+ width: 100%;
+ min-height: 20px;
+}
+
+header {
+ padding-bottom: 10px;
+ border-bottom: 2px solid var(--brand-border);
+}
+
+footer {
+ padding-top: 10px;
+ border-top: 1px solid var(--brand-border);
+}
+
+fieldset {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ border: 0;
+ padding: 0;
+ font-size: 12px;
+ gap: 5px;
+}
+
+fieldset.row {
+ flex-direction: row;
+ align-items: center;
+ gap: 10px;
+}
+
+label {
+ font-size: 12px;
+ font-weight: 600;
+}
+
+select,
+input[type='text'],
+input[type='url'],
+input[type='email'],
+input[type='password'],
+input[type='file'],
+input[type='number'],
+input[type='date'],
+input[type='time'],
+input[type='datetime-local'],
+input[type='month'],
+input[type='week'],
+input[type='color'],
+textarea {
+ border-radius: 5px;
+ border: 1px solid var(--brand-input-border);
+ background-color: var(--brand-input-background);
+ font-size: 12px;
+ outline: 0;
+ color: var(--brand-text);
+ width: 50%;
+ min-width: 200px;
+ padding: 8px 12px;
+ box-shadow: rgb(0 0 0 / 25%) 0px 4px 4px;
+ transition-property: background-color, color, opacity;
+ transition-duration: 200ms;
+ transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
+}
+
+textarea {
+ min-height: 64px;
+ resize: none;
+}
+
+textarea.resizable {
+ resize: both;
+}
+
+select.full,
+input[type='text'].full,
+input[type='email'].full,
+input[type='url'].full,
+input[type='password'].full,
+input[type='file'].full,
+input[type='number'].full,
+input[type='date'].full,
+input[type='time'].full,
+input[type='datetime-local'].full,
+input[type='month'].full,
+input[type='week'].full,
+input[type='range'].full,
+textarea.full {
+ width: 95%;
+}
+
+select:focus,
+select:not(:disabled):hover,
+input[type='text']:not(:read-only):focus,
+input[type='text']:not(:disabled):not(:read-only):hover,
+input[type='email']:not(:read-only):focus,
+input[type='email']:not(:disabled):not(:read-only):hover,
+input[type='url']:not(:read-only):focus,
+input[type='url']:not(:disabled):not(:read-only):hover,
+input[type='password']:not(:read-only):focus,
+input[type='password']:not(:disabled):not(:read-only):hover,
+input[type='file']:not(:read-only):focus,
+input[type='file']:not(:disabled):not(:read-only):hover,
+input[type='number']:not(:read-only):focus,
+input[type='number']:not(:disabled):not(:read-only):hover,
+input[type='date']:not(:read-only):focus,
+input[type='date']:not(:disabled):not(:read-only):hover,
+input[type='time']:not(:read-only):focus,
+input[type='time']:not(:disabled):not(:read-only):hover,
+input[type='datetime-local']:not(:read-only):focus,
+input[type='datetime-local']:not(:disabled):not(:read-only):hover,
+input[type='month']:not(:read-only):focus,
+input[type='month']:not(:disabled):not(:read-only):hover,
+input[type='week']:not(:read-only):focus,
+input[type='week']:not(:disabled):not(:read-only):hover,
+textarea:not(:read-only):focus,
+textarea:not(:disabled):not(:read-only):hover,
+input[type='checkbox']:focus,
+input[type='checkbox']:not(:disabled):hover,
+input[type='radio']:focus,
+input[type='radio']:not(:disabled):hover,
+input[type='color']:focus,
+input[type='color']:not(:disabled):hover {
+ border-color: var(--brand-input-border-highlight);
+}
+
+input[type='date'],
+input[type='time'],
+input[type='datetime-local'],
+input[type='month'],
+input[type='week'] {
+ width: 200px;
+ min-width: auto;
+}
+
+::-webkit-calendar-picker-indicator,
+.theme-dark ::-webkit-calendar-picker-indicator {
+ filter: invert(1);
+}
+
+.theme-light ::-webkit-calendar-picker-indicator {
+ filter: invert(0);
+}
+
+::-webkit-datetime-edit-day-field:focus,
+::-webkit-datetime-edit-month-field:focus,
+::-webkit-datetime-edit-year-field:focus,
+::-webkit-datetime-edit-hour-field:focus,
+::-webkit-datetime-edit-minute-field:focus,
+::-webkit-datetime-edit-week-field:focus {
+ background-color: var(--brand-primary);
+ color: #ffffff;
+}
+
+::-webkit-outer-spin-button,
+::-webkit-inner-spin-button {
+ -webkit-appearance: none;
+ margin: 0;
+}
+
+input[type='file'] {
+ padding: 4px 12px;
+}
+
+select {
+ appearance: none;
+}
+
+select:not([multiple]):not(:disabled) {
+ appearance: none;
+ background-image: url("data:image/svg+xml;utf8, ");
+ background-repeat: no-repeat;
+ background-size: 12px;
+ background-position: calc(100% - 12px) 12px;
+ background-color: var(--brand-input-background);
+}
+
+.theme-light select:not([multiple]):not(:disabled) {
+ background-image: url("data:image/svg+xml;utf8, ");
+}
+
+select.small {
+ padding: 4px 8px;
+ font-size: 10px;
+}
+
+select.small:not([multiple]):not(:disabled) {
+ background-size: 8px;
+ background-position: calc(100% - 8px) 8px;
+}
+
+option {
+ color: var(--brand-text);
+ padding: 6px;
+ margin-bottom: 1px;
+}
+
+option:hover {
+ background: var(--brand-input-border)
+ linear-gradient(0deg, var(--brand-input-border) 0%, var(--brand-input-border) 100%);
+ border-radius: 5px;
+}
+
+option:checked {
+ background: var(--brand-primary) linear-gradient(0deg, var(--brand-primary) 0%, var(--brand-primary) 100%);
+ color: #ffffff;
+ border-radius: 5px;
+}
+
+input[type='range'] {
+ -webkit-appearance: none;
+ height: 20px;
+ width: 200px;
+ background: transparent;
+ outline: none;
+}
+
+input[type='range']::-webkit-slider-runnable-track {
+ -webkit-appearance: none;
+ height: 10px;
+ border: 1px solid var(--brand-input-border);
+ background-color: var(--brand-input-background);
+ border-radius: 5px;
+ box-shadow: rgb(0 0 0 / 25%) 0px 4px 4px;
+ transition-property: background-color, color, opacity;
+ transition-duration: 200ms;
+ transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
+}
+
+input[type='range']::-webkit-slider-thumb {
+ -webkit-appearance: none;
+ height: 20px;
+ width: 20px;
+ border-radius: 5px;
+ margin-top: -6px;
+ border: 1px solid var(--brand-input-border);
+ background: var(--brand-input-background);
+ cursor: pointer;
+ box-shadow: rgb(0 0 0 / 25%) 0px 4px 4px;
+ transition-property: background-color, color, opacity;
+ transition-duration: 200ms;
+ transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
+}
+
+input[type='range']:hover::-webkit-slider-runnable-track,
+input[type='range']:focus::-webkit-slider-runnable-track,
+input[type='range']:hover::-webkit-slider-thumb,
+input[type='range']:focus::-webkit-slider-thumb {
+ border-color: var(--brand-input-border-highlight);
+}
+
+button:disabled,
+select:disabled,
+input:disabled,
+textarea:disabled,
+footer a:disabled,
+a[disabled] {
+ opacity: 0.3;
+ cursor: default;
+ pointer-events: none;
+ resize: none;
+}
+
+select:invalid,
+input:invalid,
+textarea:invalid {
+ border-color: var(--brand-error);
+}
+
+fieldset > span {
+ margin-left: 10px;
+ width: 50px;
+}
+
+input[type='text'].large,
+input[type='password'].large,
+input[type='file'].large,
+input[type='email'].large,
+input[type='url'].large,
+input[type='date'].large,
+input[type='time'].large {
+ font-size: 20px;
+ padding: 20px 10px;
+}
+
+input[type='text'].center,
+input[type='password'].center,
+input[type='email'].center,
+input[type='url'].center {
+ text-align: center;
+}
+
+input[type='checkbox'],
+input[type='radio'] {
+ appearance: none;
+ border: 1px solid var(--brand-input-border);
+ background-color: var(--brand-input-background);
+ color: var(--brand-input-text);
+ outline: 0;
+ width: 20px;
+ height: 20px;
+ margin: 2px;
+ box-shadow: rgb(0 0 0 / 25%) 0px 4px 4px;
+ transition-property: background-color, color, opacity;
+ transition-duration: 200ms;
+ transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
+}
+
+input[type='radio'] {
+ border-radius: 50%;
+}
+
+input[type='checkbox']::before,
+input[type='radio']::before {
+ content: '';
+ display: none;
+ width: 16px;
+ height: 16px;
+ margin: 1px;
+ background-color: var(--brand-text);
+ opacity: 0.8;
+}
+
+input[type='checkbox']:checked::before {
+ display: inline-block;
+ clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
+}
+input[type='radio']:checked::before {
+ display: inline-block;
+ clip-path: circle(35% at 52% 50%);
+}
+
+input[type='checkbox'] + label,
+input[type='radio'] + label {
+ white-space: nowrap;
+}
+
+input[type='color'] {
+ width: 100px;
+ min-width: auto;
+ padding: 5px;
+}
+
+input[type='color']::-webkit-color-swatch-wrapper {
+ padding: 0;
+ background: transparent;
+}
+
+input[type='color']::-webkit-color-swatch {
+ border-radius: 5px;
+ border: none;
+}
+
+/* This disables the auto zoom on iDevices */
+@supports (-webkit-touch-callout: none) {
+ select,
+ input[type='text'],
+ input[type='url'],
+ input[type='email'],
+ input[type='password'],
+ input[type='file'],
+ input[type='number'],
+ input[type='date'],
+ input[type='time'],
+ input[type='datetime-local'],
+ input[type='month'],
+ input[type='week'],
+ input[type='color'],
+ textarea {
+ font-size: 16px;
+ }
+}
+
+hr {
+ width: 100%;
+ border: 0;
+ border-bottom: 1px solid var(--brand-input-border);
+}
+
+ul {
+ font-size: 12px;
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+ list-style-type: none;
+}
+
+li {
+ font-size: 12px;
+ position: relative;
+ padding: 0 0 10px;
+}
+
+li::before {
+ content: ' ';
+ display: inline-block;
+ background-color: var(--brand-primary);
+ width: 8px;
+ height: 8px;
+ border-radius: 2px;
+ position: absolute;
+ left: -13px;
+ top: 3px;
+}
+
+em {
+ font-size: 12px;
+}
+
+.row {
+ display: flex;
+ flex-direction: row;
+}
+
+.col {
+ display: flex;
+ flex-direction: column;
+}
+
+.fill {
+ flex: 1;
+}
+
+.fill_2 {
+ flex: 2;
+}
+
+.scroll {
+ overflow: auto;
+}
+
+.scroll-vertical {
+ overflow-y: auto;
+}
+
+.scroll-horizontal {
+ overflow-x: auto;
+}
+
+.overflow-hidden {
+ overflow: hidden;
+}
+
+.middle {
+ align-items: center;
+}
+
+.bottom {
+ align-items: flex-end;
+}
+
+.spread {
+ justify-content: space-between;
+}
+
+.around {
+ justify-content: space-around;
+}
+
+.left {
+ display: flex;
+ align-items: flex-start;
+}
+
+.center {
+ display: flex;
+ justify-content: center;
+}
+
+.right {
+ display: flex;
+ justify-content: flex-end;
+}
+
+.wrap {
+ flex-wrap: wrap;
+}
+
+.gap5 {
+ gap: 5px;
+}
+
+.gap10 {
+ gap: 10px;
+}
+
+.gap20 {
+ gap: 20px;
+}
+
+.gap40 {
+ gap: 40px;
+}
+
+.pad10 {
+ padding: 10px;
+}
+
+.pad20 {
+ padding: 20px;
+}
+
+.pad0 {
+ padding: 0px;
+}
+
+.table {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ font-size: 10px;
+}
+
+table {
+ width: 100%;
+ font-size: 10px;
+ border: 0;
+ border-collapse: collapse;
+}
+
+table,
+.table {
+ border: var(--brand-input-border) 1px solid;
+}
+
+.table-row {
+ display: flex;
+ flex: 1;
+ flex-direction: row;
+}
+
+table > tr:first-child,
+thead > tr,
+.table-row.header {
+ background-color: var(--brand-table-header);
+}
+
+table > tr:nth-child(even),
+.table > div:nth-child(even),
+tbody > tr:nth-child(odd) {
+ background-color: var(--brand-table-row-even);
+}
+
+table > tr:nth-child(odd),
+.table > div:not(:first-child):nth-child(odd),
+tbody > tr:nth-child(even) {
+ background-color: var(--brand-table-row-odd);
+}
+
+th,
+.table-row.header > div {
+ color: var(--brand-table-header-text);
+ font-weight: bold;
+ padding: 10px 5px;
+ text-align: left;
+ word-break: break-word;
+}
+
+.table-row > div {
+ flex: 1;
+}
+
+td,
+.table-row:not(.header) > div {
+ padding: 5px;
+ word-break: break-word;
+ color: var(--brand-text);
+}
+
+.table-row:not(.header) > div {
+ display: flex;
+ align-items: center;
+}
+
+@media screen and (max-width: 736px) {
+ .table-row {
+ flex-direction: column;
+ }
+
+ .table-row.header {
+ display: none;
+ }
+
+ .table-row:not(.header) > div {
+ display: flex;
+ align-items: center;
+ flex: 1;
+ gap: 10px;
+ }
+
+ .table-row:not(.header) > div:before {
+ content: attr(data-name);
+ font-weight: bold;
+ white-space: nowrap;
+ width: 20%;
+ }
+
+ .table-row > div.right {
+ justify-content: flex-start;
+ }
+
+ .table-row > div.center {
+ justify-content: flex-start;
+ }
+}
+
+.border {
+ border: 1px solid var(--brand-input-border);
+ border-radius: 5px;
+}
+
+.drag {
+ user-select: none;
+ -webkit-app-region: drag;
+}
+
+.no-drag {
+ -webkit-app-region: none;
+}
+
+.form {
+ background-color: var(--brand-table-header);
+ border: var(--brand-input-border) 1px solid;
+ border-radius: 5px;
+ padding: 10px;
+ font-size: 12px;
+}
+
+.form-group {
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+ background-color: var(--brand-table-header);
+ border: var(--brand-input-border) 1px solid;
+ border-radius: 5px;
+ padding: 10px;
+}
+
+.form-group.large {
+ gap: 20px;
+}
+
+.width-full {
+ width: 100%;
+}
+
+.max-width-full {
+ max-width: 100%;
+}
+
+.width-responsive {
+ max-width: fit-content;
+}
+
+.hidden {
+ display: none;
+}
+
+.pointer {
+ cursor: pointer;
+}
+
+.nowrap {
+ white-space: nowrap;
+}
diff --git a/frameworks/react/workspace-platform-starter/public/apps.json b/frameworks/react/workspace-platform-starter/public/apps.json
new file mode 100644
index 0000000..9064428
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/public/apps.json
@@ -0,0 +1,34 @@
+[
+ {
+ "appId": "view-1",
+ "name": "view-1",
+ "title": "React View 1",
+ "description": "Example local React app",
+ "manifest": {
+ "name": "view-1",
+ "url": "http://localhost:8080/view1",
+ "autoShow": false
+ },
+ "manifestType": "inline-view",
+ "icons": [{ "src": "http://localhost:8080/favicon.png" }],
+ "contactEmail": "contact@example.com",
+ "supportEmail": "support@example.com",
+ "publisher": "OpenFin"
+ },
+ {
+ "appId": "view-2",
+ "name": "view-2",
+ "title": "React View 2",
+ "description": "Example local React app",
+ "manifest": {
+ "name": "view-2",
+ "url": "http://localhost:8080/view2",
+ "autoShow": false
+ },
+ "manifestType": "inline-view",
+ "icons": [{ "src": "http://localhost:8080/favicon.png" }],
+ "contactEmail": "contact@example.com",
+ "supportEmail": "support@example.com",
+ "publisher": "OpenFin"
+ }
+]
diff --git a/frameworks/react/workspace-platform-starter/public/favicon.ico b/frameworks/react/workspace-platform-starter/public/favicon.ico
new file mode 100644
index 0000000..694af5a
Binary files /dev/null and b/frameworks/react/workspace-platform-starter/public/favicon.ico differ
diff --git a/frameworks/react/workspace-platform-starter/public/favicon.png b/frameworks/react/workspace-platform-starter/public/favicon.png
new file mode 100644
index 0000000..2518a1f
Binary files /dev/null and b/frameworks/react/workspace-platform-starter/public/favicon.png differ
diff --git a/frameworks/react/workspace-platform-starter/public/manifest.fin.json b/frameworks/react/workspace-platform-starter/public/manifest.fin.json
new file mode 100644
index 0000000..7ac548a
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/public/manifest.fin.json
@@ -0,0 +1,2046 @@
+{
+ "devtools_port": 9090,
+ "licenseKey": "openfin-demo-license-key",
+ "runtime": {
+ "arguments": "",
+ "version": "41.134.102.1"
+ },
+ "platform": {
+ "name": "Workspace Platform Starter React Wrapper",
+ "uuid": "workspace-platform-starter-react-wrapper",
+ "icon": "http://localhost:8080/favicon.png",
+ "autoShow": true,
+ "providerUrl": "http://localhost:8080",
+ "preventQuitOnLastWindowClosed": true,
+ "appLogsTimezone": "utc",
+ "enableAppLogging": false,
+ "enableBeforeUnload": true,
+ "logManagement": {
+ "enabled": false
+ },
+ "permissions": {
+ "System": {
+ "launchExternalProcess": true,
+ "terminateExternalProcess": true,
+ "downloadAsset": true,
+ "serveAsset": true,
+ "openUrlWithBrowser": {
+ "enabled": true,
+ "protocols": [
+ "mailto",
+ "msteams",
+ "tel"
+ ]
+ }
+ }
+ },
+ "defaultWindowOptions": {
+ "permissions": {
+ "System": {
+ "openUrlWithBrowser": {
+ "enabled": true,
+ "protocols": [
+ "mailto",
+ "msteams",
+ "tel"
+ ]
+ }
+ }
+ },
+ "viewVisibility": {
+ "showViewsOnTabDrag": {
+ "enabled": true
+ },
+ "showViewsOnSplitterDrag": {
+ "enabled": true
+ },
+ "showViewsOnWindowResize": {
+ "enabled": true
+ }
+ }
+ },
+ "defaultViewOptions": {
+ "permissions": {
+ "System": {
+ "openUrlWithBrowser": {
+ "enabled": true,
+ "protocols": [
+ "mailto",
+ "msteams",
+ "tel"
+ ]
+ }
+ }
+ }
+ },
+ "interopBrokerConfiguration": {
+ "logging": {
+ "beforeAction": {
+ "enabled": true
+ },
+ "afterAction": {
+ "enabled": true
+ }
+ }
+ }
+ },
+ "shortcut": {
+ "company": "OpenFin",
+ "description": "A way of showing examples of what OpenFin can do.",
+ "icon": "http://localhost:8080/favicon.ico",
+ "name": "Workspace Platform Starter - v21.0.0",
+ "target": [
+ "desktop",
+ "start-menu"
+ ]
+ },
+ "supportInformation": {
+ "company": "OpenFin",
+ "product": "Workspace Starter - Workspace Platform Starter - Client",
+ "email": "support@openfin.co",
+ "forwardErrorReports": true
+ },
+ "snapshot": {
+ "windows": []
+ },
+ "appAssets": [
+ {
+ "src": "http://localhost:8080/common/assets/workspace_platform.zip",
+ "alias": "self-hosted-workspace-platform",
+ "version": "21.0.0",
+ "target": "workspace.asar"
+ }
+ ],
+ "customSettings": {
+ "bootstrap": {
+ "home": true,
+ "store": true,
+ "dock": true,
+ "notifications": true,
+ "autoShow": [
+ "dock",
+ "home"
+ ]
+ },
+ "splashScreenProvider": {
+ "url": "http://localhost:8080/splash.html"
+ },
+ "platformProvider": {
+ "rootUrl": "http://localhost:8080",
+ "language": {
+ "initialLanguage": "en-US"
+ },
+ "modules": [
+ {
+ "id": "default-wps-platform",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Workspace Platform Starter Platform Override",
+ "description": "This is the implementation included in workspace platform starter but it is now exposed as a module to allow for easy replacement.",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/platform-override/wps-platform-override.bundle.js",
+ "data": {
+ "loggerName": "WpsPlatformOverride"
+ }
+ }
+ ],
+ "interop": {
+ "intentResolver": {
+ "url": "http://localhost:8080/common/windows/intents/instance-picker.html",
+ "height": 715,
+ "width": 665,
+ "fdc3InteropApi": "2.0"
+ },
+ "intentOptions": {},
+ "openOptions": {},
+ "contextOptions": {},
+ "getInfoOptions": {
+ "includeAppInteropInfo": true,
+ "includeAllAppMetadataInfo": false
+ },
+ "unregisteredApp": {
+ "appId": "unregistered",
+ "title": "Other",
+ "description": "If you can not find an application to support your action please check the instances associated with this entry to see if it satisfies your need.",
+ "icons": [
+ {
+ "src": "http://localhost:8080/favicon.ico"
+ }
+ ],
+ "publisher": "Multiple",
+ "intents": [
+ {
+ "name": "StartCall",
+ "displayName": "Start a Call",
+ "contexts": [
+ "fdc3.contact",
+ "fdc3.contactList"
+ ]
+ },
+ {
+ "name": "StartChat",
+ "displayName": "Start a Chat",
+ "contexts": [
+ "fdc3.contact",
+ "fdc3.contactList"
+ ]
+ },
+ {
+ "name": "ViewChart",
+ "displayName": "View Chart",
+ "contexts": [
+ "fdc3.instrument",
+ "fdc3.instrumentList",
+ "fdc3.portfolio",
+ "fdc3.position"
+ ]
+ },
+ {
+ "name": "ViewContact",
+ "displayName": "View Contact Details",
+ "contexts": [
+ "fdc3.contact"
+ ]
+ },
+ {
+ "name": "ViewProfile",
+ "displayName": "View Profile",
+ "contexts": [
+ "fdc3.contact"
+ ]
+ },
+ {
+ "name": "ViewQuote",
+ "displayName": "View Quote",
+ "contexts": [
+ "fdc3.instrument"
+ ]
+ },
+ {
+ "name": "ViewNews",
+ "displayName": "View News",
+ "contexts": [
+ "fdc3.country",
+ "fdc3.instrument",
+ "fdc3.instrumentList",
+ "fdc3.organization",
+ "fdc3.portfolio"
+ ]
+ },
+ {
+ "name": "ViewAnalysis",
+ "displayName": "View Analysis",
+ "contexts": [
+ "fdc3.instrument",
+ "fdc3.organization",
+ "fdc3.portfolio"
+ ]
+ },
+ {
+ "name": "ViewInstrument",
+ "displayName": "View Instrument Details",
+ "contexts": [
+ "fdc3.instrument"
+ ]
+ }
+ ]
+ },
+ "modules": [
+ {
+ "id": "openfin-cloud-interop",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "OpenFin Cloud Interop",
+ "description": "OpenFin Cloud Interop",
+ "enabled": false,
+ "url": "http://localhost:8080/openfin/js/modules/interop-override/openfin-cloud-interop.bundle.js",
+ "data": {
+ "authenticationType": "basic",
+ "basicAuthenticationParameters": {
+ "username": "",
+ "password": ""
+ },
+ "platformId": "",
+ "url": "",
+ "sourceDisplayName": "",
+ "sourceId": ""
+ }
+ },
+ {
+ "id": "default-wps-interop",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Workspace Platform Starter Interop Broker",
+ "description": "This is the implementation included in workspace platform starter but it is now exposed as a module to allow for easy replacement.",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/interop-override/wps-interop-override.bundle.js",
+ "data": {
+ "loggerName": "WpsInteropOverride"
+ }
+ }
+ ]
+ },
+ "workspaceAsar": {
+ "enabled": false,
+ "alias": "self-hosted-workspace-platform"
+ }
+ },
+ "appProvider": {
+ "endpointIds": [
+ "http://localhost:8080/apps.json",
+ "http://localhost:8080/common/apps-contact.json",
+ "http://localhost:8080/common/apps.json",
+ "http://localhost:8080/common/apps-interop.json",
+ "http://localhost:8080/common/apps-manager.json",
+ "http://localhost:8080/common/apps-native.json",
+ "http://localhost:8080/common/apps-dev-extensions.json",
+ "http://localhost:8080/common/apps-preload.json",
+ "http://localhost:8080/common/apps-tools.json",
+ "http://localhost:8080/common/apps-fdc3-1-2.json",
+ "http://localhost:8080/common/apps-fdc3-2-0.json",
+ "http://localhost:8080/common/apps-module.json"
+ ],
+ "cacheDurationInSeconds": 10,
+ "cacheDurationInMinutes": 0,
+ "manifestTypes": [
+ "view",
+ "inline-view",
+ "window",
+ "inline-window",
+ "snapshot",
+ "inline-snapshot",
+ "external",
+ "inline-external",
+ "appasset",
+ "inline-appasset",
+ "manifest",
+ "desktop-browser",
+ "connection",
+ "endpoint"
+ ],
+ "updatableLaunchPreference": [
+ {
+ "name": "bounds"
+ }
+ ]
+ },
+ "endpointProvider": {
+ "modules": [
+ {
+ "title": "Local Storage",
+ "enabled": true,
+ "id": "local-storage",
+ "url": "http://localhost:8080/openfin/js/modules/endpoint/local-storage.bundle.js"
+ },
+ {
+ "title": "Favorite Local Storage",
+ "enabled": true,
+ "id": "favorite-local-storage",
+ "url": "http://localhost:8080/openfin/js/modules/endpoint/favorite-local-storage.bundle.js"
+ },
+ {
+ "title": "Context Processor",
+ "enabled": true,
+ "id": "context-processor",
+ "url": "http://localhost:8080/openfin/js/modules/endpoint/example.context.processor.bundle.js"
+ },
+ {
+ "id": "example-notification-source",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Example Notification Source",
+ "description": "Example Notification Source. Please see docs in client/src/modules/endpoint/example-notification-source/README.md",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/endpoint/example-notification-source.bundle.js",
+ "data": {
+ "websocket": {
+ "url": ""
+ },
+ "longpoll": {
+ "url": "",
+ "intervalInSeconds": 5
+ },
+ "post": {
+ "url": ""
+ },
+ "notifyOn": {
+ "pageChanged": false,
+ "workspaceChanged": false,
+ "appsChanged": false,
+ "themeChanged": false,
+ "favoriteChanged": false
+ }
+ }
+ }
+ ],
+ "endpoints": [
+ {
+ "id": "share-get",
+ "type": "fetch",
+ "options": {
+ "method": "GET",
+ "url": "https://workspace.openfin.co/api/share/[id]"
+ }
+ },
+ {
+ "id": "share-set",
+ "type": "fetch",
+ "options": {
+ "method": "POST",
+ "url": "https://workspace.openfin.co/api/share"
+ }
+ },
+ {
+ "id": "integration-preferences-get",
+ "type": "module",
+ "typeId": "local-storage",
+ "options": {
+ "method": "GET",
+ "dataType": "integration-preferences"
+ }
+ },
+ {
+ "id": "integration-preferences-set",
+ "type": "module",
+ "typeId": "local-storage",
+ "options": {
+ "method": "SET",
+ "dataType": "integration-preferences"
+ }
+ },
+ {
+ "id": "interopbroker.process.org.dayofinterest",
+ "type": "module",
+ "typeId": "context-processor",
+ "options": {
+ "logContext": true,
+ "logProcessedContext": true
+ }
+ },
+ {
+ "id": "favorite-list",
+ "type": "module",
+ "typeId": "favorite-local-storage"
+ },
+ {
+ "id": "favorite-get",
+ "type": "module",
+ "typeId": "favorite-local-storage"
+ },
+ {
+ "id": "favorite-set",
+ "type": "module",
+ "typeId": "favorite-local-storage"
+ },
+ {
+ "id": "favorite-remove",
+ "type": "module",
+ "typeId": "favorite-local-storage"
+ },
+ {
+ "id": "get-default-workspace",
+ "type": "module",
+ "typeId": "local-storage",
+ "options": {
+ "method": "GET",
+ "dataType": "default-workspace"
+ }
+ },
+ {
+ "id": "set-default-workspace",
+ "type": "module",
+ "typeId": "local-storage",
+ "options": {
+ "method": "SET",
+ "dataType": "default-workspace"
+ }
+ },
+ {
+ "id": "notification-source-create",
+ "type": "module",
+ "typeId": "example-notification-source",
+ "options": {}
+ },
+ {
+ "id": "notification-source-clear",
+ "type": "module",
+ "typeId": "example-notification-source",
+ "options": {}
+ },
+ {
+ "id": "notification-source-close",
+ "type": "module",
+ "typeId": "example-notification-source",
+ "options": {}
+ },
+ {
+ "id": "notification-source-update",
+ "type": "module",
+ "typeId": "example-notification-source",
+ "options": {}
+ },
+ {
+ "id": "notification-source-stream",
+ "type": "module",
+ "typeId": "example-notification-source",
+ "options": {}
+ }
+ ],
+ "endpointClients": {
+ "clientOptions": [
+ {
+ "enabled": true,
+ "id": "default-workspace",
+ "endpointIds": [
+ "get-default-workspace",
+ "set-default-workspace"
+ ]
+ },
+ {
+ "enabled": true,
+ "id": "pages-share",
+ "endpointIds": [
+ "share-get",
+ "share-set"
+ ]
+ },
+ {
+ "enabled": true,
+ "id": "workspaces-share",
+ "endpointIds": [
+ "share-get",
+ "share-set"
+ ]
+ },
+ {
+ "enabled": true,
+ "id": "default-wps-interop",
+ "endpointIds": [
+ "*"
+ ]
+ },
+ {
+ "enabled": true,
+ "id": "default-wps-platform",
+ "endpointIds": [
+ "*"
+ ]
+ },
+ {
+ "enabled": true,
+ "id": "example-notification-service",
+ "endpointIds": [
+ "notification-source-create",
+ "notification-source-clear",
+ "notification-source-close",
+ "notification-source-update",
+ "notification-source-stream"
+ ]
+ }
+ ]
+ }
+ },
+ "browserProvider": {
+ "defaultWindowOptions": {
+ "viewVisibility": {
+ "showViewsOnTabDrag": {
+ "enabled": true
+ },
+ "showViewsOnSplitterDrag": {
+ "enabled": true
+ },
+ "showViewsOnWindowResize": {
+ "enabled": true
+ }
+ },
+ "workspacePlatform": {
+ "pages": [],
+ "title": {
+ "type": "view-title"
+ },
+ "favicon": "http://localhost:8080/favicon.ico",
+ "newTabUrl": "http://localhost:8080/common/views/platform/new-tab/new-tab.html",
+ "newPageUrl": "http://localhost:8080/common/views/platform/new-tab/new-tab.html",
+ "navigationButtons": {
+ "enabled": true
+ }
+ }
+ },
+ "defaultViewOptions": {},
+ "windowPositioningStrategy": {
+ "x": 30,
+ "y": 30,
+ "maxIncrements": 8
+ },
+ "globalMenu": [
+ {
+ "include": true,
+ "label": "Toggle Notification Center",
+ "data": {
+ "type": "Custom",
+ "action": {
+ "id": "notification-toggle"
+ }
+ },
+ "position": {
+ "type": "OpenStorefront",
+ "operation": "after"
+ }
+ },
+ {
+ "include": true,
+ "label": "Open Home",
+ "data": {
+ "type": "Custom",
+ "action": {
+ "id": "home-show"
+ }
+ },
+ "position": {
+ "type": "OpenStorefront",
+ "operation": "after"
+ }
+ },
+ {
+ "include": true,
+ "label": "Quit App",
+ "position": {
+ "type": "Quit",
+ "operation": "replaceLabel"
+ }
+ },
+ {
+ "include": true,
+ "label": "Log Out and Quit App",
+ "data": {
+ "type": "Custom",
+ "action": {
+ "id": "logout-and-quit"
+ }
+ },
+ "position": {
+ "type": "Quit",
+ "operation": "after"
+ },
+ "conditions": [
+ "authenticated"
+ ]
+ }
+ ],
+ "pageMenu": [
+ {
+ "include": true,
+ "label": "Move Page to new Window",
+ "data": {
+ "type": "Custom",
+ "action": {
+ "id": "move-page-to-new-window"
+ }
+ },
+ "position": {
+ "operation": "start"
+ },
+ "separator": "after"
+ }
+ ],
+ "viewMenu": [
+ {
+ "include": true,
+ "label": "Move View(s) to new Window",
+ "data": {
+ "type": "Custom",
+ "action": {
+ "id": "move-view-to-new-window"
+ }
+ },
+ "position": {
+ "operation": "start"
+ },
+ "separator": "after"
+ }
+ ],
+ "toolbarButtons": [
+ {
+ "include": false,
+ "id": "change-opacity",
+ "button": {
+ "type": "Custom",
+ "tooltip": "Change Opacity",
+ "disabled": false,
+ "iconUrl": "http://localhost:8080/favicon.ico",
+ "action": {
+ "id": "change-opacity",
+ "customData": {
+ "sourceId": "change-opacity",
+ "replacementId": "restore-opacity"
+ }
+ }
+ }
+ },
+ {
+ "include": false,
+ "id": "restore-opacity",
+ "button": {
+ "type": "Custom",
+ "tooltip": "Restore Opacity",
+ "disabled": false,
+ "iconUrl": "http://localhost:8080/favicon.ico",
+ "action": {
+ "id": "restore-opacity",
+ "customData": {
+ "sourceId": "restore-opacity",
+ "replacementId": "change-opacity"
+ }
+ }
+ }
+ },
+ {
+ "include": false,
+ "id": "toggle-scheme",
+ "button": {
+ "type": "Custom",
+ "tooltip": "Toggle Scheme",
+ "disabled": false,
+ "iconUrl": "http://localhost:8080/common/icons/{theme}/{scheme}/theme.svg",
+ "action": {
+ "id": "toggle-scheme",
+ "customData": {}
+ }
+ },
+ "conditions": [
+ "themed"
+ ]
+ },
+ {
+ "include": false,
+ "id": "home-show",
+ "button": {
+ "type": "Custom",
+ "tooltip": "Show Home",
+ "disabled": false,
+ "iconUrl": "http://localhost:8080/common/icons/{theme}/{scheme}/search.svg",
+ "action": {
+ "id": "home-show",
+ "customData": {}
+ }
+ }
+ },
+ {
+ "include": false,
+ "id": "notification-toggle",
+ "button": {
+ "type": "Custom",
+ "tooltip": "Toggle Notification Center",
+ "disabled": false,
+ "iconUrl": "http://localhost:8080/common/icons/{theme}/{scheme}/bell.svg",
+ "action": {
+ "id": "notification-toggle",
+ "customData": {}
+ }
+ }
+ },
+ {
+ "include": false,
+ "id": "include-in-snapshot",
+ "button": {
+ "type": "Custom",
+ "tooltip": "Include in Snapshot",
+ "disabled": false,
+ "iconUrl": "http://localhost:8080/common/icons/{theme}/{scheme}/snapshot-removed.svg",
+ "action": {
+ "id": "include-in-snapshot",
+ "customData": {
+ "sourceId": "include-in-snapshot",
+ "replacementId": "remove-from-snapshot"
+ }
+ }
+ },
+ "conditions": [
+ "removed-from-snapshot"
+ ]
+ },
+ {
+ "include": false,
+ "id": "remove-from-snapshot",
+ "button": {
+ "type": "Custom",
+ "tooltip": "Remove from snapshot",
+ "disabled": false,
+ "iconUrl": "http://localhost:8080/common/icons/{theme}/{scheme}/snapshot-included.svg",
+ "action": {
+ "id": "remove-from-snapshot",
+ "customData": {
+ "sourceId": "remove-from-snapshot",
+ "replacementId": "include-in-snapshot"
+ }
+ }
+ },
+ "conditions": [
+ "included-in-snapshot"
+ ]
+ },
+ {
+ "include": true,
+ "id": "pin-window",
+ "button": {
+ "type": "Custom",
+ "tooltip": "Pin this window",
+ "disabled": false,
+ "iconUrl": "http://localhost:8080/common/icons/{theme}/{scheme}/pin.svg",
+ "action": {
+ "id": "pin-window",
+ "customData": {
+ "sourceId": "pin-window",
+ "replacementId": "unpin-window"
+ }
+ }
+ }
+ },
+ {
+ "include": false,
+ "id": "unpin-window",
+ "button": {
+ "type": "Custom",
+ "tooltip": "Unpin this window",
+ "disabled": false,
+ "iconUrl": "http://localhost:8080/common/icons/{theme}/{scheme}/pin-vertical.svg",
+ "action": {
+ "id": "unpin-window",
+ "customData": {
+ "sourceId": "unpin-window",
+ "replacementId": "pin-window"
+ }
+ }
+ }
+ },
+ {
+ "include": true,
+ "id": "lock-unlock",
+ "button": {
+ "type": "LockUnlockPage"
+ }
+ },
+ {
+ "include": true,
+ "id": "show-hide-tabs",
+ "button": {
+ "type": "ShowHideTabs"
+ }
+ },
+ {
+ "include": true,
+ "id": "color-linking",
+ "button": {
+ "type": "ColorLinking"
+ }
+ },
+ {
+ "include": true,
+ "id": "preset-layouts",
+ "button": {
+ "type": "PresetLayouts"
+ }
+ },
+ {
+ "include": true,
+ "id": "share",
+ "button": {
+ "type": "Custom",
+ "tooltip": "Share",
+ "disabled": false,
+ "iconUrl": "http://localhost:8080/common/icons/{theme}/{scheme}/share.svg",
+ "action": {
+ "id": "share",
+ "customData": {}
+ }
+ },
+ "conditions": [
+ "sharing"
+ ]
+ },
+ {
+ "include": true,
+ "id": "save-menu",
+ "button": {
+ "type": "SaveMenu"
+ }
+ }
+ ]
+ },
+ "themeProvider": {
+ "themes": [
+ {
+ "id": "default",
+ "label": "Default",
+ "logoUrl": "http://localhost:8080/favicon.ico",
+ "default": "dark",
+ "palettes": {
+ "light": {
+ "brandPrimary": "#0A76D3",
+ "brandSecondary": "#1E1F23",
+ "backgroundPrimary": "#FAFBFE",
+ "background1": "#FFFFFF",
+ "background2": "#FAFBFE",
+ "background3": "#F3F5F8",
+ "background4": "#ECEEF1",
+ "background5": "#DDDFE4",
+ "background6": "#C9CBD2",
+ "statusSuccess": "#35C759",
+ "statusWarning": "#F48F00",
+ "statusCritical": "#BE1D1F",
+ "statusActive": "#0498FB",
+ "inputBackground": "#ECEEF1",
+ "inputColor": "#1E1F23",
+ "inputPlaceholder": "#383A40",
+ "inputDisabled": "#7D808A",
+ "inputFocused": "#C9CBD2",
+ "textDefault": "#1E1F23",
+ "textHelp": "#2F3136",
+ "textInactive": "#7D808A",
+ "contentBackground1": "#0A76D3",
+ "contentBackground2": "#000000",
+ "contentBackground3": "#000000",
+ "contentBackground4": "#000000",
+ "contentBackground5": "#000000",
+ "linkDefault": "#6CADE5",
+ "linkHover": "#0A76D3"
+ },
+ "dark": {
+ "brandPrimary": "#0A76D3",
+ "brandSecondary": "#383A40",
+ "backgroundPrimary": "#1E1F23",
+ "background1": "#111214",
+ "background2": "#1E1F23",
+ "background3": "#24262B",
+ "background4": "#2F3136",
+ "background5": "#383A40",
+ "background6": "#53565F",
+ "statusSuccess": "#35C759",
+ "statusWarning": "#F48F00",
+ "statusCritical": "#BE1D1F",
+ "statusActive": "#0498FB",
+ "inputBackground": "#53565F",
+ "inputColor": "#FFFFFF",
+ "inputPlaceholder": "#C9CBD2",
+ "inputDisabled": "#7D808A",
+ "inputFocused": "#C9CBD2",
+ "textDefault": "#FFFFFF",
+ "textHelp": "#C9CBD2",
+ "textInactive": "#7D808A",
+ "contentBackground1": "#0A76D3",
+ "contentBackground2": "#000000",
+ "contentBackground3": "#000000",
+ "contentBackground4": "#000000",
+ "contentBackground5": "#000000",
+ "linkDefault": "#6CADE5",
+ "linkHover": "#0A76D3"
+ }
+ }
+ }
+ ]
+ },
+ "homeProvider": {
+ "id": "workspace-platform-starter",
+ "title": "Workspace Platform Starter",
+ "icon": "http://localhost:8080/favicon.ico",
+ "queryMinLength": 3,
+ "queryAgainst": [
+ "title"
+ ]
+ },
+ "storefrontProvider": {
+ "id": "workspace-platform-starter",
+ "title": "Workspace Platform Starter",
+ "icon": "http://localhost:8080/favicon.ico",
+ "landingPage": {
+ "hero": {
+ "title": "Custom Hero Title",
+ "description": "This is a demonstration of the hero section that you can configure for your store.",
+ "cta": {
+ "title": "Hero Apps!",
+ "tags": [
+ "hero"
+ ]
+ },
+ "image": {
+ "src": "http://localhost:8080/common/images/store/superhero-unsplash.jpg"
+ }
+ },
+ "topRow": {
+ "title": "Custom Top Row Content",
+ "items": [
+ {
+ "title": "Dev Tools",
+ "description": "A collection of developer tools that can aid with building and debugging OpenFin applications.",
+ "image": {
+ "src": "http://localhost:8080/common/images/store/coding-2-unsplash.jpg"
+ },
+ "tags": [
+ "tools"
+ ],
+ "buttonTitle": "View"
+ },
+ {
+ "title": "Learning Resource",
+ "description": "A collection of developer documents that can aid with building and debugging OpenFin applications.",
+ "image": {
+ "src": "http://localhost:8080/common/images/store/coding-3-unsplash.jpg"
+ },
+ "tags": [
+ "page"
+ ],
+ "buttonTitle": "View"
+ }
+ ]
+ },
+ "middleRow": {
+ "title": "A collection of simple views that show how to share context using the FDC3 or Interop APIs.",
+ "tags": [
+ "fdc3",
+ "interop"
+ ]
+ },
+ "bottomRow": {
+ "title": "Quick Access",
+ "items": [
+ {
+ "title": "Views",
+ "description": "A collection of views made available through our catalog.",
+ "image": {
+ "src": "http://localhost:8080/common/images/store/coding-4-unsplash.jpg"
+ },
+ "tags": [
+ "view"
+ ],
+ "buttonTitle": "View"
+ },
+ {
+ "title": "Web Apps",
+ "description": "A collection of web apps built using OpenFin.",
+ "image": {
+ "src": "http://localhost:8080/common/images/store/coding-5-unsplash.jpg"
+ },
+ "tags": [
+ "manifest"
+ ],
+ "buttonTitle": "View"
+ },
+ {
+ "title": "Native Apps",
+ "description": "A collection of native apps made available through our catalog.",
+ "image": {
+ "src": "http://localhost:8080/common/images/store/coding-6-unsplash.jpg"
+ },
+ "tags": [
+ "native"
+ ],
+ "buttonTitle": "View"
+ }
+ ]
+ }
+ },
+ "navigation": [
+ {
+ "title": "Applications",
+ "items": [
+ {
+ "title": "All Apps",
+ "tags": [
+ "view",
+ "page",
+ "manifest",
+ "native",
+ "desktop-browser"
+ ]
+ },
+ {
+ "title": "Views",
+ "tags": [
+ "view"
+ ]
+ },
+ {
+ "title": "Pages",
+ "tags": [
+ "page"
+ ]
+ },
+ {
+ "title": "Manifest",
+ "tags": [
+ "manifest"
+ ]
+ },
+ {
+ "title": "Native",
+ "tags": [
+ "native"
+ ]
+ }
+ ]
+ },
+ {
+ "title": "Context Sharing",
+ "items": [
+ {
+ "title": "FDC3 API",
+ "tags": [
+ "fdc3"
+ ]
+ },
+ {
+ "title": "Interop API",
+ "tags": [
+ "interop"
+ ]
+ }
+ ]
+ }
+ ],
+ "footer": {
+ "logo": {
+ "src": "http://localhost:8080/favicon.ico",
+ "size": "32"
+ },
+ "text": "Welcome to the OpenFin Sample Footer",
+ "links": [
+ {
+ "title": "Github",
+ "url": "https://github.com/built-on-openfin/workspace-starter"
+ },
+ {
+ "title": "YouTube",
+ "url": "https://www.youtube.com/user/OpenFinTech"
+ }
+ ]
+ }
+ },
+ "dockProvider": {
+ "id": "workspace-platform-starter",
+ "title": "Workspace Platform Starter",
+ "icon": "http://localhost:8080/favicon.ico",
+ "workspaceComponents": {
+ "hideHomeButton": false,
+ "hideWorkspacesButton": false,
+ "hideNotificationsButton": false,
+ "hideStorefrontButton": false
+ },
+ "entries": [
+ {
+ "id": "workspaces",
+ "tooltip": "Workspaces",
+ "iconUrl": "http://localhost:8080/common/icons/{theme}/{scheme}/workspace.svg",
+ "action": {
+ "id": "workspaces-menu"
+ },
+ "visible": false
+ },
+ {
+ "id": "dock-apps",
+ "display": "individual",
+ "tags": [
+ "dock"
+ ]
+ },
+ {
+ "id": "fdc3-apps",
+ "display": "group",
+ "tooltip": "FDC3",
+ "tags": [
+ "fdc3"
+ ]
+ },
+ {
+ "id": "manager-apps",
+ "display": "group",
+ "tooltip": "Manager",
+ "iconUrl": "http://localhost:8080/common/images/icon-gradient.png",
+ "tags": [
+ "manager"
+ ]
+ },
+ {
+ "id": "favorites",
+ "tooltip": "Favorites",
+ "iconUrl": "http://localhost:8080/common/icons/{theme}/{scheme}/favorite.svg",
+ "action": {
+ "id": "favorites-menu"
+ },
+ "conditions": [
+ "favorites"
+ ]
+ },
+ {
+ "id": "pages",
+ "tooltip": "Pages",
+ "iconUrl": "http://localhost:8080/common/icons/{theme}/{scheme}/page.svg",
+ "action": {
+ "id": "pages-menu"
+ }
+ },
+ {
+ "id": "google",
+ "tooltip": "Google",
+ "iconUrl": "https://www.google.com/favicon.ico",
+ "action": {
+ "id": "launch-view",
+ "customData": {
+ "url": "https://www.google.com"
+ }
+ }
+ },
+ {
+ "id": "social",
+ "tooltip": "Social",
+ "iconUrl": "http://localhost:8080/common/icons/{theme}/{scheme}/share.svg",
+ "options": [
+ {
+ "tooltip": "Twitter",
+ "action": {
+ "id": "launch-view",
+ "customData": {
+ "url": "https://twitter.com/openfintech"
+ }
+ }
+ },
+ {
+ "tooltip": "YouTube",
+ "action": {
+ "id": "launch-view",
+ "customData": {
+ "url": "https://www.youtube.com/user/OpenFinTech"
+ }
+ }
+ },
+ {
+ "tooltip": "Other",
+ "options": [
+ {
+ "tooltip": "LinkedIn",
+ "action": {
+ "id": "launch-view",
+ "customData": {
+ "url": "https://www.linkedin.com/company/openfin"
+ }
+ }
+ },
+ {
+ "tooltip": "GitHub",
+ "action": {
+ "id": "launch-view",
+ "customData": {
+ "url": "https://github.com/openfin"
+ }
+ }
+ },
+ {
+ "tooltip": "Search",
+ "options": [
+ {
+ "tooltip": "Google",
+ "action": {
+ "id": "launch-view",
+ "customData": {
+ "url": "https://www.google.com/search?q=openfin"
+ }
+ }
+ },
+ {
+ "tooltip": "Bing",
+ "action": {
+ "id": "launch-view",
+ "customData": {
+ "url": "https://www.bing.com/search?q=openfin"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "id": "windows",
+ "tooltip": "Window Visibility",
+ "iconUrl": "http://localhost:8080/common/icons/{theme}/{scheme}/windows.svg",
+ "options": [
+ {
+ "tooltip": "Show All Windows",
+ "action": {
+ "id": "window-show-all"
+ }
+ },
+ {
+ "tooltip": "Hide All Windows",
+ "action": {
+ "id": "window-hide-all"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "notificationProvider": {
+ "id": "workspace-platform-starter",
+ "title": "Workspace Platform Starter",
+ "icon": "http://localhost:8080/favicon.ico",
+ "notificationClients": {
+ "defaults": {
+ "enforceIcon": false,
+ "includeInPlatform": true
+ },
+ "restrictToListed": false,
+ "clientOptions": []
+ }
+ },
+ "integrationProvider": {
+ "icon": "http://localhost:8080/favicon.ico",
+ "isManagementEnabled": false,
+ "command": "integrations",
+ "commandDescription": "Allows the management of integrations for this platform. You can decide whether enabled integrations should be included when a query is entered.",
+ "modules": [
+ {
+ "id": "apps",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Apps",
+ "description": "Search Applications",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/integrations/apps.bundle.js",
+ "data": {
+ "manifestTypeMapping": {
+ "view": {
+ "entryLabel": "View",
+ "actionName": ""
+ },
+ "inline-view": {
+ "entryLabel": "View",
+ "actionName": ""
+ },
+ "window": {
+ "entryLabel": "Window",
+ "actionName": ""
+ },
+ "inline-window": {
+ "entryLabel": "Window",
+ "actionName": ""
+ },
+ "snapshot": {
+ "entryLabel": "Snapshot",
+ "actionName": "Launch Snapshot"
+ },
+ "inline-snapshot": {
+ "entryLabel": "Snapshot",
+ "actionName": "Launch Snapshot"
+ },
+ "manifest": {
+ "entryLabel": "App",
+ "actionName": "Launch App"
+ },
+ "external": {
+ "entryLabel": "Native App",
+ "actionName": "Launch Native App"
+ },
+ "inline-external": {
+ "entryLabel": "Native App",
+ "actionName": "Launch Native App"
+ },
+ "appasset": {
+ "entryLabel": "Native App",
+ "actionName": "Launch Native App"
+ },
+ "inline-appasset": {
+ "entryLabel": "Native App",
+ "actionName": "Launch Native App"
+ },
+ "desktop-browser": {
+ "entryLabel": "Desktop Browser",
+ "actionName": ""
+ },
+ "endpoint": {
+ "entryLabel": "Endpoint",
+ "actionName": "Launch"
+ },
+ "connection": {
+ "entryLabel": "Connected App",
+ "actionName": "Launch Connected App"
+ }
+ },
+ "favoritesEnabled": false
+ }
+ },
+ {
+ "id": "workspaces",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Workspaces",
+ "description": "Manage workspaces",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/integrations/workspaces.bundle.js",
+ "data": {
+ "favoritesEnabled": false,
+ "images": {
+ "workspace": "http://localhost:8080/common/icons/{theme}/{scheme}/workspace.svg"
+ }
+ }
+ },
+ {
+ "id": "pages",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Pages",
+ "description": "Manage Pages",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/integrations/pages.bundle.js",
+ "data": {
+ "favoritesEnabled": false,
+ "images": {
+ "page": "http://localhost:8080/common/icons/{theme}/{scheme}/page.svg"
+ }
+ }
+ },
+ {
+ "id": "salesforce",
+ "icon": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-salesforce/favicon.ico",
+ "title": "Salesforce",
+ "enabled": false,
+ "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-salesforce/js/modules/integrations/salesforce.bundle.js",
+ "data": {
+ "appId": "",
+ "consumerKey": "",
+ "orgUrl": "",
+ "preload": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-salesforce/js/preload.js",
+ "enableLibLogging": true,
+ "iconMap": {
+ "salesforce": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-salesforce/images/salesforce.svg",
+ "contact": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-salesforce/images/contact.svg",
+ "account": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-salesforce/images/account.svg",
+ "chatter": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-salesforce/images/chatter.svg",
+ "note": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-salesforce/images/note.svg",
+ "task": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-salesforce/images/task.svg",
+ "dashboard": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-salesforce/images/dashboard.svg",
+ "phone": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-salesforce/images/phone.svg",
+ "chat": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-salesforce/images/chat.svg",
+ "email": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-salesforce/images/email.svg"
+ }
+ }
+ },
+ {
+ "id": "ms365",
+ "icon": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/favicon.ico",
+ "title": "Microsoft 365",
+ "enabled": false,
+ "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/js/integrations/ms365.bundle.js",
+ "data": {
+ "clientId": "",
+ "tenantId": "",
+ "redirectUri": "http://localhost:8080/oauth_redirect.html",
+ "permissions": [
+ "User.Read",
+ "Presence.Read",
+ "Presence.Read.All",
+ "Directory.Read.All",
+ "Mail.ReadWrite",
+ "Contacts.Read",
+ "Tasks.Read",
+ "Calendars.ReadWrite",
+ "Chat.Read",
+ "ChannelMessage.Read.All",
+ "TeamMember.Read.All",
+ "ChannelMember.Read.All",
+ "Files.Read.All",
+ "Sites.Read.All"
+ ],
+ "disableGraphExplorer": false,
+ "enableLibLogging": true,
+ "images": {
+ "microsoft365": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/apps/microsoft365.svg",
+ "teams": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/apps/teams.svg",
+ "word": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/apps/word.svg",
+ "excel": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/apps/excel.svg",
+ "onenote": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/apps/onenote.svg",
+ "powerpoint": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/apps/powerpoint.svg",
+ "outlook": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/apps/outlook-mail.svg",
+ "email": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/icons/email.svg",
+ "calendar": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/icons/calendar.svg",
+ "share": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/icons/share.svg",
+ "chat": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/icons/chat.svg",
+ "call": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/icons/call.svg",
+ "contact": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/icons/contact.svg",
+ "team": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/icons/team.svg",
+ "file": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/icons/file.svg",
+ "folder": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/icons/folder.svg",
+ "channel": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/icons/channel.svg",
+ "clock": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/icons/clock.svg",
+ "check": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/icons/check.svg",
+ "cross": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-ms365/images/icons/cross.svg"
+ }
+ }
+ },
+ {
+ "id": "servicenow",
+ "icon": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-servicenow/favicon.ico",
+ "title": "ServiceNow",
+ "enabled": false,
+ "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-servicenow/js/integrations/servicenow.bundle.js",
+ "data": {
+ "instanceUrl": "",
+ "clientId": "",
+ "enableLibLogging": true,
+ "images": {
+ "servicenow": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-servicenow/images/apps/servicenow.svg",
+ "contact": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-servicenow/images/types/contact.svg",
+ "account": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-servicenow/images/types/account.svg",
+ "case": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-servicenow/images/types/case.svg",
+ "task": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-servicenow/images/types/task.svg",
+ "incident": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-servicenow/images/types/incident.svg",
+ "call": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-servicenow/images/icons/call.svg",
+ "email": "https://built-on-openfin.github.io/workspace-starter/workspace/v21.0.0/integrate-with-servicenow/images/icons/email.svg"
+ }
+ }
+ },
+ {
+ "id": "about",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "About",
+ "description": "Provides information about this platform.",
+ "enabled": true,
+ "excludeFromSourceFilter": true,
+ "url": "http://localhost:8080/openfin/js/modules/composite/about.bundle.js",
+ "data": {}
+ },
+ {
+ "id": "quote",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Quote Provider",
+ "enabled": false,
+ "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/integrations/js/modules/integrations/quote.bundle.js",
+ "data": {
+ "rootUrl": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/integrations/data/quotes/"
+ }
+ },
+ {
+ "id": "emoji",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Emoji Provider",
+ "enabled": false,
+ "url": "https://built-on-openfin.github.io/dev-extensions/extensions/v21.0.0/integrations/js/modules/integrations/emoji.bundle.js",
+ "data": {}
+ }
+ ]
+ },
+ "initOptionsProvider": {
+ "modules": [
+ {
+ "enabled": true,
+ "id": "interop",
+ "title": "Init Options Interop",
+ "url": "http://localhost:8080/openfin/js/modules/init-options/interop.bundle.js",
+ "data": {
+ "supportedActions": [
+ "raise-intent",
+ "share-context"
+ ]
+ }
+ },
+ {
+ "enabled": true,
+ "id": "launch-app",
+ "title": "Init Options Launch App",
+ "url": "http://localhost:8080/openfin/js/modules/init-options/launch-app.bundle.js",
+ "data": {
+ "supportedActions": [
+ "launch-app"
+ ],
+ "supportedManifestTypes": [
+ "view",
+ "inline-view",
+ "window",
+ "inline-window",
+ "snapshot",
+ "inline-snapshot"
+ ]
+ }
+ },
+ {
+ "enabled": true,
+ "id": "show-page",
+ "title": "Init Options Show Page",
+ "url": "http://localhost:8080/openfin/js/modules/composite/pages.bundle.js",
+ "data": {
+ "supportedActions": [
+ "show-page"
+ ]
+ }
+ },
+ {
+ "enabled": true,
+ "id": "launch-workspace",
+ "title": "Init Options Launch Workspace",
+ "url": "http://localhost:8080/openfin/js/modules/init-options/launch-workspace.bundle.js",
+ "data": {
+ "supportedActions": [
+ "launch-workspace"
+ ]
+ }
+ }
+ ]
+ },
+ "loggerProvider": {
+ "modules": [
+ {
+ "enabled": true,
+ "id": "console",
+ "title": "Console Logger",
+ "url": "http://localhost:8080/openfin/js/modules/log/console.bundle.js"
+ }
+ ]
+ },
+ "actionsProvider": {
+ "modules": [
+ {
+ "enabled": true,
+ "id": "opacity",
+ "title": "Opacity Action",
+ "url": "http://localhost:8080/openfin/js/modules/actions/opacity.bundle.js"
+ },
+ {
+ "enabled": true,
+ "id": "developer-actions",
+ "title": "Developer Actions",
+ "url": "http://localhost:8080/openfin/js/modules/composite/developer.bundle.js"
+ },
+ {
+ "enabled": true,
+ "id": "about-actions",
+ "title": "About Actions",
+ "url": "http://localhost:8080/openfin/js/modules/composite/about.bundle.js",
+ "data": {
+ "windowOptions": {
+ "name": "about",
+ "url": "http://localhost:8080/common/windows/version/about.html",
+ "defaultCentered": true,
+ "showTaskbarIcon": false,
+ "autoShow": true,
+ "minimizable": false,
+ "maximizable": false,
+ "defaultHeight": 396,
+ "defaultWidth": 760,
+ "customData": {}
+ }
+ }
+ },
+ {
+ "enabled": true,
+ "id": "page-actions",
+ "title": "Page Actions",
+ "url": "http://localhost:8080/openfin/js/modules/composite/pages.bundle.js"
+ },
+ {
+ "enabled": true,
+ "id": "window-actions",
+ "title": "Window Actions",
+ "url": "http://localhost:8080/openfin/js/modules/composite/windows.bundle.js"
+ },
+ {
+ "id": "custom-menu",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Custom Menu",
+ "description": "Custom Menu",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/actions/custom-menu.bundle.js",
+ "data": {
+ "images": {
+ "page": "http://localhost:8080/common/icons/{theme}/{scheme}/page.svg",
+ "workspace": "http://localhost:8080/common/icons/{theme}/{scheme}/workspace.svg"
+ }
+ }
+ },
+ {
+ "id": "favorites-menu",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Favorites Menu",
+ "description": "Favorites Menu",
+ "enabled": false,
+ "url": "http://localhost:8080/openfin/js/modules/actions/favorites-menu.bundle.js"
+ },
+ {
+ "id": "include-in-snapshot",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Include In Snapshot",
+ "description": "Include In Snapshot",
+ "enabled": false,
+ "url": "http://localhost:8080/openfin/js/modules/composite/include-in-snapshot.bundle.js"
+ },
+ {
+ "id": "default-workspace",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Default Workspace",
+ "description": "Allows the setting of a default workspace and whether or not it should be set when an active workspace is switched.",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/composite/default-workspace.bundle.js"
+ },
+ {
+ "id": "window-platform",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Window Platform Actions",
+ "description": "Window Platform Actions",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/actions/window-platform.bundle.js"
+ }
+ ]
+ },
+ "conditionsProvider": {
+ "modules": [
+ {
+ "enabled": true,
+ "id": "about-conditions",
+ "title": "About Conditions",
+ "url": "http://localhost:8080/openfin/js/modules/composite/about.bundle.js"
+ },
+ {
+ "id": "include-in-snapshot",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Include In Snapshot",
+ "description": "Include In Snapshot",
+ "enabled": false,
+ "url": "http://localhost:8080/openfin/js/modules/composite/include-in-snapshot.bundle.js"
+ }
+ ]
+ },
+ "connectionProvider": {
+ "connectionId": "workspace-connection",
+ "supportedActions": [
+ "show-home",
+ "show-store",
+ "show-dock",
+ "show-notifications",
+ "hide-home",
+ "hide-store",
+ "minimize-dock",
+ "hide-notifications"
+ ],
+ "connections": [
+ {
+ "identity": {
+ "uuid": "workspace-platform-starter"
+ },
+ "validatePayload": false,
+ "connectionTypes": [
+ {
+ "type": "broker"
+ }
+ ]
+ },
+ {
+ "identity": {
+ "uuid": "*"
+ },
+ "validatePayload": false,
+ "connectionTypes": [
+ {
+ "type": "appSource"
+ },
+ {
+ "type": "snapshotSource"
+ },
+ {
+ "type": "actions"
+ },
+ {
+ "type": "broker"
+ }
+ ]
+ }
+ ]
+ },
+ "analyticsProvider": {
+ "modules": [
+ {
+ "enabled": true,
+ "id": "analytics.console",
+ "title": "Console Analytics",
+ "url": "http://localhost:8080/openfin/js/modules/analytics/console.bundle.js",
+ "data": {
+ "eventLogLevel": "info"
+ }
+ },
+ {
+ "enabled": true,
+ "id": "analytics.dev.channel",
+ "title": "Analytics Dev Channel",
+ "url": "http://localhost:8080/openfin/js/modules/composite/developer.bundle.js",
+ "data": {}
+ }
+ ]
+ },
+ "versionProvider": {
+ "appVersion": "1.0.0",
+ "minVersion": {
+ "workspace": "19.0.0"
+ },
+ "versionWindow": {
+ "name": "versioning",
+ "url": "http://localhost:8080/windows/version/version.html",
+ "defaultCentered": true,
+ "showTaskbarIcon": false,
+ "autoShow": true,
+ "minimizable": false,
+ "maximizable": false,
+ "defaultHeight": 481,
+ "defaultWidth": 760,
+ "saveWindowState": false,
+ "includeInSnapshots": false
+ },
+ "endpointId": "version",
+ "versionCheckIntervalInSeconds": 30
+ },
+ "menusProvider": {
+ "popupHtml": "http://localhost:8080/common/popups/menu/index.html",
+ "modules": [
+ {
+ "enabled": true,
+ "id": "developer-menus",
+ "title": "Developer Menus",
+ "url": "http://localhost:8080/openfin/js/modules/composite/developer.bundle.js",
+ "data": {}
+ },
+ {
+ "id": "about",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "About",
+ "description": "Provides information about this platform.",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/composite/about.bundle.js",
+ "data": {}
+ },
+ {
+ "id": "pages",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Pages",
+ "description": "Provides additional menu options for pages.",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/composite/pages.bundle.js",
+ "data": {}
+ },
+ {
+ "id": "windows",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Windows",
+ "description": "Provides additional menu options for windows.",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/composite/windows.bundle.js",
+ "data": {}
+ },
+ {
+ "id": "default-workspace",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "default workspace menu options",
+ "description": "set your default default workspace",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/composite/default-workspace.bundle.js",
+ "data": {}
+ }
+ ]
+ },
+ "lowCodeIntegrationProvider": {
+ "modules": [
+ {
+ "id": "ms365",
+ "title": "Microsoft 365 Low Code Integration",
+ "type": "ms365",
+ "enabled": false,
+ "data": {
+ "connect": {
+ "clientId": "",
+ "tenantId": "",
+ "redirectUri": ""
+ },
+ "workflows": {
+ "search": {
+ "disableAutoInitialize": true
+ }
+ }
+ }
+ }
+ ]
+ },
+ "authProvider": {
+ "modules": [
+ {
+ "id": "openid-connect",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "OpenId Connect",
+ "description": "OpenId Connect",
+ "enabled": false,
+ "url": "http://localhost:8080/openfin/js/modules/auth/openid-connect.bundle.js",
+ "data": {
+ "providerUrl": "",
+ "clientId": "",
+ "loginRedirectUrl": "http://localhost:8080/oidc_login.html",
+ "logoutRedirectUrl": "http://localhost:8080/oidc_logout.html",
+ "checkSessionValidityInSeconds": 30
+ }
+ }
+ ]
+ },
+ "trayProvider": {
+ "enabled": true,
+ "menuEntries": [
+ {
+ "include": true,
+ "label": "Quit App",
+ "position": {
+ "operation": "end"
+ },
+ "data": {
+ "type": "Custom",
+ "action": {
+ "id": "quit"
+ }
+ }
+ },
+ {
+ "include": true,
+ "label": "Log Out and Quit App",
+ "data": {
+ "type": "Custom",
+ "action": {
+ "id": "logout-and-quit"
+ }
+ },
+ "position": {
+ "operation": "end"
+ },
+ "conditions": [
+ "authenticated"
+ ]
+ }
+ ]
+ },
+ "favoriteProvider": {
+ "enabled": false,
+ "favoriteIcon": "http://localhost:8080/common/icons/{theme}/{scheme}/favorite.svg",
+ "unfavoriteIcon": "http://localhost:8080/common/icons/{theme}/{scheme}/unfavorite.svg",
+ "favoriteCommand": "/fav",
+ "supportedFavoriteTypes": [
+ "workspace",
+ "page",
+ "app"
+ ]
+ },
+ "lifecycleProvider": {
+ "modules": [
+ {
+ "id": "default-workspace",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "default workspace management",
+ "description": "set and apply your default workspace.",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/composite/default-workspace.bundle.js",
+ "data": {}
+ },
+ {
+ "id": "example-notification-service",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Example Notification Service",
+ "description": "Example Notification Service. See more at client/src/modules/lifecycle/example-notification-service/README.md",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/lifecycle/example-notification-service.bundle.js",
+ "data": {}
+ }
+ ]
+ },
+ "snapProvider": {
+ "enabled": false,
+ "id": "workspace-platform-starter",
+ "enableAutoWindowRegistration": true,
+ "serverOptions": {
+ "showDebug": false,
+ "keyToStick": true,
+ "disableBlurDropPreview": false,
+ "disableGPUAcceleratedDragging": false,
+ "disableUserUnstick": false,
+ "autoHideClientTaskbarIcons": true
+ }
+ },
+ "contentCreationProvider": {
+ "modules": [
+ {
+ "id": "view-position-content-creation",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "View Position Content Creation",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/content-creation/view-position.bundle.js",
+ "data": {
+ "defaultViewPosition": "stack-right",
+ "rules": [
+ {
+ "behavior": "window",
+ "match": [
+ "https://www.newscientist.com/*"
+ ],
+ "options": {
+ "defaultWidth": 800,
+ "defaultHeight": 600
+ }
+ },
+ {
+ "behavior": "browser",
+ "match": [
+ "https://www.livescience.com/*"
+ ]
+ },
+ {
+ "behavior": "block",
+ "match": [
+ "https://www.sciencenews.org/*"
+ ]
+ },
+ {
+ "behavior": "view",
+ "match": [
+ "https://*",
+ "http://*"
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "shareProvider": {
+ "modules": [
+ {
+ "id": "pages-share",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Pages Share",
+ "description": "Pages Share",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/share/pages.bundle.js",
+ "data": {
+ "getEndpointId": "share-get",
+ "setEndpointId": "share-set",
+ "images": {
+ "error": "http://localhost:8080/common/icons/{theme}/{scheme}/error.svg",
+ "success": "http://localhost:8080/common/icons/{theme}/{scheme}/success.svg"
+ }
+ }
+ },
+ {
+ "id": "workspaces-share",
+ "icon": "http://localhost:8080/favicon.ico",
+ "title": "Workspaces Share",
+ "description": "Workspaces Share",
+ "enabled": true,
+ "url": "http://localhost:8080/openfin/js/modules/share/workspaces.bundle.js",
+ "data": {
+ "getEndpointId": "share-get",
+ "setEndpointId": "share-set",
+ "images": {
+ "error": "http://localhost:8080/common/icons/{theme}/{scheme}/error.svg",
+ "success": "http://localhost:8080/common/icons/{theme}/{scheme}/success.svg"
+ }
+ }
+ }
+ ]
+ },
+ "dialogProvider": {
+ "dialogHtml": "http://localhost:8080/common/popups/dialog/index.html"
+ }
+ }
+}
diff --git a/frameworks/react/workspace-platform-starter/public/splash.html b/frameworks/react/workspace-platform-starter/public/splash.html
new file mode 100644
index 0000000..0c720ee
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/public/splash.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OpenFin
+
+
+
+
+
+
+
diff --git a/frameworks/react/workspace-platform-starter/rollup.config.mjs b/frameworks/react/workspace-platform-starter/rollup.config.mjs
new file mode 100644
index 0000000..bd2a3a0
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/rollup.config.mjs
@@ -0,0 +1,81 @@
+import path from 'path';
+import { fileURLToPath } from 'url';
+import typescript from '@rollup/plugin-typescript';
+import resolve from '@rollup/plugin-node-resolve';
+import commonjs from '@rollup/plugin-commonjs';
+import terser from '@rollup/plugin-terser';
+import copy from 'rollup-plugin-copy';
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+
+const entryDefinitions = [
+ { entry: './openfin/modules/auth/example/index.ts', outputPathRelative: 'js/modules/auth', outputFilenameKey: 'example' },
+ { entry: './openfin/modules/endpoint/local-storage/index.ts', outputPathRelative: 'js/modules/endpoint', outputFilenameKey: 'local-storage' },
+ { entry: './openfin/modules/endpoint/channel/index.ts', outputPathRelative: 'js/modules/endpoint', outputFilenameKey: 'channel' },
+ { entry: './openfin/modules/endpoint/inline-apps/index.ts', outputPathRelative: 'js/modules/endpoint', outputFilenameKey: 'inline-apps' },
+ { entry: './openfin/modules/init-options/interop/index.ts', outputPathRelative: 'js/modules/init-options', outputFilenameKey: 'interop' },
+ { entry: './openfin/modules/init-options/launch-app/index.ts', outputPathRelative: 'js/modules/init-options', outputFilenameKey: 'launch-app' },
+ { entry: './openfin/modules/log/console/index.ts', outputPathRelative: 'js/modules/log', outputFilenameKey: 'console' },
+ { entry: './openfin/modules/actions/opacity/index.ts', outputPathRelative: 'js/modules/actions', outputFilenameKey: 'opacity' },
+ { entry: './openfin/modules/endpoint/example-connection-validation/index.ts', outputPathRelative: 'js/modules/endpoint', outputFilenameKey: 'example.connection.validation' },
+ { entry: './openfin/modules/analytics/console/index.ts', outputPathRelative: 'js/modules/analytics', outputFilenameKey: 'console' },
+ { entry: './openfin/modules/composite/developer/index.ts', outputPathRelative: 'js/modules/composite', outputFilenameKey: 'developer' },
+ { entry: './openfin/modules/integrations/apps/index.ts', outputPathRelative: 'js/modules/integrations', outputFilenameKey: 'apps' },
+ { entry: './openfin/modules/integrations/workspaces/index.ts', outputPathRelative: 'js/modules/integrations', outputFilenameKey: 'workspaces' },
+ { entry: './openfin/modules/integrations/pages/index.ts', outputPathRelative: 'js/modules/integrations', outputFilenameKey: 'pages' },
+ { entry: './openfin/modules/composite/about/index.ts', outputPathRelative: 'js/modules/composite', outputFilenameKey: 'about' },
+ { entry: './openfin/modules/composite/pages/index.ts', outputPathRelative: 'js/modules/composite', outputFilenameKey: 'pages' },
+ { entry: './openfin/modules/composite/windows/index.ts', outputPathRelative: 'js/modules/composite', outputFilenameKey: 'windows' },
+ { entry: './openfin/modules/endpoint/example-context-processor/index.ts', outputPathRelative: 'js/modules/endpoint', outputFilenameKey: 'example.context.processor' },
+ { entry: './openfin/modules/actions/custom-menu/index.ts', outputPathRelative: 'js/modules/actions', outputFilenameKey: 'custom-menu' },
+ { entry: './openfin/modules/auth/openid-connect/index.ts', outputPathRelative: 'js/modules/auth', outputFilenameKey: 'openid-connect' },
+ { entry: './openfin/modules/endpoint/favorite-local-storage/index.ts', outputPathRelative: 'js/modules/endpoint', outputFilenameKey: 'favorite-local-storage' },
+ { entry: './openfin/modules/actions/favorites-menu/index.ts', outputPathRelative: 'js/modules/actions', outputFilenameKey: 'favorites-menu' },
+ { entry: './openfin/modules/composite/include-in-snapshot/index.ts', outputPathRelative: 'js/modules/composite', outputFilenameKey: 'include-in-snapshot' },
+ { entry: './openfin/modules/lifecycle/example-notification-service/index.ts', outputPathRelative: 'js/modules/lifecycle', outputFilenameKey: 'example-notification-service' },
+ { entry: './openfin/modules/endpoint/example-notification-source/index.ts', outputPathRelative: 'js/modules/endpoint', outputFilenameKey: 'example-notification-source' },
+ { entry: './openfin/modules/platform-override/application-url-and-access-validator/index.ts', outputPathRelative: 'js/modules/platform-override', outputFilenameKey: 'application-url-and-access-validator' },
+ { entry: './openfin/modules/init-options/launch-workspace/index.ts', outputPathRelative: 'js/modules/init-options', outputFilenameKey: 'launch-workspace' },
+ { entry: './openfin/modules/composite/default-workspace/index.ts', outputPathRelative: 'js/modules/composite', outputFilenameKey: 'default-workspace' },
+ { entry: './openfin/modules/content-creation/view-position/index.ts', outputPathRelative: 'js/modules/content-creation', outputFilenameKey: 'view-position' },
+ { entry: './openfin/modules/actions/window-platform/index.ts', outputPathRelative: 'js/modules/actions', outputFilenameKey: 'window-platform' },
+ { entry: './openfin/modules/share/pages/index.ts', outputPathRelative: 'js/modules/share', outputFilenameKey: 'pages' },
+ { entry: './openfin/modules/share/workspaces/index.ts', outputPathRelative: 'js/modules/share', outputFilenameKey: 'workspaces' },
+ { entry: './openfin/modules/interop-override/wps-interop-override/index.ts', outputPathRelative: 'js/modules/interop-override', outputFilenameKey: 'wps-interop-override' },
+ { entry: './openfin/modules/platform-override/wps-platform-override/index.ts', outputPathRelative: 'js/modules/platform-override', outputFilenameKey: 'wps-platform-override' },
+];
+
+const rollupInput = entryDefinitions.reduce((acc, item) => {
+ const name = path.join(item.outputPathRelative, item.outputFilenameKey).replace(/\\/g, '/');
+ acc[name] = item.entry;
+ return acc;
+}, {});
+
+export default {
+ plugins: [
+ resolve({ extensions: ['.js', '.ts', '.mjs', '.json'] }),
+ commonjs(),
+ typescript({
+ tsconfig: './tsconfig.app.json'
+ }),
+ copy({
+ targets: [
+ {
+ src: path.resolve(__dirname, './openfin/common'),
+ dest: './public'
+ }
+ ]
+ }),
+ terser()
+ ],
+ input: rollupInput,
+ external: ['fin'],
+ output: {
+ dir: path.resolve(__dirname, 'public/openfin'),
+ format: 'es',
+ entryFileNames: '[name].bundle.js',
+ sourcemap: false,
+ },
+ treeshake: false,
+};
diff --git a/frameworks/react/workspace-platform-starter/src/Provider.tsx b/frameworks/react/workspace-platform-starter/src/Provider.tsx
new file mode 100644
index 0000000..9a9ab1b
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/src/Provider.tsx
@@ -0,0 +1,15 @@
+import { useOpenFin } from "./hooks/useOpenFin";
+
+export function Provider() {
+ useOpenFin();
+
+ return (
+
+ OpenFin platform provider
+
+ The window would usually be hidden, you can make it hidden on startup by setting the
+ platform.autoShow flag to false in the manifest.fin.json
+
+
+ );
+}
diff --git a/frameworks/react/workspace-platform-starter/src/app.tsx b/frameworks/react/workspace-platform-starter/src/app.tsx
new file mode 100644
index 0000000..88c46fb
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/src/app.tsx
@@ -0,0 +1,16 @@
+import { BrowserRouter, Routes, Route } from "react-router-dom";
+import { Provider } from "./Provider";
+import { View1 } from "./views/view1";
+import { View2 } from "./views/view2";
+
+export default function App() {
+ return (
+
+
+ } />
+ } />
+ } />
+
+
+ );
+}
diff --git a/frameworks/react/workspace-platform-starter/src/assets/react.svg b/frameworks/react/workspace-platform-starter/src/assets/react.svg
new file mode 100644
index 0000000..6c87de9
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/src/assets/react.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/frameworks/react/workspace-platform-starter/src/hooks/useOpenFin.tsx b/frameworks/react/workspace-platform-starter/src/hooks/useOpenFin.tsx
new file mode 100644
index 0000000..fa35680
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/src/hooks/useOpenFin.tsx
@@ -0,0 +1,71 @@
+import { useEffect, useRef } from "react";
+import { init as bootstrap } from "workspace-platform-starter/bootstrapper";
+import { createLogger } from "workspace-platform-starter/logger-provider";
+import { init as initializePlatform } from "workspace-platform-starter/platform/platform";
+import * as platformSplashProvider from "workspace-platform-starter/platform/platform-splash";
+
+/**
+ * Initialize the provider and bootstrap the OpenFin platform
+ *
+ * @returns True if the provider started successfully.
+ */
+async function init(): Promise {
+ await platformSplashProvider.open();
+
+ try {
+ return await new Promise((resolve, reject) => {
+ const logger = createLogger("Provider");
+ // Get a reference to the platform proxy and add an event listener
+ // to bootstrap the application once the platform is ready.
+ const platform = fin.Platform.getCurrentSync();
+
+ platform
+ .once("platform-api-ready", () => {
+ logger.info("Platform API Ready event received.");
+ bootstrap()
+ .then((success) => {
+ logger.info("Bootstrap return success:", success);
+ logger.info("Listener for Platform API Ready event setup.");
+ resolve(success);
+ return success;
+ })
+ .catch((failure) => {
+ logger.error("Failed bootstrap execution for the following reason:", failure);
+ resolve(false);
+ });
+ })
+ .catch(async (reason) => {
+ logger.error("Listener for Platform API Ready event had a problem being setup:", reason);
+ resolve(false);
+ });
+
+ // initialize the platform to prepare the application and trigger the bootstrapping
+ // process once the platform is ready.
+ initializePlatform()
+ .then((success) => {
+ logger.info("Platform Initialized with success:", success);
+ if (!success) {
+ resolve(success);
+ }
+ return success;
+ })
+ .catch((failure) => {
+ logger.error("Error encountered when trying to initiate platform:", failure);
+ reject(failure);
+ });
+ });
+ } finally {
+ await platformSplashProvider.close();
+ }
+}
+
+export function useOpenFin() {
+ const isInitialized = useRef(false);
+
+ useEffect(() => {
+ if (!isInitialized.current) {
+ init();
+ isInitialized.current = true;
+ }
+ }, []);
+}
diff --git a/frameworks/react/workspace-platform-starter/src/index.css b/frameworks/react/workspace-platform-starter/src/index.css
new file mode 100644
index 0000000..8612352
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/src/index.css
@@ -0,0 +1,72 @@
+:root {
+ font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
+ line-height: 1.5;
+ font-weight: 400;
+
+ color-scheme: light dark;
+ color: rgba(255, 255, 255, 0.87);
+ background-color: #242424;
+
+ font-synthesis: none;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+a {
+ font-weight: 500;
+ color: #646cff;
+ text-decoration: inherit;
+}
+a:hover {
+ color: #535bf2;
+}
+
+body {
+ margin: 0;
+ display: flex;
+ place-items: center;
+ min-width: 320px;
+ min-height: 100vh;
+}
+
+main {
+ padding: 2rem;
+}
+
+h1 {
+ font-size: 3.2em;
+ line-height: 1.1;
+}
+
+button {
+ border-radius: 8px;
+ border: 1px solid transparent;
+ padding: 0.6em 1.2em;
+ font-size: 1em;
+ font-weight: 500;
+ font-family: inherit;
+ background-color: #1a1a1a;
+ cursor: pointer;
+ transition: border-color 0.25s;
+}
+button:hover {
+ border-color: #646cff;
+}
+button:focus,
+button:focus-visible {
+ outline: 4px auto -webkit-focus-ring-color;
+}
+
+@media (prefers-color-scheme: light) {
+ :root {
+ color: #213547;
+ background-color: #ffffff;
+ }
+ a:hover {
+ color: #747bff;
+ }
+ button {
+ background-color: #f9f9f9;
+ }
+}
diff --git a/frameworks/react/workspace-platform-starter/src/main.tsx b/frameworks/react/workspace-platform-starter/src/main.tsx
new file mode 100644
index 0000000..8711709
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/src/main.tsx
@@ -0,0 +1,11 @@
+import { StrictMode } from "react";
+import { createRoot } from "react-dom/client";
+import App from "./app";
+
+import "./index.css";
+
+createRoot(document.getElementById("root")!).render(
+
+
+ ,
+);
diff --git a/frameworks/react/workspace-platform-starter/src/types/fdc3.d.ts b/frameworks/react/workspace-platform-starter/src/types/fdc3.d.ts
new file mode 100644
index 0000000..9a1254a
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/src/types/fdc3.d.ts
@@ -0,0 +1,5 @@
+import { type DesktopAgent } from "@finos/fdc3";
+
+declare global {
+ const fdc3: DesktopAgent;
+}
diff --git a/frameworks/react/workspace-platform-starter/src/types/fin.d.ts b/frameworks/react/workspace-platform-starter/src/types/fin.d.ts
new file mode 100644
index 0000000..8936d86
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/src/types/fin.d.ts
@@ -0,0 +1,5 @@
+import type { fin as FinApi } from "@openfin/core";
+
+declare global {
+ const fin: typeof FinApi;
+}
diff --git a/frameworks/react/workspace-platform-starter/src/views/view1.tsx b/frameworks/react/workspace-platform-starter/src/views/view1.tsx
new file mode 100644
index 0000000..8934453
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/src/views/view1.tsx
@@ -0,0 +1,3 @@
+export function View1() {
+ return View 1
;
+}
diff --git a/frameworks/react/workspace-platform-starter/src/views/view2.tsx b/frameworks/react/workspace-platform-starter/src/views/view2.tsx
new file mode 100644
index 0000000..ebe574e
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/src/views/view2.tsx
@@ -0,0 +1,3 @@
+export function View2() {
+ return View 2
;
+}
diff --git a/frameworks/react/workspace-platform-starter/src/vite-env.d.ts b/frameworks/react/workspace-platform-starter/src/vite-env.d.ts
new file mode 100644
index 0000000..11f02fe
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/src/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/frameworks/react/workspace-platform-starter/tsconfig.app.json b/frameworks/react/workspace-platform-starter/tsconfig.app.json
new file mode 100644
index 0000000..cc60616
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/tsconfig.app.json
@@ -0,0 +1,27 @@
+{
+ "compilerOptions": {
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
+ "target": "ES2021",
+ "useDefineForClassFields": true,
+ "lib": ["ES2021", "DOM", "DOM.Iterable"],
+ "module": "ESNext",
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "verbatimModuleSyntax": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+ "jsx": "react-jsx",
+
+ /* Linting */
+ "strict": false,
+
+ "rootDir": ".",
+ "baseUrl": ".",
+ "paths": {
+ "workspace-platform-starter/*": ["openfin/framework/*"]
+ }
+ },
+ "include": ["src", "openfin"]
+}
diff --git a/frameworks/react/workspace-platform-starter/tsconfig.json b/frameworks/react/workspace-platform-starter/tsconfig.json
new file mode 100644
index 0000000..d32ff68
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/tsconfig.json
@@ -0,0 +1,4 @@
+{
+ "files": [],
+ "references": [{ "path": "./tsconfig.app.json" }, { "path": "./tsconfig.node.json" }]
+}
diff --git a/frameworks/react/workspace-platform-starter/tsconfig.node.json b/frameworks/react/workspace-platform-starter/tsconfig.node.json
new file mode 100644
index 0000000..80e75ff
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/tsconfig.node.json
@@ -0,0 +1,25 @@
+{
+ "compilerOptions": {
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
+ "target": "ES2022",
+ "lib": ["ES2023"],
+ "module": "ESNext",
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "verbatimModuleSyntax": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "erasableSyntaxOnly": true,
+ "noFallthroughCasesInSwitch": true,
+ "noUncheckedSideEffectImports": true,
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/frameworks/react/workspace-platform-starter/vite.config.ts b/frameworks/react/workspace-platform-starter/vite.config.ts
new file mode 100644
index 0000000..8bd6870
--- /dev/null
+++ b/frameworks/react/workspace-platform-starter/vite.config.ts
@@ -0,0 +1,16 @@
+import react from "@vitejs/plugin-react";
+import { defineConfig } from "vite";
+import path from 'path';
+
+export default defineConfig({
+ plugins: [react()],
+ resolve: {
+ alias: {
+ 'workspace-platform-starter': path.resolve(__dirname, './openfin/framework')
+ },
+ extensions: ['.tsx', '.ts', '.js', '.json'],
+ },
+ server: {
+ port: 8080
+ },
+});