diff --git a/.eslintrc.js b/.eslintrc.js
index 129a36e41bf..7addbda6455 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -130,5 +130,7 @@ module.exports = {
"src/emulator/auth/schema.ts",
// TODO(hsubox76): Set up a job to run eslint separately on vscode dir
"firebase-vscode/",
+ // If this is leftover from "clean-install.sh", don't lint it
+ "clean/**",
],
};
diff --git a/firebase-vscode/.eslintrc.json b/firebase-vscode/.eslintrc.json
index 681109e79a6..566c5f681c1 100644
--- a/firebase-vscode/.eslintrc.json
+++ b/firebase-vscode/.eslintrc.json
@@ -1,24 +1,20 @@
{
- "root": true,
- "parser": "@typescript-eslint/parser",
- "parserOptions": {
- "ecmaVersion": 6,
- "sourceType": "module"
- },
- "plugins": [
- "@typescript-eslint"
- // "react"
- ],
- "rules": {
- "@typescript-eslint/semi": "warn",
- "curly": "warn",
- "eqeqeq": "warn",
- "no-throw-literal": "warn",
- "semi": "off"
- },
- "ignorePatterns": [
- "out",
- "dist",
- "**/*.d.ts"
- ]
+ "root": true,
+ "parser": "@typescript-eslint/parser",
+ "parserOptions": {
+ "ecmaVersion": 6,
+ "sourceType": "module"
+ },
+ "plugins": [
+ "@typescript-eslint"
+ // "react"
+ ],
+ "rules": {
+ "@typescript-eslint/semi": "warn",
+ "curly": "warn",
+ "eqeqeq": "warn",
+ "no-throw-literal": "warn",
+ "semi": "off"
+ },
+ "ignorePatterns": ["out", "dist", "**/*.d.ts"]
}
diff --git a/firebase-vscode/.gitignore b/firebase-vscode/.gitignore
index 6e916f483d0..c974aeb9293 100644
--- a/firebase-vscode/.gitignore
+++ b/firebase-vscode/.gitignore
@@ -4,4 +4,5 @@ dist/
resources/dist
.vscode-test
.wdio-vscode-service
-logs
\ No newline at end of file
+logs
+!*.tgz
\ No newline at end of file
diff --git a/firebase-vscode/.prettierignore b/firebase-vscode/.prettierignore
new file mode 100644
index 00000000000..284acd000df
--- /dev/null
+++ b/firebase-vscode/.prettierignore
@@ -0,0 +1,10 @@
+## The default
+**/.git
+**/.svn
+**/.hg
+**/node_modules
+
+## The good stuff
+dist
+resources
+package-lock.json
\ No newline at end of file
diff --git a/firebase-vscode/.vscode/extensions.json b/firebase-vscode/.vscode/extensions.json
index d26385a6325..c0a2258b02c 100644
--- a/firebase-vscode/.vscode/extensions.json
+++ b/firebase-vscode/.vscode/extensions.json
@@ -1,7 +1,5 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
- "recommendations": [
- "dbaeumer.vscode-eslint"
- ]
+ "recommendations": ["dbaeumer.vscode-eslint"]
}
diff --git a/firebase-vscode/.vscode/launch.json b/firebase-vscode/.vscode/launch.json
index 9ade0d5097d..1a33bfd5e01 100644
--- a/firebase-vscode/.vscode/launch.json
+++ b/firebase-vscode/.vscode/launch.json
@@ -9,12 +9,8 @@
"name": "Run Extension",
"type": "extensionHost",
"request": "launch",
- "args": [
- "--extensionDevelopmentPath=${workspaceFolder}"
- ],
- "outFiles": [
- "${workspaceFolder}/dist/**/*.js"
- ],
+ "args": ["--extensionDevelopmentPath=${workspaceFolder}"],
+ "outFiles": ["${workspaceFolder}/dist/**/*.js"],
"preLaunchTask": "${defaultBuildTask}"
},
{
@@ -25,9 +21,7 @@
"--extensionDevelopmentPath=${workspaceFolder}",
"--extensionTestsPath=${workspaceFolder}/dist/test/suite/index"
],
- "outFiles": [
- "${workspaceFolder}/dist/test/**/*.js"
- ],
+ "outFiles": ["${workspaceFolder}/dist/test/**/*.js"],
"preLaunchTask": "${defaultBuildTask}"
}
]
diff --git a/firebase-vscode/.vscodeignore b/firebase-vscode/.vscodeignore
index 42df22e391a..43d19f15c1a 100644
--- a/firebase-vscode/.vscodeignore
+++ b/firebase-vscode/.vscodeignore
@@ -17,4 +17,7 @@ webpack.*.js
../
*.zip
node_modules/
-dist/test/
\ No newline at end of file
+dist/test/
+*.tgz
+package-lock.json
+.wdio-vscode-service/
\ No newline at end of file
diff --git a/firebase-vscode/CHANGELOG.md b/firebase-vscode/CHANGELOG.md
index c66b2e9b10e..c0a0ed3a0ce 100644
--- a/firebase-vscode/CHANGELOG.md
+++ b/firebase-vscode/CHANGELOG.md
@@ -1,5 +1,45 @@
# Change Log
+## 0.2.0
+
+- Fix Auth on IDX
+
+## 0.1.9
+
+- Fix "Add Data" for nonnull and custom keys
+- Emulator Bump 1.1.17
+
+## 0.1.8
+
+- Update Extensions page Logo
+- Update README for Extensions page
+- Surface emulator issues as notifications
+- Generate .graphqlrc automatically
+- Emulator Bump 1.1.16
+
+## 0.1.7
+
+- Emulator Bump 1.1.14
+
+## 0.1.6
+
+- Fix deploy command
+
+## 0.1.5
+
+- Fix authentication issues for Introspection and local executions
+
+## 0.1.4
+
+- Dataconnect Sidebar UI refresh
+ - Emulator and Production sections
+ - Separate Deploy All and Deploy individual buttons
+ - Links to external documentation
+
+## 0.1.0
+
+- Data Connect Support
+
## 0.0.25 (unreleased)
- Replace predeploy hack with something more robust.
diff --git a/firebase-vscode/README.md b/firebase-vscode/README.md
index abaea3ca54f..0e93b223f9e 100644
--- a/firebase-vscode/README.md
+++ b/firebase-vscode/README.md
@@ -1,67 +1,12 @@
-# firebase-vscode README
+# Firebase Extension
-This extension is in the development and exploration stage.
+VSCode extension for Firebase. The Firebase Extension currently supports the Data Connect product.
-## Running
+## Data Connect features
-1. In order to make sure f5 launches the extension properly, first open your
- VS Code session from the `firebase-vscode` subdirectory (not the `firebase-tools` directory).
-2. npm i (run this in both `firebase-tools` and `firebase-vscode`)
-3. Make sure the extension `amodio.tsl-problem-matcher` is installed - this
- enables the watcher to work, otherwise the Extension Development Host
- will not automatically open on F5 when the compilation is done.
-4. f5 to run opens new window
- f5 -> npm run watch defined in tasks.json
- My terminal didn't have npm available but yours might
-
-Workaround if f5 doesnt work:
-
-1. Execute `npm run watch` from within the vscode directory
- Aside: Running `npm run watch` or `npm run build` the extension is compiled into dist (extension.js)
- Changing code within extension is hot-reloaded
- Modifying extensions.js will not hot-reload
- source file src/extension.ts
-2. Wait for completion
-3. Hit play from the left nav
-
-New code changes are automatically rebuilt if you have `watch` running, however the new VSCode Plugin-enabled window will not reflect changes until reloaded.
-Manual reload from new window: "Developer: Reload Window" Default hotkey: cmd + R
-
-The communication between UI and extension done via the broker (see webview.postMessage)
-Web view uses react (carry-over from the hackweek project courtesy of Roman and Prakhar)
-
-## Structure
-
-Extention.ts main entry point, calls sidebar.ts and workflow.ts
-sidebar.ts loads the UI from the webviews folder
-workflow.ts is the driving component (logic source)
-cli.ts wraps CLI methods, importing from firebase-tools/src
-
-When workflow.ts needs to execute some CLI command, it defers to cli.ts
-
-## State
-
-currentOptions maintains the currentState of the plugin and is passed as a whole object to populate calls to the firebase-tools methods
-`prepare` in the command includes a lot of
-
-## Logic
-
-Calling firebase-tools in general follows the stuff:
-
-1. instead of calling `before`, call `requireAuth` instead
- requireAuth is a prerequisite for the plugin UI, needed
- Zero-state (before login) directs the user to sign in with google (using firebase-tools CLI)
-2. prepare is an implicit command in the cmd class
-3. action
-
-requireAuth -> login with service account or check that you're already logged in via firebase-tools
-
-## Open issues
-
-Login changes in the CLI are not immediately reflected in the Plugin, requires restart
-If logged-out in the middle of a plugin session, handle requireAuth errors gracefully
-Plugin startup is flaky sometimes
-Unit/Integration tests are not developed
-Code cleanliness/structure TODOs
-tsconfig.json's rootDirs includes ["src", "../src", "common"] which causes some issues with import autocomplete
-Three package.jsons - one for monospace and one for the standalone plugin, and then root to copy the correct version
+- Inline CodeLenses allow for one-click execution of operations
+ - Pass in arguments
+ - Impersonate user authentication
+- Generate queries and mutations from your schema with one click
+- Run against the emulator for offline development
+- Deploy and execute against production
diff --git a/firebase-vscode/README_DEV.md b/firebase-vscode/README_DEV.md
new file mode 100644
index 00000000000..abaea3ca54f
--- /dev/null
+++ b/firebase-vscode/README_DEV.md
@@ -0,0 +1,67 @@
+# firebase-vscode README
+
+This extension is in the development and exploration stage.
+
+## Running
+
+1. In order to make sure f5 launches the extension properly, first open your
+ VS Code session from the `firebase-vscode` subdirectory (not the `firebase-tools` directory).
+2. npm i (run this in both `firebase-tools` and `firebase-vscode`)
+3. Make sure the extension `amodio.tsl-problem-matcher` is installed - this
+ enables the watcher to work, otherwise the Extension Development Host
+ will not automatically open on F5 when the compilation is done.
+4. f5 to run opens new window
+ f5 -> npm run watch defined in tasks.json
+ My terminal didn't have npm available but yours might
+
+Workaround if f5 doesnt work:
+
+1. Execute `npm run watch` from within the vscode directory
+ Aside: Running `npm run watch` or `npm run build` the extension is compiled into dist (extension.js)
+ Changing code within extension is hot-reloaded
+ Modifying extensions.js will not hot-reload
+ source file src/extension.ts
+2. Wait for completion
+3. Hit play from the left nav
+
+New code changes are automatically rebuilt if you have `watch` running, however the new VSCode Plugin-enabled window will not reflect changes until reloaded.
+Manual reload from new window: "Developer: Reload Window" Default hotkey: cmd + R
+
+The communication between UI and extension done via the broker (see webview.postMessage)
+Web view uses react (carry-over from the hackweek project courtesy of Roman and Prakhar)
+
+## Structure
+
+Extention.ts main entry point, calls sidebar.ts and workflow.ts
+sidebar.ts loads the UI from the webviews folder
+workflow.ts is the driving component (logic source)
+cli.ts wraps CLI methods, importing from firebase-tools/src
+
+When workflow.ts needs to execute some CLI command, it defers to cli.ts
+
+## State
+
+currentOptions maintains the currentState of the plugin and is passed as a whole object to populate calls to the firebase-tools methods
+`prepare` in the command includes a lot of
+
+## Logic
+
+Calling firebase-tools in general follows the stuff:
+
+1. instead of calling `before`, call `requireAuth` instead
+ requireAuth is a prerequisite for the plugin UI, needed
+ Zero-state (before login) directs the user to sign in with google (using firebase-tools CLI)
+2. prepare is an implicit command in the cmd class
+3. action
+
+requireAuth -> login with service account or check that you're already logged in via firebase-tools
+
+## Open issues
+
+Login changes in the CLI are not immediately reflected in the Plugin, requires restart
+If logged-out in the middle of a plugin session, handle requireAuth errors gracefully
+Plugin startup is flaky sometimes
+Unit/Integration tests are not developed
+Code cleanliness/structure TODOs
+tsconfig.json's rootDirs includes ["src", "../src", "common"] which causes some issues with import autocomplete
+Three package.jsons - one for monospace and one for the standalone plugin, and then root to copy the correct version
diff --git a/firebase-vscode/common/error.ts b/firebase-vscode/common/error.ts
new file mode 100644
index 00000000000..93d826faa79
--- /dev/null
+++ b/firebase-vscode/common/error.ts
@@ -0,0 +1,28 @@
+/** An error thrown before the GraphQL operation could complete.
+ *
+ * This could include HTTP errors or JSON parsing errors.
+ */
+export class DataConnectError extends Error {
+ constructor(message: string, cause?: unknown) {
+ super(message, { cause });
+ }
+}
+
+/** Encode an error into a {@link SerializedError} */
+export function toSerializedError(error: Error): SerializedError {
+ return {
+ name: error.name,
+ message: error.message,
+ stack: error.stack,
+ cause:
+ error.cause instanceof Error ? toSerializedError(error.cause) : undefined,
+ };
+}
+
+/** An error object that can be sent across webview boundaries */
+export interface SerializedError {
+ name?: string;
+ message: string;
+ stack?: string;
+ cause?: SerializedError;
+}
diff --git a/firebase-vscode/common/graphql.ts b/firebase-vscode/common/graphql.ts
new file mode 100644
index 00000000000..38d03a72c32
--- /dev/null
+++ b/firebase-vscode/common/graphql.ts
@@ -0,0 +1,63 @@
+import { ExecutionResult, GraphQLError } from "graphql";
+
+/** Asserts that an unknown object is a {@link ExecutionResult} */
+export function assertExecutionResult(
+ response: any
+): asserts response is ExecutionResult {
+ if (!response) {
+ throw new Error(`Expected ExecutionResult but got ${response}`);
+ }
+
+ const type = typeof response;
+ if (type !== "object") {
+ throw new Error(`Expected ExecutionResult but got ${type}`);
+ }
+
+ const { data, errors } = response;
+ if (!data && !errors) {
+ throw new Error(
+ `Expected ExecutionResult to have either "data" or "errors" set but none found`
+ );
+ }
+
+ if (errors) {
+ if (!Array.isArray(errors)) {
+ throw new Error(
+ `Expected errors to be an array but got ${typeof errors}`
+ );
+ }
+ for (const error of errors) {
+ assertGraphQLError(error);
+ }
+ }
+}
+
+export function isExecutionResult(response: any): response is ExecutionResult {
+ try {
+ assertExecutionResult(response);
+ return true;
+ } catch {
+ return false;
+ }
+}
+
+/** Asserts that an unknown object is a {@link GraphQLError} */
+export function assertGraphQLError(
+ error: unknown
+): asserts error is GraphQLError {
+ if (!error) {
+ throw new Error(`Expected GraphQLError but got ${error}`);
+ }
+
+ const type = typeof error;
+ if (type !== "object") {
+ throw new Error(`Expected GraphQLError but got ${type}`);
+ }
+
+ const { message } = error as GraphQLError;
+ if (typeof message !== "string") {
+ throw new Error(
+ `Expected GraphQLError to have "message" set but got ${typeof message}`
+ );
+ }
+}
diff --git a/firebase-vscode/common/messaging/broker.ts b/firebase-vscode/common/messaging/broker.ts
index 5c19863b94a..c200a58a800 100644
--- a/firebase-vscode/common/messaging/broker.ts
+++ b/firebase-vscode/common/messaging/broker.ts
@@ -92,7 +92,7 @@ export function createBroker<
on(
message: Extract,
listener: (params: IncomingMessages[E]) => void
- ) {
+ ): () => void {
return broker.addListener(message, listener);
},
delete(): void {
diff --git a/firebase-vscode/common/messaging/protocol.ts b/firebase-vscode/common/messaging/protocol.ts
index 74f61082dea..c6cd978cb67 100644
--- a/firebase-vscode/common/messaging/protocol.ts
+++ b/firebase-vscode/common/messaging/protocol.ts
@@ -8,6 +8,28 @@ import { User } from "../../../src/types/auth";
import { ServiceAccountUser } from "../types";
import { RCData } from "../../../src/rc";
import { EmulatorUiSelections, RunningEmulatorInfo } from "./types";
+import { ExecutionResult } from "graphql";
+import { SerializedError } from "../error";
+
+export const DEFAULT_EMULATOR_UI_SELECTIONS: EmulatorUiSelections = {
+ projectId: "demo-something",
+ importStateFolderPath: "",
+ exportStateOnExit: false,
+ mode: "dataconnect",
+ debugLogging: false,
+};
+
+export enum UserMockKind {
+ ADMIN = "admin",
+ UNAUTHENTICATED = "unauthenticated",
+ AUTHENTICATED = "authenticated",
+}
+export type UserMock =
+ | { kind: UserMockKind.ADMIN | UserMockKind.UNAUTHENTICATED }
+ | {
+ kind: UserMockKind.AUTHENTICATED;
+ claims: string;
+ };
export interface WebviewToExtensionParamsMap {
/**
@@ -17,6 +39,13 @@ export interface WebviewToExtensionParamsMap {
addUser: {};
logout: { email: string };
+ /* Emulator panel requests */
+ getEmulatorUiSelections: void;
+ getEmulatorInfos: void;
+ updateEmulatorUiSelections: Partial;
+ /* Equivalent to the `firebase emulators:start` command.*/
+ launchEmulators: void;
+
/** Notify extension that current user has been changed in UI. */
requestChangeUser: { user: User | ServiceAccountUser };
@@ -44,6 +73,9 @@ export interface WebviewToExtensionParamsMap {
*/
promptUserForInput: { title: string; prompt: string };
+ /** Calls the `firebase init` CLI */
+ runFirebaseInit: void;
+
/**
* Show a UI message using the vscode interface
*/
@@ -61,23 +93,51 @@ export interface WebviewToExtensionParamsMap {
href: string;
};
- /**
- * Equivalent to the `firebase emulators:start` command.
- */
- launchEmulators: {
- emulatorUiSelections: EmulatorUiSelections;
- };
-
/** Stops the emulators gracefully allowing for data export if required. */
- stopEmulators: {};
+ stopEmulators: void;
selectEmulatorImportFolder: {};
+ definedDataConnectArgs: string;
+
/** Prompts the user to select a directory in which to place the quickstart */
chooseQuickstartDir: {};
+
+ notifyAuthUserMockChange: UserMock;
+
+ /** Deploy connectors/services to production */
+ "fdc.deploy": void;
+
+ /** Deploy all connectors/services to production */
+ "fdc.deploy-all": void;
+
+ // Initialize "result" tab.
+ getDataConnectResults: void;
+
+ // execute terminal tasks
+ executeLogin: void;
+}
+
+export interface DataConnectResults {
+ query: string;
+ displayName: string;
+ results?: ExecutionResult | SerializedError;
+ args?: string;
}
+export type ValueOrError =
+ | { value: T; error: undefined }
+ | { error: string; value: undefined };
+
export interface ExtensionToWebviewParamsMap {
+ /** Triggered when the emulator UI/state changes */
+ notifyEmulatorUiSelectionsChanged: EmulatorUiSelections;
+ notifyEmulatorStateChanged: {
+ status: "running" | "stopped" | "starting" | "stopping";
+ infos: RunningEmulatorInfo | undefined;
+ };
+ notifyEmulatorImportFolder: { folder: string };
+
/** Triggered when new environment variables values are found. */
notifyEnv: { env: { isMonospace: boolean } };
@@ -120,8 +180,8 @@ export interface ExtensionToWebviewParamsMap {
* .firebaserc
*/
notifyFirebaseConfig: {
- firebaseJson: FirebaseConfig | undefined;
- firebaseRC: RCData | undefined;
+ firebaseJson: ValueOrError | undefined;
+ firebaseRC: ValueOrError | undefined;
};
/**
@@ -129,10 +189,9 @@ export interface ExtensionToWebviewParamsMap {
*/
notifyPreviewChannelResponse: { id: string };
- notifyEmulatorsStopped: {};
- notifyEmulatorStartFailed: {};
- notifyRunningEmulatorInfo: RunningEmulatorInfo;
- notifyEmulatorImportFolder: { folder: string };
+ // data connect specific
+ notifyDataConnectResults: DataConnectResults;
+ notifyDataConnectRequiredArgs: { args: string[] };
}
export type MessageParamsMap =
diff --git a/firebase-vscode/common/messaging/types.d.ts b/firebase-vscode/common/messaging/types.d.ts
index 543207cffb9..dadeab44cdc 100644
--- a/firebase-vscode/common/messaging/types.d.ts
+++ b/firebase-vscode/common/messaging/types.d.ts
@@ -30,6 +30,6 @@ export interface EmulatorUiSelections {
firebaseJsonPath?: string;
importStateFolderPath?: string;
exportStateOnExit: boolean;
- mode: "hosting" | "all";
+ mode: "hosting" | "all" | "dataconnect";
debugLogging: boolean;
}
diff --git a/firebase-vscode/common/types.d.ts b/firebase-vscode/common/types.d.ts
index 72f8bf49c5f..076dffb25e2 100644
--- a/firebase-vscode/common/types.d.ts
+++ b/firebase-vscode/common/types.d.ts
@@ -1,8 +1,8 @@
export interface ServiceAccount {
- user: ServiceAccountUser
+ user: ServiceAccountUser;
}
export interface ServiceAccountUser {
email: string;
- type: 'service_account'
+ type: "service_account";
}
diff --git a/firebase-vscode/graphql-language-service-5.2.0.tgz b/firebase-vscode/graphql-language-service-5.2.0.tgz
new file mode 100644
index 00000000000..cd9b847871a
Binary files /dev/null and b/firebase-vscode/graphql-language-service-5.2.0.tgz differ
diff --git a/firebase-vscode/graphql-language-service-server-2.12.0.tgz b/firebase-vscode/graphql-language-service-server-2.12.0.tgz
new file mode 100644
index 00000000000..7d8bf353716
Binary files /dev/null and b/firebase-vscode/graphql-language-service-server-2.12.0.tgz differ
diff --git a/firebase-vscode/package-lock.json b/firebase-vscode/package-lock.json
index b5bd583335f..937089641f0 100644
--- a/firebase-vscode/package-lock.json
+++ b/firebase-vscode/package-lock.json
@@ -1,19 +1,26 @@
{
"name": "firebase-vscode",
- "version": "0.0.24",
+ "version": "0.2.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "firebase-vscode",
- "version": "0.0.24",
+ "version": "0.2.0",
"dependencies": {
- "@preact/signals-react": "^1.3.6",
+ "@preact/signals-core": "^1.4.0",
+ "@preact/signals-react": "1.3.6",
"@vscode/codicons": "0.0.30",
+ "@vscode/vsce": "^2.25.0",
"@vscode/webview-ui-toolkit": "^1.2.1",
"classnames": "^2.3.2",
+ "exponential-backoff": "3.1.1",
+ "graphql-language-service": "file:graphql-language-service-5.2.0.tgz",
+ "graphql-language-service-server": "file:graphql-language-service-server-2.12.0.tgz",
+ "js-yaml": "^4.1.0",
"react": "^18.2.0",
- "react-dom": "^18.2.0"
+ "react-dom": "^18.2.0",
+ "vscode-languageclient": "8.1.0"
},
"devDependencies": {
"@teamsupercell/typings-for-css-modules-loader": "^2.5.1",
@@ -36,9 +43,12 @@
"eslint-plugin-react": "^7.32.2",
"fork-ts-checker-webpack-plugin": "^7.3.0",
"glob": "^8.0.3",
+ "graphql": "^16.7.1",
"mini-css-extract-plugin": "^2.6.0",
"mocha": "^10.1.0",
+ "node-loader": "2.0.0",
"postcss-loader": "^7.0.0",
+ "prettier": "^3.1.1",
"sass": "^1.52.0",
"sass-loader": "^13.0.0",
"string-replace-loader": "^3.1.0",
@@ -55,18 +65,57 @@
},
"node_modules/@aashutoshrathi/word-wrap": {
"version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.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==",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@ardatan/sync-fetch": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/@ardatan/sync-fetch/-/sync-fetch-0.0.1.tgz",
+ "integrity": "sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==",
+ "dependencies": {
+ "node-fetch": "^2.6.1"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@ardatan/sync-fetch/node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@babel/code-frame": {
"version": "7.24.2",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz",
- "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/highlight": "^7.24.2",
"picocolors": "^1.0.0"
@@ -75,20 +124,217 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/compat-data": {
+ "version": "7.24.4",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz",
+ "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.24.4",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz",
+ "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.24.2",
+ "@babel/generator": "^7.24.4",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helpers": "^7.24.4",
+ "@babel/parser": "^7.24.4",
+ "@babel/template": "^7.24.0",
+ "@babel/traverse": "^7.24.1",
+ "@babel/types": "^7.24.0",
+ "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/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.24.4",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz",
+ "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==",
+ "dependencies": {
+ "@babel/types": "^7.24.0",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
+ "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+ "dependencies": {
+ "@babel/compat-data": "^7.23.5",
+ "@babel/helper-validator-option": "^7.23.5",
+ "browserslist": "^4.22.2",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "dependencies": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.24.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz",
+ "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==",
+ "dependencies": {
+ "@babel/types": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
+ "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz",
+ "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz",
+ "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/helper-validator-identifier": {
"version": "7.22.20",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
- "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+ "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.24.4",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz",
+ "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==",
+ "dependencies": {
+ "@babel/template": "^7.24.0",
+ "@babel/traverse": "^7.24.1",
+ "@babel/types": "^7.24.0"
+ },
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/highlight": {
"version": "7.24.2",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz",
- "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/helper-validator-identifier": "^7.22.20",
"chalk": "^2.4.2",
@@ -101,9 +347,7 @@
},
"node_modules/@babel/highlight/node_modules/ansi-styles": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"color-convert": "^1.9.0"
},
@@ -113,9 +357,7 @@
},
"node_modules/@babel/highlight/node_modules/chalk": {
"version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
@@ -127,27 +369,21 @@
},
"node_modules/@babel/highlight/node_modules/escape-string-regexp": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/@babel/highlight/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==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/highlight/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==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^3.0.0"
},
@@ -155,20 +391,97 @@
"node": ">=4"
}
},
+ "node_modules/@babel/parser": {
+ "version": "7.24.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz",
+ "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-assertions": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz",
+ "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz",
+ "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==",
+ "dependencies": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/parser": "^7.24.0",
+ "@babel/types": "^7.24.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.24.1",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz",
+ "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==",
+ "dependencies": {
+ "@babel/code-frame": "^7.24.1",
+ "@babel/generator": "^7.24.1",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.24.1",
+ "@babel/types": "^7.24.0",
+ "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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz",
+ "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.23.4",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@discoveryjs/json-ext": {
"version": "0.5.7",
- "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
- "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/@eslint-community/eslint-utils": {
"version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"eslint-visitor-keys": "^3.3.0"
},
@@ -181,18 +494,16 @@
},
"node_modules/@eslint-community/regexpp": {
"version": "4.10.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
- "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
"node_modules/@eslint/eslintrc": {
"version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
@@ -212,28 +523,25 @@
}
},
"node_modules/@eslint/js": {
- "version": "8.57.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
- "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
+ "version": "8.56.0",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/@fastify/accept-negotiator": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz",
- "integrity": "sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14"
}
},
"node_modules/@fastify/ajv-compiler": {
"version": "3.5.0",
- "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz",
- "integrity": "sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ajv": "^8.11.0",
"ajv-formats": "^2.1.1",
@@ -242,101 +550,406 @@
},
"node_modules/@fastify/ajv-compiler/node_modules/ajv": {
"version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/@fastify/ajv-compiler/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@fastify/busboy": {
+ "version": "2.1.0",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@fastify/cors": {
+ "version": "8.5.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fastify-plugin": "^4.0.0",
+ "mnemonist": "0.39.6"
+ }
+ },
+ "node_modules/@fastify/deepmerge": {
+ "version": "1.3.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@fastify/error": {
+ "version": "3.4.1",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@fastify/fast-json-stringify-compiler": {
+ "version": "4.3.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-json-stringify": "^5.7.0"
+ }
+ },
+ "node_modules/@fastify/send": {
+ "version": "2.1.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@lukeed/ms": "^2.0.1",
+ "escape-html": "~1.0.3",
+ "fast-decode-uri-component": "^1.0.1",
+ "http-errors": "2.0.0",
+ "mime": "^3.0.0"
+ }
+ },
+ "node_modules/@fastify/static": {
+ "version": "6.12.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@fastify/accept-negotiator": "^1.0.0",
+ "@fastify/send": "^2.0.0",
+ "content-disposition": "^0.5.3",
+ "fastify-plugin": "^4.0.0",
+ "glob": "^8.0.1",
+ "p-limit": "^3.1.0"
+ }
+ },
+ "node_modules/@graphql-tools/batch-execute": {
+ "version": "9.0.4",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-9.0.4.tgz",
+ "integrity": "sha512-kkebDLXgDrep5Y0gK1RN3DMUlLqNhg60OAz0lTCqrYeja6DshxLtLkj+zV4mVbBA4mQOEoBmw6g1LZs3dA84/w==",
+ "dependencies": {
+ "@graphql-tools/utils": "^10.0.13",
+ "dataloader": "^2.2.2",
+ "tslib": "^2.4.0",
+ "value-or-promise": "^1.0.12"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/code-file-loader": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-8.0.3.tgz",
+ "integrity": "sha512-gVnnlWs0Ua+5FkuHHEriFUOI3OIbHv6DS1utxf28n6NkfGMJldC4j0xlJRY0LS6dWK34IGYgD4HelKYz2l8KiA==",
+ "dependencies": {
+ "@graphql-tools/graphql-tag-pluck": "8.1.0",
+ "@graphql-tools/utils": "^10.0.0",
+ "globby": "^11.0.3",
+ "tslib": "^2.4.0",
+ "unixify": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/delegate": {
+ "version": "10.0.4",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-10.0.4.tgz",
+ "integrity": "sha512-WswZRbQZMh/ebhc8zSomK9DIh6Pd5KbuiMsyiKkKz37TWTrlCOe+4C/fyrBFez30ksq6oFyCeSKMwfrCbeGo0Q==",
+ "dependencies": {
+ "@graphql-tools/batch-execute": "^9.0.4",
+ "@graphql-tools/executor": "^1.2.1",
+ "@graphql-tools/schema": "^10.0.3",
+ "@graphql-tools/utils": "^10.0.13",
+ "dataloader": "^2.2.2",
+ "tslib": "^2.5.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/executor": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/executor/-/executor-1.2.6.tgz",
+ "integrity": "sha512-+1kjfqzM5T2R+dCw7F4vdJ3CqG+fY/LYJyhNiWEFtq0ToLwYzR/KKyD8YuzTirEjSxWTVlcBh7endkx5n5F6ew==",
+ "dependencies": {
+ "@graphql-tools/utils": "^10.1.1",
+ "@graphql-typed-document-node/core": "3.2.0",
+ "@repeaterjs/repeater": "^3.0.4",
+ "tslib": "^2.4.0",
+ "value-or-promise": "^1.0.12"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/executor-graphql-ws": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/executor-graphql-ws/-/executor-graphql-ws-1.1.2.tgz",
+ "integrity": "sha512-+9ZK0rychTH1LUv4iZqJ4ESbmULJMTsv3XlFooPUngpxZkk00q6LqHKJRrsLErmQrVaC7cwQCaRBJa0teK17Lg==",
+ "dependencies": {
+ "@graphql-tools/utils": "^10.0.13",
+ "@types/ws": "^8.0.0",
+ "graphql-ws": "^5.14.0",
+ "isomorphic-ws": "^5.0.0",
+ "tslib": "^2.4.0",
+ "ws": "^8.13.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/executor-http": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/executor-http/-/executor-http-1.0.9.tgz",
+ "integrity": "sha512-+NXaZd2MWbbrWHqU4EhXcrDbogeiCDmEbrAN+rMn4Nu2okDjn2MTFDbTIab87oEubQCH4Te1wDkWPKrzXup7+Q==",
+ "dependencies": {
+ "@graphql-tools/utils": "^10.0.13",
+ "@repeaterjs/repeater": "^3.0.4",
+ "@whatwg-node/fetch": "^0.9.0",
+ "extract-files": "^11.0.0",
+ "meros": "^1.2.1",
+ "tslib": "^2.4.0",
+ "value-or-promise": "^1.0.12"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/executor-legacy-ws": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-1.0.6.tgz",
+ "integrity": "sha512-lDSxz9VyyquOrvSuCCnld3256Hmd+QI2lkmkEv7d4mdzkxkK4ddAWW1geQiWrQvWmdsmcnGGlZ7gDGbhEExwqg==",
+ "dependencies": {
+ "@graphql-tools/utils": "^10.0.13",
+ "@types/ws": "^8.0.0",
+ "isomorphic-ws": "^5.0.0",
+ "tslib": "^2.4.0",
+ "ws": "^8.15.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/graphql-file-loader": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-8.0.1.tgz",
+ "integrity": "sha512-7gswMqWBabTSmqbaNyWSmRRpStWlcCkBc73E6NZNlh4YNuiyKOwbvSkOUYFOqFMfEL+cFsXgAvr87Vz4XrYSbA==",
+ "dependencies": {
+ "@graphql-tools/import": "7.0.1",
+ "@graphql-tools/utils": "^10.0.13",
+ "globby": "^11.0.3",
+ "tslib": "^2.4.0",
+ "unixify": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/graphql-tag-pluck": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-8.1.0.tgz",
+ "integrity": "sha512-kt5l6H/7QxQcIaewInTcune6NpATojdFEW98/8xWcgmy7dgXx5vU9e0AicFZIH+ewGyZzTpwFqO2RI03roxj2w==",
+ "dependencies": {
+ "@babel/core": "^7.22.9",
+ "@babel/parser": "^7.16.8",
+ "@babel/plugin-syntax-import-assertions": "^7.20.0",
+ "@babel/traverse": "^7.16.8",
+ "@babel/types": "^7.16.8",
+ "@graphql-tools/utils": "^10.0.0",
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/import": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-7.0.1.tgz",
+ "integrity": "sha512-935uAjAS8UAeXThqHfYVr4HEAp6nHJ2sximZKO1RzUTq5WoALMAhhGARl0+ecm6X+cqNUwIChJbjtaa6P/ML0w==",
+ "dependencies": {
+ "@graphql-tools/utils": "^10.0.13",
+ "resolve-from": "5.0.0",
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-tools/json-file-loader": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-8.0.1.tgz",
+ "integrity": "sha512-lAy2VqxDAHjVyqeJonCP6TUemrpYdDuKt25a10X6zY2Yn3iFYGnuIDQ64cv3ytyGY6KPyPB+Kp+ZfOkNDG3FQA==",
+ "dependencies": {
+ "@graphql-tools/utils": "^10.0.13",
+ "globby": "^11.0.3",
+ "tslib": "^2.4.0",
+ "unixify": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
}
},
- "node_modules/@fastify/ajv-compiler/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
- },
- "node_modules/@fastify/busboy": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
- "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
- "dev": true,
+ "node_modules/@graphql-tools/load": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-8.0.2.tgz",
+ "integrity": "sha512-S+E/cmyVmJ3CuCNfDuNF2EyovTwdWfQScXv/2gmvJOti2rGD8jTt9GYVzXaxhblLivQR9sBUCNZu/w7j7aXUCA==",
+ "dependencies": {
+ "@graphql-tools/schema": "^10.0.3",
+ "@graphql-tools/utils": "^10.0.13",
+ "p-limit": "3.1.0",
+ "tslib": "^2.4.0"
+ },
"engines": {
- "node": ">=14"
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
}
},
- "node_modules/@fastify/cors": {
- "version": "8.5.0",
- "resolved": "https://registry.npmjs.org/@fastify/cors/-/cors-8.5.0.tgz",
- "integrity": "sha512-/oZ1QSb02XjP0IK1U0IXktEsw/dUBTxJOW7IpIeO8c/tNalw/KjoNSJv1Sf6eqoBPO+TDGkifq6ynFK3v68HFQ==",
- "dev": true,
+ "node_modules/@graphql-tools/merge": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-9.0.3.tgz",
+ "integrity": "sha512-FeKv9lKLMwqDu0pQjPpF59GY3HReUkWXKsMIuMuJQOKh9BETu7zPEFUELvcw8w+lwZkl4ileJsHXC9+AnsT2Lw==",
"dependencies": {
- "fastify-plugin": "^4.0.0",
- "mnemonist": "0.39.6"
+ "@graphql-tools/utils": "^10.0.13",
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
}
},
- "node_modules/@fastify/error": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.4.1.tgz",
- "integrity": "sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==",
- "dev": true
- },
- "node_modules/@fastify/fast-json-stringify-compiler": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.3.0.tgz",
- "integrity": "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==",
- "dev": true,
+ "node_modules/@graphql-tools/schema": {
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.3.tgz",
+ "integrity": "sha512-p28Oh9EcOna6i0yLaCFOnkcBDQECVf3SCexT6ktb86QNj9idnkhI+tCxnwZDh58Qvjd2nURdkbevvoZkvxzCog==",
"dependencies": {
- "fast-json-stringify": "^5.7.0"
+ "@graphql-tools/merge": "^9.0.3",
+ "@graphql-tools/utils": "^10.0.13",
+ "tslib": "^2.4.0",
+ "value-or-promise": "^1.0.12"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
}
},
- "node_modules/@fastify/merge-json-schemas": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz",
- "integrity": "sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.3"
+ "node_modules/@graphql-tools/url-loader": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-8.0.2.tgz",
+ "integrity": "sha512-1dKp2K8UuFn7DFo1qX5c1cyazQv2h2ICwA9esHblEqCYrgf69Nk8N7SODmsfWg94OEaI74IqMoM12t7eIGwFzQ==",
+ "dependencies": {
+ "@ardatan/sync-fetch": "^0.0.1",
+ "@graphql-tools/delegate": "^10.0.4",
+ "@graphql-tools/executor-graphql-ws": "^1.1.2",
+ "@graphql-tools/executor-http": "^1.0.9",
+ "@graphql-tools/executor-legacy-ws": "^1.0.6",
+ "@graphql-tools/utils": "^10.0.13",
+ "@graphql-tools/wrap": "^10.0.2",
+ "@types/ws": "^8.0.0",
+ "@whatwg-node/fetch": "^0.9.0",
+ "isomorphic-ws": "^5.0.0",
+ "tslib": "^2.4.0",
+ "value-or-promise": "^1.0.11",
+ "ws": "^8.12.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
}
},
- "node_modules/@fastify/send": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@fastify/send/-/send-2.1.0.tgz",
- "integrity": "sha512-yNYiY6sDkexoJR0D8IDy3aRP3+L4wdqCpvx5WP+VtEU58sn7USmKynBzDQex5X42Zzvw2gNzzYgP90UfWShLFA==",
- "dev": true,
+ "node_modules/@graphql-tools/utils": {
+ "version": "10.1.3",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.1.3.tgz",
+ "integrity": "sha512-loco2ctrrMQzdpSHbcOo6+Ecp21BV67cQ2pNGhuVKAexruu01RdLn3LgtK47B9BpLz3cUD6U0u1R0rur7xMOOg==",
"dependencies": {
- "@lukeed/ms": "^2.0.1",
- "escape-html": "~1.0.3",
- "fast-decode-uri-component": "^1.0.1",
- "http-errors": "2.0.0",
- "mime": "^3.0.0"
+ "@graphql-typed-document-node/core": "^3.1.1",
+ "cross-inspect": "1.0.0",
+ "dset": "^3.1.2",
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
}
},
- "node_modules/@fastify/static": {
- "version": "6.12.0",
- "resolved": "https://registry.npmjs.org/@fastify/static/-/static-6.12.0.tgz",
- "integrity": "sha512-KK1B84E6QD/FcQWxDI2aiUCwHxMJBI1KeCUzm1BwYpPY1b742+jeKruGHP2uOluuM6OkBPI8CIANrXcCRtC2oQ==",
- "dev": true,
+ "node_modules/@graphql-tools/wrap": {
+ "version": "10.0.5",
+ "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-10.0.5.tgz",
+ "integrity": "sha512-Cbr5aYjr3HkwdPvetZp1cpDWTGdD1Owgsb3z/ClzhmrboiK86EnQDxDvOJiQkDCPWE9lNBwj8Y4HfxroY0D9DQ==",
"dependencies": {
- "@fastify/accept-negotiator": "^1.0.0",
- "@fastify/send": "^2.0.0",
- "content-disposition": "^0.5.3",
- "fastify-plugin": "^4.0.0",
- "glob": "^8.0.1",
- "p-limit": "^3.1.0"
+ "@graphql-tools/delegate": "^10.0.4",
+ "@graphql-tools/schema": "^10.0.3",
+ "@graphql-tools/utils": "^10.1.1",
+ "tslib": "^2.4.0",
+ "value-or-promise": "^1.0.12"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "peerDependencies": {
+ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
+ }
+ },
+ "node_modules/@graphql-typed-document-node/core": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz",
+ "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==",
+ "peerDependencies": {
+ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
}
},
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.14",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
- "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"@humanwhocodes/object-schema": "^2.0.2",
"debug": "^4.3.1",
@@ -348,9 +961,8 @@
},
"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"
},
@@ -360,16 +972,19 @@
}
},
"node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
- "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
- "dev": true
+ "version": "2.0.2",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@iarna/toml": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz",
+ "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg=="
},
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
- "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"string-width": "^5.1.2",
"string-width-cjs": "npm:string-width@^4.2.0",
@@ -384,9 +999,8 @@
},
"node_modules/@isaacs/cliui/node_modules/ansi-styles": {
"version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -396,15 +1010,13 @@
},
"node_modules/@isaacs/cliui/node_modules/emoji-regex": {
"version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@isaacs/cliui/node_modules/string-width": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"eastasianwidth": "^0.2.0",
"emoji-regex": "^9.2.2",
@@ -419,9 +1031,8 @@
},
"node_modules/@isaacs/cliui/node_modules/wrap-ansi": {
"version": "8.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
- "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^6.1.0",
"string-width": "^5.0.1",
@@ -436,9 +1047,8 @@
},
"node_modules/@jest/expect-utils": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz",
- "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"jest-get-type": "^29.6.3"
},
@@ -448,9 +1058,8 @@
},
"node_modules/@jest/schemas": {
"version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz",
- "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@sinclair/typebox": "^0.27.8"
},
@@ -460,9 +1069,8 @@
},
"node_modules/@jest/types": {
"version": "29.6.3",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz",
- "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/schemas": "^29.6.3",
"@types/istanbul-lib-coverage": "^2.0.0",
@@ -477,9 +1085,8 @@
},
"node_modules/@jest/types/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"
},
@@ -492,9 +1099,8 @@
},
"node_modules/@jest/types/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"
@@ -508,9 +1114,8 @@
},
"node_modules/@jest/types/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"
},
@@ -520,15 +1125,13 @@
},
"node_modules/@jest/types/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@jest/types/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"
},
@@ -538,9 +1141,7 @@
},
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
- "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/set-array": "^1.2.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
@@ -551,56 +1152,51 @@
}
},
"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==",
- "dev": true,
+ "version": "3.1.1",
+ "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==",
- "dev": true,
+ "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==",
+ "version": "0.3.5",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@jridgewell/gen-mapping": "^0.3.5",
- "@jridgewell/trace-mapping": "^0.3.25"
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
- "dev": true
+ "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==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
+ "node_modules/@kamilkisiela/fast-url-parser": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@kamilkisiela/fast-url-parser/-/fast-url-parser-1.1.4.tgz",
+ "integrity": "sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew=="
+ },
"node_modules/@ljharb/through": {
- "version": "2.3.13",
- "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz",
- "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==",
+ "version": "2.3.12",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7"
+ "call-bind": "^1.0.5"
},
"engines": {
"node": ">= 0.4"
@@ -608,24 +1204,21 @@
},
"node_modules/@lukeed/ms": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@lukeed/ms/-/ms-2.0.2.tgz",
- "integrity": "sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/@microsoft/fast-element": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/@microsoft/fast-element/-/fast-element-1.13.0.tgz",
- "integrity": "sha512-iFhzKbbD0cFRo9cEzLS3Tdo9BYuatdxmCEKCpZs1Cro/93zNMpZ/Y9/Z7SknmW6fhDZbpBvtO8lLh9TFEcNVAQ=="
+ "version": "1.12.0",
+ "license": "MIT"
},
"node_modules/@microsoft/fast-foundation": {
- "version": "2.49.6",
- "resolved": "https://registry.npmjs.org/@microsoft/fast-foundation/-/fast-foundation-2.49.6.tgz",
- "integrity": "sha512-DZVr+J/NIoskFC1Y6xnAowrMkdbf2d5o7UyWK6gW5AiQ6S386Ql8dw4KcC4kHaeE1yL2CKvweE79cj6ZhJhTvA==",
+ "version": "2.49.5",
+ "license": "MIT",
"dependencies": {
- "@microsoft/fast-element": "^1.13.0",
+ "@microsoft/fast-element": "^1.12.0",
"@microsoft/fast-web-utilities": "^5.4.1",
"tabbable": "^5.2.0",
"tslib": "^1.13.0"
@@ -633,16 +1226,14 @@
},
"node_modules/@microsoft/fast-foundation/node_modules/tslib": {
"version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ "license": "0BSD"
},
"node_modules/@microsoft/fast-react-wrapper": {
- "version": "0.3.24",
- "resolved": "https://registry.npmjs.org/@microsoft/fast-react-wrapper/-/fast-react-wrapper-0.3.24.tgz",
- "integrity": "sha512-sRnSBIKaO42p4mYoYR60spWVkg89wFxFAgQETIMazAm2TxtlsnsGszJnTwVhXq2Uz+XNiD8eKBkfzK5c/i6/Kw==",
+ "version": "0.3.23",
+ "license": "MIT",
"dependencies": {
- "@microsoft/fast-element": "^1.13.0",
- "@microsoft/fast-foundation": "^2.49.6"
+ "@microsoft/fast-element": "^1.12.0",
+ "@microsoft/fast-foundation": "^2.49.5"
},
"peerDependencies": {
"react": ">=16.9.0"
@@ -650,17 +1241,14 @@
},
"node_modules/@microsoft/fast-web-utilities": {
"version": "5.4.1",
- "resolved": "https://registry.npmjs.org/@microsoft/fast-web-utilities/-/fast-web-utilities-5.4.1.tgz",
- "integrity": "sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==",
+ "license": "MIT",
"dependencies": {
"exenv-es6": "^1.1.1"
}
},
"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"
@@ -671,18 +1259,14 @@
},
"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"
@@ -693,29 +1277,26 @@
},
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
"dev": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=14"
}
},
"node_modules/@preact/signals-core": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@preact/signals-core/-/signals-core-1.6.0.tgz",
- "integrity": "sha512-O/XGxwP85h1F7+ouqTMOIZ3+V1whfaV9ToIVcuyGriD4JkSD00cQo54BKdqjvBJxbenvp7ynfqRHEwI6e+NIhw==",
+ "version": "1.5.1",
+ "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/preact"
}
},
"node_modules/@preact/signals-react": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/@preact/signals-react/-/signals-react-1.3.8.tgz",
- "integrity": "sha512-i7mVZ/ZiD9WqNH79r+klpQsp8X+/dOd/5AtvDI0HNpgWuHyzyF9WXDViKl+1vXgB767n9VnH1W2azg+w1oyFMQ==",
+ "version": "1.3.6",
+ "license": "MIT",
"dependencies": {
- "@preact/signals-core": "^1.5.1",
+ "@preact/signals-core": "^1.4.0",
"use-sync-external-store": "^1.2.0"
},
"funding": {
@@ -728,9 +1309,8 @@
},
"node_modules/@puppeteer/browsers": {
"version": "1.9.1",
- "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.9.1.tgz",
- "integrity": "sha512-PuvK6xZzGhKPvlx3fpfdM2kYY3P/hB1URtK8wA7XUJ6prn6pp22zvJHu48th0SGcHL9SutbPHrFuQgfXTFobWA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"debug": "4.3.4",
"extract-zip": "2.0.1",
@@ -747,26 +1327,28 @@
"node": ">=16.3.0"
}
},
+ "node_modules/@repeaterjs/repeater": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.5.tgz",
+ "integrity": "sha512-l3YHBLAol6d/IKnB9LhpD0cEZWAoe3eFKUyTYWmFmCO2Q/WOckxLQAUyMZWwZV2M/m3+4vgRoaolFqaII82/TA=="
+ },
"node_modules/@sinclair/typebox": {
"version": "0.27.8",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
- "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@sindresorhus/is": {
"version": "0.7.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz",
- "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/@szmarczak/http-timer": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz",
- "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"defer-to-connect": "^2.0.1"
},
@@ -776,9 +1358,8 @@
},
"node_modules/@teamsupercell/typings-for-css-modules-loader": {
"version": "2.5.2",
- "resolved": "https://registry.npmjs.org/@teamsupercell/typings-for-css-modules-loader/-/typings-for-css-modules-loader-2.5.2.tgz",
- "integrity": "sha512-3sqH2B4itcm5XgV1IHENt4NOaW7bOC1CwJr63vrdKWWyKVxNxtBM+ABVhJZYFCCVAwNy7ulA64z6HyQqw96m4A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"camelcase": "^5.3.1",
"loader-utils": "^1.4.2",
@@ -790,31 +1371,27 @@
},
"node_modules/@testim/chrome-version": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz",
- "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==",
"dev": true,
+ "license": "MIT",
"peer": true
},
"node_modules/@tootallnate/once": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 6"
}
},
"node_modules/@tootallnate/quickjs-emscripten": {
"version": "0.23.0",
- "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
- "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/eslint": {
- "version": "8.56.9",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.9.tgz",
- "integrity": "sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==",
+ "version": "8.56.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
@@ -822,9 +1399,8 @@
},
"node_modules/@types/eslint-scope": {
"version": "3.7.7",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
- "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/eslint": "*",
"@types/estree": "*"
@@ -832,15 +1408,12 @@
},
"node_modules/@types/estree": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
- "dev": true
+ "license": "MIT"
},
"node_modules/@types/glob": {
"version": "8.1.0",
- "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/minimatch": "^5.1.2",
"@types/node": "*"
@@ -848,148 +1421,131 @@
},
"node_modules/@types/http-cache-semantics": {
"version": "4.0.4",
- "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
- "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/istanbul-lib-coverage": {
"version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
- "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/istanbul-lib-report": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
- "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/istanbul-lib-coverage": "*"
}
},
"node_modules/@types/istanbul-reports": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
- "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/istanbul-lib-report": "*"
}
},
"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
+ "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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/mocha": {
"version": "10.0.6",
- "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz",
- "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/node": {
- "version": "16.18.96",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.96.tgz",
- "integrity": "sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==",
- "dev": true
+ "version": "16.18.79",
+ "license": "MIT"
},
"node_modules/@types/normalize-package-data": {
"version": "2.4.4",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
- "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/parse-json": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
- "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/prop-types": {
- "version": "15.7.12",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz",
- "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==",
- "dev": true
+ "version": "15.7.11",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/react": {
- "version": "18.2.78",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.78.tgz",
- "integrity": "sha512-qOwdPnnitQY4xKlKayt42q5W5UQrSHjgoXNVEtxeqdITJ99k4VXJOP3vt8Rkm9HmgJpH50UNU+rlqfkfWOqp0A==",
+ "version": "18.2.53",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/prop-types": "*",
+ "@types/scheduler": "*",
"csstype": "^3.0.2"
}
},
"node_modules/@types/react-dom": {
- "version": "18.2.25",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.25.tgz",
- "integrity": "sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==",
+ "version": "18.2.18",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/react": "*"
}
},
+ "node_modules/@types/scheduler": {
+ "version": "0.16.8",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/semver": {
- "version": "7.5.8",
- "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
- "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
- "dev": true
+ "version": "7.5.6",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/stack-utils": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
- "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/vscode": {
- "version": "1.88.0",
- "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.88.0.tgz",
- "integrity": "sha512-rWY+Bs6j/f1lvr8jqZTyp5arRMfovdxolcqGi+//+cPDOh8SBvzXH90e7BiSXct5HJ9HGW6jATchbRTpTJpEkw==",
- "dev": true
+ "version": "1.86.0",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/which": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@types/which/-/which-2.0.2.tgz",
- "integrity": "sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/ws": {
"version": "8.5.10",
- "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz",
- "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/yargs": {
"version": "17.0.32",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz",
- "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/yargs-parser": "*"
}
},
"node_modules/@types/yargs-parser": {
"version": "21.0.3",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
- "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@types/yauzl": {
"version": "2.10.3",
- "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
- "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
"dev": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"@types/node": "*"
@@ -997,9 +1553,8 @@
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
- "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.4.0",
"@typescript-eslint/scope-manager": "5.62.0",
@@ -1031,9 +1586,8 @@
},
"node_modules/@typescript-eslint/parser": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz",
- "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"@typescript-eslint/scope-manager": "5.62.0",
"@typescript-eslint/types": "5.62.0",
@@ -1058,9 +1612,8 @@
},
"node_modules/@typescript-eslint/scope-manager": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
- "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@typescript-eslint/types": "5.62.0",
"@typescript-eslint/visitor-keys": "5.62.0"
@@ -1075,9 +1628,8 @@
},
"node_modules/@typescript-eslint/type-utils": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz",
- "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@typescript-eslint/typescript-estree": "5.62.0",
"@typescript-eslint/utils": "5.62.0",
@@ -1102,9 +1654,8 @@
},
"node_modules/@typescript-eslint/types": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
- "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
@@ -1115,9 +1666,8 @@
},
"node_modules/@typescript-eslint/typescript-estree": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
- "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"@typescript-eslint/types": "5.62.0",
"@typescript-eslint/visitor-keys": "5.62.0",
@@ -1142,9 +1692,8 @@
},
"node_modules/@typescript-eslint/utils": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
- "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@types/json-schema": "^7.0.9",
@@ -1168,9 +1717,8 @@
},
"node_modules/@typescript-eslint/visitor-keys": {
"version": "5.62.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
- "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@typescript-eslint/types": "5.62.0",
"eslint-visitor-keys": "^3.3.0"
@@ -1185,48 +1733,205 @@
},
"node_modules/@ungap/structured-clone": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/@vitest/snapshot": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.5.0.tgz",
- "integrity": "sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==",
+ "version": "1.2.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "magic-string": "^0.30.5",
+ "pathe": "^1.1.1",
+ "pretty-format": "^29.7.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vscode/codicons": {
+ "version": "0.0.30",
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/@vscode/test-electron": {
+ "version": "2.3.9",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "jszip": "^3.10.1",
+ "semver": "^7.5.2"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@vscode/vsce": {
+ "version": "2.25.0",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.25.0.tgz",
+ "integrity": "sha512-VXMCGUaP6wKBadA7vFQdsksxkBAMoh4ecZgXBwauZMASAgnwYesHyLnqIyWYeRwjy2uEpitHvz/1w5ENnR30pg==",
+ "dependencies": {
+ "azure-devops-node-api": "^12.5.0",
+ "chalk": "^2.4.2",
+ "cheerio": "^1.0.0-rc.9",
+ "cockatiel": "^3.1.2",
+ "commander": "^6.2.1",
+ "form-data": "^4.0.0",
+ "glob": "^7.0.6",
+ "hosted-git-info": "^4.0.2",
+ "jsonc-parser": "^3.2.0",
+ "leven": "^3.1.0",
+ "markdown-it": "^12.3.2",
+ "mime": "^1.3.4",
+ "minimatch": "^3.0.3",
+ "parse-semver": "^1.1.1",
+ "read": "^1.0.7",
+ "semver": "^7.5.2",
+ "tmp": "^0.2.1",
+ "typed-rest-client": "^1.8.4",
+ "url-join": "^4.0.1",
+ "xml2js": "^0.5.0",
+ "yauzl": "^2.3.1",
+ "yazl": "^2.2.2"
+ },
+ "bin": {
+ "vsce": "vsce"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "optionalDependencies": {
+ "keytar": "^7.7.0"
+ }
+ },
+ "node_modules/@vscode/vsce/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@vscode/vsce/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@vscode/vsce/node_modules/commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@vscode/vsce/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@vscode/vsce/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "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/@vscode/vsce/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==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@vscode/vsce/node_modules/hosted-git-info": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+ "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@vscode/vsce/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
- "magic-string": "^0.30.5",
- "pathe": "^1.1.1",
- "pretty-format": "^29.7.0"
+ "yallist": "^4.0.0"
},
- "funding": {
- "url": "https://opencollective.com/vitest"
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/@vscode/codicons": {
- "version": "0.0.30",
- "resolved": "https://registry.npmjs.org/@vscode/codicons/-/codicons-0.0.30.tgz",
- "integrity": "sha512-/quu8pLXEyrShoDjTImQwJ2H28y1XhANigyw7E7JvN9NNWc3XCkoIWpcb/tUhdf7XQpopLVVYbkMjXpdPPuMXg=="
+ "node_modules/@vscode/vsce/node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
- "node_modules/@vscode/test-electron": {
- "version": "2.3.9",
- "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.9.tgz",
- "integrity": "sha512-z3eiChaCQXMqBnk2aHHSEkobmC2VRalFQN0ApOAtydL172zXGxTwGrRtviT5HnUB+Q+G3vtEYFtuQkYqBzYgMA==",
- "dev": true,
+ "node_modules/@vscode/vsce/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==",
"dependencies": {
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "^5.0.0",
- "jszip": "^3.10.1",
- "semver": "^7.5.2"
+ "has-flag": "^3.0.0"
},
"engines": {
- "node": ">=16"
+ "node": ">=4"
}
},
+ "node_modules/@vscode/vsce/node_modules/tmp": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
+ "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==",
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/@vscode/vsce/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
"node_modules/@vscode/webview-ui-toolkit": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/@vscode/webview-ui-toolkit/-/webview-ui-toolkit-1.4.0.tgz",
- "integrity": "sha512-modXVHQkZLsxgmd5yoP3ptRC/G8NBDD+ob+ngPiWNQdlrH6H1xR/qgOBD85bfU3BhOB5sZzFWBwwhp9/SfoHww==",
+ "license": "MIT",
"dependencies": {
"@microsoft/fast-element": "^1.12.0",
"@microsoft/fast-foundation": "^2.49.4",
@@ -1237,20 +1942,86 @@
"react": ">=16.9.0"
}
},
+ "node_modules/@vue/compiler-core": {
+ "version": "3.4.23",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.23.tgz",
+ "integrity": "sha512-HAFmuVEwNqNdmk+w4VCQ2pkLk1Vw4XYiiyxEp3z/xvl14aLTUBw2OfVH3vBcx+FtGsynQLkkhK410Nah1N2yyQ==",
+ "dependencies": {
+ "@babel/parser": "^7.24.1",
+ "@vue/shared": "3.4.23",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/compiler-core/node_modules/source-map-js": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
+ "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.4.23",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.23.tgz",
+ "integrity": "sha512-t0b9WSTnCRrzsBGrDd1LNR5HGzYTr7LX3z6nNBG+KGvZLqrT0mY6NsMzOqlVMBKKXKVuusbbB5aOOFgTY+senw==",
+ "dependencies": {
+ "@vue/compiler-core": "3.4.23",
+ "@vue/shared": "3.4.23"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.4.23",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.23.tgz",
+ "integrity": "sha512-fSDTKTfzaRX1kNAUiaj8JB4AokikzStWgHooMhaxyjZerw624L+IAP/fvI4ZwMpwIh8f08PVzEnu4rg8/Npssw==",
+ "dependencies": {
+ "@babel/parser": "^7.24.1",
+ "@vue/compiler-core": "3.4.23",
+ "@vue/compiler-dom": "3.4.23",
+ "@vue/compiler-ssr": "3.4.23",
+ "@vue/shared": "3.4.23",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.8",
+ "postcss": "^8.4.38",
+ "source-map-js": "^1.2.0"
+ }
+ },
+ "node_modules/@vue/compiler-sfc/node_modules/source-map-js": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
+ "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.4.23",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.23.tgz",
+ "integrity": "sha512-hb6Uj2cYs+tfqz71Wj6h3E5t6OKvb4MVcM2Nl5i/z1nv1gjEhw+zYaNOV+Xwn+SSN/VZM0DgANw5TuJfxfezPg==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.4.23",
+ "@vue/shared": "3.4.23"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.4.23",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.23.tgz",
+ "integrity": "sha512-wBQ0gvf+SMwsCQOyusNw/GoXPV47WGd1xB5A1Pgzy0sQ3Bi5r5xm3n+92y3gCnB3MWqnRDdvfkRGxhKtbBRNgg=="
+ },
"node_modules/@wdio/cli": {
- "version": "8.36.0",
- "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.36.0.tgz",
- "integrity": "sha512-B8iEwz9DRzHquPihT74nKUzN9s+rCd1TkBp+JGmdgm7pJqiWTe4FORrzaxWjdiCO78jbYK9LgaMORpCcAzjwIA==",
+ "version": "8.29.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "^20.1.1",
"@vitest/snapshot": "^1.2.1",
- "@wdio/config": "8.36.0",
- "@wdio/globals": "8.36.0",
+ "@wdio/config": "8.29.3",
+ "@wdio/globals": "8.29.7",
"@wdio/logger": "8.28.0",
- "@wdio/protocols": "8.32.0",
- "@wdio/types": "8.36.0",
- "@wdio/utils": "8.36.0",
+ "@wdio/protocols": "8.29.7",
+ "@wdio/types": "8.29.1",
+ "@wdio/utils": "8.29.3",
"async-exit-hook": "^2.0.1",
"chalk": "^5.2.0",
"chokidar": "^3.5.3",
@@ -1263,9 +2034,9 @@
"lodash.flattendeep": "^4.4.0",
"lodash.pickby": "^4.6.0",
"lodash.union": "^4.6.0",
- "read-pkg-up": "10.0.0",
+ "read-pkg-up": "^10.0.0",
"recursive-readdir": "^2.2.3",
- "webdriverio": "8.36.0",
+ "webdriverio": "8.29.7",
"yargs": "^17.7.2"
},
"bin": {
@@ -1276,23 +2047,21 @@
}
},
"node_modules/@wdio/cli/node_modules/@types/node": {
- "version": "20.12.7",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz",
- "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==",
+ "version": "20.11.16",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/@wdio/config": {
- "version": "8.36.0",
- "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.36.0.tgz",
- "integrity": "sha512-sAbqnx/G+OsrMquIncFXjM4U0/E0ULMP0jDHZND75r0e1DYYCHmyacrvIHu3Jyxinl9f6+4XQdev6vqdTqPdNg==",
+ "version": "8.29.3",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@wdio/logger": "8.28.0",
- "@wdio/types": "8.36.0",
- "@wdio/utils": "8.36.0",
+ "@wdio/types": "8.29.1",
+ "@wdio/utils": "8.29.3",
"decamelize": "^6.0.0",
"deepmerge-ts": "^5.0.0",
"glob": "^10.2.2",
@@ -1304,24 +2073,22 @@
},
"node_modules/@wdio/config/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/@wdio/config/node_modules/glob": {
- "version": "10.3.12",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz",
- "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==",
+ "version": "10.3.10",
"dev": true,
+ "license": "ISC",
"dependencies": {
"foreground-child": "^3.1.0",
- "jackspeak": "^2.3.6",
+ "jackspeak": "^2.3.5",
"minimatch": "^9.0.1",
- "minipass": "^7.0.4",
- "path-scurry": "^1.10.2"
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
+ "path-scurry": "^1.10.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
@@ -1334,10 +2101,9 @@
}
},
"node_modules/@wdio/config/node_modules/minimatch": {
- "version": "9.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+ "version": "9.0.3",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -1349,29 +2115,27 @@
}
},
"node_modules/@wdio/globals": {
- "version": "8.36.0",
- "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.36.0.tgz",
- "integrity": "sha512-vqMq1hR+iF0lqMNJpk9z+QB9l/QfL1DbvOfNhPtQ13NgctfNg42ffuhEObbzTLQN0MftcnPBu6O3pai79y8bUA==",
+ "version": "8.29.7",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^16.13 || >=18"
},
"optionalDependencies": {
- "expect-webdriverio": "^4.11.2",
- "webdriverio": "8.36.0"
+ "expect-webdriverio": "^4.9.3",
+ "webdriverio": "8.29.7"
}
},
"node_modules/@wdio/local-runner": {
- "version": "8.36.0",
- "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.36.0.tgz",
- "integrity": "sha512-MIzbWcXgRQGQQK4H5N39/JFoikOg5cu34l1U6rgw74D6hO79L4RwBg2Oo4TJJYgHUL/4RbVwyeLdb5WDTdluTQ==",
+ "version": "8.29.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "^20.1.0",
"@wdio/logger": "8.28.0",
"@wdio/repl": "8.24.12",
- "@wdio/runner": "8.36.0",
- "@wdio/types": "8.36.0",
+ "@wdio/runner": "8.29.7",
+ "@wdio/types": "8.29.1",
"async-exit-hook": "^2.0.1",
"split2": "^4.1.0",
"stream-buffers": "^3.0.2"
@@ -1381,19 +2145,17 @@
}
},
"node_modules/@wdio/local-runner/node_modules/@types/node": {
- "version": "20.12.7",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz",
- "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==",
+ "version": "20.11.16",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/@wdio/logger": {
"version": "8.28.0",
- "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.28.0.tgz",
- "integrity": "sha512-/s6zNCqwy1hoc+K4SJypis0Ud0dlJ+urOelJFO1x0G0rwDRWyFiUP6ijTaCcFxAm29jYEcEPWijl2xkVIHwOyA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^5.1.2",
"loglevel": "^1.6.0",
@@ -1405,16 +2167,15 @@
}
},
"node_modules/@wdio/mocha-framework": {
- "version": "8.36.0",
- "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-8.36.0.tgz",
- "integrity": "sha512-5wZgh1apbSKTtgGwvd//L4kxdaXe30AQ3y9YeJD+OuAJUTYFRjTpMS13bO3pX518imQeB8HCm4aUc2kxs7J81Q==",
+ "version": "8.29.3",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/mocha": "^10.0.0",
"@types/node": "^20.1.0",
"@wdio/logger": "8.28.0",
- "@wdio/types": "8.36.0",
- "@wdio/utils": "8.36.0",
+ "@wdio/types": "8.29.1",
+ "@wdio/utils": "8.29.3",
"mocha": "^10.0.0"
},
"engines": {
@@ -1422,25 +2183,22 @@
}
},
"node_modules/@wdio/mocha-framework/node_modules/@types/node": {
- "version": "20.12.7",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz",
- "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==",
+ "version": "20.11.16",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/@wdio/protocols": {
- "version": "8.32.0",
- "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.32.0.tgz",
- "integrity": "sha512-inLJRrtIGdTz/YPbcsvpSvPlYQFTVtF3OYBwAXhG2FiP1ZwE1CQNLP/xgRGye1ymdGCypGkexRqIx3KBGm801Q==",
- "dev": true
+ "version": "8.29.7",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@wdio/repl": {
"version": "8.24.12",
- "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-8.24.12.tgz",
- "integrity": "sha512-321F3sWafnlw93uRTSjEBVuvWCxTkWNDs7ektQS15drrroL3TMeFOynu4rDrIz0jXD9Vas0HCD2Tq/P0uxFLdw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "^20.1.0"
},
@@ -1449,23 +2207,21 @@
}
},
"node_modules/@wdio/repl/node_modules/@types/node": {
- "version": "20.12.7",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz",
- "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==",
+ "version": "20.11.16",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/@wdio/reporter": {
- "version": "8.36.0",
- "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-8.36.0.tgz",
- "integrity": "sha512-pkAxqiMC+ljmksOKlK9g6y2NRvrdQiKtxD11rsMwJ6CH4kVDSGIvENw7u3kxg7Qwp0j1rCKf5Hp51npqKQgeDQ==",
+ "version": "8.29.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "^20.1.0",
"@wdio/logger": "8.28.0",
- "@wdio/types": "8.36.0",
+ "@wdio/types": "8.29.1",
"diff": "^5.0.0",
"object-inspect": "^1.12.0"
},
@@ -1474,53 +2230,49 @@
}
},
"node_modules/@wdio/reporter/node_modules/@types/node": {
- "version": "20.12.7",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz",
- "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==",
+ "version": "20.11.16",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/@wdio/runner": {
- "version": "8.36.0",
- "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.36.0.tgz",
- "integrity": "sha512-M2ZDL0gmR2VvVMchi3Pkonva6Gn6eFh6IwVCpT0np7zioaqOksy3IM7Aki8kPKKS88Osip5dAfoKIrY7JpHovA==",
+ "version": "8.29.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@types/node": "^20.11.28",
- "@wdio/config": "8.36.0",
- "@wdio/globals": "8.36.0",
+ "@types/node": "^20.1.0",
+ "@wdio/config": "8.29.3",
+ "@wdio/globals": "8.29.7",
"@wdio/logger": "8.28.0",
- "@wdio/types": "8.36.0",
- "@wdio/utils": "8.36.0",
- "deepmerge-ts": "^5.1.0",
- "expect-webdriverio": "^4.12.0",
- "gaze": "^1.1.3",
- "webdriver": "8.36.0",
- "webdriverio": "8.36.0"
+ "@wdio/types": "8.29.1",
+ "@wdio/utils": "8.29.3",
+ "deepmerge-ts": "^5.0.0",
+ "expect-webdriverio": "^4.9.3",
+ "gaze": "^1.1.2",
+ "webdriver": "8.29.7",
+ "webdriverio": "8.29.7"
},
"engines": {
"node": "^16.13 || >=18"
}
},
"node_modules/@wdio/runner/node_modules/@types/node": {
- "version": "20.12.7",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz",
- "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==",
+ "version": "20.11.16",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/@wdio/spec-reporter": {
- "version": "8.36.0",
- "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-8.36.0.tgz",
- "integrity": "sha512-GVOiWqVYvzoAo4/4hNVxvyVWVoHyEmAywYhkykyJGL05YpO0oDOZY2kINPePEX5Z+nIsXsiKPmtsGGqWsfQwTw==",
+ "version": "8.29.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@wdio/reporter": "8.36.0",
- "@wdio/types": "8.36.0",
+ "@wdio/reporter": "8.29.1",
+ "@wdio/types": "8.29.1",
"chalk": "^5.1.2",
"easy-table": "^1.2.0",
"pretty-ms": "^7.0.0"
@@ -1530,10 +2282,9 @@
}
},
"node_modules/@wdio/types": {
- "version": "8.36.0",
- "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.36.0.tgz",
- "integrity": "sha512-0hw/PaJHqDrbIMvU08w3oMDGg89udSkqWF2hFlGAjOc20quRrhn0F1L+NhFpYdezeRKz5gpgTDIqaQs9RWKq1A==",
+ "version": "8.29.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "^20.1.0"
},
@@ -1542,23 +2293,21 @@
}
},
"node_modules/@wdio/types/node_modules/@types/node": {
- "version": "20.12.7",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz",
- "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==",
+ "version": "20.11.16",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/@wdio/utils": {
- "version": "8.36.0",
- "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.36.0.tgz",
- "integrity": "sha512-3VAbavN206qkvm6lITtOtTgscFChax7shzqHjUNln+QWMRyELtT81iw32ux2ld+Bg3F60LAmhbGodu0lJH7k2w==",
+ "version": "8.29.3",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@puppeteer/browsers": "^1.6.0",
"@wdio/logger": "8.28.0",
- "@wdio/types": "8.36.0",
+ "@wdio/types": "8.29.1",
"decamelize": "^6.0.0",
"deepmerge-ts": "^5.1.0",
"edgedriver": "^5.3.5",
@@ -1575,10 +2324,9 @@
}
},
"node_modules/@webassemblyjs/ast": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz",
- "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==",
+ "version": "1.11.6",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@webassemblyjs/helper-numbers": "1.11.6",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6"
@@ -1586,27 +2334,23 @@
},
"node_modules/@webassemblyjs/floating-point-hex-parser": {
"version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz",
- "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@webassemblyjs/helper-api-error": {
"version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz",
- "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@webassemblyjs/helper-buffer": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz",
- "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==",
- "dev": true
+ "version": "1.11.6",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@webassemblyjs/helper-numbers": {
"version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz",
- "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@webassemblyjs/floating-point-hex-parser": "1.11.6",
"@webassemblyjs/helper-api-error": "1.11.6",
@@ -1615,69 +2359,62 @@
},
"node_modules/@webassemblyjs/helper-wasm-bytecode": {
"version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz",
- "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@webassemblyjs/helper-wasm-section": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz",
- "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==",
+ "version": "1.11.6",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@webassemblyjs/ast": "1.12.1",
- "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/wasm-gen": "1.12.1"
+ "@webassemblyjs/wasm-gen": "1.11.6"
}
},
"node_modules/@webassemblyjs/ieee754": {
"version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz",
- "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@xtuc/ieee754": "^1.2.0"
}
},
"node_modules/@webassemblyjs/leb128": {
"version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz",
- "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"@xtuc/long": "4.2.2"
}
},
"node_modules/@webassemblyjs/utf8": {
"version": "1.11.6",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz",
- "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@webassemblyjs/wasm-edit": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz",
- "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==",
+ "version": "1.11.6",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@webassemblyjs/ast": "1.12.1",
- "@webassemblyjs/helper-buffer": "1.12.1",
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
- "@webassemblyjs/helper-wasm-section": "1.12.1",
- "@webassemblyjs/wasm-gen": "1.12.1",
- "@webassemblyjs/wasm-opt": "1.12.1",
- "@webassemblyjs/wasm-parser": "1.12.1",
- "@webassemblyjs/wast-printer": "1.12.1"
+ "@webassemblyjs/helper-wasm-section": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6",
+ "@webassemblyjs/wasm-opt": "1.11.6",
+ "@webassemblyjs/wasm-parser": "1.11.6",
+ "@webassemblyjs/wast-printer": "1.11.6"
}
},
"node_modules/@webassemblyjs/wasm-gen": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz",
- "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==",
+ "version": "1.11.6",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/ast": "1.11.6",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
"@webassemblyjs/ieee754": "1.11.6",
"@webassemblyjs/leb128": "1.11.6",
@@ -1685,24 +2422,22 @@
}
},
"node_modules/@webassemblyjs/wasm-opt": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz",
- "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==",
+ "version": "1.11.6",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@webassemblyjs/ast": "1.12.1",
- "@webassemblyjs/helper-buffer": "1.12.1",
- "@webassemblyjs/wasm-gen": "1.12.1",
- "@webassemblyjs/wasm-parser": "1.12.1"
+ "@webassemblyjs/ast": "1.11.6",
+ "@webassemblyjs/helper-buffer": "1.11.6",
+ "@webassemblyjs/wasm-gen": "1.11.6",
+ "@webassemblyjs/wasm-parser": "1.11.6"
}
},
"node_modules/@webassemblyjs/wasm-parser": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz",
- "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==",
+ "version": "1.11.6",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/ast": "1.11.6",
"@webassemblyjs/helper-api-error": "1.11.6",
"@webassemblyjs/helper-wasm-bytecode": "1.11.6",
"@webassemblyjs/ieee754": "1.11.6",
@@ -1711,20 +2446,18 @@
}
},
"node_modules/@webassemblyjs/wast-printer": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz",
- "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==",
+ "version": "1.11.6",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@webassemblyjs/ast": "1.12.1",
+ "@webassemblyjs/ast": "1.11.6",
"@xtuc/long": "4.2.2"
}
},
"node_modules/@webpack-cli/configtest": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz",
- "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.15.0"
},
@@ -1735,9 +2468,8 @@
},
"node_modules/@webpack-cli/info": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz",
- "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.15.0"
},
@@ -1748,9 +2480,8 @@
},
"node_modules/@webpack-cli/serve": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz",
- "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.15.0"
},
@@ -1764,23 +2495,55 @@
}
}
},
+ "node_modules/@whatwg-node/events": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz",
+ "integrity": "sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w==",
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@whatwg-node/fetch": {
+ "version": "0.9.17",
+ "resolved": "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.17.tgz",
+ "integrity": "sha512-TDYP3CpCrxwxpiNY0UMNf096H5Ihf67BK1iKGegQl5u9SlpEDYrvnV71gWBGJm+Xm31qOy8ATgma9rm8Pe7/5Q==",
+ "dependencies": {
+ "@whatwg-node/node-fetch": "^0.5.7",
+ "urlpattern-polyfill": "^10.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@whatwg-node/node-fetch": {
+ "version": "0.5.10",
+ "resolved": "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.5.10.tgz",
+ "integrity": "sha512-KIAHepie/T1PRkUfze4t+bPlyvpxlWiXTPtcGlbIZ0vWkBJMdRmCg4ZrJ2y4XaO1eTPo1HlWYUuj1WvoIpumqg==",
+ "dependencies": {
+ "@kamilkisiela/fast-url-parser": "^1.1.4",
+ "@whatwg-node/events": "^0.1.0",
+ "busboy": "^1.6.0",
+ "fast-querystring": "^1.1.1",
+ "tslib": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
"node_modules/@xtuc/ieee754": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
- "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/@xtuc/long": {
"version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
- "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
- "dev": true
+ "dev": true,
+ "license": "Apache-2.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==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"event-target-shim": "^5.0.0"
},
@@ -1790,15 +2553,12 @@
},
"node_modules/abstract-logging": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz",
- "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/acorn": {
"version": "8.11.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
- "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
- "dev": true,
+ "license": "MIT",
"bin": {
"acorn": "bin/acorn"
},
@@ -1808,27 +2568,24 @@
},
"node_modules/acorn-import-assertions": {
"version": "1.9.0",
- "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
- "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"acorn": "^8"
}
},
"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/agent-base": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"debug": "4"
},
@@ -1838,9 +2595,8 @@
},
"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",
@@ -1854,9 +2610,8 @@
},
"node_modules/ajv-formats": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
- "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ajv": "^8.0.0"
},
@@ -1871,9 +2626,8 @@
},
"node_modules/ajv-formats/node_modules/ajv": {
"version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
@@ -1887,33 +2641,29 @@
},
"node_modules/ajv-formats/node_modules/json-schema-traverse": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/ajv-keywords": {
"version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"ajv": "^6.9.1"
}
},
"node_modules/ansi-colors": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
- "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/ansi-escapes": {
"version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"type-fest": "^0.21.3"
},
@@ -1926,9 +2676,8 @@
},
"node_modules/ansi-escapes/node_modules/type-fest": {
"version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
@@ -1938,217 +2687,37 @@
},
"node_modules/ansi-regex": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/ansi-styles": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "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,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/arch": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
- "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
- "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"
- }
- ]
- },
- "node_modules/archive-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz",
- "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==",
- "dev": true,
- "dependencies": {
- "file-type": "^4.2.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/archive-type/node_modules/file-type": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz",
- "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/archiver": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz",
- "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==",
- "dev": true,
- "dependencies": {
- "archiver-utils": "^5.0.2",
- "async": "^3.2.4",
- "buffer-crc32": "^1.0.0",
- "readable-stream": "^4.0.0",
- "readdir-glob": "^1.1.2",
- "tar-stream": "^3.0.0",
- "zip-stream": "^6.0.1"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/archiver-utils": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz",
- "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==",
- "dev": true,
- "dependencies": {
- "glob": "^10.0.0",
- "graceful-fs": "^4.2.0",
- "is-stream": "^2.0.1",
- "lazystream": "^1.0.0",
- "lodash": "^4.17.15",
- "normalize-path": "^3.0.0",
- "readable-stream": "^4.0.0"
- },
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/archiver-utils/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,
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/archiver-utils/node_modules/buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "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"
- }
- ],
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
- }
- },
- "node_modules/archiver-utils/node_modules/glob": {
- "version": "10.3.12",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz",
- "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==",
- "dev": true,
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^2.3.6",
- "minimatch": "^9.0.1",
- "minipass": "^7.0.4",
- "path-scurry": "^1.10.2"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/archiver-utils/node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/archiver-utils/node_modules/minimatch": {
- "version": "9.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dev": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
+ "license": "MIT",
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/archiver-utils/node_modules/readable-stream": {
- "version": "4.5.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
- "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==",
+ "node_modules/anymatch": {
+ "version": "3.1.3",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "abort-controller": "^3.0.0",
- "buffer": "^6.0.3",
- "events": "^3.3.0",
- "process": "^0.11.10",
- "string_decoder": "^1.3.0"
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">= 8"
}
},
- "node_modules/archiver-utils/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==",
+ "node_modules/arch": {
+ "version": "2.2.0",
"dev": true,
"funding": [
{
@@ -2163,112 +2732,107 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
- "node_modules/archiver-utils/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==",
+ "node_modules/archive-type": {
+ "version": "4.0.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "safe-buffer": "~5.2.0"
+ "file-type": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/archiver/node_modules/buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "node_modules/archive-type/node_modules/file-type": {
+ "version": "4.4.0",
"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",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/archiver": {
+ "version": "6.0.1",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
+ "archiver-utils": "^4.0.1",
+ "async": "^3.2.4",
+ "buffer-crc32": "^0.2.1",
+ "readable-stream": "^3.6.0",
+ "readdir-glob": "^1.1.2",
+ "tar-stream": "^3.0.0",
+ "zip-stream": "^5.0.1"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
}
},
- "node_modules/archiver/node_modules/readable-stream": {
- "version": "4.5.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
- "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==",
+ "node_modules/archiver-utils": {
+ "version": "4.0.1",
"dev": true,
+ "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"
+ "glob": "^8.0.0",
+ "graceful-fs": "^4.2.0",
+ "lazystream": "^1.0.0",
+ "lodash": "^4.17.15",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^3.6.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">= 12.0.0"
}
},
- "node_modules/archiver/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==",
+ "node_modules/archiver-utils/node_modules/readable-stream": {
+ "version": "3.6.2",
"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": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
},
- "node_modules/archiver/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==",
+ "node_modules/archiver/node_modules/readable-stream": {
+ "version": "3.6.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "safe-buffer": "~5.2.0"
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
}
},
"node_modules/archy": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
- "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"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/aria-query": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
- "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
- "dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"dequal": "^2.0.3"
}
},
"node_modules/array-buffer-byte-length": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz",
- "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.5",
"is-array-buffer": "^3.0.4"
@@ -2281,16 +2845,14 @@
}
},
"node_modules/array-includes": {
- "version": "3.1.8",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz",
- "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==",
+ "version": "3.1.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-object-atoms": "^1.0.0",
- "get-intrinsic": "^1.2.4",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
"is-string": "^1.0.7"
},
"engines": {
@@ -2302,38 +2864,15 @@
},
"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/array.prototype.findlast": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz",
- "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.0.0",
- "es-shim-unscopables": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/array.prototype.flat": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
- "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -2349,9 +2888,8 @@
},
"node_modules/array.prototype.flatmap": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
- "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -2365,23 +2903,10 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/array.prototype.toreversed": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz",
- "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0"
- }
- },
"node_modules/array.prototype.tosorted": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz",
- "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.5",
"define-properties": "^1.2.1",
@@ -2392,9 +2917,8 @@
},
"node_modules/arraybuffer.prototype.slice": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
- "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"array-buffer-byte-length": "^1.0.1",
"call-bind": "^1.0.5",
@@ -2414,9 +2938,8 @@
},
"node_modules/ast-types": {
"version": "0.13.4",
- "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
- "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tslib": "^2.0.1"
},
@@ -2426,43 +2949,41 @@
},
"node_modules/async": {
"version": "3.2.5",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
- "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/async-exit-hook": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
- "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.12.0"
}
},
+ "node_modules/asynciterator.prototype": {
+ "version": "1.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ }
+ },
"node_modules/asynckit": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "dev": true,
- "peer": true
+ "license": "MIT"
},
"node_modules/atomic-sleep": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz",
- "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/available-typed-arrays": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
- "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "version": "1.0.6",
"dev": true,
- "dependencies": {
- "possible-typed-array-names": "^1.0.0"
- },
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -2471,82 +2992,55 @@
}
},
"node_modules/avvio": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/avvio/-/avvio-8.3.0.tgz",
- "integrity": "sha512-VBVH0jubFr9LdFASy/vNtm5giTrnbVquWBhT0fyizuNK2rQ7e7ONU2plZQWUNqtE1EmxFEb+kbSkFRkstiaS9Q==",
+ "version": "8.2.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@fastify/error": "^3.3.0",
"archy": "^1.0.0",
"debug": "^4.0.0",
- "fastq": "^1.17.1"
+ "fastq": "^1.6.1"
}
},
"node_modules/axios": {
- "version": "1.6.8",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz",
- "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==",
+ "version": "1.6.7",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
- "follow-redirects": "^1.15.6",
+ "follow-redirects": "^1.15.4",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
- "node_modules/b4a": {
- "version": "1.6.6",
- "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
- "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==",
- "dev": true
- },
- "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
- },
- "node_modules/bare-events": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz",
- "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==",
- "dev": true,
- "optional": true
+ "node_modules/axobject-query": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz",
+ "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==",
+ "dependencies": {
+ "dequal": "^2.0.3"
+ }
},
- "node_modules/bare-fs": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.2.3.tgz",
- "integrity": "sha512-amG72llr9pstfXOBOHve1WjiuKKAMnebcmMbPWDZ7BCevAoJLpugjuAPRsDINEyjT0a6tbaVx3DctkXIRbLuJw==",
- "dev": true,
- "optional": true,
+ "node_modules/azure-devops-node-api": {
+ "version": "12.5.0",
+ "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz",
+ "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==",
"dependencies": {
- "bare-events": "^2.0.0",
- "bare-path": "^2.0.0",
- "streamx": "^2.13.0"
+ "tunnel": "0.0.6",
+ "typed-rest-client": "^1.8.4"
}
},
- "node_modules/bare-os": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.2.1.tgz",
- "integrity": "sha512-OwPyHgBBMkhC29Hl3O4/YfxW9n7mdTr2+SsO29XBWKKJsbgj3mnorDB80r5TiCQgQstgE5ga1qNYrpes6NvX2w==",
+ "node_modules/b4a": {
+ "version": "1.6.4",
"dev": true,
- "optional": true
+ "license": "ISC"
},
- "node_modules/bare-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.1.tgz",
- "integrity": "sha512-OHM+iwRDRMDBsSW7kl3dO62JyHdBKO3B25FB9vNQBPcGHMo4+eA8Yj41Lfbk3pS/seDY+siNge0LdRTulAau/A==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "bare-os": "^2.1.0"
- }
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "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==",
- "dev": true,
+ "devOptional": true,
"funding": [
{
"type": "github",
@@ -2560,65 +3054,54 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/basic-ftp": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz",
- "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==",
+ "version": "5.0.4",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/big-integer": {
"version": "1.6.52",
- "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz",
- "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==",
"dev": true,
+ "license": "Unlicense",
"engines": {
"node": ">=0.6"
}
},
"node_modules/big.js": {
"version": "5.2.2",
- "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
- "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/binary": {
"version": "0.3.0",
- "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
- "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"buffers": "~0.1.1",
"chainsaw": "~0.1.0"
- },
- "engines": {
- "node": "*"
}
},
"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==",
+ "version": "2.2.0",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/bl": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
- "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
- "dev": true,
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
"buffer": "^5.5.0",
"inherits": "^2.0.4",
@@ -2627,9 +3110,8 @@
},
"node_modules/bl/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==",
- "dev": true,
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -2641,15 +3123,17 @@
},
"node_modules/bluebird": {
"version": "3.4.7",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
- "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
},
"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"
@@ -2657,9 +3141,7 @@
},
"node_modules/braces": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"fill-range": "^7.0.1"
},
@@ -2669,15 +3151,11 @@
},
"node_modules/browser-stdout": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
- "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/browserslist": {
- "version": "4.23.0",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
- "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
- "dev": true,
+ "version": "4.22.3",
"funding": [
{
"type": "opencollective",
@@ -2692,9 +3170,10 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
- "caniuse-lite": "^1.0.30001587",
- "electron-to-chromium": "^1.4.668",
+ "caniuse-lite": "^1.0.30001580",
+ "electron-to-chromium": "^1.4.648",
"node-releases": "^2.0.14",
"update-browserslist-db": "^1.0.13"
},
@@ -2707,9 +3186,7 @@
},
"node_modules/buffer": {
"version": "5.7.1",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
- "dev": true,
+ "devOptional": true,
"funding": [
{
"type": "github",
@@ -2724,6 +3201,7 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
@@ -2731,9 +3209,8 @@
},
"node_modules/buffer-alloc": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
- "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"buffer-alloc-unsafe": "^1.1.0",
"buffer-fill": "^1.0.0"
@@ -2741,63 +3218,64 @@
},
"node_modules/buffer-alloc-unsafe": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
- "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/buffer-crc32": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz",
- "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==",
- "dev": true,
+ "version": "0.2.13",
+ "license": "MIT",
"engines": {
- "node": ">=8.0.0"
+ "node": "*"
}
},
"node_modules/buffer-fill": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
- "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"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==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/buffer-indexof-polyfill": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
- "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10"
}
},
"node_modules/buffers": {
"version": "0.1.1",
- "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
- "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==",
"dev": true,
"engines": {
"node": ">=0.2.0"
}
},
+ "node_modules/busboy": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
+ "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
+ "dependencies": {
+ "streamsearch": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=10.16.0"
+ }
+ },
"node_modules/cacheable-lookup": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz",
- "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.16"
}
},
"node_modules/cacheable-request": {
"version": "2.1.4",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz",
- "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"clone-response": "1.0.2",
"get-stream": "3.0.0",
@@ -2810,33 +3288,29 @@
},
"node_modules/cacheable-request/node_modules/get-stream": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/cacheable-request/node_modules/json-buffer": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
- "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/cacheable-request/node_modules/keyv": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz",
- "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"json-buffer": "3.0.0"
}
},
"node_modules/cacheable-request/node_modules/lowercase-keys": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
- "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -2845,7 +3319,6 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
"integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
- "dev": true,
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
@@ -2862,27 +3335,21 @@
},
"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/camelcase": {
"version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001609",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001609.tgz",
- "integrity": "sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==",
- "dev": true,
+ "version": "1.0.30001584",
"funding": [
{
"type": "opencollective",
@@ -2896,25 +3363,21 @@
"type": "github",
"url": "https://github.com/sponsors/ai"
}
- ]
+ ],
+ "license": "CC-BY-4.0"
},
"node_modules/chainsaw": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
- "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==",
"dev": true,
+ "license": "MIT/X11",
"dependencies": {
"traverse": ">=0.3.0 <0.4"
- },
- "engines": {
- "node": "*"
}
},
"node_modules/chalk": {
"version": "5.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
- "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.17.0 || ^14.13 || >=16.0.0"
},
@@ -2924,15 +3387,55 @@
},
"node_modules/chardet": {
"version": "0.7.0",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
- "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cheerio": {
+ "version": "1.0.0-rc.12",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz",
+ "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
+ "dependencies": {
+ "cheerio-select": "^2.1.0",
+ "dom-serializer": "^2.0.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1",
+ "htmlparser2": "^8.0.1",
+ "parse5": "^7.0.0",
+ "parse5-htmlparser2-tree-adapter": "^7.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
+ }
+ },
+ "node_modules/cheerio-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
+ "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-select": "^5.1.0",
+ "css-what": "^6.1.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
},
"node_modules/chokidar": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
- "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "version": "3.5.3",
"dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
"anymatch": "~3.1.2",
"braces": "~3.0.2",
@@ -2945,18 +3448,20 @@
"engines": {
"node": ">= 8.10.0"
},
- "funding": {
- "url": "https://paulmillr.com/funding/"
- },
"optionalDependencies": {
"fsevents": "~2.3.2"
}
},
+ "node_modules/chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "optional": true
+ },
"node_modules/chrome-trace-event": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
- "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.0"
}
@@ -2985,10 +3490,9 @@
}
},
"node_modules/chromedriver/node_modules/agent-base": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
- "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "version": "7.1.0",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"debug": "^4.3.4"
@@ -2999,9 +3503,8 @@
},
"node_modules/chromedriver/node_modules/http-proxy-agent": {
"version": "7.0.2",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
- "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"agent-base": "^7.1.0",
@@ -3013,9 +3516,8 @@
},
"node_modules/chromedriver/node_modules/https-proxy-agent": {
"version": "7.0.4",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz",
- "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"agent-base": "^7.0.2",
@@ -3025,11 +3527,19 @@
"node": ">= 14"
}
},
+ "node_modules/chromedriver/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "dev": true,
+ "license": "ISC",
+ "peer": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/chromedriver/node_modules/proxy-agent": {
"version": "6.4.0",
- "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz",
- "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==",
"dev": true,
+ "license": "MIT",
"peer": true,
"dependencies": {
"agent-base": "^7.0.2",
@@ -3047,9 +3557,8 @@
},
"node_modules/chromium-bidi": {
"version": "0.4.16",
- "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz",
- "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"mitt": "3.0.0"
},
@@ -3059,8 +3568,6 @@
},
"node_modules/ci-info": {
"version": "3.9.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz",
- "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==",
"dev": true,
"funding": [
{
@@ -3068,20 +3575,19 @@
"url": "https://github.com/sponsors/sibiraj-s"
}
],
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/classnames": {
"version": "2.5.1",
- "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz",
- "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow=="
+ "license": "MIT"
},
"node_modules/cli-cursor": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"restore-cursor": "^3.1.0"
},
@@ -3091,9 +3597,8 @@
},
"node_modules/cli-spinners": {
"version": "2.9.2",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
- "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
},
@@ -3103,18 +3608,16 @@
},
"node_modules/cli-width": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
- "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">= 12"
}
},
"node_modules/clipboardy": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz",
- "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"arch": "^2.2.0",
"execa": "^5.1.1",
@@ -3129,9 +3632,8 @@
},
"node_modules/clipboardy/node_modules/execa": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
- "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cross-spawn": "^7.0.3",
"get-stream": "^6.0.0",
@@ -3152,9 +3654,8 @@
},
"node_modules/clipboardy/node_modules/get-stream": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -3164,18 +3665,16 @@
},
"node_modules/clipboardy/node_modules/human-signals": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
- "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=10.17.0"
}
},
"node_modules/clipboardy/node_modules/is-stream": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
},
@@ -3185,18 +3684,16 @@
},
"node_modules/clipboardy/node_modules/mimic-fn": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/clipboardy/node_modules/npm-run-path": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
- "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^3.0.0"
},
@@ -3206,9 +3703,8 @@
},
"node_modules/clipboardy/node_modules/onetime": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mimic-fn": "^2.1.0"
},
@@ -3221,24 +3717,21 @@
},
"node_modules/clipboardy/node_modules/signal-exit": {
"version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/clipboardy/node_modules/strip-final-newline": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/cliui": {
"version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.1",
@@ -3250,9 +3743,8 @@
},
"node_modules/cliui/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"
},
@@ -3265,9 +3757,8 @@
},
"node_modules/cliui/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"
},
@@ -3277,15 +3768,13 @@
},
"node_modules/cliui/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/cliui/node_modules/strip-ansi": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -3295,9 +3784,8 @@
},
"node_modules/cliui/node_modules/wrap-ansi": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -3312,18 +3800,16 @@
},
"node_modules/clone": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8"
}
},
"node_modules/clone-deep": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
- "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-plain-object": "^2.0.4",
"kind-of": "^6.0.2",
@@ -3335,40 +3821,59 @@
},
"node_modules/clone-response": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
- "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mimic-response": "^1.0.0"
}
},
+ "node_modules/cockatiel": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.1.2.tgz",
+ "integrity": "sha512-5yARKww0dWyWg2/3xZeXgoxjHLwpVqFptj9Zy7qioJ6+/L0ARM184sgMUrQDjxw7ePJWlGhV998mKhzrxT0/Kg==",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/code-red": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz",
+ "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.4.15",
+ "@types/estree": "^1.0.1",
+ "acorn": "^8.10.0",
+ "estree-walker": "^3.0.3",
+ "periscopic": "^3.1.0"
+ }
+ },
+ "node_modules/code-red/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
"node_modules/color-convert": {
"version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"color-name": "1.1.3"
}
},
"node_modules/color-name": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
+ "license": "MIT"
},
"node_modules/colorette": {
"version": "2.0.20",
- "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz",
- "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/combined-stream": {
"version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
},
@@ -3378,128 +3883,53 @@
},
"node_modules/commander": {
"version": "9.5.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
- "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || >=14"
}
},
"node_modules/compare-versions": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz",
- "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==",
"dev": true,
+ "license": "MIT",
"peer": true
},
"node_modules/compress-commons": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz",
- "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==",
+ "version": "5.0.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
"crc-32": "^1.2.0",
- "crc32-stream": "^6.0.0",
- "is-stream": "^2.0.1",
+ "crc32-stream": "^5.0.0",
"normalize-path": "^3.0.0",
- "readable-stream": "^4.0.0"
+ "readable-stream": "^3.6.0"
},
"engines": {
- "node": ">= 14"
- }
- },
- "node_modules/compress-commons/node_modules/buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "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"
- }
- ],
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
- }
- },
- "node_modules/compress-commons/node_modules/is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">= 12.0.0"
}
},
"node_modules/compress-commons/node_modules/readable-stream": {
- "version": "4.5.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
- "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==",
+ "version": "3.6.2",
"dev": true,
+ "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"
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/compress-commons/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==",
- "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"
- }
- ]
- },
- "node_modules/compress-commons/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==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.2.0"
+ "node": ">= 6"
}
},
"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/content-disposition": {
"version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"safe-buffer": "5.2.1"
},
@@ -3509,8 +3939,6 @@
},
"node_modules/content-disposition/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==",
"dev": true,
"funding": [
{
@@ -3525,22 +3953,26 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
+ },
+ "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=="
},
"node_modules/cookie": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
- "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+ "version": "0.5.0",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/copy-webpack-plugin": {
"version": "11.0.0",
- "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz",
- "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-glob": "^3.2.11",
"glob-parent": "^6.0.1",
@@ -3562,9 +3994,8 @@
},
"node_modules/copy-webpack-plugin/node_modules/ajv": {
"version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
@@ -3578,9 +4009,8 @@
},
"node_modules/copy-webpack-plugin/node_modules/ajv-keywords": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
- "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3"
},
@@ -3590,9 +4020,8 @@
},
"node_modules/copy-webpack-plugin/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"
},
@@ -3602,9 +4031,8 @@
},
"node_modules/copy-webpack-plugin/node_modules/globby": {
"version": "13.2.2",
- "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz",
- "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"dir-glob": "^3.0.1",
"fast-glob": "^3.3.0",
@@ -3621,15 +4049,13 @@
},
"node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/copy-webpack-plugin/node_modules/schema-utils": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
- "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/json-schema": "^7.0.9",
"ajv": "^8.9.0",
@@ -3646,9 +4072,8 @@
},
"node_modules/copy-webpack-plugin/node_modules/slash": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
- "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -3658,15 +4083,13 @@
},
"node_modules/core-util-is": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/cosmiconfig": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
- "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/parse-json": "^4.0.0",
"import-fresh": "^3.2.1",
@@ -3678,11 +4101,18 @@
"node": ">=10"
}
},
+ "node_modules/cosmiconfig-toml-loader": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig-toml-loader/-/cosmiconfig-toml-loader-1.0.0.tgz",
+ "integrity": "sha512-H/2gurFWVi7xXvCyvsWRLCMekl4tITJcX0QEsDMpzxtuxDyM59xLatYNg4s/k9AA/HdtCYfj2su8mgA0GSDLDA==",
+ "dependencies": {
+ "@iarna/toml": "^2.2.5"
+ }
+ },
"node_modules/crc-32": {
"version": "1.2.2",
- "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
- "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
"dev": true,
+ "license": "Apache-2.0",
"bin": {
"crc32": "bin/crc32.njs"
},
@@ -3691,101 +4121,42 @@
}
},
"node_modules/crc32-stream": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz",
- "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==",
+ "version": "5.0.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"crc-32": "^1.2.0",
- "readable-stream": "^4.0.0"
+ "readable-stream": "^3.4.0"
},
"engines": {
- "node": ">= 14"
- }
- },
- "node_modules/crc32-stream/node_modules/buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "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"
- }
- ],
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
+ "node": ">= 12.0.0"
}
},
"node_modules/crc32-stream/node_modules/readable-stream": {
- "version": "4.5.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
- "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==",
+ "version": "3.6.2",
"dev": true,
+ "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"
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/crc32-stream/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==",
- "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"
- }
- ]
- },
- "node_modules/crc32-stream/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==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.2.0"
+ "node": ">= 6"
}
},
"node_modules/cross-fetch": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz",
- "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"node-fetch": "^2.6.12"
}
},
"node_modules/cross-fetch/node_modules/node-fetch": {
"version": "2.7.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
- "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"whatwg-url": "^5.0.0"
},
@@ -3801,11 +4172,21 @@
}
}
},
+ "node_modules/cross-inspect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cross-inspect/-/cross-inspect-1.0.0.tgz",
+ "integrity": "sha512-4PFfn4b5ZN6FMNGSZlyb7wUhuN8wvj8t/VQHZdM4JsDcruGJ8L2kf9zao98QIrBPFCpdk27qst/AGTl7pL3ypQ==",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
"node_modules/cross-spawn": {
"version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
@@ -3817,15 +4198,13 @@
},
"node_modules/cross-spawn/node_modules/isexe": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/cross-spawn/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"
},
@@ -3837,16 +4216,15 @@
}
},
"node_modules/css-loader": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz",
- "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==",
+ "version": "6.10.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"icss-utils": "^5.1.0",
"postcss": "^8.4.33",
- "postcss-modules-extract-imports": "^3.1.0",
- "postcss-modules-local-by-default": "^4.0.5",
- "postcss-modules-scope": "^3.2.0",
+ "postcss-modules-extract-imports": "^3.0.0",
+ "postcss-modules-local-by-default": "^4.0.4",
+ "postcss-modules-scope": "^3.1.1",
"postcss-modules-values": "^4.0.0",
"postcss-value-parser": "^4.2.0",
"semver": "^7.5.4"
@@ -3871,23 +4249,56 @@
}
}
},
+ "node_modules/css-select": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
+ "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
"node_modules/css-shorthand-properties": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.1.tgz",
- "integrity": "sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==",
"dev": true
},
+ "node_modules/css-tree": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
+ "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
+ "dependencies": {
+ "mdn-data": "2.0.30",
+ "source-map-js": "^1.0.1"
+ },
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
+ }
+ },
"node_modules/css-value": {
"version": "0.0.1",
- "resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz",
- "integrity": "sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==",
"dev": true
},
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
"node_modules/cssesc": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"dev": true,
+ "license": "MIT",
"bin": {
"cssesc": "bin/cssesc"
},
@@ -3897,75 +4308,24 @@
},
"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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/data-uri-to-buffer": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
- "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 12"
}
},
- "node_modules/data-view-buffer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz",
- "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.6",
- "es-errors": "^1.3.0",
- "is-data-view": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/data-view-byte-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz",
- "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.7",
- "es-errors": "^1.3.0",
- "is-data-view": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/data-view-byte-offset": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz",
- "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.6",
- "es-errors": "^1.3.0",
- "is-data-view": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
+ "node_modules/dataloader": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.2.2.tgz",
+ "integrity": "sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g=="
+ },
"node_modules/debug": {
"version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"ms": "2.1.2"
},
@@ -3980,9 +4340,8 @@
},
"node_modules/decamelize": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz",
- "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
@@ -3992,18 +4351,16 @@
},
"node_modules/decode-uri-component": {
"version": "0.2.2",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
- "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10"
}
},
"node_modules/decompress": {
"version": "4.2.1",
- "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz",
- "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"decompress-tar": "^4.0.0",
"decompress-tarbz2": "^4.0.0",
@@ -4020,9 +4377,8 @@
},
"node_modules/decompress-response": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
- "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mimic-response": "^1.0.0"
},
@@ -4032,9 +4388,8 @@
},
"node_modules/decompress-tar": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz",
- "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"file-type": "^5.2.0",
"is-stream": "^1.1.0",
@@ -4046,9 +4401,8 @@
},
"node_modules/decompress-tar/node_modules/bl": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
- "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"readable-stream": "^2.3.5",
"safe-buffer": "^5.1.1"
@@ -4056,27 +4410,24 @@
},
"node_modules/decompress-tar/node_modules/file-type": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
- "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/decompress-tar/node_modules/is-stream": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/decompress-tar/node_modules/tar-stream": {
"version": "1.6.2",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
- "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"bl": "^1.0.0",
"buffer-alloc": "^1.2.0",
@@ -4092,9 +4443,8 @@
},
"node_modules/decompress-tarbz2": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz",
- "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"decompress-tar": "^4.1.0",
"file-type": "^6.1.0",
@@ -4108,27 +4458,24 @@
},
"node_modules/decompress-tarbz2/node_modules/file-type": {
"version": "6.2.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz",
- "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/decompress-tarbz2/node_modules/is-stream": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/decompress-targz": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz",
- "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"decompress-tar": "^4.1.1",
"file-type": "^5.2.0",
@@ -4140,27 +4487,24 @@
},
"node_modules/decompress-targz/node_modules/file-type": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz",
- "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/decompress-targz/node_modules/is-stream": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/decompress-unzip": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz",
- "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"file-type": "^3.8.0",
"get-stream": "^2.2.0",
@@ -4173,18 +4517,16 @@
},
"node_modules/decompress-unzip/node_modules/file-type": {
"version": "3.9.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz",
- "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/decompress-unzip/node_modules/get-stream": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz",
- "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"object-assign": "^4.0.1",
"pinkie-promise": "^2.0.0"
@@ -4195,18 +4537,16 @@
},
"node_modules/decompress-unzip/node_modules/pify": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/decompress/node_modules/make-dir": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pify": "^3.0.0"
},
@@ -4216,51 +4556,59 @@
},
"node_modules/decompress/node_modules/make-dir/node_modules/pify": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/decompress/node_modules/pify": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/dedent-js": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dedent-js/-/dedent-js-1.0.1.tgz",
+ "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ=="
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "optional": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"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
+ "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/deepmerge-ts": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-5.1.0.tgz",
- "integrity": "sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=16.0.0"
}
},
"node_modules/defaults": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
- "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"clone": "^1.0.2"
},
@@ -4270,9 +4618,8 @@
},
"node_modules/defer-to-connect": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz",
- "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
}
@@ -4281,7 +4628,6 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
- "dev": true,
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
@@ -4296,9 +4642,8 @@
},
"node_modules/define-properties": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
- "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"define-data-property": "^1.0.1",
"has-property-descriptors": "^1.0.0",
@@ -4313,9 +4658,8 @@
},
"node_modules/degenerator": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
- "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ast-types": "^0.13.4",
"escodegen": "^2.1.0",
@@ -4327,61 +4671,59 @@
},
"node_modules/delayed-stream": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "dev": true,
- "peer": true,
+ "license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/depd": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/dequal": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
- "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
+ "node_modules/detect-libc": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
+ "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/devtools-protocol": {
- "version": "0.0.1282316",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1282316.tgz",
- "integrity": "sha512-i7eIqWdVxeXBY/M+v83yRkOV1sTHnr3XYiC0YNBivLIE6hBfE2H0c2o8VC5ynT44yjy+Ei0kLrBQFK/RUKaAHQ==",
- "dev": true
+ "version": "0.0.1249869",
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/diff": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
- "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+ "version": "5.1.0",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.3.1"
}
},
"node_modules/diff-sequences": {
"version": "29.6.3",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz",
- "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.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"
},
@@ -4391,9 +4733,8 @@
},
"node_modules/doctrine": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"esutils": "^2.0.2"
},
@@ -4401,23 +4742,72 @@
"node": ">=6.0.0"
}
},
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
+ "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
"node_modules/dotenv": {
- "version": "16.4.5",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
- "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
+ "version": "16.4.1",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=12"
},
"funding": {
- "url": "https://dotenvx.com"
+ "url": "https://github.com/motdotla/dotenv?sponsor=1"
}
},
"node_modules/download": {
"version": "8.0.0",
- "resolved": "https://registry.npmjs.org/download/-/download-8.0.0.tgz",
- "integrity": "sha512-ASRY5QhDk7FK+XrQtQyvhpDKanLluEEQtWl/J7Lxuf/b+i8RYh997QeXvL85xitrmRKVlx9c7eTrcRdq2GS4eA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"archive-type": "^4.0.0",
"content-disposition": "^0.5.2",
@@ -4437,9 +4827,8 @@
},
"node_modules/download/node_modules/get-stream": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pump": "^3.0.0"
},
@@ -4447,32 +4836,36 @@
"node": ">=6"
}
},
+ "node_modules/dset": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.3.tgz",
+ "integrity": "sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/duplexer2": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
- "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"readable-stream": "^2.0.2"
}
},
"node_modules/duplexer3": {
"version": "0.1.5",
- "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
- "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/eastasianwidth": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/easy-table": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.2.0.tgz",
- "integrity": "sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -4482,9 +4875,8 @@
},
"node_modules/edge-paths": {
"version": "3.0.5",
- "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-3.0.5.tgz",
- "integrity": "sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/which": "^2.0.1",
"which": "^2.0.2"
@@ -4498,15 +4890,13 @@
},
"node_modules/edge-paths/node_modules/isexe": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/edge-paths/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"
},
@@ -4518,13 +4908,12 @@
}
},
"node_modules/edgedriver": {
- "version": "5.3.10",
- "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-5.3.10.tgz",
- "integrity": "sha512-RFSHYMNtcF1PjaGZCA2rdQQ8hSTLPZgcYgeY1V6dC+tR4NhZXwFAku+8hCbRYh7ZlwKKrTbVu9FwknjFddIuuw==",
+ "version": "5.3.9",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"dependencies": {
- "@wdio/logger": "^8.28.0",
+ "@wdio/logger": "^8.16.17",
"decamelize": "^6.0.0",
"edge-paths": "^3.0.5",
"node-fetch": "^3.3.2",
@@ -4536,10 +4925,9 @@
}
},
"node_modules/ejs": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
- "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
+ "version": "3.1.9",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"jake": "^10.8.5"
},
@@ -4551,40 +4939,34 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.4.736",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.736.tgz",
- "integrity": "sha512-Rer6wc3ynLelKNM4lOCg7/zPQj8tPOCB2hzD32PX9wd3hgRRi9MxEbmkFCokzcEhRVMiOVLjnL9ig9cefJ+6+Q==",
- "dev": true
+ "version": "1.4.656",
+ "license": "ISC"
},
"node_modules/emoji-regex": {
"version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/emojis-list": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
},
"node_modules/end-of-stream": {
"version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
- "dev": true,
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
"once": "^1.4.0"
}
},
"node_modules/enhanced-resolve": {
- "version": "5.16.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz",
- "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==",
+ "version": "5.15.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.4",
"tapable": "^2.2.0"
@@ -4593,11 +4975,21 @@
"node": ">=10.13.0"
}
},
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
"node_modules/envinfo": {
- "version": "7.12.0",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.12.0.tgz",
- "integrity": "sha512-Iw9rQJBGpJRd3rwXm9ft/JiGoAZmLxxJZELYDQoPRZ4USVhkKtIcNBPw6U+/K2mBpaqM25JSV6Yl4Az9vO2wJg==",
+ "version": "7.11.1",
"dev": true,
+ "license": "MIT",
"bin": {
"envinfo": "dist/cli.js"
},
@@ -4607,65 +4999,55 @@
},
"node_modules/error-ex": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"is-arrayish": "^0.2.1"
}
},
"node_modules/es-abstract": {
- "version": "1.23.3",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
- "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==",
+ "version": "1.22.3",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "array-buffer-byte-length": "^1.0.1",
- "arraybuffer.prototype.slice": "^1.0.3",
- "available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
- "data-view-buffer": "^1.0.1",
- "data-view-byte-length": "^1.0.1",
- "data-view-byte-offset": "^1.0.0",
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.0.0",
- "es-set-tostringtag": "^2.0.3",
+ "array-buffer-byte-length": "^1.0.0",
+ "arraybuffer.prototype.slice": "^1.0.2",
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.5",
+ "es-set-tostringtag": "^2.0.1",
"es-to-primitive": "^1.2.1",
"function.prototype.name": "^1.1.6",
- "get-intrinsic": "^1.2.4",
- "get-symbol-description": "^1.0.2",
+ "get-intrinsic": "^1.2.2",
+ "get-symbol-description": "^1.0.0",
"globalthis": "^1.0.3",
"gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.2",
- "has-proto": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
"has-symbols": "^1.0.3",
- "hasown": "^2.0.2",
- "internal-slot": "^1.0.7",
- "is-array-buffer": "^3.0.4",
+ "hasown": "^2.0.0",
+ "internal-slot": "^1.0.5",
+ "is-array-buffer": "^3.0.2",
"is-callable": "^1.2.7",
- "is-data-view": "^1.0.1",
- "is-negative-zero": "^2.0.3",
+ "is-negative-zero": "^2.0.2",
"is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.3",
+ "is-shared-array-buffer": "^1.0.2",
"is-string": "^1.0.7",
- "is-typed-array": "^1.1.13",
+ "is-typed-array": "^1.1.12",
"is-weakref": "^1.0.2",
"object-inspect": "^1.13.1",
"object-keys": "^1.1.1",
- "object.assign": "^4.1.5",
- "regexp.prototype.flags": "^1.5.2",
- "safe-array-concat": "^1.1.2",
- "safe-regex-test": "^1.0.3",
- "string.prototype.trim": "^1.2.9",
- "string.prototype.trimend": "^1.0.8",
- "string.prototype.trimstart": "^1.0.8",
- "typed-array-buffer": "^1.0.2",
- "typed-array-byte-length": "^1.0.1",
- "typed-array-byte-offset": "^1.0.2",
- "typed-array-length": "^1.0.6",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.5.1",
+ "safe-array-concat": "^1.0.1",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trim": "^1.2.8",
+ "string.prototype.trimend": "^1.0.7",
+ "string.prototype.trimstart": "^1.0.7",
+ "typed-array-buffer": "^1.0.0",
+ "typed-array-byte-length": "^1.0.0",
+ "typed-array-byte-offset": "^1.0.0",
+ "typed-array-length": "^1.0.4",
"unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.15"
+ "which-typed-array": "^1.1.13"
},
"engines": {
"node": ">= 0.4"
@@ -4678,7 +5060,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
"integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
- "dev": true,
"dependencies": {
"get-intrinsic": "^1.2.4"
},
@@ -4688,65 +5069,45 @@
},
"node_modules/es-errors": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-iterator-helpers": {
- "version": "1.0.18",
- "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz",
- "integrity": "sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==",
+ "version": "1.0.15",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
+ "asynciterator.prototype": "^1.0.0",
+ "call-bind": "^1.0.2",
"define-properties": "^1.2.1",
- "es-abstract": "^1.23.0",
- "es-errors": "^1.3.0",
- "es-set-tostringtag": "^2.0.3",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.4",
+ "es-abstract": "^1.22.1",
+ "es-set-tostringtag": "^2.0.1",
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.2.1",
"globalthis": "^1.0.3",
- "has-property-descriptors": "^1.0.2",
- "has-proto": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
"has-symbols": "^1.0.3",
- "internal-slot": "^1.0.7",
+ "internal-slot": "^1.0.5",
"iterator.prototype": "^1.1.2",
- "safe-array-concat": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
+ "safe-array-concat": "^1.0.1"
}
},
"node_modules/es-module-lexer": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz",
- "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==",
- "dev": true
- },
- "node_modules/es-object-atoms": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz",
- "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==",
+ "version": "1.4.1",
"dev": true,
- "dependencies": {
- "es-errors": "^1.3.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
+ "license": "MIT"
},
"node_modules/es-set-tostringtag": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz",
- "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==",
+ "version": "2.0.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "get-intrinsic": "^1.2.4",
- "has-tostringtag": "^1.0.2",
- "hasown": "^2.0.1"
+ "get-intrinsic": "^1.2.2",
+ "has-tostringtag": "^1.0.0",
+ "hasown": "^2.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -4754,18 +5115,16 @@
},
"node_modules/es-shim-unscopables": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
- "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"hasown": "^2.0.0"
}
},
"node_modules/es-to-primitive": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-callable": "^1.1.4",
"is-date-object": "^1.0.1",
@@ -4779,25 +5138,21 @@
}
},
"node_modules/escalade": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
- "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
- "dev": true,
+ "version": "3.1.1",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/escape-html": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"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"
},
@@ -4807,9 +5162,8 @@
},
"node_modules/escodegen": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
- "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"esprima": "^4.0.1",
"estraverse": "^5.2.0",
@@ -4827,16 +5181,15 @@
}
},
"node_modules/eslint": {
- "version": "8.57.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
- "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
+ "version": "8.56.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.57.0",
- "@humanwhocodes/config-array": "^0.11.14",
+ "@eslint/js": "8.56.0",
+ "@humanwhocodes/config-array": "^0.11.13",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
"@ungap/structured-clone": "^1.2.0",
@@ -4882,29 +5235,26 @@
}
},
"node_modules/eslint-plugin-react": {
- "version": "7.34.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz",
- "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==",
+ "version": "7.33.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "array-includes": "^3.1.7",
- "array.prototype.findlast": "^1.2.4",
- "array.prototype.flatmap": "^1.3.2",
- "array.prototype.toreversed": "^1.1.2",
- "array.prototype.tosorted": "^1.1.3",
+ "array-includes": "^3.1.6",
+ "array.prototype.flatmap": "^1.3.1",
+ "array.prototype.tosorted": "^1.1.1",
"doctrine": "^2.1.0",
- "es-iterator-helpers": "^1.0.17",
+ "es-iterator-helpers": "^1.0.12",
"estraverse": "^5.3.0",
"jsx-ast-utils": "^2.4.1 || ^3.0.0",
"minimatch": "^3.1.2",
- "object.entries": "^1.1.7",
- "object.fromentries": "^2.0.7",
- "object.hasown": "^1.1.3",
- "object.values": "^1.1.7",
+ "object.entries": "^1.1.6",
+ "object.fromentries": "^2.0.6",
+ "object.hasown": "^1.1.2",
+ "object.values": "^1.1.6",
"prop-types": "^15.8.1",
- "resolve": "^2.0.0-next.5",
+ "resolve": "^2.0.0-next.4",
"semver": "^6.3.1",
- "string.prototype.matchall": "^4.0.10"
+ "string.prototype.matchall": "^4.0.8"
},
"engines": {
"node": ">=4"
@@ -4915,9 +5265,8 @@
},
"node_modules/eslint-plugin-react/node_modules/doctrine": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"esutils": "^2.0.2"
},
@@ -4927,18 +5276,16 @@
},
"node_modules/eslint-plugin-react/node_modules/semver": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/eslint-scope": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
@@ -4949,18 +5296,16 @@
},
"node_modules/eslint-scope/node_modules/estraverse": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=4.0"
}
},
"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"
},
@@ -4970,9 +5315,8 @@
},
"node_modules/eslint/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"
},
@@ -4985,9 +5329,8 @@
},
"node_modules/eslint/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"
@@ -5001,9 +5344,8 @@
},
"node_modules/eslint/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"
},
@@ -5013,15 +5355,13 @@
},
"node_modules/eslint/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/eslint/node_modules/eslint-scope": {
"version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^5.2.0"
@@ -5035,9 +5375,8 @@
},
"node_modules/eslint/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"
},
@@ -5047,9 +5386,8 @@
},
"node_modules/eslint/node_modules/strip-ansi": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -5059,9 +5397,8 @@
},
"node_modules/eslint/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"
},
@@ -5071,9 +5408,8 @@
},
"node_modules/espree": {
"version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"acorn": "^8.9.0",
"acorn-jsx": "^5.3.2",
@@ -5088,9 +5424,8 @@
},
"node_modules/esprima": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true,
+ "license": "BSD-2-Clause",
"bin": {
"esparse": "bin/esparse.js",
"esvalidate": "bin/esvalidate.js"
@@ -5101,9 +5436,8 @@
},
"node_modules/esquery": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"estraverse": "^5.1.0"
},
@@ -5113,9 +5447,8 @@
},
"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"
},
@@ -5125,45 +5458,45 @@
},
"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=="
+ },
"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==",
"dev": true,
+ "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==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.x"
}
},
"node_modules/execa": {
"version": "8.0.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
- "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cross-spawn": "^7.0.3",
"get-stream": "^8.0.1",
@@ -5184,14 +5517,21 @@
},
"node_modules/exenv-es6": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/exenv-es6/-/exenv-es6-1.1.1.tgz",
- "integrity": "sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ=="
+ "license": "MIT"
+ },
+ "node_modules/expand-template": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
+ "optional": true,
+ "engines": {
+ "node": ">=6"
+ }
},
"node_modules/expect": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz",
- "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/expect-utils": "^29.7.0",
"jest-get-type": "^29.6.3",
@@ -5204,10 +5544,9 @@
}
},
"node_modules/expect-webdriverio": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-4.13.0.tgz",
- "integrity": "sha512-y2LF6vECifTOiOk0i0FMPWJGyntiW+eqzQWFZimu9Cae8XMUH5q4F5SzpfGCxsvmOdf3uFjlr+u9IXrQBN5o0Q==",
+ "version": "4.9.4",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@vitest/snapshot": "^1.2.2",
"expect": "^29.7.0",
@@ -5223,11 +5562,14 @@
"webdriverio": "^8.29.3"
}
},
+ "node_modules/exponential-backoff": {
+ "version": "3.1.1",
+ "license": "Apache-2.0"
+ },
"node_modules/ext-list": {
"version": "2.2.2",
- "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz",
- "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mime-db": "^1.28.0"
},
@@ -5237,9 +5579,8 @@
},
"node_modules/ext-name": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz",
- "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ext-list": "^2.0.0",
"sort-keys-length": "^1.0.0"
@@ -5250,9 +5591,8 @@
},
"node_modules/external-editor": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
- "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chardet": "^0.7.0",
"iconv-lite": "^0.4.24",
@@ -5262,11 +5602,21 @@
"node": ">=4"
}
},
+ "node_modules/extract-files": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz",
+ "integrity": "sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==",
+ "engines": {
+ "node": "^12.20 || >= 14.13"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jaydenseric"
+ }
+ },
"node_modules/extract-zip": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
- "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"debug": "^4.1.1",
"get-stream": "^5.1.0",
@@ -5284,9 +5634,8 @@
},
"node_modules/extract-zip/node_modules/get-stream": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
- "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pump": "^3.0.0"
},
@@ -5299,33 +5648,26 @@
},
"node_modules/fast-content-type-parse": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz",
- "integrity": "sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-decode-uri-component": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz",
- "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==",
- "dev": true
+ "license": "MIT"
},
"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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-fifo": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
- "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-glob": {
"version": "3.3.2",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
- "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
@@ -5339,19 +5681,17 @@
},
"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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-json-stringify": {
- "version": "5.14.1",
- "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.14.1.tgz",
- "integrity": "sha512-J1Grbf0oSXV3lKsBf3itz1AvRk43qVrx3Ac10sNvi3LZaz1by4oDdYKFrJycPhS8+Gb7y8rgV/Jqw1UZVjyNvw==",
+ "version": "5.11.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@fastify/merge-json-schemas": "^0.1.0",
+ "@fastify/deepmerge": "^1.0.0",
"ajv": "^8.10.0",
- "ajv-formats": "^3.0.1",
+ "ajv-formats": "^2.1.1",
"fast-deep-equal": "^3.1.3",
"fast-uri": "^2.1.0",
"json-schema-ref-resolver": "^1.0.1",
@@ -5360,9 +5700,8 @@
},
"node_modules/fast-json-stringify/node_modules/ajv": {
"version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
@@ -5374,72 +5713,46 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/fast-json-stringify/node_modules/ajv-formats": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
- "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
- "dev": true,
- "dependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependencies": {
- "ajv": "^8.0.0"
- },
- "peerDependenciesMeta": {
- "ajv": {
- "optional": true
- }
- }
- },
"node_modules/fast-json-stringify/node_modules/json-schema-traverse": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
+ "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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-querystring": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz",
- "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"fast-decode-uri-component": "^1.0.1"
}
},
"node_modules/fast-redact": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz",
- "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==",
+ "version": "3.3.0",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/fast-uri": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.3.0.tgz",
- "integrity": "sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fastest-levenshtein": {
"version": "1.0.16",
- "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
- "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4.9.1"
}
},
"node_modules/fastify": {
- "version": "4.26.2",
- "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.26.2.tgz",
- "integrity": "sha512-90pjTuPGrfVKtdpLeLzND5nyC4woXZN5VadiNQCicj/iJU4viNHKhsAnb7jmv1vu2IzkLXyBiCzdWuzeXgQ5Ug==",
+ "version": "4.26.0",
"dev": true,
"funding": [
{
@@ -5451,12 +5764,13 @@
"url": "https://opencollective.com/fastify"
}
],
+ "license": "MIT",
"dependencies": {
"@fastify/ajv-compiler": "^3.5.0",
"@fastify/error": "^3.4.0",
"@fastify/fast-json-stringify-compiler": "^4.3.0",
"abstract-logging": "^2.0.1",
- "avvio": "^8.3.0",
+ "avvio": "^8.2.1",
"fast-content-type-parse": "^1.1.0",
"fast-json-stringify": "^5.8.0",
"find-my-way": "^8.0.0",
@@ -5472,33 +5786,25 @@
},
"node_modules/fastify-plugin": {
"version": "4.5.1",
- "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-4.5.1.tgz",
- "integrity": "sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fastq": {
- "version": "1.17.1",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
- "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
- "dev": true,
+ "version": "1.17.0",
+ "license": "ISC",
"dependencies": {
"reusify": "^1.0.4"
}
},
"node_modules/fd-slicer": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
- "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"pend": "~1.2.0"
}
},
"node_modules/fetch-blob": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
- "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -5509,6 +5815,7 @@
"url": "https://paypal.me/jimmywarting"
}
],
+ "license": "MIT",
"dependencies": {
"node-domexception": "^1.0.0",
"web-streams-polyfill": "^3.0.3"
@@ -5519,9 +5826,8 @@
},
"node_modules/figures": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz",
- "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"escape-string-regexp": "^5.0.0",
"is-unicode-supported": "^1.2.0"
@@ -5535,9 +5841,8 @@
},
"node_modules/figures/node_modules/escape-string-regexp": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
- "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -5547,9 +5852,8 @@
},
"node_modules/file-entry-cache": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"flat-cache": "^3.0.4"
},
@@ -5559,36 +5863,32 @@
},
"node_modules/file-type": {
"version": "11.1.0",
- "resolved": "https://registry.npmjs.org/file-type/-/file-type-11.1.0.tgz",
- "integrity": "sha512-rM0UO7Qm9K7TWTtA6AShI/t7H5BPjDeGVDaNyg9BjHAj3PysKy7+8C8D137R88jnR3rFJZQB/tFgydl5sN5m7g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/filelist": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
- "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"minimatch": "^5.0.1"
}
},
"node_modules/filelist/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/filelist/node_modules/minimatch": {
"version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -5598,18 +5898,16 @@
},
"node_modules/filename-reserved-regex": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
- "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/filenamify": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-3.0.0.tgz",
- "integrity": "sha512-5EFZ//MsvJgXjBAFJ+Bh2YaCTRF/VP1YOmGrgt+KJ4SFRLjI87EIdwLLuT6wQX0I4F9W41xutobzczjsOKlI/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"filename-reserved-regex": "^2.0.0",
"strip-outer": "^1.0.0",
@@ -5621,9 +5919,7 @@
},
"node_modules/fill-range": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
},
@@ -5633,9 +5929,8 @@
},
"node_modules/find-my-way": {
"version": "8.1.0",
- "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-8.1.0.tgz",
- "integrity": "sha512-41QwjCGcVTODUmLLqTMeoHeiozbMXYMAE1CKFiDyi9zVZ2Vjh0yz3MF0WQZoIb+cmzP/XlbFjlF2NtJmvZHznA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-querystring": "^1.0.0",
@@ -5647,9 +5942,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"
@@ -5663,18 +5957,16 @@
},
"node_modules/flat": {
"version": "5.0.2",
- "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
- "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
"dev": true,
+ "license": "BSD-3-Clause",
"bin": {
"flat": "cli.js"
}
},
"node_modules/flat-cache": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
- "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"flatted": "^3.2.9",
"keyv": "^4.5.3",
@@ -5685,15 +5977,12 @@
}
},
"node_modules/flatted": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz",
- "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
- "dev": true
+ "version": "3.2.9",
+ "dev": true,
+ "license": "ISC"
},
"node_modules/follow-redirects": {
- "version": "1.15.6",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
- "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
+ "version": "1.15.5",
"dev": true,
"funding": [
{
@@ -5701,6 +5990,7 @@
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
+ "license": "MIT",
"peer": true,
"engines": {
"node": ">=4.0"
@@ -5713,18 +6003,16 @@
},
"node_modules/for-each": {
"version": "0.3.3",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-callable": "^1.1.3"
}
},
"node_modules/foreground-child": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
- "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"cross-spawn": "^7.0.0",
"signal-exit": "^4.0.1"
@@ -5738,9 +6026,8 @@
},
"node_modules/fork-ts-checker-webpack-plugin": {
"version": "7.3.0",
- "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.3.0.tgz",
- "integrity": "sha512-IN+XTzusCjR5VgntYFgxbxVx3WraPRnKehBFrf00cMSrtUuW9MsG9dhL6MWpY6MkjC3wVwoujfCDgZZCQwbswA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.16.7",
"chalk": "^4.1.2",
@@ -5772,9 +6059,8 @@
},
"node_modules/fork-ts-checker-webpack-plugin/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"
},
@@ -5787,9 +6073,8 @@
},
"node_modules/fork-ts-checker-webpack-plugin/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"
@@ -5803,9 +6088,8 @@
},
"node_modules/fork-ts-checker-webpack-plugin/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"
},
@@ -5815,15 +6099,13 @@
},
"node_modules/fork-ts-checker-webpack-plugin/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/json-schema": "^7.0.8",
"ajv": "^6.12.5",
@@ -5839,9 +6121,8 @@
},
"node_modules/fork-ts-checker-webpack-plugin/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"
},
@@ -5851,10 +6132,7 @@
},
"node_modules/form-data": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
- "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
- "dev": true,
- "peer": true,
+ "license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
@@ -5866,18 +6144,15 @@
},
"node_modules/form-data-encoder": {
"version": "2.1.4",
- "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
- "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 14.17"
}
},
"node_modules/formdata-polyfill": {
"version": "4.0.10",
- "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
- "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"fetch-blob": "^3.1.2"
},
@@ -5887,18 +6162,16 @@
},
"node_modules/forwarded": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/from2": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
- "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"inherits": "^2.0.1",
"readable-stream": "^2.0.0"
@@ -5906,15 +6179,13 @@
},
"node_modules/fs-constants": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
- "dev": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/fs-extra": {
"version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
@@ -5926,22 +6197,17 @@
},
"node_modules/fs-monkey": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz",
- "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==",
- "dev": true
+ "dev": true,
+ "license": "Unlicense"
},
"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"
@@ -5952,9 +6218,8 @@
},
"node_modules/fstream": {
"version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
- "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"graceful-fs": "^4.1.2",
"inherits": "~2.0.0",
@@ -5967,9 +6232,8 @@
},
"node_modules/fstream/node_modules/glob": {
"version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -5985,11 +6249,21 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/fstream/node_modules/mkdirp": {
+ "version": "0.5.6",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
"node_modules/fstream/node_modules/rimraf": {
"version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"glob": "^7.1.3"
},
@@ -5999,18 +6273,15 @@
},
"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/function.prototype.name": {
"version": "1.1.6",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
- "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.2.0",
@@ -6026,18 +6297,16 @@
},
"node_modules/functions-have-names": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/gaze": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
- "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"globule": "^1.0.0"
},
@@ -6046,18 +6315,17 @@
}
},
"node_modules/geckodriver": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-4.3.3.tgz",
- "integrity": "sha512-we2c2COgxFkLVuoknJNx+ioP+7VDq0sr6SCqWHTzlA4kzIbzR0EQ1Pps34s8WrsOnQqPC8a4sZV9dRPROOrkSg==",
+ "version": "4.3.2",
"dev": true,
"hasInstallScript": true,
+ "license": "MPL-2.0",
"dependencies": {
"@wdio/logger": "^8.28.0",
"decamelize": "^6.0.0",
- "http-proxy-agent": "^7.0.2",
- "https-proxy-agent": "^7.0.4",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.2",
"node-fetch": "^3.3.2",
- "tar-fs": "^3.0.5",
+ "tar-fs": "^3.0.4",
"unzipper": "^0.10.14",
"which": "^4.0.0"
},
@@ -6069,10 +6337,9 @@
}
},
"node_modules/geckodriver/node_modules/agent-base": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
- "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "version": "7.1.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"debug": "^4.3.4"
},
@@ -6081,10 +6348,9 @@
}
},
"node_modules/geckodriver/node_modules/http-proxy-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
- "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "version": "7.0.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.1.0",
"debug": "^4.3.4"
@@ -6094,10 +6360,9 @@
}
},
"node_modules/geckodriver/node_modules/https-proxy-agent": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz",
- "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==",
+ "version": "7.0.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.0.2",
"debug": "4"
@@ -6106,25 +6371,18 @@
"node": ">= 14"
}
},
- "node_modules/geckodriver/node_modules/tar-fs": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz",
- "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==",
- "dev": true,
- "dependencies": {
- "pump": "^3.0.0",
- "tar-stream": "^3.1.5"
- },
- "optionalDependencies": {
- "bare-fs": "^2.1.1",
- "bare-path": "^2.1.0"
+ "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==",
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/get-caller-file": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
@@ -6133,7 +6391,6 @@
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
"integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
- "dev": true,
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
@@ -6149,10 +6406,9 @@
}
},
"node_modules/get-port": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz",
- "integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==",
+ "version": "7.0.0",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=16"
},
@@ -6162,9 +6418,8 @@
},
"node_modules/get-stream": {
"version": "8.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
- "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=16"
},
@@ -6173,14 +6428,12 @@
}
},
"node_modules/get-symbol-description": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz",
- "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==",
+ "version": "1.0.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.5",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4"
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
},
"engines": {
"node": ">= 0.4"
@@ -6190,48 +6443,66 @@
}
},
"node_modules/get-uri": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz",
- "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==",
+ "version": "6.0.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
"basic-ftp": "^5.0.2",
- "data-uri-to-buffer": "^6.0.2",
+ "data-uri-to-buffer": "^6.0.0",
"debug": "^4.3.4",
- "fs-extra": "^11.2.0"
+ "fs-extra": "^8.1.0"
},
"engines": {
"node": ">= 14"
}
},
"node_modules/get-uri/node_modules/data-uri-to-buffer": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
- "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
+ "version": "6.0.1",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 14"
}
},
"node_modules/get-uri/node_modules/fs-extra": {
- "version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
+ "version": "8.1.0",
+ "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/get-uri/node_modules/jsonfile": {
+ "version": "4.0.0",
+ "dev": true,
+ "license": "MIT",
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/get-uri/node_modules/universalify": {
+ "version": "0.1.2",
"dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=14.14"
+ "node": ">= 4.0.0"
}
},
+ "node_modules/github-from-package": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
+ "optional": true
+ },
"node_modules/glob": {
"version": "8.1.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -6248,9 +6519,7 @@
},
"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"
},
@@ -6260,24 +6529,21 @@
},
"node_modules/glob-to-regexp": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
- "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
- "dev": true
+ "dev": true,
+ "license": "BSD-2-Clause"
},
"node_modules/glob/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/glob/node_modules/minimatch": {
"version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -6287,9 +6553,8 @@
},
"node_modules/globals": {
"version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"type-fest": "^0.20.2"
},
@@ -6302,9 +6567,8 @@
},
"node_modules/globalthis": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
- "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"define-properties": "^1.1.3"
},
@@ -6317,9 +6581,7 @@
},
"node_modules/globby": {
"version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"array-union": "^2.1.0",
"dir-glob": "^3.0.1",
@@ -6337,9 +6599,8 @@
},
"node_modules/globule": {
"version": "1.3.4",
- "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz",
- "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"glob": "~7.1.1",
"lodash": "^4.17.21",
@@ -6351,9 +6612,8 @@
},
"node_modules/globule/node_modules/glob": {
"version": "7.1.7",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
- "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -6371,9 +6631,8 @@
},
"node_modules/globule/node_modules/minimatch": {
"version": "3.0.8",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
- "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
@@ -6383,9 +6642,7 @@
},
"node_modules/gopd": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"get-intrinsic": "^1.1.3"
},
@@ -6395,9 +6652,8 @@
},
"node_modules/got": {
"version": "8.3.2",
- "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz",
- "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@sindresorhus/is": "^0.7.0",
"cacheable-request": "^2.1.1",
@@ -6423,54 +6679,219 @@
},
"node_modules/got/node_modules/get-stream": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/got/node_modules/pify": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"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
+ "dev": true,
+ "license": "ISC"
},
"node_modules/grapheme-splitter": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
- "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/graphemer": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/graphql": {
+ "version": "16.8.1",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
+ }
+ },
+ "node_modules/graphql-config": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-5.0.3.tgz",
+ "integrity": "sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ==",
+ "dependencies": {
+ "@graphql-tools/graphql-file-loader": "^8.0.0",
+ "@graphql-tools/json-file-loader": "^8.0.0",
+ "@graphql-tools/load": "^8.0.0",
+ "@graphql-tools/merge": "^9.0.0",
+ "@graphql-tools/url-loader": "^8.0.0",
+ "@graphql-tools/utils": "^10.0.0",
+ "cosmiconfig": "^8.1.0",
+ "jiti": "^1.18.2",
+ "minimatch": "^4.2.3",
+ "string-env-interpolation": "^1.0.1",
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">= 16.0.0"
+ },
+ "peerDependencies": {
+ "cosmiconfig-toml-loader": "^1.0.0",
+ "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
+ },
+ "peerDependenciesMeta": {
+ "cosmiconfig-toml-loader": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/graphql-config/node_modules/cosmiconfig": {
+ "version": "8.3.6",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
+ "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==",
+ "dependencies": {
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0",
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.9.5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/graphql-config/node_modules/minimatch": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.3.tgz",
+ "integrity": "sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng==",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/graphql-language-service": {
+ "version": "5.2.0",
+ "resolved": "file:graphql-language-service-5.2.0.tgz",
+ "integrity": "sha512-6QhpKCzy6OJ87X2eD792R8nPUdhM0UHSkwt30tWGG0/snXfZHlK/h6OTgivg4cv+nFTx26zP/QjRhuUepxeZEg==",
+ "license": "MIT",
+ "dependencies": {
+ "nullthrows": "^1.0.0",
+ "vscode-languageserver-types": "^3.17.1"
+ },
+ "bin": {
+ "graphql": "dist/temp-bin.js"
+ },
+ "peerDependencies": {
+ "graphql": "^15.5.0 || ^16.0.0"
+ }
+ },
+ "node_modules/graphql-language-service-server": {
+ "version": "2.12.0",
+ "resolved": "file:graphql-language-service-server-2.12.0.tgz",
+ "integrity": "sha512-+co6wwS8JTWM3qcRWtE/frkz+Yqy8TYta86nt+zjyBaFsJGePG1GRXBaTDiyyfvLJlKc/atFSinT0VCVeLYaIg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.23.6",
+ "@babel/types": "^7.23.5",
+ "@graphql-tools/code-file-loader": "8.0.3",
+ "@vue/compiler-sfc": "^3.4.5",
+ "cosmiconfig-toml-loader": "^1.0.0",
+ "dotenv": "10.0.0",
+ "fast-glob": "^3.2.7",
+ "glob": "^7.2.0",
+ "graphql-config": "5.0.3",
+ "graphql-language-service": "file:graphql-language-service-5.2.0.tgz",
+ "mkdirp": "^1.0.4",
+ "node-abort-controller": "^3.0.1",
+ "node-fetch": "3.3.2",
+ "nullthrows": "^1.0.0",
+ "source-map-js": "1.0.2",
+ "svelte": "^4.1.1",
+ "svelte2tsx": "^0.7.0",
+ "typescript": "^5.3.3",
+ "vscode-jsonrpc": "^8.0.1",
+ "vscode-languageserver": "^8.0.1",
+ "vscode-languageserver-types": "^3.17.2",
+ "vscode-uri": "^3.0.2"
+ },
+ "peerDependencies": {
+ "graphql": "^15.5.0 || ^16.0.0"
+ }
+ },
+ "node_modules/graphql-language-service-server/node_modules/dotenv": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz",
+ "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/graphql-language-service-server/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "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/graphql-language-service-server/node_modules/typescript": {
+ "version": "5.4.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz",
+ "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/graphql-ws": {
+ "version": "5.16.0",
+ "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.16.0.tgz",
+ "integrity": "sha512-Ju2RCU2dQMgSKtArPbEtsK5gNLnsQyTNIo/T7cZNp96niC1x0KdJNZV0TIoilceBPQwfb5itrGl8pkFeOUMl4A==",
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "graphql": ">=0.11 <=16"
+ }
},
"node_modules/has-bigints": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"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"
}
@@ -6479,7 +6900,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
- "dev": true,
"dependencies": {
"es-define-property": "^1.0.0"
},
@@ -6488,10 +6908,8 @@
}
},
"node_modules/has-proto": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
- "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
- "dev": true,
+ "version": "1.0.1",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -6501,18 +6919,15 @@
},
"node_modules/has-symbol-support-x": {
"version": "1.4.2",
- "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz",
- "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
},
"node_modules/has-symbols": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -6522,9 +6937,8 @@
},
"node_modules/has-to-string-tag-x": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz",
- "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-symbol-support-x": "^1.4.1"
},
@@ -6534,9 +6948,8 @@
},
"node_modules/has-tostringtag": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
- "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
},
@@ -6548,10 +6961,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,
+ "version": "2.0.0",
+ "license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
},
@@ -6561,18 +6972,16 @@
},
"node_modules/he": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true,
+ "license": "MIT",
"bin": {
"he": "bin/he"
}
},
"node_modules/hosted-git-info": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz",
- "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"lru-cache": "^10.0.1"
},
@@ -6582,33 +6991,47 @@
},
"node_modules/hosted-git-info/node_modules/lru-cache": {
"version": "10.2.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
- "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "14 || >=16.14"
}
},
"node_modules/hpagent": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz",
- "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14"
}
},
+ "node_modules/htmlparser2": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz",
+ "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1",
+ "entities": "^4.4.0"
+ }
+ },
"node_modules/http-cache-semantics": {
"version": "3.8.1",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
- "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
- "dev": true
+ "dev": true,
+ "license": "BSD-2-Clause"
},
"node_modules/http-errors": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"depd": "2.0.0",
"inherits": "2.0.4",
@@ -6622,9 +7045,8 @@
},
"node_modules/http-proxy-agent": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@tootallnate/once": "1",
"agent-base": "6",
@@ -6636,9 +7058,8 @@
},
"node_modules/http2-wrapper": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz",
- "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"quick-lru": "^5.1.1",
"resolve-alpn": "^1.2.0"
@@ -6649,9 +7070,8 @@
},
"node_modules/https-proxy-agent": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "6",
"debug": "4"
@@ -6662,18 +7082,16 @@
},
"node_modules/human-signals": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
- "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
"node": ">=16.17.0"
}
},
"node_modules/iconv-lite": {
"version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
@@ -6683,9 +7101,8 @@
},
"node_modules/icss-utils": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
- "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "^10 || ^12 || >= 14"
},
@@ -6695,9 +7112,7 @@
},
"node_modules/ieee754": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "dev": true,
+ "devOptional": true,
"funding": [
{
"type": "github",
@@ -6711,34 +7126,29 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "BSD-3-Clause"
},
"node_modules/ignore": {
"version": "5.3.1",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
- "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
},
"node_modules/immediate": {
"version": "3.0.6",
- "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
- "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/immutable": {
"version": "4.3.5",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz",
- "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/import-fresh": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"parent-module": "^1.0.0",
"resolve-from": "^4.0.0"
@@ -6750,11 +7160,17 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/import-fresh/node_modules/resolve-from": {
+ "version": "4.0.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/import-local": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz",
- "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pkg-dir": "^4.2.0",
"resolve-cwd": "^3.0.0"
@@ -6771,9 +7187,8 @@
},
"node_modules/import-meta-resolve": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz",
- "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==",
"dev": true,
+ "license": "MIT",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/wooorm"
@@ -6781,18 +7196,15 @@
},
"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==",
- "dev": true,
+ "license": "ISC",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@@ -6800,15 +7212,18 @@
},
"node_modules/inherits": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
+ "license": "ISC"
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "optional": true
},
"node_modules/inquirer": {
"version": "9.2.12",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.12.tgz",
- "integrity": "sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@ljharb/through": "^2.3.11",
"ansi-escapes": "^4.3.2",
@@ -6832,9 +7247,8 @@
},
"node_modules/inquirer/node_modules/strip-ansi": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -6843,12 +7257,11 @@
}
},
"node_modules/internal-slot": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz",
- "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==",
+ "version": "1.0.6",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.2",
"hasown": "^2.0.0",
"side-channel": "^1.0.4"
},
@@ -6858,18 +7271,16 @@
},
"node_modules/interpret": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
- "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/into-stream": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
- "integrity": "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"from2": "^2.1.1",
"p-is-promise": "^1.1.0"
@@ -6878,42 +7289,31 @@
"node": ">=4"
}
},
- "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==",
+ "node_modules/ip": {
+ "version": "1.1.8",
"dev": true,
- "dependencies": {
- "jsbn": "1.1.0",
- "sprintf-js": "^1.1.3"
- },
- "engines": {
- "node": ">= 12"
- }
+ "license": "MIT"
},
"node_modules/ip-regex": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz",
- "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/ipaddr.js": {
"version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.10"
}
},
"node_modules/is-array-buffer": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz",
- "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"get-intrinsic": "^1.2.1"
@@ -6927,15 +7327,12 @@
},
"node_modules/is-arrayish": {
"version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
+ "license": "MIT"
},
"node_modules/is-async-function": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz",
- "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -6948,9 +7345,8 @@
},
"node_modules/is-bigint": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-bigints": "^1.0.1"
},
@@ -6960,9 +7356,8 @@
},
"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"
},
@@ -6972,9 +7367,8 @@
},
"node_modules/is-boolean-object": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
@@ -6988,9 +7382,8 @@
},
"node_modules/is-callable": {
"version": "1.2.7",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -7000,9 +7393,8 @@
},
"node_modules/is-core-module": {
"version": "2.13.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
- "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"hasown": "^2.0.0"
},
@@ -7010,26 +7402,10 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-data-view": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz",
- "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==",
- "dev": true,
- "dependencies": {
- "is-typed-array": "^1.1.13"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-date-object": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -7042,9 +7418,8 @@
},
"node_modules/is-docker": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
- "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
"dev": true,
+ "license": "MIT",
"bin": {
"is-docker": "cli.js"
},
@@ -7057,18 +7432,15 @@
},
"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-finalizationregistry": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz",
- "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2"
},
@@ -7078,18 +7450,16 @@
},
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/is-generator-function": {
"version": "1.0.10",
- "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
- "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -7102,9 +7472,7 @@
},
"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"
},
@@ -7114,36 +7482,29 @@
},
"node_modules/is-interactive": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz",
- "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/is-map": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
- "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+ "version": "2.0.2",
"dev": true,
- "engines": {
- "node": ">= 0.4"
- },
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-natural-number": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz",
- "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/is-negative-zero": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
- "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+ "version": "2.0.2",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -7153,18 +7514,15 @@
},
"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-number-object": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -7177,36 +7535,32 @@
},
"node_modules/is-object": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz",
- "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==",
"dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-path-inside": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/is-plain-obj": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-plain-object": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"isobject": "^3.0.1"
},
@@ -7214,11 +7568,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-reference": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz",
+ "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
"node_modules/is-regex": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"has-tostringtag": "^1.0.0"
@@ -7232,35 +7593,26 @@
},
"node_modules/is-retry-allowed": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
- "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-set": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
- "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+ "version": "2.0.2",
"dev": true,
- "engines": {
- "node": ">= 0.4"
- },
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-shared-array-buffer": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz",
- "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==",
+ "version": "1.0.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7"
- },
- "engines": {
- "node": ">= 0.4"
+ "call-bind": "^1.0.2"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -7268,9 +7620,8 @@
},
"node_modules/is-stream": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
@@ -7280,9 +7631,8 @@
},
"node_modules/is-string": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-tostringtag": "^1.0.0"
},
@@ -7295,9 +7645,8 @@
},
"node_modules/is-symbol": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-symbols": "^1.0.2"
},
@@ -7310,9 +7659,8 @@
},
"node_modules/is-typed-array": {
"version": "1.1.13",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
- "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"which-typed-array": "^1.1.14"
},
@@ -7325,9 +7673,8 @@
},
"node_modules/is-unicode-supported": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
- "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -7337,27 +7684,21 @@
},
"node_modules/is-url": {
"version": "1.2.4",
- "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
- "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/is-weakmap": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
- "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+ "version": "2.0.1",
"dev": true,
- "engines": {
- "node": ">= 0.4"
- },
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-weakref": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
- "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2"
},
@@ -7366,16 +7707,12 @@
}
},
"node_modules/is-weakset": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz",
- "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==",
+ "version": "2.0.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
- "get-intrinsic": "^1.2.4"
- },
- "engines": {
- "node": ">= 0.4"
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -7383,9 +7720,8 @@
},
"node_modules/is-wsl": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
- "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-docker": "^2.0.0"
},
@@ -7395,9 +7731,8 @@
},
"node_modules/is2": {
"version": "2.0.9",
- "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz",
- "integrity": "sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"deep-is": "^0.1.3",
"ip-regex": "^4.1.0",
@@ -7409,33 +7744,37 @@
},
"node_modules/isarray": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/isexe": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz",
- "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=16"
}
},
"node_modules/isobject": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/isomorphic-ws": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz",
+ "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==",
+ "peerDependencies": {
+ "ws": "*"
+ }
+ },
"node_modules/isurl": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz",
- "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-to-string-tag-x": "^1.2.0",
"is-object": "^1.0.1"
@@ -7446,9 +7785,8 @@
},
"node_modules/iterator.prototype": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz",
- "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"define-properties": "^1.2.1",
"get-intrinsic": "^1.2.1",
@@ -7459,9 +7797,8 @@
},
"node_modules/jackspeak": {
"version": "2.3.6",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
- "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
"dev": true,
+ "license": "BlueOak-1.0.0",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
@@ -7477,9 +7814,8 @@
},
"node_modules/jake": {
"version": "10.8.7",
- "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz",
- "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"async": "^3.2.3",
"chalk": "^4.0.2",
@@ -7495,9 +7831,8 @@
},
"node_modules/jake/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"
},
@@ -7510,9 +7845,8 @@
},
"node_modules/jake/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"
@@ -7526,9 +7860,8 @@
},
"node_modules/jake/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"
},
@@ -7538,15 +7871,13 @@
},
"node_modules/jake/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/jake/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"
},
@@ -7556,9 +7887,8 @@
},
"node_modules/jest-diff": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz",
- "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.0.0",
"diff-sequences": "^29.6.3",
@@ -7571,9 +7901,8 @@
},
"node_modules/jest-diff/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"
},
@@ -7586,9 +7915,8 @@
},
"node_modules/jest-diff/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"
@@ -7602,9 +7930,8 @@
},
"node_modules/jest-diff/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"
},
@@ -7614,15 +7941,13 @@
},
"node_modules/jest-diff/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/jest-diff/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"
},
@@ -7632,18 +7957,16 @@
},
"node_modules/jest-get-type": {
"version": "29.6.3",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz",
- "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
}
},
"node_modules/jest-matcher-utils": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz",
- "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.0.0",
"jest-diff": "^29.7.0",
@@ -7656,9 +7979,8 @@
},
"node_modules/jest-matcher-utils/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"
},
@@ -7671,9 +7993,8 @@
},
"node_modules/jest-matcher-utils/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"
@@ -7687,9 +8008,8 @@
},
"node_modules/jest-matcher-utils/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"
},
@@ -7699,15 +8019,13 @@
},
"node_modules/jest-matcher-utils/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/jest-matcher-utils/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"
},
@@ -7717,9 +8035,8 @@
},
"node_modules/jest-message-util": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz",
- "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.12.13",
"@jest/types": "^29.6.3",
@@ -7737,9 +8054,8 @@
},
"node_modules/jest-message-util/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"
},
@@ -7752,9 +8068,8 @@
},
"node_modules/jest-message-util/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"
@@ -7768,9 +8083,8 @@
},
"node_modules/jest-message-util/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"
},
@@ -7780,15 +8094,13 @@
},
"node_modules/jest-message-util/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/jest-message-util/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"
},
@@ -7798,9 +8110,8 @@
},
"node_modules/jest-util": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
- "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/types": "^29.6.3",
"@types/node": "*",
@@ -7815,9 +8126,8 @@
},
"node_modules/jest-util/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"
},
@@ -7830,9 +8140,8 @@
},
"node_modules/jest-util/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"
@@ -7846,9 +8155,8 @@
},
"node_modules/jest-util/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"
},
@@ -7858,15 +8166,13 @@
},
"node_modules/jest-util/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/jest-util/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"
},
@@ -7876,9 +8182,8 @@
},
"node_modules/jest-worker": {
"version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
- "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "*",
"merge-stream": "^2.0.0",
@@ -7890,23 +8195,18 @@
},
"node_modules/jiti": {
"version": "1.21.0",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
- "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
- "dev": true,
+ "license": "MIT",
"bin": {
"jiti": "bin/jiti.js"
}
},
"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"
},
@@ -7914,62 +8214,63 @@
"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==",
- "dev": true
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
"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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json-parse-even-better-errors": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
+ "license": "MIT"
},
"node_modules/json-schema-ref-resolver": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz",
- "integrity": "sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3"
}
},
"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
+ "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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/json5": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
- "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.0"
- },
+ "version": "2.2.3",
+ "license": "MIT",
"bin": {
"json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
}
},
+ "node_modules/jsonc-parser": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz",
+ "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA=="
+ },
"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"
},
@@ -7979,9 +8280,8 @@
},
"node_modules/jsx-ast-utils": {
"version": "3.3.5",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
- "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"array-includes": "^3.1.6",
"array.prototype.flat": "^1.3.1",
@@ -7994,9 +8294,8 @@
},
"node_modules/jszip": {
"version": "3.10.1",
- "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
- "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
"dev": true,
+ "license": "(MIT OR GPL-3.0-or-later)",
"dependencies": {
"lie": "~3.3.0",
"pako": "~1.0.2",
@@ -8004,29 +8303,37 @@
"setimmediate": "^1.0.5"
}
},
+ "node_modules/keytar": {
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz",
+ "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==",
+ "hasInstallScript": true,
+ "optional": true,
+ "dependencies": {
+ "node-addon-api": "^4.3.0",
+ "prebuild-install": "^7.0.1"
+ }
+ },
"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/kind-of": {
"version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/ky": {
"version": "0.33.3",
- "resolved": "https://registry.npmjs.org/ky/-/ky-0.33.3.tgz",
- "integrity": "sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.16"
},
@@ -8036,9 +8343,8 @@
},
"node_modules/lazystream": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
- "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"readable-stream": "^2.0.5"
},
@@ -8046,11 +8352,18 @@
"node": ">= 0.6.3"
}
},
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"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"
@@ -8061,50 +8374,56 @@
},
"node_modules/lie": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
- "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"immediate": "~3.0.5"
}
},
"node_modules/light-my-request": {
- "version": "5.13.0",
- "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-5.13.0.tgz",
- "integrity": "sha512-9IjUN9ZyCS9pTG+KqTDEQo68Sui2lHsYBrfMyVUTTZ3XhH8PMZq7xO94Kr+eP9dhi/kcKsx4N41p2IXEBil1pQ==",
+ "version": "5.11.0",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
- "cookie": "^0.6.0",
- "process-warning": "^3.0.0",
+ "cookie": "^0.5.0",
+ "process-warning": "^2.0.0",
"set-cookie-parser": "^2.4.1"
}
},
+ "node_modules/light-my-request/node_modules/process-warning": {
+ "version": "2.3.2",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/lines-and-columns": {
"version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
+ "license": "MIT"
+ },
+ "node_modules/linkify-it": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz",
+ "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==",
+ "dependencies": {
+ "uc.micro": "^1.0.1"
+ }
},
"node_modules/listenercount": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
- "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/loader-runner": {
"version": "4.3.0",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
- "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6.11.5"
}
},
"node_modules/loader-utils": {
"version": "1.4.2",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
- "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
@@ -8114,22 +8433,31 @@
"node": ">=4.0.0"
}
},
+ "node_modules/loader-utils/node_modules/json5": {
+ "version": "1.0.2",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
"node_modules/locate-app": {
- "version": "2.2.29",
- "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.2.29.tgz",
- "integrity": "sha512-OwxwMkhz+EpQIWRTe3JlgMwPdoT2HCNnKno/0BdNp4pPuB7qpNmf1L8p3EEEXCUQqh/kzA/RJ3ZkOlTeaq9Wrw==",
+ "version": "2.2.16",
"dev": true,
+ "license": "SEE LICENSE IN LICENSE",
"dependencies": {
- "n12": "1.8.32",
+ "n12": "1.8.19",
"type-fest": "2.13.0",
"userhome": "1.0.0"
}
},
"node_modules/locate-app/node_modules/type-fest": {
"version": "2.13.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.13.0.tgz",
- "integrity": "sha512-lPfAm42MxE4/456+QyIaaVBAwgpJb6xZ8PRu09utnhPdWwcyj9vgy6Sq0Z5yNbJ21EdxB5dRU/Qg8bsyAMtlcw==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=12.20"
},
@@ -8137,11 +8465,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/locate-character": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
+ "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA=="
+ },
"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"
},
@@ -8154,57 +8486,48 @@
},
"node_modules/lodash": {
"version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.clonedeep": {
"version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.flattendeep": {
"version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz",
- "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.isequal": {
"version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
- "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
- "dev": true
+ "dev": true,
+ "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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.pickby": {
"version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz",
- "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.union": {
"version": "4.6.0",
- "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
- "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/lodash.zip": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz",
- "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/log-symbols": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.1.0",
"is-unicode-supported": "^0.1.0"
@@ -8218,9 +8541,8 @@
},
"node_modules/log-symbols/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"
},
@@ -8233,9 +8555,8 @@
},
"node_modules/log-symbols/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"
@@ -8249,9 +8570,8 @@
},
"node_modules/log-symbols/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"
},
@@ -8261,15 +8581,13 @@
},
"node_modules/log-symbols/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/log-symbols/node_modules/is-unicode-supported": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -8279,9 +8597,8 @@
},
"node_modules/log-symbols/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"
},
@@ -8291,9 +8608,8 @@
},
"node_modules/loglevel": {
"version": "1.9.1",
- "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz",
- "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.6.0"
},
@@ -8304,14 +8620,12 @@
},
"node_modules/loglevel-plugin-prefix": {
"version": "0.8.4",
- "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz",
- "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==",
- "dev": true
+ "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"
},
@@ -8319,29 +8633,33 @@
"loose-envify": "cli.js"
}
},
+ "node_modules/lower-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
+ "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
"node_modules/lowercase-keys": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
- "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/lru-cache": {
- "version": "7.18.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
- "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
- "dev": true,
- "engines": {
- "node": ">=12"
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dependencies": {
+ "yallist": "^3.0.2"
}
},
"node_modules/magic-string": {
- "version": "0.30.9",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz",
- "integrity": "sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==",
- "dev": true,
+ "version": "0.30.8",
+ "license": "MIT",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15"
},
@@ -8351,9 +8669,8 @@
},
"node_modules/make-dir": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pify": "^4.0.1",
"semver": "^5.6.0"
@@ -8364,18 +8681,49 @@
},
"node_modules/make-dir/node_modules/semver": {
"version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
+ "license": "ISC",
"bin": {
"semver": "bin/semver"
}
},
+ "node_modules/markdown-it": {
+ "version": "12.3.2",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz",
+ "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==",
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "~2.1.0",
+ "linkify-it": "^3.0.1",
+ "mdurl": "^1.0.1",
+ "uc.micro": "^1.0.5"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.js"
+ }
+ },
+ "node_modules/markdown-it/node_modules/entities": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
+ "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.0.30",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
+ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="
+ },
+ "node_modules/mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
+ "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g=="
+ },
"node_modules/memfs": {
"version": "3.5.3",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz",
- "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==",
"dev": true,
+ "license": "Unlicense",
"dependencies": {
"fs-monkey": "^1.0.4"
},
@@ -8385,24 +8733,35 @@
},
"node_modules/merge-stream": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"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/meros": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/meros/-/meros-1.3.0.tgz",
+ "integrity": "sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==",
+ "engines": {
+ "node": ">=13"
+ },
+ "peerDependencies": {
+ "@types/node": ">=13"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
"node_modules/micromatch": {
"version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"braces": "^3.0.2",
"picomatch": "^2.3.1"
@@ -8413,9 +8772,8 @@
},
"node_modules/mime": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
- "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
"dev": true,
+ "license": "MIT",
"bin": {
"mime": "cli.js"
},
@@ -8425,18 +8783,14 @@
},
"node_modules/mime-db": {
"version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
@@ -8446,9 +8800,8 @@
},
"node_modules/mimic-fn": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -8458,18 +8811,16 @@
},
"node_modules/mimic-response": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
- "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/mini-css-extract-plugin": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz",
- "integrity": "sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==",
+ "version": "2.8.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"schema-utils": "^4.0.0",
"tapable": "^2.2.1"
@@ -8487,9 +8838,8 @@
},
"node_modules/mini-css-extract-plugin/node_modules/ajv": {
"version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
@@ -8503,9 +8853,8 @@
},
"node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
- "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3"
},
@@ -8515,15 +8864,13 @@
},
"node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/mini-css-extract-plugin/node_modules/schema-utils": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
- "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/json-schema": "^7.0.9",
"ajv": "^8.9.0",
@@ -8540,9 +8887,7 @@
},
"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"
},
@@ -8552,60 +8897,53 @@
},
"node_modules/minimist": {
"version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "dev": true,
+ "devOptional": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/minipass": {
"version": "7.0.4",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
- "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=16 || 14 >=14.17"
}
},
"node_modules/mitt": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz",
- "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/mkdirp": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
- "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.6"
- },
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"bin": {
"mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/mkdirp-classic": {
"version": "0.5.3",
- "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
- "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
- "dev": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/mnemonist": {
"version": "0.39.6",
- "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.39.6.tgz",
- "integrity": "sha512-A/0v5Z59y63US00cRSLiloEIw3t5G+MiKz4BhX21FI+YBJXBOGW0ohFxTxO08dsOYlzxo87T7vGfZKYp2bcAWA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"obliterator": "^2.0.1"
}
},
"node_modules/mocha": {
- "version": "10.4.0",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz",
- "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==",
+ "version": "10.2.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-colors": "4.1.1",
"browser-stdout": "1.3.1",
@@ -8614,12 +8952,13 @@
"diff": "5.0.0",
"escape-string-regexp": "4.0.0",
"find-up": "5.0.0",
- "glob": "8.1.0",
+ "glob": "7.2.0",
"he": "1.2.0",
"js-yaml": "4.1.0",
"log-symbols": "4.1.0",
"minimatch": "5.0.1",
"ms": "2.1.3",
+ "nanoid": "3.3.3",
"serialize-javascript": "6.0.0",
"strip-json-comments": "3.1.1",
"supports-color": "8.1.1",
@@ -8634,13 +8973,16 @@
},
"engines": {
"node": ">= 14.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mochajs"
}
},
"node_modules/mocha/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"
},
@@ -8651,47 +8993,10 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/mocha/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,
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/mocha/node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "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"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
"node_modules/mocha/node_modules/cliui": {
"version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
@@ -8700,9 +9005,8 @@
},
"node_modules/mocha/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"
},
@@ -8712,24 +9016,51 @@
},
"node_modules/mocha/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/mocha/node_modules/diff": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
- "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.3.1"
}
},
+ "node_modules/mocha/node_modules/glob": {
+ "version": "7.2.0",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/mocha/node_modules/glob/node_modules/minimatch": {
+ "version": "3.1.2",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/mocha/node_modules/minimatch": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
- "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -8737,26 +9068,31 @@
"node": ">=10"
}
},
+ "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
"node_modules/mocha/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==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/mocha/node_modules/serialize-javascript": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
- "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"randombytes": "^2.1.0"
}
},
"node_modules/mocha/node_modules/strip-ansi": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -8766,9 +9102,8 @@
},
"node_modules/mocha/node_modules/wrap-ansi": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -8783,9 +9118,8 @@
},
"node_modules/mocha/node_modules/yargs": {
"version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
@@ -8801,36 +9135,25 @@
},
"node_modules/ms": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
+ "license": "MIT"
},
"node_modules/mute-stream": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz",
- "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/n12": {
- "version": "1.8.32",
- "resolved": "https://registry.npmjs.org/n12/-/n12-1.8.32.tgz",
- "integrity": "sha512-nLqtUdj2XNjBCku+s60zv/RXhatbXet2SynQhjOU1QTc+bqqwjp/bEV+WVcYLxLgv7K8ji5rlNrkBhfglx3ULQ==",
- "dev": true
+ "version": "1.8.19",
+ "dev": true,
+ "license": "SEE LICENSE IN LICENSE"
},
"node_modules/nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "version": "3.3.3",
"dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
+ "license": "MIT",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -8838,44 +9161,68 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
+ "node_modules/napi-build-utils": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
+ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
+ "optional": true
+ },
"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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/natural-compare-lite": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
- "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/neo-async": {
"version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/netmask": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
- "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4.0"
}
},
+ "node_modules/no-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
+ "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
+ "dependencies": {
+ "lower-case": "^2.0.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/node-abi": {
+ "version": "3.58.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.58.0.tgz",
+ "integrity": "sha512-pXY1jnGf5T7b8UNzWzIqf0EkX4bx/w8N2AvwlGnk2SYYA/kzDVPaH0Dh0UG4EwxBB5eKOIZKPr8VAHSHL1DPGg==",
+ "optional": true,
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/node-abort-controller": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz",
- "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==",
- "dev": true
+ "license": "MIT"
+ },
+ "node_modules/node-addon-api": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
+ "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==",
+ "optional": true
},
"node_modules/node-domexception": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
- "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -8886,15 +9233,14 @@
"url": "https://paypal.me/jimmywarting"
}
],
+ "license": "MIT",
"engines": {
"node": ">=10.5.0"
}
},
"node_modules/node-fetch": {
"version": "3.3.2",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
- "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"data-uri-to-buffer": "^4.0.0",
"fetch-blob": "^3.1.4",
@@ -8908,17 +9254,45 @@
"url": "https://opencollective.com/node-fetch"
}
},
+ "node_modules/node-loader": {
+ "version": "2.0.0",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "loader-utils": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.0.0"
+ }
+ },
+ "node_modules/node-loader/node_modules/loader-utils": {
+ "version": "2.0.4",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=8.9.0"
+ }
+ },
"node_modules/node-releases": {
"version": "2.0.14",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
- "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
- "dev": true
+ "license": "MIT"
},
"node_modules/normalize-package-data": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz",
- "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"hosted-git-info": "^7.0.0",
"is-core-module": "^2.8.1",
@@ -8931,18 +9305,16 @@
},
"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/normalize-url": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz",
- "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prepend-http": "^2.0.0",
"query-string": "^5.0.1",
@@ -8953,10 +9325,9 @@
}
},
"node_modules/npm-run-path": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
- "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
+ "version": "5.2.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"path-key": "^4.0.0"
},
@@ -8969,48 +9340,58 @@
},
"node_modules/npm-run-path/node_modules/path-key": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
}
},
+ "node_modules/nullthrows": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz",
+ "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw=="
+ },
"node_modules/object-assign": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/object-inspect": {
"version": "1.13.1",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
- "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
- "dev": true,
+ "license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/object-keys": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/object.assign": {
"version": "4.1.5",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
- "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.5",
"define-properties": "^1.2.1",
@@ -9025,29 +9406,26 @@
}
},
"node_modules/object.entries": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz",
- "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==",
+ "version": "1.1.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-object-atoms": "^1.0.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/object.fromentries": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz",
- "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==",
+ "version": "2.0.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-object-atoms": "^1.0.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
},
"engines": {
"node": ">= 0.4"
@@ -9057,31 +9435,25 @@
}
},
"node_modules/object.hasown": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz",
- "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==",
+ "version": "1.1.3",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/object.values": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz",
- "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==",
+ "version": "1.1.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-object-atoms": "^1.0.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
},
"engines": {
"node": ">= 0.4"
@@ -9092,33 +9464,28 @@
},
"node_modules/obliterator": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz",
- "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/on-exit-leak-free": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz",
- "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.0.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/onetime": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mimic-fn": "^4.0.0"
},
@@ -9131,9 +9498,8 @@
},
"node_modules/optionator": {
"version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
@@ -9148,9 +9514,8 @@
},
"node_modules/ora": {
"version": "5.4.1",
- "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz",
- "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"bl": "^4.1.0",
"chalk": "^4.1.0",
@@ -9171,9 +9536,8 @@
},
"node_modules/ora/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"
},
@@ -9186,9 +9550,8 @@
},
"node_modules/ora/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"
@@ -9202,9 +9565,8 @@
},
"node_modules/ora/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"
},
@@ -9214,15 +9576,13 @@
},
"node_modules/ora/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/ora/node_modules/is-unicode-supported": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -9232,9 +9592,8 @@
},
"node_modules/ora/node_modules/strip-ansi": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -9244,9 +9603,8 @@
},
"node_modules/ora/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"
},
@@ -9256,27 +9614,24 @@
},
"node_modules/os-tmpdir": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/p-cancelable": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz",
- "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/p-event": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz",
- "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-timeout": "^2.0.1"
},
@@ -9286,27 +9641,23 @@
},
"node_modules/p-finally": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/p-is-promise": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
- "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"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"
},
@@ -9319,9 +9670,8 @@
},
"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"
},
@@ -9334,9 +9684,8 @@
},
"node_modules/p-timeout": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz",
- "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-finally": "^1.0.0"
},
@@ -9346,18 +9695,16 @@
},
"node_modules/p-try": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/pac-proxy-agent": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz",
- "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@tootallnate/quickjs-emscripten": "^0.23.0",
"agent-base": "^7.0.2",
@@ -9373,10 +9720,9 @@
}
},
"node_modules/pac-proxy-agent/node_modules/agent-base": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
- "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "version": "7.1.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"debug": "^4.3.4"
},
@@ -9385,10 +9731,9 @@
}
},
"node_modules/pac-proxy-agent/node_modules/http-proxy-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
- "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "version": "7.0.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.1.0",
"debug": "^4.3.4"
@@ -9398,10 +9743,9 @@
}
},
"node_modules/pac-proxy-agent/node_modules/https-proxy-agent": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz",
- "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==",
+ "version": "7.0.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.0.2",
"debug": "4"
@@ -9411,12 +9755,12 @@
}
},
"node_modules/pac-resolver": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz",
- "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==",
+ "version": "7.0.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"degenerator": "^5.0.0",
+ "ip": "^1.1.8",
"netmask": "^2.0.2"
},
"engines": {
@@ -9425,15 +9769,12 @@
},
"node_modules/pako": {
"version": "1.0.11",
- "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
- "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
- "dev": true
+ "dev": true,
+ "license": "(MIT AND Zlib)"
},
"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"
},
@@ -9443,9 +9784,7 @@
},
"node_modules/parse-json": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.0.0",
"error-ex": "^1.3.1",
@@ -9461,53 +9800,94 @@
},
"node_modules/parse-ms": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz",
- "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
+ "node_modules/parse-semver": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz",
+ "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==",
+ "dependencies": {
+ "semver": "^5.1.0"
+ }
+ },
+ "node_modules/parse-semver/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz",
+ "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+ "dependencies": {
+ "entities": "^4.4.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parse5-htmlparser2-tree-adapter": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
+ "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
+ "dependencies": {
+ "domhandler": "^5.0.2",
+ "parse5": "^7.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/pascal-case": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
+ "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
"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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/path-scurry": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz",
- "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==",
+ "version": "1.10.1",
"dev": true,
+ "license": "BlueOak-1.0.0",
"dependencies": {
- "lru-cache": "^10.2.0",
+ "lru-cache": "^9.1.1 || ^10.0.0",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
},
"engines": {
@@ -9519,45 +9899,53 @@
},
"node_modules/path-scurry/node_modules/lru-cache": {
"version": "10.2.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
- "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "14 || >=16.14"
}
},
"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/pathe": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
- "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/pend": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
- "dev": true
+ "license": "MIT"
+ },
+ "node_modules/periscopic": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
+ "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^3.0.0",
+ "is-reference": "^3.0.0"
+ }
+ },
+ "node_modules/periscopic/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
},
"node_modules/picocolors": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
+ "license": "ISC"
},
"node_modules/picomatch": {
"version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8.6"
},
@@ -9567,27 +9955,24 @@
},
"node_modules/pify": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/pinkie": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/pinkie-promise": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"pinkie": "^2.0.0"
},
@@ -9596,15 +9981,14 @@
}
},
"node_modules/pino": {
- "version": "8.20.0",
- "resolved": "https://registry.npmjs.org/pino/-/pino-8.20.0.tgz",
- "integrity": "sha512-uhIfMj5TVp+WynVASaVEJFTncTUe4dHBq6CWplu/vBgvGHhvBvQfxz+vcOrnnBQdORH3izaGEurLfNlq3YxdFQ==",
+ "version": "8.18.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"atomic-sleep": "^1.0.0",
"fast-redact": "^3.1.1",
"on-exit-leak-free": "^2.1.0",
- "pino-abstract-transport": "^1.1.0",
+ "pino-abstract-transport": "v1.1.0",
"pino-std-serializers": "^6.0.0",
"process-warning": "^3.0.0",
"quick-format-unescaped": "^4.0.3",
@@ -9619,9 +10003,8 @@
},
"node_modules/pino-abstract-transport": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.1.0.tgz",
- "integrity": "sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"readable-stream": "^4.0.0",
"split2": "^4.0.0"
@@ -9629,8 +10012,6 @@
},
"node_modules/pino-abstract-transport/node_modules/buffer": {
"version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
"dev": true,
"funding": [
{
@@ -9646,6 +10027,7 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.2.1"
@@ -9653,9 +10035,8 @@
},
"node_modules/pino-abstract-transport/node_modules/readable-stream": {
"version": "4.5.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
- "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"abort-controller": "^3.0.0",
"buffer": "^6.0.3",
@@ -9669,8 +10050,6 @@
},
"node_modules/pino-abstract-transport/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==",
"dev": true,
"funding": [
{
@@ -9685,28 +10064,26 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/pino-abstract-transport/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==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"safe-buffer": "~5.2.0"
}
},
"node_modules/pino-std-serializers": {
"version": "6.2.2",
- "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz",
- "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/pkg-dir": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"find-up": "^4.0.0"
},
@@ -9716,9 +10093,8 @@
},
"node_modules/pkg-dir/node_modules/find-up": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
@@ -9729,9 +10105,8 @@
},
"node_modules/pkg-dir/node_modules/locate-path": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^4.1.0"
},
@@ -9741,9 +10116,8 @@
},
"node_modules/pkg-dir/node_modules/p-limit": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-try": "^2.0.0"
},
@@ -9756,9 +10130,8 @@
},
"node_modules/pkg-dir/node_modules/p-locate": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^2.2.0"
},
@@ -9766,20 +10139,8 @@
"node": ">=8"
}
},
- "node_modules/possible-typed-array-names": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
- "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/postcss": {
"version": "8.4.38",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
- "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -9794,6 +10155,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
"nanoid": "^3.3.7",
"picocolors": "^1.0.0",
@@ -9805,9 +10167,8 @@
},
"node_modules/postcss-loader": {
"version": "7.3.4",
- "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz",
- "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cosmiconfig": "^8.3.5",
"jiti": "^1.20.0",
@@ -9827,9 +10188,8 @@
},
"node_modules/postcss-loader/node_modules/cosmiconfig": {
"version": "8.3.6",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
- "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"import-fresh": "^3.3.0",
"js-yaml": "^4.1.0",
@@ -9852,10 +10212,9 @@
}
},
"node_modules/postcss-modules-extract-imports": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz",
- "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==",
+ "version": "3.0.0",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "^10 || ^12 || >= 14"
},
@@ -9864,10 +10223,9 @@
}
},
"node_modules/postcss-modules-local-by-default": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz",
- "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==",
+ "version": "4.0.4",
"dev": true,
+ "license": "MIT",
"dependencies": {
"icss-utils": "^5.0.0",
"postcss-selector-parser": "^6.0.2",
@@ -9881,10 +10239,9 @@
}
},
"node_modules/postcss-modules-scope": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz",
- "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==",
+ "version": "3.1.1",
"dev": true,
+ "license": "ISC",
"dependencies": {
"postcss-selector-parser": "^6.0.4"
},
@@ -9897,9 +10254,8 @@
},
"node_modules/postcss-modules-values": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz",
- "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"icss-utils": "^5.0.0"
},
@@ -9911,10 +10267,9 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.0.16",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz",
- "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==",
+ "version": "6.0.15",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -9925,34 +10280,120 @@
},
"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==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/postcss/node_modules/nanoid": {
+ "version": "3.3.7",
+ "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/postcss/node_modules/source-map-js": {
+ "version": "1.2.0",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/prebuild-install": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz",
+ "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==",
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^2.0.0",
+ "expand-template": "^2.0.3",
+ "github-from-package": "0.0.0",
+ "minimist": "^1.2.3",
+ "mkdirp-classic": "^0.5.3",
+ "napi-build-utils": "^1.0.1",
+ "node-abi": "^3.3.0",
+ "pump": "^3.0.0",
+ "rc": "^1.2.7",
+ "simple-get": "^4.0.0",
+ "tar-fs": "^2.0.0",
+ "tunnel-agent": "^0.6.0"
+ },
+ "bin": {
+ "prebuild-install": "bin.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/prebuild-install/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==",
+ "optional": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/prebuild-install/node_modules/tar-fs": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
+ "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+ "optional": true,
+ "dependencies": {
+ "chownr": "^1.1.1",
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.1.4"
+ }
+ },
+ "node_modules/prebuild-install/node_modules/tar-stream": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "optional": true,
+ "dependencies": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
},
"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/prepend-http": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
- "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/prettier": {
"version": "3.2.5",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz",
- "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==",
"dev": true,
- "optional": true,
+ "license": "MIT",
"bin": {
"prettier": "bin/prettier.cjs"
},
@@ -9965,9 +10406,8 @@
},
"node_modules/pretty-format": {
"version": "29.7.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
- "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jest/schemas": "^29.6.3",
"ansi-styles": "^5.0.0",
@@ -9979,9 +10419,8 @@
},
"node_modules/pretty-ms": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz",
- "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"parse-ms": "^2.1.0"
},
@@ -9994,39 +10433,34 @@
},
"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==",
"dev": true,
+ "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==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/process-warning": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz",
- "integrity": "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/progress": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/prop-types": {
"version": "15.8.1",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
- "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
@@ -10035,15 +10469,13 @@
},
"node_modules/prop-types/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==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/proxy-addr": {
"version": "2.0.7",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"forwarded": "0.2.0",
"ipaddr.js": "1.9.1"
@@ -10054,9 +10486,8 @@
},
"node_modules/proxy-agent": {
"version": "6.3.1",
- "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz",
- "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.0.2",
"debug": "^4.3.4",
@@ -10072,10 +10503,9 @@
}
},
"node_modules/proxy-agent/node_modules/agent-base": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
- "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "version": "7.1.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"debug": "^4.3.4"
},
@@ -10084,10 +10514,9 @@
}
},
"node_modules/proxy-agent/node_modules/http-proxy-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
- "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "version": "7.0.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.1.0",
"debug": "^4.3.4"
@@ -10097,10 +10526,9 @@
}
},
"node_modules/proxy-agent/node_modules/https-proxy-agent": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz",
- "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==",
+ "version": "7.0.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.0.2",
"debug": "4"
@@ -10109,17 +10537,23 @@
"node": ">= 14"
}
},
+ "node_modules/proxy-agent/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/proxy-from-env": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/pump": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
- "dev": true,
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
@@ -10127,18 +10561,16 @@
},
"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/puppeteer-core": {
"version": "20.9.0",
- "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.9.0.tgz",
- "integrity": "sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"@puppeteer/browsers": "1.4.6",
"chromium-bidi": "0.4.16",
@@ -10161,9 +10593,8 @@
},
"node_modules/puppeteer-core/node_modules/@puppeteer/browsers": {
"version": "1.4.6",
- "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.6.tgz",
- "integrity": "sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"debug": "4.3.4",
"extract-zip": "2.0.1",
@@ -10189,10 +10620,9 @@
}
},
"node_modules/puppeteer-core/node_modules/agent-base": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
- "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "version": "7.1.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"debug": "^4.3.4"
},
@@ -10202,15 +10632,13 @@
},
"node_modules/puppeteer-core/node_modules/devtools-protocol": {
"version": "0.0.1147663",
- "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz",
- "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/puppeteer-core/node_modules/http-proxy-agent": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
- "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "version": "7.0.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.1.0",
"debug": "^4.3.4"
@@ -10220,10 +10648,9 @@
}
},
"node_modules/puppeteer-core/node_modules/https-proxy-agent": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz",
- "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==",
+ "version": "7.0.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.0.2",
"debug": "4"
@@ -10232,11 +10659,18 @@
"node": ">= 14"
}
},
+ "node_modules/puppeteer-core/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/puppeteer-core/node_modules/proxy-agent": {
"version": "6.3.0",
- "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz",
- "integrity": "sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"agent-base": "^7.0.2",
"debug": "^4.3.4",
@@ -10253,9 +10687,8 @@
},
"node_modules/puppeteer-core/node_modules/ws": {
"version": "8.13.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
- "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10.0.0"
},
@@ -10274,9 +10707,8 @@
},
"node_modules/puppeteer-core/node_modules/yargs": {
"version": "17.7.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz",
- "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cliui": "^8.0.1",
"escalade": "^3.1.1",
@@ -10292,24 +10724,35 @@
},
"node_modules/puppeteer-core/node_modules/yargs-parser": {
"version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
},
+ "node_modules/qs": {
+ "version": "6.12.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz",
+ "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==",
+ "dependencies": {
+ "side-channel": "^1.0.6"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/query-selector-shadow-dom": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz",
- "integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/query-string": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz",
- "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"decode-uri-component": "^0.2.0",
"object-assign": "^4.1.0",
@@ -10321,9 +10764,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",
@@ -10337,25 +10777,23 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/queue-tick": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
- "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/quick-format-unescaped": {
"version": "4.0.4",
- "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz",
- "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/quick-lru": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
- "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -10365,17 +10803,39 @@
},
"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/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "optional": true,
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "node_modules/rc/node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/react": {
"version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
- "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0"
},
@@ -10385,8 +10845,7 @@
},
"node_modules/react-dom": {
"version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
- "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0",
"scheduler": "^0.23.0"
@@ -10397,15 +10856,24 @@
},
"node_modules/react-is": {
"version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/read": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
+ "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==",
+ "dependencies": {
+ "mute-stream": "~0.0.4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
},
"node_modules/read-pkg": {
"version": "8.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz",
- "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/normalize-package-data": "^2.4.1",
"normalize-package-data": "^6.0.0",
@@ -10420,14 +10888,13 @@
}
},
"node_modules/read-pkg-up": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.0.0.tgz",
- "integrity": "sha512-jgmKiS//w2Zs+YbX039CorlkOp8FIVbSAN8r8GJHDsGlmNPXo+VeHkqAwCiQVTTx5/LwLZTcEw59z3DvcLbr0g==",
+ "version": "10.1.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"find-up": "^6.3.0",
- "read-pkg": "^8.0.0",
- "type-fest": "^3.12.0"
+ "read-pkg": "^8.1.0",
+ "type-fest": "^4.2.0"
},
"engines": {
"node": ">=16"
@@ -10438,9 +10905,8 @@
},
"node_modules/read-pkg-up/node_modules/find-up": {
"version": "6.3.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
- "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"locate-path": "^7.1.0",
"path-exists": "^5.0.0"
@@ -10454,9 +10920,8 @@
},
"node_modules/read-pkg-up/node_modules/locate-path": {
"version": "7.2.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
- "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-locate": "^6.0.0"
},
@@ -10469,9 +10934,8 @@
},
"node_modules/read-pkg-up/node_modules/p-limit": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
- "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"yocto-queue": "^1.0.0"
},
@@ -10484,9 +10948,8 @@
},
"node_modules/read-pkg-up/node_modules/p-locate": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
- "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"p-limit": "^4.0.0"
},
@@ -10499,20 +10962,18 @@
},
"node_modules/read-pkg-up/node_modules/path-exists": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
- "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
}
},
"node_modules/read-pkg-up/node_modules/type-fest": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
- "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
+ "version": "4.10.2",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
- "node": ">=14.16"
+ "node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -10520,9 +10981,8 @@
},
"node_modules/read-pkg-up/node_modules/yocto-queue": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
- "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12.20"
},
@@ -10532,27 +10992,24 @@
},
"node_modules/read-pkg/node_modules/json-parse-even-better-errors": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz",
- "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/read-pkg/node_modules/lines-and-columns": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz",
- "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
}
},
"node_modules/read-pkg/node_modules/parse-json": {
"version": "7.1.1",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz",
- "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.21.4",
"error-ex": "^1.3.2",
@@ -10569,9 +11026,8 @@
},
"node_modules/read-pkg/node_modules/parse-json/node_modules/type-fest": {
"version": "3.13.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
- "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=14.16"
},
@@ -10580,10 +11036,9 @@
}
},
"node_modules/read-pkg/node_modules/type-fest": {
- "version": "4.15.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.15.0.tgz",
- "integrity": "sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==",
+ "version": "4.10.2",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=16"
},
@@ -10591,11 +11046,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/read/node_modules/mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA=="
+ },
"node_modules/readable-stream": {
"version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
@@ -10608,27 +11067,24 @@
},
"node_modules/readdir-glob": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz",
- "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"minimatch": "^5.1.0"
}
},
"node_modules/readdir-glob/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/readdir-glob/node_modules/minimatch": {
"version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -10638,9 +11094,8 @@
},
"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"
},
@@ -10650,18 +11105,16 @@
},
"node_modules/real-require": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz",
- "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 12.13.0"
}
},
"node_modules/rechoir": {
"version": "0.8.0",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
- "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"resolve": "^1.20.0"
},
@@ -10671,9 +11124,8 @@
},
"node_modules/rechoir/node_modules/resolve": {
"version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
@@ -10688,9 +11140,8 @@
},
"node_modules/recursive-readdir": {
"version": "2.2.3",
- "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz",
- "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"minimatch": "^3.0.5"
},
@@ -10699,16 +11150,15 @@
}
},
"node_modules/reflect.getprototypeof": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz",
- "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==",
+ "version": "1.0.5",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.5",
"define-properties": "^1.2.1",
- "es-abstract": "^1.23.1",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4",
+ "es-abstract": "^1.22.3",
+ "es-errors": "^1.0.0",
+ "get-intrinsic": "^1.2.3",
"globalthis": "^1.0.3",
"which-builtin-type": "^1.1.3"
},
@@ -10720,15 +11170,13 @@
}
},
"node_modules/regexp.prototype.flags": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
- "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==",
+ "version": "1.5.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.6",
- "define-properties": "^1.2.1",
- "es-errors": "^1.3.0",
- "set-function-name": "^2.0.1"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "set-function-name": "^2.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -10737,29 +11185,31 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw=="
+ },
"node_modules/require-directory": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/require-from-string": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/resolve": {
"version": "2.0.0-next.5",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
- "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-core-module": "^2.13.0",
"path-parse": "^1.0.7",
@@ -10774,15 +11224,13 @@
},
"node_modules/resolve-alpn": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz",
- "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/resolve-cwd": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
- "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"resolve-from": "^5.0.0"
},
@@ -10790,53 +11238,38 @@
"node": ">=8"
}
},
- "node_modules/resolve-cwd/node_modules/resolve-from": {
+ "node_modules/resolve-from": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
- "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
- "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,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/responselike": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
- "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"lowercase-keys": "^1.0.0"
}
},
"node_modules/resq": {
"version": "1.11.0",
- "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz",
- "integrity": "sha512-G10EBz+zAAy3zUd/CDoBbXRL6ia9kOo3xRHrMDsHljI0GDkhYlyjwoCx5+3eCC4swi1uCoZQhskuJkj7Gp57Bw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^2.0.1"
}
},
"node_modules/resq/node_modules/fast-deep-equal": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
- "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/restore-cursor": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"onetime": "^5.1.0",
"signal-exit": "^3.0.2"
@@ -10847,18 +11280,16 @@
},
"node_modules/restore-cursor/node_modules/mimic-fn": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/restore-cursor/node_modules/onetime": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mimic-fn": "^2.1.0"
},
@@ -10871,24 +11302,20 @@
},
"node_modules/restore-cursor/node_modules/signal-exit": {
"version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/ret": {
"version": "0.2.2",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz",
- "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/reusify": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true,
+ "license": "MIT",
"engines": {
"iojs": ">=1.0.0",
"node": ">=0.10.0"
@@ -10896,21 +11323,18 @@
},
"node_modules/rfdc": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz",
- "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/rgb2hex": {
"version": "0.2.5",
- "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.5.tgz",
- "integrity": "sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/rimraf": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"glob": "^7.1.3"
},
@@ -10923,9 +11347,8 @@
},
"node_modules/rimraf/node_modules/glob": {
"version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -10943,18 +11366,14 @@
},
"node_modules/run-async": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz",
- "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.12.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",
@@ -10969,33 +11388,31 @@
"url": "https://feross.org/support"
}
],
+ "license": "MIT",
"dependencies": {
"queue-microtask": "^1.2.2"
}
},
"node_modules/rxjs": {
"version": "7.8.1",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
- "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.1.0"
}
},
"node_modules/safaridriver": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/safaridriver/-/safaridriver-0.1.2.tgz",
- "integrity": "sha512-4R309+gWflJktzPXBQCobbWEHlzC4aK3a+Ov3tz2Ib2aBxiwd11phkdIBH1l0EO22x24CJMUQkpKFumRriCSRg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/safe-array-concat": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz",
- "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==",
+ "version": "1.1.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
- "get-intrinsic": "^1.2.4",
+ "call-bind": "^1.0.5",
+ "get-intrinsic": "^1.2.2",
"has-symbols": "^1.0.3",
"isarray": "^2.0.5"
},
@@ -11008,24 +11425,21 @@
},
"node_modules/safe-array-concat/node_modules/isarray": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/safe-buffer": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/safe-regex-test": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz",
- "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==",
+ "version": "1.0.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.6",
- "es-errors": "^1.3.0",
+ "call-bind": "^1.0.5",
+ "get-intrinsic": "^1.2.2",
"is-regex": "^1.1.4"
},
"engines": {
@@ -11037,33 +11451,29 @@
},
"node_modules/safe-regex2": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-2.0.0.tgz",
- "integrity": "sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ret": "~0.2.0"
}
},
"node_modules/safe-stable-stringify": {
"version": "2.4.3",
- "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz",
- "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/safer-buffer": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/sass": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.75.0.tgz",
- "integrity": "sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw==",
+ "version": "1.70.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
@@ -11078,9 +11488,8 @@
},
"node_modules/sass-loader": {
"version": "13.3.3",
- "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.3.tgz",
- "integrity": "sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"neo-async": "^2.6.2"
},
@@ -11113,19 +11522,22 @@
}
}
},
+ "node_modules/sax": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
+ "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
+ },
"node_modules/scheduler": {
"version": "0.23.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
- "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0"
}
},
"node_modules/schema-utils": {
"version": "2.7.1",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
- "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/json-schema": "^7.0.5",
"ajv": "^6.12.4",
@@ -11141,15 +11553,13 @@
},
"node_modules/secure-json-parse": {
"version": "2.7.0",
- "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz",
- "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==",
- "dev": true
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/seek-bzip": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz",
- "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"commander": "^2.8.1"
},
@@ -11160,15 +11570,12 @@
},
"node_modules/seek-bzip/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "dev": true,
+ "version": "7.5.4",
+ "license": "ISC",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -11181,9 +11588,7 @@
},
"node_modules/semver/node_modules/lru-cache": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
+ "license": "ISC",
"dependencies": {
"yallist": "^4.0.0"
},
@@ -11191,11 +11596,14 @@
"node": ">=10"
}
},
+ "node_modules/semver/node_modules/yallist": {
+ "version": "4.0.0",
+ "license": "ISC"
+ },
"node_modules/serialize-error": {
"version": "11.0.3",
- "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-11.0.3.tgz",
- "integrity": "sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"type-fest": "^2.12.2"
},
@@ -11208,9 +11616,8 @@
},
"node_modules/serialize-error/node_modules/type-fest": {
"version": "2.19.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
- "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=12.20"
},
@@ -11220,24 +11627,21 @@
},
"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.6.0",
- "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz",
- "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/set-function-length": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
"integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
- "dev": true,
"dependencies": {
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
@@ -11251,15 +11655,13 @@
}
},
"node_modules/set-function-name": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
- "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "version": "2.0.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "define-data-property": "^1.1.4",
- "es-errors": "^1.3.0",
+ "define-data-property": "^1.0.1",
"functions-have-names": "^1.2.3",
- "has-property-descriptors": "^1.0.2"
+ "has-property-descriptors": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
@@ -11267,21 +11669,18 @@
},
"node_modules/setimmediate": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/setprototypeof": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
- "dev": true
+ "dev": true,
+ "license": "ISC"
},
"node_modules/shallow-clone": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
- "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"kind-of": "^6.0.2"
},
@@ -11291,9 +11690,8 @@
},
"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"
},
@@ -11303,9 +11701,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"
}
@@ -11314,7 +11711,6 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
"integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
- "dev": true,
"dependencies": {
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
@@ -11330,9 +11726,8 @@
},
"node_modules/signal-exit": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=14"
},
@@ -11340,46 +11735,113 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/simple-concat": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "optional": true
+ },
+ "node_modules/simple-get": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "optional": true,
+ "dependencies": {
+ "decompress-response": "^6.0.0",
+ "once": "^1.3.1",
+ "simple-concat": "^1.0.0"
+ }
+ },
+ "node_modules/simple-get/node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "optional": true,
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/simple-get/node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "optional": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"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==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 6.0.0",
"npm": ">= 3.0.0"
}
},
"node_modules/socks": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz",
- "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==",
+ "version": "2.7.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "ip-address": "^9.0.5",
+ "ip": "^2.0.0",
"smart-buffer": "^4.2.0"
},
"engines": {
- "node": ">= 10.0.0",
+ "node": ">= 10.13.0",
"npm": ">= 3.0.0"
}
},
"node_modules/socks-proxy-agent": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz",
- "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==",
+ "version": "8.0.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "agent-base": "^7.1.1",
+ "agent-base": "^7.0.2",
"debug": "^4.3.4",
"socks": "^2.7.1"
},
@@ -11388,10 +11850,9 @@
}
},
"node_modules/socks-proxy-agent/node_modules/agent-base": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz",
- "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==",
+ "version": "7.1.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"debug": "^4.3.4"
},
@@ -11399,20 +11860,23 @@
"node": ">= 14"
}
},
+ "node_modules/socks/node_modules/ip": {
+ "version": "2.0.0",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/sonic-boom": {
- "version": "3.8.1",
- "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.1.tgz",
- "integrity": "sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==",
+ "version": "3.8.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"atomic-sleep": "^1.0.0"
}
},
"node_modules/sort-keys": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
- "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-plain-obj": "^1.0.0"
},
@@ -11422,9 +11886,8 @@
},
"node_modules/sort-keys-length": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz",
- "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"sort-keys": "^1.0.0"
},
@@ -11434,9 +11897,8 @@
},
"node_modules/sort-keys-length/node_modules/sort-keys": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
- "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-plain-obj": "^1.0.0"
},
@@ -11446,27 +11908,23 @@
},
"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.0",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
- "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
- "dev": true,
+ "version": "1.0.2",
+ "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"
@@ -11474,56 +11932,44 @@
},
"node_modules/spdx-correct": {
"version": "3.2.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
- "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
}
},
"node_modules/spdx-exceptions": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
- "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
- "dev": true
+ "version": "2.4.0",
+ "dev": true,
+ "license": "CC-BY-3.0"
},
"node_modules/spdx-expression-parse": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.17",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz",
- "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==",
- "dev": true
+ "version": "3.0.16",
+ "dev": true,
+ "license": "CC0-1.0"
},
"node_modules/split2": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
- "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
"dev": true,
+ "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==",
- "dev": true
- },
"node_modules/stack-utils": {
"version": "2.0.6",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
- "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"escape-string-regexp": "^2.0.0"
},
@@ -11533,67 +11979,70 @@
},
"node_modules/stack-utils/node_modules/escape-string-regexp": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/statuses": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/stream-buffers": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz",
- "integrity": "sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==",
"dev": true,
+ "license": "Unlicense",
"engines": {
"node": ">= 0.10.0"
}
},
+ "node_modules/streamsearch": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
+ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/streamx": {
- "version": "2.16.1",
- "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz",
- "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==",
+ "version": "2.15.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-fifo": "^1.1.0",
"queue-tick": "^1.0.1"
- },
- "optionalDependencies": {
- "bare-events": "^2.2.0"
}
},
"node_modules/strict-uri-encode": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
- "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/string_decoder": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
+ "devOptional": true,
+ "license": "MIT",
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
+ "node_modules/string-env-interpolation": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz",
+ "integrity": "sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg=="
+ },
"node_modules/string-replace-loader": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-replace-loader/-/string-replace-loader-3.1.0.tgz",
- "integrity": "sha512-5AOMUZeX5HE/ylKDnEa/KKBqvlnFmRZudSOjVJHxhoJg9QYTwl1rECx7SLR8BBH7tfxb4Rp7EM2XVfQFxIhsbQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"loader-utils": "^2.0.0",
"schema-utils": "^3.0.0"
@@ -11602,23 +12051,10 @@
"webpack": "^5"
}
},
- "node_modules/string-replace-loader/node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/string-replace-loader/node_modules/loader-utils": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
- "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
@@ -11630,9 +12066,8 @@
},
"node_modules/string-replace-loader/node_modules/schema-utils": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/json-schema": "^7.0.8",
"ajv": "^6.12.5",
@@ -11648,9 +12083,8 @@
},
"node_modules/string-width": {
"version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -11663,9 +12097,8 @@
"node_modules/string-width-cjs": {
"name": "string-width",
"version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
@@ -11677,9 +12110,8 @@
},
"node_modules/string-width-cjs/node_modules/strip-ansi": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -11689,9 +12121,8 @@
},
"node_modules/string-width/node_modules/strip-ansi": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -11700,41 +12131,32 @@
}
},
"node_modules/string.prototype.matchall": {
- "version": "4.0.11",
- "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz",
- "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==",
+ "version": "4.0.10",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.2",
- "es-errors": "^1.3.0",
- "es-object-atoms": "^1.0.0",
- "get-intrinsic": "^1.2.4",
- "gopd": "^1.0.1",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
"has-symbols": "^1.0.3",
- "internal-slot": "^1.0.7",
- "regexp.prototype.flags": "^1.5.2",
- "set-function-name": "^2.0.2",
- "side-channel": "^1.0.6"
- },
- "engines": {
- "node": ">= 0.4"
+ "internal-slot": "^1.0.5",
+ "regexp.prototype.flags": "^1.5.0",
+ "set-function-name": "^2.0.0",
+ "side-channel": "^1.0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/string.prototype.trim": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz",
- "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==",
+ "version": "1.2.8",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.0",
- "es-object-atoms": "^1.0.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
},
"engines": {
"node": ">= 0.4"
@@ -11744,31 +12166,26 @@
}
},
"node_modules/string.prototype.trimend": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz",
- "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==",
+ "version": "1.0.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-object-atoms": "^1.0.0"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/string.prototype.trimstart": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
- "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+ "version": "1.0.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-object-atoms": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -11776,9 +12193,8 @@
},
"node_modules/strip-ansi": {
"version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
},
@@ -11792,9 +12208,8 @@
"node_modules/strip-ansi-cjs": {
"name": "strip-ansi",
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -11804,9 +12219,8 @@
},
"node_modules/strip-ansi/node_modules/ansi-regex": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
- "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -11816,18 +12230,16 @@
},
"node_modules/strip-dirs": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz",
- "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-natural-number": "^4.0.1"
}
},
"node_modules/strip-final-newline": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -11837,9 +12249,8 @@
},
"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"
},
@@ -11849,9 +12260,8 @@
},
"node_modules/strip-outer": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
- "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"escape-string-regexp": "^1.0.2"
},
@@ -11861,18 +12271,16 @@
},
"node_modules/strip-outer/node_modules/escape-string-regexp": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/supports-color": {
"version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -11885,9 +12293,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"
},
@@ -11895,25 +12302,67 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/svelte": {
+ "version": "4.2.14",
+ "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.14.tgz",
+ "integrity": "sha512-ry3+YlWqZpHxLy45MW4MZIxNdvB+Wl7p2nnstWKbOAewaJyNJuOtivSbRChcfIej6wFBjWqyKmf/NgK1uW2JAA==",
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.1",
+ "@jridgewell/sourcemap-codec": "^1.4.15",
+ "@jridgewell/trace-mapping": "^0.3.18",
+ "@types/estree": "^1.0.1",
+ "acorn": "^8.9.0",
+ "aria-query": "^5.3.0",
+ "axobject-query": "^4.0.0",
+ "code-red": "^1.0.3",
+ "css-tree": "^2.3.1",
+ "estree-walker": "^3.0.3",
+ "is-reference": "^3.0.1",
+ "locate-character": "^3.0.0",
+ "magic-string": "^0.30.4",
+ "periscopic": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/svelte/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
+ "node_modules/svelte2tsx": {
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.7.6.tgz",
+ "integrity": "sha512-awHvYsakyiGjRqqSOhb2F+qJ6lUT9klQe0UQofAcdHNaKKeDHA8kEZ8zYKGG3BiDPurKYMGvH5/lZ+jeIoG7yQ==",
+ "dependencies": {
+ "dedent-js": "^1.0.1",
+ "pascal-case": "^3.1.1"
+ },
+ "peerDependencies": {
+ "svelte": "^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0",
+ "typescript": "^4.9.4 || ^5.0.0"
+ }
+ },
"node_modules/tabbable": {
"version": "5.3.3",
- "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz",
- "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA=="
+ "license": "MIT"
},
"node_modules/tapable": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
- "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
"node_modules/tar-fs": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz",
- "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mkdirp-classic": "^0.5.2",
"pump": "^3.0.0",
@@ -11922,9 +12371,8 @@
},
"node_modules/tar-stream": {
"version": "3.1.7",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
- "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"b4a": "^1.6.4",
"fast-fifo": "^1.2.0",
@@ -11933,9 +12381,8 @@
},
"node_modules/tcp-port-used": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz",
- "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"debug": "4.3.1",
"is2": "^2.0.6"
@@ -11943,9 +12390,8 @@
},
"node_modules/tcp-port-used/node_modules/debug": {
"version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ms": "2.1.2"
},
@@ -11959,10 +12405,9 @@
}
},
"node_modules/terser": {
- "version": "5.30.3",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz",
- "integrity": "sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==",
+ "version": "5.27.0",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
"acorn": "^8.8.2",
@@ -11978,9 +12423,8 @@
},
"node_modules/terser-webpack-plugin": {
"version": "5.3.10",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
- "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.20",
"jest-worker": "^27.4.5",
@@ -12012,9 +12456,8 @@
},
"node_modules/terser-webpack-plugin/node_modules/schema-utils": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/json-schema": "^7.0.8",
"ajv": "^6.12.5",
@@ -12030,45 +12473,39 @@
},
"node_modules/terser/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/text-table": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/thread-stream": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.4.1.tgz",
- "integrity": "sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"real-require": "^0.2.0"
}
},
"node_modules/through": {
"version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/timed-out": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
- "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/tmp": {
"version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"os-tmpdir": "~1.0.2"
},
@@ -12078,33 +12515,39 @@
},
"node_modules/tmp-promise": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz",
- "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tmp": "^0.2.0"
}
},
"node_modules/tmp-promise/node_modules/tmp": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
- "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==",
+ "version": "0.2.1",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "rimraf": "^3.0.0"
+ },
"engines": {
- "node": ">=14.14"
+ "node": ">=8.17.0"
+ }
+ },
+ "node_modules/to-buffer": {
+ "version": "1.1.1",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/to-buffer": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
- "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
- "dev": true
- },
"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"
},
@@ -12114,42 +12557,33 @@
},
"node_modules/toad-cache": {
"version": "3.7.0",
- "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz",
- "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
}
},
"node_modules/toidentifier": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.6"
}
},
"node_modules/tr46": {
"version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
- "dev": true
+ "license": "MIT"
},
"node_modules/traverse": {
"version": "0.3.9",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
- "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==",
"dev": true,
- "engines": {
- "node": "*"
- }
+ "license": "MIT/X11"
},
"node_modules/trim-repeated": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
- "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"escape-string-regexp": "^1.0.2"
},
@@ -12159,18 +12593,16 @@
},
"node_modules/trim-repeated/node_modules/escape-string-regexp": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/ts-loader": {
"version": "9.5.1",
- "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz",
- "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.1.0",
"enhanced-resolve": "^5.0.0",
@@ -12188,9 +12620,8 @@
},
"node_modules/ts-loader/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"
},
@@ -12203,9 +12634,8 @@
},
"node_modules/ts-loader/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"
@@ -12219,9 +12649,8 @@
},
"node_modules/ts-loader/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"
},
@@ -12231,24 +12660,21 @@
},
"node_modules/ts-loader/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/ts-loader/node_modules/source-map": {
"version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
"node": ">= 8"
}
},
"node_modules/ts-loader/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"
},
@@ -12258,14 +12684,12 @@
},
"node_modules/tslib": {
"version": "2.6.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
+ "license": "0BSD"
},
"node_modules/tsutils": {
"version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"tslib": "^1.8.1"
},
@@ -12278,15 +12702,33 @@
},
"node_modules/tsutils/node_modules/tslib": {
"version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
+ "dev": true,
+ "license": "0BSD"
+ },
+ "node_modules/tunnel": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
+ "engines": {
+ "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
+ }
+ },
+ "node_modules/tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "optional": true,
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ },
+ "engines": {
+ "node": "*"
+ }
},
"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"
},
@@ -12296,9 +12738,8 @@
},
"node_modules/type-fest": {
"version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
@@ -12307,30 +12748,27 @@
}
},
"node_modules/typed-array-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz",
- "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==",
+ "version": "1.0.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
- "es-errors": "^1.3.0",
- "is-typed-array": "^1.1.13"
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1",
+ "is-typed-array": "^1.1.10"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/typed-array-byte-length": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz",
- "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==",
+ "version": "1.0.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.2",
"for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-proto": "^1.0.3",
- "is-typed-array": "^1.1.13"
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
},
"engines": {
"node": ">= 0.4"
@@ -12340,17 +12778,15 @@
}
},
"node_modules/typed-array-byte-offset": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz",
- "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==",
+ "version": "1.0.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
"for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-proto": "^1.0.3",
- "is-typed-array": "^1.1.13"
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
},
"engines": {
"node": ">= 0.4"
@@ -12360,30 +12796,31 @@
}
},
"node_modules/typed-array-length": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz",
- "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==",
+ "version": "1.0.4",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
+ "call-bind": "^1.0.2",
"for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-proto": "^1.0.3",
- "is-typed-array": "^1.1.13",
- "possible-typed-array-names": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
+ "is-typed-array": "^1.1.9"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/typed-rest-client": {
+ "version": "1.8.11",
+ "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz",
+ "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==",
+ "dependencies": {
+ "qs": "^6.9.1",
+ "tunnel": "0.0.6",
+ "underscore": "^1.12.1"
+ }
+ },
"node_modules/typescript": {
"version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
- "dev": true,
+ "license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -12392,11 +12829,15 @@
"node": ">=4.2.0"
}
},
+ "node_modules/uc.micro": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
+ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
+ },
"node_modules/unbox-primitive": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
- "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.2",
"has-bigints": "^1.0.2",
@@ -12409,19 +12850,22 @@
},
"node_modules/unbzip2-stream": {
"version": "1.4.3",
- "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
- "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"buffer": "^5.2.1",
"through": "^2.3.8"
}
},
+ "node_modules/underscore": {
+ "version": "1.13.6",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
+ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
+ },
"node_modules/undici": {
- "version": "5.28.4",
- "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz",
- "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==",
+ "version": "5.28.3",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@fastify/busboy": "^2.0.0"
},
@@ -12431,24 +12875,43 @@
},
"node_modules/undici-types": {
"version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
- "dev": true
+ "dev": true,
+ "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/unixify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz",
+ "integrity": "sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==",
+ "dependencies": {
+ "normalize-path": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unixify/node_modules/normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+ "dependencies": {
+ "remove-trailing-separator": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/unzipper": {
"version": "0.10.14",
- "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz",
- "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"big-integer": "^1.6.17",
"binary": "~0.3.0",
@@ -12464,9 +12927,6 @@
},
"node_modules/update-browserslist-db": {
"version": "1.0.13",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
- "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
- "dev": true,
"funding": [
{
"type": "opencollective",
@@ -12481,6 +12941,7 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
"escalade": "^3.1.1",
"picocolors": "^1.0.0"
@@ -12494,18 +12955,21 @@
},
"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/url-join": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
+ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA=="
+ },
"node_modules/url-parse-lax": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
- "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prepend-http": "^2.0.0"
},
@@ -12515,25 +12979,26 @@
},
"node_modules/url-to-options": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz",
- "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
},
+ "node_modules/urlpattern-polyfill": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz",
+ "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg=="
+ },
"node_modules/use-sync-external-store": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz",
- "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==",
+ "license": "MIT",
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
}
},
"node_modules/userhome": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/userhome/-/userhome-1.0.0.tgz",
- "integrity": "sha512-ayFKY3H+Pwfy4W98yPdtH1VqH4psDeyW8lYYFzfecR9d6hqLpqhecktvYR3SEEXt7vG0S1JEpciI3g94pMErig==",
"dev": true,
"engines": {
"node": ">= 0.8.0"
@@ -12541,31 +13006,106 @@
},
"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==",
- "dev": true
+ "devOptional": true,
+ "license": "MIT"
},
"node_modules/validate-npm-package-license": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
}
},
+ "node_modules/value-or-promise": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz",
+ "integrity": "sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/vscode-jsonrpc": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
+ "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/vscode-languageclient": {
+ "version": "8.1.0",
+ "license": "MIT",
+ "dependencies": {
+ "minimatch": "^5.1.0",
+ "semver": "^7.3.7",
+ "vscode-languageserver-protocol": "3.17.3"
+ },
+ "engines": {
+ "vscode": "^1.67.0"
+ }
+ },
+ "node_modules/vscode-languageclient/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/vscode-languageclient/node_modules/minimatch": {
+ "version": "5.1.6",
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vscode-languageserver": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-8.1.0.tgz",
+ "integrity": "sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==",
+ "dependencies": {
+ "vscode-languageserver-protocol": "3.17.3"
+ },
+ "bin": {
+ "installServerIntoExtension": "bin/installServerIntoExtension"
+ }
+ },
+ "node_modules/vscode-languageserver-protocol": {
+ "version": "3.17.3",
+ "license": "MIT",
+ "dependencies": {
+ "vscode-jsonrpc": "8.1.0",
+ "vscode-languageserver-types": "3.17.3"
+ }
+ },
+ "node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc": {
+ "version": "8.1.0",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/vscode-languageserver-protocol/node_modules/vscode-languageserver-types": {
+ "version": "3.17.3",
+ "license": "MIT"
+ },
+ "node_modules/vscode-languageserver-types": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
+ "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="
+ },
"node_modules/vscode-uri": {
"version": "3.0.8",
- "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz",
- "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==",
- "dev": true
+ "license": "MIT"
},
"node_modules/wait-port": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/wait-port/-/wait-port-1.1.0.tgz",
- "integrity": "sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"chalk": "^4.1.2",
"commander": "^9.3.0",
@@ -12580,9 +13120,8 @@
},
"node_modules/wait-port/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"
},
@@ -12595,9 +13134,8 @@
},
"node_modules/wait-port/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"
@@ -12611,9 +13149,8 @@
},
"node_modules/wait-port/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"
},
@@ -12623,15 +13160,13 @@
},
"node_modules/wait-port/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/wait-port/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"
},
@@ -12640,10 +13175,9 @@
}
},
"node_modules/watchpack": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz",
- "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==",
+ "version": "2.4.0",
"dev": true,
+ "license": "MIT",
"dependencies": {
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2"
@@ -12654,18 +13188,16 @@
},
"node_modules/wcwidth": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
- "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"defaults": "^1.0.3"
}
},
"node_modules/wdio-chromedriver-service": {
"version": "8.1.1",
- "resolved": "https://registry.npmjs.org/wdio-chromedriver-service/-/wdio-chromedriver-service-8.1.1.tgz",
- "integrity": "sha512-pN3GiOkTIMnalfq4PJAHdX95pDp1orHnTY8W1fIbd6ok81ba97UjerTgS7lUDRUh1p0MAm35Ww0uc0/9wzB7SA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@wdio/logger": "^8.1.0",
"fs-extra": "^11.1.0",
@@ -12694,9 +13226,8 @@
},
"node_modules/wdio-chromedriver-service/node_modules/fs-extra": {
"version": "11.2.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz",
- "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^6.0.1",
@@ -12707,20 +13238,19 @@
}
},
"node_modules/wdio-vscode-service": {
- "version": "5.2.3",
- "resolved": "https://registry.npmjs.org/wdio-vscode-service/-/wdio-vscode-service-5.2.3.tgz",
- "integrity": "sha512-8CcvVKzNAch4u9y57ZDbTbCCXzNNM5iCLW7NI2KmftpJb2n0uynf+EfcSS7719nVLKbtUPQqmyDwBpBCY5yDfA==",
+ "version": "5.2.2",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@fastify/cors": "^8.5.0",
- "@fastify/static": "^6.12.0",
- "@types/ws": "^8.5.10",
- "@vscode/test-electron": "^2.3.8",
- "@wdio/logger": "^8.24.12",
+ "@fastify/cors": "^8.3.0",
+ "@fastify/static": "^6.10.2",
+ "@types/ws": "^8.5.5",
+ "@vscode/test-electron": "^2.3.4",
+ "@wdio/logger": "^8.11.0",
"clipboardy": "^3.0.0",
"decamelize": "6.0.0",
"download": "^8.0.0",
- "fastify": "^4.25.2",
+ "fastify": "^4.21.0",
"get-port": "7.0.0",
"hpagent": "^1.2.0",
"slash": "^5.1.0",
@@ -12728,7 +13258,7 @@
"undici": "^5.23.0",
"vscode-uri": "^3.0.8",
"wdio-chromedriver-service": "^8.1.1",
- "ws": "^8.16.0",
+ "ws": "^8.13.0",
"yargs-parser": "^21.1.1"
},
"engines": {
@@ -12747,23 +13277,10 @@
}
}
},
- "node_modules/wdio-vscode-service/node_modules/get-port": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.0.0.tgz",
- "integrity": "sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==",
- "dev": true,
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/wdio-vscode-service/node_modules/slash": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
- "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.16"
},
@@ -12773,35 +13290,31 @@
},
"node_modules/wdio-vscode-service/node_modules/yargs-parser": {
"version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
},
"node_modules/web-streams-polyfill": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
- "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
- "dev": true,
+ "version": "3.3.2",
+ "license": "MIT",
"engines": {
"node": ">= 8"
}
},
"node_modules/webdriver": {
- "version": "8.36.0",
- "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.36.0.tgz",
- "integrity": "sha512-6fmZI1+OCGbhuGMLBLvA7m9TJvHU1Cyzxqd8rGzIyb8hocR53yh/olfOL1BPcjU1NXmKuU1BePSGF+yiKajiEA==",
+ "version": "8.29.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "^20.1.0",
"@types/ws": "^8.5.3",
- "@wdio/config": "8.36.0",
+ "@wdio/config": "8.29.3",
"@wdio/logger": "8.28.0",
- "@wdio/protocols": "8.32.0",
- "@wdio/types": "8.36.0",
- "@wdio/utils": "8.36.0",
+ "@wdio/protocols": "8.29.7",
+ "@wdio/types": "8.29.1",
+ "@wdio/utils": "8.29.3",
"deepmerge-ts": "^5.1.0",
"got": "^12.6.1",
"ky": "^0.33.0",
@@ -12813,9 +13326,8 @@
},
"node_modules/webdriver/node_modules/@sindresorhus/is": {
"version": "5.6.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz",
- "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.16"
},
@@ -12824,19 +13336,17 @@
}
},
"node_modules/webdriver/node_modules/@types/node": {
- "version": "20.12.7",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz",
- "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==",
+ "version": "20.11.16",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/webdriver/node_modules/cacheable-request": {
"version": "10.2.14",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz",
- "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/http-cache-semantics": "^4.0.2",
"get-stream": "^6.0.1",
@@ -12852,9 +13362,8 @@
},
"node_modules/webdriver/node_modules/decompress-response": {
"version": "6.0.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
- "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"mimic-response": "^3.1.0"
},
@@ -12867,9 +13376,8 @@
},
"node_modules/webdriver/node_modules/decompress-response/node_modules/mimic-response": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
- "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -12879,9 +13387,8 @@
},
"node_modules/webdriver/node_modules/get-stream": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
- "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -12891,9 +13398,8 @@
},
"node_modules/webdriver/node_modules/got": {
"version": "12.6.1",
- "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz",
- "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@sindresorhus/is": "^5.2.0",
"@szmarczak/http-timer": "^5.0.1",
@@ -12916,15 +13422,13 @@
},
"node_modules/webdriver/node_modules/http-cache-semantics": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
- "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
- "dev": true
+ "dev": true,
+ "license": "BSD-2-Clause"
},
"node_modules/webdriver/node_modules/lowercase-keys": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz",
- "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
@@ -12934,9 +13438,8 @@
},
"node_modules/webdriver/node_modules/mimic-response": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz",
- "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
@@ -12945,10 +13448,9 @@
}
},
"node_modules/webdriver/node_modules/normalize-url": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz",
- "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==",
+ "version": "8.0.0",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14.16"
},
@@ -12958,18 +13460,16 @@
},
"node_modules/webdriver/node_modules/p-cancelable": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
- "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12.20"
}
},
"node_modules/webdriver/node_modules/responselike": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz",
- "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"lowercase-keys": "^3.0.0"
},
@@ -12981,23 +13481,22 @@
}
},
"node_modules/webdriverio": {
- "version": "8.36.0",
- "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.36.0.tgz",
- "integrity": "sha512-4WnEI+OxslHpfSnDXuADaR6bL1M7QxBUEF1mTN56AroOCJelyPvt94yRhszwQnLcJJB2OLn49eUz8M4yBCB51w==",
+ "version": "8.29.7",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/node": "^20.1.0",
- "@wdio/config": "8.36.0",
+ "@wdio/config": "8.29.3",
"@wdio/logger": "8.28.0",
- "@wdio/protocols": "8.32.0",
+ "@wdio/protocols": "8.29.7",
"@wdio/repl": "8.24.12",
- "@wdio/types": "8.36.0",
- "@wdio/utils": "8.36.0",
- "archiver": "^7.0.0",
+ "@wdio/types": "8.29.1",
+ "@wdio/utils": "8.29.3",
+ "archiver": "^6.0.0",
"aria-query": "^5.0.0",
"css-shorthand-properties": "^1.1.1",
"css-value": "^0.0.1",
- "devtools-protocol": "^0.0.1282316",
+ "devtools-protocol": "^0.0.1249869",
"grapheme-splitter": "^1.0.2",
"import-meta-resolve": "^4.0.0",
"is-plain-obj": "^4.1.0",
@@ -13009,7 +13508,7 @@
"resq": "^1.9.1",
"rgb2hex": "0.2.5",
"serialize-error": "^11.0.1",
- "webdriver": "8.36.0"
+ "webdriver": "8.29.7"
},
"engines": {
"node": "^16.13 || >=18"
@@ -13024,28 +13523,25 @@
}
},
"node_modules/webdriverio/node_modules/@types/node": {
- "version": "20.12.7",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz",
- "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==",
+ "version": "20.11.16",
"dev": true,
+ "license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/webdriverio/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/webdriverio/node_modules/is-plain-obj": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12"
},
@@ -13054,10 +13550,9 @@
}
},
"node_modules/webdriverio/node_modules/minimatch": {
- "version": "9.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
- "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+ "version": "9.0.3",
"dev": true,
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -13070,31 +13565,28 @@
},
"node_modules/webidl-conversions": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
- "dev": true
+ "license": "BSD-2-Clause"
},
"node_modules/webpack": {
- "version": "5.91.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz",
- "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==",
+ "version": "5.90.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/eslint-scope": "^3.7.3",
"@types/estree": "^1.0.5",
- "@webassemblyjs/ast": "^1.12.1",
- "@webassemblyjs/wasm-edit": "^1.12.1",
- "@webassemblyjs/wasm-parser": "^1.12.1",
+ "@webassemblyjs/ast": "^1.11.5",
+ "@webassemblyjs/wasm-edit": "^1.11.5",
+ "@webassemblyjs/wasm-parser": "^1.11.5",
"acorn": "^8.7.1",
"acorn-import-assertions": "^1.9.0",
"browserslist": "^4.21.10",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.16.0",
+ "enhanced-resolve": "^5.15.0",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
- "graceful-fs": "^4.2.11",
+ "graceful-fs": "^4.2.9",
"json-parse-even-better-errors": "^2.3.1",
"loader-runner": "^4.2.0",
"mime-types": "^2.1.27",
@@ -13102,7 +13594,7 @@
"schema-utils": "^3.2.0",
"tapable": "^2.1.1",
"terser-webpack-plugin": "^5.3.10",
- "watchpack": "^2.4.1",
+ "watchpack": "^2.4.0",
"webpack-sources": "^3.2.3"
},
"bin": {
@@ -13123,9 +13615,8 @@
},
"node_modules/webpack-cli": {
"version": "5.1.4",
- "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz",
- "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@discoveryjs/json-ext": "^0.5.0",
"@webpack-cli/configtest": "^2.1.1",
@@ -13168,18 +13659,16 @@
},
"node_modules/webpack-cli/node_modules/commander": {
"version": "10.0.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz",
- "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=14"
}
},
"node_modules/webpack-merge": {
"version": "5.10.0",
- "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz",
- "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"clone-deep": "^4.0.1",
"flat": "^5.0.2",
@@ -13191,18 +13680,16 @@
},
"node_modules/webpack-sources": {
"version": "3.2.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
- "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/webpack/node_modules/schema-utils": {
"version": "3.3.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
- "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/json-schema": "^7.0.8",
"ajv": "^6.12.5",
@@ -13218,9 +13705,7 @@
},
"node_modules/whatwg-url": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
@@ -13228,9 +13713,8 @@
},
"node_modules/which": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz",
- "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"isexe": "^3.1.1"
},
@@ -13243,9 +13727,8 @@
},
"node_modules/which-boxed-primitive": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-bigint": "^1.0.1",
"is-boolean-object": "^1.1.0",
@@ -13259,9 +13742,8 @@
},
"node_modules/which-builtin-type": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz",
- "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"function.prototype.name": "^1.1.5",
"has-tostringtag": "^1.0.0",
@@ -13285,39 +13767,33 @@
},
"node_modules/which-builtin-type/node_modules/isarray": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/which-collection": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
- "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+ "version": "1.0.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "is-map": "^2.0.3",
- "is-set": "^2.0.3",
- "is-weakmap": "^2.0.2",
- "is-weakset": "^2.0.3"
- },
- "engines": {
- "node": ">= 0.4"
+ "is-map": "^2.0.1",
+ "is-set": "^2.0.1",
+ "is-weakmap": "^2.0.1",
+ "is-weakset": "^2.0.1"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/which-typed-array": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz",
- "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==",
+ "version": "1.1.14",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "available-typed-arrays": "^1.0.7",
- "call-bind": "^1.0.7",
+ "available-typed-arrays": "^1.0.6",
+ "call-bind": "^1.0.5",
"for-each": "^0.3.3",
"gopd": "^1.0.1",
- "has-tostringtag": "^1.0.2"
+ "has-tostringtag": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
@@ -13328,21 +13804,18 @@
},
"node_modules/wildcard": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz",
- "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/workerpool": {
"version": "6.2.1",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz",
- "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==",
- "dev": true
+ "dev": true,
+ "license": "Apache-2.0"
},
"node_modules/wrap-ansi": {
"version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -13355,9 +13828,8 @@
"node_modules/wrap-ansi-cjs": {
"name": "wrap-ansi",
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@@ -13372,9 +13844,8 @@
},
"node_modules/wrap-ansi-cjs/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"
},
@@ -13387,9 +13858,8 @@
},
"node_modules/wrap-ansi-cjs/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"
},
@@ -13399,15 +13869,13 @@
},
"node_modules/wrap-ansi-cjs/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -13417,9 +13885,8 @@
},
"node_modules/wrap-ansi/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"
},
@@ -13432,9 +13899,8 @@
},
"node_modules/wrap-ansi/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"
},
@@ -13444,15 +13910,13 @@
},
"node_modules/wrap-ansi/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
+ "dev": true,
+ "license": "MIT"
},
"node_modules/wrap-ansi/node_modules/strip-ansi": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ansi-regex": "^5.0.1"
},
@@ -13462,15 +13926,11 @@
},
"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": "8.16.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
- "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
- "dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10.0.0"
},
@@ -13487,44 +13947,59 @@
}
}
},
+ "node_modules/xml2js": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
+ "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
+ "dependencies": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
"node_modules/xtend": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
- "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.4"
}
},
"node_modules/y18n": {
"version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=10"
}
},
"node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
},
"node_modules/yaml": {
"version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">= 6"
}
},
"node_modules/yargs": {
"version": "17.7.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"cliui": "^8.0.1",
"escalade": "^3.1.1",
@@ -13540,18 +14015,16 @@
},
"node_modules/yargs-parser": {
"version": "20.2.4",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
- "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=10"
}
},
"node_modules/yargs-unparser": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
- "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"camelcase": "^6.0.0",
"decamelize": "^4.0.0",
@@ -13564,9 +14037,8 @@
},
"node_modules/yargs-unparser/node_modules/camelcase": {
"version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -13576,9 +14048,8 @@
},
"node_modules/yargs-unparser/node_modules/decamelize": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
- "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=10"
},
@@ -13588,46 +14059,39 @@
},
"node_modules/yargs-unparser/node_modules/is-plain-obj": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/yargs/node_modules/yargs-parser": {
"version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": ">=12"
}
},
"node_modules/yauzl": {
"version": "2.10.0",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
- "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
- "dev": true,
+ "license": "MIT",
"dependencies": {
"buffer-crc32": "~0.2.3",
"fd-slicer": "~1.1.0"
}
},
- "node_modules/yauzl/node_modules/buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "dev": true,
- "engines": {
- "node": "*"
+ "node_modules/yazl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz",
+ "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==",
+ "dependencies": {
+ "buffer-crc32": "~0.2.3"
}
},
"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"
},
@@ -13636,86 +14100,29 @@
}
},
"node_modules/zip-stream": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz",
- "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==",
+ "version": "5.0.1",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "archiver-utils": "^5.0.0",
- "compress-commons": "^6.0.2",
- "readable-stream": "^4.0.0"
+ "archiver-utils": "^4.0.1",
+ "compress-commons": "^5.0.1",
+ "readable-stream": "^3.6.0"
},
"engines": {
- "node": ">= 14"
- }
- },
- "node_modules/zip-stream/node_modules/buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "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"
- }
- ],
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
+ "node": ">= 12.0.0"
}
},
"node_modules/zip-stream/node_modules/readable-stream": {
- "version": "4.5.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz",
- "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==",
+ "version": "3.6.2",
"dev": true,
+ "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"
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/zip-stream/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==",
- "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"
- }
- ]
- },
- "node_modules/zip-stream/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==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.2.0"
+ "node": ">= 6"
}
}
}
diff --git a/firebase-vscode/package.json b/firebase-vscode/package.json
index 6c205f07f39..609b5fd0199 100644
--- a/firebase-vscode/package.json
+++ b/firebase-vscode/package.json
@@ -1,9 +1,10 @@
{
"name": "firebase-vscode",
- "displayName": "firebase-vscode",
+ "displayName": "Firebase",
"publisher": "firebase",
+ "icon": "./resources/firebase_logo.png",
"description": "VSCode Extension for Firebase",
- "version": "0.0.24",
+ "version": "0.2.0",
"engines": {
"vscode": "^1.69.0"
},
@@ -12,15 +13,43 @@
"categories": [
"Other"
],
+ "extensionDependencies": [
+ "graphql.vscode-graphql-syntax"
+ ],
"activationEvents": [
- "onStartupFinished"
+ "onStartupFinished",
+ "onLanguage:graphql",
+ "workspaceContains:**/.graphqlrc",
+ "workspaceContains:**/.graphqlrc.{json,yaml,yml,js,ts,toml}",
+ "workspaceContains:**/graphql.config.{json,yaml,yml,js,ts,toml}"
],
"main": "./dist/extension.js",
"contributes": {
"commands": [
+ {
+ "command": "fdc-graphql.showOutputChannel",
+ "title": "Firebase GraphQL Language Server: show output channel"
+ },
+ {
+ "command": "fdc-graphql.restart",
+ "title": "Firebase GraphQL Language Server: Restart"
+ },
+ {
+ "command": "fdc.deploy",
+ "title": "Firebase Data Connect: Deploy",
+ "icon": "$(cloud-upload)"
+ },
{
"command": "firebase.selectProject",
- "title": "Switch project"
+ "title": "Firebase: Switch project"
+ },
+ {
+ "command": "firebase.emulators.start",
+ "title": "Firebase: Start emulators"
+ },
+ {
+ "command": "firebase.emulators.stop",
+ "title": "Firebase: Stop emulators"
}
],
"configuration": {
@@ -28,12 +57,12 @@
"properties": {
"firebase.debug": {
"type": "boolean",
- "default": false,
+ "default": true,
"description": "Enable writing debug-level messages to the file provided in firebase.debugLogPath (requires restart)"
},
"firebase.debugLogPath": {
"type": "string",
- "default": "",
+ "default": "/tmp/firebase-plugin.log",
"description": "If firebase.debug is true, appends debug-level messages to the provided file (requires restart)"
},
"firebase.npmPath": {
@@ -45,9 +74,22 @@
"type": "boolean",
"default": true,
"description": "Enable web frameworks"
+ },
+ "firebase.dataConnect.alwaysAllowMutationsInProduction": {
+ "type": "boolean",
+ "default": false,
+ "description": "Always allow mutations in production. If false (default), trying to run a mutation in production will open a confirmation modal."
}
}
},
+ "keybindings": [
+ {
+ "command": "firebase.dataConnect.executeOperationAtCursor",
+ "key": "ctrl+enter",
+ "mac": "cmd+enter",
+ "when": "editorLangId == gql || editorLangId == graphql"
+ }
+ ],
"viewsContainers": {
"activitybar": [
{
@@ -55,6 +97,13 @@
"title": "Firebase",
"icon": "$(mono-firebase)"
}
+ ],
+ "panel": [
+ {
+ "id": "firebase-data-connect-execution-view",
+ "title": "Data Connect Execution",
+ "icon": "$(mono-firebase)"
+ }
]
},
"icons": {
@@ -64,6 +113,13 @@
"fontPath": "./resources/Monicons.woff",
"fontCharacter": "\\F101"
}
+ },
+ "data-connect": {
+ "description": "Data Connect icon",
+ "default": {
+ "fontPath": "./resources/GMPIcons.woff2",
+ "fontCharacter": "\\gmp_nav20_dataconnect"
+ }
}
},
"views": {
@@ -71,10 +127,46 @@
{
"type": "webview",
"id": "sidebar",
- "name": "Firebase"
+ "name": "Config"
+ },
+ {
+ "type": "webview",
+ "id": "data-connect",
+ "name": "Firebase Data Connect",
+ "when": "firebase-vscode.fdc.enabled"
+ },
+ {
+ "id": "firebase.dataConnect.explorerView",
+ "name": "FDC Explorer",
+ "when": "firebase-vscode.fdc.enabled"
+ }
+ ],
+ "firebase-data-connect-execution-view": [
+ {
+ "type": "webview",
+ "id": "data-connect-execution-configuration",
+ "name": "Configuration",
+ "when": "firebase-vscode.fdc.enabled"
+ },
+ {
+ "id": "data-connect-execution-history",
+ "name": "History",
+ "when": "firebase-vscode.fdc.enabled"
+ },
+ {
+ "type": "webview",
+ "id": "data-connect-execution-results",
+ "name": "Results",
+ "when": "firebase-vscode.fdc.enabled"
}
]
},
+ "viewsWelcome": [
+ {
+ "view": "firebase.dataConnect.explorerView",
+ "contents": "Start the emulator in a Data Connect project to view your schema."
+ }
+ ],
"jsonValidation": [
{
"fileMatch": "firebase.json",
@@ -85,6 +177,14 @@
{
"fileMatch": "extension.yaml",
"url": "https://raw.githubusercontent.com/firebase/firebase-tools/master/schema/extension-yaml.json"
+ },
+ {
+ "fileMatch": "dataconnect.yaml",
+ "url": "./schema/dataconnect-yaml.json"
+ },
+ {
+ "fileMatch": "connector.yaml",
+ "url": "./schema/connector-yaml.json"
}
]
},
@@ -105,15 +205,25 @@
"test": "npm run test:unit && npm run test:e2e",
"pretest:unit": "npm run test-compile && npm run build && tsc -p src/test/tsconfig.test.json",
"test:unit": "node ./dist/test/firebase-vscode/src/test/runTest.js",
- "test:e2e": "TS_NODE_PROJECT=\"./src/test/tsconfig.test.json\" wdio run ./src/test/wdio.conf.ts"
+ "test:e2e": "npm run test:e2e:empty && npm run test:e2e:fishfood",
+ "test:e2e:empty": "TS_NODE_PROJECT=\"./src/test/tsconfig.test.json\" TEST=true wdio run ./src/test/empty_wdio.conf.ts",
+ "test:e2e:fishfood": "TS_NODE_PROJECT=\"./src/test/tsconfig.test.json\" TEST=true wdio run ./src/test/fishfood_wdio.conf.ts",
+ "format": "npx prettier . -w"
},
"dependencies": {
- "@preact/signals-react": "^1.3.6",
+ "@preact/signals-core": "^1.4.0",
+ "@preact/signals-react": "1.3.6",
"@vscode/codicons": "0.0.30",
+ "@vscode/vsce": "^2.25.0",
"@vscode/webview-ui-toolkit": "^1.2.1",
"classnames": "^2.3.2",
+ "exponential-backoff": "3.1.1",
+ "graphql-language-service": "file:graphql-language-service-5.2.0.tgz",
+ "graphql-language-service-server": "file:graphql-language-service-server-2.12.0.tgz",
+ "js-yaml": "^4.1.0",
"react": "^18.2.0",
- "react-dom": "^18.2.0"
+ "react-dom": "^18.2.0",
+ "vscode-languageclient": "8.1.0"
},
"devDependencies": {
"@teamsupercell/typings-for-css-modules-loader": "^2.5.1",
@@ -136,9 +246,12 @@
"eslint-plugin-react": "^7.32.2",
"fork-ts-checker-webpack-plugin": "^7.3.0",
"glob": "^8.0.3",
+ "graphql": "^16.7.1",
"mini-css-extract-plugin": "^2.6.0",
"mocha": "^10.1.0",
+ "node-loader": "2.0.0",
"postcss-loader": "^7.0.0",
+ "prettier": "^3.1.1",
"sass": "^1.52.0",
"sass-loader": "^13.0.0",
"string-replace-loader": "^3.1.0",
diff --git a/firebase-vscode/resources/GMPIcons.woff2 b/firebase-vscode/resources/GMPIcons.woff2
new file mode 100644
index 00000000000..55a7fb94f48
Binary files /dev/null and b/firebase-vscode/resources/GMPIcons.woff2 differ
diff --git a/firebase-vscode/resources/firebase_logo.png b/firebase-vscode/resources/firebase_logo.png
new file mode 100644
index 00000000000..e3e46f77939
Binary files /dev/null and b/firebase-vscode/resources/firebase_logo.png differ
diff --git a/firebase-vscode/scripts/swap-pkg.js b/firebase-vscode/scripts/swap-pkg.js
index 92f68fce843..4c428799793 100644
--- a/firebase-vscode/scripts/swap-pkg.js
+++ b/firebase-vscode/scripts/swap-pkg.js
@@ -2,43 +2,10 @@ const { writeFileSync } = require("fs");
const path = require("path");
const pkg = require(path.join(__dirname, "../package.json"));
-// Swaps package.json config as appropriate for packaging for
-// Monospace or VSCE marketplace.
-// TODO(chholland): Don't overwrite the real package.json file and
-// create a generated one in dist/ - redo .vscodeignore to package
-// dist/
-
-let target = "vsce";
-
-process.argv.forEach((arg) => {
- if (arg === "vsce" || arg === "monospace") {
- target = arg;
- }
-});
-
-if (target === "vsce") {
- delete pkg.extensionDependencies;
- console.log(
- "Removing google.monospace extensionDependency for VSCE packaging."
- );
- pkg.contributes.configuration.properties['firebase.debug'].default = false;
- pkg.contributes.configuration.properties['firebase.debugLogPath'].default = "";
- console.log(
- "Setting default debug log settings to off for VSCE packaging."
- );
-} else if (target === "monospace") {
- pkg.extensionDependencies = ["google.monospace"];
- console.log(
- "Adding google.monospace extensionDependency for Monospace packaging."
- );
- pkg.contributes.configuration.properties['firebase.debug'].default = true;
- pkg.contributes.configuration.properties['firebase.debugLogPath'].default =
- "/tmp/firebase-plugin.log";
- console.log(
- "Setting default debug log settings to on for Monospace packaging."
- );
-}
+pkg.contributes.configuration.properties["firebase.debug"].default = true;
+pkg.contributes.configuration.properties["firebase.debugLogPath"].default =
+ "/tmp/firebase-plugin.log";
writeFileSync(
path.join(__dirname, "../package.json"),
diff --git a/firebase-vscode/src/auth/service.ts b/firebase-vscode/src/auth/service.ts
new file mode 100644
index 00000000000..7d1b6525608
--- /dev/null
+++ b/firebase-vscode/src/auth/service.ts
@@ -0,0 +1,23 @@
+import { Disposable } from "vscode";
+import { ExtensionBrokerImpl } from "../extension-broker";
+import { UserMock } from "../../common/messaging/protocol";
+
+export class AuthService implements Disposable {
+ constructor(readonly broker: ExtensionBrokerImpl) {
+ this.disposable.push({
+ dispose: broker.on(
+ "notifyAuthUserMockChange",
+ (userMock) => (this.userMock = userMock)
+ ),
+ });
+ }
+
+ userMock: UserMock | undefined;
+ disposable: Disposable[] = [];
+
+ dispose() {
+ for (const disposable of this.disposable) {
+ disposable.dispose();
+ }
+ }
+}
diff --git a/firebase-vscode/src/cli.ts b/firebase-vscode/src/cli.ts
index e0d72aa4a81..61bb4810c5c 100644
--- a/firebase-vscode/src/cli.ts
+++ b/firebase-vscode/src/cli.ts
@@ -29,10 +29,15 @@ import {
cleanShutdown as stopAllEmulators,
} from "../../src/emulator/controller";
import { EmulatorRegistry } from "../../src/emulator/registry";
-import { EmulatorInfo, Emulators } from "../../src/emulator/types";
+import {
+ DownloadableEmulatorDetails,
+ EmulatorInfo,
+ DownloadableEmulators,
+ Emulators,
+} from "../../src/emulator/types";
import * as commandUtils from "../../src/emulator/commandUtils";
import { currentUser } from "./core/user";
-
+export { Emulators };
/**
* Try to get a service account by calling requireAuth() without
* providing any account info.
@@ -95,9 +100,9 @@ async function getServiceAccount() {
*/
async function requireAuthWrapper(showError: boolean = true): Promise {
// Try to get global default from configstore. For some reason this is
- // often overwritten when restarting the extension.
pluginLogger.debug("requireAuthWrapper");
let account = getGlobalDefaultAccount();
+ // often overwritten when restarting the extension.
if (!account) {
// If nothing in configstore top level, grab the first "additionalAccount"
const accounts = getAllAccounts();
@@ -148,7 +153,7 @@ async function requireAuthWrapper(showError: boolean = true): Promise {
// "error". Usually set on user-triggered actions such as
// init hosting and deploy.
pluginLogger.error(
- `requireAuth error: ${e.original?.message || e.message}`
+ `requireAuth error: ${e.original?.message || e.message}`,
);
vscode.window.showErrorMessage("Not logged in", {
modal: true,
@@ -159,7 +164,7 @@ async function requireAuthWrapper(showError: boolean = true): Promise {
// but we should log it for debugging purposes.
pluginLogger.debug(
"requireAuth error output: ",
- e.original?.message || e.message
+ e.original?.message || e.message,
);
}
return false;
@@ -258,7 +263,10 @@ export async function initHosting(options: {
useWebFrameworks: false,
};
}
- const commandOptions = await getCommandOptions(undefined, currentOptions.value);
+ const commandOptions = await getCommandOptions(
+ undefined,
+ currentOptions.value
+ );
const inquirerOptions = {
...commandOptions,
...options,
@@ -333,12 +341,18 @@ export async function deployToHosting(
export async function emulatorsStart(
emulatorUiSelections: EmulatorUiSelections
) {
+ const only =
+ emulatorUiSelections.mode === "hosting"
+ ? "hosting"
+ : emulatorUiSelections.mode === "dataconnect"
+ ? `${Emulators.DATACONNECT},${Emulators.AUTH}`
+ : "";
const commandOptions = await getCommandOptions(undefined, {
...currentOptions.value,
project: emulatorUiSelections.projectId,
exportOnExit: emulatorUiSelections.exportStateOnExit,
import: emulatorUiSelections.importStateFolderPath,
- only: emulatorUiSelections.mode === "hosting" ? "hosting" : "",
+ only,
});
// Adjusts some options, export on exit can be a boolean or a path.
commandUtils.setExportOnExitOptions(
@@ -359,3 +373,9 @@ export function getEmulatorUiUrl(): string | undefined {
const url: URL = EmulatorRegistry.url(Emulators.UI);
return url.hostname === "unknown" ? undefined : url.toString();
}
+
+export function getEmulatorDetails(
+ emulator: DownloadableEmulators
+): DownloadableEmulatorDetails {
+ return EmulatorRegistry.getDetails(emulator);
+}
diff --git a/firebase-vscode/src/config-files.ts b/firebase-vscode/src/config-files.ts
deleted file mode 100644
index e3b32a46987..00000000000
--- a/firebase-vscode/src/config-files.ts
+++ /dev/null
@@ -1,151 +0,0 @@
-import * as fs from "fs";
-import * as path from "path";
-import * as vscode from "vscode";
-import { ExtensionBrokerImpl } from "./extension-broker";
-import { updateOptions, currentOptions } from "./options";
-import { RC } from "../../src/rc";
-import { Config } from "../../src/config";
-import { pluginLogger } from "./logger-wrapper";
-import isEmpty from "lodash/isEmpty";
-import { workspace } from "./utils/test_hooks";
-
-export function getRootFolders() {
- if (!workspace.value) {
- return [];
- }
- const folders = workspace.value.workspaceFolders
- ? workspace.value.workspaceFolders.map((wf) => wf.uri.fsPath)
- : [];
- if (workspace.value.workspaceFile) {
- folders.push(path.dirname(workspace.value.workspaceFile.fsPath));
- }
- return Array.from(new Set(folders));
-}
-
-function getConfigPath(): string {
- // Usually there's only one root folder unless someone is using a
- // multi-root VS Code workspace.
- // https://code.visualstudio.com/docs/editor/multi-root-workspaces
- // We are trying to play it safe by assigning the cwd
- // based on where a .firebaserc or firebase.json was found but if
- // the user hasn't run firebase init there won't be one, and without
- // a cwd we won't know where to put it.
- const rootFolders = getRootFolders();
- for (const folder of rootFolders) {
- if (
- fs.existsSync(path.join(folder, ".firebaserc")) ||
- fs.existsSync(path.join(folder, "firebase.json"))
- ) {
- currentOptions.value.cwd = folder;
- return folder;
- }
- }
- currentOptions.value.cwd = rootFolders[0];
- return rootFolders[0];
-}
-
-/**
- * Parse firebase.json and .firebaserc from the configured location, if they
- * exist, and write to memory.
- */
-export function readFirebaseConfigs(context: vscode.ExtensionContext) {
- const configPath = getConfigPath();
- let firebaseRC: RC;
- let firebaseJSON: Config;
- try {
- firebaseRC = RC.loadFile(path.join(configPath, ".firebaserc"));
- } catch (e) {
- pluginLogger.error(e.message);
- throw e;
- }
-
- // RC.loadFile doesn't throw if not found, it just returns an empty object
- if (isEmpty(firebaseRC.data)) {
- firebaseRC = null;
- }
-
- try {
- firebaseJSON = Config.load({
- configPath: path.join(configPath, "firebase.json"),
- });
- } catch (e) {
- if (e.status === 404) {
- firebaseJSON = null;
- } else {
- pluginLogger.error(e.message);
- throw e;
- }
- }
- updateOptions(context, firebaseJSON, firebaseRC);
- return { firebaseJSON, firebaseRC };
-}
-
-/**
- * Read Firebase configs and then send it to webviews through the given broker
- */
-export async function readAndSendFirebaseConfigs(
- broker: ExtensionBrokerImpl,
- context: vscode.ExtensionContext
-) {
- const { firebaseJSON, firebaseRC } = readFirebaseConfigs(context);
- broker.send("notifyFirebaseConfig", {
- firebaseJson: firebaseJSON?.data,
- firebaseRC: firebaseRC?.data,
- });
-}
-
-/**
- * Write new default project to .firebaserc
- */
-export async function updateFirebaseRCProject(
- context: vscode.ExtensionContext,
- alias: string,
- projectId: string
-) {
- if (!currentOptions.value.rc) {
- if (!currentOptions.value.cwd) {
- currentOptions.value.cwd = getConfigPath();
- }
- currentOptions.value.rc = new RC(
- path.join(currentOptions.value.cwd, ".firebaserc"),
- {}
- );
- }
- currentOptions.value.rc.addProjectAlias(alias, projectId);
- currentOptions.value.rc.save();
- updateOptions(context, undefined, currentOptions.value.rc);
-}
-
-/**
- * Set up a FileSystemWatcher for .firebaserc and firebase.json Also un-watch and re-watch when the
- * configuration for where in the workspace the .firebaserc and firebase.json are.
- */
-export function setupFirebaseJsonAndRcFileSystemWatcher(
- broker: ExtensionBrokerImpl,
- context: vscode.ExtensionContext
-): vscode.Disposable {
- // Create a new watcher
- let watcher = newWatcher();
-
- // Return a disposable that tears down a watcher if it's active
- return {
- dispose() {
- watcher && watcher.dispose();
- },
- };
-
- // HelperFunction to create a new watcher
- function newWatcher() {
- if (!currentOptions.value.cwd) {
- return null;
- }
-
- let watcher = workspace.value.createFileSystemWatcher(
- path.join(currentOptions.value.cwd, "{firebase.json,.firebaserc}")
- );
- watcher.onDidChange(async () => {
- readAndSendFirebaseConfigs(broker, context);
- });
- return watcher;
- }
-}
diff --git a/firebase-vscode/src/core/config.ts b/firebase-vscode/src/core/config.ts
index ee633b5a3c4..a1b543ab9d7 100644
--- a/firebase-vscode/src/core/config.ts
+++ b/firebase-vscode/src/core/config.ts
@@ -3,82 +3,175 @@ import * as vscode from "vscode";
import path from "path";
import fs from "fs";
import { currentOptions } from "../options";
-import { pluginLogger } from "../logger-wrapper";
import { ExtensionBrokerImpl } from "../extension-broker";
-import { RC } from "../../../src/rc";
+import { RC, RCData } from "../../../src/rc";
import { Config } from "../../../src/config";
import { globalSignal } from "../utils/globals";
import { workspace } from "../utils/test_hooks";
+import { ResolvedDataConnectConfigs } from "../data-connect/config";
+import { ValueOrError } from "../../common/messaging/protocol";
+import { firstWhereDefined, onChange } from "../utils/signal";
+import { Result, ResultError, ResultValue } from "../result";
+import { FirebaseConfig } from "../firebaseConfig";
+import { effect } from "@preact/signals-react";
-export const firebaseRC = globalSignal(undefined);
-export const firebaseConfig = globalSignal(undefined);
+/**
+ * The .firebaserc configs.
+ *
+ * `undefined` means that the extension has yet to load the file.
+ * {@link ResultValue} with an `undefined` value means that the file was not found.
+ * {@link ResultError} means that the file was found but the parsing failed.
+ *
+ * This enables the UI to differentiate between "no config" and "error reading config",
+ * and also await for configs to be loaded (thanks to the {@link firstWhereDefined} util)
+ */
+export const firebaseRC = globalSignal | undefined>(
+ undefined
+);
-export function registerConfig(broker: ExtensionBrokerImpl): Disposable {
- firebaseRC.value = _readRC();
- firebaseConfig.value = _readConfig();
+export const dataConnectConfigs = globalSignal<
+ ResolvedDataConnectConfigs | undefined
+>(undefined);
- function notifyFirebaseConfig() {
- broker.send("notifyFirebaseConfig", {
- firebaseJson: firebaseConfig.value?.data,
- firebaseRC: firebaseRC.value?.data,
- });
+/**
+ * The firebase.json configs.
+ *
+ * `undefined` means that the extension has yet to load the file.
+ * {@link ResultValue} with an `undefined` value means that the file was not found.
+ * {@link ResultError} means that the file was found but the parsing failed.
+ *
+ * This enables the UI to differentiate between "no config" and "error reading config",
+ * and also await for configs to be loaded (thanks to the {@link firstWhereDefined} util)
+ */
+export const firebaseConfig = globalSignal<
+ Result | undefined
+>(undefined);
+
+/**
+ * Write new default project to .firebaserc
+ */
+export async function updateFirebaseRCProject(
+ alias: string,
+ projectId: string
+) {
+ const rc =
+ firebaseRC.value.tryReadValue ??
+ // We don't update firebaseRC if we create a temporary RC,
+ // as the file watcher will update the value for us.
+ // This is only for the sake of calling `save()`.
+ new RC(path.join(currentOptions.value.cwd, ".firebaserc"), {});
+
+ if (rc.resolveAlias(alias) === projectId) {
+ // Nothing to update, avoid an unnecessary write.
+ // That's especially important as a write will trigger file watchers,
+ // which may then re-trigger this function.
+ return;
}
- // "subscribe" immediately calls the callback with the current value.
- // We want to skip this.
- var shouldNotify = false;
+ rc.addProjectAlias(alias, projectId);
+ rc.save();
+}
+
+function notifyFirebaseConfig(broker: ExtensionBrokerImpl) {
+ broker.send("notifyFirebaseConfig", {
+ firebaseJson: firebaseConfig.value?.switchCase<
+ ValueOrError | undefined
+ >(
+ (value) => ({ value: value?.data, error: undefined }),
+ (error) => ({ value: undefined, error: `${error}` })
+ ),
+ firebaseRC: firebaseRC.value?.switchCase<
+ ValueOrError | undefined
+ >(
+ (value) => ({
+ value: value?.data,
+ error: undefined,
+ }),
+ (error) => ({ value: undefined, error: `${error}` })
+ ),
+ });
+}
- // When configs change, notify the extension.
- // We do so after the config is initially updated, to not notify
- // the extension on startup.
- const rcRemoveListener = firebaseRC.subscribe(() => {
- if (!shouldNotify) {
- return;
+function registerRc(broker: ExtensionBrokerImpl): Disposable {
+ firebaseRC.value = _readRC();
+ const rcRemoveListener = onChange(firebaseRC, () =>
+ notifyFirebaseConfig(broker)
+ );
+
+ const showToastOnError = effect(() => {
+ const rc = firebaseRC.value;
+ if (rc instanceof ResultError) {
+ vscode.window.showErrorMessage(`Error reading .firebaserc:\n${rc.error}`);
}
- return notifyFirebaseConfig();
});
- const configRemoveListener = firebaseConfig.subscribe(() => {
- if (!shouldNotify) {
- return;
+
+ const rcWatcher = _createWatcher(".firebaserc");
+ rcWatcher?.onDidChange(() => (firebaseRC.value = _readRC()));
+ rcWatcher?.onDidCreate(() => (firebaseRC.value = _readRC()));
+ // TODO handle deletion of .firebaserc/.firebase.json/firemat.yaml
+ rcWatcher?.onDidDelete(() => (firebaseRC.value = undefined));
+
+ return Disposable.from(
+ { dispose: rcRemoveListener },
+ { dispose: showToastOnError },
+ { dispose: () => rcWatcher?.dispose() }
+ );
+}
+
+function registerFirebaseConfig(broker: ExtensionBrokerImpl): Disposable {
+ firebaseConfig.value = _readFirebaseConfig();
+
+ const firebaseConfigRemoveListener = onChange(firebaseConfig, () =>
+ notifyFirebaseConfig(broker)
+ );
+
+ const showToastOnError = effect(() => {
+ const config = firebaseConfig.value;
+ if (config instanceof ResultError) {
+ vscode.window.showErrorMessage(
+ `Error reading firebase.json:\n${config.error}`
+ );
}
- return notifyFirebaseConfig();
});
- shouldNotify = true;
+ const configWatcher = _createWatcher("firebase.json");
+ configWatcher?.onDidChange(
+ () => (firebaseConfig.value = _readFirebaseConfig())
+ );
+ configWatcher?.onDidCreate(
+ () => (firebaseConfig.value = _readFirebaseConfig())
+ );
+ configWatcher?.onDidDelete(() => (firebaseConfig.value = undefined));
- // On getInitialData, forcibly notifies the extension.
- const getInitialDataRemoveListener = broker.on(
- "getInitialData",
- notifyFirebaseConfig,
+ return Disposable.from(
+ { dispose: firebaseConfigRemoveListener },
+ { dispose: showToastOnError },
+ { dispose: () => configWatcher?.dispose() }
);
+}
- const rcWatcher = _createWatcher(".firebaserc");
- rcWatcher?.onDidChange(() => (firebaseRC.value = _readRC()));
- rcWatcher?.onDidCreate(() => (firebaseRC.value = _readRC()));
- // TODO handle deletion of .firebaserc/.firebase.json
-
- const jsonWatcher = _createWatcher("firebase.json");
- jsonWatcher?.onDidChange(() => (firebaseConfig.value = _readConfig()));
- jsonWatcher?.onDidCreate(() => (firebaseConfig.value = _readConfig()));
-
- return {
- dispose: () => {
- getInitialDataRemoveListener();
- rcRemoveListener();
- configRemoveListener();
- rcWatcher?.dispose();
- jsonWatcher?.dispose();
- },
- };
+export function registerConfig(broker: ExtensionBrokerImpl): Disposable {
+ // On getInitialData, forcibly notifies the extension.
+ const getInitialDataRemoveListener = broker.on("getInitialData", () => {
+ notifyFirebaseConfig(broker);
+ });
+
+ // TODO handle deletion of .firebaserc/.firebase.json/firemat.yaml
+
+ return Disposable.from(
+ { dispose: getInitialDataRemoveListener },
+ registerFirebaseConfig(broker),
+ registerRc(broker),
+ );
}
/** @internal */
-export function _readRC(): RC | undefined {
- const configPath = _getConfigPath();
- if (!configPath) {
- return undefined;
- }
- try {
+export function _readRC(): Result {
+ return Result.guard(() => {
+ const configPath = getConfigPath();
+ if (!configPath) {
+ return undefined;
+ }
// RC.loadFile silences errors and returns a non-empty object if the rc file is
// missing. Let's load it ourselves.
@@ -92,33 +185,32 @@ export function _readRC(): RC | undefined {
const data = JSON.parse(json.toString());
return new RC(rcPath, data);
- } catch (e: any) {
- pluginLogger.error(e.message);
- throw e;
- }
+ });
}
/** @internal */
-export function _readConfig(): Config | undefined {
- const configPath = _getConfigPath();
- if (!configPath) {
- return undefined;
- }
- try {
- const json = Config.load({
+export function _readFirebaseConfig(): Result {
+ const result = Result.guard(() => {
+ const configPath = getConfigPath();
+ if (!configPath) {
+ return undefined;
+ }
+ const config = Config.load({
configPath: path.join(configPath, "firebase.json"),
});
- // "null" is non-reachable when specifying a configPath.
- // If the file is missing, load() will throw (even if "allowMissing" is true).
- return json!;
- } catch (e: any) {
- if (e.status === 404) {
+ if (!config) {
+ // Config.load may return null. We transform it to undefined.
return undefined;
- } else {
- pluginLogger.error(e.message);
- throw e;
}
+
+ return config;
+ });
+
+ if (result instanceof ResultError && (result.error as any).status === 404) {
+ return undefined;
}
+
+ return result;
}
/** @internal */
@@ -129,7 +221,7 @@ export function _createWatcher(file: string): FileSystemWatcher | undefined {
return workspace.value?.createFileSystemWatcher(
// Using RelativePattern enables tests to use watchers too.
- new vscode.RelativePattern(vscode.Uri.file(currentOptions.value.cwd), file),
+ new vscode.RelativePattern(vscode.Uri.file(currentOptions.value.cwd), file)
);
}
@@ -147,8 +239,7 @@ export function getRootFolders() {
return Array.from(new Set(folders));
}
-/** @internal */
-export function _getConfigPath(): string | undefined {
+export function getConfigPath(): string | undefined {
// Usually there's only one root folder unless someone is using a
// multi-root VS Code workspace.
// https://code.visualstudio.com/docs/editor/multi-root-workspaces
@@ -166,7 +257,5 @@ export function _getConfigPath(): string | undefined {
});
folder ??= rootFolders[0];
-
- currentOptions.value.cwd = folder;
return folder;
}
diff --git a/firebase-vscode/src/core/emulators.ts b/firebase-vscode/src/core/emulators.ts
index 0fb445963bf..68c8dfe0e32 100644
--- a/firebase-vscode/src/core/emulators.ts
+++ b/firebase-vscode/src/core/emulators.ts
@@ -4,12 +4,170 @@ import {
getEmulatorUiUrl,
listRunningEmulators,
stopEmulators,
+ getEmulatorDetails,
+ Emulators,
} from "../cli";
import { ExtensionBrokerImpl } from "../extension-broker";
+import { computed, effect, signal } from "@preact/signals-core";
+import {
+ DEFAULT_EMULATOR_UI_SELECTIONS,
+ ExtensionToWebviewParamsMap,
+} from "../../common/messaging/protocol";
+import { firebaseRC } from "./config";
+import { EmulatorUiSelections } from "../messaging/types";
+import { emulatorOutputChannel } from "../data-connect/emulator-stream";
+
+export class EmulatorsController implements Disposable {
+ constructor(private broker: ExtensionBrokerImpl) {
+ this.subscriptions.push(
+ broker.on("getEmulatorUiSelections", () =>
+ this.notifyUISelectionChangedListeners()
+ )
+ );
+ // Notify the UI of the emulator selections changes
+ this.subscriptions.push(
+ effect(() => {
+ // Listen for changes.
+ this.uiSelections.value;
+
+ // TODO(christhompson): Save UI selections in the current workspace.
+ // Requires context object.
+ this.notifyUISelectionChangedListeners();
+ })
+ );
+
+ this.subscriptions.push(
+ broker.on("getEmulatorInfos", () => this.notifyEmulatorStateChanged())
+ );
+ this.subscriptions.push(
+ effect(() => {
+ // Listen for changes.
+ this.emulators.value;
+
+ this.notifyEmulatorStateChanged();
+ })
+ );
+
+ this.subscriptions.push(
+ broker.on("updateEmulatorUiSelections", (uiSelections) => {
+ this.uiSelections.value = {
+ ...this.uiSelections.peek(),
+ ...uiSelections,
+ };
+ })
+ );
+
+ this.subscriptions.push(
+ broker.on("selectEmulatorImportFolder", async () => {
+ const options: vscode.OpenDialogOptions = {
+ canSelectMany: false,
+ openLabel: `Pick an import folder`,
+ title: `Pick an import folder`,
+ canSelectFiles: false,
+ canSelectFolders: true,
+ };
+ const fileUri = await vscode.window.showOpenDialog(options);
+ // Update the UI of the selection
+ if (!fileUri || fileUri.length < 1) {
+ vscode.window.showErrorMessage("Invalid import folder selected.");
+ return;
+ }
+ broker.send("notifyEmulatorImportFolder", {
+ folder: fileUri[0].fsPath,
+ });
+ })
+ );
+
+ this.subscriptions.push(
+ broker.on("launchEmulators", this.startEmulators.bind(this))
+ );
+ this.subscriptions.push(
+ broker.on("stopEmulators", this.stopEmulators.bind(this))
+ );
+
+ this.subscriptions.push(
+ effect(() => {
+ const projectId = firebaseRC.value?.tryReadValue?.projects?.default;
+ this.uiSelections.value = {
+ ...this.uiSelections.peek(),
+ projectId: this.getProjectIdForMode(
+ projectId,
+ this.uiSelections.peek().mode
+ ),
+ };
+ })
+ );
+ }
+
+ private readonly startCommand = vscode.commands.registerCommand(
+ "firebase.emulators.start",
+ this.startEmulators.bind(this)
+ );
+
+ private readonly stopCommand = vscode.commands.registerCommand(
+ "firebase.emulators.stop",
+ this.stopEmulators.bind(this)
+ );
+
+ // TODO(christhompson): Load UI selections from the current workspace.
+ // Requires context object.
+ readonly uiSelections = signal(DEFAULT_EMULATOR_UI_SELECTIONS);
+
+ readonly emulatorStates = computed(() => {
+ if (!this.areEmulatorsRunning.value) {
+ return undefined;
+ }
-export function registerEmulators(broker: ExtensionBrokerImpl): Disposable {
- broker.on("launchEmulators", async ({ emulatorUiSelections }) => {
- vscode.window.withProgress(
+ // TODO(rrousselGit) handle cases where one emulator is running,
+ // and a new one is started.
+ return listRunningEmulators();
+ });
+
+ readonly emulators = signal<
+ ExtensionToWebviewParamsMap["notifyEmulatorStateChanged"]
+ >({
+ status: "stopped",
+ infos: undefined,
+ });
+
+ readonly areEmulatorsRunning = computed(() => {
+ return this.emulators.value.status === "running";
+ });
+
+ private readonly subscriptions: (() => void)[] = [];
+
+ /**
+ * Formats a project ID with a demo prefix if we're in offline mode, or uses the
+ * regular ID if we're in hosting only mode.
+ */
+ private getProjectIdForMode(
+ projectId: string | undefined,
+ mode: EmulatorUiSelections["mode"]
+ ): string {
+ if (!projectId) {
+ return "demo-something";
+ }
+ if (mode === "hosting" || mode === "dataconnect") {
+ return projectId;
+ }
+ return "demo-" + projectId;
+ }
+
+ notifyUISelectionChangedListeners() {
+ this.broker.send(
+ "notifyEmulatorUiSelectionsChanged",
+ this.uiSelections.value
+ );
+ }
+
+ notifyEmulatorStateChanged() {
+ this.broker.send("notifyEmulatorStateChanged", this.emulators.value);
+ }
+
+ async startEmulators() {
+ const uiSelections = this.uiSelections.value;
+
+ return vscode.window.withProgress(
{
location: vscode.ProgressLocation.Window,
cancellable: false,
@@ -18,16 +176,53 @@ export function registerEmulators(broker: ExtensionBrokerImpl): Disposable {
async (progress) => {
progress.report({ increment: 0 });
try {
- await emulatorsStart(emulatorUiSelections);
- broker.send("notifyRunningEmulatorInfo", {
- uiUrl: getEmulatorUiUrl(),
- displayInfo: listRunningEmulators(),
- });
+ this.emulators.value = {
+ status: "starting",
+ infos: this.emulators.value.infos,
+ };
+ await emulatorsStart(uiSelections);
+ this.emulators.value = {
+ status: "running",
+ infos: {
+ uiUrl: getEmulatorUiUrl(),
+ displayInfo: listRunningEmulators(),
+ },
+ };
+
vscode.window.showInformationMessage(
"Firebase Extension: Emulators started successfully"
);
+
+ // data connect specifics; including temp logging implementation
+ if (
+ listRunningEmulators().filter((emulatorInfos) => {
+ emulatorInfos.name === Emulators.DATACONNECT;
+ })
+ ) {
+ const dataConnectEmulatorDetails = getEmulatorDetails(
+ Emulators.DATACONNECT
+ );
+
+ dataConnectEmulatorDetails.instance.stdout?.on("data", (data) => {
+ emulatorOutputChannel.appendLine("DEBUG: " + data.toString());
+ });
+ dataConnectEmulatorDetails.instance.stderr?.on("data", (data) => {
+ if (data.toString().includes("Finished reloading")) {
+ vscode.commands.executeCommand("fdc-graphql.restart");
+ vscode.commands.executeCommand(
+ "firebase.dataConnect.executeIntrospection"
+ );
+ } else {
+ emulatorOutputChannel.appendLine("ERROR: " + data.toString());
+ }
+ });
+ }
} catch (e) {
- broker.send("notifyEmulatorStartFailed");
+ this.emulators.value = {
+ status: "stopped",
+ infos: undefined,
+ };
+
vscode.window.showErrorMessage(
"Firebase Extension: Emulators start failed - " + e
);
@@ -35,10 +230,10 @@ export function registerEmulators(broker: ExtensionBrokerImpl): Disposable {
progress.report({ increment: 100 });
}
);
- });
+ }
- broker.on("stopEmulators", async () => {
- vscode.window.withProgress(
+ async stopEmulators() {
+ return vscode.window.withProgress(
{
location: vscode.ProgressLocation.Window,
cancellable: false,
@@ -47,8 +242,16 @@ export function registerEmulators(broker: ExtensionBrokerImpl): Disposable {
async (progress) => {
progress.report({ increment: 0 });
+ this.emulators.value = {
+ status: "stopping",
+ infos: this.emulators.value.infos,
+ };
await stopEmulators();
- broker.send("notifyEmulatorsStopped");
+ this.emulators.value = {
+ status: "stopped",
+ infos: undefined,
+ };
+
vscode.window.showInformationMessage(
"Firebase Extension: Emulators stopped successfully"
);
@@ -56,28 +259,12 @@ export function registerEmulators(broker: ExtensionBrokerImpl): Disposable {
progress.report({ increment: 100 });
}
);
- });
-
- broker.on("selectEmulatorImportFolder", async () => {
- const options: vscode.OpenDialogOptions = {
- canSelectMany: false,
- openLabel: `Pick an import folder`,
- title: `Pick an import folder`,
- canSelectFiles: false,
- canSelectFolders: true,
- };
- const fileUri = await vscode.window.showOpenDialog(options);
- // Update the UI of the selection
- if (!fileUri || fileUri.length < 1) {
- vscode.window.showErrorMessage("Invalid import folder selected.");
- return;
- }
- broker.send("notifyEmulatorImportFolder", { folder: fileUri[0].fsPath });
- });
+ }
- return {
- dispose: async () => {
- await stopEmulators();
- },
- };
+ dispose(): void {
+ this.stopEmulators();
+ this.subscriptions.forEach((subscription) => subscription());
+ this.startCommand.dispose();
+ this.stopCommand.dispose();
+ }
}
diff --git a/firebase-vscode/src/core/index.ts b/firebase-vscode/src/core/index.ts
index 3385a02f414..c1384f295c7 100644
--- a/firebase-vscode/src/core/index.ts
+++ b/firebase-vscode/src/core/index.ts
@@ -1,7 +1,7 @@
import vscode, { Disposable, ExtensionContext } from "vscode";
import { ExtensionBrokerImpl } from "../extension-broker";
import { registerConfig } from "./config";
-import { registerEmulators } from "./emulators";
+import { EmulatorsController } from "./emulators";
import { registerEnv } from "./env";
import { pluginLogger } from "../logger-wrapper";
import { getSettings } from "../utils/settings";
@@ -9,14 +9,15 @@ import { setEnabled } from "../../../src/experiments";
import { registerUser } from "./user";
import { registerProject } from "./project";
import { registerQuickstart } from "./quickstart";
+import { registerOptions } from "../options";
-export function registerCore({
+export async function registerCore({
broker,
context,
}: {
broker: ExtensionBrokerImpl;
context: ExtensionContext;
-}): Disposable {
+}): Promise<[EmulatorsController, vscode.Disposable]> {
const settings = getSettings();
if (settings.npmPath) {
@@ -39,15 +40,33 @@ export function registerCore({
vscode.env.openExternal(vscode.Uri.parse(href));
});
- return Disposable.from(
- registerConfig(broker),
- registerEmulators(broker),
- registerEnv(broker),
- registerUser(broker),
- registerProject({ context, broker }),
- registerQuickstart(broker),
- { dispose: sub1 },
- { dispose: sub2 },
- { dispose: sub3 }
- );
+ const sub4 = broker.on("runFirebaseInit", async () => {
+ vscode.tasks.executeTask(
+ new vscode.Task(
+ { type: "shell" }, // this is the same type as in tasks.json
+ vscode.workspace.workspaceFolders[0], // The workspace folder
+ "Firebase init", // how you name the task
+ "Firebase init", // Shows up as MyTask: name
+ new vscode.ShellExecution("firebase init"),
+ ),
+ );
+ });
+
+ const emulatorsController = new EmulatorsController(broker);
+ return [
+ emulatorsController,
+ Disposable.from(
+ emulatorsController,
+ registerOptions(context),
+ registerConfig(broker),
+ registerEnv(broker),
+ registerUser(broker),
+ registerProject(broker),
+ registerQuickstart(broker),
+ { dispose: sub1 },
+ { dispose: sub2 },
+ { dispose: sub3 },
+ { dispose: sub4 },
+ ),
+ ];
}
diff --git a/firebase-vscode/src/core/project.ts b/firebase-vscode/src/core/project.ts
index 9368f299276..6d9f65977e5 100644
--- a/firebase-vscode/src/core/project.ts
+++ b/firebase-vscode/src/core/project.ts
@@ -1,20 +1,18 @@
import vscode, { Disposable, ExtensionContext, QuickPickItem } from "vscode";
import { ExtensionBrokerImpl } from "../extension-broker";
import { computed, effect } from "@preact/signals-react";
-import { firebaseRC } from "./config";
+import { firebaseRC, updateFirebaseRCProject } from "./config";
import { FirebaseProjectMetadata } from "../types/project";
import { currentUser, isServiceAccount } from "./user";
import { listProjects } from "../cli";
import { pluginLogger } from "../logger-wrapper";
-import { selectProjectInMonospace } from "../../../src/monospace";
import { currentOptions } from "../options";
-import { updateFirebaseRCProject } from "../config-files";
import { globalSignal } from "../utils/globals";
import { firstWhereDefined } from "../utils/signal";
/** Available projects */
export const projects = globalSignal>(
- {}
+ {},
);
/** Currently selected project ID */
@@ -23,7 +21,7 @@ export const currentProjectId = globalSignal("");
const userScopedProjects = computed(
() => {
return projects.value[currentUser.value?.email ?? ""];
- }
+ },
);
/** Gets the currently selected project, fallback to first default project in RC file */
@@ -35,18 +33,17 @@ export const currentProject = computed(
}
const wantProjectId =
- currentProjectId.value || firebaseRC.value?.projects["default"];
+ currentProjectId.value ||
+ firebaseRC.value?.tryReadValue?.projects["default"];
+ if (!wantProjectId) {
+ return undefined;
+ }
+
return userScopedProjects.value?.find((p) => p.projectId === wantProjectId);
- }
+ },
);
-export function registerProject({
- context,
- broker,
-}: {
- context: ExtensionContext;
- broker: ExtensionBrokerImpl;
-}): Disposable {
+export function registerProject(broker: ExtensionBrokerImpl): Disposable {
const sub1 = effect(async () => {
const user = currentUser.value;
if (user) {
@@ -69,11 +66,18 @@ export function registerProject({
const sub3 = effect(() => {
const projectId = currentProjectId.value;
if (projectId) {
- updateFirebaseRCProject(context, "default", currentProjectId.value);
+ updateFirebaseRCProject("default", currentProjectId.value);
+ }
+ });
+
+ // Initialize currentProjectId to default project ID
+ const sub4 = effect(() => {
+ if (!currentProjectId.value) {
+ currentProjectId.value = firebaseRC.value?.tryReadValue?.projects.default;
}
});
- const sub4 = broker.on("getInitialData", () => {
+ const sub5 = broker.on("getInitialData", () => {
broker.send("notifyProjectChanged", {
projectId: currentProject.value?.projectId ?? "",
});
@@ -82,32 +86,7 @@ export function registerProject({
const command = vscode.commands.registerCommand(
"firebase.selectProject",
async () => {
- if (process.env.MONOSPACE_ENV) {
- pluginLogger.debug(
- "selectProject: found MONOSPACE_ENV, " +
- "prompting user using external flow"
- );
- /**
- * Monospace case: use Monospace flow
- */
- const monospaceExtension =
- vscode.extensions.getExtension("google.monospace");
- process.env.MONOSPACE_DAEMON_PORT =
- monospaceExtension.exports.getMonospaceDaemonPort();
- try {
- const projectId = await selectProjectInMonospace({
- projectRoot: currentOptions.value.cwd,
- project: undefined,
- isVSCE: true,
- });
-
- if (projectId) {
- currentProjectId.value = projectId;
- }
- } catch (e) {
- pluginLogger.error(e);
- }
- } else if (isServiceAccount.value) {
+ if (isServiceAccount.value) {
return;
} else {
try {
@@ -119,11 +98,11 @@ export function registerProject({
vscode.window.showErrorMessage(e.message);
}
}
- }
+ },
);
- const sub5 = broker.on("selectProject", () =>
- vscode.commands.executeCommand("firebase.selectProject")
+ const sub6 = broker.on("selectProject", () =>
+ vscode.commands.executeCommand("firebase.selectProject"),
);
return vscode.Disposable.from(
@@ -132,7 +111,8 @@ export function registerProject({
{ dispose: sub2 },
{ dispose: sub3 },
{ dispose: sub4 },
- { dispose: sub5 }
+ { dispose: sub5 },
+ { dispose: sub6 },
);
}
@@ -143,7 +123,7 @@ export function registerProject({
*/
export async function _promptUserForProject(
projects: Thenable,
- token?: vscode.CancellationToken
+ token?: vscode.CancellationToken,
): Promise {
const items = projects.then((projects) => {
return projects.map((p) => ({
diff --git a/firebase-vscode/src/core/user.ts b/firebase-vscode/src/core/user.ts
index ad4c1773981..4c5f2349e07 100644
--- a/firebase-vscode/src/core/user.ts
+++ b/firebase-vscode/src/core/user.ts
@@ -23,7 +23,16 @@ export const isServiceAccount = computed(() => {
return (currentUser.value as ServiceAccountUser)?.type === "service_account";
});
+export async function checkLogin() {
+ const accounts = await getAccounts();
+ users.value = accounts.reduce(
+ (cumm, curr) => ({ ...cumm, [curr.user.email]: curr.user }),
+ {}
+ );
+}
+
export function registerUser(broker: ExtensionBrokerImpl): Disposable {
+
const sub1 = effect(() => {
broker.send("notifyUsers", { users: Object.values(users.value) });
});
@@ -33,11 +42,7 @@ export function registerUser(broker: ExtensionBrokerImpl): Disposable {
});
const sub3 = broker.on("getInitialData", async () => {
- const accounts = await getAccounts();
- users.value = accounts.reduce(
- (cumm, curr) => ({ ...cumm, [curr.user.email]: curr.user }),
- {}
- );
+ checkLogin();
});
const sub4 = broker.on("addUser", async () => {
diff --git a/firebase-vscode/src/data-connect/ad-hoc-mutations.ts b/firebase-vscode/src/data-connect/ad-hoc-mutations.ts
new file mode 100644
index 00000000000..6c7663c47cc
--- /dev/null
+++ b/firebase-vscode/src/data-connect/ad-hoc-mutations.ts
@@ -0,0 +1,197 @@
+import vscode, { Disposable } from "vscode";
+import { DocumentNode, GraphQLInputObjectType, GraphQLScalarType, Kind, ObjectTypeDefinitionNode, buildClientSchema, buildSchema } from "graphql";
+import { checkIfFileExists, upsertFile } from "./file-utils";
+import { DataConnectService } from "./service";
+
+export function registerAdHoc(dataConnectService: DataConnectService): Disposable {
+ const defaultScalarValues = {
+ Any: "{}",
+ AuthUID: '""',
+ Boolean: "false",
+ Date: `"${new Date().toISOString().substring(0, 10)}"`,
+ Float: "0",
+ ID: '""',
+ Int: "0",
+ Int64: "0",
+ String: '""',
+ Timestamp: `"${new Date().toISOString()}"`,
+ Vector: "[]",
+ };
+
+ function isDataConnectScalarType(fieldType: string): boolean {
+ return fieldType in defaultScalarValues;
+ }
+
+ /**
+ * Creates a playground file with an ad-hoc mutation
+ * File will be created (unsaved) in operations/ folder, with an auto-generated named based on the schema type
+ * Mutation will be generated with all
+ * */
+ async function schemaReadData(
+ document: DocumentNode,
+ ast: ObjectTypeDefinitionNode,
+ ) {
+ // TODO(rrousselGit) - this is a temporary solution due to the lack of a "schema".
+ // As such, we hardcoded the list of allowed primitives.
+ // We should ideally refactor this to allow any scalar type.
+ const primitiveTypes = new Set([
+ "String",
+ "Int",
+ "Int64",
+ "Boolean",
+ "Date",
+ "Timestamp",
+ "Float",
+ "Any",
+ ]);
+
+ const basePath = vscode.workspace.rootPath + "/dataconnect/";
+ const filePath = vscode.Uri.file(`${basePath}${ast.name.value}_read.gql`);
+
+ // Recursively build a query for the object type.
+ // Returns undefined if the query is empty.
+ function buildRecursiveObjectQuery(
+ ast: ObjectTypeDefinitionNode,
+ level: number = 1,
+ ): string | undefined {
+ const indent = " ".repeat(level);
+
+ // Whether the query is non-empty. Used to determine whether to return undefined.
+ var hasField = false;
+ let query = "{\n";
+ for (const field of ast.fields) {
+ // We unwrap NonNullType to obtain the actual type
+ let fieldType = field.type;
+ if (fieldType.kind === Kind.NON_NULL_TYPE) {
+ fieldType = fieldType.type;
+ }
+
+ // Deference, for the sake of enabling TS to upcast to NamedType later
+ const targetType = fieldType;
+ if (targetType.kind === Kind.NAMED_TYPE) {
+ // Check if the type is a primitive type, such that no recursion is needed.
+ if (primitiveTypes.has(targetType.name.value)) {
+ query += ` ${indent}${field.name.value}\n`;
+ hasField = true;
+ continue;
+ }
+
+ // Check relational types.
+ // Since we lack a schema, we can only build queries for types that are defined in the same document.
+ const targetTypeDefinition = document.definitions.find(
+ (def) =>
+ def.kind === Kind.OBJECT_TYPE_DEFINITION &&
+ def.name.value === targetType.name.value,
+ ) as ObjectTypeDefinitionNode;
+
+ if (targetTypeDefinition) {
+ const subQuery = buildRecursiveObjectQuery(
+ targetTypeDefinition,
+ level + 1,
+ );
+ if (!subQuery) {
+ continue;
+ }
+ query += ` ${indent}${field.name.value} ${subQuery}\n`;
+ hasField = true;
+ }
+ }
+ }
+
+ query += `${indent}}`;
+ return query;
+ }
+
+ await upsertFile(filePath, () => {
+ const queryName = `${ast.name.value.charAt(0).toLowerCase()}${ast.name.value.slice(1)}s`;
+
+ return `
+# This is a file for you to write an un-named queries.
+# Only one un-named query is allowed per file.
+query {
+ ${queryName}${buildRecursiveObjectQuery(ast)!}
+}`;
+ });
+ }
+
+ /**
+ * Creates a playground file with an ad-hoc mutation
+ * File will be created (unsaved) in operations/ folder, with an auto-generated named based on the schema type
+ * Mutation will be generated with all
+ * */
+ async function schemaAddData(ast: ObjectTypeDefinitionNode) {
+ // generate content for the file
+ const preamble =
+ "# This is a file for you to write an un-named mutation. \n# Only one un-named mutation is allowed per file.";
+ const adhocMutation = await generateMutation(ast);
+ const content = [preamble, adhocMutation].join("\n");
+
+ const basePath = vscode.workspace.rootPath + "/dataconnect/";
+ const filePath = vscode.Uri.file(`${basePath}${ast.name.value}_insert.gql`);
+ const doesFileExist = await checkIfFileExists(filePath);
+
+ if (!doesFileExist) {
+ // opens unsaved text document with name "[mutationName]_insert.gql"
+
+ vscode.workspace
+ .openTextDocument(filePath.with({ scheme: "untitled" }))
+ .then((doc) => {
+ vscode.window.showTextDocument(doc).then((openDoc) => {
+ openDoc.edit((edit) => {
+ edit.insert(new vscode.Position(0, 0), content);
+ });
+ });
+ });
+ } else {
+ // Opens existing text document
+ vscode.workspace.openTextDocument(filePath).then((doc) => {
+ vscode.window.showTextDocument(doc);
+ });
+ }
+ }
+
+ async function generateMutation(
+ ast: ObjectTypeDefinitionNode,
+ ): Promise {
+ const introspect = (await dataConnectService.introspect())?.data;
+ const schema = buildClientSchema(introspect);
+
+ const name = ast.name.value;
+ const lowerCaseName =
+ ast.name.value.charAt(0).toLowerCase() + ast.name.value.slice(1);
+ const dataName = `${name}_Data`;
+ const mutationDataType: GraphQLInputObjectType = schema.getTypeMap()[dataName] as GraphQLInputObjectType;
+
+ // build mutation as string
+ const functionSpacing = "\t";
+ const fieldSpacing = "\t\t";
+ const mutation = [];
+ mutation.push("mutation {"); // mutation header
+ mutation.push(`${functionSpacing}${lowerCaseName}_insert(data: {`);
+ for (const [fieldName, field] of Object.entries(mutationDataType.getFields())) {
+ // necessary to avoid type error
+ const fieldtype: any = field.type;
+ // use all argument types that are of scalar, except x_expr
+ if (isDataConnectScalarType(fieldtype.name) && !field.name.includes("_expr")) {
+ const defaultValue = defaultScalarValues[fieldtype.name] || "";
+ mutation.push(
+ `${fieldSpacing}${fieldName}: ${defaultValue} # ${fieldtype.name}`,
+ ); // field name + temp value + comment
+ }
+
+ }
+ mutation.push(`${functionSpacing}})`, "}"); // closing braces/paren
+ return mutation.join("\n");
+ }
+
+ return Disposable.from(
+ vscode.commands.registerCommand(
+ "firebase.dataConnect.schemaAddData",
+ schemaAddData,
+ ),
+ vscode.commands.registerCommand(
+ "firebase.dataConnect.schemaReadData",
+ schemaReadData,
+ ),
+ );
+}
diff --git a/firebase-vscode/src/data-connect/code-lens-provider.ts b/firebase-vscode/src/data-connect/code-lens-provider.ts
new file mode 100644
index 00000000000..917818120f2
--- /dev/null
+++ b/firebase-vscode/src/data-connect/code-lens-provider.ts
@@ -0,0 +1,171 @@
+import * as vscode from "vscode";
+import { Kind, parse } from "graphql";
+import { OperationLocation } from "./types";
+import { Disposable } from "vscode";
+
+import { Signal } from "@preact/signals-core";
+import { dataConnectConfigs, firebaseRC } from "./config";
+import { InstanceType } from "./emulators-status";
+import { EmulatorsController } from "../core/emulators";
+
+abstract class ComputedCodeLensProvider implements vscode.CodeLensProvider {
+ private readonly _onChangeCodeLensesEmitter = new vscode.EventEmitter();
+ onDidChangeCodeLenses = this._onChangeCodeLensesEmitter.event;
+
+ private readonly subscriptions: Map, Disposable> = new Map();
+
+ watch(signal: Signal): T {
+ if (!this.subscriptions.has(signal)) {
+ let initialFire = true;
+ const disposable = signal.subscribe(() => {
+ // Signals notify their listeners immediately, even if no change were detected.
+ // This is undesired here as such notification would be picked up by vscode,
+ // triggering an infinite reload loop of the codelenses.
+ // We therefore skip this notification and only keep actual "change" notifications
+ if (initialFire) {
+ initialFire = false;
+ return;
+ }
+
+ this._onChangeCodeLensesEmitter.fire();
+ });
+
+ this.subscriptions.set(signal, { dispose: disposable });
+ }
+
+ return signal.peek();
+ }
+
+ dispose() {
+ for (const disposable of this.subscriptions.values()) {
+ disposable.dispose();
+ }
+ this.subscriptions.clear();
+ }
+
+ abstract provideCodeLenses(
+ document: vscode.TextDocument,
+ token: vscode.CancellationToken
+ ): vscode.CodeLens[];
+}
+
+/**
+ * CodeLensProvider provides codelens for actions in graphql files.
+ */
+export class OperationCodeLensProvider extends ComputedCodeLensProvider {
+ constructor(readonly emulatorsController: EmulatorsController) {
+ super();
+ }
+
+ provideCodeLenses(
+ document: vscode.TextDocument,
+ token: vscode.CancellationToken
+ ): vscode.CodeLens[] {
+ // Wait for configs to be loaded and emulator to be running
+ const fdcConfigs = this.watch(dataConnectConfigs)?.tryReadValue;
+ const rc = this.watch(firebaseRC)?.tryReadValue;
+ if (!fdcConfigs || !rc) {
+ return [];
+ }
+
+ const codeLenses: vscode.CodeLens[] = [];
+
+ const documentText = document.getText();
+ // TODO: replace w/ online-parser to work with malformed documents
+ const documentNode = parse(documentText);
+
+ for (let i = 0; i < documentNode.definitions.length; i++) {
+ const x = documentNode.definitions[i];
+ if (x.kind === Kind.OPERATION_DEFINITION && x.loc) {
+ const line = x.loc.startToken.line - 1;
+ const range = new vscode.Range(line, 0, line, 0);
+ const position = new vscode.Position(line, 0);
+ const operationLocation: OperationLocation = {
+ document: documentText,
+ documentPath: document.fileName,
+ position: position,
+ };
+ const service = fdcConfigs.findEnclosingServiceForPath(
+ document.fileName
+ );
+
+ if (service) {
+ codeLenses.push(
+ new vscode.CodeLens(range, {
+ title: `$(play) Run (local)`,
+ command: "firebase.dataConnect.executeOperation",
+ tooltip: "Execute the operation (⌘+enter or Ctrl+Enter)",
+ arguments: [x, operationLocation, InstanceType.LOCAL],
+ })
+ );
+
+ codeLenses.push(
+ new vscode.CodeLens(range, {
+ title: `$(play) Run (Production – Project: ${rc.projects.default})`,
+ command: "firebase.dataConnect.executeOperation",
+ tooltip: "Execute the operation (⌘+enter or Ctrl+Enter)",
+ arguments: [x, operationLocation, InstanceType.PRODUCTION],
+ })
+ );
+ }
+ }
+ }
+
+ return codeLenses;
+ }
+}
+
+/**
+ * CodeLensProvider for actions on the schema file
+ */
+export class SchemaCodeLensProvider extends ComputedCodeLensProvider {
+ constructor(readonly emulatorsController: EmulatorsController) {
+ super();
+ }
+
+ provideCodeLenses(
+ document: vscode.TextDocument,
+ token: vscode.CancellationToken
+ ): vscode.CodeLens[] {
+ if (!this.watch(this.emulatorsController.areEmulatorsRunning)) {
+ return [];
+ }
+
+ const codeLenses: vscode.CodeLens[] = [];
+
+ // TODO: replace w/ online-parser to work with malformed documents
+ const documentNode = parse(document.getText());
+
+ for (const x of documentNode.definitions) {
+ if (x.kind === Kind.OBJECT_TYPE_DEFINITION && x.loc) {
+ const line = x.loc.startToken.line - 1;
+ const range = new vscode.Range(line, 0, line, 0);
+ const position = new vscode.Position(line, 0);
+ const schemaLocation = {
+ documentPath: document.fileName,
+ position: position,
+ };
+
+ codeLenses.push(
+ new vscode.CodeLens(range, {
+ title: `$(database) Add data`,
+ command: "firebase.dataConnect.schemaAddData",
+ tooltip: "Generate a mutation to add data of this type",
+ arguments: [x, schemaLocation],
+ })
+ );
+
+ codeLenses.push(
+ new vscode.CodeLens(range, {
+ title: `$(database) Read data`,
+ command: "firebase.dataConnect.schemaReadData",
+ tooltip: "Generate a query to read data of this type",
+ arguments: [documentNode, x],
+ })
+ );
+ }
+ }
+
+ return codeLenses;
+ }
+}
diff --git a/firebase-vscode/src/data-connect/config.ts b/firebase-vscode/src/data-connect/config.ts
new file mode 100644
index 00000000000..2821ebd1a18
--- /dev/null
+++ b/firebase-vscode/src/data-connect/config.ts
@@ -0,0 +1,210 @@
+import { isPathInside } from "./file-utils";
+import { DeepReadOnly } from "../metaprogramming";
+import { ConnectorYaml, DataConnectYaml } from "../dataconnect/types";
+import { Result, ResultError, ResultValue } from "../result";
+import { globalSignal } from "../utils/globals";
+import { computed, effect, signal } from "@preact/signals-core";
+import {
+ _createWatcher as createWatcher,
+ firebaseConfig,
+ getConfigPath,
+} from "../core/config";
+import * as vscode from "vscode";
+import * as promise from "../utils/promise";
+import {
+ readConnectorYaml,
+ readDataConnectYaml,
+ readFirebaseJson as readFdcFirebaseJson,
+} from "../../../src/dataconnect/fileUtils";
+import { Config } from "../config";
+import { DataConnectConfig, DataConnectMultiple } from "../firebaseConfig";
+import path from "path";
+
+export * from "../core/config";
+
+export const dataConnectConfigs = signal<
+ Result | undefined
+>(undefined);
+
+export function registerDataConnectConfigs(): vscode.Disposable {
+ let cancel: () => void | undefined;
+
+ function handleResult(
+ firebaseConfig: Result | undefined,
+ ) {
+ cancel?.();
+ cancel = undefined;
+
+ // While waiting for the promise to resolve, we clear the configs, to tell anything that depends
+ // on it that it's loading.
+ dataConnectConfigs.value = undefined;
+
+ const configs = firebaseConfig?.followAsync(
+ async (config) =>
+ new ResultValue(
+ await _readDataConnectConfigs(readFdcFirebaseJson(config)),
+ ),
+ );
+
+ cancel =
+ configs &&
+ promise.cancelableThen(
+ configs,
+ (configs) => (dataConnectConfigs.value = configs.tryReadValue),
+ ).cancel;
+ }
+
+ const sub = effect(() => handleResult(firebaseConfig.value));
+
+ const dataConnectWatcher = createWatcher("**/{dataconnect,connector}.yaml");
+ dataConnectWatcher?.onDidChange(() => handleResult(firebaseConfig.value));
+ dataConnectWatcher?.onDidCreate(() => handleResult(firebaseConfig.value));
+ dataConnectWatcher?.onDidDelete(() => handleResult(undefined));
+ // TODO watch connectors
+
+ return vscode.Disposable.from(
+ { dispose: sub },
+ { dispose: () => cancel?.() },
+ dataConnectWatcher,
+ );
+}
+
+/** @internal */
+export async function _readDataConnectConfigs(
+ fdcConfig: DataConnectMultiple,
+): Promise> {
+ return Result.guard(async () => {
+ const dataConnects = await Promise.all(
+ fdcConfig.map>(async (dataConnect) => {
+ // Paths may be relative to the firebase.json file.
+ const absoluteLocation = asAbsolutePath(
+ dataConnect.source,
+ getConfigPath(),
+ );
+ const dataConnectYaml = await readDataConnectYaml(absoluteLocation);
+ const resolvedConnectors = await Promise.all(
+ dataConnectYaml.connectorDirs.map((connectorDir) =>
+ Result.guard(async () => {
+ const connectorYaml = await readConnectorYaml(
+ // Paths may be relative to the dataconnect.yaml
+ asAbsolutePath(connectorDir, absoluteLocation),
+ );
+ return new ResolvedConnectorYaml(
+ asAbsolutePath(connectorDir, absoluteLocation),
+ connectorYaml,
+ );
+ }),
+ ),
+ );
+ return new ResolvedDataConnectConfig(
+ absoluteLocation,
+ dataConnectYaml,
+ resolvedConnectors,
+ dataConnect.location,
+ );
+ }),
+ );
+ return new ResolvedDataConnectConfigs(dataConnects);
+ });
+}
+
+function asAbsolutePath(relativePath: string, from: string): string {
+ return path.normalize(path.join(from, relativePath));
+}
+
+export class ResolvedConnectorYaml {
+ constructor(
+ readonly path: string,
+ readonly value: DeepReadOnly
+ ) {}
+
+ containsPath(path: string) {
+ return isPathInside(path, this.path);
+ }
+}
+
+export class ResolvedDataConnectConfig {
+ constructor(
+ readonly path: string,
+ readonly value: DeepReadOnly,
+ readonly resolvedConnectors: Result[],
+ readonly dataConnectLocation: string,
+ ) {}
+
+ get connectorIds(): string[] {
+ const result: string[] = [];
+
+ for (const connector of this.resolvedConnectors) {
+ const id = connector.tryReadValue?.value.connectorId;
+ if (id) {
+ result.push(id);
+ }
+ }
+
+ return result;
+ }
+
+ get connectorDirs(): string[] {
+ return this.value.connectorDirs;
+ }
+
+ get schemaDir(): string {
+ return this.value.schema.source;
+ }
+
+ get relativePath(): string {
+ return this.path.split("/").pop();
+ }
+
+ get relativeSchemaPath(): string {
+ return this.schemaDir.replace(".", this.relativePath);
+ }
+
+ get relativeConnectorPaths(): string[] {
+ return this.connectorDirs.map((connectorDir) => connectorDir.replace(".", this.relativePath));
+ }
+
+ containsPath(path: string) {
+ return isPathInside(path, this.path);
+ }
+
+ findEnclosingConnectorForPath(filePath: string) {
+ return this.resolvedConnectors.find(
+ (connector) => connector.tryReadValue?.containsPath(filePath) ?? false,
+ );
+ }
+}
+
+/** The fully resolved `dataconnect.yaml` and its connectors */
+export class ResolvedDataConnectConfigs {
+ constructor(readonly values: DeepReadOnly) {}
+
+ get serviceIds() {
+ return this.values.map((config) => config.value.serviceId);
+ }
+
+ get allConnectors() {
+ return this.values.flatMap((dc) => dc.resolvedConnectors);
+ }
+
+ findById(serviceId: string) {
+ return this.values.find((dc) => dc.value.serviceId === serviceId);
+ }
+
+ findEnclosingServiceForPath(filePath: string) {
+ return this.values.find((dc) => dc.containsPath(filePath));
+ }
+
+ getApiServicePathByPath(projectId: string, path: string) {
+ const dataConnectConfig = this.findEnclosingServiceForPath(path);
+ const serviceId = dataConnectConfig.value.serviceId;
+ const locationId = dataConnectConfig.dataConnectLocation;
+
+ return `projects/${projectId}/locations/${locationId}/services/${serviceId}`;
+ }
+}
+
+// TODO: Expand this into a VSCode env config object/class
+export enum VSCODE_ENV_VARS {
+ DATA_CONNECT_ORIGIN = "FIREBASE_DATACONNECT_URL",
+}
diff --git a/firebase-vscode/src/data-connect/connectors.ts b/firebase-vscode/src/data-connect/connectors.ts
new file mode 100644
index 00000000000..d6baf53d0cf
--- /dev/null
+++ b/firebase-vscode/src/data-connect/connectors.ts
@@ -0,0 +1,516 @@
+import vscode, {
+ Disposable,
+ ExtensionContext,
+ InputBoxValidationMessage,
+ InputBoxValidationSeverity,
+} from "vscode";
+import { ExtensionBrokerImpl } from "../extension-broker";
+import {
+ ASTNode,
+ ArgumentNode,
+ ConstValueNode,
+ DocumentNode,
+ GraphQLInputType,
+ GraphQLLeafType,
+ GraphQLNonNull,
+ IntrospectionQuery,
+ Kind,
+ NamedTypeNode,
+ ObjectFieldNode,
+ OperationDefinitionNode,
+ Source,
+ TypeInfo,
+ TypeNode,
+ VariableNode,
+ buildClientSchema,
+ isConstValueNode,
+ isEnumType,
+ isLeafType,
+ isNonNullType,
+ parse,
+ print,
+ separateOperations,
+ visit,
+ visitWithTypeInfo,
+} from "graphql";
+import { camelCase } from "lodash";
+import { DataConnectService } from "./service";
+import { OperationLocation } from "./types";
+import { checkIfFileExists } from "./file-utils";
+import * as path from "path";
+
+export function registerConnectors(
+ context: ExtensionContext,
+ broker: ExtensionBrokerImpl,
+ dataConnectService: DataConnectService
+): Disposable {
+ async function moveOperationToConnector(
+ defIndex: number, // The index of the definition to move.
+ { documentPath, document }: OperationLocation,
+ connectorPath: string
+ ) {
+ const ast = parse(new Source(document, documentPath));
+
+ const def = ast.definitions[defIndex];
+ if (!def) {
+ throw new Error(`definitions[${defIndex}] not found.`);
+ }
+ if (def.kind !== Kind.OPERATION_DEFINITION) {
+ throw new Error(`definitions[${defIndex}] is not an operation.`);
+ }
+ const introspect = (await dataConnectService.introspect())?.data;
+ if (!introspect) {
+ vscode.window.showErrorMessage(
+ "Failed to introspect the types. (Is the emulator running?)"
+ );
+ return;
+ }
+ const opKind = def.operation as string; // query or mutation
+
+ let opName = def.name?.value;
+ if (!opName || (await validateOpName(opName)) !== null) {
+ opName = await vscode.window.showInputBox({
+ title: `Pick a name for the ${opKind}`,
+ placeHolder: `e.g. ${camelCase("my-" + opKind)}`,
+ prompt: `Name of the ${opKind} (to be used with SDKs).`,
+ value: opName || suggestOpName(def, documentPath),
+ validateInput: validateOpName,
+ });
+
+ if (!opName) {
+ return; // Dialog dismissed by the developer.
+ }
+ }
+
+ // While `parse` above tolerates operations with duplicate names (or
+ // multiple anonymous operations), `separateOperations` will misbehave.
+ // So we reassign the names to be all unique just in case.
+ let i = 0;
+ const opAst = separateOperations(
+ visit(ast, {
+ OperationDefinition(node) {
+ i++;
+ return {
+ ...node,
+ name: {
+ kind: Kind.NAME,
+ value: node === def ? opName : `ignored${i}`,
+ },
+ };
+ },
+ })
+ )[opName];
+ // opAst contains only the operation we care about plus fragments used.
+ if (!opAst) {
+ throw new Error("Error separating operations.");
+ }
+
+ const candidates = findExtractCandidates(opAst, introspect);
+
+ const picked = await vscode.window.showQuickPick(candidates, {
+ title: `Extract variables that can be modified by clients`,
+ placeHolder: `(type to filter...)`,
+ canPickMany: true,
+ ignoreFocusOut: true,
+ });
+
+ if (!picked) {
+ return; // Dialog dismissed by the developer.
+ }
+
+ const newAst = extractVariables(opAst, picked);
+ const content = print(newAst);
+ const filePath = getFilePath(opName);
+
+ vscode.workspace
+ .openTextDocument(filePath.with({ scheme: "untitled" }))
+ .then((doc) => {
+ vscode.window.showTextDocument(doc).then((openDoc) => {
+ openDoc.edit((edit) => {
+ edit.insert(new vscode.Position(0, 0), content);
+ });
+ });
+ });
+
+ // TODO: Consider removing the operation from the original document?
+
+ vscode.window.showInformationMessage(
+ `Moved ${opName} to ${vscode.workspace.asRelativePath(filePath)}`
+ );
+
+ async function validateOpName(
+ value: string
+ ): Promise {
+ if (!value) {
+ return {
+ severity: InputBoxValidationSeverity.Error,
+ message: `A name is required for each ${opKind} in a connector.`,
+ };
+ }
+ // TODO: Check if an operation with the same name exists in basePath.
+ const fp = getFilePath(value);
+
+ if (await checkIfFileExists(fp)) {
+ return {
+ // We're treating this as fatal under the assumption that the file may
+ // contain an operation with the same name. Once we can actually rule
+ // out naming conflicts above, we should handle this better, such as
+ // appending to that file or choosing a different file like xxx2.gql.
+ severity: InputBoxValidationSeverity.Error,
+ message: `${vscode.workspace.asRelativePath(fp)} already exists.`,
+ };
+ }
+ }
+
+ function getFilePath(opName: string) {
+ return vscode.Uri.file(path.join(connectorPath, `${opName}.gql`));
+ }
+ }
+
+ function suggestOpName(ast: OperationDefinitionNode, documentPath: string) {
+ if (documentPath) {
+ // Suggest name from basename (e.g. /foo/bar/baz_quax.gql => bazQuax).
+ const match = documentPath.match(/([^./\\]+)\./);
+ if (match) {
+ return camelCase(match[1]);
+ }
+ }
+ for (const sel of ast.selectionSet.selections) {
+ if (sel.kind === Kind.FIELD) {
+ // Suggest name from the first field (e.g. foo_insert => fooInsert).
+ return camelCase(sel.name.value);
+ }
+ }
+ return camelCase(`my-${ast.operation}-${Math.floor(Math.random() * 100)}`);
+ }
+
+ function findExtractCandidates(
+ ast: DocumentNode,
+ introspect: IntrospectionQuery
+ ): ExtractCandidate[] {
+ const candidates: ExtractCandidate[] = [];
+ const seenVarNames = new Set();
+ visit(ast, {
+ VariableDefinition(node) {
+ seenVarNames.add(node.variable.name.value);
+ },
+ });
+ // TODO: Make this work for inline and non-inline fragments.
+ const fieldPath: string[] = [];
+ let directiveName: string | undefined = undefined;
+ let argName: string | undefined = undefined;
+ const valuePath: string[] = [];
+ const schema = buildClientSchema(introspect, { assumeValid: true });
+ const typeInfo = new TypeInfo(schema);
+ // Visits operations as well as fragments.
+ visit(
+ ast,
+ visitWithTypeInfo(typeInfo, {
+ VariableDefinition() {
+ // Do not extract literals in variable default values or directives.
+ return false;
+ },
+ Directive: {
+ enter(node) {
+ if (node.name.value === "auth") {
+ // Auth should not be modifiable by clients.
+ return false;
+ }
+ // @skip(if: $boolVar) and @include(if: $boolVar) are actually good
+ // targets to extract. We may want to revisit when Data Connect adds more
+ // field-level directives.
+ directiveName = node.name.value;
+ },
+ leave() {
+ directiveName = undefined;
+ },
+ },
+ Field: {
+ enter(node) {
+ fieldPath.push((node.alias ?? node.name).value);
+ },
+ leave() {
+ fieldPath.pop();
+ },
+ },
+ Argument: {
+ enter(node) {
+ if (argName) {
+ // This should be impossible to reach.
+ throw new Error(
+ `Found Argument within Argument: (${argName} > ${node.name.value}).`
+ );
+ }
+ argName = node.name.value;
+ const arg = typeInfo.getArgument();
+ if (!arg) {
+ throw new Error(
+ `Cannot resolve argument type for ${displayPath(
+ fieldPath,
+ directiveName,
+ argName
+ )}.`
+ );
+ }
+ if (addCandidate(node, arg.type)) {
+ argName = undefined;
+ return false; // Skip extracting parts of this argument.
+ }
+ },
+ leave() {
+ argName = undefined;
+ },
+ },
+ ObjectField: {
+ enter(node) {
+ valuePath.push(node.name.value);
+ const input = typeInfo.getInputType();
+ if (!input) {
+ // This may happen if a scalar (such as JSON) type has a value of
+ // a nested structure (objects / lists). We cannot infer the
+ // actual required "type" of the sub-structure in this case.
+ return false;
+ }
+ if (addCandidate(node, input)) {
+ valuePath.pop();
+ return false; // Skip extracting fields within this object.
+ }
+ },
+ leave() {
+ valuePath.pop();
+ },
+ },
+ ListValue: {
+ enter() {
+ // We don't know how to extract repeated variables yet.
+ // Exception: A key scalar may be extracted as a whole even if its
+ // value is in array format. Those cases are handled by the scalar
+ // checks in Argument and ObjectField and should never reach here.
+ return false;
+ },
+ },
+ })
+ );
+ return candidates;
+
+ function addCandidate(
+ node: ObjectFieldNode | ArgumentNode,
+ type: GraphQLInputType
+ ): boolean {
+ if (!isConstValueNode(node.value)) {
+ return false;
+ }
+ if (!isExtractableType(type)) {
+ return false;
+ }
+ const varName = suggestVarName(
+ seenVarNames,
+ fieldPath,
+ directiveName,
+ argName,
+ valuePath
+ );
+ seenVarNames.add(varName);
+ candidates.push({
+ defaultValue: node.value,
+ parentNode: node,
+ varName,
+ type,
+ label: "$" + varName,
+ description: `: ${type} = ${print(node.value)}`,
+ detail: displayPath(
+ fieldPath,
+ directiveName,
+ argName,
+ valuePath,
+ "$" + varName
+ ),
+ // Typical enums such as OrderBy are unlikely to be made variables.
+ // Similarly, null literals aren't usually meant to be changed.
+ picked: !isEnumType(type) && node.value.kind !== Kind.NULL,
+ });
+ return true;
+ }
+ }
+
+ function extractVariables(
+ opAst: DocumentNode,
+ picked: ExtractCandidate[]
+ ): DocumentNode {
+ const pickedByParent = new Map();
+ for (const p of picked) {
+ pickedByParent.set(p.parentNode, p);
+ }
+
+ return visit(opAst, {
+ enter(node) {
+ const extract = pickedByParent.get(node);
+ if (extract) {
+ const newVal: VariableNode = {
+ kind: Kind.VARIABLE,
+ name: {
+ kind: Kind.NAME,
+ value: extract.varName,
+ },
+ };
+ return { ...node, value: newVal };
+ }
+ },
+ OperationDefinition: {
+ leave(node) {
+ const variableDefinitions = [...node.variableDefinitions];
+ for (const extract of picked) {
+ variableDefinitions.push({
+ kind: Kind.VARIABLE_DEFINITION,
+ variable: {
+ kind: Kind.VARIABLE,
+ name: {
+ kind: Kind.NAME,
+ value: extract.varName,
+ },
+ },
+ defaultValue:
+ extract.defaultValue.kind === Kind.NULL
+ ? undefined // Omit `= null`.
+ : extract.defaultValue,
+ type: toTypeNode(extract.type),
+ });
+ }
+ const directives = [...node.directives];
+ directives.push({
+ kind: Kind.DIRECTIVE,
+ name: {
+ kind: Kind.NAME,
+ value: "auth",
+ },
+ arguments: [
+ {
+ kind: Kind.ARGUMENT,
+ name: {
+ kind: Kind.NAME,
+ value: "level",
+ },
+ value: {
+ kind: Kind.ENUM,
+ value: "PUBLIC",
+ },
+ },
+ ],
+ });
+ return { ...node, variableDefinitions, directives };
+ },
+ },
+ });
+ }
+
+ function displayPath(
+ fieldPath: string[],
+ directiveName?: string,
+ argName?: string,
+ valuePath?: string[],
+ valueDisp = ""
+ ): string {
+ let fieldDisp = fieldPath.join(".");
+ if (directiveName) {
+ fieldDisp += ` @${directiveName}`;
+ }
+ if (!argName) {
+ return fieldDisp;
+ }
+ if (valuePath) {
+ // or {foo: } or {parent: {foo: }} or so on.
+ for (let i = valuePath.length - 1; i >= 0; i--) {
+ valueDisp = `{${valuePath[i]}: ${valueDisp}}`;
+ }
+ valueDisp = " " + valueDisp;
+ } else {
+ valueDisp = "";
+ }
+ return fieldDisp + `(${argName}:${valueDisp})`;
+ }
+
+ function suggestVarName(
+ seenVarNames: Set,
+ fieldPath: string[],
+ directiveName?: string,
+ argName?: string,
+ valuePath?: string[]
+ ): string {
+ const path = [...fieldPath];
+ if (argName) {
+ path.push(argName);
+ }
+ if (directiveName) {
+ path.push(directiveName);
+ }
+ if (valuePath) {
+ path.push(...valuePath);
+ }
+ // Consider all path segments (starting from the local name) and keep adding
+ // more prefixes or numbers. e.g., for `foo_insert(data: {id: })`:
+ // $id => $dataId => $fooInsertDataId => $fooInsertDataId2, in that order.
+ let varName = path[path.length - 1];
+ for (let i = path.length - 2; i >= 0; i--) {
+ if (seenVarNames.has(varName)) {
+ varName = camelCase(`${path[i]}-${varName}`);
+ }
+ }
+ if (seenVarNames.has(varName)) {
+ for (let i = 2; i < 100; i++) {
+ if (!seenVarNames.has(varName + i.toString())) {
+ varName += i.toString();
+ break;
+ }
+ }
+ // In the extremely rare case, we may reach here and the variable name
+ // may be already taken and we'll let the developer resolve this problem.
+ }
+ return varName;
+ }
+
+ return Disposable.from(
+ vscode.commands.registerCommand(
+ "firebase.dataConnect.moveOperationToConnector",
+ moveOperationToConnector
+ )
+ );
+}
+
+interface ExtractCandidate extends vscode.QuickPickItem {
+ defaultValue: ConstValueNode;
+ parentNode: ArgumentNode | ObjectFieldNode;
+ varName: string;
+ type: ExtractableType;
+}
+
+type ExtractableType = GraphQLLeafType | GraphQLNonNull;
+
+function isExtractableType(type: unknown): type is ExtractableType {
+ if (isNonNullType(type)) {
+ type = type.ofType;
+ }
+ if (isLeafType(type)) {
+ return true;
+ }
+ return false;
+}
+
+function toTypeNode(type: ExtractableType): TypeNode {
+ if (isNonNullType(type)) {
+ return {
+ kind: Kind.NON_NULL_TYPE,
+ type: toNamedTypeNode(type.ofType),
+ };
+ }
+ return toNamedTypeNode(type);
+}
+
+function toNamedTypeNode(type: GraphQLLeafType): NamedTypeNode {
+ return {
+ kind: Kind.NAMED_TYPE,
+ name: {
+ kind: Kind.NAME,
+ value: type.name,
+ },
+ };
+}
diff --git a/firebase-vscode/src/data-connect/core-compiler.ts b/firebase-vscode/src/data-connect/core-compiler.ts
new file mode 100644
index 00000000000..1379526452a
--- /dev/null
+++ b/firebase-vscode/src/data-connect/core-compiler.ts
@@ -0,0 +1,140 @@
+import * as vscode from "vscode";
+import { Range, DiagnosticSeverity, Diagnostic, Uri, Position } from "vscode";
+import fetch from "node-fetch";
+import { GraphQLError } from "graphql";
+import { Observable, of } from "rxjs";
+import { backOff } from "exponential-backoff";
+import { ResolvedDataConnectConfigs, dataConnectConfigs } from "./config";
+import { DataConnectConfig } from "../firebaseConfig";
+
+type DiagnosticTuple = [Uri, Diagnostic[]];
+type CompilerResponse = { result?: { errors?: GraphQLError[] } };
+
+const fdcDiagnosticCollection =
+ vscode.languages.createDiagnosticCollection("Dataconnect");
+/**
+ *
+ * @param fdcEndpoint FDC Emulator endpoint
+ */
+export async function runDataConnectCompiler(
+ configs: ResolvedDataConnectConfigs,
+ fdcEndpoint: string,
+) {
+ const obsErrors = await getCompilerStream(configs, fdcEndpoint);
+ const obsConverter = {
+ next(nextCompilerResponse: CompilerResponse) {
+ if (nextCompilerResponse.result && nextCompilerResponse.result.errors) {
+ fdcDiagnosticCollection.clear();
+ const diagnostics = convertGQLErrorToDiagnostic(
+ configs,
+ nextCompilerResponse.result.errors,
+ );
+ fdcDiagnosticCollection.set(diagnostics);
+ }
+ },
+ error(e: Error) {
+ console.log("Stream closed with: ", e);
+ },
+ complete() {
+ console.log("Stream Closed");
+ },
+ };
+ obsErrors.subscribe(obsConverter);
+}
+
+function convertGQLErrorToDiagnostic(
+ configs: ResolvedDataConnectConfigs,
+ gqlErrors: GraphQLError[],
+): DiagnosticTuple[] {
+ const perFileDiagnostics = {};
+ const dcPath = configs.values[0].path;
+ for (const error of gqlErrors) {
+ const absFilePath = `${dcPath}/${error.extensions["file"]}`;
+ const perFileDiagnostic = perFileDiagnostics[absFilePath] || [];
+ perFileDiagnostic.push({
+ source: "Firebase Data Connect: Compiler",
+ message: error.message,
+ severity: DiagnosticSeverity.Error,
+ range: locationToRange(error.locations[0]),
+ } as Diagnostic);
+ perFileDiagnostics[absFilePath] = perFileDiagnostic;
+ }
+ return Object.keys(perFileDiagnostics).map((key) => {
+ return [
+ Uri.file(key),
+ perFileDiagnostics[key] as Diagnostic[],
+ ] as DiagnosticTuple;
+ });
+}
+
+// Basic conversion from GraphQLError.SourceLocation to Range
+function locationToRange(location: { line: number; column: number }): Range {
+ const pos1 = new Position(location["line"] - 1, location["column"]);
+ const pos2 = new Position(location["line"] - 1, location["column"]);
+ return new Range(pos1, pos2);
+}
+
+/**
+ * Calls the DataConnect.StreamCompileErrors api.
+ * Converts ReadableStream into Observable
+ * */
+
+export async function getCompilerStream(
+ configs: ResolvedDataConnectConfigs,
+ dataConnectEndpoint: string,
+): Promise> {
+ try {
+ // TODO: eventually support multiple services
+ const serviceId = configs.serviceIds[0];
+ const resp = await backOff(() =>
+ fetch(
+ dataConnectEndpoint + `/emulator/stream_errors?serviceId=${serviceId}`,
+ {
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ "x-mantle-admin": "all",
+ },
+ },
+ ),
+ );
+
+ function fromStream(
+ stream: NodeJS.ReadableStream,
+ finishEventName = "end",
+ dataEventName = "data",
+ ): Observable {
+ stream.pause();
+
+ return new Observable((observer) => {
+ function dataHandler(data: any) {
+ observer.next(JSON.parse(data));
+ }
+
+ function errorHandler(err: any) {
+ observer.error(JSON.parse(err));
+ }
+
+ function endHandler() {
+ observer.complete();
+ }
+
+ stream.addListener(dataEventName, dataHandler);
+ stream.addListener("error", errorHandler);
+ stream.addListener(finishEventName, endHandler);
+
+ stream.resume();
+
+ return () => {
+ stream.removeListener(dataEventName, dataHandler);
+ stream.removeListener("error", errorHandler);
+ stream.removeListener(finishEventName, endHandler);
+ };
+ });
+ }
+ return fromStream(resp.body!);
+ } catch (err) {
+ console.log("Stream failed to connect with error: ", err);
+ return of({});
+ }
+}
diff --git a/firebase-vscode/src/data-connect/deploy.ts b/firebase-vscode/src/data-connect/deploy.ts
new file mode 100644
index 00000000000..6c6882d20b7
--- /dev/null
+++ b/firebase-vscode/src/data-connect/deploy.ts
@@ -0,0 +1,125 @@
+import * as vscode from "vscode";
+import { firstWhere, firstWhereDefined } from "../utils/signal";
+import { currentOptions } from "../options";
+import { deploy as cliDeploy } from "../../../src/deploy";
+import { dataConnectConfigs } from "./config";
+import { createE2eMockable } from "../utils/test_hooks";
+import { runCommand } from "./terminal";
+import { ExtensionBrokerImpl } from "../extension-broker";
+
+function createDeployOnlyCommand(serviceConnectorMap: {
+ [key: string]: string[];
+}): string {
+ return (
+ "firebase deploy --only " +
+ Object.entries(serviceConnectorMap)
+ .map(([serviceId, connectorIds]) => {
+ return `dataconnect:${serviceId}:schema,` + connectorIds.map((connectorId) => `dataconnect:${serviceId}:${connectorId}`).join(",");
+ })
+ .join(",")
+ );
+}
+
+export function registerFdcDeploy(
+ broker: ExtensionBrokerImpl,
+): vscode.Disposable {
+ const deploySpy = createE2eMockable(
+ async (...args: Parameters) => {
+ // Have the "deploy" return "void" for easier mocking (no return value when spied).
+ cliDeploy(...args);
+ },
+ "deploy",
+ async () => {},
+ );
+
+ const deployAllCmd = vscode.commands.registerCommand("fdc.deploy-all", () => {
+ runCommand("firebase deploy --only dataconnect");
+ });
+
+ const deployCmd = vscode.commands.registerCommand("fdc.deploy", async () => {
+ const configs = await firstWhereDefined(dataConnectConfigs).then(
+ (c) => c.requireValue,
+ );
+
+ const pickedServices = await pickServices(configs.serviceIds);
+ if (!pickedServices.length) {
+ return;
+ }
+
+ const serviceConnectorMap: { [key: string]: string[] } = {};
+ for (const serviceId of pickedServices) {
+ const connectorIds = configs.findById(serviceId)?.connectorIds;
+ serviceConnectorMap[serviceId] = await pickConnectors(
+ connectorIds,
+ serviceId,
+ );
+ }
+
+ runCommand(createDeployOnlyCommand(serviceConnectorMap)); // run from terminal
+ });
+
+ const deployAllSub = broker.on("fdc.deploy-all", async () =>
+ vscode.commands.executeCommand("fdc.deploy-all"),
+ );
+
+ const deploySub = broker.on("fdc.deploy", async () =>
+ vscode.commands.executeCommand("fdc.deploy"),
+ );
+
+ return vscode.Disposable.from(
+ deploySpy,
+ deployAllCmd,
+ deployCmd,
+ { dispose: deployAllSub },
+ { dispose: deploySub },
+ );
+}
+
+async function pickServices(
+ serviceIds: string[],
+): Promise | undefined> {
+ const options = firstWhere(
+ currentOptions,
+ (options) => options.project?.length !== 0,
+ ).then((options) => {
+ return serviceIds.map((serviceId) => {
+ return {
+ label: serviceId,
+ options,
+ picked: true,
+ };
+ });
+ });
+
+ const picked = await vscode.window.showQuickPick(options, {
+ title: "Select services to deploy",
+ canPickMany: true,
+ });
+
+ return picked.filter((e) => e.picked).map((service) => service.label);
+}
+
+async function pickConnectors(
+ connectorIds: string[] | undefined,
+ serviceId: string,
+): Promise | undefined> {
+ const options = firstWhere(
+ currentOptions,
+ (options) => options.project?.length !== 0,
+ ).then((options) => {
+ return connectorIds?.map((connectorId) => {
+ return {
+ label: connectorId,
+ options,
+ picked: true,
+ };
+ });
+ });
+
+ const picked = await vscode.window.showQuickPick(options, {
+ title: `Select connectors to deploy for: ${serviceId}`,
+ canPickMany: true,
+ });
+
+ return picked.filter((e) => e.picked).map((connector) => connector.label);
+}
diff --git a/firebase-vscode/src/data-connect/emulator-stream.ts b/firebase-vscode/src/data-connect/emulator-stream.ts
new file mode 100644
index 00000000000..5d9f3ba77d5
--- /dev/null
+++ b/firebase-vscode/src/data-connect/emulator-stream.ts
@@ -0,0 +1,134 @@
+import * as vscode from "vscode";
+import fetch from "node-fetch";
+import { Observable, of } from "rxjs";
+import { backOff } from "exponential-backoff";
+import { ResolvedDataConnectConfigs } from "./config";
+
+enum Kind {
+ KIND_UNSPECIFIED = "KIND_UNSPECIFIED",
+ SQL_CONNECTION = "SQL_CONNECTION",
+ SQL_MIGRATION = "SQL_MIGRATION",
+ VERTEX_AI = "VERTEX_AI",
+}
+enum Severity {
+ SEVERITY_UNSPECIFIED = "SEVERITY_UNSPECIFIED",
+ DEBUG = "DEBUG",
+ NOTICE = "NOTICE",
+ ALERT = "ALERT",
+}
+interface EmulatorIssue {
+ kind: Kind;
+ severity: Severity;
+ message: string;
+}
+
+type EmulatorIssueResponse = { result?: { issues?: EmulatorIssue[] } };
+
+export const emulatorOutputChannel =
+ vscode.window.createOutputChannel("Firebase Emulators");
+
+/**
+ *
+ * @param fdcEndpoint FDC Emulator endpoint
+ */
+export async function runEmulatorIssuesStream(
+ configs: ResolvedDataConnectConfigs,
+ fdcEndpoint: string,
+) {
+ const obsErrors = await getEmulatorIssuesStream(configs, fdcEndpoint);
+ const obsConverter = {
+ next(nextResponse: EmulatorIssueResponse) {
+ if (nextResponse.result?.issues?.length) {
+ for (const issue of nextResponse.result.issues) {
+ displayIssue(issue);
+ }
+ }
+ },
+ error(e: Error) {
+ console.log("Stream closed with: ", e);
+ },
+ complete() {
+ console.log("Stream Closed");
+ },
+ };
+ obsErrors.subscribe(obsConverter);
+}
+
+/**
+ * Based on the severity of the issue, either log, display notification, or display interactive popup to the user
+ */
+export function displayIssue(issue: EmulatorIssue) {
+ const issueMessage = `Data Connect Emulator: ${issue.kind.toString()} - ${issue.message}`;
+ if (issue.severity === Severity.ALERT) {
+ vscode.window.showErrorMessage(issueMessage);
+ } else if (issue.severity === Severity.NOTICE) {
+ vscode.window.showWarningMessage(issueMessage);
+ }
+ emulatorOutputChannel.appendLine(issueMessage);
+}
+
+/**
+ * Calls the DataConnect.StreamEmulatorIssues api.
+ * Converts ReadableStream into Observable
+ *
+ */
+export async function getEmulatorIssuesStream(
+ configs: ResolvedDataConnectConfigs,
+ dataConnectEndpoint: string,
+): Promise> {
+ try {
+ // TODO: eventually support multiple services
+ const serviceId = configs.serviceIds[0];
+
+ const resp = await backOff(() =>
+ fetch(
+ dataConnectEndpoint + `/emulator/stream_issues?serviceId=${serviceId}`,
+ {
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ "x-mantle-admin": "all",
+ },
+ },
+ ),
+ );
+
+ function fromStream(
+ stream: NodeJS.ReadableStream,
+ finishEventName = "end",
+ dataEventName = "data",
+ ): Observable {
+ stream.pause();
+
+ return new Observable((observer) => {
+ function dataHandler(data: any) {
+ observer.next(JSON.parse(data));
+ }
+
+ function errorHandler(err: any) {
+ observer.error(JSON.parse(err));
+ }
+
+ function endHandler() {
+ observer.complete();
+ }
+
+ stream.addListener(dataEventName, dataHandler);
+ stream.addListener("error", errorHandler);
+ stream.addListener(finishEventName, endHandler);
+
+ stream.resume();
+
+ return () => {
+ stream.removeListener(dataEventName, dataHandler);
+ stream.removeListener("error", errorHandler);
+ stream.removeListener(finishEventName, endHandler);
+ };
+ });
+ }
+ return fromStream(resp.body!);
+ } catch (err) {
+ console.log("Stream failed to connect with error: ", err);
+ return of({});
+ }
+}
diff --git a/firebase-vscode/src/data-connect/emulators-status.ts b/firebase-vscode/src/data-connect/emulators-status.ts
new file mode 100644
index 00000000000..742237c3540
--- /dev/null
+++ b/firebase-vscode/src/data-connect/emulators-status.ts
@@ -0,0 +1,61 @@
+import * as vscode from "vscode";
+import { registerWebview } from "../webview";
+import { ExtensionBrokerImpl } from "../extension-broker";
+import { effect } from "@preact/signals-core";
+import { EmulatorsController } from "../core/emulators";
+import { Emulators } from "../cli";
+
+export enum InstanceType {
+ LOCAL = "local",
+ PRODUCTION = "production",
+}
+
+export function registerFirebaseDataConnectView(
+ context: vscode.ExtensionContext,
+ broker: ExtensionBrokerImpl,
+ emulatorsController: EmulatorsController
+): vscode.Disposable {
+ const emulatorsStatus = vscode.window.createStatusBarItem(
+ "emulators",
+ vscode.StatusBarAlignment.Left
+ );
+ emulatorsStatus.tooltip = "The emulators status";
+
+ function syncStatusBarWithSelectedInstance() {
+ return effect(() => {
+ const emulators = emulatorsController.emulatorStates.value;
+
+ const icons: string[] = [];
+ // TODO(rrousselGit) add icons for the other Firebase products
+ if (emulators?.find((e) => e.name === Emulators.DATACONNECT) ?? false) {
+ icons.push("$(data-connect)");
+ }
+
+ if (emulators?.find((e) => e.name !== Emulators.DATACONNECT) ?? false) {
+ icons.push("$(mono-firebase)");
+ }
+
+ if (icons.length === 0) {
+ emulatorsStatus.text = `No emulator running`;
+ emulatorsStatus.backgroundColor = new vscode.ThemeColor(
+ "statusBarItem.warningBackground"
+ );
+ } else {
+ const label = icons.length === 1 ? "Emulator" : "Emulators";
+ emulatorsStatus.backgroundColor = undefined;
+ emulatorsStatus.text = `${icons.join(" ")} ${label} running`;
+ emulatorsStatus.backgroundColor = undefined;
+ }
+
+ emulatorsStatus.show();
+ });
+ }
+
+ return vscode.Disposable.from(
+ emulatorsStatus,
+ {
+ dispose: syncStatusBarWithSelectedInstance(),
+ },
+ registerWebview({ name: "data-connect", context, broker })
+ );
+}
diff --git a/firebase-vscode/src/data-connect/execution-history-provider.ts b/firebase-vscode/src/data-connect/execution-history-provider.ts
new file mode 100644
index 00000000000..96cd6cdda79
--- /dev/null
+++ b/firebase-vscode/src/data-connect/execution-history-provider.ts
@@ -0,0 +1,96 @@
+import * as vscode from "vscode"; // from //third_party/vscode/src/vs:vscode
+import { effect } from "@preact/signals-core";
+import { ExecutionItem, ExecutionState, executions } from "./execution-store";
+
+const timeFormatter = new Intl.DateTimeFormat("default", {
+ timeStyle: "long",
+});
+
+/**
+ * The TreeItem for an execution.
+ */
+export class ExecutionTreeItem extends vscode.TreeItem {
+ parent?: ExecutionTreeItem;
+ children: ExecutionTreeItem[] = [];
+
+ constructor(readonly item: ExecutionItem) {
+ super(item.label, vscode.TreeItemCollapsibleState.None);
+ this.item = item;
+
+ // Renders arguments in a single line
+ const prettyArgs = this.item.args?.replaceAll(/[\n \t]+/g, " ");
+ this.description = `${timeFormatter.format(
+ item.timestamp
+ )} | Arguments: ${prettyArgs}`;
+ this.command = {
+ title: "Show result",
+ command: "firebase.dataConnect.selectExecutionResultToShow",
+ arguments: [item.executionId],
+ };
+ this.updateContext();
+ }
+
+ updateContext() {
+ this.contextValue = "executionTreeItem-finished";
+ if (this.item.state === ExecutionState.FINISHED) {
+ this.iconPath = new vscode.ThemeIcon(
+ "pass",
+ new vscode.ThemeColor("testing.iconPassed")
+ );
+ } else if (this.item.state === ExecutionState.CANCELLED) {
+ this.iconPath = new vscode.ThemeIcon(
+ "warning",
+ new vscode.ThemeColor("testing.iconErrored")
+ );
+ } else if (this.item.state === ExecutionState.ERRORED) {
+ this.iconPath = new vscode.ThemeIcon(
+ "close",
+ new vscode.ThemeColor("testing.iconFailed")
+ );
+ } else if (this.item.state === ExecutionState.RUNNING) {
+ this.contextValue = "executionTreeItem-running";
+ this.iconPath = new vscode.ThemeIcon(
+ "sync~spin",
+ new vscode.ThemeColor("testing.runAction")
+ );
+ }
+ }
+}
+
+/**
+ * The TreeDataProvider for data connect execution history.
+ */
+export class ExecutionHistoryTreeDataProvider
+ implements vscode.TreeDataProvider
+{
+ private readonly onDidChangeTreeDataEmitter = new vscode.EventEmitter();
+ readonly onDidChangeTreeData: vscode.Event =
+ this.onDidChangeTreeDataEmitter.event;
+ executionItems: ExecutionTreeItem[] = [];
+
+ constructor() {
+ effect(() => {
+ this.executionItems = Object.values(executions.value)
+ .sort((a, b) => b.timestamp - a.timestamp)
+ .map((item) => new ExecutionTreeItem(item));
+
+ this.onDidChangeTreeDataEmitter.fire();
+ });
+ }
+
+ getTreeItem(element: ExecutionTreeItem): vscode.TreeItem {
+ return element;
+ }
+
+ getChildren(element?: ExecutionTreeItem): ExecutionTreeItem[] {
+ if (element) {
+ return element.children;
+ } else {
+ return this.executionItems;
+ }
+ }
+
+ getParent(element?: ExecutionTreeItem): ExecutionTreeItem | undefined {
+ return element?.parent;
+ }
+}
diff --git a/firebase-vscode/src/data-connect/execution-store.ts b/firebase-vscode/src/data-connect/execution-store.ts
new file mode 100644
index 00000000000..38f8c6c9eb1
--- /dev/null
+++ b/firebase-vscode/src/data-connect/execution-store.ts
@@ -0,0 +1,83 @@
+import { computed } from "@preact/signals-core";
+import { ExecutionResult, OperationDefinitionNode } from "graphql";
+import * as vscode from "vscode";
+import { globalSignal } from "../utils/globals";
+
+export enum ExecutionState {
+ INIT,
+ RUNNING,
+ CANCELLED,
+ ERRORED,
+ FINISHED,
+}
+
+export interface ExecutionItem {
+ executionId: string;
+ label: string;
+ timestamp: number;
+ state: ExecutionState;
+ operation: OperationDefinitionNode;
+ args?: string;
+ results?: ExecutionResult | Error;
+ documentPath: string;
+ position: vscode.Position;
+}
+
+let executionId = 0;
+
+function nextExecutionId() {
+ executionId++;
+ return `${executionId}`;
+}
+
+export const executions = globalSignal<
+ Record
+>({});
+
+export const selectedExecutionId = globalSignal("");
+
+/** The unparsed JSON object mutation/query variables.
+ *
+ * The JSON may be invalid.
+ */
+export const executionArgsJSON = globalSignal("{}");
+
+export function createExecution(
+ executionItem: Omit
+) {
+ const item: ExecutionItem = {
+ executionId: nextExecutionId(),
+ ...executionItem,
+ };
+
+ executions.value = {
+ ...executions.value,
+ [executionId]: item,
+ };
+
+ return item;
+}
+
+export function updateExecution(
+ executionId: string,
+ executionItem: ExecutionItem
+) {
+ executions.value = {
+ ...executions.value,
+ [executionId]: executionItem,
+ };
+}
+
+export async function selectExecutionId(executionId: string) {
+ selectedExecutionId.value = executionId;
+
+ // take user to operation location in editor
+ const { documentPath, position } = selectedExecution.value;
+ await vscode.window.showTextDocument(vscode.Uri.file(documentPath), {
+ selection: new vscode.Range(position, position),
+ });
+}
+
+export const selectedExecution = computed(
+ () => executions.value[selectedExecutionId.value]
+);
diff --git a/firebase-vscode/src/data-connect/execution.ts b/firebase-vscode/src/data-connect/execution.ts
new file mode 100644
index 00000000000..f8db0770be3
--- /dev/null
+++ b/firebase-vscode/src/data-connect/execution.ts
@@ -0,0 +1,225 @@
+import vscode, {
+ ConfigurationTarget,
+ Disposable,
+ ExtensionContext,
+} from "vscode";
+import { ExtensionBrokerImpl } from "../extension-broker";
+import { registerWebview } from "../webview";
+import { ExecutionHistoryTreeDataProvider } from "./execution-history-provider";
+import {
+ ExecutionItem,
+ ExecutionState,
+ createExecution,
+ executionArgsJSON,
+ selectExecutionId,
+ selectedExecution,
+ selectedExecutionId,
+ updateExecution,
+} from "./execution-store";
+import { batch, effect } from "@preact/signals-core";
+import { OperationDefinitionNode, OperationTypeNode, print } from "graphql";
+import { DataConnectService } from "./service";
+import { DataConnectError, toSerializedError } from "../../common/error";
+import { OperationLocation } from "./types";
+import { EmulatorsController } from "../core/emulators";
+import { InstanceType } from "./emulators-status";
+
+export function registerExecution(
+ context: ExtensionContext,
+ broker: ExtensionBrokerImpl,
+ dataConnectService: DataConnectService,
+ emulatorsController: EmulatorsController,
+): Disposable {
+ const treeDataProvider = new ExecutionHistoryTreeDataProvider();
+ const executionHistoryTreeView = vscode.window.createTreeView(
+ "data-connect-execution-history",
+ {
+ treeDataProvider,
+ },
+ );
+
+ // Select the corresponding tree-item when the selected-execution-id updates
+ const sub1 = effect(() => {
+ const id = selectedExecutionId.value;
+ const selectedItem = treeDataProvider.executionItems.find(
+ ({ item }) => item.executionId === id,
+ );
+ executionHistoryTreeView.reveal(selectedItem, { select: true });
+ });
+
+ function notifyDataConnectResults(item: ExecutionItem) {
+ broker.send("notifyDataConnectResults", {
+ args: item.args ?? "{}",
+ query: print(item.operation),
+ results:
+ item.results instanceof Error
+ ? toSerializedError(item.results)
+ : item.results,
+ displayName: item.operation.operation,
+ });
+ }
+
+ // Listen for changes to the selected-execution item
+ const sub2 = effect(() => {
+ const item = selectedExecution.value;
+ if (item) {
+ notifyDataConnectResults(item);
+ }
+ });
+
+ const sub3 = broker.on("getDataConnectResults", () => {
+ const item = selectedExecution.value;
+ if (item) {
+ notifyDataConnectResults(item);
+ }
+ });
+
+ async function executeOperation(
+ ast: OperationDefinitionNode,
+ { document, documentPath, position }: OperationLocation,
+ instance: InstanceType,
+ ) {
+ const configs = vscode.workspace.getConfiguration("firebase.dataConnect");
+ const alwaysExecuteMutationsInProduction =
+ "alwaysAllowMutationsInProduction";
+ const alwaysStartEmulator = "alwaysStartEmulator";
+
+ if (
+ instance === InstanceType.LOCAL &&
+ !emulatorsController.areEmulatorsRunning.value
+ ) {
+ const always = "Yes (always)";
+ const yes = "Yes";
+ const result = await vscode.window.showWarningMessage(
+ "Trying to execute an operation on the emulator, but it isn't started yet. " +
+ "Do you wish to start it?",
+ { modal: true },
+ yes,
+ always,
+ );
+
+ // If the user selects "always", we update User settings.
+ if (result === always) {
+ configs.update(alwaysStartEmulator, true, ConfigurationTarget.Global);
+ }
+
+ if (result === yes || result === always) {
+ await vscode.commands.executeCommand("firebase.emulators.start");
+ }
+ }
+
+ // Warn against using mutations in production.
+ if (
+ instance !== InstanceType.LOCAL &&
+ !configs.get(alwaysExecuteMutationsInProduction) &&
+ ast.operation === OperationTypeNode.MUTATION
+ ) {
+ const always = "Yes (always)";
+ const yes = "Yes";
+ const result = await vscode.window.showWarningMessage(
+ "You are about to perform a mutation in production environment. Are you sure?",
+ { modal: true },
+ yes,
+ always,
+ );
+
+ if (result !== always && result !== yes) {
+ return;
+ }
+
+ // If the user selects "always", we update User settings.
+ if (result === always) {
+ configs.update(
+ alwaysExecuteMutationsInProduction,
+ true,
+ ConfigurationTarget.Global,
+ );
+ }
+ }
+
+ const item = createExecution({
+ label: ast.name?.value ?? "anonymous",
+ timestamp: Date.now(),
+ state: ExecutionState.RUNNING,
+ operation: ast,
+ args: executionArgsJSON.value,
+ documentPath,
+ position,
+ });
+
+ function updateAndSelect(updates: Partial) {
+ batch(() => {
+ updateExecution(item.executionId, { ...item, ...updates });
+ selectExecutionId(item.executionId);
+ });
+ }
+
+ try {
+ // Execute queries/mutations from their source code.
+ // That ensures that we can execute queries in unsaved files.
+
+ const results = await dataConnectService.executeGraphQL({
+ operationName: ast.name?.value,
+ // We send the whole unparsed document to guarantee
+ // that there are no formatting differences between the real document
+ // and the document that is sent to the emulator.
+ query: document,
+ variables: executionArgsJSON.value,
+ path: documentPath,
+ instance,
+ });
+
+ updateAndSelect({
+ state:
+ // Executing queries may return a response which contains errors
+ // without throwing.
+ // In that case, we mark the execution as errored.
+ (results.errors?.length ?? 0) > 0
+ ? ExecutionState.ERRORED
+ : ExecutionState.FINISHED,
+ results,
+ });
+ } catch (error) {
+ updateAndSelect({
+ state: ExecutionState.ERRORED,
+ results:
+ error instanceof Error
+ ? error
+ : new DataConnectError("Unknown error", error),
+ });
+ }
+ }
+
+ const sub4 = broker.on(
+ "definedDataConnectArgs",
+ (value) => (executionArgsJSON.value = value),
+ );
+
+ return Disposable.from(
+ { dispose: sub1 },
+ { dispose: sub2 },
+ { dispose: sub3 },
+ { dispose: sub4 },
+ registerWebview({
+ name: "data-connect-execution-configuration",
+ context,
+ broker,
+ }),
+ registerWebview({
+ name: "data-connect-execution-results",
+ context,
+ broker,
+ }),
+ executionHistoryTreeView,
+ vscode.commands.registerCommand(
+ "firebase.dataConnect.executeOperation",
+ executeOperation,
+ ),
+ vscode.commands.registerCommand(
+ "firebase.dataConnect.selectExecutionResultToShow",
+ (executionId) => {
+ selectExecutionId(executionId);
+ },
+ ),
+ );
+}
diff --git a/firebase-vscode/src/data-connect/explorer-provider.ts b/firebase-vscode/src/data-connect/explorer-provider.ts
new file mode 100644
index 00000000000..0eabe0cfffb
--- /dev/null
+++ b/firebase-vscode/src/data-connect/explorer-provider.ts
@@ -0,0 +1,232 @@
+import * as vscode from "vscode"; // from //third_party/vscode/src/vs:vscode
+import { CancellationToken, ExtensionContext } from "vscode";
+
+import {
+ IntrospectionQuery,
+ IntrospectionType,
+ IntrospectionOutputType,
+ IntrospectionNamedTypeRef,
+ IntrospectionOutputTypeRef,
+ IntrospectionField,
+ TypeKind,
+} from "graphql";
+import { effect } from "@preact/signals-core";
+import { introspectionQuery } from "./explorer";
+import { OPERATION_TYPE } from "./types";
+
+interface Element {
+ name: string;
+ baseType: OPERATION_TYPE;
+}
+
+export class ExplorerTreeDataProvider
+ implements vscode.TreeDataProvider
+{
+ private _onDidChangeTreeData = new vscode.EventEmitter();
+ readonly onDidChangeTreeData = this._onDidChangeTreeData.event;
+
+ private typeSystem:
+ | {
+ introspection: IntrospectionQuery;
+ typeForName: Map;
+ }
+ | undefined = undefined;
+
+ constructor() {
+ // on introspection change, update typesystem
+ effect(() => {
+ const introspection = introspectionQuery.value;
+ if (introspection) {
+ const typeForName = new Map();
+ for (const type of introspection.__schema.types) {
+ typeForName.set(type.name, type);
+ }
+ this.typeSystem = {
+ introspection,
+ typeForName,
+ };
+ this.refresh();
+ }
+ });
+ }
+
+ refresh(): void {
+ this._onDidChangeTreeData.fire(undefined);
+ }
+
+ // sort by whether the element has children, so that list items show up last
+ private eleSortFn = (a: Element, b: Element) => {
+ const a_field = this._field(a);
+ const b_field = this._field(b);
+ const isAList = a_field.type.kind === TypeKind.OBJECT;
+ const isBList = b_field.type.kind === TypeKind.OBJECT;
+ if ((isAList && isBList) || (!isAList && !isBList)) {
+ return 0;
+ } else if (isAList) {
+ return 1;
+ } else {
+ return -1;
+ }
+ };
+
+ getTreeItem(element: Element): vscode.TreeItem {
+ // special cases for query and mutation root folders
+ if (
+ Object.values(OPERATION_TYPE).includes(element.name as OPERATION_TYPE)
+ ) {
+ return new vscode.TreeItem(
+ element.name,
+ vscode.TreeItemCollapsibleState.Collapsed
+ );
+ }
+
+ const field = this._field(element);
+ if (!field) {
+ return undefined;
+ }
+
+ const hasChildren = this._baseType(field).kind === TypeKind.OBJECT;
+ const label = field.name;
+ const treeItem = new vscode.TreeItem(
+ label,
+ hasChildren
+ ? vscode.TreeItemCollapsibleState.Collapsed
+ : vscode.TreeItemCollapsibleState.None
+ );
+
+ treeItem.description = this._formatType(field.type);
+ return treeItem;
+ }
+
+ getChildren(element?: Element): Element[] {
+ // if the backend did not load yet
+ if (!introspectionQuery.value) {
+ return null;
+ }
+ // init the tree with two elements, query and mutation
+ if (!element) {
+ return [
+ { name: OPERATION_TYPE.query, baseType: OPERATION_TYPE.query },
+ { name: OPERATION_TYPE.mutation, baseType: OPERATION_TYPE.mutation },
+ ];
+ }
+
+ if (element.name === OPERATION_TYPE.query) {
+ return this._unref(this.typeSystem.introspection.__schema.queryType)
+ .fields.filter((f) => f.name !== "_firebase")
+ .map((f) => {
+ return { name: f.name, baseType: OPERATION_TYPE.query };
+ });
+ } else if (element.name === OPERATION_TYPE.mutation) {
+ return this._unref(this.typeSystem.introspection.__schema.mutationType)
+ .fields.filter((f) => f.name !== "_firebase")
+ .map((f) => {
+ return { name: f.name, baseType: OPERATION_TYPE.mutation };
+ });
+ }
+
+ const unwrapped = this._baseType(this._field(element));
+ const type = this._unref(unwrapped);
+ if (type.kind === TypeKind.OBJECT) {
+ return type.fields
+ .map((field) => {
+ return {
+ name: `${element.name}.${field.name}`,
+ baseType: element.baseType,
+ };
+ })
+ .sort(this.eleSortFn);
+ }
+ return [];
+ }
+
+ getParent(element: Element): vscode.ProviderResult {
+ const lastDot = element.name.indexOf(".");
+ if (lastDot <= 0) {
+ return undefined;
+ }
+ return {
+ name: element.name.substring(0, lastDot),
+ baseType: element.baseType,
+ };
+ }
+
+ resolveTreeItem(
+ item: vscode.TreeItem,
+ element: Element,
+ token: CancellationToken
+ ): vscode.ProviderResult {
+ const field = this._field(element);
+ item.tooltip =
+ field && field.description
+ ? new vscode.MarkdownString(field.description)
+ : "";
+
+ return item;
+ }
+
+ private _field(element: Element): IntrospectionField | undefined {
+ const path = element.name.split(".");
+ const typeRef =
+ element.baseType === OPERATION_TYPE.query
+ ? this.typeSystem.introspection.__schema.queryType
+ : this.typeSystem.introspection.__schema.mutationType;
+
+ if (!path.length) {
+ return undefined;
+ }
+ let field = undefined;
+ for (let i = 0; i < path.length; i++) {
+ const baseTypeRef = i === 0 ? typeRef : this._baseType(field);
+
+ const type = this._unref(baseTypeRef);
+ if (type.kind !== TypeKind.OBJECT) {
+ return undefined;
+ }
+ const maybeField = type.fields.find((f) => f.name === path[i]);
+ if (!maybeField) {
+ return undefined;
+ }
+ field = maybeField;
+ }
+ return field;
+ }
+
+ _unref(ref: IntrospectionNamedTypeRef): T {
+ const type = this.typeSystem.typeForName.get(ref.name);
+ if (!type) {
+ throw new Error(
+ `Introspection invariant violation: Ref type ${ref.name} does not exist`
+ );
+ }
+ if (ref.kind && type.kind !== ref.kind) {
+ throw new Error(
+ `Introspection invariant violation: Ref kind ${ref.kind} does not match Type kind ${type.kind}`
+ );
+ }
+ return type as T;
+ }
+
+ _baseType(
+ field: IntrospectionField
+ ): IntrospectionNamedTypeRef {
+ let unwrapped = field.type;
+ while (
+ unwrapped.kind === TypeKind.NON_NULL ||
+ unwrapped.kind === TypeKind.LIST
+ ) {
+ unwrapped = unwrapped.ofType;
+ }
+ return unwrapped;
+ }
+
+ _formatType(type: IntrospectionOutputTypeRef): string {
+ if (type.kind === TypeKind.NON_NULL) {
+ return this._formatType(type.ofType) + "!";
+ }
+ if (type.kind === TypeKind.LIST) {
+ return `[${this._formatType(type.ofType)}]`;
+ }
+ return type.name;
+ }
+}
diff --git a/firebase-vscode/src/data-connect/explorer.ts b/firebase-vscode/src/data-connect/explorer.ts
new file mode 100644
index 00000000000..823e28f262f
--- /dev/null
+++ b/firebase-vscode/src/data-connect/explorer.ts
@@ -0,0 +1,38 @@
+import vscode, { Disposable, ExtensionContext } from "vscode";
+import { ExtensionBrokerImpl } from "../extension-broker";
+import { ExplorerTreeDataProvider } from "./explorer-provider";
+import { IntrospectionQuery } from "graphql";
+import { DataConnectService } from "./service";
+import { globalSignal } from "../utils/globals";
+
+// explorer store
+export const introspectionQuery = globalSignal(
+ undefined
+);
+
+export function registerExplorer(
+ context: ExtensionContext,
+ broker: ExtensionBrokerImpl,
+ dataConnectService: DataConnectService
+): Disposable {
+ const treeDataProvider = new ExplorerTreeDataProvider();
+ const explorerTreeView = vscode.window.createTreeView(
+ "firebase.dataConnect.explorerView",
+ {
+ treeDataProvider,
+ }
+ );
+
+ async function executeIntrospection() {
+ const results = await dataConnectService.introspect();
+ introspectionQuery.value = results.data;
+ }
+
+ return Disposable.from(
+ explorerTreeView,
+ vscode.commands.registerCommand(
+ "firebase.dataConnect.executeIntrospection",
+ executeIntrospection
+ )
+ );
+}
diff --git a/firebase-vscode/src/data-connect/file-utils.ts b/firebase-vscode/src/data-connect/file-utils.ts
new file mode 100644
index 00000000000..386873010da
--- /dev/null
+++ b/firebase-vscode/src/data-connect/file-utils.ts
@@ -0,0 +1,42 @@
+import vscode, { Uri } from "vscode";
+import path from "path";
+
+export async function checkIfFileExists(file: Uri) {
+ try {
+ await vscode.workspace.fs.stat(file);
+ return true;
+ } catch {
+ return false;
+ }
+}
+
+export function isPathInside(childPath: string, parentPath: string): boolean {
+ const relative = path.relative(parentPath, childPath);
+ return !relative.startsWith("..") && !path.isAbsolute(relative);
+}
+
+/** Opens a file in the editor. If the file is missing, opens an untitled file
+ * with the content provided by the `content` function.
+ */
+export async function upsertFile(
+ uri: vscode.Uri,
+ content: () => string | string,
+): Promise {
+ const doesFileExist = await checkIfFileExists(uri);
+
+ if (!doesFileExist) {
+ const doc = await vscode.workspace.openTextDocument(
+ uri.with({ scheme: "untitled" }),
+ );
+ const editor = await vscode.window.showTextDocument(doc);
+
+ await editor.edit((edit) =>
+ edit.insert(new vscode.Position(0, 0), content()),
+ );
+ return;
+ }
+
+ // Opens existing text document
+ const doc = await vscode.workspace.openTextDocument(uri);
+ await vscode.window.showTextDocument(doc);
+}
diff --git a/firebase-vscode/src/data-connect/index.ts b/firebase-vscode/src/data-connect/index.ts
new file mode 100644
index 00000000000..3e55cb2b2c5
--- /dev/null
+++ b/firebase-vscode/src/data-connect/index.ts
@@ -0,0 +1,256 @@
+import vscode, { Disposable, ExtensionContext } from "vscode";
+import { Signal, effect } from "@preact/signals-core";
+import { ExtensionBrokerImpl } from "../extension-broker";
+import { registerExecution } from "./execution";
+import { registerExplorer } from "./explorer";
+import { registerAdHoc } from "./ad-hoc-mutations";
+import { DataConnectService as FdcService } from "./service";
+import {
+ OperationCodeLensProvider,
+ SchemaCodeLensProvider,
+} from "./code-lens-provider";
+import { registerConnectors } from "./connectors";
+import { AuthService } from "../auth/service";
+import { registerFirebaseDataConnectView } from "./emulators-status";
+import { currentProjectId } from "../core/project";
+import { isTest } from "../utils/env";
+import { setupLanguageClient } from "./language-client";
+import { EmulatorsController } from "../core/emulators";
+import { registerFdcDeploy } from "./deploy";
+import * as graphql from "graphql";
+import {
+ ResolvedDataConnectConfigs,
+ dataConnectConfigs,
+ registerDataConnectConfigs,
+} from "./config";
+import { locationToRange } from "../utils/graphql";
+import { runDataConnectCompiler } from "./core-compiler";
+import { Result } from "../result";
+import { runEmulatorIssuesStream } from "./emulator-stream";
+import { LanguageClient } from "vscode-languageclient/node";
+import { registerTerminalTasks } from "./terminal";
+
+class CodeActionsProvider implements vscode.CodeActionProvider {
+ constructor(
+ private configs: Signal<
+ Result | undefined
+ >,
+ ) {}
+
+ provideCodeActions(
+ document: vscode.TextDocument,
+ range: vscode.Range | vscode.Selection,
+ context: vscode.CodeActionContext,
+ cancellationToken: vscode.CancellationToken,
+ ): vscode.ProviderResult<(vscode.CodeAction | vscode.Command)[]> {
+ const documentText = document.getText();
+ const results: (vscode.CodeAction | vscode.Command)[] = [];
+
+ // TODO: replace w/ online-parser to work with malformed documents
+ const documentNode = graphql.parse(documentText);
+ let definitionAtRange: graphql.DefinitionNode | undefined;
+ let definitionIndex: number | undefined;
+
+ for (let i = 0; i < documentNode.definitions.length; i++) {
+ const definition = documentNode.definitions[i];
+
+ if (
+ definition.kind === graphql.Kind.OPERATION_DEFINITION &&
+ definition.loc
+ ) {
+ const definitionRange = locationToRange(definition.loc);
+ const line = definition.loc.startToken.line - 1;
+
+ if (!definitionRange.intersection(range)) {
+ continue;
+ }
+
+ definitionAtRange = definition;
+ definitionIndex = i;
+ }
+ }
+
+ if (!definitionAtRange) {
+ return null;
+ }
+
+ this.moveToConnector(
+ document,
+ documentText,
+ { index: definitionIndex! },
+ results,
+ );
+
+ return results;
+ }
+
+ private moveToConnector(
+ document: vscode.TextDocument,
+ documentText: string,
+ { index }: { index: number },
+ results: (vscode.CodeAction | vscode.Command)[],
+ ) {
+ const enclosingService =
+ this.configs.value?.tryReadValue?.findEnclosingServiceForPath(
+ document.uri.fsPath,
+ );
+ if (!enclosingService) {
+ return;
+ }
+
+ const enclosingConnector = enclosingService.findEnclosingConnectorForPath(
+ document.uri.fsPath,
+ );
+ if (enclosingConnector) {
+ // Already in a connector, don't suggest moving to another one
+ return;
+ }
+
+ for (const connectorResult of enclosingService.resolvedConnectors) {
+ const connector = connectorResult.tryReadValue;
+ if (!connector) {
+ // Parsing error in the connector, skip
+ continue;
+ }
+
+ results.push({
+ title: `Move to "${connector.value.connectorId}"`,
+ kind: vscode.CodeActionKind.Refactor,
+ tooltip: `Move to the connector to "${connector.path}"`,
+ command: "firebase.dataConnect.moveOperationToConnector",
+ arguments: [
+ index,
+ {
+ document: documentText,
+ documentPath: document.fileName,
+ },
+ connector.path,
+ ],
+ });
+ }
+ }
+}
+
+export function registerFdc(
+ context: ExtensionContext,
+ broker: ExtensionBrokerImpl,
+ authService: AuthService,
+ emulatorController: EmulatorsController,
+): Disposable {
+ const codeActions = vscode.languages.registerCodeActionsProvider(
+ [
+ { scheme: "file", language: "graphql" },
+ { scheme: "untitled", language: "graphql" },
+ ],
+ new CodeActionsProvider(dataConnectConfigs),
+ {
+ providedCodeActionKinds: [vscode.CodeActionKind.Refactor],
+ },
+ );
+
+ const fdcService = new FdcService(authService, emulatorController);
+ const operationCodeLensProvider = new OperationCodeLensProvider(
+ emulatorController,
+ );
+ const schemaCodeLensProvider = new SchemaCodeLensProvider(emulatorController);
+
+ // activate language client/serer
+ let client: LanguageClient;
+ const lsOutputChannel: vscode.OutputChannel = vscode.window.createOutputChannel(
+ "Firebase GraphQL Language Server",
+ );
+
+ // setup new language client on config change
+ context.subscriptions.push({
+ dispose: effect(() => {
+ const configs = dataConnectConfigs.value?.tryReadValue;
+ if (client) client.stop();
+ if (configs && configs.values.length > 0) {
+ client = setupLanguageClient(context, configs, lsOutputChannel);
+ vscode.commands.executeCommand("fdc-graphql.start");
+ }
+ }),
+ });
+
+ // Perform some side-effects when the endpoint changes
+ context.subscriptions.push({
+ dispose: effect(() => {
+ const configs = dataConnectConfigs.value?.tryReadValue;
+ if (configs && fdcService.localEndpoint.value) {
+ // TODO move to client.start or setupLanguageClient
+ vscode.commands.executeCommand("fdc-graphql.restart");
+ vscode.commands.executeCommand(
+ "firebase.dataConnect.executeIntrospection",
+ );
+ runEmulatorIssuesStream(configs, fdcService.localEndpoint.value);
+ runDataConnectCompiler(configs, fdcService.localEndpoint.value);
+ }
+ }),
+ });
+
+ const selectedProjectStatus = vscode.window.createStatusBarItem(
+ "projectPicker",
+ vscode.StatusBarAlignment.Left,
+ );
+ selectedProjectStatus.tooltip = "Select a Firebase project";
+ selectedProjectStatus.command = "firebase.selectProject";
+
+ const sub1 = effect(() => {
+ // Enable FDC views only if at least one dataconnect.yaml is present.
+ // TODO don't start the related logic unless a dataconnect.yaml is present
+ vscode.commands.executeCommand(
+ "setContext",
+ "firebase-vscode.fdc.enabled",
+ (dataConnectConfigs.value?.tryReadValue?.values.length ?? 0) !== 0,
+ );
+ });
+
+ return Disposable.from(
+ codeActions,
+ selectedProjectStatus,
+ { dispose: sub1 },
+ {
+ dispose: effect(() => {
+ selectedProjectStatus.text = `$(mono-firebase) ${
+ currentProjectId.value ?? ""
+ }`;
+ selectedProjectStatus.show();
+ }),
+ },
+ registerDataConnectConfigs(),
+ registerExecution(context, broker, fdcService, emulatorController),
+ registerExplorer(context, broker, fdcService),
+ registerFirebaseDataConnectView(context, broker, emulatorController),
+ registerAdHoc(fdcService),
+ registerConnectors(context, broker, fdcService),
+ registerFdcDeploy(broker),
+ registerTerminalTasks(broker),
+ operationCodeLensProvider,
+ vscode.languages.registerCodeLensProvider(
+ // **Hack**: For testing purposes, enable code lenses on all graphql files
+ // inside the test_projects folder.
+ // This is because e2e tests start without graphQL installed,
+ // so code lenses would otherwise never show up.
+ isTest
+ ? [{ pattern: "/**/firebase-vscode/src/test/test_projects/**/*.gql" }]
+ : [
+ { scheme: "file", language: "graphql" },
+ { scheme: "untitled", language: "graphql" },
+ ],
+ operationCodeLensProvider,
+ ),
+ schemaCodeLensProvider,
+ vscode.languages.registerCodeLensProvider(
+ [
+ { scheme: "file", language: "graphql" },
+ // Don't show in untitled files since the provider needs the file name.
+ ],
+ schemaCodeLensProvider,
+ ),
+ {
+ dispose: () => {
+ client.stop();
+ },
+ },
+ );
+}
diff --git a/firebase-vscode/src/data-connect/language-client.ts b/firebase-vscode/src/data-connect/language-client.ts
new file mode 100644
index 00000000000..32882606257
--- /dev/null
+++ b/firebase-vscode/src/data-connect/language-client.ts
@@ -0,0 +1,143 @@
+import * as vscode from "vscode";
+import {
+ LanguageClientOptions,
+ ServerOptions,
+ TransportKind,
+ RevealOutputChannelOn,
+ LanguageClient,
+} from "vscode-languageclient/node";
+import * as path from "node:path";
+import { ResolvedDataConnectConfigs } from "./config";
+
+export function setupLanguageClient(
+ context,
+ configs: ResolvedDataConnectConfigs,
+ outputChannel: vscode.OutputChannel,
+) {
+ const serverPath = path.join("dist", "server.js");
+ const serverModule = context.asAbsolutePath(serverPath);
+
+ const debugOptions = {
+ execArgv: ["--nolazy", "--inspect=localhost:6009"],
+ };
+
+ const serverOptions: ServerOptions = {
+ run: {
+ module: serverModule,
+ transport: TransportKind.ipc,
+ },
+ debug: {
+ module: serverModule,
+ transport: TransportKind.ipc,
+ options: debugOptions,
+ },
+ };
+
+ const clientOptions: LanguageClientOptions = {
+ documentSelector: [{ scheme: "file", language: "graphql" }],
+ synchronize: {
+ // TODO: This should include any referenced graphql files inside the graphql-config
+ fileEvents: [
+ vscode.workspace.createFileSystemWatcher(
+ "/{graphql.config.*,.graphqlrc,.graphqlrc.*,package.json}",
+ false,
+ // Ignore change events for graphql config, we only care about create, delete and save events
+ // otherwise, the underlying language service is re-started on every key change.
+ // also, it makes sense that it should only re-load on file save, but we need to document that.
+ // TODO: perhaps we can intercept change events, and remind the user
+ // to save for the changes to take effect
+ true,
+ ),
+ // TODO: load ignore file
+ // These ignore node_modules and .git by default
+ vscode.workspace.createFileSystemWatcher(
+ "**/{*.graphql,*.graphqls,*.gql,*.js,*.mjs,*.cjs,*.esm,*.es,*.es6,*.jsx,*.ts,*.tsx,*.vue,*.svelte,*.cts,*.mts}",
+ ),
+ ],
+ },
+ outputChannel,
+ outputChannelName: "GraphQL Language Server",
+ revealOutputChannelOn: RevealOutputChannelOn.Never,
+ initializationFailedHandler: (err) => {
+ outputChannel.appendLine("Initialization failed");
+ outputChannel.appendLine(err.message);
+ if (err.stack) {
+ outputChannel.appendLine(err.stack);
+ }
+ outputChannel.show();
+ return false;
+ },
+ };
+
+ // Create the language client and start the client.
+ const client = new LanguageClient(
+ "graphQLlanguageServer",
+ "GraphQL Language Server",
+ serverOptions,
+ clientOptions,
+ );
+
+ // register commands
+ const commandShowOutputChannel = vscode.commands.registerCommand(
+ "fdc-graphql.showOutputChannel",
+ () => outputChannel.show(),
+ );
+
+ context.subscriptions.push(commandShowOutputChannel);
+
+ const generateYamlFile = async () => {
+ const basePath = vscode.workspace.rootPath;
+ const filePath = ".firebase/.graphqlrc";
+ const fileUri = vscode.Uri.file(`${basePath}/${filePath}`);
+ const folderPath = ".firebase";
+ const folderUri = vscode.Uri.file(`${basePath}/${folderPath}`);
+
+ // TODO: Expand to multiple services
+ const config = configs.values[0];
+ const generatedPath = ".dataconnect";
+ const schemaPaths = [
+ `../${config.relativeSchemaPath}/**/*.gql`,
+ `../${config.relativePath}/${generatedPath}/**/*.gql`,
+ ];
+ const documentPaths = config.relativeConnectorPaths.map(
+ (connectorPath) => `../${connectorPath}/**/*.gql`,
+ );
+
+ const yamlJson = JSON.stringify({
+ schema: schemaPaths,
+ document: documentPaths,
+ });
+ // create folder if needed
+ if (!vscode.workspace.getWorkspaceFolder(folderUri)) {
+ vscode.workspace.fs.createDirectory(folderUri);
+ }
+ vscode.workspace.fs.writeFile(fileUri, Buffer.from(yamlJson));
+ };
+
+ vscode.commands.registerCommand("fdc-graphql.restart", async () => {
+ outputChannel.appendLine("Stopping Firebase GraphQL Language Server");
+ await client.stop();
+ await generateYamlFile();
+ outputChannel.appendLine("Restarting Firebase GraphQL Language Server");
+ await client.start();
+ outputChannel.appendLine("Firebase GraphQL Language Server restarted");
+ });
+
+ vscode.commands.registerCommand("fdc-graphql.start", async () => {
+ await generateYamlFile();
+ await client.start();
+ outputChannel.appendLine("Firebase GraphQL Language Server restarted");
+ });
+
+ // ** DISABLED FOR NOW WHILE WE TEST GENERATED YAML **
+ // restart server whenever config file changes
+ // const watcher = vscode.workspace.createFileSystemWatcher(
+ // "**/.graphqlrc.*", // TODO: extend to schema files, and other config types
+ // false,
+ // false,
+ // false,
+ // );
+ // watcher.onDidChange(() => restartGraphqlLSP());
+
+ return client;
+}
diff --git a/firebase-vscode/src/data-connect/language-server.ts b/firebase-vscode/src/data-connect/language-server.ts
new file mode 100644
index 00000000000..bd2c94e9b3d
--- /dev/null
+++ b/firebase-vscode/src/data-connect/language-server.ts
@@ -0,0 +1,19 @@
+import { startServer } from "graphql-language-service-server";
+// The npm scripts are configured to only build this once before
+// watching the extension, so please restart the extension debugger for changes!
+
+async function start() {
+ try {
+ await startServer({
+ method: "node",
+ loadConfigOptions: { rootDir: ".firebase" },
+ });
+ // eslint-disable-next-line no-console
+ console.log("Firebase GraphQL Language Server started!");
+ } catch (err) {
+ // eslint-disable-next-line no-console
+ console.error(err);
+ }
+}
+
+void start();
diff --git a/firebase-vscode/src/data-connect/service.ts b/firebase-vscode/src/data-connect/service.ts
new file mode 100644
index 00000000000..25c4223f918
--- /dev/null
+++ b/firebase-vscode/src/data-connect/service.ts
@@ -0,0 +1,283 @@
+import fetch, { Response } from "node-fetch";
+import {
+ ExecutionResult,
+ IntrospectionQuery,
+ getIntrospectionQuery,
+} from "graphql";
+import { computed } from "@preact/signals-core";
+import { assertExecutionResult } from "../../common/graphql";
+import { DataConnectError } from "../../common/error";
+import { AuthService } from "../auth/service";
+import { UserMockKind } from "../../common/messaging/protocol";
+import { firstWhereDefined } from "../utils/signal";
+import { EmulatorsController } from "../core/emulators";
+import { Emulators } from "../cli";
+import { dataConnectConfigs } from "../data-connect/config";
+
+import { firebaseRC } from "../core/config";
+import { executeGraphQL } from "../../../src/dataconnect/dataplaneClient";
+import {
+ ExecuteGraphqlRequest,
+ ExecuteGraphqlResponse,
+ ExecuteGraphqlResponseError,
+ Impersonation,
+} from "../dataconnect/types";
+import { ClientResponse } from "../apiv2";
+import { InstanceType } from "./emulators-status";
+
+/**
+ * DataConnect Emulator service
+ */
+export class DataConnectService {
+ constructor(
+ private authService: AuthService,
+ private emulatorsController: EmulatorsController,
+ ) {}
+
+ readonly localEndpoint = computed(() => {
+ const emulatorInfos =
+ this.emulatorsController.emulators.value.infos?.displayInfo;
+ const dataConnectEmulator = emulatorInfos?.find(
+ (emulatorInfo) => emulatorInfo.name === Emulators.DATACONNECT,
+ );
+
+ if (!dataConnectEmulator) {
+ return undefined;
+ }
+
+ return (
+ "http://" + dataConnectEmulator.host + ":" + dataConnectEmulator.port
+ );
+ });
+
+ async servicePath(
+ path: string,
+ instance: InstanceType,
+ ): Promise {
+ const dataConnectConfigsValue = await firstWhereDefined(dataConnectConfigs);
+ // TODO: avoid calling this here and in getApiServicePathByPath
+ const serviceId =
+ dataConnectConfigsValue?.tryReadValue.findEnclosingServiceForPath(path)
+ .value.serviceId;
+ const projectId = firebaseRC.value?.tryReadValue?.projects?.default;
+
+ if (serviceId === undefined || projectId === undefined) {
+ return undefined;
+ }
+
+ return instance === InstanceType.PRODUCTION
+ ? dataConnectConfigsValue?.tryReadValue?.getApiServicePathByPath(
+ projectId,
+ path,
+ )
+ : `projects/p/locations/l/services/${serviceId}`;
+ }
+
+ private async decodeResponse(
+ response: Response,
+ format?: "application/json",
+ ): Promise {
+ const contentType = response.headers.get("Content-Type");
+ if (!contentType) {
+ throw new Error("Invalid content type");
+ }
+
+ if (format && !contentType.includes(format)) {
+ throw new Error(
+ `Invalid content type. Expected ${format} but got ${contentType}`,
+ );
+ }
+
+ if (contentType.includes("application/json")) {
+ return response.json();
+ }
+
+ return response.text();
+ }
+ private async handleProdResponse(
+ clientResponse: ClientResponse<
+ ExecuteGraphqlResponse | ExecuteGraphqlResponseError
+ >,
+ ): Promise {
+ if (!(clientResponse.status >= 200 && clientResponse.status < 300)) {
+ const errorResponse =
+ clientResponse as ClientResponse;
+ throw new DataConnectError(
+ `Request failed with status ${clientResponse.status}`,
+ errorResponse.body.error.message,
+ );
+ }
+ const successResponse =
+ clientResponse as ClientResponse;
+ return successResponse.body;
+ }
+
+ private async handleValidResponse(
+ response: Response,
+ ): Promise {
+ const json = await this.decodeResponse(response, "application/json");
+ assertExecutionResult(json);
+
+ return json;
+ }
+
+ private async handleInvalidResponse(response: Response): Promise {
+ const cause = await this.decodeResponse(response);
+
+ throw new DataConnectError(
+ `Request failed with status ${response.status}`,
+ cause,
+ );
+ }
+
+ private handleResponse(response: Response): Promise {
+ if (response.status >= 200 && response.status < 300) {
+ return this.handleValidResponse(response);
+ }
+
+ return this.handleInvalidResponse(response);
+ }
+
+ /** Encode a body while handling the fact that "variables" is raw JSON.
+ *
+ * If the JSON is invalid, will throw.
+ */
+ private _serializeBody(body: { variables?: string; [key: string]: unknown }) {
+ if (!body.variables || body.variables.trim().length === 0) {
+ body.variables = undefined;
+ return JSON.stringify(body);
+ }
+
+ // TODO: make this more efficient than a plain JSON decode+encode.
+ const { variables, ...rest } = body;
+
+ return JSON.stringify({
+ ...rest,
+ variables: JSON.parse(variables),
+ });
+ }
+
+ private _auth(): { impersonate?: Impersonation } {
+ const userMock = this.authService.userMock;
+ if (!userMock || userMock.kind === UserMockKind.ADMIN) {
+ return {};
+ }
+ return {
+ impersonate:
+ userMock.kind === UserMockKind.AUTHENTICATED
+ ? { authClaims: JSON.parse(userMock.claims) }
+ : { unauthenticated: true },
+ };
+ }
+
+ // This introspection is used to generate a basic graphql schema
+ // It will not include our predefined operations, which requires a DataConnect specific introspection query
+ async introspect(): Promise<{ data?: IntrospectionQuery }> {
+ try {
+ const introspectionResults = await this.executeGraphQLRead({
+ query: getIntrospectionQuery(),
+ operationName: "IntrospectionQuery",
+ variables: "{}",
+ });
+ console.log("introspection: ", introspectionResults);
+ // TODO: handle errors
+ if ((introspectionResults as any).errors.length > 0) {
+ return { data: undefined };
+ }
+ // TODO: remove after core server handles this
+ for (let type of (introspectionResults as any).data.__schema.types) {
+ type.interfaces = [];
+ }
+
+ return { data: (introspectionResults as any).data };
+ } catch (e) {
+ // TODO: surface error that emulator is not connected
+ console.error("error: ", e);
+ return { data: undefined };
+ }
+ }
+
+ async executeGraphQLRead(params: {
+ query: string;
+ operationName: string;
+ variables: string;
+ }) {
+ // TODO: get introspections for all services
+ const configs = await firstWhereDefined(dataConnectConfigs);
+ // Using "requireValue", so that if configs are not available, the execution should throw.
+ const serviceId = configs.requireValue.serviceIds[0];
+ try {
+ // TODO: get name programmatically
+ const body = this._serializeBody({
+ ...params,
+ name: `projects/p/locations/l/services/${serviceId}`,
+ extensions: {}, // Introspection is the only caller of executeGraphqlRead
+ });
+ const resp = await fetch(
+ (await firstWhereDefined(this.localEndpoint)) +
+ `/v1alpha/projects/p/locations/l/services/${serviceId}:executeGraphqlRead`,
+ {
+ method: "POST",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ "x-mantle-admin": "all",
+ },
+ body,
+ },
+ );
+ const result = await resp.json().catch(() => resp.text());
+ return result;
+ } catch (e) {
+ // TODO: actual error handling
+ console.log(e);
+ return null;
+ }
+ }
+
+ async executeGraphQL(params: {
+ query: string;
+ operationName?: string;
+ variables: string;
+ path: string;
+ instance: InstanceType;
+ }) {
+ const servicePath = await this.servicePath(params.path, params.instance);
+ if (!servicePath) {
+ throw new Error("No service found for path: " + params.path);
+ }
+
+ const prodBody: ExecuteGraphqlRequest = {
+ operationName: params.operationName,
+ variables: JSON.parse(params.variables),
+ query: params.query,
+ name: `${servicePath}`,
+ extensions: this._auth(),
+ };
+
+ const body = this._serializeBody({
+ ...params,
+ name: `${servicePath}`,
+ extensions: this._auth(),
+ });
+ if (params.instance === InstanceType.PRODUCTION) {
+ const resp = await executeGraphQL(servicePath, prodBody);
+ return this.handleProdResponse(resp);
+ } else {
+ const resp = await fetch(
+ (await firstWhereDefined(this.localEndpoint)) +
+ `/v1alpha/${servicePath}:executeGraphql`,
+ {
+ method: "POST",
+ headers: {
+ Accept: "application/json",
+ "Content-Type": "application/json",
+ "x-mantle-admin": "all",
+ },
+ body,
+ },
+ );
+ return this.handleResponse(resp);
+ }
+ }
+}
diff --git a/firebase-vscode/src/data-connect/terminal.ts b/firebase-vscode/src/data-connect/terminal.ts
new file mode 100644
index 00000000000..b45adcc7d8b
--- /dev/null
+++ b/firebase-vscode/src/data-connect/terminal.ts
@@ -0,0 +1,69 @@
+import { TerminalOptions } from "vscode";
+import { ExtensionBrokerImpl } from "../extension-broker";
+import vscode, { Disposable } from "vscode";
+import { checkLogin } from "../core/user";
+const environmentVariables = {};
+
+const terminalOptions: TerminalOptions = {
+ name: "Data Connect Terminal",
+ env: environmentVariables,
+};
+
+export function setTerminalEnvVars(envVar: string, value: string) {
+ environmentVariables[envVar] = value;
+}
+
+export function runCommand(command: string) {
+ const terminal = vscode.window.createTerminal(terminalOptions);
+ terminal.show();
+ terminal.sendText(command);
+}
+
+export function runTerminalTask(
+ taskName: string,
+ command: string,
+): Promise {
+ const type = "firebase-" + Date.now();
+ return new Promise(async (resolve, reject) => {
+ vscode.tasks.onDidEndTaskProcess(async (e) => {
+ if (e.execution.task.definition.type === type) {
+ e.execution.terminate();
+
+ if (e.exitCode === 0) {
+ resolve(`Successfully executed ${taskName} with command: ${command}`);
+ } else {
+ reject(
+ new Error(`Failed to execute ${taskName} with command: ${command}`),
+ );
+ }
+ }
+ });
+ vscode.tasks.executeTask(
+ new vscode.Task(
+ { type },
+ vscode.TaskScope.Workspace,
+ taskName,
+ "firebase",
+ new vscode.ShellExecution(command),
+ ),
+ );
+ });
+}
+
+export function registerTerminalTasks(broker: ExtensionBrokerImpl): Disposable {
+ const loginTaskBroker = broker.on("executeLogin", () => {
+ runTerminalTask("firebase login", "firebase login --no-localhost").then(() => {
+ checkLogin();
+ });
+ });
+
+ return Disposable.from(
+ { dispose: loginTaskBroker },
+ vscode.commands.registerCommand(
+ "firebase.dataConnect.runTerminalTask",
+ (taskName, command) => {
+ runTerminalTask(taskName, command);
+ },
+ ),
+ );
+}
diff --git a/firebase-vscode/src/data-connect/types.ts b/firebase-vscode/src/data-connect/types.ts
new file mode 100644
index 00000000000..774b3320aaf
--- /dev/null
+++ b/firebase-vscode/src/data-connect/types.ts
@@ -0,0 +1,12 @@
+import * as vscode from "vscode";
+
+export enum OPERATION_TYPE {
+ query = "query",
+ mutation = "mutation",
+}
+
+export interface OperationLocation {
+ document: string;
+ documentPath: string;
+ position: vscode.Position;
+}
diff --git a/firebase-vscode/src/extension-broker.ts b/firebase-vscode/src/extension-broker.ts
index 7bd7d82f8cf..d323306b862 100644
--- a/firebase-vscode/src/extension-broker.ts
+++ b/firebase-vscode/src/extension-broker.ts
@@ -20,7 +20,10 @@ export class ExtensionBroker extends Broker<
> {
private webviews: Webview[] = [];
- sendMessage(command: string, data: ExtensionToWebviewParamsMap[keyof ExtensionToWebviewParamsMap]): void {
+ sendMessage(
+ command: string,
+ data: ExtensionToWebviewParamsMap[keyof ExtensionToWebviewParamsMap]
+ ): void {
for (const webview of this.webviews) {
webview.postMessage({ command, data });
}
@@ -32,7 +35,9 @@ export class ExtensionBroker extends Broker<
webview.onDidReceiveMessage(
(message: Message) => {
this.executeListeners(message);
- }, null);
+ },
+ null
+ );
}
delete(): void {
diff --git a/firebase-vscode/src/extension.ts b/firebase-vscode/src/extension.ts
index be0300ef974..570d4a926c2 100644
--- a/firebase-vscode/src/extension.ts
+++ b/firebase-vscode/src/extension.ts
@@ -1,5 +1,3 @@
-// The module 'vscode' contains the VS Code extensibility API
-// Import the module and reference it with the alias vscode in your code below
import * as vscode from "vscode";
import { ExtensionBroker } from "./extension-broker";
@@ -13,9 +11,11 @@ import { registerWebview } from "./webview";
import { registerCore } from "./core";
import { getSettings } from "./utils/settings";
import { registerHosting } from "./hosting";
+import { registerFdc } from "./data-connect";
+import { AuthService } from "./auth/service";
// This method is called when your extension is activated
-export function activate(context: vscode.ExtensionContext) {
+export async function activate(context: vscode.ExtensionContext) {
const settings = getSettings();
logSetup(settings);
pluginLogger.debug("Activating Firebase extension.");
@@ -26,13 +26,22 @@ export function activate(context: vscode.ExtensionContext) {
vscode.Webview
>(new ExtensionBroker());
+ const authService = new AuthService(broker);
+
+ const [emulatorsController, coreDisposable] = await registerCore({
+ broker,
+ context,
+ });
+
context.subscriptions.push(
- registerCore({ broker, context }),
+ coreDisposable,
registerWebview({
name: "sidebar",
broker,
context,
}),
- registerHosting(broker)
+ registerHosting(broker),
+ authService,
+ registerFdc(context, broker, authService, emulatorsController)
);
}
diff --git a/firebase-vscode/src/hosting/index.ts b/firebase-vscode/src/hosting/index.ts
index 1ac31343277..af459ab851f 100644
--- a/firebase-vscode/src/hosting/index.ts
+++ b/firebase-vscode/src/hosting/index.ts
@@ -6,10 +6,12 @@ import { deployToHosting, getChannels, initHosting } from "../cli";
import { firebaseConfig } from "../core/config";
import { pluginLogger, showOutputChannel } from "../logger-wrapper";
import { currentOptions } from "../options";
-import { currentProject, currentProjectId } from "../core/project";
+import { currentProject } from "../core/project";
import { getSettings } from "../utils/settings";
import { discover } from "../../../src/frameworks";
import { globalSignal } from "../utils/globals";
+import { ResultValue } from "../result";
+import { firstWhereDefined } from "../utils/signal";
const channels = globalSignal([]);
@@ -18,7 +20,10 @@ export function registerHosting(broker: ExtensionBrokerImpl): Disposable {
const sub1 = effect(async () => {
if (currentProject.value) {
pluginLogger.info("(Hosting) New project detected, fetching channels");
- channels.value = await getChannels(firebaseConfig.peek());
+ const config = firebaseConfig.peek();
+
+ channels.value =
+ config instanceof ResultValue ? await getChannels(config.value) : [];
}
});
@@ -30,6 +35,10 @@ export function registerHosting(broker: ExtensionBrokerImpl): Disposable {
const sub3 = broker.on(
"selectAndInitHostingFolder",
async ({ singleAppSupport }) => {
+ const configs = await firstWhereDefined(firebaseConfig).then(
+ (c) => c.requireValue
+ );
+
showOutputChannel();
let currentFramework: string | undefined = undefined;
@@ -81,12 +90,15 @@ export function registerHosting(broker: ExtensionBrokerImpl): Disposable {
});
if (success) {
- channels.value = await getChannels(firebaseConfig.value);
+ channels.value = await getChannels(configs);
}
}
);
const sub4 = broker.on("hostingDeploy", async ({ target: deployTarget }) => {
+ const configs = await firstWhereDefined(firebaseConfig).then(
+ (c) => c.requireValue
+ );
showOutputChannel();
pluginLogger.info(
@@ -94,14 +106,11 @@ export function registerHosting(broker: ExtensionBrokerImpl): Disposable {
`${currentProject.value?.projectId} to channel: ${deployTarget}`
);
- const deployResponse = await deployToHosting(
- firebaseConfig.value,
- deployTarget
- );
+ const deployResponse = await deployToHosting(configs, deployTarget);
if (deployResponse.success) {
pluginLogger.info("(Hosting) Refreshing channels");
- channels.value = await getChannels(firebaseConfig.value);
+ channels.value = await getChannels(configs);
}
broker.send("notifyHostingDeploy", deployResponse);
diff --git a/firebase-vscode/src/logger-wrapper.ts b/firebase-vscode/src/logger-wrapper.ts
index 2fbce279563..0e387f079be 100644
--- a/firebase-vscode/src/logger-wrapper.ts
+++ b/firebase-vscode/src/logger-wrapper.ts
@@ -7,7 +7,7 @@ import { SPLAT } from "triple-beam";
import { logger as cliLogger } from "../../src/logger";
import { setupLoggers, tryStringify } from "../../src/utils";
import { setInquirerLogger } from "./stubs/inquirer-stub";
-import { getRootFolders } from "./config-files";
+import { getRootFolders } from "./core/config";
export type LogLevel = "debug" | "info" | "log" | "warn" | "error";
@@ -19,7 +19,7 @@ export const pluginLogger: Record void> = {
error: () => {},
};
-const outputChannel = vscode.window.createOutputChannel('Firebase');
+const outputChannel = vscode.window.createOutputChannel("Firebase");
export function showOutputChannel() {
outputChannel.show();
@@ -27,7 +27,7 @@ export function showOutputChannel() {
for (const logLevel in pluginLogger) {
pluginLogger[logLevel] = (...args) => {
- const prefixedArgs = ['[Firebase Plugin]', ...args];
+ const prefixedArgs = ["[Firebase Plugin]", ...args];
cliLogger[logLevel](...prefixedArgs);
};
}
@@ -35,12 +35,15 @@ for (const logLevel in pluginLogger) {
/**
* Logging setup for logging to console and to file.
*/
-export function logSetup({ shouldWriteDebug, debugLogPath }: {
- shouldWriteDebug: boolean,
- debugLogPath: string
+export function logSetup({
+ shouldWriteDebug,
+ debugLogPath,
+}: {
+ shouldWriteDebug: boolean;
+ debugLogPath: string;
}) {
// Log to console (use built in CLI functionality)
- process.env.DEBUG = 'true';
+ process.env.DEBUG = "true";
setupLoggers();
// Log to file
@@ -49,22 +52,22 @@ export function logSetup({ shouldWriteDebug, debugLogPath }: {
// Re-implement file logger call from ../../src/bin/firebase.ts to not bring
// in the entire firebase.ts file
const rootFolders = getRootFolders();
- const filePath = debugLogPath || path.join(rootFolders[0], 'firebase-plugin-debug.log');
- pluginLogger.info('Logging to path', filePath);
+ const filePath =
+ debugLogPath || path.join(rootFolders[0], "firebase-plugin-debug.log");
+ pluginLogger.info("Logging to path", filePath);
cliLogger.add(
new transports.File({
level: "debug",
filename: filePath,
format: format.printf((info) => {
- const segments = [info.message, ...(info[SPLAT] || [])]
- .map(tryStringify);
+ const segments = [info.message, ...(info[SPLAT] || [])].map(
+ tryStringify
+ );
return `[${info.level}] ${stripAnsi(segments.join(" "))}`;
}),
})
);
- cliLogger.add(
- new VSCodeOutputTransport({ level: "info" })
- );
+ cliLogger.add(new VSCodeOutputTransport({ level: "info" }));
}
}
@@ -78,13 +81,12 @@ class VSCodeOutputTransport extends Transport {
}
log(info, callback) {
setImmediate(() => {
- this.emit('logged', info);
+ this.emit("logged", info);
});
- const segments = [info.message, ...(info[SPLAT] || [])]
- .map(tryStringify);
+ const segments = [info.message, ...(info[SPLAT] || [])].map(tryStringify);
const text = `[${info.level}] ${stripAnsi(segments.join(" "))}`;
- if (info.level !== 'debug') {
+ if (info.level !== "debug") {
// info or greater: write to output window
outputChannel.appendLine(text);
}
diff --git a/firebase-vscode/src/metaprogramming.ts b/firebase-vscode/src/metaprogramming.ts
new file mode 100644
index 00000000000..2cb166f8c30
--- /dev/null
+++ b/firebase-vscode/src/metaprogramming.ts
@@ -0,0 +1,5 @@
+export type DeepReadOnly = T extends Record
+ ? { readonly [K in keyof T]: DeepReadOnly }
+ : T extends Array
+ ? ReadonlyArray>
+ : T;
diff --git a/firebase-vscode/src/options.ts b/firebase-vscode/src/options.ts
index b1db21df2fe..715df10e827 100644
--- a/firebase-vscode/src/options.ts
+++ b/firebase-vscode/src/options.ts
@@ -5,11 +5,13 @@ import { ExtensionContext } from "vscode";
import { setInquirerOptions } from "./stubs/inquirer-stub";
import { Config } from "../../src/config";
import { globalSignal } from "./utils/globals";
+import * as vscode from "vscode";
+import { effect } from "@preact/signals-core";
+import { firebaseConfig, firebaseRC, getConfigPath } from "./core/config";
-/**
- * User-facing CLI options
- */
-const defaultOptions: Options = {
+export type VsCodeOptions = Options & { isVSCE: boolean; rc: RC | null };
+
+const defaultOptions: Readonly = {
cwd: "",
configPath: "",
only: "",
@@ -32,40 +34,79 @@ const defaultOptions: Options = {
rc: null,
exportOnExit: false,
import: "",
+
+ isVSCE: true,
};
/**
* User-facing CLI options
*/
+// TODO(rrousselGit): options should default to "undefined" until initialized,
+// instead of relying on invalid default values.
export const currentOptions = globalSignal({ ...defaultOptions });
-export function updateOptions(
- context: ExtensionContext,
- firebaseJSON: Config,
- firebaseRC: RC
-) {
- if (firebaseJSON) {
- currentOptions.value.config = firebaseJSON;
- currentOptions.value.configPath = `${currentOptions.value.cwd}/firebase.json`;
- if (firebaseJSON.has("hosting")) {
+export function registerOptions(context: ExtensionContext): vscode.Disposable {
+ currentOptions.value.cwd = getConfigPath();
+ const cwdSync = vscode.workspace.onDidChangeWorkspaceFolders(() => {
+ currentOptions.value = {
+ ...currentOptions.peek(),
+ cwd: getConfigPath(),
+ };
+ });
+
+ const firebaseConfigSync = effect(() => {
+ const previous = currentOptions.peek();
+
+ const config = firebaseConfig.value?.tryReadValue;
+ if (config) {
currentOptions.value = {
- ...currentOptions.value,
- ...firebaseJSON.get("hosting"),
+ ...previous,
+ config,
+ configPath: `${previous.cwd}/firebase.json`,
+ };
+ } else {
+ currentOptions.value = {
+ ...previous,
+ config: new Config({}),
+ configPath: "",
};
}
- } else {
- currentOptions.value.configPath = "";
- }
- if (firebaseRC) {
- currentOptions.value.rc = firebaseRC;
- currentOptions.value.project = firebaseRC.projects?.default;
- } else {
- currentOptions.value.rc = null;
- currentOptions.value.project = "";
- }
- context.globalState.setKeysForSync(["currentOptions"]);
- context.globalState.update("currentOptions", currentOptions.value);
- setInquirerOptions(currentOptions.value);
+ });
+
+ const rcSync = effect(() => {
+ const previous = currentOptions.peek();
+
+ const rc = firebaseRC.value?.tryReadValue;
+ if (rc) {
+ currentOptions.value = {
+ ...previous,
+ rc,
+ project: rc.projects?.default,
+ projectId: rc.projects?.default,
+ };
+ } else {
+ currentOptions.value = {
+ ...previous,
+ rc: null,
+ project: "",
+ };
+ }
+ });
+
+ const notifySync = effect(() => {
+ currentOptions.value;
+
+ context.globalState.setKeysForSync(["currentOptions"]);
+ context.globalState.update("currentOptions", currentOptions.value);
+ setInquirerOptions(currentOptions.value);
+ });
+
+ return vscode.Disposable.from(
+ cwdSync,
+ { dispose: firebaseConfigSync },
+ { dispose: rcSync },
+ { dispose: notifySync }
+ );
}
/**
diff --git a/firebase-vscode/src/result.ts b/firebase-vscode/src/result.ts
new file mode 100644
index 00000000000..ec2b74dfeec
--- /dev/null
+++ b/firebase-vscode/src/result.ts
@@ -0,0 +1,85 @@
+/** A wrapper object used to differentiate between error and value state.
+ *
+ * It has the added benefit of enabling the differentiation of "no value yet"
+ * from "value is undefined".
+ */
+export abstract class Result {
+ /** Run a block of code and converts the result in a Result.
+ *
+ * Errors will be caught, logged and returned as an error.
+ */
+ static guard(cb: () => Promise): Promise>;
+ static guard(cb: () => T): Result;
+ static guard(cb: () => T | Promise): Result | Promise> {
+ try {
+ const value = cb();
+ if (value instanceof Promise) {
+ return value
+ .then>((value) => new ResultValue(value))
+ .catch((error) => new ResultError(error));
+ }
+
+ return new ResultValue(value);
+ } catch (error: any) {
+ return new ResultError(error);
+ }
+ }
+
+ get tryReadValue(): T | undefined {
+ return this.switchCase(
+ (value) => value,
+ () => undefined
+ );
+ }
+
+ get requireValue(): T {
+ return this.switchCase(
+ (value) => value,
+ (error) => {
+ throw new Error("Result in error state", {
+ cause: error,
+ });
+ }
+ );
+ }
+
+ switchCase(
+ value: (value: T) => NewT,
+ error: (error: unknown) => NewT
+ ): NewT {
+ const that: unknown = this;
+ if (that instanceof ResultValue) {
+ return value(that.value);
+ }
+
+ return error((that as ResultError).error);
+ }
+
+ follow(cb: (prev: T) => Result): Result {
+ return this.switchCase(
+ (value) => cb(value),
+ (error) => new ResultError(error)
+ );
+ }
+
+ followAsync(
+ cb: (prev: T) => Promise>
+ ): Promise> {
+ return this.switchCase>>(
+ (value) => cb(value),
+ async (error) => new ResultError(error)
+ );
+ }
+}
+
+export class ResultValue extends Result {
+ constructor(readonly value: T) {
+ super();
+ }
+}
+
+export class ResultError extends Result {
+ constructor(readonly error: unknown) {
+ super();
+ }
+}
diff --git a/firebase-vscode/src/stubs/inquirer-stub.js b/firebase-vscode/src/stubs/inquirer-stub.js
index 5416fbc23b6..e173ae49eac 100644
--- a/firebase-vscode/src/stubs/inquirer-stub.js
+++ b/firebase-vscode/src/stubs/inquirer-stub.js
@@ -1,9 +1,9 @@
const inquirer = module.exports;
let pluginLogger = {
- debug: () => {}
+ debug: () => {},
};
-const optionsKey = Symbol('options');
+const optionsKey = Symbol("options");
inquirer[optionsKey] = {};
inquirer.setInquirerOptions = (inquirerOptions) => {
@@ -22,7 +22,7 @@ inquirer.prompt = async (prompts) => {
} else {
pluginLogger.debug(
`Didn't find "${prompt.name}" in options (message:` +
- ` "${prompt.message}"), defaulting to value "${prompt.default}"`
+ ` "${prompt.message}"), defaulting to value "${prompt.default}"`,
);
answers[prompt.name] = prompt.default;
}
@@ -30,4 +30,4 @@ inquirer.prompt = async (prompts) => {
return answers;
};
-inquirer.registerPrompt = () => {};
\ No newline at end of file
+inquirer.registerPrompt = () => {};
diff --git a/firebase-vscode/src/test/wdio.conf.ts b/firebase-vscode/src/test/default_wdio.conf.ts
similarity index 54%
rename from firebase-vscode/src/test/wdio.conf.ts
rename to firebase-vscode/src/test/default_wdio.conf.ts
index ed4852fec90..0c98862a00a 100644
--- a/firebase-vscode/src/test/wdio.conf.ts
+++ b/firebase-vscode/src/test/default_wdio.conf.ts
@@ -1,5 +1,20 @@
import type { Options } from "@wdio/types";
import * as path from "path";
+import * as child_process from "child_process";
+
+export const vscodeConfigs = {
+ browserName: "vscode",
+ // Workaround for https://github.com/webdriverio-community/wdio-vscode-service/issues/101#issuecomment-1928159399
+ browserVersion: "1.85.0", // also possible: "insiders" or a specific version e.g. "1.80.0"
+ "wdio:vscodeOptions": {
+ // points to directory where extension package.json is located
+ extensionPath: path.join(__dirname, "..", ".."),
+ // optional VS Code settings
+ userSettings: {
+ "editor.fontSize": 14,
+ },
+ },
+};
export const config: Options.Testrunner = {
runner: "local",
@@ -11,15 +26,6 @@ export const config: Options.Testrunner = {
},
},
- specs: ["./integration/**/*.ts"],
- // Patterns to exclude.
- exclude: [
- // 'path/to/excluded/files'
- ],
-
- // Redirect noisy chromedriver and browser logs to ./logs
- outputDir: "./logs",
-
capabilities: [
{
browserName: "vscode",
@@ -36,12 +42,18 @@ export const config: Options.Testrunner = {
},
],
+ // Redirect noisy chromedriver and browser logs to ./logs
+ outputDir: "./logs",
+
+ afterTest: async function () {
+ // Reset the test_projects directory to its original state after each test.
+ // This ensures tests do not modify the test_projects directory.
+ child_process.execSync(
+ `git restore --source=HEAD -- ./src/test/test_projects`
+ );
+ },
+
services: ["vscode"],
framework: "mocha",
reporters: ["spec"],
-
- mochaOpts: {
- ui: "bdd",
- timeout: 60000,
- },
};
diff --git a/firebase-vscode/src/test/empty_wdio.conf.ts b/firebase-vscode/src/test/empty_wdio.conf.ts
new file mode 100644
index 00000000000..83b2ac29b0a
--- /dev/null
+++ b/firebase-vscode/src/test/empty_wdio.conf.ts
@@ -0,0 +1,7 @@
+import { config as baseConfig } from "./default_wdio.conf";
+import type { Options } from "@wdio/types";
+
+export const config: Options.Testrunner = {
+ ...baseConfig,
+ specs: ["./integration/empty/**/*.ts"],
+};
diff --git a/firebase-vscode/src/test/fishfood_wdio.conf.ts b/firebase-vscode/src/test/fishfood_wdio.conf.ts
new file mode 100644
index 00000000000..6833d52304f
--- /dev/null
+++ b/firebase-vscode/src/test/fishfood_wdio.conf.ts
@@ -0,0 +1,21 @@
+import { merge } from "lodash";
+import { config as baseConfig, vscodeConfigs } from "./default_wdio.conf";
+import type { Options } from "@wdio/types";
+import * as path from "path";
+
+const fishfoodPath = path.resolve(
+ process.cwd(),
+ "src/test/test_projects/fishfood"
+);
+
+export const config: Options.Testrunner = {
+ ...baseConfig,
+ // Disable concurrency as tests may write to the same files.
+ maxInstances: 1,
+ specs: ["./integration/fishfood/**/*.ts"],
+ capabilities: [
+ merge(vscodeConfigs, {
+ "wdio:vscodeOptions": { workspacePath: fishfoodPath },
+ }),
+ ],
+};
diff --git a/firebase-vscode/src/test/integration/project.ts b/firebase-vscode/src/test/integration/empty/project.ts
similarity index 82%
rename from firebase-vscode/src/test/integration/project.ts
rename to firebase-vscode/src/test/integration/empty/project.ts
index ea506e7412e..a758d707907 100644
--- a/firebase-vscode/src/test/integration/project.ts
+++ b/firebase-vscode/src/test/integration/empty/project.ts
@@ -1,14 +1,15 @@
import { browser } from "@wdio/globals";
-import { openFirebaseSidebar } from "../utils/sidebar";
+import { FirebaseSidebar } from "../../utils/page_objects/sidebar";
describe("Select project command", () => {
it("waits until projects are loaded", async function () {
const workbench = await browser.getWorkbench();
+ const sidebar = new FirebaseSidebar(workbench);
// This shouldn't be necessary. But at the moment,
// users aren't loaded until the sidebar is opened –
// which blocks the loading of projects.
- openFirebaseSidebar();
+ await sidebar.open();
const picker = await workbench.executeCommand("firebase.selectProject");
diff --git a/firebase-vscode/src/test/integration/empty/sidebar.ts b/firebase-vscode/src/test/integration/empty/sidebar.ts
new file mode 100644
index 00000000000..47aa81c3a59
--- /dev/null
+++ b/firebase-vscode/src/test/integration/empty/sidebar.ts
@@ -0,0 +1,13 @@
+import { browser } from "@wdio/globals";
+import { FirebaseSidebar } from "../../utils/page_objects/sidebar";
+
+it("Supports opening empty projects", async function () {
+ const workbench = await browser.getWorkbench();
+ const sidebar = new FirebaseSidebar(workbench);
+
+ await sidebar.open();
+
+ await sidebar.runInFirebaseViewContext(async (firebase) => {
+ await firebase.connectProjectLinkElement.waitForDisplayed();
+ });
+});
diff --git a/firebase-vscode/src/test/integration/fishfood/deploy.ts b/firebase-vscode/src/test/integration/fishfood/deploy.ts
new file mode 100644
index 00000000000..9e394cd2af9
--- /dev/null
+++ b/firebase-vscode/src/test/integration/fishfood/deploy.ts
@@ -0,0 +1,41 @@
+import { browser } from "@wdio/globals";
+import { FirebaseSidebar } from "../../utils/page_objects/sidebar";
+import { firebaseTest } from "../../utils/test_hooks";
+import { QuickPick } from "../../utils/page_objects/quick_picks";
+import { e2eSpy, getE2eSpyCalls } from "../mock";
+
+firebaseTest("Can deploy services", async function () {
+ const workbench = await browser.getWorkbench();
+ const sidebar = new FirebaseSidebar(workbench);
+ const quickPicks = new QuickPick(workbench);
+
+ await sidebar.open();
+ await sidebar.fdcDeployElement.click();
+
+ const servicePicks = await quickPicks
+ .findQuickPicks()
+ .then((picks) => picks.map((p) => p.getText()));
+
+ expect(servicePicks).toEqual(["us-east"]);
+
+ e2eSpy("deploy");
+
+ await quickPicks.okElement.click();
+
+ const connectorPicks = await quickPicks
+ .findQuickPicks()
+ .then((picks) => picks.map((p) => p.getText()));
+
+ expect(connectorPicks).toEqual(["a"]);
+
+ await quickPicks.okElement.click();
+
+ const args = await getE2eSpyCalls("deploy");
+
+ expect(args.length).toBe(1);
+
+ expect(args[0].length).toBe(3);
+ expect(args[0][0]).toEqual(["dataconnect"]);
+ expect(args[0][1].project).toEqual("dart-firebase-admin");
+ expect(args[0][2]).toEqual({ context: "us-east" });
+});
diff --git a/firebase-vscode/src/test/integration/fishfood/emulator_status.ts b/firebase-vscode/src/test/integration/fishfood/emulator_status.ts
new file mode 100644
index 00000000000..a01831cc004
--- /dev/null
+++ b/firebase-vscode/src/test/integration/fishfood/emulator_status.ts
@@ -0,0 +1,28 @@
+import { browser } from "@wdio/globals";
+import { StatusBar } from "../../utils/page_objects/status_bar";
+import { firebaseTest } from "../../utils/test_hooks";
+import { FirebaseCommands } from "../../utils/page_objects/commands";
+
+firebaseTest(
+ "If the emulator is not started, the status bar says so",
+ async function () {
+ const workbench = await browser.getWorkbench();
+ const statusBar = new StatusBar(workbench);
+
+ expect(await statusBar.emulatorsStatus.getText()).toBe(
+ "No emulator running"
+ );
+ }
+);
+
+firebaseTest("When emulators are running, lists them", async function () {
+ const workbench = await browser.getWorkbench();
+ const commands = new FirebaseCommands();
+ const statusBar = new StatusBar(workbench);
+
+ await commands.startEmulators();
+
+ expect(await statusBar.emulatorsStatus.getText()).toContain(
+ "Emulators running"
+ );
+});
diff --git a/firebase-vscode/src/test/integration/fishfood/execution.ts b/firebase-vscode/src/test/integration/fishfood/execution.ts
new file mode 100644
index 00000000000..4b52ca51630
--- /dev/null
+++ b/firebase-vscode/src/test/integration/fishfood/execution.ts
@@ -0,0 +1,47 @@
+import { browser } from "@wdio/globals";
+import { FirebaseSidebar } from "../../utils/page_objects/sidebar";
+import { ExecutionPanel } from "../../utils/page_objects/execution";
+import { addTearDown, firebaseTest } from "../../utils/test_hooks";
+import { EditorView } from "../../utils/page_objects/editor";
+import { queriesPath } from "../../utils/projects";
+import { FirebaseCommands } from "../../utils/page_objects/commands";
+
+firebaseTest("Can execute queries", async function () {
+ const workbench = await browser.getWorkbench();
+ const sidebar = new FirebaseSidebar(workbench);
+ const execution = new ExecutionPanel(workbench);
+ const editor = new EditorView(workbench);
+ const commands = new FirebaseCommands();
+
+ await sidebar.startEmulators();
+ addTearDown(() => commands.stopEmulators());
+
+ // Update arguments
+ await execution.open();
+
+ await execution.setVariables(`{
+ "id": "42"
+}`);
+
+ // Execute query
+ await editor.openFile(queriesPath);
+
+ await editor.firstCodeLense.waitForDisplayed();
+ await editor.firstCodeLense.click();
+
+ // Check the history entry
+ // TODO - revert history and result view after test
+ const item = await execution.history.getSelectedItem();
+
+ // TODO this should work without opening the sidebar
+ // While the emulator correctly starts without, some leftover state
+ // still needs the sidebar.
+ expect(await item.getLabel()).toBe("getPost");
+
+ // Waiting for the execution to finish
+ browser.waitUntil(async () => {
+ (await item.getStatus()) === "success";
+ });
+
+ expect(await item.getDescription()).toContain('Arguments: { "id": "42" }');
+});
diff --git a/firebase-vscode/src/test/integration/fishfood/sidebar.ts b/firebase-vscode/src/test/integration/fishfood/sidebar.ts
new file mode 100644
index 00000000000..4893174b265
--- /dev/null
+++ b/firebase-vscode/src/test/integration/fishfood/sidebar.ts
@@ -0,0 +1,20 @@
+import { browser } from "@wdio/globals";
+import { FirebaseSidebar } from "../../utils/page_objects/sidebar";
+import { firebaseTest } from "../../utils/test_hooks";
+import { FirebaseCommands } from "../../utils/page_objects/commands";
+
+firebaseTest(
+ "If emulators are started before opening the sidebar, get a clean initial state",
+ async function () {
+ const workbench = await browser.getWorkbench();
+ const commands = new FirebaseCommands();
+ const sidebar = new FirebaseSidebar(workbench);
+
+ await commands.startEmulators();
+
+ await sidebar.open();
+ await sidebar.runInFirebaseViewContext(async (firebase) => {
+ await sidebar.stopEmulatorBtn.waitForDisplayed();
+ });
+ }
+);
diff --git a/firebase-vscode/src/test/integration/mock.ts b/firebase-vscode/src/test/integration/mock.ts
new file mode 100644
index 00000000000..d1b066fb335
--- /dev/null
+++ b/firebase-vscode/src/test/integration/mock.ts
@@ -0,0 +1,37 @@
+import { addTearDown } from "../utils/test_hooks";
+import { deploy as cliDeploy } from "../../../../src/deploy";
+import * as vscode from "vscode";
+
+export async function e2eSpy(key: string): Promise {
+ addTearDown(async () => {
+ await callBrowserSpyCommand(key, { spy: false });
+ });
+
+ await callBrowserSpyCommand(key, { spy: true });
+}
+
+export function getE2eSpyCalls(
+ key: "deploy"
+): Promise>>;
+export async function getE2eSpyCalls(key: string): Promise>> {
+ return callBrowserSpyCommand(
+ key,
+ // We don't mock anything, just read the call list.
+ { spy: undefined }
+ );
+}
+
+async function callBrowserSpyCommand(
+ key: string,
+ args: { spy: boolean | undefined }
+): Promise>> {
+ const result = await browser.executeWorkbench(
+ (vs: typeof vscode, key, args) => {
+ return vs.commands.executeCommand(key, args);
+ },
+ `fdc-graphql.spy.${key}`,
+ args
+ );
+
+ return result as Array>;
+}
diff --git a/firebase-vscode/src/test/integration/sidebar.ts b/firebase-vscode/src/test/integration/sidebar.ts
deleted file mode 100644
index 7c0468bc39b..00000000000
--- a/firebase-vscode/src/test/integration/sidebar.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { browser, expect } from "@wdio/globals";
-import {
- openFirebaseSidebar,
- switchToFirebaseSidebarFrame,
-} from "../utils/sidebar";
-
-it("Supports opening empty projects", async function () {
- const workbench = await browser.getWorkbench();
-
- await openFirebaseSidebar();
- await switchToFirebaseSidebarFrame(workbench);
-
- await expect($("vscode-button=Try a Quickstart!")).toBeDisplayed();
-});
diff --git a/firebase-vscode/src/test/suite/src/cli.test.ts b/firebase-vscode/src/test/suite/src/cli.test.ts
index bbaa1b28352..c0bba42d425 100644
--- a/firebase-vscode/src/test/suite/src/cli.test.ts
+++ b/firebase-vscode/src/test/suite/src/cli.test.ts
@@ -9,7 +9,7 @@ firebaseSuite("getChannels", () => {
async () => {
const result = await getChannels(null);
assert.deepStrictEqual(result, []);
- },
+ }
);
firebaseTest("returns an empty array if no project provided", async () => {
diff --git a/firebase-vscode/src/test/suite/src/core/config.test.ts b/firebase-vscode/src/test/suite/src/core/config.test.ts
index 4ea9a3c5a63..0b5534e668a 100644
--- a/firebase-vscode/src/test/suite/src/core/config.test.ts
+++ b/firebase-vscode/src/test/suite/src/core/config.test.ts
@@ -4,8 +4,8 @@ import * as path from "path";
import * as fs from "fs";
import {
_createWatcher,
- _getConfigPath,
- _readConfig,
+ getConfigPath,
+ _readFirebaseConfig,
_readRC,
firebaseConfig,
firebaseRC,
@@ -22,13 +22,13 @@ import { createFake, mock } from "../../../utils/mock";
import { resetGlobals } from "../../../../utils/globals";
import { workspace } from "../../../../utils/test_hooks";
import { createFile, createTemporaryDirectory } from "../../../utils/fs";
-import { currentOptions } from "../../../../options";
-import { Options } from "../../../../../../src/options";
+import { VsCodeOptions, currentOptions } from "../../../../options";
import { spyLogs } from "../../../utils/logs";
import { createTestBroker } from "../../../utils/broker";
import { setupMockTestWorkspaces } from "../../../utils/workspace";
-import { RC } from "../../../../../../src/rc";
-import { Config } from "../../../../../../src/config";
+import { RC } from "../../../../rc";
+import { Config } from "../../../../config";
+import { ResultValue } from "../../../../result";
firebaseSuite("getRootFolders", () => {
firebaseTest("if workspace is empty, returns an empty array", () => {
@@ -49,7 +49,7 @@ firebaseSuite("getRootFolders", () => {
const result = getRootFolders();
assert.deepEqual(result, []);
- },
+ }
);
firebaseTest("returns an array of paths", () => {
@@ -106,7 +106,7 @@ firebaseSuite("getRootFolders", () => {
});
});
-firebaseSuite("_getConfigPath", () => {
+firebaseSuite("getConfigPath", () => {
// Those tests will impact global variables. We need to reset them after each test.
teardown(() => resetGlobals());
@@ -131,11 +131,11 @@ firebaseSuite("_getConfigPath", () => {
});
mock(workspace, { workspaceFolders: [aFolder, bFolder, cFolder] });
- assert.deepEqual(_getConfigPath(), b, ".firebaserc is found first");
+ assert.deepEqual(getConfigPath(), b, ".firebaserc is found first");
mock(workspace, { workspaceFolders: [aFolder, cFolder, bFolder] });
- assert.deepEqual(_getConfigPath(), c, "firebase.json is found first");
- },
+ assert.deepEqual(getConfigPath(), c, "firebase.json is found first");
+ }
);
firebaseTest("if no firebase config found, returns the first folder", () => {
@@ -154,7 +154,7 @@ firebaseSuite("_getConfigPath", () => {
});
mock(workspace, { workspaceFolders: [aFolder, bFolder, cFolder] });
- assert.deepEqual(_getConfigPath(), a);
+ assert.deepEqual(getConfigPath(), a);
});
firebaseTest('sets "cwd" global variable to the config path', () => {
@@ -165,17 +165,17 @@ firebaseSuite("_getConfigPath", () => {
mock(workspace, { workspaceFolders: [aFolder] });
- _getConfigPath();
+ getConfigPath();
assert.deepEqual(currentOptions.value.cwd, a);
});
});
-firebaseSuite("_readConfig", () => {
+firebaseSuite("_readFirebaseConfig", () => {
firebaseTest("parses firebase.json", () => {
const expectedConfig = {
emulators: {
- firemat: {
+ auth: {
port: 9399,
},
},
@@ -192,8 +192,8 @@ firebaseSuite("_readConfig", () => {
],
});
- const config = _readConfig();
- assert.deepEqual(config.data, expectedConfig);
+ const config = _readFirebaseConfig();
+ assert.deepEqual(config.requireValue.data, expectedConfig);
});
firebaseTest("returns undefined if firebase.json is not found", () => {
@@ -207,7 +207,7 @@ firebaseSuite("_readConfig", () => {
],
});
- const config = _readConfig();
+ const config = _readFirebaseConfig();
assert.deepEqual(config, undefined);
});
@@ -227,16 +227,16 @@ firebaseSuite("_readConfig", () => {
assert.equal(logs.error.length, 0);
assert.throws(
- () => _readConfig(),
+ () => _readFirebaseConfig(),
(thrown) =>
thrown
.toString()
.startsWith(
`FirebaseError: There was an error loading ${path.join(
dir,
- "firebase.json",
- )}:`,
- ),
+ "firebase.json"
+ )}:`
+ )
);
assert.equal(logs.error.length, 1);
@@ -264,7 +264,10 @@ firebaseSuite("_readRC", () => {
});
const config = _readRC();
- assert.deepEqual(config?.data.projects, expectedConfig.projects);
+ assert.deepEqual(
+ config?.requireValue.data.projects,
+ expectedConfig.projects
+ );
});
firebaseTest("returns undefined if .firebaserc is not found", () => {
@@ -301,13 +304,13 @@ firebaseSuite("_readRC", () => {
() => _readRC(),
(thrown) =>
thrown.toString() ===
- `SyntaxError: Unexpected token 'i', "invalid json" is not valid JSON`,
+ `SyntaxError: Unexpected token 'i', "invalid json" is not valid JSON`
);
assert.equal(logs.error.length, 1);
assert.equal(
logs.error[0],
- `Unexpected token 'i', "invalid json" is not valid JSON`,
+ `Unexpected token 'i', "invalid json" is not valid JSON`
);
});
});
@@ -317,7 +320,7 @@ firebaseSuite("_createWatcher", () => {
teardown(() => resetGlobals());
firebaseTest("returns undefined if cwd is not set", () => {
- mock(currentOptions, createFake({ cwd: undefined }));
+ mock(currentOptions, createFake({ cwd: undefined }));
const watcher = _createWatcher("file");
@@ -328,7 +331,7 @@ firebaseSuite("_createWatcher", () => {
const dir = createTemporaryDirectory();
const file = createFile(dir, "file", "content");
- mock(currentOptions, createFake({ cwd: dir }));
+ mock(currentOptions, createFake({ cwd: dir }));
const watcher = _createWatcher("file")!;
addTearDown(() => watcher.dispose());
@@ -349,8 +352,8 @@ firebaseSuite("registerConfig", () => {
firebaseTest(
'sets "cwd" and firebaseRC/Config global variables on initial call',
- () => {
- const expectedConfig = { emulators: { firemat: { port: 9399 } } };
+ async () => {
+ const expectedConfig = { emulators: { auth: { port: 9399 } } };
const expectedRc = { projects: { default: "my-project" } };
const broker = createTestBroker();
const workspaces = setupMockTestWorkspaces({
@@ -358,21 +361,24 @@ firebaseSuite("registerConfig", () => {
firebaseConfig: expectedConfig,
});
- const disposable = registerConfig(broker);
+ const disposable = await registerConfig(broker);
addDisposable(disposable);
// Initial register should not notify anything.
assert.deepEqual(broker.sentLogs, []);
assert.deepEqual(currentOptions.value.cwd, workspaces.byIndex(0).path);
- assert.deepEqual(firebaseConfig.value.data, expectedConfig);
- assert.deepEqual(firebaseRC.value.data.projects, expectedRc.projects);
- },
+ assert.deepEqual(firebaseConfig.value.requireValue.data, expectedConfig);
+ assert.deepEqual(
+ firebaseRC.value.requireValue.data.projects,
+ expectedRc.projects
+ );
+ }
);
firebaseTest(
"when firebaseRC signal changes, calls notifyFirebaseConfig",
- () => {
+ async () => {
const initialRC = { projects: { default: "my-project" } };
const newRC = { projects: { default: "my-new-project" } };
const broker = createTestBroker();
@@ -380,12 +386,14 @@ firebaseSuite("registerConfig", () => {
firebaseRc: initialRC,
});
- const disposable = registerConfig(broker);
+ const disposable = await registerConfig(broker);
addDisposable(disposable);
assert.deepEqual(broker.sentLogs, []);
- firebaseRC.value = new RC(firebaseRC.value.path, newRC);
+ firebaseRC.value = new ResultValue(
+ new RC(firebaseRC.value.requireValue.path, newRC)
+ );
assert.deepEqual(broker.sentLogs, [
{
@@ -404,29 +412,29 @@ firebaseSuite("registerConfig", () => {
],
},
]);
- },
+ }
);
firebaseTest(
"when firebaseConfig signal changes, calls notifyFirebaseConfig",
- () => {
- const initialConfig = { emulators: { firemat: { port: 9399 } } };
- const newConfig = { emulators: { firemat: { port: 9499 } } };
+ async () => {
+ const initialConfig = { emulators: { auth: { port: 9399 } } };
+ const newConfig = { emulators: { auth: { port: 9499 } } };
const broker = createTestBroker();
const workspaces = setupMockTestWorkspaces({
firebaseConfig: initialConfig,
});
- const disposable = registerConfig(broker);
+ const disposable = await registerConfig(broker);
addDisposable(disposable);
assert.deepEqual(broker.sentLogs, []);
fs.writeFileSync(
workspaces.byIndex(0).firebaseConfigPath,
- JSON.stringify(newConfig),
+ JSON.stringify(newConfig)
);
- firebaseConfig.value = _readConfig()!;
+ firebaseConfig.value = _readFirebaseConfig()!;
assert.deepEqual(broker.sentLogs, [
{
@@ -435,7 +443,7 @@ firebaseSuite("registerConfig", () => {
{
firebaseJson: {
emulators: {
- firemat: {
+ auth: {
port: 9499,
},
},
@@ -445,20 +453,20 @@ firebaseSuite("registerConfig", () => {
],
},
]);
- },
+ }
);
- firebaseTest("supports undefined working directory", () => {
+ firebaseTest("supports undefined working directory", async () => {
const broker = createTestBroker();
mock(currentOptions, { ...currentOptions.value, cwd: undefined });
- const disposable = registerConfig(broker);
+ const disposable = await registerConfig(broker);
addDisposable(disposable);
// Should not throw.
});
- firebaseTest("disposes of the watchers when disposed", () => {
+ firebaseTest("disposes of the watchers when disposed", async () => {
const broker = createTestBroker();
const dir = createTemporaryDirectory();
@@ -483,13 +491,13 @@ firebaseSuite("registerConfig", () => {
pendingWatchers.push(watcher);
return watcher;
},
- }),
+ })
);
- const disposable = registerConfig(broker);
+ const disposable = await registerConfig(broker);
addDisposable(disposable);
- assert.equal(pendingWatchers.length, 2);
+ assert.equal(pendingWatchers.length, 3);
assert.deepEqual(Object.keys(broker.onListeners), ["getInitialData"]);
disposable.dispose();
@@ -497,16 +505,16 @@ firebaseSuite("registerConfig", () => {
assert.equal(pendingWatchers.length, 0);
assert.deepEqual(Object.keys(broker.onListeners), []);
- firebaseConfig.value = new Config("");
- firebaseRC.value = new RC();
+ firebaseConfig.value = new ResultValue(new Config(""));
+ firebaseRC.value = new ResultValue(new RC());
// Notifying firebaseConfig and firebaseRC should not call notifyFirebaseConfig
assert.deepEqual(broker.sentLogs, []);
});
firebaseTest(
- "listens to create/update/delete events on firebase.json and .firebaserc",
- () => {
+ "listens to create/update/delete events on firebase.json/.firebaserc/dataconnect.yaml",
+ async () => {
const watcherListeners: Record<
string,
{
@@ -519,7 +527,7 @@ firebaseSuite("registerConfig", () => {
function addFSListener(
pattern: string,
type: "create" | "update" | "delete",
- cb: (uri: vscode.Uri) => void,
+ cb: (uri: vscode.Uri) => void
) {
const listeners = (watcherListeners[pattern] ??= {});
assert.equal(watcherListeners[pattern]?.create, undefined);
@@ -544,12 +552,12 @@ firebaseSuite("registerConfig", () => {
dispose: () => {},
});
},
- }),
+ })
);
const broker = createTestBroker();
- const disposable = registerConfig(broker);
+ const disposable = await registerConfig(broker);
addDisposable(disposable);
const rcListeners = watcherListeners[".firebaserc"]!;
@@ -557,27 +565,29 @@ firebaseSuite("registerConfig", () => {
const configListeners = watcherListeners["firebase.json"]!;
const configFile = path.join(dir, "firebase.json");
+ function testEvent(
+ index: number,
+ file: string,
+ content: string,
+ fireWatcher: () => void
+ ) {
+ assert.equal(broker.sentLogs.length, index);
+
+ fs.writeFileSync(file, content);
+ fireWatcher();
+
+ assert.equal(broker.sentLogs.length, index + 1);
+ }
+
function testRcEvent(
event: "create" | "update" | "delete",
- index: number,
+ index: number
) {
- assert.equal(
- broker.sentLogs.length,
+ testEvent(
index,
- `history for RC ${event} starts at ${index}`,
- );
-
- fs.writeFileSync(
rcFile,
JSON.stringify({ projects: { default: event } }),
- );
-
- rcListeners[event]!(vscode.Uri.file(rcFile));
-
- assert.equal(
- broker.sentLogs.length,
- index + 1,
- `history for RC ${event} ends at ${index}`,
+ () => rcListeners[event]!(vscode.Uri.file(rcFile))
);
assert.deepEqual(broker.sentLogs[index].args[0].firebaseRC.projects, {
@@ -587,45 +597,36 @@ firebaseSuite("registerConfig", () => {
function testConfigEvent(
event: "create" | "update" | "delete",
- index: number,
+ index: number
) {
- assert.equal(broker.sentLogs.length, index);
-
- fs.writeFileSync(
+ testEvent(
+ index,
configFile,
- JSON.stringify({ emulators: { firemat: { port: index } } }),
+ JSON.stringify({ emulators: { auth: { port: index } } }),
+ () => configListeners[event]!(vscode.Uri.file(configFile))
);
- configListeners[event]!(vscode.Uri.file(configFile));
-
- assert.equal(broker.sentLogs.length, index + 1);
assert.deepEqual(broker.sentLogs[index].args[0].firebaseJson, {
- emulators: {
- firemat: {
- port: index,
- },
- },
+ emulators: { auth: { port: index } },
});
}
testRcEvent("create", 0);
testRcEvent("update", 1);
- // testRcEvent("delete", 2);
testConfigEvent("create", 2);
testConfigEvent("update", 3);
- // testConfigEvent("delete", 5);
},
);
- firebaseTest("handles getInitialData requests", () => {
+ firebaseTest("handles getInitialData requests", async () => {
const broker = createTestBroker();
- const workspaces = setupMockTestWorkspaces({
+ setupMockTestWorkspaces({
firebaseRc: { projects: { default: "my-project" } },
- firebaseConfig: { emulators: { firemat: { port: 9399 } } },
+ firebaseConfig: { emulators: { auth: { port: 9399 } } },
});
- const disposable = registerConfig(broker);
+ const disposable = await registerConfig(broker);
addDisposable(disposable);
broker.simulateOn("getInitialData");
@@ -637,7 +638,7 @@ firebaseSuite("registerConfig", () => {
{
firebaseJson: {
emulators: {
- firemat: {
+ auth: {
port: 9399,
},
},
diff --git a/firebase-vscode/src/test/suite/index.ts b/firebase-vscode/src/test/suite/src/core/index.ts
similarity index 100%
rename from firebase-vscode/src/test/suite/index.ts
rename to firebase-vscode/src/test/suite/src/core/index.ts
diff --git a/firebase-vscode/src/test/suite/src/dataconnect/config.test.ts b/firebase-vscode/src/test/suite/src/dataconnect/config.test.ts
new file mode 100644
index 00000000000..5a0ff4c221f
--- /dev/null
+++ b/firebase-vscode/src/test/suite/src/dataconnect/config.test.ts
@@ -0,0 +1,111 @@
+import assert from "assert";
+import { createTestBroker } from "../../../utils/broker";
+import { firebaseSuite, addDisposable } from "../../../utils/test_hooks";
+import { setupMockTestWorkspaces } from "../../../utils/workspace";
+import { dataConnectConfigs, registerDataConnectConfigs } from "../../../../data-connect/config";
+import { createTemporaryDirectory } from "../../../utils/fs";
+import { createFake, mock } from "../../../utils/mock";
+import { workspace } from "../../../../utils/test_hooks";
+import * as vscode from "vscode";
+import * as fs from "fs";
+import * as path from "path";
+
+firebaseSuite("registerDataConnectConfigs", async () => {
+ firebaseSuite("handles getInitialData requests", async () => {
+ const broker = createTestBroker();
+ setupMockTestWorkspaces({
+ firebaseRc: { projects: { default: "my-project" } },
+ firebaseConfig: { emulators: { dataconnect: { port: 9399 } } },
+ });
+
+ const disposable = registerDataConnectConfigs();
+ addDisposable(disposable);
+
+ broker.simulateOn("getInitialData");
+
+ assert.deepEqual(broker.sentLogs, [
+ {
+ message: "notifyFirebaseConfig",
+ args: [
+ {
+ firebaseJson: {
+ emulators: {
+ dataconnect: {
+ port: 9399,
+ },
+ },
+ },
+ firebaseRC: {
+ etags: {},
+ projects: {
+ default: "my-project",
+ },
+ targets: {},
+ },
+ },
+ ],
+ },
+ ]);
+ });
+
+ firebaseSuite(
+ "listens to create/update/delete events on firebase.json/.firebaserc/firemat.yaml",
+ async () => {
+ const watcherListeners: Record<
+ string,
+ {
+ create?: (uri: vscode.Uri) => void;
+ update?: (uri: vscode.Uri) => void;
+ delete?: (uri: vscode.Uri) => void;
+ }
+ > = {};
+
+ function addFSListener(
+ pattern: string,
+ type: "create" | "update" | "delete",
+ cb: (uri: vscode.Uri) => void,
+ ) {
+ const listeners = (watcherListeners[pattern] ??= {});
+ assert.equal(watcherListeners[pattern]?.create, undefined);
+ listeners[type] = cb;
+ return { dispose: () => {} };
+ }
+
+ const dir = createTemporaryDirectory();
+ mock(
+ workspace,
+ createFake({
+ workspaceFolders: [
+ createFake({ uri: vscode.Uri.file(dir) }),
+ ],
+ // Override "createFileSystemWatcher" to spy on the watchers.
+ createFileSystemWatcher: (pattern) => {
+ const file = (pattern as vscode.RelativePattern).pattern;
+ return createFake({
+ onDidCreate: (cb) => addFSListener(file, "create", cb),
+ onDidChange: (cb) => addFSListener(file, "update", cb),
+ onDidDelete: (cb) => addFSListener(file, "delete", cb),
+ dispose: () => {},
+ });
+ },
+ }),
+ );
+
+ const disposable = await registerDataConnectConfigs();
+ addDisposable(disposable);
+
+ const dataConnectListeners = watcherListeners["**/{dataconnect,connector}.yaml"]!;
+ const dataConnectFile = path.join(dir, "**/{dataconnect,connector}.yaml");
+
+ function testDataConnectEvent(event: "create" | "update" | "delete") {
+ fs.writeFileSync(dataConnectFile, `specVersion: ${event}`);
+ dataConnectListeners[event]!(vscode.Uri.file(dataConnectFile));
+
+ assert.deepEqual(dataConnectConfigs.value, [{}]);
+ }
+
+ testDataConnectEvent("create");
+ testDataConnectEvent("update");
+ },
+ );
+});
diff --git a/firebase-vscode/src/test/test_projects/.gitignore b/firebase-vscode/src/test/test_projects/.gitignore
new file mode 100644
index 00000000000..532fdcead69
--- /dev/null
+++ b/firebase-vscode/src/test/test_projects/.gitignore
@@ -0,0 +1,2 @@
+# Don't commit generated files
+**/.dataconnect/
\ No newline at end of file
diff --git a/firebase-vscode/src/test/test_projects/fishfood/.firebaserc b/firebase-vscode/src/test/test_projects/fishfood/.firebaserc
new file mode 100644
index 00000000000..433140fb0b2
--- /dev/null
+++ b/firebase-vscode/src/test/test_projects/fishfood/.firebaserc
@@ -0,0 +1,8 @@
+{
+ "projects": {
+ "default": "dart-firebase-admin"
+ },
+ "targets": {},
+ "etags": {},
+ "dataconnectEmulatorConfig": {}
+}
\ No newline at end of file
diff --git a/firebase-vscode/src/test/test_projects/fishfood/.gitignore b/firebase-vscode/src/test/test_projects/fishfood/.gitignore
new file mode 100644
index 00000000000..dbb58ffbfa3
--- /dev/null
+++ b/firebase-vscode/src/test/test_projects/fishfood/.gitignore
@@ -0,0 +1,66 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+firebase-debug.log*
+firebase-debug.*.log*
+
+# Firebase cache
+.firebase/
+
+# Firebase config
+
+# Uncomment this if you'd like others to create their own Firebase project.
+# For a team working on the same Firebase project(s), it is recommended to leave
+# it commented so all members can deploy to the same project(s) in .firebaserc.
+# .firebaserc
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
diff --git a/firebase-vscode/src/test/test_projects/fishfood/.graphqlrc b/firebase-vscode/src/test/test_projects/fishfood/.graphqlrc
new file mode 100644
index 00000000000..1f7cc9f639f
--- /dev/null
+++ b/firebase-vscode/src/test/test_projects/fishfood/.graphqlrc
@@ -0,0 +1,9 @@
+schema:
+ - ./dataconnect/schema/**/*.gql
+ - ./dataconnect/.dataconnect/**/*.gql
+documents:
+ - ./dataconnect/connectors/**/*.gql
+extensions:
+ endpoints:
+ default:
+ url: http://127.0.0.1:8080/__/graphql
diff --git a/firebase-vscode/src/test/test_projects/fishfood/dataconnect/connectors/a/connector.yaml b/firebase-vscode/src/test/test_projects/fishfood/dataconnect/connectors/a/connector.yaml
new file mode 100644
index 00000000000..d6e6b5dbb3e
--- /dev/null
+++ b/firebase-vscode/src/test/test_projects/fishfood/dataconnect/connectors/a/connector.yaml
@@ -0,0 +1,4 @@
+connectorId: "a"
+authMode: "PUBLIC"
+generate?:
+ outputDir: ../../a_connector_js_sdk
diff --git a/firebase-vscode/src/test/test_projects/fishfood/dataconnect/connectors/a/mutations.gql b/firebase-vscode/src/test/test_projects/fishfood/dataconnect/connectors/a/mutations.gql
new file mode 100644
index 00000000000..2fb9447ab34
--- /dev/null
+++ b/firebase-vscode/src/test/test_projects/fishfood/dataconnect/connectors/a/mutations.gql
@@ -0,0 +1,10 @@
+mutation createPost($id: String, $content: String) @auth(level: PUBLIC) {
+ post_insert(data: { id: $id, content: $content })
+}
+mutation deletePost($id: String!) @auth(level: PUBLIC) {
+ post_delete(id: $id)
+}
+
+mutation createComment($id: String, $content: String) @auth(level: PUBLIC) {
+ comment_insert(data: { id: $id, content: $content })
+}
diff --git a/firebase-vscode/src/test/test_projects/fishfood/dataconnect/connectors/a/queries.gql b/firebase-vscode/src/test/test_projects/fishfood/dataconnect/connectors/a/queries.gql
new file mode 100644
index 00000000000..86b19536f80
--- /dev/null
+++ b/firebase-vscode/src/test/test_projects/fishfood/dataconnect/connectors/a/queries.gql
@@ -0,0 +1,22 @@
+query getPost($id: String!) @auth(level: PUBLIC) {
+ post(id: $id) {
+ content
+ comments: comments_on_post {
+ id
+ content
+ }
+ }
+}
+
+query listPostsForUser($userId: String!) @auth(level: PUBLIC) {
+ posts(where: { id: { eq: $userId } }) {
+ id
+ content
+ }
+}
+
+query listPostsOnlyId @auth(level: PUBLIC) {
+ posts {
+ id
+ }
+}
diff --git a/firebase-vscode/src/test/test_projects/fishfood/dataconnect/dataconnect.yaml b/firebase-vscode/src/test/test_projects/fishfood/dataconnect/dataconnect.yaml
new file mode 100644
index 00000000000..960fac366fb
--- /dev/null
+++ b/firebase-vscode/src/test/test_projects/fishfood/dataconnect/dataconnect.yaml
@@ -0,0 +1,11 @@
+specVersion: v1alpha
+serviceId: us-east
+connectorDirs:
+ - ./connectors/a
+schema:
+ source: ./schema
+ datasource:
+ postgresql:
+ database: "my-database"
+ cloudSql:
+ instanceId: "dataconnect-test"
diff --git a/firebase-vscode/src/test/test_projects/fishfood/dataconnect/schema/schema.gql b/firebase-vscode/src/test/test_projects/fishfood/dataconnect/schema/schema.gql
new file mode 100644
index 00000000000..6f3a5c03a31
--- /dev/null
+++ b/firebase-vscode/src/test/test_projects/fishfood/dataconnect/schema/schema.gql
@@ -0,0 +1,10 @@
+type Post @table {
+ id: String!
+ content: String!
+}
+
+type Comment @table {
+ id: String!
+ content: String!
+ post: Post!
+}
diff --git a/firebase-vscode/src/test/test_projects/fishfood/firebase.json b/firebase-vscode/src/test/test_projects/fishfood/firebase.json
new file mode 100644
index 00000000000..5060f798c51
--- /dev/null
+++ b/firebase-vscode/src/test/test_projects/fishfood/firebase.json
@@ -0,0 +1,18 @@
+{
+ "dataconnect": {
+ "source": "./dataconnect",
+ "location": "api"
+ },
+ "emulators": {
+ "auth": {
+ "port": 9099
+ },
+ "dataconnect": {
+ "port": 9399
+ },
+ "ui": {
+ "enabled": false
+ },
+ "singleProjectMode": true
+ }
+}
diff --git a/firebase-vscode/src/test/utils/broker.ts b/firebase-vscode/src/test/utils/broker.ts
index 0a0e86163be..ae210477c82 100644
--- a/firebase-vscode/src/test/utils/broker.ts
+++ b/firebase-vscode/src/test/utils/broker.ts
@@ -2,7 +2,7 @@ import { BrokerImpl, Receiver } from "../../messaging/broker";
import {
MessageParamsMap,
WebviewToExtensionParamsMap,
-} from "../../messaging/protocol";
+} from "../../../common/messaging/protocol";
import { createFake } from "./mock";
export type SentLog = { message: string; args: any[] };
diff --git a/firebase-vscode/src/test/utils/fs.ts b/firebase-vscode/src/test/utils/fs.ts
index b4423ae1eb3..df2b447f8f9 100644
--- a/firebase-vscode/src/test/utils/fs.ts
+++ b/firebase-vscode/src/test/utils/fs.ts
@@ -14,10 +14,10 @@ export type CreateTemporaryDirectoryOptions = {
let _increment = 0;
export function createTemporaryDirectory(
- options: CreateTemporaryDirectoryOptions = {},
+ options: CreateTemporaryDirectoryOptions = {}
) {
const debugLabel = `${
- options.debugLabel || "firemat-test"
+ options.debugLabel || "data-connect-test"
}-${Date.now()}-${_increment++}`;
const relativeDir = options.parent
@@ -49,7 +49,8 @@ export function createFile(
}
fs.writeFileSync(filePath, content);
- addTearDown(() => fs.rmSync(filePath));
+ // Using "force" in case the file is deleted before tearDown is ran
+ addTearDown(() => fs.rmSync(filePath, { force: true }));
return filePath;
}
diff --git a/firebase-vscode/src/test/utils/mock.ts b/firebase-vscode/src/test/utils/mock.ts
index 858ac2ce50c..c64b6f8ead9 100644
--- a/firebase-vscode/src/test/utils/mock.ts
+++ b/firebase-vscode/src/test/utils/mock.ts
@@ -23,9 +23,12 @@ export function createFake(overrides: Partial = {}): T {
return proxy as T;
}
+/** A function designed to mock objects inside unit tests */
export function mock(ref: Ref, value: Partial | undefined) {
const current = ref.value;
- addTearDown(() => (ref.value = current));
+ addTearDown(() => {
+ ref.value = current;
+ });
const fake = !value ? value : createFake(value);
diff --git a/firebase-vscode/src/test/utils/page_objects/commands.ts b/firebase-vscode/src/test/utils/page_objects/commands.ts
new file mode 100644
index 00000000000..db2f79f4ca9
--- /dev/null
+++ b/firebase-vscode/src/test/utils/page_objects/commands.ts
@@ -0,0 +1,20 @@
+import * as vscode from "vscode";
+import { addTearDown } from "../test_hooks";
+
+export class FirebaseCommands {
+ async startEmulators() {
+ await browser.executeWorkbench(async (vs: typeof vscode) => {
+ return vs.commands.executeCommand("firebase.emulators.start");
+ });
+
+ // Stop emulators after tests to ensure follow-up tests
+ // start from a clean slate
+ addTearDown(() => this.stopEmulators());
+ }
+
+ async stopEmulators() {
+ await browser.executeWorkbench(async (vs: typeof vscode) => {
+ return vs.commands.executeCommand("firebase.emulators.stop");
+ });
+ }
+}
diff --git a/firebase-vscode/src/test/utils/page_objects/editor.ts b/firebase-vscode/src/test/utils/page_objects/editor.ts
new file mode 100644
index 00000000000..d096474b8e3
--- /dev/null
+++ b/firebase-vscode/src/test/utils/page_objects/editor.ts
@@ -0,0 +1,26 @@
+import * as vscode from "vscode";
+import { Workbench } from "wdio-vscode-service";
+import { addTearDown } from "../test_hooks";
+
+export class EditorView {
+ constructor(readonly workbench: Workbench) {}
+
+ private readonly editorView = this.workbench.getEditorView();
+
+ get firstCodeLense() {
+ return this.editorView.elem.$(".codelens-decoration");
+ }
+
+ get codeLensesElements() {
+ return this.editorView.elem.$$(".codelens-decoration");
+ }
+
+ async openFile(path: string) {
+ // TODO - close opened editors after tests
+ return browser.executeWorkbench(async (vs: typeof vscode, path) => {
+ const doc = await vs.workspace.openTextDocument(path);
+
+ return vs.window.showTextDocument(doc, 1, false);
+ }, path);
+ }
+}
diff --git a/firebase-vscode/src/test/utils/page_objects/execution.ts b/firebase-vscode/src/test/utils/page_objects/execution.ts
new file mode 100644
index 00000000000..bc75680681c
--- /dev/null
+++ b/firebase-vscode/src/test/utils/page_objects/execution.ts
@@ -0,0 +1,114 @@
+import { Workbench } from "wdio-vscode-service";
+import { findWebviewWithTitle, runInFrame } from "../webviews";
+
+export class ExecutionPanel {
+ constructor(readonly workbench: Workbench) {
+ this.history = new HistoryView(workbench);
+ }
+
+ readonly history: HistoryView;
+
+ async open(): Promise {
+ await this.workbench.executeCommand(
+ "data-connect-execution-configuration.focus"
+ );
+ }
+
+ async setVariables(variables: string): Promise {
+ // TODO revert to the original value after test
+
+ await this.runInConfigurationContext(async (configs) => {
+ await configs.variablesTextarea.setValue(variables);
+ });
+ }
+
+ async runInConfigurationContext(
+ cb: (configs: ConfigurationView) => Promise
+ ): Promise {
+ const [a, b] = await findWebviewWithTitle("Configuration");
+
+ return runInFrame(a, () =>
+ runInFrame(b, () => cb(new ConfigurationView(this.workbench)))
+ );
+ }
+}
+
+export class ConfigurationView {
+ constructor(readonly workbench: Workbench) {}
+
+ get variablesView() {
+ return $(`vscode-panel-view[aria-labelledby="tab-1"]`);
+ }
+
+ get variablesTextarea() {
+ return this.variablesView.$("textarea");
+ }
+}
+
+export class HistoryView {
+ constructor(readonly workbench: Workbench) {}
+
+ get itemsElement() {
+ return $$(".monaco-list-row");
+ }
+
+ get selectedItemElement() {
+ return $(".monaco-list-row.selected");
+ }
+
+ async getSelectedItem(): Promise {
+ return new HistoryItem(await this.selectedItemElement);
+ }
+
+ async getItems(): Promise {
+ // Array.from as workaround to https://github.com/webdriverio-community/wdio-vscode-service/issues/100#issuecomment-1932468126
+ const items = Array.from(await this.itemsElement);
+
+ return items.map((item) => new HistoryItem(item));
+ }
+}
+
+export class HistoryItem {
+ constructor(private readonly elem: WebdriverIO.Element) {}
+
+ get iconElement() {
+ return this.elem.$(".custom-view-tree-node-item-icon");
+ }
+
+ get labelElement() {
+ return this.elem.$(".label-name");
+ }
+
+ get descriptionElement() {
+ return this.elem.$(".label-description");
+ }
+
+ async getStatus(): Promise<"success" | "error" | "pending" | "warning"> {
+ const icon = await this.iconElement;
+ const clazz = await icon.getAttribute("class");
+
+ const classes = clazz.split(" ");
+
+ if (classes.includes("codicon-pass")) {
+ return "success";
+ }
+
+ if (classes.includes("codicon-warning")) {
+ return "warning";
+ }
+
+ if (classes.includes("codicon-close")) {
+ return "error";
+ }
+
+ return "pending";
+ }
+
+ async getLabel() {
+ return this.labelElement.getText();
+ }
+
+ async getDescription() {
+ return this.descriptionElement.getText();
+ }
+}
diff --git a/firebase-vscode/src/test/utils/page_objects/quick_picks.ts b/firebase-vscode/src/test/utils/page_objects/quick_picks.ts
new file mode 100644
index 00000000000..c27adffc1dd
--- /dev/null
+++ b/firebase-vscode/src/test/utils/page_objects/quick_picks.ts
@@ -0,0 +1,20 @@
+import { Workbench } from "wdio-vscode-service";
+
+/* Workaround to workbench not exposing a way to get an InputBox
+ * without triggering a command. */
+
+export class QuickPick {
+ constructor(readonly workbench: Workbench) {}
+
+ get okElement() {
+ return $("a=OK");
+ }
+
+ async findQuickPicks() {
+ // TODO find a way to use InputBox manually that does not trigger a build error
+ return await $(".quick-input-widget")
+ .$(".quick-input-list")
+ .$(".monaco-list-rows")
+ .$$(".monaco-list-row");
+ }
+}
diff --git a/firebase-vscode/src/test/utils/page_objects/sidebar.ts b/firebase-vscode/src/test/utils/page_objects/sidebar.ts
new file mode 100644
index 00000000000..da564c77c9c
--- /dev/null
+++ b/firebase-vscode/src/test/utils/page_objects/sidebar.ts
@@ -0,0 +1,70 @@
+import { Workbench } from "wdio-vscode-service";
+import { findWebviewWithTitle, runInFrame } from "../webviews";
+import * as vscode from "vscode";
+
+export class FirebaseSidebar {
+ constructor(readonly workbench: Workbench) {}
+
+ async open() {
+ await browser.executeWorkbench((vs: typeof vscode) => {
+ return vs.commands.executeCommand(
+ "firebase.dataConnect.explorerView.focus"
+ );
+ });
+ }
+
+ get hostBtn() {
+ return $("vscode-button=Host your Web App");
+ }
+
+ get startEmulatorBtn() {
+ return $("vscode-button=Launch Data Connect emulator");
+ }
+
+ get stopEmulatorBtn() {
+ return $("vscode-button=Click to stop the emulators");
+ }
+
+ get fdcDeployElement() {
+ return $(".codicon-cloud-upload");
+ }
+
+ /** Starts the emulators and waits for the emulators to be started.
+ *
+ * This starts emulators by clicking on the button instead of using
+ * the command.
+ */
+ async startEmulators() {
+ await this.open();
+
+ await this.runInFirebaseViewContext(async () => {
+ await this.startEmulatorBtn.click();
+
+ // Wait for the emulators to be started
+ await this.stopEmulatorBtn.waitForDisplayed();
+ });
+ }
+
+ /** Runs the callback in the context of the Firebase view, within the sidebar */
+ async runInFirebaseViewContext(
+ cb: (firebase: FirebaseView) => Promise
+ ): Promise {
+ const [a, b] = await findWebviewWithTitle("Config");
+
+ return runInFrame(a, () =>
+ runInFrame(b, () => cb(new FirebaseView(this.workbench)))
+ );
+ }
+}
+
+export class FirebaseView {
+ constructor(readonly workbench: Workbench) {}
+
+ get userIconElement() {
+ return $(".codicon-account");
+ }
+
+ get connectProjectLinkElement() {
+ return $("vscode-link=Connect a Firebase project");
+ }
+}
diff --git a/firebase-vscode/src/test/utils/page_objects/status_bar.ts b/firebase-vscode/src/test/utils/page_objects/status_bar.ts
new file mode 100644
index 00000000000..dbcfe0516c3
--- /dev/null
+++ b/firebase-vscode/src/test/utils/page_objects/status_bar.ts
@@ -0,0 +1,13 @@
+import { Workbench } from "wdio-vscode-service";
+
+export class StatusBar {
+ constructor(readonly workbench: Workbench) {}
+
+ get emulatorsStatus() {
+ return $('[id="firebase.firebase-vscode.emulators"]');
+ }
+
+ get currentProjectElement() {
+ return $('[id="firebase.firebase-vscode.projectPicker"]');
+ }
+}
diff --git a/firebase-vscode/src/test/utils/projects.ts b/firebase-vscode/src/test/utils/projects.ts
new file mode 100644
index 00000000000..735952af52e
--- /dev/null
+++ b/firebase-vscode/src/test/utils/projects.ts
@@ -0,0 +1,11 @@
+import * as path from "path";
+
+export const mutationsPath = path.resolve(
+ process.cwd(),
+ "src/test/test_projects/fishfood/dataconnect/connectors/a/mutations.gql"
+);
+
+export const queriesPath = path.resolve(
+ process.cwd(),
+ "src/test/test_projects/fishfood/dataconnect/connectors/a/queries.gql"
+);
diff --git a/firebase-vscode/src/test/utils/test_hooks.ts b/firebase-vscode/src/test/utils/test_hooks.ts
index fc8fa6b3648..a808ae7e082 100644
--- a/firebase-vscode/src/test/utils/test_hooks.ts
+++ b/firebase-vscode/src/test/utils/test_hooks.ts
@@ -1,6 +1,6 @@
import * as vscode from "vscode";
-let tearDowns: Array<() => void> = [];
+let tearDowns: Array<() => void | Promise> = [];
/** Registers a logic to run after the current test ends.
*
@@ -8,7 +8,7 @@ let tearDowns: Array<() => void> = [];
*
* The callback is bound to the suite, and when that suite/test ends, the callback is unregistered.
*/
-export function addTearDown(cb: () => void) {
+export function addTearDown(cb: () => void | Promise) {
tearDowns.push(cb);
}
@@ -22,39 +22,39 @@ export function addDisposable(disposable: vscode.Disposable | undefined) {
}
}
-let setups: Array<() => void> = [];
+let setups: Array<() => void | Promise> = [];
/** Registers initialization logic to run before every tests in that suite.
*
* The callback is bound to the suite, and when that suite ends, the callback is unregistered.
*/
-export function setup(cb: () => void) {
+export function setup(cb: () => void | Promise) {
setups.push(cb);
}
/** A custom "test" to work around "afterEach" not working with the current configs */
export function firebaseTest(
description: string,
- cb: () => void | Promise,
+ cb: (this: Mocha.Context) => void | Promise
) {
// Since tests may execute in any order, we dereference the list of setup callbacks
// to unsure that other suites' setups don't affect this test.
const testSetups = [...setups];
const testTearDowns = [...tearDowns];
- test(description, async () => {
+ test(description, async function () {
// Tests may call addTearDown to register a callback to run after the test ends.
// We make sure those callbacks are applied only to this test.
const previousTearDowns = tearDowns;
tearDowns = testTearDowns;
- runGuarded(testSetups);
+ await runGuarded(testSetups);
try {
- await cb();
+ await cb.call(this);
} finally {
+ await runGuarded(testTearDowns.reverse());
tearDowns = previousTearDowns;
- runGuarded(testTearDowns.reverse());
}
});
}
@@ -82,16 +82,16 @@ export function firebaseSuite(description: string, cb: () => void) {
*
* If at least one error is thrown, the first one is rethrown.
*/
-function runGuarded(callbacks: Array<() => void>) {
+async function runGuarded(callbacks: Array<() => void | Promise>) {
let firstError: Error | undefined;
- callbacks.forEach((cb) => {
+ for (const cb of callbacks) {
try {
- cb();
+ await cb();
} catch (e) {
firstError ??= e;
}
- });
+ }
if (firstError) {
throw firstError;
diff --git a/firebase-vscode/src/test/utils/webviews.ts b/firebase-vscode/src/test/utils/webviews.ts
new file mode 100644
index 00000000000..094828fe553
--- /dev/null
+++ b/firebase-vscode/src/test/utils/webviews.ts
@@ -0,0 +1,46 @@
+/** An utility to find a Webview with a given name.
+ *
+ * This uses a nested loop because the webviews are nested in iframes.
+ *
+ * Returns the path of elements pointing to the titled webview.
+ * This is typically then sent to [runInFrame].
+ */
+export async function findWebviewWithTitle(title: string) {
+ const start = Date.now();
+
+ /* Keep running until at least 5 seconds have passed. */
+ while (Date.now() - start < 5000) {
+ // Using Array.from because $$ returns a fake array object
+ const iFrames = Array.from(await $$("iframe.webview.ready"));
+
+ for (const iframe of iFrames) {
+ try {
+ await browser.switchToFrame(iframe);
+
+ const frameWithTitle = $(`iframe[title="${title}"]`);
+ if (await frameWithTitle.isExisting()) {
+ return [iframe, await frameWithTitle];
+ }
+ } finally {
+ await browser.switchToParentFrame();
+ }
+ }
+ }
+
+ throw new Error(`Could not find webview with title: ${title}`);
+}
+
+export async function runInFrame(
+ element: object,
+ cb: () => Promise
+): Promise {
+ await browser.switchToFrame(element);
+
+ // Using try/finally to ensure we switch back to the parent frame
+ // no matter if the test passes or fails.
+ try {
+ return await cb();
+ } finally {
+ await browser.switchToParentFrame();
+ }
+}
diff --git a/firebase-vscode/src/test/utils/workspace.ts b/firebase-vscode/src/test/utils/workspace.ts
index 39c69a7aa30..3206778e09f 100644
--- a/firebase-vscode/src/test/utils/workspace.ts
+++ b/firebase-vscode/src/test/utils/workspace.ts
@@ -59,7 +59,7 @@ export function setupMockTestWorkspaces(
workspaceFolders: workspaceFolders.map((workspace) =>
createFake({
uri: vscode.Uri.file(workspace.path),
- }),
+ })
),
createFileSystemWatcher: (...args) => {
// We don't mock watchers, so we defer to the real implementation.
diff --git a/firebase-vscode/src/utils/env.ts b/firebase-vscode/src/utils/env.ts
new file mode 100644
index 00000000000..4d2a6da47cb
--- /dev/null
+++ b/firebase-vscode/src/utils/env.ts
@@ -0,0 +1,2 @@
+// Set by the `package.json` file
+export const isTest = !!process.env.TEST;
diff --git a/firebase-vscode/src/utils/graphql.ts b/firebase-vscode/src/utils/graphql.ts
new file mode 100644
index 00000000000..603b6c72d13
--- /dev/null
+++ b/firebase-vscode/src/utils/graphql.ts
@@ -0,0 +1,12 @@
+import * as graphql from "graphql";
+import * as vscode from "vscode";
+
+export function locationToRange(location: graphql.Location): vscode.Range {
+ // -1 because Range uses 0-based indexing but Location uses 1-based indexing
+ return new vscode.Range(
+ location.startToken.line - 1,
+ location.startToken.column - 1,
+ location.endToken.line - 1,
+ location.endToken.column - 1
+ );
+}
diff --git a/firebase-vscode/src/utils/promise.ts b/firebase-vscode/src/utils/promise.ts
new file mode 100644
index 00000000000..e0b2f13069e
--- /dev/null
+++ b/firebase-vscode/src/utils/promise.ts
@@ -0,0 +1,18 @@
+export function cancelableThen(
+ promise: Promise,
+ then: (t: T) => void,
+): { cancel: () => void } {
+ let canceled = false;
+ function cancel() {
+ canceled = true;
+ }
+
+ promise.then((t) => {
+ if (!canceled) {
+ then(t);
+ }
+ return t;
+ });
+
+ return { cancel };
+}
diff --git a/firebase-vscode/src/utils/signal.ts b/firebase-vscode/src/utils/signal.ts
index 92649294c3c..8a45af35cd1 100644
--- a/firebase-vscode/src/utils/signal.ts
+++ b/firebase-vscode/src/utils/signal.ts
@@ -2,7 +2,7 @@ import { Signal } from "@preact/signals-react";
/** Waits for a signal value to not be undefined */
export async function firstWhereDefined(
- signal: Signal
+ signal: Signal,
): Promise {
const result = await firstWhere(signal, (v) => v !== undefined);
return result!;
@@ -11,7 +11,7 @@ export async function firstWhereDefined(
/** Waits for a signal value to respect a certain condition */
export function firstWhere(
signal: Signal,
- predicate: (value: T) => boolean
+ predicate: (value: T) => boolean,
): Promise {
return new Promise((resolve) => {
const dispose = signal.subscribe((value) => {
@@ -22,3 +22,25 @@ export function firstWhere(
});
});
}
+
+/** Calls a callback when the signal value changes.
+ *
+ * This will not call the callback immediately, but only after the value changes.
+ */
+export function onChange(
+ signal: Signal,
+ callback: (previous: T, value: T) => void,
+): () => void {
+ var previous: { value: T } | undefined = undefined;
+
+ return signal.subscribe((value) => {
+ // Updating "previous" before calling the callback,
+ // to handle cases where the callback throws an error.
+ const previousValue = previous;
+ previous = { value };
+
+ if (previousValue) {
+ callback(previousValue.value, value);
+ }
+ });
+}
diff --git a/firebase-vscode/src/utils/test_hooks.ts b/firebase-vscode/src/utils/test_hooks.ts
index 43aef36118b..2d55094c2c7 100644
--- a/firebase-vscode/src/utils/test_hooks.ts
+++ b/firebase-vscode/src/utils/test_hooks.ts
@@ -5,3 +5,43 @@ export type Ref = { value: T };
export type Workspace = typeof vscode.workspace;
export const workspace: Ref = { value: vscode.workspace };
+
+export interface Mockable any> {
+ call: (...args: Parameters) => ReturnType;
+
+ dispose(): void;
+}
+
+export function createE2eMockable any>(
+ cb: T,
+ key: string,
+ fallback: () => ReturnType
+): Mockable {
+ let value: (...args: Parameters) => ReturnType = cb;
+ const calls: Parameters[] = [];
+
+ // A command used by e2e tests to replace the `deploy` function with a mock.
+ // It is not part of the public API.
+ const command = vscode.commands.registerCommand(
+ `fdc-graphql.spy.${key}`,
+ (options?: { spy?: boolean }) => {
+ // Explicitly checking true/false to not update the value if `undefined`.
+ if (options?.spy === false) {
+ value = cb;
+ } else if (options?.spy === true) {
+ value = fallback;
+ }
+
+ return calls;
+ }
+ );
+
+ return {
+ call: (...args: Parameters) => {
+ calls.push(args);
+
+ return value(...args);
+ },
+ dispose: command.dispose,
+ };
+}
diff --git a/firebase-vscode/src/webview.ts b/firebase-vscode/src/webview.ts
index 68eb093c86c..41d00e161a2 100644
--- a/firebase-vscode/src/webview.ts
+++ b/firebase-vscode/src/webview.ts
@@ -95,7 +95,11 @@ export function registerWebview(params: RegisterWebviewParams): Disposable {
params.onResolve?.(webviewView.webview);
}
- return vscode.window.registerWebviewViewProvider(params.name, {
- resolveWebviewView,
- });
+ return vscode.window.registerWebviewViewProvider(
+ params.name,
+ {
+ resolveWebviewView,
+ },
+ { webviewOptions: { retainContextWhenHidden: true } }
+ );
}
diff --git a/firebase-vscode/tsconfig.json b/firebase-vscode/tsconfig.json
index d13ff9f0c38..8ea95f16b7f 100644
--- a/firebase-vscode/tsconfig.json
+++ b/firebase-vscode/tsconfig.json
@@ -15,5 +15,8 @@
"rootDirs": ["src", "../src", "common"],
"strict": false /* enable all strict type-checking options */
},
+ "ts-node": {
+ "esm": true
+ },
"include": ["src/**/*", "common/**/*"]
}
diff --git a/firebase-vscode/webpack.common.js b/firebase-vscode/webpack.common.js
index 5e7a9da1da2..746e579be45 100644
--- a/firebase-vscode/webpack.common.js
+++ b/firebase-vscode/webpack.common.js
@@ -14,7 +14,13 @@ const extensionConfig = {
name: "extension",
target: "node", // vscode extensions run in webworker context for VS Code web 📖 -> https://webpack.js.org/configuration/target/#target
- entry: "./src/extension.ts", // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/
+ entry: {
+ extension: "./src/extension.ts",
+ server: {
+ import: "./src/data-connect/language-server.ts",
+ filename: "[name].js",
+ },
+ }, // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/
output: {
// the bundle is stored in the 'dist' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/
path: path.resolve(__dirname, "dist"),
@@ -23,8 +29,45 @@ const extensionConfig = {
devtoolModuleFilenameTemplate: "../[resource-path]",
},
devtool: "source-map",
+ externalsType: "commonjs",
externals: {
- vscode: 'commonjs vscode' // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/
+ vscode: "vscode", // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/
+ // avoid dynamic depencies from @vue/compiler-sfc
+ squirrelly: "squirrelly",
+ teacup: "teacup",
+ "teacup/lib/express": "teacup/lib/express",
+ "coffee-script": "coffee-script",
+ marko: "marko",
+ slm: "slm",
+ vash: "vash",
+ plates: "plates",
+ "babel-core": "babel-core",
+ htmling: "htmling",
+ ractive: "ractive",
+ mote: "mote",
+ eco: "eco",
+ jqtpl: "jqtpl",
+ hamljs: "hamljs",
+ jazz: "jazz",
+ hamlet: "hamlet",
+ whiskers: "whiskers",
+ "haml-coffee": "haml-coffee",
+ "hogan.js": "hogan.js",
+ templayed: "templayed",
+ walrus: "walrus",
+ mustache: "mustache",
+ just: "just",
+ ect: "ect",
+ toffee: "toffee",
+ twing: "twing",
+ dot: "dot",
+ "bracket-template": "bracket-template",
+ velocityjs: "velocityjs",
+ "dustjs-linkedin": "dustjs-linkedin",
+ atpl: "atpl",
+ liquor: "liquor",
+ twig: "twig",
+ handlebars: "handlebars",
},
resolve: {
// support reading TypeScript and JavaScript files, 📖 -> https://github.com/TypeStrong/ts-loader
@@ -33,15 +76,18 @@ const extensionConfig = {
extensions: [".ts", ".js"],
alias: {
// provides alternate implementation for node module and source files
- "marked-terminal": path.resolve(__dirname, 'src/stubs/empty-class.js'),
+ "marked-terminal": path.resolve(__dirname, "src/stubs/empty-class.js"),
// "ora": path.resolve(__dirname, 'src/stubs/empty-function.js'),
- "commander": path.resolve(__dirname, 'src/stubs/empty-class.js'),
- "inquirer": path.resolve(__dirname, 'src/stubs/inquirer-stub.js'),
- "inquirer-autocomplete-prompt": path.resolve(__dirname, 'src/stubs/inquirer-stub.js'),
+ commander: path.resolve(__dirname, "src/stubs/empty-class.js"),
+ inquirer: path.resolve(__dirname, "src/stubs/inquirer-stub.js"),
+ "inquirer-autocomplete-prompt": path.resolve(
+ __dirname,
+ "src/stubs/inquirer-stub.js",
+ ),
// This is used for Github deploy to hosting - will need to restore
// or find another solution if we add that feature.
- "libsodium-wrappers": path.resolve(__dirname, 'src/stubs/empty-class.js'),
- "marked": path.resolve(__dirname, 'src/stubs/marked.js')
+ "libsodium-wrappers": path.resolve(__dirname, "src/stubs/empty-class.js"),
+ marked: path.resolve(__dirname, "src/stubs/marked.js"),
},
fallback: {
// Webpack 5 no longer polyfills Node.js core modules automatically.
@@ -93,13 +139,13 @@ const extensionConfig = {
// a temporary fix.
{
search: /module\.exports\.([a-zA-Z0-9]+)\(/g,
- replace: (match) => match.replace('module.exports.', '')
+ replace: (match) => match.replace("module.exports.", ""),
},
// cloudtasks.ts type casts so there's an " as [type]" before the
// starting paren to call the function
{
search: /module\.exports\.([a-zA-Z0-9]+) as/g,
- replace: (match) => match.replace('module.exports.', '')
+ replace: (match) => match.replace("module.exports.", ""),
},
// Disallow starting . to ensure it doesn't conflict with
// module.exports
@@ -107,8 +153,8 @@ const extensionConfig = {
// such as "exports.something = value"
{
search: /[^\.]exports\.([a-zA-Z0-9]+)\(/g,
- replace: (match) => match.replace('exports.', '')
- }
+ replace: (match) => match.replace("exports.", ""),
+ },
],
},
},
@@ -122,18 +168,23 @@ const extensionConfig = {
// TODO: copy the dependency into dist instead of removing them via search/replace.
{
search: 'RE2 = require("re2");',
- replace: 'RE2 = null;'
+ replace: "RE2 = null;",
},
// firebase-tools/node_modules/superstatic/lib/middleware/index.js
// Stub out these runtime requirements
// TODO: copy the dependencies into dist instead of removing them via search/replace.
{
- search: 'const mware = require("./" + _.kebabCase(name))(spec, config);',
- replace: 'return "";'
- }
+ search:
+ 'const mware = require("./" + _.kebabCase(name))(spec, config);',
+ replace: 'return "";',
+ },
],
- }
- }
+ },
+ },
+ {
+ test: /.node$/,
+ loader: "node-loader",
+ },
],
},
plugins: [
@@ -151,24 +202,24 @@ const extensionConfig = {
// firebase-tools/src/parseTriggers.ts
{
from: "*.js",
- to: './',
+ to: "./",
context: "../src/deploy/functions/runtimes/node",
},
// Copy cross-env-shell.js used to run predeploy scripts
// to ensure they work in Windows
{
from: "../node_modules/cross-env/dist",
- to: './cross-env/dist',
+ to: "./cross-env/dist",
},
],
- })
+ }),
],
infrastructureLogging: {
level: "log", // enables logging required for problem matchers
},
};
-function makeWebConfig(entryName) {
+function makeWebConfig(entryName) {
return {
name: entryName,
mode: "none", // this leaves the source code as close as possible to the original (when packaging we set this to 'production')
@@ -231,7 +282,7 @@ function makeWebConfig(entryName) {
],
devtool: "nosources-source-map",
};
-};
+}
// Using the workaround for the typings-for-css-modules-loader race condition
// issue. It doesn't seem like you have to put any actual code into the hook,
diff --git a/firebase-vscode/webpack.dev.js b/firebase-vscode/webpack.dev.js
index d6fb16eed92..e30006a25eb 100644
--- a/firebase-vscode/webpack.dev.js
+++ b/firebase-vscode/webpack.dev.js
@@ -1,6 +1,8 @@
const { merge } = require("webpack-merge");
const common = require("./webpack.common.js");
-module.exports = common.map(config => merge(config, {
- mode: "development"
-}));
+module.exports = common.map((config) =>
+ merge(config, {
+ mode: "development",
+ })
+);
diff --git a/firebase-vscode/webpack.prod.js b/firebase-vscode/webpack.prod.js
index 75a648edc85..7f844f999e0 100644
--- a/firebase-vscode/webpack.prod.js
+++ b/firebase-vscode/webpack.prod.js
@@ -2,15 +2,20 @@ const { merge } = require("webpack-merge");
const TerserPlugin = require("terser-webpack-plugin");
const common = require("./webpack.common.js");
-module.exports = common.map(config => merge(config, {
- mode: "production",
- optimization: {
- minimize: true,
- minimizer: [new TerserPlugin({
- terserOptions: {
- keep_classnames: /AbortSignal/,
- keep_fnames: /AbortSignal/
- }
- }), '...']
- }
-}));
+module.exports = common.map((config) =>
+ merge(config, {
+ mode: "production",
+ optimization: {
+ minimize: true,
+ minimizer: [
+ new TerserPlugin({
+ terserOptions: {
+ keep_classnames: /AbortSignal/,
+ keep_fnames: /AbortSignal/,
+ },
+ }),
+ "...",
+ ],
+ },
+ })
+);
diff --git a/firebase-vscode/webviews/DataConnectExecutionResultsApp.tsx b/firebase-vscode/webviews/DataConnectExecutionResultsApp.tsx
new file mode 100644
index 00000000000..2b5bd7424c3
--- /dev/null
+++ b/firebase-vscode/webviews/DataConnectExecutionResultsApp.tsx
@@ -0,0 +1,144 @@
+import React from "react";
+import { useBroker } from "./globals/html-broker";
+import { Label } from "./components/ui/Text";
+import style from "./data-connect-execution-results.entry.scss";
+import { SerializedError } from "../common/error";
+import { ExecutionResult, GraphQLError } from "graphql";
+import { isExecutionResult } from "../common/graphql";
+
+// Prevent webpack from removing the `style` import above
+style;
+
+export function DataConnectExecutionResultsApp() {
+ const dataConnectResults = useBroker("notifyDataConnectResults", {
+ // Forcibly read the current execution results when the component mounts.
+ // This handles cases where the user navigates to the results view after
+ // an execution result has already been set.
+ initialRequest: "getDataConnectResults",
+ });
+ const results: ExecutionResult | SerializedError | undefined =
+ dataConnectResults?.results;
+
+ if (!dataConnectResults || !results) {
+ return null;
+ }
+
+ let response: unknown;
+ let errorsDisplay: JSX.Element | undefined;
+
+ if (isExecutionResult(results)) {
+ // We display the response even if there are errors, just
+ // in case the user wants to see the response anyway.
+ response = results.data;
+ const errors = results.errors;
+
+ if (errors && errors.length !== 0) {
+ errorsDisplay = (
+ <>
+
+ {errors.map((error) => (
+
+ ))}
+ >
+ );
+ }
+ } else {
+ // We don't display a "response" here, because this is an error
+ // that occurred without returning a valid GraphQL response.
+ errorsDisplay = ;
+ }
+
+ let resultsDisplay: JSX.Element | undefined;
+ if (response) {
+ resultsDisplay = (
+ <>
+
+
+ {JSON.stringify(response, null, 2)}
+
+ >
+ );
+ }
+
+ return (
+ <>
+ {errorsDisplay}
+ {resultsDisplay}
+
+
+
+ {dataConnectResults.query}
+
+
+
+
+ {dataConnectResults.args}
+
+ >
+ );
+}
+
+/** A view for when executions either fail before the HTTP request is sent,
+ * or when the HTTP response is an error.
+ */
+function InternalErrorView({ error }: { error: SerializedError }) {
+ return (
+ <>
+
+
+ {
+ // Stacktraces usually already include the message, so we only
+ // display the message if there is no stacktrace.
+ error.stack ? : error.message
+ }
+ {error.cause && (
+ <>
+
+
Cause:
+
+ >
+ )}
+
+ >
+ );
+}
+
+/** A view for when an execution returns status 200 but contains errors. */
+function GraphQLErrorView({ error }: { error: GraphQLError }) {
+ let pathDisplay: JSX.Element | undefined;
+ if (error.path) {
+ // Renders the path as a series of kbd elements separated by commas
+ pathDisplay = (
+ <>
+ {error.path?.map((path, index) => {
+ const item = {path};
+
+ return index === 0 ? item : <>, {item}>;
+ })}{" "}
+ >
+ );
+ }
+
+ return (
+
+ {pathDisplay}
+ {error.message}
+ {error.stack && }
+
+ );
+}
+
+function StackView({ stack }: { stack: string }) {
+ return (
+
+ {stack}
+
+ );
+}
diff --git a/firebase-vscode/webviews/SidebarApp.tsx b/firebase-vscode/webviews/SidebarApp.tsx
index d2b17e58762..2351820aeaf 100644
--- a/firebase-vscode/webviews/SidebarApp.tsx
+++ b/firebase-vscode/webviews/SidebarApp.tsx
@@ -1,116 +1,143 @@
import React, { useEffect, useState } from "react";
import { Spacer } from "./components/ui/Spacer";
-import { broker, useBrokerListener } from "./globals/html-broker";
-import { User } from "../../src/types/auth";
+import { broker, useBroker } from "./globals/html-broker";
import { AccountSection } from "./components/AccountSection";
import { ProjectSection } from "./components/ProjectSection";
-import { FirebaseConfig } from "../../src/firebaseConfig";
-import { ServiceAccountUser } from "../common/types";
import { DeployPanel } from "./components/DeployPanel";
import { HostingInitState, DeployState } from "./webview-types";
-import { ChannelWithId } from "./messaging/types";
import { EmulatorPanel } from "./components/EmulatorPanel";
import { webLogger } from "./globals/web-logger";
import { InitFirebasePanel } from "./components/InitPanel";
-import { QuickstartPanel } from "./components/QuickstartPanel";
+import { ValueOrError } from "./messaging/protocol";
+import { FirebaseConfig } from "../../src/firebaseConfig";
+import { RCData } from "../../src/rc";
+import { VSCodeButton } from "@vscode/webview-ui-toolkit/react";
+import { ServiceAccountUser } from "../common/types";
export function SidebarApp() {
- const [projectId, setProjectId] = useState(null);
+ const env = useBroker("notifyEnv")?.env;
+ /**
+ * null - has not finished checking yet
+ * empty array - finished checking, no users logged in
+ * non-empty array - contains logged in users
+ */
+ const allUsers = useBroker("notifyUsers")?.users;
+ const user = useBroker("notifyUserChanged")?.user;
+
+ const configs = useBroker("notifyFirebaseConfig", {
+ initialRequest: "getInitialData",
+ });
+ const accountSection = (
+
+ );
+ // Just render the account section loading view if it doesn't know user state
+ if (!allUsers || allUsers.length === 0) {
+ return (
+ <>
+
+ Login to use the Firebase plugin
+
+ {accountSection}
+ >
+ );
+ }
+ if (!configs?.firebaseJson) {
+ return (
+ <>
+ {accountSection}
+
+ No firebase.json
detected in this project
+
+
+ {
+ broker.send("runFirebaseInit");
+ }}
+ >
+ Run firebase init
+
+ >
+ );
+ }
+
+ return ;
+}
+
+function SidebarContent(props: {
+ configs: {
+ firebaseJson: ValueOrError;
+ firebaseRC: ValueOrError;
+ };
+}) {
const [deployState, setDeployState] = useState(null);
const [hostingInitState, setHostingInitState] =
useState(null);
- const [env, setEnv] = useState<{ isMonospace: boolean }>();
- const [channels, setChannels] = useState(null);
- const [user, setUser] = useState(null);
const [framework, setFramework] = useState(null);
+ const firebaseJson = props.configs?.firebaseJson;
+ const firebaseRC = props.configs?.firebaseRC;
+
+ const projectId = firebaseRC?.value?.projects?.default;
+
+ const env = useBroker("notifyEnv")?.env;
/**
* null - has not finished checking yet
* empty array - finished checking, no users logged in
* non-empty array - contains logged in users
*/
- const [allUsers, setAllUsers] = useState | null>(null);
- const [firebaseJson, setFirebaseJson] = useState();
+ const allUsers = useBroker("notifyUsers")?.users;
+ const user = useBroker("notifyUserChanged")?.user;
+
+ const channels = useBroker("notifyChannels")?.channels;
useEffect(() => {
webLogger.debug("loading SidebarApp component");
broker.send("getInitialData");
- }, []);
- useBrokerListener("notifyEnv", ({ env }) => {
- webLogger.debug(`notifyEnv() returned ${JSON.stringify(env)}`);
- setEnv(env);
- });
-
- useBrokerListener("notifyChannels", ({ channels }) => {
- webLogger.debug(`notifyChannels() returned ${JSON.stringify(channels)}`);
- setChannels(channels);
- });
-
- useBrokerListener("notifyFirebaseConfig", ({ firebaseJson, firebaseRC }) => {
- webLogger.debug(
- "got firebase hosting",
- JSON.stringify(firebaseJson?.hosting)
- );
- if (firebaseJson) {
- setFirebaseJson(firebaseJson);
- webLogger.debug("set firebase JSON");
- }
- if (firebaseJson?.hosting) {
- webLogger.debug("Detected firebase.json");
- setHostingInitState("success");
- broker.send("showMessage", {
- msg: "Auto-detected hosting setup in this folder",
- });
- } else {
- setHostingInitState(null);
- }
-
- if (firebaseRC?.projects?.default) {
- webLogger.debug("Detected project setup from existing firebaserc");
- setProjectId(firebaseRC.projects.default);
- } else {
- setProjectId(null);
- }
- });
-
- useBrokerListener("notifyUsers", ({ users }) => {
- webLogger.debug(`notifyUsers() returned ${JSON.stringify(users)}`);
- setAllUsers(users);
- });
-
- useBrokerListener("notifyProjectChanged", ({ projectId }) => {
- webLogger.debug("Project selected", projectId);
- setProjectId(projectId);
- });
-
- useBrokerListener("notifyUserChanged", ({ user }) => {
- webLogger.debug("notifyUserChanged:", user?.email);
- setUser(user);
- });
-
- useBrokerListener(
- "notifyHostingInitDone",
- ({ success, projectId, folderPath, framework }) => {
- if (success) {
- webLogger.debug(`notifyHostingInitDone: ${projectId}, ${folderPath}`);
+ broker.on("notifyFirebaseConfig", ({ firebaseJson, firebaseRC }) => {
+ webLogger.debug(
+ "notifyFirebaseConfig",
+ JSON.stringify(firebaseJson),
+ JSON.stringify(firebaseRC)
+ );
+ if (firebaseJson?.value?.hosting) {
+ webLogger.debug("Detected firebase.json");
setHostingInitState("success");
- if (framework) {
- setFramework(framework);
- }
+ // TODO this probably should be cached, to avoid showing the message every time.
+ // Even more so considering notifyFirebaseConfig fires on every "getInitialData", which could happen on user interaction.
+ broker.send("showMessage", {
+ msg: "Auto-detected hosting setup in this folder",
+ });
} else {
setHostingInitState(null);
}
- }
- );
+ });
- useBrokerListener("notifyHostingDeploy", ({ success }) => {
- webLogger.debug(`notifyHostingDeploy: ${success}`);
- setDeployState(success ? "success" : "failure");
- });
+ broker.on(
+ "notifyHostingInitDone",
+ ({ success, projectId, folderPath, framework }) => {
+ if (success) {
+ webLogger.debug(`notifyHostingInitDone: ${projectId}, ${folderPath}`);
+ setHostingInitState("success");
+ if (framework) {
+ setFramework(framework);
+ }
+ } else {
+ setHostingInitState(null);
+ }
+ }
+ );
+
+ broker.on("notifyHostingDeploy", ({ success }) => {
+ webLogger.debug(`notifyHostingDeploy: ${success}`);
+ setDeployState(success ? "success" : "failure");
+ });
+ }, []);
function setupHosting() {
broker.send("selectAndInitHostingFolder", {
@@ -126,63 +153,51 @@ export function SidebarApp() {
isMonospace={env?.isMonospace}
/>
);
- // Just render the account section loading view if it doesn't know user state
- if (allUsers === null) {
- return (
- <>
-
- {accountSection}
- >
- );
- }
return (
<>
{accountSection}
{!!user && (
-
- )}
- {hostingInitState === "success" && !!user && !!projectId && (
-
+
)}
+ { // TODO: disable hosting completely
+ /* {hostingInitState === "success" &&
+ !!user &&
+ !!projectId &&
+ env?.isMonospace && (
+
+ )}
- {hostingInitState !== "success" && !!user && !!projectId && (
- {
- setupHosting();
- }}
- hostingInitState={hostingInitState}
- setHostingInitState={setHostingInitState}
- />
- )}
+ {hostingInitState !== "success" &&
+ !!user &&
+ !!projectId &&
+ env?.isMonospace && (
+ {
+ setupHosting();
+ }}
+ hostingInitState={hostingInitState}
+ setHostingInitState={setHostingInitState}
+ />
+ )} */}
{
+ // disable emulator panel for now, as we have an individual emulator panel in the FDC section
+ }
+ {/* {
// Only load the emulator panel if we have a user, firebase.json and this isn't Monospace
// The user login requirement can be removed in the future but the panel will have to
// be restricted to full-offline emulation only.
- !!user && !!firebaseJson && !env?.isMonospace && (
-
+ !!user && firebaseJson && firebaseJson.value && (
+
)
- }
- {
- // Only load quickstart panel if this isn't a Monospace workspace
- !env?.isMonospace && (
- <>
-
-
- broker.send("chooseQuickstartDir", {})
- }
- />
- >
- )
- }
+ } */}
>
);
}
diff --git a/firebase-vscode/webviews/components/AccountSection.tsx b/firebase-vscode/webviews/components/AccountSection.tsx
index 79726e1061a..82f798d7ba0 100644
--- a/firebase-vscode/webviews/components/AccountSection.tsx
+++ b/firebase-vscode/webviews/components/AccountSection.tsx
@@ -34,9 +34,11 @@ export function AccountSection({
if (usersLoaded && (!allUsers.length || !user)) {
// Users loaded but no user was found
if (isMonospace) {
- // Monospace: this is an error, should have found a workspace
- // service account
- currentUserElement = TEXT.MONOSPACE_LOGIN_FAIL;
+ currentUserElement = (
+ broker.send("executeLogin")}>
+ {TEXT.GOOGLE_SIGN_IN}
+
+ );
} else {
// VS Code: prompt user to log in with Google account
currentUserElement = (
@@ -49,7 +51,11 @@ export function AccountSection({
// Users loaded, at least one user was found
if (user.type === "service_account") {
if (isMonospace) {
- currentUserElement = TEXT.MONOSPACE_LOGGED_IN;
+ currentUserElement = (
+ broker.send("executeLogin")}>
+ {TEXT.GOOGLE_SIGN_IN}
+
+ );
} else {
currentUserElement = TEXT.VSCE_SERVICE_ACCOUNT_LOGGED_IN;
}
@@ -63,13 +69,6 @@ export function AccountSection({
{currentUserElement}
);
- if (user?.type === "service_account" && isMonospace) {
- userBoxElement = (
-
- );
- }
return (
{userBoxElement}
diff --git a/firebase-vscode/webviews/components/EmulatorPanel.tsx b/firebase-vscode/webviews/components/EmulatorPanel.tsx
index 46003f1ebb7..729c3b05d2b 100644
--- a/firebase-vscode/webviews/components/EmulatorPanel.tsx
+++ b/firebase-vscode/webviews/components/EmulatorPanel.tsx
@@ -1,39 +1,18 @@
-import {
- VSCodeButton,
- VSCodeCheckbox,
- VSCodeDivider,
- VSCodeLink,
- VSCodeProgressRing,
- VSCodeTextField,
-} from "@vscode/webview-ui-toolkit/react";
-import React, { useState } from "react";
+import { VSCodeButton, VSCodeLink } from "@vscode/webview-ui-toolkit/react";
+import React, { useEffect } from "react";
import { Spacer } from "./ui/Spacer";
-import { broker, useBrokerListener } from "../globals/html-broker";
+import { broker, useBroker, useBrokerListener } from "../globals/html-broker";
import { PanelSection } from "./ui/PanelSection";
import { FirebaseConfig } from "../../../src/firebaseConfig";
-import {
- RunningEmulatorInfo,
- EmulatorUiSelections,
-} from "../../common/messaging/types";
-import { VSCodeDropdown } from "@vscode/webview-ui-toolkit/react";
-import { VSCodeOption } from "@vscode/webview-ui-toolkit/react";
import { EmulatorInfo } from "../../../src/emulator/types";
import { webLogger } from "../globals/web-logger";
-
-const DEFAULT_EMULATOR_UI_SELECTIONS: EmulatorUiSelections = {
- projectId: "demo-something",
- importStateFolderPath: "",
- exportStateOnExit: false,
- mode: "all",
- debugLogging: false,
-};
+import { DEFAULT_EMULATOR_UI_SELECTIONS } from "../../common/messaging/protocol";
/**
* Emulator panel component for the VSCode extension. Handles start/stop, import/export.
*/
export function EmulatorPanel({
firebaseJson,
- projectId,
}: {
firebaseJson: FirebaseConfig;
projectId?: string | undefined;
@@ -41,48 +20,26 @@ export function EmulatorPanel({
if (!firebaseJson) {
throw Error("Expected a valid FirebaseConfig.");
}
- const defaultState = DEFAULT_EMULATOR_UI_SELECTIONS;
- if (projectId) {
- defaultState.projectId = getProjectIdForMode(projectId, defaultState.mode);
- }
- const [emulatorUiSelections, setEmulatorUiSelections] =
- useState
(defaultState);
-
- webLogger.debug(
- "initial state ui selections:" + JSON.stringify(emulatorUiSelections)
- );
- function setEmulatorUiSelectionsAndSaveToWorkspace(
- uiSelections: EmulatorUiSelections
- ) {
- // TODO(christhompson): Save UI selections in the current workspace.
- // Requires context object.
- setEmulatorUiSelections(uiSelections);
- }
- const [showEmulatorProgressIndicator, setShowEmulatorProgressIndicator] =
- useState(false);
-
- // TODO(christhompson): Load UI selections from the current workspace.
- // Requires context object.
- // TODO(christhompson): Check if the emulators are running on extension start.
- const [runningEmulatorInfo, setRunningEmulatorInfo] =
- useState();
-
- useBrokerListener("notifyEmulatorsStopped", () => {
- setShowEmulatorProgressIndicator(false);
- webLogger.debug(`notifyEmulatorsStopped received in sidebar`);
- setRunningEmulatorInfo(null);
- });
+ const emulatorUiSelections =
+ useBroker("notifyEmulatorUiSelectionsChanged", {
+ initialRequest: "getEmulatorUiSelections",
+ }) ?? DEFAULT_EMULATOR_UI_SELECTIONS;
+
+ useEffect(() => {
+ if (emulatorUiSelections) {
+ webLogger.debug(
+ `Emulator UI selections: ${JSON.stringify(emulatorUiSelections)}`
+ );
+ }
+ }, [emulatorUiSelections]);
- useBrokerListener("notifyEmulatorStartFailed", () => {
- setShowEmulatorProgressIndicator(false);
- webLogger.debug(`notifyEmulatorStartFailed received in sidebar`);
- });
+ const emulators = useBroker("notifyEmulatorStateChanged", {
+ initialRequest: "getEmulatorInfos",
+ }) ?? { status: "stopped", infos: undefined };
+ const runningEmulatorInfo = emulators.infos;
- useBrokerListener("notifyRunningEmulatorInfo", (info: RunningEmulatorInfo) => {
- setShowEmulatorProgressIndicator(false);
- webLogger.debug(`notifyRunningEmulatorInfo received in sidebar`);
- setRunningEmulatorInfo(info);
- });
+ const showEmulatorProgressIndicator =
+ emulators.status === "starting" || emulators.status === "stopping";
useBrokerListener("notifyEmulatorImportFolder", ({ folder }) => {
webLogger.debug(
@@ -92,7 +49,7 @@ export function EmulatorPanel({
...emulatorUiSelections,
importStateFolderPath: folder,
};
- setEmulatorUiSelectionsAndSaveToWorkspace(newSelections);
+ broker.send("updateEmulatorUiSelections", newSelections);
});
function launchEmulators() {
@@ -108,7 +65,7 @@ export function EmulatorPanel({
}
if (!firebaseJson) {
// TODO(christhompson): Consider using a default config in the case that
- // firebase.json doesnt exist.
+ // firebase.json doesn't exist.
broker.send("showMessage", {
msg: "Missing firebase.json",
options: {
@@ -118,65 +75,17 @@ export function EmulatorPanel({
});
return;
}
- setShowEmulatorProgressIndicator(true);
- broker.send("launchEmulators", {
- emulatorUiSelections,
- });
- }
-
- function stopEmulators() {
- setShowEmulatorProgressIndicator(true);
- broker.send("stopEmulators");
- }
-
- /**
- * Called when import folder changes.
- */
- function selectedImportFolder(event: any) {
- event.preventDefault();
- broker.send("selectEmulatorImportFolder");
- }
-
- function toggleExportOnExit() {
- const selections: EmulatorUiSelections = emulatorUiSelections;
- selections.exportStateOnExit = !selections.exportStateOnExit;
- webLogger.debug(`toggle export on exit : ${!selections.exportStateOnExit}`);
- setEmulatorUiSelectionsAndSaveToWorkspace(selections);
- }
-
- function emulatorModeChanged(event: React.ChangeEvent) {
- webLogger.debug("emulatorModeChanged: " + event.target.value);
- const newSelections: EmulatorUiSelections = { ...emulatorUiSelections };
- newSelections.mode = event.target.value as typeof emulatorUiSelections.mode;
- newSelections.projectId = getProjectIdForMode(
- projectId,
- newSelections.mode
- );
- setEmulatorUiSelectionsAndSaveToWorkspace(newSelections);
- }
-
- function clearImportFolder() {
- console.log(`clearImportFolder`);
- const newSelections = {
- ...emulatorUiSelections,
- importStateFolderPath: "",
- };
- setEmulatorUiSelectionsAndSaveToWorkspace(newSelections);
- }
-
- // Make it pretty for the screen. Filter out the logging emulator since it's
- // an implementation detail.
- // TODO(christhompson): Add more info and sort this.
- function formatEmulatorRunningInfo(emulatorInfos: EmulatorInfo[]): string {
- return emulatorInfos
- .map((info) => info.name)
- .filter((name) => name !== "logging")
- .join("
");
+ broker.send("launchEmulators");
}
return (
-
- Launch the Emulator Suite
+
{/* TODO(christhompson): Insert some education links or tooltips here. */}
@@ -185,97 +94,47 @@ export function EmulatorPanel({
{emulatorUiSelections.projectId}
- Import emulator state from directory:
-
-
- selectedImportFolder(event)}
- />
-
-
- Clear
-
-
- toggleExportOnExit()}
- >
- Export emulator state on exit
-
-
- {showEmulatorProgressIndicator ? : <>>}
- Emulator "mode"
- emulatorModeChanged(event)}
- >
- All emulators
- {!!firebaseJson.hosting && (
- Only hosting
- )}
-
{runningEmulatorInfo ? (
<>
-
-
- The emulators are running.
+ Running Emulators:
+
{!!runningEmulatorInfo.uiUrl && (
-
- View them in the Emulator Suite UI
-
+ <>
+
+
+ View them in the Emulator Suite UI
+
+ >
)}
- Running Emulators:
-
-
-
- stopEmulators()}>
+ broker.send("stopEmulators")}>
Click to stop the emulators
>
) : (
launchEmulators()}
- disabled={showEmulatorProgressIndicator ? true : false}
+ disabled={showEmulatorProgressIndicator}
>
- Launch emulators
+ Launch Data Connect emulator
)}
);
}
-/**
- * Formats a project ID with a demo prefix if we're in offline mode, or uses the
- * regular ID if we're in hosting only mode.
- */
-function getProjectIdForMode(
- projectId: string | undefined,
- mode: "all" | "hosting"
-): string {
- if (!projectId) {
- return "demo-something";
- }
- if (mode === "hosting") {
- return projectId;
- }
- return "demo-" + projectId;
+// Make it pretty for the screen. Filter out the logging emulator since it's
+// an implementation detail.
+// TODO(christhompson): Add more info and sort this.
+function FormatEmulatorRunningInfo({ infos }: { infos: EmulatorInfo[] }) {
+ return (
+
+ {infos
+ .filter((info) => info.name !== "logging")
+ .map((info, index) => (
+ - {info.name}
+ ))}
+
+ );
}
diff --git a/firebase-vscode/webviews/components/InitPanel.tsx b/firebase-vscode/webviews/components/InitPanel.tsx
index b9363a63a30..75351eb1fff 100644
--- a/firebase-vscode/webviews/components/InitPanel.tsx
+++ b/firebase-vscode/webviews/components/InitPanel.tsx
@@ -1,4 +1,7 @@
-import { VSCodeButton, VSCodeProgressRing } from "@vscode/webview-ui-toolkit/react";
+import {
+ VSCodeButton,
+ VSCodeProgressRing,
+} from "@vscode/webview-ui-toolkit/react";
import cn from "classnames";
import { Body, Label } from "./ui/Text";
@@ -12,13 +15,13 @@ import { HostingInitState } from "../webview-types";
export function InitFirebasePanel({
onHostingInit,
hostingInitState,
- setHostingInitState
+ setHostingInitState,
}: {
onHostingInit: Function;
hostingInitState: HostingInitState;
setHostingInitState: (state: HostingInitState) => void;
}) {
- if (hostingInitState === 'pending') {
+ if (hostingInitState === "pending") {
return (
@@ -39,7 +42,7 @@ export function InitFirebasePanel({
{
onHostingInit();
- setHostingInitState('pending');
+ setHostingInitState("pending");
}}
>
{TEXT.INIT_HOSTING_BUTTON}
diff --git a/firebase-vscode/webviews/components/ProjectSection.tsx b/firebase-vscode/webviews/components/ProjectSection.tsx
index 34c6e4b3d30..5b4d01e3489 100644
--- a/firebase-vscode/webviews/components/ProjectSection.tsx
+++ b/firebase-vscode/webviews/components/ProjectSection.tsx
@@ -7,14 +7,26 @@ import React from "react";
import styles from "./AccountSection.scss";
import { ExternalLink } from "./ui/ExternalLink";
import { TEXT } from "../globals/ux-text";
+import { User } from "../types/auth";
+import { ServiceAccountUser } from "../types";
+interface UserWithType extends User {
+ type?: string;
+}
export function ProjectSection({
- userEmail,
+ user,
projectId,
+ isMonospace,
}: {
- userEmail: string | null;
+ user: UserWithType | ServiceAccountUser | null;
projectId: string | null | undefined;
+ isMonospace: boolean;
}) {
+ const userEmail = user.email;
+
+ if (isMonospace && user?.type === "service_account") {
+ return;
+ }
return (