@astrojs/compiler 0.11.0-next--wasm.0 → 0.11.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @astrojs/compiler
2
2
 
3
+ ## 0.11.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 41cc6ef: Fix memory issue caused by duplicate WASM instantiations
8
+
9
+ ## 0.11.1
10
+
11
+ ### Patch Changes
12
+
13
+ - 4039682: Fixes hoist script tracking when passed a variable
14
+
15
+ ## 0.11.0
16
+
17
+ ### Minor Changes
18
+
19
+ - f5d4006: Switch from TinyGo to Go's built-in WASM output. While this is an unfortunate size increase for our `.wasm` file, it should also be significantly more stable and cut down on hard-to-reproduce bugs.
20
+
21
+ Please see https://github.com/withastro/compiler/pull/291 for more details.
22
+
3
23
  ## 0.11.0-next--wasm.0
4
24
 
5
25
  ### Minor Changes
package/astro.wasm CHANGED
Binary file
package/browser/index.js CHANGED
@@ -4,26 +4,27 @@ export const transform = (input, options) => {
4
4
  };
5
5
  let initializePromise;
6
6
  let longLivedService;
7
- export const initialize = (options) => {
7
+ export const initialize = async (options) => {
8
8
  let wasmURL = options.wasmURL;
9
9
  if (!wasmURL)
10
10
  throw new Error('Must provide the "wasmURL" option');
11
11
  wasmURL += '';
12
- if (initializePromise)
13
- throw new Error('Cannot call "initialize" more than once');
14
- initializePromise = startRunningService(wasmURL);
15
- initializePromise.catch(() => {
16
- // Let the caller try again if this fails
17
- initializePromise = void 0;
18
- });
19
- return initializePromise;
12
+ if (!initializePromise) {
13
+ initializePromise = startRunningService(wasmURL).catch((err) => {
14
+ // Let the caller try again if this fails.
15
+ initializePromise = void 0;
16
+ // But still, throw the error back up the caller.
17
+ throw err;
18
+ });
19
+ }
20
+ longLivedService = longLivedService || (await initializePromise);
20
21
  };
21
22
  let ensureServiceIsRunning = () => {
22
- if (longLivedService)
23
- return longLivedService;
24
- if (initializePromise)
23
+ if (!initializePromise)
24
+ throw new Error('You need to call "initialize" before calling this');
25
+ if (!longLivedService)
25
26
  throw new Error('You need to wait for the promise returned from "initialize" to be resolved before calling this');
26
- throw new Error('You need to call "initialize" before calling this');
27
+ return longLivedService;
27
28
  };
28
29
  const instantiateWASM = async (wasmURL, importObject) => {
29
30
  let response = undefined;
@@ -44,7 +45,7 @@ const startRunningService = async (wasmURL) => {
44
45
  const wasm = await instantiateWASM(wasmURL, go.importObject);
45
46
  go.run(wasm.instance);
46
47
  const service = globalThis['@astrojs/compiler'];
47
- longLivedService = {
48
+ return {
48
49
  transform: (input, options) => new Promise((resolve) => resolve(service.transform(input, options || {}))),
49
50
  };
50
51
  };
package/node/index.js CHANGED
@@ -2,17 +2,23 @@ import { promises as fs } from 'fs';
2
2
  import Go from './wasm_exec.js';
3
3
  import { fileURLToPath } from 'url';
4
4
  export const transform = async (input, options) => {
5
- return ensureServiceIsRunning().then((service) => service.transform(input, options));
5
+ return getService().then((service) => service.transform(input, options));
6
6
  };
7
7
  export const compile = async (template) => {
8
8
  const { default: mod } = await import(`data:text/javascript;charset=utf-8;base64,${Buffer.from(template).toString('base64')}`);
9
9
  return mod;
10
10
  };
11
11
  let longLivedService;
12
- let ensureServiceIsRunning = () => {
13
- if (longLivedService)
14
- return Promise.resolve(longLivedService);
15
- return startRunningService();
12
+ let getService = () => {
13
+ if (!longLivedService) {
14
+ longLivedService = startRunningService().catch((err) => {
15
+ // Let the caller try again if this fails.
16
+ longLivedService = void 0;
17
+ // But still, throw the error back up the caller.
18
+ throw err;
19
+ });
20
+ }
21
+ return longLivedService;
16
22
  };
17
23
  const instantiateWASM = async (wasmURL, importObject) => {
18
24
  let response = undefined;
@@ -27,9 +33,8 @@ const startRunningService = async () => {
27
33
  const go = new Go();
28
34
  const wasm = await instantiateWASM(fileURLToPath(new URL('../astro.wasm', import.meta.url)), go.importObject);
29
35
  go.run(wasm.instance);
30
- const service = globalThis['@astrojs/compiler'];
31
- longLivedService = {
32
- transform: (input, options) => new Promise((resolve) => resolve(service.transform(input, options || {}))),
36
+ const _service = globalThis['@astrojs/compiler'];
37
+ return {
38
+ transform: (input, options) => new Promise((resolve) => resolve(_service.transform(input, options || {}))),
33
39
  };
34
- return longLivedService;
35
40
  };
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "type": "module",
6
6
  "bugs": "https://github.com/withastro/compiler/issues",
7
7
  "homepage": "https://astro.build",
8
- "version": "0.11.0-next--wasm.0",
8
+ "version": "0.11.2",
9
9
  "scripts": {
10
10
  "build": "tsc -p ."
11
11
  },