@lopatnov/javascripttostring 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +272 -259
  2. package/package.json +14 -18
package/README.md CHANGED
@@ -1,259 +1,272 @@
1
- # @lopatnov/javascripttostring
2
-
3
- [![npm](https://img.shields.io/npm/dt/@lopatnov/javascripttostring)](https://www.npmjs.com/package/@lopatnov/javascripttostring)
4
- [![NPM version](https://badge.fury.io/js/%40lopatnov%2Fjavascripttostring.svg)](https://www.npmjs.com/package/@lopatnov/javascripttostring)
5
- [![License](https://img.shields.io/github/license/lopatnov/jsToString)](https://github.com/lopatnov/jsToString/blob/master/LICENSE)
6
- [![TypeScript](https://img.shields.io/badge/TypeScript-5.8-blue)](https://www.typescriptlang.org/)
7
- [![GitHub stars](https://img.shields.io/github/stars/lopatnov/jsToString)](https://github.com/lopatnov/jsToString/stargazers)
8
-
9
- A TypeScript library that converts any JavaScript runtime value into its string source code representation. Supports objects, arrays, functions, circular references, cross-references, and more.
10
-
11
- ## Installation
12
-
13
- ```bash
14
- npm install @lopatnov/javascripttostring
15
- ```
16
-
17
- ### Browser (CDN)
18
-
19
- ```html
20
- <script src="https://unpkg.com/@lopatnov/javascripttostring"></script>
21
- ```
22
-
23
- ## Usage
24
-
25
- ### ES Modules
26
-
27
- ```typescript
28
- import javaScriptToString from "@lopatnov/javascripttostring";
29
- ```
30
-
31
- ### CommonJS
32
-
33
- ```javascript
34
- const javaScriptToString = require("@lopatnov/javascripttostring");
35
- ```
36
-
37
- ### Browser (UMD)
38
-
39
- ```javascript
40
- const javaScriptToString = window.javaScriptToString;
41
- ```
42
-
43
- ## API
44
-
45
- ### javaScriptToString(value, options?): string
46
-
47
- Converts a JavaScript value to its string source code representation.
48
-
49
- | Parameter | Type | Description |
50
- |-----------|------|-------------|
51
- | `value` | `any` | The value to convert |
52
- | `options` | `IJ2SOptions` | Optional configuration |
53
-
54
- **Returns:** `string` - Source code representation that can be evaluated back to the original value
55
-
56
- ### Options
57
-
58
- | Option | Type | Default | Description |
59
- |--------|------|---------|-------------|
60
- | `includeFunctionProperties` | `boolean` | `true` | Include function's own properties |
61
- | `includeFunctionPrototype` | `boolean` | `true` | Include function's prototype properties |
62
- | `includeBuffers` | `boolean` | `true` | Include ArrayBuffer and TypedArray contents |
63
- | `nestedObjectsAmount` | `number` | `Infinity` | Max depth for nested objects |
64
- | `nestedArraysAmount` | `number` | `Infinity` | Max depth for nested arrays |
65
- | `nestedFunctionsAmount` | `number` | `Infinity` | Max depth for nested functions |
66
- | `throwOnNonSerializable` | `boolean` | `false` | Throw an error for non-serializable values (Promise, Generator, WeakRef, WeakMap, WeakSet, FinalizationRegistry) |
67
-
68
- ## Examples
69
-
70
- ### Primitives
71
-
72
- ```typescript
73
- javaScriptToString("Hello world"); // '"Hello world"'
74
- javaScriptToString(42); // '42'
75
- javaScriptToString(true); // 'true'
76
- javaScriptToString(undefined); // 'undefined'
77
- javaScriptToString(null); // 'null'
78
- ```
79
-
80
- ### Arrays
81
-
82
- ```typescript
83
- javaScriptToString(["Hello", "World"]);
84
- // '["Hello", "World"]'
85
- ```
86
-
87
- ### Objects
88
-
89
- ```typescript
90
- javaScriptToString({
91
- name: "Alex",
92
- friends: ["Shurik", "Hola"],
93
- greet: () => {
94
- console.log("How you doing?");
95
- }
96
- });
97
- // '{name: "Alex", friends: ["Shurik", "Hola"], greet: () => { console.log("How you doing?"); }}'
98
- ```
99
-
100
- ### Functions with Properties
101
-
102
- ```typescript
103
- function Simple(title) {
104
- this.title = title || "world";
105
- }
106
- Simple.count = 0;
107
- Simple.prototype.show = function () {
108
- Simple.count++;
109
- console.log("title =", this.title);
110
- };
111
-
112
- javaScriptToString(Simple);
113
- // '(function(){ var Simple = function Simple(title) { ... }; Simple.count = 0; Simple.prototype.show = function(){ ... }; return Simple; }())'
114
- ```
115
-
116
- ### Circular References
117
-
118
- Objects that reference themselves are fully supported:
119
-
120
- ```typescript
121
- var x = [1, 2, 3];
122
- x[0] = x;
123
-
124
- javaScriptToString(x);
125
- // '(function(){ var ___ref1 = [null, 2, 3]; ___ref1[0] = ___ref1; return ___ref1; }())'
126
- ```
127
-
128
- ### Cross-References
129
-
130
- Objects shared between different branches are preserved as references:
131
-
132
- ```typescript
133
- var shared = { value: 42 };
134
- var obj = { a: shared, b: shared };
135
-
136
- javaScriptToString(obj);
137
- // Generates code where obj.a === obj.b (same reference):
138
- // (function(){ var ___ref1 = {
139
- // a: { value: 42 },
140
- // b: null
141
- // }; ___ref1.b = ___ref1.a; return ___ref1; }())
142
- ```
143
-
144
- ### Using with Web Workers
145
-
146
- Combine with [@lopatnov/worker-from-string](https://www.npmjs.com/package/@lopatnov/worker-from-string) to serialize functions and data for execution in a Web Worker:
147
-
148
- ```typescript
149
- import javaScriptToString from "@lopatnov/javascripttostring";
150
- import workerFromString from "@lopatnov/worker-from-string";
151
-
152
- // Function with attached lookup data
153
- function classify(value) {
154
- const range = classify.ranges.find(r => value >= r.min && value < r.max);
155
- return range ? range.label : "unknown";
156
- }
157
- classify.ranges = [
158
- { min: 0, max: 30, label: "cold" },
159
- { min: 30, max: 60, label: "warm" },
160
- { min: 60, max: 100, label: "hot" },
161
- ];
162
-
163
- // Serialize and send to a worker
164
- // javaScriptToString preserves the function AND its properties:
165
- const code = javaScriptToString(classify);
166
-
167
- const worker = workerFromString(`
168
- const classify = ${code};
169
- self.onmessage = (e) => postMessage(classify(e.data));
170
- `);
171
-
172
- worker.onmessage = (e) => console.log(e.data);
173
- worker.postMessage(45); // "warm"
174
- ```
175
-
176
- ### Restoring Values
177
-
178
- The generated string can be evaluated back to a working JavaScript value:
179
-
180
- ```typescript
181
- var original = { name: "test" };
182
- original.self = original;
183
-
184
- var code = javaScriptToString(original);
185
- var restored = Function("return " + code)();
186
-
187
- console.log(restored.self === restored); // true
188
- console.log(restored.name); // "test"
189
- ```
190
-
191
- ## Supported Types
192
-
193
- | Type | Example | Notes |
194
- |------|---------|-------|
195
- | Primitives | `string`, `number`, `boolean`, `undefined`, `null` | Including `-0` and `NaN` |
196
- | BigInt | `BigInt(123)` | |
197
- | Symbol | `Symbol("desc")`, `Symbol.for("key")` | Registry symbols preserved |
198
- | RegExp | `/pattern/gi` | `lastIndex` preserved when non-zero |
199
- | Date | `new Date("...")` | Invalid dates → `new Date(NaN)` |
200
- | Error | `new Error()`, `new TypeError()` | TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError |
201
- | Array | `[1, 2, 3]` | Sparse arrays preserved |
202
- | Object | `{ key: "value" }` | Including `Object.create(null)` |
203
- | Function | `function() {}`, `() => {}`, `async function() {}` | Properties and prototype included |
204
- | Generator Function | `function*() {}`, `async function*() {}` | |
205
- | Map | `new Map([["key", "value"]])` | |
206
- | Set | `new Set([1, 2, 3])` | |
207
- | TypedArray | `Int8Array`, `Float64Array`, etc. | |
208
- | ArrayBuffer | `new ArrayBuffer(8)`, `SharedArrayBuffer` | |
209
- | DataView | `new DataView(buffer)` | |
210
-
211
- ### Non-serializable Types
212
-
213
- The following types cannot be serialized and return `"undefined"` by default. Use `throwOnNonSerializable: true` to throw an error instead:
214
-
215
- `Promise`, `Generator`, `WeakRef`, `WeakMap`, `WeakSet`, `FinalizationRegistry`
216
-
217
- ## Demo
218
-
219
- Try the library interactively:
220
-
221
- | | Link |
222
- |---|---|
223
- | Interactive Demo | [demo/index.html](./demo/index.html) |
224
- | RunKit Playground | [runkit.com](https://npm.runkit.com/%40lopatnov%2Fjavascripttostring) |
225
-
226
- ## Documentation
227
-
228
- | | Link |
229
- |---|---|
230
- | API Reference | [docs/index.html](./docs/index.html) |
231
- | Changelog | [CHANGELOG.md](./CHANGELOG.md) |
232
-
233
- ## Related Packages
234
-
235
- | Package | Description |
236
- |---|---|
237
- | [@lopatnov/worker-from-string](https://www.npmjs.com/package/@lopatnov/worker-from-string) | Create Web Workers from strings — pairs well with `javaScriptToString` |
238
- | [@lopatnov/get-internal-type](https://www.npmjs.com/package/@lopatnov/get-internal-type) | Runtime type detection used internally by this library |
239
-
240
- ## Contributing
241
-
242
- Contributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
243
-
244
- ## License
245
-
246
- [Apache-2.0](LICENSE)
247
-
248
- Copyright 2019-2026 Oleksandr Lopatnov
249
-
250
- ---
251
-
252
- ### Author
253
-
254
- **Oleksandr Lopatnov**
255
-
256
- [![LinkedIn](https://img.shields.io/badge/LinkedIn-Connect-blue?style=flat&logo=linkedin)](https://www.linkedin.com/in/lopatnov/)
257
- [![GitHub](https://img.shields.io/badge/GitHub-Follow-black?style=flat&logo=github)](https://github.com/lopatnov)
258
-
259
- If you find this project useful, please consider giving it a star on GitHub!
1
+ # @lopatnov/javascripttostring
2
+
3
+ [![npm](https://img.shields.io/npm/dt/@lopatnov/javascripttostring)](https://www.npmjs.com/package/@lopatnov/javascripttostring)
4
+ [![NPM version](https://badge.fury.io/js/%40lopatnov%2Fjavascripttostring.svg)](https://www.npmjs.com/package/@lopatnov/javascripttostring)
5
+ [![License](https://img.shields.io/github/license/lopatnov/jsToString)](https://github.com/lopatnov/jsToString/blob/master/LICENSE)
6
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.9-blue)](https://www.typescriptlang.org/)
7
+ [![GitHub stars](https://img.shields.io/github/stars/lopatnov/jsToString)](https://github.com/lopatnov/jsToString/stargazers)
8
+
9
+ A TypeScript library that converts any JavaScript runtime value into its string source code representation. Supports objects, arrays, functions, circular references, cross-references, and more.
10
+
11
+ ## Table of Contents
12
+
13
+ - [Installation](#installation)
14
+ - [Usage](#usage)
15
+ - [API](#api)
16
+ - [Examples](#examples)
17
+ - [Supported Types](#supported-types)
18
+ - [Demo](#demo)
19
+ - [Documentation](#documentation)
20
+ - [Related Packages](#related-packages)
21
+ - [Contributing](#contributing)
22
+ - [Built With](#built-with)
23
+ - [License](#license)
24
+
25
+ ## Installation
26
+
27
+ ```bash
28
+ npm install @lopatnov/javascripttostring
29
+ ```
30
+
31
+ ### Browser (CDN)
32
+
33
+ ```html
34
+ <script src="https://unpkg.com/@lopatnov/javascripttostring/dist/javascripttostring.umd.js"></script>
35
+ ```
36
+
37
+ ## Usage
38
+
39
+ ### ES Modules
40
+
41
+ ```typescript
42
+ import javaScriptToString from "@lopatnov/javascripttostring";
43
+ ```
44
+
45
+ ### CommonJS
46
+
47
+ ```javascript
48
+ const javaScriptToString = require("@lopatnov/javascripttostring");
49
+ ```
50
+
51
+ ### Browser (UMD)
52
+
53
+ ```javascript
54
+ const javaScriptToString = window.javaScriptToString;
55
+ ```
56
+
57
+ ## API
58
+
59
+ ### javaScriptToString(value, options?): string
60
+
61
+ Converts a JavaScript value to its string source code representation.
62
+
63
+ | Parameter | Type | Description |
64
+ |-----------|------|-------------|
65
+ | `value` | `any` | The value to convert |
66
+ | `options` | `IJ2SOptions` | Optional configuration |
67
+
68
+ **Returns:** `string` - Source code representation that can be evaluated back to the original value
69
+
70
+ ### Options
71
+
72
+ | Option | Type | Default | Description |
73
+ |--------|------|---------|-------------|
74
+ | `includeFunctionProperties` | `boolean` | `true` | Include function's own properties |
75
+ | `includeFunctionPrototype` | `boolean` | `true` | Include function's prototype properties |
76
+ | `includeBuffers` | `boolean` | `true` | Include ArrayBuffer and TypedArray contents |
77
+ | `nestedObjectsAmount` | `number` | `Infinity` | Max depth for nested objects |
78
+ | `nestedArraysAmount` | `number` | `Infinity` | Max depth for nested arrays |
79
+ | `nestedFunctionsAmount` | `number` | `Infinity` | Max depth for nested functions |
80
+ | `throwOnNonSerializable` | `boolean` | `false` | Throw an error for non-serializable values (Promise, Generator, WeakRef, WeakMap, WeakSet, FinalizationRegistry) |
81
+
82
+ ## Examples
83
+
84
+ ### Primitives
85
+
86
+ ```typescript
87
+ javaScriptToString("Hello world"); // '"Hello world"'
88
+ javaScriptToString(42); // '42'
89
+ javaScriptToString(true); // 'true'
90
+ javaScriptToString(undefined); // 'undefined'
91
+ javaScriptToString(null); // 'null'
92
+ ```
93
+
94
+ ### Arrays
95
+
96
+ ```typescript
97
+ javaScriptToString(["Hello", "World"]);
98
+ // '["Hello", "World"]'
99
+ ```
100
+
101
+ ### Objects
102
+
103
+ ```typescript
104
+ javaScriptToString({
105
+ name: "Alex",
106
+ friends: ["Shurik", "Hola"],
107
+ greet: () => {
108
+ console.log("How you doing?");
109
+ }
110
+ });
111
+ // '{name: "Alex", friends: ["Shurik", "Hola"], greet: () => { console.log("How you doing?"); }}'
112
+ ```
113
+
114
+ ### Functions with Properties
115
+
116
+ ```typescript
117
+ function Simple(title) {
118
+ this.title = title || "world";
119
+ }
120
+ Simple.count = 0;
121
+ Simple.prototype.show = function () {
122
+ Simple.count++;
123
+ console.log("title =", this.title);
124
+ };
125
+
126
+ javaScriptToString(Simple);
127
+ // '(function(){ var Simple = function Simple(title) { ... }; Simple.count = 0; Simple.prototype.show = function(){ ... }; return Simple; }())'
128
+ ```
129
+
130
+ ### Circular References
131
+
132
+ Objects that reference themselves are fully supported:
133
+
134
+ ```typescript
135
+ var x = [1, 2, 3];
136
+ x[0] = x;
137
+
138
+ javaScriptToString(x);
139
+ // '(function(){ var ___ref1 = [null, 2, 3]; ___ref1[0] = ___ref1; return ___ref1; }())'
140
+ ```
141
+
142
+ ### Cross-References
143
+
144
+ Objects shared between different branches are preserved as references:
145
+
146
+ ```typescript
147
+ var shared = { value: 42 };
148
+ var obj = { a: shared, b: shared };
149
+
150
+ javaScriptToString(obj);
151
+ // Generates code where obj.a === obj.b (same reference):
152
+ // (function(){ var ___ref1 = {
153
+ // a: { value: 42 },
154
+ // b: null
155
+ // }; ___ref1.b = ___ref1.a; return ___ref1; }())
156
+ ```
157
+
158
+ ### Using with Web Workers
159
+
160
+ Combine with [@lopatnov/worker-from-string](https://www.npmjs.com/package/@lopatnov/worker-from-string) to serialize functions and data for execution in a Web Worker:
161
+
162
+ ```typescript
163
+ import javaScriptToString from "@lopatnov/javascripttostring";
164
+ import workerFromString from "@lopatnov/worker-from-string";
165
+
166
+ // Function with attached lookup data
167
+ function classify(value) {
168
+ const range = classify.ranges.find(r => value >= r.min && value < r.max);
169
+ return range ? range.label : "unknown";
170
+ }
171
+ classify.ranges = [
172
+ { min: 0, max: 30, label: "cold" },
173
+ { min: 30, max: 60, label: "warm" },
174
+ { min: 60, max: 100, label: "hot" },
175
+ ];
176
+
177
+ // Serialize and send to a worker
178
+ // javaScriptToString preserves the function AND its properties:
179
+ const code = javaScriptToString(classify);
180
+
181
+ const worker = workerFromString(`
182
+ const classify = ${code};
183
+ self.onmessage = (e) => postMessage(classify(e.data));
184
+ `);
185
+
186
+ worker.onmessage = (e) => console.log(e.data);
187
+ worker.postMessage(45); // "warm"
188
+ ```
189
+
190
+ ### Restoring Values
191
+
192
+ The generated string can be evaluated back to a working JavaScript value:
193
+
194
+ ```typescript
195
+ var original = { name: "test" };
196
+ original.self = original;
197
+
198
+ var code = javaScriptToString(original);
199
+ var restored = Function("return " + code)();
200
+
201
+ console.log(restored.self === restored); // true
202
+ console.log(restored.name); // "test"
203
+ ```
204
+
205
+ ## Supported Types
206
+
207
+ | Type | Example | Notes |
208
+ |------|---------|-------|
209
+ | Primitives | `string`, `number`, `boolean`, `undefined`, `null` | Including `-0` and `NaN` |
210
+ | BigInt | `BigInt(123)` | |
211
+ | Symbol | `Symbol("desc")`, `Symbol.for("key")` | Registry symbols preserved |
212
+ | RegExp | `/pattern/gi` | `lastIndex` preserved when non-zero |
213
+ | Date | `new Date("...")` | Invalid dates `new Date(NaN)` |
214
+ | Error | `new Error()`, `new TypeError()` | TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError |
215
+ | Array | `[1, 2, 3]` | Sparse arrays preserved |
216
+ | Object | `{ key: "value" }` | Including `Object.create(null)` |
217
+ | Function | `function() {}`, `() => {}`, `async function() {}` | Properties and prototype included |
218
+ | Generator Function | `function*() {}`, `async function*() {}` | |
219
+ | Map | `new Map([["key", "value"]])` | |
220
+ | Set | `new Set([1, 2, 3])` | |
221
+ | TypedArray | `Int8Array`, `Float64Array`, etc. | |
222
+ | ArrayBuffer | `new ArrayBuffer(8)`, `SharedArrayBuffer` | |
223
+ | DataView | `new DataView(buffer)` | |
224
+
225
+ ### Non-serializable Types
226
+
227
+ The following types cannot be serialized and return `"undefined"` by default. Use `throwOnNonSerializable: true` to throw an error instead:
228
+
229
+ `Promise`, `Generator`, `WeakRef`, `WeakMap`, `WeakSet`, `FinalizationRegistry`
230
+
231
+ ## Demo
232
+
233
+ Try the library interactively:
234
+
235
+ - [Interactive Demo](./demo/index.html)
236
+ - [RunKit Playground](https://npm.runkit.com/%40lopatnov%2Fjavascripttostring)
237
+
238
+ ## Documentation
239
+
240
+ - [API Reference](./docs/index.html)
241
+ - [Changelog](./CHANGELOG.md)
242
+
243
+ ## Related Packages
244
+
245
+ | Package | Description |
246
+ |---|---|
247
+ | [@lopatnov/worker-from-string](https://www.npmjs.com/package/@lopatnov/worker-from-string) | Create Web Workers from strings — pairs well with `javaScriptToString` |
248
+ | [@lopatnov/get-internal-type](https://www.npmjs.com/package/@lopatnov/get-internal-type) | Runtime type detection used internally by this library |
249
+
250
+ ## Contributing
251
+
252
+ Contributions are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request.
253
+
254
+ - Bug reports → [open an issue](https://github.com/lopatnov/jsToString/issues)
255
+ - Found it useful? A [star on GitHub](https://github.com/lopatnov/jsToString) helps others discover the project
256
+
257
+ ---
258
+
259
+ ## Built With
260
+
261
+ - [TypeScript](https://www.typescriptlang.org/) — strict typing throughout
262
+ - [Rollup](https://rollupjs.org/) — bundled to ESM, CJS, and UMD formats
263
+ - [Biome](https://biomejs.dev/) — linting and formatting
264
+ - [Vitest](https://vitest.dev/) — unit testing
265
+ - [TypeDoc](https://typedoc.org/) — API documentation generation
266
+ - [@lopatnov/get-internal-type](https://github.com/lopatnov/get-internal-type) — reliable runtime type detection
267
+
268
+ ---
269
+
270
+ ## License
271
+
272
+ [Apache-2.0](https://github.com/lopatnov/jsToString/blob/master/LICENSE) © 2019–2026 [Oleksandr Lopatnov](https://github.com/lopatnov) · [LinkedIn](https://www.linkedin.com/in/lopatnov/)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lopatnov/javascripttostring",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "author": "lopatnov",
@@ -52,9 +52,7 @@
52
52
  },
53
53
  "scripts": {
54
54
  "build": "tsc --emitDeclarationOnly && rollup -c rollup.config.js && typedoc --out docs --entryPointStrategy expand src",
55
- "configure-npm": "node ./set-registry.cjs -s https://registry.npmjs.org",
56
- "configure-gpr": "node ./set-registry.cjs -s https://npm.pkg.github.com",
57
- "test": "jest",
55
+ "test": "vitest run --coverage",
58
56
  "lint": "biome lint src test",
59
57
  "lint:fix": "biome lint --write src test",
60
58
  "format": "biome format --write src test",
@@ -63,25 +61,23 @@
63
61
  "docs": "typedoc --out docs --entryPointStrategy expand src"
64
62
  },
65
63
  "devDependencies": {
66
- "@biomejs/biome": "^2.3.14",
67
- "@lopatnov/rollup-plugin-uglify": "^4.0.0",
64
+ "@biomejs/biome": "^2.4.4",
65
+ "@lopatnov/rollup-plugin-uglify": "^4.1.3",
68
66
  "@rollup/plugin-commonjs": "^29.0.0",
69
67
  "@rollup/plugin-json": "^6.1.0",
70
- "@rollup/plugin-node-resolve": "^16.0.0",
71
- "@rollup/plugin-typescript": "^12.1.2",
72
- "@types/jest": "^30.0.0",
73
- "@types/node": "^25.2.3",
74
- "jest": "^30.0.0",
75
- "jest-config": "^30.0.0",
68
+ "@rollup/plugin-node-resolve": "^16.0.3",
69
+ "@rollup/plugin-typescript": "^12.3.0",
70
+ "@types/node": "^25.3.0",
71
+ "@vitest/coverage-v8": "^3.0.0",
76
72
  "lodash.camelcase": "^4.3.0",
77
- "rollup": "^4.41.0",
78
- "terser": "^5.39.0",
79
- "ts-jest": "^29.3.4",
73
+ "rollup": "^4.59.0",
74
+ "terser": "^5.46.0",
80
75
  "tslib": "^2.8.1",
81
- "typedoc": "^0.28.5",
82
- "typescript": "^5.8.3"
76
+ "typedoc": "^0.28.17",
77
+ "typescript": "^5.9.3",
78
+ "vitest": "^3.0.0"
83
79
  },
84
80
  "dependencies": {
85
- "@lopatnov/get-internal-type": "^2.2.0"
81
+ "@lopatnov/get-internal-type": "^2.2.1"
86
82
  }
87
83
  }