@pkmn/engine 0.1.0-dev.6d566713 → 0.1.0-dev.6ebbd3bc
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/README.md +5 -4
- package/build/pkg/addon/browser.d.ts +3 -0
- package/build/pkg/addon/browser.js +44 -0
- package/build/pkg/addon/browser.js.map +1 -0
- package/build/pkg/addon/node.d.ts +3 -0
- package/build/pkg/addon/node.js +97 -0
- package/build/pkg/addon/node.js.map +1 -0
- package/build/pkg/addon/wasm.d.ts +2 -0
- package/build/pkg/addon/wasm.js +53 -0
- package/build/pkg/addon/wasm.js.map +1 -0
- package/build/pkg/addon.d.ts +25 -3
- package/build/pkg/addon.js +34 -65
- package/build/pkg/addon.js.map +1 -1
- package/build/pkg/data/layout.json +15 -2
- package/build/pkg/data/protocol.json +23 -9
- package/build/pkg/data.d.ts +23 -1
- package/build/pkg/data.js.map +1 -1
- package/build/pkg/gen1.d.ts +13 -17
- package/build/pkg/gen1.js +6 -10
- package/build/pkg/gen1.js.map +1 -1
- package/build/pkg/index.d.ts +37 -89
- package/build/pkg/index.js +6 -63
- package/build/pkg/index.js.map +1 -1
- package/build/pkg/protocol.d.ts +20 -1
- package/build/pkg/protocol.js +105 -103
- package/build/pkg/protocol.js.map +1 -1
- package/build/tools/debug.js +35 -69
- package/build/tools/debug.js.map +1 -1
- package/build/tools/display/debug.jsx +141 -0
- package/build/tools/display/debug.jsx.map +1 -0
- package/build/tools/display/index.js +142 -0
- package/build/tools/display/index.js.map +1 -0
- package/build/tools/display/ui.jsx +349 -0
- package/build/tools/display/ui.jsx.map +1 -0
- package/build/tools/display/util.js +18 -0
- package/build/tools/display/util.js.map +1 -0
- package/build.zig +150 -71
- package/package.json +51 -135
- package/src/bin/install-pkmn-engine +2 -2
- package/src/bin/pkmn-debug +1 -1
- package/src/lib/bindings/c.zig +254 -0
- package/src/lib/bindings/node.zig +121 -0
- package/src/lib/bindings/wasm.zig +59 -0
- package/src/lib/common/array.zig +1 -1
- package/src/lib/common/debug.zig +39 -8
- package/src/lib/common/optional.zig +1 -1
- package/src/lib/common/options.zig +4 -0
- package/src/lib/common/protocol.zig +4 -8
- package/src/lib/common/rational.zig +7 -5
- package/src/lib/common/rng.zig +1 -3
- package/src/lib/common/util.zig +1 -1
- package/src/lib/gen1/calc.zig +200 -51
- package/src/lib/gen1/chance.zig +40 -22
- package/src/lib/gen1/data/moves.zig +2 -4
- package/src/lib/gen1/data/species.zig +1 -3
- package/src/lib/gen1/data/types.zig +1 -2
- package/src/lib/gen1/data.zig +7 -11
- package/src/lib/gen1/helpers.zig +5 -18
- package/src/lib/gen1/mechanics.zig +107 -79
- package/src/lib/gen2/calc.zig +9 -17
- package/src/lib/gen2/data/items.zig +1 -3
- package/src/lib/gen2/data/moves.zig +2 -4
- package/src/lib/gen2/data/species.zig +1 -3
- package/src/lib/gen2/data/types.zig +1 -2
- package/src/lib/gen2/data.zig +11 -15
- package/src/lib/gen2/generated.zig +18 -23
- package/src/lib/gen2/helpers.zig +5 -12
- package/src/lib/gen2/mechanics.zig +41 -38
- package/src/lib/node.zig +3 -116
- package/src/lib/pkmn.zig +7 -2
- package/src/lib/wasm.zig +13 -9
- package/src/tools/display/dom.ts +96 -0
- package/src/tools/display/ui.css +354 -0
- package/build/test/display.js +0 -405
- package/build/test/display.js.map +0 -1
- package/src/test/display/pkmn.html.tmpl +0 -368
package/build.zig
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const std = @import("std");
|
|
2
1
|
const builtin = @import("builtin");
|
|
2
|
+
const std = @import("std");
|
|
3
3
|
|
|
4
4
|
pub const Options = struct {
|
|
5
5
|
showdown: ?bool = null,
|
|
@@ -27,8 +27,14 @@ pub fn module(b: *std.Build, options: Options) *std.Build.Module {
|
|
|
27
27
|
build_options.addOption(?bool, "chance", options.chance);
|
|
28
28
|
build_options.addOption(?bool, "calc", options.calc);
|
|
29
29
|
|
|
30
|
-
const root_source_file
|
|
31
|
-
|
|
30
|
+
const root_source_file: std.Build.LazyPath =
|
|
31
|
+
.{ .cwd_relative = dirname ++ "/src/lib/pkmn.zig" };
|
|
32
|
+
const Import = if (@hasDecl(std.Build.Module, "Import"))
|
|
33
|
+
std.Build.Module.Import
|
|
34
|
+
else
|
|
35
|
+
std.Build.ModuleDependency;
|
|
36
|
+
const imports: []const Import =
|
|
37
|
+
&.{.{ .name = "build_options", .module = build_options.createModule() }};
|
|
32
38
|
return b.createModule(if (@hasDecl(std.Build, "CreateModuleOptions"))
|
|
33
39
|
.{ .source_file = root_source_file, .dependencies = imports }
|
|
34
40
|
else
|
|
@@ -73,6 +79,7 @@ pub fn build(b: *std.Build) !void {
|
|
|
73
79
|
const log = b.option(bool, "log", "Enable protocol message logging") orelse false;
|
|
74
80
|
const chance = b.option(bool, "chance", "Enable update probability tracking") orelse false;
|
|
75
81
|
const calc = b.option(bool, "calc", "Enable damage calculator support") orelse false;
|
|
82
|
+
const extra = b.option([]const []const u8, "option", "Enable extra option");
|
|
76
83
|
|
|
77
84
|
const options = b.addOptions();
|
|
78
85
|
options.addOption(?bool, "showdown", showdown);
|
|
@@ -80,6 +87,23 @@ pub fn build(b: *std.Build) !void {
|
|
|
80
87
|
options.addOption(?bool, "chance", chance);
|
|
81
88
|
options.addOption(?bool, "calc", calc);
|
|
82
89
|
|
|
90
|
+
if (extra) |opts| {
|
|
91
|
+
for (opts) |opt| {
|
|
92
|
+
if (std.mem.indexOfScalar(u8, opt, '=')) |i| {
|
|
93
|
+
options.addOption(?bool, opt[0..i], if (std.mem.eql(u8, opt[i + 1 ..], "true"))
|
|
94
|
+
true
|
|
95
|
+
else if (std.mem.eql(u8, opt[i + 1 ..], "false"))
|
|
96
|
+
false
|
|
97
|
+
else {
|
|
98
|
+
std.log.err("Invalid option: {s}\n", .{opt});
|
|
99
|
+
return error.InvalidOption;
|
|
100
|
+
});
|
|
101
|
+
} else {
|
|
102
|
+
options.addOption(?bool, opt, true);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
83
107
|
const name = if (showdown) "pkmn-showdown" else "pkmn";
|
|
84
108
|
|
|
85
109
|
const pkmn = if (@hasDecl(std.Build, "CreateModuleOptions")) null else b.addModule("pkmn", .{
|
|
@@ -131,73 +155,7 @@ pub fn build(b: *std.Build) !void {
|
|
|
131
155
|
// rename the file ourself in install-pkmn-engine
|
|
132
156
|
b.installArtifact(lib);
|
|
133
157
|
} else if (wasm) {
|
|
134
|
-
|
|
135
|
-
const mode = switch (optimize) {
|
|
136
|
-
.ReleaseFast, .ReleaseSafe => .ReleaseSmall,
|
|
137
|
-
else => optimize,
|
|
138
|
-
};
|
|
139
|
-
const freestanding = if (@hasDecl(std.Build, "resolveTargetQuery"))
|
|
140
|
-
b.resolveTargetQuery(.{ .cpu_arch = .wasm32, .os_tag = .freestanding })
|
|
141
|
-
else
|
|
142
|
-
ResolvedTarget{ .cpu_arch = .wasm32, .os_tag = .freestanding };
|
|
143
|
-
const path = if (has_path) .{ .path = "src/lib/wasm.zig" } else b.path("src/lib/wasm.zig");
|
|
144
|
-
const bin = if (entry) bin: {
|
|
145
|
-
const exe = b.addExecutable(if (force_pic) .{
|
|
146
|
-
.name = name,
|
|
147
|
-
.root_source_file = path,
|
|
148
|
-
.optimize = mode,
|
|
149
|
-
.target = freestanding,
|
|
150
|
-
} else .{
|
|
151
|
-
.name = name,
|
|
152
|
-
.root_source_file = path,
|
|
153
|
-
.optimize = mode,
|
|
154
|
-
.target = freestanding,
|
|
155
|
-
.strip = strip,
|
|
156
|
-
.pic = pic,
|
|
157
|
-
});
|
|
158
|
-
(if (root_module) exe.root_module else exe).export_symbol_names = &[_][]const u8{
|
|
159
|
-
"SHOWDOWN",
|
|
160
|
-
"LOG",
|
|
161
|
-
"CHANCE",
|
|
162
|
-
"CALC",
|
|
163
|
-
"GEN1_CHOICES_SIZE",
|
|
164
|
-
"GEN1_LOGS_SIZE",
|
|
165
|
-
};
|
|
166
|
-
exe.entry = .disabled;
|
|
167
|
-
break :bin exe;
|
|
168
|
-
} else bin: {
|
|
169
|
-
const lib = b.addSharedLibrary(.{
|
|
170
|
-
.name = name,
|
|
171
|
-
.root_source_file = path,
|
|
172
|
-
.optimize = mode,
|
|
173
|
-
.target = freestanding,
|
|
174
|
-
});
|
|
175
|
-
lib.rdynamic = true;
|
|
176
|
-
break :bin lib;
|
|
177
|
-
};
|
|
178
|
-
bin.stack_size = wasm_stack_size;
|
|
179
|
-
if (@hasDecl(@TypeOf(bin.*), "strip")) bin.strip = strip orelse false;
|
|
180
|
-
if (force_pic and pic orelse false) bin.force_pic = pic;
|
|
181
|
-
(if (root_module) bin.root_module else bin).addOptions("build_options", options);
|
|
182
|
-
|
|
183
|
-
const opt = b.findProgram(&.{"wasm-opt"}, &.{"./node_modules/.bin"}) catch null;
|
|
184
|
-
if (optimize != .Debug and opt != null) {
|
|
185
|
-
const out = b.fmt("build/lib/{s}.wasm", .{name});
|
|
186
|
-
const sh = b.addSystemCommand(&.{ opt.?, "-O4" });
|
|
187
|
-
sh.addArtifactArg(bin);
|
|
188
|
-
sh.addArg("-o");
|
|
189
|
-
if (@hasDecl(@TypeOf(sh.*), "addFileSourceArg")) {
|
|
190
|
-
sh.addFileSourceArg(if (has_path) .{ .path = out } else b.path(out));
|
|
191
|
-
} else {
|
|
192
|
-
sh.addFileArg(if (has_path) .{ .path = out } else b.path(out));
|
|
193
|
-
}
|
|
194
|
-
b.getInstallStep().dependOn(&sh.step);
|
|
195
|
-
if (!entry) b.installArtifact(bin);
|
|
196
|
-
} else if (entry) {
|
|
197
|
-
b.getInstallStep().dependOn(&b.addInstallArtifact(bin, .{
|
|
198
|
-
.dest_dir = .{ .override = std.Build.InstallDir{ .lib = {} } },
|
|
199
|
-
}).step);
|
|
200
|
-
}
|
|
158
|
+
try buildWasm(b, name, "src/lib/wasm.zig", optimize, strip, pic, wasm_stack_size, options);
|
|
201
159
|
} else if (dynamic) {
|
|
202
160
|
const path = if (has_path) .{ .path = "src/lib/c.zig" } else b.path("src/lib/c.zig");
|
|
203
161
|
const lib = b.addSharedLibrary(if (force_pic) .{
|
|
@@ -292,7 +250,7 @@ pub fn build(b: *std.Build) !void {
|
|
|
292
250
|
b.installFile(file, b.fmt("share/pkgconfig/{s}", .{pc}));
|
|
293
251
|
}
|
|
294
252
|
|
|
295
|
-
const config = .{
|
|
253
|
+
const config: Config = .{
|
|
296
254
|
.target = target,
|
|
297
255
|
.optimize = optimize,
|
|
298
256
|
.pic = pic,
|
|
@@ -350,6 +308,107 @@ pub fn build(b: *std.Build) !void {
|
|
|
350
308
|
}
|
|
351
309
|
}
|
|
352
310
|
|
|
311
|
+
fn buildWasm(
|
|
312
|
+
b: *std.Build,
|
|
313
|
+
name: []const u8,
|
|
314
|
+
root_src_file: []const u8,
|
|
315
|
+
optimize: std.builtin.OptimizeMode,
|
|
316
|
+
strip: ?bool,
|
|
317
|
+
pic: ?bool,
|
|
318
|
+
wasm_stack_size: u64,
|
|
319
|
+
options: anytype,
|
|
320
|
+
) !void {
|
|
321
|
+
const entry = @hasDecl(Step.Compile, "Entry");
|
|
322
|
+
const mode = switch (optimize) {
|
|
323
|
+
.ReleaseFast, .ReleaseSafe => .ReleaseSmall,
|
|
324
|
+
else => optimize,
|
|
325
|
+
};
|
|
326
|
+
// https://webassembly.org/features/
|
|
327
|
+
var features = std.Target.wasm.featureSet(&.{
|
|
328
|
+
.atomics,
|
|
329
|
+
.bulk_memory,
|
|
330
|
+
// .exception_handling,
|
|
331
|
+
.extended_const,
|
|
332
|
+
// .half_precision,
|
|
333
|
+
// .multimemory,
|
|
334
|
+
.mutable_globals,
|
|
335
|
+
.nontrapping_fptoint,
|
|
336
|
+
.reference_types,
|
|
337
|
+
// .relaxed_simd,
|
|
338
|
+
.sign_ext,
|
|
339
|
+
.simd128,
|
|
340
|
+
// .tail_call,
|
|
341
|
+
});
|
|
342
|
+
if (builtin.zig_version.order(try std.SemanticVersion.parse("0.12.0")) != .lt) {
|
|
343
|
+
features.addFeature(@intFromEnum(std.Target.wasm.Feature.multivalue));
|
|
344
|
+
}
|
|
345
|
+
const freestanding = if (@hasDecl(std.Build, "resolveTargetQuery"))
|
|
346
|
+
b.resolveTargetQuery(.{
|
|
347
|
+
.cpu_arch = .wasm32,
|
|
348
|
+
.os_tag = .freestanding,
|
|
349
|
+
.cpu_features_add = features,
|
|
350
|
+
})
|
|
351
|
+
else
|
|
352
|
+
ResolvedTarget{
|
|
353
|
+
.cpu_arch = .wasm32,
|
|
354
|
+
.os_tag = .freestanding,
|
|
355
|
+
.cpu_features_add = features,
|
|
356
|
+
};
|
|
357
|
+
const path = if (has_path) .{ .path = root_src_file } else b.path(root_src_file);
|
|
358
|
+
const bin = if (entry) bin: {
|
|
359
|
+
const exe = b.addExecutable(if (force_pic) .{
|
|
360
|
+
.name = name,
|
|
361
|
+
.root_source_file = path,
|
|
362
|
+
.optimize = mode,
|
|
363
|
+
.target = freestanding,
|
|
364
|
+
} else .{
|
|
365
|
+
.name = name,
|
|
366
|
+
.root_source_file = path,
|
|
367
|
+
.optimize = mode,
|
|
368
|
+
.target = freestanding,
|
|
369
|
+
.strip = strip,
|
|
370
|
+
.pic = pic,
|
|
371
|
+
});
|
|
372
|
+
(if (root_module) exe.root_module else exe).export_symbol_names = try exports(b);
|
|
373
|
+
exe.entry = .disabled;
|
|
374
|
+
break :bin exe;
|
|
375
|
+
} else bin: {
|
|
376
|
+
const lib = b.addSharedLibrary(.{
|
|
377
|
+
.name = name,
|
|
378
|
+
.root_source_file = path,
|
|
379
|
+
.optimize = mode,
|
|
380
|
+
.target = freestanding,
|
|
381
|
+
});
|
|
382
|
+
lib.rdynamic = true;
|
|
383
|
+
break :bin lib;
|
|
384
|
+
};
|
|
385
|
+
bin.stack_size = wasm_stack_size;
|
|
386
|
+
if (@hasDecl(@TypeOf(bin.*), "strip")) bin.strip = strip orelse false;
|
|
387
|
+
if (force_pic and pic orelse false) bin.force_pic = pic;
|
|
388
|
+
(if (root_module) bin.root_module else bin).addOptions("build_options", options);
|
|
389
|
+
|
|
390
|
+
const opt = b.findProgram(&.{"wasm-opt"}, &.{"./node_modules/.bin"}) catch null;
|
|
391
|
+
if (optimize != .Debug and opt != null) {
|
|
392
|
+
const out = b.fmt("build/lib/{s}.wasm", .{name});
|
|
393
|
+
const sh = b.addSystemCommand(&.{ opt.?, "--enable-bulk-memory", "--enable-simd", "-O4" });
|
|
394
|
+
sh.addArtifactArg(bin);
|
|
395
|
+
sh.addArg("-o");
|
|
396
|
+
if (@hasDecl(@TypeOf(sh.*), "addFileSourceArg")) {
|
|
397
|
+
sh.addFileSourceArg(if (has_path) .{ .path = out } else b.path(out));
|
|
398
|
+
} else {
|
|
399
|
+
sh.addFileArg(if (has_path) .{ .path = out } else b.path(out));
|
|
400
|
+
}
|
|
401
|
+
b.getInstallStep().dependOn(&sh.step);
|
|
402
|
+
if (!entry) b.installArtifact(bin);
|
|
403
|
+
} else if (entry) {
|
|
404
|
+
b.getInstallStep().dependOn(&b.addInstallArtifact(bin, .{
|
|
405
|
+
.dest_dir = .{ .override = std.Build.InstallDir{ .lib = {} } },
|
|
406
|
+
}).step);
|
|
407
|
+
} else {
|
|
408
|
+
b.installArtifact(bin);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
|
|
353
412
|
fn maybeStrip(
|
|
354
413
|
b: *std.Build,
|
|
355
414
|
artifact: *Step.Compile,
|
|
@@ -494,3 +553,23 @@ fn detect(target: anytype) std.Target {
|
|
|
494
553
|
if (@hasField(@TypeOf(target), "result")) return target.result;
|
|
495
554
|
return (std.zig.system.NativeTargetInfo.detect(target) catch unreachable).target;
|
|
496
555
|
}
|
|
556
|
+
|
|
557
|
+
const WASM = @embedFile("src/lib/wasm.zig");
|
|
558
|
+
|
|
559
|
+
fn exports(b: *std.Build) ![][]const u8 {
|
|
560
|
+
var symbols = std.ArrayList([]const u8).init(b.allocator);
|
|
561
|
+
|
|
562
|
+
var it = std.mem.splitSequence(u8, WASM, "export ");
|
|
563
|
+
_ = it.next();
|
|
564
|
+
while (it.next()) |s| {
|
|
565
|
+
if (std.mem.startsWith(u8, s, "const ")) {
|
|
566
|
+
const i = std.mem.indexOf(u8, s[6..], " ").?;
|
|
567
|
+
try symbols.append(s[6 .. 6 + i]);
|
|
568
|
+
} else { // "fn "
|
|
569
|
+
const i = std.mem.indexOf(u8, s[3..], "(").?;
|
|
570
|
+
try symbols.append(s[3 .. 3 + i]);
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
return symbols.items;
|
|
575
|
+
}
|
package/package.json
CHANGED
|
@@ -1,19 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pkmn/engine",
|
|
3
|
-
"version": "0.1.0-dev.
|
|
3
|
+
"version": "0.1.0-dev.6ebbd3bc",
|
|
4
4
|
"description": "A minimal, complete, Pokémon battle simulation engine optimized for performance",
|
|
5
5
|
"repository": "github:pkmn/engine",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"sideEffects": false,
|
|
8
8
|
"main": "build/pkg/index.js",
|
|
9
9
|
"types": "build/pkg/index.d.ts",
|
|
10
|
+
"browser": {
|
|
11
|
+
"./build/pkg/addon/node.js": "./build/pkg/addon/browser.js"
|
|
12
|
+
},
|
|
10
13
|
"files": [
|
|
11
14
|
"build.zig",
|
|
12
|
-
"build/pkg/data.d.ts",
|
|
13
|
-
"build/pkg/data.js.map",
|
|
14
15
|
"build/pkg/addon.d.ts",
|
|
15
16
|
"build/pkg/addon.js.map",
|
|
16
17
|
"build/pkg/addon.js",
|
|
18
|
+
"build/pkg/addon/browser.d.ts",
|
|
19
|
+
"build/pkg/addon/browser.js.map",
|
|
20
|
+
"build/pkg/addon/browser.js",
|
|
21
|
+
"build/pkg/addon/node.d.ts",
|
|
22
|
+
"build/pkg/addon/node.js.map",
|
|
23
|
+
"build/pkg/addon/node.js",
|
|
24
|
+
"build/pkg/addon/wasm.d.ts",
|
|
25
|
+
"build/pkg/addon/wasm.js.map",
|
|
26
|
+
"build/pkg/addon/wasm.js",
|
|
27
|
+
"build/pkg/data.d.ts",
|
|
28
|
+
"build/pkg/data.js.map",
|
|
17
29
|
"build/pkg/data.js",
|
|
18
30
|
"build/pkg/data/ids.json",
|
|
19
31
|
"build/pkg/data/layout.json",
|
|
@@ -27,15 +39,24 @@
|
|
|
27
39
|
"build/pkg/protocol.d.ts",
|
|
28
40
|
"build/pkg/protocol.js.map",
|
|
29
41
|
"build/pkg/protocol.js",
|
|
30
|
-
"build/test/display.js.map",
|
|
31
|
-
"build/test/display.js",
|
|
32
42
|
"build/tools/debug.js.map",
|
|
33
43
|
"build/tools/debug.js",
|
|
44
|
+
"build/tools/display/index.js.map",
|
|
45
|
+
"build/tools/display/index.js",
|
|
46
|
+
"build/tools/display/debug.jsx.map",
|
|
47
|
+
"build/tools/display/debug.jsx",
|
|
48
|
+
"build/tools/display/ui.jsx.map",
|
|
49
|
+
"build/tools/display/ui.jsx",
|
|
50
|
+
"build/tools/display/util.js.map",
|
|
51
|
+
"build/tools/display/util.js",
|
|
52
|
+
"src/lib/bindings/c.zig",
|
|
53
|
+
"src/lib/bindings/node.zig",
|
|
54
|
+
"src/lib/bindings/wasm.zig",
|
|
55
|
+
"src/lib/common/array.zig",
|
|
34
56
|
"src/lib/common/battle.zig",
|
|
35
57
|
"src/lib/common/data.zig",
|
|
36
58
|
"src/lib/common/debug.zig",
|
|
37
59
|
"src/lib/common/js.zig",
|
|
38
|
-
"src/lib/common/array.zig",
|
|
39
60
|
"src/lib/common/optional.zig",
|
|
40
61
|
"src/lib/common/options.zig",
|
|
41
62
|
"src/lib/common/protocol.zig",
|
|
@@ -63,7 +84,8 @@
|
|
|
63
84
|
"src/lib/node.zig",
|
|
64
85
|
"src/lib/pkmn.zig",
|
|
65
86
|
"src/lib/wasm.zig",
|
|
66
|
-
"src/
|
|
87
|
+
"src/tools/display/dom.ts",
|
|
88
|
+
"src/tools/display/ui.css"
|
|
67
89
|
],
|
|
68
90
|
"engines": {
|
|
69
91
|
"node": ">=16.0.0"
|
|
@@ -76,160 +98,54 @@
|
|
|
76
98
|
"access": "public"
|
|
77
99
|
},
|
|
78
100
|
"dependencies": {
|
|
79
|
-
"@pkmn/data": "^0.9.
|
|
80
|
-
"@pkmn/protocol": "^0.6.
|
|
101
|
+
"@pkmn/data": "^0.9.22",
|
|
102
|
+
"@pkmn/protocol": "^0.6.28"
|
|
81
103
|
},
|
|
82
104
|
"devDependencies": {
|
|
83
|
-
"@pkmn/eslint-config": "^
|
|
84
|
-
"@pkmn/img": "^0.2.
|
|
105
|
+
"@pkmn/eslint-config": "^9.1.0",
|
|
106
|
+
"@pkmn/img": "^0.2.33",
|
|
85
107
|
"@pkmn/sets": "^5.1.2",
|
|
86
|
-
"@pkmn/sim": "0.9.
|
|
108
|
+
"@pkmn/sim": "0.9.22",
|
|
109
|
+
"@pkmn/smogon": "^0.5.15",
|
|
87
110
|
"@types/html-minifier": "^4.0.5",
|
|
88
|
-
"@types/jest": "^29.5.
|
|
111
|
+
"@types/jest": "^29.5.14",
|
|
89
112
|
"@types/minimist": "^1.2.5",
|
|
90
113
|
"@types/mustache": "^4.2.5",
|
|
91
|
-
"@types/node": "^22.
|
|
114
|
+
"@types/node": "^22.8.7",
|
|
115
|
+
"@types/react": "^18.3.12",
|
|
92
116
|
"@types/semver": "^7.5.8",
|
|
93
|
-
"@
|
|
94
|
-
"
|
|
95
|
-
"
|
|
117
|
+
"@types/vscode": "^1.95.0",
|
|
118
|
+
"@vitest/coverage-v8": "^2.1.4",
|
|
119
|
+
"@vscode/vsce": "^3.2.1",
|
|
120
|
+
"binaryen": "^120.0.0",
|
|
121
|
+
"esbuild": "^0.24.0",
|
|
122
|
+
"eslint": "^9.14.0",
|
|
96
123
|
"html-minifier": "^4.0.0",
|
|
97
|
-
"json-stringify-pretty-compact": "
|
|
124
|
+
"json-stringify-pretty-compact": "3.0.0",
|
|
98
125
|
"minimist": "^1.2.8",
|
|
99
126
|
"mustache": "^4.2.0",
|
|
100
127
|
"semver": "^7.6.3",
|
|
101
128
|
"source-map-support": "^0.5.21",
|
|
102
129
|
"table": "^6.8.2",
|
|
103
130
|
"trakr": "^0.2.0",
|
|
104
|
-
"typescript": "^5.
|
|
105
|
-
"vitest": "^2.
|
|
131
|
+
"typescript": "^5.6.3",
|
|
132
|
+
"vitest": "^2.1.4"
|
|
106
133
|
},
|
|
107
134
|
"scripts": {
|
|
108
|
-
"lint": "eslint --cache src
|
|
109
|
-
"fix": "eslint --fix src
|
|
135
|
+
"lint": "eslint --cache src",
|
|
136
|
+
"fix": "eslint --fix src",
|
|
110
137
|
"compile": "tsc -p .",
|
|
111
138
|
"build": "npm run compile",
|
|
112
139
|
"test": "vitest src/pkg",
|
|
113
140
|
"test:integration": "vitest src/test",
|
|
114
141
|
"debug": "npm run compile && node build/tools/debug",
|
|
142
|
+
"demo": "npm run compile && node build/tools/demo",
|
|
115
143
|
"fuzz": "npm run compile && node build/test/fuzz",
|
|
116
144
|
"generate": "npm run compile && node build/tools/generate",
|
|
117
145
|
"release": "npm run compile && node build/tools/release",
|
|
118
146
|
"benchmark": "npm run compile && node build/test/benchmark",
|
|
119
147
|
"integration": "npm run compile && node build/test/integration",
|
|
148
|
+
"extension": "npm -C src/tools/vscode run build",
|
|
120
149
|
"postinstall": "node src/bin/install-pkmn-engine"
|
|
121
|
-
},
|
|
122
|
-
"eslintConfig": {
|
|
123
|
-
"extends": "@pkmn",
|
|
124
|
-
"ignorePatterns": [
|
|
125
|
-
"dist/",
|
|
126
|
-
"node_modules/",
|
|
127
|
-
"examples/zig",
|
|
128
|
-
"build/"
|
|
129
|
-
],
|
|
130
|
-
"env": {
|
|
131
|
-
"es6": true,
|
|
132
|
-
"node": true,
|
|
133
|
-
"browser": true
|
|
134
|
-
},
|
|
135
|
-
"overrides": [
|
|
136
|
-
{
|
|
137
|
-
"files": [
|
|
138
|
-
"**/*.ts"
|
|
139
|
-
],
|
|
140
|
-
"parserOptions": {
|
|
141
|
-
"project": [
|
|
142
|
-
"./tsconfig.json",
|
|
143
|
-
"./examples/js/tsconfig.json"
|
|
144
|
-
]
|
|
145
|
-
}
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
"files": [
|
|
149
|
-
"src/test/display.ts"
|
|
150
|
-
],
|
|
151
|
-
"rules": {
|
|
152
|
-
"@typescript-eslint/no-unnecessary-type-assertion": "off"
|
|
153
|
-
}
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
"files": [
|
|
157
|
-
"src/pkg/index.ts",
|
|
158
|
-
"src/test/display.ts",
|
|
159
|
-
"src/test/integration.ts"
|
|
160
|
-
],
|
|
161
|
-
"rules": {
|
|
162
|
-
"no-control-regex": "off",
|
|
163
|
-
"@typescript-eslint/no-empty-interface": "off",
|
|
164
|
-
"@typescript-eslint/no-shadow": "off",
|
|
165
|
-
"@typescript-eslint/no-unsafe-declaration-merging": "off"
|
|
166
|
-
}
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
"files": [
|
|
170
|
-
"src/pkg/addon.ts"
|
|
171
|
-
],
|
|
172
|
-
"rules": {
|
|
173
|
-
"@typescript-eslint/no-var-requires": "off"
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
"files": [
|
|
178
|
-
"src/test/benchmark*.ts"
|
|
179
|
-
],
|
|
180
|
-
"rules": {
|
|
181
|
-
"@typescript-eslint/no-unused-vars": "off",
|
|
182
|
-
"@typescript-eslint/no-redundant-type-constituents": "off"
|
|
183
|
-
}
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
"files": [
|
|
187
|
-
"src/pkg/protocol.test.ts"
|
|
188
|
-
],
|
|
189
|
-
"rules": {
|
|
190
|
-
"jest/no-standalone-expect": "off",
|
|
191
|
-
"jest/no-conditional-expect": "off"
|
|
192
|
-
}
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
"files": [
|
|
196
|
-
"src/test/*.test.ts",
|
|
197
|
-
"src/test/regression/*.test.ts"
|
|
198
|
-
],
|
|
199
|
-
"rules": {
|
|
200
|
-
"jest/no-standalone-expect": "off"
|
|
201
|
-
}
|
|
202
|
-
},
|
|
203
|
-
{
|
|
204
|
-
"files": [
|
|
205
|
-
"src/test/showdown/**"
|
|
206
|
-
],
|
|
207
|
-
"rules": {
|
|
208
|
-
"jest/expect-expect": [
|
|
209
|
-
"warn",
|
|
210
|
-
{
|
|
211
|
-
"assertFunctionNames": [
|
|
212
|
-
"expect",
|
|
213
|
-
"expectLog",
|
|
214
|
-
"verify"
|
|
215
|
-
]
|
|
216
|
-
}
|
|
217
|
-
]
|
|
218
|
-
}
|
|
219
|
-
},
|
|
220
|
-
{
|
|
221
|
-
"files": [
|
|
222
|
-
"src/tools/generate.ts"
|
|
223
|
-
],
|
|
224
|
-
"rules": {
|
|
225
|
-
"@typescript-eslint/restrict-template-expressions": [
|
|
226
|
-
"error",
|
|
227
|
-
{
|
|
228
|
-
"allowBoolean": true
|
|
229
|
-
}
|
|
230
|
-
]
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
]
|
|
234
150
|
}
|
|
235
151
|
}
|
|
@@ -257,7 +257,7 @@ const downloadImportLib = async () => {
|
|
|
257
257
|
}
|
|
258
258
|
|
|
259
259
|
const dir = path.join(ROOT, 'build', 'lib');
|
|
260
|
-
const url =
|
|
260
|
+
const url = process.release.libUrl;
|
|
261
261
|
const dest = path.join(dir, path.basename(url));
|
|
262
262
|
if (fs.existsSync(path.join(dest))) {
|
|
263
263
|
log('Node import library:', dest);
|
|
@@ -393,7 +393,7 @@ const downloadImportLib = async () => {
|
|
|
393
393
|
try {
|
|
394
394
|
const actual = path.join(ROOT, 'build', 'lib', `${prefix}pkmn${suffix}.node.${ext}`);
|
|
395
395
|
fs.renameSync(actual, artifact);
|
|
396
|
-
} catch
|
|
396
|
+
} catch {
|
|
397
397
|
// ziglang/zig#19743 changed this path
|
|
398
398
|
const actual = path.join(ROOT, 'build', 'bin', `${prefix}pkmn${suffix}.node.${ext}`);
|
|
399
399
|
fs.renameSync(actual, artifact);
|
package/src/bin/pkmn-debug
CHANGED
|
@@ -15,7 +15,7 @@ const ROOT = resolve(__dirname, '..', '..');
|
|
|
15
15
|
const packageJSON = JSON.parse(readFileSync(join(ROOT, 'package.json'), 'utf8'));
|
|
16
16
|
|
|
17
17
|
const missing = [];
|
|
18
|
-
for (const dep of ['@pkmn/img', 'html-minifier', '
|
|
18
|
+
for (const dep of ['@pkmn/img', 'html-minifier', 'esbuild']) {
|
|
19
19
|
try {
|
|
20
20
|
require.resolve(dep);
|
|
21
21
|
} catch (e) {
|