@nudojs/env 0.1.0 → 0.2.1

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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,17 @@
1
+ # @nudojs/env
2
+
3
+ ## 0.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [5786fa5]
8
+ - Updated dependencies [5786fa5]
9
+ - @nudojs/core@0.3.0
10
+
11
+ ## 0.2.0
12
+
13
+ ### Minor Changes
14
+
15
+ - 0fd0718: Merge the three environment packages into one: `@nudojs/env-es`, `@nudojs/env-web`, `@nudojs/env-node` are replaced by a single `@nudojs/env` package with subpath exports `@nudojs/env/es`, `@nudojs/env/web`, `@nudojs/env/node`.
16
+
17
+ Move agent-facing tools from the standalone MCP server into the language server: `@nudojs/mcp` is removed. `@nudojs/lsp` now exposes `nudo.whatIf`, `nudo.suggestCase`, `nudo.trace`, `nudo.selectCase`, and `nudo.getActiveCases` via `workspace/executeCommand` (custom-request aliases `nudo/whatIf` etc. included), adds pull-mode diagnostics, and works on files that are not open in the editor (disk fallback). `nudo.whatIf` now actually applies the given type bindings — previously they were ignored. AI agents connect through any LSP↔MCP bridge (cclsp, mcpls, agent-lsp) or a native LSP client; an installable agent skill ships at `packages/lsp/agent-skill/SKILL.md`.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Nudo Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,227 @@
1
+ // src/es.ts
2
+ import { T } from "@nudojs/core";
3
+ function litNum(tv) {
4
+ return tv.kind === "literal" && typeof tv.value === "number" ? tv.value : void 0;
5
+ }
6
+ function litStr(tv) {
7
+ return tv.kind === "literal" && typeof tv.value === "string" ? tv.value : void 0;
8
+ }
9
+ function numImpl1(fn) {
10
+ return (args) => {
11
+ const a = litNum(args[0]);
12
+ return a !== void 0 ? T.literal(fn(a)) : void 0;
13
+ };
14
+ }
15
+ function numImpl2(fn) {
16
+ return (args) => {
17
+ const a = litNum(args[0]);
18
+ const b = litNum(args[1]);
19
+ return a !== void 0 && b !== void 0 ? T.literal(fn(a, b)) : void 0;
20
+ };
21
+ }
22
+ function strToStrImpl(fn) {
23
+ return (args) => {
24
+ const s = litStr(args[0]);
25
+ return s !== void 0 ? T.literal(fn(s)) : void 0;
26
+ };
27
+ }
28
+ function defineEnv() {
29
+ const voidFn = T.fnSig([T.unknown], T.undefined);
30
+ const consoleMethods = {};
31
+ for (const name of ["log", "error", "warn", "info", "debug", "trace", "dir", "table", "time", "timeEnd", "timeLog", "clear", "count", "countReset", "group", "groupCollapsed", "groupEnd", "assert"]) {
32
+ consoleMethods[name] = voidFn;
33
+ }
34
+ const jsonStringifyImpl = (args) => {
35
+ const v = args[0];
36
+ if (v.kind === "literal") {
37
+ try {
38
+ const result = JSON.stringify(v.value);
39
+ return result === void 0 ? T.undefined : T.literal(result);
40
+ } catch {
41
+ }
42
+ }
43
+ return void 0;
44
+ };
45
+ const parseIntImpl = (args) => {
46
+ const s = litStr(args[0]);
47
+ const radix = args[1] !== void 0 ? litNum(args[1]) : 10;
48
+ if (s !== void 0 && radix !== void 0) {
49
+ const result = parseInt(s, radix);
50
+ return Number.isNaN(result) ? T.literal(NaN) : T.literal(result);
51
+ }
52
+ return void 0;
53
+ };
54
+ const parseFloatImpl = (args) => {
55
+ const s = litStr(args[0]);
56
+ if (s !== void 0) {
57
+ const result = parseFloat(s);
58
+ return T.literal(result);
59
+ }
60
+ return void 0;
61
+ };
62
+ const isNaNImpl = (args) => {
63
+ const v = args[0];
64
+ if (v.kind === "literal" && typeof v.value === "number") return T.literal(Number.isNaN(v.value));
65
+ return void 0;
66
+ };
67
+ const isFiniteImpl = (args) => {
68
+ const v = args[0];
69
+ if (v.kind === "literal" && typeof v.value === "number") return T.literal(Number.isFinite(v.value));
70
+ return void 0;
71
+ };
72
+ return {
73
+ globals: {
74
+ // --- JSON ---
75
+ JSON: T.object({
76
+ parse: T.fnSig([T.string], T.unknown, T.instanceOf("SyntaxError")),
77
+ stringify: T.fnSig([T.unknown], T.union(T.string, T.undefined), T.never, jsonStringifyImpl)
78
+ }),
79
+ // --- Math ---
80
+ Math: T.object({
81
+ abs: T.fnSig([T.number], T.number, T.never, numImpl1(Math.abs)),
82
+ ceil: T.fnSig([T.number], T.number, T.never, numImpl1(Math.ceil)),
83
+ floor: T.fnSig([T.number], T.number, T.never, numImpl1(Math.floor)),
84
+ round: T.fnSig([T.number], T.number, T.never, numImpl1(Math.round)),
85
+ trunc: T.fnSig([T.number], T.number, T.never, numImpl1(Math.trunc)),
86
+ sign: T.fnSig([T.number], T.number, T.never, numImpl1(Math.sign)),
87
+ max: T.fnSig([T.number, T.number], T.number, T.never, numImpl2(Math.max)),
88
+ min: T.fnSig([T.number, T.number], T.number, T.never, numImpl2(Math.min)),
89
+ pow: T.fnSig([T.number, T.number], T.number, T.never, numImpl2(Math.pow)),
90
+ sqrt: T.fnSig([T.number], T.number, T.never, numImpl1(Math.sqrt)),
91
+ cbrt: T.fnSig([T.number], T.number, T.never, numImpl1(Math.cbrt)),
92
+ log: T.fnSig([T.number], T.number, T.never, numImpl1(Math.log)),
93
+ log2: T.fnSig([T.number], T.number, T.never, numImpl1(Math.log2)),
94
+ log10: T.fnSig([T.number], T.number, T.never, numImpl1(Math.log10)),
95
+ exp: T.fnSig([T.number], T.number, T.never, numImpl1(Math.exp)),
96
+ random: T.fnSig([], T.number),
97
+ sin: T.fnSig([T.number], T.number, T.never, numImpl1(Math.sin)),
98
+ cos: T.fnSig([T.number], T.number, T.never, numImpl1(Math.cos)),
99
+ tan: T.fnSig([T.number], T.number, T.never, numImpl1(Math.tan)),
100
+ asin: T.fnSig([T.number], T.number, T.never, numImpl1(Math.asin)),
101
+ acos: T.fnSig([T.number], T.number, T.never, numImpl1(Math.acos)),
102
+ atan: T.fnSig([T.number], T.number, T.never, numImpl1(Math.atan)),
103
+ atan2: T.fnSig([T.number, T.number], T.number, T.never, numImpl2(Math.atan2)),
104
+ hypot: T.fnSig([T.number, T.number], T.number, T.never, numImpl2(Math.hypot)),
105
+ clz32: T.fnSig([T.number], T.number, T.never, numImpl1(Math.clz32)),
106
+ imul: T.fnSig([T.number, T.number], T.number, T.never, numImpl2(Math.imul)),
107
+ fround: T.fnSig([T.number], T.number, T.never, numImpl1(Math.fround)),
108
+ PI: T.number,
109
+ E: T.number,
110
+ LN2: T.number,
111
+ LN10: T.number,
112
+ LOG2E: T.number,
113
+ LOG10E: T.number,
114
+ SQRT2: T.number,
115
+ SQRT1_2: T.number
116
+ }),
117
+ // --- Number ---
118
+ Number: T.object({
119
+ isFinite: T.fnSig([T.unknown], T.boolean, T.never, isFiniteImpl),
120
+ isInteger: T.fnSig([T.unknown], T.boolean, T.never, (args) => {
121
+ const v = args[0];
122
+ if (v.kind === "literal" && typeof v.value === "number") return T.literal(Number.isInteger(v.value));
123
+ return void 0;
124
+ }),
125
+ isNaN: T.fnSig([T.unknown], T.boolean, T.never, isNaNImpl),
126
+ isSafeInteger: T.fnSig([T.unknown], T.boolean, T.never, (args) => {
127
+ const v = args[0];
128
+ if (v.kind === "literal" && typeof v.value === "number") return T.literal(Number.isSafeInteger(v.value));
129
+ return void 0;
130
+ }),
131
+ parseFloat: T.fnSig([T.string], T.number, T.never, parseFloatImpl),
132
+ parseInt: T.fnSig([T.string], T.number, T.never, parseIntImpl),
133
+ MAX_SAFE_INTEGER: T.number,
134
+ MIN_SAFE_INTEGER: T.number,
135
+ MAX_VALUE: T.number,
136
+ MIN_VALUE: T.number,
137
+ POSITIVE_INFINITY: T.number,
138
+ NEGATIVE_INFINITY: T.number,
139
+ NaN: T.number,
140
+ EPSILON: T.number
141
+ }),
142
+ // --- Boolean ---
143
+ Boolean: T.fnSig([T.unknown], T.boolean, T.never, (args) => {
144
+ const v = args[0];
145
+ if (v.kind === "literal") return T.literal(Boolean(v.value));
146
+ return void 0;
147
+ }),
148
+ // --- String ---
149
+ String: T.fnSig([T.unknown], T.string, T.never, (args) => {
150
+ const v = args[0];
151
+ if (v.kind === "literal" && v.value !== null && v.value !== void 0) return T.literal(String(v.value));
152
+ return void 0;
153
+ }),
154
+ // --- Array ---
155
+ Array: T.object({
156
+ isArray: T.fnSig([T.unknown], T.boolean, T.never, (args) => {
157
+ const v = args[0];
158
+ if (v.kind === "array" || v.kind === "tuple") return T.literal(true);
159
+ if (v.kind === "literal" || v.kind === "primitive" || v.kind === "object") return T.literal(false);
160
+ return void 0;
161
+ }),
162
+ from: T.fnSig([T.unknown], T.array(T.unknown)),
163
+ of: T.fnSig([T.unknown], T.array(T.unknown))
164
+ }),
165
+ // --- console ---
166
+ console: T.object(consoleMethods),
167
+ // --- Global functions ---
168
+ parseInt: T.fnSig([T.string, T.number], T.number, T.never, parseIntImpl),
169
+ parseFloat: T.fnSig([T.string], T.number, T.never, parseFloatImpl),
170
+ isNaN: T.fnSig([T.unknown], T.boolean, T.never, isNaNImpl),
171
+ isFinite: T.fnSig([T.unknown], T.boolean, T.never, isFiniteImpl),
172
+ encodeURI: T.fnSig([T.string], T.string, T.never, strToStrImpl(encodeURI)),
173
+ decodeURI: T.fnSig([T.string], T.string, T.instanceOf("URIError"), strToStrImpl(decodeURI)),
174
+ encodeURIComponent: T.fnSig([T.string], T.string, T.never, strToStrImpl(encodeURIComponent)),
175
+ decodeURIComponent: T.fnSig([T.string], T.string, T.instanceOf("URIError"), strToStrImpl(decodeURIComponent)),
176
+ // --- Error constructors ---
177
+ Error: T.fnSig([T.string], T.instanceOf("Error")),
178
+ TypeError: T.fnSig([T.string], T.instanceOf("TypeError")),
179
+ RangeError: T.fnSig([T.string], T.instanceOf("RangeError")),
180
+ SyntaxError: T.fnSig([T.string], T.instanceOf("SyntaxError")),
181
+ ReferenceError: T.fnSig([T.string], T.instanceOf("ReferenceError")),
182
+ URIError: T.fnSig([T.string], T.instanceOf("URIError")),
183
+ // --- Promise ---
184
+ Promise: T.object({
185
+ resolve: T.fnSig([T.unknown], T.promise(T.unknown), T.never, (args) => T.promise(args[0])),
186
+ reject: T.fnSig([T.unknown], T.promise(T.never)),
187
+ all: T.fnSig([T.array(T.promise(T.unknown))], T.promise(T.array(T.unknown))),
188
+ allSettled: T.fnSig([T.array(T.promise(T.unknown))], T.promise(T.array(T.unknown))),
189
+ race: T.fnSig([T.array(T.promise(T.unknown))], T.promise(T.unknown)),
190
+ any: T.fnSig([T.array(T.promise(T.unknown))], T.promise(T.unknown))
191
+ }),
192
+ // --- Date ---
193
+ Date: T.object({
194
+ now: T.fnSig([], T.number),
195
+ parse: T.fnSig([T.string], T.number),
196
+ UTC: T.fnSig([T.number, T.number], T.number)
197
+ }),
198
+ // --- Symbol ---
199
+ Symbol: T.fnSig([T.string], T.symbol),
200
+ // --- Reflect ---
201
+ Reflect: T.object({
202
+ apply: T.fnSig([T.unknown, T.unknown, T.array(T.unknown)], T.unknown),
203
+ construct: T.fnSig([T.unknown, T.array(T.unknown)], T.unknown),
204
+ defineProperty: T.fnSig([T.unknown, T.string, T.unknown], T.boolean),
205
+ deleteProperty: T.fnSig([T.unknown, T.string], T.boolean),
206
+ get: T.fnSig([T.unknown, T.string], T.unknown),
207
+ getOwnPropertyDescriptor: T.fnSig([T.unknown, T.string], T.union(T.unknown, T.undefined)),
208
+ getPrototypeOf: T.fnSig([T.unknown], T.union(T.unknown, T.null)),
209
+ has: T.fnSig([T.unknown, T.string], T.boolean),
210
+ isExtensible: T.fnSig([T.unknown], T.boolean),
211
+ ownKeys: T.fnSig([T.unknown], T.array(T.string)),
212
+ preventExtensions: T.fnSig([T.unknown], T.boolean),
213
+ set: T.fnSig([T.unknown, T.string, T.unknown], T.boolean),
214
+ setPrototypeOf: T.fnSig([T.unknown, T.unknown], T.boolean)
215
+ }),
216
+ // --- globalThis ---
217
+ globalThis: T.unknown,
218
+ undefined: T.undefined,
219
+ NaN: T.number,
220
+ Infinity: T.number
221
+ }
222
+ };
223
+ }
224
+
225
+ export {
226
+ defineEnv
227
+ };
package/dist/es.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import { TypeValue } from '@nudojs/core';
2
+
3
+ type EnvDefinition = {
4
+ globals: Record<string, TypeValue>;
5
+ modules?: Record<string, Record<string, TypeValue>>;
6
+ };
7
+ declare function defineEnv(): EnvDefinition;
8
+
9
+ export { type EnvDefinition, defineEnv };
package/dist/es.js ADDED
@@ -0,0 +1,6 @@
1
+ import {
2
+ defineEnv
3
+ } from "./chunk-VBTQ36SR.js";
4
+ export {
5
+ defineEnv
6
+ };
package/dist/node.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { EnvDefinition } from './es.js';
2
+ import '@nudojs/core';
3
+
4
+ declare function defineEnv(): EnvDefinition;
5
+
6
+ export { EnvDefinition, defineEnv };
package/dist/node.js ADDED
@@ -0,0 +1,372 @@
1
+ import {
2
+ defineEnv
3
+ } from "./chunk-VBTQ36SR.js";
4
+
5
+ // src/node.ts
6
+ import { T } from "@nudojs/core";
7
+ import nodePath from "path";
8
+ function litStr(tv) {
9
+ return tv.kind === "literal" && typeof tv.value === "string" ? tv.value : void 0;
10
+ }
11
+ function allLitStr(args) {
12
+ const result = [];
13
+ for (const a of args) {
14
+ const s = litStr(a);
15
+ if (s === void 0) return void 0;
16
+ result.push(s);
17
+ }
18
+ return result;
19
+ }
20
+ function defineEnv2() {
21
+ const esEnv = defineEnv();
22
+ const BufferInstance = T.instanceOf("Buffer", {
23
+ toString: T.fnSig([T.string], T.string),
24
+ toJSON: T.fnSig([], T.object({ type: T.string, data: T.array(T.number) })),
25
+ length: T.number,
26
+ slice: T.fnSig([T.number, T.number], T.instanceOf("Buffer")),
27
+ copy: T.fnSig([T.unknown, T.number, T.number, T.number], T.number),
28
+ write: T.fnSig([T.string, T.number, T.number, T.string], T.number),
29
+ readUInt8: T.fnSig([T.number], T.number),
30
+ readUInt16BE: T.fnSig([T.number], T.number),
31
+ readUInt16LE: T.fnSig([T.number], T.number),
32
+ readUInt32BE: T.fnSig([T.number], T.number),
33
+ readUInt32LE: T.fnSig([T.number], T.number),
34
+ readInt8: T.fnSig([T.number], T.number),
35
+ readInt16BE: T.fnSig([T.number], T.number),
36
+ readInt16LE: T.fnSig([T.number], T.number),
37
+ readInt32BE: T.fnSig([T.number], T.number),
38
+ readInt32LE: T.fnSig([T.number], T.number),
39
+ includes: T.fnSig([T.union(T.string, T.number)], T.boolean),
40
+ indexOf: T.fnSig([T.union(T.string, T.number)], T.number),
41
+ fill: T.fnSig([T.union(T.string, T.number)], T.instanceOf("Buffer")),
42
+ equals: T.fnSig([T.instanceOf("Buffer")], T.boolean),
43
+ compare: T.fnSig([T.instanceOf("Buffer")], T.number),
44
+ subarray: T.fnSig([T.number, T.number], T.instanceOf("Buffer"))
45
+ });
46
+ const fsModule = {
47
+ readFileSync: T.fnSig([T.string, T.union(T.string, T.object({}))], T.union(T.string, BufferInstance)),
48
+ writeFileSync: T.fnSig([T.string, T.union(T.string, BufferInstance)], T.undefined),
49
+ appendFileSync: T.fnSig([T.string, T.union(T.string, BufferInstance)], T.undefined),
50
+ existsSync: T.fnSig([T.string], T.boolean),
51
+ mkdirSync: T.fnSig([T.string, T.unknown], T.union(T.string, T.undefined)),
52
+ rmdirSync: T.fnSig([T.string], T.undefined),
53
+ rmSync: T.fnSig([T.string, T.unknown], T.undefined),
54
+ unlinkSync: T.fnSig([T.string], T.undefined),
55
+ renameSync: T.fnSig([T.string, T.string], T.undefined),
56
+ copyFileSync: T.fnSig([T.string, T.string], T.undefined),
57
+ statSync: T.fnSig([T.string], T.object({
58
+ isFile: T.fnSig([], T.boolean),
59
+ isDirectory: T.fnSig([], T.boolean),
60
+ isSymbolicLink: T.fnSig([], T.boolean),
61
+ size: T.number,
62
+ mtime: T.unknown,
63
+ ctime: T.unknown,
64
+ atime: T.unknown,
65
+ birthtime: T.unknown,
66
+ mode: T.number,
67
+ uid: T.number,
68
+ gid: T.number
69
+ })),
70
+ readdirSync: T.fnSig([T.string, T.unknown], T.array(T.union(T.string, T.unknown))),
71
+ realpathSync: T.fnSig([T.string], T.string),
72
+ readlinkSync: T.fnSig([T.string], T.string),
73
+ symlinkSync: T.fnSig([T.string, T.string], T.undefined),
74
+ chmodSync: T.fnSig([T.string, T.number], T.undefined),
75
+ chownSync: T.fnSig([T.string, T.number, T.number], T.undefined),
76
+ accessSync: T.fnSig([T.string, T.number], T.undefined),
77
+ readFile: T.fnSig([T.string, T.unknown], T.promise(T.union(T.string, BufferInstance))),
78
+ writeFile: T.fnSig([T.string, T.union(T.string, BufferInstance)], T.promise(T.undefined)),
79
+ mkdir: T.fnSig([T.string, T.unknown], T.promise(T.union(T.string, T.undefined))),
80
+ rm: T.fnSig([T.string, T.unknown], T.promise(T.undefined)),
81
+ stat: T.fnSig([T.string], T.promise(T.unknown)),
82
+ readdir: T.fnSig([T.string, T.unknown], T.promise(T.array(T.unknown))),
83
+ access: T.fnSig([T.string, T.number], T.promise(T.undefined))
84
+ };
85
+ const strImpl1 = (fn) => (args) => {
86
+ const a = litStr(args[0]);
87
+ return a !== void 0 ? T.literal(fn(a)) : void 0;
88
+ };
89
+ const pathModule = {
90
+ join: T.fnSig([T.string, T.string], T.string, T.never, (args) => {
91
+ const strs = allLitStr(args);
92
+ return strs ? T.literal(nodePath.join(...strs)) : void 0;
93
+ }),
94
+ resolve: T.fnSig([T.string], T.string, T.never, (args) => {
95
+ const strs = allLitStr(args);
96
+ return strs ? T.literal(nodePath.resolve(...strs)) : void 0;
97
+ }),
98
+ dirname: T.fnSig([T.string], T.string, T.never, strImpl1(nodePath.dirname)),
99
+ basename: T.fnSig([T.string, T.string], T.string, T.never, (args) => {
100
+ const p = litStr(args[0]);
101
+ if (p === void 0) return void 0;
102
+ const ext = args[1] !== void 0 ? litStr(args[1]) : void 0;
103
+ return T.literal(ext !== void 0 ? nodePath.basename(p, ext) : nodePath.basename(p));
104
+ }),
105
+ extname: T.fnSig([T.string], T.string, T.never, strImpl1(nodePath.extname)),
106
+ relative: T.fnSig([T.string, T.string], T.string, T.never, (args) => {
107
+ const from = litStr(args[0]);
108
+ const to = litStr(args[1]);
109
+ return from !== void 0 && to !== void 0 ? T.literal(nodePath.relative(from, to)) : void 0;
110
+ }),
111
+ normalize: T.fnSig([T.string], T.string, T.never, strImpl1(nodePath.normalize)),
112
+ isAbsolute: T.fnSig([T.string], T.boolean, T.never, (args) => {
113
+ const p = litStr(args[0]);
114
+ return p !== void 0 ? T.literal(nodePath.isAbsolute(p)) : void 0;
115
+ }),
116
+ parse: T.fnSig([T.string], T.object({
117
+ root: T.string,
118
+ dir: T.string,
119
+ base: T.string,
120
+ ext: T.string,
121
+ name: T.string
122
+ }), T.never, (args) => {
123
+ const p = litStr(args[0]);
124
+ if (p === void 0) return void 0;
125
+ const parsed = nodePath.parse(p);
126
+ return T.object({
127
+ root: T.literal(parsed.root),
128
+ dir: T.literal(parsed.dir),
129
+ base: T.literal(parsed.base),
130
+ ext: T.literal(parsed.ext),
131
+ name: T.literal(parsed.name)
132
+ });
133
+ }),
134
+ format: T.fnSig([T.object({})], T.string),
135
+ sep: T.string,
136
+ delimiter: T.string,
137
+ posix: T.unknown,
138
+ win32: T.unknown
139
+ };
140
+ const osModule = {
141
+ platform: T.fnSig([], T.string),
142
+ arch: T.fnSig([], T.string),
143
+ type: T.fnSig([], T.string),
144
+ release: T.fnSig([], T.string),
145
+ hostname: T.fnSig([], T.string),
146
+ homedir: T.fnSig([], T.string),
147
+ tmpdir: T.fnSig([], T.string),
148
+ cpus: T.fnSig([], T.array(T.object({
149
+ model: T.string,
150
+ speed: T.number
151
+ }))),
152
+ totalmem: T.fnSig([], T.number),
153
+ freemem: T.fnSig([], T.number),
154
+ uptime: T.fnSig([], T.number),
155
+ loadavg: T.fnSig([], T.tuple([T.number, T.number, T.number])),
156
+ networkInterfaces: T.fnSig([], T.unknown),
157
+ userInfo: T.fnSig([], T.object({
158
+ username: T.string,
159
+ uid: T.number,
160
+ gid: T.number,
161
+ shell: T.union(T.string, T.null),
162
+ homedir: T.string
163
+ })),
164
+ EOL: T.string
165
+ };
166
+ const nodeUrlObj = T.object({
167
+ href: T.string,
168
+ origin: T.string,
169
+ protocol: T.string,
170
+ username: T.string,
171
+ password: T.string,
172
+ host: T.string,
173
+ hostname: T.string,
174
+ port: T.string,
175
+ pathname: T.string,
176
+ search: T.string,
177
+ hash: T.string,
178
+ toString: T.fnSig([], T.string),
179
+ toJSON: T.fnSig([], T.string)
180
+ });
181
+ const urlModule = {
182
+ URL: T.fnSig([T.string, T.string], nodeUrlObj, T.instanceOf("TypeError"), (args) => {
183
+ const href = litStr(args[0]);
184
+ const base = args[1] !== void 0 ? litStr(args[1]) : void 0;
185
+ if (href === void 0) return void 0;
186
+ try {
187
+ const url = base !== void 0 ? new URL(href, base) : new URL(href);
188
+ return T.object({
189
+ href: T.literal(url.href),
190
+ origin: T.literal(url.origin),
191
+ protocol: T.literal(url.protocol),
192
+ username: T.literal(url.username),
193
+ password: T.literal(url.password),
194
+ host: T.literal(url.host),
195
+ hostname: T.literal(url.hostname),
196
+ port: T.literal(url.port),
197
+ pathname: T.literal(url.pathname),
198
+ search: T.literal(url.search),
199
+ hash: T.literal(url.hash),
200
+ toString: T.fnSig([], T.string, T.never, () => T.literal(url.href)),
201
+ toJSON: T.fnSig([], T.string, T.never, () => T.literal(url.href))
202
+ });
203
+ } catch {
204
+ return void 0;
205
+ }
206
+ }),
207
+ URLSearchParams: T.fnSig([T.unknown], T.object({
208
+ get: T.fnSig([T.string], T.union(T.string, T.null)),
209
+ has: T.fnSig([T.string], T.boolean),
210
+ set: T.fnSig([T.string, T.string], T.undefined),
211
+ append: T.fnSig([T.string, T.string], T.undefined),
212
+ delete: T.fnSig([T.string], T.undefined),
213
+ toString: T.fnSig([], T.string)
214
+ })),
215
+ fileURLToPath: T.fnSig([T.string], T.string, T.never, strImpl1((s) => {
216
+ try {
217
+ return new URL(s).pathname;
218
+ } catch {
219
+ return s;
220
+ }
221
+ })),
222
+ pathToFileURL: T.fnSig([T.string], T.object({ href: T.string }), T.never, (args) => {
223
+ const p = litStr(args[0]);
224
+ if (p === void 0) return void 0;
225
+ try {
226
+ const href = `file://${p.startsWith("/") ? "" : "/"}${p}`;
227
+ return T.object({ href: T.literal(href) });
228
+ } catch {
229
+ return void 0;
230
+ }
231
+ }),
232
+ format: T.fnSig([T.unknown], T.string)
233
+ };
234
+ const cryptoModule = {
235
+ randomBytes: T.fnSig([T.number], BufferInstance),
236
+ randomUUID: T.fnSig([], T.string),
237
+ randomInt: T.fnSig([T.number, T.number], T.number),
238
+ createHash: T.fnSig([T.string], T.object({
239
+ update: T.fnSig([T.union(T.string, BufferInstance)], T.unknown),
240
+ digest: T.fnSig([T.string], T.union(T.string, BufferInstance))
241
+ })),
242
+ createHmac: T.fnSig([T.string, T.union(T.string, BufferInstance)], T.object({
243
+ update: T.fnSig([T.union(T.string, BufferInstance)], T.unknown),
244
+ digest: T.fnSig([T.string], T.union(T.string, BufferInstance))
245
+ })),
246
+ createCipheriv: T.fnSig([T.string, T.unknown, T.unknown], T.unknown),
247
+ createDecipheriv: T.fnSig([T.string, T.unknown, T.unknown], T.unknown),
248
+ pbkdf2Sync: T.fnSig([T.string, T.string, T.number, T.number, T.string], BufferInstance),
249
+ scryptSync: T.fnSig([T.string, T.string, T.number], BufferInstance),
250
+ timingSafeEqual: T.fnSig([BufferInstance, BufferInstance], T.boolean)
251
+ };
252
+ const childProcessModule = {
253
+ execSync: T.fnSig([T.string, T.unknown], T.union(T.string, BufferInstance)),
254
+ execFileSync: T.fnSig([T.string, T.array(T.string), T.unknown], T.union(T.string, BufferInstance)),
255
+ spawnSync: T.fnSig([T.string, T.array(T.string), T.unknown], T.object({
256
+ status: T.union(T.number, T.null),
257
+ stdout: T.union(T.string, BufferInstance),
258
+ stderr: T.union(T.string, BufferInstance),
259
+ error: T.union(T.instanceOf("Error"), T.undefined)
260
+ })),
261
+ exec: T.fnSig([T.string, T.unknown], T.unknown),
262
+ spawn: T.fnSig([T.string, T.array(T.string), T.unknown], T.unknown),
263
+ fork: T.fnSig([T.string, T.array(T.string), T.unknown], T.unknown)
264
+ };
265
+ const utilModule = {
266
+ promisify: T.fnSig([T.unknown], T.unknown),
267
+ inspect: T.fnSig([T.unknown, T.unknown], T.string),
268
+ format: T.fnSig([T.string], T.string),
269
+ types: T.object({
270
+ isDate: T.fnSig([T.unknown], T.boolean),
271
+ isRegExp: T.fnSig([T.unknown], T.boolean),
272
+ isPromise: T.fnSig([T.unknown], T.boolean),
273
+ isArrayBuffer: T.fnSig([T.unknown], T.boolean),
274
+ isTypedArray: T.fnSig([T.unknown], T.boolean)
275
+ }),
276
+ TextEncoder: T.fnSig([], T.object({
277
+ encode: T.fnSig([T.string], T.unknown)
278
+ })),
279
+ TextDecoder: T.fnSig([T.string], T.object({
280
+ decode: T.fnSig([T.unknown], T.string)
281
+ }))
282
+ };
283
+ const nodeGlobals = {
284
+ process: T.object({
285
+ env: T.object({}),
286
+ argv: T.array(T.string),
287
+ argv0: T.string,
288
+ execArgv: T.array(T.string),
289
+ execPath: T.string,
290
+ cwd: T.fnSig([], T.string),
291
+ chdir: T.fnSig([T.string], T.undefined),
292
+ exit: T.fnSig([T.number], T.never),
293
+ pid: T.number,
294
+ ppid: T.number,
295
+ platform: T.string,
296
+ arch: T.string,
297
+ version: T.string,
298
+ versions: T.object({}),
299
+ stdout: T.object({ write: T.fnSig([T.string], T.boolean) }),
300
+ stderr: T.object({ write: T.fnSig([T.string], T.boolean) }),
301
+ stdin: T.object({ on: T.fnSig([T.string, T.unknown], T.unknown) }),
302
+ hrtime: T.object({
303
+ bigint: T.fnSig([], T.bigint)
304
+ }),
305
+ memoryUsage: T.fnSig([], T.object({
306
+ rss: T.number,
307
+ heapTotal: T.number,
308
+ heapUsed: T.number,
309
+ external: T.number,
310
+ arrayBuffers: T.number
311
+ })),
312
+ cpuUsage: T.fnSig([], T.object({ user: T.number, system: T.number })),
313
+ uptime: T.fnSig([], T.number),
314
+ nextTick: T.fnSig([T.unknown], T.undefined),
315
+ on: T.fnSig([T.string, T.unknown], T.unknown),
316
+ once: T.fnSig([T.string, T.unknown], T.unknown),
317
+ off: T.fnSig([T.string, T.unknown], T.unknown),
318
+ emit: T.fnSig([T.string], T.boolean)
319
+ }),
320
+ Buffer: T.object({
321
+ from: T.fnSig([T.union(T.string, T.array(T.number))], BufferInstance),
322
+ alloc: T.fnSig([T.number], BufferInstance),
323
+ allocUnsafe: T.fnSig([T.number], BufferInstance),
324
+ isBuffer: T.fnSig([T.unknown], T.boolean),
325
+ byteLength: T.fnSig([T.union(T.string, BufferInstance)], T.number),
326
+ concat: T.fnSig([T.array(BufferInstance)], BufferInstance),
327
+ compare: T.fnSig([BufferInstance, BufferInstance], T.number)
328
+ }),
329
+ __dirname: T.string,
330
+ __filename: T.string,
331
+ setTimeout: T.fnSig([T.unknown, T.number], T.unknown),
332
+ setInterval: T.fnSig([T.unknown, T.number], T.unknown),
333
+ setImmediate: T.fnSig([T.unknown], T.unknown),
334
+ clearTimeout: T.fnSig([T.unknown], T.undefined),
335
+ clearInterval: T.fnSig([T.unknown], T.undefined),
336
+ clearImmediate: T.fnSig([T.unknown], T.undefined),
337
+ queueMicrotask: T.fnSig([T.unknown], T.undefined),
338
+ structuredClone: T.fnSig([T.unknown], T.unknown)
339
+ };
340
+ const modules = {
341
+ fs: fsModule,
342
+ "node:fs": fsModule,
343
+ "node:fs/promises": {
344
+ readFile: fsModule.readFile,
345
+ writeFile: fsModule.writeFile,
346
+ mkdir: fsModule.mkdir,
347
+ rm: fsModule.rm,
348
+ stat: fsModule.stat,
349
+ readdir: fsModule.readdir,
350
+ access: fsModule.access
351
+ },
352
+ path: pathModule,
353
+ "node:path": pathModule,
354
+ os: osModule,
355
+ "node:os": osModule,
356
+ url: urlModule,
357
+ "node:url": urlModule,
358
+ crypto: cryptoModule,
359
+ "node:crypto": cryptoModule,
360
+ child_process: childProcessModule,
361
+ "node:child_process": childProcessModule,
362
+ util: utilModule,
363
+ "node:util": utilModule
364
+ };
365
+ return {
366
+ globals: { ...esEnv.globals, ...nodeGlobals },
367
+ modules
368
+ };
369
+ }
370
+ export {
371
+ defineEnv2 as defineEnv
372
+ };
package/dist/web.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { EnvDefinition } from './es.js';
2
+ import '@nudojs/core';
3
+
4
+ declare function defineEnv(): EnvDefinition;
5
+
6
+ export { EnvDefinition, defineEnv };
package/dist/web.js ADDED
@@ -0,0 +1,306 @@
1
+ import {
2
+ defineEnv
3
+ } from "./chunk-VBTQ36SR.js";
4
+
5
+ // src/web.ts
6
+ import { T } from "@nudojs/core";
7
+ function litStr(tv) {
8
+ return tv.kind === "literal" && typeof tv.value === "string" ? tv.value : void 0;
9
+ }
10
+ function makeURLObj(url) {
11
+ return T.object({
12
+ href: T.literal(url.href),
13
+ origin: T.literal(url.origin),
14
+ protocol: T.literal(url.protocol),
15
+ username: T.literal(url.username),
16
+ password: T.literal(url.password),
17
+ host: T.literal(url.host),
18
+ hostname: T.literal(url.hostname),
19
+ port: T.literal(url.port),
20
+ pathname: T.literal(url.pathname),
21
+ search: T.literal(url.search),
22
+ searchParams: T.object({
23
+ append: T.fnSig([T.string, T.string], T.undefined),
24
+ delete: T.fnSig([T.string], T.undefined),
25
+ get: T.fnSig([T.string], T.union(T.string, T.null)),
26
+ getAll: T.fnSig([T.string], T.array(T.string)),
27
+ has: T.fnSig([T.string], T.boolean),
28
+ set: T.fnSig([T.string, T.string], T.undefined),
29
+ sort: T.fnSig([], T.undefined),
30
+ toString: T.fnSig([], T.string, T.never, () => T.literal(url.searchParams.toString())),
31
+ entries: T.fnSig([], T.unknown),
32
+ keys: T.fnSig([], T.unknown),
33
+ values: T.fnSig([], T.unknown),
34
+ forEach: T.fnSig([T.unknown], T.undefined),
35
+ size: T.literal(url.searchParams.size)
36
+ }),
37
+ hash: T.literal(url.hash),
38
+ toString: T.fnSig([], T.string, T.never, () => T.literal(url.href)),
39
+ toJSON: T.fnSig([], T.string, T.never, () => T.literal(url.href))
40
+ });
41
+ }
42
+ function defineEnv2() {
43
+ const esEnv = defineEnv();
44
+ const Headers = T.object({
45
+ append: T.fnSig([T.string, T.string], T.undefined),
46
+ delete: T.fnSig([T.string], T.undefined),
47
+ get: T.fnSig([T.string], T.union(T.string, T.null)),
48
+ has: T.fnSig([T.string], T.boolean),
49
+ set: T.fnSig([T.string, T.string], T.undefined),
50
+ forEach: T.fnSig([T.unknown], T.undefined),
51
+ entries: T.fnSig([], T.unknown),
52
+ keys: T.fnSig([], T.unknown),
53
+ values: T.fnSig([], T.unknown)
54
+ });
55
+ const Body = {
56
+ json: T.fnSig([], T.promise(T.unknown)),
57
+ text: T.fnSig([], T.promise(T.string)),
58
+ arrayBuffer: T.fnSig([], T.promise(T.unknown)),
59
+ blob: T.fnSig([], T.promise(T.unknown)),
60
+ formData: T.fnSig([], T.promise(T.unknown)),
61
+ clone: T.fnSig([], T.unknown),
62
+ ok: T.boolean,
63
+ status: T.number,
64
+ statusText: T.string,
65
+ headers: Headers,
66
+ url: T.string,
67
+ redirected: T.boolean,
68
+ type: T.string,
69
+ bodyUsed: T.boolean
70
+ };
71
+ const Response = T.object(Body);
72
+ const Request = T.object({
73
+ ...Body,
74
+ method: T.string,
75
+ url: T.string,
76
+ headers: Headers,
77
+ body: T.union(T.unknown, T.null),
78
+ mode: T.string,
79
+ credentials: T.string,
80
+ cache: T.string,
81
+ redirect: T.string,
82
+ referrer: T.string,
83
+ integrity: T.string,
84
+ signal: T.unknown,
85
+ clone: T.fnSig([], T.unknown)
86
+ });
87
+ const URLSearchParams = T.object({
88
+ append: T.fnSig([T.string, T.string], T.undefined),
89
+ delete: T.fnSig([T.string], T.undefined),
90
+ get: T.fnSig([T.string], T.union(T.string, T.null)),
91
+ getAll: T.fnSig([T.string], T.array(T.string)),
92
+ has: T.fnSig([T.string], T.boolean),
93
+ set: T.fnSig([T.string, T.string], T.undefined),
94
+ sort: T.fnSig([], T.undefined),
95
+ toString: T.fnSig([], T.string),
96
+ entries: T.fnSig([], T.unknown),
97
+ keys: T.fnSig([], T.unknown),
98
+ values: T.fnSig([], T.unknown),
99
+ forEach: T.fnSig([T.unknown], T.undefined),
100
+ size: T.number
101
+ });
102
+ const URLObj = T.object({
103
+ href: T.string,
104
+ origin: T.string,
105
+ protocol: T.string,
106
+ username: T.string,
107
+ password: T.string,
108
+ host: T.string,
109
+ hostname: T.string,
110
+ port: T.string,
111
+ pathname: T.string,
112
+ search: T.string,
113
+ searchParams: URLSearchParams,
114
+ hash: T.string,
115
+ toString: T.fnSig([], T.string),
116
+ toJSON: T.fnSig([], T.string)
117
+ });
118
+ const AbortController = T.object({
119
+ signal: T.unknown,
120
+ abort: T.fnSig([], T.undefined)
121
+ });
122
+ const Storage = T.object({
123
+ getItem: T.fnSig([T.string], T.union(T.string, T.null)),
124
+ setItem: T.fnSig([T.string, T.string], T.undefined),
125
+ removeItem: T.fnSig([T.string], T.undefined),
126
+ clear: T.fnSig([], T.undefined),
127
+ key: T.fnSig([T.number], T.union(T.string, T.null)),
128
+ length: T.number
129
+ });
130
+ const EventTarget = T.object({
131
+ addEventListener: T.fnSig([T.string, T.unknown], T.undefined),
132
+ removeEventListener: T.fnSig([T.string, T.unknown], T.undefined),
133
+ dispatchEvent: T.fnSig([T.unknown], T.boolean)
134
+ });
135
+ const webGlobals = {
136
+ // --- Fetch API ---
137
+ fetch: T.fnSig([T.union(T.string, Request)], T.promise(Response)),
138
+ Request: T.fnSig([T.string, T.unknown], Request),
139
+ Response: T.object({
140
+ json: T.fnSig([T.unknown], Response),
141
+ redirect: T.fnSig([T.string, T.number], Response),
142
+ error: T.fnSig([], Response)
143
+ }),
144
+ Headers: T.fnSig([T.unknown], Headers),
145
+ // --- URL ---
146
+ URL: T.fnSig([T.string, T.string], URLObj, T.instanceOf("TypeError"), (args) => {
147
+ const href = litStr(args[0]);
148
+ const base = args[1] !== void 0 ? litStr(args[1]) : void 0;
149
+ if (href === void 0) return void 0;
150
+ try {
151
+ const url = base !== void 0 ? new URL(href, base) : new URL(href);
152
+ return makeURLObj(url);
153
+ } catch {
154
+ return void 0;
155
+ }
156
+ }),
157
+ URLSearchParams: T.fnSig([T.unknown], URLSearchParams),
158
+ // --- Timers ---
159
+ setTimeout: T.fnSig([T.unknown, T.number], T.number),
160
+ setInterval: T.fnSig([T.unknown, T.number], T.number),
161
+ clearTimeout: T.fnSig([T.number], T.undefined),
162
+ clearInterval: T.fnSig([T.number], T.undefined),
163
+ queueMicrotask: T.fnSig([T.unknown], T.undefined),
164
+ requestAnimationFrame: T.fnSig([T.unknown], T.number),
165
+ cancelAnimationFrame: T.fnSig([T.number], T.undefined),
166
+ // --- Abort ---
167
+ AbortController: T.fnSig([], AbortController),
168
+ AbortSignal: T.object({
169
+ abort: T.fnSig([], T.unknown),
170
+ timeout: T.fnSig([T.number], T.unknown)
171
+ }),
172
+ // --- Encoding ---
173
+ atob: T.fnSig([T.string], T.string, T.never, (args) => {
174
+ const s = litStr(args[0]);
175
+ if (s === void 0) return void 0;
176
+ try {
177
+ return T.literal(atob(s));
178
+ } catch {
179
+ return void 0;
180
+ }
181
+ }),
182
+ btoa: T.fnSig([T.string], T.string, T.never, (args) => {
183
+ const s = litStr(args[0]);
184
+ if (s === void 0) return void 0;
185
+ try {
186
+ return T.literal(btoa(s));
187
+ } catch {
188
+ return void 0;
189
+ }
190
+ }),
191
+ TextEncoder: T.fnSig([], T.object({
192
+ encode: T.fnSig([T.string], T.unknown),
193
+ encodeInto: T.fnSig([T.string, T.unknown], T.unknown)
194
+ })),
195
+ TextDecoder: T.fnSig([T.string], T.object({
196
+ decode: T.fnSig([T.unknown], T.string),
197
+ encoding: T.string,
198
+ fatal: T.boolean,
199
+ ignoreBOM: T.boolean
200
+ })),
201
+ // --- Storage ---
202
+ localStorage: Storage,
203
+ sessionStorage: Storage,
204
+ // --- DOM (minimal) ---
205
+ document: T.object({
206
+ getElementById: T.fnSig([T.string], T.union(T.unknown, T.null)),
207
+ querySelector: T.fnSig([T.string], T.union(T.unknown, T.null)),
208
+ querySelectorAll: T.fnSig([T.string], T.unknown),
209
+ createElement: T.fnSig([T.string], T.unknown),
210
+ createTextNode: T.fnSig([T.string], T.unknown),
211
+ body: T.unknown,
212
+ head: T.unknown,
213
+ documentElement: T.unknown,
214
+ title: T.string,
215
+ cookie: T.string,
216
+ readyState: T.string,
217
+ addEventListener: T.fnSig([T.string, T.unknown], T.undefined),
218
+ removeEventListener: T.fnSig([T.string, T.unknown], T.undefined)
219
+ }),
220
+ // --- Window ---
221
+ window: T.unknown,
222
+ self: T.unknown,
223
+ navigator: T.object({
224
+ userAgent: T.string,
225
+ language: T.string,
226
+ languages: T.array(T.string),
227
+ onLine: T.boolean,
228
+ platform: T.string,
229
+ clipboard: T.object({
230
+ readText: T.fnSig([], T.promise(T.string)),
231
+ writeText: T.fnSig([T.string], T.promise(T.undefined))
232
+ })
233
+ }),
234
+ location: T.object({
235
+ href: T.string,
236
+ origin: T.string,
237
+ protocol: T.string,
238
+ host: T.string,
239
+ hostname: T.string,
240
+ port: T.string,
241
+ pathname: T.string,
242
+ search: T.string,
243
+ hash: T.string,
244
+ assign: T.fnSig([T.string], T.undefined),
245
+ replace: T.fnSig([T.string], T.undefined),
246
+ reload: T.fnSig([], T.undefined)
247
+ }),
248
+ history: T.object({
249
+ length: T.number,
250
+ state: T.unknown,
251
+ back: T.fnSig([], T.undefined),
252
+ forward: T.fnSig([], T.undefined),
253
+ go: T.fnSig([T.number], T.undefined),
254
+ pushState: T.fnSig([T.unknown, T.string, T.string], T.undefined),
255
+ replaceState: T.fnSig([T.unknown, T.string, T.string], T.undefined)
256
+ }),
257
+ // --- Events ---
258
+ EventTarget: T.fnSig([], EventTarget),
259
+ Event: T.fnSig([T.string, T.unknown], T.object({
260
+ type: T.string,
261
+ target: T.union(T.unknown, T.null),
262
+ currentTarget: T.union(T.unknown, T.null),
263
+ bubbles: T.boolean,
264
+ cancelable: T.boolean,
265
+ defaultPrevented: T.boolean,
266
+ preventDefault: T.fnSig([], T.undefined),
267
+ stopPropagation: T.fnSig([], T.undefined),
268
+ stopImmediatePropagation: T.fnSig([], T.undefined)
269
+ })),
270
+ CustomEvent: T.fnSig([T.string, T.unknown], T.unknown),
271
+ // --- Structured clone ---
272
+ structuredClone: T.fnSig([T.unknown], T.unknown),
273
+ // --- Performance ---
274
+ performance: T.object({
275
+ now: T.fnSig([], T.number),
276
+ mark: T.fnSig([T.string], T.undefined),
277
+ measure: T.fnSig([T.string, T.string, T.string], T.unknown),
278
+ getEntriesByName: T.fnSig([T.string], T.array(T.unknown)),
279
+ getEntriesByType: T.fnSig([T.string], T.array(T.unknown)),
280
+ clearMarks: T.fnSig([], T.undefined),
281
+ clearMeasures: T.fnSig([], T.undefined),
282
+ timeOrigin: T.number
283
+ }),
284
+ // --- Crypto ---
285
+ crypto: T.object({
286
+ randomUUID: T.fnSig([], T.string),
287
+ getRandomValues: T.fnSig([T.unknown], T.unknown),
288
+ subtle: T.object({
289
+ digest: T.fnSig([T.string, T.unknown], T.promise(T.unknown)),
290
+ encrypt: T.fnSig([T.unknown, T.unknown, T.unknown], T.promise(T.unknown)),
291
+ decrypt: T.fnSig([T.unknown, T.unknown, T.unknown], T.promise(T.unknown)),
292
+ sign: T.fnSig([T.unknown, T.unknown, T.unknown], T.promise(T.unknown)),
293
+ verify: T.fnSig([T.unknown, T.unknown, T.unknown, T.unknown], T.promise(T.boolean)),
294
+ generateKey: T.fnSig([T.unknown, T.boolean, T.array(T.string)], T.promise(T.unknown)),
295
+ importKey: T.fnSig([T.string, T.unknown, T.unknown, T.boolean, T.array(T.string)], T.promise(T.unknown)),
296
+ exportKey: T.fnSig([T.string, T.unknown], T.promise(T.unknown))
297
+ })
298
+ })
299
+ };
300
+ return {
301
+ globals: { ...esEnv.globals, ...webGlobals }
302
+ };
303
+ }
304
+ export {
305
+ defineEnv2 as defineEnv
306
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nudojs/env",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "ES standard, Web platform, and Node.js API type definitions for the Nudo inference engine",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -20,9 +20,9 @@
20
20
  "registry": "https://registry.npmjs.org"
21
21
  },
22
22
  "dependencies": {
23
- "@nudojs/core": "workspace:*"
23
+ "@nudojs/core": "0.3.0"
24
24
  },
25
25
  "scripts": {
26
26
  "build": "tsup src/es.ts src/web.ts src/node.ts --format esm --dts"
27
27
  }
28
- }
28
+ }