diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index a542519..0000000
--- a/.eslintignore
+++ /dev/null
@@ -1,10 +0,0 @@
-dist/*
-dist-*/*
-*.bak
-*.d.ts
-.eslintrc.cjs
-biome.json
-*.lockb
-package-lock.json
-prettier.config.cjs
-vite.config.js
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
deleted file mode 100644
index 5707be9..0000000
--- a/.eslintrc.cjs
+++ /dev/null
@@ -1,25 +0,0 @@
-module.exports = {
- parser: '@typescript-eslint/parser',
- parserOptions: {
- ecmaVersion: 2020,
- sourceType: 'module',
- },
- env: {
- node: true,
- browser: false,
- es6: true,
- },
- settings: {},
- extends: ['plugin:@typescript-eslint/recommended', 'eslint:recommended'],
- rules: {
- '@typescript-eslint/explicit-function-return-type': 'off',
- '@typescript-eslint/no-explicit-any': 'off',
- '@typescript-eslint/explicit-module-boundary-types': 'off',
- '@typescript-eslint/no-var-requires': 'off',
- '@typescript-eslint/no-empty-function': 'off',
- '@typescript-eslint/no-unused-vars': 'off',
- '@typescript-eslint/ban-ts-comment': 'off',
- indent: ['error', 4, { SwitchCase: 1 }],
- 'no-useless-catch': 'off',
- },
-};
diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml
index f0f2fae..f65b915 100644
--- a/.github/workflows/run-tests.yml
+++ b/.github/workflows/run-tests.yml
@@ -13,7 +13,7 @@ jobs:
strategy:
fail-fast: true
matrix:
- node-version: [18, 20]
+ node-version: [22, 24]
steps:
- name: Checkout repository
@@ -29,7 +29,7 @@ jobs:
run: bun install
- name: Run the tests with coverage
- run: bun run test
+ run: bun test
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
diff --git a/.npmignore b/.npmignore
index 0dc1d1e..e5b534b 100644
--- a/.npmignore
+++ b/.npmignore
@@ -12,19 +12,19 @@
/coverage
.editorconfig
.eslintrc.js
+eslint.config.js
.prettierignore
.prettierrc
prettier.config.js
jest.config.js
package-lock.json
+bun.lock
SECURITY.md
tsconfig.json
*.sh
_*.txt
*.ignore
rollup.*.js
-.eslintignore
biome.json
-prettier.config.cjs
-.eslintrc.cjs
+biome.jsonc
vite.config.js
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 58eba38..0925bf3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,16 @@
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
+#### [v3.0.0](https://github.com/permafrost-dev/node-ray/compare/v2.1.2...v3.0.0)
+
+> 31 January 2026
+
+- BREAKING: ESM-only packages moving forward; removed CommonJS builds.
+- BREAKING: Node.js >= 20.19 required
+- Upgrade all outdated dependencies
+- Upgrade ESLint 9 + TypeScript ESLint 8, Prettier 3.8, Vite 7, Vitest 4, and TypeScript 5.9
+- Docs updated for ESM-only usage and configuration
+
#### [v2.1.2](https://github.com/permafrost-dev/node-ray/compare/v2.1.1...v2.1.2)
- update npmignore [`8517423`](https://github.com/permafrost-dev/node-ray/commit/85174235d68dc0d9df260ee39d092d941fc6bd26)
diff --git a/LICENSE b/LICENSE
index 455d443..92980fe 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,5 +1,5 @@
The MIT License (MIT)
-Copyright © 2021 Permafrost Development
+Copyright © 2026 Permafrost Software, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
diff --git a/README.md b/README.md
index 7fbfba8..6ee110d 100644
--- a/README.md
+++ b/README.md
@@ -21,6 +21,7 @@
# node-ray
+
### The official Node/JS & TypeScript integration for Ray - Understand and fix bugs faster.
The package can be installed in any NodeJS, ES6+, or TypeScript application to send data to the [Ray app](https://myray.app).
@@ -41,13 +42,18 @@ or bun:
bun add node-ray
```
+## Requirements
+
+- Node.js >= 20.19
+- ESM-only (CommonJS is no longer supported; use v2.x for `require` support)
+
## Available environments
-`node-ray` offers several options to allow you to use it in either NodeJS, Web-based TypeScript or Javascript projects, and browser environments.
+`node-ray` offers several options to allow you to use it in either NodeJS, Web-based TypeScript or JavaScript projects, and browser environments.
->If you're using NextJs/React, take a look at [permafrost-dev/react-ray](https://github.com/permafrost-dev/react-ray).
->
->If you're using Vue, check out [permafrost-dev/vue-ray](https://github.com/permafrost-dev/vue-ray).
+> If you're using NextJs/React, take a look at [permafrost-dev/react-ray](https://github.com/permafrost-dev/react-ray).
+>
+> If you're using Vue, check out [permafrost-dev/vue-ray](https://github.com/permafrost-dev/vue-ray).
### NodeJS
@@ -56,20 +62,16 @@ When using in a NodeJS environment (the default), import the package as you woul
```js
// es module import:
import { ray } from 'node-ray';
-
-// commonjs import:
-const ray = require('node-ray').ray;
```
+`node-ray` is ESM-only. CommonJS `require` is not supported.
+
### Browser bundle
When bundling scripts for use in a Browser environment _(i.e., using webpack or vite)_, import the `/web` export:
```js
import { ray } from 'node-ray/web';
-
-// or a commonjs import:
-const { ray } = require('node-ray/web');
```
### Browser standalone
@@ -104,7 +106,7 @@ As of version `2.0.0`, you no longer need to manually initialize the global `ray
To use `node-ray` with Laravel Mix, include the following in `resources/js/bootstrap.js`:
```js
-const { ray } = require('node-ray/web');
+import { ray } from 'node-ray/web';
window.ray = ray;
```
@@ -130,9 +132,6 @@ Most of the API from the [original PHP package](https://github.com/spatie/ray) i
```js
// es module import:
import { ray } from 'node-ray';
-
-// commonjs import:
-const { ray } = require('node-ray');
```
To modify the host or port:
@@ -175,7 +174,7 @@ ray().xml('11'); // previous call disabled sending data, XML not sent
_Note: This section only applies when using `node-ray` in the NodeJS environment, NOT a browser environment._
-`node-ray` will search for `ray.config.js`, which should be in the project's root directory.
+`node-ray` will search for `ray.config.js`, which should be in the project's root directory. The config file is ESM and should use `export default`.
Using a configuration file is optional, and the package will use the default settings if no configuration file is specified.
@@ -184,7 +183,7 @@ _Example:_
```js
// ray.config.js
-module.exports = {
+export default {
enable: true,
host: 'localhost',
port: 23517,
@@ -279,60 +278,60 @@ See [using the package](docs/usage.md).
## Reference
-| Call | Description |
-| --- | --- |
-| `ray(variable)` | Display a string, array or object |
-| `ray(var1, var2, …)` | Ray accepts multiple arguments |
-| `ray().blue()` | Output in color. Use `green`, `orange`, `red`, `blue`,`purple` or `gray` |
-| `ray().caller()` | **Asynchronous.** Show the calling class and method |
-| `ray().chain(callback)` | Chain multiple Ray payloads and send them all at once. `callback: (ray: Ray) => void` |
-| `ray().clearScreen()` | Clear current screen |
-| `ray().clearAll()` | Clear current and all previous screens |
-| `ray().className(obj)` | Display the classname for an object |
-| `ray().confetti()` | Display Confetti in Ray |
-| `ray().count(name)` | Count how many times a piece of code is called, with optional name |
-| `ray().date(date, format)` | Display a formatted date, the timezone, and its timestamp |
-| `ray().die()` | Halt code execution - NodeJS only |
-| `ray().disable()` | Disable sending stuff to Ray |
-| `ray().disabled()` | Check if Ray is disabled |
-| `ray().enable()` | Enable sending stuff to Ray |
-| `ray().enabled()` | Check if Ray is enabled |
-| `ray().error(err)` | Display information about an Error/Exception |
-| `ray().event(name, data)` | Display information about an event with optional data |
-| `ray().exception(err)` | **Asynchronous.** Display extended information and stack trace for an Error/Exception |
-| `ray().file(filename)` | **NodeJS only.** Display contents of a file |
-| `ray().hide()` | Display something in Ray and make it collapse immediately |
-| `ray().hideApp()` | Programmatically hide the Ray app window |
-| `ray().html(string)` | Send HTML to Ray |
-| `ray().htmlMarkup(string)` | Display syntax-highlighted HTML code in Ray |
-| `ray().if(true, callback)` | Conditionally show things based on a truthy value or callable, optionally calling the callback with a `ray` argument |
-| `ray().image(url)` | Display an image in Ray |
-| `ray().interceptor()` | Access ConsoleInterceptor; call `.enable()` to show `console.log()` calls in Ray |
-| `ray().json([…])` | Send JSON to Ray |
-| `ray().label(string)` | Add a text label to the payload |
-| `ray().limit(N)` | **Asynchronous.** Limit the number of payloads that can be sent to Ray to N; used for debugging within loops |
-| `ray().macro(name, callable)` | Add a custom method to the Ray class. make sure not to use an arrow function if returning `this` |
-| `ray().measure(callable)` | Measure the performance of a callback function |
-| `ray().measure()` | Begin measuring the overall time and elapsed time since previous `measure()` call |
-| `ray().newScreen()` | Start a new screen |
-| `ray().newScreen('title')` | Start a new named screen |
-| `ray().nodeinfo()` | **NodeJS only.** Display statistics about node, such as the v8 version and memory usage |
-| `ray().notify(message)` | Display a notification |
-| `ray().once(arg1, …)` | **Asynchronous.** Only send a payload once when in a loop |
-| `ray().pass(variable)` | Display something in Ray and return the value instead of a Ray instance |
-| `ray().pause()` | Pause code execution within your code; must be called using `await` |
-| `ray().projectName(name)` | Change the active project name |
-| `ray().remove()` | Remove an item from Ray |
-| `ray().screenColor(color)` | Changes the screen color to the specified color |
-| `ray().separator()` | Display a separator |
-| `ray().showApp()` | Programmatically show the Ray app window |
-| `ray().small()` | Output text smaller or bigger. Use `large` or `small`|
-| `ray().stopTime(name)` | Removes a named stopwatch if specified, otherwise removes all stopwatches |
-| `ray().table(…)` | Display an array or an object formatted as a table; Objects and arrays are pretty-printed |
-| `ray().text(string)` | Display raw text in Ray while preserving whitespace formatting |
-| `ray().toJson(variable)` | Convert a variable using `JSON.stringify()` and display the result |
-| `ray().trace()` | Display a stack trace |
-| `ray().xml(string)` | Send XML to Ray |
+| Call | Description |
+| ----------------------------- | -------------------------------------------------------------------------------------------------------------------- |
+| `ray(variable)` | Display a string, array or object |
+| `ray(var1, var2, …)` | Ray accepts multiple arguments |
+| `ray().blue()` | Output in color. Use `green`, `orange`, `red`, `blue`,`purple` or `gray` |
+| `ray().caller()` | **Asynchronous.** Show the calling class and method |
+| `ray().chain(callback)` | Chain multiple Ray payloads and send them all at once. `callback: (ray: Ray) => void` |
+| `ray().clearScreen()` | Clear current screen |
+| `ray().clearAll()` | Clear current and all previous screens |
+| `ray().className(obj)` | Display the classname for an object |
+| `ray().confetti()` | Display Confetti in Ray |
+| `ray().count(name)` | Count how many times a piece of code is called, with optional name |
+| `ray().date(date, format)` | Display a formatted date, the timezone, and its timestamp |
+| `ray().die()` | Halt code execution - NodeJS only |
+| `ray().disable()` | Disable sending stuff to Ray |
+| `ray().disabled()` | Check if Ray is disabled |
+| `ray().enable()` | Enable sending stuff to Ray |
+| `ray().enabled()` | Check if Ray is enabled |
+| `ray().error(err)` | Display information about an Error/Exception |
+| `ray().event(name, data)` | Display information about an event with optional data |
+| `ray().exception(err)` | **Asynchronous.** Display extended information and stack trace for an Error/Exception |
+| `ray().file(filename)` | **NodeJS only.** Display contents of a file |
+| `ray().hide()` | Display something in Ray and make it collapse immediately |
+| `ray().hideApp()` | Programmatically hide the Ray app window |
+| `ray().html(string)` | Send HTML to Ray |
+| `ray().htmlMarkup(string)` | Display syntax-highlighted HTML code in Ray |
+| `ray().if(true, callback)` | Conditionally show things based on a truthy value or callable, optionally calling the callback with a `ray` argument |
+| `ray().image(url)` | Display an image in Ray |
+| `ray().interceptor()` | Access ConsoleInterceptor; call `.enable()` to show `console.log()` calls in Ray |
+| `ray().json([…])` | Send JSON to Ray |
+| `ray().label(string)` | Add a text label to the payload |
+| `ray().limit(N)` | **Asynchronous.** Limit the number of payloads that can be sent to Ray to N; used for debugging within loops |
+| `ray().macro(name, callable)` | Add a custom method to the Ray class. make sure not to use an arrow function if returning `this` |
+| `ray().measure(callable)` | Measure the performance of a callback function |
+| `ray().measure()` | Begin measuring the overall time and elapsed time since previous `measure()` call |
+| `ray().newScreen()` | Start a new screen |
+| `ray().newScreen('title')` | Start a new named screen |
+| `ray().nodeinfo()` | **NodeJS only.** Display statistics about node, such as the v8 version and memory usage |
+| `ray().notify(message)` | Display a notification |
+| `ray().once(arg1, …)` | **Asynchronous.** Only send a payload once when in a loop |
+| `ray().pass(variable)` | Display something in Ray and return the value instead of a Ray instance |
+| `ray().pause()` | Pause code execution within your code; must be called using `await` |
+| `ray().projectName(name)` | Change the active project name |
+| `ray().remove()` | Remove an item from Ray |
+| `ray().screenColor(color)` | Changes the screen color to the specified color |
+| `ray().separator()` | Display a separator |
+| `ray().showApp()` | Programmatically show the Ray app window |
+| `ray().small()` | Output text smaller or bigger. Use `large` or `small` |
+| `ray().stopTime(name)` | Removes a named stopwatch if specified, otherwise removes all stopwatches |
+| `ray().table(…)` | Display an array or an object formatted as a table; Objects and arrays are pretty-printed |
+| `ray().text(string)` | Display raw text in Ray while preserving whitespace formatting |
+| `ray().toJson(variable)` | Convert a variable using `JSON.stringify()` and display the result |
+| `ray().trace()` | Display a stack trace |
+| `ray().xml(string)` | Send XML to Ray |
## FAQ
diff --git a/biome.json b/biome.jsonc
similarity index 70%
rename from biome.json
rename to biome.jsonc
index 64533e4..f068e78 100644
--- a/biome.json
+++ b/biome.jsonc
@@ -1,11 +1,23 @@
{
- "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json",
- "organizeImports": {
- "enabled": false
- },
+ "$schema": "https://biomejs.dev/schemas/2.3.11/schema.json",
+ "assist": { "actions": { "source": { "organizeImports": "off" } } },
"files": {
- "include": ["./*.cjs", "./*.js", "./*.mjs", "src/**/*.js", "src/**/*.ts", "src/**/*.tsx", "src/**/*.jsx"],
- "ignore": [".git/**", ".husky/**", ".idea/**", ".vscode/**", "build/**", "dist/**", "node_modules/**", "scripts/**"]
+ "includes": [
+ "**/*.js",
+ "**/*.mjs",
+ "**/src/**/*.js",
+ "**/src/**/*.ts",
+ "**/src/**/*.tsx",
+ "**/src/**/*.jsx",
+ "!**/.git/**",
+ "!**/.husky/**",
+ "!**/.idea/**",
+ "!**/.vscode/**",
+ "!**/build/**",
+ "!**/dist/**",
+ "!**/node_modules/**",
+ "!**/scripts/**"
+ ]
},
"formatter": {
"enabled": true,
@@ -29,19 +41,17 @@
"noConstAssign": "error",
"noSwitchDeclarations": "warn",
"useExhaustiveDependencies": "off",
- "useHookAtTopLevel": "warn"
+ "useHookAtTopLevel": "warn",
+ "noInvalidUseBeforeDeclaration": "error"
},
"style": {
"useSelfClosingElements": "off",
"noParameterAssign": "off",
"useFragmentSyntax": "off",
- "useSingleVarDeclarator": "off"
- },
- "nursery": {
- "useNodejsImportProtocol": "warn",
- "noGlobalEval": "error",
- "noInvalidUseBeforeDeclaration": "error"
+ "useSingleVarDeclarator": "off",
+ "useNodejsImportProtocol": "warn"
},
+ "nursery": {},
"suspicious": {
"noAssignInExpressions": "off",
"noAsyncPromiseExecutor": "off",
@@ -50,7 +60,8 @@
"noImplicitAnyLet": "off"
},
"security": {
- "recommended": true
+ "recommended": true,
+ "noGlobalEval": "error"
},
"performance": {},
"a11y": {
@@ -70,7 +81,7 @@
"quoteProperties": "asNeeded",
"quoteStyle": "single",
"semicolons": "always",
- "trailingComma": "all"
+ "trailingCommas": "all"
}
},
"json": {
diff --git a/bun.lock b/bun.lock
new file mode 100644
index 0000000..42189f9
--- /dev/null
+++ b/bun.lock
@@ -0,0 +1,739 @@
+{
+ "lockfileVersion": 1,
+ "configVersion": 0,
+ "workspaces": {
+ "": {
+ "name": "node-ray",
+ "dependencies": {
+ "@permafrost-dev/pretty-format": "^1.1.5",
+ "axios": "^1.6.8",
+ "stacktrace-js": "^2.0.2",
+ "uuid": "^9.0.1",
+ "xml-formatter": "^3.6.2",
+ },
+ "devDependencies": {
+ "@eslint/js": "^9.39.2",
+ "@types/node": "^20.11.30",
+ "@types/uuid": "^9.0.8",
+ "@typescript-eslint/eslint-plugin": "^8.54.0",
+ "@typescript-eslint/parser": "^8.54.0",
+ "@vitest/coverage-v8": "^4.0.18",
+ "auto-changelog": "^2.4.0",
+ "dts-bundle-generator": "^9.3.1",
+ "esbuild": "^0.27.2",
+ "eslint": "^9.39.2",
+ "globals": "^17.2.0",
+ "husky": "^9.0.11",
+ "is-ci": "^3.0.1",
+ "lint-staged": "^15.2.2",
+ "prettier": "^3.8.1",
+ "ts-mixer": "^6.0.4",
+ "typescript": "^5.9.3",
+ "vite": "^7.3.1",
+ "vite-plugin-externalize-deps": "^0.10.0",
+ "vitest": "^4.0.18",
+ },
+ },
+ },
+ "packages": {
+ "@aashutoshrathi/word-wrap": ["@aashutoshrathi/word-wrap@1.2.6", "", {}, "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA=="],
+
+ "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="],
+
+ "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="],
+
+ "@babel/parser": ["@babel/parser@7.28.6", "", { "dependencies": { "@babel/types": "^7.28.6" }, "bin": "./bin/babel-parser.js" }, "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ=="],
+
+ "@babel/types": ["@babel/types@7.28.6", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg=="],
+
+ "@bcoe/v8-coverage": ["@bcoe/v8-coverage@1.0.2", "", {}, "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA=="],
+
+ "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw=="],
+
+ "@esbuild/android-arm": ["@esbuild/android-arm@0.27.2", "", { "os": "android", "cpu": "arm" }, "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA=="],
+
+ "@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.2", "", { "os": "android", "cpu": "arm64" }, "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA=="],
+
+ "@esbuild/android-x64": ["@esbuild/android-x64@0.27.2", "", { "os": "android", "cpu": "x64" }, "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A=="],
+
+ "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg=="],
+
+ "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA=="],
+
+ "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g=="],
+
+ "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA=="],
+
+ "@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.2", "", { "os": "linux", "cpu": "arm" }, "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw=="],
+
+ "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw=="],
+
+ "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.2", "", { "os": "linux", "cpu": "ia32" }, "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w=="],
+
+ "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.2", "", { "os": "linux", "cpu": "none" }, "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg=="],
+
+ "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.2", "", { "os": "linux", "cpu": "none" }, "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw=="],
+
+ "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ=="],
+
+ "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.2", "", { "os": "linux", "cpu": "none" }, "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA=="],
+
+ "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w=="],
+
+ "@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.2", "", { "os": "linux", "cpu": "x64" }, "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA=="],
+
+ "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.2", "", { "os": "none", "cpu": "arm64" }, "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw=="],
+
+ "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.2", "", { "os": "none", "cpu": "x64" }, "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA=="],
+
+ "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA=="],
+
+ "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg=="],
+
+ "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.2", "", { "os": "none", "cpu": "arm64" }, "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag=="],
+
+ "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg=="],
+
+ "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg=="],
+
+ "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ=="],
+
+ "@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.2", "", { "os": "win32", "cpu": "x64" }, "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ=="],
+
+ "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ=="],
+
+ "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="],
+
+ "@eslint/config-array": ["@eslint/config-array@0.21.1", "", { "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA=="],
+
+ "@eslint/config-helpers": ["@eslint/config-helpers@0.4.2", "", { "dependencies": { "@eslint/core": "^0.17.0" } }, "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw=="],
+
+ "@eslint/core": ["@eslint/core@0.17.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ=="],
+
+ "@eslint/eslintrc": ["@eslint/eslintrc@3.3.3", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ=="],
+
+ "@eslint/js": ["@eslint/js@9.39.2", "", {}, "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA=="],
+
+ "@eslint/object-schema": ["@eslint/object-schema@2.1.7", "", {}, "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA=="],
+
+ "@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.1", "", { "dependencies": { "@eslint/core": "^0.17.0", "levn": "^0.4.1" } }, "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA=="],
+
+ "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="],
+
+ "@humanfs/node": ["@humanfs/node@0.16.7", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ=="],
+
+ "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="],
+
+ "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="],
+
+ "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.0", "", {}, "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="],
+
+ "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="],
+
+ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="],
+
+ "@permafrost-dev/pretty-format": ["@permafrost-dev/pretty-format@1.1.5", "", { "dependencies": { "ansi-regex": "^5.0", "ansi-styles": "^5.0" } }, "sha512-hPS1xNAu6Ca4zYwyi8+ZE7JkG8uYrCGSCAHbwLqtl63Jmfe+zLKx/BRaDUoNCAtB9EfOJTdk1CzQmVeWWNrgGQ=="],
+
+ "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.57.1", "", { "os": "android", "cpu": "arm" }, "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg=="],
+
+ "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.57.1", "", { "os": "android", "cpu": "arm64" }, "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w=="],
+
+ "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.57.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg=="],
+
+ "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.57.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w=="],
+
+ "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.57.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug=="],
+
+ "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.57.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q=="],
+
+ "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.57.1", "", { "os": "linux", "cpu": "arm" }, "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw=="],
+
+ "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.57.1", "", { "os": "linux", "cpu": "arm" }, "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw=="],
+
+ "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.57.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g=="],
+
+ "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.57.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q=="],
+
+ "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.57.1", "", { "os": "linux", "cpu": "none" }, "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA=="],
+
+ "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.57.1", "", { "os": "linux", "cpu": "none" }, "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw=="],
+
+ "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.57.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w=="],
+
+ "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.57.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw=="],
+
+ "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.57.1", "", { "os": "linux", "cpu": "none" }, "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A=="],
+
+ "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.57.1", "", { "os": "linux", "cpu": "none" }, "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw=="],
+
+ "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.57.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg=="],
+
+ "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.57.1", "", { "os": "linux", "cpu": "x64" }, "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg=="],
+
+ "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.57.1", "", { "os": "linux", "cpu": "x64" }, "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw=="],
+
+ "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.57.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw=="],
+
+ "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.57.1", "", { "os": "none", "cpu": "arm64" }, "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ=="],
+
+ "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.57.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ=="],
+
+ "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.57.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew=="],
+
+ "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.57.1", "", { "os": "win32", "cpu": "x64" }, "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ=="],
+
+ "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.57.1", "", { "os": "win32", "cpu": "x64" }, "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA=="],
+
+ "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="],
+
+ "@types/chai": ["@types/chai@5.2.3", "", { "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA=="],
+
+ "@types/deep-eql": ["@types/deep-eql@4.0.2", "", {}, "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw=="],
+
+ "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="],
+
+ "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="],
+
+ "@types/node": ["@types/node@20.19.30", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g=="],
+
+ "@types/uuid": ["@types/uuid@9.0.8", "", {}, "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA=="],
+
+ "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.54.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.54.0", "@typescript-eslint/type-utils": "8.54.0", "@typescript-eslint/utils": "8.54.0", "@typescript-eslint/visitor-keys": "8.54.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.54.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ=="],
+
+ "@typescript-eslint/parser": ["@typescript-eslint/parser@8.54.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.54.0", "@typescript-eslint/types": "8.54.0", "@typescript-eslint/typescript-estree": "8.54.0", "@typescript-eslint/visitor-keys": "8.54.0", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA=="],
+
+ "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.54.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.54.0", "@typescript-eslint/types": "^8.54.0", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g=="],
+
+ "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.54.0", "", { "dependencies": { "@typescript-eslint/types": "8.54.0", "@typescript-eslint/visitor-keys": "8.54.0" } }, "sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg=="],
+
+ "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.54.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw=="],
+
+ "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.54.0", "", { "dependencies": { "@typescript-eslint/types": "8.54.0", "@typescript-eslint/typescript-estree": "8.54.0", "@typescript-eslint/utils": "8.54.0", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA=="],
+
+ "@typescript-eslint/types": ["@typescript-eslint/types@8.54.0", "", {}, "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA=="],
+
+ "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.54.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.54.0", "@typescript-eslint/tsconfig-utils": "8.54.0", "@typescript-eslint/types": "8.54.0", "@typescript-eslint/visitor-keys": "8.54.0", "debug": "^4.4.3", "minimatch": "^9.0.5", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.4.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA=="],
+
+ "@typescript-eslint/utils": ["@typescript-eslint/utils@8.54.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.54.0", "@typescript-eslint/types": "8.54.0", "@typescript-eslint/typescript-estree": "8.54.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA=="],
+
+ "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.54.0", "", { "dependencies": { "@typescript-eslint/types": "8.54.0", "eslint-visitor-keys": "^4.2.1" } }, "sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA=="],
+
+ "@vitest/coverage-v8": ["@vitest/coverage-v8@4.0.18", "", { "dependencies": { "@bcoe/v8-coverage": "^1.0.2", "@vitest/utils": "4.0.18", "ast-v8-to-istanbul": "^0.3.10", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.2.0", "magicast": "^0.5.1", "obug": "^2.1.1", "std-env": "^3.10.0", "tinyrainbow": "^3.0.3" }, "peerDependencies": { "@vitest/browser": "4.0.18", "vitest": "4.0.18" }, "optionalPeers": ["@vitest/browser"] }, "sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg=="],
+
+ "@vitest/expect": ["@vitest/expect@4.0.18", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.0.18", "@vitest/utils": "4.0.18", "chai": "^6.2.1", "tinyrainbow": "^3.0.3" } }, "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ=="],
+
+ "@vitest/mocker": ["@vitest/mocker@4.0.18", "", { "dependencies": { "@vitest/spy": "4.0.18", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0-0" }, "optionalPeers": ["msw", "vite"] }, "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ=="],
+
+ "@vitest/pretty-format": ["@vitest/pretty-format@4.0.18", "", { "dependencies": { "tinyrainbow": "^3.0.3" } }, "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw=="],
+
+ "@vitest/runner": ["@vitest/runner@4.0.18", "", { "dependencies": { "@vitest/utils": "4.0.18", "pathe": "^2.0.3" } }, "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw=="],
+
+ "@vitest/snapshot": ["@vitest/snapshot@4.0.18", "", { "dependencies": { "@vitest/pretty-format": "4.0.18", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA=="],
+
+ "@vitest/spy": ["@vitest/spy@4.0.18", "", {}, "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw=="],
+
+ "@vitest/utils": ["@vitest/utils@4.0.18", "", { "dependencies": { "@vitest/pretty-format": "4.0.18", "tinyrainbow": "^3.0.3" } }, "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA=="],
+
+ "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="],
+
+ "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="],
+
+ "ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="],
+
+ "ansi-escapes": ["ansi-escapes@7.2.0", "", { "dependencies": { "environment": "^1.0.0" } }, "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw=="],
+
+ "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "ansi-styles": ["ansi-styles@5.2.0", "", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="],
+
+ "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="],
+
+ "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="],
+
+ "ast-v8-to-istanbul": ["ast-v8-to-istanbul@0.3.10", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.31", "estree-walker": "^3.0.3", "js-tokens": "^9.0.1" } }, "sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ=="],
+
+ "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="],
+
+ "auto-changelog": ["auto-changelog@2.4.0", "", { "dependencies": { "commander": "^7.2.0", "handlebars": "^4.7.7", "node-fetch": "^2.6.1", "parse-github-url": "^1.0.2", "semver": "^7.3.5" }, "bin": "src/index.js" }, "sha512-vh17hko1c0ItsEcw6m7qPRf3m45u+XK5QyCrrBFViElZ8jnKrPC1roSznrd1fIB/0vR/zawdECCRJtTuqIXaJw=="],
+
+ "axios": ["axios@1.13.4", "", { "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, "sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg=="],
+
+ "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
+
+ "brace-expansion": ["brace-expansion@1.1.11", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="],
+
+ "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
+
+ "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="],
+
+ "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="],
+
+ "chai": ["chai@6.2.2", "", {}, "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg=="],
+
+ "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
+
+ "ci-info": ["ci-info@3.8.0", "", {}, "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw=="],
+
+ "cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="],
+
+ "cli-truncate": ["cli-truncate@4.0.0", "", { "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^7.0.0" } }, "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA=="],
+
+ "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
+
+ "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
+
+ "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
+
+ "colorette": ["colorette@2.0.20", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="],
+
+ "combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="],
+
+ "commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="],
+
+ "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="],
+
+ "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
+
+ "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
+
+ "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="],
+
+ "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="],
+
+ "dts-bundle-generator": ["dts-bundle-generator@9.5.1", "", { "dependencies": { "typescript": ">=5.0.2", "yargs": "^17.6.0" }, "bin": { "dts-bundle-generator": "dist/bin/dts-bundle-generator.js" } }, "sha512-DxpJOb2FNnEyOzMkG11sxO2dmxPjthoVWxfKqWYJ/bI/rT1rvTMktF5EKjAYrRZu6Z6t3NhOUZ0sZ5ZXevOfbA=="],
+
+ "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
+
+ "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
+
+ "environment": ["environment@1.1.0", "", {}, "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q=="],
+
+ "error-stack-parser": ["error-stack-parser@2.1.4", "", { "dependencies": { "stackframe": "^1.3.4" } }, "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ=="],
+
+ "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="],
+
+ "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="],
+
+ "es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="],
+
+ "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="],
+
+ "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="],
+
+ "esbuild": ["esbuild@0.27.2", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.2", "@esbuild/android-arm": "0.27.2", "@esbuild/android-arm64": "0.27.2", "@esbuild/android-x64": "0.27.2", "@esbuild/darwin-arm64": "0.27.2", "@esbuild/darwin-x64": "0.27.2", "@esbuild/freebsd-arm64": "0.27.2", "@esbuild/freebsd-x64": "0.27.2", "@esbuild/linux-arm": "0.27.2", "@esbuild/linux-arm64": "0.27.2", "@esbuild/linux-ia32": "0.27.2", "@esbuild/linux-loong64": "0.27.2", "@esbuild/linux-mips64el": "0.27.2", "@esbuild/linux-ppc64": "0.27.2", "@esbuild/linux-riscv64": "0.27.2", "@esbuild/linux-s390x": "0.27.2", "@esbuild/linux-x64": "0.27.2", "@esbuild/netbsd-arm64": "0.27.2", "@esbuild/netbsd-x64": "0.27.2", "@esbuild/openbsd-arm64": "0.27.2", "@esbuild/openbsd-x64": "0.27.2", "@esbuild/openharmony-arm64": "0.27.2", "@esbuild/sunos-x64": "0.27.2", "@esbuild/win32-arm64": "0.27.2", "@esbuild/win32-ia32": "0.27.2", "@esbuild/win32-x64": "0.27.2" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw=="],
+
+ "escalade": ["escalade@3.1.1", "", {}, "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="],
+
+ "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="],
+
+ "eslint": ["eslint@9.39.2", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.39.2", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw=="],
+
+ "eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="],
+
+ "eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="],
+
+ "espree": ["espree@10.4.0", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ=="],
+
+ "esquery": ["esquery@1.5.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg=="],
+
+ "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="],
+
+ "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="],
+
+ "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="],
+
+ "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="],
+
+ "eventemitter3": ["eventemitter3@5.0.1", "", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="],
+
+ "execa": ["execa@8.0.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^8.0.1", "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" } }, "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg=="],
+
+ "expect-type": ["expect-type@1.3.0", "", {}, "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA=="],
+
+ "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
+
+ "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="],
+
+ "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="],
+
+ "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="],
+
+ "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="],
+
+ "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
+
+ "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="],
+
+ "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="],
+
+ "flatted": ["flatted@3.2.9", "", {}, "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ=="],
+
+ "follow-redirects": ["follow-redirects@1.15.11", "", {}, "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="],
+
+ "form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="],
+
+ "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
+
+ "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],
+
+ "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="],
+
+ "get-east-asian-width": ["get-east-asian-width@1.2.0", "", {}, "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA=="],
+
+ "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="],
+
+ "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="],
+
+ "get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="],
+
+ "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="],
+
+ "globals": ["globals@17.2.0", "", {}, "sha512-tovnCz/fEq+Ripoq+p/gN1u7l6A7wwkoBT9pRCzTHzsD/LvADIzXZdjmRymh5Ztf0DYC3Rwg5cZRYjxzBmzbWg=="],
+
+ "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="],
+
+ "handlebars": ["handlebars@4.7.7", "", { "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.0", "source-map": "^0.6.1", "wordwrap": "^1.0.0" }, "optionalDependencies": { "uglify-js": "^3.1.4" }, "bin": "bin/handlebars" }, "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA=="],
+
+ "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
+
+ "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="],
+
+ "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="],
+
+ "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="],
+
+ "html-escaper": ["html-escaper@2.0.2", "", {}, "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg=="],
+
+ "human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="],
+
+ "husky": ["husky@9.1.7", "", { "bin": { "husky": "bin.js" } }, "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA=="],
+
+ "ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="],
+
+ "import-fresh": ["import-fresh@3.3.0", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw=="],
+
+ "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="],
+
+ "is-ci": ["is-ci@3.0.1", "", { "dependencies": { "ci-info": "^3.2.0" }, "bin": "bin.js" }, "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ=="],
+
+ "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
+
+ "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
+
+ "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
+
+ "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
+
+ "is-stream": ["is-stream@3.0.0", "", {}, "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA=="],
+
+ "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
+
+ "istanbul-lib-coverage": ["istanbul-lib-coverage@3.2.2", "", {}, "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg=="],
+
+ "istanbul-lib-report": ["istanbul-lib-report@3.0.1", "", { "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", "supports-color": "^7.1.0" } }, "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw=="],
+
+ "istanbul-reports": ["istanbul-reports@3.2.0", "", { "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" } }, "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA=="],
+
+ "js-tokens": ["js-tokens@9.0.1", "", {}, "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="],
+
+ "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="],
+
+ "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="],
+
+ "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="],
+
+ "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="],
+
+ "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="],
+
+ "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="],
+
+ "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="],
+
+ "lint-staged": ["lint-staged@15.5.2", "", { "dependencies": { "chalk": "^5.4.1", "commander": "^13.1.0", "debug": "^4.4.0", "execa": "^8.0.1", "lilconfig": "^3.1.3", "listr2": "^8.2.5", "micromatch": "^4.0.8", "pidtree": "^0.6.0", "string-argv": "^0.3.2", "yaml": "^2.7.0" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w=="],
+
+ "listr2": ["listr2@8.3.3", "", { "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ=="],
+
+ "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="],
+
+ "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="],
+
+ "log-update": ["log-update@6.1.0", "", { "dependencies": { "ansi-escapes": "^7.0.0", "cli-cursor": "^5.0.0", "slice-ansi": "^7.1.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w=="],
+
+ "lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="],
+
+ "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="],
+
+ "magicast": ["magicast@0.5.1", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "source-map-js": "^1.2.1" } }, "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw=="],
+
+ "make-dir": ["make-dir@4.0.0", "", { "dependencies": { "semver": "^7.5.3" } }, "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw=="],
+
+ "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],
+
+ "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="],
+
+ "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
+
+ "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
+
+ "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
+
+ "mimic-fn": ["mimic-fn@4.0.0", "", {}, "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw=="],
+
+ "mimic-function": ["mimic-function@5.0.1", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="],
+
+ "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="],
+
+ "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="],
+
+ "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
+
+ "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
+
+ "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="],
+
+ "neo-async": ["neo-async@2.6.2", "", {}, "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="],
+
+ "node-fetch": ["node-fetch@2.6.11", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w=="],
+
+ "npm-run-path": ["npm-run-path@5.2.0", "", { "dependencies": { "path-key": "^4.0.0" } }, "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg=="],
+
+ "obug": ["obug@2.1.1", "", {}, "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ=="],
+
+ "onetime": ["onetime@6.0.0", "", { "dependencies": { "mimic-fn": "^4.0.0" } }, "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ=="],
+
+ "optionator": ["optionator@0.9.3", "", { "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0" } }, "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg=="],
+
+ "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="],
+
+ "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="],
+
+ "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="],
+
+ "parse-github-url": ["parse-github-url@1.0.2", "", { "bin": "cli.js" }, "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw=="],
+
+ "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="],
+
+ "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
+
+ "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
+
+ "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
+
+ "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="],
+
+ "pidtree": ["pidtree@0.6.0", "", { "bin": "bin/pidtree.js" }, "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g=="],
+
+ "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="],
+
+ "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="],
+
+ "prettier": ["prettier@3.8.1", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg=="],
+
+ "proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="],
+
+ "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="],
+
+ "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="],
+
+ "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="],
+
+ "restore-cursor": ["restore-cursor@5.1.0", "", { "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" } }, "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA=="],
+
+ "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="],
+
+ "rollup": ["rollup@4.57.1", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.57.1", "@rollup/rollup-android-arm64": "4.57.1", "@rollup/rollup-darwin-arm64": "4.57.1", "@rollup/rollup-darwin-x64": "4.57.1", "@rollup/rollup-freebsd-arm64": "4.57.1", "@rollup/rollup-freebsd-x64": "4.57.1", "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", "@rollup/rollup-linux-arm-musleabihf": "4.57.1", "@rollup/rollup-linux-arm64-gnu": "4.57.1", "@rollup/rollup-linux-arm64-musl": "4.57.1", "@rollup/rollup-linux-loong64-gnu": "4.57.1", "@rollup/rollup-linux-loong64-musl": "4.57.1", "@rollup/rollup-linux-ppc64-gnu": "4.57.1", "@rollup/rollup-linux-ppc64-musl": "4.57.1", "@rollup/rollup-linux-riscv64-gnu": "4.57.1", "@rollup/rollup-linux-riscv64-musl": "4.57.1", "@rollup/rollup-linux-s390x-gnu": "4.57.1", "@rollup/rollup-linux-x64-gnu": "4.57.1", "@rollup/rollup-linux-x64-musl": "4.57.1", "@rollup/rollup-openbsd-x64": "4.57.1", "@rollup/rollup-openharmony-arm64": "4.57.1", "@rollup/rollup-win32-arm64-msvc": "4.57.1", "@rollup/rollup-win32-ia32-msvc": "4.57.1", "@rollup/rollup-win32-x64-gnu": "4.57.1", "@rollup/rollup-win32-x64-msvc": "4.57.1", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A=="],
+
+ "semver": ["semver@7.5.4", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": "bin/semver.js" }, "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA=="],
+
+ "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
+
+ "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
+
+ "siginfo": ["siginfo@2.0.0", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="],
+
+ "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],
+
+ "slice-ansi": ["slice-ansi@5.0.0", "", { "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" } }, "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ=="],
+
+ "source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="],
+
+ "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
+
+ "stack-generator": ["stack-generator@2.0.10", "", { "dependencies": { "stackframe": "^1.3.4" } }, "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ=="],
+
+ "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="],
+
+ "stackframe": ["stackframe@1.3.4", "", {}, "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="],
+
+ "stacktrace-gps": ["stacktrace-gps@3.1.2", "", { "dependencies": { "source-map": "0.5.6", "stackframe": "^1.3.4" } }, "sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ=="],
+
+ "stacktrace-js": ["stacktrace-js@2.0.2", "", { "dependencies": { "error-stack-parser": "^2.0.6", "stack-generator": "^2.0.5", "stacktrace-gps": "^3.0.4" } }, "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg=="],
+
+ "std-env": ["std-env@3.10.0", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="],
+
+ "string-argv": ["string-argv@0.3.2", "", {}, "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q=="],
+
+ "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
+
+ "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="],
+
+ "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="],
+
+ "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
+
+ "tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="],
+
+ "tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="],
+
+ "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="],
+
+ "tinyrainbow": ["tinyrainbow@3.0.3", "", {}, "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q=="],
+
+ "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
+
+ "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="],
+
+ "ts-api-utils": ["ts-api-utils@2.4.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA=="],
+
+ "ts-mixer": ["ts-mixer@6.0.4", "", {}, "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA=="],
+
+ "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="],
+
+ "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
+
+ "uglify-js": ["uglify-js@3.17.4", "", { "bin": { "uglifyjs": "bin/uglifyjs" } }, "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g=="],
+
+ "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
+
+ "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="],
+
+ "uuid": ["uuid@9.0.1", "", { "bin": "dist/bin/uuid" }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="],
+
+ "vite": ["vite@7.3.1", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA=="],
+
+ "vite-plugin-externalize-deps": ["vite-plugin-externalize-deps@0.10.0", "", { "peerDependencies": { "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-eQrtpT/Do7AvDn76l1yL6ZHyXJ+UWH2LaHVqhAes9go54qaAnPZuMbgxcroQ/7WY3ZyetZzYW2quQnDF0DV5qg=="],
+
+ "vitest": ["vitest@4.0.18", "", { "dependencies": { "@vitest/expect": "4.0.18", "@vitest/mocker": "4.0.18", "@vitest/pretty-format": "4.0.18", "@vitest/runner": "4.0.18", "@vitest/snapshot": "4.0.18", "@vitest/spy": "4.0.18", "@vitest/utils": "4.0.18", "es-module-lexer": "^1.7.0", "expect-type": "^1.2.2", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^3.10.0", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.0.3", "vite": "^6.0.0 || ^7.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.0.18", "@vitest/browser-preview": "4.0.18", "@vitest/browser-webdriverio": "4.0.18", "@vitest/ui": "4.0.18", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ=="],
+
+ "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="],
+
+ "whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="],
+
+ "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
+
+ "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="],
+
+ "wordwrap": ["wordwrap@1.0.0", "", {}, "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="],
+
+ "wrap-ansi": ["wrap-ansi@9.0.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q=="],
+
+ "xml-formatter": ["xml-formatter@3.6.7", "", { "dependencies": { "xml-parser-xo": "^4.1.5" } }, "sha512-IsfFYJQuoDqtUlKhm4EzeoBOb+fQwzQVeyxxAQ0sThn/nFnQmyLPTplqq4yRhaOENH/tAyujD2TBfIYzUKB6hg=="],
+
+ "xml-parser-xo": ["xml-parser-xo@4.1.5", "", {}, "sha512-TxyRxk9sTOUg3glxSIY6f0nfuqRll2OEF8TspLgh5mZkLuBgheCn3zClcDSGJ58TvNmiwyCCuat4UajPud/5Og=="],
+
+ "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="],
+
+ "yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="],
+
+ "yaml": ["yaml@2.8.2", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A=="],
+
+ "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="],
+
+ "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
+
+ "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="],
+
+ "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="],
+
+ "@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="],
+
+ "@eslint/eslintrc/ignore": ["ignore@5.3.0", "", {}, "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg=="],
+
+ "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
+
+ "@typescript-eslint/typescript-estree/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="],
+
+ "chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
+
+ "chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
+
+ "cli-truncate/string-width": ["string-width@7.0.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw=="],
+
+ "cliui/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
+
+ "cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
+
+ "eslint/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="],
+
+ "eslint/ignore": ["ignore@5.3.0", "", {}, "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg=="],
+
+ "execa/cross-spawn": ["cross-spawn@7.0.3", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w=="],
+
+ "istanbul-lib-report/istanbul-lib-coverage": ["istanbul-lib-coverage@3.2.0", "", {}, "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw=="],
+
+ "lint-staged/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
+
+ "lint-staged/commander": ["commander@13.1.0", "", {}, "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw=="],
+
+ "log-update/slice-ansi": ["slice-ansi@7.1.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" } }, "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg=="],
+
+ "log-update/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],
+
+ "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
+
+ "npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="],
+
+ "restore-cursor/onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="],
+
+ "slice-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="],
+
+ "slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@4.0.0", "", {}, "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ=="],
+
+ "stacktrace-gps/source-map": ["source-map@0.5.6", "", {}, "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA=="],
+
+ "wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="],
+
+ "wrap-ansi/string-width": ["string-width@7.0.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw=="],
+
+ "wrap-ansi/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],
+
+ "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="],
+
+ "cli-truncate/string-width/emoji-regex": ["emoji-regex@10.3.0", "", {}, "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw=="],
+
+ "cli-truncate/string-width/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],
+
+ "cliui/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
+
+ "cliui/string-width/is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
+
+ "cliui/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
+
+ "cliui/wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
+
+ "eslint/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="],
+
+ "log-update/slice-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="],
+
+ "log-update/slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@5.0.0", "", { "dependencies": { "get-east-asian-width": "^1.0.0" } }, "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA=="],
+
+ "log-update/strip-ansi/ansi-regex": ["ansi-regex@6.0.1", "", {}, "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="],
+
+ "wrap-ansi/string-width/emoji-regex": ["emoji-regex@10.3.0", "", {}, "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw=="],
+
+ "wrap-ansi/string-width/strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="],
+
+ "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.0.1", "", {}, "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="],
+
+ "cli-truncate/string-width/strip-ansi/ansi-regex": ["ansi-regex@6.0.1", "", {}, "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="],
+
+ "cliui/wrap-ansi/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
+
+ "cliui/wrap-ansi/string-width/is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
+
+ "wrap-ansi/string-width/strip-ansi/ansi-regex": ["ansi-regex@6.0.1", "", {}, "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA=="],
+ }
+}
diff --git a/docs/available-environments.md b/docs/available-environments.md
index c8adb08..5554a96 100644
--- a/docs/available-environments.md
+++ b/docs/available-environments.md
@@ -2,27 +2,27 @@
`node-ray` offers several variants to allow you to use it in either NodeJS or Browser environments.
+Requirements:
+- Node.js >= 20.19
+- ESM-only (CommonJS `require` is not supported)
+
### NodeJS
When using in a NodeJS environment (the default), import the package as you would normally:
-```js
+```js
// es module import:
import { ray } from 'node-ray';
-
-// commonjs import:
-const ray = require('node-ray').ray;
```
+`node-ray` is ESM-only. CommonJS `require` is not supported.
+
### Browser bundle
If you're bundling your scripts for use in a Browser environment _(i.e. using webpack)_, import the `/web` variant:
-```js
+```js
// es module import:
import { ray } from 'node-ray/web';
-
-// commonjs import:
-const { ray } = require('node-ray/web');
```
### Browser standalone
diff --git a/docs/usage.md b/docs/usage.md
index 260bb25..7858a8e 100644
--- a/docs/usage.md
+++ b/docs/usage.md
@@ -2,6 +2,8 @@
The API for the NodeJS package closely mirrors the official `spatie/ray` package API, so it's likely that if it exists there, it's available to use in your NodeJS project.
+`node-ray` is ESM-only. Ensure your project uses ESM (`"type": "module"`) or use `.mjs` files. Requires Node.js >= 20.19.
+
### Enabling and disabling
Ray can be enabled or disabled at runtime using `enable()` or `disable()`.
@@ -238,10 +240,10 @@ ray().uppercase('this is uppercase text');
Here's a sample script that demonstrates a number of the features, both basic and advanced.
-Save as `demo.js`, and run with `node demo.js`:
+Save as `demo.mjs` (or set `"type": "module"` in your project), and run with `node demo.mjs`:
```js
-const { ray } = require('node-ray');
+import { ray } from 'node-ray';
function test1() {
return ray().count('test one');
diff --git a/eslint.config.js b/eslint.config.js
new file mode 100644
index 0000000..074c421
--- /dev/null
+++ b/eslint.config.js
@@ -0,0 +1,58 @@
+import js from '@eslint/js';
+import globals from 'globals';
+import tsPlugin from '@typescript-eslint/eslint-plugin';
+import tsParser from '@typescript-eslint/parser';
+
+const tsRecommendedRules = tsPlugin.configs.recommended?.rules ?? {};
+
+export default [
+ {
+ ignores: [
+ 'dist/**',
+ 'dist-*/**',
+ 'coverage/**',
+ 'node_modules/**',
+ '*.bak',
+ '*.d.ts',
+ '*.lockb',
+ 'bun.lock',
+ 'package-lock.json',
+ 'biome.json',
+ 'prettier.config.js',
+ 'vite.config.js',
+ ],
+ linterOptions: {
+ reportUnusedDisableDirectives: 'off',
+ },
+ },
+ js.configs.recommended,
+ {
+ files: ['**/*.{ts,js}'],
+ languageOptions: {
+ parser: tsParser,
+ parserOptions: {
+ ecmaVersion: 2020,
+ sourceType: 'module',
+ },
+ globals: {
+ ...globals.node,
+ ...globals.browser,
+ },
+ },
+ plugins: {
+ '@typescript-eslint': tsPlugin,
+ },
+ rules: {
+ ...tsRecommendedRules,
+ '@typescript-eslint/explicit-function-return-type': 'off',
+ '@typescript-eslint/no-explicit-any': 'off',
+ '@typescript-eslint/explicit-module-boundary-types': 'off',
+ '@typescript-eslint/no-var-requires': 'off',
+ '@typescript-eslint/no-empty-function': 'off',
+ '@typescript-eslint/no-unused-vars': 'off',
+ '@typescript-eslint/ban-ts-comment': 'off',
+ indent: ['error', 4, { SwitchCase: 1 }],
+ 'no-useless-catch': 'off',
+ },
+ },
+];
diff --git a/package.json b/package.json
index a47c434..37e4f28 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "node-ray",
- "version": "2.1.2",
+ "version": "3.0.0",
"description": "Understand and fix Javascript & TypeScript bugs faster",
"license": "MIT",
"author": "Patrick Organ ",
@@ -26,30 +26,26 @@
"exports": {
".": {
"import": "./dist/index.js",
- "require": "./dist/index.cjs",
"types": "./dist/index.d.ts"
},
"./dist/web": {
"import": "./dist/web.js",
- "require": "./dist/web.cjs",
"types": "./dist/web.d.ts"
},
"./web": {
"import": "./dist/web.js",
- "require": "./dist/web.cjs",
"types": "./dist/web.d.ts"
},
"./node": {
"import": "./dist/index.js",
- "require": "./dist/index.cjs",
"types": "./dist/index.d.ts"
}
},
"scripts": {
"test": "vitest --coverage",
- "fmt": "./node_modules/.bin/prettier --config prettier.config.cjs --write 'src/**/*.{js,ts,json}' 'tests/**/*.{js,ts,json}' './*.js'",
- "lint": "./node_modules/.bin/eslint --ext ts,js src/",
- "lint:fix": "./node_modules/.bin/eslint --ext ts,js --fix src/",
+ "fmt": "./node_modules/.bin/prettier --write 'src/**/*.{js,ts,json}' 'tests/**/*.{js,ts,json}' './*.js'",
+ "lint": "./node_modules/.bin/eslint src tests scripts",
+ "lint:fix": "./node_modules/.bin/eslint src tests scripts --fix",
"lint:staged": "./node_modules/.bin/lint-staged",
"fix": "npm run fmt && npm run lint:fix",
"build:dev": "BUILD_ENV=development node ./scripts/build.js",
@@ -60,35 +56,37 @@
},
"lint-staged": {
"*.{js,ts}": [
- "./node_modules/.bin/prettier --config prettier.config.cjs --write",
- "./node_modules/.bin/eslint --ext ts,js --fix"
+ "./node_modules/.bin/prettier --write",
+ "./node_modules/.bin/eslint --fix"
],
"*.{json,css,scss,gql}": [
- "./node_modules/.bin/prettier --config prettier.config.cjs --write"
+ "./node_modules/.bin/prettier --write"
],
"*.{yaml,yml}": [
- "./node_modules/.bin/prettier --config prettier.config.cjs --tab-width 2 --write"
+ "./node_modules/.bin/prettier --write"
]
},
"devDependencies": {
"@types/node": "^20.11.30",
"@types/uuid": "^9.0.8",
- "@typescript-eslint/eslint-plugin": "^7.4.0",
- "@typescript-eslint/parser": "^7.4.0",
- "@vitest/coverage-v8": "^1.4.0",
+ "@eslint/js": "^9.39.2",
+ "@typescript-eslint/eslint-plugin": "^8.54.0",
+ "@typescript-eslint/parser": "^8.54.0",
+ "@vitest/coverage-v8": "^4.0.18",
"auto-changelog": "^2.4.0",
"dts-bundle-generator": "^9.3.1",
- "esbuild": "^0.25.3",
- "eslint": "^8.57.0",
+ "esbuild": "^0.27.2",
+ "eslint": "^9.39.2",
+ "globals": "^17.2.0",
"husky": "^9.0.11",
"is-ci": "^3.0.1",
"lint-staged": "^15.2.2",
- "prettier": "^3.2.5",
+ "prettier": "^3.8.1",
"ts-mixer": "^6.0.4",
- "typescript": "^5.4.3",
- "vite": "^5.2.6",
- "vite-plugin-externalize-deps": "^0.8.0",
- "vitest": "^1.4.0"
+ "typescript": "^5.9.3",
+ "vite": "^7.3.1",
+ "vite-plugin-externalize-deps": "^0.10.0",
+ "vitest": "^4.0.18"
},
"dependencies": {
"@permafrost-dev/pretty-format": "^1.1.5",
@@ -98,6 +96,6 @@
"xml-formatter": "^3.6.2"
},
"engines": {
- "node": ">=18"
+ "node": ">=20.19"
}
}
diff --git a/prettier.config.cjs b/prettier.config.js
similarity index 97%
rename from prettier.config.cjs
rename to prettier.config.js
index 66a716d..d106252 100644
--- a/prettier.config.cjs
+++ b/prettier.config.js
@@ -19,7 +19,7 @@ const overrides = [
},
];
-module.exports = {
+export default {
arrowParens: 'avoid',
bracketSameLine: true,
bracketSpacing: true,
diff --git a/scripts/build.js b/scripts/build.js
index e3103c5..730155c 100644
--- a/scripts/build.js
+++ b/scripts/build.js
@@ -11,21 +11,11 @@ export const globalConfig = {
outDir: resolve(dirname(fileURLToPath(import.meta.url)), '../' + outputDir),
basePath: resolve(dirname(fileURLToPath(import.meta.url)), '..'),
builds: [
- {
- entry: 'src/Ray.ts',
- outfile: 'web.cjs',
- target: 'browser',
- },
{
entry: 'src/Ray.ts',
outfile: 'web.js',
target: 'browser',
},
- {
- entry: 'src/RayNode.ts',
- outfile: 'index.cjs',
- target: 'node',
- },
{
entry: 'src/RayNode.ts',
outfile: 'index.js',
@@ -72,7 +62,7 @@ export const globalConfig = {
config.entry = resolve(globalConfig.basePath, config.entry);
config.minify = config.outfile.includes('.min.');
config.standalone = config.outfile.includes('standalone');
- config.format = config.outfile.endsWith('.js') ? 'es' : 'cjs';
+ config.format = 'es';
if (config.standalone) {
config.format = 'iife';
}
diff --git a/src/PayloadFactory.ts b/src/PayloadFactory.ts
index 97a32ca..7f66b0c 100644
--- a/src/PayloadFactory.ts
+++ b/src/PayloadFactory.ts
@@ -1,5 +1,3 @@
-/* eslint-disable @typescript-eslint/ban-types */
-
import { ArgumentConverter } from '@/ArgumentConverter';
import { BoolPayload } from '@/Payloads/BoolPayload';
import { HtmlPayload } from '@/Payloads/HtmlPayload';
diff --git a/tests/__snapshots__/Ray.test.ts.snap b/tests/__snapshots__/Ray.test.ts.snap
index ec2b4e2..793cc34 100644
--- a/tests/__snapshots__/Ray.test.ts.snap
+++ b/tests/__snapshots__/Ray.test.ts.snap
@@ -1,26 +1,27 @@
-// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+// Bun Snapshot v1, https://bun.sh/docs/test/snapshots
-exports[`allows defaults to the http url scheme 1`] = `
+exports[`allows setting the url scheme to https 1`] = `
[
- "http://localhost:23517/",
+ "https://otherhost:3000/",
]
`;
-exports[`allows setting the url scheme to https 1`] = `
+exports[`allows defaults to the http url scheme 1`] = `
[
- "https://otherhost:3000/",
+ "http://localhost:23517/",
]
`;
-exports[`can chain method calls when using if with a callback and a false condition 1`] = `
+exports[`sends the ray ban payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "two",
- "label": "Text",
+ "values": [
+ "🕶",
+ ],
},
"origin": {
"file": "",
@@ -28,68 +29,73 @@ exports[`can chain method calls when using if with a callback and a false condit
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "log",
},
],
"uuid": "fakeUuid",
},
+]
+`;
+
+exports[`sends the ray charles payload 1`] = `
+[
{
"meta": [],
"payloads": [
{
"content": {
- "color": "blue",
+ "values": [
+ "🎶 🎹 🎷 🕺",
+ ],
},
"origin": {
- "file": "/tests/Ray.test.ts",
+ "file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "color",
+ "type": "log",
},
],
"uuid": "fakeUuid",
},
+]
+`;
+
+exports[`sends a color payload 1`] = `
+[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "three",
- "label": "Text",
+ "color": "red",
},
"origin": {
- "file": "",
+ "file": "/tests/Ray.test.ts",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "color",
},
],
"uuid": "fakeUuid",
},
-]
-`;
-
-exports[`can chain multiple if calls with callbacks together 1`] = `
-[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "test",
- "label": "Text",
+ "color": "green",
},
"origin": {
- "file": "",
+ "file": "/tests/Ray.test.ts",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "color",
},
],
"uuid": "fakeUuid",
@@ -99,7 +105,7 @@ exports[`can chain multiple if calls with callbacks together 1`] = `
"payloads": [
{
"content": {
- "color": "green",
+ "color": "orange",
},
"origin": {
"file": "/tests/Ray.test.ts",
@@ -117,7 +123,7 @@ exports[`can chain multiple if calls with callbacks together 1`] = `
"payloads": [
{
"content": {
- "size": "lg",
+ "color": "red",
},
"origin": {
"file": "/tests/Ray.test.ts",
@@ -125,7 +131,7 @@ exports[`can chain multiple if calls with callbacks together 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "size",
+ "type": "color",
},
],
"uuid": "fakeUuid",
@@ -134,38 +140,34 @@ exports[`can chain multiple if calls with callbacks together 1`] = `
"meta": [],
"payloads": [
{
- "content": {},
+ "content": {
+ "color": "purple",
+ },
"origin": {
- "file": "",
+ "file": "/tests/Ray.test.ts",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "hide",
+ "type": "color",
},
],
"uuid": "fakeUuid",
},
-]
-`;
-
-exports[`can send additional payloads from the sent payload callback 1`] = `
-[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "test",
- "label": "HTML",
+ "color": "blue",
},
"origin": {
- "file": "",
+ "file": "/tests/Ray.test.ts",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "color",
},
],
"uuid": "fakeUuid",
@@ -175,7 +177,7 @@ exports[`can send additional payloads from the sent payload callback 1`] = `
"payloads": [
{
"content": {
- "color": "purple",
+ "color": "gray",
},
"origin": {
"file": "/tests/Ray.test.ts",
@@ -191,15 +193,14 @@ exports[`can send additional payloads from the sent payload callback 1`] = `
]
`;
-exports[`can send payloads from the sending payload callback 1`] = `
+exports[`sends screen color payloads 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "sent before the main payload",
- "label": "HTML",
+ "color": "green",
},
"origin": {
"file": "",
@@ -207,7 +208,7 @@ exports[`can send payloads from the sending payload callback 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "screen_color",
},
],
"uuid": "fakeUuid",
@@ -217,8 +218,7 @@ exports[`can send payloads from the sending payload callback 1`] = `
"payloads": [
{
"content": {
- "content": "test",
- "label": "HTML",
+ "color": "orange",
},
"origin": {
"file": "",
@@ -226,49 +226,17 @@ exports[`can send payloads from the sending payload callback 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "screen_color",
},
],
"uuid": "fakeUuid",
},
-]
-`;
-
-exports[`can transform a request into JSON 1`] = `"{"uuid":"1-2-3-4","payloads":[],"meta":[{"test_version":1}]}"`;
-
-exports[`chains payloads together 1`] = `
-[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "one",
- "label": "Text",
- },
- "origin": {
- "file": "",
- "function_name": "xxxx",
- "hostname": "remote",
- "line_number": 999,
- },
- "type": "custom",
- },
- {
- "content": {
- "color": "green",
- },
- "origin": {
- "file": "/tests/Ray.test.ts",
- "function_name": "xxxx",
- "hostname": "remote",
- "line_number": 999,
- },
- "type": "color",
- },
- {
- "content": {
- "label": "test",
+ "color": "red",
},
"origin": {
"file": "",
@@ -276,23 +244,17 @@ exports[`chains payloads together 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "label",
+ "type": "screen_color",
},
],
"uuid": "fakeUuid",
},
-]
-`;
-
-exports[`doesn't blow up when calling html without a value 1`] = `
-[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "",
- "label": "HTML",
+ "color": "purple",
},
"origin": {
"file": "",
@@ -300,7 +262,7 @@ exports[`doesn't blow up when calling html without a value 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "screen_color",
},
],
"uuid": "fakeUuid",
@@ -310,8 +272,7 @@ exports[`doesn't blow up when calling html without a value 1`] = `
"payloads": [
{
"content": {
- "content": "",
- "label": "HTML",
+ "color": "blue",
},
"origin": {
"file": "",
@@ -319,27 +280,17 @@ exports[`doesn't blow up when calling html without a value 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "screen_color",
},
],
"uuid": "fakeUuid",
},
-]
-`;
-
-exports[`measures the execution time of a closure 1`] = `
-[
{
"meta": [],
"payloads": [
{
"content": {
- "is_new_timer": false,
- "max_memory_usage_during_total_time": 0,
- "max_memory_usage_since_last_call": 0,
- "name": "closure",
- "time_since_last_call": 0,
- "total_time": 20,
+ "color": "gray",
},
"origin": {
"file": "",
@@ -347,7 +298,7 @@ exports[`measures the execution time of a closure 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "measure",
+ "type": "screen_color",
},
],
"uuid": "fakeUuid",
@@ -355,19 +306,14 @@ exports[`measures the execution time of a closure 1`] = `
]
`;
-exports[`measures the execution time of named stopwatches 1`] = `
+exports[`sends a custom screen color payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "is_new_timer": true,
- "max_memory_usage_during_total_time": 0,
- "max_memory_usage_since_last_call": 0,
- "name": "first",
- "time_since_last_call": 0,
- "total_time": 0,
+ "color": "red",
},
"origin": {
"file": "",
@@ -375,22 +321,22 @@ exports[`measures the execution time of named stopwatches 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "measure",
+ "type": "screen_color",
},
],
"uuid": "fakeUuid",
},
+]
+`;
+
+exports[`sends a label payload 1`] = `
+[
{
"meta": [],
"payloads": [
{
"content": {
- "is_new_timer": false,
- "max_memory_usage_during_total_time": 0,
- "max_memory_usage_since_last_call": 0,
- "name": "first",
- "time_since_last_call": 0,
- "total_time": 20,
+ "label": "test-123",
},
"origin": {
"file": "",
@@ -398,7 +344,7 @@ exports[`measures the execution time of named stopwatches 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "measure",
+ "type": "label",
},
],
"uuid": "fakeUuid",
@@ -406,27 +352,22 @@ exports[`measures the execution time of named stopwatches 1`] = `
]
`;
-exports[`measures the execution time of repeated and unnamed calls to measure 1`] = `
+exports[`sends a size payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "is_new_timer": true,
- "max_memory_usage_during_total_time": 0,
- "max_memory_usage_since_last_call": 0,
- "name": "default",
- "time_since_last_call": 0,
- "total_time": 0,
+ "size": "lg",
},
"origin": {
- "file": "",
+ "file": "/tests/Ray.test.ts",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "measure",
+ "type": "size",
},
],
"uuid": "fakeUuid",
@@ -436,20 +377,15 @@ exports[`measures the execution time of repeated and unnamed calls to measure 1`
"payloads": [
{
"content": {
- "is_new_timer": false,
- "max_memory_usage_during_total_time": 0,
- "max_memory_usage_since_last_call": 0,
- "name": "default",
- "time_since_last_call": 0,
- "total_time": 20,
+ "size": "sm",
},
"origin": {
- "file": "",
+ "file": "/tests/Ray.test.ts",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "measure",
+ "type": "size",
},
],
"uuid": "fakeUuid",
@@ -459,20 +395,15 @@ exports[`measures the execution time of repeated and unnamed calls to measure 1`
"payloads": [
{
"content": {
- "is_new_timer": false,
- "max_memory_usage_during_total_time": 0,
- "max_memory_usage_since_last_call": 0,
- "name": "default",
- "time_since_last_call": 20,
- "total_time": 40,
+ "size": "lg",
},
"origin": {
- "file": "",
+ "file": "/tests/Ray.test.ts",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "measure",
+ "type": "size",
},
],
"uuid": "fakeUuid",
@@ -480,14 +411,14 @@ exports[`measures the execution time of repeated and unnamed calls to measure 1`
]
`;
-exports[`pauses code execution 1`] = `
+exports[`sends a new screen payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "name": "xxxxx",
+ "name": "test 1",
},
"origin": {
"file": "",
@@ -495,7 +426,7 @@ exports[`pauses code execution 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "create_lock",
+ "type": "new_screen",
},
],
"uuid": "fakeUuid",
@@ -503,15 +434,14 @@ exports[`pauses code execution 1`] = `
]
`;
-exports[`sends a boolean payload 1`] = `
+exports[`sends a clear screen payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "content": true,
- "label": "Boolean",
+ "name": "",
},
"origin": {
"file": "",
@@ -519,7 +449,7 @@ exports[`sends a boolean payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "new_screen",
},
],
"uuid": "fakeUuid",
@@ -527,28 +457,20 @@ exports[`sends a boolean payload 1`] = `
]
`;
-exports[`sends a caller payload 1`] = `
+exports[`sends a clear all payload 1`] = `
[
{
"meta": [],
"payloads": [
{
- "content": {
- "frame": {
- "class": "",
- "file_name": "Ray.ts",
- "line_number": 999,
- "method": "caller",
- "vendor_frame": false,
- },
- },
+ "content": {},
"origin": {
"file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "caller",
+ "type": "clear_all",
},
],
"uuid": "fakeUuid",
@@ -556,24 +478,20 @@ exports[`sends a caller payload 1`] = `
]
`;
-exports[`sends a classname payload 1`] = `
+exports[`sends a confetti payload 1`] = `
[
{
"meta": [],
"payloads": [
{
- "content": {
- "values": [
- "Ray",
- ],
- },
+ "content": {},
"origin": {
"file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "log",
+ "type": "confetti",
},
],
"uuid": "fakeUuid",
@@ -581,35 +499,15 @@ exports[`sends a classname payload 1`] = `
]
`;
-exports[`sends a clear all payload 1`] = `
-[
- {
- "meta": [],
- "payloads": [
- {
- "content": {},
- "origin": {
- "file": "",
- "function_name": "xxxx",
- "hostname": "remote",
- "line_number": 999,
- },
- "type": "clear_all",
- },
- ],
- "uuid": "fakeUuid",
- },
-]
-`;
-
-exports[`sends a clear screen payload 1`] = `
+exports[`sends an html payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "name": "",
+ "content": "test",
+ "label": "HTML",
},
"origin": {
"file": "",
@@ -617,7 +515,7 @@ exports[`sends a clear screen payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "new_screen",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
@@ -625,22 +523,23 @@ exports[`sends a clear screen payload 1`] = `
]
`;
-exports[`sends a color payload 1`] = `
+exports[`doesn't blow up when calling html without a value 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "color": "red",
+ "content": "",
+ "label": "HTML",
},
"origin": {
- "file": "/tests/Ray.test.ts",
+ "file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "color",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
@@ -650,33 +549,40 @@ exports[`sends a color payload 1`] = `
"payloads": [
{
"content": {
- "color": "green",
+ "content": "",
+ "label": "HTML",
},
"origin": {
- "file": "/tests/Ray.test.ts",
+ "file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "color",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
},
+]
+`;
+
+exports[`sends a text payload 1`] = `
+[
{
"meta": [],
"payloads": [
{
"content": {
- "color": "orange",
+ "content": "test 1",
+ "label": "Text",
},
"origin": {
- "file": "/tests/Ray.test.ts",
+ "file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "color",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
@@ -686,69 +592,90 @@ exports[`sends a color payload 1`] = `
"payloads": [
{
"content": {
- "color": "red",
+ "content": "<em>test 2</em>",
+ "label": "Text",
},
"origin": {
- "file": "/tests/Ray.test.ts",
+ "file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "color",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
},
+]
+`;
+
+exports[`sends an image payload 1`] = `
+[
{
"meta": [],
"payloads": [
{
"content": {
- "color": "purple",
+ "content": "
",
+ "label": "Image",
},
"origin": {
- "file": "/tests/Ray.test.ts",
+ "file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "color",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
},
+]
+`;
+
+exports[`sends an xml payload 1`] = `
+[
{
"meta": [],
"payloads": [
{
"content": {
- "color": "blue",
+ "content": "<root>
<abc>1</abc>
</root>",
+ "label": "XML",
},
"origin": {
- "file": "/tests/Ray.test.ts",
+ "file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "color",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
},
+]
+`;
+
+exports[`sends a json string payload 1`] = `
+[
{
"meta": [],
"payloads": [
{
"content": {
- "color": "gray",
+ "content": {
+ "A": 123,
+ },
+ "label": "JSON",
},
"origin": {
- "file": "/tests/Ray.test.ts",
+ "file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "color",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
@@ -756,20 +683,22 @@ exports[`sends a color payload 1`] = `
]
`;
-exports[`sends a confetti payload 1`] = `
+exports[`sends an object as json payload 1`] = `
[
{
"meta": [],
"payloads": [
{
- "content": {},
+ "content": {
+ "value": ""{\\"a\\":1,\\"b\\":2}"",
+ },
"origin": {
"file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "confetti",
+ "type": "json_string",
},
],
"uuid": "fakeUuid",
@@ -777,15 +706,16 @@ exports[`sends a confetti payload 1`] = `
]
`;
-exports[`sends a custom payload 1`] = `
+exports[`sends a classname payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "test 123",
- "label": "test",
+ "values": [
+ "Ray",
+ ],
},
"origin": {
"file": "",
@@ -793,18 +723,22 @@ exports[`sends a custom payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "log",
},
],
"uuid": "fakeUuid",
},
+]
+`;
+
+exports[`sends a notify payload 1`] = `
+[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "test 4",
- "label": "",
+ "value": "hello world",
},
"origin": {
"file": "",
@@ -812,18 +746,23 @@ exports[`sends a custom payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "notify",
},
],
"uuid": "fakeUuid",
},
+]
+`;
+
+exports[`sends an error payload 1`] = `
+[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "test 5",
- "label": "",
+ "content": "Error:
test error",
+ "label": "Error",
},
"origin": {
"file": "",
@@ -841,16 +780,15 @@ exports[`sends a custom payload 1`] = `
"payloads": [
{
"content": {
- "content": "test 5",
- "label": "",
+ "color": "red",
},
"origin": {
- "file": "",
+ "file": "/tests/Ray.test.ts",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "color",
},
],
"uuid": "fakeUuid",
@@ -858,14 +796,16 @@ exports[`sends a custom payload 1`] = `
]
`;
-exports[`sends a custom screen color payload 1`] = `
+exports[`sends a raw payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "color": "red",
+ "values": [
+ "one",
+ ],
},
"origin": {
"file": "",
@@ -873,28 +813,21 @@ exports[`sends a custom screen color payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "screen_color",
+ "type": "log",
},
- ],
- "uuid": "fakeUuid",
- },
-]
-`;
-
-exports[`sends a hide payload 1`] = `
-[
- {
- "meta": [],
- "payloads": [
{
- "content": {},
+ "content": {
+ "values": [
+ "two",
+ ],
+ },
"origin": {
"file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "hide",
+ "type": "log",
},
],
"uuid": "fakeUuid",
@@ -902,48 +835,36 @@ exports[`sends a hide payload 1`] = `
]
`;
-exports[`sends a json string payload 1`] = `
+exports[`sends show and hide app payloads 1`] = `
[
{
"meta": [],
"payloads": [
{
- "content": {
- "content": {
- "A": 123,
- },
- "label": "JSON",
- },
+ "content": {},
"origin": {
"file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "show_app",
},
],
"uuid": "fakeUuid",
},
-]
-`;
-
-exports[`sends a label payload 1`] = `
-[
{
"meta": [],
"payloads": [
{
- "content": {
- "label": "test-123",
- },
+ "content": {},
"origin": {
"file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "label",
+ "type": "hide_app",
},
],
"uuid": "fakeUuid",
@@ -951,14 +872,15 @@ exports[`sends a label payload 1`] = `
]
`;
-exports[`sends a new screen payload 1`] = `
+exports[`sends a null payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "name": "test 1",
+ "content": null,
+ "label": "Null",
},
"origin": {
"file": "",
@@ -966,7 +888,7 @@ exports[`sends a new screen payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "new_screen",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
@@ -974,14 +896,15 @@ exports[`sends a new screen payload 1`] = `
]
`;
-exports[`sends a notify payload 1`] = `
+exports[`sends a boolean payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "value": "hello world",
+ "content": true,
+ "label": "Boolean",
},
"origin": {
"file": "",
@@ -989,7 +912,7 @@ exports[`sends a notify payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "notify",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
@@ -997,15 +920,16 @@ exports[`sends a notify payload 1`] = `
]
`;
-exports[`sends a null payload 1`] = `
+exports[`sends a string payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "content": null,
- "label": "Null",
+ "values": [
+ "test",
+ ],
},
"origin": {
"file": "",
@@ -1013,7 +937,7 @@ exports[`sends a null payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "log",
},
],
"uuid": "fakeUuid",
@@ -1021,38 +945,20 @@ exports[`sends a null payload 1`] = `
]
`;
-exports[`sends a raw payload 1`] = `
+exports[`sends a hide payload 1`] = `
[
{
"meta": [],
"payloads": [
{
- "content": {
- "values": [
- "one",
- ],
- },
- "origin": {
- "file": "",
- "function_name": "xxxx",
- "hostname": "remote",
- "line_number": 999,
- },
- "type": "log",
- },
- {
- "content": {
- "values": [
- "two",
- ],
- },
+ "content": {},
"origin": {
"file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "log",
+ "type": "hide",
},
],
"uuid": "fakeUuid",
@@ -1081,14 +987,22 @@ exports[`sends a remove payload 1`] = `
]
`;
-exports[`sends a screen color payload 1`] = `
+exports[`sends a table payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "color": "red",
+ "label": "table",
+ "values": [
+ 1,
+ 2,
+ "Object {
1"A": 1,
}",
+ "Ray {
1"canSendPayload": true,
1"chainedPayloads": Array [],
1"chaining": false,
1"inCallback": false,
1"limitOrigin": null,
1"settings": Settings {
1 1"_host": "localhost",
1 1"_port": 23510,
1 1"_scheme": "http",
1 1"always_send_raw_values": false,
1 1"enable": true,
1 1"enabled_callback": null,
1 1"intercept_console_log": false,
1 1"local_path": null,
1 1"not_defined": false,
1 1"originalSettings": Object {
1 1 1"always_send_raw_values": false,
1 1 1"enable": true,
1 1 1"host": "localhost",
1 1 1"local_path": null,
1 1 1"not_defined": false,
1 1 1"port": 23510,
1 1 1"remote_path": null,
1 1},
1 1"remote_path": null,
1 1"sending_payload_callback": null,
1 1"sent_payload_callback": null,
1},
1"uuid": "fakeUuid",
}",
+ true,
+ null,
+ ],
},
"origin": {
"file": "",
@@ -1096,7 +1010,7 @@ exports[`sends a screen color payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "screen_color",
+ "type": "table",
},
],
"uuid": "fakeUuid",
@@ -1106,7 +1020,12 @@ exports[`sends a screen color payload 1`] = `
"payloads": [
{
"content": {
- "color": "green",
+ "label": "Table",
+ "values": [
+ " [
13,
14,
]",
+ "Object {
1"B": 2,
}",
+ false,
+ ],
},
"origin": {
"file": "",
@@ -1114,22 +1033,21 @@ exports[`sends a screen color payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "screen_color",
+ "type": "table",
},
],
"uuid": "fakeUuid",
},
-]
-`;
-
-exports[`sends a screen color payload 2`] = `
-[
{
"meta": [],
"payloads": [
{
"content": {
- "color": "red",
+ "label": "Table",
+ "values": {
+ "counter": 123,
+ "message": "hello world",
+ },
},
"origin": {
"file": "",
@@ -1137,7 +1055,7 @@ exports[`sends a screen color payload 2`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "screen_color",
+ "type": "table",
},
],
"uuid": "fakeUuid",
@@ -1147,7 +1065,11 @@ exports[`sends a screen color payload 2`] = `
"payloads": [
{
"content": {
- "color": "green",
+ "label": "Test",
+ "values": {
+ "name": "test",
+ "value": 987,
+ },
},
"origin": {
"file": "",
@@ -1155,7 +1077,7 @@ exports[`sends a screen color payload 2`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "screen_color",
+ "type": "table",
},
],
"uuid": "fakeUuid",
@@ -1163,43 +1085,42 @@ exports[`sends a screen color payload 2`] = `
]
`;
-exports[`sends a separator payload 1`] = `
+exports[`sends a custom payload 1`] = `
[
{
"meta": [],
"payloads": [
{
- "content": {},
+ "content": {
+ "content": "test 123",
+ "label": "test",
+ },
"origin": {
"file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "separator",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
},
-]
-`;
-
-exports[`sends a size payload 1`] = `
-[
{
"meta": [],
"payloads": [
{
"content": {
- "size": "lg",
+ "content": "test 4",
+ "label": "",
},
"origin": {
- "file": "/tests/Ray.test.ts",
+ "file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "size",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
@@ -1209,15 +1130,16 @@ exports[`sends a size payload 1`] = `
"payloads": [
{
"content": {
- "size": "sm",
+ "content": "test 5",
+ "label": "",
},
"origin": {
- "file": "/tests/Ray.test.ts",
+ "file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "size",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
@@ -1227,15 +1149,16 @@ exports[`sends a size payload 1`] = `
"payloads": [
{
"content": {
- "size": "lg",
+ "content": "test 5",
+ "label": "",
},
"origin": {
- "file": "/tests/Ray.test.ts",
+ "file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "size",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
@@ -1243,16 +1166,21 @@ exports[`sends a size payload 1`] = `
]
`;
-exports[`sends a string payload 1`] = `
+exports[`can transform a request into JSON 1`] = `"{"uuid":"1-2-3-4","payloads":[],"meta":[{"test_version":1}]}"`;
+
+exports[`measures the execution time of a closure 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "values": [
- "test",
- ],
+ "is_new_timer": false,
+ "max_memory_usage_during_total_time": 0,
+ "max_memory_usage_since_last_call": 0,
+ "name": "closure",
+ "time_since_last_call": 0,
+ "total_time": 20,
},
"origin": {
"file": "",
@@ -1260,7 +1188,7 @@ exports[`sends a string payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "log",
+ "type": "measure",
},
],
"uuid": "fakeUuid",
@@ -1268,89 +1196,19 @@ exports[`sends a string payload 1`] = `
]
`;
-exports[`sends a table payload 1`] = `
+exports[`measures the execution time of repeated and unnamed calls to measure 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "label": "table",
- "values": [
- 1,
- 2,
- "Object {
1"A": 1,
}",
- "Ray {
1"canSendPayload": true,
1"chainedPayloads": Array [],
1"chaining": false,
1"inCallback": false,
1"limitOrigin": null,
1"settings": Settings {
1 1"_host": "localhost",
1 1"_port": 23510,
1 1"_scheme": "http",
1 1"always_send_raw_values": false,
1 1"enable": true,
1 1"enabled_callback": null,
1 1"intercept_console_log": false,
1 1"local_path": null,
1 1"not_defined": false,
1 1"originalSettings": Object {
1 1 1"always_send_raw_values": false,
1 1 1"enable": true,
1 1 1"host": "localhost",
1 1 1"local_path": null,
1 1 1"not_defined": false,
1 1 1"port": 23510,
1 1 1"remote_path": null,
1 1},
1 1"remote_path": null,
1 1"sending_payload_callback": null,
1 1"sent_payload_callback": null,
1},
1"uuid": "fakeUuid",
}",
- true,
- null,
- ],
- },
- "origin": {
- "file": "",
- "function_name": "xxxx",
- "hostname": "remote",
- "line_number": 999,
- },
- "type": "table",
- },
- ],
- "uuid": "fakeUuid",
- },
- {
- "meta": [],
- "payloads": [
- {
- "content": {
- "label": "Table",
- "values": [
- " [
13,
14,
]",
- "Object {
1"B": 2,
}",
- false,
- ],
- },
- "origin": {
- "file": "",
- "function_name": "xxxx",
- "hostname": "remote",
- "line_number": 999,
- },
- "type": "table",
- },
- ],
- "uuid": "fakeUuid",
- },
- {
- "meta": [],
- "payloads": [
- {
- "content": {
- "label": "Table",
- "values": {
- "counter": 123,
- "message": "hello world",
- },
- },
- "origin": {
- "file": "",
- "function_name": "xxxx",
- "hostname": "remote",
- "line_number": 999,
- },
- "type": "table",
- },
- ],
- "uuid": "fakeUuid",
- },
- {
- "meta": [],
- "payloads": [
- {
- "content": {
- "label": "Test",
- "values": {
- "name": "test",
- "value": 987,
- },
+ "is_new_timer": true,
+ "max_memory_usage_during_total_time": 0,
+ "max_memory_usage_since_last_call": 0,
+ "name": "default",
+ "time_since_last_call": 0,
+ "total_time": 0,
},
"origin": {
"file": "",
@@ -1358,23 +1216,22 @@ exports[`sends a table payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "table",
+ "type": "measure",
},
],
"uuid": "fakeUuid",
},
-]
-`;
-
-exports[`sends a text payload 1`] = `
-[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "test 1",
- "label": "Text",
+ "is_new_timer": false,
+ "max_memory_usage_during_total_time": 0,
+ "max_memory_usage_since_last_call": 0,
+ "name": "default",
+ "time_since_last_call": 0,
+ "total_time": 20,
},
"origin": {
"file": "",
@@ -1382,7 +1239,7 @@ exports[`sends a text payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "measure",
},
],
"uuid": "fakeUuid",
@@ -1392,8 +1249,12 @@ exports[`sends a text payload 1`] = `
"payloads": [
{
"content": {
- "content": "<em>test 2</em>",
- "label": "Text",
+ "is_new_timer": false,
+ "max_memory_usage_during_total_time": 0,
+ "max_memory_usage_since_last_call": 0,
+ "name": "default",
+ "time_since_last_call": 20,
+ "total_time": 40,
},
"origin": {
"file": "",
@@ -1401,7 +1262,7 @@ exports[`sends a text payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "measure",
},
],
"uuid": "fakeUuid",
@@ -1409,14 +1270,19 @@ exports[`sends a text payload 1`] = `
]
`;
-exports[`sends a trace payload 1`] = `
+exports[`measures the execution time of named stopwatches 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "frames": [],
+ "is_new_timer": true,
+ "max_memory_usage_during_total_time": 0,
+ "max_memory_usage_since_last_call": 0,
+ "name": "first",
+ "time_since_last_call": 0,
+ "total_time": 0,
},
"origin": {
"file": "",
@@ -1424,23 +1290,22 @@ exports[`sends a trace payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "trace",
+ "type": "measure",
},
],
"uuid": "fakeUuid",
},
-]
-`;
-
-exports[`sends an error payload 1`] = `
-[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "Error:
test error",
- "label": "Error",
+ "is_new_timer": false,
+ "max_memory_usage_during_total_time": 0,
+ "max_memory_usage_since_last_call": 0,
+ "name": "first",
+ "time_since_last_call": 0,
+ "total_time": 20,
},
"origin": {
"file": "",
@@ -1448,25 +1313,30 @@ exports[`sends an error payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "measure",
},
],
"uuid": "fakeUuid",
},
+]
+`;
+
+exports[`pauses code execution 1`] = `
+[
{
"meta": [],
"payloads": [
{
"content": {
- "color": "red",
+ "name": "xxxxx",
},
"origin": {
- "file": "/tests/Ray.test.ts",
+ "file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "color",
+ "type": "create_lock",
},
],
"uuid": "fakeUuid",
@@ -1474,17 +1344,15 @@ exports[`sends an error payload 1`] = `
]
`;
-exports[`sends an event payload 1`] = `
+exports[`sends an html payload when calling ray() with an object argument 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "class_based_event": true,
- "event": undefined,
- "name": "testevent",
- "payload": "Array []",
+ "content": "Object {
1"A": 123,
1"B": [
1 14,
1 15,
1 16,
1],
}",
+ "label": "HTML",
},
"origin": {
"file": "",
@@ -1492,7 +1360,7 @@ exports[`sends an event payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "event",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
@@ -1510,10 +1378,10 @@ exports[`sends an exception payload 1`] = `
"class": "Error",
"frames": [
{
- "class": "unknown",
+ "class": undefined,
"file_name": "/tests/Ray.test.ts",
"line_number": 999,
- "method": "unknown",
+ "method": "",
"snippet": [],
"vendor_frame": false,
},
@@ -1563,10 +1431,10 @@ exports[`sends an exception payload with metadata 1`] = `
"class": "Error",
"frames": [
{
- "class": "unknown",
+ "class": undefined,
"file_name": "/tests/Ray.test.ts",
"line_number": 999,
- "method": "unknown",
+ "method": "",
"snippet": [],
"vendor_frame": false,
},
@@ -1610,15 +1478,17 @@ exports[`sends an exception payload with metadata 1`] = `
]
`;
-exports[`sends an html markup payload 1`] = `
+exports[`sends an event payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "<em>test</em>",
- "label": "Markup",
+ "class_based_event": true,
+ "event": undefined,
+ "name": "testevent",
+ "payload": "Array []",
},
"origin": {
"file": "",
@@ -1626,7 +1496,7 @@ exports[`sends an html markup payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "event",
},
],
"uuid": "fakeUuid",
@@ -1634,15 +1504,20 @@ exports[`sends an html markup payload 1`] = `
]
`;
-exports[`sends an html payload 1`] = `
+exports[`sends a caller payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "test",
- "label": "HTML",
+ "frame": {
+ "class": "",
+ "file_name": "Ray.ts",
+ "line_number": 999,
+ "method": "caller",
+ "vendor_frame": false,
+ },
},
"origin": {
"file": "",
@@ -1650,7 +1525,7 @@ exports[`sends an html payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "caller",
},
],
"uuid": "fakeUuid",
@@ -1658,14 +1533,14 @@ exports[`sends an html payload 1`] = `
]
`;
-exports[`sends an html payload when calling ray() with an object argument 1`] = `
+exports[`can send payloads from the sending payload callback 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "Object {
1"A": 123,
1"B": [
1 14,
1 15,
1 16,
1],
}",
+ "content": "sent before the main payload",
"label": "HTML",
},
"origin": {
@@ -1679,18 +1554,13 @@ exports[`sends an html payload when calling ray() with an object argument 1`] =
],
"uuid": "fakeUuid",
},
-]
-`;
-
-exports[`sends an image payload 1`] = `
-[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "
",
- "label": "Image",
+ "content": "test",
+ "label": "HTML",
},
"origin": {
"file": "",
@@ -1706,14 +1576,15 @@ exports[`sends an image payload 1`] = `
]
`;
-exports[`sends an object as json payload 1`] = `
+exports[`can send additional payloads from the sent payload callback 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "value": ""{\\"a\\":1,\\"b\\":2}"",
+ "content": "test",
+ "label": "HTML",
},
"origin": {
"file": "",
@@ -1721,31 +1592,25 @@ exports[`sends an object as json payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "json_string",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
},
-]
-`;
-
-exports[`sends an xml payload 1`] = `
-[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "<root>
<abc>1</abc>
</root>",
- "label": "XML",
+ "color": "purple",
},
"origin": {
- "file": "",
+ "file": "/tests/Ray.test.ts",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "color",
},
],
"uuid": "fakeUuid",
@@ -1753,14 +1618,15 @@ exports[`sends an xml payload 1`] = `
]
`;
-exports[`sends screen color payloads 1`] = `
+exports[`can chain method calls when using if with a callback and a false condition 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "color": "green",
+ "content": "two",
+ "label": "Text",
},
"origin": {
"file": "",
@@ -1768,7 +1634,7 @@ exports[`sends screen color payloads 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "screen_color",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
@@ -1778,15 +1644,15 @@ exports[`sends screen color payloads 1`] = `
"payloads": [
{
"content": {
- "color": "orange",
+ "color": "blue",
},
"origin": {
- "file": "",
+ "file": "/tests/Ray.test.ts",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "screen_color",
+ "type": "color",
},
],
"uuid": "fakeUuid",
@@ -1796,7 +1662,8 @@ exports[`sends screen color payloads 1`] = `
"payloads": [
{
"content": {
- "color": "red",
+ "content": "three",
+ "label": "Text",
},
"origin": {
"file": "",
@@ -1804,17 +1671,23 @@ exports[`sends screen color payloads 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "screen_color",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
},
+]
+`;
+
+exports[`can chain multiple if calls with callbacks together 1`] = `
+[
{
"meta": [],
"payloads": [
{
"content": {
- "color": "purple",
+ "content": "test",
+ "label": "Text",
},
"origin": {
"file": "",
@@ -1822,7 +1695,7 @@ exports[`sends screen color payloads 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "screen_color",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
@@ -1832,15 +1705,15 @@ exports[`sends screen color payloads 1`] = `
"payloads": [
{
"content": {
- "color": "blue",
+ "color": "green",
},
"origin": {
- "file": "",
+ "file": "/tests/Ray.test.ts",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "screen_color",
+ "type": "color",
},
],
"uuid": "fakeUuid",
@@ -1850,15 +1723,31 @@ exports[`sends screen color payloads 1`] = `
"payloads": [
{
"content": {
- "color": "gray",
+ "size": "lg",
+ },
+ "origin": {
+ "file": "/tests/Ray.test.ts",
+ "function_name": "xxxx",
+ "hostname": "remote",
+ "line_number": 999,
},
+ "type": "size",
+ },
+ ],
+ "uuid": "fakeUuid",
+ },
+ {
+ "meta": [],
+ "payloads": [
+ {
+ "content": {},
"origin": {
"file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "screen_color",
+ "type": "hide",
},
],
"uuid": "fakeUuid",
@@ -1866,7 +1755,7 @@ exports[`sends screen color payloads 1`] = `
]
`;
-exports[`sends show and hide app payloads 1`] = `
+exports[`sends a separator payload 1`] = `
[
{
"meta": [],
@@ -1879,23 +1768,48 @@ exports[`sends show and hide app payloads 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "show_app",
+ "type": "separator",
},
],
"uuid": "fakeUuid",
},
+]
+`;
+
+exports[`sends a screen color payload 1`] = `
+[
{
"meta": [],
"payloads": [
{
- "content": {},
+ "content": {
+ "color": "red",
+ },
"origin": {
"file": "",
"function_name": "xxxx",
"hostname": "remote",
"line_number": 999,
},
- "type": "hide_app",
+ "type": "screen_color",
+ },
+ ],
+ "uuid": "fakeUuid",
+ },
+ {
+ "meta": [],
+ "payloads": [
+ {
+ "content": {
+ "color": "green",
+ },
+ "origin": {
+ "file": "",
+ "function_name": "xxxx",
+ "hostname": "remote",
+ "line_number": 999,
+ },
+ "type": "screen_color",
},
],
"uuid": "fakeUuid",
@@ -1903,16 +1817,15 @@ exports[`sends show and hide app payloads 1`] = `
]
`;
-exports[`sends the ray ban payload 1`] = `
+exports[`sends an html markup payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "values": [
- "🕶",
- ],
+ "content": "<em>test</em>",
+ "label": "Markup",
},
"origin": {
"file": "",
@@ -1920,7 +1833,7 @@ exports[`sends the ray ban payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "log",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
@@ -1928,16 +1841,14 @@ exports[`sends the ray ban payload 1`] = `
]
`;
-exports[`sends the ray charles payload 1`] = `
+exports[`sends a trace payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "values": [
- "🎶 🎹 🎷 🕺",
- ],
+ "frames": [],
},
"origin": {
"file": "",
@@ -1945,7 +1856,55 @@ exports[`sends the ray charles payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "log",
+ "type": "trace",
+ },
+ ],
+ "uuid": "fakeUuid",
+ },
+]
+`;
+
+exports[`chains payloads together 1`] = `
+[
+ {
+ "meta": [],
+ "payloads": [
+ {
+ "content": {
+ "content": "one",
+ "label": "Text",
+ },
+ "origin": {
+ "file": "",
+ "function_name": "xxxx",
+ "hostname": "remote",
+ "line_number": 999,
+ },
+ "type": "custom",
+ },
+ {
+ "content": {
+ "color": "green",
+ },
+ "origin": {
+ "file": "/tests/Ray.test.ts",
+ "function_name": "xxxx",
+ "hostname": "remote",
+ "line_number": 999,
+ },
+ "type": "color",
+ },
+ {
+ "content": {
+ "label": "test",
+ },
+ "origin": {
+ "file": "",
+ "function_name": "xxxx",
+ "hostname": "remote",
+ "line_number": 999,
+ },
+ "type": "label",
},
],
"uuid": "fakeUuid",
diff --git a/tests/__snapshots__/RayNode.test.ts.snap b/tests/__snapshots__/RayNode.test.ts.snap
index ca21d24..31498f8 100644
--- a/tests/__snapshots__/RayNode.test.ts.snap
+++ b/tests/__snapshots__/RayNode.test.ts.snap
@@ -1,20 +1,14 @@
-// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+// Bun Snapshot v1, https://bun.sh/docs/test/snapshots
-exports[`gets the node runtime info 1`] = `
+exports[`sends an existing file payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "label": "NodeInfo",
- "values": {
- "Extensions": "xxx",
- "Memory Heap usage": 999,
- "Memory RSS usage": 999,
- "Node version": "v999",
- "V8 version": "v999",
- },
+ "content": "one,two,three
",
+ "label": "test.txt",
},
"origin": {
"file": "/test/file.js",
@@ -22,7 +16,7 @@ exports[`gets the node runtime info 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "table",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
@@ -30,19 +24,15 @@ exports[`gets the node runtime info 1`] = `
]
`;
-exports[`measures the execution time of a closure 1`] = `
+exports[`sends a missing file payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "is_new_timer": false,
- "max_memory_usage_during_total_time": 0,
- "max_memory_usage_since_last_call": 0,
- "name": "closure",
- "time_since_last_call": 0,
- "total_time": 20,
+ "content": "File not found: '{missing.txt'",
+ "label": "File",
},
"origin": {
"file": "/test/file.js",
@@ -50,7 +40,7 @@ exports[`measures the execution time of a closure 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "measure",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
@@ -58,19 +48,15 @@ exports[`measures the execution time of a closure 1`] = `
]
`;
-exports[`measures the execution time of named stopwatches 1`] = `
+exports[`sends an existing image file payload 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "is_new_timer": true,
- "max_memory_usage_during_total_time": 0,
- "max_memory_usage_since_last_call": 0,
- "name": "first",
- "time_since_last_call": 0,
- "total_time": 0,
+ "content": "
",
+ "label": "Image",
},
"origin": {
"file": "/test/file.js",
@@ -78,22 +64,23 @@ exports[`measures the execution time of named stopwatches 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "measure",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
},
+]
+`;
+
+exports[`sends an image url payload 1`] = `
+[
{
"meta": [],
"payloads": [
{
"content": {
- "is_new_timer": false,
- "max_memory_usage_during_total_time": 0,
- "max_memory_usage_since_last_call": 0,
- "name": "first",
- "time_since_last_call": 0,
- "total_time": 20,
+ "content": "
",
+ "label": "Image",
},
"origin": {
"file": "/test/file.js",
@@ -101,7 +88,7 @@ exports[`measures the execution time of named stopwatches 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "measure",
+ "type": "custom",
},
],
"uuid": "fakeUuid",
@@ -109,19 +96,19 @@ exports[`measures the execution time of named stopwatches 1`] = `
]
`;
-exports[`measures the execution time of repeated and unnamed calls to measure 1`] = `
+exports[`measures the execution time of a closure 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "is_new_timer": true,
+ "is_new_timer": false,
"max_memory_usage_during_total_time": 0,
"max_memory_usage_since_last_call": 0,
- "name": "default",
+ "name": "closure",
"time_since_last_call": 0,
- "total_time": 0,
+ "total_time": 20,
},
"origin": {
"file": "/test/file.js",
@@ -134,17 +121,22 @@ exports[`measures the execution time of repeated and unnamed calls to measure 1`
],
"uuid": "fakeUuid",
},
+]
+`;
+
+exports[`measures the execution time of repeated and unnamed calls to measure 1`] = `
+[
{
"meta": [],
"payloads": [
{
"content": {
- "is_new_timer": false,
+ "is_new_timer": true,
"max_memory_usage_during_total_time": 0,
"max_memory_usage_since_last_call": 0,
"name": "default",
"time_since_last_call": 0,
- "total_time": 20,
+ "total_time": 0,
},
"origin": {
"file": "/test/file.js",
@@ -166,8 +158,8 @@ exports[`measures the execution time of repeated and unnamed calls to measure 1`
"max_memory_usage_during_total_time": 0,
"max_memory_usage_since_last_call": 0,
"name": "default",
- "time_since_last_call": 20,
- "total_time": 40,
+ "time_since_last_call": 0,
+ "total_time": 20,
},
"origin": {
"file": "/test/file.js",
@@ -180,18 +172,17 @@ exports[`measures the execution time of repeated and unnamed calls to measure 1`
],
"uuid": "fakeUuid",
},
-]
-`;
-
-exports[`sends a missing file payload 1`] = `
-[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "File not found: '{missing.txt'",
- "label": "File",
+ "is_new_timer": false,
+ "max_memory_usage_during_total_time": 0,
+ "max_memory_usage_since_last_call": 0,
+ "name": "default",
+ "time_since_last_call": 20,
+ "total_time": 40,
},
"origin": {
"file": "/test/file.js",
@@ -199,7 +190,7 @@ exports[`sends a missing file payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "measure",
},
],
"uuid": "fakeUuid",
@@ -207,15 +198,19 @@ exports[`sends a missing file payload 1`] = `
]
`;
-exports[`sends an existing file payload 1`] = `
+exports[`measures the execution time of named stopwatches 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "one,two,three
",
- "label": "test.txt",
+ "is_new_timer": true,
+ "max_memory_usage_during_total_time": 0,
+ "max_memory_usage_since_last_call": 0,
+ "name": "first",
+ "time_since_last_call": 0,
+ "total_time": 0,
},
"origin": {
"file": "/test/file.js",
@@ -223,23 +218,22 @@ exports[`sends an existing file payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "measure",
},
],
"uuid": "fakeUuid",
},
-]
-`;
-
-exports[`sends an existing image file payload 1`] = `
-[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "
",
- "label": "Image",
+ "is_new_timer": false,
+ "max_memory_usage_during_total_time": 0,
+ "max_memory_usage_since_last_call": 0,
+ "name": "first",
+ "time_since_last_call": 0,
+ "total_time": 20,
},
"origin": {
"file": "/test/file.js",
@@ -247,7 +241,7 @@ exports[`sends an existing image file payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "measure",
},
],
"uuid": "fakeUuid",
@@ -255,15 +249,21 @@ exports[`sends an existing image file payload 1`] = `
]
`;
-exports[`sends an image url payload 1`] = `
+exports[`gets the node runtime info 1`] = `
[
{
"meta": [],
"payloads": [
{
"content": {
- "content": "
",
- "label": "Image",
+ "label": "NodeInfo",
+ "values": {
+ "Extensions": "xxx",
+ "Memory Heap usage": 999,
+ "Memory RSS usage": 999,
+ "Node version": "v999",
+ "V8 version": "v999",
+ },
},
"origin": {
"file": "/test/file.js",
@@ -271,7 +271,7 @@ exports[`sends an image url payload 1`] = `
"hostname": "remote",
"line_number": 999,
},
- "type": "custom",
+ "type": "table",
},
],
"uuid": "fakeUuid",
diff --git a/tests/lib/utils.test.ts b/tests/lib/utils.test.ts
index 07800d9..6a65891 100644
--- a/tests/lib/utils.test.ts
+++ b/tests/lib/utils.test.ts
@@ -87,7 +87,7 @@ it('formats a date', () => {
expect(formatDateExtended(date)).toBe('2021-01-01 12:34:56');
expect(formatDateExtended(date, 'YYYY-MM-DD')).toBe('2021-01-01');
expect(formatDateExtended(date, 'hh:mm:ss')).toBe('12:34:56');
- expect(formatDateExtended(date, 'T').length).greaterThan(1);
+ expect(formatDateExtended(date, 'T').length).toBeGreaterThan(1);
});
it('gets the type of a variable', () => {