├── .changeset
├── README.md
├── config.json
├── cuddly-monkeys-marry.md
├── six-fishes-design.md
├── six-peas-smile.md
├── spotty-eggs-sneeze.md
└── strong-balloons-tan.md
├── .github
└── workflows
│ └── main.yml
├── .gitignore
├── README.md
├── package.json
├── pnpm-lock.yaml
├── src
├── binary
│ ├── huh.dll
│ ├── huh.h
│ └── huh.so
├── fields.ts
├── index.ts
├── linker.ts
├── lip.wasm
├── lipgloss.ts
└── wasm_exec.js
└── tsconfig.json
/.changeset/README.md:
--------------------------------------------------------------------------------
1 | # Changesets
2 |
3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
4 | with multi-package repos, or single-package repos to help you version and publish your code. You can
5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets)
6 |
7 | We have a quick list of common questions to get you started engaging with this project in
8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
9 |
--------------------------------------------------------------------------------
/.changeset/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://unpkg.com/@changesets/config@3.0.3/schema.json",
3 | "changelog": "@changesets/cli/changelog",
4 | "commit": false,
5 | "fixed": [],
6 | "linked": [],
7 | "access": "restricted",
8 | "baseBranch": "main",
9 | "updateInternalDependencies": "patch",
10 | "ignore": []
11 | }
12 |
--------------------------------------------------------------------------------
/.changeset/cuddly-monkeys-marry.md:
--------------------------------------------------------------------------------
1 | ---
2 | "charsm": minor
3 | ---
4 |
5 | added huh forms
6 |
--------------------------------------------------------------------------------
/.changeset/six-fishes-design.md:
--------------------------------------------------------------------------------
1 | ---
2 | "charsm": minor
3 | ---
4 |
5 | first publish
6 |
--------------------------------------------------------------------------------
/.changeset/six-peas-smile.md:
--------------------------------------------------------------------------------
1 | ---
2 | "charsm": minor
3 | ---
4 |
5 | added glamour markdown renderer under lipgloss(remove in the future to be standalone)
6 |
--------------------------------------------------------------------------------
/.changeset/spotty-eggs-sneeze.md:
--------------------------------------------------------------------------------
1 | ---
2 | "charsm": patch
3 | ---
4 |
5 | return markdown don't print internally in wasm
6 |
--------------------------------------------------------------------------------
/.changeset/strong-balloons-tan.md:
--------------------------------------------------------------------------------
1 | ---
2 | "charsm": minor
3 | ---
4 |
5 | added adaptive colors and a simple list
6 |
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 |
3 | on:
4 | push:
5 | branches:
6 | - "**"
7 |
8 | jobs:
9 | build:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: actions/checkout@v3
13 | - uses: pnpm/action-setup@v2
14 | with:
15 | version: 9
16 | - uses: actions/setup-node@v3
17 | with:
18 | node-version: '20.15.0'
19 | cache: "pnpm"
20 | - run: pnpm install --frozen-lockfile
21 | - run: pnpm run lint && pnpm run build
22 |
23 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | example
4 | copywasm.bat
5 | d.md
6 |
7 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | # Charsm
7 |
8 | Charsm is a port of the gorgeous [Lipgloss](https://github.com/charmbracelet/lipgloss) library from Charm CLI, part of their impressive suite of CLI tools. Definitely check out Charm’s collection of [tools](https://charm.sh/); they’re fantastic.
9 |
10 | I’m a huge fan of CLI tools and have been building a lot of them lately. Naturally, I want my CLIs to look amazing, which is exactly what Charm CLI tools achieve. Not wanting to Go without that same polish in JavaScript, I created Charsm! For details on how I ported Lipgloss using WebAssembly, see the **porting lipgloss with wasm** section below.
11 |
12 | If you’re looking to build beautiful TUIs, this library is for you!
13 |
14 | 
15 |
16 |
17 |
18 |
19 | - [Charsm](#charsm)
20 | * [Installation](#installation)
21 | * [Getting Started](#getting-started)
22 | + [Initialization](#initialization)
23 | + [Creating Styles](#creating-styles)
24 | + [Style Options](#style-options)
25 | + [Padding and Margins](#padding-and-margins)
26 | + [Simple Example](#simple-example)
27 | * [Layout](#layout)
28 | * [Creating Tables](#creating-tables)
29 | * [Render Markdown](#render-markdown)
30 | * [Porting Lipgloss with WASM](#porting-lipgloss-with-wasm)
31 | * [Plan](#plan)
32 | * [Contribution](#contribution)
33 | * [Notes on Building an Executable](#notes-on-building-an-executable)
34 | * [Documentation: Bundling the Node Application with `charsm` WASM File](#documentation-bundling-the-node-application-with-charsm-wasm-file)
35 | + [Step 1: Accessing the WASM File in `charsm`](#step-1-accessing-the-wasm-file-in-charsm)
36 | + [Step 2: Bundling with `pkg`](#step-2-bundling-with-pkg)
37 | + [Step 3: Bundling with `nexe`](#step-3-bundling-with-nexe)
38 | + [Step 4: Bundling with `electron-builder` (For Electron Apps)](#step-4-bundling-with-electron-builder-for-electron-apps)
39 | + [Conclusion](#conclusion)
40 |
41 |
42 |
43 |
44 |
45 | ## Installation
46 |
47 | Install from npm with your favorite package manager:
48 |
49 | ```bash
50 | pnpm add charsm
51 | ```
52 | ## Update v0.2.0
53 |
54 | added huh [forms](https://github.com/SfundoMhlungu/huh-shared-lib)
55 |
56 | Tested on Node.js v20.15.0 and v18.20.4 both linux and windows
57 |
58 | original charmcli huh [repo](https://github.com/charmbracelet/huh)
59 |
60 | ## Getting Started
61 |
62 | ### Initialization
63 |
64 | ```js
65 | import {initLip, Lipgloss} from "charsm"
66 |
67 | (async function() {
68 | const isInit = await initLip(); // returns false if WASM fails to load, otherwise true
69 |
70 | if (!isInit) return; // handle failure case
71 | })();
72 | ```
73 |
74 | Once WASM is loaded, you can create a `Lipgloss` instance:
75 |
76 | ```js
77 | (async function() {
78 | const lip = new Lipgloss();
79 | })();
80 | ```
81 |
82 | ### Creating Styles
83 |
84 | At its core, Charsm lets you define styles similar to CSS, which can then be applied to text.
85 |
86 | ```js
87 | (async function() {
88 | // Define a style
89 | lip.createStyle({
90 | id: "primary",
91 | canvasColor: { color: "#7D56F4" },
92 | border: { type: "rounded", background: "#0056b3", sides: [true] },
93 | padding: [6, 8, 6, 8],
94 | margin: [0, 0, 8, 0],
95 | bold: true,
96 | width: 10,
97 | height: 12,
98 | });
99 |
100 | // Apply the style
101 | const result = lip.apply({ value: "🔥🦾🍕" });
102 | console.log(result); // Output styled result
103 |
104 | // Apply a specific style by ID
105 | const custom = lip.apply({ value: "🔥🦾🍕", id: "primary" });
106 | console.log(custom);
107 | })();
108 | ```
109 |
110 | ### Style Options
111 |
112 | Here’s an overview of the options available for creating styles:
113 |
114 | ```js
115 | type LipglossPos = "bottom" | "top" | "left" | "right" | "center";
116 | type BorderType = "rounded" | "block" | "thick" | "double";
117 |
118 | interface Style {
119 | id: string;
120 | canvasColor?: { color?: string, background?: string };
121 | border?: { type: BorderType, foreground?: string, background?: string, sides: Array };
122 | padding?: Array;
123 | margin: Array;
124 | bold?: boolean;
125 | alignV?: LipglossPos;
126 | alignH?: LipglossPos; // buggy don't work
127 | width?: number;
128 | height?: number;
129 | maxWidth?: number;
130 | maxHeight?: number;
131 | }
132 | ```
133 | alignV works!
134 |
135 | > **Note:** For horizontal alignment(alignH), use padding and margins.
136 |
137 | ### Padding and Margins
138 |
139 | - One value applies to all sides: `[1]`
140 | - Two values apply to vertical and horizontal sides: `[1, 2]`
141 | - Four values apply to top, right, bottom, and left: `[1, 2, 3, 4]`
142 |
143 | ### Simple Example
144 |
145 | ```js
146 | lip.createStyle({
147 | id: "primary",
148 | canvasColor: { color: "#7D56F4" },
149 | border: { type: "rounded", background: "#0056b3", sides: [true] },
150 | padding: [6, 8, 6, 8],
151 | margin: [0, 2, 8, 2],
152 | bold: true,
153 | align: 'center',
154 | width: 10,
155 | height: 12,
156 | });;
157 |
158 | lip.createStyle({
159 | id: "secondary",
160 | canvasColor: {color: "#7D56F4" },
161 | border: { type: "rounded", background: "#0056b3", sides: [true, false] },
162 | padding: [6, 8, 6, 8],
163 | margin: [0, 0, 8, 1],
164 | bold: true,
165 | // alignH: "right",
166 |
167 | alignV: "bottom",
168 | width: 10,
169 | height: 12,
170 |
171 | });
172 |
173 |
174 | const a = lip.apply({ value: "Charsmmm", id: "secondary" });
175 | const b = lip.apply({ value: "🔥🦾🍕", id: "primary" });
176 | const c = lip.apply({ value: 'Charsmmm', id: "secondary" });
177 | ```
178 |
179 | ## colors - for both color, background and border
180 |
181 | 1. completeAdaptiveColor
182 |
183 | ```js
184 | lip.createStyle({
185 | id: "primary",
186 | canvasColor: {color: "#7D56F4", background:{completeAdaptiveColor: { Light:{TrueColor: "#d7ffae", ANSI256: "193", ANSI: "11"}, Dark: {TrueColor: "#d75fee", ANSI256: "163", ANSI: "5"}}}},
187 |
188 |
189 | });
190 |
191 | ```
192 |
193 | 2. Adaptive Color
194 |
195 |
196 | ```js
197 | const highlight = { Light: "#874BFD", Dark: "#7D56F4" }
198 | canvasColor: { color:{ adaptiveColor: highlight } , background: "#FAFAFA" },
199 |
200 | ```
201 |
202 | 3. completColor
203 |
204 | ```js
205 | canvasColor: {color: {completeColor: {TrueColor: "#d7ffae", ANSI256: "193", ANSI: "11"}}}
206 |
207 | ```
208 |
209 | ## Layout
210 |
211 | Charsm currently supports horizontal and vertical layouts.
212 |
213 | ```js
214 | const res = lip.join({ direction: "horizontal", elements: [a, b, c], position: "left" });
215 | console.log(res);
216 | ```
217 |
218 | > For details on `lipgloss.JoinVertical` and `lipgloss.JoinHorizontal`, refer to Charm’s lipgloss repo.
219 |
220 | ## Creating Tables
221 |
222 | Charsm can create tables easily. Here’s an example:
223 |
224 | ```js
225 | const rows = [
226 | ["Chinese", "您好", "你好"],
227 | ["Japanese", "こんにちは", "やあ"],
228 | ["Arabic", "أهلين", "أهلا"],
229 | ["Russian", "Здравствуйте", "Привет"],
230 | ["Spanish", "Hola", "¿Qué tal?"]
231 | ];
232 |
233 | const tableData = { headers: ["LANGUAGE", "FORMAL", "INFORMAL"], rows: rows };
234 |
235 | const t = lip.newTable({
236 | data: tableData,
237 | table: { border: "rounded", color: "99", width: 100 },
238 | header: { color: "212", bold: true },
239 | rows: { even: { color: "246" } }
240 | });
241 |
242 | console.log(t);
243 | ```
244 |
245 | ## Render Markdown
246 |
247 | use's [glamour](github.com/charmbracelet/glamour) from charm CLI underneath
248 |
249 | ```js
250 |
251 |
252 | const content = `
253 | # Today’s Menu
254 |
255 | ## Appetizers
256 |
257 | | Name | Price | Notes |
258 | | --- | --- | --- |
259 | | Tsukemono | $2 | Just an appetizer |
260 | | Tomato Soup | $4 | Made with San Marzano tomatoes |
261 | | Okonomiyaki | $4 | Takes a few minutes to make |
262 | | Curry | $3 | We can add squash if you’d like |
263 |
264 | ## Seasonal Dishes
265 |
266 | | Name | Price | Notes |
267 | | --- | --- | --- |
268 | | Steamed bitter melon | $2 | Not so bitter |
269 | | Takoyaki | $3 | Fun to eat |
270 | | Winter squash | $3 | Today it's pumpkin |
271 |
272 | ## Desserts
273 |
274 | | Name | Price | Notes |
275 | | --- | --- | --- |
276 | | Dorayaki | $4 | Looks good on rabbits |
277 | | Banana Split | $5 | A classic |
278 | | Cream Puff | $3 | Pretty creamy! |
279 |
280 | All our dishes are made in-house by Karen, our chef. Most of our ingredients
281 | are from our garden or the fish market down the street.
282 |
283 | Some famous people that have eaten here lately:
284 |
285 | * [x] René Redzepi
286 | * [x] David Chang
287 | * [ ] Jiro Ono (maybe some day)
288 |
289 | Bon appétit!
290 | `
291 |
292 | // technically not part of lip(lipgloss)
293 | console.log(lip.RenderMD(content, "tokyo-night"))
294 |
295 |
296 | ```
297 |
298 | ## Porting Lipgloss with WASM
299 |
300 | The implementation here is a straightforward 1-to-1 port! In other words, for example `createStyle` is built up from a bunch of lipgloss functions with conditional checks. It’s verbose, kind of repetitive, and maybe even a bit annoying.
301 |
302 | The reason for this verbosity is to avoid using `reflect` for dynamic calls to lipgloss functions, `reflect` in Go is a form of metaprogramming that's super expensive.
303 |
304 | Here's an example of `Join`:
305 |
306 | ```go
307 | func (l *lipWrapper) Join(this js.Value, args []js.Value) interface{} {
308 | direction := args[0].Get("direction").String()
309 |
310 | var elements []string
311 | e := args[0].Get("elements")
312 | for i := 0; i < e.Length(); i++ {
313 | elements = append(elements, e.Index(i).String())
314 | }
315 |
316 | if CheckTruthy(args, "pc") {
317 | if direction == "vertical" {
318 | return lipgloss.JoinVertical(lipgloss.Position(args[0].Get("pc").Int()), elements...)
319 | } else {
320 | return lipgloss.JoinHorizontal(lipgloss.Position(args[0].Get("pc").Int()), elements...)
321 | }
322 | }
323 |
324 | if CheckTruthy(args, "position") {
325 | pos := args[0].Get("position").String()
326 | var apos lipgloss.Position
327 |
328 | if pos == "bottom" {
329 | apos = lipgloss.Bottom
330 | } else if pos == "top" {
331 | apos = lipgloss.Top
332 | } else if pos == "right" {
333 | apos = lipgloss.Right
334 | } else {
335 | apos = lipgloss.Left
336 | }
337 |
338 | if direction == "vertical" {
339 | return lipgloss.JoinVertical(apos, elements...)
340 | } else {
341 | return lipgloss.JoinHorizontal(apos, elements...)
342 | }
343 | }
344 |
345 | return ""
346 | }
347 | ```
348 |
349 | That's why some features like adaptive colors aren’t implemented just yet—those will come later!
350 |
351 |
352 | ## Plan
353 |
354 | Next up, I’m planning to port Bubble Tea for interactive components!
355 |
356 | ## Contribution
357 |
358 | This project came up while I was building a CLI tool in JavaScript to monitor websites. I wanted it to look nice, and since I’ve been using lipgloss a lot in Go, I figured I'd port it.
359 |
360 | Meaning, yes, the Go code is all over the place! Here’s a look at `main` for context:
361 |
362 | ```go
363 | func main() {
364 |
365 | lip := &lipWrapper{}
366 | lip.styles = make(map[string]string)
367 | lip.styles2o = make(map[string]lipgloss.Style)
368 |
369 | // Export the `add` function to JavaScript
370 | // js.Global().Set("add", js.FuncOf(add))
371 | // js.Global().Set("greet", js.FuncOf(greet))
372 | // js.Global().Set("multiply", js.FuncOf(multiply))
373 | // js.Global().Set("processUser", js.FuncOf(processUser))
374 | // js.Global().Set("asyncAdd", js.FuncOf(asyncAdd))
375 | // js.Global().Set("lipprint", js.FuncOf(printWithGloss))
376 | // js.Global().Set("lipgloss", js.Func(lipgloss.NewStyle))
377 | js.Global().Set("createStyle", js.FuncOf(lip.createStyle))
378 | js.Global().Set("apply", js.FuncOf(lip.apply))
379 | // js.Global().Set("canvasColor", js.FuncOf(lip.canvasColor))
380 | // js.Global().Set("padding", js.FuncOf(lip.canvasColor))
381 | // js.Global().Set("render", js.FuncOf(lip.render))
382 | // js.Global().Set("margin", js.FuncOf(lip.margin))
383 | // js.Global().Set("place", js.FuncOf(lip.place))
384 | // js.Global().Set("size", js.FuncOf(lip.size))
385 | // js.Global().Set("JoinHorizontal", js.FuncOf(lip.JoinHorizontal))
386 | // js.Global().Set("JoinVertical", js.FuncOf(lip.JoinVertical))
387 | // js.Global().Set("border", js.FuncOf(lip.border))
388 | // js.Global().Set("width", js.FuncOf(lip.width))
389 | // js.Global().Set("height", js.FuncOf(lip.height))
390 | js.Global().Set("newTable", js.FuncOf(lip.newTable))
391 | // js.Global().Set("tableStyle", js.FuncOf(lip.tableStyle))
392 | js.Global().Set("join", js.FuncOf(lip.Join))
393 |
394 | // Example user input
395 | // input := "lipgloss.NewStyle().Foreground(lipgloss.Color(fg)).Background(lipgloss.Color(bg))"
396 |
397 | // // Assuming user provides these values
398 | // fg := "#FF0000" // red
399 | // bg := "#00FF00" // green
400 |
401 | // // style := buildStyleFromInput(input, fg, bg)
402 |
403 | // // Print styled text to see the result
404 | // styledText := style.Render("Hello, Styled World!")
405 | // fmt.Println(styledText)
406 | // // Keep the program running (WebAssembly runs until manually stopped)
407 | select {} // loop
408 | }
409 | ```
410 | yeah really bad and that's just main.
411 |
412 | I’ve got files everywhere, so I’ll need to clean it up once I find the time then I'll post the Golang code.
413 |
414 | ## Notes on Building an Executable
415 |
416 | To turn your Node application into an executable, make sure your build tool copies and bundles the WASM file in `charsm`’s `dist` folder.
417 |
418 | Since it’s read with `fs` (not imported), your bundler needs to know about this file:
419 |
420 | ```javascript
421 | const wasmPath = path.resolve(dir, './lip.wasm');
422 | const wasmfile = fs.readFileSync(wasmPath);
423 | ```
424 |
425 | **Disclaimer ⚠️:** This following instructions are generated by GPT, so I haven’t fully tested the bundling process yet, but I do use `pkg` to create an exe.
426 |
427 | ## Documentation: Bundling the Node Application with `charsm` WASM File
428 |
429 | This guide covers how to bundle a Node.js application that uses the `charsm` library and its `lip.wasm` file into a standalone executable. We'll review setup for common tools like `pkg`, `nexe`, and `electron-builder`.
430 |
431 | ### Step 1: Accessing the WASM File in `charsm`
432 |
433 | To bundle, you’ll need a dynamic reference to `lip.wasm` since its path will change in the executable.
434 |
435 | 1. **Development Path:** Typically, `node_modules/charsm/dist/lip.wasm`.
436 | 2. **Bundled Path:** Dynamically reference the WASM file at runtime.
437 |
438 |
439 | ### Step 2: Bundling with `pkg`
440 |
441 | To include `lip.wasm`:
442 |
443 | 1. **Update `package.json`:**
444 |
445 | ```json
446 | {
447 | "pkg": {
448 | "assets": [
449 | "node_modules/charsm/dist/lip.wasm"
450 | ]
451 | }
452 | }
453 | ```
454 |
455 | 2. **Bundle the Application:**
456 |
457 | ```bash
458 | pkg . --assets node_modules/charsm/dist/lip.wasm
459 | ```
460 |
461 | ### Step 3: Bundling with `nexe`
462 |
463 | 1. **Run `nexe` with Resource Flag:**
464 |
465 | ```bash
466 | nexe -i index.js -o myApp.exe --resource node_modules/charsm/dist/lip.wasm
467 | ```
468 |
469 | 2. **Update Code for `process.cwd()`:**
470 |
471 | ```javascript
472 | const wasmPath = path.join(process.cwd(), 'node_modules/charsm/dist/lip.wasm');
473 | ```
474 |
475 | ### Step 4: Bundling with `electron-builder` (For Electron Apps)
476 |
477 | 1. **Modify `electron-builder` Configuration:**
478 |
479 | ```json
480 | {
481 | "files": [
482 | "dist/**/*",
483 | "node_modules/charsm/dist/lip.wasm"
484 | ]
485 | }
486 | ```
487 |
488 | 2. **Reference with `__dirname`:**
489 |
490 | ```javascript
491 | const wasmPath = path.join(__dirname, 'node_modules/charsm/dist/lip.wasm');
492 | ```
493 |
494 | ### Conclusion
495 |
496 | Each bundling tool has a different configuration to include the `lip.wasm` file. Following these steps will ensure `charsm`’s WASM file is properly included in your executable.
497 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "charsm",
3 | "version": "0.2.0",
4 | "description": "",
5 | "main": "dist/index.js",
6 | "module": "dist/index.mjs",
7 | "types": "dist/index.d.ts",
8 | "scripts": {
9 | "build": "tsup src/index.ts --format cjs,esm --dts && node -e \"require('fs').copyFileSync('src/lip.wasm', 'dist/lip.wasm')\" && node -e \"require('fs').cpSync('src/binary', 'dist/binary', { recursive: true })\"",
10 | "lint": "tsc"
11 | },
12 | "keywords": [
13 | "Tui",
14 | "Terminal UI'S",
15 | "CLI",
16 | "Charm CLI"
17 | ],
18 | "author": "Sifundo Mhlungu ",
19 | "license": "ISC",
20 | "files": [
21 | "dist"
22 | ],
23 | "publishConfig": {
24 | "registry": "https://registry.npmjs.org/"
25 | },
26 | "repository": {
27 | "type": "git",
28 | "url": "https://github.com/SfundoMhlungu/charsm.git"
29 | },
30 | "bugs": {
31 | "url": "https://github.com/SfundoMhlungu/charsm/issues"
32 | },
33 | "homepage": "https://github.com/SfundoMhlungu/charsm#README",
34 | "devDependencies": {
35 | "@changesets/cli": "^2.27.9",
36 | "@types/ffi-napi": "^4.0.10",
37 | "@types/node": "^22.8.4",
38 | "tsup": "^8.3.5",
39 | "typescript": "^5.6.3"
40 | },
41 | "dependencies": {
42 | "@makeomatic/ffi-napi": "^4.2.0",
43 | "@makeomatic/ref-napi": "^3.0.6",
44 | "ffi-rs": "^1.2.2",
45 | "ref-struct-di": "^1.1.1"
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | '@makeomatic/ffi-napi':
12 | specifier: ^4.2.0
13 | version: 4.2.0
14 | '@makeomatic/ref-napi':
15 | specifier: ^3.0.6
16 | version: 3.0.6
17 | ffi-rs:
18 | specifier: ^1.2.2
19 | version: 1.2.2
20 | ref-struct-di:
21 | specifier: ^1.1.1
22 | version: 1.1.1
23 | devDependencies:
24 | '@changesets/cli':
25 | specifier: ^2.27.9
26 | version: 2.27.9
27 | '@types/ffi-napi':
28 | specifier: ^4.0.10
29 | version: 4.0.10
30 | '@types/node':
31 | specifier: ^22.8.4
32 | version: 22.8.4
33 | tsup:
34 | specifier: ^8.3.5
35 | version: 8.3.5(typescript@5.6.3)
36 | typescript:
37 | specifier: ^5.6.3
38 | version: 5.6.3
39 |
40 | packages:
41 |
42 | '@babel/runtime@7.26.0':
43 | resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==}
44 | engines: {node: '>=6.9.0'}
45 |
46 | '@changesets/apply-release-plan@7.0.5':
47 | resolution: {integrity: sha512-1cWCk+ZshEkSVEZrm2fSj1Gz8sYvxgUL4Q78+1ZZqeqfuevPTPk033/yUZ3df8BKMohkqqHfzj0HOOrG0KtXTw==}
48 |
49 | '@changesets/assemble-release-plan@6.0.4':
50 | resolution: {integrity: sha512-nqICnvmrwWj4w2x0fOhVj2QEGdlUuwVAwESrUo5HLzWMI1rE5SWfsr9ln+rDqWB6RQ2ZyaMZHUcU7/IRaUJS+Q==}
51 |
52 | '@changesets/changelog-git@0.2.0':
53 | resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==}
54 |
55 | '@changesets/cli@2.27.9':
56 | resolution: {integrity: sha512-q42a/ZbDnxPpCb5Wkm6tMVIxgeI9C/bexntzTeCFBrQEdpisQqk8kCHllYZMDjYtEc1ZzumbMJAG8H0Z4rdvjg==}
57 | hasBin: true
58 |
59 | '@changesets/config@3.0.3':
60 | resolution: {integrity: sha512-vqgQZMyIcuIpw9nqFIpTSNyc/wgm/Lu1zKN5vECy74u95Qx/Wa9g27HdgO4NkVAaq+BGA8wUc/qvbvVNs93n6A==}
61 |
62 | '@changesets/errors@0.2.0':
63 | resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==}
64 |
65 | '@changesets/get-dependents-graph@2.1.2':
66 | resolution: {integrity: sha512-sgcHRkiBY9i4zWYBwlVyAjEM9sAzs4wYVwJUdnbDLnVG3QwAaia1Mk5P8M7kraTOZN+vBET7n8KyB0YXCbFRLQ==}
67 |
68 | '@changesets/get-release-plan@4.0.4':
69 | resolution: {integrity: sha512-SicG/S67JmPTrdcc9Vpu0wSQt7IiuN0dc8iR5VScnnTVPfIaLvKmEGRvIaF0kcn8u5ZqLbormZNTO77bCEvyWw==}
70 |
71 | '@changesets/get-version-range-type@0.4.0':
72 | resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==}
73 |
74 | '@changesets/git@3.0.1':
75 | resolution: {integrity: sha512-pdgHcYBLCPcLd82aRcuO0kxCDbw/yISlOtkmwmE8Odo1L6hSiZrBOsRl84eYG7DRCab/iHnOkWqExqc4wxk2LQ==}
76 |
77 | '@changesets/logger@0.1.1':
78 | resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==}
79 |
80 | '@changesets/parse@0.4.0':
81 | resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==}
82 |
83 | '@changesets/pre@2.0.1':
84 | resolution: {integrity: sha512-vvBJ/If4jKM4tPz9JdY2kGOgWmCowUYOi5Ycv8dyLnEE8FgpYYUo1mgJZxcdtGGP3aG8rAQulGLyyXGSLkIMTQ==}
85 |
86 | '@changesets/read@0.6.1':
87 | resolution: {integrity: sha512-jYMbyXQk3nwP25nRzQQGa1nKLY0KfoOV7VLgwucI0bUO8t8ZLCr6LZmgjXsiKuRDc+5A6doKPr9w2d+FEJ55zQ==}
88 |
89 | '@changesets/should-skip-package@0.1.1':
90 | resolution: {integrity: sha512-H9LjLbF6mMHLtJIc/eHR9Na+MifJ3VxtgP/Y+XLn4BF7tDTEN1HNYtH6QMcjP1uxp9sjaFYmW8xqloaCi/ckTg==}
91 |
92 | '@changesets/types@4.1.0':
93 | resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==}
94 |
95 | '@changesets/types@6.0.0':
96 | resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==}
97 |
98 | '@changesets/write@0.3.2':
99 | resolution: {integrity: sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw==}
100 |
101 | '@esbuild/aix-ppc64@0.24.0':
102 | resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==}
103 | engines: {node: '>=18'}
104 | cpu: [ppc64]
105 | os: [aix]
106 |
107 | '@esbuild/android-arm64@0.24.0':
108 | resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==}
109 | engines: {node: '>=18'}
110 | cpu: [arm64]
111 | os: [android]
112 |
113 | '@esbuild/android-arm@0.24.0':
114 | resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==}
115 | engines: {node: '>=18'}
116 | cpu: [arm]
117 | os: [android]
118 |
119 | '@esbuild/android-x64@0.24.0':
120 | resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==}
121 | engines: {node: '>=18'}
122 | cpu: [x64]
123 | os: [android]
124 |
125 | '@esbuild/darwin-arm64@0.24.0':
126 | resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==}
127 | engines: {node: '>=18'}
128 | cpu: [arm64]
129 | os: [darwin]
130 |
131 | '@esbuild/darwin-x64@0.24.0':
132 | resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==}
133 | engines: {node: '>=18'}
134 | cpu: [x64]
135 | os: [darwin]
136 |
137 | '@esbuild/freebsd-arm64@0.24.0':
138 | resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==}
139 | engines: {node: '>=18'}
140 | cpu: [arm64]
141 | os: [freebsd]
142 |
143 | '@esbuild/freebsd-x64@0.24.0':
144 | resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==}
145 | engines: {node: '>=18'}
146 | cpu: [x64]
147 | os: [freebsd]
148 |
149 | '@esbuild/linux-arm64@0.24.0':
150 | resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==}
151 | engines: {node: '>=18'}
152 | cpu: [arm64]
153 | os: [linux]
154 |
155 | '@esbuild/linux-arm@0.24.0':
156 | resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==}
157 | engines: {node: '>=18'}
158 | cpu: [arm]
159 | os: [linux]
160 |
161 | '@esbuild/linux-ia32@0.24.0':
162 | resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==}
163 | engines: {node: '>=18'}
164 | cpu: [ia32]
165 | os: [linux]
166 |
167 | '@esbuild/linux-loong64@0.24.0':
168 | resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==}
169 | engines: {node: '>=18'}
170 | cpu: [loong64]
171 | os: [linux]
172 |
173 | '@esbuild/linux-mips64el@0.24.0':
174 | resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==}
175 | engines: {node: '>=18'}
176 | cpu: [mips64el]
177 | os: [linux]
178 |
179 | '@esbuild/linux-ppc64@0.24.0':
180 | resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==}
181 | engines: {node: '>=18'}
182 | cpu: [ppc64]
183 | os: [linux]
184 |
185 | '@esbuild/linux-riscv64@0.24.0':
186 | resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==}
187 | engines: {node: '>=18'}
188 | cpu: [riscv64]
189 | os: [linux]
190 |
191 | '@esbuild/linux-s390x@0.24.0':
192 | resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==}
193 | engines: {node: '>=18'}
194 | cpu: [s390x]
195 | os: [linux]
196 |
197 | '@esbuild/linux-x64@0.24.0':
198 | resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==}
199 | engines: {node: '>=18'}
200 | cpu: [x64]
201 | os: [linux]
202 |
203 | '@esbuild/netbsd-x64@0.24.0':
204 | resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==}
205 | engines: {node: '>=18'}
206 | cpu: [x64]
207 | os: [netbsd]
208 |
209 | '@esbuild/openbsd-arm64@0.24.0':
210 | resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==}
211 | engines: {node: '>=18'}
212 | cpu: [arm64]
213 | os: [openbsd]
214 |
215 | '@esbuild/openbsd-x64@0.24.0':
216 | resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==}
217 | engines: {node: '>=18'}
218 | cpu: [x64]
219 | os: [openbsd]
220 |
221 | '@esbuild/sunos-x64@0.24.0':
222 | resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==}
223 | engines: {node: '>=18'}
224 | cpu: [x64]
225 | os: [sunos]
226 |
227 | '@esbuild/win32-arm64@0.24.0':
228 | resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==}
229 | engines: {node: '>=18'}
230 | cpu: [arm64]
231 | os: [win32]
232 |
233 | '@esbuild/win32-ia32@0.24.0':
234 | resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==}
235 | engines: {node: '>=18'}
236 | cpu: [ia32]
237 | os: [win32]
238 |
239 | '@esbuild/win32-x64@0.24.0':
240 | resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==}
241 | engines: {node: '>=18'}
242 | cpu: [x64]
243 | os: [win32]
244 |
245 | '@isaacs/cliui@8.0.2':
246 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
247 | engines: {node: '>=12'}
248 |
249 | '@jridgewell/gen-mapping@0.3.5':
250 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
251 | engines: {node: '>=6.0.0'}
252 |
253 | '@jridgewell/resolve-uri@3.1.2':
254 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
255 | engines: {node: '>=6.0.0'}
256 |
257 | '@jridgewell/set-array@1.2.1':
258 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
259 | engines: {node: '>=6.0.0'}
260 |
261 | '@jridgewell/sourcemap-codec@1.5.0':
262 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
263 |
264 | '@jridgewell/trace-mapping@0.3.25':
265 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
266 |
267 | '@makeomatic/ffi-napi@4.2.0':
268 | resolution: {integrity: sha512-f+kHcFZe65C6++JgdKgBFnlvESpLgfU0a4PsfnbaqQQTTcBPgRclT21ylRoVCktQr4ifXXTt6NLkn+mhq/CZ9A==}
269 | engines: {node: '>=18'}
270 |
271 | '@makeomatic/ref-napi@3.0.6':
272 | resolution: {integrity: sha512-PNAcp1M1kQPL6xYu16KCVM9oAAqGDRB4nEWgxTvYrxXpYiiit2ClomQI9umnJ7gMpG8vnaSFhFA+6XzPnWxSNQ==}
273 | engines: {node: '>= 10.0'}
274 |
275 | '@manypkg/find-root@1.1.0':
276 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==}
277 |
278 | '@manypkg/get-packages@1.1.3':
279 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==}
280 |
281 | '@nodelib/fs.scandir@2.1.5':
282 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
283 | engines: {node: '>= 8'}
284 |
285 | '@nodelib/fs.stat@2.0.5':
286 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
287 | engines: {node: '>= 8'}
288 |
289 | '@nodelib/fs.walk@1.2.8':
290 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
291 | engines: {node: '>= 8'}
292 |
293 | '@pkgjs/parseargs@0.11.0':
294 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
295 | engines: {node: '>=14'}
296 |
297 | '@rollup/rollup-android-arm-eabi@4.24.3':
298 | resolution: {integrity: sha512-ufb2CH2KfBWPJok95frEZZ82LtDl0A6QKTa8MoM+cWwDZvVGl5/jNb79pIhRvAalUu+7LD91VYR0nwRD799HkQ==}
299 | cpu: [arm]
300 | os: [android]
301 |
302 | '@rollup/rollup-android-arm64@4.24.3':
303 | resolution: {integrity: sha512-iAHpft/eQk9vkWIV5t22V77d90CRofgR2006UiCjHcHJFVI1E0oBkQIAbz+pLtthFw3hWEmVB4ilxGyBf48i2Q==}
304 | cpu: [arm64]
305 | os: [android]
306 |
307 | '@rollup/rollup-darwin-arm64@4.24.3':
308 | resolution: {integrity: sha512-QPW2YmkWLlvqmOa2OwrfqLJqkHm7kJCIMq9kOz40Zo9Ipi40kf9ONG5Sz76zszrmIZZ4hgRIkez69YnTHgEz1w==}
309 | cpu: [arm64]
310 | os: [darwin]
311 |
312 | '@rollup/rollup-darwin-x64@4.24.3':
313 | resolution: {integrity: sha512-KO0pN5x3+uZm1ZXeIfDqwcvnQ9UEGN8JX5ufhmgH5Lz4ujjZMAnxQygZAVGemFWn+ZZC0FQopruV4lqmGMshow==}
314 | cpu: [x64]
315 | os: [darwin]
316 |
317 | '@rollup/rollup-freebsd-arm64@4.24.3':
318 | resolution: {integrity: sha512-CsC+ZdIiZCZbBI+aRlWpYJMSWvVssPuWqrDy/zi9YfnatKKSLFCe6fjna1grHuo/nVaHG+kiglpRhyBQYRTK4A==}
319 | cpu: [arm64]
320 | os: [freebsd]
321 |
322 | '@rollup/rollup-freebsd-x64@4.24.3':
323 | resolution: {integrity: sha512-F0nqiLThcfKvRQhZEzMIXOQG4EeX61im61VYL1jo4eBxv4aZRmpin6crnBJQ/nWnCsjH5F6J3W6Stdm0mBNqBg==}
324 | cpu: [x64]
325 | os: [freebsd]
326 |
327 | '@rollup/rollup-linux-arm-gnueabihf@4.24.3':
328 | resolution: {integrity: sha512-KRSFHyE/RdxQ1CSeOIBVIAxStFC/hnBgVcaiCkQaVC+EYDtTe4X7z5tBkFyRoBgUGtB6Xg6t9t2kulnX6wJc6A==}
329 | cpu: [arm]
330 | os: [linux]
331 |
332 | '@rollup/rollup-linux-arm-musleabihf@4.24.3':
333 | resolution: {integrity: sha512-h6Q8MT+e05zP5BxEKz0vi0DhthLdrNEnspdLzkoFqGwnmOzakEHSlXfVyA4HJ322QtFy7biUAVFPvIDEDQa6rw==}
334 | cpu: [arm]
335 | os: [linux]
336 |
337 | '@rollup/rollup-linux-arm64-gnu@4.24.3':
338 | resolution: {integrity: sha512-fKElSyXhXIJ9pqiYRqisfirIo2Z5pTTve5K438URf08fsypXrEkVmShkSfM8GJ1aUyvjakT+fn2W7Czlpd/0FQ==}
339 | cpu: [arm64]
340 | os: [linux]
341 |
342 | '@rollup/rollup-linux-arm64-musl@4.24.3':
343 | resolution: {integrity: sha512-YlddZSUk8G0px9/+V9PVilVDC6ydMz7WquxozToozSnfFK6wa6ne1ATUjUvjin09jp34p84milxlY5ikueoenw==}
344 | cpu: [arm64]
345 | os: [linux]
346 |
347 | '@rollup/rollup-linux-powerpc64le-gnu@4.24.3':
348 | resolution: {integrity: sha512-yNaWw+GAO8JjVx3s3cMeG5Esz1cKVzz8PkTJSfYzE5u7A+NvGmbVFEHP+BikTIyYWuz0+DX9kaA3pH9Sqxp69g==}
349 | cpu: [ppc64]
350 | os: [linux]
351 |
352 | '@rollup/rollup-linux-riscv64-gnu@4.24.3':
353 | resolution: {integrity: sha512-lWKNQfsbpv14ZCtM/HkjCTm4oWTKTfxPmr7iPfp3AHSqyoTz5AgLemYkWLwOBWc+XxBbrU9SCokZP0WlBZM9lA==}
354 | cpu: [riscv64]
355 | os: [linux]
356 |
357 | '@rollup/rollup-linux-s390x-gnu@4.24.3':
358 | resolution: {integrity: sha512-HoojGXTC2CgCcq0Woc/dn12wQUlkNyfH0I1ABK4Ni9YXyFQa86Fkt2Q0nqgLfbhkyfQ6003i3qQk9pLh/SpAYw==}
359 | cpu: [s390x]
360 | os: [linux]
361 |
362 | '@rollup/rollup-linux-x64-gnu@4.24.3':
363 | resolution: {integrity: sha512-mnEOh4iE4USSccBOtcrjF5nj+5/zm6NcNhbSEfR3Ot0pxBwvEn5QVUXcuOwwPkapDtGZ6pT02xLoPaNv06w7KQ==}
364 | cpu: [x64]
365 | os: [linux]
366 |
367 | '@rollup/rollup-linux-x64-musl@4.24.3':
368 | resolution: {integrity: sha512-rMTzawBPimBQkG9NKpNHvquIUTQPzrnPxPbCY1Xt+mFkW7pshvyIS5kYgcf74goxXOQk0CP3EoOC1zcEezKXhw==}
369 | cpu: [x64]
370 | os: [linux]
371 |
372 | '@rollup/rollup-win32-arm64-msvc@4.24.3':
373 | resolution: {integrity: sha512-2lg1CE305xNvnH3SyiKwPVsTVLCg4TmNCF1z7PSHX2uZY2VbUpdkgAllVoISD7JO7zu+YynpWNSKAtOrX3AiuA==}
374 | cpu: [arm64]
375 | os: [win32]
376 |
377 | '@rollup/rollup-win32-ia32-msvc@4.24.3':
378 | resolution: {integrity: sha512-9SjYp1sPyxJsPWuhOCX6F4jUMXGbVVd5obVpoVEi8ClZqo52ViZewA6eFz85y8ezuOA+uJMP5A5zo6Oz4S5rVQ==}
379 | cpu: [ia32]
380 | os: [win32]
381 |
382 | '@rollup/rollup-win32-x64-msvc@4.24.3':
383 | resolution: {integrity: sha512-HGZgRFFYrMrP3TJlq58nR1xy8zHKId25vhmm5S9jETEfDf6xybPxsavFTJaufe2zgOGYJBskGlj49CwtEuFhWQ==}
384 | cpu: [x64]
385 | os: [win32]
386 |
387 | '@types/estree@1.0.6':
388 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
389 |
390 | '@types/ffi-napi@4.0.10':
391 | resolution: {integrity: sha512-Q6TimLDxdg+Obp4W9tgzIhSA25THD6AmR8eM+ZB7bbU96xnkpd7PRXwG4az2rKpreuF90IPr/LlQtetmIfQL2g==}
392 |
393 | '@types/node@12.20.55':
394 | resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
395 |
396 | '@types/node@22.8.4':
397 | resolution: {integrity: sha512-SpNNxkftTJOPk0oN+y2bIqurEXHTA2AOZ3EJDDKeJ5VzkvvORSvmQXGQarcOzWV1ac7DCaPBEdMDxBsM+d8jWw==}
398 |
399 | '@types/ref-napi@3.0.12':
400 | resolution: {integrity: sha512-UZPKghRaLlWx2lPAphpdtYe62TbGBaPeqUM6gF1vI6FPRIu/Tff/WMAzpJRFU3jJIiD8HiXpVt2RjcFHtA6YRg==}
401 |
402 | '@types/ref-struct-di@1.1.12':
403 | resolution: {integrity: sha512-R2RNkGIROGoJTbXYTXrsXybnsQD4iAy26ih/G6HCeCB9luWFQKkr537XGz0uGJ1kH8y8RMkdbQmD/wBulrOPHw==}
404 |
405 | '@yuuang/ffi-rs-darwin-arm64@1.2.2':
406 | resolution: {integrity: sha512-nJRjpy+hn7sISkPpzpeLpFOARUwBQgNN7wcTiuOCZZEEz0SVsMGrMws4vRGWcCOAMKQFIjOmguiWQmoZeXoByw==}
407 | engines: {node: '>= 12'}
408 | cpu: [arm64]
409 | os: [darwin]
410 |
411 | '@yuuang/ffi-rs-darwin-x64@1.2.2':
412 | resolution: {integrity: sha512-RbYfaW5OqDEWzDH2w6yWHJhN+Q0dv4gkasEnQE5NJqiAmrU9Bo8UkBn3wWBqFmcbNJeDrUVGUHUpO6K+gFtzow==}
413 | engines: {node: '>= 12'}
414 | cpu: [x64]
415 | os: [darwin]
416 |
417 | '@yuuang/ffi-rs-linux-arm-gnueabihf@1.2.2':
418 | resolution: {integrity: sha512-4ihnhfA+hfMSSxbMW8UvTlmVTi6Sw1D2Le50yG88EVkavWIxaCIIunwmoF25Ar+TOP94tiO+yETfnwvsuAVTLw==}
419 | engines: {node: '>= 12'}
420 | cpu: [arm]
421 | os: [linux]
422 |
423 | '@yuuang/ffi-rs-linux-arm64-gnu@1.2.2':
424 | resolution: {integrity: sha512-TW0GC6RlmkCNECoxaWhR6IROeju9m6j29/r1WvsUSzt2Wse6nJOcxKMC1GasC+/5PHypwmFlDeJMEzyo8eew1g==}
425 | engines: {node: '>= 12'}
426 | cpu: [arm64]
427 | os: [linux]
428 |
429 | '@yuuang/ffi-rs-linux-arm64-musl@1.2.2':
430 | resolution: {integrity: sha512-e7/9+x/818PkVuCe14M60CH/764GNTjeIZn2zq97659BhCY+6/vaCr/yJ8oKUEQX/g3iXmCnvRaZKDhFJeewfw==}
431 | engines: {node: '>= 12'}
432 | cpu: [arm64]
433 | os: [linux]
434 |
435 | '@yuuang/ffi-rs-linux-x64-gnu@1.2.2':
436 | resolution: {integrity: sha512-5GYIxY0lyocYEfqOxaaqaIb6EEyGhTZhL4MkXu+0SXuN/dYlr7Ylq396eD8SXOVxeoQQ6BWXSLcBclBgHeSoJA==}
437 | engines: {node: '>= 12'}
438 | cpu: [x64]
439 | os: [linux]
440 |
441 | '@yuuang/ffi-rs-linux-x64-musl@1.2.2':
442 | resolution: {integrity: sha512-qbnpgyYmlZNvge33uKhJpxVJp6osQOM9ePgdSiANtgcG8cqA1Bnhlvcce+ra3Icgjl08WK9VCh++H741+Gy95A==}
443 | engines: {node: '>= 12'}
444 | cpu: [x64]
445 | os: [linux]
446 |
447 | '@yuuang/ffi-rs-win32-arm64-msvc@1.2.2':
448 | resolution: {integrity: sha512-wTkogCynmWj2U7dcOZf12dSOF2tB4EC9e9MJetCmEG5WUhHNc+UYHu3ZG9A06BeMM4Oz9sCZWvZv77XtH5WlUw==}
449 | engines: {node: '>= 12'}
450 | cpu: [arm64]
451 | os: [win32]
452 |
453 | '@yuuang/ffi-rs-win32-ia32-msvc@1.2.2':
454 | resolution: {integrity: sha512-YQ/7mzrVblKYcenijD1PwISXhJBymN06X7/akkTXBA4spHYV8Xotewb3W/SjOJgA7Aoh87+0u4auNGbSGriUyg==}
455 | engines: {node: '>= 12'}
456 | cpu: [x64, ia32]
457 | os: [win32]
458 |
459 | '@yuuang/ffi-rs-win32-x64-msvc@1.2.2':
460 | resolution: {integrity: sha512-9mnZBbWKwUhCbYVTUFkGbXCB9rnjwumGCmaPadMZTaSEgyz0ncHO9CeiV3sLm+TcN5aeSVHkw3/1Yc9MuwwnRA==}
461 | engines: {node: '>= 12'}
462 | cpu: [x64]
463 | os: [win32]
464 |
465 | ansi-colors@4.1.3:
466 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
467 | engines: {node: '>=6'}
468 |
469 | ansi-regex@5.0.1:
470 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
471 | engines: {node: '>=8'}
472 |
473 | ansi-regex@6.1.0:
474 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
475 | engines: {node: '>=12'}
476 |
477 | ansi-styles@4.3.0:
478 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
479 | engines: {node: '>=8'}
480 |
481 | ansi-styles@6.2.1:
482 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
483 | engines: {node: '>=12'}
484 |
485 | any-promise@1.3.0:
486 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
487 |
488 | argparse@1.0.10:
489 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
490 |
491 | array-union@2.1.0:
492 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
493 | engines: {node: '>=8'}
494 |
495 | balanced-match@1.0.2:
496 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
497 |
498 | better-path-resolve@1.0.0:
499 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==}
500 | engines: {node: '>=4'}
501 |
502 | brace-expansion@2.0.1:
503 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
504 |
505 | braces@3.0.3:
506 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
507 | engines: {node: '>=8'}
508 |
509 | bundle-require@5.0.0:
510 | resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==}
511 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
512 | peerDependencies:
513 | esbuild: '>=0.18'
514 |
515 | cac@6.7.14:
516 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
517 | engines: {node: '>=8'}
518 |
519 | chardet@0.7.0:
520 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
521 |
522 | chokidar@4.0.1:
523 | resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==}
524 | engines: {node: '>= 14.16.0'}
525 |
526 | ci-info@3.9.0:
527 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
528 | engines: {node: '>=8'}
529 |
530 | color-convert@2.0.1:
531 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
532 | engines: {node: '>=7.0.0'}
533 |
534 | color-name@1.1.4:
535 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
536 |
537 | commander@4.1.1:
538 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
539 | engines: {node: '>= 6'}
540 |
541 | consola@3.2.3:
542 | resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==}
543 | engines: {node: ^14.18.0 || >=16.10.0}
544 |
545 | cross-spawn@5.1.0:
546 | resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==}
547 |
548 | cross-spawn@7.0.3:
549 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
550 | engines: {node: '>= 8'}
551 |
552 | debug@3.2.7:
553 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
554 | peerDependencies:
555 | supports-color: '*'
556 | peerDependenciesMeta:
557 | supports-color:
558 | optional: true
559 |
560 | debug@4.3.7:
561 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
562 | engines: {node: '>=6.0'}
563 | peerDependencies:
564 | supports-color: '*'
565 | peerDependenciesMeta:
566 | supports-color:
567 | optional: true
568 |
569 | detect-indent@6.1.0:
570 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
571 | engines: {node: '>=8'}
572 |
573 | dir-glob@3.0.1:
574 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
575 | engines: {node: '>=8'}
576 |
577 | eastasianwidth@0.2.0:
578 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
579 |
580 | emoji-regex@8.0.0:
581 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
582 |
583 | emoji-regex@9.2.2:
584 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
585 |
586 | enquirer@2.4.1:
587 | resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
588 | engines: {node: '>=8.6'}
589 |
590 | esbuild@0.24.0:
591 | resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==}
592 | engines: {node: '>=18'}
593 | hasBin: true
594 |
595 | esprima@4.0.1:
596 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
597 | engines: {node: '>=4'}
598 | hasBin: true
599 |
600 | extendable-error@0.1.7:
601 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==}
602 |
603 | external-editor@3.1.0:
604 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
605 | engines: {node: '>=4'}
606 |
607 | fast-glob@3.3.2:
608 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
609 | engines: {node: '>=8.6.0'}
610 |
611 | fastq@1.17.1:
612 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
613 |
614 | fdir@6.4.2:
615 | resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==}
616 | peerDependencies:
617 | picomatch: ^3 || ^4
618 | peerDependenciesMeta:
619 | picomatch:
620 | optional: true
621 |
622 | ffi-rs@1.2.2:
623 | resolution: {integrity: sha512-dHcFHbyjDwIj+n5i7yjolHE4DveIU153MYqDpaYt7ObNVwND8W5D/Pac7NApuo1OpT5RLJmWLEdFRNA3p2kpLQ==}
624 |
625 | fill-range@7.1.1:
626 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
627 | engines: {node: '>=8'}
628 |
629 | find-up@4.1.0:
630 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
631 | engines: {node: '>=8'}
632 |
633 | foreground-child@3.3.0:
634 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
635 | engines: {node: '>=14'}
636 |
637 | fs-extra@7.0.1:
638 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
639 | engines: {node: '>=6 <7 || >=8'}
640 |
641 | fs-extra@8.1.0:
642 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
643 | engines: {node: '>=6 <7 || >=8'}
644 |
645 | fsevents@2.3.3:
646 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
647 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
648 | os: [darwin]
649 |
650 | get-symbol-from-current-process-h@1.0.2:
651 | resolution: {integrity: sha512-syloC6fsCt62ELLrr1VKBM1ggOpMdetX9hTrdW77UQdcApPHLmf7CI7OKcN1c9kYuNxKcDe4iJ4FY9sX3aw2xw==}
652 |
653 | get-uv-event-loop-napi-h@1.0.6:
654 | resolution: {integrity: sha512-t5c9VNR84nRoF+eLiz6wFrEp1SE2Acg0wS+Ysa2zF0eROes+LzOfuTaVHxGy8AbS8rq7FHEJzjnCZo1BupwdJg==}
655 |
656 | glob-parent@5.1.2:
657 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
658 | engines: {node: '>= 6'}
659 |
660 | glob@10.4.5:
661 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
662 | hasBin: true
663 |
664 | globby@11.1.0:
665 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
666 | engines: {node: '>=10'}
667 |
668 | graceful-fs@4.2.11:
669 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
670 |
671 | human-id@1.0.2:
672 | resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==}
673 |
674 | iconv-lite@0.4.24:
675 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
676 | engines: {node: '>=0.10.0'}
677 |
678 | ignore@5.3.2:
679 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
680 | engines: {node: '>= 4'}
681 |
682 | is-extglob@2.1.1:
683 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
684 | engines: {node: '>=0.10.0'}
685 |
686 | is-fullwidth-code-point@3.0.0:
687 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
688 | engines: {node: '>=8'}
689 |
690 | is-glob@4.0.3:
691 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
692 | engines: {node: '>=0.10.0'}
693 |
694 | is-number@7.0.0:
695 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
696 | engines: {node: '>=0.12.0'}
697 |
698 | is-subdir@1.2.0:
699 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==}
700 | engines: {node: '>=4'}
701 |
702 | is-windows@1.0.2:
703 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
704 | engines: {node: '>=0.10.0'}
705 |
706 | isexe@2.0.0:
707 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
708 |
709 | jackspeak@3.4.3:
710 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
711 |
712 | joycon@3.1.1:
713 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
714 | engines: {node: '>=10'}
715 |
716 | js-yaml@3.14.1:
717 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
718 | hasBin: true
719 |
720 | jsonfile@4.0.0:
721 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
722 |
723 | lilconfig@3.1.2:
724 | resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
725 | engines: {node: '>=14'}
726 |
727 | lines-and-columns@1.2.4:
728 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
729 |
730 | load-tsconfig@0.2.5:
731 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
732 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
733 |
734 | locate-path@5.0.0:
735 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
736 | engines: {node: '>=8'}
737 |
738 | lodash.sortby@4.7.0:
739 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
740 |
741 | lodash.startcase@4.4.0:
742 | resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
743 |
744 | lru-cache@10.4.3:
745 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
746 |
747 | lru-cache@4.1.5:
748 | resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
749 |
750 | merge2@1.4.1:
751 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
752 | engines: {node: '>= 8'}
753 |
754 | micromatch@4.0.8:
755 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
756 | engines: {node: '>=8.6'}
757 |
758 | minimatch@9.0.5:
759 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
760 | engines: {node: '>=16 || 14 >=14.17'}
761 |
762 | minipass@7.1.2:
763 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
764 | engines: {node: '>=16 || 14 >=14.17'}
765 |
766 | mri@1.2.0:
767 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
768 | engines: {node: '>=4'}
769 |
770 | ms@2.1.3:
771 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
772 |
773 | mz@2.7.0:
774 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
775 |
776 | node-addon-api@7.1.1:
777 | resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
778 |
779 | node-addon-api@8.3.0:
780 | resolution: {integrity: sha512-8VOpLHFrOQlAH+qA0ZzuGRlALRA6/LVh8QJldbrC4DY0hXoMP0l4Acq8TzFC018HztWiRqyCEj2aTWY2UvnJUg==}
781 | engines: {node: ^18 || ^20 || >= 21}
782 |
783 | node-gyp-build@4.8.4:
784 | resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
785 | hasBin: true
786 |
787 | object-assign@4.1.1:
788 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
789 | engines: {node: '>=0.10.0'}
790 |
791 | os-tmpdir@1.0.2:
792 | resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
793 | engines: {node: '>=0.10.0'}
794 |
795 | outdent@0.5.0:
796 | resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==}
797 |
798 | p-filter@2.1.0:
799 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==}
800 | engines: {node: '>=8'}
801 |
802 | p-limit@2.3.0:
803 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
804 | engines: {node: '>=6'}
805 |
806 | p-locate@4.1.0:
807 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
808 | engines: {node: '>=8'}
809 |
810 | p-map@2.1.0:
811 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
812 | engines: {node: '>=6'}
813 |
814 | p-try@2.2.0:
815 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
816 | engines: {node: '>=6'}
817 |
818 | package-json-from-dist@1.0.1:
819 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
820 |
821 | package-manager-detector@0.2.2:
822 | resolution: {integrity: sha512-VgXbyrSNsml4eHWIvxxG/nTL4wgybMTXCV2Un/+yEc3aDKKU6nQBZjbeP3Pl3qm9Qg92X/1ng4ffvCeD/zwHgg==}
823 |
824 | path-exists@4.0.0:
825 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
826 | engines: {node: '>=8'}
827 |
828 | path-key@3.1.1:
829 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
830 | engines: {node: '>=8'}
831 |
832 | path-scurry@1.11.1:
833 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
834 | engines: {node: '>=16 || 14 >=14.18'}
835 |
836 | path-type@4.0.0:
837 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
838 | engines: {node: '>=8'}
839 |
840 | picocolors@1.1.1:
841 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
842 |
843 | picomatch@2.3.1:
844 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
845 | engines: {node: '>=8.6'}
846 |
847 | picomatch@4.0.2:
848 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
849 | engines: {node: '>=12'}
850 |
851 | pify@4.0.1:
852 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
853 | engines: {node: '>=6'}
854 |
855 | pirates@4.0.6:
856 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
857 | engines: {node: '>= 6'}
858 |
859 | postcss-load-config@6.0.1:
860 | resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==}
861 | engines: {node: '>= 18'}
862 | peerDependencies:
863 | jiti: '>=1.21.0'
864 | postcss: '>=8.0.9'
865 | tsx: ^4.8.1
866 | yaml: ^2.4.2
867 | peerDependenciesMeta:
868 | jiti:
869 | optional: true
870 | postcss:
871 | optional: true
872 | tsx:
873 | optional: true
874 | yaml:
875 | optional: true
876 |
877 | prettier@2.8.8:
878 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
879 | engines: {node: '>=10.13.0'}
880 | hasBin: true
881 |
882 | pseudomap@1.0.2:
883 | resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
884 |
885 | punycode@2.3.1:
886 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
887 | engines: {node: '>=6'}
888 |
889 | queue-microtask@1.2.3:
890 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
891 |
892 | read-yaml-file@1.1.0:
893 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==}
894 | engines: {node: '>=6'}
895 |
896 | readdirp@4.0.2:
897 | resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==}
898 | engines: {node: '>= 14.16.0'}
899 |
900 | ref-struct-di@1.1.1:
901 | resolution: {integrity: sha512-2Xyn/0Qgz89VT+++WP0sTosdm9oeowLP23wRJYhG4BFdMUrLj3jhwHZNEytYNYgtPKLNTP3KJX4HEgBvM1/Y2g==}
902 |
903 | regenerator-runtime@0.14.1:
904 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
905 |
906 | resolve-from@5.0.0:
907 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
908 | engines: {node: '>=8'}
909 |
910 | reusify@1.0.4:
911 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
912 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
913 |
914 | rollup@4.24.3:
915 | resolution: {integrity: sha512-HBW896xR5HGmoksbi3JBDtmVzWiPAYqp7wip50hjQ67JbDz61nyoMPdqu1DvVW9asYb2M65Z20ZHsyJCMqMyDg==}
916 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
917 | hasBin: true
918 |
919 | run-parallel@1.2.0:
920 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
921 |
922 | safer-buffer@2.1.2:
923 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
924 |
925 | semver@7.6.3:
926 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
927 | engines: {node: '>=10'}
928 | hasBin: true
929 |
930 | shebang-command@1.2.0:
931 | resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
932 | engines: {node: '>=0.10.0'}
933 |
934 | shebang-command@2.0.0:
935 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
936 | engines: {node: '>=8'}
937 |
938 | shebang-regex@1.0.0:
939 | resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
940 | engines: {node: '>=0.10.0'}
941 |
942 | shebang-regex@3.0.0:
943 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
944 | engines: {node: '>=8'}
945 |
946 | signal-exit@3.0.7:
947 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
948 |
949 | signal-exit@4.1.0:
950 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
951 | engines: {node: '>=14'}
952 |
953 | slash@3.0.0:
954 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
955 | engines: {node: '>=8'}
956 |
957 | source-map@0.8.0-beta.0:
958 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
959 | engines: {node: '>= 8'}
960 |
961 | spawndamnit@2.0.0:
962 | resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==}
963 |
964 | sprintf-js@1.0.3:
965 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
966 |
967 | string-width@4.2.3:
968 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
969 | engines: {node: '>=8'}
970 |
971 | string-width@5.1.2:
972 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
973 | engines: {node: '>=12'}
974 |
975 | strip-ansi@6.0.1:
976 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
977 | engines: {node: '>=8'}
978 |
979 | strip-ansi@7.1.0:
980 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
981 | engines: {node: '>=12'}
982 |
983 | strip-bom@3.0.0:
984 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
985 | engines: {node: '>=4'}
986 |
987 | sucrase@3.35.0:
988 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
989 | engines: {node: '>=16 || 14 >=14.17'}
990 | hasBin: true
991 |
992 | term-size@2.2.1:
993 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
994 | engines: {node: '>=8'}
995 |
996 | thenify-all@1.6.0:
997 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
998 | engines: {node: '>=0.8'}
999 |
1000 | thenify@3.3.1:
1001 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
1002 |
1003 | tinyexec@0.3.1:
1004 | resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==}
1005 |
1006 | tinyglobby@0.2.10:
1007 | resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==}
1008 | engines: {node: '>=12.0.0'}
1009 |
1010 | tmp@0.0.33:
1011 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
1012 | engines: {node: '>=0.6.0'}
1013 |
1014 | to-regex-range@5.0.1:
1015 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1016 | engines: {node: '>=8.0'}
1017 |
1018 | tr46@1.0.1:
1019 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
1020 |
1021 | tree-kill@1.2.2:
1022 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
1023 | hasBin: true
1024 |
1025 | ts-interface-checker@0.1.13:
1026 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
1027 |
1028 | tsup@8.3.5:
1029 | resolution: {integrity: sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==}
1030 | engines: {node: '>=18'}
1031 | hasBin: true
1032 | peerDependencies:
1033 | '@microsoft/api-extractor': ^7.36.0
1034 | '@swc/core': ^1
1035 | postcss: ^8.4.12
1036 | typescript: '>=4.5.0'
1037 | peerDependenciesMeta:
1038 | '@microsoft/api-extractor':
1039 | optional: true
1040 | '@swc/core':
1041 | optional: true
1042 | postcss:
1043 | optional: true
1044 | typescript:
1045 | optional: true
1046 |
1047 | typescript@5.6.3:
1048 | resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==}
1049 | engines: {node: '>=14.17'}
1050 | hasBin: true
1051 |
1052 | undici-types@6.19.8:
1053 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
1054 |
1055 | universalify@0.1.2:
1056 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
1057 | engines: {node: '>= 4.0.0'}
1058 |
1059 | webidl-conversions@4.0.2:
1060 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
1061 |
1062 | whatwg-url@7.1.0:
1063 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
1064 |
1065 | which@1.3.1:
1066 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
1067 | hasBin: true
1068 |
1069 | which@2.0.2:
1070 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1071 | engines: {node: '>= 8'}
1072 | hasBin: true
1073 |
1074 | wrap-ansi@7.0.0:
1075 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
1076 | engines: {node: '>=10'}
1077 |
1078 | wrap-ansi@8.1.0:
1079 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
1080 | engines: {node: '>=12'}
1081 |
1082 | yallist@2.1.2:
1083 | resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
1084 |
1085 | snapshots:
1086 |
1087 | '@babel/runtime@7.26.0':
1088 | dependencies:
1089 | regenerator-runtime: 0.14.1
1090 |
1091 | '@changesets/apply-release-plan@7.0.5':
1092 | dependencies:
1093 | '@changesets/config': 3.0.3
1094 | '@changesets/get-version-range-type': 0.4.0
1095 | '@changesets/git': 3.0.1
1096 | '@changesets/should-skip-package': 0.1.1
1097 | '@changesets/types': 6.0.0
1098 | '@manypkg/get-packages': 1.1.3
1099 | detect-indent: 6.1.0
1100 | fs-extra: 7.0.1
1101 | lodash.startcase: 4.4.0
1102 | outdent: 0.5.0
1103 | prettier: 2.8.8
1104 | resolve-from: 5.0.0
1105 | semver: 7.6.3
1106 |
1107 | '@changesets/assemble-release-plan@6.0.4':
1108 | dependencies:
1109 | '@changesets/errors': 0.2.0
1110 | '@changesets/get-dependents-graph': 2.1.2
1111 | '@changesets/should-skip-package': 0.1.1
1112 | '@changesets/types': 6.0.0
1113 | '@manypkg/get-packages': 1.1.3
1114 | semver: 7.6.3
1115 |
1116 | '@changesets/changelog-git@0.2.0':
1117 | dependencies:
1118 | '@changesets/types': 6.0.0
1119 |
1120 | '@changesets/cli@2.27.9':
1121 | dependencies:
1122 | '@changesets/apply-release-plan': 7.0.5
1123 | '@changesets/assemble-release-plan': 6.0.4
1124 | '@changesets/changelog-git': 0.2.0
1125 | '@changesets/config': 3.0.3
1126 | '@changesets/errors': 0.2.0
1127 | '@changesets/get-dependents-graph': 2.1.2
1128 | '@changesets/get-release-plan': 4.0.4
1129 | '@changesets/git': 3.0.1
1130 | '@changesets/logger': 0.1.1
1131 | '@changesets/pre': 2.0.1
1132 | '@changesets/read': 0.6.1
1133 | '@changesets/should-skip-package': 0.1.1
1134 | '@changesets/types': 6.0.0
1135 | '@changesets/write': 0.3.2
1136 | '@manypkg/get-packages': 1.1.3
1137 | ansi-colors: 4.1.3
1138 | ci-info: 3.9.0
1139 | enquirer: 2.4.1
1140 | external-editor: 3.1.0
1141 | fs-extra: 7.0.1
1142 | mri: 1.2.0
1143 | p-limit: 2.3.0
1144 | package-manager-detector: 0.2.2
1145 | picocolors: 1.1.1
1146 | resolve-from: 5.0.0
1147 | semver: 7.6.3
1148 | spawndamnit: 2.0.0
1149 | term-size: 2.2.1
1150 |
1151 | '@changesets/config@3.0.3':
1152 | dependencies:
1153 | '@changesets/errors': 0.2.0
1154 | '@changesets/get-dependents-graph': 2.1.2
1155 | '@changesets/logger': 0.1.1
1156 | '@changesets/types': 6.0.0
1157 | '@manypkg/get-packages': 1.1.3
1158 | fs-extra: 7.0.1
1159 | micromatch: 4.0.8
1160 |
1161 | '@changesets/errors@0.2.0':
1162 | dependencies:
1163 | extendable-error: 0.1.7
1164 |
1165 | '@changesets/get-dependents-graph@2.1.2':
1166 | dependencies:
1167 | '@changesets/types': 6.0.0
1168 | '@manypkg/get-packages': 1.1.3
1169 | picocolors: 1.1.1
1170 | semver: 7.6.3
1171 |
1172 | '@changesets/get-release-plan@4.0.4':
1173 | dependencies:
1174 | '@changesets/assemble-release-plan': 6.0.4
1175 | '@changesets/config': 3.0.3
1176 | '@changesets/pre': 2.0.1
1177 | '@changesets/read': 0.6.1
1178 | '@changesets/types': 6.0.0
1179 | '@manypkg/get-packages': 1.1.3
1180 |
1181 | '@changesets/get-version-range-type@0.4.0': {}
1182 |
1183 | '@changesets/git@3.0.1':
1184 | dependencies:
1185 | '@changesets/errors': 0.2.0
1186 | '@manypkg/get-packages': 1.1.3
1187 | is-subdir: 1.2.0
1188 | micromatch: 4.0.8
1189 | spawndamnit: 2.0.0
1190 |
1191 | '@changesets/logger@0.1.1':
1192 | dependencies:
1193 | picocolors: 1.1.1
1194 |
1195 | '@changesets/parse@0.4.0':
1196 | dependencies:
1197 | '@changesets/types': 6.0.0
1198 | js-yaml: 3.14.1
1199 |
1200 | '@changesets/pre@2.0.1':
1201 | dependencies:
1202 | '@changesets/errors': 0.2.0
1203 | '@changesets/types': 6.0.0
1204 | '@manypkg/get-packages': 1.1.3
1205 | fs-extra: 7.0.1
1206 |
1207 | '@changesets/read@0.6.1':
1208 | dependencies:
1209 | '@changesets/git': 3.0.1
1210 | '@changesets/logger': 0.1.1
1211 | '@changesets/parse': 0.4.0
1212 | '@changesets/types': 6.0.0
1213 | fs-extra: 7.0.1
1214 | p-filter: 2.1.0
1215 | picocolors: 1.1.1
1216 |
1217 | '@changesets/should-skip-package@0.1.1':
1218 | dependencies:
1219 | '@changesets/types': 6.0.0
1220 | '@manypkg/get-packages': 1.1.3
1221 |
1222 | '@changesets/types@4.1.0': {}
1223 |
1224 | '@changesets/types@6.0.0': {}
1225 |
1226 | '@changesets/write@0.3.2':
1227 | dependencies:
1228 | '@changesets/types': 6.0.0
1229 | fs-extra: 7.0.1
1230 | human-id: 1.0.2
1231 | prettier: 2.8.8
1232 |
1233 | '@esbuild/aix-ppc64@0.24.0':
1234 | optional: true
1235 |
1236 | '@esbuild/android-arm64@0.24.0':
1237 | optional: true
1238 |
1239 | '@esbuild/android-arm@0.24.0':
1240 | optional: true
1241 |
1242 | '@esbuild/android-x64@0.24.0':
1243 | optional: true
1244 |
1245 | '@esbuild/darwin-arm64@0.24.0':
1246 | optional: true
1247 |
1248 | '@esbuild/darwin-x64@0.24.0':
1249 | optional: true
1250 |
1251 | '@esbuild/freebsd-arm64@0.24.0':
1252 | optional: true
1253 |
1254 | '@esbuild/freebsd-x64@0.24.0':
1255 | optional: true
1256 |
1257 | '@esbuild/linux-arm64@0.24.0':
1258 | optional: true
1259 |
1260 | '@esbuild/linux-arm@0.24.0':
1261 | optional: true
1262 |
1263 | '@esbuild/linux-ia32@0.24.0':
1264 | optional: true
1265 |
1266 | '@esbuild/linux-loong64@0.24.0':
1267 | optional: true
1268 |
1269 | '@esbuild/linux-mips64el@0.24.0':
1270 | optional: true
1271 |
1272 | '@esbuild/linux-ppc64@0.24.0':
1273 | optional: true
1274 |
1275 | '@esbuild/linux-riscv64@0.24.0':
1276 | optional: true
1277 |
1278 | '@esbuild/linux-s390x@0.24.0':
1279 | optional: true
1280 |
1281 | '@esbuild/linux-x64@0.24.0':
1282 | optional: true
1283 |
1284 | '@esbuild/netbsd-x64@0.24.0':
1285 | optional: true
1286 |
1287 | '@esbuild/openbsd-arm64@0.24.0':
1288 | optional: true
1289 |
1290 | '@esbuild/openbsd-x64@0.24.0':
1291 | optional: true
1292 |
1293 | '@esbuild/sunos-x64@0.24.0':
1294 | optional: true
1295 |
1296 | '@esbuild/win32-arm64@0.24.0':
1297 | optional: true
1298 |
1299 | '@esbuild/win32-ia32@0.24.0':
1300 | optional: true
1301 |
1302 | '@esbuild/win32-x64@0.24.0':
1303 | optional: true
1304 |
1305 | '@isaacs/cliui@8.0.2':
1306 | dependencies:
1307 | string-width: 5.1.2
1308 | string-width-cjs: string-width@4.2.3
1309 | strip-ansi: 7.1.0
1310 | strip-ansi-cjs: strip-ansi@6.0.1
1311 | wrap-ansi: 8.1.0
1312 | wrap-ansi-cjs: wrap-ansi@7.0.0
1313 |
1314 | '@jridgewell/gen-mapping@0.3.5':
1315 | dependencies:
1316 | '@jridgewell/set-array': 1.2.1
1317 | '@jridgewell/sourcemap-codec': 1.5.0
1318 | '@jridgewell/trace-mapping': 0.3.25
1319 |
1320 | '@jridgewell/resolve-uri@3.1.2': {}
1321 |
1322 | '@jridgewell/set-array@1.2.1': {}
1323 |
1324 | '@jridgewell/sourcemap-codec@1.5.0': {}
1325 |
1326 | '@jridgewell/trace-mapping@0.3.25':
1327 | dependencies:
1328 | '@jridgewell/resolve-uri': 3.1.2
1329 | '@jridgewell/sourcemap-codec': 1.5.0
1330 |
1331 | '@makeomatic/ffi-napi@4.2.0':
1332 | dependencies:
1333 | '@makeomatic/ref-napi': 3.0.6
1334 | debug: 4.3.7
1335 | get-uv-event-loop-napi-h: 1.0.6
1336 | node-addon-api: 8.3.0
1337 | node-gyp-build: 4.8.4
1338 | ref-struct-di: 1.1.1
1339 | transitivePeerDependencies:
1340 | - supports-color
1341 |
1342 | '@makeomatic/ref-napi@3.0.6':
1343 | dependencies:
1344 | debug: 4.3.7
1345 | get-symbol-from-current-process-h: 1.0.2
1346 | node-addon-api: 7.1.1
1347 | node-gyp-build: 4.8.4
1348 | transitivePeerDependencies:
1349 | - supports-color
1350 |
1351 | '@manypkg/find-root@1.1.0':
1352 | dependencies:
1353 | '@babel/runtime': 7.26.0
1354 | '@types/node': 12.20.55
1355 | find-up: 4.1.0
1356 | fs-extra: 8.1.0
1357 |
1358 | '@manypkg/get-packages@1.1.3':
1359 | dependencies:
1360 | '@babel/runtime': 7.26.0
1361 | '@changesets/types': 4.1.0
1362 | '@manypkg/find-root': 1.1.0
1363 | fs-extra: 8.1.0
1364 | globby: 11.1.0
1365 | read-yaml-file: 1.1.0
1366 |
1367 | '@nodelib/fs.scandir@2.1.5':
1368 | dependencies:
1369 | '@nodelib/fs.stat': 2.0.5
1370 | run-parallel: 1.2.0
1371 |
1372 | '@nodelib/fs.stat@2.0.5': {}
1373 |
1374 | '@nodelib/fs.walk@1.2.8':
1375 | dependencies:
1376 | '@nodelib/fs.scandir': 2.1.5
1377 | fastq: 1.17.1
1378 |
1379 | '@pkgjs/parseargs@0.11.0':
1380 | optional: true
1381 |
1382 | '@rollup/rollup-android-arm-eabi@4.24.3':
1383 | optional: true
1384 |
1385 | '@rollup/rollup-android-arm64@4.24.3':
1386 | optional: true
1387 |
1388 | '@rollup/rollup-darwin-arm64@4.24.3':
1389 | optional: true
1390 |
1391 | '@rollup/rollup-darwin-x64@4.24.3':
1392 | optional: true
1393 |
1394 | '@rollup/rollup-freebsd-arm64@4.24.3':
1395 | optional: true
1396 |
1397 | '@rollup/rollup-freebsd-x64@4.24.3':
1398 | optional: true
1399 |
1400 | '@rollup/rollup-linux-arm-gnueabihf@4.24.3':
1401 | optional: true
1402 |
1403 | '@rollup/rollup-linux-arm-musleabihf@4.24.3':
1404 | optional: true
1405 |
1406 | '@rollup/rollup-linux-arm64-gnu@4.24.3':
1407 | optional: true
1408 |
1409 | '@rollup/rollup-linux-arm64-musl@4.24.3':
1410 | optional: true
1411 |
1412 | '@rollup/rollup-linux-powerpc64le-gnu@4.24.3':
1413 | optional: true
1414 |
1415 | '@rollup/rollup-linux-riscv64-gnu@4.24.3':
1416 | optional: true
1417 |
1418 | '@rollup/rollup-linux-s390x-gnu@4.24.3':
1419 | optional: true
1420 |
1421 | '@rollup/rollup-linux-x64-gnu@4.24.3':
1422 | optional: true
1423 |
1424 | '@rollup/rollup-linux-x64-musl@4.24.3':
1425 | optional: true
1426 |
1427 | '@rollup/rollup-win32-arm64-msvc@4.24.3':
1428 | optional: true
1429 |
1430 | '@rollup/rollup-win32-ia32-msvc@4.24.3':
1431 | optional: true
1432 |
1433 | '@rollup/rollup-win32-x64-msvc@4.24.3':
1434 | optional: true
1435 |
1436 | '@types/estree@1.0.6': {}
1437 |
1438 | '@types/ffi-napi@4.0.10':
1439 | dependencies:
1440 | '@types/node': 22.8.4
1441 | '@types/ref-napi': 3.0.12
1442 | '@types/ref-struct-di': 1.1.12
1443 |
1444 | '@types/node@12.20.55': {}
1445 |
1446 | '@types/node@22.8.4':
1447 | dependencies:
1448 | undici-types: 6.19.8
1449 |
1450 | '@types/ref-napi@3.0.12':
1451 | dependencies:
1452 | '@types/node': 22.8.4
1453 |
1454 | '@types/ref-struct-di@1.1.12':
1455 | dependencies:
1456 | '@types/ref-napi': 3.0.12
1457 |
1458 | '@yuuang/ffi-rs-darwin-arm64@1.2.2':
1459 | optional: true
1460 |
1461 | '@yuuang/ffi-rs-darwin-x64@1.2.2':
1462 | optional: true
1463 |
1464 | '@yuuang/ffi-rs-linux-arm-gnueabihf@1.2.2':
1465 | optional: true
1466 |
1467 | '@yuuang/ffi-rs-linux-arm64-gnu@1.2.2':
1468 | optional: true
1469 |
1470 | '@yuuang/ffi-rs-linux-arm64-musl@1.2.2':
1471 | optional: true
1472 |
1473 | '@yuuang/ffi-rs-linux-x64-gnu@1.2.2':
1474 | optional: true
1475 |
1476 | '@yuuang/ffi-rs-linux-x64-musl@1.2.2':
1477 | optional: true
1478 |
1479 | '@yuuang/ffi-rs-win32-arm64-msvc@1.2.2':
1480 | optional: true
1481 |
1482 | '@yuuang/ffi-rs-win32-ia32-msvc@1.2.2':
1483 | optional: true
1484 |
1485 | '@yuuang/ffi-rs-win32-x64-msvc@1.2.2':
1486 | optional: true
1487 |
1488 | ansi-colors@4.1.3: {}
1489 |
1490 | ansi-regex@5.0.1: {}
1491 |
1492 | ansi-regex@6.1.0: {}
1493 |
1494 | ansi-styles@4.3.0:
1495 | dependencies:
1496 | color-convert: 2.0.1
1497 |
1498 | ansi-styles@6.2.1: {}
1499 |
1500 | any-promise@1.3.0: {}
1501 |
1502 | argparse@1.0.10:
1503 | dependencies:
1504 | sprintf-js: 1.0.3
1505 |
1506 | array-union@2.1.0: {}
1507 |
1508 | balanced-match@1.0.2: {}
1509 |
1510 | better-path-resolve@1.0.0:
1511 | dependencies:
1512 | is-windows: 1.0.2
1513 |
1514 | brace-expansion@2.0.1:
1515 | dependencies:
1516 | balanced-match: 1.0.2
1517 |
1518 | braces@3.0.3:
1519 | dependencies:
1520 | fill-range: 7.1.1
1521 |
1522 | bundle-require@5.0.0(esbuild@0.24.0):
1523 | dependencies:
1524 | esbuild: 0.24.0
1525 | load-tsconfig: 0.2.5
1526 |
1527 | cac@6.7.14: {}
1528 |
1529 | chardet@0.7.0: {}
1530 |
1531 | chokidar@4.0.1:
1532 | dependencies:
1533 | readdirp: 4.0.2
1534 |
1535 | ci-info@3.9.0: {}
1536 |
1537 | color-convert@2.0.1:
1538 | dependencies:
1539 | color-name: 1.1.4
1540 |
1541 | color-name@1.1.4: {}
1542 |
1543 | commander@4.1.1: {}
1544 |
1545 | consola@3.2.3: {}
1546 |
1547 | cross-spawn@5.1.0:
1548 | dependencies:
1549 | lru-cache: 4.1.5
1550 | shebang-command: 1.2.0
1551 | which: 1.3.1
1552 |
1553 | cross-spawn@7.0.3:
1554 | dependencies:
1555 | path-key: 3.1.1
1556 | shebang-command: 2.0.0
1557 | which: 2.0.2
1558 |
1559 | debug@3.2.7:
1560 | dependencies:
1561 | ms: 2.1.3
1562 |
1563 | debug@4.3.7:
1564 | dependencies:
1565 | ms: 2.1.3
1566 |
1567 | detect-indent@6.1.0: {}
1568 |
1569 | dir-glob@3.0.1:
1570 | dependencies:
1571 | path-type: 4.0.0
1572 |
1573 | eastasianwidth@0.2.0: {}
1574 |
1575 | emoji-regex@8.0.0: {}
1576 |
1577 | emoji-regex@9.2.2: {}
1578 |
1579 | enquirer@2.4.1:
1580 | dependencies:
1581 | ansi-colors: 4.1.3
1582 | strip-ansi: 6.0.1
1583 |
1584 | esbuild@0.24.0:
1585 | optionalDependencies:
1586 | '@esbuild/aix-ppc64': 0.24.0
1587 | '@esbuild/android-arm': 0.24.0
1588 | '@esbuild/android-arm64': 0.24.0
1589 | '@esbuild/android-x64': 0.24.0
1590 | '@esbuild/darwin-arm64': 0.24.0
1591 | '@esbuild/darwin-x64': 0.24.0
1592 | '@esbuild/freebsd-arm64': 0.24.0
1593 | '@esbuild/freebsd-x64': 0.24.0
1594 | '@esbuild/linux-arm': 0.24.0
1595 | '@esbuild/linux-arm64': 0.24.0
1596 | '@esbuild/linux-ia32': 0.24.0
1597 | '@esbuild/linux-loong64': 0.24.0
1598 | '@esbuild/linux-mips64el': 0.24.0
1599 | '@esbuild/linux-ppc64': 0.24.0
1600 | '@esbuild/linux-riscv64': 0.24.0
1601 | '@esbuild/linux-s390x': 0.24.0
1602 | '@esbuild/linux-x64': 0.24.0
1603 | '@esbuild/netbsd-x64': 0.24.0
1604 | '@esbuild/openbsd-arm64': 0.24.0
1605 | '@esbuild/openbsd-x64': 0.24.0
1606 | '@esbuild/sunos-x64': 0.24.0
1607 | '@esbuild/win32-arm64': 0.24.0
1608 | '@esbuild/win32-ia32': 0.24.0
1609 | '@esbuild/win32-x64': 0.24.0
1610 |
1611 | esprima@4.0.1: {}
1612 |
1613 | extendable-error@0.1.7: {}
1614 |
1615 | external-editor@3.1.0:
1616 | dependencies:
1617 | chardet: 0.7.0
1618 | iconv-lite: 0.4.24
1619 | tmp: 0.0.33
1620 |
1621 | fast-glob@3.3.2:
1622 | dependencies:
1623 | '@nodelib/fs.stat': 2.0.5
1624 | '@nodelib/fs.walk': 1.2.8
1625 | glob-parent: 5.1.2
1626 | merge2: 1.4.1
1627 | micromatch: 4.0.8
1628 |
1629 | fastq@1.17.1:
1630 | dependencies:
1631 | reusify: 1.0.4
1632 |
1633 | fdir@6.4.2(picomatch@4.0.2):
1634 | optionalDependencies:
1635 | picomatch: 4.0.2
1636 |
1637 | ffi-rs@1.2.2:
1638 | optionalDependencies:
1639 | '@yuuang/ffi-rs-darwin-arm64': 1.2.2
1640 | '@yuuang/ffi-rs-darwin-x64': 1.2.2
1641 | '@yuuang/ffi-rs-linux-arm-gnueabihf': 1.2.2
1642 | '@yuuang/ffi-rs-linux-arm64-gnu': 1.2.2
1643 | '@yuuang/ffi-rs-linux-arm64-musl': 1.2.2
1644 | '@yuuang/ffi-rs-linux-x64-gnu': 1.2.2
1645 | '@yuuang/ffi-rs-linux-x64-musl': 1.2.2
1646 | '@yuuang/ffi-rs-win32-arm64-msvc': 1.2.2
1647 | '@yuuang/ffi-rs-win32-ia32-msvc': 1.2.2
1648 | '@yuuang/ffi-rs-win32-x64-msvc': 1.2.2
1649 |
1650 | fill-range@7.1.1:
1651 | dependencies:
1652 | to-regex-range: 5.0.1
1653 |
1654 | find-up@4.1.0:
1655 | dependencies:
1656 | locate-path: 5.0.0
1657 | path-exists: 4.0.0
1658 |
1659 | foreground-child@3.3.0:
1660 | dependencies:
1661 | cross-spawn: 7.0.3
1662 | signal-exit: 4.1.0
1663 |
1664 | fs-extra@7.0.1:
1665 | dependencies:
1666 | graceful-fs: 4.2.11
1667 | jsonfile: 4.0.0
1668 | universalify: 0.1.2
1669 |
1670 | fs-extra@8.1.0:
1671 | dependencies:
1672 | graceful-fs: 4.2.11
1673 | jsonfile: 4.0.0
1674 | universalify: 0.1.2
1675 |
1676 | fsevents@2.3.3:
1677 | optional: true
1678 |
1679 | get-symbol-from-current-process-h@1.0.2: {}
1680 |
1681 | get-uv-event-loop-napi-h@1.0.6:
1682 | dependencies:
1683 | get-symbol-from-current-process-h: 1.0.2
1684 |
1685 | glob-parent@5.1.2:
1686 | dependencies:
1687 | is-glob: 4.0.3
1688 |
1689 | glob@10.4.5:
1690 | dependencies:
1691 | foreground-child: 3.3.0
1692 | jackspeak: 3.4.3
1693 | minimatch: 9.0.5
1694 | minipass: 7.1.2
1695 | package-json-from-dist: 1.0.1
1696 | path-scurry: 1.11.1
1697 |
1698 | globby@11.1.0:
1699 | dependencies:
1700 | array-union: 2.1.0
1701 | dir-glob: 3.0.1
1702 | fast-glob: 3.3.2
1703 | ignore: 5.3.2
1704 | merge2: 1.4.1
1705 | slash: 3.0.0
1706 |
1707 | graceful-fs@4.2.11: {}
1708 |
1709 | human-id@1.0.2: {}
1710 |
1711 | iconv-lite@0.4.24:
1712 | dependencies:
1713 | safer-buffer: 2.1.2
1714 |
1715 | ignore@5.3.2: {}
1716 |
1717 | is-extglob@2.1.1: {}
1718 |
1719 | is-fullwidth-code-point@3.0.0: {}
1720 |
1721 | is-glob@4.0.3:
1722 | dependencies:
1723 | is-extglob: 2.1.1
1724 |
1725 | is-number@7.0.0: {}
1726 |
1727 | is-subdir@1.2.0:
1728 | dependencies:
1729 | better-path-resolve: 1.0.0
1730 |
1731 | is-windows@1.0.2: {}
1732 |
1733 | isexe@2.0.0: {}
1734 |
1735 | jackspeak@3.4.3:
1736 | dependencies:
1737 | '@isaacs/cliui': 8.0.2
1738 | optionalDependencies:
1739 | '@pkgjs/parseargs': 0.11.0
1740 |
1741 | joycon@3.1.1: {}
1742 |
1743 | js-yaml@3.14.1:
1744 | dependencies:
1745 | argparse: 1.0.10
1746 | esprima: 4.0.1
1747 |
1748 | jsonfile@4.0.0:
1749 | optionalDependencies:
1750 | graceful-fs: 4.2.11
1751 |
1752 | lilconfig@3.1.2: {}
1753 |
1754 | lines-and-columns@1.2.4: {}
1755 |
1756 | load-tsconfig@0.2.5: {}
1757 |
1758 | locate-path@5.0.0:
1759 | dependencies:
1760 | p-locate: 4.1.0
1761 |
1762 | lodash.sortby@4.7.0: {}
1763 |
1764 | lodash.startcase@4.4.0: {}
1765 |
1766 | lru-cache@10.4.3: {}
1767 |
1768 | lru-cache@4.1.5:
1769 | dependencies:
1770 | pseudomap: 1.0.2
1771 | yallist: 2.1.2
1772 |
1773 | merge2@1.4.1: {}
1774 |
1775 | micromatch@4.0.8:
1776 | dependencies:
1777 | braces: 3.0.3
1778 | picomatch: 2.3.1
1779 |
1780 | minimatch@9.0.5:
1781 | dependencies:
1782 | brace-expansion: 2.0.1
1783 |
1784 | minipass@7.1.2: {}
1785 |
1786 | mri@1.2.0: {}
1787 |
1788 | ms@2.1.3: {}
1789 |
1790 | mz@2.7.0:
1791 | dependencies:
1792 | any-promise: 1.3.0
1793 | object-assign: 4.1.1
1794 | thenify-all: 1.6.0
1795 |
1796 | node-addon-api@7.1.1: {}
1797 |
1798 | node-addon-api@8.3.0: {}
1799 |
1800 | node-gyp-build@4.8.4: {}
1801 |
1802 | object-assign@4.1.1: {}
1803 |
1804 | os-tmpdir@1.0.2: {}
1805 |
1806 | outdent@0.5.0: {}
1807 |
1808 | p-filter@2.1.0:
1809 | dependencies:
1810 | p-map: 2.1.0
1811 |
1812 | p-limit@2.3.0:
1813 | dependencies:
1814 | p-try: 2.2.0
1815 |
1816 | p-locate@4.1.0:
1817 | dependencies:
1818 | p-limit: 2.3.0
1819 |
1820 | p-map@2.1.0: {}
1821 |
1822 | p-try@2.2.0: {}
1823 |
1824 | package-json-from-dist@1.0.1: {}
1825 |
1826 | package-manager-detector@0.2.2: {}
1827 |
1828 | path-exists@4.0.0: {}
1829 |
1830 | path-key@3.1.1: {}
1831 |
1832 | path-scurry@1.11.1:
1833 | dependencies:
1834 | lru-cache: 10.4.3
1835 | minipass: 7.1.2
1836 |
1837 | path-type@4.0.0: {}
1838 |
1839 | picocolors@1.1.1: {}
1840 |
1841 | picomatch@2.3.1: {}
1842 |
1843 | picomatch@4.0.2: {}
1844 |
1845 | pify@4.0.1: {}
1846 |
1847 | pirates@4.0.6: {}
1848 |
1849 | postcss-load-config@6.0.1:
1850 | dependencies:
1851 | lilconfig: 3.1.2
1852 |
1853 | prettier@2.8.8: {}
1854 |
1855 | pseudomap@1.0.2: {}
1856 |
1857 | punycode@2.3.1: {}
1858 |
1859 | queue-microtask@1.2.3: {}
1860 |
1861 | read-yaml-file@1.1.0:
1862 | dependencies:
1863 | graceful-fs: 4.2.11
1864 | js-yaml: 3.14.1
1865 | pify: 4.0.1
1866 | strip-bom: 3.0.0
1867 |
1868 | readdirp@4.0.2: {}
1869 |
1870 | ref-struct-di@1.1.1:
1871 | dependencies:
1872 | debug: 3.2.7
1873 | transitivePeerDependencies:
1874 | - supports-color
1875 |
1876 | regenerator-runtime@0.14.1: {}
1877 |
1878 | resolve-from@5.0.0: {}
1879 |
1880 | reusify@1.0.4: {}
1881 |
1882 | rollup@4.24.3:
1883 | dependencies:
1884 | '@types/estree': 1.0.6
1885 | optionalDependencies:
1886 | '@rollup/rollup-android-arm-eabi': 4.24.3
1887 | '@rollup/rollup-android-arm64': 4.24.3
1888 | '@rollup/rollup-darwin-arm64': 4.24.3
1889 | '@rollup/rollup-darwin-x64': 4.24.3
1890 | '@rollup/rollup-freebsd-arm64': 4.24.3
1891 | '@rollup/rollup-freebsd-x64': 4.24.3
1892 | '@rollup/rollup-linux-arm-gnueabihf': 4.24.3
1893 | '@rollup/rollup-linux-arm-musleabihf': 4.24.3
1894 | '@rollup/rollup-linux-arm64-gnu': 4.24.3
1895 | '@rollup/rollup-linux-arm64-musl': 4.24.3
1896 | '@rollup/rollup-linux-powerpc64le-gnu': 4.24.3
1897 | '@rollup/rollup-linux-riscv64-gnu': 4.24.3
1898 | '@rollup/rollup-linux-s390x-gnu': 4.24.3
1899 | '@rollup/rollup-linux-x64-gnu': 4.24.3
1900 | '@rollup/rollup-linux-x64-musl': 4.24.3
1901 | '@rollup/rollup-win32-arm64-msvc': 4.24.3
1902 | '@rollup/rollup-win32-ia32-msvc': 4.24.3
1903 | '@rollup/rollup-win32-x64-msvc': 4.24.3
1904 | fsevents: 2.3.3
1905 |
1906 | run-parallel@1.2.0:
1907 | dependencies:
1908 | queue-microtask: 1.2.3
1909 |
1910 | safer-buffer@2.1.2: {}
1911 |
1912 | semver@7.6.3: {}
1913 |
1914 | shebang-command@1.2.0:
1915 | dependencies:
1916 | shebang-regex: 1.0.0
1917 |
1918 | shebang-command@2.0.0:
1919 | dependencies:
1920 | shebang-regex: 3.0.0
1921 |
1922 | shebang-regex@1.0.0: {}
1923 |
1924 | shebang-regex@3.0.0: {}
1925 |
1926 | signal-exit@3.0.7: {}
1927 |
1928 | signal-exit@4.1.0: {}
1929 |
1930 | slash@3.0.0: {}
1931 |
1932 | source-map@0.8.0-beta.0:
1933 | dependencies:
1934 | whatwg-url: 7.1.0
1935 |
1936 | spawndamnit@2.0.0:
1937 | dependencies:
1938 | cross-spawn: 5.1.0
1939 | signal-exit: 3.0.7
1940 |
1941 | sprintf-js@1.0.3: {}
1942 |
1943 | string-width@4.2.3:
1944 | dependencies:
1945 | emoji-regex: 8.0.0
1946 | is-fullwidth-code-point: 3.0.0
1947 | strip-ansi: 6.0.1
1948 |
1949 | string-width@5.1.2:
1950 | dependencies:
1951 | eastasianwidth: 0.2.0
1952 | emoji-regex: 9.2.2
1953 | strip-ansi: 7.1.0
1954 |
1955 | strip-ansi@6.0.1:
1956 | dependencies:
1957 | ansi-regex: 5.0.1
1958 |
1959 | strip-ansi@7.1.0:
1960 | dependencies:
1961 | ansi-regex: 6.1.0
1962 |
1963 | strip-bom@3.0.0: {}
1964 |
1965 | sucrase@3.35.0:
1966 | dependencies:
1967 | '@jridgewell/gen-mapping': 0.3.5
1968 | commander: 4.1.1
1969 | glob: 10.4.5
1970 | lines-and-columns: 1.2.4
1971 | mz: 2.7.0
1972 | pirates: 4.0.6
1973 | ts-interface-checker: 0.1.13
1974 |
1975 | term-size@2.2.1: {}
1976 |
1977 | thenify-all@1.6.0:
1978 | dependencies:
1979 | thenify: 3.3.1
1980 |
1981 | thenify@3.3.1:
1982 | dependencies:
1983 | any-promise: 1.3.0
1984 |
1985 | tinyexec@0.3.1: {}
1986 |
1987 | tinyglobby@0.2.10:
1988 | dependencies:
1989 | fdir: 6.4.2(picomatch@4.0.2)
1990 | picomatch: 4.0.2
1991 |
1992 | tmp@0.0.33:
1993 | dependencies:
1994 | os-tmpdir: 1.0.2
1995 |
1996 | to-regex-range@5.0.1:
1997 | dependencies:
1998 | is-number: 7.0.0
1999 |
2000 | tr46@1.0.1:
2001 | dependencies:
2002 | punycode: 2.3.1
2003 |
2004 | tree-kill@1.2.2: {}
2005 |
2006 | ts-interface-checker@0.1.13: {}
2007 |
2008 | tsup@8.3.5(typescript@5.6.3):
2009 | dependencies:
2010 | bundle-require: 5.0.0(esbuild@0.24.0)
2011 | cac: 6.7.14
2012 | chokidar: 4.0.1
2013 | consola: 3.2.3
2014 | debug: 4.3.7
2015 | esbuild: 0.24.0
2016 | joycon: 3.1.1
2017 | picocolors: 1.1.1
2018 | postcss-load-config: 6.0.1
2019 | resolve-from: 5.0.0
2020 | rollup: 4.24.3
2021 | source-map: 0.8.0-beta.0
2022 | sucrase: 3.35.0
2023 | tinyexec: 0.3.1
2024 | tinyglobby: 0.2.10
2025 | tree-kill: 1.2.2
2026 | optionalDependencies:
2027 | typescript: 5.6.3
2028 | transitivePeerDependencies:
2029 | - jiti
2030 | - supports-color
2031 | - tsx
2032 | - yaml
2033 |
2034 | typescript@5.6.3: {}
2035 |
2036 | undici-types@6.19.8: {}
2037 |
2038 | universalify@0.1.2: {}
2039 |
2040 | webidl-conversions@4.0.2: {}
2041 |
2042 | whatwg-url@7.1.0:
2043 | dependencies:
2044 | lodash.sortby: 4.7.0
2045 | tr46: 1.0.1
2046 | webidl-conversions: 4.0.2
2047 |
2048 | which@1.3.1:
2049 | dependencies:
2050 | isexe: 2.0.0
2051 |
2052 | which@2.0.2:
2053 | dependencies:
2054 | isexe: 2.0.0
2055 |
2056 | wrap-ansi@7.0.0:
2057 | dependencies:
2058 | ansi-styles: 4.3.0
2059 | string-width: 4.2.3
2060 | strip-ansi: 6.0.1
2061 |
2062 | wrap-ansi@8.1.0:
2063 | dependencies:
2064 | ansi-styles: 6.2.1
2065 | string-width: 5.1.2
2066 | strip-ansi: 7.1.0
2067 |
2068 | yallist@2.1.2: {}
2069 |
--------------------------------------------------------------------------------
/src/binary/huh.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sklyt/charsm/c82d368ccac38a6d6f2e7c78cede170a4c205b84/src/binary/huh.dll
--------------------------------------------------------------------------------
/src/binary/huh.h:
--------------------------------------------------------------------------------
1 | /* Code generated by cmd/cgo; DO NOT EDIT. */
2 |
3 | /* package github.com/sk/huh */
4 |
5 |
6 | #line 1 "cgo-builtin-export-prolog"
7 |
8 | #include
9 |
10 | #ifndef GO_CGO_EXPORT_PROLOGUE_H
11 | #define GO_CGO_EXPORT_PROLOGUE_H
12 |
13 | #ifndef GO_CGO_GOSTRING_TYPEDEF
14 | typedef struct { const char *p; ptrdiff_t n; } _GoString_;
15 | #endif
16 |
17 | #endif
18 |
19 | /* Start of preamble from import "C" comments. */
20 |
21 |
22 | #line 3 "main.go"
23 |
24 | #include
25 |
26 | #line 1 "cgo-generated-wrapper"
27 |
28 |
29 | /* End of preamble from import "C" comments. */
30 |
31 |
32 | /* Start of boilerplate cgo prologue. */
33 | #line 1 "cgo-gcc-export-header-prolog"
34 |
35 | #ifndef GO_CGO_PROLOGUE_H
36 | #define GO_CGO_PROLOGUE_H
37 |
38 | typedef signed char GoInt8;
39 | typedef unsigned char GoUint8;
40 | typedef short GoInt16;
41 | typedef unsigned short GoUint16;
42 | typedef int GoInt32;
43 | typedef unsigned int GoUint32;
44 | typedef long long GoInt64;
45 | typedef unsigned long long GoUint64;
46 | typedef GoInt64 GoInt;
47 | typedef GoUint64 GoUint;
48 | typedef size_t GoUintptr;
49 | typedef float GoFloat32;
50 | typedef double GoFloat64;
51 | #ifdef _MSC_VER
52 | #include
53 | typedef _Fcomplex GoComplex64;
54 | typedef _Dcomplex GoComplex128;
55 | #else
56 | typedef float _Complex GoComplex64;
57 | typedef double _Complex GoComplex128;
58 | #endif
59 |
60 | /*
61 | static assertion to make sure the file is being used on architecture
62 | at least with matching size of GoInt.
63 | */
64 | typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1];
65 |
66 | #ifndef GO_CGO_GOSTRING_TYPEDEF
67 | typedef _GoString_ GoString;
68 | #endif
69 | typedef void *GoMap;
70 | typedef void *GoChan;
71 | typedef struct { void *t; void *v; } GoInterface;
72 | typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;
73 |
74 | #endif
75 |
76 | /* End of boilerplate cgo prologue. */
77 |
78 | #ifdef __cplusplus
79 | extern "C" {
80 | #endif
81 |
82 | extern __declspec(dllexport) void SetTheme(char* t);
83 | extern __declspec(dllexport) char* CreateInput(int t);
84 | extern __declspec(dllexport) int SetInputOptions(char* id, char* title, char* desc, char* placeholder, char* validators);
85 | extern __declspec(dllexport) char* RunInput(char* id);
86 | extern __declspec(dllexport) char* Confirm(char* title, char* affirmative, char* negative);
87 | extern __declspec(dllexport) char* Select(char* title, char* opts);
88 | extern __declspec(dllexport) int MultiSelect(char* id, char* title, char* opts);
89 | extern __declspec(dllexport) char* CreateGroup(char* ids);
90 | extern __declspec(dllexport) void CreateForm(char* groudids);
91 | extern __declspec(dllexport) char* GetValue(char* id);
92 | extern __declspec(dllexport) char* Run(char* id);
93 | extern __declspec(dllexport) void Spinner(int seconds, char* title);
94 | extern __declspec(dllexport) char* Note(char* title, char* desc, char* label, int next);
95 | extern __declspec(dllexport) int FreeStruct(char* id);
96 |
97 | #ifdef __cplusplus
98 | }
99 | #endif
100 |
--------------------------------------------------------------------------------
/src/binary/huh.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sklyt/charsm/c82d368ccac38a6d6f2e7c78cede170a4c205b84/src/binary/huh.so
--------------------------------------------------------------------------------
/src/fields.ts:
--------------------------------------------------------------------------------
1 | // huh.NewInput().
2 | // Value(&order.Name).
3 | // Title("What's your name?").
4 | // Placeholder("Margaret Thatcher").
5 | // Validate(func(s string) error {
6 | // if s == "Frank" {
7 | // return errors.New("no franks, sorry")
8 | // }
9 | // return nil
10 | // }).
11 | // Description("For when your order is ready."),
12 | //TODO: validators
13 |
14 | import huh, { CreateInput, FreeStruct, SetInputOptions } from "./linker";
15 | // "required" | "email" | "no_numbers" | "alpha_only" | "no_special_chars"
16 | type inputprops = {
17 | Description: string
18 | Title: string
19 | Placeholder: string
20 | validators: string
21 |
22 | }
23 |
24 | type ReturnProps = {
25 | readonly value: string
26 | id: string
27 | run: () => string
28 | }
29 | export class NewInput {
30 | id: string;
31 | props: inputprops;
32 | type_: number
33 | /**
34 | *
35 | * @param p
36 | * @param type_ 0 for normal inline input 1 for multiline
37 | */
38 | constructor(p: inputprops, type_: number) {
39 | this.id = ""
40 | this.props = p
41 | this.type_ = type_
42 |
43 | }
44 | /**
45 | * load the struct into c memory
46 | */
47 | load() {
48 | let e = CreateInput(this.type_)
49 | // console.log("create", e)
50 | if (!e) {
51 | throw new Error("Error creating struct in Go")
52 | }
53 | this.id = e
54 | return SetInputOptions(this.id, this.props)
55 | }
56 |
57 | run() {
58 | return huh.RunInput(this.id)
59 | }
60 | get value(){
61 | return huh.GetValue(this.id)
62 | }
63 | }
64 |
65 | export const Confirm = (title: string, affirmative: string, negative: string): ReturnProps => {
66 |
67 | const i = huh.Confirm(title, affirmative, negative)
68 | return {
69 | id: i,
70 | run: function () {
71 | return huh.Run(this.id)
72 | },
73 | get value() {
74 | return huh.GetValue(this.id)
75 | }
76 | }
77 | }
78 | export const SetTheme = huh.SetTheme
79 |
80 | export const Select = (title: string, options: string[]): ReturnProps => {
81 |
82 |
83 | const i = huh.Select(title, options.join(","))
84 | return {
85 | id: i,
86 | run: function () {
87 | return huh.Run(this.id)
88 | },
89 | get value() {
90 | return huh.GetValue(this.id)
91 | }
92 |
93 | }
94 |
95 | }
96 |
97 |
98 | export const multiSelect = (title: string, options: string[], limit: number = 0): { id: string, run: () => string[], readonly value: string } => {
99 | // will use limit soon
100 | const i = `id_${Date.now()}`
101 | huh.MultiSelect(i, title, options.join(","))
102 | return {
103 | id: i,
104 | run: function () {
105 | return huh.Run(this.id).split(",")
106 | },
107 | get value() {
108 | return huh.GetValue(this.id)
109 | }
110 |
111 | }
112 | // const res = huh.RunMultiSelect(title, options.join(","))
113 | // return res.split(",")
114 | }
115 |
116 | export const Note = (title: string, desc: string, nextlabel: string, next: boolean): { id: string, run: () => string, readonly value: string } => {
117 |
118 | const i = huh.Note(title, desc, nextlabel, next ? 1 : 0)
119 | return {
120 | id: i,
121 | run: function(){
122 | return huh.Run(this.id)
123 | },
124 | get value(){
125 | return ""
126 |
127 | }
128 | }
129 | }
130 |
131 |
132 | export const CreateGroup = huh.CreateGroup
133 | export const CreateForm = huh.CreateForm
134 | export const GetValue = huh.GetValue
135 | // export const Note = huh.Note
136 | export const Spinner = huh.Spinner
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./lipgloss"
2 | export * as huh from "./fields"
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/linker.ts:
--------------------------------------------------------------------------------
1 | //@ts-ignore
2 | import {Library} from "@makeomatic/ffi-napi"
3 | //@ts-ignore
4 | import * as ref from "@makeomatic/ref-napi"
5 | import { platform } from "os"
6 | import path from 'path';
7 |
8 | import { fileURLToPath } from 'url';
9 |
10 | let dir:string;
11 |
12 |
13 | if(__dirname){
14 | dir = __dirname
15 | }else{
16 | dir = path.dirname(fileURLToPath(import.meta.url))
17 | }
18 |
19 | // console.dir(Library)
20 | // console.log(dir)
21 | //@ts-ignore
22 | // import * as refStruct from "ref-struct-di"
23 | // const StructType = refStruct(ref)
24 | // var time_t = ref.types.long
25 | // var suseconds_t = ref.types.long
26 |
27 | // // define the "timeval" struct type
28 | // var timeval = StructType({
29 | // tv_sec: time_t,
30 | // tv_usec: suseconds_t
31 | // })
32 |
33 | // var tv = new timeval({tv_sec: 0, tv_usec: 0})
34 | // console.log(tv.ref())
35 |
36 | // var MyStruct = StructType()
37 | // MyStruct.defineProperty('width', ref.types.int)
38 | // MyStruct.defineProperty('height', ref.types.int)
39 |
40 | // var i = new MyStruct({ width: 5, height: 10 })
41 | // console.log(i, i.ref())
42 |
43 | // console.dir(ref.types)
44 | // Function.toString
45 | // console.dir(ref.coerceType.toString())
46 | // console.dir( ref.writeObject.toString())
47 | // console.dir( ref.alloc.toString())
48 | // console.dir(ref.types)
49 | // don't care about object shape, any:
50 | var myobj = ref.types.void // we don't know what the layout of "myobj" looks like
51 | var myobjPtr = ref.refType(myobj);
52 |
53 | // const Inputstruct = {
54 | // id: ref.types.CString,
55 | // placeholder: ref.types.CString,
56 | // description: ref.types.int,
57 | // };
58 |
59 | // Create the structure type using ref-struct
60 | const Input = ref.types.void
61 | const InputPtr = ref.refType(Input);
62 |
63 | // switch C.GoString(t) {
64 | // case "dracula":
65 | // theme = huh.ThemeDracula()
66 | // case "Charm":
67 | // theme = huh.ThemeCharm()
68 | // case "Catppuccin":
69 | // theme = huh.ThemeCatppuccin()
70 | // case "Base16":
71 | // theme = huh.ThemeBase16()
72 | // default:
73 | // theme = huh.ThemeBase()
74 | // }
75 |
76 | type HuhT ={
77 | CreateInput(t :number):string
78 | SetInputOptions(ptr:string, title: string, desc: string, placeholder: string, validators: string):number
79 | FreeStruct(ptr:string): number
80 | RunInput(ptr:string): string
81 | Confirm(title:string, affirmative: string, negative: string): string
82 | Select(title:string, opts:string): string
83 | MultiSelect(ptr:string, title:string, opts:string): string
84 | SetTheme(theme:"dracula" | "Charm" | "Catppuccin" | "Base16" | "default"): void
85 | Run(prt:string):string
86 | CreateGroup(ptrs:string):string
87 | CreateForm(ptrs:string):void
88 | GetValue(ptr:string):string
89 | Spinner(seconds: number, title: string): void
90 | Note(title: string, description: string, nextlabel?:string, next?:number):string
91 |
92 | }
93 |
94 | const p = platform()
95 |
96 | let dynamicLib;
97 | if (p === 'win32') {
98 | dynamicLib = './binary/huh.dll';
99 | } else if (p === 'linux') {
100 | dynamicLib = './binary/huh.so';
101 | } else {
102 | throw new Error(`Unsupported platform: ${p}. This application only supports Windows and Linux.`);
103 | }
104 | const dllfile = path.resolve(dir, dynamicLib);
105 |
106 |
107 | const huh:HuhT = Library(dllfile, {
108 | "CreateInput": ["string", ["int"]],
109 | "SetInputOptions": ["int", ["string", "string", "string", "string", "string"]],
110 | "FreeStruct": ['int', ["string"]],
111 | "RunInput": ["string", ["string"]],
112 | "Confirm": ["string", ["string", "string", "string"]],
113 | "Select": ["string", ["string", "string"]],
114 | "MultiSelect": ["int", ["string", "string", "string"]],
115 | "SetTheme": ["void", ["string"]],
116 | "Run": ["string", ["string"]],
117 | "CreateGroup": ["string", ["string"]],
118 | "CreateForm": ["void", ["string"]],
119 | "GetValue": ["string", ["string"]],
120 | "Spinner": ["void", ["int", "string"]],
121 | "Note": ["string", ["string", "string", "string", "int"]],
122 | })
123 |
124 | type inputprops = {
125 | Title: string
126 | Placeholder: string
127 | Description: string
128 | validators: string
129 | }
130 |
131 | export function CreateInput(t: number){
132 | // const i = ref.refType(opts);
133 | // console.log(i)
134 | // var MyStruct = StructType()
135 | // MyStruct.defineProperty('Description', ref.types.CString)
136 | // MyStruct.defineProperty('Title', ref.types.CString)
137 | // MyStruct.defineProperty('Placeholder', ref.types.CString)
138 |
139 |
140 | // var i = new MyStruct(opts)
141 | // console.log(i)
142 | // console.log("\n")
143 | // console.log(i.ref())
144 | // var db = ref.alloc("Object")
145 | // ref.writeObject(db, 0, opts)
146 | // console.log(db)
147 | const Ptr = huh.CreateInput(t);
148 | // console.log(Ptr)
149 | return Ptr
150 | }
151 |
152 | export function SetInputOptions(ptr:any, opts:inputprops){
153 | return huh.SetInputOptions(ptr, opts.Title, opts.Description, opts.Placeholder, opts.validators)
154 | }
155 |
156 |
157 | export const FreeStruct = (prt:any) => {
158 | // console.log("bro wtf")
159 | const m = huh.FreeStruct(prt)
160 | // console.log(m, "m")
161 | return m
162 | }
163 |
164 | export default huh
--------------------------------------------------------------------------------
/src/lip.wasm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sklyt/charsm/c82d368ccac38a6d6f2e7c78cede170a4c205b84/src/lip.wasm
--------------------------------------------------------------------------------
/src/lipgloss.ts:
--------------------------------------------------------------------------------
1 |
2 | import fs from "fs"
3 |
4 | interface ImportObject {
5 | _gotest: {
6 | add: () => void;
7 | };
8 | gojs: {
9 | 'runtime.wasmExit': () => void;
10 | 'runtime.wasmWrite': () => void;
11 | 'runtime.resetMemoryDataView': () => void;
12 | 'runtime.nanotime1': () => number;
13 | 'runtime.walltime': () => number;
14 | 'runtime.scheduleTimeoutEvent': () => void;
15 | 'runtime.clearTimeoutEvent': () => void;
16 | 'runtime.getRandomData': () => Uint8Array;
17 | 'syscall/js.finalizeRef': () => void;
18 | 'syscall/js.stringVal': (val: any) => void;
19 | 'syscall/js.valueGet': (val: any) => any;
20 | 'syscall/js.valueSet': (key: any, value: any) => void;
21 | 'syscall/js.valueDelete': (key: any) => void;
22 | 'syscall/js.valueIndex': (index: number) => any;
23 | 'syscall/js.valueSetIndex': (index: number, value: any) => void;
24 | 'syscall/js.valueCall': (val: any, args: any[]) => any;
25 | 'syscall/js.valueInvoke': (val: any, args: any[]) => any;
26 | 'syscall/js.valueNew': (args: any[]) => any;
27 | 'syscall/js.valueLength': (val: any) => number;
28 | 'syscall/js.valuePrepareString': (val: any) => void;
29 | 'syscall/js.valueLoadString': (val: any) => string;
30 | 'syscall/js.valueInstanceOf': (val: any, constructor: any) => boolean;
31 | 'syscall/js.copyBytesToGo': (goSlice: any, jsBytes: Uint8Array) => void;
32 | 'syscall/js.copyBytesToJS': (goSlice: any, jsBytes: Uint8Array) => void;
33 | debug: () => void;
34 | };
35 | }
36 |
37 | interface gowasm {
38 | argv: string[];
39 | env: Record;
40 | run: (instance: WebAssembly.Instance) => void;
41 | exit: () => void;
42 | _resolveExitPromise: () => Promise;
43 | _exitPromise: Promise;
44 | _pendingEvent: any;
45 | _scheduledTimeouts: Map;
46 | _nextCallbackTimeoutID: number;
47 | importObject: ImportObject;
48 | }
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | // export async function initLip(){
58 | // // load the wasm
59 | // const wasmExec = await import('./wasm_exec.js');
60 |
61 | // wasmExec.default();
62 |
63 | // const go: gowasm = new (globalThis as any).Go()
64 | // const wasmfile = fs.readFileSync("./src/lip.wasm")
65 | // console.log(wasmfile)
66 | // const res = await WebAssembly.instantiate(wasmfile, go.importObject as unknown as WebAssembly.Imports)
67 |
68 | // if(res){
69 | // go.run(res.instance)
70 | // const a = 'newStyle' in globalThis
71 | // if(!a){
72 | // throw new Error("Failed to init wasm")
73 | // }
74 |
75 |
76 | // return true
77 | // }
78 |
79 |
80 | // return false
81 | // }
82 |
83 |
84 |
85 | import path from 'path';
86 |
87 | import { fileURLToPath } from 'url';
88 | // const __dirname:string = typeof __dirname !== 'undefined'
89 | // ? __dirname
90 | // : path.dirname(fileURLToPath(import.meta.url));
91 |
92 |
93 | let dir:string;
94 |
95 |
96 | if(__dirname){
97 | dir = __dirname
98 | }else{
99 | dir = path.dirname(fileURLToPath(import.meta.url))
100 | }
101 |
102 | export async function initLip() {
103 | // Import wasm_exec.js and initialize Go environment
104 | const wasmExec = await import('./wasm_exec');
105 | wasmExec.default();
106 |
107 |
108 |
109 | if (!(globalThis as any).Go) {
110 | throw new Error("Failed to initialize Go from wasm_exec.js");
111 | }
112 | // Create a new Go instance
113 | const go =new (globalThis as any).Go();
114 |
115 | // Ensure path to the wasm file is correct
116 | const wasmPath = path.resolve(dir, './lip.wasm');
117 | const wasmfile = fs.readFileSync(wasmPath);
118 |
119 | // Instantiate the WebAssembly module
120 | const res = await WebAssembly.instantiate(wasmfile, go.importObject);
121 |
122 | if (res) {
123 | // Run the Go WASM instance
124 | go.run(res.instance);
125 |
126 | // Check if the WASM module initialized correctly
127 | if (!('createStyle' in globalThis)) {
128 | throw new Error("Failed to init wasm");
129 | }
130 |
131 | // console.log("WASM loaded successfully");
132 | return true;
133 | }
134 |
135 | return false;
136 | }
137 |
138 |
139 |
140 |
141 | type adaptiveColor = {Light: string, Dark: string}
142 | type completeAdaptiveColor= { Light:{TrueColor: string, ANSI256: string, ANSI: string}, Dark: {TrueColor: string, ANSI256: string, ANSI: string}}
143 | type completeColor = {TrueColor: string, ANSI256: string, ANSI: string}
144 |
145 | interface style {
146 | id: string
147 | canvasColor?: {color?: string | {adaptiveColor: adaptiveColor} | {completeAdaptiveColor:completeAdaptiveColor} | {completeColor: completeColor}, background?: string| {adaptiveColor: adaptiveColor} | {completeAdaptiveColor:completeAdaptiveColor} | {completeColor: completeColor}}
148 | border?: {type: borderType, foreground?: string, background?: string, sides:Array}
149 | padding?: Array
150 | margin: Array
151 | bold?: boolean
152 | alignV?: lipglosspos
153 | alignH?: lipglosspos
154 | width?: number
155 | height?: number,
156 | maxWidth?: number,
157 | maxHeight?: number
158 |
159 | }
160 |
161 |
162 | interface tableData {
163 | headers: Array
164 | rows: Array>
165 |
166 | }
167 |
168 | interface table{
169 | data: tableData,
170 | table: {border: borderType, color: string, width?:number, height?:number},
171 | header?: {color: string, bold: boolean},
172 | rows?: {even: {color: string}, odd?: {color: string}}
173 | }
174 |
175 | // lip.createStyle({
176 | // id: "primaryButton",
177 | // canvasColor: {color: "#007BFF", isBackground: true},
178 | // border: { type: "rounded", foreground: "#0056b3", background: "", sides: [true, false] },
179 | // padding: [8, 12, 8, 12],
180 | // margin: [0, 0, 10, 0],
181 | // bold: true,
182 | // align: "center",
183 | // width: 100,
184 | // height: 100
185 | // });
186 |
187 |
188 | // render()
189 | type lipglosspos = "bottom" | "top" | "left" | "right" | "center"
190 | type borderType = "rounded" | "block" | "thick" | "double"
191 | type direction = "vertical" | "horizontal"
192 |
193 | type markdownStyles = "dark" | "light" | "dracula" | "notty" | "tokyo-night" | "ascii"
194 |
195 | type listStyle = "alphabet" | 'arabic' | 'asterisk' | 'custom'
196 |
197 | interface simpleList {
198 | data: Array
199 | selected?: Array
200 | listStyle: listStyle,
201 | customEnum?: string
202 | styles: {numeratorColor: string, itemColor: string, marginRight: number}
203 | }
204 | export class Lipgloss {
205 |
206 |
207 | createStyle(style: style){
208 | if ("createStyle" in globalThis){
209 | (globalThis as any).createStyle(style)
210 | }
211 | }
212 | /**
213 | *
214 | * @param config value to render and an optional id for a specific style, if no id is provided the recently created style is applied
215 | * @returns
216 | */
217 | apply(config: {value: string, id?: string}): string{
218 | if ("apply" in globalThis){
219 | return (globalThis as any).apply(config)
220 | }
221 |
222 | return ""
223 | }
224 |
225 |
226 | // lip.join({
227 | // direction: "vertical",
228 | // position: "bottom",
229 | // elements: ['', ''],
230 | // pc
231 | // })
232 | join(config: {direction: direction, position:lipglosspos , elements: Array, pc?: number} = {direction: "horizontal", position: "left", elements: ['']}) :string{
233 |
234 | if("join" in globalThis){
235 | return (globalThis as any).join(config)
236 | }
237 |
238 | return ""
239 |
240 | }
241 |
242 | newTable(config: table): string {
243 | if("newTable" in globalThis){
244 | config.data = JSON.stringify(config.data) as any as tableData
245 | return (globalThis as any).newTable(config)
246 | }
247 | return ""
248 | }
249 |
250 |
251 | RenderMD(content: string = "", style: markdownStyles = "dark"): string {
252 | if("RenderMD" in globalThis){
253 | return (globalThis as any).RenderMD(content, style)
254 | }
255 |
256 | return ""
257 |
258 | }
259 | // console.log(List({data: JSON.stringify(["A", "B", 'C']), selected: JSON.stringify([]), styles: {numeratorColor: "99",itemColor: "212", marginRight: 4 }})
260 |
261 | List(config: simpleList = {data: [], selected: [], listStyle: "asterisk", customEnum: "→", styles: {numeratorColor: "99", itemColor: "212", marginRight: 1}}):string{
262 |
263 | if("List" in globalThis){
264 | return (globalThis as any).List({data: JSON.stringify(config.data),selected: JSON.stringify(config.selected), styles: config.styles, listStyle: config.listStyle, customEnum: config.customEnum})
265 | }
266 | return ""
267 | }
268 |
269 | // console.log(NdList({data: JSON.stringify(ndO), selected: JSON.stringify(["C", "D"]), listStyle: "custom", customEnum: "→", styles: {numeratorColor: "99",itemColor: "212", marginRight: 4 }, innerStyles: {numeratorColor: "99",itemColor: "212", marginRight: 4, listStyle: "", customEnum: "→", selected: JSON.stringify(["Baking Flour","Eggs" ])}}))
270 |
271 | // NDList(config): string{
272 | // return ""
273 | // }
274 | }
275 |
276 |
277 |
278 |
279 |
280 |
281 |
--------------------------------------------------------------------------------
/src/wasm_exec.js:
--------------------------------------------------------------------------------
1 | // Copyright 2018 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | "use strict";
6 |
7 | const run = (() => {
8 | const enosys = () => {
9 | const err = new Error("not implemented");
10 | err.code = "ENOSYS";
11 | return err;
12 | };
13 |
14 | if (!globalThis.fs) {
15 | let outputBuf = "";
16 | globalThis.fs = {
17 | constants: { O_WRONLY: -1, O_RDWR: -1, O_CREAT: -1, O_TRUNC: -1, O_APPEND: -1, O_EXCL: -1 }, // unused
18 | writeSync(fd, buf) {
19 | outputBuf += decoder.decode(buf);
20 | const nl = outputBuf.lastIndexOf("\n");
21 | if (nl != -1) {
22 | console.log(outputBuf.substring(0, nl));
23 | outputBuf = outputBuf.substring(nl + 1);
24 | }
25 | return buf.length;
26 | },
27 | write(fd, buf, offset, length, position, callback) {
28 | if (offset !== 0 || length !== buf.length || position !== null) {
29 | callback(enosys());
30 | return;
31 | }
32 | const n = this.writeSync(fd, buf);
33 | callback(null, n);
34 | },
35 | chmod(path, mode, callback) { callback(enosys()); },
36 | chown(path, uid, gid, callback) { callback(enosys()); },
37 | close(fd, callback) { callback(enosys()); },
38 | fchmod(fd, mode, callback) { callback(enosys()); },
39 | fchown(fd, uid, gid, callback) { callback(enosys()); },
40 | fstat(fd, callback) { callback(enosys()); },
41 | fsync(fd, callback) { callback(null); },
42 | ftruncate(fd, length, callback) { callback(enosys()); },
43 | lchown(path, uid, gid, callback) { callback(enosys()); },
44 | link(path, link, callback) { callback(enosys()); },
45 | lstat(path, callback) { callback(enosys()); },
46 | mkdir(path, perm, callback) { callback(enosys()); },
47 | open(path, flags, mode, callback) { callback(enosys()); },
48 | read(fd, buffer, offset, length, position, callback) { callback(enosys()); },
49 | readdir(path, callback) { callback(enosys()); },
50 | readlink(path, callback) { callback(enosys()); },
51 | rename(from, to, callback) { callback(enosys()); },
52 | rmdir(path, callback) { callback(enosys()); },
53 | stat(path, callback) { callback(enosys()); },
54 | symlink(path, link, callback) { callback(enosys()); },
55 | truncate(path, length, callback) { callback(enosys()); },
56 | unlink(path, callback) { callback(enosys()); },
57 | utimes(path, atime, mtime, callback) { callback(enosys()); },
58 | };
59 | }
60 |
61 | if (!globalThis.process) {
62 | globalThis.process = {
63 | getuid() { return -1; },
64 | getgid() { return -1; },
65 | geteuid() { return -1; },
66 | getegid() { return -1; },
67 | getgroups() { throw enosys(); },
68 | pid: -1,
69 | ppid: -1,
70 | umask() { throw enosys(); },
71 | cwd() { throw enosys(); },
72 | chdir() { throw enosys(); },
73 | }
74 | }
75 |
76 | if (!globalThis.crypto) {
77 | throw new Error("globalThis.crypto is not available, polyfill required (crypto.getRandomValues only)");
78 | }
79 |
80 | if (!globalThis.performance) {
81 | throw new Error("globalThis.performance is not available, polyfill required (performance.now only)");
82 | }
83 |
84 | if (!globalThis.TextEncoder) {
85 | throw new Error("globalThis.TextEncoder is not available, polyfill required");
86 | }
87 |
88 | if (!globalThis.TextDecoder) {
89 | throw new Error("globalThis.TextDecoder is not available, polyfill required");
90 | }
91 |
92 | const encoder = new TextEncoder("utf-8");
93 | const decoder = new TextDecoder("utf-8");
94 |
95 | globalThis.Go = class {
96 | constructor() {
97 | this.argv = ["js"];
98 | this.env = {};
99 | this.exit = (code) => {
100 | if (code !== 0) {
101 | console.warn("exit code:", code);
102 | }
103 | };
104 | this._exitPromise = new Promise((resolve) => {
105 | this._resolveExitPromise = resolve;
106 | });
107 | this._pendingEvent = null;
108 | this._scheduledTimeouts = new Map();
109 | this._nextCallbackTimeoutID = 1;
110 |
111 | const setInt64 = (addr, v) => {
112 | this.mem.setUint32(addr + 0, v, true);
113 | this.mem.setUint32(addr + 4, Math.floor(v / 4294967296), true);
114 | }
115 |
116 | const setInt32 = (addr, v) => {
117 | this.mem.setUint32(addr + 0, v, true);
118 | }
119 |
120 | const getInt64 = (addr) => {
121 | const low = this.mem.getUint32(addr + 0, true);
122 | const high = this.mem.getInt32(addr + 4, true);
123 | return low + high * 4294967296;
124 | }
125 |
126 | const loadValue = (addr) => {
127 | const f = this.mem.getFloat64(addr, true);
128 | if (f === 0) {
129 | return undefined;
130 | }
131 | if (!isNaN(f)) {
132 | return f;
133 | }
134 |
135 | const id = this.mem.getUint32(addr, true);
136 | return this._values[id];
137 | }
138 |
139 | const storeValue = (addr, v) => {
140 | const nanHead = 0x7FF80000;
141 |
142 | if (typeof v === "number" && v !== 0) {
143 | if (isNaN(v)) {
144 | this.mem.setUint32(addr + 4, nanHead, true);
145 | this.mem.setUint32(addr, 0, true);
146 | return;
147 | }
148 | this.mem.setFloat64(addr, v, true);
149 | return;
150 | }
151 |
152 | if (v === undefined) {
153 | this.mem.setFloat64(addr, 0, true);
154 | return;
155 | }
156 |
157 | let id = this._ids.get(v);
158 | if (id === undefined) {
159 | id = this._idPool.pop();
160 | if (id === undefined) {
161 | id = this._values.length;
162 | }
163 | this._values[id] = v;
164 | this._goRefCounts[id] = 0;
165 | this._ids.set(v, id);
166 | }
167 | this._goRefCounts[id]++;
168 | let typeFlag = 0;
169 | switch (typeof v) {
170 | case "object":
171 | if (v !== null) {
172 | typeFlag = 1;
173 | }
174 | break;
175 | case "string":
176 | typeFlag = 2;
177 | break;
178 | case "symbol":
179 | typeFlag = 3;
180 | break;
181 | case "function":
182 | typeFlag = 4;
183 | break;
184 | }
185 | this.mem.setUint32(addr + 4, nanHead | typeFlag, true);
186 | this.mem.setUint32(addr, id, true);
187 | }
188 |
189 | const loadSlice = (addr) => {
190 | const array = getInt64(addr + 0);
191 | const len = getInt64(addr + 8);
192 | return new Uint8Array(this._inst.exports.mem.buffer, array, len);
193 | }
194 |
195 | const loadSliceOfValues = (addr) => {
196 | const array = getInt64(addr + 0);
197 | const len = getInt64(addr + 8);
198 | const a = new Array(len);
199 | for (let i = 0; i < len; i++) {
200 | a[i] = loadValue(array + i * 8);
201 | }
202 | return a;
203 | }
204 |
205 | const loadString = (addr) => {
206 | const saddr = getInt64(addr + 0);
207 | const len = getInt64(addr + 8);
208 | return decoder.decode(new DataView(this._inst.exports.mem.buffer, saddr, len));
209 | }
210 |
211 | const timeOrigin = Date.now() - performance.now();
212 | this.importObject = {
213 | _gotest: {
214 | add: (a, b) => a + b,
215 | },
216 | gojs: {
217 | // Go's SP does not change as long as no Go code is running. Some operations (e.g. calls, getters and setters)
218 | // may synchronously trigger a Go event handler. This makes Go code get executed in the middle of the imported
219 | // function. A goroutine can switch to a new stack if the current stack is too small (see morestack function).
220 | // This changes the SP, thus we have to update the SP used by the imported function.
221 |
222 | // func wasmExit(code int32)
223 | "runtime.wasmExit": (sp) => {
224 | sp >>>= 0;
225 | const code = this.mem.getInt32(sp + 8, true);
226 | this.exited = true;
227 | delete this._inst;
228 | delete this._values;
229 | delete this._goRefCounts;
230 | delete this._ids;
231 | delete this._idPool;
232 | this.exit(code);
233 | },
234 |
235 | // func wasmWrite(fd uintptr, p unsafe.Pointer, n int32)
236 | "runtime.wasmWrite": (sp) => {
237 | sp >>>= 0;
238 | const fd = getInt64(sp + 8);
239 | const p = getInt64(sp + 16);
240 | const n = this.mem.getInt32(sp + 24, true);
241 | fs.writeSync(fd, new Uint8Array(this._inst.exports.mem.buffer, p, n));
242 | },
243 |
244 | // func resetMemoryDataView()
245 | "runtime.resetMemoryDataView": (sp) => {
246 | sp >>>= 0;
247 | this.mem = new DataView(this._inst.exports.mem.buffer);
248 | },
249 |
250 | // func nanotime1() int64
251 | "runtime.nanotime1": (sp) => {
252 | sp >>>= 0;
253 | setInt64(sp + 8, (timeOrigin + performance.now()) * 1000000);
254 | },
255 |
256 | // func walltime() (sec int64, nsec int32)
257 | "runtime.walltime": (sp) => {
258 | sp >>>= 0;
259 | const msec = (new Date).getTime();
260 | setInt64(sp + 8, msec / 1000);
261 | this.mem.setInt32(sp + 16, (msec % 1000) * 1000000, true);
262 | },
263 |
264 | // func scheduleTimeoutEvent(delay int64) int32
265 | "runtime.scheduleTimeoutEvent": (sp) => {
266 | sp >>>= 0;
267 | const id = this._nextCallbackTimeoutID;
268 | this._nextCallbackTimeoutID++;
269 | this._scheduledTimeouts.set(id, setTimeout(
270 | () => {
271 | this._resume();
272 | while (this._scheduledTimeouts.has(id)) {
273 | // for some reason Go failed to register the timeout event, log and try again
274 | // (temporary workaround for https://github.com/golang/go/issues/28975)
275 | console.warn("scheduleTimeoutEvent: missed timeout event");
276 | this._resume();
277 | }
278 | },
279 | getInt64(sp + 8),
280 | ));
281 | this.mem.setInt32(sp + 16, id, true);
282 | },
283 |
284 | // func clearTimeoutEvent(id int32)
285 | "runtime.clearTimeoutEvent": (sp) => {
286 | sp >>>= 0;
287 | const id = this.mem.getInt32(sp + 8, true);
288 | clearTimeout(this._scheduledTimeouts.get(id));
289 | this._scheduledTimeouts.delete(id);
290 | },
291 |
292 | // func getRandomData(r []byte)
293 | "runtime.getRandomData": (sp) => {
294 | sp >>>= 0;
295 | crypto.getRandomValues(loadSlice(sp + 8));
296 | },
297 |
298 | // func finalizeRef(v ref)
299 | "syscall/js.finalizeRef": (sp) => {
300 | sp >>>= 0;
301 | const id = this.mem.getUint32(sp + 8, true);
302 | this._goRefCounts[id]--;
303 | if (this._goRefCounts[id] === 0) {
304 | const v = this._values[id];
305 | this._values[id] = null;
306 | this._ids.delete(v);
307 | this._idPool.push(id);
308 | }
309 | },
310 |
311 | // func stringVal(value string) ref
312 | "syscall/js.stringVal": (sp) => {
313 | sp >>>= 0;
314 | storeValue(sp + 24, loadString(sp + 8));
315 | },
316 |
317 | // func valueGet(v ref, p string) ref
318 | "syscall/js.valueGet": (sp) => {
319 | sp >>>= 0;
320 | const result = Reflect.get(loadValue(sp + 8), loadString(sp + 16));
321 | sp = this._inst.exports.getsp() >>> 0; // see comment above
322 | storeValue(sp + 32, result);
323 | },
324 |
325 | // func valueSet(v ref, p string, x ref)
326 | "syscall/js.valueSet": (sp) => {
327 | sp >>>= 0;
328 | Reflect.set(loadValue(sp + 8), loadString(sp + 16), loadValue(sp + 32));
329 | },
330 |
331 | // func valueDelete(v ref, p string)
332 | "syscall/js.valueDelete": (sp) => {
333 | sp >>>= 0;
334 | Reflect.deleteProperty(loadValue(sp + 8), loadString(sp + 16));
335 | },
336 |
337 | // func valueIndex(v ref, i int) ref
338 | "syscall/js.valueIndex": (sp) => {
339 | sp >>>= 0;
340 | storeValue(sp + 24, Reflect.get(loadValue(sp + 8), getInt64(sp + 16)));
341 | },
342 |
343 | // valueSetIndex(v ref, i int, x ref)
344 | "syscall/js.valueSetIndex": (sp) => {
345 | sp >>>= 0;
346 | Reflect.set(loadValue(sp + 8), getInt64(sp + 16), loadValue(sp + 24));
347 | },
348 |
349 | // func valueCall(v ref, m string, args []ref) (ref, bool)
350 | "syscall/js.valueCall": (sp) => {
351 | sp >>>= 0;
352 | try {
353 | const v = loadValue(sp + 8);
354 | const m = Reflect.get(v, loadString(sp + 16));
355 | const args = loadSliceOfValues(sp + 32);
356 | const result = Reflect.apply(m, v, args);
357 | sp = this._inst.exports.getsp() >>> 0; // see comment above
358 | storeValue(sp + 56, result);
359 | this.mem.setUint8(sp + 64, 1);
360 | } catch (err) {
361 | sp = this._inst.exports.getsp() >>> 0; // see comment above
362 | storeValue(sp + 56, err);
363 | this.mem.setUint8(sp + 64, 0);
364 | }
365 | },
366 |
367 | // func valueInvoke(v ref, args []ref) (ref, bool)
368 | "syscall/js.valueInvoke": (sp) => {
369 | sp >>>= 0;
370 | try {
371 | const v = loadValue(sp + 8);
372 | const args = loadSliceOfValues(sp + 16);
373 | const result = Reflect.apply(v, undefined, args);
374 | sp = this._inst.exports.getsp() >>> 0; // see comment above
375 | storeValue(sp + 40, result);
376 | this.mem.setUint8(sp + 48, 1);
377 | } catch (err) {
378 | sp = this._inst.exports.getsp() >>> 0; // see comment above
379 | storeValue(sp + 40, err);
380 | this.mem.setUint8(sp + 48, 0);
381 | }
382 | },
383 |
384 | // func valueNew(v ref, args []ref) (ref, bool)
385 | "syscall/js.valueNew": (sp) => {
386 | sp >>>= 0;
387 | try {
388 | const v = loadValue(sp + 8);
389 | const args = loadSliceOfValues(sp + 16);
390 | const result = Reflect.construct(v, args);
391 | sp = this._inst.exports.getsp() >>> 0; // see comment above
392 | storeValue(sp + 40, result);
393 | this.mem.setUint8(sp + 48, 1);
394 | } catch (err) {
395 | sp = this._inst.exports.getsp() >>> 0; // see comment above
396 | storeValue(sp + 40, err);
397 | this.mem.setUint8(sp + 48, 0);
398 | }
399 | },
400 |
401 | // func valueLength(v ref) int
402 | "syscall/js.valueLength": (sp) => {
403 | sp >>>= 0;
404 | setInt64(sp + 16, parseInt(loadValue(sp + 8).length));
405 | },
406 |
407 | // valuePrepareString(v ref) (ref, int)
408 | "syscall/js.valuePrepareString": (sp) => {
409 | sp >>>= 0;
410 | const str = encoder.encode(String(loadValue(sp + 8)));
411 | storeValue(sp + 16, str);
412 | setInt64(sp + 24, str.length);
413 | },
414 |
415 | // valueLoadString(v ref, b []byte)
416 | "syscall/js.valueLoadString": (sp) => {
417 | sp >>>= 0;
418 | const str = loadValue(sp + 8);
419 | loadSlice(sp + 16).set(str);
420 | },
421 |
422 | // func valueInstanceOf(v ref, t ref) bool
423 | "syscall/js.valueInstanceOf": (sp) => {
424 | sp >>>= 0;
425 | this.mem.setUint8(sp + 24, (loadValue(sp + 8) instanceof loadValue(sp + 16)) ? 1 : 0);
426 | },
427 |
428 | // func copyBytesToGo(dst []byte, src ref) (int, bool)
429 | "syscall/js.copyBytesToGo": (sp) => {
430 | sp >>>= 0;
431 | const dst = loadSlice(sp + 8);
432 | const src = loadValue(sp + 32);
433 | if (!(src instanceof Uint8Array || src instanceof Uint8ClampedArray)) {
434 | this.mem.setUint8(sp + 48, 0);
435 | return;
436 | }
437 | const toCopy = src.subarray(0, dst.length);
438 | dst.set(toCopy);
439 | setInt64(sp + 40, toCopy.length);
440 | this.mem.setUint8(sp + 48, 1);
441 | },
442 |
443 | // func copyBytesToJS(dst ref, src []byte) (int, bool)
444 | "syscall/js.copyBytesToJS": (sp) => {
445 | sp >>>= 0;
446 | const dst = loadValue(sp + 8);
447 | const src = loadSlice(sp + 16);
448 | if (!(dst instanceof Uint8Array || dst instanceof Uint8ClampedArray)) {
449 | this.mem.setUint8(sp + 48, 0);
450 | return;
451 | }
452 | const toCopy = src.subarray(0, dst.length);
453 | dst.set(toCopy);
454 | setInt64(sp + 40, toCopy.length);
455 | this.mem.setUint8(sp + 48, 1);
456 | },
457 |
458 | "debug": (value) => {
459 | console.log(value);
460 | },
461 | }
462 | };
463 | }
464 |
465 | async run(instance) {
466 | if (!(instance instanceof WebAssembly.Instance)) {
467 | throw new Error("Go.run: WebAssembly.Instance expected");
468 | }
469 | this._inst = instance;
470 | this.mem = new DataView(this._inst.exports.mem.buffer);
471 | this._values = [ // JS values that Go currently has references to, indexed by reference id
472 | NaN,
473 | 0,
474 | null,
475 | true,
476 | false,
477 | globalThis,
478 | this,
479 | ];
480 | this._goRefCounts = new Array(this._values.length).fill(Infinity); // number of references that Go has to a JS value, indexed by reference id
481 | this._ids = new Map([ // mapping from JS values to reference ids
482 | [0, 1],
483 | [null, 2],
484 | [true, 3],
485 | [false, 4],
486 | [globalThis, 5],
487 | [this, 6],
488 | ]);
489 | this._idPool = []; // unused ids that have been garbage collected
490 | this.exited = false; // whether the Go program has exited
491 |
492 | // Pass command line arguments and environment variables to WebAssembly by writing them to the linear memory.
493 | let offset = 4096;
494 |
495 | const strPtr = (str) => {
496 | const ptr = offset;
497 | const bytes = encoder.encode(str + "\0");
498 | new Uint8Array(this.mem.buffer, offset, bytes.length).set(bytes);
499 | offset += bytes.length;
500 | if (offset % 8 !== 0) {
501 | offset += 8 - (offset % 8);
502 | }
503 | return ptr;
504 | };
505 |
506 | const argc = this.argv.length;
507 |
508 | const argvPtrs = [];
509 | this.argv.forEach((arg) => {
510 | argvPtrs.push(strPtr(arg));
511 | });
512 | argvPtrs.push(0);
513 |
514 | const keys = Object.keys(this.env).sort();
515 | keys.forEach((key) => {
516 | argvPtrs.push(strPtr(`${key}=${this.env[key]}`));
517 | });
518 | argvPtrs.push(0);
519 |
520 | const argv = offset;
521 | argvPtrs.forEach((ptr) => {
522 | this.mem.setUint32(offset, ptr, true);
523 | this.mem.setUint32(offset + 4, 0, true);
524 | offset += 8;
525 | });
526 |
527 | // The linker guarantees global data starts from at least wasmMinDataAddr.
528 | // Keep in sync with cmd/link/internal/ld/data.go:wasmMinDataAddr.
529 | const wasmMinDataAddr = 4096 + 8192;
530 | if (offset >= wasmMinDataAddr) {
531 | throw new Error("total length of command line and environment variables exceeds limit");
532 | }
533 |
534 | this._inst.exports.run(argc, argv);
535 | if (this.exited) {
536 | this._resolveExitPromise();
537 | }
538 | await this._exitPromise;
539 | }
540 |
541 | _resume() {
542 | if (this.exited) {
543 | throw new Error("Go program has already exited");
544 | }
545 | this._inst.exports.resume();
546 | if (this.exited) {
547 | this._resolveExitPromise();
548 | }
549 | }
550 |
551 | _makeFuncWrapper(id) {
552 | const go = this;
553 | return function () {
554 | const event = { id: id, this: this, args: arguments };
555 | go._pendingEvent = event;
556 | go._resume();
557 | return event.result;
558 | };
559 | }
560 | }
561 | })
562 |
563 |
564 | module.exports = run
565 |
566 |
567 |
568 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Visit https://aka.ms/tsconfig to read more about this file */
4 |
5 | /* Projects */
6 | // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
8 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
12 |
13 | /* Language and Environment */
14 | "target": "ESNext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
16 | // "jsx": "preserve", /* Specify what JSX code is generated. */
17 | // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
22 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
25 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
26 |
27 | /* Modules */
28 | "module": "ESNext", /* Specify what module code is generated. */
29 | // "rootDir": "./", /* Specify the root folder within your source files. */
30 | "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
31 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
32 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
33 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
34 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
35 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */
36 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
37 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
38 | // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
39 | // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
40 | // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
41 | // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
42 | // "noUncheckedSideEffectImports": true, /* Check side effect imports. */
43 | // "resolveJsonModule": true, /* Enable importing .json files. */
44 | // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
45 | // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */
46 |
47 | /* JavaScript Support */
48 | "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
49 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
50 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
51 |
52 | /* Emit */
53 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
54 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */
55 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
56 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
57 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
58 | "noEmit": true, /* Disable emitting files from a compilation. */
59 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
60 | // "outDir": "./", /* Specify an output folder for all emitted files. */
61 | // "removeComments": true, /* Disable emitting comments. */
62 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
63 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
64 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
65 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
66 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
67 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
68 | // "newLine": "crlf", /* Set the newline character for emitting files. */
69 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
70 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
71 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
72 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
73 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
74 |
75 | /* Interop Constraints */
76 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
77 | // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */
78 | // "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */
79 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
80 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
81 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
82 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
83 |
84 | /* Type Checking */
85 | "strict": true, /* Enable all strict type-checking options. */
86 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
87 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
88 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
89 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
90 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
91 | // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */
92 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
93 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
94 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
95 | // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
96 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
97 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
98 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
99 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
100 | "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
101 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
102 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
103 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
104 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
105 |
106 | /* Completeness */
107 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
108 | "skipLibCheck": true /* Skip type checking all .d.ts files. */
109 | },
110 |
111 | "include": ["src/**/*"]
112 |
113 | }
114 |
--------------------------------------------------------------------------------