isomorfeus-asset-manager 0.12.0 → 0.12.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e92ad4c34e5b1c973ca4c16b8604fe46148c8e2eaad20b3e7dbe1f380094b13f
4
- data.tar.gz: 4862aeaf75d7dc1394fc51c7948fc0c62d91b121c4ec971475b952057c21bf8e
3
+ metadata.gz: 7162fb3d5c939906f313a318d584172442701208252f8aafc0eebedcf0c4ad9c
4
+ data.tar.gz: dc71e81701d13ecf72da6e55804dc71a20b9ddc4cbb13deac91c361015f7571f
5
5
  SHA512:
6
- metadata.gz: c746fdab0004a98d7a69d1b7e160b1334ba3a1c2e2eb9e8233ef524dd137b0bd45997c1f148168aae4afa27c6f92fc90d8aa2eabe2b69dbe7dfc971efd07d540
7
- data.tar.gz: c76e75768ee2f5284a8e3b3745ef1e21a5799c4e7ff1134919fa8b963080398cabfb1717dfce18eaa9d569ceb738a0feb89f718fd65faf78cefa6504664e0d4d
6
+ metadata.gz: bbe144c2ef38e4c50ea177ce6a186c05c2dbe80d1dd168f8d2c39c3526b7a7b37219e84ebb051c31f08f0555dbd996463b3ab6a08e093d20b3bbee89e8550cf4
7
+ data.tar.gz: 20fcde6cd21f5d9c280e7b359151f2d4eb61a629ef85c93258fb0872c9c71cf283e16493d30ba14eb9d25e6d642026347896fa82ced73a444c42bfd8372e5996
@@ -6,11 +6,14 @@ module Isomorfeus
6
6
  attr_reader :bundle_map
7
7
  attr_reader :bundle_map_gz
8
8
  attr_reader :mtime, :ruby_imports, :target
9
+ attr_reader :mutex
9
10
 
10
11
  def initialize(target = :browser)
12
+ @mutex = Mutex.new
11
13
  raise "Unknown asset target!" unless %i[browser node].include?(target)
12
14
  @target = target
13
15
  @bundled = false
16
+ @ruby_compiled = false
14
17
  @js_imports = []
15
18
  @ruby_imports = []
16
19
  end
@@ -31,7 +34,6 @@ module Isomorfeus
31
34
  @bundle_gz = Zlib::gzip(b, level: Zlib::BEST_COMPRESSION)
32
35
  @bundle_gz_size = @bundle_gz.size
33
36
  end
34
- @mtime = Time.now
35
37
  @bundle
36
38
  end
37
39
 
@@ -39,7 +41,6 @@ module Isomorfeus
39
41
  @bundled = true
40
42
  @bundle_map = m
41
43
  @bundle_map_gz = Zlib::gzip(m, level: Zlib::BEST_COMPRESSION) unless @target == :node
42
- @mtime = Time.now unless @mtime
43
44
  @bundle_map
44
45
  end
45
46
 
@@ -51,6 +52,10 @@ module Isomorfeus
51
52
  @ruby_imports.map(&:module_name)
52
53
  end
53
54
 
55
+ def touch
56
+ @mtime = Time.now
57
+ end
58
+
54
59
  def to_s
55
60
  js = @target == :node ? '' : "if (typeof globalThis !== 'undefined' && typeof global === 'undefined') { globalThis.global = globalThis; }\n"
56
61
  unless @js_imports.empty?
@@ -10,6 +10,7 @@ module Isomorfeus
10
10
  attr_accessor :root
11
11
  attr_accessor :app_root
12
12
  attr_accessor :assets_path
13
+ attr_accessor :asset_manager_tmpdir
13
14
  attr_accessor :node_paths
14
15
  attr_accessor :assets
15
16
 
@@ -66,4 +67,6 @@ module Isomorfeus
66
67
  'web.js' => Isomorfeus::AssetManager::Asset.new(:browser),
67
68
  'ssr.js' => Isomorfeus::AssetManager::Asset.new(:node)
68
69
  }
70
+ self.asset_manager_tmpdir = Dir.mktmpdir
71
+ Kernel.at_exit { FileUtils.rm_rf(Isomorfeus.asset_manager_tmpdir) if Dir.exist?(Isomorfeus.asset_manager_tmpdir) }
69
72
  end
@@ -16,7 +16,11 @@ module Isomorfeus
16
16
  js << "import { #{@imported_constants} as #{@js_constant}_#{@js_sub_constant} } from \"#{@package}\";\n"
17
17
  else
18
18
  if @imported_constants.is_a?(String)
19
- js << "import #{@imported_constants} from \"#{@package}\";\n"
19
+ if @imported_constants == '*'
20
+ js << "import * as #{@js_constant} from \"#{@package}\";\n"
21
+ else
22
+ js << "import #{@imported_constants} from \"#{@package}\";\n"
23
+ end
20
24
  else
21
25
  js << "import { #{@imported_constants.join(", ")} } from \"#{@package}\";\n"
22
26
  end
@@ -28,7 +32,11 @@ module Isomorfeus
28
32
  js << "global.#{@js_constant}.#{@js_sub_constant} = #{@js_constant}_#{@js_sub_constant};\n"
29
33
  else
30
34
  if @imported_constants.is_a?(String)
31
- js << "global.#{@js_constant}.#{@import_assignment ? @import_assignment : @imported_constants} = #{@imported_constants};\n"
35
+ if @imported_constants == '*'
36
+ js << "global.#{@js_constant} = #{@js_constant};\n"
37
+ else
38
+ js << "global.#{@js_constant}.#{@import_assignment ? @import_assignment : @imported_constants} = #{@imported_constants};\n"
39
+ end
32
40
  else
33
41
  @imported_constants.each do |imported_constant|
34
42
  js << "global.#{@js_constant}.#{@import_assignment ? @import_assignment : imported_constant} = #{imported_constant};\n"
@@ -44,13 +52,8 @@ module Isomorfeus
44
52
  elsif @js_constant.nil?
45
53
  js << "import \"#{@package}\";\n"
46
54
  else
47
- if @js_constant[0] == @js_constant[0].upcase
48
- js << "import * as #{@js_constant} from \"#{@package}\";\n"
49
- js << "global.#{@js_constant} = #{@js_constant};\n"
50
- else
51
- js << "import #{@js_constant} from \"#{@package}\";\n"
52
- js << "global.#{@js_constant} = #{@js_constant};\n"
53
- end
55
+ js << "import #{@js_constant} from \"#{@package}\";\n"
56
+ js << "global.#{@js_constant} = #{@js_constant};\n"
54
57
  end
55
58
  js
56
59
  end
@@ -26,7 +26,7 @@ module Isomorfeus
26
26
  asset_key = path_info[@assets_path_size..-1]
27
27
 
28
28
  # get js
29
- if Isomorfeus.assets.has_key?(asset_key)
29
+ if Isomorfeus.assets.key?(asset_key)
30
30
  asset = Isomorfeus.assets[asset_key]
31
31
  if asset && asset.target != :node
32
32
  asset_manager.transition(asset_key, asset)
@@ -75,9 +75,9 @@ module Isomorfeus
75
75
  end
76
76
 
77
77
  def should_gzip?(env)
78
- return true if env.has_key?('HTTP_ACCEPT_ENCODING') && env['HTTP_ACCEPT_ENCODING'].match?(/\bgzip\b/)
78
+ return true if env.key?('HTTP_ACCEPT_ENCODING') && env['HTTP_ACCEPT_ENCODING'].match?(/\bgzip\b/)
79
79
  return false if /\bno-transform\b/.match?(env[Rack::CACHE_CONTROL].to_s) || env['Content-Encoding']&.!~(/\bidentity\b/)
80
- return false if @compressible_types && !(env.has_key?(Rack::CONTENT_TYPE) && @compressible_types.include?(env[Rack::CONTENT_TYPE][/[^;]*/]))
80
+ return false if @compressible_types && !(env.key?(Rack::CONTENT_TYPE) && @compressible_types.include?(env[Rack::CONTENT_TYPE][/[^;]*/]))
81
81
  true
82
82
  end
83
83
  end
@@ -1,5 +1,5 @@
1
1
  module Isomorfeus
2
2
  class AssetManager
3
- VERSION = '0.12.0'
3
+ VERSION = '0.12.4'
4
4
  end
5
5
  end
@@ -1,13 +1,9 @@
1
1
  module Isomorfeus
2
2
  class AssetManager
3
- def self.finalize(tmpdir)
4
- proc { FileUtils.rm_rf(tmpdir) }
5
- end
6
-
7
3
  def initialize
8
4
  Isomorfeus.set_node_paths
9
5
 
10
- @tmpdir = Dir.mktmpdir
6
+ @tmpdir = Isomorfeus.asset_manager_tmpdir
11
7
  @imports_path = File.join(@tmpdir, 'imports')
12
8
  @output_path = File.join(@tmpdir, 'output')
13
9
  FileUtils.mkdir_p(@imports_path)
@@ -24,18 +20,18 @@ module Isomorfeus
24
20
  ssr_imports_file = File.join(imports_path, 'ssr.js')
25
21
  Isomorfeus.add_ssr_js_import(ssr_imports_file) if File.exist?(ssr_imports_file)
26
22
  end
27
-
28
- ObjectSpace.define_finalizer(self, self.class.finalize(@tmpdir))
29
23
  end
30
24
 
31
- def transition(asset_key, asset)
25
+ def transition(asset_key, asset, analyze: false)
32
26
  return if !Isomorfeus.development? && asset.bundled?
33
- compile_ruby_and_save(asset_key, asset)
34
- save_imports(asset_key, asset)
35
- run_esbuild(asset_key, asset)
36
- asset.bundle = bundled_asset(asset_key)
37
- if !Isomorfeus.production? && asset.target != :node
38
- asset.bundle_map = bundled_asset_map(asset_key)
27
+ asset.mutex.synchronize do
28
+ return if !Isomorfeus.development? && asset.bundled?
29
+ asset.touch
30
+ compile_ruby_and_save(asset_key, asset)
31
+ save_imports(asset_key, asset)
32
+ run_esbuild(asset_key, asset, analyze)
33
+ asset.bundle = bundled_asset(asset_key)
34
+ asset.bundle_map = bundled_asset_map(asset_key) unless Isomorfeus.production?
39
35
  end
40
36
  end
41
37
 
@@ -55,15 +51,17 @@ module Isomorfeus
55
51
 
56
52
  def compile_ruby_and_save(asset_key, asset)
57
53
  asset.ruby_imports.each do |ruby_import|
54
+ out_file = File.join(@imports_path, ruby_import.module_name + '.js')
55
+ next if !Isomorfeus.development? && File.exist?(out_file)
56
+ js_map_path = File.join(@imports_path, ruby_import.module_name + '.js.map')
58
57
  result = Opal::Builder.build(ruby_import.resolved_path, { es6_wrap: true })
59
58
  FileUtils.mkdir_p(File.join(*[@imports_path].concat(ruby_import.module_name.split('/')[0...-1]))) if ruby_import.module_name.include?('/')
60
59
  js = result.to_s
61
- if !Isomorfeus.production? && asset.target != :node
62
- js_map_path = File.join(@imports_path, ruby_import.module_name + '.js.map')
60
+ unless Isomorfeus.production?
63
61
  js << "\n//# sourceMappingURL=file://#{js_map_path}\n"
64
62
  File.write(js_map_path, result.source_map)
65
63
  end
66
- File.write(File.join(@imports_path, ruby_import.module_name + '.js'), js)
64
+ File.write(out_file, js)
67
65
  end
68
66
  end
69
67
 
@@ -75,16 +73,16 @@ module Isomorfeus
75
73
 
76
74
  def handle_errors(asset_key, result)
77
75
  # Todo simplify
78
- unless result['warnings'].empty?
79
- result['warnings'].each do |w|
80
- print_message(w, 'warning')
81
- unless w['notes'].empty?
82
- w['notes'].each do |n|
83
- print_message(n, 'note')
84
- end
85
- end
86
- end
87
- end
76
+ # unless result['warnings'].empty?
77
+ # result['warnings'].each do |w|
78
+ # print_message(w, 'warning')
79
+ # unless w['notes'].empty?
80
+ # w['notes'].each do |n|
81
+ # print_message(n, 'note')
82
+ # end
83
+ # end
84
+ # end
85
+ # end
88
86
  unless result['errors'].empty?
89
87
  result['errors'].each do |e|
90
88
  print_message(w, 'error')
@@ -116,29 +114,38 @@ module Isomorfeus
116
114
  # '.png': 'dataurl',
117
115
  # '.svg': 'text',
118
116
  # },
119
- def run_esbuild(asset_key, asset)
117
+ def run_esbuild(asset_key, asset, analyze = false)
120
118
  resolve_paths = ENV['NODE_PATH'].split(Gem.win_platform? ? ';' : ':')
121
119
  resolve_paths << 'node_modules'
122
120
  resolve_paths.uniq!
123
121
 
124
122
  result = @context.exec <<~JAVASCRIPT
