@tscircuit/cli 0.1.770 → 0.1.772

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/dist/main.js CHANGED
@@ -17,6 +17,16 @@ var __toESM2 = (mod, isNodeMode, target) => {
17
17
  return to;
18
18
  };
19
19
  var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
20
+ var __export2 = (target, all) => {
21
+ for (var name in all)
22
+ __defProp2(target, name, {
23
+ get: all[name],
24
+ enumerable: true,
25
+ configurable: true,
26
+ set: (newValue) => all[name] = () => newValue
27
+ });
28
+ };
29
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
20
30
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
21
31
 
22
32
  // node_modules/commander/lib/error.js
@@ -2112,6 +2122,101 @@ var require_commander = __commonJS((exports2) => {
2112
2122
  exports2.InvalidOptionArgumentError = InvalidArgumentError;
2113
2123
  });
2114
2124
 
2125
+ // node_modules/kleur/index.mjs
2126
+ function run(arr, str) {
2127
+ let i = 0, tmp, beg = "", end = "";
2128
+ for (;i < arr.length; i++) {
2129
+ tmp = arr[i];
2130
+ beg += tmp.open;
2131
+ end += tmp.close;
2132
+ if (!!~str.indexOf(tmp.close)) {
2133
+ str = str.replace(tmp.rgx, tmp.close + tmp.open);
2134
+ }
2135
+ }
2136
+ return beg + str + end;
2137
+ }
2138
+ function chain(has, keys) {
2139
+ let ctx = { has, keys };
2140
+ ctx.reset = $.reset.bind(ctx);
2141
+ ctx.bold = $.bold.bind(ctx);
2142
+ ctx.dim = $.dim.bind(ctx);
2143
+ ctx.italic = $.italic.bind(ctx);
2144
+ ctx.underline = $.underline.bind(ctx);
2145
+ ctx.inverse = $.inverse.bind(ctx);
2146
+ ctx.hidden = $.hidden.bind(ctx);
2147
+ ctx.strikethrough = $.strikethrough.bind(ctx);
2148
+ ctx.black = $.black.bind(ctx);
2149
+ ctx.red = $.red.bind(ctx);
2150
+ ctx.green = $.green.bind(ctx);
2151
+ ctx.yellow = $.yellow.bind(ctx);
2152
+ ctx.blue = $.blue.bind(ctx);
2153
+ ctx.magenta = $.magenta.bind(ctx);
2154
+ ctx.cyan = $.cyan.bind(ctx);
2155
+ ctx.white = $.white.bind(ctx);
2156
+ ctx.gray = $.gray.bind(ctx);
2157
+ ctx.grey = $.grey.bind(ctx);
2158
+ ctx.bgBlack = $.bgBlack.bind(ctx);
2159
+ ctx.bgRed = $.bgRed.bind(ctx);
2160
+ ctx.bgGreen = $.bgGreen.bind(ctx);
2161
+ ctx.bgYellow = $.bgYellow.bind(ctx);
2162
+ ctx.bgBlue = $.bgBlue.bind(ctx);
2163
+ ctx.bgMagenta = $.bgMagenta.bind(ctx);
2164
+ ctx.bgCyan = $.bgCyan.bind(ctx);
2165
+ ctx.bgWhite = $.bgWhite.bind(ctx);
2166
+ return ctx;
2167
+ }
2168
+ function init(open, close) {
2169
+ let blk = {
2170
+ open: `\x1B[${open}m`,
2171
+ close: `\x1B[${close}m`,
2172
+ rgx: new RegExp(`\\x1b\\[${close}m`, "g")
2173
+ };
2174
+ return function(txt) {
2175
+ if (this !== undefined && this.has !== undefined) {
2176
+ !!~this.has.indexOf(open) || (this.has.push(open), this.keys.push(blk));
2177
+ return txt === undefined ? this : $.enabled ? run(this.keys, txt + "") : txt + "";
2178
+ }
2179
+ return txt === undefined ? chain([open], [blk]) : $.enabled ? run([blk], txt + "") : txt + "";
2180
+ };
2181
+ }
2182
+ var FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY = true, $, kleur_default;
2183
+ var init_kleur = __esm(() => {
2184
+ if (typeof process !== "undefined") {
2185
+ ({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});
2186
+ isTTY = process.stdout && process.stdout.isTTY;
2187
+ }
2188
+ $ = {
2189
+ enabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== "dumb" && (FORCE_COLOR != null && FORCE_COLOR !== "0" || isTTY),
2190
+ reset: init(0, 0),
2191
+ bold: init(1, 22),
2192
+ dim: init(2, 22),
2193
+ italic: init(3, 23),
2194
+ underline: init(4, 24),
2195
+ inverse: init(7, 27),
2196
+ hidden: init(8, 28),
2197
+ strikethrough: init(9, 29),
2198
+ black: init(30, 39),
2199
+ red: init(31, 39),
2200
+ green: init(32, 39),
2201
+ yellow: init(33, 39),
2202
+ blue: init(34, 39),
2203
+ magenta: init(35, 39),
2204
+ cyan: init(36, 39),
2205
+ white: init(37, 39),
2206
+ gray: init(90, 39),
2207
+ grey: init(90, 39),
2208
+ bgBlack: init(40, 49),
2209
+ bgRed: init(41, 49),
2210
+ bgGreen: init(42, 49),
2211
+ bgYellow: init(43, 49),
2212
+ bgBlue: init(44, 49),
2213
+ bgMagenta: init(45, 49),
2214
+ bgCyan: init(46, 49),
2215
+ bgWhite: init(47, 49)
2216
+ };
2217
+ kleur_default = $;
2218
+ });
2219
+
2115
2220
  // node_modules/ajv/dist/compile/codegen/code.js
