├── .gitignore
├── packages
├── ts-gleam
│ ├── .npmignore
│ ├── package.json
│ ├── README.md
│ ├── tsconfig.json
│ ├── LICENSE
│ ├── .gitignore
│ └── src
│ │ └── index.ts
├── vite-gleam
│ ├── .gitignore
│ ├── .npmignore
│ ├── tsdown.config.js
│ ├── LICENSE
│ ├── package.json
│ ├── README.md
│ └── src
│ │ └── index.ts
└── example
│ ├── src
│ ├── vite-env.d.ts
│ ├── ffi_dom.ts
│ ├── counter.gleam
│ ├── main.ts
│ ├── style.css
│ └── gleam.svg
│ ├── README.md
│ ├── gleam.toml
│ ├── vite.config.ts
│ ├── .gitignore
│ ├── manifest.toml
│ ├── index.html
│ ├── package.json
│ ├── tsconfig.json
│ ├── LICENSE
│ └── public
│ └── vite.svg
├── .vscode
├── settings.json
├── launch.json
└── gleam.code-workspace
├── pnpm-workspace.yaml
├── package.json
├── README.md
├── LICENSE
└── pnpm-lock.yaml
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/packages/ts-gleam/.npmignore:
--------------------------------------------------------------------------------
1 | example
--------------------------------------------------------------------------------
/packages/vite-gleam/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmake.configureOnOpen": false
3 | }
4 |
--------------------------------------------------------------------------------
/packages/vite-gleam/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | src
3 | .gitignore
4 |
--------------------------------------------------------------------------------
/packages/example/src/vite-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/packages/example/README.md:
--------------------------------------------------------------------------------
1 | This is an example project for `vite-gleam` and `ts-gleam`.
2 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - packages/*
3 | onlyBuiltDependencies:
4 | - esbuild
5 |
--------------------------------------------------------------------------------
/packages/example/gleam.toml:
--------------------------------------------------------------------------------
1 | name = "example"
2 | version = "1.0.0"
3 | target = "javascript"
4 |
5 | [javascript]
6 | typescript_declarations = true
7 |
8 | [dependencies]
9 | gleam_stdlib = "~> 0.30"
10 |
--------------------------------------------------------------------------------
/packages/example/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite';
2 | import Inspect from 'vite-plugin-inspect';
3 | import gleam from 'vite-gleam';
4 |
5 | export default defineConfig({
6 | plugins: [gleam(), Inspect()],
7 | build: { sourcemap: true },
8 | });
9 |
--------------------------------------------------------------------------------
/packages/example/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | build
14 | manifest.toml
15 | *.local
16 |
17 | # Editor directories and files
18 | .vscode/*
19 | !.vscode/extensions.json
20 | .idea
21 | .DS_Store
22 | *.suo
23 | *.ntvs*
24 | *.njsproj
25 | *.sln
26 | *.sw?
27 |
--------------------------------------------------------------------------------
/packages/example/manifest.toml:
--------------------------------------------------------------------------------
1 | # This file was generated by Gleam
2 | # You typically do not need to edit this file
3 |
4 | packages = [
5 | { name = "gleam_stdlib", version = "0.65.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "7C69C71D8C493AE11A5184828A77110EB05A7786EBF8B25B36A72F879C3EE107" },
6 | ]
7 |
8 | [requirements]
9 | gleam_stdlib = { version = "~> 0.30" }
10 |
--------------------------------------------------------------------------------
/packages/example/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite + TS
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/packages/vite-gleam/tsdown.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "tsdown";
2 |
3 | export default defineConfig({
4 | entry: ["src/index.ts"],
5 |
6 | clean: true,
7 | target: 'es2022',
8 | format: ["esm", "cjs"],
9 |
10 | bundle: true,
11 | dts: {
12 | resolve: true,
13 | entry: "src/index.ts",
14 | compilerOptions: {
15 | moduleResolution: 'node'
16 | }
17 | }
18 | })
19 |
--------------------------------------------------------------------------------
/packages/example/src/ffi_dom.ts:
--------------------------------------------------------------------------------
1 | export function qs(selector: string) {
2 | return document.querySelector(selector);
3 | }
4 |
5 | export function update(
6 | element: HTMLElement,
7 | property: Prop,
8 | updater: (v: HTMLElement[Prop]) => HTMLElement[Prop],
9 | ) {
10 | element[property] = updater(element[property]);
11 | }
12 |
13 | export function onclick(element: HTMLElement, handler: () => void) {
14 | element.addEventListener("click", handler);
15 | }
16 |
--------------------------------------------------------------------------------
/packages/example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "example",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "tsc && vite build",
9 | "preview": "vite preview",
10 | "format": "prettier -w packages/*/src"
11 | },
12 | "devDependencies": {
13 | "ts-gleam": "file:../ts-gleam",
14 | "typescript": "^5.9.3",
15 | "vite": "^7.2.4",
16 | "vite-gleam": "link:../vite-gleam",
17 | "vite-plugin-inspect": "^11.3.3"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/packages/ts-gleam/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ts-gleam",
3 | "description": "get type safety when importing .gleam from javascript",
4 | "version": "1.1.0",
5 | "repository": {
6 | "url": "https://github.com/Enderchief/gleam-tools/tree/master/packages/ts-gleam"
7 | },
8 | "author": "Enderchief",
9 | "license": "MIT",
10 | "scripts": {
11 | "build": "tsc",
12 | "dev": "tsc --watch"
13 | },
14 | "main": "./out",
15 | "dependencies": {
16 | "@iarna/toml": "^2.2.5",
17 | "typescript": "^5.9.3"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | "version": "0.2.0",
6 | "configurations": [
7 | {
8 | // See: https://github.com/microsoft/TypeScript/wiki/Debugging-Language-Service-in-VS-Code
9 | "type": "node",
10 | "request": "attach",
11 | "name": "Attach to VS Code TS Server via Port",
12 | "processId": "${command:PickProcess}",
13 | }
14 | ]
15 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vite-gleam",
3 | "version": "1.1.0",
4 | "description": "Import directly from *.gleam files",
5 | "scripts": {
6 | "build:pkg": "pnpm -r --filter='./packages/vite-gleam' run build",
7 | "build": "pnpm build:pkg",
8 | "format": "prettier -w packages/*/src",
9 | "dev": "pnpm -r --filter='./packages/*' run dev",
10 | "prepublish": "pnpm build",
11 | "publish": "pnpm publish --filter='./packages/vite-gleam'"
12 | },
13 | "keywords": [
14 | "gleam",
15 | "vite",
16 | "vite-plugin"
17 | ],
18 | "author": "Enderchief",
19 | "license": "MIT"
20 | }
21 |
--------------------------------------------------------------------------------
/packages/example/src/counter.gleam:
--------------------------------------------------------------------------------
1 | import gleam/int
2 |
3 | pub type HtmlElement
4 |
5 | @external(javascript, "./ffi_dom.ts", "update")
6 | fn update(element: HtmlElement, property: String, updater: fn(a) -> a) -> Nil
7 |
8 | @external(javascript, "./ffi_dom.ts", "onclick")
9 | fn onclick(element: HtmlElement, func: fn() -> Nil) -> Nil
10 |
11 | pub fn setup_counter(btn: HtmlElement, counter: HtmlElement) -> Nil {
12 | onclick(btn, fn() {
13 | update(counter, "innerHTML", fn(v: String) {
14 | let assert Ok(count) = int.parse(v)
15 | int.to_string(count + 1)
16 | })
17 | })
18 |
19 | Nil
20 | }
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Gleam JavaScript Tools
2 |
3 | This is a monorepo for various related tools for Gleam with JavaScript.
4 |
5 | ---
6 |
7 | ## [vite-gleam](https://github.com/Enderchief/gleam-tools/tree/master/packages/vite-gleam) [](https://npmjs.com/package/vite-gleam)
8 |
9 | Vite plugin to import Gleam code from JavaScript.
10 |
11 | ## [ts-gleam](https://github.com/Enderchief/gleam-tools/tree/master/packages/ts-gleam) [](https://npmjs.com/package/ts-gleam)
12 |
13 | TypeScript LSP Plugin to provide type safety when importing Gleam code.
14 |
--------------------------------------------------------------------------------
/packages/example/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2020",
4 | "useDefineForClassFields": true,
5 | "module": "ESNext",
6 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "resolveJsonModule": true,
13 | "isolatedModules": true,
14 | "noEmit": true,
15 |
16 | /* Linting */
17 | "strict": true,
18 | "noUnusedLocals": true,
19 | "noUnusedParameters": true,
20 | "noFallthroughCasesInSwitch": true,
21 |
22 | "allowJs": true,
23 | "plugins": [{ "name": "ts-gleam" }],
24 | "allowArbitraryExtensions": true
25 | },
26 | "include": ["src"]
27 | }
28 |
--------------------------------------------------------------------------------
/.vscode/gleam.code-workspace:
--------------------------------------------------------------------------------
1 | {
2 | "folders": [
3 | {
4 | "name": "✨ root",
5 | "path": ".."
6 | },
7 | {
8 | "name": "📦 example",
9 | "path": "../packages/example"
10 | },
11 | {
12 | "name": "📦 vite-gleam",
13 | "path": "../packages/vite-gleam"
14 | },
15 | {
16 | "name": "📦 ts-gleam",
17 | "path": "../packages/ts-gleam"
18 | }
19 | ],
20 | "settings": {
21 | "editor.formatOnSave": true,
22 | "editor.defaultFormatter": "esbenp.prettier-vscode",
23 | "prettier.singleQuote": false,
24 | "prettier.tabWidth": 2,
25 | "prettier.useTabs": false,
26 | "prettier.trailingComma": "all",
27 | "[gleam]": {
28 | "editor.defaultFormatter": "gleam.gleam"
29 | },
30 | "typescript.tsdk": "📦 example/node_modules/typescript/lib"
31 | },
32 | "extensions": {
33 | "recommendations": ["gleam.gleam"]
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/packages/ts-gleam/README.md:
--------------------------------------------------------------------------------
1 | # ts-gleam [](https://npmjs.com/ckage/ts-gleam)
2 |
3 | TypeScript LSP Plugin for importing [Gleam](https://gleam.run) files.
4 |
5 | ## Usage
6 |
7 | 1. Create a new Gleam project.
8 | 2. In `gleam.toml`, set `target=javascript` and under `[javascript]` set `typescript_declarations=true`.
9 | 3. `npm add ts-gleam`
10 | 4. Create a `tsconfig.json`/`jsconfig.json` and set `compilerOptions.plugins` to `[{"name": "ts-gleam"}]`
11 | 5. Build your Gleam project when ever you have changes and import away!
12 |
13 | ## Note
14 |
15 | This **does not** build and resolve imports for your. All this is, is for the LSP to type check correctly.
16 | For building with Gleam/JavaScript, check out [`vite-gleam`](https://github.com/Enderchief/gleam-tools/tree/master/packages/vite-gleam) or to quickly scaffold an app try [`create-gleam`](https://github.com/Enderchief/create-gleam).
17 |
--------------------------------------------------------------------------------
/packages/example/src/main.ts:
--------------------------------------------------------------------------------
1 | import "./style.css";
2 | import gleamLogo from "./gleam.svg";
3 | import viteLogo from "/vite.svg";
4 | import { setup_counter } from "./counter.gleam";
5 |
6 | document.querySelector("#app")!.innerHTML = `
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
Vite + Gleam
15 |
16 |
17 |
18 |
19 | Click on the Vite and Gleam logos to learn more
20 |
21 |
22 | `;
23 |
24 | setup_counter(
25 | document.querySelector("#counter")!,
26 | document.querySelector("#count")!,
27 | );
28 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Enderchief
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/packages/ts-gleam/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "paths": ["src/**"],
3 | "exclude": ["example"],
4 | "compilerOptions": {
5 | "target": "es2017", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
6 | "module": "commonjs", /* Specify what module code is generated. */
7 | "sourceMap": true, /* Create source map files for emitted JavaScript files. */
8 | "outDir": "./out", /* Specify an output folder for all emitted files. */
9 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */
10 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
11 | "strict": true, /* Enable all strict type-checking options. */
12 | "skipLibCheck": true /* Skip type checking all .d.ts files. */
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/packages/example/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Enderchief
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/packages/ts-gleam/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Enderchief
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/packages/vite-gleam/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Enderchief
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/packages/vite-gleam/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vite-gleam",
3 | "version": "1.7.1",
4 | "description": "Import directly from *.gleam files using Vite",
5 | "repository": {
6 | "url": "https://github.com/Enderchief/gleam-tools/tree/master/packages/vite-gleam"
7 | },
8 | "scripts": {
9 | "build": "tsdown",
10 | "dev": "tsdown --watch src",
11 | "format": "prettier -w src"
12 | },
13 | "main": "./dist/index.js",
14 | "module": "./dist/index.mjs",
15 | "types": "./dist/index.d.mts",
16 | "exports": {
17 | ".": {
18 | "types": "./dist/index.d.mts",
19 | "import": "./dist/index.mjs",
20 | "require": "./dist/index.js",
21 | "default": "./dist/index.mjs"
22 | }
23 | },
24 | "keywords": [
25 | "gleam",
26 | "vite",
27 | "vite-plugin"
28 | ],
29 | "files": [
30 | "dist"
31 | ],
32 | "author": "Enderchief",
33 | "license": "MIT",
34 | "devDependencies": {
35 | "@types/node": "^20.19.25",
36 | "prettier": "^3.6.2",
37 | "tsdown": "^0.16.6"
38 | },
39 | "dependencies": {
40 | "magic-string": "^0.30.21",
41 | "toml": "^3.0.0",
42 | "vite": "^7.2.4"
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/packages/vite-gleam/README.md:
--------------------------------------------------------------------------------
1 | # vite-gleam [](https://npmjs.com/package/vite-gleam)
2 |
3 | Import from [Gleam](https://gleam.run/) (`*.gleam`) files directly.
4 |
5 | Given the version number X.Y.Z, X refers to a breaking change, Y refers to the Vite version, and Z refers to a minor change.
6 |
7 | ## Usage
8 |
9 | 1. `npm i vite-gleam`
10 | 2. Create a basic Vite project (`npm create vite`)
11 | 3. Create a `gleam.toml` and add Gleam dependencies
12 | 4. Update your vite config
13 |
14 | ```ts
15 | // vite.config.{ts,js}
16 | import gleam from "vite-gleam";
17 |
18 | export default {
19 | plugins: [gleam()],
20 | };
21 | ```
22 |
23 | 5. Start importing from Gleam!
24 |
25 | ## Note
26 |
27 | By default, TypeScript (LSP) will complain about importing files with the `.gleam` extension. There are two choices for fixes:
28 |
29 | - If the type of the import doesn't matter , add `declare module "*.gleam";` inside any TypeScript file. A caveat is the LSP does not know if an export exists so it will not provide autocompletion when importing a Gleam file and it will type exports as `any`.
30 | - Alternatively, if the vite dev server is running you can have full type safety when importing from Gleam. `npm i ts-gleam`. Create a `tsconfig.json`/`jsconfig.json` and set `compilerOptions.plugins` to `[{"name": "ts-gleam"}]`
31 |
--------------------------------------------------------------------------------
/packages/ts-gleam/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (https://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # TypeScript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 | .DS_Store
45 |
46 | # Optional eslint cache
47 | .eslintcache
48 |
49 | # Optional REPL history
50 | .node_repl_history
51 |
52 | # Output of 'npm pack'
53 | *.tgz
54 |
55 | # Yarn Integrity file
56 | .yarn-integrity
57 |
58 | # dotenv environment variables file
59 | .env
60 |
61 | # next.js build output
62 | .next
63 |
64 | # cra
65 | .cache
66 |
67 | # tdsx
68 | dist
69 |
70 | .yarn/cache
71 | .yarn/unplugged
72 | .yarn/build-state.yml
73 | .yarn/install-state.gz
74 | out
--------------------------------------------------------------------------------
/packages/example/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/packages/example/src/style.css:
--------------------------------------------------------------------------------
1 | :root {
2 | font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
3 | line-height: 1.5;
4 | font-weight: 400;
5 |
6 | color-scheme: light dark;
7 | color: rgba(255, 255, 255, 0.87);
8 | background-color: #242424;
9 |
10 | font-synthesis: none;
11 | text-rendering: optimizeLegibility;
12 | -webkit-font-smoothing: antialiased;
13 | -moz-osx-font-smoothing: grayscale;
14 | -webkit-text-size-adjust: 100%;
15 | }
16 |
17 | a {
18 | font-weight: 500;
19 | color: #646cff;
20 | text-decoration: inherit;
21 | }
22 | a:hover {
23 | color: #535bf2;
24 | }
25 |
26 | body {
27 | margin: 0;
28 | display: flex;
29 | place-items: center;
30 | min-width: 320px;
31 | min-height: 100vh;
32 | }
33 |
34 | h1 {
35 | font-size: 3.2em;
36 | line-height: 1.1;
37 | }
38 |
39 | #app {
40 | max-width: 1280px;
41 | margin: 0 auto;
42 | padding: 2rem;
43 | text-align: center;
44 | }
45 |
46 | .logo {
47 | height: 6em;
48 | padding: 1.5em;
49 | will-change: filter;
50 | transition: filter 300ms;
51 | }
52 | .logo:hover {
53 | filter: drop-shadow(0 0 2em #646cffaa);
54 | }
55 | .logo.gleam:hover {
56 | filter: drop-shadow(0 0 2em #ffaff3aa);
57 | }
58 |
59 | .card {
60 | padding: 2em;
61 | }
62 |
63 | .read-the-docs {
64 | color: #888;
65 | }
66 |
67 | button {
68 | border-radius: 8px;
69 | border: 1px solid transparent;
70 | padding: 0.6em 1.2em;
71 | font-size: 1em;
72 | font-weight: 500;
73 | font-family: inherit;
74 | background-color: #1a1a1a;
75 | cursor: pointer;
76 | transition: border-color 0.25s;
77 | }
78 | button:hover {
79 | border-color: #646cff;
80 | }
81 | button:focus,
82 | button:focus-visible {
83 | outline: 4px auto -webkit-focus-ring-color;
84 | }
85 |
86 | @media (prefers-color-scheme: light) {
87 | :root {
88 | color: #213547;
89 | background-color: #ffffff;
90 | }
91 | a:hover {
92 | color: #747bff;
93 | }
94 | button {
95 | background-color: #f9f9f9;
96 | }
97 | }
98 |
--------------------------------------------------------------------------------
/packages/vite-gleam/src/index.ts:
--------------------------------------------------------------------------------
1 | import { lstat, readdir, readFile } from "node:fs/promises";
2 |
3 | import type { Plugin } from "vite";
4 | import { execSync } from "node:child_process";
5 | import { parse } from "toml";
6 | import { join, relative, resolve, sep } from "node:path";
7 | import MagicString from "magic-string";
8 |
9 | interface GleamConfig {
10 | name: string;
11 | version: string;
12 | target: string;
13 | }
14 |
15 | let gleam_config: GleamConfig | undefined = undefined;
16 |
17 | export async function readDeps(BASE_PATH = `.${sep}build${sep}packages`) {
18 | let stat = await lstat(BASE_PATH);
19 | if (!stat.isDirectory()) return;
20 | return makeDeps(BASE_PATH, {});
21 | }
22 |
23 | async function makeDeps(path: string, o: Record = {}) {
24 | const stat = await lstat(path);
25 | if (stat.isDirectory()) {
26 | await Promise.allSettled(
27 | (await readdir(path)).map(
28 | async (p) => await makeDeps(`${path}${sep}${p}`, o),
29 | ),
30 | );
31 | } else if (stat.isFile()) {
32 | const f = await readFile(path, { encoding: "utf8" });
33 | o[path.slice(1)] = f;
34 | }
35 |
36 | return o;
37 | }
38 |
39 | export async function build() {
40 | if (!gleam_config) throw new Error("gleam.toml not found");
41 | console.log("$ gleam build --target=javascript");
42 | const out = execSync("gleam build --target=javascript", { encoding: "utf8" });
43 | console.log(out);
44 | }
45 |
46 | export function jsPath(id: string): string {
47 | id = id.replace(".gleam", ".mjs");
48 |
49 | let path = relative(resolve("."), id);
50 | if (path.startsWith("src")) {
51 | path = path.replace(`src${sep}`, `${gleam_config?.name}${sep}`);
52 | }
53 |
54 | return path;
55 | }
56 |
57 | export default async function gleamVite(): Promise {
58 | return {
59 | name: "gleam",
60 | config(config, env) {
61 | config.build ||= {};
62 | if (config.build.watch === null || config.build.watch === undefined)
63 | return;
64 | if (typeof config.build.watch !== "object") config.build.watch = {};
65 | let origin = config.build.watch!.exclude;
66 | if (!origin) origin = [];
67 | else if (typeof origin !== "object") origin = [origin];
68 |
69 | (origin).push("build/**");
70 | config.build.watch!.exclude = origin;
71 | },
72 | async buildStart() {
73 | const toml_exist = await lstat(`.${sep}gleam.toml`);
74 | if (!toml_exist.isFile()) throw Error("gleam.toml not found");
75 | const file = await readFile(`.${sep}gleam.toml`, { encoding: "utf8" });
76 | gleam_config = parse(file) as GleamConfig;
77 |
78 | await build();
79 | },
80 | async resolveId(source, importer) {
81 | if (!importer) return;
82 | else if (source.startsWith("hex:")) {
83 | const path = join(
84 | resolve("."),
85 | `${sep}build${sep}dev${sep}javascript`,
86 | source.slice(4),
87 | );
88 | return { id: path };
89 | }
90 |
91 | if (!importer.endsWith(".gleam") && !source.endsWith("gleam.mjs")) return;
92 |
93 | importer = jsPath(importer);
94 |
95 | const path = join(
96 | resolve("."),
97 | "/build/dev/javascript/",
98 | importer,
99 | "..",
100 | source,
101 | );
102 | return {
103 | id: path,
104 | };
105 | },
106 | async transform(code, id) {
107 | if (!id.endsWith(".gleam")) return;
108 |
109 | const path = id.replace(".gleam", ".mjs");
110 |
111 | const file = await readFile(
112 | `.${sep}build${sep}dev${sep}javascript${sep}${jsPath(path)}`,
113 | {
114 | encoding: "utf8",
115 | },
116 | );
117 |
118 | const s = new MagicString(code);
119 | s.overwrite(0, code.length - 1, file);
120 |
121 | const map = s.generateMap({ source: id, includeContent: true });
122 |
123 | return {
124 | code: file,
125 | map: map,
126 | };
127 | },
128 | async handleHotUpdate(ctx) {
129 | if (ctx.file.endsWith(".gleam")) await build();
130 | },
131 | } satisfies Plugin;
132 | }
133 |
--------------------------------------------------------------------------------
/packages/ts-gleam/src/index.ts:
--------------------------------------------------------------------------------
1 | import fs from "node:fs";
2 | import path from "node:path";
3 | import { JsonArray, JsonMap, parse } from "@iarna/toml";
4 | import type tsModule from "typescript/lib/tsserverlibrary.js";
5 |
6 | const GLEAM_REGEX = /\.gleam/;
7 |
8 | function _isGleam(fileName: string): boolean {
9 | return GLEAM_REGEX.test(fileName);
10 | }
11 |
12 | function _hasDeclaration(
13 | fileName: string,
14 | projectName: string,
15 | logger: tsModule.server.Logger,
16 | ) {
17 | const _filepath = fileName
18 | .replace("/src/", `/build/dev/javascript/${projectName}/`)
19 | .replace(/\.gleam/, ".d.mts");
20 | logger.info(`[ts-gleam] checking if declaration exists at "${_filepath}"`);
21 | return fs.existsSync(_filepath);
22 | }
23 |
24 | function getDtsSnapshot(
25 | ts: typeof tsModule,
26 | projectName: string,
27 | fileName: string,
28 | logger: tsModule.server.Logger,
29 | ): tsModule.IScriptSnapshot {
30 | const _filepath = fileName
31 | .replace("/src/", `/build/dev/javascript/${projectName}/`)
32 | .replace(/\.gleam/, ".d.mts");
33 | logger.info(`[ts-gleam] loading declaration from ${_filepath}`);
34 | const _file = fs.readFileSync(_filepath, { encoding: "utf-8" });
35 | const _dts = ts.ScriptSnapshot.fromString(_file);
36 | return _dts;
37 | }
38 |
39 | function init(modules: {
40 | typescript: typeof import("typescript/lib/tsserverlibrary.js");
41 | }) {
42 | const ts = modules.typescript;
43 |
44 | function create(info: tsModule.server.PluginCreateInfo) {
45 | const logger = info.project.projectService.logger;
46 |
47 | logger.info("[ts-gleam] initializing ts-gleam");
48 |
49 | const directory = info.project.getCurrentDirectory();
50 | process.chdir(directory);
51 |
52 | const languageServiceHost = {} as Partial;
53 | const languageServiceHostProxy = new Proxy(info.languageServiceHost, {
54 | get(target, key: keyof tsModule.LanguageServiceHost) {
55 | return languageServiceHost[key]
56 | ? languageServiceHost[key]
57 | : target[key];
58 | },
59 | });
60 |
61 | const languageService = ts.createLanguageService(languageServiceHostProxy);
62 |
63 | let projectName: string = "theta";
64 | const _gleam_toml_path = path.join(directory, "./gleam.toml");
65 | if (!fs.existsSync(_gleam_toml_path)) {
66 | debugger;
67 | logger.info("[ts-gleam] ERROR | gleam.toml does not exist");
68 | return languageService;
69 | }
70 | const _gleam_toml_raw = fs.readFileSync(_gleam_toml_path, {
71 | encoding: "utf-8",
72 | });
73 |
74 | let _gleam_toml: JsonMap;
75 | try {
76 | _gleam_toml = parse(_gleam_toml_raw);
77 | } catch (e) {
78 | logger.info(`[ts-gleam] ERROR | ${e}`);
79 | return languageService;
80 | }
81 |
82 | const _name = _gleam_toml["name"];
83 | logger.info(`[ts-gleam] name is: "${_name}"`);
84 | if (typeof _name === "string") projectName = _name;
85 | else {
86 | logger.info(`[ts-gleam] ERROR | name does not exist`);
87 | return languageService;
88 | }
89 | if (
90 | typeof _gleam_toml.javascript !== "object" ||
91 | (_gleam_toml.javascript).typescript_declarations !== true
92 | ) {
93 | logger.info("[ts-gleam] ERROR | typescript declarations not enabled");
94 | return languageService;
95 | }
96 |
97 | languageServiceHost.getScriptKind = (fileName) => {
98 | if (!info.languageServiceHost.getScriptKind) {
99 | return ts.ScriptKind.Unknown;
100 | }
101 | if (
102 | _isGleam(fileName) &&
103 | _hasDeclaration(fileName, projectName, logger)
104 | ) {
105 | return ts.ScriptKind.TS;
106 | }
107 | return info.languageServiceHost.getScriptKind(fileName);
108 | };
109 |
110 | languageServiceHost.getScriptSnapshot = (fileName) => {
111 | if (
112 | _isGleam(fileName) &&
113 | _hasDeclaration(fileName, projectName, logger)
114 | ) {
115 | logger.info(`[ts-gleam] current: ${fileName}`);
116 | const dts = getDtsSnapshot(ts, projectName, fileName, logger);
117 | return dts;
118 | }
119 | return info.languageServiceHost.getScriptSnapshot(fileName);
120 | };
121 |
122 | function createModuleResolver(containingFile: string) {
123 | return (
124 | moduleName: tsModule.StringLiteralLike,
125 | resolveModule: () =>
126 | | tsModule.ResolvedModuleWithFailedLookupLocations
127 | | undefined,
128 | ): tsModule.ResolvedModuleFull | undefined => {
129 | const p = path.resolve(path.dirname(containingFile), moduleName.text);
130 | if (_isGleam(moduleName.text)) {
131 | return {
132 | extension: ts.Extension.Dts,
133 | isExternalLibraryImport: false,
134 | resolvedFileName: p
135 | .replace("/src/", `/build/dev/javascript/${projectName}/`)
136 | .replace(/\.gleam/, ".d.mts"),
137 | };
138 | }
139 | };
140 | }
141 |
142 | if (info.languageServiceHost.resolveModuleNameLiterals) {
143 | const _resolveModuleNameLiterals =
144 | info.languageServiceHost.resolveModuleNameLiterals!.bind(
145 | info.languageServiceHost,
146 | );
147 | languageServiceHost.resolveModuleNameLiterals = (
148 | modulesLiterals,
149 | containingFile,
150 | ...rest
151 | ) => {
152 | const resolvedModules = _resolveModuleNameLiterals(
153 | modulesLiterals,
154 | containingFile,
155 | ...rest,
156 | );
157 |
158 | const moduleResolver = createModuleResolver(containingFile);
159 |
160 | return modulesLiterals.map((moduleName, index) => {
161 | try {
162 | const resolvedModule = moduleResolver(
163 | moduleName,
164 | () =>
165 | languageServiceHost.getResolvedModuleWithFailedLookupLocationsFromCache?.(
166 | moduleName.text,
167 | containingFile,
168 | ),
169 | );
170 |
171 | if (resolvedModule) return { resolvedModule };
172 | } catch (e) {
173 | logger.info(`[ts-gleam] ERR: ${e}`);
174 | return resolvedModules[index];
175 | }
176 | return resolvedModules[index];
177 | });
178 | };
179 | }
180 |
181 | return languageService;
182 | }
183 |
184 | function getExternalFiles(
185 | project: tsModule.server.ConfiguredProject,
186 | ): string[] {
187 | return project.getFileNames().filter(_isGleam);
188 | }
189 |
190 | return { create, getExternalFiles };
191 | }
192 |
193 | export = init;
194 |
--------------------------------------------------------------------------------
/packages/example/src/gleam.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .: {}
10 |
11 | packages/example:
12 | devDependencies:
13 | ts-gleam:
14 | specifier: file:../ts-gleam
15 | version: link:../ts-gleam
16 | typescript:
17 | specifier: ^5.9.3
18 | version: 5.9.3
19 | vite:
20 | specifier: ^7.2.4
21 | version: 7.2.4(@types/node@20.19.25)(yaml@2.8.1)
22 | vite-gleam:
23 | specifier: link:../vite-gleam
24 | version: link:../vite-gleam
25 | vite-plugin-inspect:
26 | specifier: ^11.3.3
27 | version: 11.3.3(vite@7.2.4(@types/node@20.19.25)(yaml@2.8.1))
28 |
29 | packages/ts-gleam:
30 | dependencies:
31 | '@iarna/toml':
32 | specifier: ^2.2.5
33 | version: 2.2.5
34 | typescript:
35 | specifier: ^5.9.3
36 | version: 5.9.3
37 |
38 | packages/vite-gleam:
39 | dependencies:
40 | magic-string:
41 | specifier: ^0.30.21
42 | version: 0.30.21
43 | toml:
44 | specifier: ^3.0.0
45 | version: 3.0.0
46 | vite:
47 | specifier: ^7.2.4
48 | version: 7.2.4(@types/node@20.19.25)(yaml@2.8.1)
49 | devDependencies:
50 | '@types/node':
51 | specifier: ^20.19.25
52 | version: 20.19.25
53 | prettier:
54 | specifier: ^3.6.2
55 | version: 3.6.2
56 | tsdown:
57 | specifier: ^0.16.6
58 | version: 0.16.6(typescript@5.9.3)
59 |
60 | packages:
61 |
62 | '@babel/generator@7.28.5':
63 | resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
64 | engines: {node: '>=6.9.0'}
65 |
66 | '@babel/helper-string-parser@7.27.1':
67 | resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
68 | engines: {node: '>=6.9.0'}
69 |
70 | '@babel/helper-validator-identifier@7.28.5':
71 | resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
72 | engines: {node: '>=6.9.0'}
73 |
74 | '@babel/parser@7.28.5':
75 | resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
76 | engines: {node: '>=6.0.0'}
77 | hasBin: true
78 |
79 | '@babel/types@7.28.5':
80 | resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
81 | engines: {node: '>=6.9.0'}
82 |
83 | '@emnapi/core@1.7.1':
84 | resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==}
85 |
86 | '@emnapi/runtime@1.7.1':
87 | resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
88 |
89 | '@emnapi/wasi-threads@1.1.0':
90 | resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==}
91 |
92 | '@esbuild/aix-ppc64@0.25.12':
93 | resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
94 | engines: {node: '>=18'}
95 | cpu: [ppc64]
96 | os: [aix]
97 |
98 | '@esbuild/android-arm64@0.25.12':
99 | resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
100 | engines: {node: '>=18'}
101 | cpu: [arm64]
102 | os: [android]
103 |
104 | '@esbuild/android-arm@0.25.12':
105 | resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
106 | engines: {node: '>=18'}
107 | cpu: [arm]
108 | os: [android]
109 |
110 | '@esbuild/android-x64@0.25.12':
111 | resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
112 | engines: {node: '>=18'}
113 | cpu: [x64]
114 | os: [android]
115 |
116 | '@esbuild/darwin-arm64@0.25.12':
117 | resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
118 | engines: {node: '>=18'}
119 | cpu: [arm64]
120 | os: [darwin]
121 |
122 | '@esbuild/darwin-x64@0.25.12':
123 | resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
124 | engines: {node: '>=18'}
125 | cpu: [x64]
126 | os: [darwin]
127 |
128 | '@esbuild/freebsd-arm64@0.25.12':
129 | resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
130 | engines: {node: '>=18'}
131 | cpu: [arm64]
132 | os: [freebsd]
133 |
134 | '@esbuild/freebsd-x64@0.25.12':
135 | resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
136 | engines: {node: '>=18'}
137 | cpu: [x64]
138 | os: [freebsd]
139 |
140 | '@esbuild/linux-arm64@0.25.12':
141 | resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
142 | engines: {node: '>=18'}
143 | cpu: [arm64]
144 | os: [linux]
145 |
146 | '@esbuild/linux-arm@0.25.12':
147 | resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
148 | engines: {node: '>=18'}
149 | cpu: [arm]
150 | os: [linux]
151 |
152 | '@esbuild/linux-ia32@0.25.12':
153 | resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
154 | engines: {node: '>=18'}
155 | cpu: [ia32]
156 | os: [linux]
157 |
158 | '@esbuild/linux-loong64@0.25.12':
159 | resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
160 | engines: {node: '>=18'}
161 | cpu: [loong64]
162 | os: [linux]
163 |
164 | '@esbuild/linux-mips64el@0.25.12':
165 | resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
166 | engines: {node: '>=18'}
167 | cpu: [mips64el]
168 | os: [linux]
169 |
170 | '@esbuild/linux-ppc64@0.25.12':
171 | resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
172 | engines: {node: '>=18'}
173 | cpu: [ppc64]
174 | os: [linux]
175 |
176 | '@esbuild/linux-riscv64@0.25.12':
177 | resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
178 | engines: {node: '>=18'}
179 | cpu: [riscv64]
180 | os: [linux]
181 |
182 | '@esbuild/linux-s390x@0.25.12':
183 | resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
184 | engines: {node: '>=18'}
185 | cpu: [s390x]
186 | os: [linux]
187 |
188 | '@esbuild/linux-x64@0.25.12':
189 | resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
190 | engines: {node: '>=18'}
191 | cpu: [x64]
192 | os: [linux]
193 |
194 | '@esbuild/netbsd-arm64@0.25.12':
195 | resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
196 | engines: {node: '>=18'}
197 | cpu: [arm64]
198 | os: [netbsd]
199 |
200 | '@esbuild/netbsd-x64@0.25.12':
201 | resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
202 | engines: {node: '>=18'}
203 | cpu: [x64]
204 | os: [netbsd]
205 |
206 | '@esbuild/openbsd-arm64@0.25.12':
207 | resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
208 | engines: {node: '>=18'}
209 | cpu: [arm64]
210 | os: [openbsd]
211 |
212 | '@esbuild/openbsd-x64@0.25.12':
213 | resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
214 | engines: {node: '>=18'}
215 | cpu: [x64]
216 | os: [openbsd]
217 |
218 | '@esbuild/openharmony-arm64@0.25.12':
219 | resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
220 | engines: {node: '>=18'}
221 | cpu: [arm64]
222 | os: [openharmony]
223 |
224 | '@esbuild/sunos-x64@0.25.12':
225 | resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
226 | engines: {node: '>=18'}
227 | cpu: [x64]
228 | os: [sunos]
229 |
230 | '@esbuild/win32-arm64@0.25.12':
231 | resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
232 | engines: {node: '>=18'}
233 | cpu: [arm64]
234 | os: [win32]
235 |
236 | '@esbuild/win32-ia32@0.25.12':
237 | resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
238 | engines: {node: '>=18'}
239 | cpu: [ia32]
240 | os: [win32]
241 |
242 | '@esbuild/win32-x64@0.25.12':
243 | resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
244 | engines: {node: '>=18'}
245 | cpu: [x64]
246 | os: [win32]
247 |
248 | '@iarna/toml@2.2.5':
249 | resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==}
250 |
251 | '@jridgewell/gen-mapping@0.3.13':
252 | resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
253 |
254 | '@jridgewell/resolve-uri@3.1.2':
255 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
256 | engines: {node: '>=6.0.0'}
257 |
258 | '@jridgewell/sourcemap-codec@1.5.5':
259 | resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
260 |
261 | '@jridgewell/trace-mapping@0.3.31':
262 | resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
263 |
264 | '@napi-rs/wasm-runtime@1.0.7':
265 | resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==}
266 |
267 | '@oxc-project/runtime@0.96.0':
268 | resolution: {integrity: sha512-34lh4o9CcSw09Hx6fKihPu85+m+4pmDlkXwJrLvN5nMq5JrcGhhihVM415zDqT8j8IixO1PYYdQZRN4SwQCncg==}
269 | engines: {node: ^20.19.0 || >=22.12.0}
270 |
271 | '@oxc-project/types@0.98.0':
272 | resolution: {integrity: sha512-Vzmd6FsqVuz5HQVcRC/hrx7Ujo3WEVeQP7C2UNP5uy1hUY4SQvMB+93jxkI1KRHz9a/6cni3glPOtvteN+zpsw==}
273 |
274 | '@polka/url@1.0.0-next.29':
275 | resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
276 |
277 | '@quansync/fs@0.1.5':
278 | resolution: {integrity: sha512-lNS9hL2aS2NZgNW7BBj+6EBl4rOf8l+tQ0eRY6JWCI8jI2kc53gSoqbjojU0OnAWhzoXiOjFyGsHcDGePB3lhA==}
279 |
280 | '@rolldown/binding-android-arm64@1.0.0-beta.51':
281 | resolution: {integrity: sha512-Ctn8FUXKWWQI9pWC61P1yumS9WjQtelNS9riHwV7oCkknPGaAry4o7eFx2KgoLMnI2BgFJYpW7Im8/zX3BuONg==}
282 | engines: {node: ^20.19.0 || >=22.12.0}
283 | cpu: [arm64]
284 | os: [android]
285 |
286 | '@rolldown/binding-darwin-arm64@1.0.0-beta.51':
287 | resolution: {integrity: sha512-EL1aRW2Oq15ShUEkBPsDtLMO8GTqfb/ktM/dFaVzXKQiEE96Ss6nexMgfgQrg8dGnNpndFyffVDb5IdSibsu1g==}
288 | engines: {node: ^20.19.0 || >=22.12.0}
289 | cpu: [arm64]
290 | os: [darwin]
291 |
292 | '@rolldown/binding-darwin-x64@1.0.0-beta.51':
293 | resolution: {integrity: sha512-uGtYKlFen9pMIPvkHPWZVDtmYhMQi5g5Ddsndg1gf3atScKYKYgs5aDP4DhHeTwGXQglhfBG7lEaOIZ4UAIWww==}
294 | engines: {node: ^20.19.0 || >=22.12.0}
295 | cpu: [x64]
296 | os: [darwin]
297 |
298 | '@rolldown/binding-freebsd-x64@1.0.0-beta.51':
299 | resolution: {integrity: sha512-JRoVTQtHYbZj1P07JLiuTuXjiBtIa7ag7/qgKA6CIIXnAcdl4LrOf7nfDuHPJcuRKaP5dzecMgY99itvWfmUFQ==}
300 | engines: {node: ^20.19.0 || >=22.12.0}
301 | cpu: [x64]
302 | os: [freebsd]
303 |
304 | '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.51':
305 | resolution: {integrity: sha512-BKATVnpPZ0TYBW9XfDwyd4kPGgvf964HiotIwUgpMrFOFYWqpZ+9ONNzMV4UFAYC7Hb5C2qgYQk/qj2OnAd4RQ==}
306 | engines: {node: ^20.19.0 || >=22.12.0}
307 | cpu: [arm]
308 | os: [linux]
309 |
310 | '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.51':
311 | resolution: {integrity: sha512-xLd7da5jkfbVsBCm1buIRdWtuXY8+hU3+6ESXY/Tk5X5DPHaifrUblhYDgmA34dQt6WyNC2kfXGgrduPEvDI6Q==}
312 | engines: {node: ^20.19.0 || >=22.12.0}
313 | cpu: [arm64]
314 | os: [linux]
315 |
316 | '@rolldown/binding-linux-arm64-musl@1.0.0-beta.51':
317 | resolution: {integrity: sha512-EQFXTgHxxTzv3t5EmjUP/DfxzFYx9sMndfLsYaAY4DWF6KsK1fXGYsiupif6qPTViPC9eVmRm78q0pZU/kuIPg==}
318 | engines: {node: ^20.19.0 || >=22.12.0}
319 | cpu: [arm64]
320 | os: [linux]
321 |
322 | '@rolldown/binding-linux-x64-gnu@1.0.0-beta.51':
323 | resolution: {integrity: sha512-p5P6Xpa68w3yFaAdSzIZJbj+AfuDnMDqNSeglBXM7UlJT14Q4zwK+rV+8Mhp9MiUb4XFISZtbI/seBprhkQbiQ==}
324 | engines: {node: ^20.19.0 || >=22.12.0}
325 | cpu: [x64]
326 | os: [linux]
327 |
328 | '@rolldown/binding-linux-x64-musl@1.0.0-beta.51':
329 | resolution: {integrity: sha512-sNVVyLa8HB8wkFipdfz1s6i0YWinwpbMWk5hO5S+XAYH2UH67YzUT13gs6wZTKg2x/3gtgXzYnHyF5wMIqoDAw==}
330 | engines: {node: ^20.19.0 || >=22.12.0}
331 | cpu: [x64]
332 | os: [linux]
333 |
334 | '@rolldown/binding-openharmony-arm64@1.0.0-beta.51':
335 | resolution: {integrity: sha512-e/JMTz9Q8+T3g/deEi8DK44sFWZWGKr9AOCW5e8C8SCVWzAXqYXAG7FXBWBNzWEZK0Rcwo9TQHTQ9Q0gXgdCaA==}
336 | engines: {node: ^20.19.0 || >=22.12.0}
337 | cpu: [arm64]
338 | os: [openharmony]
339 |
340 | '@rolldown/binding-wasm32-wasi@1.0.0-beta.51':
341 | resolution: {integrity: sha512-We3LWqSu6J9s5Y0MK+N7fUiiu37aBGPG3Pc347EoaROuAwkCS2u9xJ5dpIyLW4B49CIbS3KaPmn4kTgPb3EyPw==}
342 | engines: {node: '>=14.0.0'}
343 | cpu: [wasm32]
344 |
345 | '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.51':
346 | resolution: {integrity: sha512-fj56buHRuMM+r/cb6ZYfNjNvO/0xeFybI6cTkTROJatdP4fvmQ1NS8D/Lm10FCSDEOkqIz8hK3TGpbAThbPHsA==}
347 | engines: {node: ^20.19.0 || >=22.12.0}
348 | cpu: [arm64]
349 | os: [win32]
350 |
351 | '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.51':
352 | resolution: {integrity: sha512-fkqEqaeEx8AySXiDm54b/RdINb3C0VovzJA3osMhZsbn6FoD73H0AOIiaVAtGr6x63hefruVKTX8irAm4Jkt2w==}
353 | engines: {node: ^20.19.0 || >=22.12.0}
354 | cpu: [ia32]
355 | os: [win32]
356 |
357 | '@rolldown/binding-win32-x64-msvc@1.0.0-beta.51':
358 | resolution: {integrity: sha512-CWuLG/HMtrVcjKGa0C4GnuxONrku89g0+CsH8nT0SNhOtREXuzwgjIXNJImpE/A/DMf9JF+1Xkrq/YRr+F/rCg==}
359 | engines: {node: ^20.19.0 || >=22.12.0}
360 | cpu: [x64]
361 | os: [win32]
362 |
363 | '@rolldown/pluginutils@1.0.0-beta.51':
364 | resolution: {integrity: sha512-51/8cNXMrqWqX3o8DZidhwz1uYq0BhHDDSfVygAND1Skx5s1TDw3APSSxCMcFFedwgqGcx34gRouwY+m404BBQ==}
365 |
366 | '@rollup/rollup-android-arm-eabi@4.53.3':
367 | resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==}
368 | cpu: [arm]
369 | os: [android]
370 |
371 | '@rollup/rollup-android-arm64@4.53.3':
372 | resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==}
373 | cpu: [arm64]
374 | os: [android]
375 |
376 | '@rollup/rollup-darwin-arm64@4.53.3':
377 | resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==}
378 | cpu: [arm64]
379 | os: [darwin]
380 |
381 | '@rollup/rollup-darwin-x64@4.53.3':
382 | resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==}
383 | cpu: [x64]
384 | os: [darwin]
385 |
386 | '@rollup/rollup-freebsd-arm64@4.53.3':
387 | resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==}
388 | cpu: [arm64]
389 | os: [freebsd]
390 |
391 | '@rollup/rollup-freebsd-x64@4.53.3':
392 | resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==}
393 | cpu: [x64]
394 | os: [freebsd]
395 |
396 | '@rollup/rollup-linux-arm-gnueabihf@4.53.3':
397 | resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==}
398 | cpu: [arm]
399 | os: [linux]
400 |
401 | '@rollup/rollup-linux-arm-musleabihf@4.53.3':
402 | resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==}
403 | cpu: [arm]
404 | os: [linux]
405 |
406 | '@rollup/rollup-linux-arm64-gnu@4.53.3':
407 | resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==}
408 | cpu: [arm64]
409 | os: [linux]
410 |
411 | '@rollup/rollup-linux-arm64-musl@4.53.3':
412 | resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==}
413 | cpu: [arm64]
414 | os: [linux]
415 |
416 | '@rollup/rollup-linux-loong64-gnu@4.53.3':
417 | resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==}
418 | cpu: [loong64]
419 | os: [linux]
420 |
421 | '@rollup/rollup-linux-ppc64-gnu@4.53.3':
422 | resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==}
423 | cpu: [ppc64]
424 | os: [linux]
425 |
426 | '@rollup/rollup-linux-riscv64-gnu@4.53.3':
427 | resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==}
428 | cpu: [riscv64]
429 | os: [linux]
430 |
431 | '@rollup/rollup-linux-riscv64-musl@4.53.3':
432 | resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==}
433 | cpu: [riscv64]
434 | os: [linux]
435 |
436 | '@rollup/rollup-linux-s390x-gnu@4.53.3':
437 | resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==}
438 | cpu: [s390x]
439 | os: [linux]
440 |
441 | '@rollup/rollup-linux-x64-gnu@4.53.3':
442 | resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==}
443 | cpu: [x64]
444 | os: [linux]
445 |
446 | '@rollup/rollup-linux-x64-musl@4.53.3':
447 | resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==}
448 | cpu: [x64]
449 | os: [linux]
450 |
451 | '@rollup/rollup-openharmony-arm64@4.53.3':
452 | resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==}
453 | cpu: [arm64]
454 | os: [openharmony]
455 |
456 | '@rollup/rollup-win32-arm64-msvc@4.53.3':
457 | resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==}
458 | cpu: [arm64]
459 | os: [win32]
460 |
461 | '@rollup/rollup-win32-ia32-msvc@4.53.3':
462 | resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==}
463 | cpu: [ia32]
464 | os: [win32]
465 |
466 | '@rollup/rollup-win32-x64-gnu@4.53.3':
467 | resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==}
468 | cpu: [x64]
469 | os: [win32]
470 |
471 | '@rollup/rollup-win32-x64-msvc@4.53.3':
472 | resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==}
473 | cpu: [x64]
474 | os: [win32]
475 |
476 | '@tybys/wasm-util@0.10.1':
477 | resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
478 |
479 | '@types/estree@1.0.8':
480 | resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
481 |
482 | '@types/node@20.19.25':
483 | resolution: {integrity: sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==}
484 |
485 | ansis@4.2.0:
486 | resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==}
487 | engines: {node: '>=14'}
488 |
489 | ast-kit@2.2.0:
490 | resolution: {integrity: sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==}
491 | engines: {node: '>=20.19.0'}
492 |
493 | birpc@2.8.0:
494 | resolution: {integrity: sha512-Bz2a4qD/5GRhiHSwj30c/8kC8QGj12nNDwz3D4ErQ4Xhy35dsSDvF+RA/tWpjyU0pdGtSDiEk6B5fBGE1qNVhw==}
495 |
496 | bundle-name@4.1.0:
497 | resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
498 | engines: {node: '>=18'}
499 |
500 | cac@6.7.14:
501 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
502 | engines: {node: '>=8'}
503 |
504 | chokidar@4.0.3:
505 | resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
506 | engines: {node: '>= 14.16.0'}
507 |
508 | debug@4.4.3:
509 | resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
510 | engines: {node: '>=6.0'}
511 | peerDependencies:
512 | supports-color: '*'
513 | peerDependenciesMeta:
514 | supports-color:
515 | optional: true
516 |
517 | default-browser-id@5.0.1:
518 | resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==}
519 | engines: {node: '>=18'}
520 |
521 | default-browser@5.4.0:
522 | resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==}
523 | engines: {node: '>=18'}
524 |
525 | define-lazy-prop@3.0.0:
526 | resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
527 | engines: {node: '>=12'}
528 |
529 | diff@8.0.2:
530 | resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==}
531 | engines: {node: '>=0.3.1'}
532 |
533 | dts-resolver@2.1.3:
534 | resolution: {integrity: sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw==}
535 | engines: {node: '>=20.19.0'}
536 | peerDependencies:
537 | oxc-resolver: '>=11.0.0'
538 | peerDependenciesMeta:
539 | oxc-resolver:
540 | optional: true
541 |
542 | empathic@2.0.0:
543 | resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==}
544 | engines: {node: '>=14'}
545 |
546 | error-stack-parser-es@1.0.5:
547 | resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==}
548 |
549 | esbuild@0.25.12:
550 | resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
551 | engines: {node: '>=18'}
552 | hasBin: true
553 |
554 | fdir@6.5.0:
555 | resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
556 | engines: {node: '>=12.0.0'}
557 | peerDependencies:
558 | picomatch: ^3 || ^4
559 | peerDependenciesMeta:
560 | picomatch:
561 | optional: true
562 |
563 | fsevents@2.3.3:
564 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
565 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
566 | os: [darwin]
567 |
568 | get-tsconfig@4.13.0:
569 | resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==}
570 |
571 | hookable@5.5.3:
572 | resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
573 |
574 | is-docker@3.0.0:
575 | resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
576 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
577 | hasBin: true
578 |
579 | is-inside-container@1.0.0:
580 | resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
581 | engines: {node: '>=14.16'}
582 | hasBin: true
583 |
584 | is-wsl@3.1.0:
585 | resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
586 | engines: {node: '>=16'}
587 |
588 | jsesc@3.1.0:
589 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
590 | engines: {node: '>=6'}
591 | hasBin: true
592 |
593 | magic-string@0.30.21:
594 | resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
595 |
596 | mrmime@2.0.1:
597 | resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
598 | engines: {node: '>=10'}
599 |
600 | ms@2.1.3:
601 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
602 |
603 | nanoid@3.3.11:
604 | resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
605 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
606 | hasBin: true
607 |
608 | obug@2.1.0:
609 | resolution: {integrity: sha512-uu/tgLPoa75CFA7UDkmqspKbefvZh1WMPwkU3bNr0PY746a/+xwXVgbw5co5C3GvJj3h5u8g/pbxXzI0gd1QFg==}
610 |
611 | ohash@2.0.11:
612 | resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
613 |
614 | open@10.2.0:
615 | resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==}
616 | engines: {node: '>=18'}
617 |
618 | pathe@2.0.3:
619 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
620 |
621 | perfect-debounce@2.0.0:
622 | resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==}
623 |
624 | picocolors@1.1.1:
625 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
626 |
627 | picomatch@4.0.3:
628 | resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
629 | engines: {node: '>=12'}
630 |
631 | postcss@8.5.6:
632 | resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
633 | engines: {node: ^10 || ^12 || >=14}
634 |
635 | prettier@3.6.2:
636 | resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==}
637 | engines: {node: '>=14'}
638 | hasBin: true
639 |
640 | quansync@0.2.11:
641 | resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==}
642 |
643 | readdirp@4.1.2:
644 | resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
645 | engines: {node: '>= 14.18.0'}
646 |
647 | resolve-pkg-maps@1.0.0:
648 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
649 |
650 | rolldown-plugin-dts@0.18.0:
651 | resolution: {integrity: sha512-2CJtKYa9WPClZxkJeCt4bGUegQvQKQ1VJp9jFJzG0h8I/80XI6qDgoWfVJUOEhT2swbsRQh/42N1RIWvbXT4rA==}
652 | engines: {node: '>=20.19.0'}
653 | peerDependencies:
654 | '@ts-macro/tsc': ^0.3.6
655 | '@typescript/native-preview': '>=7.0.0-dev.20250601.1'
656 | rolldown: ^1.0.0-beta.51
657 | typescript: ^5.0.0
658 | vue-tsc: ~3.1.0
659 | peerDependenciesMeta:
660 | '@ts-macro/tsc':
661 | optional: true
662 | '@typescript/native-preview':
663 | optional: true
664 | typescript:
665 | optional: true
666 | vue-tsc:
667 | optional: true
668 |
669 | rolldown@1.0.0-beta.51:
670 | resolution: {integrity: sha512-ZRLgPlS91l4JztLYEZnmMcd3Umcla1hkXJgiEiR4HloRJBBoeaX8qogTu5Jfu36rRMVLndzqYv0h+M5gJAkUfg==}
671 | engines: {node: ^20.19.0 || >=22.12.0}
672 | hasBin: true
673 |
674 | rollup@4.53.3:
675 | resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==}
676 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
677 | hasBin: true
678 |
679 | run-applescript@7.1.0:
680 | resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==}
681 | engines: {node: '>=18'}
682 |
683 | semver@7.7.3:
684 | resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
685 | engines: {node: '>=10'}
686 | hasBin: true
687 |
688 | sirv@3.0.2:
689 | resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==}
690 | engines: {node: '>=18'}
691 |
692 | source-map-js@1.2.1:
693 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
694 | engines: {node: '>=0.10.0'}
695 |
696 | tinyexec@1.0.2:
697 | resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==}
698 | engines: {node: '>=18'}
699 |
700 | tinyglobby@0.2.15:
701 | resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
702 | engines: {node: '>=12.0.0'}
703 |
704 | toml@3.0.0:
705 | resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==}
706 |
707 | totalist@3.0.1:
708 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
709 | engines: {node: '>=6'}
710 |
711 | tree-kill@1.2.2:
712 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
713 | hasBin: true
714 |
715 | tsdown@0.16.6:
716 | resolution: {integrity: sha512-g3xHEnGdfwJTlXhEkqww3Q/KlCfyNFw4rnzuQ9Gqw8T2xjDYrw94qmSw5wYYTAW5zV1sEfWDlfgxZo5mmtu0NQ==}
717 | engines: {node: '>=20.19.0'}
718 | hasBin: true
719 | peerDependencies:
720 | '@arethetypeswrong/core': ^0.18.1
721 | '@vitejs/devtools': ^0.0.0-alpha.17
722 | publint: ^0.3.0
723 | typescript: ^5.0.0
724 | unplugin-lightningcss: ^0.4.0
725 | unplugin-unused: ^0.5.0
726 | peerDependenciesMeta:
727 | '@arethetypeswrong/core':
728 | optional: true
729 | '@vitejs/devtools':
730 | optional: true
731 | publint:
732 | optional: true
733 | typescript:
734 | optional: true
735 | unplugin-lightningcss:
736 | optional: true
737 | unplugin-unused:
738 | optional: true
739 |
740 | tslib@2.8.1:
741 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
742 |
743 | typescript@5.9.3:
744 | resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
745 | engines: {node: '>=14.17'}
746 | hasBin: true
747 |
748 | unconfig-core@7.4.1:
749 | resolution: {integrity: sha512-Bp/bPZjV2Vl/fofoA2OYLSnw1Z0MOhCX7zHnVCYrazpfZvseBbGhwcNQMxsg185Mqh7VZQqK3C8hFG/Dyng+yA==}
750 |
751 | undici-types@6.21.0:
752 | resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
753 |
754 | unplugin-utils@0.3.1:
755 | resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==}
756 | engines: {node: '>=20.19.0'}
757 |
758 | unrun@0.2.11:
759 | resolution: {integrity: sha512-HjUuNLRGfRxMvxkwOuO/CpkSzdizTPPApbarLplsTzUm8Kex+nS9eomKU1qgVus6WGWkDYhtf/mgNxGEpyTR6A==}
760 | engines: {node: '>=20.19.0'}
761 | hasBin: true
762 | peerDependencies:
763 | synckit: ^0.11.11
764 | peerDependenciesMeta:
765 | synckit:
766 | optional: true
767 |
768 | vite-dev-rpc@1.1.0:
769 | resolution: {integrity: sha512-pKXZlgoXGoE8sEKiKJSng4hI1sQ4wi5YT24FCrwrLt6opmkjlqPPVmiPWWJn8M8byMxRGzp1CrFuqQs4M/Z39A==}
770 | peerDependencies:
771 | vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0
772 |
773 | vite-hot-client@2.1.0:
774 | resolution: {integrity: sha512-7SpgZmU7R+dDnSmvXE1mfDtnHLHQSisdySVR7lO8ceAXvM0otZeuQQ6C8LrS5d/aYyP/QZ0hI0L+dIPrm4YlFQ==}
775 | peerDependencies:
776 | vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0
777 |
778 | vite-plugin-inspect@11.3.3:
779 | resolution: {integrity: sha512-u2eV5La99oHoYPHE6UvbwgEqKKOQGz86wMg40CCosP6q8BkB6e5xPneZfYagK4ojPJSj5anHCrnvC20DpwVdRA==}
780 | engines: {node: '>=14'}
781 | peerDependencies:
782 | '@nuxt/kit': '*'
783 | vite: ^6.0.0 || ^7.0.0-0
784 | peerDependenciesMeta:
785 | '@nuxt/kit':
786 | optional: true
787 |
788 | vite@7.2.4:
789 | resolution: {integrity: sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==}
790 | engines: {node: ^20.19.0 || >=22.12.0}
791 | hasBin: true
792 | peerDependencies:
793 | '@types/node': ^20.19.0 || >=22.12.0
794 | jiti: '>=1.21.0'
795 | less: ^4.0.0
796 | lightningcss: ^1.21.0
797 | sass: ^1.70.0
798 | sass-embedded: ^1.70.0
799 | stylus: '>=0.54.8'
800 | sugarss: ^5.0.0
801 | terser: ^5.16.0
802 | tsx: ^4.8.1
803 | yaml: ^2.4.2
804 | peerDependenciesMeta:
805 | '@types/node':
806 | optional: true
807 | jiti:
808 | optional: true
809 | less:
810 | optional: true
811 | lightningcss:
812 | optional: true
813 | sass:
814 | optional: true
815 | sass-embedded:
816 | optional: true
817 | stylus:
818 | optional: true
819 | sugarss:
820 | optional: true
821 | terser:
822 | optional: true
823 | tsx:
824 | optional: true
825 | yaml:
826 | optional: true
827 |
828 | wsl-utils@0.1.0:
829 | resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==}
830 | engines: {node: '>=18'}
831 |
832 | yaml@2.8.1:
833 | resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==}
834 | engines: {node: '>= 14.6'}
835 | hasBin: true
836 |
837 | snapshots:
838 |
839 | '@babel/generator@7.28.5':
840 | dependencies:
841 | '@babel/parser': 7.28.5
842 | '@babel/types': 7.28.5
843 | '@jridgewell/gen-mapping': 0.3.13
844 | '@jridgewell/trace-mapping': 0.3.31
845 | jsesc: 3.1.0
846 |
847 | '@babel/helper-string-parser@7.27.1': {}
848 |
849 | '@babel/helper-validator-identifier@7.28.5': {}
850 |
851 | '@babel/parser@7.28.5':
852 | dependencies:
853 | '@babel/types': 7.28.5
854 |
855 | '@babel/types@7.28.5':
856 | dependencies:
857 | '@babel/helper-string-parser': 7.27.1
858 | '@babel/helper-validator-identifier': 7.28.5
859 |
860 | '@emnapi/core@1.7.1':
861 | dependencies:
862 | '@emnapi/wasi-threads': 1.1.0
863 | tslib: 2.8.1
864 | optional: true
865 |
866 | '@emnapi/runtime@1.7.1':
867 | dependencies:
868 | tslib: 2.8.1
869 | optional: true
870 |
871 | '@emnapi/wasi-threads@1.1.0':
872 | dependencies:
873 | tslib: 2.8.1
874 | optional: true
875 |
876 | '@esbuild/aix-ppc64@0.25.12':
877 | optional: true
878 |
879 | '@esbuild/android-arm64@0.25.12':
880 | optional: true
881 |
882 | '@esbuild/android-arm@0.25.12':
883 | optional: true
884 |
885 | '@esbuild/android-x64@0.25.12':
886 | optional: true
887 |
888 | '@esbuild/darwin-arm64@0.25.12':
889 | optional: true
890 |
891 | '@esbuild/darwin-x64@0.25.12':
892 | optional: true
893 |
894 | '@esbuild/freebsd-arm64@0.25.12':
895 | optional: true
896 |
897 | '@esbuild/freebsd-x64@0.25.12':
898 | optional: true
899 |
900 | '@esbuild/linux-arm64@0.25.12':
901 | optional: true
902 |
903 | '@esbuild/linux-arm@0.25.12':
904 | optional: true
905 |
906 | '@esbuild/linux-ia32@0.25.12':
907 | optional: true
908 |
909 | '@esbuild/linux-loong64@0.25.12':
910 | optional: true
911 |
912 | '@esbuild/linux-mips64el@0.25.12':
913 | optional: true
914 |
915 | '@esbuild/linux-ppc64@0.25.12':
916 | optional: true
917 |
918 | '@esbuild/linux-riscv64@0.25.12':
919 | optional: true
920 |
921 | '@esbuild/linux-s390x@0.25.12':
922 | optional: true
923 |
924 | '@esbuild/linux-x64@0.25.12':
925 | optional: true
926 |
927 | '@esbuild/netbsd-arm64@0.25.12':
928 | optional: true
929 |
930 | '@esbuild/netbsd-x64@0.25.12':
931 | optional: true
932 |
933 | '@esbuild/openbsd-arm64@0.25.12':
934 | optional: true
935 |
936 | '@esbuild/openbsd-x64@0.25.12':
937 | optional: true
938 |
939 | '@esbuild/openharmony-arm64@0.25.12':
940 | optional: true
941 |
942 | '@esbuild/sunos-x64@0.25.12':
943 | optional: true
944 |
945 | '@esbuild/win32-arm64@0.25.12':
946 | optional: true
947 |
948 | '@esbuild/win32-ia32@0.25.12':
949 | optional: true
950 |
951 | '@esbuild/win32-x64@0.25.12':
952 | optional: true
953 |
954 | '@iarna/toml@2.2.5': {}
955 |
956 | '@jridgewell/gen-mapping@0.3.13':
957 | dependencies:
958 | '@jridgewell/sourcemap-codec': 1.5.5
959 | '@jridgewell/trace-mapping': 0.3.31
960 |
961 | '@jridgewell/resolve-uri@3.1.2': {}
962 |
963 | '@jridgewell/sourcemap-codec@1.5.5': {}
964 |
965 | '@jridgewell/trace-mapping@0.3.31':
966 | dependencies:
967 | '@jridgewell/resolve-uri': 3.1.2
968 | '@jridgewell/sourcemap-codec': 1.5.5
969 |
970 | '@napi-rs/wasm-runtime@1.0.7':
971 | dependencies:
972 | '@emnapi/core': 1.7.1
973 | '@emnapi/runtime': 1.7.1
974 | '@tybys/wasm-util': 0.10.1
975 | optional: true
976 |
977 | '@oxc-project/runtime@0.96.0': {}
978 |
979 | '@oxc-project/types@0.98.0': {}
980 |
981 | '@polka/url@1.0.0-next.29': {}
982 |
983 | '@quansync/fs@0.1.5':
984 | dependencies:
985 | quansync: 0.2.11
986 |
987 | '@rolldown/binding-android-arm64@1.0.0-beta.51':
988 | optional: true
989 |
990 | '@rolldown/binding-darwin-arm64@1.0.0-beta.51':
991 | optional: true
992 |
993 | '@rolldown/binding-darwin-x64@1.0.0-beta.51':
994 | optional: true
995 |
996 | '@rolldown/binding-freebsd-x64@1.0.0-beta.51':
997 | optional: true
998 |
999 | '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.51':
1000 | optional: true
1001 |
1002 | '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.51':
1003 | optional: true
1004 |
1005 | '@rolldown/binding-linux-arm64-musl@1.0.0-beta.51':
1006 | optional: true
1007 |
1008 | '@rolldown/binding-linux-x64-gnu@1.0.0-beta.51':
1009 | optional: true
1010 |
1011 | '@rolldown/binding-linux-x64-musl@1.0.0-beta.51':
1012 | optional: true
1013 |
1014 | '@rolldown/binding-openharmony-arm64@1.0.0-beta.51':
1015 | optional: true
1016 |
1017 | '@rolldown/binding-wasm32-wasi@1.0.0-beta.51':
1018 | dependencies:
1019 | '@napi-rs/wasm-runtime': 1.0.7
1020 | optional: true
1021 |
1022 | '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.51':
1023 | optional: true
1024 |
1025 | '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.51':
1026 | optional: true
1027 |
1028 | '@rolldown/binding-win32-x64-msvc@1.0.0-beta.51':
1029 | optional: true
1030 |
1031 | '@rolldown/pluginutils@1.0.0-beta.51': {}
1032 |
1033 | '@rollup/rollup-android-arm-eabi@4.53.3':
1034 | optional: true
1035 |
1036 | '@rollup/rollup-android-arm64@4.53.3':
1037 | optional: true
1038 |
1039 | '@rollup/rollup-darwin-arm64@4.53.3':
1040 | optional: true
1041 |
1042 | '@rollup/rollup-darwin-x64@4.53.3':
1043 | optional: true
1044 |
1045 | '@rollup/rollup-freebsd-arm64@4.53.3':
1046 | optional: true
1047 |
1048 | '@rollup/rollup-freebsd-x64@4.53.3':
1049 | optional: true
1050 |
1051 | '@rollup/rollup-linux-arm-gnueabihf@4.53.3':
1052 | optional: true
1053 |
1054 | '@rollup/rollup-linux-arm-musleabihf@4.53.3':
1055 | optional: true
1056 |
1057 | '@rollup/rollup-linux-arm64-gnu@4.53.3':
1058 | optional: true
1059 |
1060 | '@rollup/rollup-linux-arm64-musl@4.53.3':
1061 | optional: true
1062 |
1063 | '@rollup/rollup-linux-loong64-gnu@4.53.3':
1064 | optional: true
1065 |
1066 | '@rollup/rollup-linux-ppc64-gnu@4.53.3':
1067 | optional: true
1068 |
1069 | '@rollup/rollup-linux-riscv64-gnu@4.53.3':
1070 | optional: true
1071 |
1072 | '@rollup/rollup-linux-riscv64-musl@4.53.3':
1073 | optional: true
1074 |
1075 | '@rollup/rollup-linux-s390x-gnu@4.53.3':
1076 | optional: true
1077 |
1078 | '@rollup/rollup-linux-x64-gnu@4.53.3':
1079 | optional: true
1080 |
1081 | '@rollup/rollup-linux-x64-musl@4.53.3':
1082 | optional: true
1083 |
1084 | '@rollup/rollup-openharmony-arm64@4.53.3':
1085 | optional: true
1086 |
1087 | '@rollup/rollup-win32-arm64-msvc@4.53.3':
1088 | optional: true
1089 |
1090 | '@rollup/rollup-win32-ia32-msvc@4.53.3':
1091 | optional: true
1092 |
1093 | '@rollup/rollup-win32-x64-gnu@4.53.3':
1094 | optional: true
1095 |
1096 | '@rollup/rollup-win32-x64-msvc@4.53.3':
1097 | optional: true
1098 |
1099 | '@tybys/wasm-util@0.10.1':
1100 | dependencies:
1101 | tslib: 2.8.1
1102 | optional: true
1103 |
1104 | '@types/estree@1.0.8': {}
1105 |
1106 | '@types/node@20.19.25':
1107 | dependencies:
1108 | undici-types: 6.21.0
1109 |
1110 | ansis@4.2.0: {}
1111 |
1112 | ast-kit@2.2.0:
1113 | dependencies:
1114 | '@babel/parser': 7.28.5
1115 | pathe: 2.0.3
1116 |
1117 | birpc@2.8.0: {}
1118 |
1119 | bundle-name@4.1.0:
1120 | dependencies:
1121 | run-applescript: 7.1.0
1122 |
1123 | cac@6.7.14: {}
1124 |
1125 | chokidar@4.0.3:
1126 | dependencies:
1127 | readdirp: 4.1.2
1128 |
1129 | debug@4.4.3:
1130 | dependencies:
1131 | ms: 2.1.3
1132 |
1133 | default-browser-id@5.0.1: {}
1134 |
1135 | default-browser@5.4.0:
1136 | dependencies:
1137 | bundle-name: 4.1.0
1138 | default-browser-id: 5.0.1
1139 |
1140 | define-lazy-prop@3.0.0: {}
1141 |
1142 | diff@8.0.2: {}
1143 |
1144 | dts-resolver@2.1.3: {}
1145 |
1146 | empathic@2.0.0: {}
1147 |
1148 | error-stack-parser-es@1.0.5: {}
1149 |
1150 | esbuild@0.25.12:
1151 | optionalDependencies:
1152 | '@esbuild/aix-ppc64': 0.25.12
1153 | '@esbuild/android-arm': 0.25.12
1154 | '@esbuild/android-arm64': 0.25.12
1155 | '@esbuild/android-x64': 0.25.12
1156 | '@esbuild/darwin-arm64': 0.25.12
1157 | '@esbuild/darwin-x64': 0.25.12
1158 | '@esbuild/freebsd-arm64': 0.25.12
1159 | '@esbuild/freebsd-x64': 0.25.12
1160 | '@esbuild/linux-arm': 0.25.12
1161 | '@esbuild/linux-arm64': 0.25.12
1162 | '@esbuild/linux-ia32': 0.25.12
1163 | '@esbuild/linux-loong64': 0.25.12
1164 | '@esbuild/linux-mips64el': 0.25.12
1165 | '@esbuild/linux-ppc64': 0.25.12
1166 | '@esbuild/linux-riscv64': 0.25.12
1167 | '@esbuild/linux-s390x': 0.25.12
1168 | '@esbuild/linux-x64': 0.25.12
1169 | '@esbuild/netbsd-arm64': 0.25.12
1170 | '@esbuild/netbsd-x64': 0.25.12
1171 | '@esbuild/openbsd-arm64': 0.25.12
1172 | '@esbuild/openbsd-x64': 0.25.12
1173 | '@esbuild/openharmony-arm64': 0.25.12
1174 | '@esbuild/sunos-x64': 0.25.12
1175 | '@esbuild/win32-arm64': 0.25.12
1176 | '@esbuild/win32-ia32': 0.25.12
1177 | '@esbuild/win32-x64': 0.25.12
1178 |
1179 | fdir@6.5.0(picomatch@4.0.3):
1180 | optionalDependencies:
1181 | picomatch: 4.0.3
1182 |
1183 | fsevents@2.3.3:
1184 | optional: true
1185 |
1186 | get-tsconfig@4.13.0:
1187 | dependencies:
1188 | resolve-pkg-maps: 1.0.0
1189 |
1190 | hookable@5.5.3: {}
1191 |
1192 | is-docker@3.0.0: {}
1193 |
1194 | is-inside-container@1.0.0:
1195 | dependencies:
1196 | is-docker: 3.0.0
1197 |
1198 | is-wsl@3.1.0:
1199 | dependencies:
1200 | is-inside-container: 1.0.0
1201 |
1202 | jsesc@3.1.0: {}
1203 |
1204 | magic-string@0.30.21:
1205 | dependencies:
1206 | '@jridgewell/sourcemap-codec': 1.5.5
1207 |
1208 | mrmime@2.0.1: {}
1209 |
1210 | ms@2.1.3: {}
1211 |
1212 | nanoid@3.3.11: {}
1213 |
1214 | obug@2.1.0: {}
1215 |
1216 | ohash@2.0.11: {}
1217 |
1218 | open@10.2.0:
1219 | dependencies:
1220 | default-browser: 5.4.0
1221 | define-lazy-prop: 3.0.0
1222 | is-inside-container: 1.0.0
1223 | wsl-utils: 0.1.0
1224 |
1225 | pathe@2.0.3: {}
1226 |
1227 | perfect-debounce@2.0.0: {}
1228 |
1229 | picocolors@1.1.1: {}
1230 |
1231 | picomatch@4.0.3: {}
1232 |
1233 | postcss@8.5.6:
1234 | dependencies:
1235 | nanoid: 3.3.11
1236 | picocolors: 1.1.1
1237 | source-map-js: 1.2.1
1238 |
1239 | prettier@3.6.2: {}
1240 |
1241 | quansync@0.2.11: {}
1242 |
1243 | readdirp@4.1.2: {}
1244 |
1245 | resolve-pkg-maps@1.0.0: {}
1246 |
1247 | rolldown-plugin-dts@0.18.0(rolldown@1.0.0-beta.51)(typescript@5.9.3):
1248 | dependencies:
1249 | '@babel/generator': 7.28.5
1250 | '@babel/parser': 7.28.5
1251 | '@babel/types': 7.28.5
1252 | ast-kit: 2.2.0
1253 | birpc: 2.8.0
1254 | dts-resolver: 2.1.3
1255 | get-tsconfig: 4.13.0
1256 | magic-string: 0.30.21
1257 | obug: 2.1.0
1258 | rolldown: 1.0.0-beta.51
1259 | optionalDependencies:
1260 | typescript: 5.9.3
1261 | transitivePeerDependencies:
1262 | - oxc-resolver
1263 |
1264 | rolldown@1.0.0-beta.51:
1265 | dependencies:
1266 | '@oxc-project/types': 0.98.0
1267 | '@rolldown/pluginutils': 1.0.0-beta.51
1268 | optionalDependencies:
1269 | '@rolldown/binding-android-arm64': 1.0.0-beta.51
1270 | '@rolldown/binding-darwin-arm64': 1.0.0-beta.51
1271 | '@rolldown/binding-darwin-x64': 1.0.0-beta.51
1272 | '@rolldown/binding-freebsd-x64': 1.0.0-beta.51
1273 | '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.51
1274 | '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.51
1275 | '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.51
1276 | '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.51
1277 | '@rolldown/binding-linux-x64-musl': 1.0.0-beta.51
1278 | '@rolldown/binding-openharmony-arm64': 1.0.0-beta.51
1279 | '@rolldown/binding-wasm32-wasi': 1.0.0-beta.51
1280 | '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.51
1281 | '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.51
1282 | '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.51
1283 |
1284 | rollup@4.53.3:
1285 | dependencies:
1286 | '@types/estree': 1.0.8
1287 | optionalDependencies:
1288 | '@rollup/rollup-android-arm-eabi': 4.53.3
1289 | '@rollup/rollup-android-arm64': 4.53.3
1290 | '@rollup/rollup-darwin-arm64': 4.53.3
1291 | '@rollup/rollup-darwin-x64': 4.53.3
1292 | '@rollup/rollup-freebsd-arm64': 4.53.3
1293 | '@rollup/rollup-freebsd-x64': 4.53.3
1294 | '@rollup/rollup-linux-arm-gnueabihf': 4.53.3
1295 | '@rollup/rollup-linux-arm-musleabihf': 4.53.3
1296 | '@rollup/rollup-linux-arm64-gnu': 4.53.3
1297 | '@rollup/rollup-linux-arm64-musl': 4.53.3
1298 | '@rollup/rollup-linux-loong64-gnu': 4.53.3
1299 | '@rollup/rollup-linux-ppc64-gnu': 4.53.3
1300 | '@rollup/rollup-linux-riscv64-gnu': 4.53.3
1301 | '@rollup/rollup-linux-riscv64-musl': 4.53.3
1302 | '@rollup/rollup-linux-s390x-gnu': 4.53.3
1303 | '@rollup/rollup-linux-x64-gnu': 4.53.3
1304 | '@rollup/rollup-linux-x64-musl': 4.53.3
1305 | '@rollup/rollup-openharmony-arm64': 4.53.3
1306 | '@rollup/rollup-win32-arm64-msvc': 4.53.3
1307 | '@rollup/rollup-win32-ia32-msvc': 4.53.3
1308 | '@rollup/rollup-win32-x64-gnu': 4.53.3
1309 | '@rollup/rollup-win32-x64-msvc': 4.53.3
1310 | fsevents: 2.3.3
1311 |
1312 | run-applescript@7.1.0: {}
1313 |
1314 | semver@7.7.3: {}
1315 |
1316 | sirv@3.0.2:
1317 | dependencies:
1318 | '@polka/url': 1.0.0-next.29
1319 | mrmime: 2.0.1
1320 | totalist: 3.0.1
1321 |
1322 | source-map-js@1.2.1: {}
1323 |
1324 | tinyexec@1.0.2: {}
1325 |
1326 | tinyglobby@0.2.15:
1327 | dependencies:
1328 | fdir: 6.5.0(picomatch@4.0.3)
1329 | picomatch: 4.0.3
1330 |
1331 | toml@3.0.0: {}
1332 |
1333 | totalist@3.0.1: {}
1334 |
1335 | tree-kill@1.2.2: {}
1336 |
1337 | tsdown@0.16.6(typescript@5.9.3):
1338 | dependencies:
1339 | ansis: 4.2.0
1340 | cac: 6.7.14
1341 | chokidar: 4.0.3
1342 | diff: 8.0.2
1343 | empathic: 2.0.0
1344 | hookable: 5.5.3
1345 | obug: 2.1.0
1346 | rolldown: 1.0.0-beta.51
1347 | rolldown-plugin-dts: 0.18.0(rolldown@1.0.0-beta.51)(typescript@5.9.3)
1348 | semver: 7.7.3
1349 | tinyexec: 1.0.2
1350 | tinyglobby: 0.2.15
1351 | tree-kill: 1.2.2
1352 | unconfig-core: 7.4.1
1353 | unrun: 0.2.11
1354 | optionalDependencies:
1355 | typescript: 5.9.3
1356 | transitivePeerDependencies:
1357 | - '@ts-macro/tsc'
1358 | - '@typescript/native-preview'
1359 | - oxc-resolver
1360 | - synckit
1361 | - vue-tsc
1362 |
1363 | tslib@2.8.1:
1364 | optional: true
1365 |
1366 | typescript@5.9.3: {}
1367 |
1368 | unconfig-core@7.4.1:
1369 | dependencies:
1370 | '@quansync/fs': 0.1.5
1371 | quansync: 0.2.11
1372 |
1373 | undici-types@6.21.0: {}
1374 |
1375 | unplugin-utils@0.3.1:
1376 | dependencies:
1377 | pathe: 2.0.3
1378 | picomatch: 4.0.3
1379 |
1380 | unrun@0.2.11:
1381 | dependencies:
1382 | '@oxc-project/runtime': 0.96.0
1383 | rolldown: 1.0.0-beta.51
1384 |
1385 | vite-dev-rpc@1.1.0(vite@7.2.4(@types/node@20.19.25)(yaml@2.8.1)):
1386 | dependencies:
1387 | birpc: 2.8.0
1388 | vite: 7.2.4(@types/node@20.19.25)(yaml@2.8.1)
1389 | vite-hot-client: 2.1.0(vite@7.2.4(@types/node@20.19.25)(yaml@2.8.1))
1390 |
1391 | vite-hot-client@2.1.0(vite@7.2.4(@types/node@20.19.25)(yaml@2.8.1)):
1392 | dependencies:
1393 | vite: 7.2.4(@types/node@20.19.25)(yaml@2.8.1)
1394 |
1395 | vite-plugin-inspect@11.3.3(vite@7.2.4(@types/node@20.19.25)(yaml@2.8.1)):
1396 | dependencies:
1397 | ansis: 4.2.0
1398 | debug: 4.4.3
1399 | error-stack-parser-es: 1.0.5
1400 | ohash: 2.0.11
1401 | open: 10.2.0
1402 | perfect-debounce: 2.0.0
1403 | sirv: 3.0.2
1404 | unplugin-utils: 0.3.1
1405 | vite: 7.2.4(@types/node@20.19.25)(yaml@2.8.1)
1406 | vite-dev-rpc: 1.1.0(vite@7.2.4(@types/node@20.19.25)(yaml@2.8.1))
1407 | transitivePeerDependencies:
1408 | - supports-color
1409 |
1410 | vite@7.2.4(@types/node@20.19.25)(yaml@2.8.1):
1411 | dependencies:
1412 | esbuild: 0.25.12
1413 | fdir: 6.5.0(picomatch@4.0.3)
1414 | picomatch: 4.0.3
1415 | postcss: 8.5.6
1416 | rollup: 4.53.3
1417 | tinyglobby: 0.2.15
1418 | optionalDependencies:
1419 | '@types/node': 20.19.25
1420 | fsevents: 2.3.3
1421 | yaml: 2.8.1
1422 |
1423 | wsl-utils@0.1.0:
1424 | dependencies:
1425 | is-wsl: 3.1.0
1426 |
1427 | yaml@2.8.1:
1428 | optional: true
1429 |
--------------------------------------------------------------------------------