125
- return esbuild.buildSync({
123
+ let res = esbuild.buildSync({
126
124
  entryPoints: [path.resolve(global.imports_path, '#{asset_key}')],
127
125
  bundle: true,
128
126
  color: false,
129
127
  format: '#{asset.target == :node ? 'cjs' : 'iife'}',
130
128
  legalComments: 'linked',
129
+ metafile: true,
131
130
  minify: #{Isomorfeus.production? ? 'true' : 'false'},
132
131
  nodePaths: #{resolve_paths},
133
132
  outdir: global.output_path,
134
133
  platform: '#{asset.target}',
135
134
  publicPath: '/assets',
136
- sourcemap: #{(!Isomorfeus.production? && asset.target != :node) ? 'true' : 'false'},
135
+ sourcemap: #{!Isomorfeus.production? ? 'true' : 'false'},
137
136
  splitting: false,
138
137
  target: 'es6',
139
138
  write: true
140
139
  });
140
+ global.res = res;
141
+ return res;
141
142
  JAVASCRIPT
143
+ if analyze
144
+ analysis = @context.await <<~JAVASCRIPT
145
+ esbuild.analyzeMetafile(global.res.metafile, { verbose: true });
146
+ JAVASCRIPT
147
+ STDOUT.puts "Bundle nalysis for #{asset_key}:\n#{analysis}\n"
148
+ end
142
149
  handle_errors(asset_key, result)
143
150
  end
144
151
  end
@@ -1,4 +1,5 @@
1
1
  require 'fileutils'
2
+ require 'thread'
2
3
  require 'tmpdir'
3
4
  require 'zlib'
4
5
  require 'opal'
@@ -4,9 +4,9 @@
4
4
  "requires": true,
5
5
  "packages": {
6
6
  "node_modules/esbuild-wasm": {
7
- "version": "0.12.25",
8
- "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.12.25.tgz",
9
- "integrity": "sha512-/lgWzZ1O5sXEVHw2gEQpSnVFc5kOMXiloNRQ3rASX+7/dswSMhlZ2Fw/4t4wTjqyq3cO51Fr48y5Yc4u4r74Cg==",
7
+ "version": "0.12.26",
8
+ "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.12.26.tgz",
9
+ "integrity": "sha512-vrPnZRSIfBmJ8q601ybZCNiPBUUonpvYBf365UN9ySEfBiC/OBJxNz0FVMmQ+mxbalkL2KlzKna31rD3UD0eRQ==",
10
10
  "bin": {
11
11
  "esbuild": "bin/esbuild"
12
12
  },
Binary file
@@ -322,6 +322,11 @@ export interface FormatMessagesOptions {
322
322
  terminalWidth?: number;
323
323
  }
324
324
 
325
+ export interface AnalyzeMetafileOptions {
326
+ color?: boolean;
327
+ verbose?: boolean;
328
+ }
329
+
325
330
  // This function invokes the "esbuild" command-line tool for you. It returns a
326
331
  // promise that either resolves with a "BuildResult" object or rejects with a
327
332
  // "BuildFailure" object.
@@ -356,6 +361,14 @@ export declare function transform(input: string, options?: TransformOptions): Pr
356
361
  // Works in browser: yes
357
362
  export declare function formatMessages(messages: PartialMessage[], options: FormatMessagesOptions): Promise<string[]>;
358
363
 
364
+ // Pretty-prints an analysis of the metafile JSON to a string. This is just for
365
+ // convenience to be able to match esbuild's pretty-printing exactly. If you want
366
+ // to customize it, you can just inspect the data in the metafile yourself.
367
+ //
368
+ // Works in node: yes
369
+ // Works in browser: yes
370
+ export declare function analyzeMetafile(metafile: Metafile | string, options?: AnalyzeMetafileOptions): Promise<string>;
371
+
359
372
  // A synchronous version of "build".
360
373
  //
361
374
  // Works in node: yes
@@ -375,6 +388,12 @@ export declare function transformSync(input: string, options?: TransformOptions)
375
388
  // Works in browser: no
376
389
  export declare function formatMessagesSync(messages: PartialMessage[], options: FormatMessagesOptions): string[];
377
390
 
391
+ // A synchronous version of "analyzeMetafile".
392
+ //
393
+ // Works in node: yes
394
+ // Works in browser: no
395
+ export declare function analyzeMetafileSync(metafile: Metafile | string, options?: AnalyzeMetafileOptions): string;
396
+
378
397
  // This configures the browser-based version of esbuild. It is necessary to
379
398
  // call this first and wait for the returned promise to be resolved before
380
399
  // making other API calls when using esbuild in the browser.
@@ -17,6 +17,9 @@ var __spreadValues = (a, b) => {
17
17
  return a;
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __require = typeof require !== "undefined" ? require : (x) => {
21
+ throw new Error('Dynamic require of "' + x + '" is not supported');
22
+ };
20
23
 
21
24
  // lib/shared/stdio_protocol.ts
22
25
  function encodePacket(packet) {
@@ -670,8 +673,8 @@ function createChannel(streamIn) {
670
673
  if (isFirstPacket) {
671
674
  isFirstPacket = false;
672
675
  let binaryVersion = String.fromCharCode(...bytes);
673
- if (binaryVersion !== "0.12.25") {
674
- throw new Error(`Cannot start service: Host version "${"0.12.25"}" does not match binary version ${JSON.stringify(binaryVersion)}`);
676
+ if (binaryVersion !== "0.12.26") {
677
+ throw new Error(`Cannot start service: Host version "${"0.12.26"}" does not match binary version ${JSON.stringify(binaryVersion)}`);
675
678
  }
676
679
  return;
677
680
  }
@@ -1312,13 +1315,35 @@ function createChannel(streamIn) {
1312
1315
  callback(null, response.messages);
1313
1316
  });
1314
1317
  };
1318
+ let analyzeMetafile2 = ({ callName, refs, metafile, options, callback }) => {
1319
+ if (options === void 0)
1320
+ options = {};
1321
+ let keys = {};
1322
+ let color = getFlag(options, keys, "color", mustBeBoolean);
1323
+ let verbose = getFlag(options, keys, "verbose", mustBeBoolean);
1324
+ checkForInvalidFlags(options, keys, `in ${callName}() call`);
1325
+ let request = {
1326
+ command: "analyze-metafile",
1327
+ metafile
1328
+ };
1329
+ if (color !== void 0)
1330
+ request.color = color;
1331
+ if (verbose !== void 0)
1332
+ request.verbose = verbose;
1333
+ sendRequest(refs, request, (error, response) => {
1334
+ if (error)
1335
+ return callback(new Error(error), null);
1336
+ callback(null, response.result);
1337
+ });
1338
+ };
1315
1339
  return {
1316
1340
  readFromStdout,
1317
1341
  afterClose,
1318
1342
  service: {
1319
1343
  buildOrServe,
1320
1344
  transform: transform2,
1321
- formatMessages: formatMessages2
1345
+ formatMessages: formatMessages2,
1346
+ analyzeMetafile: analyzeMetafile2
1322
1347
  }
1323
1348
  };
1324
1349
  }
@@ -1521,13 +1546,14 @@ function convertOutputFiles({ path, contents }) {
1521
1546
  }
1522
1547
 
1523
1548
  // lib/npm/browser.ts
1524
- var version = "0.12.25";
1549
+ var version = "0.12.26";
1525
1550
  var build = (options) => ensureServiceIsRunning().build(options);
1526
1551
  var serve = () => {
1527
1552
  throw new Error(`The "serve" API only works in node`);
1528
1553
  };
1529
1554
  var transform = (input, options) => ensureServiceIsRunning().transform(input, options);
1530
1555
  var formatMessages = (messages, options) => ensureServiceIsRunning().formatMessages(messages, options);
1556
+ var analyzeMetafile = (metafile, options) => ensureServiceIsRunning().analyzeMetafile(metafile, options);
1531
1557
  var buildSync = () => {
1532
1558
  throw new Error(`The "buildSync" API only works in node`);
1533
1559
  };
@@ -1537,6 +1563,9 @@ var transformSync = () => {
1537
1563
  var formatMessagesSync = () => {
1538
1564
  throw new Error(`The "formatMessagesSync" API only works in node`);
1539
1565
  };
1566
+ var analyzeMetafileSync = () => {
1567
+ throw new Error(`The "analyzeMetafileSync" API only works in node`);
1568
+ };
1540
1569
  var initializePromise;
1541
1570
  var longLivedService;
1542
1571
  var ensureServiceIsRunning = () => {
@@ -2267,7 +2296,7 @@ onmessage = ({ data: wasm }) => {
2267
2296
  callback(null, count);
2268
2297
  };
2269
2298
  let go = new global.Go();
2270
- go.argv = ["", \`--service=\${"0.12.25"}\`];
2299
+ go.argv = ["", \`--service=\${"0.12.26"}\`];
2271
2300
  WebAssembly.instantiate(wasm, go.importObject).then(({ instance }) => go.run(instance));
2272
2301
  };}`;
2273
2302
  let worker;
@@ -2325,10 +2354,19 @@ onmessage = ({ data: wasm }) => {
2325
2354
  messages,
2326
2355
  options,
2327
2356
  callback: (err, res2) => err ? reject(err) : resolve(res2)
2357
+ })),
2358
+ analyzeMetafile: (metafile, options) => new Promise((resolve, reject) => service.analyzeMetafile({
2359
+ callName: "analyzeMetafile",
2360
+ refs: null,
2361
+ metafile: typeof metafile === "string" ? metafile : JSON.stringify(metafile),
2362
+ options,
2363
+ callback: (err, res2) => err ? reject(err) : resolve(res2)
2328
2364
  }))
2329
2365
  };
2330
2366
  };
2331
2367
  export {
2368
+ analyzeMetafile,
2369
+ analyzeMetafileSync,
2332
2370
  build,
2333
2371
  buildSync,
2334
2372
  formatMessages,
@@ -1,8 +1,8 @@
1
- var Xe=Object.defineProperty,Ze=Object.defineProperties;var et=Object.getOwnPropertyDescriptors;var Me=Object.getOwnPropertySymbols;var tt=Object.prototype.hasOwnProperty,rt=Object.prototype.propertyIsEnumerable;var Le=(e,t,r)=>t in e?Xe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,$e=(e,t)=>{for(var r in t||(t={}))tt.call(t,r)&&Le(e,r,t[r]);if(Me)for(var r of Me(t))rt.call(t,r)&&Le(e,r,t[r]);return e},De=(e,t)=>Ze(e,et(t));function Pe(e){let t=o=>{if(o===null)r.write8(0);else if(typeof o=="boolean")r.write8(1),r.write8(+o);else if(typeof o=="number")r.write8(2),r.write32(o|0);else if(typeof o=="string")r.write8(3),r.write(se(o));else if(o instanceof Uint8Array)r.write8(4),r.write(o);else if(o instanceof Array){r.write8(5),r.write32(o.length);for(let f of o)t(f)}else{let f=Object.keys(o);r.write8(6),r.write32(f.length);for(let l of f)r.write(se(l)),t(o[l])}},r=new Be;return r.write32(0),r.write32(e.id<<1|+!e.isRequest),t(e.value),Fe(r.buf,r.len-4,0),r.buf.subarray(0,r.len)}function Ue(e){let t=()=>{switch(r.read8()){case 0:return null;case 1:return!!r.read8();case 2:return r.read32();case 3:return ue(r.read());case 4:return r.read();case 5:{let u=r.read32(),i=[];for(let v=0;v<u;v++)i.push(t());return i}case 6:{let u=r.read32(),i={};for(let v=0;v<u;v++)i[ue(r.read())]=t();return i}default:throw new Error("Invalid packet")}},r=new Be(e),o=r.read32(),f=(o&1)==0;o>>>=1;let l=t();if(r.ptr!==e.length)throw new Error("Invalid packet");return{id:o,isRequest:f,value:l}}var Be=class{constructor(t=new Uint8Array(1024)){this.buf=t;this.len=0;this.ptr=0}_write(t){if(this.len+t>this.buf.length){let r=new Uint8Array((this.len+t)*2);r.set(this.buf),this.buf=r}return this.len+=t,this.len-t}write8(t){let r=this._write(1);this.buf[r]=t}write32(t){let r=this._write(4);Fe(this.buf,t,r)}write(t){let r=this._write(4+t.length);Fe(this.buf,t.length,r),this.buf.set(t,r+4)}_read(t){if(this.ptr+t>this.buf.length)throw new Error("Invalid packet");return this.ptr+=t,this.ptr-t}read8(){return this.buf[this._read(1)]}read32(){return Te(this.buf,this._read(4))}read(){let t=this.read32(),r=new Uint8Array(t),o=this._read(r.length);return r.set(this.buf.subarray(o,o+t)),r}},se,ue;if(typeof TextEncoder!="undefined"&&typeof TextDecoder!="undefined"){let e=new TextEncoder,t=new TextDecoder;se=r=>e.encode(r),ue=r=>t.decode(r)}else if(typeof Buffer!="undefined")se=e=>{let t=Buffer.from(e);return t instanceof Uint8Array||(t=new Uint8Array(t)),t},ue=e=>{let{buffer:t,byteOffset:r,byteLength:o}=e;return Buffer.from(t,r,o).toString()};else throw new Error("No UTF-8 codec found");function Te(e,t){return e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24}function Fe(e,t,r){e[r++]=t,e[r++]=t>>8,e[r++]=t>>16,e[r++]=t>>24}function We(e){if(e+="",e.indexOf(",")>=0)throw new Error(`Invalid target: ${e}`);return e}var je=()=>null,W=e=>typeof e=="boolean"?null:"a boolean",nt=e=>typeof e=="boolean"||typeof e=="object"&&!Array.isArray(e)?null:"a boolean or an object",h=e=>typeof e=="string"?null:"a string",qe=e=>e instanceof RegExp?null:"a RegExp object",pe=e=>typeof e=="number"&&e===(e|0)?null:"an integer",Ae=e=>typeof e=="function"?null:"a function",q=e=>Array.isArray(e)?null:"an array",ge=e=>typeof e=="object"&&e!==null&&!Array.isArray(e)?null:"an object",lt=e=>typeof e=="object"&&e!==null?null:"an array or an object",Ke=e=>typeof e=="object"&&!Array.isArray(e)?null:"an object or null",Ne=e=>typeof e=="string"||typeof e=="boolean"?null:"a string or a boolean",it=e=>typeof e=="string"||typeof e=="object"&&e!==null&&!Array.isArray(e)?null:"a string or an object",st=e=>typeof e=="string"||Array.isArray(e)?null:"a string or an array",ot=e=>typeof e=="string"||e instanceof Uint8Array?null:"a string or a Uint8Array";function n(e,t,r,o){let f=e[r];if(t[r+""]=!0,f===void 0)return;let l=o(f);if(l!==null)throw new Error(`"${r}" must be ${l}`);return f}function z(e,t,r){for(let o in e)if(!(o in t))throw new Error(`Invalid option ${r}: "${o}"`)}function _e(e){let t=Object.create(null),r=n(e,t,"wasmURL",h),o=n(e,t,"worker",W);return z(e,t,"in startService() call"),{wasmURL:r,worker:o}}function Re(e,t,r,o,f){let l=n(t,r,"color",W),u=n(t,r,"logLevel",h),i=n(t,r,"logLimit",pe);l!==void 0?e.push(`--color=${l}`):o&&e.push("--color=true"),e.push(`--log-level=${u||f}`),e.push(`--log-limit=${i||0}`)}function Ve(e,t,r){let o=n(t,r,"legalComments",h),f=n(t,r,"sourceRoot",h),l=n(t,r,"sourcesContent",W),u=n(t,r,"target",st),i=n(t,r,"format",h),v=n(t,r,"globalName",h),S=n(t,r,"minify",W),x=n(t,r,"minifySyntax",W),A=n(t,r,"minifyWhitespace",W),K=n(t,r,"minifyIdentifiers",W),$=n(t,r,"charset",h),M=n(t,r,"treeShaking",Ne),ee=n(t,r,"jsx",h),Q=n(t,r,"jsxFactory",h),re=n(t,r,"jsxFragment",h),te=n(t,r,"define",ge),oe=n(t,r,"pure",q),ae=n(t,r,"keepNames",W);if(o&&e.push(`--legal-comments=${o}`),f!==void 0&&e.push(`--source-root=${f}`),l!==void 0&&e.push(`--sources-content=${l}`),u&&(Array.isArray(u)?e.push(`--target=${Array.from(u).map(We).join(",")}`):e.push(`--target=${We(u)}`)),i&&e.push(`--format=${i}`),v&&e.push(`--global-name=${v}`),S&&e.push("--minify"),x&&e.push("--minify-syntax"),A&&e.push("--minify-whitespace"),K&&e.push("--minify-identifiers"),$&&e.push(`--charset=${$}`),M!==void 0&&M!==!0&&e.push(`--tree-shaking=${M}`),ee&&e.push(`--jsx=${ee}`),Q&&e.push(`--jsx-factory=${Q}`),re&&e.push(`--jsx-fragment=${re}`),te)for(let H in te){if(H.indexOf("=")>=0)throw new Error(`Invalid define: ${H}`);e.push(`--define:${H}=${te[H]}`)}if(oe)for(let H of oe)e.push(`--pure:${H}`);ae&&e.push("--keep-names")}function at(e,t,r,o,f){var j;let l=[],u=[],i=Object.create(null),v=null,S=null,x=null;Re(l,t,i,r,o),Ve(l,t,i);let A=n(t,i,"sourcemap",Ne),K=n(t,i,"bundle",W),$=n(t,i,"watch",nt),M=n(t,i,"splitting",W),ee=n(t,i,"preserveSymlinks",W),Q=n(t,i,"metafile",W),re=n(t,i,"outfile",h),te=n(t,i,"outdir",h),oe=n(t,i,"outbase",h),ae=n(t,i,"platform",h),H=n(t,i,"tsconfig",h),ve=n(t,i,"resolveExtensions",q),we=n(t,i,"nodePaths",q),xe=n(t,i,"mainFields",q),ke=n(t,i,"conditions",q),p=n(t,i,"external",q),c=n(t,i,"loader",ge),a=n(t,i,"outExtension",ge),g=n(t,i,"publicPath",h),L=n(t,i,"entryNames",h),F=n(t,i,"chunkNames",h),B=n(t,i,"assetNames",h),C=n(t,i,"inject",q),P=n(t,i,"banner",ge),D=n(t,i,"footer",ge),R=n(t,i,"entryPoints",lt),N=n(t,i,"absWorkingDir",h),k=n(t,i,"stdin",ge),O=(j=n(t,i,"write",W))!=null?j:f,E=n(t,i,"allowOverwrite",W),m=n(t,i,"incremental",W)===!0;if(i.plugins=!0,z(t,i,`in ${e}() call`),A&&l.push(`--sourcemap${A===!0?"":`=${A}`}`),K&&l.push("--bundle"),E&&l.push("--allow-overwrite"),$)if(l.push("--watch"),typeof $=="boolean")x={};else{let s=Object.create(null),y=n($,s,"onRebuild",Ae);z($,s,`on "watch" in ${e}() call`),x={onRebuild:y}}if(M&&l.push("--splitting"),ee&&l.push("--preserve-symlinks"),Q&&l.push("--metafile"),re&&l.push(`--outfile=${re}`),te&&l.push(`--outdir=${te}`),oe&&l.push(`--outbase=${oe}`),ae&&l.push(`--platform=${ae}`),H&&l.push(`--tsconfig=${H}`),ve){let s=[];for(let y of ve){if(y+="",y.indexOf(",")>=0)throw new Error(`Invalid resolve extension: ${y}`);s.push(y)}l.push(`--resolve-extensions=${s.join(",")}`)}if(g&&l.push(`--public-path=${g}`),L&&l.push(`--entry-names=${L}`),F&&l.push(`--chunk-names=${F}`),B&&l.push(`--asset-names=${B}`),xe){let s=[];for(let y of xe){if(y+="",y.indexOf(",")>=0)throw new Error(`Invalid main field: ${y}`);s.push(y)}l.push(`--main-fields=${s.join(",")}`)}if(ke){let s=[];for(let y of ke){if(y+="",y.indexOf(",")>=0)throw new Error(`Invalid condition: ${y}`);s.push(y)}l.push(`--conditions=${s.join(",")}`)}if(p)for(let s of p)l.push(`--external:${s}`);if(P)for(let s in P){if(s.indexOf("=")>=0)throw new Error(`Invalid banner file type: ${s}`);l.push(`--banner:${s}=${P[s]}`)}if(D)for(let s in D){if(s.indexOf("=")>=0)throw new Error(`Invalid footer file type: ${s}`);l.push(`--footer:${s}=${D[s]}`)}if(C)for(let s of C)l.push(`--inject:${s}`);if(c)for(let s in c){if(s.indexOf("=")>=0)throw new Error(`Invalid loader extension: ${s}`);l.push(`--loader:${s}=${c[s]}`)}if(a)for(let s in a){if(s.indexOf("=")>=0)throw new Error(`Invalid out extension: ${s}`);l.push(`--out-extension:${s}=${a[s]}`)}if(R)if(Array.isArray(R))for(let s of R)u.push(["",s+""]);else for(let[s,y]of Object.entries(R))u.push([s+"",y+""]);if(k){let s=Object.create(null),y=n(k,s,"contents",h),d=n(k,s,"resolveDir",h),w=n(k,s,"sourcefile",h),I=n(k,s,"loader",h);z(k,s,'in "stdin" object'),w&&l.push(`--sourcefile=${w}`),I&&l.push(`--loader=${I}`),d&&(S=d+""),v=y?y+"":""}let b=[];if(we)for(let s of we)s+="",b.push(s);return{entries:u,flags:l,write:O,stdinContents:v,stdinResolveDir:S,absWorkingDir:N,incremental:m,nodePaths:b,watch:x}}function ut(e,t,r,o){let f=[],l=Object.create(null);Re(f,t,l,r,o),Ve(f,t,l);let u=n(t,l,"sourcemap",Ne),i=n(t,l,"tsconfigRaw",it),v=n(t,l,"sourcefile",h),S=n(t,l,"loader",h),x=n(t,l,"banner",h),A=n(t,l,"footer",h);return z(t,l,`in ${e}() call`),u&&f.push(`--sourcemap=${u===!0?"external":u}`),i&&f.push(`--tsconfig-raw=${typeof i=="string"?i:JSON.stringify(i)}`),v&&f.push(`--sourcefile=${v}`),S&&f.push(`--loader=${S}`),x&&f.push(`--banner=${x}`),A&&f.push(`--footer=${A}`),f}function Je(e){let t=new Map,r=new Map,o=new Map,f=new Map,l=0,u=!1,i=0,v=0,S=new Uint8Array(16*1024),x=0,A=p=>{let c=x+p.length;if(c>S.length){let g=new Uint8Array(c*2);g.set(S),S=g}S.set(p,x),x+=p.length;let a=0;for(;a+4<=x;){let g=Te(S,a);if(a+4+g>x)break;a+=4,re(S.subarray(a,a+g)),a+=g}a>0&&(S.copyWithin(0,a,x),x-=a)},K=()=>{u=!0;for(let p of t.values())p("The service was stopped",null);t.clear();for(let p of f.values())p.onWait("The service was stopped");f.clear();for(let p of o.values())try{p(new Error("The service was stopped"),null)}catch(c){console.error(c)}o.clear()},$=(p,c,a)=>{if(u)return a("The service is no longer running",null);let g=i++;t.set(g,(L,F)=>{try{a(L,F)}finally{p&&p.unref()}}),p&&p.ref(),e.writeToStdin(Pe({id:g,isRequest:!0,value:c}))},M=(p,c)=>{if(u)throw new Error("The service is no longer running");e.writeToStdin(Pe({id:p,isRequest:!1,value:c}))},ee=async(p,c)=>{try{switch(c.command){case"ping":{M(p,{});break}case"start":{let a=r.get(c.key);a?M(p,await a(c)):M(p,{});break}case"resolve":{let a=r.get(c.key);a?M(p,await a(c)):M(p,{});break}case"load":{let a=r.get(c.key);a?M(p,await a(c)):M(p,{});break}case"serve-request":{let a=f.get(c.serveID);a&&a.onRequest&&a.onRequest(c.args),M(p,{});break}case"serve-wait":{let a=f.get(c.serveID);a&&a.onWait(c.error),M(p,{});break}case"watch-rebuild":{let a=o.get(c.watchID);try{a&&a(null,c.args)}catch(g){console.error(g)}M(p,{});break}default:throw new Error("Invalid command: "+c.command)}}catch(a){M(p,{errors:[me(a,e,null,void 0,"")]})}},Q=!0,re=p=>{if(Q){Q=!1;let a=String.fromCharCode(...p);if(a!=="0.12.25")throw new Error(`Cannot start service: Host version "0.12.25" does not match binary version ${JSON.stringify(a)}`);return}let c=Ue(p);if(c.isRequest)ee(c.id,c.value);else{let a=t.get(c.id);t.delete(c.id),c.value.error?a(c.value.error,{}):a(null,c.value)}},te=async(p,c,a,g)=>{let L=[],F=[],B={},C={},P=0,D=0,R=[];c=[...c];for(let E of c){let m={};if(typeof E!="object")throw new Error(`Plugin at index ${D} must be an object`);let b=n(E,m,"name",h);if(typeof b!="string"||b==="")throw new Error(`Plugin at index ${D} is missing a name`);try{let j=n(E,m,"setup",Ae);if(typeof j!="function")throw new Error("Plugin is missing a setup function");z(E,m,`on plugin ${JSON.stringify(b)}`);let s={name:b,onResolve:[],onLoad:[]};D++;let y=j({initialOptions:p,onStart(d){let w='This error came from the "onStart" callback registered here',I=Oe(new Error(w),e,"onStart");L.push({name:b,callback:d,note:I})},onEnd(d){let w='This error came from the "onEnd" callback registered here',I=Oe(new Error(w),e,"onEnd");F.push({name:b,callback:d,note:I})},onResolve(d,w){let I='This error came from the "onResolve" callback registered here',U=Oe(new Error(I),e,"onResolve"),_={},V=n(d,_,"filter",qe),Y=n(d,_,"namespace",h);if(z(d,_,`in onResolve() call for plugin ${JSON.stringify(b)}`),V==null)throw new Error("onResolve() call is missing a filter");let J=P++;B[J]={name:b,callback:w,note:U},s.onResolve.push({id:J,filter:V.source,namespace:Y||""})},onLoad(d,w){let I='This error came from the "onLoad" callback registered here',U=Oe(new Error(I),e,"onLoad"),_={},V=n(d,_,"filter",qe),Y=n(d,_,"namespace",h);if(z(d,_,`in onLoad() call for plugin ${JSON.stringify(b)}`),V==null)throw new Error("onLoad() call is missing a filter");let J=P++;C[J]={name:b,callback:w,note:U},s.onLoad.push({id:J,filter:V.source,namespace:Y||""})}});y&&await y,R.push(s)}catch(j){return{ok:!1,error:j,pluginName:b}}}let N=async E=>{switch(E.command){case"start":{let m={errors:[],warnings:[]};return await Promise.all(L.map(async({name:b,callback:j,note:s})=>{try{let y=await j();if(y!=null){if(typeof y!="object")throw new Error(`Expected onStart() callback in plugin ${JSON.stringify(b)} to return an object`);let d={},w=n(y,d,"errors",q),I=n(y,d,"warnings",q);z(y,d,`from onStart() callback in plugin ${JSON.stringify(b)}`),w!=null&&m.errors.push(...ce(w,"errors",g,b)),I!=null&&m.warnings.push(...ce(I,"warnings",g,b))}}catch(y){m.errors.push(me(y,e,g,s&&s(),b))}})),m}case"resolve":{let m={},b="",j,s;for(let y of E.ids)try{({name:b,callback:j,note:s}=B[y]);let d=await j({path:E.path,importer:E.importer,namespace:E.namespace,resolveDir:E.resolveDir,kind:E.kind,pluginData:g.load(E.pluginData)});if(d!=null){if(typeof d!="object")throw new Error(`Expected onResolve() callback in plugin ${JSON.stringify(b)} to return an object`);let w={},I=n(d,w,"pluginName",h),U=n(d,w,"path",h),_=n(d,w,"namespace",h),V=n(d,w,"external",W),Y=n(d,w,"sideEffects",W),J=n(d,w,"pluginData",je),le=n(d,w,"errors",q),ie=n(d,w,"warnings",q),T=n(d,w,"watchFiles",q),G=n(d,w,"watchDirs",q);z(d,w,`from onResolve() callback in plugin ${JSON.stringify(b)}`),m.id=y,I!=null&&(m.pluginName=I),U!=null&&(m.path=U),_!=null&&(m.namespace=_),V!=null&&(m.external=V),Y!=null&&(m.sideEffects=Y),J!=null&&(m.pluginData=g.store(J)),le!=null&&(m.errors=ce(le,"errors",g,b)),ie!=null&&(m.warnings=ce(ie,"warnings",g,b)),T!=null&&(m.watchFiles=Se(T,"watchFiles")),G!=null&&(m.watchDirs=Se(G,"watchDirs"));break}}catch(d){return{id:y,errors:[me(d,e,g,s&&s(),b)]}}return m}case"load":{let m={},b="",j,s;for(let y of E.ids)try{({name:b,callback:j,note:s}=C[y]);let d=await j({path:E.path,namespace:E.namespace,pluginData:g.load(E.pluginData)});if(d!=null){if(typeof d!="object")throw new Error(`Expected onLoad() callback in plugin ${JSON.stringify(b)} to return an object`);let w={},I=n(d,w,"pluginName",h),U=n(d,w,"contents",ot),_=n(d,w,"resolveDir",h),V=n(d,w,"pluginData",je),Y=n(d,w,"loader",h),J=n(d,w,"errors",q),le=n(d,w,"warnings",q),ie=n(d,w,"watchFiles",q),T=n(d,w,"watchDirs",q);z(d,w,`from onLoad() callback in plugin ${JSON.stringify(b)}`),m.id=y,I!=null&&(m.pluginName=I),U instanceof Uint8Array?m.contents=U:U!=null&&(m.contents=se(U)),_!=null&&(m.resolveDir=_),V!=null&&(m.pluginData=g.store(V)),Y!=null&&(m.loader=Y),J!=null&&(m.errors=ce(J,"errors",g,b)),le!=null&&(m.warnings=ce(le,"warnings",g,b)),ie!=null&&(m.watchFiles=Se(ie,"watchFiles")),T!=null&&(m.watchDirs=Se(T,"watchDirs"));break}}catch(d){return{id:y,errors:[me(d,e,g,s&&s(),b)]}}return m}default:throw new Error("Invalid command: "+E.command)}},k=(E,m,b)=>b();F.length>0&&(k=(E,m,b)=>{(async()=>{for(let{name:j,callback:s,note:y}of F)try{await s(E)}catch(d){E.errors.push(await new Promise(w=>m(d,j,y&&y(),w)))}})().then(b)});let O=0;return{ok:!0,requestPlugins:R,runOnEndCallbacks:k,pluginRefs:{ref(){++O==1&&r.set(a,N)},unref(){--O==0&&r.delete(a)}}}},oe=(p,c,a)=>{let g={},L=n(c,g,"port",pe),F=n(c,g,"host",h),B=n(c,g,"servedir",h),C=n(c,g,"onRequest",Ae),P=l++,D,R=new Promise((N,k)=>{D=O=>{f.delete(P),O!==null?k(new Error(O)):N()}});return a.serve={serveID:P},z(c,g,"in serve() call"),L!==void 0&&(a.serve.port=L),F!==void 0&&(a.serve.host=F),B!==void 0&&(a.serve.servedir=B),f.set(P,{onRequest:C,onWait:D}),{wait:R,stop(){$(p,{command:"serve-stop",serveID:P},()=>{})}}},ae="warning",H="silent",ve=p=>{let c=v++,a=ze(),g,{refs:L,options:F,isTTY:B,callback:C}=p;if(typeof F=="object"){let R=F.plugins;if(R!==void 0){if(!Array.isArray(R))throw new Error('"plugins" must be an array');g=R}}let P=(R,N,k,O)=>{let E=[];try{Re(E,F,{},B,ae)}catch(b){}let m=me(R,e,a,k,N);$(L,{command:"error",flags:E,error:m},()=>{m.detail=a.load(m.detail),O(m)})},D=(R,N)=>{P(R,N,void 0,k=>{C(ye("Build failed",[k],[]),null)})};if(g&&g.length>0){if(e.isSync)return D(new Error("Cannot use plugins in synchronous API calls"),"");te(F,g,c,a).then(R=>{if(!R.ok)D(R.error,R.pluginName);else try{we(De($e({},p),{key:c,details:a,logPluginError:P,requestPlugins:R.requestPlugins,runOnEndCallbacks:R.runOnEndCallbacks,pluginRefs:R.pluginRefs}))}catch(N){D(N,"")}},R=>D(R,""))}else try{we(De($e({},p),{key:c,details:a,logPluginError:P,requestPlugins:null,runOnEndCallbacks:(R,N,k)=>k(),pluginRefs:null}))}catch(R){D(R,"")}},we=({callName:p,refs:c,serveOptions:a,options:g,isTTY:L,defaultWD:F,callback:B,key:C,details:P,logPluginError:D,requestPlugins:R,runOnEndCallbacks:N,pluginRefs:k})=>{let O={ref(){k&&k.ref(),c&&c.ref()},unref(){k&&k.unref(),c&&c.unref()}},E=!e.isBrowser,{entries:m,flags:b,write:j,stdinContents:s,stdinResolveDir:y,absWorkingDir:d,incremental:w,nodePaths:I,watch:U}=at(p,g,L,ae,E),_={command:"build",key:C,entries:m,flags:b,write:j,stdinContents:s,stdinResolveDir:y,absWorkingDir:d||F,incremental:w,nodePaths:I};R&&(_.plugins=R);let V=a&&oe(O,a,_),Y,J,le=(T,G)=>{T.outputFiles&&(G.outputFiles=T.outputFiles.map(ct)),T.metafile&&(G.metafile=JSON.parse(T.metafile)),T.writeToStdout!==void 0&&console.log(ue(T.writeToStdout).replace(/\n$/,""))},ie=(T,G)=>{let X={errors:he(T.errors,P),warnings:he(T.warnings,P)};le(T,X),N(X,D,()=>{if(X.errors.length>0)return G(ye("Build failed",X.errors,X.warnings),null);if(T.rebuildID!==void 0){if(!Y){let ne=!1;Y=()=>new Promise((fe,de)=>{if(ne||u)throw new Error("Cannot rebuild");$(O,{command:"rebuild",rebuildID:T.rebuildID},(Z,Ge)=>{if(Z)return G(ye("Build failed",[{pluginName:"",text:Z,location:null,notes:[],detail:void 0}],[]),null);ie(Ge,(Ee,Qe)=>{Ee?de(Ee):fe(Qe)})})}),O.ref(),Y.dispose=()=>{ne||(ne=!0,$(O,{command:"rebuild-dispose",rebuildID:T.rebuildID},()=>{}),O.unref())}}X.rebuild=Y}if(T.watchID!==void 0){if(!J){let ne=!1;O.ref(),J=()=>{ne||(ne=!0,o.delete(T.watchID),$(O,{command:"watch-stop",watchID:T.watchID},()=>{}),O.unref())},U&&o.set(T.watchID,(fe,de)=>{if(fe){U.onRebuild&&U.onRebuild(fe,null);return}let Z={errors:he(de.errors,P),warnings:he(de.warnings,P)};le(de,Z),N(Z,D,()=>{if(Z.errors.length>0){U.onRebuild&&U.onRebuild(ye("Build failed",Z.errors,Z.warnings),null);return}de.rebuildID!==void 0&&(Z.rebuild=Y),Z.stop=J,U.onRebuild&&U.onRebuild(null,Z)})})}X.stop=J}G(null,X)})};if(j&&e.isBrowser)throw new Error('Cannot enable "write" in the browser');if(w&&e.isSync)throw new Error('Cannot use "incremental" with a synchronous build');if(U&&e.isSync)throw new Error('Cannot use "watch" with a synchronous build');$(O,_,(T,G)=>{if(T)return B(new Error(T),null);if(V){let X=G,ne=!1;O.ref();let fe={port:X.port,host:X.host,wait:V.wait,stop(){ne||(ne=!0,V.stop(),O.unref())}};return O.ref(),V.wait.then(O.unref,O.unref),B(null,fe)}return ie(G,B)})};return{readFromStdout:A,afterClose:K,service:{buildOrServe:ve,transform:({callName:p,refs:c,input:a,options:g,isTTY:L,fs:F,callback:B})=>{let C=ze(),P=D=>{try{if(typeof a!="string")throw new Error('The input to "transform" must be a string');let R=ut(p,g,L,H);$(c,{command:"transform",flags:R,inputFS:D!==null,input:D!==null?D:a},(k,O)=>{if(k)return B(new Error(k),null);let E=he(O.errors,C),m=he(O.warnings,C),b=1,j=()=>--b==0&&B(null,{warnings:m,code:O.code,map:O.map});if(E.length>0)return B(ye("Transform failed",E,m),null);O.codeFS&&(b++,F.readFile(O.code,(s,y)=>{s!==null?B(s,null):(O.code=y,j())})),O.mapFS&&(b++,F.readFile(O.map,(s,y)=>{s!==null?B(s,null):(O.map=y,j())})),j()})}catch(R){let N=[];try{Re(N,g,{},L,H)}catch(O){}let k=me(R,e,C,void 0,"");$(c,{command:"error",flags:N,error:k},()=>{k.detail=C.load(k.detail),B(ye("Transform failed",[k],[]),null)})}};if(typeof a=="string"&&a.length>1024*1024){let D=P;P=()=>F.writeFile(a,D)}P(null)},formatMessages:({callName:p,refs:c,messages:a,options:g,callback:L})=>{let F=ce(a,"messages",null,"");if(!g)throw new Error(`Missing second argument in ${p}() call`);let B={},C=n(g,B,"kind",h),P=n(g,B,"color",W),D=n(g,B,"terminalWidth",pe);if(z(g,B,`in ${p}() call`),C===void 0)throw new Error(`Missing "kind" in ${p}() call`);if(C!=="error"&&C!=="warning")throw new Error(`Expected "kind" to be "error" or "warning" in ${p}() call`);let R={command:"format-msgs",messages:F,isWarning:C==="warning"};P!==void 0&&(R.color=P),D!==void 0&&(R.terminalWidth=D),$(c,R,(N,k)=>{if(N)return L(new Error(N),null);L(null,k.messages)})}}}}function ze(){let e=new Map,t=0;return{load(r){return e.get(r)},store(r){if(r===void 0)return-1;let o=t++;return e.set(o,r),o}}}function Oe(e,t,r){let o,f=!1;return()=>{if(f)return o;f=!0;try{let l=(e.stack+"").split(`
2
- `);l.splice(1,1);let u=Ye(t,l,r);if(u)return o={text:e.message,location:u},o}catch(l){}}}function me(e,t,r,o,f){let l="Internal error",u=null;try{l=(e&&e.message||e)+""}catch(i){}try{u=Ye(t,(e.stack+"").split(`
3
- `),"")}catch(i){}return{pluginName:f,text:l,location:u,notes:o?[o]:[],detail:r?r.store(e):-1}}function Ye(e,t,r){let o=" at ";if(e.readFileSync&&!t[0].startsWith(o)&&t[1].startsWith(o))for(let f=1;f<t.length;f++){let l=t[f];if(!!l.startsWith(o))for(l=l.slice(o.length);;){let u=/^(?:new |async )?\S+ \((.*)\)$/.exec(l);if(u){l=u[1];continue}if(u=/^eval at \S+ \((.*)\)(?:, \S+:\d+:\d+)?$/.exec(l),u){l=u[1];continue}if(u=/^(\S+):(\d+):(\d+)$/.exec(l),u){let i;try{i=e.readFileSync(u[1],"utf8")}catch(A){break}let v=i.split(/\r\n|\r|\n|\u2028|\u2029/)[+u[2]-1]||"",S=+u[3]-1,x=v.slice(S,S+r.length)===r?r.length:0;return{file:u[1],namespace:"file",line:+u[2],column:se(v.slice(0,S)).length,length:se(v.slice(S,S+x)).length,lineText:v+`
1
+ var Ze=Object.defineProperty,et=Object.defineProperties;var tt=Object.getOwnPropertyDescriptors;var Le=Object.getOwnPropertySymbols;var rt=Object.prototype.hasOwnProperty,nt=Object.prototype.propertyIsEnumerable;var Ue=(e,t,r)=>t in e?Ze(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Pe=(e,t)=>{for(var r in t||(t={}))rt.call(t,r)&&Ue(e,r,t[r]);if(Le)for(var r of Le(t))nt.call(t,r)&&Ue(e,r,t[r]);return e},Me=(e,t)=>et(e,tt(t));var pt=typeof require!="undefined"?require:e=>{throw new Error('Dynamic require of "'+e+'" is not supported')};function Be(e){let t=s=>{if(s===null)r.write8(0);else if(typeof s=="boolean")r.write8(1),r.write8(+s);else if(typeof s=="number")r.write8(2),r.write32(s|0);else if(typeof s=="string")r.write8(3),r.write(se(s));else if(s instanceof Uint8Array)r.write8(4),r.write(s);else if(s instanceof Array){r.write8(5),r.write32(s.length);for(let p of s)t(p)}else{let p=Object.keys(s);r.write8(6),r.write32(p.length);for(let l of p)r.write(se(l)),t(s[l])}},r=new Te;return r.write32(0),r.write32(e.id<<1|+!e.isRequest),t(e.value),Ae(r.buf,r.len-4,0),r.buf.subarray(0,r.len)}function qe(e){let t=()=>{switch(r.read8()){case 0:return null;case 1:return!!r.read8();case 2:return r.read32();case 3:return ue(r.read());case 4:return r.read();case 5:{let c=r.read32(),i=[];for(let w=0;w<c;w++)i.push(t());return i}case 6:{let c=r.read32(),i={};for(let w=0;w<c;w++)i[ue(r.read())]=t();return i}default:throw new Error("Invalid packet")}},r=new Te(e),s=r.read32(),p=(s&1)==0;s>>>=1;let l=t();if(r.ptr!==e.length)throw new Error("Invalid packet");return{id:s,isRequest:p,value:l}}var Te=class{constructor(t=new Uint8Array(1024)){this.buf=t;this.len=0;this.ptr=0}_write(t){if(this.len+t>this.buf.length){let r=new Uint8Array((this.len+t)*2);r.set(this.buf),this.buf=r}return this.len+=t,this.len-t}write8(t){let r=this._write(1);this.buf[r]=t}write32(t){let r=this._write(4);Ae(this.buf,t,r)}write(t){let r=this._write(4+t.length);Ae(this.buf,t.length,r),this.buf.set(t,r+4)}_read(t){if(this.ptr+t>this.buf.length)throw new Error("Invalid packet");return this.ptr+=t,this.ptr-t}read8(){return this.buf[this._read(1)]}read32(){return Fe(this.buf,this._read(4))}read(){let t=this.read32(),r=new Uint8Array(t),s=this._read(r.length);return r.set(this.buf.subarray(s,s+t)),r}},se,ue;if(typeof TextEncoder!="undefined"&&typeof TextDecoder!="undefined"){let e=new TextEncoder,t=new TextDecoder;se=r=>e.encode(r),ue=r=>t.decode(r)}else if(typeof Buffer!="undefined")se=e=>{let t=Buffer.from(e);return t instanceof Uint8Array||(t=new Uint8Array(t)),t},ue=e=>{let{buffer:t,byteOffset:r,byteLength:s}=e;return Buffer.from(t,r,s).toString()};else throw new Error("No UTF-8 codec found");function Fe(e,t){return e[t++]|e[t++]<<8|e[t++]<<16|e[t++]<<24}function Ae(e,t,r){e[r++]=t,e[r++]=t>>8,e[r++]=t>>16,e[r++]=t>>24}function We(e){if(e+="",e.indexOf(",")>=0)throw new Error(`Invalid target: ${e}`);return e}var Ne=()=>null,q=e=>typeof e=="boolean"?null:"a boolean",lt=e=>typeof e=="boolean"||typeof e=="object"&&!Array.isArray(e)?null:"a boolean or an object",y=e=>typeof e=="string"?null:"a string",ze=e=>e instanceof RegExp?null:"a RegExp object",pe=e=>typeof e=="number"&&e===(e|0)?null:"an integer",je=e=>typeof e=="function"?null:"a function",z=e=>Array.isArray(e)?null:"an array",ge=e=>typeof e=="object"&&e!==null&&!Array.isArray(e)?null:"an object",it=e=>typeof e=="object"&&e!==null?null:"an array or an object",Ke=e=>typeof e=="object"&&!Array.isArray(e)?null:"an object or null",Ie=e=>typeof e=="string"||typeof e=="boolean"?null:"a string or a boolean",st=e=>typeof e=="string"||typeof e=="object"&&e!==null&&!Array.isArray(e)?null:"a string or an object",ot=e=>typeof e=="string"||Array.isArray(e)?null:"a string or an array",at=e=>typeof e=="string"||e instanceof Uint8Array?null:"a string or a Uint8Array";function n(e,t,r,s){let p=e[r];if(t[r+""]=!0,p===void 0)return;let l=s(p);if(l!==null)throw new Error(`"${r}" must be ${l}`);return p}function _(e,t,r){for(let s in e)if(!(s in t))throw new Error(`Invalid option ${r}: "${s}"`)}function _e(e){let t=Object.create(null),r=n(e,t,"wasmURL",y),s=n(e,t,"worker",q);return _(e,t,"in startService() call"),{wasmURL:r,worker:s}}function Re(e,t,r,s,p){let l=n(t,r,"color",q),c=n(t,r,"logLevel",y),i=n(t,r,"logLimit",pe);l!==void 0?e.push(`--color=${l}`):s&&e.push("--color=true"),e.push(`--log-level=${c||p}`),e.push(`--log-limit=${i||0}`)}function Ve(e,t,r){let s=n(t,r,"legalComments",y),p=n(t,r,"sourceRoot",y),l=n(t,r,"sourcesContent",q),c=n(t,r,"target",ot),i=n(t,r,"format",y),w=n(t,r,"globalName",y),O=n(t,r,"minify",q),x=n(t,r,"minifySyntax",q),N=n(t,r,"minifyWhitespace",q),C=n(t,r,"minifyIdentifiers",q),k=n(t,r,"charset",y),L=n(t,r,"treeShaking",Ie),ee=n(t,r,"jsx",y),Q=n(t,r,"jsxFactory",y),re=n(t,r,"jsxFragment",y),te=n(t,r,"define",ge),oe=n(t,r,"pure",z),ae=n(t,r,"keepNames",q);if(s&&e.push(`--legal-comments=${s}`),p!==void 0&&e.push(`--source-root=${p}`),l!==void 0&&e.push(`--sources-content=${l}`),c&&(Array.isArray(c)?e.push(`--target=${Array.from(c).map(We).join(",")}`):e.push(`--target=${We(c)}`)),i&&e.push(`--format=${i}`),w&&e.push(`--global-name=${w}`),O&&e.push("--minify"),x&&e.push("--minify-syntax"),N&&e.push("--minify-whitespace"),C&&e.push("--minify-identifiers"),k&&e.push(`--charset=${k}`),L!==void 0&&L!==!0&&e.push(`--tree-shaking=${L}`),ee&&e.push(`--jsx=${ee}`),Q&&e.push(`--jsx-factory=${Q}`),re&&e.push(`--jsx-fragment=${re}`),te)for(let H in te){if(H.indexOf("=")>=0)throw new Error(`Invalid define: ${H}`);e.push(`--define:${H}=${te[H]}`)}if(oe)for(let H of oe)e.push(`--pure:${H}`);ae&&e.push("--keep-names")}function ut(e,t,r,s,p){var b;let l=[],c=[],i=Object.create(null),w=null,O=null,x=null;Re(l,t,i,r,s),Ve(l,t,i);let N=n(t,i,"sourcemap",Ie),C=n(t,i,"bundle",q),k=n(t,i,"watch",lt),L=n(t,i,"splitting",q),ee=n(t,i,"preserveSymlinks",q),Q=n(t,i,"metafile",q),re=n(t,i,"outfile",y),te=n(t,i,"outdir",y),oe=n(t,i,"outbase",y),ae=n(t,i,"platform",y),H=n(t,i,"tsconfig",y),ve=n(t,i,"resolveExtensions",z),we=n(t,i,"nodePaths",z),ke=n(t,i,"mainFields",z),Ee=n(t,i,"conditions",z),$e=n(t,i,"external",z),d=n(t,i,"loader",ge),u=n(t,i,"outExtension",ge),o=n(t,i,"publicPath",y),f=n(t,i,"entryNames",y),I=n(t,i,"chunkNames",y),B=n(t,i,"assetNames",y),M=n(t,i,"inject",z),j=n(t,i,"banner",ge),D=n(t,i,"footer",ge),E=n(t,i,"entryPoints",it),R=n(t,i,"absWorkingDir",y),T=n(t,i,"stdin",ge),F=(b=n(t,i,"write",q))!=null?b:p,S=n(t,i,"allowOverwrite",q),$=n(t,i,"incremental",q)===!0;if(i.plugins=!0,_(t,i,`in ${e}() call`),N&&l.push(`--sourcemap${N===!0?"":`=${N}`}`),C&&l.push("--bundle"),S&&l.push("--allow-overwrite"),k)if(l.push("--watch"),typeof k=="boolean")x={};else{let a=Object.create(null),h=n(k,a,"onRebuild",je);_(k,a,`on "watch" in ${e}() call`),x={onRebuild:h}}if(L&&l.push("--splitting"),ee&&l.push("--preserve-symlinks"),Q&&l.push("--metafile"),re&&l.push(`--outfile=${re}`),te&&l.push(`--outdir=${te}`),oe&&l.push(`--outbase=${oe}`),ae&&l.push(`--platform=${ae}`),H&&l.push(`--tsconfig=${H}`),ve){let a=[];for(let h of ve){if(h+="",h.indexOf(",")>=0)throw new Error(`Invalid resolve extension: ${h}`);a.push(h)}l.push(`--resolve-extensions=${a.join(",")}`)}if(o&&l.push(`--public-path=${o}`),f&&l.push(`--entry-names=${f}`),I&&l.push(`--chunk-names=${I}`),B&&l.push(`--asset-names=${B}`),ke){let a=[];for(let h of ke){if(h+="",h.indexOf(",")>=0)throw new Error(`Invalid main field: ${h}`);a.push(h)}l.push(`--main-fields=${a.join(",")}`)}if(Ee){let a=[];for(let h of Ee){if(h+="",h.indexOf(",")>=0)throw new Error(`Invalid condition: ${h}`);a.push(h)}l.push(`--conditions=${a.join(",")}`)}if($e)for(let a of $e)l.push(`--external:${a}`);if(j)for(let a in j){if(a.indexOf("=")>=0)throw new Error(`Invalid banner file type: ${a}`);l.push(`--banner:${a}=${j[a]}`)}if(D)for(let a in D){if(a.indexOf("=")>=0)throw new Error(`Invalid footer file type: ${a}`);l.push(`--footer:${a}=${D[a]}`)}if(M)for(let a of M)l.push(`--inject:${a}`);if(d)for(let a in d){if(a.indexOf("=")>=0)throw new Error(`Invalid loader extension: ${a}`);l.push(`--loader:${a}=${d[a]}`)}if(u)for(let a in u){if(a.indexOf("=")>=0)throw new Error(`Invalid out extension: ${a}`);l.push(`--out-extension:${a}=${u[a]}`)}if(E)if(Array.isArray(E))for(let a of E)c.push(["",a+""]);else for(let[a,h]of Object.entries(E))c.push([a+"",h+""]);if(T){let a=Object.create(null),h=n(T,a,"contents",y),P=n(T,a,"resolveDir",y),g=n(T,a,"sourcefile",y),v=n(T,a,"loader",y);_(T,a,'in "stdin" object'),g&&l.push(`--sourcefile=${g}`),v&&l.push(`--loader=${v}`),P&&(O=P+""),w=h?h+"":""}let m=[];if(we)for(let a of we)a+="",m.push(a);return{entries:c,flags:l,write:F,stdinContents:w,stdinResolveDir:O,absWorkingDir:R,incremental:$,nodePaths:m,watch:x}}function ct(e,t,r,s){let p=[],l=Object.create(null);Re(p,t,l,r,s),Ve(p,t,l);let c=n(t,l,"sourcemap",Ie),i=n(t,l,"tsconfigRaw",st),w=n(t,l,"sourcefile",y),O=n(t,l,"loader",y),x=n(t,l,"banner",y),N=n(t,l,"footer",y);return _(t,l,`in ${e}() call`),c&&p.push(`--sourcemap=${c===!0?"external":c}`),i&&p.push(`--tsconfig-raw=${typeof i=="string"?i:JSON.stringify(i)}`),w&&p.push(`--sourcefile=${w}`),O&&p.push(`--loader=${O}`),x&&p.push(`--banner=${x}`),N&&p.push(`--footer=${N}`),p}function Je(e){let t=new Map,r=new Map,s=new Map,p=new Map,l=0,c=!1,i=0,w=0,O=new Uint8Array(16*1024),x=0,N=d=>{let u=x+d.length;if(u>O.length){let f=new Uint8Array(u*2);f.set(O),O=f}O.set(d,x),x+=d.length;let o=0;for(;o+4<=x;){let f=Fe(O,o);if(o+4+f>x)break;o+=4,re(O.subarray(o,o+f)),o+=f}o>0&&(O.copyWithin(0,o,x),x-=o)},C=()=>{c=!0;for(let d of t.values())d("The service was stopped",null);t.clear();for(let d of p.values())d.onWait("The service was stopped");p.clear();for(let d of s.values())try{d(new Error("The service was stopped"),null)}catch(u){console.error(u)}s.clear()},k=(d,u,o)=>{if(c)return o("The service is no longer running",null);let f=i++;t.set(f,(I,B)=>{try{o(I,B)}finally{d&&d.unref()}}),d&&d.ref(),e.writeToStdin(Be({id:f,isRequest:!0,value:u}))},L=(d,u)=>{if(c)throw new Error("The service is no longer running");e.writeToStdin(Be({id:d,isRequest:!1,value:u}))},ee=async(d,u)=>{try{switch(u.command){case"ping":{L(d,{});break}case"start":{let o=r.get(u.key);o?L(d,await o(u)):L(d,{});break}case"resolve":{let o=r.get(u.key);o?L(d,await o(u)):L(d,{});break}case"load":{let o=r.get(u.key);o?L(d,await o(u)):L(d,{});break}case"serve-request":{let o=p.get(u.serveID);o&&o.onRequest&&o.onRequest(u.args),L(d,{});break}case"serve-wait":{let o=p.get(u.serveID);o&&o.onWait(u.error),L(d,{});break}case"watch-rebuild":{let o=s.get(u.watchID);try{o&&o(null,u.args)}catch(f){console.error(f)}L(d,{});break}default:throw new Error("Invalid command: "+u.command)}}catch(o){L(d,{errors:[me(o,e,null,void 0,"")]})}},Q=!0,re=d=>{if(Q){Q=!1;let o=String.fromCharCode(...d);if(o!=="0.12.26")throw new Error(`Cannot start service: Host version "0.12.26" does not match binary version ${JSON.stringify(o)}`);return}let u=qe(d);if(u.isRequest)ee(u.id,u.value);else{let o=t.get(u.id);t.delete(u.id),u.value.error?o(u.value.error,{}):o(null,u.value)}},te=async(d,u,o,f)=>{let I=[],B=[],M={},j={},D=0,E=0,R=[];u=[...u];for(let $ of u){let m={};if(typeof $!="object")throw new Error(`Plugin at index ${E} must be an object`);let b=n($,m,"name",y);if(typeof b!="string"||b==="")throw new Error(`Plugin at index ${E} is missing a name`);try{let a=n($,m,"setup",je);if(typeof a!="function")throw new Error("Plugin is missing a setup function");_($,m,`on plugin ${JSON.stringify(b)}`);let h={name:b,onResolve:[],onLoad:[]};E++;let P=a({initialOptions:d,onStart(g){let v='This error came from the "onStart" callback registered here',W=Oe(new Error(v),e,"onStart");I.push({name:b,callback:g,note:W})},onEnd(g){let v='This error came from the "onEnd" callback registered here',W=Oe(new Error(v),e,"onEnd");B.push({name:b,callback:g,note:W})},onResolve(g,v){let W='This error came from the "onResolve" callback registered here',U=Oe(new Error(W),e,"onResolve"),K={},V=n(g,K,"filter",ze),Y=n(g,K,"namespace",y);if(_(g,K,`in onResolve() call for plugin ${JSON.stringify(b)}`),V==null)throw new Error("onResolve() call is missing a filter");let J=D++;M[J]={name:b,callback:v,note:U},h.onResolve.push({id:J,filter:V.source,namespace:Y||""})},onLoad(g,v){let W='This error came from the "onLoad" callback registered here',U=Oe(new Error(W),e,"onLoad"),K={},V=n(g,K,"filter",ze),Y=n(g,K,"namespace",y);if(_(g,K,`in onLoad() call for plugin ${JSON.stringify(b)}`),V==null)throw new Error("onLoad() call is missing a filter");let J=D++;j[J]={name:b,callback:v,note:U},h.onLoad.push({id:J,filter:V.source,namespace:Y||""})}});P&&await P,R.push(h)}catch(a){return{ok:!1,error:a,pluginName:b}}}let T=async $=>{switch($.command){case"start":{let m={errors:[],warnings:[]};return await Promise.all(I.map(async({name:b,callback:a,note:h})=>{try{let P=await a();if(P!=null){if(typeof P!="object")throw new Error(`Expected onStart() callback in plugin ${JSON.stringify(b)} to return an object`);let g={},v=n(P,g,"errors",z),W=n(P,g,"warnings",z);_(P,g,`from onStart() callback in plugin ${JSON.stringify(b)}`),v!=null&&m.errors.push(...ce(v,"errors",f,b)),W!=null&&m.warnings.push(...ce(W,"warnings",f,b))}}catch(P){m.errors.push(me(P,e,f,h&&h(),b))}})),m}case"resolve":{let m={},b="",a,h;for(let P of $.ids)try{({name:b,callback:a,note:h}=M[P]);let g=await a({path:$.path,importer:$.importer,namespace:$.namespace,resolveDir:$.resolveDir,kind:$.kind,pluginData:f.load($.pluginData)});if(g!=null){if(typeof g!="object")throw new Error(`Expected onResolve() callback in plugin ${JSON.stringify(b)} to return an object`);let v={},W=n(g,v,"pluginName",y),U=n(g,v,"path",y),K=n(g,v,"namespace",y),V=n(g,v,"external",q),Y=n(g,v,"sideEffects",q),J=n(g,v,"pluginData",Ne),le=n(g,v,"errors",z),ie=n(g,v,"warnings",z),A=n(g,v,"watchFiles",z),G=n(g,v,"watchDirs",z);_(g,v,`from onResolve() callback in plugin ${JSON.stringify(b)}`),m.id=P,W!=null&&(m.pluginName=W),U!=null&&(m.path=U),K!=null&&(m.namespace=K),V!=null&&(m.external=V),Y!=null&&(m.sideEffects=Y),J!=null&&(m.pluginData=f.store(J)),le!=null&&(m.errors=ce(le,"errors",f,b)),ie!=null&&(m.warnings=ce(ie,"warnings",f,b)),A!=null&&(m.watchFiles=Se(A,"watchFiles")),G!=null&&(m.watchDirs=Se(G,"watchDirs"));break}}catch(g){return{id:P,errors:[me(g,e,f,h&&h(),b)]}}return m}case"load":{let m={},b="",a,h;for(let P of $.ids)try{({name:b,callback:a,note:h}=j[P]);let g=await a({path:$.path,namespace:$.namespace,pluginData:f.load($.pluginData)});if(g!=null){if(typeof g!="object")throw new Error(`Expected onLoad() callback in plugin ${JSON.stringify(b)} to return an object`);let v={},W=n(g,v,"pluginName",y),U=n(g,v,"contents",at),K=n(g,v,"resolveDir",y),V=n(g,v,"pluginData",Ne),Y=n(g,v,"loader",y),J=n(g,v,"errors",z),le=n(g,v,"warnings",z),ie=n(g,v,"watchFiles",z),A=n(g,v,"watchDirs",z);_(g,v,`from onLoad() callback in plugin ${JSON.stringify(b)}`),m.id=P,W!=null&&(m.pluginName=W),U instanceof Uint8Array?m.contents=U:U!=null&&(m.contents=se(U)),K!=null&&(m.resolveDir=K),V!=null&&(m.pluginData=f.store(V)),Y!=null&&(m.loader=Y),J!=null&&(m.errors=ce(J,"errors",f,b)),le!=null&&(m.warnings=ce(le,"warnings",f,b)),ie!=null&&(m.watchFiles=Se(ie,"watchFiles")),A!=null&&(m.watchDirs=Se(A,"watchDirs"));break}}catch(g){return{id:P,errors:[me(g,e,f,h&&h(),b)]}}return m}default:throw new Error("Invalid command: "+$.command)}},F=($,m,b)=>b();B.length>0&&(F=($,m,b)=>{(async()=>{for(let{name:a,callback:h,note:P}of B)try{await h($)}catch(g){$.errors.push(await new Promise(v=>m(g,a,P&&P(),v)))}})().then(b)});let S=0;return{ok:!0,requestPlugins:R,runOnEndCallbacks:F,pluginRefs:{ref(){++S==1&&r.set(o,T)},unref(){--S==0&&r.delete(o)}}}},oe=(d,u,o)=>{let f={},I=n(u,f,"port",pe),B=n(u,f,"host",y),M=n(u,f,"servedir",y),j=n(u,f,"onRequest",je),D=l++,E,R=new Promise((T,F)=>{E=S=>{p.delete(D),S!==null?F(new Error(S)):T()}});return o.serve={serveID:D},_(u,f,"in serve() call"),I!==void 0&&(o.serve.port=I),B!==void 0&&(o.serve.host=B),M!==void 0&&(o.serve.servedir=M),p.set(D,{onRequest:j,onWait:E}),{wait:R,stop(){k(d,{command:"serve-stop",serveID:D},()=>{})}}},ae="warning",H="silent",ve=d=>{let u=w++,o=Ye(),f,{refs:I,options:B,isTTY:M,callback:j}=d;if(typeof B=="object"){let R=B.plugins;if(R!==void 0){if(!Array.isArray(R))throw new Error('"plugins" must be an array');f=R}}let D=(R,T,F,S)=>{let $=[];try{Re($,B,{},M,ae)}catch(b){}let m=me(R,e,o,F,T);k(I,{command:"error",flags:$,error:m},()=>{m.detail=o.load(m.detail),S(m)})},E=(R,T)=>{D(R,T,void 0,F=>{j(ye("Build failed",[F],[]),null)})};if(f&&f.length>0){if(e.isSync)return E(new Error("Cannot use plugins in synchronous API calls"),"");te(B,f,u,o).then(R=>{if(!R.ok)E(R.error,R.pluginName);else try{we(Me(Pe({},d),{key:u,details:o,logPluginError:D,requestPlugins:R.requestPlugins,runOnEndCallbacks:R.runOnEndCallbacks,pluginRefs:R.pluginRefs}))}catch(T){E(T,"")}},R=>E(R,""))}else try{we(Me(Pe({},d),{key:u,details:o,logPluginError:D,requestPlugins:null,runOnEndCallbacks:(R,T,F)=>F(),pluginRefs:null}))}catch(R){E(R,"")}},we=({callName:d,refs:u,serveOptions:o,options:f,isTTY:I,defaultWD:B,callback:M,key:j,details:D,logPluginError:E,requestPlugins:R,runOnEndCallbacks:T,pluginRefs:F})=>{let S={ref(){F&&F.ref(),u&&u.ref()},unref(){F&&F.unref(),u&&u.unref()}},$=!e.isBrowser,{entries:m,flags:b,write:a,stdinContents:h,stdinResolveDir:P,absWorkingDir:g,incremental:v,nodePaths:W,watch:U}=ut(d,f,I,ae,$),K={command:"build",key:j,entries:m,flags:b,write:a,stdinContents:h,stdinResolveDir:P,absWorkingDir:g||B,incremental:v,nodePaths:W};R&&(K.plugins=R);let V=o&&oe(S,o,K),Y,J,le=(A,G)=>{A.outputFiles&&(G.outputFiles=A.outputFiles.map(ft)),A.metafile&&(G.metafile=JSON.parse(A.metafile)),A.writeToStdout!==void 0&&console.log(ue(A.writeToStdout).replace(/\n$/,""))},ie=(A,G)=>{let X={errors:he(A.errors,D),warnings:he(A.warnings,D)};le(A,X),T(X,E,()=>{if(X.errors.length>0)return G(ye("Build failed",X.errors,X.warnings),null);if(A.rebuildID!==void 0){if(!Y){let ne=!1;Y=()=>new Promise((fe,de)=>{if(ne||c)throw new Error("Cannot rebuild");k(S,{command:"rebuild",rebuildID:A.rebuildID},(Z,Qe)=>{if(Z)return G(ye("Build failed",[{pluginName:"",text:Z,location:null,notes:[],detail:void 0}],[]),null);ie(Qe,(De,Xe)=>{De?de(De):fe(Xe)})})}),S.ref(),Y.dispose=()=>{ne||(ne=!0,k(S,{command:"rebuild-dispose",rebuildID:A.rebuildID},()=>{}),S.unref())}}X.rebuild=Y}if(A.watchID!==void 0){if(!J){let ne=!1;S.ref(),J=()=>{ne||(ne=!0,s.delete(A.watchID),k(S,{command:"watch-stop",watchID:A.watchID},()=>{}),S.unref())},U&&s.set(A.watchID,(fe,de)=>{if(fe){U.onRebuild&&U.onRebuild(fe,null);return}let Z={errors:he(de.errors,D),warnings:he(de.warnings,D)};le(de,Z),T(Z,E,()=>{if(Z.errors.length>0){U.onRebuild&&U.onRebuild(ye("Build failed",Z.errors,Z.warnings),null);return}de.rebuildID!==void 0&&(Z.rebuild=Y),Z.stop=J,U.onRebuild&&U.onRebuild(null,Z)})})}X.stop=J}G(null,X)})};if(a&&e.isBrowser)throw new Error('Cannot enable "write" in the browser');if(v&&e.isSync)throw new Error('Cannot use "incremental" with a synchronous build');if(U&&e.isSync)throw new Error('Cannot use "watch" with a synchronous build');k(S,K,(A,G)=>{if(A)return M(new Error(A),null);if(V){let X=G,ne=!1;S.ref();let fe={port:X.port,host:X.host,wait:V.wait,stop(){ne||(ne=!0,V.stop(),S.unref())}};return S.ref(),V.wait.then(S.unref,S.unref),M(null,fe)}return ie(G,M)})};return{readFromStdout:N,afterClose:C,service:{buildOrServe:ve,transform:({callName:d,refs:u,input:o,options:f,isTTY:I,fs:B,callback:M})=>{let j=Ye(),D=E=>{try{if(typeof o!="string")throw new Error('The input to "transform" must be a string');let R=ct(d,f,I,H);k(u,{command:"transform",flags:R,inputFS:E!==null,input:E!==null?E:o},(F,S)=>{if(F)return M(new Error(F),null);let $=he(S.errors,j),m=he(S.warnings,j),b=1,a=()=>--b==0&&M(null,{warnings:m,code:S.code,map:S.map});if($.length>0)return M(ye("Transform failed",$,m),null);S.codeFS&&(b++,B.readFile(S.code,(h,P)=>{h!==null?M(h,null):(S.code=P,a())})),S.mapFS&&(b++,B.readFile(S.map,(h,P)=>{h!==null?M(h,null):(S.map=P,a())})),a()})}catch(R){let T=[];try{Re(T,f,{},I,H)}catch(S){}let F=me(R,e,j,void 0,"");k(u,{command:"error",flags:T,error:F},()=>{F.detail=j.load(F.detail),M(ye("Transform failed",[F],[]),null)})}};if(typeof o=="string"&&o.length>1024*1024){let E=D;D=()=>B.writeFile(o,E)}D(null)},formatMessages:({callName:d,refs:u,messages:o,options:f,callback:I})=>{let B=ce(o,"messages",null,"");if(!f)throw new Error(`Missing second argument in ${d}() call`);let M={},j=n(f,M,"kind",y),D=n(f,M,"color",q),E=n(f,M,"terminalWidth",pe);if(_(f,M,`in ${d}() call`),j===void 0)throw new Error(`Missing "kind" in ${d}() call`);if(j!=="error"&&j!=="warning")throw new Error(`Expected "kind" to be "error" or "warning" in ${d}() call`);let R={command:"format-msgs",messages:B,isWarning:j==="warning"};D!==void 0&&(R.color=D),E!==void 0&&(R.terminalWidth=E),k(u,R,(T,F)=>{if(T)return I(new Error(T),null);I(null,F.messages)})},analyzeMetafile:({callName:d,refs:u,metafile:o,options:f,callback:I})=>{f===void 0&&(f={});let B={},M=n(f,B,"color",q),j=n(f,B,"verbose",q);_(f,B,`in ${d}() call`);let D={command:"analyze-metafile",metafile:o};M!==void 0&&(D.color=M),j!==void 0&&(D.verbose=j),k(u,D,(E,R)=>{if(E)return I(new Error(E),null);I(null,R.result)})}}}}function Ye(){let e=new Map,t=0;return{load(r){return e.get(r)},store(r){if(r===void 0)return-1;let s=t++;return e.set(s,r),s}}}function Oe(e,t,r){let s,p=!1;return()=>{if(p)return s;p=!0;try{let l=(e.stack+"").split(`
2
+ `);l.splice(1,1);let c=He(t,l,r);if(c)return s={text:e.message,location:c},s}catch(l){}}}function me(e,t,r,s,p){let l="Internal error",c=null;try{l=(e&&e.message||e)+""}catch(i){}try{c=He(t,(e.stack+"").split(`
3
+ `),"")}catch(i){}return{pluginName:p,text:l,location:c,notes:s?[s]:[],detail:r?r.store(e):-1}}function He(e,t,r){let s=" at ";if(e.readFileSync&&!t[0].startsWith(s)&&t[1].startsWith(s))for(let p=1;p<t.length;p++){let l=t[p];if(!!l.startsWith(s))for(l=l.slice(s.length);;){let c=/^(?:new |async )?\S+ \((.*)\)$/.exec(l);if(c){l=c[1];continue}if(c=/^eval at \S+ \((.*)\)(?:, \S+:\d+:\d+)?$/.exec(l),c){l=c[1];continue}if(c=/^(\S+):(\d+):(\d+)$/.exec(l),c){let i;try{i=e.readFileSync(c[1],"utf8")}catch(N){break}let w=i.split(/\r\n|\r|\n|\u2028|\u2029/)[+c[2]-1]||"",O=+c[3]-1,x=w.slice(O,O+r.length)===r?r.length:0;return{file:c[1],namespace:"file",line:+c[2],column:se(w.slice(0,O)).length,length:se(w.slice(O,O+x)).length,lineText:w+`
4
4
  `+t.slice(1).join(`
5
- `),suggestion:""}}break}}return null}function ye(e,t,r){let o=5,f=t.length<1?"":` with ${t.length} error${t.length<2?"":"s"}:`+t.slice(0,o+1).map((u,i)=>{if(i===o)return`
6
- ...`;if(!u.location)return`
7
- error: ${u.text}`;let{file:v,line:S,column:x}=u.location,A=u.pluginName?`[plugin: ${u.pluginName}] `:"";return`
8
- ${v}:${S}:${x}: error: ${A}${u.text}`}).join(""),l=new Error(`${e}${f}`);return l.errors=t,l.warnings=r,l}function he(e,t){for(let r of e)r.detail=t.load(r.detail);return e}function He(e,t){if(e==null)return null;let r={},o=n(e,r,"file",h),f=n(e,r,"namespace",h),l=n(e,r,"line",pe),u=n(e,r,"column",pe),i=n(e,r,"length",pe),v=n(e,r,"lineText",h),S=n(e,r,"suggestion",h);return z(e,r,t),{file:o||"",namespace:f||"",line:l||0,column:u||0,length:i||0,lineText:v||"",suggestion:S||""}}function ce(e,t,r,o){let f=[],l=0;for(let u of e){let i={},v=n(u,i,"pluginName",h),S=n(u,i,"text",h),x=n(u,i,"location",Ke),A=n(u,i,"notes",q),K=n(u,i,"detail",je),$=`in element ${l} of "${t}"`;z(u,i,$);let M=[];if(A)for(let ee of A){let Q={},re=n(ee,Q,"text",h),te=n(ee,Q,"location",Ke);z(ee,Q,$),M.push({text:re||"",location:He(te,$)})}f.push({pluginName:v||o,text:S||"",location:He(x,$),notes:M,detail:r?r.store(K):-1}),l++}return f}function Se(e,t){let r=[];for(let o of e){if(typeof o!="string")throw new Error(`${JSON.stringify(t)} must be an array of strings`);r.push(o)}return r}function ct({path:e,contents:t}){let r=null;return{path:e,contents:t,get text(){return r===null&&(r=ue(t)),r}}}var ht="0.12.25",bt=e=>Ie().build(e),wt=()=>{throw new Error('The "serve" API only works in node')},vt=(e,t)=>Ie().transform(e,t),Rt=(e,t)=>Ie().formatMessages(e,t),Ot=()=>{throw new Error('The "buildSync" API only works in node')},St=()=>{throw new Error('The "transformSync" API only works in node')},xt=()=>{throw new Error('The "formatMessagesSync" API only works in node')},be,Ce,Ie=()=>{if(Ce)return Ce;throw be?new Error('You need to wait for the promise returned from "initialize" to be resolved before calling this'):new Error('You need to call "initialize" before calling this')},kt=e=>{e=_e(e||{});let t=e.wasmURL,r=e.worker!==!1;if(!t)throw new Error('Must provide the "wasmURL" option');if(t+="",be)throw new Error('Cannot call "initialize" more than once');return be=ft(t,r),be.catch(()=>{be=void 0}),be},ft=async(e,t)=>{let r=await fetch(e);if(!r.ok)throw new Error(`Failed to download ${JSON.stringify(e)}`);let o=await r.arrayBuffer(),f='{let global={};for(let o=self;o;o=Object.getPrototypeOf(o))for(let k of Object.getOwnPropertyNames(o))if(!(k in global))Object.defineProperty(global,k,{get:()=>self[k]});\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(()=>{if(typeof global=="undefined")if(typeof window!="undefined")window.global=window;else if(typeof self!="undefined")self.global=self;else throw new Error("cannot export Go (neither global, window nor self is defined)");if(!global.require&&typeof require!="undefined"&&(global.require=require),!global.fs&&global.require){const r=require("fs");typeof r=="object"&&r!==null&&Object.keys(r).length!==0&&(global.fs=Object.assign({},r,{write(i,s,n,l,f,h){if(n===0&&l===s.length&&f===null){if(i===process.stdout.fd){try{process.stdout.write(s,u=>u?h(u,0,null):h(null,l,s))}catch(u){h(u,0,null)}return}if(i===process.stderr.fd){try{process.stderr.write(s,u=>u?h(u,0,null):h(null,l,s))}catch(u){h(u,0,null)}return}}r.write(i,s,n,l,f,h)}}))}const a=()=>{const r=new Error("not implemented");return r.code="ENOSYS",r};if(!global.fs){let r="";global.fs={constants:{O_WRONLY:-1,O_RDWR:-1,O_CREAT:-1,O_TRUNC:-1,O_APPEND:-1,O_EXCL:-1},writeSync(i,s){r+=g.decode(s);const n=r.lastIndexOf(`\n`);return n!=-1&&(console.log(r.substr(0,n)),r=r.substr(n+1)),s.length},write(i,s,n,l,f,h){if(n!==0||l!==s.length||f!==null){h(a());return}const u=this.writeSync(i,s);h(null,u)},chmod(i,s,n){n(a())},chown(i,s,n,l){l(a())},close(i,s){s(a())},fchmod(i,s,n){n(a())},fchown(i,s,n,l){l(a())},fstat(i,s){s(a())},fsync(i,s){s(null)},ftruncate(i,s,n){n(a())},lchown(i,s,n,l){l(a())},link(i,s,n){n(a())},lstat(i,s){s(a())},mkdir(i,s,n){n(a())},open(i,s,n,l){l(a())},read(i,s,n,l,f,h){h(a())},readdir(i,s){s(a())},readlink(i,s){s(a())},rename(i,s,n){n(a())},rmdir(i,s){s(a())},stat(i,s){s(a())},symlink(i,s,n){n(a())},truncate(i,s,n){n(a())},unlink(i,s){s(a())},utimes(i,s,n,l){l(a())}}}if(global.process||(global.process={getuid(){return-1},getgid(){return-1},geteuid(){return-1},getegid(){return-1},getgroups(){throw a()},pid:-1,ppid:-1,umask(){throw a()},cwd(){throw a()},chdir(){throw a()}}),!global.crypto&&global.require){const r=require("crypto");global.crypto={getRandomValues(i){r.randomFillSync(i)}}}if(!global.crypto)throw new Error("global.crypto is not available, polyfill required (getRandomValues only)");if(global.performance||(global.performance={now(){const[r,i]=process.hrtime();return r*1e3+i/1e6}}),!global.TextEncoder&&global.require&&(global.TextEncoder=require("util").TextEncoder),!global.TextEncoder)throw new Error("global.TextEncoder is not available, polyfill required");if(!global.TextDecoder&&global.require&&(global.TextDecoder=require("util").TextDecoder),!global.TextDecoder)throw new Error("global.TextDecoder is not available, polyfill required");const d=new TextEncoder("utf-8"),g=new TextDecoder("utf-8");if(global.Go=class{constructor(){this.argv=["js"],this.env={},this.exit=e=>{e!==0&&console.warn("exit code:",e)},this._exitPromise=new Promise(e=>{this._resolveExitPromise=e}),this._pendingEvent=null,this._scheduledTimeouts=new Map,this._nextCallbackTimeoutID=1;const r=(e,t)=>{this.mem.setUint32(e+0,t,!0),this.mem.setUint32(e+4,Math.floor(t/4294967296),!0)},i=e=>{const t=this.mem.getUint32(e+0,!0),o=this.mem.getInt32(e+4,!0);return t+o*4294967296},s=e=>{const t=this.mem.getFloat64(e,!0);if(t===0)return;if(!isNaN(t))return t;const o=this.mem.getUint32(e,!0);return this._values[o]},n=(e,t)=>{const o=2146959360;if(typeof t=="number"&&t!==0){if(isNaN(t)){this.mem.setUint32(e+4,o,!0),this.mem.setUint32(e,0,!0);return}this.mem.setFloat64(e,t,!0);return}if(t===void 0){this.mem.setFloat64(e,0,!0);return}let c=this._ids.get(t);c===void 0&&(c=this._idPool.pop(),c===void 0&&(c=this._values.length),this._values[c]=t,this._goRefCounts[c]=0,this._ids.set(t,c)),this._goRefCounts[c]++;let m=0;switch(typeof t){case"object":t!==null&&(m=1);break;case"string":m=2;break;case"symbol":m=3;break;case"function":m=4;break}this.mem.setUint32(e+4,o|m,!0),this.mem.setUint32(e,c,!0)},l=e=>{const t=i(e+0),o=i(e+8);return new Uint8Array(this._inst.exports.mem.buffer,t,o)},f=e=>{const t=i(e+0),o=i(e+8),c=new Array(o);for(let m=0;m<o;m++)c[m]=s(t+m*8);return c},h=e=>{const t=i(e+0),o=i(e+8);return g.decode(new DataView(this._inst.exports.mem.buffer,t,o))},u=Date.now()-performance.now();this.importObject={go:{"runtime.wasmExit":e=>{e>>>=0;const t=this.mem.getInt32(e+8,!0);this.exited=!0,delete this._inst,delete this._values,delete this._goRefCounts,delete this._ids,delete this._idPool,this.exit(t)},"runtime.wasmWrite":e=>{e>>>=0;const t=i(e+8),o=i(e+16),c=this.mem.getInt32(e+24,!0);fs.writeSync(t,new Uint8Array(this._inst.exports.mem.buffer,o,c))},"runtime.resetMemoryDataView":e=>{e>>>=0,this.mem=new DataView(this._inst.exports.mem.buffer)},"runtime.nanotime1":e=>{e>>>=0,r(e+8,(u+performance.now())*1e6)},"runtime.walltime":e=>{e>>>=0;const t=new Date().getTime();r(e+8,t/1e3),this.mem.setInt32(e+16,t%1e3*1e6,!0)},"runtime.scheduleTimeoutEvent":e=>{e>>>=0;const t=this._nextCallbackTimeoutID;this._nextCallbackTimeoutID++,this._scheduledTimeouts.set(t,setTimeout(()=>{for(this._resume();this._scheduledTimeouts.has(t);)console.warn("scheduleTimeoutEvent: missed timeout event"),this._resume()},i(e+8)+1)),this.mem.setInt32(e+16,t,!0)},"runtime.clearTimeoutEvent":e=>{e>>>=0;const t=this.mem.getInt32(e+8,!0);clearTimeout(this._scheduledTimeouts.get(t)),this._scheduledTimeouts.delete(t)},"runtime.getRandomData":e=>{e>>>=0,crypto.getRandomValues(l(e+8))},"syscall/js.finalizeRef":e=>{e>>>=0;const t=this.mem.getUint32(e+8,!0);if(this._goRefCounts[t]--,this._goRefCounts[t]===0){const o=this._values[t];this._values[t]=null,this._ids.delete(o),this._idPool.push(t)}},"syscall/js.stringVal":e=>{e>>>=0,n(e+24,h(e+8))},"syscall/js.valueGet":e=>{e>>>=0;const t=Reflect.get(s(e+8),h(e+16));e=this._inst.exports.getsp()>>>0,n(e+32,t)},"syscall/js.valueSet":e=>{e>>>=0,Reflect.set(s(e+8),h(e+16),s(e+32))},"syscall/js.valueDelete":e=>{e>>>=0,Reflect.deleteProperty(s(e+8),h(e+16))},"syscall/js.valueIndex":e=>{e>>>=0,n(e+24,Reflect.get(s(e+8),i(e+16)))},"syscall/js.valueSetIndex":e=>{e>>>=0,Reflect.set(s(e+8),i(e+16),s(e+24))},"syscall/js.valueCall":e=>{e>>>=0;try{const t=s(e+8),o=Reflect.get(t,h(e+16)),c=f(e+32),m=Reflect.apply(o,t,c);e=this._inst.exports.getsp()>>>0,n(e+56,m),this.mem.setUint8(e+64,1)}catch(t){e=this._inst.exports.getsp()>>>0,n(e+56,t),this.mem.setUint8(e+64,0)}},"syscall/js.valueInvoke":e=>{e>>>=0;try{const t=s(e+8),o=f(e+16),c=Reflect.apply(t,void 0,o);e=this._inst.exports.getsp()>>>0,n(e+40,c),this.mem.setUint8(e+48,1)}catch(t){e=this._inst.exports.getsp()>>>0,n(e+40,t),this.mem.setUint8(e+48,0)}},"syscall/js.valueNew":e=>{e>>>=0;try{const t=s(e+8),o=f(e+16),c=Reflect.construct(t,o);e=this._inst.exports.getsp()>>>0,n(e+40,c),this.mem.setUint8(e+48,1)}catch(t){e=this._inst.exports.getsp()>>>0,n(e+40,t),this.mem.setUint8(e+48,0)}},"syscall/js.valueLength":e=>{e>>>=0,r(e+16,parseInt(s(e+8).length))},"syscall/js.valuePrepareString":e=>{e>>>=0;const t=d.encode(String(s(e+8)));n(e+16,t),r(e+24,t.length)},"syscall/js.valueLoadString":e=>{e>>>=0;const t=s(e+8);l(e+16).set(t)},"syscall/js.valueInstanceOf":e=>{e>>>=0,this.mem.setUint8(e+24,s(e+8)instanceof s(e+16)?1:0)},"syscall/js.copyBytesToGo":e=>{e>>>=0;const t=l(e+8),o=s(e+32);if(!(o instanceof Uint8Array||o instanceof Uint8ClampedArray)){this.mem.setUint8(e+48,0);return}const c=o.subarray(0,t.length);t.set(c),r(e+40,c.length),this.mem.setUint8(e+48,1)},"syscall/js.copyBytesToJS":e=>{e>>>=0;const t=s(e+8),o=l(e+16);if(!(t instanceof Uint8Array||t instanceof Uint8ClampedArray)){this.mem.setUint8(e+48,0);return}const c=o.subarray(0,t.length);t.set(c),r(e+40,c.length),this.mem.setUint8(e+48,1)},debug:e=>{console.log(e)}}}}async run(r){if(!(r instanceof WebAssembly.Instance))throw new Error("Go.run: WebAssembly.Instance expected");this._inst=r,this.mem=new DataView(this._inst.exports.mem.buffer),this._values=[NaN,0,null,!0,!1,global,this],this._goRefCounts=new Array(this._values.length).fill(1/0),this._ids=new Map([[0,1],[null,2],[!0,3],[!1,4],[global,5],[this,6]]),this._idPool=[],this.exited=!1;let i=4096;const s=u=>{const e=i,t=d.encode(u+"\\0");return new Uint8Array(this.mem.buffer,i,t.length).set(t),i+=t.length,i%8!=0&&(i+=8-i%8),e},n=this.argv.length,l=[];this.argv.forEach(u=>{l.push(s(u))}),l.push(0),Object.keys(this.env).sort().forEach(u=>{l.push(s(`${u}=${this.env[u]}`))}),l.push(0);const h=i;l.forEach(u=>{this.mem.setUint32(i,u,!0),this.mem.setUint32(i+4,0,!0),i+=8}),this._inst.exports.run(n,h),this.exited&&this._resolveExitPromise(),await this._exitPromise}_resume(){if(this.exited)throw new Error("Go program has already exited");this._inst.exports.resume(),this.exited&&this._resolveExitPromise()}_makeFuncWrapper(r){const i=this;return function(){const s={id:r,this:this,args:arguments};return i._pendingEvent=s,i._resume(),s.result}}},typeof module!="undefined"&&global.require&&global.require.main===module&&global.process&&global.process.versions&&!global.process.versions.electron){process.argv.length<3&&(console.error("usage: go_js_wasm_exec [wasm binary] [arguments]"),process.exit(1));const r=new Go;r.argv=process.argv.slice(2),r.env=Object.assign({TMPDIR:require("os").tmpdir()},process.env),r.exit=process.exit,WebAssembly.instantiate(fs.readFileSync(process.argv[2]),r.importObject).then(i=>(process.on("exit",s=>{s===0&&!r.exited&&(r._pendingEvent={id:0},r._resume())}),r.run(i.instance))).catch(i=>{console.error(i),process.exit(1)})}})();\nonmessage=({data:c})=>{let y=new TextDecoder,s=global.fs,a="";s.writeSync=(e,t)=>{if(e===1)postMessage(t);else if(e===2){a+=y.decode(t);let n=a.split(`\n`);n.length>1&&console.log(n.slice(0,-1).join(`\n`)),a=n[n.length-1]}else throw new Error("Bad write");return t.length};let l=[],i,r=0;onmessage=({data:e})=>{e.length>0&&(l.push(e),i&&i())},s.read=(e,t,n,d,h,m)=>{if(e!==0||n!==0||d!==t.length||h!==null)throw new Error("Bad read");if(l.length===0){i=()=>s.read(e,t,n,d,h,m);return}let g=l[0],u=Math.max(0,Math.min(d,g.length-r));t.set(g.subarray(r,r+u),n),r+=u,r===g.length&&(l.shift(),r=0),m(null,u)};let o=new global.Go;o.argv=["","--service=0.12.25"],WebAssembly.instantiate(c,o.importObject).then(({instance:e})=>o.run(e))};}',l;if(t){let v=new Blob([f],{type:"text/javascript"});l=new Worker(URL.createObjectURL(v))}else{let S=new Function("postMessage",f+"var onmessage; return m => onmessage(m)")(x=>l.onmessage({data:x}));l={onmessage:null,postMessage:x=>S({data:x}),terminate(){}}}l.postMessage(o),l.onmessage=({data:v})=>u(v);let{readFromStdout:u,service:i}=Je({writeToStdin(v){l.postMessage(v)},isSync:!1,isBrowser:!0});Ce={build:v=>new Promise((S,x)=>i.buildOrServe({callName:"build",refs:null,serveOptions:null,options:v,isTTY:!1,defaultWD:"/",callback:(A,K)=>A?x(A):S(K)})),transform:(v,S)=>new Promise((x,A)=>i.transform({callName:"transform",refs:null,input:v,options:S||{},isTTY:!1,fs:{readFile(K,$){$(new Error("Internal error"),null)},writeFile(K,$){$(null)}},callback:(K,$)=>K?A(K):x($)})),formatMessages:(v,S)=>new Promise((x,A)=>i.formatMessages({callName:"formatMessages",refs:null,messages:v,options:S,callback:(K,$)=>K?A(K):x($)}))}};export{bt as build,Ot as buildSync,Rt as formatMessages,xt as formatMessagesSync,kt as initialize,wt as serve,vt as transform,St as transformSync,ht as version};
5
+ `),suggestion:""}}break}}return null}function ye(e,t,r){let s=5,p=t.length<1?"":` with ${t.length} error${t.length<2?"":"s"}:`+t.slice(0,s+1).map((c,i)=>{if(i===s)return`
6
+ ...`;if(!c.location)return`
7
+ error: ${c.text}`;let{file:w,line:O,column:x}=c.location,N=c.pluginName?`[plugin: ${c.pluginName}] `:"";return`
8
+ ${w}:${O}:${x}: error: ${N}${c.text}`}).join(""),l=new Error(`${e}${p}`);return l.errors=t,l.warnings=r,l}function he(e,t){for(let r of e)r.detail=t.load(r.detail);return e}function Ge(e,t){if(e==null)return null;let r={},s=n(e,r,"file",y),p=n(e,r,"namespace",y),l=n(e,r,"line",pe),c=n(e,r,"column",pe),i=n(e,r,"length",pe),w=n(e,r,"lineText",y),O=n(e,r,"suggestion",y);return _(e,r,t),{file:s||"",namespace:p||"",line:l||0,column:c||0,length:i||0,lineText:w||"",suggestion:O||""}}function ce(e,t,r,s){let p=[],l=0;for(let c of e){let i={},w=n(c,i,"pluginName",y),O=n(c,i,"text",y),x=n(c,i,"location",Ke),N=n(c,i,"notes",z),C=n(c,i,"detail",Ne),k=`in element ${l} of "${t}"`;_(c,i,k);let L=[];if(N)for(let ee of N){let Q={},re=n(ee,Q,"text",y),te=n(ee,Q,"location",Ke);_(ee,Q,k),L.push({text:re||"",location:Ge(te,k)})}p.push({pluginName:w||s,text:O||"",location:Ge(x,k),notes:L,detail:r?r.store(C):-1}),l++}return p}function Se(e,t){let r=[];for(let s of e){if(typeof s!="string")throw new Error(`${JSON.stringify(t)} must be an array of strings`);r.push(s)}return r}function ft({path:e,contents:t}){let r=null;return{path:e,contents:t,get text(){return r===null&&(r=ue(t)),r}}}var wt="0.12.26",vt=e=>xe().build(e),Rt=()=>{throw new Error('The "serve" API only works in node')},Ot=(e,t)=>xe().transform(e,t),St=(e,t)=>xe().formatMessages(e,t),xt=(e,t)=>xe().analyzeMetafile(e,t),kt=()=>{throw new Error('The "buildSync" API only works in node')},Et=()=>{throw new Error('The "transformSync" API only works in node')},$t=()=>{throw new Error('The "formatMessagesSync" API only works in node')},Dt=()=>{throw new Error('The "analyzeMetafileSync" API only works in node')},be,Ce,xe=()=>{if(Ce)return Ce;throw be?new Error('You need to wait for the promise returned from "initialize" to be resolved before calling this'):new Error('You need to call "initialize" before calling this')},Pt=e=>{e=_e(e||{});let t=e.wasmURL,r=e.worker!==!1;if(!t)throw new Error('Must provide the "wasmURL" option');if(t+="",be)throw new Error('Cannot call "initialize" more than once');return be=dt(t,r),be.catch(()=>{be=void 0}),be},dt=async(e,t)=>{let r=await fetch(e);if(!r.ok)throw new Error(`Failed to download ${JSON.stringify(e)}`);let s=await r.arrayBuffer(),p='{let global={};for(let o=self;o;o=Object.getPrototypeOf(o))for(let k of Object.getOwnPropertyNames(o))if(!(k in global))Object.defineProperty(global,k,{get:()=>self[k]});\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(()=>{if(typeof global=="undefined")if(typeof window!="undefined")window.global=window;else if(typeof self!="undefined")self.global=self;else throw new Error("cannot export Go (neither global, window nor self is defined)");if(!global.require&&typeof require!="undefined"&&(global.require=require),!global.fs&&global.require){const r=require("fs");typeof r=="object"&&r!==null&&Object.keys(r).length!==0&&(global.fs=Object.assign({},r,{write(i,s,n,l,f,h){if(n===0&&l===s.length&&f===null){if(i===process.stdout.fd){try{process.stdout.write(s,u=>u?h(u,0,null):h(null,l,s))}catch(u){h(u,0,null)}return}if(i===process.stderr.fd){try{process.stderr.write(s,u=>u?h(u,0,null):h(null,l,s))}catch(u){h(u,0,null)}return}}r.write(i,s,n,l,f,h)}}))}const a=()=>{const r=new Error("not implemented");return r.code="ENOSYS",r};if(!global.fs){let r="";global.fs={constants:{O_WRONLY:-1,O_RDWR:-1,O_CREAT:-1,O_TRUNC:-1,O_APPEND:-1,O_EXCL:-1},writeSync(i,s){r+=g.decode(s);const n=r.lastIndexOf(`\n`);return n!=-1&&(console.log(r.substr(0,n)),r=r.substr(n+1)),s.length},write(i,s,n,l,f,h){if(n!==0||l!==s.length||f!==null){h(a());return}const u=this.writeSync(i,s);h(null,u)},chmod(i,s,n){n(a())},chown(i,s,n,l){l(a())},close(i,s){s(a())},fchmod(i,s,n){n(a())},fchown(i,s,n,l){l(a())},fstat(i,s){s(a())},fsync(i,s){s(null)},ftruncate(i,s,n){n(a())},lchown(i,s,n,l){l(a())},link(i,s,n){n(a())},lstat(i,s){s(a())},mkdir(i,s,n){n(a())},open(i,s,n,l){l(a())},read(i,s,n,l,f,h){h(a())},readdir(i,s){s(a())},readlink(i,s){s(a())},rename(i,s,n){n(a())},rmdir(i,s){s(a())},stat(i,s){s(a())},symlink(i,s,n){n(a())},truncate(i,s,n){n(a())},unlink(i,s){s(a())},utimes(i,s,n,l){l(a())}}}if(global.process||(global.process={getuid(){return-1},getgid(){return-1},geteuid(){return-1},getegid(){return-1},getgroups(){throw a()},pid:-1,ppid:-1,umask(){throw a()},cwd(){throw a()},chdir(){throw a()}}),!global.crypto&&global.require){const r=require("crypto");global.crypto={getRandomValues(i){r.randomFillSync(i)}}}if(!global.crypto)throw new Error("global.crypto is not available, polyfill required (getRandomValues only)");if(global.performance||(global.performance={now(){const[r,i]=process.hrtime();return r*1e3+i/1e6}}),!global.TextEncoder&&global.require&&(global.TextEncoder=require("util").TextEncoder),!global.TextEncoder)throw new Error("global.TextEncoder is not available, polyfill required");if(!global.TextDecoder&&global.require&&(global.TextDecoder=require("util").TextDecoder),!global.TextDecoder)throw new Error("global.TextDecoder is not available, polyfill required");const d=new TextEncoder("utf-8"),g=new TextDecoder("utf-8");if(global.Go=class{constructor(){this.argv=["js"],this.env={},this.exit=e=>{e!==0&&console.warn("exit code:",e)},this._exitPromise=new Promise(e=>{this._resolveExitPromise=e}),this._pendingEvent=null,this._scheduledTimeouts=new Map,this._nextCallbackTimeoutID=1;const r=(e,t)=>{this.mem.setUint32(e+0,t,!0),this.mem.setUint32(e+4,Math.floor(t/4294967296),!0)},i=e=>{const t=this.mem.getUint32(e+0,!0),o=this.mem.getInt32(e+4,!0);return t+o*4294967296},s=e=>{const t=this.mem.getFloat64(e,!0);if(t===0)return;if(!isNaN(t))return t;const o=this.mem.getUint32(e,!0);return this._values[o]},n=(e,t)=>{const o=2146959360;if(typeof t=="number"&&t!==0){if(isNaN(t)){this.mem.setUint32(e+4,o,!0),this.mem.setUint32(e,0,!0);return}this.mem.setFloat64(e,t,!0);return}if(t===void 0){this.mem.setFloat64(e,0,!0);return}let c=this._ids.get(t);c===void 0&&(c=this._idPool.pop(),c===void 0&&(c=this._values.length),this._values[c]=t,this._goRefCounts[c]=0,this._ids.set(t,c)),this._goRefCounts[c]++;let m=0;switch(typeof t){case"object":t!==null&&(m=1);break;case"string":m=2;break;case"symbol":m=3;break;case"function":m=4;break}this.mem.setUint32(e+4,o|m,!0),this.mem.setUint32(e,c,!0)},l=e=>{const t=i(e+0),o=i(e+8);return new Uint8Array(this._inst.exports.mem.buffer,t,o)},f=e=>{const t=i(e+0),o=i(e+8),c=new Array(o);for(let m=0;m<o;m++)c[m]=s(t+m*8);return c},h=e=>{const t=i(e+0),o=i(e+8);return g.decode(new DataView(this._inst.exports.mem.buffer,t,o))},u=Date.now()-performance.now();this.importObject={go:{"runtime.wasmExit":e=>{e>>>=0;const t=this.mem.getInt32(e+8,!0);this.exited=!0,delete this._inst,delete this._values,delete this._goRefCounts,delete this._ids,delete this._idPool,this.exit(t)},"runtime.wasmWrite":e=>{e>>>=0;const t=i(e+8),o=i(e+16),c=this.mem.getInt32(e+24,!0);fs.writeSync(t,new Uint8Array(this._inst.exports.mem.buffer,o,c))},"runtime.resetMemoryDataView":e=>{e>>>=0,this.mem=new DataView(this._inst.exports.mem.buffer)},"runtime.nanotime1":e=>{e>>>=0,r(e+8,(u+performance.now())*1e6)},"runtime.walltime":e=>{e>>>=0;const t=new Date().getTime();r(e+8,t/1e3),this.mem.setInt32(e+16,t%1e3*1e6,!0)},"runtime.scheduleTimeoutEvent":e=>{e>>>=0;const t=this._nextCallbackTimeoutID;this._nextCallbackTimeoutID++,this._scheduledTimeouts.set(t,setTimeout(()=>{for(this._resume();this._scheduledTimeouts.has(t);)console.warn("scheduleTimeoutEvent: missed timeout event"),this._resume()},i(e+8)+1)),this.mem.setInt32(e+16,t,!0)},"runtime.clearTimeoutEvent":e=>{e>>>=0;const t=this.mem.getInt32(e+8,!0);clearTimeout(this._scheduledTimeouts.get(t)),this._scheduledTimeouts.delete(t)},"runtime.getRandomData":e=>{e>>>=0,crypto.getRandomValues(l(e+8))},"syscall/js.finalizeRef":e=>{e>>>=0;const t=this.mem.getUint32(e+8,!0);if(this._goRefCounts[t]--,this._goRefCounts[t]===0){const o=this._values[t];this._values[t]=null,this._ids.delete(o),this._idPool.push(t)}},"syscall/js.stringVal":e=>{e>>>=0,n(e+24,h(e+8))},"syscall/js.valueGet":e=>{e>>>=0;const t=Reflect.get(s(e+8),h(e+16));e=this._inst.exports.getsp()>>>0,n(e+32,t)},"syscall/js.valueSet":e=>{e>>>=0,Reflect.set(s(e+8),h(e+16),s(e+32))},"syscall/js.valueDelete":e=>{e>>>=0,Reflect.deleteProperty(s(e+8),h(e+16))},"syscall/js.valueIndex":e=>{e>>>=0,n(e+24,Reflect.get(s(e+8),i(e+16)))},"syscall/js.valueSetIndex":e=>{e>>>=0,Reflect.set(s(e+8),i(e+16),s(e+24))},"syscall/js.valueCall":e=>{e>>>=0;try{const t=s(e+8),o=Reflect.get(t,h(e+16)),c=f(e+32),m=Reflect.apply(o,t,c);e=this._inst.exports.getsp()>>>0,n(e+56,m),this.mem.setUint8(e+64,1)}catch(t){e=this._inst.exports.getsp()>>>0,n(e+56,t),this.mem.setUint8(e+64,0)}},"syscall/js.valueInvoke":e=>{e>>>=0;try{const t=s(e+8),o=f(e+16),c=Reflect.apply(t,void 0,o);e=this._inst.exports.getsp()>>>0,n(e+40,c),this.mem.setUint8(e+48,1)}catch(t){e=this._inst.exports.getsp()>>>0,n(e+40,t),this.mem.setUint8(e+48,0)}},"syscall/js.valueNew":e=>{e>>>=0;try{const t=s(e+8),o=f(e+16),c=Reflect.construct(t,o);e=this._inst.exports.getsp()>>>0,n(e+40,c),this.mem.setUint8(e+48,1)}catch(t){e=this._inst.exports.getsp()>>>0,n(e+40,t),this.mem.setUint8(e+48,0)}},"syscall/js.valueLength":e=>{e>>>=0,r(e+16,parseInt(s(e+8).length))},"syscall/js.valuePrepareString":e=>{e>>>=0;const t=d.encode(String(s(e+8)));n(e+16,t),r(e+24,t.length)},"syscall/js.valueLoadString":e=>{e>>>=0;const t=s(e+8);l(e+16).set(t)},"syscall/js.valueInstanceOf":e=>{e>>>=0,this.mem.setUint8(e+24,s(e+8)instanceof s(e+16)?1:0)},"syscall/js.copyBytesToGo":e=>{e>>>=0;const t=l(e+8),o=s(e+32);if(!(o instanceof Uint8Array||o instanceof Uint8ClampedArray)){this.mem.setUint8(e+48,0);return}const c=o.subarray(0,t.length);t.set(c),r(e+40,c.length),this.mem.setUint8(e+48,1)},"syscall/js.copyBytesToJS":e=>{e>>>=0;const t=s(e+8),o=l(e+16);if(!(t instanceof Uint8Array||t instanceof Uint8ClampedArray)){this.mem.setUint8(e+48,0);return}const c=o.subarray(0,t.length);t.set(c),r(e+40,c.length),this.mem.setUint8(e+48,1)},debug:e=>{console.log(e)}}}}async run(r){if(!(r instanceof WebAssembly.Instance))throw new Error("Go.run: WebAssembly.Instance expected");this._inst=r,this.mem=new DataView(this._inst.exports.mem.buffer),this._values=[NaN,0,null,!0,!1,global,this],this._goRefCounts=new Array(this._values.length).fill(1/0),this._ids=new Map([[0,1],[null,2],[!0,3],[!1,4],[global,5],[this,6]]),this._idPool=[],this.exited=!1;let i=4096;const s=u=>{const e=i,t=d.encode(u+"\\0");return new Uint8Array(this.mem.buffer,i,t.length).set(t),i+=t.length,i%8!=0&&(i+=8-i%8),e},n=this.argv.length,l=[];this.argv.forEach(u=>{l.push(s(u))}),l.push(0),Object.keys(this.env).sort().forEach(u=>{l.push(s(`${u}=${this.env[u]}`))}),l.push(0);const h=i;l.forEach(u=>{this.mem.setUint32(i,u,!0),this.mem.setUint32(i+4,0,!0),i+=8}),this._inst.exports.run(n,h),this.exited&&this._resolveExitPromise(),await this._exitPromise}_resume(){if(this.exited)throw new Error("Go program has already exited");this._inst.exports.resume(),this.exited&&this._resolveExitPromise()}_makeFuncWrapper(r){const i=this;return function(){const s={id:r,this:this,args:arguments};return i._pendingEvent=s,i._resume(),s.result}}},typeof module!="undefined"&&global.require&&global.require.main===module&&global.process&&global.process.versions&&!global.process.versions.electron){process.argv.length<3&&(console.error("usage: go_js_wasm_exec [wasm binary] [arguments]"),process.exit(1));const r=new Go;r.argv=process.argv.slice(2),r.env=Object.assign({TMPDIR:require("os").tmpdir()},process.env),r.exit=process.exit,WebAssembly.instantiate(fs.readFileSync(process.argv[2]),r.importObject).then(i=>(process.on("exit",s=>{s===0&&!r.exited&&(r._pendingEvent={id:0},r._resume())}),r.run(i.instance))).catch(i=>{console.error(i),process.exit(1)})}})();\nonmessage=({data:c})=>{let y=new TextDecoder,s=global.fs,a="";s.writeSync=(e,t)=>{if(e===1)postMessage(t);else if(e===2){a+=y.decode(t);let n=a.split(`\n`);n.length>1&&console.log(n.slice(0,-1).join(`\n`)),a=n[n.length-1]}else throw new Error("Bad write");return t.length};let l=[],i,r=0;onmessage=({data:e})=>{e.length>0&&(l.push(e),i&&i())},s.read=(e,t,n,d,h,m)=>{if(e!==0||n!==0||d!==t.length||h!==null)throw new Error("Bad read");if(l.length===0){i=()=>s.read(e,t,n,d,h,m);return}let g=l[0],u=Math.max(0,Math.min(d,g.length-r));t.set(g.subarray(r,r+u),n),r+=u,r===g.length&&(l.shift(),r=0),m(null,u)};let o=new global.Go;o.argv=["","--service=0.12.26"],WebAssembly.instantiate(c,o.importObject).then(({instance:e})=>o.run(e))};}',l;if(t){let w=new Blob([p],{type:"text/javascript"});l=new Worker(URL.createObjectURL(w))}else{let O=new Function("postMessage",p+"var onmessage; return m => onmessage(m)")(x=>l.onmessage({data:x}));l={onmessage:null,postMessage:x=>O({data:x}),terminate(){}}}l.postMessage(s),l.onmessage=({data:w})=>c(w);let{readFromStdout:c,service:i}=Je({writeToStdin(w){l.postMessage(w)},isSync:!1,isBrowser:!0});Ce={build:w=>new Promise((O,x)=>i.buildOrServe({callName:"build",refs:null,serveOptions:null,options:w,isTTY:!1,defaultWD:"/",callback:(N,C)=>N?x(N):O(C)})),transform:(w,O)=>new Promise((x,N)=>i.transform({callName:"transform",refs:null,input:w,options:O||{},isTTY:!1,fs:{readFile(C,k){k(new Error("Internal error"),null)},writeFile(C,k){k(null)}},callback:(C,k)=>C?N(C):x(k)})),formatMessages:(w,O)=>new Promise((x,N)=>i.formatMessages({callName:"formatMessages",refs:null,messages:w,options:O,callback:(C,k)=>C?N(C):x(k)})),analyzeMetafile:(w,O)=>new Promise((x,N)=>i.analyzeMetafile({callName:"analyzeMetafile",refs:null,metafile:typeof w=="string"?w:JSON.stringify(w),options:O,callback:(C,k)=>C?N(C):x(k)}))}};export{xt as analyzeMetafile,Dt as analyzeMetafileSync,vt as build,kt as buildSync,St as formatMessages,$t as formatMessagesSync,Pt as initialize,Rt as serve,Ot as transform,Et as transformSync,wt as version};