2116
2221
  var require_code = __commonJS((exports2) => {
2117
2222
  Object.defineProperty(exports2, "__esModule", { value: true });
@@ -16050,7 +16155,7 @@ var require_dist3 = __commonJS((exports2, module2) => {
16050
16155
  var __commonJS2 = (cb, mod) => function __require() {
16051
16156
  return mod || (0, cb[__getOwnPropNames22(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
16052
16157
  };
16053
- var __export2 = (target, all) => {
16158
+ var __export22 = (target, all) => {
16054
16159
  for (var name in all)
16055
16160
  __defProp22(target, name, { get: all[name], enumerable: true });
16056
16161
  };
@@ -32706,7 +32811,7 @@ var crypto = new Crypto();
32706
32811
  }
32707
32812
  });
32708
32813
  var src_exports = {};
32709
- __export2(src_exports, {
32814
+ __export22(src_exports, {
32710
32815
  buildToFetchEvent: () => buildToFetchEvent,
32711
32816
  buildToHeaders: () => buildToHeaders,
32712
32817
  buildToNodeHandler: () => buildToNodeHandler,
@@ -32737,9 +32842,9 @@ var crypto = new Crypto();
32737
32842
  };
32738
32843
  }
32739
32844
  function buildToReadableStream(dependencies) {
32740
- const { ReadableStream, Uint8Array: Uint8Array2 } = dependencies;
32845
+ const { ReadableStream: ReadableStream2, Uint8Array: Uint8Array2 } = dependencies;
32741
32846
  return function toReadableStream(stream) {
32742
- return new ReadableStream({
32847
+ return new ReadableStream2({
32743
32848
  start(controller) {
32744
32849
  stream.on("data", (chunk) => {
32745
32850
  controller.enqueue(new Uint8Array2([...new Uint8Array2(chunk)]));
@@ -49287,7 +49392,7 @@ var require_load = __commonJS((exports2, module2) => {
49287
49392
  var __getProtoOf3 = Object.getPrototypeOf;
49288
49393
  var __hasOwnProp3 = Object.prototype.hasOwnProperty;
49289
49394
  var __name2 = (target, value) => __defProp3(target, "name", { value, configurable: true });
49290
- var __export2 = (target, all) => {
49395
+ var __export3 = (target, all) => {
49291
49396
  for (var name in all)
49292
49397
  __defProp3(target, name, { get: all[name], enumerable: true });
49293
49398
  };
@@ -49302,7 +49407,7 @@ var require_load = __commonJS((exports2, module2) => {
49302
49407
  var __toESM3 = (mod, isNodeMode, target) => (target = mod != null ? __create3(__getProtoOf3(mod)) : {}, __copyProps2(isNodeMode || !mod || !mod.__esModule ? __defProp3(target, "default", { value: mod, enumerable: true }) : target, mod));
49303
49408
  var __toCommonJS2 = (mod) => __copyProps2(__defProp3({}, "__esModule", { value: true }), mod);
49304
49409
  var load_exports2 = {};
49305
- __export2(load_exports2, {
49410
+ __export3(load_exports2, {
49306
49411
  load: () => load2
49307
49412
  });
49308
49413
  module2.exports = __toCommonJS2(load_exports2);
@@ -49522,7 +49627,7 @@ var require_dist5 = __commonJS((exports2, module2) => {
49522
49627
  var __commonJS2 = (cb, mod) => function __require() {
49523
49628
  return mod || (0, cb[__getOwnPropNames3(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
49524
49629
  };
49525
- var __export2 = (target, all) => {
49630
+ var __export3 = (target, all) => {
49526
49631
  for (var name in all)
49527
49632
  __defProp3(target, name, { get: all[name], enumerable: true });
49528
49633
  };
@@ -51828,7 +51933,7 @@ See: https://github.com/isaacs/node-glob/issues/167`);
51828
51933
  }
51829
51934
  });
51830
51935
  var src_exports = {};
51831
- __export2(src_exports, {
51936
+ __export3(src_exports, {
51832
51937
  getMatchingFilePaths: () => getMatchingFilePaths,
51833
51938
  getVirtualFileSystemFromDirPath: () => getVirtualFileSystemFromDirPath,
51834
51939
  getVirtualFilesystemModuleFromDirPath: () => getVirtualFilesystemModuleFromDirPath,
@@ -51939,7 +52044,7 @@ var require_dist6 = __commonJS((exports2, module2) => {
51939
52044
  var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
51940
52045
  var __getOwnPropNames3 = Object.getOwnPropertyNames;
51941
52046
  var __hasOwnProp3 = Object.prototype.hasOwnProperty;
51942
- var __export2 = (target, all) => {
52047
+ var __export3 = (target, all) => {
51943
52048
  for (var name in all)
51944
52049
  __defProp3(target, name, { get: all[name], enumerable: true });
51945
52050
  };
@@ -51953,7 +52058,7 @@ var require_dist6 = __commonJS((exports2, module2) => {
51953
52058
  };
51954
52059
  var __toCommonJS2 = (mod) => __copyProps2(__defProp3({}, "__esModule", { value: true }), mod);
51955
52060
  var src_exports = {};
51956
- __export2(src_exports, {
52061
+ __export3(src_exports, {
51957
52062
  default: () => src_default,
51958
52063
  getRouteMatcher: () => getRouteMatcher,
51959
52064
  getRouteMatcherUgly: () => getRouteMatcherUgly
@@ -67139,7 +67244,7 @@ var require_dist7 = __commonJS((exports2, module2) => {
67139
67244
  }
67140
67245
  return target;
67141
67246
  };
67142
- var __export2 = (target, all) => {
67247
+ var __export3 = (target, all) => {
67143
67248
  for (var name in all)
67144
67249
  __defProp3(target, name, { get: all[name], enumerable: true });
67145
67250
  };
@@ -67174,7 +67279,7 @@ var require_dist7 = __commonJS((exports2, module2) => {
67174
67279
  });
67175
67280
  };
67176
67281
  var src_exports = {};
67177
- __export2(src_exports, {
67282
+ __export3(src_exports, {
67178
67283
  getCommandFromPath: () => getCommandFromPath,
67179
67284
  getCommandPathOnly: () => getCommandPathOnly,
67180
67285
  perfectCli: () => perfectCli
@@ -67459,6 +67564,36 @@ var require_dist7 = __commonJS((exports2, module2) => {
67459
67564
  });
67460
67565
  });
67461
67566
 
67567
+ // lib/shared/importFromUserLand.ts
67568
+ import { createRequire as createRequire2 } from "node:module";
67569
+ import fs26 from "node:fs";
67570
+ import path28 from "node:path";
67571
+ async function importFromUserLand(moduleName) {
67572
+ const userModulePath = path28.join(process.cwd(), "node_modules", moduleName);
67573
+ if (fs26.existsSync(userModulePath)) {
67574
+ const userRequire = createRequire2(path28.join(process.cwd(), "noop.js"));
67575
+ try {
67576
+ const resolvedUserPath = userRequire.resolve(moduleName);
67577
+ return await import(resolvedUserPath);
67578
+ } catch (error) {
67579
+ if (error?.code !== "MODULE_NOT_FOUND") {
67580
+ throw error;
67581
+ }
67582
+ }
67583
+ }
67584
+ const cliRequire = createRequire2(import.meta.url);
67585
+ try {
67586
+ const resolvedCliPath = cliRequire.resolve(moduleName);
67587
+ return await import(resolvedCliPath);
67588
+ } catch (error) {
67589
+ if (error?.code !== "MODULE_NOT_FOUND") {
67590
+ throw error;
67591
+ }
67592
+ }
67593
+ return import(moduleName);
67594
+ }
67595
+ var init_importFromUserLand = () => {};
67596
+
67462
67597
  // node_modules/make-vfs/dist/index.js
67463
67598
  var require_dist8 = __commonJS((exports2, module2) => {
67464
67599
  var __create3 = Object.create;
@@ -67470,7 +67605,7 @@ var require_dist8 = __commonJS((exports2, module2) => {
67470
67605
  var __commonJS2 = (cb, mod) => function __require() {
67471
67606
  return mod || (0, cb[__getOwnPropNames3(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
67472
67607
  };
67473
- var __export2 = (target, all) => {
67608
+ var __export3 = (target, all) => {
67474
67609
  for (var name in all)
67475
67610
  __defProp3(target, name, { get: all[name], enumerable: true });
67476
67611
  };
@@ -69776,7 +69911,7 @@ See: https://github.com/isaacs/node-glob/issues/167`);
69776
69911
  }
69777
69912
  });
69778
69913
  var src_exports = {};
69779
- __export2(src_exports, {
69914
+ __export3(src_exports, {
69780
69915
  getMatchingFilePaths: () => getMatchingFilePaths2,
69781
69916
  getVirtualFileSystemFromDirPath: () => getVirtualFileSystemFromDirPath,
69782
69917
  getVirtualFilesystemModuleFromDirPath: () => getVirtualFilesystemModuleFromDirPath
@@ -69894,6 +70029,108 @@ export default {
69894
70029
  };
69895
70030
  });
69896
70031
 
70032
+ // lib/utils/abbreviate-stringify-object.ts
70033
+ var abbreviateStringifyObject = (obj) => {
70034
+ if (obj === null || obj === undefined)
70035
+ return obj;
70036
+ if (typeof obj !== "object")
70037
+ return obj;
70038
+ return JSON.stringify(Object.fromEntries(Object.entries(obj).map(([k, v]) => {
70039
+ return [
70040
+ k,
70041
+ typeof v === "string" ? v.slice(0, 100) : typeof v === "object" && v !== null ? abbreviateStringifyObject(v) : v
70042
+ ];
70043
+ })));
70044
+ };
70045
+
70046
+ // lib/shared/generate-circuit-json.tsx
70047
+ import path30 from "node:path";
70048
+ import fs28 from "node:fs";
70049
+ import { pathToFileURL as pathToFileURL2 } from "node:url";
70050
+ import Debug11 from "debug";
70051
+ import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
70052
+ async function generateCircuitJson({
70053
+ filePath,
70054
+ outputDir,
70055
+ outputFileName,
70056
+ saveToFile = false,
70057
+ platformConfig
70058
+ }) {
70059
+ debug11(`Generating circuit JSON for ${filePath}`);
70060
+ const React = await importFromUserLand("react");
70061
+ globalThis.React = React;
70062
+ const userLandTscircuit = await importFromUserLand("tscircuit");
70063
+ const runner = new userLandTscircuit.RootCircuit({
70064
+ platform: platformConfig
70065
+ });
70066
+ const absoluteFilePath = path30.isAbsolute(filePath) ? filePath : path30.resolve(process.cwd(), filePath);
70067
+ const projectDir = path30.dirname(absoluteFilePath);
70068
+ const resolvedOutputDir = outputDir ?? projectDir;
70069
+ const relativeComponentPath = path30.relative(projectDir, absoluteFilePath);
70070
+ const baseFileName = outputFileName || path30.basename(absoluteFilePath).replace(/\.[^.]+$/, "");
70071
+ const outputPath = path30.join(resolvedOutputDir, `${baseFileName}.circuit.json`);
70072
+ debug11(`Project directory: ${projectDir}`);
70073
+ debug11(`Relative component path: ${relativeComponentPath}`);
70074
+ debug11(`Output path: ${outputPath}`);
70075
+ const fsMap = {
70076
+ ...await import_make_vfs2.getVirtualFileSystemFromDirPath({
70077
+ dirPath: projectDir,
70078
+ fileMatchFn: (filePath2) => {
70079
+ const normalizedFilePath = filePath2.replace(/\\/g, "/");
70080
+ if (normalizedFilePath.endsWith(".kicad_mod")) {
70081
+ return true;
70082
+ }
70083
+ if (normalizedFilePath.includes("node_modules/"))
70084
+ return false;
70085
+ if (normalizedFilePath.includes("dist/"))
70086
+ return false;
70087
+ if (normalizedFilePath.includes("build/"))
70088
+ return false;
70089
+ if (normalizedFilePath.match(/^\.[^/]/))
70090
+ return false;
70091
+ if (!ALLOWED_FILE_EXTENSIONS.includes(path30.extname(normalizedFilePath)))
70092
+ return false;
70093
+ return true;
70094
+ },
70095
+ contentFormat: "string"
70096
+ })
70097
+ };
70098
+ debug11(`fsMap: ${abbreviateStringifyObject(fsMap)}`);
70099
+ const MainComponent = await import(pathToFileURL2(absoluteFilePath).href);
70100
+ const Component = MainComponent.default || (Object.keys(MainComponent).find((k) => k[0] === k[0].toUpperCase()) !== undefined ? MainComponent[Object.keys(MainComponent).find((k) => k[0] === k[0].toUpperCase())] : undefined);
70101
+ if (!Component) {
70102
+ throw new Error(`No component found in "${absoluteFilePath}". Make sure you export a component.`);
70103
+ }
70104
+ runner.add(/* @__PURE__ */ jsxDEV2(Component, {}, undefined, false, undefined, this));
70105
+ await runner.renderUntilSettled();
70106
+ const circuitJson = await runner.getCircuitJson();
70107
+ if (saveToFile) {
70108
+ debug11(`Saving circuit JSON to ${outputPath}`);
70109
+ fs28.writeFileSync(outputPath, JSON.stringify(circuitJson, null, 2));
70110
+ }
70111
+ return {
70112
+ circuitJson,
70113
+ outputPath
70114
+ };
70115
+ }
70116
+ var import_make_vfs2, debug11, ALLOWED_FILE_EXTENSIONS;
70117
+ var init_generate_circuit_json = __esm(() => {
70118
+ init_importFromUserLand();
70119
+ import_make_vfs2 = __toESM2(require_dist8(), 1);
70120
+ debug11 = Debug11("tsci:generate-circuit-json");
70121
+ ALLOWED_FILE_EXTENSIONS = [
70122
+ ".tsx",
70123
+ ".ts",
70124
+ ".jsx",
70125
+ ".js",
70126
+ ".json",
70127
+ ".txt",
70128
+ ".md",
70129
+ ".obj",
70130
+ ".kicad_mod"
70131
+ ];
70132
+ });
70133
+
69897
70134
  // node_modules/cli-spinners/spinners.json
69898
70135
  var require_spinners = __commonJS((exports2, module2) => {
69899
70136
  module2.exports = {
@@ -71541,6 +71778,179 @@ var require_emoji_regex = __commonJS((exports2, module2) => {
71541
71778
  };
71542
71779
  });
71543
71780
 
71781
+ // lib/shared/circuit-json-diagnostics.ts
71782
+ function analyzeCircuitJson(circuitJson) {
71783
+ const errors = [];
71784
+ const warnings = [];
71785
+ for (const item of circuitJson) {
71786
+ if (!item || typeof item !== "object")
71787
+ continue;
71788
+ const t3 = item.type;
71789
+ if (typeof t3 === "string") {
71790
+ if (t3.endsWith("_error"))
71791
+ errors.push(item);
71792
+ else if (t3.endsWith("_warning"))
71793
+ warnings.push(item);
71794
+ }
71795
+ if ("error_type" in item)
71796
+ errors.push(item);
71797
+ if ("warning_type" in item)
71798
+ warnings.push(item);
71799
+ }
71800
+ return { errors, warnings };
71801
+ }
71802
+
71803
+ // lib/shared/get-complete-platform-config.ts
71804
+ import { getPlatformConfig } from "@tscircuit/eval/platform-config";
71805
+ function getCompletePlatformConfig(userConfig) {
71806
+ const basePlatformConfig = getPlatformConfig();
71807
+ const defaultConfig = {
71808
+ ...basePlatformConfig,
71809
+ footprintFileParserMap: {
71810
+ ...basePlatformConfig.footprintFileParserMap,
71811
+ kicad_mod: {
71812
+ loadFromUrl: async (url) => {
71813
+ const fetchUrl = url.startsWith("/") ? `file://${url}` : url;
71814
+ return basePlatformConfig.footprintFileParserMap.kicad_mod.loadFromUrl(fetchUrl);
71815
+ }
71816
+ }
71817
+ }
71818
+ };
71819
+ if (!userConfig) {
71820
+ return defaultConfig;
71821
+ }
71822
+ return {
71823
+ ...defaultConfig,
71824
+ ...userConfig,
71825
+ footprintFileParserMap: {
71826
+ ...defaultConfig.footprintFileParserMap,
71827
+ ...userConfig.footprintFileParserMap
71828
+ }
71829
+ };
71830
+ }
71831
+ var init_get_complete_platform_config = () => {};
71832
+
71833
+ // cli/build/build-file.ts
71834
+ var exports_build_file = {};
71835
+ __export2(exports_build_file, {
71836
+ buildFile: () => buildFile
71837
+ });
71838
+ import path35 from "node:path";
71839
+ import fs35 from "node:fs";
71840
+ var buildFile = async (input, output, projectDir, options) => {
71841
+ try {
71842
+ console.log("Generating circuit JSON...");
71843
+ const completePlatformConfig = getCompletePlatformConfig(options?.platformConfig);
71844
+ const result = await generateCircuitJson({
71845
+ filePath: input,
71846
+ platformConfig: completePlatformConfig
71847
+ });
71848
+ fs35.mkdirSync(path35.dirname(output), { recursive: true });
71849
+ fs35.writeFileSync(output, JSON.stringify(result.circuitJson, null, 2));
71850
+ console.log(`Circuit JSON written to ${path35.relative(projectDir, output)}`);
71851
+ const { errors, warnings } = analyzeCircuitJson(result.circuitJson);
71852
+ if (!options?.ignoreWarnings) {
71853
+ for (const warn of warnings) {
71854
+ const msg = warn.message || JSON.stringify(warn);
71855
+ console.log(kleur_default.yellow(msg));
71856
+ }
71857
+ }
71858
+ if (!options?.ignoreErrors) {
71859
+ for (const err of errors) {
71860
+ const msg = err.message || JSON.stringify(err);
71861
+ console.error(kleur_default.red(msg));
71862
+ console.log(err.stack);
71863
+ }
71864
+ }
71865
+ if (errors.length > 0 && !options?.ignoreErrors) {
71866
+ console.error(kleur_default.red(`Build failed with ${errors.length} error(s). Use --ignore-errors to continue.`));
71867
+ return { ok: false };
71868
+ } else {
71869
+ return {
71870
+ ok: true,
71871
+ circuitJson: result.circuitJson
71872
+ };
71873
+ }
71874
+ } catch (err) {
71875
+ console.error(err);
71876
+ if (err instanceof Error) {
71877
+ logTsxExtensionHint(err, input);
71878
+ logTypeReexportHint(err, input);
71879
+ }
71880
+ return { ok: false };
71881
+ }
71882
+ }, logTsxExtensionHint = (error, entryFilePath) => {
71883
+ const lowerPath = entryFilePath.toLowerCase();
71884
+ const isTsEntry = lowerPath.endsWith(".ts") && !lowerPath.endsWith(".d.ts");
71885
+ const isAggregateError = error instanceof AggregateError || String(error).includes("AggregateError");
71886
+ if (!isTsEntry || !isAggregateError)
71887
+ return;
71888
+ const entryFileName = path35.basename(entryFilePath);
71889
+ console.error([
71890
+ "",
71891
+ `It looks like "${entryFileName}" is a ".ts" file. tscircuit component files must use the ".tsx" extension.`,
71892
+ "Try renaming the file to .tsx and re-running the build.",
71893
+ ""
71894
+ ].join(`
71895
+ `));
71896
+ }, TYPE_REEXPORT_ERROR_REGEX, logTypeReexportHint = (error, entryFilePath) => {
71897
+ const match = String(error).match(TYPE_REEXPORT_ERROR_REGEX);
71898
+ if (!match)
71899
+ return;
71900
+ const [, exportName, fromSpecifier] = match;
71901
+ const entryFileName = path35.basename(entryFilePath);
71902
+ console.error([
71903
+ "",
71904
+ `It looks like "${entryFileName}" re-exports the type-only symbol "${exportName}" from "${fromSpecifier}" without the "type" modifier.`,
71905
+ "Type-only exports must be re-exported with `export type { ... }`.",
71906
+ "Try rewriting the statement as:",
71907
+ ` export type { ${exportName} } from "${fromSpecifier}"`,
71908
+ ""
71909
+ ].join(`
71910
+ `));
71911
+ };
71912
+ var init_build_file = __esm(() => {
71913
+ init_kleur();
71914
+ init_generate_circuit_json();
71915
+ init_get_complete_platform_config();
71916
+ TYPE_REEXPORT_ERROR_REGEX = /SyntaxError: export '([^']+)' not found in '([^']+)'/;
71917
+ });
71918
+
71919
+ // lib/shared/register-static-asset-loaders.ts
71920
+ var exports_register_static_asset_loaders = {};
71921
+ __export2(exports_register_static_asset_loaders, {
71922
+ registerStaticAssetLoaders: () => registerStaticAssetLoaders
71923
+ });
71924
+ var TEXT_STATIC_ASSET_EXTENSIONS, staticAssetFilter, registered = false, registerStaticAssetLoaders = () => {
71925
+ if (registered)
71926
+ return;
71927
+ registered = true;
71928
+ if (typeof Bun !== "undefined" && typeof Bun.plugin === "function") {
71929
+ Bun.plugin({
71930
+ name: "tsci-static-assets",
71931
+ setup(build) {
71932
+ build.onLoad({ filter: staticAssetFilter }, (args) => {
71933
+ return {
71934
+ contents: `export default ${JSON.stringify(args.path)};`,
71935
+ loader: "js"
71936
+ };
71937
+ });
71938
+ }
71939
+ });
71940
+ }
71941
+ };
71942
+ var init_register_static_asset_loaders = __esm(() => {
71943
+ TEXT_STATIC_ASSET_EXTENSIONS = [
71944
+ ".gltf",
71945
+ ".step",
71946
+ ".kicad_mod",
71947
+ ".kicad_pcb",
71948
+ ".kicad_pro",
71949
+ ".kicad_sch"
71950
+ ];
71951
+ staticAssetFilter = new RegExp(`(${TEXT_STATIC_ASSET_EXTENSIONS.map((ext) => ext.replace(".", "\\.")).join("|")})$`, "i");
71952
+ });
71953
+
71544
71954
  // node_modules/commander/esm.mjs
71545
71955
  var import__ = __toESM2(require_commander(), 1);
71546
71956
  var {
@@ -71566,106 +71976,8 @@ import fs2 from "node:fs";
71566
71976
  import path from "node:path";
71567
71977
 
71568
71978
  // lib/shared/get-package-manager.ts
71979
+ init_kleur();
71569
71980
  import fs from "fs";
71570
-
71571
- // node_modules/kleur/index.mjs
71572
- var FORCE_COLOR;
71573
- var NODE_DISABLE_COLORS;
71574
- var NO_COLOR;
71575
- var TERM;
71576
- var isTTY = true;
71577
- if (typeof process !== "undefined") {
71578
- ({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});
71579
- isTTY = process.stdout && process.stdout.isTTY;
71580
- }
71581
- var $ = {
71582
- enabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== "dumb" && (FORCE_COLOR != null && FORCE_COLOR !== "0" || isTTY),
71583
- reset: init(0, 0),
71584
- bold: init(1, 22),
71585
- dim: init(2, 22),
71586
- italic: init(3, 23),
71587
- underline: init(4, 24),
71588
- inverse: init(7, 27),
71589
- hidden: init(8, 28),
71590
- strikethrough: init(9, 29),
71591
- black: init(30, 39),
71592
- red: init(31, 39),
71593
- green: init(32, 39),
71594
- yellow: init(33, 39),
71595
- blue: init(34, 39),
71596
- magenta: init(35, 39),
71597
- cyan: init(36, 39),
71598
- white: init(37, 39),
71599
- gray: init(90, 39),
71600
- grey: init(90, 39),
71601
- bgBlack: init(40, 49),
71602
- bgRed: init(41, 49),
71603
- bgGreen: init(42, 49),
71604
- bgYellow: init(43, 49),
71605
- bgBlue: init(44, 49),
71606
- bgMagenta: init(45, 49),
71607
- bgCyan: init(46, 49),
71608
- bgWhite: init(47, 49)
71609
- };
71610
- function run(arr, str) {
71611
- let i = 0, tmp, beg = "", end = "";
71612
- for (;i < arr.length; i++) {
71613
- tmp = arr[i];
71614
- beg += tmp.open;
71615
- end += tmp.close;
71616
- if (!!~str.indexOf(tmp.close)) {
71617
- str = str.replace(tmp.rgx, tmp.close + tmp.open);
71618
- }
71619
- }
71620
- return beg + str + end;
71621
- }
71622
- function chain(has, keys) {
71623
- let ctx = { has, keys };
71624
- ctx.reset = $.reset.bind(ctx);
71625
- ctx.bold = $.bold.bind(ctx);
71626
- ctx.dim = $.dim.bind(ctx);
71627
- ctx.italic = $.italic.bind(ctx);
71628
- ctx.underline = $.underline.bind(ctx);
71629
- ctx.inverse = $.inverse.bind(ctx);
71630
- ctx.hidden = $.hidden.bind(ctx);
71631
- ctx.strikethrough = $.strikethrough.bind(ctx);
71632
- ctx.black = $.black.bind(ctx);
71633
- ctx.red = $.red.bind(ctx);
71634
- ctx.green = $.green.bind(ctx);
71635
- ctx.yellow = $.yellow.bind(ctx);
71636
- ctx.blue = $.blue.bind(ctx);
71637
- ctx.magenta = $.magenta.bind(ctx);
71638
- ctx.cyan = $.cyan.bind(ctx);
71639
- ctx.white = $.white.bind(ctx);
71640
- ctx.gray = $.gray.bind(ctx);
71641
- ctx.grey = $.grey.bind(ctx);
71642
- ctx.bgBlack = $.bgBlack.bind(ctx);
71643
- ctx.bgRed = $.bgRed.bind(ctx);
71644
- ctx.bgGreen = $.bgGreen.bind(ctx);
71645
- ctx.bgYellow = $.bgYellow.bind(ctx);
71646
- ctx.bgBlue = $.bgBlue.bind(ctx);
71647
- ctx.bgMagenta = $.bgMagenta.bind(ctx);
71648
- ctx.bgCyan = $.bgCyan.bind(ctx);
71649
- ctx.bgWhite = $.bgWhite.bind(ctx);
71650
- return ctx;
71651
- }
71652
- function init(open, close) {
71653
- let blk = {
71654
- open: `\x1B[${open}m`,
71655
- close: `\x1B[${close}m`,
71656
- rgx: new RegExp(`\\x1b\\[${close}m`, "g")
71657
- };
71658
- return function(txt) {
71659
- if (this !== undefined && this.has !== undefined) {
71660
- !!~this.has.indexOf(open) || (this.has.push(open), this.keys.push(blk));
71661
- return txt === undefined ? this : $.enabled ? run(this.keys, txt + "") : txt + "";
71662
- }
71663
- return txt === undefined ? chain([open], [blk]) : $.enabled ? run([blk], txt + "") : txt + "";
71664
- };
71665
- }
71666
- var kleur_default = $;
71667
-
71668
- // lib/shared/get-package-manager.ts
71669
71981
  import { execSync } from "node:child_process";
71670
71982
  function detectPackageManager() {
71671
71983
  const userAgent = process.env.npm_config_user_agent || "";
@@ -74128,7 +74440,7 @@ var getGlobalDepsInstallCommand = (packageManager, deps) => {
74128
74440
  import { execSync as execSync2 } from "node:child_process";
74129
74441
  var import_semver2 = __toESM2(require_semver2(), 1);
74130
74442
  // package.json
74131
- var version = "0.1.769";
74443
+ var version = "0.1.771";
74132
74444
  var package_default = {
74133
74445
  name: "@tscircuit/cli",
74134
74446
  version,
@@ -74181,6 +74493,7 @@ var package_default = {
74181
74493
  "looks-same": "^9.0.1",
74182
74494
  "make-vfs": "^1.0.15",
74183
74495
  md5: "^2.3.0",
74496
+ multithreading: "^0.3.45",
74184
74497
  "perfect-cli": "^1.0.21",
74185
74498
  playwright: "^1.57.0",
74186
74499
  poppygl: "^0.0.12",
@@ -74189,7 +74502,7 @@ var package_default = {
74189
74502
  semver: "^7.6.3",
74190
74503
  sharp: "0.32.6",
74191
74504
  tempy: "^3.1.0",
74192
- tscircuit: "^0.0.1136-libonly",
74505
+ tscircuit: "^0.0.1160-libonly",
74193
74506
  tsx: "^4.7.1",
74194
74507
  "typed-ky": "^0.0.4",
74195
74508
  zod: "^3.23.8"
@@ -74225,6 +74538,9 @@ var package_default = {
74225
74538
  type: "module"
74226
74539
  };
74227
74540
 
74541
+ // lib/shared/check-for-cli-update.ts
74542
+ init_kleur();
74543
+
74228
74544
  // lib/utils/prompts.ts
74229
74545
  var import_prompts = __toESM2(require_prompts3(), 1);
74230
74546
 
@@ -77723,6 +78039,7 @@ function watch(paths, options = {}) {
77723
78039
  }
77724
78040
 
77725
78041
  // lib/shared/push-snippet.ts
78042
+ init_kleur();
77726
78043
  var import_semver3 = __toESM2(require_semver2(), 1);
77727
78044
  import * as fs13 from "node:fs";
77728
78045
  import * as path15 from "node:path";
@@ -77731,6 +78048,7 @@ import Debug from "debug";
77731
78048
  // lib/shared/get-entrypoint.ts
77732
78049
  import * as fs9 from "node:fs";
77733
78050
  import * as path11 from "node:path";
78051
+ init_kleur();
77734
78052
  var ALLOWED_ENTRYPOINT_NAMES = Object.freeze([
77735
78053
  "index.tsx",
77736
78054
  "index.ts",
@@ -78758,6 +79076,7 @@ Publish completed with ${uploadResults.succeeded.length} files uploaded and ${up
78758
79076
  };
78759
79077
 
78760
79078
  // lib/shared/add-package.ts
79079
+ init_kleur();
78761
79080
  import * as fs16 from "node:fs";
78762
79081
  import * as path18 from "node:path";
78763
79082
 
@@ -78790,6 +79109,7 @@ async function resolveTarballUrlFromRegistry(packageName) {
78790
79109
  // lib/shared/detect-and-setup-kicad-library.ts
78791
79110
  import * as fs14 from "node:fs";
78792
79111
  import * as path16 from "node:path";
79112
+ init_kleur();
78793
79113
  var import_strip_json_comments = __toESM2(require_strip_json_comments(), 1);
78794
79114
  function extractPackageName(packageSpec) {
78795
79115
  if (packageSpec.startsWith("http")) {
@@ -78880,6 +79200,7 @@ async function setupTsConfig(projectDir) {
78880
79200
  }
78881
79201
 
78882
79202
  // lib/shared/handle-registry-auth-error.ts
79203
+ init_kleur();
78883
79204
  import fs15 from "node:fs";
78884
79205
  import os2 from "node:os";
78885
79206
  import path17 from "node:path";
@@ -78993,6 +79314,7 @@ async function addPackage(packageSpec, projectDir = process.cwd()) {
78993
79314
  }
78994
79315
 
78995
79316
  // cli/dev/DevServer.ts
79317
+ init_kleur();
78996
79318
  import Debug2 from "debug";
78997
79319
 
78998
79320
  // lib/dependency-analysis/getNodeModuleDependencies.ts
@@ -79803,6 +80125,9 @@ var resolveDevTarget = async (file) => {
79803
80125
  return { absolutePath: availableFiles[0], projectDir };
79804
80126
  };
79805
80127
 
80128
+ // cli/dev/register.ts
80129
+ init_kleur();
80130
+
79806
80131
  // lib/getVersion.ts
79807
80132
  var import_semver4 = __toESM2(require_semver2(), 1);
79808
80133
  var getVersion = () => {
@@ -79911,7 +80236,11 @@ function createDelay({ clearTimeout: defaultClear, setTimeout: defaultSet } = {}
79911
80236
  var delay2 = createDelay();
79912
80237
  var delay_default = delay2;
79913
80238
 
80239
+ // cli/auth/login/register.ts
80240
+ init_kleur();
80241
+
79914
80242
  // cli/auth/setup-npmrc/setup-npmrc.ts
80243
+ init_kleur();
79915
80244
  import * as fs22 from "node:fs";
79916
80245
  import * as path24 from "node:path";
79917
80246
  import * as os3 from "node:os";
@@ -80089,9 +80418,11 @@ var registerConfigPrint = (program3) => {
80089
80418
  // cli/clone/register.ts
80090
80419
  import * as fs25 from "node:fs";
80091
80420
  import * as path27 from "node:path";
80421
+ init_kleur();
80092
80422
 
80093
80423
  // cli/clone/clone-bug-report.ts
80094
80424
  var import_jszip = __toESM2(require_lib4(), 1);
80425
+ init_kleur();
80095
80426
  var import_prompts7 = __toESM2(require_prompts3(), 1);
80096
80427
  import * as fs24 from "node:fs";
80097
80428
  import * as path26 from "node:path";
@@ -84478,37 +84809,7 @@ function createKicadLibraryConverterContext(params2) {
84478
84809
  import fs27 from "node:fs";
84479
84810
  import path29 from "node:path";
84480
84811
  import { pathToFileURL } from "node:url";
84481
-
84482
- // lib/shared/importFromUserLand.ts
84483
- import { createRequire as createRequire2 } from "node:module";
84484
- import fs26 from "node:fs";
84485
- import path28 from "node:path";
84486
- async function importFromUserLand(moduleName) {
84487
- const userModulePath = path28.join(process.cwd(), "node_modules", moduleName);
84488
- if (fs26.existsSync(userModulePath)) {
84489
- const userRequire = createRequire2(path28.join(process.cwd(), "noop.js"));
84490
- try {
84491
- const resolvedUserPath = userRequire.resolve(moduleName);
84492
- return await import(resolvedUserPath);
84493
- } catch (error) {
84494
- if (error?.code !== "MODULE_NOT_FOUND") {
84495
- throw error;
84496
- }
84497
- }
84498
- }
84499
- const cliRequire = createRequire2(import.meta.url);
84500
- try {
84501
- const resolvedCliPath = cliRequire.resolve(moduleName);
84502
- return await import(resolvedCliPath);
84503
- } catch (error) {
84504
- if (error?.code !== "MODULE_NOT_FOUND") {
84505
- throw error;
84506
- }
84507
- }
84508
- return import(moduleName);
84509
- }
84510
-
84511
- // lib/shared/convert-to-kicad-library.tsx
84812
+ init_importFromUserLand();
84512
84813
  import { jsxDEV } from "react/jsx-dev-runtime";
84513
84814
  async function convertToKicadLibrary({
84514
84815
  filePath,
@@ -84576,109 +84877,8 @@ async function convertToKicadLibrary({
84576
84877
  }
84577
84878
 
84578
84879
  // lib/shared/export-snippet.ts
84880
+ init_generate_circuit_json();
84579
84881
  var import_jszip2 = __toESM2(require_lib4(), 1);
84580
-
84581
- // lib/shared/generate-circuit-json.tsx
84582
- var import_make_vfs2 = __toESM2(require_dist8(), 1);
84583
- import path30 from "node:path";
84584
- import fs28 from "node:fs";
84585
- import { pathToFileURL as pathToFileURL2 } from "node:url";
84586
- import Debug11 from "debug";
84587
-
84588
- // lib/utils/abbreviate-stringify-object.ts
84589
- var abbreviateStringifyObject = (obj) => {
84590
- if (obj === null || obj === undefined)
84591
- return obj;
84592
- if (typeof obj !== "object")
84593
- return obj;
84594
- return JSON.stringify(Object.fromEntries(Object.entries(obj).map(([k, v]) => {
84595
- return [
84596
- k,
84597
- typeof v === "string" ? v.slice(0, 100) : typeof v === "object" && v !== null ? abbreviateStringifyObject(v) : v
84598
- ];
84599
- })));
84600
- };
84601
-
84602
- // lib/shared/generate-circuit-json.tsx
84603
- import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
84604
- var debug11 = Debug11("tsci:generate-circuit-json");
84605
- var ALLOWED_FILE_EXTENSIONS = [
84606
- ".tsx",
84607
- ".ts",
84608
- ".jsx",
84609
- ".js",
84610
- ".json",
84611
- ".txt",
84612
- ".md",
84613
- ".obj",
84614
- ".kicad_mod"
84615
- ];
84616
- async function generateCircuitJson({
84617
- filePath,
84618
- outputDir,
84619
- outputFileName,
84620
- saveToFile = false,
84621
- platformConfig
84622
- }) {
84623
- debug11(`Generating circuit JSON for ${filePath}`);
84624
- const React = await importFromUserLand("react");
84625
- globalThis.React = React;
84626
- const userLandTscircuit = await importFromUserLand("tscircuit");
84627
- const runner = new userLandTscircuit.RootCircuit({
84628
- platform: platformConfig
84629
- });
84630
- const absoluteFilePath = path30.isAbsolute(filePath) ? filePath : path30.resolve(process.cwd(), filePath);
84631
- const projectDir = path30.dirname(absoluteFilePath);
84632
- const resolvedOutputDir = outputDir ?? projectDir;
84633
- const relativeComponentPath = path30.relative(projectDir, absoluteFilePath);
84634
- const baseFileName = outputFileName || path30.basename(absoluteFilePath).replace(/\.[^.]+$/, "");
84635
- const outputPath = path30.join(resolvedOutputDir, `${baseFileName}.circuit.json`);
84636
- debug11(`Project directory: ${projectDir}`);
84637
- debug11(`Relative component path: ${relativeComponentPath}`);
84638
- debug11(`Output path: ${outputPath}`);
84639
- const fsMap = {
84640
- ...await import_make_vfs2.getVirtualFileSystemFromDirPath({
84641
- dirPath: projectDir,
84642
- fileMatchFn: (filePath2) => {
84643
- const normalizedFilePath = filePath2.replace(/\\/g, "/");
84644
- if (normalizedFilePath.endsWith(".kicad_mod")) {
84645
- return true;
84646
- }
84647
- if (normalizedFilePath.includes("node_modules/"))
84648
- return false;
84649
- if (normalizedFilePath.includes("dist/"))
84650
- return false;
84651
- if (normalizedFilePath.includes("build/"))
84652
- return false;
84653
- if (normalizedFilePath.match(/^\.[^/]/))
84654
- return false;
84655
- if (!ALLOWED_FILE_EXTENSIONS.includes(path30.extname(normalizedFilePath)))
84656
- return false;
84657
- return true;
84658
- },
84659
- contentFormat: "string"
84660
- })
84661
- };
84662
- debug11(`fsMap: ${abbreviateStringifyObject(fsMap)}`);
84663
- const MainComponent = await import(pathToFileURL2(absoluteFilePath).href);
84664
- const Component = MainComponent.default || (Object.keys(MainComponent).find((k) => k[0] === k[0].toUpperCase()) !== undefined ? MainComponent[Object.keys(MainComponent).find((k) => k[0] === k[0].toUpperCase())] : undefined);
84665
- if (!Component) {
84666
- throw new Error(`No component found in "${absoluteFilePath}". Make sure you export a component.`);
84667
- }
84668
- runner.add(/* @__PURE__ */ jsxDEV2(Component, {}, undefined, false, undefined, this));
84669
- await runner.renderUntilSettled();
84670
- const circuitJson = await runner.getCircuitJson();
84671
- if (saveToFile) {
84672
- debug11(`Saving circuit JSON to ${outputPath}`);
84673
- fs28.writeFileSync(outputPath, JSON.stringify(circuitJson, null, 2));
84674
- }
84675
- return {
84676
- circuitJson,
84677
- outputPath
84678
- };
84679
- }
84680
-
84681
- // lib/shared/export-snippet.ts
84682
84882
  var writeFileAsync = promisify3(fs29.writeFile);
84683
84883
  var ALLOWED_EXPORT_FORMATS = [
84684
84884
  "json",
@@ -84817,6 +85017,9 @@ var exportSnippet = async ({
84817
85017
  onExit(0);
84818
85018
  };
84819
85019
 
85020
+ // cli/export/register.ts
85021
+ init_generate_circuit_json();
85022
+
84820
85023
  // lib/shared/get-spice-with-sim.ts
84821
85024
  import { circuitJsonToSpice } from "circuit-json-to-spice";
84822
85025
  var formatSimTime = (seconds) => {
@@ -85096,6 +85299,7 @@ var registerAuthSetToken = (program3) => {
85096
85299
  };
85097
85300
 
85098
85301
  // cli/auth/whoami/register.ts
85302
+ init_kleur();
85099
85303
  var formatDate = (date) => {
85100
85304
  if (!date)
85101
85305
  return null;
@@ -85155,6 +85359,7 @@ var registerAdd = (program3) => {
85155
85359
  };
85156
85360
 
85157
85361
  // cli/upgrade/register.ts
85362
+ init_kleur();
85158
85363
  function registerUpgradeCommand(program3) {
85159
85364
  program3.command("upgrade").description("Upgrade CLI to the latest version").action(async () => {
85160
85365
  const isUpdated = await updateTsciIfNewVersionIsAvailable();
@@ -85165,6 +85370,7 @@ function registerUpgradeCommand(program3) {
85165
85370
  }
85166
85371
 
85167
85372
  // cli/config/set/register.ts
85373
+ init_kleur();
85168
85374
  var availableGlobalConfigKeys = [
85169
85375
  "alwaysCloneWithAuthorName"
85170
85376
  ];
@@ -86500,6 +86706,7 @@ Fuse.config = Config;
86500
86706
  }
86501
86707
 
86502
86708
  // cli/search/register.ts
86709
+ init_kleur();
86503
86710
  var registerSearch = (program3) => {
86504
86711
  program3.command("search").description("Search for footprints, CAD models or packages in the tscircuit ecosystem").argument("<query>", "Search query (e.g. keyword, author, or package name)").option("--kicad", "Only search KiCad footprints").action(async (query, opts) => {
86505
86712
  const onlyKicad = opts.kicad;
@@ -86553,6 +86760,9 @@ var registerSearch = (program3) => {
86553
86760
  });
86554
86761
  };
86555
86762
 
86763
+ // cli/import/register.ts
86764
+ init_kleur();
86765
+
86556
86766
  // node_modules/easyeda/dist/browser/chunk-ZVLWDN7A.js
86557
86767
  var __create3 = Object.create;
86558
86768
  var __defProp3 = Object.defineProperty;
@@ -86568,7 +86778,7 @@ var __require2 = /* @__PURE__ */ ((x) => __require)(function(x) {
86568
86778
  var __commonJS2 = (cb, mod) => function __require2() {
86569
86779
  return mod || (0, cb[__getOwnPropNames3(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
86570
86780
  };
86571
- var __export2 = (target, all) => {
86781
+ var __export3 = (target, all) => {
86572
86782
  for (var name in all)
86573
86783
  __defProp3(target, name, { get: all[name], enumerable: true });
86574
86784
  };
@@ -87362,7 +87572,7 @@ var require_svgson_umd = __commonJS2({
87362
87572
  }
87363
87573
  });
87364
87574
  var dist_exports = {};
87365
- __export2(dist_exports, {
87575
+ __export3(dist_exports, {
87366
87576
  all_layers: () => all_layers,
87367
87577
  any_circuit_element: () => any_circuit_element,
87368
87578
  any_soup_element: () => any_soup_element,
@@ -87540,7 +87750,7 @@ __export2(dist_exports, {
87540
87750
  wave_shape: () => wave_shape
87541
87751
  });
87542
87752
  var external_exports = {};
87543
- __export2(external_exports, {
87753
+ __export3(external_exports, {
87544
87754
  BRAND: () => BRAND,
87545
87755
  DIRTY: () => DIRTY,
87546
87756
  EMPTY_PATH: () => EMPTY_PATH,
@@ -121346,7 +121556,7 @@ var import_constants14 = __toESM3(require_constants6(), 1);
121346
121556
  var import_debug62 = __toESM3(require_browser(), 1);
121347
121557
  var import_debug72 = __toESM3(require_browser(), 1);
121348
121558
  var esm_exports2 = {};
121349
- __export2(esm_exports2, {
121559
+ __export3(esm_exports2, {
121350
121560
  DocumentPosition: () => DocumentPosition,
121351
121561
  append: () => append,
121352
121562
  appendChild: () => appendChild,
@@ -154561,12 +154771,12 @@ var import_jsx_runtime5 = __toESM3(require_jsx_runtime(), 1);
154561
154771
  var import_jsx_runtime6 = __toESM3(require_jsx_runtime(), 1);
154562
154772
  var import_react7 = __toESM3(require_react(), 1);
154563
154773
  var __defProp32 = Object.defineProperty;
154564
- var __export3 = (target, all) => {
154774
+ var __export32 = (target, all) => {
154565
154775
  for (var name in all)
154566
154776
  __defProp32(target, name, { get: all[name], enumerable: true });
154567
154777
  };
154568
154778
  var components_exports = {};
154569
- __export3(components_exports, {
154779
+ __export32(components_exports, {
154570
154780
  AnalogSimulation: () => AnalogSimulation,
154571
154781
  Battery: () => Battery,
154572
154782
  Board: () => Board,
@@ -172425,145 +172635,16 @@ var registerRemove = (program3) => {
172425
172635
  };
172426
172636
 
172427
172637
  // cli/build/register.ts
172638
+ init_build_file();
172428
172639
  import path47 from "node:path";
172429
172640
  import fs47 from "node:fs";
172430
172641
 
172431
- // cli/build/build-file.ts
172432
- import path35 from "node:path";
172433
- import fs35 from "node:fs";
172434
-
172435
- // lib/shared/circuit-json-diagnostics.ts
172436
- function analyzeCircuitJson(circuitJson) {
172437
- const errors = [];
172438
- const warnings = [];
172439
- for (const item of circuitJson) {
172440
- if (!item || typeof item !== "object")
172441
- continue;
172442
- const t3 = item.type;
172443
- if (typeof t3 === "string") {
172444
- if (t3.endsWith("_error"))
172445
- errors.push(item);
172446
- else if (t3.endsWith("_warning"))
172447
- warnings.push(item);
172448
- }
172449
- if ("error_type" in item)
172450
- errors.push(item);
172451
- if ("warning_type" in item)
172452
- warnings.push(item);
172453
- }
172454
- return { errors, warnings };
172455
- }
172456
-
172457
- // lib/shared/get-complete-platform-config.ts
172458
- import { getPlatformConfig } from "@tscircuit/eval/platform-config";
172459
- function getCompletePlatformConfig(userConfig) {
172460
- const basePlatformConfig = getPlatformConfig();
172461
- const defaultConfig = {
172462
- ...basePlatformConfig,
172463
- footprintFileParserMap: {
172464
- ...basePlatformConfig.footprintFileParserMap,
172465
- kicad_mod: {
172466
- loadFromUrl: async (url) => {
172467
- const fetchUrl = url.startsWith("/") ? `file://${url}` : url;
172468
- return basePlatformConfig.footprintFileParserMap.kicad_mod.loadFromUrl(fetchUrl);
172469
- }
172470
- }
172471
- }
172472
- };
172473
- if (!userConfig) {
172474
- return defaultConfig;
172475
- }
172476
- return {
172477
- ...defaultConfig,
172478
- ...userConfig,
172479
- footprintFileParserMap: {
172480
- ...defaultConfig.footprintFileParserMap,
172481
- ...userConfig.footprintFileParserMap
172482
- }
172483
- };
172484
- }
172485
-
172486
- // cli/build/build-file.ts
172487
- var buildFile = async (input, output, projectDir, options) => {
172488
- try {
172489
- console.log("Generating circuit JSON...");
172490
- const completePlatformConfig = getCompletePlatformConfig(options?.platformConfig);
172491
- const result = await generateCircuitJson({
172492
- filePath: input,
172493
- platformConfig: completePlatformConfig
172494
- });
172495
- fs35.mkdirSync(path35.dirname(output), { recursive: true });
172496
- fs35.writeFileSync(output, JSON.stringify(result.circuitJson, null, 2));
172497
- console.log(`Circuit JSON written to ${path35.relative(projectDir, output)}`);
172498
- const { errors, warnings } = analyzeCircuitJson(result.circuitJson);
172499
- if (!options?.ignoreWarnings) {
172500
- for (const warn of warnings) {
172501
- const msg = warn.message || JSON.stringify(warn);
172502
- console.log(kleur_default.yellow(msg));
172503
- }
172504
- }
172505
- if (!options?.ignoreErrors) {
172506
- for (const err of errors) {
172507
- const msg = err.message || JSON.stringify(err);
172508
- console.error(kleur_default.red(msg));
172509
- console.log(err.stack);
172510
- }
172511
- }
172512
- if (errors.length > 0 && !options?.ignoreErrors) {
172513
- console.error(kleur_default.red(`Build failed with ${errors.length} error(s). Use --ignore-errors to continue.`));
172514
- return { ok: false };
172515
- } else {
172516
- return {
172517
- ok: true,
172518
- circuitJson: result.circuitJson
172519
- };
172520
- }
172521
- } catch (err) {
172522
- console.error(err);
172523
- if (err instanceof Error) {
172524
- logTsxExtensionHint(err, input);
172525
- logTypeReexportHint(err, input);
172526
- }
172527
- return { ok: false };
172528
- }
172529
- };
172530
- var logTsxExtensionHint = (error, entryFilePath) => {
172531
- const lowerPath = entryFilePath.toLowerCase();
172532
- const isTsEntry = lowerPath.endsWith(".ts") && !lowerPath.endsWith(".d.ts");
172533
- const isAggregateError = error instanceof AggregateError || String(error).includes("AggregateError");
172534
- if (!isTsEntry || !isAggregateError)
172535
- return;
172536
- const entryFileName = path35.basename(entryFilePath);
172537
- console.error([
172538
- "",
172539
- `It looks like "${entryFileName}" is a ".ts" file. tscircuit component files must use the ".tsx" extension.`,
172540
- "Try renaming the file to .tsx and re-running the build.",
172541
- ""
172542
- ].join(`
172543
- `));
172544
- };
172545
- var TYPE_REEXPORT_ERROR_REGEX = /SyntaxError: export '([^']+)' not found in '([^']+)'/;
172546
- var logTypeReexportHint = (error, entryFilePath) => {
172547
- const match = String(error).match(TYPE_REEXPORT_ERROR_REGEX);
172548
- if (!match)
172549
- return;
172550
- const [, exportName, fromSpecifier] = match;
172551
- const entryFileName = path35.basename(entryFilePath);
172552
- console.error([
172553
- "",
172554
- `It looks like "${entryFileName}" re-exports the type-only symbol "${exportName}" from "${fromSpecifier}" without the "type" modifier.`,
172555
- "Type-only exports must be re-exported with `export type { ... }`.",
172556
- "Try rewriting the statement as:",
172557
- ` export type { ${exportName} } from "${fromSpecifier}"`,
172558
- ""
172559
- ].join(`
172560
- `));
172561
- };
172562
-
172563
172642
  // cli/build/build-ci.ts
172643
+ init_kleur();
172564
172644
  import { execSync as execSync3 } from "node:child_process";
172565
172645
 
172566
172646
  // lib/shared/install-project-dependencies.ts
172647
+ init_kleur();
172567
172648
  import fs37 from "node:fs";
172568
172649
  import path37 from "node:path";
172569
172650
 
@@ -173148,6 +173229,7 @@ var generateKicadProject = async ({
173148
173229
  };
173149
173230
 
173150
173231
  // cli/build/build-kicad-pcm.ts
173232
+ init_kleur();
173151
173233
  import path43 from "node:path";
173152
173234
  import fs43 from "node:fs";
173153
173235
 
@@ -173343,6 +173425,7 @@ async function buildKicadPcm({
173343
173425
  }
173344
173426
 
173345
173427
  // cli/build/transpile/index.ts
173428
+ init_kleur();
173346
173429
  import path45 from "node:path";
173347
173430
  import fs45 from "node:fs";
173348
173431
  import { rollup } from "rollup";
@@ -173679,10 +173762,2657 @@ async function getLatestTscircuitCdnUrl() {
173679
173762
  return `https://cdn.jsdelivr.net/npm/tscircuit@${version2}/dist/browser.min.js`;
173680
173763
  }
173681
173764
 
173765
+ // cli/build/register.ts
173766
+ init_kleur();
173767
+
173768
+ // node_modules/multithreading/src/node/polyfill.js
173769
+ import { isMainThread, parentPort, Worker as NodeWorker } from "node:worker_threads";
173770
+ globalThis.self = globalThis;
173771
+ globalThis.ErrorEvent = class ErrorEvent2 extends Event {
173772
+ constructor(type, init2) {
173773
+ super(type, init2);
173774
+ this.message = init2?.message || "";
173775
+ this.filename = init2?.filename || "";
173776
+ this.lineno = init2?.lineno || 0;
173777
+ this.colno = init2?.colno || 0;
173778
+ this.error = init2?.error || null;
173779
+ }
173780
+ };
173781
+ if (isMainThread) {
173782
+ globalThis.Worker = class Worker2 extends EventTarget {
173783
+ constructor(scriptURL, options) {
173784
+ super();
173785
+ this.onmessage = null;
173786
+ this.onerror = null;
173787
+ const urlStr = scriptURL.toString();
173788
+ const finalPath = urlStr.startsWith("file://") ? new URL(urlStr) : urlStr;
173789
+ this._worker = new NodeWorker(finalPath, { ...options });
173790
+ this._worker.on("message", (data) => {
173791
+ const event = new MessageEvent("message", { data });
173792
+ this.dispatchEvent(event);
173793
+ if (this.onmessage)
173794
+ this.onmessage(event);
173795
+ });
173796
+ this._worker.on("error", (error) => {
173797
+ const event = new ErrorEvent("error", {
173798
+ error,
173799
+ message: error.message
173800
+ });
173801
+ this.dispatchEvent(event);
173802
+ if (this.onerror)
173803
+ this.onerror(event);
173804
+ });
173805
+ this._worker.on("exit", (code) => {
173806
+ if (code !== 0) {
173807
+ const err = new Error(`Worker stopped with exit code ${code}`);
173808
+ const event = new ErrorEvent("error", {
173809
+ error: err,
173810
+ message: err.message
173811
+ });
173812
+ this.dispatchEvent(event);
173813
+ if (this.onerror)
173814
+ this.onerror(event);
173815
+ }
173816
+ });
173817
+ }
173818
+ postMessage(message, transfer) {
173819
+ this._worker.postMessage(message, transfer);
173820
+ }
173821
+ terminate() {
173822
+ this._worker.terminate();
173823
+ }
173824
+ };
173825
+ }
173826
+ if (!isMainThread && parentPort) {
173827
+
173828
+ class WorkerGlobalScope extends EventTarget {
173829
+ static [Symbol.hasInstance](instance) {
173830
+ return instance === globalThis;
173831
+ }
173832
+ }
173833
+ globalThis.WorkerGlobalScope = WorkerGlobalScope;
173834
+ globalThis.postMessage = (message, transfer) => {
173835
+ parentPort.postMessage(message, transfer);
173836
+ };
173837
+ let currentHandler = globalThis.onmessage;
173838
+ parentPort.on("message", (data) => {
173839
+ const event = new MessageEvent("message", { data });
173840
+ if (typeof globalThis.onmessage === "function") {
173841
+ globalThis.onmessage(event);
173842
+ }
173843
+ });
173844
+ Object.defineProperty(globalThis, "onmessage", {
173845
+ get: () => currentHandler,
173846
+ set: (fn3) => {
173847
+ currentHandler = fn3;
173848
+ },
173849
+ configurable: true,
173850
+ enumerable: true
173851
+ });
173852
+ }
173853
+
173854
+ // node_modules/multithreading/src/lib/shared.js
173855
+ var toSerialized = Symbol("Thread.Serialize");
173856
+ var toDeserialized = Symbol("Thread.Deserialize");
173857
+
173858
+ class Serializable {
173859
+ static [toDeserialized](obj) {
173860
+ throw new Error(`[toDeserialized] not implemented for ${this.name}`);
173861
+ }
173862
+ }
173863
+ var classRegistry = new Map;
173864
+ var reverseClassRegistry = new Map;
173865
+ function register2(typeId, cls) {
173866
+ classRegistry.set(typeId, cls);
173867
+ reverseClassRegistry.set(cls, typeId);
173868
+ }
173869
+ var TRANSFERABLE_CLASSES = [
173870
+ MessagePort,
173871
+ ReadableStream,
173872
+ WritableStream,
173873
+ TransformStream,
173874
+ ArrayBuffer
173875
+ ];
173876
+ function serialize(arg) {
173877
+ if (arg === null || arg === undefined) {
173878
+ return { value: { t: 0, v: arg }, transfer: [] };
173879
+ }
173880
+ if (typeof arg === "object" && arg !== null && typeof arg[toSerialized] === "function") {
173881
+ const { value, transfer: transfer2, typeId } = arg[toSerialized]();
173882
+ const Ctor = arg.constructor;
173883
+ return {
173884
+ value: {
173885
+ t: 1,
173886
+ c: typeId ?? reverseClassRegistry.get(Ctor),
173887
+ v: value
173888
+ },
173889
+ transfer: transfer2
173890
+ };
173891
+ }
173892
+ const transfer = [];
173893
+ if (arg instanceof SharedArrayBuffer) {} else if (ArrayBuffer.isView(arg)) {
173894
+ if (!(arg.buffer instanceof SharedArrayBuffer)) {
173895
+ transfer.push(arg.buffer);
173896
+ }
173897
+ } else if (TRANSFERABLE_CLASSES.some((t3) => arg instanceof t3)) {
173898
+ transfer.push(arg);
173899
+ }
173900
+ return {
173901
+ value: { t: 0, v: arg },
173902
+ transfer
173903
+ };
173904
+ }
173905
+ function deserialize(envelope) {
173906
+ if (!envelope || typeof envelope !== "object")
173907
+ return envelope;
173908
+ if (envelope.t === 0) {
173909
+ return envelope.v;
173910
+ }
173911
+ if (envelope.t === 1) {
173912
+ const Cls = classRegistry.get(envelope.c);
173913
+ if (Cls) {
173914
+ return Cls[toDeserialized](envelope.v);
173915
+ }
173916
+ throw new Error(`Unknown TypeID ${envelope.c}. Did you forget to import the class?`);
173917
+ }
173918
+ return envelope;
173919
+ }
173920
+
173921
+ // node_modules/multithreading/src/lib/pool.js
173922
+ var newWorker;
173923
+ function workerOverride(fn3) {
173924
+ newWorker = fn3;
173925
+ }
173926
+
173927
+ class WorkerPool {
173928
+ constructor(maxThreads) {
173929
+ this.workers = [];
173930
+ this.taskIdCounter = 0;
173931
+ this.maxThreads = maxThreads || navigator.hardwareConcurrency || 4;
173932
+ }
173933
+ createWorker() {
173934
+ const worker = newWorker();
173935
+ worker._loadedFnIds = new Set;
173936
+ worker._pending = new Map;
173937
+ worker.onmessage = (e4) => {
173938
+ const { taskId, type } = e4.data;
173939
+ const p4 = worker._pending.get(taskId);
173940
+ if (p4) {
173941
+ if (type === "ERROR") {
173942
+ const err = new Error(e4.data.error);
173943
+ if (e4.data.stack)
173944
+ err.stack = e4.data.stack;
173945
+ p4.reject(err);
173946
+ } else {
173947
+ p4.resolve(deserialize(e4.data.result));
173948
+ }
173949
+ worker._pending.delete(taskId);
173950
+ }
173951
+ };
173952
+ worker.onerror = (e4) => {
173953
+ e4.preventDefault();
173954
+ const err = new Error(`Worker Crashed: ${e4.message}`);
173955
+ for (const p4 of worker._pending.values())
173956
+ p4.reject(err);
173957
+ worker._pending.clear();
173958
+ this.removeWorker(worker);
173959
+ };
173960
+ this.workers.push(worker);
173961
+ return worker;
173962
+ }
173963
+ removeWorker(worker) {
173964
+ this.workers = this.workers.filter((w4) => w4 !== worker);
173965
+ worker.terminate();
173966
+ }
173967
+ async executeTask(worker, task) {
173968
+ const { fnId, code, args } = task;
173969
+ const taskId = this.taskIdCounter++;
173970
+ const { promise, resolve: resolve12, reject } = Promise.withResolvers();
173971
+ worker._pending.set(taskId, { resolve: resolve12, reject });
173972
+ const serializedArgs = args.map(serialize);
173973
+ const values = serializedArgs.map((r4) => r4.value);
173974
+ const transferList = [
173975
+ ...new Set(serializedArgs.flatMap((r4) => r4.transfer))
173976
+ ];
173977
+ const hasCode = worker._loadedFnIds.has(fnId);
173978
+ if (!hasCode) {
173979
+ worker._loadedFnIds.add(fnId);
173980
+ }
173981
+ worker.postMessage({
173982
+ type: "RUN",
173983
+ taskId,
173984
+ fnId,
173985
+ code: hasCode ? undefined : code,
173986
+ args: values
173987
+ }, { transfer: transferList });
173988
+ return await promise;
173989
+ }
173990
+ async submit(task) {
173991
+ let bestCandidate;
173992
+ let bestCandidateLoad = Infinity;
173993
+ let bestCandidateScore = 4;
173994
+ for (let i3 = 0;i3 < this.workers.length; i3++) {
173995
+ const w4 = this.workers[i3];
173996
+ const load3 = w4._pending.size;
173997
+ const hasAffinity = w4._loadedFnIds.has(task.fnId);
173998
+ if (load3 === 0 && hasAffinity) {
173999
+ return await this.executeTask(w4, task);
174000
+ }
174001
+ let score = 4;
174002
+ if (load3 === 0)
174003
+ score = 1;
174004
+ else if (hasAffinity)
174005
+ score = 2;
174006
+ else
174007
+ score = 3;
174008
+ if (score < bestCandidateScore || score === bestCandidateScore && load3 < bestCandidateLoad) {
174009
+ bestCandidate = w4;
174010
+ bestCandidateScore = score;
174011
+ bestCandidateLoad = load3;
174012
+ }
174013
+ }
174014
+ if (bestCandidateScore >= 2 && this.workers.length < this.maxThreads) {
174015
+ return await this.executeTask(this.createWorker(), task);
174016
+ }
174017
+ if (bestCandidate) {
174018
+ return await this.executeTask(bestCandidate, task);
174019
+ }
174020
+ return await this.executeTask(this.createWorker(), task);
174021
+ }
174022
+ terminate() {
174023
+ for (const w4 of this.workers)
174024
+ w4.terminate();
174025
+ this.workers = [];
174026
+ }
174027
+ }
174028
+
174029
+ // node_modules/multithreading/src/lib/caller_location.js
174030
+ function getCallerLocation() {
174031
+ const internalFiles = [
174032
+ "caller_location.ts",
174033
+ "caller_location.js",
174034
+ "lib.ts",
174035
+ "lib.js",
174036
+ "internal",
174037
+ "node_modules",
174038
+ "native"
174039
+ ];
174040
+ const stack = new Error().stack;
174041
+ const lines = stack.split(`
174042
+ `);
174043
+ let callerLine;
174044
+ for (let i3 = 0;i3 < lines.length; i3++) {
174045
+ const line2 = lines[i3];
174046
+ if (line2.trim() === "Error")
174047
+ continue;
174048
+ const isInternal = internalFiles.some((file) => line2.includes(file));
174049
+ if (!isInternal) {
174050
+ callerLine = line2;
174051
+ break;
174052
+ }
174053
+ }
174054
+ if (!callerLine) {
174055
+ throw new Error("Could not find caller line in stack trace");
174056
+ }
174057
+ const matchParen = callerLine.match(/\((.*)\)/);
174058
+ let pathWithCoords = matchParen ? matchParen[1] : callerLine.replace(/^\s*at\s+/, "").trim();
174059
+ pathWithCoords = pathWithCoords.replace(/^async\s+/, "");
174060
+ const coordMatch = pathWithCoords.match(/:(\d+):(\d+)$/);
174061
+ if (!coordMatch) {
174062
+ throw new Error(`Could not parse coordinates from: ${callerLine}`);
174063
+ }
174064
+ const filePath = pathWithCoords.replace(/:\d+:\d+$/, "");
174065
+ return {
174066
+ filePath,
174067
+ line: Number(coordMatch[1]) - 1,
174068
+ column: Number(coordMatch[2]) - 1
174069
+ };
174070
+ }
174071
+
174072
+ // node_modules/multithreading/src/lib/patch_import.js
174073
+ function patchDynamicImports(code, callerLocation) {
174074
+ let normalizedCaller = callerLocation;
174075
+ if (!/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(normalizedCaller)) {
174076
+ normalizedCaller = normalizedCaller.replace(/\\/g, "/");
174077
+ if (!normalizedCaller.startsWith("/")) {
174078
+ normalizedCaller = "/" + normalizedCaller;
174079
+ }
174080
+ normalizedCaller = "file://" + normalizedCaller;
174081
+ }
174082
+ const importStartPattern = /\bimport\s*\(/g;
174083
+ const replacements = [];
174084
+ let match;
174085
+ while ((match = importStartPattern.exec(code)) !== null) {
174086
+ const importStartIndex = match.index;
174087
+ const openParenIndex = importStartIndex + match[0].length - 1;
174088
+ const argBounds = findArgumentBounds(code, openParenIndex + 1);
174089
+ if (argBounds) {
174090
+ const { start, end } = argBounds;
174091
+ const originalArgument = code.slice(start, end);
174092
+ const isStringLiteral2 = /^["'`]/.test(originalArgument);
174093
+ let shouldApplyFallback = true;
174094
+ if (isStringLiteral2) {
174095
+ const content = originalArgument.slice(1, -1);
174096
+ const isExplicitPath = /^\.{0,2}[/\\]|^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(content);
174097
+ if (!isExplicitPath) {
174098
+ shouldApplyFallback = false;
174099
+ try {
174100
+ const resolvedUrl = import.meta.resolve(content);
174101
+ replacements.push({
174102
+ start,
174103
+ end,
174104
+ text: JSON.stringify(resolvedUrl)
174105
+ });
174106
+ } catch (e4) {}
174107
+ }
174108
+ }
174109
+ if (shouldApplyFallback) {
174110
+ let base = `new URL(${JSON.stringify(normalizedCaller)}, import.meta.url).href`;
174111
+ if (isStringLiteral2) {
174112
+ const content = originalArgument.slice(1, -1);
174113
+ if (content.startsWith("/") || content.startsWith("\\")) {
174114
+ base = `(typeof location !== "undefined" ? location.origin : import.meta.url)`;
174115
+ }
174116
+ }
174117
+ const newArgument = `new URL(${originalArgument}, ${base}).href`;
174118
+ replacements.push({
174119
+ start,
174120
+ end,
174121
+ text: newArgument
174122
+ });
174123
+ }
174124
+ }
174125
+ }
174126
+ replacements.sort((a3, b3) => b3.start - a3.start);
174127
+ let modifiedCode = code;
174128
+ for (let i3 = 0;i3 < replacements.length; i3++) {
174129
+ const rep = replacements[i3];
174130
+ const before = modifiedCode.slice(0, rep.start);
174131
+ const after = modifiedCode.slice(rep.end);
174132
+ modifiedCode = before + rep.text + after;
174133
+ }
174134
+ return modifiedCode;
174135
+ }
174136
+ function findArgumentBounds(code, startIndex) {
174137
+ let index = startIndex;
174138
+ const len = code.length;
174139
+ let inString = null;
174140
+ let inComment = null;
174141
+ let parenDepth = 0;
174142
+ let argStart = -1;
174143
+ let argEnd = -1;
174144
+ for (;index < len; index++) {
174145
+ const char = code[index];
174146
+ const nextChar = code[index + 1];
174147
+ if (inString) {
174148
+ if (char === "\\" && index + 1 < len) {
174149
+ index++;
174150
+ argEnd = index + 1;
174151
+ continue;
174152
+ }
174153
+ if (char === inString)
174154
+ inString = null;
174155
+ if (argStart === -1)
174156
+ argStart = index;
174157
+ argEnd = index + 1;
174158
+ continue;
174159
+ }
174160
+ if (inComment) {
174161
+ if (inComment === "//" && char === `
174162
+ `)
174163
+ inComment = null;
174164
+ else if (inComment === "/*" && char === "*" && nextChar === "/") {
174165
+ inComment = null;
174166
+ index++;
174167
+ }
174168
+ continue;
174169
+ }
174170
+ if (char === '"' || char === "'" || char === "`") {
174171
+ inString = char;
174172
+ if (argStart === -1)
174173
+ argStart = index;
174174
+ argEnd = index + 1;
174175
+ continue;
174176
+ }
174177
+ if (char === "/" && nextChar === "/") {
174178
+ inComment = "//";
174179
+ index++;
174180
+ continue;
174181
+ }
174182
+ if (char === "/" && nextChar === "*") {
174183
+ inComment = "/*";
174184
+ index++;
174185
+ continue;
174186
+ }
174187
+ if (char === "(") {
174188
+ parenDepth++;
174189
+ if (argStart === -1)
174190
+ argStart = index;
174191
+ argEnd = index + 1;
174192
+ } else if (char === ")") {
174193
+ if (parenDepth === 0) {
174194
+ if (argStart === -1)
174195
+ return null;
174196
+ return { start: argStart, end: argEnd };
174197
+ }
174198
+ parenDepth--;
174199
+ if (argStart === -1)
174200
+ argStart = index;
174201
+ argEnd = index + 1;
174202
+ } else if (char === ",") {
174203
+ if (parenDepth === 0) {
174204
+ if (argStart === -1)
174205
+ return null;
174206
+ return { start: argStart, end: argEnd };
174207
+ }
174208
+ if (argStart === -1)
174209
+ argStart = index;
174210
+ argEnd = index + 1;
174211
+ } else {
174212
+ if (!/\s/.test(char)) {
174213
+ if (argStart === -1)
174214
+ argStart = index;
174215
+ argEnd = index + 1;
174216
+ }
174217
+ }
174218
+ }
174219
+ return null;
174220
+ }
174221
+
174222
+ // node_modules/multithreading/src/lib/check_move_args.js
174223
+ function checkMoveArgs(args) {
174224
+ for (const arg of args) {
174225
+ const isRawSAB = arg instanceof SharedArrayBuffer;
174226
+ const isViewSAB = ArrayBuffer.isView(arg) && arg.buffer instanceof SharedArrayBuffer;
174227
+ const isThreadSafe = arg instanceof Mutex || arg instanceof Condvar || arg instanceof RwLock || arg instanceof Sender || arg instanceof Receiver || arg instanceof Semaphore || arg instanceof Barrier;
174228
+ const isLibrarySAB = !isThreadSafe && typeof arg[toSerialized] !== "undefined";
174229
+ if (isRawSAB || isViewSAB || isLibrarySAB) {
174230
+ console.warn("Warning: You are passing a SharedArrayBuffer to a worker without locking. Please wrap this data in a Mutex() or RwLock() to prevent race conditions.");
174231
+ }
174232
+ }
174233
+ }
174234
+
174235
+ // node_modules/multithreading/src/lib/sync/mutex.js
174236
+ var __classPrivateFieldSet = function(receiver, state, value, kind, f2) {
174237
+ if (kind === "m")
174238
+ throw new TypeError("Private method is not writable");
174239
+ if (kind === "a" && !f2)
174240
+ throw new TypeError("Private accessor was defined without a setter");
174241
+ if (typeof state === "function" ? receiver !== state || !f2 : !state.has(receiver))
174242
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
174243
+ return kind === "a" ? f2.call(receiver, value) : f2 ? f2.value = value : state.set(receiver, value), value;
174244
+ };
174245
+ var __classPrivateFieldGet = function(receiver, state, kind, f2) {
174246
+ if (kind === "a" && !f2)
174247
+ throw new TypeError("Private accessor was defined without a getter");
174248
+ if (typeof state === "function" ? receiver !== state || !f2 : !state.has(receiver))
174249
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
174250
+ return kind === "m" ? f2 : kind === "a" ? f2.call(receiver) : f2 ? f2.value : state.get(receiver);
174251
+ };
174252
+ var _MutexGuard_data;
174253
+ var _MutexGuard_mutex;
174254
+ var _MutexGuard_released;
174255
+ var _Mutex_instances;
174256
+ var _a3;
174257
+ var _Mutex_data;
174258
+ var _Mutex_lockState;
174259
+ var _Mutex_controller;
174260
+ var _Mutex_tryLock;
174261
+ var _Mutex_unlock;
174262
+ var _Mutex_performBlockingLock;
174263
+ var _Mutex_performAsyncLock;
174264
+ var INTERNAL_MUTEX_CONTROLLER = Symbol("Thread.InternalMutexController");
174265
+ var IDX_LOCK_STATE = 0;
174266
+ var LOCKED = 1;
174267
+ var UNLOCKED = 0;
174268
+
174269
+ class MutexGuard {
174270
+ constructor(data, mutex) {
174271
+ _MutexGuard_data.set(this, undefined);
174272
+ _MutexGuard_mutex.set(this, undefined);
174273
+ _MutexGuard_released.set(this, false);
174274
+ __classPrivateFieldSet(this, _MutexGuard_data, data, "f");
174275
+ __classPrivateFieldSet(this, _MutexGuard_mutex, mutex, "f");
174276
+ }
174277
+ get [(_MutexGuard_data = new WeakMap, _MutexGuard_mutex = new WeakMap, _MutexGuard_released = new WeakMap, INTERNAL_MUTEX_CONTROLLER)]() {
174278
+ return __classPrivateFieldGet(this, _MutexGuard_mutex, "f");
174279
+ }
174280
+ get value() {
174281
+ if (__classPrivateFieldGet(this, _MutexGuard_released, "f"))
174282
+ throw new Error("Cannot access released mutex data");
174283
+ return __classPrivateFieldGet(this, _MutexGuard_data, "f");
174284
+ }
174285
+ [Symbol.dispose]() {
174286
+ if (!__classPrivateFieldGet(this, _MutexGuard_released, "f")) {
174287
+ __classPrivateFieldSet(this, _MutexGuard_released, true, "f");
174288
+ __classPrivateFieldGet(this, _MutexGuard_mutex, "f").unlock();
174289
+ }
174290
+ }
174291
+ dispose() {
174292
+ this[Symbol.dispose]();
174293
+ }
174294
+ }
174295
+
174296
+ class Mutex extends Serializable {
174297
+ constructor(data, _lockBuffer) {
174298
+ super();
174299
+ _Mutex_instances.add(this);
174300
+ _Mutex_data.set(this, undefined);
174301
+ _Mutex_lockState.set(this, undefined);
174302
+ _Mutex_controller.set(this, undefined);
174303
+ __classPrivateFieldSet(this, _Mutex_data, data, "f");
174304
+ __classPrivateFieldSet(this, _Mutex_lockState, _lockBuffer ? new Int32Array(_lockBuffer) : new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)), "f");
174305
+ __classPrivateFieldSet(this, _Mutex_controller, {
174306
+ unlock: () => __classPrivateFieldGet(this, _Mutex_instances, "m", _Mutex_unlock).call(this),
174307
+ blockingLock: () => __classPrivateFieldGet(this, _Mutex_instances, "m", _Mutex_performBlockingLock).call(this),
174308
+ lock: () => __classPrivateFieldGet(this, _Mutex_instances, "m", _Mutex_performAsyncLock).call(this)
174309
+ }, "f");
174310
+ }
174311
+ blockingLock() {
174312
+ __classPrivateFieldGet(this, _Mutex_instances, "m", _Mutex_performBlockingLock).call(this);
174313
+ return new MutexGuard(__classPrivateFieldGet(this, _Mutex_data, "f"), __classPrivateFieldGet(this, _Mutex_controller, "f"));
174314
+ }
174315
+ async lock() {
174316
+ await __classPrivateFieldGet(this, _Mutex_instances, "m", _Mutex_performAsyncLock).call(this);
174317
+ return new MutexGuard(__classPrivateFieldGet(this, _Mutex_data, "f"), __classPrivateFieldGet(this, _Mutex_controller, "f"));
174318
+ }
174319
+ [(_Mutex_data = new WeakMap, _Mutex_lockState = new WeakMap, _Mutex_controller = new WeakMap, _Mutex_instances = new WeakSet, _Mutex_tryLock = function _Mutex_tryLock() {
174320
+ return Atomics.compareExchange(__classPrivateFieldGet(this, _Mutex_lockState, "f"), IDX_LOCK_STATE, UNLOCKED, LOCKED) === UNLOCKED;
174321
+ }, _Mutex_unlock = function _Mutex_unlock() {
174322
+ if (Atomics.compareExchange(__classPrivateFieldGet(this, _Mutex_lockState, "f"), IDX_LOCK_STATE, LOCKED, UNLOCKED) !== LOCKED) {
174323
+ throw new Error("Mutex was not locked or locked by another thread");
174324
+ }
174325
+ Atomics.notify(__classPrivateFieldGet(this, _Mutex_lockState, "f"), IDX_LOCK_STATE, 1);
174326
+ }, _Mutex_performBlockingLock = function _Mutex_performBlockingLock() {
174327
+ while (true) {
174328
+ if (__classPrivateFieldGet(this, _Mutex_instances, "m", _Mutex_tryLock).call(this))
174329
+ return;
174330
+ Atomics.wait(__classPrivateFieldGet(this, _Mutex_lockState, "f"), IDX_LOCK_STATE, LOCKED);
174331
+ }
174332
+ }, _Mutex_performAsyncLock = async function _Mutex_performAsyncLock() {
174333
+ while (true) {
174334
+ if (__classPrivateFieldGet(this, _Mutex_instances, "m", _Mutex_tryLock).call(this))
174335
+ return;
174336
+ const result = Atomics.waitAsync(__classPrivateFieldGet(this, _Mutex_lockState, "f"), IDX_LOCK_STATE, LOCKED);
174337
+ if (result.async) {
174338
+ await result.value;
174339
+ }
174340
+ }
174341
+ }, toSerialized)]() {
174342
+ let serializedData;
174343
+ let transfer = [];
174344
+ if (__classPrivateFieldGet(this, _Mutex_data, "f") !== undefined) {
174345
+ const result = serialize(__classPrivateFieldGet(this, _Mutex_data, "f"));
174346
+ serializedData = result.value;
174347
+ transfer = result.transfer;
174348
+ }
174349
+ return {
174350
+ value: {
174351
+ lockBuffer: __classPrivateFieldGet(this, _Mutex_lockState, "f").buffer,
174352
+ data: serializedData
174353
+ },
174354
+ transfer
174355
+ };
174356
+ }
174357
+ static [toDeserialized](obj) {
174358
+ const data = obj.data !== undefined ? deserialize(obj.data) : undefined;
174359
+ return new _a3(data, obj.lockBuffer);
174360
+ }
174361
+ }
174362
+ _a3 = Mutex;
174363
+ (() => {
174364
+ register2(0, _a3);
174365
+ })();
174366
+
174367
+ // node_modules/multithreading/src/lib/sync/condvar.js
174368
+ var __classPrivateFieldSet2 = function(receiver, state, value, kind, f2) {
174369
+ if (kind === "m")
174370
+ throw new TypeError("Private method is not writable");
174371
+ if (kind === "a" && !f2)
174372
+ throw new TypeError("Private accessor was defined without a setter");
174373
+ if (typeof state === "function" ? receiver !== state || !f2 : !state.has(receiver))
174374
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
174375
+ return kind === "a" ? f2.call(receiver, value) : f2 ? f2.value = value : state.set(receiver, value), value;
174376
+ };
174377
+ var __classPrivateFieldGet2 = function(receiver, state, kind, f2) {
174378
+ if (kind === "a" && !f2)
174379
+ throw new TypeError("Private accessor was defined without a getter");
174380
+ if (typeof state === "function" ? receiver !== state || !f2 : !state.has(receiver))
174381
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
174382
+ return kind === "m" ? f2 : kind === "a" ? f2.call(receiver) : f2 ? f2.value : state.get(receiver);
174383
+ };
174384
+ var _a4;
174385
+ var _Condvar_atomic;
174386
+ var IDX_NOTIFY_SEQ = 0;
174387
+ var SEQ_INCREMENT = 1;
174388
+ var NOTIFY_ONE = 1;
174389
+ var NOTIFY_ALL = Infinity;
174390
+
174391
+ class Condvar extends Serializable {
174392
+ constructor(_buffer) {
174393
+ super();
174394
+ _Condvar_atomic.set(this, undefined);
174395
+ __classPrivateFieldSet2(this, _Condvar_atomic, new Int32Array(_buffer ?? new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)), "f");
174396
+ }
174397
+ blockingWait(guard) {
174398
+ const controller = guard[INTERNAL_MUTEX_CONTROLLER];
174399
+ const seq = Atomics.load(__classPrivateFieldGet2(this, _Condvar_atomic, "f"), IDX_NOTIFY_SEQ);
174400
+ controller.unlock();
174401
+ Atomics.wait(__classPrivateFieldGet2(this, _Condvar_atomic, "f"), IDX_NOTIFY_SEQ, seq);
174402
+ controller.blockingLock();
174403
+ }
174404
+ async wait(guard) {
174405
+ const controller = guard[INTERNAL_MUTEX_CONTROLLER];
174406
+ const seq = Atomics.load(__classPrivateFieldGet2(this, _Condvar_atomic, "f"), IDX_NOTIFY_SEQ);
174407
+ controller.unlock();
174408
+ const result = Atomics.waitAsync(__classPrivateFieldGet2(this, _Condvar_atomic, "f"), IDX_NOTIFY_SEQ, seq);
174409
+ if (result.async) {
174410
+ await result.value;
174411
+ }
174412
+ await controller.lock();
174413
+ }
174414
+ notifyOne() {
174415
+ Atomics.add(__classPrivateFieldGet2(this, _Condvar_atomic, "f"), IDX_NOTIFY_SEQ, SEQ_INCREMENT);
174416
+ Atomics.notify(__classPrivateFieldGet2(this, _Condvar_atomic, "f"), IDX_NOTIFY_SEQ, NOTIFY_ONE);
174417
+ }
174418
+ notifyAll() {
174419
+ Atomics.add(__classPrivateFieldGet2(this, _Condvar_atomic, "f"), IDX_NOTIFY_SEQ, SEQ_INCREMENT);
174420
+ Atomics.notify(__classPrivateFieldGet2(this, _Condvar_atomic, "f"), IDX_NOTIFY_SEQ, NOTIFY_ALL);
174421
+ }
174422
+ [(_Condvar_atomic = new WeakMap, toSerialized)]() {
174423
+ return {
174424
+ value: __classPrivateFieldGet2(this, _Condvar_atomic, "f").buffer,
174425
+ transfer: []
174426
+ };
174427
+ }
174428
+ static [toDeserialized](obj) {
174429
+ return new _a4(obj);
174430
+ }
174431
+ }
174432
+ _a4 = Condvar;
174433
+ (() => {
174434
+ register2(1, _a4);
174435
+ })();
174436
+ // node_modules/multithreading/src/lib/sync/rwlock.js
174437
+ var __classPrivateFieldSet3 = function(receiver, state, value, kind, f2) {
174438
+ if (kind === "m")
174439
+ throw new TypeError("Private method is not writable");
174440
+ if (kind === "a" && !f2)
174441
+ throw new TypeError("Private accessor was defined without a setter");
174442
+ if (typeof state === "function" ? receiver !== state || !f2 : !state.has(receiver))
174443
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
174444
+ return kind === "a" ? f2.call(receiver, value) : f2 ? f2.value = value : state.set(receiver, value), value;
174445
+ };
174446
+ var __classPrivateFieldGet3 = function(receiver, state, kind, f2) {
174447
+ if (kind === "a" && !f2)
174448
+ throw new TypeError("Private accessor was defined without a getter");
174449
+ if (typeof state === "function" ? receiver !== state || !f2 : !state.has(receiver))
174450
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
174451
+ return kind === "m" ? f2 : kind === "a" ? f2.call(receiver) : f2 ? f2.value : state.get(receiver);
174452
+ };
174453
+ var _RwLockReadGuard_data;
174454
+ var _RwLockReadGuard_controller;
174455
+ var _RwLockReadGuard_released;
174456
+ var _RwLockWriteGuard_data;
174457
+ var _RwLockWriteGuard_controller;
174458
+ var _RwLockWriteGuard_released;
174459
+ var _RwLock_instances;
174460
+ var _a5;
174461
+ var _RwLock_data;
174462
+ var _RwLock_lockState;
174463
+ var _RwLock_readController;
174464
+ var _RwLock_writeController;
174465
+ var _RwLock_unlockRead;
174466
+ var _RwLock_unlockWrite;
174467
+ var INTERNAL_RWLOCK_CONTROLLER = Symbol("Thread.InternalRwLockController");
174468
+ var IDX_LOCK_STATE2 = 0;
174469
+ var UNLOCKED2 = 0;
174470
+ var WRITE_LOCKED = -1;
174471
+ var READ_ONE = 1;
174472
+
174473
+ class RwLockReadGuard {
174474
+ constructor(data, controller) {
174475
+ _RwLockReadGuard_data.set(this, undefined);
174476
+ _RwLockReadGuard_controller.set(this, undefined);
174477
+ _RwLockReadGuard_released.set(this, false);
174478
+ __classPrivateFieldSet3(this, _RwLockReadGuard_data, data, "f");
174479
+ __classPrivateFieldSet3(this, _RwLockReadGuard_controller, controller, "f");
174480
+ }
174481
+ get [(_RwLockReadGuard_data = new WeakMap, _RwLockReadGuard_controller = new WeakMap, _RwLockReadGuard_released = new WeakMap, INTERNAL_RWLOCK_CONTROLLER)]() {
174482
+ return __classPrivateFieldGet3(this, _RwLockReadGuard_controller, "f");
174483
+ }
174484
+ get value() {
174485
+ if (__classPrivateFieldGet3(this, _RwLockReadGuard_released, "f"))
174486
+ throw new Error("Cannot access released lock data");
174487
+ return __classPrivateFieldGet3(this, _RwLockReadGuard_data, "f");
174488
+ }
174489
+ [Symbol.dispose]() {
174490
+ if (!__classPrivateFieldGet3(this, _RwLockReadGuard_released, "f")) {
174491
+ __classPrivateFieldSet3(this, _RwLockReadGuard_released, true, "f");
174492
+ __classPrivateFieldGet3(this, _RwLockReadGuard_controller, "f").unlock();
174493
+ }
174494
+ }
174495
+ dispose() {
174496
+ this[Symbol.dispose]();
174497
+ }
174498
+ }
174499
+
174500
+ class RwLockWriteGuard {
174501
+ constructor(data, controller) {
174502
+ _RwLockWriteGuard_data.set(this, undefined);
174503
+ _RwLockWriteGuard_controller.set(this, undefined);
174504
+ _RwLockWriteGuard_released.set(this, false);
174505
+ __classPrivateFieldSet3(this, _RwLockWriteGuard_data, data, "f");
174506
+ __classPrivateFieldSet3(this, _RwLockWriteGuard_controller, controller, "f");
174507
+ }
174508
+ get [(_RwLockWriteGuard_data = new WeakMap, _RwLockWriteGuard_controller = new WeakMap, _RwLockWriteGuard_released = new WeakMap, INTERNAL_RWLOCK_CONTROLLER)]() {
174509
+ return __classPrivateFieldGet3(this, _RwLockWriteGuard_controller, "f");
174510
+ }
174511
+ get value() {
174512
+ if (__classPrivateFieldGet3(this, _RwLockWriteGuard_released, "f"))
174513
+ throw new Error("Cannot access released lock data");
174514
+ return __classPrivateFieldGet3(this, _RwLockWriteGuard_data, "f");
174515
+ }
174516
+ [Symbol.dispose]() {
174517
+ if (!__classPrivateFieldGet3(this, _RwLockWriteGuard_released, "f")) {
174518
+ __classPrivateFieldSet3(this, _RwLockWriteGuard_released, true, "f");
174519
+ __classPrivateFieldGet3(this, _RwLockWriteGuard_controller, "f").unlock();
174520
+ }
174521
+ }
174522
+ dispose() {
174523
+ this[Symbol.dispose]();
174524
+ }
174525
+ }
174526
+
174527
+ class RwLock extends Serializable {
174528
+ constructor(data, _stateBuffer) {
174529
+ super();
174530
+ _RwLock_instances.add(this);
174531
+ _RwLock_data.set(this, undefined);
174532
+ _RwLock_lockState.set(this, undefined);
174533
+ _RwLock_readController.set(this, undefined);
174534
+ _RwLock_writeController.set(this, undefined);
174535
+ __classPrivateFieldSet3(this, _RwLock_data, data, "f");
174536
+ __classPrivateFieldSet3(this, _RwLock_lockState, _stateBuffer ? new Int32Array(_stateBuffer) : new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT)), "f");
174537
+ __classPrivateFieldSet3(this, _RwLock_readController, { unlock: () => __classPrivateFieldGet3(this, _RwLock_instances, "m", _RwLock_unlockRead).call(this) }, "f");
174538
+ __classPrivateFieldSet3(this, _RwLock_writeController, { unlock: () => __classPrivateFieldGet3(this, _RwLock_instances, "m", _RwLock_unlockWrite).call(this) }, "f");
174539
+ }
174540
+ blockingRead() {
174541
+ while (true) {
174542
+ const current2 = Atomics.load(__classPrivateFieldGet3(this, _RwLock_lockState, "f"), IDX_LOCK_STATE2);
174543
+ if (current2 === WRITE_LOCKED) {
174544
+ Atomics.wait(__classPrivateFieldGet3(this, _RwLock_lockState, "f"), IDX_LOCK_STATE2, WRITE_LOCKED);
174545
+ continue;
174546
+ }
174547
+ if (Atomics.compareExchange(__classPrivateFieldGet3(this, _RwLock_lockState, "f"), IDX_LOCK_STATE2, current2, current2 + READ_ONE) === current2) {
174548
+ return new RwLockReadGuard(__classPrivateFieldGet3(this, _RwLock_data, "f"), __classPrivateFieldGet3(this, _RwLock_readController, "f"));
174549
+ }
174550
+ }
174551
+ }
174552
+ async read() {
174553
+ while (true) {
174554
+ const current2 = Atomics.load(__classPrivateFieldGet3(this, _RwLock_lockState, "f"), IDX_LOCK_STATE2);
174555
+ if (current2 === WRITE_LOCKED) {
174556
+ const res2 = Atomics.waitAsync(__classPrivateFieldGet3(this, _RwLock_lockState, "f"), IDX_LOCK_STATE2, WRITE_LOCKED);
174557
+ if (res2.async) {
174558
+ await res2.value;
174559
+ }
174560
+ continue;
174561
+ }
174562
+ if (Atomics.compareExchange(__classPrivateFieldGet3(this, _RwLock_lockState, "f"), IDX_LOCK_STATE2, current2, current2 + READ_ONE) === current2) {
174563
+ return new RwLockReadGuard(__classPrivateFieldGet3(this, _RwLock_data, "f"), __classPrivateFieldGet3(this, _RwLock_readController, "f"));
174564
+ }
174565
+ }
174566
+ }
174567
+ blockingWrite() {
174568
+ while (true) {
174569
+ const current2 = Atomics.load(__classPrivateFieldGet3(this, _RwLock_lockState, "f"), IDX_LOCK_STATE2);
174570
+ if (current2 !== UNLOCKED2) {
174571
+ Atomics.wait(__classPrivateFieldGet3(this, _RwLock_lockState, "f"), IDX_LOCK_STATE2, current2);
174572
+ continue;
174573
+ }
174574
+ if (Atomics.compareExchange(__classPrivateFieldGet3(this, _RwLock_lockState, "f"), IDX_LOCK_STATE2, UNLOCKED2, WRITE_LOCKED) === UNLOCKED2) {
174575
+ return new RwLockWriteGuard(__classPrivateFieldGet3(this, _RwLock_data, "f"), __classPrivateFieldGet3(this, _RwLock_writeController, "f"));
174576
+ }
174577
+ }
174578
+ }
174579
+ async write() {
174580
+ while (true) {
174581
+ const current2 = Atomics.load(__classPrivateFieldGet3(this, _RwLock_lockState, "f"), IDX_LOCK_STATE2);
174582
+ if (current2 !== UNLOCKED2) {
174583
+ const res2 = Atomics.waitAsync(__classPrivateFieldGet3(this, _RwLock_lockState, "f"), IDX_LOCK_STATE2, current2);
174584
+ if (res2.async) {
174585
+ await res2.value;
174586
+ }
174587
+ continue;
174588
+ }
174589
+ if (Atomics.compareExchange(__classPrivateFieldGet3(this, _RwLock_lockState, "f"), IDX_LOCK_STATE2, UNLOCKED2, WRITE_LOCKED) === UNLOCKED2) {
174590
+ return new RwLockWriteGuard(__classPrivateFieldGet3(this, _RwLock_data, "f"), __classPrivateFieldGet3(this, _RwLock_writeController, "f"));
174591
+ }
174592
+ }
174593
+ }
174594
+ [(_RwLock_data = new WeakMap, _RwLock_lockState = new WeakMap, _RwLock_readController = new WeakMap, _RwLock_writeController = new WeakMap, _RwLock_instances = new WeakSet, _RwLock_unlockRead = function _RwLock_unlockRead() {
174595
+ const prevState = Atomics.sub(__classPrivateFieldGet3(this, _RwLock_lockState, "f"), IDX_LOCK_STATE2, READ_ONE);
174596
+ if (prevState === READ_ONE) {
174597
+ Atomics.notify(__classPrivateFieldGet3(this, _RwLock_lockState, "f"), IDX_LOCK_STATE2, 1);
174598
+ }
174599
+ }, _RwLock_unlockWrite = function _RwLock_unlockWrite() {
174600
+ if (Atomics.compareExchange(__classPrivateFieldGet3(this, _RwLock_lockState, "f"), IDX_LOCK_STATE2, WRITE_LOCKED, UNLOCKED2) !== WRITE_LOCKED) {
174601
+ throw new Error("RwLock was not write-locked or locked by another thread");
174602
+ }
174603
+ Atomics.notify(__classPrivateFieldGet3(this, _RwLock_lockState, "f"), IDX_LOCK_STATE2, Infinity);
174604
+ }, toSerialized)]() {
174605
+ let serializedData;
174606
+ let transfer = [];
174607
+ if (__classPrivateFieldGet3(this, _RwLock_data, "f") !== undefined) {
174608
+ const result = serialize(__classPrivateFieldGet3(this, _RwLock_data, "f"));
174609
+ serializedData = result.value;
174610
+ transfer = result.transfer;
174611
+ }
174612
+ return {
174613
+ value: {
174614
+ stateBuffer: __classPrivateFieldGet3(this, _RwLock_lockState, "f").buffer,
174615
+ data: serializedData
174616
+ },
174617
+ transfer
174618
+ };
174619
+ }
174620
+ static [toDeserialized](obj) {
174621
+ const data = obj.data !== undefined ? deserialize(obj.data) : undefined;
174622
+ return new _a5(data, obj.stateBuffer);
174623
+ }
174624
+ }
174625
+ _a5 = RwLock;
174626
+ (() => {
174627
+ register2(2, _a5);
174628
+ })();
174629
+ // node_modules/multithreading/src/lib/sync/semaphore.js
174630
+ var __classPrivateFieldSet4 = function(receiver, state, value, kind, f2) {
174631
+ if (kind === "m")
174632
+ throw new TypeError("Private method is not writable");
174633
+ if (kind === "a" && !f2)
174634
+ throw new TypeError("Private accessor was defined without a setter");
174635
+ if (typeof state === "function" ? receiver !== state || !f2 : !state.has(receiver))
174636
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
174637
+ return kind === "a" ? f2.call(receiver, value) : f2 ? f2.value = value : state.set(receiver, value), value;
174638
+ };
174639
+ var __classPrivateFieldGet4 = function(receiver, state, kind, f2) {
174640
+ if (kind === "a" && !f2)
174641
+ throw new TypeError("Private accessor was defined without a getter");
174642
+ if (typeof state === "function" ? receiver !== state || !f2 : !state.has(receiver))
174643
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
174644
+ return kind === "m" ? f2 : kind === "a" ? f2.call(receiver) : f2 ? f2.value : state.get(receiver);
174645
+ };
174646
+ var _SemaphoreGuard_amount;
174647
+ var _SemaphoreGuard_controller;
174648
+ var _SemaphoreGuard_released;
174649
+ var _Semaphore_instances;
174650
+ var _a6;
174651
+ var _Semaphore_state;
174652
+ var _Semaphore_controller;
174653
+ var _Semaphore_release;
174654
+ var INTERNAL_SEMAPHORE_CONTROLLER = Symbol("Thread.InternalSemaphoreController");
174655
+ var IDX_PERMITS = 0;
174656
+ var IDX_WAITERS = 1;
174657
+ var META_SIZE = 2;
174658
+
174659
+ class SemaphoreGuard {
174660
+ constructor(amount, controller) {
174661
+ _SemaphoreGuard_amount.set(this, undefined);
174662
+ _SemaphoreGuard_controller.set(this, undefined);
174663
+ _SemaphoreGuard_released.set(this, false);
174664
+ __classPrivateFieldSet4(this, _SemaphoreGuard_amount, amount, "f");
174665
+ __classPrivateFieldSet4(this, _SemaphoreGuard_controller, controller, "f");
174666
+ }
174667
+ get [(_SemaphoreGuard_amount = new WeakMap, _SemaphoreGuard_controller = new WeakMap, _SemaphoreGuard_released = new WeakMap, INTERNAL_SEMAPHORE_CONTROLLER)]() {
174668
+ return __classPrivateFieldGet4(this, _SemaphoreGuard_controller, "f");
174669
+ }
174670
+ get amount() {
174671
+ return __classPrivateFieldGet4(this, _SemaphoreGuard_amount, "f");
174672
+ }
174673
+ [Symbol.dispose]() {
174674
+ if (!__classPrivateFieldGet4(this, _SemaphoreGuard_released, "f")) {
174675
+ __classPrivateFieldSet4(this, _SemaphoreGuard_released, true, "f");
174676
+ __classPrivateFieldGet4(this, _SemaphoreGuard_controller, "f").release(__classPrivateFieldGet4(this, _SemaphoreGuard_amount, "f"));
174677
+ }
174678
+ }
174679
+ dispose() {
174680
+ this[Symbol.dispose]();
174681
+ }
174682
+ }
174683
+
174684
+ class Semaphore extends Serializable {
174685
+ constructor(initialCount, _buffer) {
174686
+ super();
174687
+ _Semaphore_instances.add(this);
174688
+ _Semaphore_state.set(this, undefined);
174689
+ _Semaphore_controller.set(this, undefined);
174690
+ if (_buffer) {
174691
+ __classPrivateFieldSet4(this, _Semaphore_state, new Int32Array(_buffer), "f");
174692
+ } else {
174693
+ __classPrivateFieldSet4(this, _Semaphore_state, new Int32Array(new SharedArrayBuffer(META_SIZE * Int32Array.BYTES_PER_ELEMENT)), "f");
174694
+ __classPrivateFieldGet4(this, _Semaphore_state, "f")[IDX_PERMITS] = initialCount;
174695
+ __classPrivateFieldGet4(this, _Semaphore_state, "f")[IDX_WAITERS] = 0;
174696
+ }
174697
+ __classPrivateFieldSet4(this, _Semaphore_controller, {
174698
+ release: (amount) => __classPrivateFieldGet4(this, _Semaphore_instances, "m", _Semaphore_release).call(this, amount)
174699
+ }, "f");
174700
+ }
174701
+ get [(_Semaphore_state = new WeakMap, _Semaphore_controller = new WeakMap, _Semaphore_instances = new WeakSet, INTERNAL_SEMAPHORE_CONTROLLER)]() {
174702
+ return __classPrivateFieldGet4(this, _Semaphore_controller, "f");
174703
+ }
174704
+ tryAcquire(amount = 1) {
174705
+ const current2 = Atomics.load(__classPrivateFieldGet4(this, _Semaphore_state, "f"), IDX_PERMITS);
174706
+ if (current2 >= amount) {
174707
+ const result = Atomics.compareExchange(__classPrivateFieldGet4(this, _Semaphore_state, "f"), IDX_PERMITS, current2, current2 - amount);
174708
+ if (result === current2) {
174709
+ return new SemaphoreGuard(amount, __classPrivateFieldGet4(this, _Semaphore_controller, "f"));
174710
+ }
174711
+ }
174712
+ return null;
174713
+ }
174714
+ blockingAcquire(amount = 1) {
174715
+ while (true) {
174716
+ const current2 = Atomics.load(__classPrivateFieldGet4(this, _Semaphore_state, "f"), IDX_PERMITS);
174717
+ if (current2 >= amount) {
174718
+ const result = Atomics.compareExchange(__classPrivateFieldGet4(this, _Semaphore_state, "f"), IDX_PERMITS, current2, current2 - amount);
174719
+ if (result === current2) {
174720
+ return new SemaphoreGuard(amount, __classPrivateFieldGet4(this, _Semaphore_controller, "f"));
174721
+ }
174722
+ } else {
174723
+ Atomics.add(__classPrivateFieldGet4(this, _Semaphore_state, "f"), IDX_WAITERS, 1);
174724
+ Atomics.wait(__classPrivateFieldGet4(this, _Semaphore_state, "f"), IDX_PERMITS, current2);
174725
+ Atomics.sub(__classPrivateFieldGet4(this, _Semaphore_state, "f"), IDX_WAITERS, 1);
174726
+ }
174727
+ }
174728
+ }
174729
+ async acquire(amount = 1) {
174730
+ while (true) {
174731
+ const current2 = Atomics.load(__classPrivateFieldGet4(this, _Semaphore_state, "f"), IDX_PERMITS);
174732
+ if (current2 >= amount) {
174733
+ const result = Atomics.compareExchange(__classPrivateFieldGet4(this, _Semaphore_state, "f"), IDX_PERMITS, current2, current2 - amount);
174734
+ if (result === current2) {
174735
+ return new SemaphoreGuard(amount, __classPrivateFieldGet4(this, _Semaphore_controller, "f"));
174736
+ }
174737
+ } else {
174738
+ Atomics.add(__classPrivateFieldGet4(this, _Semaphore_state, "f"), IDX_WAITERS, 1);
174739
+ const res2 = Atomics.waitAsync(__classPrivateFieldGet4(this, _Semaphore_state, "f"), IDX_PERMITS, current2);
174740
+ if (res2.async) {
174741
+ await res2.value;
174742
+ }
174743
+ Atomics.sub(__classPrivateFieldGet4(this, _Semaphore_state, "f"), IDX_WAITERS, 1);
174744
+ }
174745
+ }
174746
+ }
174747
+ [(_Semaphore_release = function _Semaphore_release(amount) {
174748
+ Atomics.add(__classPrivateFieldGet4(this, _Semaphore_state, "f"), IDX_PERMITS, amount);
174749
+ if (Atomics.load(__classPrivateFieldGet4(this, _Semaphore_state, "f"), IDX_WAITERS) > 0) {
174750
+ Atomics.notify(__classPrivateFieldGet4(this, _Semaphore_state, "f"), IDX_PERMITS, amount);
174751
+ }
174752
+ }, toSerialized)]() {
174753
+ return {
174754
+ value: __classPrivateFieldGet4(this, _Semaphore_state, "f").buffer,
174755
+ transfer: []
174756
+ };
174757
+ }
174758
+ static [toDeserialized](buffer) {
174759
+ return new _a6(0, buffer);
174760
+ }
174761
+ }
174762
+ _a6 = Semaphore;
174763
+ (() => {
174764
+ register2(3, _a6);
174765
+ })();
174766
+ // node_modules/multithreading/src/lib/json_buffer.js
174767
+ var _a7;
174768
+ var CONSOLE_VIEW = Symbol("SharedJsonBuffer.consoleView");
174769
+ var OFFSET_FREE_PTR = 0;
174770
+ var OFFSET_ROOT = 8;
174771
+ var HEADER_SIZE = 16;
174772
+ var TYPE_NULL = 0;
174773
+ var TYPE_TRUE = 1;
174774
+ var TYPE_FALSE = 2;
174775
+ var TYPE_NUMBER = 3;
174776
+ var TYPE_STRING = 4;
174777
+ var TYPE_OBJECT = 5;
174778
+ var TYPE_ARRAY = 6;
174779
+ var TYPE_MOVED = 4294967295;
174780
+ function initConsoleHooks() {
174781
+ if (typeof console === "undefined")
174782
+ return;
174783
+ const methods = [
174784
+ "log",
174785
+ "info",
174786
+ "warn",
174787
+ "error",
174788
+ "dir",
174789
+ "table",
174790
+ "debug",
174791
+ "trace"
174792
+ ];
174793
+ for (const method of methods) {
174794
+ const original = console[method];
174795
+ console[method] = function(...args) {
174796
+ for (let i3 = 0;i3 < args.length; i3++) {
174797
+ const arg = args[i3];
174798
+ if (typeof arg === "object" && typeof arg[CONSOLE_VIEW] === "function") {
174799
+ try {
174800
+ args[i3] = arg[CONSOLE_VIEW]();
174801
+ } catch (e4) {
174802
+ args[i3] = arg;
174803
+ }
174804
+ }
174805
+ }
174806
+ return original.apply(this, args);
174807
+ };
174808
+ }
174809
+ }
174810
+
174811
+ class SharedJsonBufferImpl extends Serializable {
174812
+ constructor(obj, optionsOrBuffer) {
174813
+ super();
174814
+ this.textDecoder = new TextDecoder;
174815
+ this.textEncoder = new TextEncoder;
174816
+ this.stringCache = new Map;
174817
+ this.proxyCache = new Map;
174818
+ this.propertyHints = new Map;
174819
+ this.activeTargets = new Set;
174820
+ this.tempRoots = [];
174821
+ this.scratchPtr = 0;
174822
+ this.scratchCap = 0;
174823
+ this.scratchLen = 0;
174824
+ this.scratchStart = 0;
174825
+ this.objectHandler = {
174826
+ get: (target, prop, receiver) => {
174827
+ if (typeof prop === "symbol") {
174828
+ if (prop === CONSOLE_VIEW) {
174829
+ return () => this.toConsoleView(target.__ptr);
174830
+ }
174831
+ if (prop === toSerialized)
174832
+ return () => this[toSerialized]();
174833
+ if (prop === Symbol.iterator)
174834
+ return;
174835
+ return Reflect.get(target, prop, receiver);
174836
+ }
174837
+ if (prop === "__ptr")
174838
+ return target.__ptr;
174839
+ if (prop === "toJSON")
174840
+ return () => this.toJSON(target.__ptr);
174841
+ const ptr = target.__ptr;
174842
+ if (ptr === 0)
174843
+ return;
174844
+ const curr = ptr;
174845
+ const type = this.u32[curr >> 2];
174846
+ if (type !== TYPE_MOVED) {
174847
+ this.scratchLen = this.u32[curr + 8 >> 2];
174848
+ this.scratchStart = curr + 12;
174849
+ } else {
174850
+ this.resolvePtr(ptr);
174851
+ }
174852
+ const count = this.scratchLen;
174853
+ const start = this.scratchStart;
174854
+ const hint = this.propertyHints.get(String(prop));
174855
+ if (hint !== undefined && hint < count) {
174856
+ const entryOffset = start + hint * 12;
174857
+ const keyPtr = this.u32[entryOffset >> 2];
174858
+ const keyStr = this.readString(keyPtr);
174859
+ if (keyStr === prop)
174860
+ return this.readSlot(entryOffset + 4);
174861
+ }
174862
+ for (let i3 = 0;i3 < count; i3++) {
174863
+ const entryOffset = start + i3 * 12;
174864
+ const keyPtr = this.u32[entryOffset >> 2];
174865
+ const key = this.readString(keyPtr);
174866
+ if (key === prop) {
174867
+ this.propertyHints.set(String(prop), i3);
174868
+ return this.readSlot(entryOffset + 4);
174869
+ }
174870
+ }
174871
+ return;
174872
+ },
174873
+ has: (target, prop) => {
174874
+ if (typeof prop === "symbol") {
174875
+ if (prop === CONSOLE_VIEW || prop === toSerialized)
174876
+ return true;
174877
+ return Reflect.has(target, prop);
174878
+ }
174879
+ if (prop === "__ptr" || prop === "toJSON")
174880
+ return true;
174881
+ this.resolvePtr(target.__ptr);
174882
+ if (target.__ptr === 0)
174883
+ return false;
174884
+ const propStr = String(prop);
174885
+ const count = this.scratchLen;
174886
+ const start = this.scratchStart;
174887
+ const hint = this.propertyHints.get(propStr);
174888
+ if (hint !== undefined && hint < count) {
174889
+ const entryOffset = start + hint * 12;
174890
+ const keyPtr = this.u32[entryOffset >> 2];
174891
+ const keyStr = this.readString(keyPtr);
174892
+ if (keyStr === propStr)
174893
+ return true;
174894
+ }
174895
+ for (let i3 = 0;i3 < count; i3++) {
174896
+ const entryOffset = start + i3 * 12;
174897
+ const keyPtr = this.u32[entryOffset >> 2];
174898
+ const key = this.readString(keyPtr);
174899
+ if (key === propStr) {
174900
+ this.propertyHints.set(propStr, i3);
174901
+ return true;
174902
+ }
174903
+ }
174904
+ return false;
174905
+ },
174906
+ set: (target, prop, value) => {
174907
+ if (typeof prop === "symbol")
174908
+ return false;
174909
+ this.objectSet(target, String(prop), value);
174910
+ return true;
174911
+ },
174912
+ defineProperty: (target, prop, descriptor) => {
174913
+ if (typeof prop === "symbol")
174914
+ return false;
174915
+ if (descriptor.get || descriptor.set) {
174916
+ throw new Error("SharedJsonBuffer cannot store accessors (get/set)");
174917
+ }
174918
+ if ("value" in descriptor) {
174919
+ this.objectSet(target, String(prop), descriptor.value);
174920
+ }
174921
+ return true;
174922
+ },
174923
+ deleteProperty: (target, prop) => {
174924
+ if (typeof prop === "symbol")
174925
+ return false;
174926
+ return this.objectDelete(target, String(prop));
174927
+ },
174928
+ ownKeys: (target) => {
174929
+ this.resolvePtr(target.__ptr);
174930
+ if (target.__ptr === 0)
174931
+ return [];
174932
+ const keys = [];
174933
+ const start = this.scratchStart;
174934
+ for (let i3 = 0;i3 < this.scratchLen; i3++) {
174935
+ const keyPtr = this.u32[start + i3 * 12 >> 2];
174936
+ const key = this.readString(keyPtr);
174937
+ this.propertyHints.set(key, i3);
174938
+ keys.push(key);
174939
+ }
174940
+ return keys;
174941
+ },
174942
+ getOwnPropertyDescriptor: (target, prop) => {
174943
+ this.resolvePtr(target.__ptr);
174944
+ if (target.__ptr === 0)
174945
+ return;
174946
+ const count = this.scratchLen;
174947
+ const start = this.scratchStart;
174948
+ const propStr = String(prop);
174949
+ const hint = this.propertyHints.get(propStr);
174950
+ if (hint !== undefined && hint < count) {
174951
+ const entryOffset = start + hint * 12;
174952
+ const keyPtr = this.u32[entryOffset >> 2];
174953
+ const keyStr = this.readString(keyPtr);
174954
+ if (keyStr === propStr) {
174955
+ const val = this.readSlot(entryOffset + 4);
174956
+ return {
174957
+ enumerable: true,
174958
+ configurable: true,
174959
+ writable: true,
174960
+ value: val
174961
+ };
174962
+ }
174963
+ }
174964
+ for (let i3 = 0;i3 < count; i3++) {
174965
+ const entryOffset = start + i3 * 12;
174966
+ const keyPtr = this.u32[entryOffset >> 2];
174967
+ const key = this.readString(keyPtr);
174968
+ if (key === propStr) {
174969
+ this.propertyHints.set(propStr, i3);
174970
+ const val = this.readSlot(entryOffset + 4);
174971
+ return {
174972
+ enumerable: true,
174973
+ configurable: true,
174974
+ writable: true,
174975
+ value: val
174976
+ };
174977
+ }
174978
+ }
174979
+ return;
174980
+ }
174981
+ };
174982
+ this.arrayHandler = {
174983
+ get: (target, prop, receiver) => {
174984
+ if (prop === CONSOLE_VIEW)
174985
+ return () => this.toConsoleView(target.__ptr);
174986
+ if (prop === toSerialized)
174987
+ return () => this[toSerialized]();
174988
+ if (prop === "__ptr")
174989
+ return target.__ptr;
174990
+ if (prop === "toJSON")
174991
+ return () => this.toJSON(target.__ptr);
174992
+ if (prop === Symbol.iterator) {
174993
+ return () => new ArrayCursor(this, target.__ptr);
174994
+ }
174995
+ this.resolvePtr(target.__ptr);
174996
+ if (target.__ptr === 0)
174997
+ return;
174998
+ if (prop === "length")
174999
+ return this.scratchLen;
175000
+ if (prop === "push") {
175001
+ return (...args) => {
175002
+ this.arraySpliceImpl(target, this.scratchLen, 0, args);
175003
+ return this.scratchLen;
175004
+ };
175005
+ }
175006
+ if (prop === "pop") {
175007
+ return () => {
175008
+ if (this.scratchLen === 0)
175009
+ return;
175010
+ return this.arraySpliceImpl(target, this.scratchLen - 1, 1)[0];
175011
+ };
175012
+ }
175013
+ if (prop === "shift") {
175014
+ return () => {
175015
+ if (this.scratchLen === 0)
175016
+ return;
175017
+ return this.arraySpliceImpl(target, 0, 1)[0];
175018
+ };
175019
+ }
175020
+ if (prop === "unshift") {
175021
+ return (...args) => {
175022
+ this.arraySpliceImpl(target, 0, 0, args);
175023
+ return this.scratchLen;
175024
+ };
175025
+ }
175026
+ if (prop === "splice") {
175027
+ return (start, deleteCount, ...items) => {
175028
+ const len = this.scratchLen;
175029
+ const actualStart = start < 0 ? len + start : start;
175030
+ const maxDel = len - (actualStart < 0 ? 0 : actualStart);
175031
+ const actualDel = deleteCount === undefined ? maxDel : Math.min(Math.max(deleteCount, 0), maxDel);
175032
+ return this.arraySpliceImpl(target, actualStart, actualDel, items);
175033
+ };
175034
+ }
175035
+ if (prop === "flat") {
175036
+ return (depth = 1) => {
175037
+ const result = [];
175038
+ const flatten = (ptr, currentDepth) => {
175039
+ this.resolvePtr(ptr);
175040
+ const len = this.scratchLen;
175041
+ const start = this.scratchStart;
175042
+ const captureStart = start;
175043
+ for (let i3 = 0;i3 < len; i3++) {
175044
+ const offset = captureStart + i3 * 8;
175045
+ const type = this.u32[offset >> 2];
175046
+ const payload = this.u32[offset + 4 >> 2];
175047
+ if (type === TYPE_ARRAY && currentDepth > 0) {
175048
+ flatten(payload, currentDepth - 1);
175049
+ } else {
175050
+ result.push(this.readSlot(offset));
175051
+ }
175052
+ }
175053
+ };
175054
+ flatten(target.__ptr, Math.floor(depth));
175055
+ return result;
175056
+ };
175057
+ }
175058
+ if (prop === "flatMap") {
175059
+ return (callback, thisArg) => {
175060
+ const len = this.scratchLen;
175061
+ const start = this.scratchStart;
175062
+ const result = [];
175063
+ for (let i3 = 0;i3 < len; i3++) {
175064
+ const val = this.readSlot(start + i3 * 8);
175065
+ const mapped = callback.call(thisArg, val, i3, receiver);
175066
+ if (Array.isArray(mapped)) {
175067
+ result.push(...mapped);
175068
+ } else {
175069
+ result.push(mapped);
175070
+ }
175071
+ }
175072
+ return result;
175073
+ };
175074
+ }
175075
+ if (typeof prop === "string" && ["sort", "reverse", "fill", "copyWithin"].includes(prop)) {
175076
+ return (...args) => {
175077
+ const arr = this.toArrayShallow(target.__ptr);
175078
+ arr[prop](...args);
175079
+ arr.forEach((v4, i3) => this.arraySet(target, i3, v4));
175080
+ return receiver;
175081
+ };
175082
+ }
175083
+ if (typeof prop === "string" && prop in Array.prototype) {
175084
+ const nativeMethod = Array.prototype[prop];
175085
+ if (typeof nativeMethod === "function") {
175086
+ return (...args) => {
175087
+ const arr = this.toArrayShallow(target.__ptr);
175088
+ return nativeMethod.apply(arr, args);
175089
+ };
175090
+ }
175091
+ }
175092
+ if (typeof prop === "string") {
175093
+ const idx = Number(prop);
175094
+ if (!isNaN(idx)) {
175095
+ if (idx >= this.scratchLen)
175096
+ return;
175097
+ return this.readSlot(this.scratchStart + idx * 8);
175098
+ }
175099
+ }
175100
+ return Reflect.get(target, prop, receiver);
175101
+ },
175102
+ set: (target, prop, value) => {
175103
+ if (prop === "length") {
175104
+ const newLen = Number(value);
175105
+ if (!isNaN(newLen) && newLen >= 0) {
175106
+ this.resolvePtr(target.__ptr);
175107
+ const currentLen = this.scratchLen;
175108
+ if (newLen < currentLen) {
175109
+ this.arraySpliceImpl(target, newLen, currentLen - newLen);
175110
+ } else if (newLen > currentLen) {
175111
+ this.arrayEnsureCapacity(target, newLen);
175112
+ this.u32[this.scratchPtr + 8 >> 2] = newLen;
175113
+ }
175114
+ return true;
175115
+ }
175116
+ return false;
175117
+ }
175118
+ const idx = Number(prop);
175119
+ if (!isNaN(idx)) {
175120
+ this.arraySet(target, idx, value);
175121
+ return true;
175122
+ }
175123
+ return false;
175124
+ },
175125
+ ownKeys: (target) => {
175126
+ this.resolvePtr(target.__ptr);
175127
+ const keys = [];
175128
+ for (let i3 = 0;i3 < this.scratchLen; i3++)
175129
+ keys.push(String(i3));
175130
+ keys.push("length");
175131
+ return keys;
175132
+ },
175133
+ getOwnPropertyDescriptor: (target, prop) => {
175134
+ if (prop === "length") {
175135
+ this.resolvePtr(target.__ptr);
175136
+ return {
175137
+ value: this.scratchLen,
175138
+ writable: true,
175139
+ enumerable: false,
175140
+ configurable: false
175141
+ };
175142
+ }
175143
+ const idx = Number(prop);
175144
+ if (!isNaN(idx)) {
175145
+ this.resolvePtr(target.__ptr);
175146
+ if (idx >= 0 && idx < this.scratchLen) {
175147
+ const val = this.readSlot(this.scratchStart + idx * 8);
175148
+ return {
175149
+ value: val,
175150
+ enumerable: true,
175151
+ configurable: true,
175152
+ writable: true
175153
+ };
175154
+ }
175155
+ }
175156
+ return;
175157
+ }
175158
+ };
175159
+ if (optionsOrBuffer instanceof SharedArrayBuffer) {
175160
+ this.buffer = optionsOrBuffer;
175161
+ this.initViews();
175162
+ if (Atomics.load(this.u32, OFFSET_FREE_PTR >> 2) === 0) {
175163
+ this.initializeBuffer(obj);
175164
+ }
175165
+ } else {
175166
+ const size2 = optionsOrBuffer?.size || 1024 * 64;
175167
+ this.buffer = new SharedArrayBuffer(size2);
175168
+ this.initViews();
175169
+ this.initializeBuffer(obj);
175170
+ }
175171
+ return this.getRootProxy();
175172
+ }
175173
+ initViews() {
175174
+ this.u32 = new Uint32Array(this.buffer);
175175
+ this.f64 = new Float64Array(this.buffer);
175176
+ this.u8 = new Uint8Array(this.buffer);
175177
+ }
175178
+ initializeBuffer(obj) {
175179
+ Atomics.store(this.u32, OFFSET_FREE_PTR >> 2, HEADER_SIZE);
175180
+ const isArr = Array.isArray(obj);
175181
+ const initialKeys = isArr ? obj.length : obj ? Object.keys(obj).length : 0;
175182
+ const rootPtr = isArr ? this.allocArray(initialKeys) : this.allocObject(initialKeys);
175183
+ Atomics.store(this.u32, OFFSET_ROOT >> 2, rootPtr);
175184
+ if (obj) {
175185
+ const rootTarget = { __ptr: rootPtr };
175186
+ this.tempRoots.push({
175187
+ handle: rootTarget,
175188
+ type: isArr ? TYPE_ARRAY : TYPE_OBJECT
175189
+ });
175190
+ try {
175191
+ this.writeInitial(rootTarget, obj);
175192
+ } finally {
175193
+ this.tempRoots.pop();
175194
+ Atomics.store(this.u32, OFFSET_ROOT >> 2, rootTarget.__ptr);
175195
+ }
175196
+ }
175197
+ }
175198
+ getRootProxy() {
175199
+ const rootPtr = Atomics.load(this.u32, OFFSET_ROOT >> 2);
175200
+ return this.getProxyForPtr(rootPtr);
175201
+ }
175202
+ alloc(byteSize, retry2 = true) {
175203
+ const idx = OFFSET_FREE_PTR >> 2;
175204
+ const currentPtr = Atomics.load(this.u32, idx);
175205
+ const nextPtr = currentPtr + byteSize;
175206
+ const alignedNext = nextPtr + 7 & ~7;
175207
+ if (alignedNext > this.buffer.byteLength) {
175208
+ if (retry2) {
175209
+ this.collectGarbage();
175210
+ this.propertyHints.clear();
175211
+ return this.alloc(byteSize, false);
175212
+ }
175213
+ throw new Error(`SharedJsonBuffer OOM: Used ${alignedNext} of ${this.buffer.byteLength}`);
175214
+ }
175215
+ Atomics.store(this.u32, idx, alignedNext);
175216
+ return currentPtr;
175217
+ }
175218
+ collectGarbage() {
175219
+ const tempBuffer = new ArrayBuffer(this.buffer.byteLength);
175220
+ const tempU32 = new Uint32Array(tempBuffer);
175221
+ const tempF64 = new Float64Array(tempBuffer);
175222
+ const tempU8 = new Uint8Array(tempBuffer);
175223
+ let freePtr = HEADER_SIZE;
175224
+ const visited = new Map;
175225
+ const allocTemp = (size2) => {
175226
+ const ptr = freePtr;
175227
+ freePtr = freePtr + size2 + 7 & ~7;
175228
+ if (freePtr > tempBuffer.byteLength) {
175229
+ throw new Error("GC Fatal: Fragmentation too high");
175230
+ }
175231
+ return ptr;
175232
+ };
175233
+ const relocate = (oldPtr, type) => {
175234
+ if (oldPtr === 0)
175235
+ return 0;
175236
+ if (type === TYPE_STRING) {
175237
+ if (visited.has(oldPtr))
175238
+ return visited.get(oldPtr);
175239
+ const len = this.u32[oldPtr >> 2];
175240
+ const newPtr2 = allocTemp(4 + len);
175241
+ tempU32[newPtr2 >> 2] = len;
175242
+ tempU8.set(this.u8.subarray(oldPtr + 4, oldPtr + 4 + len), newPtr2 + 4);
175243
+ visited.set(oldPtr, newPtr2);
175244
+ return newPtr2;
175245
+ }
175246
+ if (type === TYPE_NUMBER) {
175247
+ if (visited.has(oldPtr))
175248
+ return visited.get(oldPtr);
175249
+ const newPtr2 = allocTemp(8);
175250
+ tempF64[newPtr2 >> 3] = this.f64[oldPtr >> 3];
175251
+ visited.set(oldPtr, newPtr2);
175252
+ return newPtr2;
175253
+ }
175254
+ this.resolvePtr(oldPtr);
175255
+ const actualOldPtr = this.scratchPtr;
175256
+ if (visited.has(actualOldPtr))
175257
+ return visited.get(actualOldPtr);
175258
+ const actualType = this.u32[actualOldPtr >> 2];
175259
+ let newPtr = 0;
175260
+ if (actualType === TYPE_OBJECT) {
175261
+ const count = this.u32[actualOldPtr + 8 >> 2];
175262
+ const newCap = Math.max(4, count);
175263
+ newPtr = allocTemp(12 + newCap * 12);
175264
+ tempU32[newPtr >> 2] = TYPE_OBJECT;
175265
+ tempU32[newPtr + 4 >> 2] = newCap;
175266
+ tempU32[newPtr + 8 >> 2] = count;
175267
+ const startOffset = actualOldPtr + 12;
175268
+ const newStartOffset = newPtr + 12;
175269
+ for (let i3 = 0;i3 < count; i3++) {
175270
+ const entryOff = startOffset + i3 * 12;
175271
+ const kPtr = this.u32[entryOff >> 2];
175272
+ const vType = this.u32[entryOff + 4 >> 2];
175273
+ const vPayload = this.u32[entryOff + 8 >> 2];
175274
+ const newKeyPtr = relocate(kPtr, TYPE_STRING);
175275
+ let newPayload = vPayload;
175276
+ if (vType === TYPE_OBJECT || vType === TYPE_ARRAY || vType === TYPE_STRING || vType === TYPE_NUMBER) {
175277
+ newPayload = relocate(vPayload, vType);
175278
+ }
175279
+ const destOff = newStartOffset + i3 * 12;
175280
+ tempU32[destOff >> 2] = newKeyPtr;
175281
+ tempU32[destOff + 4 >> 2] = vType;
175282
+ tempU32[destOff + 8 >> 2] = newPayload;
175283
+ }
175284
+ } else if (actualType === TYPE_ARRAY) {
175285
+ const len = this.u32[actualOldPtr + 8 >> 2];
175286
+ const newCap = Math.max(4, len);
175287
+ newPtr = allocTemp(12 + newCap * 8);
175288
+ tempU32[newPtr >> 2] = TYPE_ARRAY;
175289
+ tempU32[newPtr + 4 >> 2] = newCap;
175290
+ tempU32[newPtr + 8 >> 2] = len;
175291
+ const startOffset = actualOldPtr + 12;
175292
+ const newStartOffset = newPtr + 12;
175293
+ for (let i3 = 0;i3 < len; i3++) {
175294
+ const entryOff = startOffset + i3 * 8;
175295
+ const vType = this.u32[entryOff >> 2];
175296
+ const vPayload = this.u32[entryOff + 4 >> 2];
175297
+ let newPayload = vPayload;
175298
+ if (vType === TYPE_OBJECT || vType === TYPE_ARRAY || vType === TYPE_STRING || vType === TYPE_NUMBER) {
175299
+ newPayload = relocate(vPayload, vType);
175300
+ }
175301
+ const destOff = newStartOffset + i3 * 8;
175302
+ tempU32[destOff >> 2] = vType;
175303
+ tempU32[destOff + 4 >> 2] = newPayload;
175304
+ }
175305
+ }
175306
+ visited.set(actualOldPtr, newPtr);
175307
+ return newPtr;
175308
+ };
175309
+ const oldRoot = Atomics.load(this.u32, OFFSET_ROOT >> 2);
175310
+ const newRoot = relocate(oldRoot, TYPE_OBJECT);
175311
+ for (let i3 = 0;i3 < this.tempRoots.length; i3++) {
175312
+ const root = this.tempRoots[i3];
175313
+ relocate(root.handle.__ptr, root.type);
175314
+ }
175315
+ this.u8.set(new Uint8Array(tempBuffer).subarray(0, freePtr), 0);
175316
+ Atomics.store(this.u32, OFFSET_FREE_PTR >> 2, freePtr);
175317
+ Atomics.store(this.u32, OFFSET_ROOT >> 2, newRoot);
175318
+ this.stringCache.clear();
175319
+ this.proxyCache.clear();
175320
+ this.propertyHints.clear();
175321
+ const fixupPointer = (target) => {
175322
+ this.resolvePtr(target.__ptr);
175323
+ const oldP = this.scratchPtr;
175324
+ if (visited.has(oldP)) {
175325
+ target.__ptr = visited.get(oldP);
175326
+ } else {
175327
+ target.__ptr = 0;
175328
+ }
175329
+ };
175330
+ for (const target of this.activeTargets) {
175331
+ fixupPointer(target);
175332
+ }
175333
+ for (const root of this.tempRoots) {
175334
+ fixupPointer(root.handle);
175335
+ }
175336
+ }
175337
+ resolvePtr(ptr) {
175338
+ if (ptr === 0) {
175339
+ this.scratchPtr = 0;
175340
+ this.scratchLen = 0;
175341
+ return;
175342
+ }
175343
+ let curr = ptr;
175344
+ let type = this.u32[curr >> 2];
175345
+ while (type === TYPE_MOVED) {
175346
+ curr = this.u32[curr + 4 >> 2];
175347
+ type = this.u32[curr >> 2];
175348
+ }
175349
+ this.scratchPtr = curr;
175350
+ this.scratchCap = this.u32[curr + 4 >> 2];
175351
+ this.scratchLen = this.u32[curr + 8 >> 2];
175352
+ this.scratchStart = curr + 12;
175353
+ }
175354
+ readString(ptr) {
175355
+ if (this.stringCache.has(ptr)) {
175356
+ return this.stringCache.get(ptr);
175357
+ }
175358
+ const len = this.u32[ptr >> 2];
175359
+ const offset = ptr + 4;
175360
+ if (len < 64) {
175361
+ let res2 = "";
175362
+ for (let i3 = 0;i3 < len; i3++) {
175363
+ res2 += String.fromCharCode(this.u8[offset + i3]);
175364
+ }
175365
+ this.stringCache.set(ptr, res2);
175366
+ return res2;
175367
+ }
175368
+ const str = this.textDecoder.decode(this.u8.subarray(offset, offset + len));
175369
+ this.stringCache.set(ptr, str);
175370
+ return str;
175371
+ }
175372
+ readSlot(offset) {
175373
+ const type = this.u32[offset >> 2];
175374
+ const payload = this.u32[offset + 4 >> 2];
175375
+ if (type === TYPE_NUMBER) {
175376
+ return this.f64[payload >> 3];
175377
+ }
175378
+ switch (type) {
175379
+ case TYPE_STRING:
175380
+ return this.readString(payload);
175381
+ case TYPE_OBJECT:
175382
+ case TYPE_ARRAY:
175383
+ return this.getProxyForPtr(payload);
175384
+ case TYPE_TRUE:
175385
+ return true;
175386
+ case TYPE_FALSE:
175387
+ return false;
175388
+ case TYPE_NULL:
175389
+ return null;
175390
+ default:
175391
+ return;
175392
+ }
175393
+ }
175394
+ writeValue(value) {
175395
+ if (typeof value === "number") {
175396
+ const ptr = this.alloc(8);
175397
+ this.f64[ptr >> 3] = value;
175398
+ return { type: TYPE_NUMBER, payload: ptr };
175399
+ }
175400
+ if (value === null || value === undefined) {
175401
+ return { type: TYPE_NULL, payload: 0 };
175402
+ }
175403
+ if (value === true)
175404
+ return { type: TYPE_TRUE, payload: 0 };
175405
+ if (value === false)
175406
+ return { type: TYPE_FALSE, payload: 0 };
175407
+ if (typeof value === "string") {
175408
+ const encoded = this.textEncoder.encode(value);
175409
+ const len = encoded.byteLength;
175410
+ const ptr = this.alloc(4 + len);
175411
+ this.u32[ptr >> 2] = len;
175412
+ this.u8.set(encoded, ptr + 4);
175413
+ return { type: TYPE_STRING, payload: ptr };
175414
+ }
175415
+ if (Array.isArray(value)) {
175416
+ const ptr = this.allocArray(value.length);
175417
+ const target = { __ptr: ptr };
175418
+ this.tempRoots.push({ handle: target, type: TYPE_ARRAY });
175419
+ try {
175420
+ value.forEach((v4, i3) => this.arraySet(target, i3, v4));
175421
+ } finally {
175422
+ this.tempRoots.pop();
175423
+ }
175424
+ return { type: TYPE_ARRAY, payload: target.__ptr };
175425
+ }
175426
+ if (typeof value === "object") {
175427
+ const keys = Object.keys(value);
175428
+ const ptr = this.allocObject(keys.length);
175429
+ const target = { __ptr: ptr };
175430
+ this.tempRoots.push({ handle: target, type: TYPE_OBJECT });
175431
+ try {
175432
+ Object.entries(value).forEach(([k4, v4]) => this.objectSet(target, k4, v4));
175433
+ } finally {
175434
+ this.tempRoots.pop();
175435
+ }
175436
+ return { type: TYPE_OBJECT, payload: target.__ptr };
175437
+ }
175438
+ throw new Error(`Unsupported type: ${typeof value}`);
175439
+ }
175440
+ allocObject(initialCap) {
175441
+ const capacity2 = Math.max(4, initialCap);
175442
+ const byteSize = 12 + capacity2 * 12;
175443
+ const ptr = this.alloc(byteSize);
175444
+ const idx = ptr >> 2;
175445
+ this.u32[idx] = TYPE_OBJECT;
175446
+ this.u32[idx + 1] = capacity2;
175447
+ this.u32[idx + 2] = 0;
175448
+ return ptr;
175449
+ }
175450
+ allocArray(initialCap) {
175451
+ const capacity2 = Math.max(4, initialCap);
175452
+ const byteSize = 12 + capacity2 * 8;
175453
+ const ptr = this.alloc(byteSize);
175454
+ const idx = ptr >> 2;
175455
+ this.u32[idx] = TYPE_ARRAY;
175456
+ this.u32[idx + 1] = capacity2;
175457
+ this.u32[idx + 2] = 0;
175458
+ return ptr;
175459
+ }
175460
+ writeInitial(target, data) {
175461
+ if (Array.isArray(data)) {
175462
+ data.forEach((v4, i3) => this.arraySet(target, i3, v4));
175463
+ } else {
175464
+ Object.entries(data).forEach(([k4, v4]) => this.objectSet(target, k4, v4));
175465
+ }
175466
+ }
175467
+ getProxyForPtr(ptr) {
175468
+ this.resolvePtr(ptr);
175469
+ const resolvedPtr = this.scratchPtr;
175470
+ if (this.proxyCache.has(resolvedPtr)) {
175471
+ const ref = this.proxyCache.get(resolvedPtr);
175472
+ const cached = ref?.deref();
175473
+ if (cached)
175474
+ return cached;
175475
+ }
175476
+ const type = this.u32[resolvedPtr >> 2];
175477
+ const target = type === TYPE_ARRAY ? [] : {};
175478
+ Object.defineProperty(target, "__ptr", {
175479
+ value: resolvedPtr,
175480
+ writable: true,
175481
+ configurable: true,
175482
+ enumerable: false
175483
+ });
175484
+ this.activeTargets.add(target);
175485
+ const proxy = new Proxy(target, type === TYPE_ARRAY ? this.arrayHandler : this.objectHandler);
175486
+ this.proxyCache.set(resolvedPtr, new WeakRef(proxy));
175487
+ return proxy;
175488
+ }
175489
+ toConsoleView(ptr, depth = 0) {
175490
+ this.resolvePtr(ptr);
175491
+ const len = this.scratchLen;
175492
+ const start = this.scratchStart;
175493
+ const type = this.u32[this.scratchPtr >> 2];
175494
+ const result = type === TYPE_ARRAY ? new Array(len) : {};
175495
+ const EAGER_DEPTH = 5;
175496
+ const EAGER_BREADTH = 100;
175497
+ for (let i3 = 0;i3 < len; i3++) {
175498
+ let key;
175499
+ let offset;
175500
+ if (type === TYPE_ARRAY) {
175501
+ key = i3;
175502
+ offset = start + i3 * 8;
175503
+ } else {
175504
+ const entryOffset = start + i3 * 12;
175505
+ const keyPtr = this.u32[entryOffset >> 2];
175506
+ key = this.readString(keyPtr);
175507
+ offset = entryOffset + 4;
175508
+ }
175509
+ const itemType = this.u32[offset >> 2];
175510
+ const itemPayload = this.u32[offset + 4 >> 2];
175511
+ if (itemType === TYPE_OBJECT || itemType === TYPE_ARRAY) {
175512
+ const isEager = depth < EAGER_DEPTH && i3 < EAGER_BREADTH;
175513
+ if (isEager) {
175514
+ result[key] = this.toConsoleView(itemPayload, depth + 1);
175515
+ } else {
175516
+ Object.defineProperty(result, key, {
175517
+ enumerable: true,
175518
+ configurable: true,
175519
+ get: () => {
175520
+ return this.toConsoleView(itemPayload, 0);
175521
+ }
175522
+ });
175523
+ }
175524
+ } else {
175525
+ result[key] = this.readSlot(offset);
175526
+ }
175527
+ }
175528
+ return result;
175529
+ }
175530
+ toJSON(ptr) {
175531
+ this.resolvePtr(ptr);
175532
+ const len = this.scratchLen;
175533
+ const start = this.scratchStart;
175534
+ const type = this.u32[this.scratchPtr >> 2];
175535
+ if (type === TYPE_ARRAY) {
175536
+ const arr = new Array(len);
175537
+ for (let i3 = 0;i3 < len; i3++) {
175538
+ const offset = start + i3 * 8;
175539
+ const itemType = this.u32[offset >> 2];
175540
+ const itemPayload = this.u32[offset + 4 >> 2];
175541
+ if (itemType === TYPE_OBJECT || itemType === TYPE_ARRAY) {
175542
+ arr[i3] = this.toJSON(itemPayload);
175543
+ } else {
175544
+ arr[i3] = this.readSlot(offset);
175545
+ }
175546
+ }
175547
+ return arr;
175548
+ } else {
175549
+ const obj = {};
175550
+ for (let i3 = 0;i3 < len; i3++) {
175551
+ const entryOffset = start + i3 * 12;
175552
+ const keyPtr = this.u32[entryOffset >> 2];
175553
+ const key = this.readString(keyPtr);
175554
+ const itemType = this.u32[entryOffset + 4 >> 2];
175555
+ const itemPayload = this.u32[entryOffset + 8 >> 2];
175556
+ if (itemType === TYPE_OBJECT || itemType === TYPE_ARRAY) {
175557
+ obj[key] = this.toJSON(itemPayload);
175558
+ } else {
175559
+ obj[key] = this.readSlot(entryOffset + 4);
175560
+ }
175561
+ }
175562
+ return obj;
175563
+ }
175564
+ }
175565
+ objectDelete(target, key) {
175566
+ this.resolvePtr(target.__ptr);
175567
+ const ptr = this.scratchPtr;
175568
+ const count = this.scratchLen;
175569
+ const entriesStart = this.scratchStart;
175570
+ let foundIdx = -1;
175571
+ for (let i3 = 0;i3 < count; i3++) {
175572
+ const entryOffset = entriesStart + i3 * 12;
175573
+ const keyPtr = this.u32[entryOffset >> 2];
175574
+ if (this.readString(keyPtr) === key) {
175575
+ foundIdx = i3;
175576
+ break;
175577
+ }
175578
+ }
175579
+ if (foundIdx === -1)
175580
+ return true;
175581
+ const lastIdx = count - 1;
175582
+ if (foundIdx !== lastIdx) {
175583
+ const lastOffset = entriesStart + lastIdx * 12;
175584
+ const foundOffset = entriesStart + foundIdx * 12;
175585
+ this.u32[foundOffset >> 2] = this.u32[lastOffset >> 2];
175586
+ this.u32[foundOffset + 4 >> 2] = this.u32[lastOffset + 4 >> 2];
175587
+ this.u32[foundOffset + 8 >> 2] = this.u32[lastOffset + 8 >> 2];
175588
+ }
175589
+ this.u32[ptr + 8 >> 2] = count - 1;
175590
+ return true;
175591
+ }
175592
+ objectSet(target, key, value) {
175593
+ this.resolvePtr(target.__ptr);
175594
+ const preScanLen = this.scratchLen;
175595
+ const preScanStart = this.scratchStart;
175596
+ for (let i3 = 0;i3 < preScanLen; i3++) {
175597
+ const entryOffset = preScanStart + i3 * 12;
175598
+ const keyPtr = this.u32[entryOffset >> 2];
175599
+ if (this.readString(keyPtr) === key) {
175600
+ this.u32[entryOffset + 4 >> 2] = TYPE_NULL;
175601
+ this.u32[entryOffset + 8 >> 2] = 0;
175602
+ break;
175603
+ }
175604
+ }
175605
+ const valResult = this.writeValue(value);
175606
+ const valHandle = { __ptr: valResult.payload };
175607
+ const isValPtr = valResult.type >= TYPE_NUMBER;
175608
+ if (isValPtr) {
175609
+ this.tempRoots.push({ handle: valHandle, type: valResult.type });
175610
+ }
175611
+ try {
175612
+ this.resolvePtr(target.__ptr);
175613
+ let ptr = this.scratchPtr;
175614
+ const entriesStart = this.scratchStart;
175615
+ const count = this.scratchLen;
175616
+ const cap2 = this.scratchCap;
175617
+ for (let i3 = 0;i3 < count; i3++) {
175618
+ const entryOffset = entriesStart + i3 * 12;
175619
+ const keyPtr = this.u32[entryOffset >> 2];
175620
+ if (this.readString(keyPtr) === key) {
175621
+ this.u32[entryOffset + 4 >> 2] = valResult.type;
175622
+ this.u32[entryOffset + 8 >> 2] = valHandle.__ptr;
175623
+ return;
175624
+ }
175625
+ }
175626
+ const keyResult = this.writeValue(key);
175627
+ const keyHandle = { __ptr: keyResult.payload };
175628
+ this.tempRoots.push({ handle: keyHandle, type: TYPE_STRING });
175629
+ try {
175630
+ this.resolvePtr(target.__ptr);
175631
+ ptr = this.scratchPtr;
175632
+ const currentCap = this.scratchCap;
175633
+ const currentCount = this.scratchLen;
175634
+ if (currentCount >= currentCap) {
175635
+ const newCap = Math.max(currentCap * 2, 4);
175636
+ const newByteSize = 12 + newCap * 12;
175637
+ const newPtr = this.alloc(newByteSize);
175638
+ this.resolvePtr(target.__ptr);
175639
+ const oldDataStart = this.scratchStart;
175640
+ const idx = newPtr >> 2;
175641
+ this.u32[idx] = TYPE_OBJECT;
175642
+ this.u32[idx + 1] = newCap;
175643
+ this.u32[idx + 2] = currentCount + 1;
175644
+ this.u8.set(this.u8.subarray(oldDataStart, oldDataStart + currentCount * 12), newPtr + 12);
175645
+ const entryOffset = newPtr + 12 + currentCount * 12;
175646
+ const eIdx = entryOffset >> 2;
175647
+ this.u32[eIdx] = keyHandle.__ptr;
175648
+ this.u32[eIdx + 1] = valResult.type;
175649
+ this.u32[eIdx + 2] = valHandle.__ptr;
175650
+ const pIdx = this.scratchPtr >> 2;
175651
+ this.u32[pIdx] = TYPE_MOVED;
175652
+ this.u32[pIdx + 1] = newPtr;
175653
+ } else {
175654
+ const entryOffset = this.scratchStart + currentCount * 12;
175655
+ const eIdx = entryOffset >> 2;
175656
+ this.u32[eIdx] = keyHandle.__ptr;
175657
+ this.u32[eIdx + 1] = valResult.type;
175658
+ this.u32[eIdx + 2] = valHandle.__ptr;
175659
+ this.u32[ptr + 8 >> 2] = currentCount + 1;
175660
+ }
175661
+ } finally {
175662
+ this.tempRoots.pop();
175663
+ }
175664
+ } finally {
175665
+ if (isValPtr)
175666
+ this.tempRoots.pop();
175667
+ }
175668
+ }
175669
+ arrayEnsureCapacity(target, minCap) {
175670
+ this.resolvePtr(target.__ptr);
175671
+ if (this.scratchCap >= minCap)
175672
+ return;
175673
+ const oldCap = this.scratchCap;
175674
+ const oldLen = this.scratchLen;
175675
+ const oldDataStart = this.scratchStart;
175676
+ const newCap = Math.max(oldCap * 2, minCap);
175677
+ const newByteSize = 12 + newCap * 8;
175678
+ const newPtr = this.alloc(newByteSize);
175679
+ this.resolvePtr(target.__ptr);
175680
+ const idx = newPtr >> 2;
175681
+ this.u32[idx] = TYPE_ARRAY;
175682
+ this.u32[idx + 1] = newCap;
175683
+ this.u32[idx + 2] = oldLen;
175684
+ this.u8.set(this.u8.subarray(oldDataStart, oldDataStart + oldLen * 8), newPtr + 12);
175685
+ const pIdx = this.scratchPtr >> 2;
175686
+ this.u32[pIdx] = TYPE_MOVED;
175687
+ this.u32[pIdx + 1] = newPtr;
175688
+ this.resolvePtr(target.__ptr);
175689
+ }
175690
+ arraySpliceImpl(target, start, deleteCount, items = []) {
175691
+ this.resolvePtr(target.__ptr);
175692
+ const len = this.scratchLen;
175693
+ const actualStart = start < 0 ? Math.max(len + start, 0) : Math.min(start, len);
175694
+ const actualDeleteCount = Math.min(Math.max(deleteCount, 0), len - actualStart);
175695
+ const deletedItems = [];
175696
+ for (let i3 = 0;i3 < actualDeleteCount; i3++) {
175697
+ const offset = this.scratchStart + (actualStart + i3) * 8;
175698
+ deletedItems.push(this.readSlot(offset));
175699
+ }
175700
+ const insertCount = items.length;
175701
+ const delta = insertCount - actualDeleteCount;
175702
+ const newLen = len + delta;
175703
+ this.arrayEnsureCapacity(target, newLen);
175704
+ if (delta !== 0) {
175705
+ const tailCount = len - (actualStart + actualDeleteCount);
175706
+ const srcIdx = actualStart + actualDeleteCount;
175707
+ const destIdx = actualStart + insertCount;
175708
+ const srcOffset = this.scratchStart + srcIdx * 8;
175709
+ const destOffset = this.scratchStart + destIdx * 8;
175710
+ const byteLen = tailCount * 8;
175711
+ this.u8.copyWithin(destOffset, srcOffset, srcOffset + byteLen);
175712
+ }
175713
+ for (let i3 = 0;i3 < insertCount; i3++) {
175714
+ const val = items[i3];
175715
+ const valResult = this.writeValue(val);
175716
+ const valHandle = { __ptr: valResult.payload };
175717
+ const isValPtr = valResult.type >= TYPE_NUMBER;
175718
+ if (isValPtr) {
175719
+ this.tempRoots.push({ handle: valHandle, type: valResult.type });
175720
+ }
175721
+ this.resolvePtr(target.__ptr);
175722
+ const offset = this.scratchStart + (actualStart + i3) * 8;
175723
+ const oIdx = offset >> 2;
175724
+ this.u32[oIdx] = valResult.type;
175725
+ this.u32[oIdx + 1] = valHandle.__ptr;
175726
+ if (isValPtr)
175727
+ this.tempRoots.pop();
175728
+ }
175729
+ this.u32[this.scratchPtr + 8 >> 2] = newLen;
175730
+ this.scratchLen = newLen;
175731
+ return deletedItems;
175732
+ }
175733
+ toArrayShallow(ptr) {
175734
+ this.resolvePtr(ptr);
175735
+ const len = this.scratchLen;
175736
+ const start = this.scratchStart;
175737
+ const result = new Array(len);
175738
+ for (let i3 = 0;i3 < len; i3++) {
175739
+ result[i3] = this.readSlot(start + i3 * 8);
175740
+ }
175741
+ return result;
175742
+ }
175743
+ arraySet(target, index, value) {
175744
+ this.resolvePtr(target.__ptr);
175745
+ if (index < this.scratchLen) {
175746
+ const offset = this.scratchStart + index * 8;
175747
+ this.u32[offset >> 2] = TYPE_NULL;
175748
+ this.u32[offset + 4 >> 2] = 0;
175749
+ }
175750
+ const valResult = this.writeValue(value);
175751
+ const valHandle = { __ptr: valResult.payload };
175752
+ const isValPtr = valResult.type >= TYPE_NUMBER;
175753
+ if (isValPtr) {
175754
+ this.tempRoots.push({ handle: valHandle, type: valResult.type });
175755
+ }
175756
+ try {
175757
+ this.resolvePtr(target.__ptr);
175758
+ const ptr = this.scratchPtr;
175759
+ const cap2 = this.scratchCap;
175760
+ const len = this.scratchLen;
175761
+ if (index >= cap2) {
175762
+ const newCap = Math.max(cap2 * 2, index + 1);
175763
+ const newByteSize = 12 + newCap * 8;
175764
+ const newPtr = this.alloc(newByteSize);
175765
+ this.resolvePtr(target.__ptr);
175766
+ const oldDataStart = this.scratchStart;
175767
+ const idx = newPtr >> 2;
175768
+ this.u32[idx] = TYPE_ARRAY;
175769
+ this.u32[idx + 1] = newCap;
175770
+ const newLen = Math.max(len, index + 1);
175771
+ this.u32[idx + 2] = newLen;
175772
+ const oldByteLen = len * 8;
175773
+ this.u8.set(this.u8.subarray(oldDataStart, oldDataStart + oldByteLen), newPtr + 12);
175774
+ const pIdx = this.scratchPtr >> 2;
175775
+ this.u32[pIdx] = TYPE_MOVED;
175776
+ this.u32[pIdx + 1] = newPtr;
175777
+ const offset2 = newPtr + 12 + index * 8;
175778
+ const oIdx2 = offset2 >> 2;
175779
+ this.u32[oIdx2] = valResult.type;
175780
+ this.u32[oIdx2 + 1] = valHandle.__ptr;
175781
+ return;
175782
+ }
175783
+ const offset = ptr + 12 + index * 8;
175784
+ const oIdx = offset >> 2;
175785
+ this.u32[oIdx] = valResult.type;
175786
+ this.u32[oIdx + 1] = valHandle.__ptr;
175787
+ if (index >= len) {
175788
+ this.u32[ptr + 8 >> 2] = index + 1;
175789
+ }
175790
+ } finally {
175791
+ if (isValPtr)
175792
+ this.tempRoots.pop();
175793
+ }
175794
+ }
175795
+ [toSerialized]() {
175796
+ return {
175797
+ value: this.buffer,
175798
+ transfer: [],
175799
+ typeId: 7
175800
+ };
175801
+ }
175802
+ static [toDeserialized](data) {
175803
+ return new _a7(null, data);
175804
+ }
175805
+ }
175806
+ _a7 = SharedJsonBufferImpl;
175807
+ (() => {
175808
+ initConsoleHooks();
175809
+ register2(7, _a7);
175810
+ })();
175811
+
175812
+ class ArrayCursor {
175813
+ constructor(buffer, ptr) {
175814
+ this.buffer = buffer;
175815
+ this.index = 0;
175816
+ this.target = { __ptr: 0 };
175817
+ buffer.resolvePtr(ptr);
175818
+ this.len = buffer.scratchLen;
175819
+ this.start = buffer.scratchStart;
175820
+ const type = buffer.u32[buffer.scratchPtr >> 2];
175821
+ if (type !== TYPE_ARRAY) {
175822
+ throw new Error("Iterator must be used on an Array");
175823
+ }
175824
+ this.flyweightProxy = new Proxy(this.target, buffer.objectHandler);
175825
+ this.result = { done: false, value: this.flyweightProxy };
175826
+ }
175827
+ [Symbol.iterator]() {
175828
+ return this;
175829
+ }
175830
+ next() {
175831
+ if (this.index >= this.len) {
175832
+ this.result.done = true;
175833
+ this.result.value = undefined;
175834
+ return this.result;
175835
+ }
175836
+ const offset = this.start + this.index * 8;
175837
+ const itemType = this.buffer.u32[offset >> 2];
175838
+ const itemPayload = this.buffer.u32[offset + 4 >> 2];
175839
+ this.index++;
175840
+ if (itemType === TYPE_OBJECT || itemType === TYPE_ARRAY) {
175841
+ this.target.__ptr = itemPayload;
175842
+ return this.result;
175843
+ }
175844
+ this.result.value = this.buffer.readSlot(offset);
175845
+ return this.result;
175846
+ }
175847
+ }
175848
+
175849
+ // node_modules/multithreading/src/lib/sync/mpmc.js
175850
+ var __addDisposableResource = function(env3, value, async) {
175851
+ if (value !== null && value !== undefined) {
175852
+ if (typeof value !== "object" && typeof value !== "function")
175853
+ throw new TypeError("Object expected.");
175854
+ var dispose, inner;
175855
+ if (async) {
175856
+ if (!Symbol.asyncDispose)
175857
+ throw new TypeError("Symbol.asyncDispose is not defined.");
175858
+ dispose = value[Symbol.asyncDispose];
175859
+ }
175860
+ if (dispose === undefined) {
175861
+ if (!Symbol.dispose)
175862
+ throw new TypeError("Symbol.dispose is not defined.");
175863
+ dispose = value[Symbol.dispose];
175864
+ if (async)
175865
+ inner = dispose;
175866
+ }
175867
+ if (typeof dispose !== "function")
175868
+ throw new TypeError("Object not disposable.");
175869
+ if (inner)
175870
+ dispose = function() {
175871
+ try {
175872
+ inner.call(this);
175873
+ } catch (e4) {
175874
+ return Promise.reject(e4);
175875
+ }
175876
+ };
175877
+ env3.stack.push({ value, dispose, async });
175878
+ } else if (async) {
175879
+ env3.stack.push({ async: true });
175880
+ }
175881
+ return value;
175882
+ };
175883
+ var __disposeResources = function(SuppressedError2) {
175884
+ return function(env3) {
175885
+ function fail(e4) {
175886
+ env3.error = env3.hasError ? new SuppressedError2(e4, env3.error, "An error was suppressed during disposal.") : e4;
175887
+ env3.hasError = true;
175888
+ }
175889
+ var r4, s4 = 0;
175890
+ function next() {
175891
+ while (r4 = env3.stack.pop()) {
175892
+ try {
175893
+ if (!r4.async && s4 === 1)
175894
+ return s4 = 0, env3.stack.push(r4), Promise.resolve().then(next);
175895
+ if (r4.dispose) {
175896
+ var result = r4.dispose.call(r4.value);
175897
+ if (r4.async)
175898
+ return s4 |= 2, Promise.resolve(result).then(next, function(e4) {
175899
+ fail(e4);
175900
+ return next();
175901
+ });
175902
+ } else
175903
+ s4 |= 1;
175904
+ } catch (e4) {
175905
+ fail(e4);
175906
+ }
175907
+ }
175908
+ if (s4 === 1)
175909
+ return env3.hasError ? Promise.reject(env3.error) : Promise.resolve();
175910
+ if (env3.hasError)
175911
+ throw env3.error;
175912
+ }
175913
+ return next();
175914
+ };
175915
+ }(typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
175916
+ var e4 = new Error(message);
175917
+ return e4.name = "SuppressedError", e4.error = error, e4.suppressed = suppressed, e4;
175918
+ });
175919
+ var _a8;
175920
+ var _b2;
175921
+ var _c2;
175922
+ var IDX_HEAD = 0;
175923
+ var IDX_TAIL = 1;
175924
+ var IDX_CLOSED = 2;
175925
+ var IDX_CAP = 3;
175926
+ var IDX_TX_COUNT = 4;
175927
+ var IDX_RX_COUNT = 5;
175928
+ var CLOSED = 1;
175929
+ var ERR_DISPOSED_SENDER = new Error("Sender is disposed");
175930
+ var ERR_DISPOSED_RECEIVER = new Error("Receiver disposed");
175931
+ var ERR_CLOSED = new Error("Channel closed");
175932
+ var ERR_CLOSED_NO_RX = new Error("Channel closed (No Receivers)");
175933
+ var ERR_SPURIOUS = new Error("Spurious wakeup or illegal null value");
175934
+
175935
+ class ChannelInternals extends Serializable {
175936
+ constructor(state, items, sendLock, recvLock, itemsAvailable, slotsAvailable) {
175937
+ super();
175938
+ this.state = state;
175939
+ this.items = items;
175940
+ this.sendLock = sendLock;
175941
+ this.recvLock = recvLock;
175942
+ this.itemsAvailable = itemsAvailable;
175943
+ this.slotsAvailable = slotsAvailable;
175944
+ }
175945
+ write(value) {
175946
+ const tail = this.state[IDX_TAIL];
175947
+ this.items[tail] = value;
175948
+ this.state[IDX_TAIL] = (tail + 1) % this.state[IDX_CAP];
175949
+ }
175950
+ read() {
175951
+ const head = this.state[IDX_HEAD];
175952
+ const val = this.items[head];
175953
+ if (val === null)
175954
+ return null;
175955
+ this.items[head] = null;
175956
+ this.state[IDX_HEAD] = (head + 1) % this.state[IDX_CAP];
175957
+ return val;
175958
+ }
175959
+ isClosed() {
175960
+ return Atomics.load(this.state, IDX_CLOSED) === CLOSED;
175961
+ }
175962
+ hasReceivers() {
175963
+ return Atomics.load(this.state, IDX_RX_COUNT) > 0;
175964
+ }
175965
+ [toSerialized]() {
175966
+ const itemsSer = serialize(this.items);
175967
+ const sendLockSer = serialize(this.sendLock);
175968
+ const recvLockSer = serialize(this.recvLock);
175969
+ const itemsAvailSer = serialize(this.itemsAvailable);
175970
+ const slotsAvailSer = serialize(this.slotsAvailable);
175971
+ return {
175972
+ value: {
175973
+ state: this.state.buffer,
175974
+ items: itemsSer.value,
175975
+ sendLock: sendLockSer.value,
175976
+ recvLock: recvLockSer.value,
175977
+ itemsAvailable: itemsAvailSer.value,
175978
+ slotsAvailable: slotsAvailSer.value
175979
+ },
175980
+ transfer: [
175981
+ ...itemsSer.transfer,
175982
+ ...sendLockSer.transfer,
175983
+ ...recvLockSer.transfer,
175984
+ ...itemsAvailSer.transfer,
175985
+ ...slotsAvailSer.transfer
175986
+ ]
175987
+ };
175988
+ }
175989
+ static [toDeserialized](data) {
175990
+ return new _a8(new Int32Array(data.state), deserialize(data.items), deserialize(data.sendLock), deserialize(data.recvLock), deserialize(data.itemsAvailable), deserialize(data.slotsAvailable));
175991
+ }
175992
+ }
175993
+ _a8 = ChannelInternals;
175994
+ (() => {
175995
+ register2(4, _a8);
175996
+ })();
175997
+
175998
+ class ChannelHandle extends Serializable {
175999
+ constructor(internals) {
176000
+ super();
176001
+ this.internals = internals;
176002
+ this.disposed = false;
176003
+ }
176004
+ checkDisposed() {
176005
+ return this.disposed ? { ok: false, error: this.disposeError } : null;
176006
+ }
176007
+ [toSerialized]() {
176008
+ if (this.disposed)
176009
+ throw new Error("Cannot move a disposed Handle");
176010
+ this.disposed = true;
176011
+ return serialize(this.internals);
176012
+ }
176013
+ }
176014
+
176015
+ class Sender extends ChannelHandle {
176016
+ get disposeError() {
176017
+ return ERR_DISPOSED_SENDER;
176018
+ }
176019
+ clone() {
176020
+ if (this.disposed)
176021
+ throw new Error("Cannot clone disposed Sender");
176022
+ Atomics.add(this.internals.state, IDX_TX_COUNT, 1);
176023
+ return new _b2(this.internals);
176024
+ }
176025
+ async send(value) {
176026
+ const disposedCheck = this.checkDisposed();
176027
+ if (disposedCheck)
176028
+ return disposedCheck;
176029
+ if (!this.internals.hasReceivers()) {
176030
+ return { ok: false, error: ERR_CLOSED_NO_RX };
176031
+ }
176032
+ const slotToken = await this.internals.slotsAvailable.acquire();
176033
+ if (this.internals.isClosed()) {
176034
+ slotToken[Symbol.dispose]();
176035
+ return { ok: false, error: ERR_CLOSED };
176036
+ }
176037
+ try {
176038
+ const env_1 = { stack: [], error: undefined, hasError: false };
176039
+ try {
176040
+ const _lockGuard = __addDisposableResource(env_1, await this.internals.sendLock.acquire(), false);
176041
+ if (this.internals.isClosed()) {
176042
+ slotToken[Symbol.dispose]();
176043
+ return { ok: false, error: ERR_CLOSED };
176044
+ }
176045
+ this.internals.write(value);
176046
+ } catch (e_1) {
176047
+ env_1.error = e_1;
176048
+ env_1.hasError = true;
176049
+ } finally {
176050
+ __disposeResources(env_1);
176051
+ }
176052
+ } catch (err) {
176053
+ slotToken[Symbol.dispose]();
176054
+ throw err;
176055
+ }
176056
+ this.internals.itemsAvailable[INTERNAL_SEMAPHORE_CONTROLLER].release(1);
176057
+ return { ok: true, value: undefined };
176058
+ }
176059
+ blockingSend(value) {
176060
+ const disposedCheck = this.checkDisposed();
176061
+ if (disposedCheck)
176062
+ return disposedCheck;
176063
+ if (!this.internals.hasReceivers()) {
176064
+ return { ok: false, error: ERR_CLOSED_NO_RX };
176065
+ }
176066
+ const slotToken = this.internals.slotsAvailable.blockingAcquire();
176067
+ if (this.internals.isClosed()) {
176068
+ slotToken[Symbol.dispose]();
176069
+ return { ok: false, error: ERR_CLOSED };
176070
+ }
176071
+ try {
176072
+ const lockToken = this.internals.sendLock.blockingAcquire();
176073
+ try {
176074
+ if (this.internals.isClosed()) {
176075
+ slotToken[Symbol.dispose]();
176076
+ return { ok: false, error: ERR_CLOSED };
176077
+ }
176078
+ this.internals.write(value);
176079
+ } finally {
176080
+ lockToken[Symbol.dispose]();
176081
+ }
176082
+ this.internals.itemsAvailable[INTERNAL_SEMAPHORE_CONTROLLER].release(1);
176083
+ return { ok: true, value: undefined };
176084
+ } catch (err) {
176085
+ slotToken[Symbol.dispose]();
176086
+ throw err;
176087
+ }
176088
+ }
176089
+ close() {
176090
+ if (this.disposed || this.internals.isClosed())
176091
+ return;
176092
+ const { state, slotsAvailable, itemsAvailable, sendLock, recvLock } = this.internals;
176093
+ const g12 = sendLock.blockingAcquire();
176094
+ const g22 = recvLock.blockingAcquire();
176095
+ try {
176096
+ if (this.internals.isClosed())
176097
+ return;
176098
+ Atomics.store(state, IDX_CLOSED, CLOSED);
176099
+ slotsAvailable[INTERNAL_SEMAPHORE_CONTROLLER].release(1073741823);
176100
+ itemsAvailable[INTERNAL_SEMAPHORE_CONTROLLER].release(1073741823);
176101
+ } finally {
176102
+ g12[Symbol.dispose]();
176103
+ g22[Symbol.dispose]();
176104
+ }
176105
+ }
176106
+ [Symbol.dispose]() {
176107
+ if (this.disposed)
176108
+ return;
176109
+ const prevCount = Atomics.sub(this.internals.state, IDX_TX_COUNT, 1);
176110
+ if (prevCount === 1)
176111
+ this.close();
176112
+ this.disposed = true;
176113
+ }
176114
+ static [toDeserialized](obj) {
176115
+ return new _b2(deserialize(obj));
176116
+ }
176117
+ }
176118
+ _b2 = Sender;
176119
+ (() => {
176120
+ register2(5, _b2);
176121
+ })();
176122
+
176123
+ class Receiver extends ChannelHandle {
176124
+ get disposeError() {
176125
+ return ERR_DISPOSED_RECEIVER;
176126
+ }
176127
+ clone() {
176128
+ if (this.disposed)
176129
+ throw new Error("Cannot clone disposed Receiver");
176130
+ Atomics.add(this.internals.state, IDX_RX_COUNT, 1);
176131
+ return new _c2(this.internals);
176132
+ }
176133
+ async recv() {
176134
+ const disposedCheck = this.checkDisposed();
176135
+ if (disposedCheck)
176136
+ return disposedCheck;
176137
+ const itemToken = await this.internals.itemsAvailable.acquire();
176138
+ let val;
176139
+ try {
176140
+ const env_2 = { stack: [], error: undefined, hasError: false };
176141
+ try {
176142
+ const _lockGuard = __addDisposableResource(env_2, await this.internals.recvLock.acquire(), false);
176143
+ val = this.internals.read();
176144
+ } catch (e_2) {
176145
+ env_2.error = e_2;
176146
+ env_2.hasError = true;
176147
+ } finally {
176148
+ __disposeResources(env_2);
176149
+ }
176150
+ } catch (err) {
176151
+ itemToken[Symbol.dispose]();
176152
+ throw err;
176153
+ }
176154
+ if (val === null) {
176155
+ itemToken[Symbol.dispose]();
176156
+ return this.internals.isClosed() ? { ok: false, error: ERR_CLOSED } : { ok: false, error: ERR_SPURIOUS };
176157
+ }
176158
+ this.internals.slotsAvailable[INTERNAL_SEMAPHORE_CONTROLLER].release(1);
176159
+ return { ok: true, value: val };
176160
+ }
176161
+ blockingRecv() {
176162
+ const disposedCheck = this.checkDisposed();
176163
+ if (disposedCheck)
176164
+ return disposedCheck;
176165
+ const itemToken = this.internals.itemsAvailable.blockingAcquire();
176166
+ let val;
176167
+ try {
176168
+ const lockToken = this.internals.recvLock.blockingAcquire();
176169
+ try {
176170
+ val = this.internals.read();
176171
+ } finally {
176172
+ lockToken[Symbol.dispose]();
176173
+ }
176174
+ } catch (err) {
176175
+ itemToken[Symbol.dispose]();
176176
+ throw err;
176177
+ }
176178
+ if (val === null) {
176179
+ itemToken[Symbol.dispose]();
176180
+ return this.internals.isClosed() ? { ok: false, error: ERR_CLOSED } : { ok: false, error: ERR_SPURIOUS };
176181
+ }
176182
+ this.internals.slotsAvailable[INTERNAL_SEMAPHORE_CONTROLLER].release(1);
176183
+ return { ok: true, value: val };
176184
+ }
176185
+ async* [Symbol.asyncIterator]() {
176186
+ while (true) {
176187
+ const result = await this.recv();
176188
+ if (result.ok) {
176189
+ yield result.value;
176190
+ } else {
176191
+ const msg = result.error.message;
176192
+ if (msg === ERR_CLOSED.message || msg === ERR_DISPOSED_RECEIVER.message) {
176193
+ return;
176194
+ }
176195
+ throw result.error;
176196
+ }
176197
+ }
176198
+ }
176199
+ close() {
176200
+ const sender = new Sender(this.internals);
176201
+ sender.close();
176202
+ }
176203
+ [Symbol.dispose]() {
176204
+ if (this.disposed)
176205
+ return;
176206
+ this.disposed = true;
176207
+ const prevCount = Atomics.sub(this.internals.state, IDX_RX_COUNT, 1);
176208
+ if (prevCount === 1)
176209
+ this.close();
176210
+ }
176211
+ static [toDeserialized](obj) {
176212
+ return new _c2(deserialize(obj));
176213
+ }
176214
+ }
176215
+ _c2 = Receiver;
176216
+ (() => {
176217
+ register2(6, _c2);
176218
+ })();
176219
+ // node_modules/multithreading/src/lib/sync/barrier.js
176220
+ var __classPrivateFieldSet5 = function(receiver, state, value, kind, f2) {
176221
+ if (kind === "m")
176222
+ throw new TypeError("Private method is not writable");
176223
+ if (kind === "a" && !f2)
176224
+ throw new TypeError("Private accessor was defined without a setter");
176225
+ if (typeof state === "function" ? receiver !== state || !f2 : !state.has(receiver))
176226
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
176227
+ return kind === "a" ? f2.call(receiver, value) : f2 ? f2.value = value : state.set(receiver, value), value;
176228
+ };
176229
+ var __classPrivateFieldGet5 = function(receiver, state, kind, f2) {
176230
+ if (kind === "a" && !f2)
176231
+ throw new TypeError("Private accessor was defined without a getter");
176232
+ if (typeof state === "function" ? receiver !== state || !f2 : !state.has(receiver))
176233
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
176234
+ return kind === "m" ? f2 : kind === "a" ? f2.call(receiver) : f2 ? f2.value : state.get(receiver);
176235
+ };
176236
+ var _Barrier_instances;
176237
+ var _a9;
176238
+ var _Barrier_state;
176239
+ var _Barrier_lock;
176240
+ var _Barrier_unlock;
176241
+ var _Barrier_lockAsync;
176242
+ var IDX_LOCK = 0;
176243
+ var IDX_CAP2 = 1;
176244
+ var IDX_COUNT = 2;
176245
+ var IDX_GEN = 3;
176246
+ var META_SIZE2 = 4;
176247
+ var LOCK_UNLOCKED = 0;
176248
+ var LOCK_LOCKED = 1;
176249
+
176250
+ class Barrier extends Serializable {
176251
+ constructor(n3, _buffer) {
176252
+ super();
176253
+ _Barrier_instances.add(this);
176254
+ _Barrier_state.set(this, undefined);
176255
+ if (_buffer) {
176256
+ __classPrivateFieldSet5(this, _Barrier_state, new Int32Array(_buffer), "f");
176257
+ } else {
176258
+ if (n3 === undefined) {
176259
+ throw new Error("Barrier capacity must be provided");
176260
+ }
176261
+ __classPrivateFieldSet5(this, _Barrier_state, new Int32Array(new SharedArrayBuffer(META_SIZE2 * Int32Array.BYTES_PER_ELEMENT)), "f");
176262
+ __classPrivateFieldGet5(this, _Barrier_state, "f")[IDX_LOCK] = LOCK_UNLOCKED;
176263
+ __classPrivateFieldGet5(this, _Barrier_state, "f")[IDX_CAP2] = n3;
176264
+ __classPrivateFieldGet5(this, _Barrier_state, "f")[IDX_COUNT] = n3;
176265
+ __classPrivateFieldGet5(this, _Barrier_state, "f")[IDX_GEN] = 0;
176266
+ }
176267
+ }
176268
+ blockingWait() {
176269
+ __classPrivateFieldGet5(this, _Barrier_instances, "m", _Barrier_lock).call(this);
176270
+ const localGen = Atomics.load(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_GEN);
176271
+ const count = Atomics.load(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_COUNT) - 1;
176272
+ if (count === 0) {
176273
+ Atomics.store(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_COUNT, Atomics.load(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_CAP2));
176274
+ Atomics.add(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_GEN, 1);
176275
+ __classPrivateFieldGet5(this, _Barrier_instances, "m", _Barrier_unlock).call(this);
176276
+ Atomics.notify(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_GEN, Infinity);
176277
+ return { isLeader: true };
176278
+ } else {
176279
+ Atomics.store(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_COUNT, count);
176280
+ __classPrivateFieldGet5(this, _Barrier_instances, "m", _Barrier_unlock).call(this);
176281
+ while (Atomics.load(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_GEN) === localGen) {
176282
+ Atomics.wait(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_GEN, localGen);
176283
+ }
176284
+ return { isLeader: false };
176285
+ }
176286
+ }
176287
+ async wait() {
176288
+ await __classPrivateFieldGet5(this, _Barrier_instances, "m", _Barrier_lockAsync).call(this);
176289
+ const localGen = Atomics.load(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_GEN);
176290
+ const count = Atomics.load(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_COUNT) - 1;
176291
+ if (count === 0) {
176292
+ Atomics.store(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_COUNT, Atomics.load(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_CAP2));
176293
+ Atomics.add(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_GEN, 1);
176294
+ __classPrivateFieldGet5(this, _Barrier_instances, "m", _Barrier_unlock).call(this);
176295
+ Atomics.notify(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_GEN, Infinity);
176296
+ return { isLeader: true };
176297
+ } else {
176298
+ Atomics.store(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_COUNT, count);
176299
+ __classPrivateFieldGet5(this, _Barrier_instances, "m", _Barrier_unlock).call(this);
176300
+ while (Atomics.load(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_GEN) === localGen) {
176301
+ const res2 = Atomics.waitAsync(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_GEN, localGen);
176302
+ if (res2.async) {
176303
+ await res2.value;
176304
+ }
176305
+ }
176306
+ return { isLeader: false };
176307
+ }
176308
+ }
176309
+ [(_Barrier_state = new WeakMap, _Barrier_instances = new WeakSet, _Barrier_lock = function _Barrier_lock() {
176310
+ while (Atomics.compareExchange(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_LOCK, LOCK_UNLOCKED, LOCK_LOCKED) !== LOCK_UNLOCKED) {
176311
+ Atomics.wait(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_LOCK, LOCK_LOCKED);
176312
+ }
176313
+ }, _Barrier_unlock = function _Barrier_unlock() {
176314
+ if (Atomics.compareExchange(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_LOCK, LOCK_LOCKED, LOCK_UNLOCKED) !== LOCK_LOCKED) {
176315
+ throw new Error("Barrier lock state corrupted");
176316
+ }
176317
+ Atomics.notify(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_LOCK, 1);
176318
+ }, _Barrier_lockAsync = async function _Barrier_lockAsync() {
176319
+ while (Atomics.compareExchange(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_LOCK, LOCK_UNLOCKED, LOCK_LOCKED) !== LOCK_UNLOCKED) {
176320
+ const res2 = Atomics.waitAsync(__classPrivateFieldGet5(this, _Barrier_state, "f"), IDX_LOCK, LOCK_LOCKED);
176321
+ if (res2.async) {
176322
+ await res2.value;
176323
+ }
176324
+ }
176325
+ }, toSerialized)]() {
176326
+ return {
176327
+ value: __classPrivateFieldGet5(this, _Barrier_state, "f").buffer,
176328
+ transfer: []
176329
+ };
176330
+ }
176331
+ static [toDeserialized](buffer) {
176332
+ return new _a9(undefined, buffer);
176333
+ }
176334
+ }
176335
+ _a9 = Barrier;
176336
+ (() => {
176337
+ register2(8, _a9);
176338
+ })();
176339
+ // node_modules/multithreading/src/lib/lib.js
176340
+ var globalPool = null;
176341
+ var globalConfig = { maxWorkers: navigator.hardwareConcurrency || 4 };
176342
+ var globalFunctionRegistry = new WeakMap;
176343
+ function getPool() {
176344
+ if (!globalPool) {
176345
+ globalPool = new WorkerPool(globalConfig.maxWorkers);
176346
+ }
176347
+ return globalPool;
176348
+ }
176349
+ var moveTag = Symbol("Thread.move");
176350
+ function move(...args) {
176351
+ checkMoveArgs(args);
176352
+ return Object.defineProperty(args, moveTag, {
176353
+ enumerable: false,
176354
+ configurable: false,
176355
+ writable: false,
176356
+ value: true
176357
+ });
176358
+ }
176359
+ function spawn(arg1, arg2) {
176360
+ const pool = getPool();
176361
+ const { resolve: resolve12, reject, promise } = Promise.withResolvers();
176362
+ let args = [];
176363
+ let fn3;
176364
+ if (arg1 && Object.prototype.hasOwnProperty.call(arg1, moveTag)) {
176365
+ args = arg1;
176366
+ fn3 = arg2;
176367
+ } else {
176368
+ fn3 = arg1;
176369
+ }
176370
+ let meta = globalFunctionRegistry.get(fn3);
176371
+ if (!meta) {
176372
+ const id = Math.random().toString(36).slice(2);
176373
+ const callerLocation = getCallerLocation();
176374
+ try {
176375
+ const code = patchDynamicImports("export default " + fn3.toString(), callerLocation.filePath);
176376
+ meta = { id, code };
176377
+ globalFunctionRegistry.set(fn3, meta);
176378
+ } catch (err) {
176379
+ console.error(err);
176380
+ return {
176381
+ join: () => Promise.resolve({
176382
+ ok: false,
176383
+ error: err instanceof Error ? err : new Error("Failed to compile function")
176384
+ }),
176385
+ abort: () => {}
176386
+ };
176387
+ }
176388
+ }
176389
+ (async () => {
176390
+ try {
176391
+ const task = {
176392
+ fnId: meta.id,
176393
+ code: meta.code,
176394
+ args
176395
+ };
176396
+ const val = await pool.submit(task);
176397
+ resolve12({ ok: true, value: val });
176398
+ } catch (err) {
176399
+ resolve12({ ok: false, error: err });
176400
+ }
176401
+ })();
176402
+ return {
176403
+ join: () => promise,
176404
+ abort: () => reject(new Error("Task aborted"))
176405
+ };
176406
+ }
176407
+ var isWorker = typeof globalThis.WorkerGlobalScope !== "undefined" && self instanceof globalThis.WorkerGlobalScope;
176408
+
176409
+ // node_modules/multithreading/src/node/lib.js
176410
+ workerOverride(() => new Worker(new URL("./worker.js", import.meta.url), { type: "module" }));
176411
+
173682
176412
  // cli/build/register.ts
173683
176413
  var normalizeRelativePath = (projectDir, targetPath) => path47.relative(projectDir, targetPath).split(path47.sep).join("/");
173684
176414
  var registerBuild = (program3) => {
173685
- program3.command("build").description("Run tscircuit eval and output circuit json").argument("[file]", "Path to the entry file").option("--ci", "Run install and optional prebuild/build commands (or default CI build)").option("--ignore-errors", "Do not exit with code 1 on errors").option("--ignore-warnings", "Do not log warnings").option("--disable-pcb", "Disable PCB outputs").option("--disable-parts-engine", "Disable the parts engine").option("--site", "Generate a static site in the dist directory").option("--transpile", "Transpile the entry file to JavaScript").option("--preview-images", "Generate preview images in the dist directory").option("--all-images", "Generate preview images for every successful build output").option("--kicad", "Generate KiCad project directories for each successful build output").option("--preview-gltf", "Generate a GLTF file from the preview entrypoint").option("--kicad-pcm", "Generate KiCad PCM (Plugin and Content Manager) assets in dist/pcm").option("--use-cdn-javascript", "Use CDN-hosted JavaScript instead of bundled standalone file for --site").action(async (file, options) => {
176415
+ program3.command("build").description("Run tscircuit eval and output circuit json").argument("[file]", "Path to the entry file").option("--ci", "Run install and optional prebuild/build commands (or default CI build)").option("--ignore-errors", "Do not exit with code 1 on errors").option("--ignore-warnings", "Do not log warnings").option("--disable-pcb", "Disable PCB outputs").option("--disable-parts-engine", "Disable the parts engine").option("--site", "Generate a static site in the dist directory").option("--transpile", "Transpile the entry file to JavaScript").option("--preview-images", "Generate preview images in the dist directory").option("--all-images", "Generate preview images for every successful build output").option("--kicad", "Generate KiCad project directories for each successful build output").option("--preview-gltf", "Generate a GLTF file from the preview entrypoint").option("--kicad-pcm", "Generate KiCad PCM (Plugin and Content Manager) assets in dist/pcm").option("--use-cdn-javascript", "Use CDN-hosted JavaScript instead of bundled standalone file for --site").option("--concurrency <number>", "Number of files to build in parallel (default: 1)", "1").action(async (file, options) => {
173686
176416
  try {
173687
176417
  const {
173688
176418
  projectDir,
@@ -173715,22 +176445,25 @@ var registerBuild = (program3) => {
173715
176445
  })();
173716
176446
  const distDir = path47.join(projectDir, "dist");
173717
176447
  fs47.mkdirSync(distDir, { recursive: true });
173718
- console.log(`Building ${circuitFiles.length} file(s)...`);
176448
+ const concurrencyValue = Math.max(1, Number.parseInt(resolvedOptions?.concurrency || "1", 10));
176449
+ if (concurrencyValue > 1) {
176450
+ console.log(`Building ${circuitFiles.length} file(s) with concurrency ${concurrencyValue}...`);
176451
+ } else {
176452
+ console.log(`Building ${circuitFiles.length} file(s)...`);
176453
+ }
173719
176454
  let hasErrors = false;
173720
176455
  const staticFileReferences = [];
173721
176456
  const builtFiles = [];
173722
176457
  const kicadProjects = [];
173723
176458
  const shouldGenerateKicad = resolvedOptions?.kicad || resolvedOptions?.kicadFootprintLibrary;
173724
- for (const filePath of circuitFiles) {
176459
+ const buildOptions = {
176460
+ ignoreErrors: resolvedOptions?.ignoreErrors,
176461
+ ignoreWarnings: resolvedOptions?.ignoreWarnings,
176462
+ platformConfig: platformConfig2
176463
+ };
176464
+ const processBuildResult = async (filePath, outputPath, buildOutcome) => {
173725
176465
  const relative10 = path47.relative(projectDir, filePath);
173726
- console.log(`Building ${relative10}...`);
173727
176466
  const outputDirName = relative10.replace(/(\.board|\.circuit)?\.tsx$/, "");
173728
- const outputPath = path47.join(distDir, outputDirName, "circuit.json");
173729
- const buildOutcome = await buildFile(filePath, outputPath, projectDir, {
173730
- ignoreErrors: resolvedOptions?.ignoreErrors,
173731
- ignoreWarnings: resolvedOptions?.ignoreWarnings,
173732
- platformConfig: platformConfig2
173733
- });
173734
176467
  builtFiles.push({
173735
176468
  sourcePath: filePath,
173736
176469
  outputPath,
@@ -173761,6 +176494,77 @@ var registerBuild = (program3) => {
173761
176494
  sourcePath: filePath
173762
176495
  });
173763
176496
  }
176497
+ };
176498
+ const buildSequentially = async () => {
176499
+ for (const filePath of circuitFiles) {
176500
+ const relative10 = path47.relative(projectDir, filePath);
176501
+ console.log(`Building ${relative10}...`);
176502
+ const outputDirName = relative10.replace(/(\.board|\.circuit)?\.tsx$/, "");
176503
+ const outputPath = path47.join(distDir, outputDirName, "circuit.json");
176504
+ const buildOutcome = await buildFile(filePath, outputPath, projectDir, buildOptions);
176505
+ await processBuildResult(filePath, outputPath, buildOutcome);
176506
+ }
176507
+ };
176508
+ const buildWithMultithreading = async () => {
176509
+ const buildTasks = circuitFiles.map((filePath) => {
176510
+ const relative10 = path47.relative(projectDir, filePath);
176511
+ const outputDirName = relative10.replace(/(\.board|\.circuit)?\.tsx$/, "");
176512
+ const outputPath = path47.join(distDir, outputDirName, "circuit.json");
176513
+ return {
176514
+ filePath,
176515
+ outputPath,
176516
+ projectDir,
176517
+ options: buildOptions
176518
+ };
176519
+ });
176520
+ const handles = buildTasks.map((task) => spawn(move(task), async (i3) => {
176521
+ const { registerStaticAssetLoaders: registerStaticAssetLoaders2 } = await Promise.resolve().then(() => (init_register_static_asset_loaders(), exports_register_static_asset_loaders));
176522
+ registerStaticAssetLoaders2();
176523
+ const { buildFile: b3 } = await Promise.resolve().then(() => (init_build_file(), exports_build_file));
176524
+ const r4 = await b3(i3.filePath, i3.outputPath, i3.projectDir, i3.options);
176525
+ return {
176526
+ filePath: i3.filePath,
176527
+ outputPath: i3.outputPath,
176528
+ ok: r4.ok,
176529
+ circuitJson: r4.circuitJson,
176530
+ logs: [],
176531
+ errors: []
176532
+ };
176533
+ }));
176534
+ const results = await Promise.all(handles.map((h3) => h3.join()));
176535
+ for (let i3 = 0;i3 < results.length; i3++) {
176536
+ const result = results[i3];
176537
+ const task = buildTasks[i3];
176538
+ const relative10 = path47.relative(projectDir, task.filePath);
176539
+ if (!result.ok) {
176540
+ console.error(kleur_default.red(`Failed to build ${relative10}: ${result.error}`));
176541
+ await processBuildResult(task.filePath, task.outputPath, {
176542
+ ok: false
176543
+ });
176544
+ continue;
176545
+ }
176546
+ const buildResult = result.value;
176547
+ console.log(`[${relative10}]`);
176548
+ if (buildResult.logs.length > 0) {
176549
+ for (const log of buildResult.logs) {
176550
+ console.log(` ${log}`);
176551
+ }
176552
+ }
176553
+ if (buildResult.errors.length > 0) {
176554
+ for (const err of buildResult.errors) {
176555
+ console.error(kleur_default.red(` ${err}`));
176556
+ }
176557
+ }
176558
+ await processBuildResult(task.filePath, task.outputPath, {
176559
+ ok: buildResult.ok,
176560
+ circuitJson: buildResult.circuitJson
176561
+ });
176562
+ }
176563
+ };
176564
+ if (concurrencyValue > 1) {
176565
+ await buildWithMultithreading();
176566
+ } else {
176567
+ await buildSequentially();
173764
176568
  }
173765
176569
  if (hasErrors && !resolvedOptions?.ignoreErrors) {
173766
176570
  process.exit(1);
@@ -173909,6 +176713,9 @@ var registerBuild = (program3) => {
173909
176713
  };
173910
176714
 
173911
176715
  // lib/shared/snapshot-project.ts
176716
+ init_kleur();
176717
+ init_generate_circuit_json();
176718
+ init_get_complete_platform_config();
173912
176719
  import fs49 from "node:fs";
173913
176720
  import path48 from "node:path";
173914
176721
  import looksSame2 from "looks-same";
@@ -174221,6 +177028,7 @@ var registerSetup = (program3) => {
174221
177028
  };
174222
177029
 
174223
177030
  // cli/auth/setup-npmrc/register.ts
177031
+ init_kleur();
174224
177032
  function registerAuthSetupNpmrc(program3) {
174225
177033
  program3.commands.find((c3) => c3.name() === "auth").command("setup-npmrc").description("Configure your global .npmrc file with authentication for tscircuit private packages").action(async () => {
174226
177034
  const sessionToken = getSessionToken();
@@ -174233,6 +177041,7 @@ function registerAuthSetupNpmrc(program3) {
174233
177041
  }
174234
177042
 
174235
177043
  // cli/convert/register.ts
177044
+ init_kleur();
174236
177045
  import fs51 from "node:fs/promises";
174237
177046
  import path50 from "node:path";
174238
177047
  import { parseKicadModToCircuitJson } from "kicad-component-converter";
@@ -174372,6 +177181,9 @@ var registerConvert = (program3) => {
174372
177181
  });
174373
177182
  };
174374
177183
 
177184
+ // cli/simulate/register.ts
177185
+ init_generate_circuit_json();
177186
+
174375
177187
  // lib/shared/result-to-table.ts
174376
177188
  var formatNumber = (n3) => {
174377
177189
  return n3.toExponential(6);
@@ -174514,37 +177326,8 @@ var registerTranspile = (program3) => {
174514
177326
  });
174515
177327
  };
174516
177328
 
174517
- // lib/shared/register-static-asset-loaders.ts
174518
- var TEXT_STATIC_ASSET_EXTENSIONS = [
174519
- ".gltf",
174520
- ".step",
174521
- ".kicad_mod",
174522
- ".kicad_pcb",
174523
- ".kicad_pro",
174524
- ".kicad_sch"
174525
- ];
174526
- var staticAssetFilter = new RegExp(`(${TEXT_STATIC_ASSET_EXTENSIONS.map((ext) => ext.replace(".", "\\.")).join("|")})$`, "i");
174527
- var registered = false;
174528
- var registerStaticAssetLoaders = () => {
174529
- if (registered)
174530
- return;
174531
- registered = true;
174532
- if (typeof Bun !== "undefined" && typeof Bun.plugin === "function") {
174533
- Bun.plugin({
174534
- name: "tsci-static-assets",
174535
- setup(build) {
174536
- build.onLoad({ filter: staticAssetFilter }, (args) => {
174537
- return {
174538
- contents: `export default ${JSON.stringify(args.path)};`,
174539
- loader: "js"
174540
- };
174541
- });
174542
- }
174543
- });
174544
- }
174545
- };
174546
-
174547
177329
  // cli/main.ts
177330
+ init_register_static_asset_loaders();
174548
177331
  var program2 = new Command;
174549
177332
  program2.name("tsci").description("CLI for developing tscircuit packages");
174550
177333
  registerStaticAssetLoaders();