esbuild 0.14.7 → 0.14.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/esbuild CHANGED
@@ -39,6 +39,7 @@ var knownUnixlikePackages = {
39
39
  "linux ia32 LE": "esbuild-linux-32",
40
40
  "linux mips64el LE": "esbuild-linux-mips64le",
41
41
  "linux ppc64 LE": "esbuild-linux-ppc64le",
42
+ "linux s390x BE": "esbuild-linux-s390x",
42
43
  "linux x64 LE": "esbuild-linux-64",
43
44
  "netbsd x64 LE": "esbuild-netbsd-64",
44
45
  "openbsd x64 LE": "esbuild-openbsd-64",
package/install.js CHANGED
@@ -55,6 +55,7 @@ var knownUnixlikePackages = {
55
55
  "linux ia32 LE": "esbuild-linux-32",
56
56
  "linux mips64el LE": "esbuild-linux-mips64le",
57
57
  "linux ppc64 LE": "esbuild-linux-ppc64le",
58
+ "linux s390x BE": "esbuild-linux-s390x",
58
59
  "linux x64 LE": "esbuild-linux-64",
59
60
  "netbsd x64 LE": "esbuild-netbsd-64",
60
61
  "openbsd x64 LE": "esbuild-openbsd-64",
@@ -92,8 +93,8 @@ var isToPathJS = true;
92
93
  function validateBinaryVersion(...command) {
93
94
  command.push("--version");
94
95
  const stdout = child_process.execFileSync(command.shift(), command).toString().trim();
95
- if (stdout !== "0.14.7") {
96
- throw new Error(`Expected ${JSON.stringify("0.14.7")} but got ${JSON.stringify(stdout)}`);
96
+ if (stdout !== "0.14.8") {
97
+ throw new Error(`Expected ${JSON.stringify("0.14.8")} but got ${JSON.stringify(stdout)}`);
97
98
  }
98
99
  }
99
100
  function isYarn() {
@@ -144,7 +145,7 @@ function installUsingNPM(pkg, subpath, binPath) {
144
145
  fs2.mkdirSync(installDir);
145
146
  try {
146
147
  fs2.writeFileSync(path2.join(installDir, "package.json"), "{}");
147
- child_process.execSync(`npm install --loglevel=error --prefer-offline --no-audit --progress=false ${pkg}@${"0.14.7"}`, { cwd: installDir, stdio: "pipe", env });
148
+ child_process.execSync(`npm install --loglevel=error --prefer-offline --no-audit --progress=false ${pkg}@${"0.14.8"}`, { cwd: installDir, stdio: "pipe", env });
148
149
  const installedBinPath = path2.join(installDir, "node_modules", pkg, subpath);
149
150
  fs2.renameSync(installedBinPath, binPath);
150
151
  } finally {
@@ -193,7 +194,7 @@ function maybeOptimizePackage(binPath) {
193
194
  }
194
195
  }
195
196
  async function downloadDirectlyFromNPM(pkg, subpath, binPath) {
196
- const url = `https://registry.npmjs.org/${pkg}/-/${pkg}-${"0.14.7"}.tgz`;
197
+ const url = `https://registry.npmjs.org/${pkg}/-/${pkg}-${"0.14.8"}.tgz`;
197
198
  console.error(`[esbuild] Trying to download ${JSON.stringify(url)}`);
198
199
  try {
199
200
  fs2.writeFileSync(binPath, extractFileFromTarGzip(await fetch(url), subpath));
package/lib/main.d.ts CHANGED
@@ -260,6 +260,8 @@ export interface Plugin {
260
260
 
261
261
  export interface PluginBuild {
262
262
  initialOptions: BuildOptions;
263
+ resolve(path: string, options?: ResolveOptions): Promise<ResolveResult>;
264
+
263
265
  onStart(callback: () =>
264
266
  (OnStartResult | null | void | Promise<OnStartResult | null | void>)): void;
265
267
  onEnd(callback: (result: BuildResult) =>
@@ -285,6 +287,26 @@ export interface PluginBuild {
285
287
  };
286
288
  }
287
289
 
290
+ export interface ResolveOptions {
291
+ importer?: string;
292
+ namespace?: string;
293
+ resolveDir?: string;
294
+ kind?: ImportKind;
295
+ pluginData?: any;
296
+ }
297
+
298
+ export interface ResolveResult {
299
+ errors: Message[];
300
+ warnings: Message[];
301
+
302
+ path: string;
303
+ external: boolean;
304
+ sideEffects: boolean;
305
+ namespace: string;
306
+ suffix: string;
307
+ pluginData: any;
308
+ }
309
+
288
310
  export interface OnStartResult {
289
311
  errors?: PartialMessage[];
290
312
  warnings?: PartialMessage[];
package/lib/main.js CHANGED
@@ -576,7 +576,6 @@ function createChannel(streamIn) {
576
576
  let pluginCallbacks = /* @__PURE__ */ new Map();
577
577
  let watchCallbacks = /* @__PURE__ */ new Map();
578
578
  let serveCallbacks = /* @__PURE__ */ new Map();
579
- let nextServeID = 0;
580
579
  let isClosed = false;
581
580
  let nextRequestID = 0;
582
581
  let nextBuildKey = 0;
@@ -653,7 +652,7 @@ function createChannel(streamIn) {
653
652
  sendResponse(id, {});
654
653
  break;
655
654
  }
656
- case "start": {
655
+ case "on-start": {
657
656
  let callback = pluginCallbacks.get(request.key);
658
657
  if (!callback)
659
658
  sendResponse(id, {});
@@ -661,7 +660,7 @@ function createChannel(streamIn) {
661
660
  sendResponse(id, await callback(request));
662
661
  break;
663
662
  }
664
- case "resolve": {
663
+ case "on-resolve": {
665
664
  let callback = pluginCallbacks.get(request.key);
666
665
  if (!callback)
667
666
  sendResponse(id, {});
@@ -669,7 +668,7 @@ function createChannel(streamIn) {
669
668
  sendResponse(id, await callback(request));
670
669
  break;
671
670
  }
672
- case "load": {
671
+ case "on-load": {
673
672
  let callback = pluginCallbacks.get(request.key);
674
673
  if (!callback)
675
674
  sendResponse(id, {});
@@ -678,21 +677,21 @@ function createChannel(streamIn) {
678
677
  break;
679
678
  }
680
679
  case "serve-request": {
681
- let callbacks = serveCallbacks.get(request.serveID);
680
+ let callbacks = serveCallbacks.get(request.key);
682
681
  if (callbacks && callbacks.onRequest)
683
682
  callbacks.onRequest(request.args);
684
683
  sendResponse(id, {});
685
684
  break;
686
685
  }
687
686
  case "serve-wait": {
688
- let callbacks = serveCallbacks.get(request.serveID);
687
+ let callbacks = serveCallbacks.get(request.key);
689
688
  if (callbacks)
690
689
  callbacks.onWait(request.error);
691
690
  sendResponse(id, {});
692
691
  break;
693
692
  }
694
693
  case "watch-rebuild": {
695
- let callback = watchCallbacks.get(request.watchID);
694
+ let callback = watchCallbacks.get(request.key);
696
695
  try {
697
696
  if (callback)
698
697
  callback(null, request.args);
@@ -714,8 +713,8 @@ function createChannel(streamIn) {
714
713
  if (isFirstPacket) {
715
714
  isFirstPacket = false;
716
715
  let binaryVersion = String.fromCharCode(...bytes);
717
- if (binaryVersion !== "0.14.7") {
718
- throw new Error(`Cannot start service: Host version "${"0.14.7"}" does not match binary version ${JSON.stringify(binaryVersion)}`);
716
+ if (binaryVersion !== "0.14.8") {
717
+ throw new Error(`Cannot start service: Host version "${"0.14.8"}" does not match binary version ${JSON.stringify(binaryVersion)}`);
719
718
  }
720
719
  return;
721
720
  }
@@ -731,7 +730,7 @@ function createChannel(streamIn) {
731
730
  callback(null, packet.value);
732
731
  }
733
732
  };
734
- let handlePlugins = async (initialOptions, plugins, buildKey, stash) => {
733
+ let handlePlugins = async (initialOptions, plugins, buildKey, stash, refs) => {
735
734
  let onStartCallbacks = [];
736
735
  let onEndCallbacks = [];
737
736
  let onResolveCallbacks = {};
@@ -739,12 +738,13 @@ function createChannel(streamIn) {
739
738
  let nextCallbackID = 0;
740
739
  let i = 0;
741
740
  let requestPlugins = [];
741
+ let isSetupDone = false;
742
742
  plugins = [...plugins];
743
743
  for (let item of plugins) {
744
744
  let keys = {};
745
745
  if (typeof item !== "object")
746
746
  throw new Error(`Plugin at index ${i} must be an object`);
747
- let name = getFlag(item, keys, "name", mustBeString);
747
+ const name = getFlag(item, keys, "name", mustBeString);
748
748
  if (typeof name !== "string" || name === "")
749
749
  throw new Error(`Plugin at index ${i} is missing a name`);
750
750
  try {
@@ -758,8 +758,55 @@ function createChannel(streamIn) {
758
758
  onLoad: []
759
759
  };
760
760
  i++;
761
+ let resolve = (path3, options = {}) => {
762
+ if (!isSetupDone)
763
+ throw new Error('Cannot call "resolve" before plugin setup has completed');
764
+ if (typeof path3 !== "string")
765
+ throw new Error(`The path to resolve must be a string`);
766
+ let keys2 = Object.create(null);
767
+ let importer = getFlag(options, keys2, "importer", mustBeString);
768
+ let namespace = getFlag(options, keys2, "namespace", mustBeString);
769
+ let resolveDir = getFlag(options, keys2, "resolveDir", mustBeString);
770
+ let kind = getFlag(options, keys2, "kind", mustBeString);
771
+ let pluginData = getFlag(options, keys2, "pluginData", canBeAnything);
772
+ checkForInvalidFlags(options, keys2, "in resolve() call");
773
+ return new Promise((resolve2, reject) => {
774
+ const request = {
775
+ command: "resolve",
776
+ path: path3,
777
+ key: buildKey,
778
+ pluginName: name
779
+ };
780
+ if (importer != null)
781
+ request.importer = importer;
782
+ if (namespace != null)
783
+ request.namespace = namespace;
784
+ if (resolveDir != null)
785
+ request.resolveDir = resolveDir;
786
+ if (kind != null)
787
+ request.kind = kind;
788
+ if (pluginData != null)
789
+ request.pluginData = stash.store(pluginData);
790
+ sendRequest(refs, request, (error, response) => {
791
+ if (error !== null)
792
+ reject(new Error(error));
793
+ else
794
+ resolve2({
795
+ errors: replaceDetailsInMessages(response.errors, stash),
796
+ warnings: replaceDetailsInMessages(response.warnings, stash),
797
+ path: response.path,
798
+ external: response.external,
799
+ sideEffects: response.sideEffects,
800
+ namespace: response.namespace,
801
+ suffix: response.suffix,
802
+ pluginData: stash.load(response.pluginData)
803
+ });
804
+ });
805
+ });
806
+ };
761
807
  let promise = setup({
762
808
  initialOptions,
809
+ resolve,
763
810
  onStart(callback2) {
764
811
  let registeredText = `This error came from the "onStart" callback registered here:`;
765
812
  let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onStart");
@@ -807,7 +854,7 @@ function createChannel(streamIn) {
807
854
  }
808
855
  const callback = async (request) => {
809
856
  switch (request.command) {
810
- case "start": {
857
+ case "on-start": {
811
858
  let response = { errors: [], warnings: [] };
812
859
  await Promise.all(onStartCallbacks.map(async ({ name, callback: callback2, note }) => {
813
860
  try {
@@ -830,7 +877,7 @@ function createChannel(streamIn) {
830
877
  }));
831
878
  return response;
832
879
  }
833
- case "resolve": {
880
+ case "on-resolve": {
834
881
  let response = {}, name = "", callback2, note;
835
882
  for (let id of request.ids) {
836
883
  try {
@@ -890,7 +937,7 @@ function createChannel(streamIn) {
890
937
  }
891
938
  return response;
892
939
  }
893
- case "load": {
940
+ case "on-load": {
894
941
  let response = {}, name = "", callback2, note;
895
942
  for (let id of request.ids) {
896
943
  try {
@@ -962,6 +1009,7 @@ function createChannel(streamIn) {
962
1009
  })().then(done);
963
1010
  };
964
1011
  }
1012
+ isSetupDone = true;
965
1013
  let refCount = 0;
966
1014
  return {
967
1015
  ok: true,
@@ -979,24 +1027,23 @@ function createChannel(streamIn) {
979
1027
  }
980
1028
  };
981
1029
  };
982
- let buildServeData = (refs, options, request) => {
1030
+ let buildServeData = (refs, options, request, key) => {
983
1031
  let keys = {};
984
1032
  let port = getFlag(options, keys, "port", mustBeInteger);
985
1033
  let host = getFlag(options, keys, "host", mustBeString);
986
1034
  let servedir = getFlag(options, keys, "servedir", mustBeString);
987
1035
  let onRequest = getFlag(options, keys, "onRequest", mustBeFunction);
988
- let serveID = nextServeID++;
989
1036
  let onWait;
990
1037
  let wait = new Promise((resolve, reject) => {
991
1038
  onWait = (error) => {
992
- serveCallbacks.delete(serveID);
1039
+ serveCallbacks.delete(key);
993
1040
  if (error !== null)
994
1041
  reject(new Error(error));
995
1042
  else
996
1043
  resolve();
997
1044
  };
998
1045
  });
999
- request.serve = { serveID };
1046
+ request.serve = {};
1000
1047
  checkForInvalidFlags(options, keys, `in serve() call`);
1001
1048
  if (port !== void 0)
1002
1049
  request.serve.port = port;
@@ -1004,14 +1051,14 @@ function createChannel(streamIn) {
1004
1051
  request.serve.host = host;
1005
1052
  if (servedir !== void 0)
1006
1053
  request.serve.servedir = servedir;
1007
- serveCallbacks.set(serveID, {
1054
+ serveCallbacks.set(key, {
1008
1055
  onRequest,
1009
1056
  onWait
1010
1057
  });
1011
1058
  return {
1012
1059
  wait,
1013
1060
  stop() {
1014
- sendRequest(refs, { command: "serve-stop", serveID }, () => {
1061
+ sendRequest(refs, { command: "serve-stop", key }, () => {
1015
1062
  });
1016
1063
  }
1017
1064
  };
@@ -1051,7 +1098,7 @@ function createChannel(streamIn) {
1051
1098
  if (plugins && plugins.length > 0) {
1052
1099
  if (streamIn.isSync)
1053
1100
  return handleError(new Error("Cannot use plugins in synchronous API calls"), "");
1054
- handlePlugins(options, plugins, key, details).then((result) => {
1101
+ handlePlugins(options, plugins, key, details, refs).then((result) => {
1055
1102
  if (!result.ok) {
1056
1103
  handleError(result.error, result.pluginName);
1057
1104
  } else {
@@ -1139,7 +1186,7 @@ function createChannel(streamIn) {
1139
1186
  };
1140
1187
  if (requestPlugins)
1141
1188
  request.plugins = requestPlugins;
1142
- let serve2 = serveOptions && buildServeData(refs, serveOptions, request);
1189
+ let serve2 = serveOptions && buildServeData(refs, serveOptions, request, key);
1143
1190
  let rebuild;
1144
1191
  let stop;
1145
1192
  let copyResponseToResult = (response, result) => {
@@ -1160,13 +1207,13 @@ function createChannel(streamIn) {
1160
1207
  if (result.errors.length > 0) {
1161
1208
  return callback2(failureErrorWithLog("Build failed", result.errors, result.warnings), null);
1162
1209
  }
1163
- if (response.rebuildID !== void 0) {
1210
+ if (response.rebuild) {
1164
1211
  if (!rebuild) {
1165
1212
  let isDisposed = false;
1166
1213
  rebuild = () => new Promise((resolve, reject) => {
1167
1214
  if (isDisposed || isClosed)
1168
1215
  throw new Error("Cannot rebuild");
1169
- sendRequest(refs, { command: "rebuild", rebuildID: response.rebuildID }, (error2, response2) => {
1216
+ sendRequest(refs, { command: "rebuild", key }, (error2, response2) => {
1170
1217
  if (error2) {
1171
1218
  const message = { pluginName: "", text: error2, location: null, notes: [], detail: void 0 };
1172
1219
  return callback2(failureErrorWithLog("Build failed", [message], []), null);
@@ -1184,14 +1231,14 @@ function createChannel(streamIn) {
1184
1231
  if (isDisposed)
1185
1232
  return;
1186
1233
  isDisposed = true;
1187
- sendRequest(refs, { command: "rebuild-dispose", rebuildID: response.rebuildID }, () => {
1234
+ sendRequest(refs, { command: "rebuild-dispose", key }, () => {
1188
1235
  });
1189
1236
  refs.unref();
1190
1237
  };
1191
1238
  }
1192
1239
  result.rebuild = rebuild;
1193
1240
  }
1194
- if (response.watchID !== void 0) {
1241
+ if (response.watch) {
1195
1242
  if (!stop) {
1196
1243
  let isStopped = false;
1197
1244
  refs.ref();
@@ -1199,13 +1246,13 @@ function createChannel(streamIn) {
1199
1246
  if (isStopped)
1200
1247
  return;
1201
1248
  isStopped = true;
1202
- watchCallbacks.delete(response.watchID);
1203
- sendRequest(refs, { command: "watch-stop", watchID: response.watchID }, () => {
1249
+ watchCallbacks.delete(key);
1250
+ sendRequest(refs, { command: "watch-stop", key }, () => {
1204
1251
  });
1205
1252
  refs.unref();
1206
1253
  };
1207
1254
  if (watch) {
1208
- watchCallbacks.set(response.watchID, (serviceStopError, watchResponse) => {
1255
+ watchCallbacks.set(key, (serviceStopError, watchResponse) => {
1209
1256
  if (serviceStopError) {
1210
1257
  if (watch.onRebuild)
1211
1258
  watch.onRebuild(serviceStopError, null);
@@ -1612,6 +1659,7 @@ var knownUnixlikePackages = {
1612
1659
  "linux ia32 LE": "esbuild-linux-32",
1613
1660
  "linux mips64el LE": "esbuild-linux-mips64le",
1614
1661
  "linux ppc64 LE": "esbuild-linux-ppc64le",
1662
+ "linux s390x BE": "esbuild-linux-s390x",
1615
1663
  "linux x64 LE": "esbuild-linux-64",
1616
1664
  "netbsd x64 LE": "esbuild-netbsd-64",
1617
1665
  "openbsd x64 LE": "esbuild-openbsd-64",
@@ -1696,7 +1744,7 @@ if (process.env.ESBUILD_WORKER_THREADS !== "0") {
1696
1744
  }
1697
1745
  }
1698
1746
  var _a;
1699
- var isInternalWorkerThread = ((_a = worker_threads == null ? void 0 : worker_threads.workerData) == null ? void 0 : _a.esbuildVersion) === "0.14.7";
1747
+ var isInternalWorkerThread = ((_a = worker_threads == null ? void 0 : worker_threads.workerData) == null ? void 0 : _a.esbuildVersion) === "0.14.8";
1700
1748
  var esbuildCommandAndArgs = () => {
1701
1749
  if ((!ESBUILD_BINARY_PATH || false) && (path2.basename(__filename) !== "main.js" || path2.basename(__dirname) !== "lib")) {
1702
1750
  throw new Error(`The esbuild JavaScript API cannot be bundled. Please mark the "esbuild" package as external so it's not included in the bundle.
@@ -1755,7 +1803,7 @@ var fsAsync = {
1755
1803
  }
1756
1804
  }
1757
1805
  };
1758
- var version = "0.14.7";
1806
+ var version = "0.14.8";
1759
1807
  var build = (options) => ensureServiceIsRunning().build(options);
1760
1808
  var serve = (serveOptions, buildOptions) => ensureServiceIsRunning().serve(serveOptions, buildOptions);
1761
1809
  var transform = (input, options) => ensureServiceIsRunning().transform(input, options);
@@ -1864,7 +1912,7 @@ var ensureServiceIsRunning = () => {
1864
1912
  if (longLivedService)
1865
1913
  return longLivedService;
1866
1914
  let [command, args] = esbuildCommandAndArgs();
1867
- let child = child_process.spawn(command, args.concat(`--service=${"0.14.7"}`, "--ping"), {
1915
+ let child = child_process.spawn(command, args.concat(`--service=${"0.14.8"}`, "--ping"), {
1868
1916
  windowsHide: true,
1869
1917
  stdio: ["pipe", "pipe", "inherit"],
1870
1918
  cwd: defaultWD
@@ -1973,7 +2021,7 @@ var runServiceSync = (callback) => {
1973
2021
  esbuild: node_exports
1974
2022
  });
1975
2023
  callback(service);
1976
- let stdout = child_process.execFileSync(command, args.concat(`--service=${"0.14.7"}`), {
2024
+ let stdout = child_process.execFileSync(command, args.concat(`--service=${"0.14.8"}`), {
1977
2025
  cwd: defaultWD,
1978
2026
  windowsHide: true,
1979
2027
  input: stdin,
@@ -1989,7 +2037,7 @@ var workerThreadService = null;
1989
2037
  var startWorkerThreadService = (worker_threads2) => {
1990
2038
  let { port1: mainPort, port2: workerPort } = new worker_threads2.MessageChannel();
1991
2039
  let worker = new worker_threads2.Worker(__filename, {
1992
- workerData: { workerPort, defaultWD, esbuildVersion: "0.14.7" },
2040
+ workerData: { workerPort, defaultWD, esbuildVersion: "0.14.8" },
1993
2041
  transferList: [workerPort],
1994
2042
  execArgv: []
1995
2043
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "esbuild",
3
- "version": "0.14.7",
3
+ "version": "0.14.8",
4
4
  "description": "An extremely fast JavaScript and CSS bundler and minifier.",
5
5
  "repository": "https://github.com/evanw/esbuild",
6
6
  "scripts": {
@@ -12,23 +12,24 @@
12
12
  "esbuild": "bin/esbuild"
13
13
  },
14
14
  "optionalDependencies": {
15
- "esbuild-android-arm64": "0.14.7",
16
- "esbuild-darwin-64": "0.14.7",
17
- "esbuild-darwin-arm64": "0.14.7",
18
- "esbuild-freebsd-64": "0.14.7",
19
- "esbuild-freebsd-arm64": "0.14.7",
20
- "esbuild-linux-32": "0.14.7",
21
- "esbuild-linux-64": "0.14.7",
22
- "esbuild-linux-arm": "0.14.7",
23
- "esbuild-linux-arm64": "0.14.7",
24
- "esbuild-linux-mips64le": "0.14.7",
25
- "esbuild-linux-ppc64le": "0.14.7",
26
- "esbuild-netbsd-64": "0.14.7",
27
- "esbuild-openbsd-64": "0.14.7",
28
- "esbuild-sunos-64": "0.14.7",
29
- "esbuild-windows-32": "0.14.7",
30
- "esbuild-windows-64": "0.14.7",
31
- "esbuild-windows-arm64": "0.14.7"
15
+ "esbuild-android-arm64": "0.14.8",
16
+ "esbuild-darwin-64": "0.14.8",
17
+ "esbuild-darwin-arm64": "0.14.8",
18
+ "esbuild-freebsd-64": "0.14.8",
19
+ "esbuild-freebsd-arm64": "0.14.8",
20
+ "esbuild-linux-32": "0.14.8",
21
+ "esbuild-linux-64": "0.14.8",
22
+ "esbuild-linux-arm": "0.14.8",
23
+ "esbuild-linux-arm64": "0.14.8",
24
+ "esbuild-linux-mips64le": "0.14.8",
25
+ "esbuild-linux-ppc64le": "0.14.8",
26
+ "esbuild-linux-s390x": "0.14.8",
27
+ "esbuild-netbsd-64": "0.14.8",
28
+ "esbuild-openbsd-64": "0.14.8",
29
+ "esbuild-sunos-64": "0.14.8",
30
+ "esbuild-windows-32": "0.14.8",
31
+ "esbuild-windows-64": "0.14.8",
32
+ "esbuild-windows-arm64": "0.14.8"
32
33
  },
33
34
  "license": "MIT"
34
35
  }