isomorfeus-asset-manager 0.15.1 → 0.15.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,22 +1,4 @@
1
1
  var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
2
  var __export = (target, all) => {
21
3
  for (var name in all)
22
4
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -204,6 +186,8 @@ function writeUInt32LE(buffer, value, offset) {
204
186
  }
205
187
 
206
188
  // lib/shared/common.ts
189
+ var buildLogLevelDefault = "warning";
190
+ var transformLogLevelDefault = "silent";
207
191
  function validateTarget(target) {
208
192
  target += "";
209
193
  if (target.indexOf(",") >= 0)
@@ -304,6 +288,7 @@ function pushCommonFlags(flags, options, keys) {
304
288
  let jsxFragment = getFlag(options, keys, "jsxFragment", mustBeString);
305
289
  let jsxImportSource = getFlag(options, keys, "jsxImportSource", mustBeString);
306
290
  let jsxDev = getFlag(options, keys, "jsxDev", mustBeBoolean);
291
+ let jsxSideEffects = getFlag(options, keys, "jsxSideEffects", mustBeBoolean);
307
292
  let define = getFlag(options, keys, "define", mustBeObject);
308
293
  let logOverride = getFlag(options, keys, "logOverride", mustBeObject);
309
294
  let supported = getFlag(options, keys, "supported", mustBeObject);
@@ -361,6 +346,8 @@ function pushCommonFlags(flags, options, keys) {
361
346
  flags.push(`--jsx-import-source=${jsxImportSource}`);
362
347
  if (jsxDev)
363
348
  flags.push(`--jsx-dev`);
349
+ if (jsxSideEffects)
350
+ flags.push(`--jsx-side-effects`);
364
351
  if (define) {
365
352
  for (let key in define) {
366
353
  if (key.indexOf("=") >= 0)
@@ -614,11 +601,9 @@ function flagsForTransformOptions(callName, options, isTTY, logLevelDefault) {
614
601
  };
615
602
  }
616
603
  function createChannel(streamIn) {
617
- let responseCallbacks = /* @__PURE__ */ new Map();
618
- let pluginCallbacks = /* @__PURE__ */ new Map();
619
- let watchCallbacks = /* @__PURE__ */ new Map();
620
- let serveCallbacks = /* @__PURE__ */ new Map();
621
- let closeData = null;
604
+ const requestCallbacksByKey = {};
605
+ const closeData = { didClose: false, reason: "" };
606
+ let responseCallbacks = {};
622
607
  let nextRequestID = 0;
623
608
  let nextBuildKey = 0;
624
609
  let stdout = new Uint8Array(16 * 1024);
@@ -648,105 +633,53 @@ function createChannel(streamIn) {
648
633
  }
649
634
  };
650
635
  let afterClose = (error) => {
651
- closeData = { reason: error ? ": " + (error.message || error) : "" };
636
+ closeData.didClose = true;
637
+ if (error)
638
+ closeData.reason = ": " + (error.message || error);
652
639
  const text = "The service was stopped" + closeData.reason;
653
- for (let callback of responseCallbacks.values()) {
654
- callback(text, null);
655
- }
656
- responseCallbacks.clear();
657
- for (let callbacks of serveCallbacks.values()) {
658
- callbacks.onWait(text);
659
- }
660
- serveCallbacks.clear();
661
- for (let callback of watchCallbacks.values()) {
662
- try {
663
- callback(new Error(text), null);
664
- } catch (e) {
665
- console.error(e);
666
- }
640
+ for (let id in responseCallbacks) {
641
+ responseCallbacks[id](text, null);
667
642
  }
668
- watchCallbacks.clear();
643
+ responseCallbacks = {};
669
644
  };
670
645
  let sendRequest = (refs, value, callback) => {
671
- if (closeData)
646
+ if (closeData.didClose)
672
647
  return callback("The service is no longer running" + closeData.reason, null);
673
648
  let id = nextRequestID++;
674
- responseCallbacks.set(id, (error, response) => {
649
+ responseCallbacks[id] = (error, response) => {
675
650
  try {
676
651
  callback(error, response);
677
652
  } finally {
678
653
  if (refs)
679
654
  refs.unref();
680
655
  }
681
- });
656
+ };
682
657
  if (refs)
683
658
  refs.ref();
684
659
  streamIn.writeToStdin(encodePacket({ id, isRequest: true, value }));
685
660
  };
686
661
  let sendResponse = (id, value) => {
687
- if (closeData)
662
+ if (closeData.didClose)
688
663
  throw new Error("The service is no longer running" + closeData.reason);
689
664
  streamIn.writeToStdin(encodePacket({ id, isRequest: false, value }));
690
665
  };
691
666
  let handleRequest = async (id, request) => {
692
667
  try {
693
- switch (request.command) {
694
- case "ping": {
695
- sendResponse(id, {});
696
- break;
697
- }
698
- case "on-start": {
699
- let callback = pluginCallbacks.get(request.key);
700
- if (!callback)
701
- sendResponse(id, {});
702
- else
703
- sendResponse(id, await callback(request));
704
- break;
705
- }
706
- case "on-resolve": {
707
- let callback = pluginCallbacks.get(request.key);
708
- if (!callback)
709
- sendResponse(id, {});
710
- else
711
- sendResponse(id, await callback(request));
712
- break;
713
- }
714
- case "on-load": {
715
- let callback = pluginCallbacks.get(request.key);
716
- if (!callback)
717
- sendResponse(id, {});
718
- else
719
- sendResponse(id, await callback(request));
720
- break;
721
- }
722
- case "serve-request": {
723
- let callbacks = serveCallbacks.get(request.key);
724
- if (callbacks && callbacks.onRequest)
725
- callbacks.onRequest(request.args);
726
- sendResponse(id, {});
727
- break;
728
- }
729
- case "serve-wait": {
730
- let callbacks = serveCallbacks.get(request.key);
731
- if (callbacks)
732
- callbacks.onWait(request.error);
733
- sendResponse(id, {});
734
- break;
735
- }
736
- case "watch-rebuild": {
737
- let callback = watchCallbacks.get(request.key);
738
- try {
739
- if (callback)
740
- callback(null, request.args);
741
- } catch (err) {
742
- console.error(err);
668
+ if (request.command === "ping") {
669
+ sendResponse(id, {});
670
+ return;
671
+ }
672
+ if (typeof request.key === "number") {
673
+ const requestCallbacks = requestCallbacksByKey[request.key];
674
+ if (requestCallbacks) {
675
+ const callback = requestCallbacks[request.command];
676
+ if (callback) {
677
+ await callback(id, request);
678
+ return;
743
679
  }
744
- sendResponse(id, {});
745
- break;
746
680
  }
747
- default:
748
- throw new Error(`Invalid command: ` + request.command);
749
681
  }
682
+ throw new Error(`Invalid command: ` + request.command);
750
683
  } catch (e) {
751
684
  sendResponse(id, { errors: [extractErrorMessageV8(e, streamIn, null, void 0, "")] });
752
685
  }
@@ -756,8 +689,8 @@ function createChannel(streamIn) {
756
689
  if (isFirstPacket) {
757
690
  isFirstPacket = false;
758
691
  let binaryVersion = String.fromCharCode(...bytes);
759
- if (binaryVersion !== "0.15.4") {
760
- throw new Error(`Cannot start service: Host version "${"0.15.4"}" does not match binary version ${JSON.stringify(binaryVersion)}`);
692
+ if (binaryVersion !== "0.15.8") {
693
+ throw new Error(`Cannot start service: Host version "${"0.15.8"}" does not match binary version ${JSON.stringify(binaryVersion)}`);
761
694
  }
762
695
  return;
763
696
  }
@@ -765,450 +698,259 @@ function createChannel(streamIn) {
765
698
  if (packet.isRequest) {
766
699
  handleRequest(packet.id, packet.value);
767
700
  } else {
768
- let callback = responseCallbacks.get(packet.id);
769
- responseCallbacks.delete(packet.id);
701
+ let callback = responseCallbacks[packet.id];
702
+ delete responseCallbacks[packet.id];
770
703
  if (packet.value.error)
771
704
  callback(packet.value.error, {});
772
705
  else
773
706
  callback(null, packet.value);
774
707
  }
775
708
  };
776
- let handlePlugins = async (initialOptions, plugins, buildKey, stash, refs) => {
777
- let onStartCallbacks = [];
778
- let onEndCallbacks = [];
779
- let onResolveCallbacks = {};
780
- let onLoadCallbacks = {};
781
- let nextCallbackID = 0;
782
- let i = 0;
783
- let requestPlugins = [];
784
- let isSetupDone = false;
785
- plugins = [...plugins];
786
- for (let item of plugins) {
787
- let keys = {};
788
- if (typeof item !== "object")
789
- throw new Error(`Plugin at index ${i} must be an object`);
790
- const name = getFlag(item, keys, "name", mustBeString);
791
- if (typeof name !== "string" || name === "")
792
- throw new Error(`Plugin at index ${i} is missing a name`);
709
+ let buildOrServe = ({ callName, refs, serveOptions, options, isTTY, defaultWD, callback }) => {
710
+ let refCount = 0;
711
+ const buildKey = nextBuildKey++;
712
+ const requestCallbacks = {};
713
+ const buildRefs = {
714
+ ref() {
715
+ if (++refCount === 1) {
716
+ if (refs)
717
+ refs.ref();
718
+ }
719
+ },
720
+ unref() {
721
+ if (--refCount === 0) {
722
+ delete requestCallbacksByKey[buildKey];
723
+ if (refs)
724
+ refs.unref();
725
+ }
726
+ }
727
+ };
728
+ requestCallbacksByKey[buildKey] = requestCallbacks;
729
+ buildRefs.ref();
730
+ buildOrServeImpl(
731
+ callName,
732
+ buildKey,
733
+ sendRequest,
734
+ sendResponse,
735
+ buildRefs,
736
+ streamIn,
737
+ requestCallbacks,
738
+ options,
739
+ serveOptions,
740
+ isTTY,
741
+ defaultWD,
742
+ closeData,
743
+ (err, res) => {
744
+ try {
745
+ callback(err, res);
746
+ } finally {
747
+ buildRefs.unref();
748
+ }
749
+ }
750
+ );
751
+ };
752
+ let transform2 = ({ callName, refs, input, options, isTTY, fs, callback }) => {
753
+ const details = createObjectStash();
754
+ let start = (inputPath) => {
793
755
  try {
794
- let setup = getFlag(item, keys, "setup", mustBeFunction);
795
- if (typeof setup !== "function")
796
- throw new Error(`Plugin is missing a setup function`);
797
- checkForInvalidFlags(item, keys, `on plugin ${JSON.stringify(name)}`);
798
- let plugin = {
799
- name,
800
- onResolve: [],
801
- onLoad: []
802
- };
803
- i++;
804
- let resolve = (path, options = {}) => {
805
- if (!isSetupDone)
806
- throw new Error('Cannot call "resolve" before plugin setup has completed');
807
- if (typeof path !== "string")
808
- throw new Error(`The path to resolve must be a string`);
809
- let keys2 = /* @__PURE__ */ Object.create(null);
810
- let pluginName = getFlag(options, keys2, "pluginName", mustBeString);
811
- let importer = getFlag(options, keys2, "importer", mustBeString);
812
- let namespace = getFlag(options, keys2, "namespace", mustBeString);
813
- let resolveDir = getFlag(options, keys2, "resolveDir", mustBeString);
814
- let kind = getFlag(options, keys2, "kind", mustBeString);
815
- let pluginData = getFlag(options, keys2, "pluginData", canBeAnything);
816
- checkForInvalidFlags(options, keys2, "in resolve() call");
817
- return new Promise((resolve2, reject) => {
818
- const request = {
819
- command: "resolve",
820
- path,
821
- key: buildKey,
822
- pluginName: name
823
- };
824
- if (pluginName != null)
825
- request.pluginName = pluginName;
826
- if (importer != null)
827
- request.importer = importer;
828
- if (namespace != null)
829
- request.namespace = namespace;
830
- if (resolveDir != null)
831
- request.resolveDir = resolveDir;
832
- if (kind != null)
833
- request.kind = kind;
834
- if (pluginData != null)
835
- request.pluginData = stash.store(pluginData);
836
- sendRequest(refs, request, (error, response) => {
837
- if (error !== null)
838
- reject(new Error(error));
839
- else
840
- resolve2({
841
- errors: replaceDetailsInMessages(response.errors, stash),
842
- warnings: replaceDetailsInMessages(response.warnings, stash),
843
- path: response.path,
844
- external: response.external,
845
- sideEffects: response.sideEffects,
846
- namespace: response.namespace,
847
- suffix: response.suffix,
848
- pluginData: stash.load(response.pluginData)
849
- });
850
- });
851
- });
756
+ if (typeof input !== "string" && !(input instanceof Uint8Array))
757
+ throw new Error('The input to "transform" must be a string or a Uint8Array');
758
+ let {
759
+ flags,
760
+ mangleCache
761
+ } = flagsForTransformOptions(callName, options, isTTY, transformLogLevelDefault);
762
+ let request = {
763
+ command: "transform",
764
+ flags,
765
+ inputFS: inputPath !== null,
766
+ input: inputPath !== null ? encodeUTF8(inputPath) : typeof input === "string" ? encodeUTF8(input) : input
852
767
  };
853
- let promise = setup({
854
- initialOptions,
855
- resolve,
856
- onStart(callback2) {
857
- let registeredText = `This error came from the "onStart" callback registered here:`;
858
- let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onStart");
859
- onStartCallbacks.push({ name, callback: callback2, note: registeredNote });
860
- },
861
- onEnd(callback2) {
862
- let registeredText = `This error came from the "onEnd" callback registered here:`;
863
- let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onEnd");
864
- onEndCallbacks.push({ name, callback: callback2, note: registeredNote });
865
- },
866
- onResolve(options, callback2) {
867
- let registeredText = `This error came from the "onResolve" callback registered here:`;
868
- let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onResolve");
869
- let keys2 = {};
870
- let filter = getFlag(options, keys2, "filter", mustBeRegExp);
871
- let namespace = getFlag(options, keys2, "namespace", mustBeString);
872
- checkForInvalidFlags(options, keys2, `in onResolve() call for plugin ${JSON.stringify(name)}`);
873
- if (filter == null)
874
- throw new Error(`onResolve() call is missing a filter`);
875
- let id = nextCallbackID++;
876
- onResolveCallbacks[id] = { name, callback: callback2, note: registeredNote };
877
- plugin.onResolve.push({ id, filter: filter.source, namespace: namespace || "" });
878
- },
879
- onLoad(options, callback2) {
880
- let registeredText = `This error came from the "onLoad" callback registered here:`;
881
- let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onLoad");
882
- let keys2 = {};
883
- let filter = getFlag(options, keys2, "filter", mustBeRegExp);
884
- let namespace = getFlag(options, keys2, "namespace", mustBeString);
885
- checkForInvalidFlags(options, keys2, `in onLoad() call for plugin ${JSON.stringify(name)}`);
886
- if (filter == null)
887
- throw new Error(`onLoad() call is missing a filter`);
888
- let id = nextCallbackID++;
889
- onLoadCallbacks[id] = { name, callback: callback2, note: registeredNote };
890
- plugin.onLoad.push({ id, filter: filter.source, namespace: namespace || "" });
891
- },
892
- esbuild: streamIn.esbuild
893
- });
894
- if (promise)
895
- await promise;
896
- requestPlugins.push(plugin);
897
- } catch (e) {
898
- return { ok: false, error: e, pluginName: name };
899
- }
900
- }
901
- const callback = async (request) => {
902
- switch (request.command) {
903
- case "on-start": {
904
- let response = { errors: [], warnings: [] };
905
- await Promise.all(onStartCallbacks.map(async ({ name, callback: callback2, note }) => {
906
- try {
907
- let result = await callback2();
908
- if (result != null) {
909
- if (typeof result !== "object")
910
- throw new Error(`Expected onStart() callback in plugin ${JSON.stringify(name)} to return an object`);
911
- let keys = {};
912
- let errors = getFlag(result, keys, "errors", mustBeArray);
913
- let warnings = getFlag(result, keys, "warnings", mustBeArray);
914
- checkForInvalidFlags(result, keys, `from onStart() callback in plugin ${JSON.stringify(name)}`);
915
- if (errors != null)
916
- response.errors.push(...sanitizeMessages(errors, "errors", stash, name));
917
- if (warnings != null)
918
- response.warnings.push(...sanitizeMessages(warnings, "warnings", stash, name));
919
- }
920
- } catch (e) {
921
- response.errors.push(extractErrorMessageV8(e, streamIn, stash, note && note(), name));
768
+ if (mangleCache)
769
+ request.mangleCache = mangleCache;
770
+ sendRequest(refs, request, (error, response) => {
771
+ if (error)
772
+ return callback(new Error(error), null);
773
+ let errors = replaceDetailsInMessages(response.errors, details);
774
+ let warnings = replaceDetailsInMessages(response.warnings, details);
775
+ let outstanding = 1;
776
+ let next = () => {
777
+ if (--outstanding === 0) {
778
+ let result = { warnings, code: response.code, map: response.map };
779
+ if (response.mangleCache)
780
+ result.mangleCache = response == null ? void 0 : response.mangleCache;
781
+ callback(null, result);
922
782
  }
923
- }));
924
- return response;
925
- }
926
- case "on-resolve": {
927
- let response = {}, name = "", callback2, note;
928
- for (let id of request.ids) {
929
- try {
930
- ({ name, callback: callback2, note } = onResolveCallbacks[id]);
931
- let result = await callback2({
932
- path: request.path,
933
- importer: request.importer,
934
- namespace: request.namespace,
935
- resolveDir: request.resolveDir,
936
- kind: request.kind,
937
- pluginData: stash.load(request.pluginData)
938
- });
939
- if (result != null) {
940
- if (typeof result !== "object")
941
- throw new Error(`Expected onResolve() callback in plugin ${JSON.stringify(name)} to return an object`);
942
- let keys = {};
943
- let pluginName = getFlag(result, keys, "pluginName", mustBeString);
944
- let path = getFlag(result, keys, "path", mustBeString);
945
- let namespace = getFlag(result, keys, "namespace", mustBeString);
946
- let suffix = getFlag(result, keys, "suffix", mustBeString);
947
- let external = getFlag(result, keys, "external", mustBeBoolean);
948
- let sideEffects = getFlag(result, keys, "sideEffects", mustBeBoolean);
949
- let pluginData = getFlag(result, keys, "pluginData", canBeAnything);
950
- let errors = getFlag(result, keys, "errors", mustBeArray);
951
- let warnings = getFlag(result, keys, "warnings", mustBeArray);
952
- let watchFiles = getFlag(result, keys, "watchFiles", mustBeArray);
953
- let watchDirs = getFlag(result, keys, "watchDirs", mustBeArray);
954
- checkForInvalidFlags(result, keys, `from onResolve() callback in plugin ${JSON.stringify(name)}`);
955
- response.id = id;
956
- if (pluginName != null)
957
- response.pluginName = pluginName;
958
- if (path != null)
959
- response.path = path;
960
- if (namespace != null)
961
- response.namespace = namespace;
962
- if (suffix != null)
963
- response.suffix = suffix;
964
- if (external != null)
965
- response.external = external;
966
- if (sideEffects != null)
967
- response.sideEffects = sideEffects;
968
- if (pluginData != null)
969
- response.pluginData = stash.store(pluginData);
970
- if (errors != null)
971
- response.errors = sanitizeMessages(errors, "errors", stash, name);
972
- if (warnings != null)
973
- response.warnings = sanitizeMessages(warnings, "warnings", stash, name);
974
- if (watchFiles != null)
975
- response.watchFiles = sanitizeStringArray(watchFiles, "watchFiles");
976
- if (watchDirs != null)
977
- response.watchDirs = sanitizeStringArray(watchDirs, "watchDirs");
978
- break;
783
+ };
784
+ if (errors.length > 0)
785
+ return callback(failureErrorWithLog("Transform failed", errors, warnings), null);
786
+ if (response.codeFS) {
787
+ outstanding++;
788
+ fs.readFile(response.code, (err, contents) => {
789
+ if (err !== null) {
790
+ callback(err, null);
791
+ } else {
792
+ response.code = contents;
793
+ next();
979
794
  }
980
- } catch (e) {
981
- return { id, errors: [extractErrorMessageV8(e, streamIn, stash, note && note(), name)] };
982
- }
795
+ });
983
796
  }
984
- return response;
985
- }
986
- case "on-load": {
987
- let response = {}, name = "", callback2, note;
988
- for (let id of request.ids) {
989
- try {
990
- ({ name, callback: callback2, note } = onLoadCallbacks[id]);
991
- let result = await callback2({
992
- path: request.path,
993
- namespace: request.namespace,
994
- suffix: request.suffix,
995
- pluginData: stash.load(request.pluginData)
996
- });
997
- if (result != null) {
998
- if (typeof result !== "object")
999
- throw new Error(`Expected onLoad() callback in plugin ${JSON.stringify(name)} to return an object`);
1000
- let keys = {};
1001
- let pluginName = getFlag(result, keys, "pluginName", mustBeString);
1002
- let contents = getFlag(result, keys, "contents", mustBeStringOrUint8Array);
1003
- let resolveDir = getFlag(result, keys, "resolveDir", mustBeString);
1004
- let pluginData = getFlag(result, keys, "pluginData", canBeAnything);
1005
- let loader = getFlag(result, keys, "loader", mustBeString);
1006
- let errors = getFlag(result, keys, "errors", mustBeArray);
1007
- let warnings = getFlag(result, keys, "warnings", mustBeArray);
1008
- let watchFiles = getFlag(result, keys, "watchFiles", mustBeArray);
1009
- let watchDirs = getFlag(result, keys, "watchDirs", mustBeArray);
1010
- checkForInvalidFlags(result, keys, `from onLoad() callback in plugin ${JSON.stringify(name)}`);
1011
- response.id = id;
1012
- if (pluginName != null)
1013
- response.pluginName = pluginName;
1014
- if (contents instanceof Uint8Array)
1015
- response.contents = contents;
1016
- else if (contents != null)
1017
- response.contents = encodeUTF8(contents);
1018
- if (resolveDir != null)
1019
- response.resolveDir = resolveDir;
1020
- if (pluginData != null)
1021
- response.pluginData = stash.store(pluginData);
1022
- if (loader != null)
1023
- response.loader = loader;
1024
- if (errors != null)
1025
- response.errors = sanitizeMessages(errors, "errors", stash, name);
1026
- if (warnings != null)
1027
- response.warnings = sanitizeMessages(warnings, "warnings", stash, name);
1028
- if (watchFiles != null)
1029
- response.watchFiles = sanitizeStringArray(watchFiles, "watchFiles");
1030
- if (watchDirs != null)
1031
- response.watchDirs = sanitizeStringArray(watchDirs, "watchDirs");
1032
- break;
797
+ if (response.mapFS) {
798
+ outstanding++;
799
+ fs.readFile(response.map, (err, contents) => {
800
+ if (err !== null) {
801
+ callback(err, null);
802
+ } else {
803
+ response.map = contents;
804
+ next();
1033
805
  }
1034
- } catch (e) {
1035
- return { id, errors: [extractErrorMessageV8(e, streamIn, stash, note && note(), name)] };
1036
- }
806
+ });
1037
807
  }
1038
- return response;
808
+ next();
809
+ });
810
+ } catch (e) {
811
+ let flags = [];
812
+ try {
813
+ pushLogFlags(flags, options, {}, isTTY, transformLogLevelDefault);
814
+ } catch (e2) {
1039
815
  }
1040
- default:
1041
- throw new Error(`Invalid command: ` + request.command);
816
+ const error = extractErrorMessageV8(e, streamIn, details, void 0, "");
817
+ sendRequest(refs, { command: "error", flags, error }, () => {
818
+ error.detail = details.load(error.detail);
819
+ callback(failureErrorWithLog("Transform failed", [error], []), null);
820
+ });
1042
821
  }
1043
822
  };
1044
- let runOnEndCallbacks = (result, logPluginError, done) => done();
1045
- if (onEndCallbacks.length > 0) {
1046
- runOnEndCallbacks = (result, logPluginError, done) => {
1047
- (async () => {
1048
- for (const { name, callback: callback2, note } of onEndCallbacks) {
1049
- try {
1050
- await callback2(result);
1051
- } catch (e) {
1052
- result.errors.push(await new Promise((resolve) => logPluginError(e, name, note && note(), resolve)));
1053
- }
1054
- }
1055
- })().then(done);
1056
- };
823
+ if ((typeof input === "string" || input instanceof Uint8Array) && input.length > 1024 * 1024) {
824
+ let next = start;
825
+ start = () => fs.writeFile(input, next);
1057
826
  }
1058
- isSetupDone = true;
1059
- let refCount = 0;
1060
- return {
1061
- ok: true,
1062
- requestPlugins,
1063
- runOnEndCallbacks,
1064
- pluginRefs: {
1065
- ref() {
1066
- if (++refCount === 1)
1067
- pluginCallbacks.set(buildKey, callback);
1068
- },
1069
- unref() {
1070
- if (--refCount === 0)
1071
- pluginCallbacks.delete(buildKey);
1072
- }
1073
- }
1074
- };
827
+ start(null);
1075
828
  };
1076
- let buildServeData = (refs, options, request, key) => {
829
+ let formatMessages2 = ({ callName, refs, messages, options, callback }) => {
830
+ let result = sanitizeMessages(messages, "messages", null, "");
831
+ if (!options)
832
+ throw new Error(`Missing second argument in ${callName}() call`);
1077
833
  let keys = {};
1078
- let port = getFlag(options, keys, "port", mustBeInteger);
1079
- let host = getFlag(options, keys, "host", mustBeString);
1080
- let servedir = getFlag(options, keys, "servedir", mustBeString);
1081
- let onRequest = getFlag(options, keys, "onRequest", mustBeFunction);
1082
- let onWait;
1083
- let wait = new Promise((resolve, reject) => {
1084
- onWait = (error) => {
1085
- serveCallbacks.delete(key);
1086
- if (error !== null)
1087
- reject(new Error(error));
1088
- else
1089
- resolve();
1090
- };
1091
- });
1092
- request.serve = {};
1093
- checkForInvalidFlags(options, keys, `in serve() call`);
1094
- if (port !== void 0)
1095
- request.serve.port = port;
1096
- if (host !== void 0)
1097
- request.serve.host = host;
1098
- if (servedir !== void 0)
1099
- request.serve.servedir = servedir;
1100
- serveCallbacks.set(key, {
1101
- onRequest,
1102
- onWait
834
+ let kind = getFlag(options, keys, "kind", mustBeString);
835
+ let color = getFlag(options, keys, "color", mustBeBoolean);
836
+ let terminalWidth = getFlag(options, keys, "terminalWidth", mustBeInteger);
837
+ checkForInvalidFlags(options, keys, `in ${callName}() call`);
838
+ if (kind === void 0)
839
+ throw new Error(`Missing "kind" in ${callName}() call`);
840
+ if (kind !== "error" && kind !== "warning")
841
+ throw new Error(`Expected "kind" to be "error" or "warning" in ${callName}() call`);
842
+ let request = {
843
+ command: "format-msgs",
844
+ messages: result,
845
+ isWarning: kind === "warning"
846
+ };
847
+ if (color !== void 0)
848
+ request.color = color;
849
+ if (terminalWidth !== void 0)
850
+ request.terminalWidth = terminalWidth;
851
+ sendRequest(refs, request, (error, response) => {
852
+ if (error)
853
+ return callback(new Error(error), null);
854
+ callback(null, response.messages);
1103
855
  });
1104
- return {
1105
- wait,
1106
- stop() {
1107
- sendRequest(refs, { command: "serve-stop", key }, () => {
1108
- });
1109
- }
856
+ };
857
+ let analyzeMetafile2 = ({ callName, refs, metafile, options, callback }) => {
858
+ if (options === void 0)
859
+ options = {};
860
+ let keys = {};
861
+ let color = getFlag(options, keys, "color", mustBeBoolean);
862
+ let verbose = getFlag(options, keys, "verbose", mustBeBoolean);
863
+ checkForInvalidFlags(options, keys, `in ${callName}() call`);
864
+ let request = {
865
+ command: "analyze-metafile",
866
+ metafile
1110
867
  };
868
+ if (color !== void 0)
869
+ request.color = color;
870
+ if (verbose !== void 0)
871
+ request.verbose = verbose;
872
+ sendRequest(refs, request, (error, response) => {
873
+ if (error)
874
+ return callback(new Error(error), null);
875
+ callback(null, response.result);
876
+ });
1111
877
  };
1112
- const buildLogLevelDefault = "warning";
1113
- const transformLogLevelDefault = "silent";
1114
- let buildOrServe = (args) => {
1115
- let key = nextBuildKey++;
1116
- const details = createObjectStash();
1117
- let plugins;
1118
- let { refs, options, isTTY, callback } = args;
1119
- if (typeof options === "object") {
1120
- let value = options.plugins;
1121
- if (value !== void 0) {
1122
- if (!Array.isArray(value))
1123
- throw new Error(`"plugins" must be an array`);
1124
- plugins = value;
1125
- }
878
+ return {
879
+ readFromStdout,
880
+ afterClose,
881
+ service: {
882
+ buildOrServe,
883
+ transform: transform2,
884
+ formatMessages: formatMessages2,
885
+ analyzeMetafile: analyzeMetafile2
1126
886
  }
1127
- let logPluginError = (e, pluginName, note, done) => {
1128
- let flags = [];
1129
- try {
1130
- pushLogFlags(flags, options, {}, isTTY, buildLogLevelDefault);
1131
- } catch (e2) {
1132
- }
1133
- const message = extractErrorMessageV8(e, streamIn, details, note, pluginName);
1134
- sendRequest(refs, { command: "error", flags, error: message }, () => {
1135
- message.detail = details.load(message.detail);
1136
- done(message);
1137
- });
1138
- };
1139
- let handleError = (e, pluginName) => {
1140
- logPluginError(e, pluginName, void 0, (error) => {
1141
- callback(failureErrorWithLog("Build failed", [error], []), null);
1142
- });
1143
- };
1144
- if (plugins && plugins.length > 0) {
1145
- if (streamIn.isSync)
1146
- return handleError(new Error("Cannot use plugins in synchronous API calls"), "");
1147
- handlePlugins(options, plugins, key, details, refs).then(
1148
- (result) => {
1149
- if (!result.ok) {
1150
- handleError(result.error, result.pluginName);
1151
- } else {
1152
- try {
1153
- buildOrServeContinue(__spreadProps(__spreadValues({}, args), {
1154
- key,
1155
- details,
1156
- logPluginError,
1157
- requestPlugins: result.requestPlugins,
1158
- runOnEndCallbacks: result.runOnEndCallbacks,
1159
- pluginRefs: result.pluginRefs
1160
- }));
1161
- } catch (e) {
1162
- handleError(e, "");
1163
- }
1164
- }
1165
- },
1166
- (e) => handleError(e, "")
1167
- );
1168
- } else {
1169
- try {
1170
- buildOrServeContinue(__spreadProps(__spreadValues({}, args), {
1171
- key,
1172
- details,
1173
- logPluginError,
1174
- requestPlugins: null,
1175
- runOnEndCallbacks: (result, logPluginError2, done) => done(),
1176
- pluginRefs: null
1177
- }));
1178
- } catch (e) {
1179
- handleError(e, "");
1180
- }
887
+ };
888
+ }
889
+ function buildOrServeImpl(callName, buildKey, sendRequest, sendResponse, refs, streamIn, requestCallbacks, options, serveOptions, isTTY, defaultWD, closeData, callback) {
890
+ const details = createObjectStash();
891
+ const logPluginError = (e, pluginName, note, done) => {
892
+ const flags = [];
893
+ try {
894
+ pushLogFlags(flags, options, {}, isTTY, buildLogLevelDefault);
895
+ } catch (e2) {
1181
896
  }
897
+ const message = extractErrorMessageV8(e, streamIn, details, note, pluginName);
898
+ sendRequest(refs, { command: "error", flags, error: message }, () => {
899
+ message.detail = details.load(message.detail);
900
+ done(message);
901
+ });
1182
902
  };
1183
- let buildOrServeContinue = ({
1184
- callName,
1185
- refs: callerRefs,
1186
- serveOptions,
1187
- options,
1188
- isTTY,
1189
- defaultWD,
1190
- callback,
1191
- key,
1192
- details,
1193
- logPluginError,
1194
- requestPlugins,
1195
- runOnEndCallbacks,
1196
- pluginRefs
1197
- }) => {
1198
- const refs = {
1199
- ref() {
1200
- if (pluginRefs)
1201
- pluginRefs.ref();
1202
- if (callerRefs)
1203
- callerRefs.ref();
903
+ const handleError = (e, pluginName) => {
904
+ logPluginError(e, pluginName, void 0, (error) => {
905
+ callback(failureErrorWithLog("Build failed", [error], []), null);
906
+ });
907
+ };
908
+ let plugins;
909
+ if (typeof options === "object") {
910
+ const value = options.plugins;
911
+ if (value !== void 0) {
912
+ if (!Array.isArray(value))
913
+ throw new Error(`"plugins" must be an array`);
914
+ plugins = value;
915
+ }
916
+ }
917
+ if (plugins && plugins.length > 0) {
918
+ if (streamIn.isSync) {
919
+ handleError(new Error("Cannot use plugins in synchronous API calls"), "");
920
+ return;
921
+ }
922
+ handlePlugins(
923
+ buildKey,
924
+ sendRequest,
925
+ sendResponse,
926
+ refs,
927
+ streamIn,
928
+ requestCallbacks,
929
+ options,
930
+ plugins,
931
+ details
932
+ ).then(
933
+ (result) => {
934
+ if (!result.ok) {
935
+ handleError(result.error, result.pluginName);
936
+ return;
937
+ }
938
+ try {
939
+ buildOrServeContinue(result.requestPlugins, result.runOnEndCallbacks);
940
+ } catch (e) {
941
+ handleError(e, "");
942
+ }
1204
943
  },
1205
- unref() {
1206
- if (pluginRefs)
1207
- pluginRefs.unref();
1208
- if (callerRefs)
1209
- callerRefs.unref();
1210
- }
1211
- };
944
+ (e) => handleError(e, "")
945
+ );
946
+ return;
947
+ }
948
+ try {
949
+ buildOrServeContinue(null, (result, logPluginError2, done) => done());
950
+ } catch (e) {
951
+ handleError(e, "");
952
+ }
953
+ function buildOrServeContinue(requestPlugins, runOnEndCallbacks) {
1212
954
  let writeDefault = !streamIn.isWriteUnavailable;
1213
955
  let {
1214
956
  entries,
@@ -1224,7 +966,7 @@ function createChannel(streamIn) {
1224
966
  } = flagsForBuildOptions(callName, options, isTTY, buildLogLevelDefault, writeDefault);
1225
967
  let request = {
1226
968
  command: "build",
1227
- key,
969
+ key: buildKey,
1228
970
  entries,
1229
971
  flags,
1230
972
  write,
@@ -1238,7 +980,7 @@ function createChannel(streamIn) {
1238
980
  request.plugins = requestPlugins;
1239
981
  if (mangleCache)
1240
982
  request.mangleCache = mangleCache;
1241
- let serve2 = serveOptions && buildServeData(refs, serveOptions, request, key);
983
+ let serve2 = serveOptions && buildServeData(buildKey, sendRequest, sendResponse, refs, requestCallbacks, serveOptions, request);
1242
984
  let rebuild;
1243
985
  let stop;
1244
986
  let copyResponseToResult = (response, result) => {
@@ -1265,11 +1007,11 @@ function createChannel(streamIn) {
1265
1007
  if (!rebuild) {
1266
1008
  let isDisposed = false;
1267
1009
  rebuild = () => new Promise((resolve, reject) => {
1268
- if (isDisposed || closeData)
1010
+ if (isDisposed || closeData.didClose)
1269
1011
  throw new Error("Cannot rebuild");
1270
1012
  sendRequest(
1271
1013
  refs,
1272
- { command: "rebuild", key },
1014
+ { command: "rebuild", key: buildKey },
1273
1015
  (error2, response2) => {
1274
1016
  if (error2) {
1275
1017
  const message = { id: "", pluginName: "", text: error2, location: null, notes: [], detail: void 0 };
@@ -1289,7 +1031,7 @@ function createChannel(streamIn) {
1289
1031
  if (isDisposed)
1290
1032
  return;
1291
1033
  isDisposed = true;
1292
- sendRequest(refs, { command: "rebuild-dispose", key }, () => {
1034
+ sendRequest(refs, { command: "rebuild-dispose", key: buildKey }, () => {
1293
1035
  });
1294
1036
  refs.unref();
1295
1037
  };
@@ -1304,36 +1046,35 @@ function createChannel(streamIn) {
1304
1046
  if (isStopped)
1305
1047
  return;
1306
1048
  isStopped = true;
1307
- watchCallbacks.delete(key);
1308
- sendRequest(refs, { command: "watch-stop", key }, () => {
1049
+ delete requestCallbacks["watch-rebuild"];
1050
+ sendRequest(refs, { command: "watch-stop", key: buildKey }, () => {
1309
1051
  });
1310
1052
  refs.unref();
1311
1053
  };
1312
1054
  if (watch) {
1313
- watchCallbacks.set(key, (serviceStopError, watchResponse) => {
1314
- if (serviceStopError) {
1315
- if (watch.onRebuild)
1316
- watch.onRebuild(serviceStopError, null);
1317
- return;
1318
- }
1319
- let result2 = {
1320
- errors: replaceDetailsInMessages(watchResponse.errors, details),
1321
- warnings: replaceDetailsInMessages(watchResponse.warnings, details)
1322
- };
1323
- copyResponseToResult(watchResponse, result2);
1324
- runOnEndCallbacks(result2, logPluginError, () => {
1325
- if (result2.errors.length > 0) {
1055
+ requestCallbacks["watch-rebuild"] = (id, request2) => {
1056
+ try {
1057
+ let watchResponse = request2.args;
1058
+ let result2 = {
1059
+ errors: replaceDetailsInMessages(watchResponse.errors, details),
1060
+ warnings: replaceDetailsInMessages(watchResponse.warnings, details)
1061
+ };
1062
+ copyResponseToResult(watchResponse, result2);
1063
+ runOnEndCallbacks(result2, logPluginError, () => {
1064
+ if (result2.errors.length > 0) {
1065
+ if (watch.onRebuild)
1066
+ watch.onRebuild(failureErrorWithLog("Build failed", result2.errors, result2.warnings), null);
1067
+ return;
1068
+ }
1069
+ result2.stop = stop;
1326
1070
  if (watch.onRebuild)
1327
- watch.onRebuild(failureErrorWithLog("Build failed", result2.errors, result2.warnings), null);
1328
- return;
1329
- }
1330
- if (watchResponse.rebuildID !== void 0)
1331
- result2.rebuild = rebuild;
1332
- result2.stop = stop;
1333
- if (watch.onRebuild)
1334
- watch.onRebuild(null, result2);
1335
- });
1336
- });
1071
+ watch.onRebuild(null, result2);
1072
+ });
1073
+ } catch (err) {
1074
+ console.error(err);
1075
+ }
1076
+ sendResponse(id, {});
1077
+ };
1337
1078
  }
1338
1079
  }
1339
1080
  result.stop = stop;
@@ -1372,144 +1113,329 @@ function createChannel(streamIn) {
1372
1113
  }
1373
1114
  return buildResponseToResult(response, callback);
1374
1115
  });
1116
+ }
1117
+ }
1118
+ var buildServeData = (buildKey, sendRequest, sendResponse, refs, requestCallbacks, options, request) => {
1119
+ let keys = {};
1120
+ let port = getFlag(options, keys, "port", mustBeInteger);
1121
+ let host = getFlag(options, keys, "host", mustBeString);
1122
+ let servedir = getFlag(options, keys, "servedir", mustBeString);
1123
+ let onRequest = getFlag(options, keys, "onRequest", mustBeFunction);
1124
+ let wait = new Promise((resolve, reject) => {
1125
+ requestCallbacks["serve-wait"] = (id, request2) => {
1126
+ if (request2.error !== null)
1127
+ reject(new Error(request2.error));
1128
+ else
1129
+ resolve();
1130
+ sendResponse(id, {});
1131
+ };
1132
+ });
1133
+ request.serve = {};
1134
+ checkForInvalidFlags(options, keys, `in serve() call`);
1135
+ if (port !== void 0)
1136
+ request.serve.port = port;
1137
+ if (host !== void 0)
1138
+ request.serve.host = host;
1139
+ if (servedir !== void 0)
1140
+ request.serve.servedir = servedir;
1141
+ requestCallbacks["serve-request"] = (id, request2) => {
1142
+ if (onRequest)
1143
+ onRequest(request2.args);
1144
+ sendResponse(id, {});
1375
1145
  };
1376
- let transform2 = ({ callName, refs, input, options, isTTY, fs, callback }) => {
1377
- const details = createObjectStash();
1378
- let start = (inputPath) => {
1379
- try {
1380
- if (typeof input !== "string" && !(input instanceof Uint8Array))
1381
- throw new Error('The input to "transform" must be a string or a Uint8Array');
1382
- let {
1383
- flags,
1384
- mangleCache
1385
- } = flagsForTransformOptions(callName, options, isTTY, transformLogLevelDefault);
1386
- let request = {
1387
- command: "transform",
1388
- flags,
1389
- inputFS: inputPath !== null,
1390
- input: inputPath !== null ? encodeUTF8(inputPath) : typeof input === "string" ? encodeUTF8(input) : input
1391
- };
1392
- if (mangleCache)
1393
- request.mangleCache = mangleCache;
1394
- sendRequest(refs, request, (error, response) => {
1395
- if (error)
1396
- return callback(new Error(error), null);
1397
- let errors = replaceDetailsInMessages(response.errors, details);
1398
- let warnings = replaceDetailsInMessages(response.warnings, details);
1399
- let outstanding = 1;
1400
- let next = () => {
1401
- if (--outstanding === 0) {
1402
- let result = { warnings, code: response.code, map: response.map };
1403
- if (response.mangleCache)
1404
- result.mangleCache = response == null ? void 0 : response.mangleCache;
1405
- callback(null, result);
1406
- }
1146
+ return {
1147
+ wait,
1148
+ stop() {
1149
+ sendRequest(refs, { command: "serve-stop", key: buildKey }, () => {
1150
+ });
1151
+ }
1152
+ };
1153
+ };
1154
+ var handlePlugins = async (buildKey, sendRequest, sendResponse, refs, streamIn, requestCallbacks, initialOptions, plugins, details) => {
1155
+ let onStartCallbacks = [];
1156
+ let onEndCallbacks = [];
1157
+ let onResolveCallbacks = {};
1158
+ let onLoadCallbacks = {};
1159
+ let nextCallbackID = 0;
1160
+ let i = 0;
1161
+ let requestPlugins = [];
1162
+ let isSetupDone = false;
1163
+ plugins = [...plugins];
1164
+ for (let item of plugins) {
1165
+ let keys = {};
1166
+ if (typeof item !== "object")
1167
+ throw new Error(`Plugin at index ${i} must be an object`);
1168
+ const name = getFlag(item, keys, "name", mustBeString);
1169
+ if (typeof name !== "string" || name === "")
1170
+ throw new Error(`Plugin at index ${i} is missing a name`);
1171
+ try {
1172
+ let setup = getFlag(item, keys, "setup", mustBeFunction);
1173
+ if (typeof setup !== "function")
1174
+ throw new Error(`Plugin is missing a setup function`);
1175
+ checkForInvalidFlags(item, keys, `on plugin ${JSON.stringify(name)}`);
1176
+ let plugin = {
1177
+ name,
1178
+ onResolve: [],
1179
+ onLoad: []
1180
+ };
1181
+ i++;
1182
+ let resolve = (path, options = {}) => {
1183
+ if (!isSetupDone)
1184
+ throw new Error('Cannot call "resolve" before plugin setup has completed');
1185
+ if (typeof path !== "string")
1186
+ throw new Error(`The path to resolve must be a string`);
1187
+ let keys2 = /* @__PURE__ */ Object.create(null);
1188
+ let pluginName = getFlag(options, keys2, "pluginName", mustBeString);
1189
+ let importer = getFlag(options, keys2, "importer", mustBeString);
1190
+ let namespace = getFlag(options, keys2, "namespace", mustBeString);
1191
+ let resolveDir = getFlag(options, keys2, "resolveDir", mustBeString);
1192
+ let kind = getFlag(options, keys2, "kind", mustBeString);
1193
+ let pluginData = getFlag(options, keys2, "pluginData", canBeAnything);
1194
+ checkForInvalidFlags(options, keys2, "in resolve() call");
1195
+ return new Promise((resolve2, reject) => {
1196
+ const request = {
1197
+ command: "resolve",
1198
+ path,
1199
+ key: buildKey,
1200
+ pluginName: name
1407
1201
  };
1408
- if (errors.length > 0)
1409
- return callback(failureErrorWithLog("Transform failed", errors, warnings), null);
1410
- if (response.codeFS) {
1411
- outstanding++;
1412
- fs.readFile(response.code, (err, contents) => {
1413
- if (err !== null) {
1414
- callback(err, null);
1415
- } else {
1416
- response.code = contents;
1417
- next();
1418
- }
1419
- });
1420
- }
1421
- if (response.mapFS) {
1422
- outstanding++;
1423
- fs.readFile(response.map, (err, contents) => {
1424
- if (err !== null) {
1425
- callback(err, null);
1426
- } else {
1427
- response.map = contents;
1428
- next();
1429
- }
1430
- });
1431
- }
1432
- next();
1202
+ if (pluginName != null)
1203
+ request.pluginName = pluginName;
1204
+ if (importer != null)
1205
+ request.importer = importer;
1206
+ if (namespace != null)
1207
+ request.namespace = namespace;
1208
+ if (resolveDir != null)
1209
+ request.resolveDir = resolveDir;
1210
+ if (kind != null)
1211
+ request.kind = kind;
1212
+ if (pluginData != null)
1213
+ request.pluginData = details.store(pluginData);
1214
+ sendRequest(refs, request, (error, response) => {
1215
+ if (error !== null)
1216
+ reject(new Error(error));
1217
+ else
1218
+ resolve2({
1219
+ errors: replaceDetailsInMessages(response.errors, details),
1220
+ warnings: replaceDetailsInMessages(response.warnings, details),
1221
+ path: response.path,
1222
+ external: response.external,
1223
+ sideEffects: response.sideEffects,
1224
+ namespace: response.namespace,
1225
+ suffix: response.suffix,
1226
+ pluginData: details.load(response.pluginData)
1227
+ });
1228
+ });
1433
1229
  });
1434
- } catch (e) {
1435
- let flags = [];
1436
- try {
1437
- pushLogFlags(flags, options, {}, isTTY, transformLogLevelDefault);
1438
- } catch (e2) {
1230
+ };
1231
+ let promise = setup({
1232
+ initialOptions,
1233
+ resolve,
1234
+ onStart(callback) {
1235
+ let registeredText = `This error came from the "onStart" callback registered here:`;
1236
+ let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onStart");
1237
+ onStartCallbacks.push({ name, callback, note: registeredNote });
1238
+ },
1239
+ onEnd(callback) {
1240
+ let registeredText = `This error came from the "onEnd" callback registered here:`;
1241
+ let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onEnd");
1242
+ onEndCallbacks.push({ name, callback, note: registeredNote });
1243
+ },
1244
+ onResolve(options, callback) {
1245
+ let registeredText = `This error came from the "onResolve" callback registered here:`;
1246
+ let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onResolve");
1247
+ let keys2 = {};
1248
+ let filter = getFlag(options, keys2, "filter", mustBeRegExp);
1249
+ let namespace = getFlag(options, keys2, "namespace", mustBeString);
1250
+ checkForInvalidFlags(options, keys2, `in onResolve() call for plugin ${JSON.stringify(name)}`);
1251
+ if (filter == null)
1252
+ throw new Error(`onResolve() call is missing a filter`);
1253
+ let id = nextCallbackID++;
1254
+ onResolveCallbacks[id] = { name, callback, note: registeredNote };
1255
+ plugin.onResolve.push({ id, filter: filter.source, namespace: namespace || "" });
1256
+ },
1257
+ onLoad(options, callback) {
1258
+ let registeredText = `This error came from the "onLoad" callback registered here:`;
1259
+ let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onLoad");
1260
+ let keys2 = {};
1261
+ let filter = getFlag(options, keys2, "filter", mustBeRegExp);
1262
+ let namespace = getFlag(options, keys2, "namespace", mustBeString);
1263
+ checkForInvalidFlags(options, keys2, `in onLoad() call for plugin ${JSON.stringify(name)}`);
1264
+ if (filter == null)
1265
+ throw new Error(`onLoad() call is missing a filter`);
1266
+ let id = nextCallbackID++;
1267
+ onLoadCallbacks[id] = { name, callback, note: registeredNote };
1268
+ plugin.onLoad.push({ id, filter: filter.source, namespace: namespace || "" });
1269
+ },
1270
+ esbuild: streamIn.esbuild
1271
+ });
1272
+ if (promise)
1273
+ await promise;
1274
+ requestPlugins.push(plugin);
1275
+ } catch (e) {
1276
+ return { ok: false, error: e, pluginName: name };
1277
+ }
1278
+ }
1279
+ requestCallbacks["on-start"] = async (id, request) => {
1280
+ let response = { errors: [], warnings: [] };
1281
+ await Promise.all(onStartCallbacks.map(async ({ name, callback, note }) => {
1282
+ try {
1283
+ let result = await callback();
1284
+ if (result != null) {
1285
+ if (typeof result !== "object")
1286
+ throw new Error(`Expected onStart() callback in plugin ${JSON.stringify(name)} to return an object`);
1287
+ let keys = {};
1288
+ let errors = getFlag(result, keys, "errors", mustBeArray);
1289
+ let warnings = getFlag(result, keys, "warnings", mustBeArray);
1290
+ checkForInvalidFlags(result, keys, `from onStart() callback in plugin ${JSON.stringify(name)}`);
1291
+ if (errors != null)
1292
+ response.errors.push(...sanitizeMessages(errors, "errors", details, name));
1293
+ if (warnings != null)
1294
+ response.warnings.push(...sanitizeMessages(warnings, "warnings", details, name));
1439
1295
  }
1440
- const error = extractErrorMessageV8(e, streamIn, details, void 0, "");
1441
- sendRequest(refs, { command: "error", flags, error }, () => {
1442
- error.detail = details.load(error.detail);
1443
- callback(failureErrorWithLog("Transform failed", [error], []), null);
1296
+ } catch (e) {
1297
+ response.errors.push(extractErrorMessageV8(e, streamIn, details, note && note(), name));
1298
+ }
1299
+ }));
1300
+ sendResponse(id, response);
1301
+ };
1302
+ requestCallbacks["on-resolve"] = async (id, request) => {
1303
+ let response = {}, name = "", callback, note;
1304
+ for (let id2 of request.ids) {
1305
+ try {
1306
+ ({ name, callback, note } = onResolveCallbacks[id2]);
1307
+ let result = await callback({
1308
+ path: request.path,
1309
+ importer: request.importer,
1310
+ namespace: request.namespace,
1311
+ resolveDir: request.resolveDir,
1312
+ kind: request.kind,
1313
+ pluginData: details.load(request.pluginData)
1444
1314
  });
1315
+ if (result != null) {
1316
+ if (typeof result !== "object")
1317
+ throw new Error(`Expected onResolve() callback in plugin ${JSON.stringify(name)} to return an object`);
1318
+ let keys = {};
1319
+ let pluginName = getFlag(result, keys, "pluginName", mustBeString);
1320
+ let path = getFlag(result, keys, "path", mustBeString);
1321
+ let namespace = getFlag(result, keys, "namespace", mustBeString);
1322
+ let suffix = getFlag(result, keys, "suffix", mustBeString);
1323
+ let external = getFlag(result, keys, "external", mustBeBoolean);
1324
+ let sideEffects = getFlag(result, keys, "sideEffects", mustBeBoolean);
1325
+ let pluginData = getFlag(result, keys, "pluginData", canBeAnything);
1326
+ let errors = getFlag(result, keys, "errors", mustBeArray);
1327
+ let warnings = getFlag(result, keys, "warnings", mustBeArray);
1328
+ let watchFiles = getFlag(result, keys, "watchFiles", mustBeArray);
1329
+ let watchDirs = getFlag(result, keys, "watchDirs", mustBeArray);
1330
+ checkForInvalidFlags(result, keys, `from onResolve() callback in plugin ${JSON.stringify(name)}`);
1331
+ response.id = id2;
1332
+ if (pluginName != null)
1333
+ response.pluginName = pluginName;
1334
+ if (path != null)
1335
+ response.path = path;
1336
+ if (namespace != null)
1337
+ response.namespace = namespace;
1338
+ if (suffix != null)
1339
+ response.suffix = suffix;
1340
+ if (external != null)
1341
+ response.external = external;
1342
+ if (sideEffects != null)
1343
+ response.sideEffects = sideEffects;
1344
+ if (pluginData != null)
1345
+ response.pluginData = details.store(pluginData);
1346
+ if (errors != null)
1347
+ response.errors = sanitizeMessages(errors, "errors", details, name);
1348
+ if (warnings != null)
1349
+ response.warnings = sanitizeMessages(warnings, "warnings", details, name);
1350
+ if (watchFiles != null)
1351
+ response.watchFiles = sanitizeStringArray(watchFiles, "watchFiles");
1352
+ if (watchDirs != null)
1353
+ response.watchDirs = sanitizeStringArray(watchDirs, "watchDirs");
1354
+ break;
1355
+ }
1356
+ } catch (e) {
1357
+ response = { id: id2, errors: [extractErrorMessageV8(e, streamIn, details, note && note(), name)] };
1358
+ break;
1445
1359
  }
1446
- };
1447
- if ((typeof input === "string" || input instanceof Uint8Array) && input.length > 1024 * 1024) {
1448
- let next = start;
1449
- start = () => fs.writeFile(input, next);
1450
1360
  }
1451
- start(null);
1361
+ sendResponse(id, response);
1452
1362
  };
1453
- let formatMessages2 = ({ callName, refs, messages, options, callback }) => {
1454
- let result = sanitizeMessages(messages, "messages", null, "");
1455
- if (!options)
1456
- throw new Error(`Missing second argument in ${callName}() call`);
1457
- let keys = {};
1458
- let kind = getFlag(options, keys, "kind", mustBeString);
1459
- let color = getFlag(options, keys, "color", mustBeBoolean);
1460
- let terminalWidth = getFlag(options, keys, "terminalWidth", mustBeInteger);
1461
- checkForInvalidFlags(options, keys, `in ${callName}() call`);
1462
- if (kind === void 0)
1463
- throw new Error(`Missing "kind" in ${callName}() call`);
1464
- if (kind !== "error" && kind !== "warning")
1465
- throw new Error(`Expected "kind" to be "error" or "warning" in ${callName}() call`);
1466
- let request = {
1467
- command: "format-msgs",
1468
- messages: result,
1469
- isWarning: kind === "warning"
1470
- };
1471
- if (color !== void 0)
1472
- request.color = color;
1473
- if (terminalWidth !== void 0)
1474
- request.terminalWidth = terminalWidth;
1475
- sendRequest(refs, request, (error, response) => {
1476
- if (error)
1477
- return callback(new Error(error), null);
1478
- callback(null, response.messages);
1479
- });
1363
+ requestCallbacks["on-load"] = async (id, request) => {
1364
+ let response = {}, name = "", callback, note;
1365
+ for (let id2 of request.ids) {
1366
+ try {
1367
+ ({ name, callback, note } = onLoadCallbacks[id2]);
1368
+ let result = await callback({
1369
+ path: request.path,
1370
+ namespace: request.namespace,
1371
+ suffix: request.suffix,
1372
+ pluginData: details.load(request.pluginData)
1373
+ });
1374
+ if (result != null) {
1375
+ if (typeof result !== "object")
1376
+ throw new Error(`Expected onLoad() callback in plugin ${JSON.stringify(name)} to return an object`);
1377
+ let keys = {};
1378
+ let pluginName = getFlag(result, keys, "pluginName", mustBeString);
1379
+ let contents = getFlag(result, keys, "contents", mustBeStringOrUint8Array);
1380
+ let resolveDir = getFlag(result, keys, "resolveDir", mustBeString);
1381
+ let pluginData = getFlag(result, keys, "pluginData", canBeAnything);
1382
+ let loader = getFlag(result, keys, "loader", mustBeString);
1383
+ let errors = getFlag(result, keys, "errors", mustBeArray);
1384
+ let warnings = getFlag(result, keys, "warnings", mustBeArray);
1385
+ let watchFiles = getFlag(result, keys, "watchFiles", mustBeArray);
1386
+ let watchDirs = getFlag(result, keys, "watchDirs", mustBeArray);
1387
+ checkForInvalidFlags(result, keys, `from onLoad() callback in plugin ${JSON.stringify(name)}`);
1388
+ response.id = id2;
1389
+ if (pluginName != null)
1390
+ response.pluginName = pluginName;
1391
+ if (contents instanceof Uint8Array)
1392
+ response.contents = contents;
1393
+ else if (contents != null)
1394
+ response.contents = encodeUTF8(contents);
1395
+ if (resolveDir != null)
1396
+ response.resolveDir = resolveDir;
1397
+ if (pluginData != null)
1398
+ response.pluginData = details.store(pluginData);
1399
+ if (loader != null)
1400
+ response.loader = loader;
1401
+ if (errors != null)
1402
+ response.errors = sanitizeMessages(errors, "errors", details, name);
1403
+ if (warnings != null)
1404
+ response.warnings = sanitizeMessages(warnings, "warnings", details, name);
1405
+ if (watchFiles != null)
1406
+ response.watchFiles = sanitizeStringArray(watchFiles, "watchFiles");
1407
+ if (watchDirs != null)
1408
+ response.watchDirs = sanitizeStringArray(watchDirs, "watchDirs");
1409
+ break;
1410
+ }
1411
+ } catch (e) {
1412
+ response = { id: id2, errors: [extractErrorMessageV8(e, streamIn, details, note && note(), name)] };
1413
+ break;
1414
+ }
1415
+ }
1416
+ sendResponse(id, response);
1480
1417
  };
1481
- let analyzeMetafile2 = ({ callName, refs, metafile, options, callback }) => {
1482
- if (options === void 0)
1483
- options = {};
1484
- let keys = {};
1485
- let color = getFlag(options, keys, "color", mustBeBoolean);
1486
- let verbose = getFlag(options, keys, "verbose", mustBeBoolean);
1487
- checkForInvalidFlags(options, keys, `in ${callName}() call`);
1488
- let request = {
1489
- command: "analyze-metafile",
1490
- metafile
1418
+ let runOnEndCallbacks = (result, logPluginError, done) => done();
1419
+ if (onEndCallbacks.length > 0) {
1420
+ runOnEndCallbacks = (result, logPluginError, done) => {
1421
+ (async () => {
1422
+ for (const { name, callback, note } of onEndCallbacks) {
1423
+ try {
1424
+ await callback(result);
1425
+ } catch (e) {
1426
+ result.errors.push(await new Promise((resolve) => logPluginError(e, name, note && note(), resolve)));
1427
+ }
1428
+ }
1429
+ })().then(done);
1491
1430
  };
1492
- if (color !== void 0)
1493
- request.color = color;
1494
- if (verbose !== void 0)
1495
- request.verbose = verbose;
1496
- sendRequest(refs, request, (error, response) => {
1497
- if (error)
1498
- return callback(new Error(error), null);
1499
- callback(null, response.result);
1500
- });
1501
- };
1431
+ }
1432
+ isSetupDone = true;
1502
1433
  return {
1503
- readFromStdout,
1504
- afterClose,
1505
- service: {
1506
- buildOrServe,
1507
- transform: transform2,
1508
- formatMessages: formatMessages2,
1509
- analyzeMetafile: analyzeMetafile2
1510
- }
1434
+ ok: true,
1435
+ requestPlugins,
1436
+ runOnEndCallbacks
1511
1437
  };
1512
- }
1438
+ };
1513
1439
  function createObjectStash() {
1514
1440
  const map = /* @__PURE__ */ new Map();
1515
1441
  let nextID = 0;
@@ -1714,7 +1640,7 @@ function convertOutputFiles({ path, contents }) {
1714
1640
  }
1715
1641
 
1716
1642
  // lib/npm/browser.ts
1717
- var version = "0.15.4";
1643
+ var version = "0.15.8";
1718
1644
  var build = (options) => ensureServiceIsRunning().build(options);
1719
1645
  var serve = () => {
1720
1646
  throw new Error(`The "serve" API only works in node`);
@@ -1770,7 +1696,7 @@ var startRunningService = async (wasmURL, wasmModule, useWorker) => {
1770
1696
  }
1771
1697
  let worker;
1772
1698
  if (useWorker) {
1773
- let blob = new Blob([`onmessage=${'((postMessage) => {\n // Copyright 2018 The Go Authors. All rights reserved.\n // Use of this source code is governed by a BSD-style\n // license that can be found in the LICENSE file.\n let onmessage;\n let globalThis = {};\n for (let o = self; o; o = Object.getPrototypeOf(o))\n for (let k of Object.getOwnPropertyNames(o))\n if (!(k in globalThis))\n Object.defineProperty(globalThis, k, { get: () => self[k] });\n "use strict";\n (() => {\n const enosys = () => {\n const err = new Error("not implemented");\n err.code = "ENOSYS";\n return err;\n };\n if (!globalThis.fs) {\n let outputBuf = "";\n globalThis.fs = {\n constants: { O_WRONLY: -1, O_RDWR: -1, O_CREAT: -1, O_TRUNC: -1, O_APPEND: -1, O_EXCL: -1 },\n writeSync(fd, buf) {\n outputBuf += decoder.decode(buf);\n const nl = outputBuf.lastIndexOf("\\n");\n if (nl != -1) {\n console.log(outputBuf.substr(0, nl));\n outputBuf = outputBuf.substr(nl + 1);\n }\n return buf.length;\n },\n write(fd, buf, offset, length, position, callback) {\n if (offset !== 0 || length !== buf.length || position !== null) {\n callback(enosys());\n return;\n }\n const n = this.writeSync(fd, buf);\n callback(null, n);\n },\n chmod(path, mode, callback) {\n callback(enosys());\n },\n chown(path, uid, gid, callback) {\n callback(enosys());\n },\n close(fd, callback) {\n callback(enosys());\n },\n fchmod(fd, mode, callback) {\n callback(enosys());\n },\n fchown(fd, uid, gid, callback) {\n callback(enosys());\n },\n fstat(fd, callback) {\n callback(enosys());\n },\n fsync(fd, callback) {\n callback(null);\n },\n ftruncate(fd, length, callback) {\n callback(enosys());\n },\n lchown(path, uid, gid, callback) {\n callback(enosys());\n },\n link(path, link, callback) {\n callback(enosys());\n },\n lstat(path, callback) {\n callback(enosys());\n },\n mkdir(path, perm, callback) {\n callback(enosys());\n },\n open(path, flags, mode, callback) {\n callback(enosys());\n },\n read(fd, buffer, offset, length, position, callback) {\n callback(enosys());\n },\n readdir(path, callback) {\n callback(enosys());\n },\n readlink(path, callback) {\n callback(enosys());\n },\n rename(from, to, callback) {\n callback(enosys());\n },\n rmdir(path, callback) {\n callback(enosys());\n },\n stat(path, callback) {\n callback(enosys());\n },\n symlink(path, link, callback) {\n callback(enosys());\n },\n truncate(path, length, callback) {\n callback(enosys());\n },\n unlink(path, callback) {\n callback(enosys());\n },\n utimes(path, atime, mtime, callback) {\n callback(enosys());\n }\n };\n }\n if (!globalThis.process) {\n globalThis.process = {\n getuid() {\n return -1;\n },\n getgid() {\n return -1;\n },\n geteuid() {\n return -1;\n },\n getegid() {\n return -1;\n },\n getgroups() {\n throw enosys();\n },\n pid: -1,\n ppid: -1,\n umask() {\n throw enosys();\n },\n cwd() {\n throw enosys();\n },\n chdir() {\n throw enosys();\n }\n };\n }\n if (!globalThis.crypto) {\n throw new Error("globalThis.crypto is not available, polyfill required (crypto.getRandomValues only)");\n }\n if (!globalThis.performance) {\n throw new Error("globalThis.performance is not available, polyfill required (performance.now only)");\n }\n if (!globalThis.TextEncoder) {\n throw new Error("globalThis.TextEncoder is not available, polyfill required");\n }\n if (!globalThis.TextDecoder) {\n throw new Error("globalThis.TextDecoder is not available, polyfill required");\n }\n const encoder = new TextEncoder("utf-8");\n const decoder = new TextDecoder("utf-8");\n globalThis.Go = class {\n constructor() {\n this.argv = ["js"];\n this.env = {};\n this.exit = (code) => {\n if (code !== 0) {\n console.warn("exit code:", code);\n }\n };\n this._exitPromise = new Promise((resolve) => {\n this._resolveExitPromise = resolve;\n });\n this._pendingEvent = null;\n this._scheduledTimeouts = /* @__PURE__ */ new Map();\n this._nextCallbackTimeoutID = 1;\n const setInt64 = (addr, v) => {\n this.mem.setUint32(addr + 0, v, true);\n this.mem.setUint32(addr + 4, Math.floor(v / 4294967296), true);\n };\n const getInt64 = (addr) => {\n const low = this.mem.getUint32(addr + 0, true);\n const high = this.mem.getInt32(addr + 4, true);\n return low + high * 4294967296;\n };\n const loadValue = (addr) => {\n const f = this.mem.getFloat64(addr, true);\n if (f === 0) {\n return void 0;\n }\n if (!isNaN(f)) {\n return f;\n }\n const id = this.mem.getUint32(addr, true);\n return this._values[id];\n };\n const storeValue = (addr, v) => {\n const nanHead = 2146959360;\n if (typeof v === "number" && v !== 0) {\n if (isNaN(v)) {\n this.mem.setUint32(addr + 4, nanHead, true);\n this.mem.setUint32(addr, 0, true);\n return;\n }\n this.mem.setFloat64(addr, v, true);\n return;\n }\n if (v === void 0) {\n this.mem.setFloat64(addr, 0, true);\n return;\n }\n let id = this._ids.get(v);\n if (id === void 0) {\n id = this._idPool.pop();\n if (id === void 0) {\n id = this._values.length;\n }\n this._values[id] = v;\n this._goRefCounts[id] = 0;\n this._ids.set(v, id);\n }\n this._goRefCounts[id]++;\n let typeFlag = 0;\n switch (typeof v) {\n case "object":\n if (v !== null) {\n typeFlag = 1;\n }\n break;\n case "string":\n typeFlag = 2;\n break;\n case "symbol":\n typeFlag = 3;\n break;\n case "function":\n typeFlag = 4;\n break;\n }\n this.mem.setUint32(addr + 4, nanHead | typeFlag, true);\n this.mem.setUint32(addr, id, true);\n };\n const loadSlice = (addr) => {\n const array = getInt64(addr + 0);\n const len = getInt64(addr + 8);\n return new Uint8Array(this._inst.exports.mem.buffer, array, len);\n };\n const loadSliceOfValues = (addr) => {\n const array = getInt64(addr + 0);\n const len = getInt64(addr + 8);\n const a = new Array(len);\n for (let i = 0; i < len; i++) {\n a[i] = loadValue(array + i * 8);\n }\n return a;\n };\n const loadString = (addr) => {\n const saddr = getInt64(addr + 0);\n const len = getInt64(addr + 8);\n return decoder.decode(new DataView(this._inst.exports.mem.buffer, saddr, len));\n };\n const timeOrigin = Date.now() - performance.now();\n this.importObject = {\n go: {\n "runtime.wasmExit": (sp) => {\n sp >>>= 0;\n const code = this.mem.getInt32(sp + 8, true);\n this.exited = true;\n delete this._inst;\n delete this._values;\n delete this._goRefCounts;\n delete this._ids;\n delete this._idPool;\n this.exit(code);\n },\n "runtime.wasmWrite": (sp) => {\n sp >>>= 0;\n const fd = getInt64(sp + 8);\n const p = getInt64(sp + 16);\n const n = this.mem.getInt32(sp + 24, true);\n globalThis.fs.writeSync(fd, new Uint8Array(this._inst.exports.mem.buffer, p, n));\n },\n "runtime.resetMemoryDataView": (sp) => {\n sp >>>= 0;\n this.mem = new DataView(this._inst.exports.mem.buffer);\n },\n "runtime.nanotime1": (sp) => {\n sp >>>= 0;\n setInt64(sp + 8, (timeOrigin + performance.now()) * 1e6);\n },\n "runtime.walltime": (sp) => {\n sp >>>= 0;\n const msec = new Date().getTime();\n setInt64(sp + 8, msec / 1e3);\n this.mem.setInt32(sp + 16, msec % 1e3 * 1e6, true);\n },\n "runtime.scheduleTimeoutEvent": (sp) => {\n sp >>>= 0;\n const id = this._nextCallbackTimeoutID;\n this._nextCallbackTimeoutID++;\n this._scheduledTimeouts.set(id, setTimeout(\n () => {\n this._resume();\n while (this._scheduledTimeouts.has(id)) {\n console.warn("scheduleTimeoutEvent: missed timeout event");\n this._resume();\n }\n },\n getInt64(sp + 8) + 1\n ));\n this.mem.setInt32(sp + 16, id, true);\n },\n "runtime.clearTimeoutEvent": (sp) => {\n sp >>>= 0;\n const id = this.mem.getInt32(sp + 8, true);\n clearTimeout(this._scheduledTimeouts.get(id));\n this._scheduledTimeouts.delete(id);\n },\n "runtime.getRandomData": (sp) => {\n sp >>>= 0;\n crypto.getRandomValues(loadSlice(sp + 8));\n },\n "syscall/js.finalizeRef": (sp) => {\n sp >>>= 0;\n const id = this.mem.getUint32(sp + 8, true);\n this._goRefCounts[id]--;\n if (this._goRefCounts[id] === 0) {\n const v = this._values[id];\n this._values[id] = null;\n this._ids.delete(v);\n this._idPool.push(id);\n }\n },\n "syscall/js.stringVal": (sp) => {\n sp >>>= 0;\n storeValue(sp + 24, loadString(sp + 8));\n },\n "syscall/js.valueGet": (sp) => {\n sp >>>= 0;\n const result = Reflect.get(loadValue(sp + 8), loadString(sp + 16));\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 32, result);\n },\n "syscall/js.valueSet": (sp) => {\n sp >>>= 0;\n Reflect.set(loadValue(sp + 8), loadString(sp + 16), loadValue(sp + 32));\n },\n "syscall/js.valueDelete": (sp) => {\n sp >>>= 0;\n Reflect.deleteProperty(loadValue(sp + 8), loadString(sp + 16));\n },\n "syscall/js.valueIndex": (sp) => {\n sp >>>= 0;\n storeValue(sp + 24, Reflect.get(loadValue(sp + 8), getInt64(sp + 16)));\n },\n "syscall/js.valueSetIndex": (sp) => {\n sp >>>= 0;\n Reflect.set(loadValue(sp + 8), getInt64(sp + 16), loadValue(sp + 24));\n },\n "syscall/js.valueCall": (sp) => {\n sp >>>= 0;\n try {\n const v = loadValue(sp + 8);\n const m = Reflect.get(v, loadString(sp + 16));\n const args = loadSliceOfValues(sp + 32);\n const result = Reflect.apply(m, v, args);\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 56, result);\n this.mem.setUint8(sp + 64, 1);\n } catch (err) {\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 56, err);\n this.mem.setUint8(sp + 64, 0);\n }\n },\n "syscall/js.valueInvoke": (sp) => {\n sp >>>= 0;\n try {\n const v = loadValue(sp + 8);\n const args = loadSliceOfValues(sp + 16);\n const result = Reflect.apply(v, void 0, args);\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 40, result);\n this.mem.setUint8(sp + 48, 1);\n } catch (err) {\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 40, err);\n this.mem.setUint8(sp + 48, 0);\n }\n },\n "syscall/js.valueNew": (sp) => {\n sp >>>= 0;\n try {\n const v = loadValue(sp + 8);\n const args = loadSliceOfValues(sp + 16);\n const result = Reflect.construct(v, args);\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 40, result);\n this.mem.setUint8(sp + 48, 1);\n } catch (err) {\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 40, err);\n this.mem.setUint8(sp + 48, 0);\n }\n },\n "syscall/js.valueLength": (sp) => {\n sp >>>= 0;\n setInt64(sp + 16, parseInt(loadValue(sp + 8).length));\n },\n "syscall/js.valuePrepareString": (sp) => {\n sp >>>= 0;\n const str = encoder.encode(String(loadValue(sp + 8)));\n storeValue(sp + 16, str);\n setInt64(sp + 24, str.length);\n },\n "syscall/js.valueLoadString": (sp) => {\n sp >>>= 0;\n const str = loadValue(sp + 8);\n loadSlice(sp + 16).set(str);\n },\n "syscall/js.valueInstanceOf": (sp) => {\n sp >>>= 0;\n this.mem.setUint8(sp + 24, loadValue(sp + 8) instanceof loadValue(sp + 16) ? 1 : 0);\n },\n "syscall/js.copyBytesToGo": (sp) => {\n sp >>>= 0;\n const dst = loadSlice(sp + 8);\n const src = loadValue(sp + 32);\n if (!(src instanceof Uint8Array || src instanceof Uint8ClampedArray)) {\n this.mem.setUint8(sp + 48, 0);\n return;\n }\n const toCopy = src.subarray(0, dst.length);\n dst.set(toCopy);\n setInt64(sp + 40, toCopy.length);\n this.mem.setUint8(sp + 48, 1);\n },\n "syscall/js.copyBytesToJS": (sp) => {\n sp >>>= 0;\n const dst = loadValue(sp + 8);\n const src = loadSlice(sp + 16);\n if (!(dst instanceof Uint8Array || dst instanceof Uint8ClampedArray)) {\n this.mem.setUint8(sp + 48, 0);\n return;\n }\n const toCopy = src.subarray(0, dst.length);\n dst.set(toCopy);\n setInt64(sp + 40, toCopy.length);\n this.mem.setUint8(sp + 48, 1);\n },\n "debug": (value) => {\n console.log(value);\n }\n }\n };\n }\n async run(instance) {\n if (!(instance instanceof WebAssembly.Instance)) {\n throw new Error("Go.run: WebAssembly.Instance expected");\n }\n this._inst = instance;\n this.mem = new DataView(this._inst.exports.mem.buffer);\n this._values = [\n NaN,\n 0,\n null,\n true,\n false,\n globalThis,\n this\n ];\n this._goRefCounts = new Array(this._values.length).fill(Infinity);\n this._ids = /* @__PURE__ */ new Map([\n [0, 1],\n [null, 2],\n [true, 3],\n [false, 4],\n [globalThis, 5],\n [this, 6]\n ]);\n this._idPool = [];\n this.exited = false;\n let offset = 4096;\n const strPtr = (str) => {\n const ptr = offset;\n const bytes = encoder.encode(str + "\\0");\n new Uint8Array(this.mem.buffer, offset, bytes.length).set(bytes);\n offset += bytes.length;\n if (offset % 8 !== 0) {\n offset += 8 - offset % 8;\n }\n return ptr;\n };\n const argc = this.argv.length;\n const argvPtrs = [];\n this.argv.forEach((arg) => {\n argvPtrs.push(strPtr(arg));\n });\n argvPtrs.push(0);\n const keys = Object.keys(this.env).sort();\n keys.forEach((key) => {\n argvPtrs.push(strPtr(`${key}=${this.env[key]}`));\n });\n argvPtrs.push(0);\n const argv = offset;\n argvPtrs.forEach((ptr) => {\n this.mem.setUint32(offset, ptr, true);\n this.mem.setUint32(offset + 4, 0, true);\n offset += 8;\n });\n const wasmMinDataAddr = 4096 + 8192;\n if (offset >= wasmMinDataAddr) {\n throw new Error("total length of command line and environment variables exceeds limit");\n }\n this._inst.exports.run(argc, argv);\n if (this.exited) {\n this._resolveExitPromise();\n }\n await this._exitPromise;\n }\n _resume() {\n if (this.exited) {\n throw new Error("Go program has already exited");\n }\n this._inst.exports.resume();\n if (this.exited) {\n this._resolveExitPromise();\n }\n }\n _makeFuncWrapper(id) {\n const go = this;\n return function() {\n const event = { id, this: this, args: arguments };\n go._pendingEvent = event;\n go._resume();\n return event.result;\n };\n }\n };\n })();\n onmessage = ({ data: wasm }) => {\n let decoder = new TextDecoder();\n let fs = globalThis.fs;\n let stderr = "";\n fs.writeSync = (fd, buffer) => {\n if (fd === 1) {\n postMessage(buffer);\n } else if (fd === 2) {\n stderr += decoder.decode(buffer);\n let parts = stderr.split("\\n");\n if (parts.length > 1)\n console.log(parts.slice(0, -1).join("\\n"));\n stderr = parts[parts.length - 1];\n } else {\n throw new Error("Bad write");\n }\n return buffer.length;\n };\n let stdin = [];\n let resumeStdin;\n let stdinPos = 0;\n onmessage = ({ data }) => {\n if (data.length > 0) {\n stdin.push(data);\n if (resumeStdin)\n resumeStdin();\n }\n };\n fs.read = (fd, buffer, offset, length, position, callback) => {\n if (fd !== 0 || offset !== 0 || length !== buffer.length || position !== null) {\n throw new Error("Bad read");\n }\n if (stdin.length === 0) {\n resumeStdin = () => fs.read(fd, buffer, offset, length, position, callback);\n return;\n }\n let first = stdin[0];\n let count = Math.max(0, Math.min(length, first.length - stdinPos));\n buffer.set(first.subarray(stdinPos, stdinPos + count), offset);\n stdinPos += count;\n if (stdinPos === first.length) {\n stdin.shift();\n stdinPos = 0;\n }\n callback(null, count);\n };\n let go = new globalThis.Go();\n go.argv = ["", `--service=${"0.15.4"}`];\n if (wasm instanceof WebAssembly.Module) {\n WebAssembly.instantiate(wasm, go.importObject).then((instance) => go.run(instance));\n } else {\n WebAssembly.instantiate(wasm, go.importObject).then(({ instance }) => go.run(instance));\n }\n };\n return (m) => onmessage(m);\n })'}(postMessage)`], { type: "text/javascript" });
1699
+ let blob = new Blob([`onmessage=${'((postMessage) => {\n // Copyright 2018 The Go Authors. All rights reserved.\n // Use of this source code is governed by a BSD-style\n // license that can be found in the LICENSE file.\n let onmessage;\n let globalThis = {};\n for (let o = self; o; o = Object.getPrototypeOf(o))\n for (let k of Object.getOwnPropertyNames(o))\n if (!(k in globalThis))\n Object.defineProperty(globalThis, k, { get: () => self[k] });\n "use strict";\n (() => {\n const enosys = () => {\n const err = new Error("not implemented");\n err.code = "ENOSYS";\n return err;\n };\n if (!globalThis.fs) {\n let outputBuf = "";\n globalThis.fs = {\n constants: { O_WRONLY: -1, O_RDWR: -1, O_CREAT: -1, O_TRUNC: -1, O_APPEND: -1, O_EXCL: -1 },\n writeSync(fd, buf) {\n outputBuf += decoder.decode(buf);\n const nl = outputBuf.lastIndexOf("\\n");\n if (nl != -1) {\n console.log(outputBuf.substr(0, nl));\n outputBuf = outputBuf.substr(nl + 1);\n }\n return buf.length;\n },\n write(fd, buf, offset, length, position, callback) {\n if (offset !== 0 || length !== buf.length || position !== null) {\n callback(enosys());\n return;\n }\n const n = this.writeSync(fd, buf);\n callback(null, n);\n },\n chmod(path, mode, callback) {\n callback(enosys());\n },\n chown(path, uid, gid, callback) {\n callback(enosys());\n },\n close(fd, callback) {\n callback(enosys());\n },\n fchmod(fd, mode, callback) {\n callback(enosys());\n },\n fchown(fd, uid, gid, callback) {\n callback(enosys());\n },\n fstat(fd, callback) {\n callback(enosys());\n },\n fsync(fd, callback) {\n callback(null);\n },\n ftruncate(fd, length, callback) {\n callback(enosys());\n },\n lchown(path, uid, gid, callback) {\n callback(enosys());\n },\n link(path, link, callback) {\n callback(enosys());\n },\n lstat(path, callback) {\n callback(enosys());\n },\n mkdir(path, perm, callback) {\n callback(enosys());\n },\n open(path, flags, mode, callback) {\n callback(enosys());\n },\n read(fd, buffer, offset, length, position, callback) {\n callback(enosys());\n },\n readdir(path, callback) {\n callback(enosys());\n },\n readlink(path, callback) {\n callback(enosys());\n },\n rename(from, to, callback) {\n callback(enosys());\n },\n rmdir(path, callback) {\n callback(enosys());\n },\n stat(path, callback) {\n callback(enosys());\n },\n symlink(path, link, callback) {\n callback(enosys());\n },\n truncate(path, length, callback) {\n callback(enosys());\n },\n unlink(path, callback) {\n callback(enosys());\n },\n utimes(path, atime, mtime, callback) {\n callback(enosys());\n }\n };\n }\n if (!globalThis.process) {\n globalThis.process = {\n getuid() {\n return -1;\n },\n getgid() {\n return -1;\n },\n geteuid() {\n return -1;\n },\n getegid() {\n return -1;\n },\n getgroups() {\n throw enosys();\n },\n pid: -1,\n ppid: -1,\n umask() {\n throw enosys();\n },\n cwd() {\n throw enosys();\n },\n chdir() {\n throw enosys();\n }\n };\n }\n if (!globalThis.crypto) {\n throw new Error("globalThis.crypto is not available, polyfill required (crypto.getRandomValues only)");\n }\n if (!globalThis.performance) {\n throw new Error("globalThis.performance is not available, polyfill required (performance.now only)");\n }\n if (!globalThis.TextEncoder) {\n throw new Error("globalThis.TextEncoder is not available, polyfill required");\n }\n if (!globalThis.TextDecoder) {\n throw new Error("globalThis.TextDecoder is not available, polyfill required");\n }\n const encoder = new TextEncoder("utf-8");\n const decoder = new TextDecoder("utf-8");\n globalThis.Go = class {\n constructor() {\n this.argv = ["js"];\n this.env = {};\n this.exit = (code) => {\n if (code !== 0) {\n console.warn("exit code:", code);\n }\n };\n this._exitPromise = new Promise((resolve) => {\n this._resolveExitPromise = resolve;\n });\n this._pendingEvent = null;\n this._scheduledTimeouts = /* @__PURE__ */ new Map();\n this._nextCallbackTimeoutID = 1;\n const setInt64 = (addr, v) => {\n this.mem.setUint32(addr + 0, v, true);\n this.mem.setUint32(addr + 4, Math.floor(v / 4294967296), true);\n };\n const getInt64 = (addr) => {\n const low = this.mem.getUint32(addr + 0, true);\n const high = this.mem.getInt32(addr + 4, true);\n return low + high * 4294967296;\n };\n const loadValue = (addr) => {\n const f = this.mem.getFloat64(addr, true);\n if (f === 0) {\n return void 0;\n }\n if (!isNaN(f)) {\n return f;\n }\n const id = this.mem.getUint32(addr, true);\n return this._values[id];\n };\n const storeValue = (addr, v) => {\n const nanHead = 2146959360;\n if (typeof v === "number" && v !== 0) {\n if (isNaN(v)) {\n this.mem.setUint32(addr + 4, nanHead, true);\n this.mem.setUint32(addr, 0, true);\n return;\n }\n this.mem.setFloat64(addr, v, true);\n return;\n }\n if (v === void 0) {\n this.mem.setFloat64(addr, 0, true);\n return;\n }\n let id = this._ids.get(v);\n if (id === void 0) {\n id = this._idPool.pop();\n if (id === void 0) {\n id = this._values.length;\n }\n this._values[id] = v;\n this._goRefCounts[id] = 0;\n this._ids.set(v, id);\n }\n this._goRefCounts[id]++;\n let typeFlag = 0;\n switch (typeof v) {\n case "object":\n if (v !== null) {\n typeFlag = 1;\n }\n break;\n case "string":\n typeFlag = 2;\n break;\n case "symbol":\n typeFlag = 3;\n break;\n case "function":\n typeFlag = 4;\n break;\n }\n this.mem.setUint32(addr + 4, nanHead | typeFlag, true);\n this.mem.setUint32(addr, id, true);\n };\n const loadSlice = (addr) => {\n const array = getInt64(addr + 0);\n const len = getInt64(addr + 8);\n return new Uint8Array(this._inst.exports.mem.buffer, array, len);\n };\n const loadSliceOfValues = (addr) => {\n const array = getInt64(addr + 0);\n const len = getInt64(addr + 8);\n const a = new Array(len);\n for (let i = 0; i < len; i++) {\n a[i] = loadValue(array + i * 8);\n }\n return a;\n };\n const loadString = (addr) => {\n const saddr = getInt64(addr + 0);\n const len = getInt64(addr + 8);\n return decoder.decode(new DataView(this._inst.exports.mem.buffer, saddr, len));\n };\n const timeOrigin = Date.now() - performance.now();\n this.importObject = {\n go: {\n "runtime.wasmExit": (sp) => {\n sp >>>= 0;\n const code = this.mem.getInt32(sp + 8, true);\n this.exited = true;\n delete this._inst;\n delete this._values;\n delete this._goRefCounts;\n delete this._ids;\n delete this._idPool;\n this.exit(code);\n },\n "runtime.wasmWrite": (sp) => {\n sp >>>= 0;\n const fd = getInt64(sp + 8);\n const p = getInt64(sp + 16);\n const n = this.mem.getInt32(sp + 24, true);\n globalThis.fs.writeSync(fd, new Uint8Array(this._inst.exports.mem.buffer, p, n));\n },\n "runtime.resetMemoryDataView": (sp) => {\n sp >>>= 0;\n this.mem = new DataView(this._inst.exports.mem.buffer);\n },\n "runtime.nanotime1": (sp) => {\n sp >>>= 0;\n setInt64(sp + 8, (timeOrigin + performance.now()) * 1e6);\n },\n "runtime.walltime": (sp) => {\n sp >>>= 0;\n const msec = new Date().getTime();\n setInt64(sp + 8, msec / 1e3);\n this.mem.setInt32(sp + 16, msec % 1e3 * 1e6, true);\n },\n "runtime.scheduleTimeoutEvent": (sp) => {\n sp >>>= 0;\n const id = this._nextCallbackTimeoutID;\n this._nextCallbackTimeoutID++;\n this._scheduledTimeouts.set(id, setTimeout(\n () => {\n this._resume();\n while (this._scheduledTimeouts.has(id)) {\n console.warn("scheduleTimeoutEvent: missed timeout event");\n this._resume();\n }\n },\n getInt64(sp + 8) + 1\n ));\n this.mem.setInt32(sp + 16, id, true);\n },\n "runtime.clearTimeoutEvent": (sp) => {\n sp >>>= 0;\n const id = this.mem.getInt32(sp + 8, true);\n clearTimeout(this._scheduledTimeouts.get(id));\n this._scheduledTimeouts.delete(id);\n },\n "runtime.getRandomData": (sp) => {\n sp >>>= 0;\n crypto.getRandomValues(loadSlice(sp + 8));\n },\n "syscall/js.finalizeRef": (sp) => {\n sp >>>= 0;\n const id = this.mem.getUint32(sp + 8, true);\n this._goRefCounts[id]--;\n if (this._goRefCounts[id] === 0) {\n const v = this._values[id];\n this._values[id] = null;\n this._ids.delete(v);\n this._idPool.push(id);\n }\n },\n "syscall/js.stringVal": (sp) => {\n sp >>>= 0;\n storeValue(sp + 24, loadString(sp + 8));\n },\n "syscall/js.valueGet": (sp) => {\n sp >>>= 0;\n const result = Reflect.get(loadValue(sp + 8), loadString(sp + 16));\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 32, result);\n },\n "syscall/js.valueSet": (sp) => {\n sp >>>= 0;\n Reflect.set(loadValue(sp + 8), loadString(sp + 16), loadValue(sp + 32));\n },\n "syscall/js.valueDelete": (sp) => {\n sp >>>= 0;\n Reflect.deleteProperty(loadValue(sp + 8), loadString(sp + 16));\n },\n "syscall/js.valueIndex": (sp) => {\n sp >>>= 0;\n storeValue(sp + 24, Reflect.get(loadValue(sp + 8), getInt64(sp + 16)));\n },\n "syscall/js.valueSetIndex": (sp) => {\n sp >>>= 0;\n Reflect.set(loadValue(sp + 8), getInt64(sp + 16), loadValue(sp + 24));\n },\n "syscall/js.valueCall": (sp) => {\n sp >>>= 0;\n try {\n const v = loadValue(sp + 8);\n const m = Reflect.get(v, loadString(sp + 16));\n const args = loadSliceOfValues(sp + 32);\n const result = Reflect.apply(m, v, args);\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 56, result);\n this.mem.setUint8(sp + 64, 1);\n } catch (err) {\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 56, err);\n this.mem.setUint8(sp + 64, 0);\n }\n },\n "syscall/js.valueInvoke": (sp) => {\n sp >>>= 0;\n try {\n const v = loadValue(sp + 8);\n const args = loadSliceOfValues(sp + 16);\n const result = Reflect.apply(v, void 0, args);\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 40, result);\n this.mem.setUint8(sp + 48, 1);\n } catch (err) {\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 40, err);\n this.mem.setUint8(sp + 48, 0);\n }\n },\n "syscall/js.valueNew": (sp) => {\n sp >>>= 0;\n try {\n const v = loadValue(sp + 8);\n const args = loadSliceOfValues(sp + 16);\n const result = Reflect.construct(v, args);\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 40, result);\n this.mem.setUint8(sp + 48, 1);\n } catch (err) {\n sp = this._inst.exports.getsp() >>> 0;\n storeValue(sp + 40, err);\n this.mem.setUint8(sp + 48, 0);\n }\n },\n "syscall/js.valueLength": (sp) => {\n sp >>>= 0;\n setInt64(sp + 16, parseInt(loadValue(sp + 8).length));\n },\n "syscall/js.valuePrepareString": (sp) => {\n sp >>>= 0;\n const str = encoder.encode(String(loadValue(sp + 8)));\n storeValue(sp + 16, str);\n setInt64(sp + 24, str.length);\n },\n "syscall/js.valueLoadString": (sp) => {\n sp >>>= 0;\n const str = loadValue(sp + 8);\n loadSlice(sp + 16).set(str);\n },\n "syscall/js.valueInstanceOf": (sp) => {\n sp >>>= 0;\n this.mem.setUint8(sp + 24, loadValue(sp + 8) instanceof loadValue(sp + 16) ? 1 : 0);\n },\n "syscall/js.copyBytesToGo": (sp) => {\n sp >>>= 0;\n const dst = loadSlice(sp + 8);\n const src = loadValue(sp + 32);\n if (!(src instanceof Uint8Array || src instanceof Uint8ClampedArray)) {\n this.mem.setUint8(sp + 48, 0);\n return;\n }\n const toCopy = src.subarray(0, dst.length);\n dst.set(toCopy);\n setInt64(sp + 40, toCopy.length);\n this.mem.setUint8(sp + 48, 1);\n },\n "syscall/js.copyBytesToJS": (sp) => {\n sp >>>= 0;\n const dst = loadValue(sp + 8);\n const src = loadSlice(sp + 16);\n if (!(dst instanceof Uint8Array || dst instanceof Uint8ClampedArray)) {\n this.mem.setUint8(sp + 48, 0);\n return;\n }\n const toCopy = src.subarray(0, dst.length);\n dst.set(toCopy);\n setInt64(sp + 40, toCopy.length);\n this.mem.setUint8(sp + 48, 1);\n },\n "debug": (value) => {\n console.log(value);\n }\n }\n };\n }\n async run(instance) {\n if (!(instance instanceof WebAssembly.Instance)) {\n throw new Error("Go.run: WebAssembly.Instance expected");\n }\n this._inst = instance;\n this.mem = new DataView(this._inst.exports.mem.buffer);\n this._values = [\n NaN,\n 0,\n null,\n true,\n false,\n globalThis,\n this\n ];\n this._goRefCounts = new Array(this._values.length).fill(Infinity);\n this._ids = /* @__PURE__ */ new Map([\n [0, 1],\n [null, 2],\n [true, 3],\n [false, 4],\n [globalThis, 5],\n [this, 6]\n ]);\n this._idPool = [];\n this.exited = false;\n let offset = 4096;\n const strPtr = (str) => {\n const ptr = offset;\n const bytes = encoder.encode(str + "\\0");\n new Uint8Array(this.mem.buffer, offset, bytes.length).set(bytes);\n offset += bytes.length;\n if (offset % 8 !== 0) {\n offset += 8 - offset % 8;\n }\n return ptr;\n };\n const argc = this.argv.length;\n const argvPtrs = [];\n this.argv.forEach((arg) => {\n argvPtrs.push(strPtr(arg));\n });\n argvPtrs.push(0);\n const keys = Object.keys(this.env).sort();\n keys.forEach((key) => {\n argvPtrs.push(strPtr(`${key}=${this.env[key]}`));\n });\n argvPtrs.push(0);\n const argv = offset;\n argvPtrs.forEach((ptr) => {\n this.mem.setUint32(offset, ptr, true);\n this.mem.setUint32(offset + 4, 0, true);\n offset += 8;\n });\n const wasmMinDataAddr = 4096 + 8192;\n if (offset >= wasmMinDataAddr) {\n throw new Error("total length of command line and environment variables exceeds limit");\n }\n this._inst.exports.run(argc, argv);\n if (this.exited) {\n this._resolveExitPromise();\n }\n await this._exitPromise;\n }\n _resume() {\n if (this.exited) {\n throw new Error("Go program has already exited");\n }\n this._inst.exports.resume();\n if (this.exited) {\n this._resolveExitPromise();\n }\n }\n _makeFuncWrapper(id) {\n const go = this;\n return function() {\n const event = { id, this: this, args: arguments };\n go._pendingEvent = event;\n go._resume();\n return event.result;\n };\n }\n };\n })();\n onmessage = ({ data: wasm }) => {\n let decoder = new TextDecoder();\n let fs = globalThis.fs;\n let stderr = "";\n fs.writeSync = (fd, buffer) => {\n if (fd === 1) {\n postMessage(buffer);\n } else if (fd === 2) {\n stderr += decoder.decode(buffer);\n let parts = stderr.split("\\n");\n if (parts.length > 1)\n console.log(parts.slice(0, -1).join("\\n"));\n stderr = parts[parts.length - 1];\n } else {\n throw new Error("Bad write");\n }\n return buffer.length;\n };\n let stdin = [];\n let resumeStdin;\n let stdinPos = 0;\n onmessage = ({ data }) => {\n if (data.length > 0) {\n stdin.push(data);\n if (resumeStdin)\n resumeStdin();\n }\n };\n fs.read = (fd, buffer, offset, length, position, callback) => {\n if (fd !== 0 || offset !== 0 || length !== buffer.length || position !== null) {\n throw new Error("Bad read");\n }\n if (stdin.length === 0) {\n resumeStdin = () => fs.read(fd, buffer, offset, length, position, callback);\n return;\n }\n let first = stdin[0];\n let count = Math.max(0, Math.min(length, first.length - stdinPos));\n buffer.set(first.subarray(stdinPos, stdinPos + count), offset);\n stdinPos += count;\n if (stdinPos === first.length) {\n stdin.shift();\n stdinPos = 0;\n }\n callback(null, count);\n };\n let go = new globalThis.Go();\n go.argv = ["", `--service=${"0.15.8"}`];\n if (wasm instanceof WebAssembly.Module) {\n WebAssembly.instantiate(wasm, go.importObject).then((instance) => go.run(instance));\n } else {\n WebAssembly.instantiate(wasm, go.importObject).then(({ instance }) => go.run(instance));\n }\n };\n return (m) => onmessage(m);\n })'}(postMessage)`], { type: "text/javascript" });
1774
1700
  worker = new Worker(URL.createObjectURL(blob));
1775
1701
  } else {
1776
1702
  let onmessage = ((postMessage) => {
@@ -2352,7 +2278,7 @@ var startRunningService = async (wasmURL, wasmModule, useWorker) => {
2352
2278
  callback(null, count);
2353
2279
  };
2354
2280
  let go = new globalThis.Go();
2355
- go.argv = ["", `--service=${"0.15.4"}`];
2281
+ go.argv = ["", `--service=${"0.15.8"}`];
2356
2282
  if (wasm instanceof WebAssembly.Module) {
2357
2283
  WebAssembly.instantiate(wasm, go.importObject).then((instance) => go.run(instance));
2358
2284
  } else {