alchemy 0.22.0 → 0.22.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"bundle-worker.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/bundle/bundle-worker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAUhD,wBAAsB,kBAAkB,CAAC,CAAC,SAAS,QAAQ,EACzD,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B,mBAyEF"}
1
+ {"version":3,"file":"bundle-worker.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/bundle/bundle-worker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAWhD,wBAAsB,kBAAkB,CAAC,CAAC,SAAS,QAAQ,EACzD,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B,mBA4EF"}
@@ -5,6 +5,7 @@ import { isBuildFailure, rewriteNodeCompatBuildFailure, } from "./build-failures
5
5
  import { external, external_als } from "./external.js";
6
6
  import { getNodeJSCompatMode } from "./nodejs-compat-mode.js";
7
7
  import { nodeJsCompatPlugin } from "./nodejs-compat.js";
8
+ import { wasmPlugin } from "./wasm-plugin.js";
8
9
  export async function bundleWorkerScript(props) {
9
10
  const projectRoot = props.projectRoot ?? process.cwd();
10
11
  const nodeJsCompatMode = await getNodeJSCompatMode(props.compatibilityDate, props.compatibilityFlags);
@@ -28,8 +29,11 @@ export async function bundleWorkerScript(props) {
28
29
  loader: {
29
30
  ".sql": "text",
30
31
  ".json": "json",
32
+ ...props.bundle?.loader,
33
+ ...props.bundle?.options?.loader,
31
34
  },
32
35
  plugins: [
36
+ wasmPlugin,
33
37
  ...(props.bundle?.plugins ?? []),
34
38
  ...(nodeJsCompatMode === "v2" ? [await nodeJsCompatPlugin()] : []),
35
39
  ...(props.bundle?.alias
@@ -1 +1 @@
1
- {"version":3,"file":"bundle-worker.js","sourceRoot":"","sources":["../../../src/cloudflare/bundle/bundle-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bundle-worker.js","sourceRoot":"","sources":["../../../src/cloudflare/bundle/bundle-worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type esbuild from "esbuild";
2
+ export declare const wasmPlugin: esbuild.Plugin;
3
+ //# sourceMappingURL=wasm-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm-plugin.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/bundle/wasm-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAInC,eAAO,MAAM,UAAU,EAAE,OAAO,CAAC,MAoDhC,CAAC"}
@@ -0,0 +1,53 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ export const wasmPlugin = {
4
+ name: "wasm",
5
+ setup(build) {
6
+ // Resolve ".wasm" files to a path with a namespace
7
+ build.onResolve({ filter: /\.wasm$/ }, (args) => {
8
+ // If this is the import inside the stub module, import the
9
+ // binary itself. Put the path in the "wasm-binary" namespace
10
+ // to tell our binary load callback to load the binary file.
11
+ if (args.namespace === "wasm-stub") {
12
+ return {
13
+ path: args.path,
14
+ namespace: "wasm-binary",
15
+ };
16
+ }
17
+ // Otherwise, generate the JavaScript stub module for this
18
+ // ".wasm" file. Put it in the "wasm-stub" namespace to tell
19
+ // our stub load callback to fill it with JavaScript.
20
+ //
21
+ // Resolve relative paths to absolute paths here since this
22
+ // resolve callback is given "resolveDir", the directory to
23
+ // resolve imports against.
24
+ if (args.resolveDir === "") {
25
+ return; // Ignore unresolvable paths
26
+ }
27
+ return {
28
+ path: path.isAbsolute(args.path)
29
+ ? args.path
30
+ : path.join(args.resolveDir, args.path),
31
+ namespace: "wasm-stub",
32
+ };
33
+ });
34
+ // Virtual modules in the "wasm-stub" namespace are filled with
35
+ // the JavaScript code for compiling the WebAssembly binary. The
36
+ // binary itself is imported from a second virtual module.
37
+ build.onLoad({ filter: /.*/, namespace: "wasm-stub" }, async (args) => ({
38
+ contents: `import wasm from ${JSON.stringify(args.path)}
39
+ export default (imports) =>
40
+ WebAssembly.instantiate(wasm, imports).then(
41
+ result => result.instance.exports)`,
42
+ }));
43
+ // Virtual modules in the "wasm-binary" namespace contain the
44
+ // actual bytes of the WebAssembly file. This uses esbuild's
45
+ // built-in "binary" loader instead of manually embedding the
46
+ // binary data inside JavaScript code ourselves.
47
+ build.onLoad({ filter: /.*/, namespace: "wasm-binary" }, async (args) => ({
48
+ contents: await fs.promises.readFile(args.path),
49
+ loader: "binary",
50
+ }));
51
+ },
52
+ };
53
+ //# sourceMappingURL=wasm-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm-plugin.js","sourceRoot":"","sources":["../../../src/cloudflare/bundle/wasm-plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,UAAU,GAAmB;IACxC,IAAI,EAAE,MAAM;IACZ,KAAK,CAAC,KAAK;QACT,mDAAmD;QACnD,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;YAC9C,2DAA2D;YAC3D,6DAA6D;YAC7D,4DAA4D;YAC5D,IAAI,IAAI,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;gBACnC,OAAO;oBACL,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,SAAS,EAAE,aAAa;iBACzB,CAAC;YACJ,CAAC;YAED,0DAA0D;YAC1D,4DAA4D;YAC5D,qDAAqD;YACrD,EAAE;YACF,2DAA2D;YAC3D,2DAA2D;YAC3D,2BAA2B;YAC3B,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE,EAAE,CAAC;gBAC3B,OAAO,CAAC,4BAA4B;YACtC,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC9B,CAAC,CAAC,IAAI,CAAC,IAAI;oBACX,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC;gBACzC,SAAS,EAAE,WAAW;aACvB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,+DAA+D;QAC/D,gEAAgE;QAChE,0DAA0D;QAC1D,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YACtE,QAAQ,EAAE,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;;+CAGd;SAC1C,CAAC,CAAC,CAAC;QAEJ,6DAA6D;QAC7D,4DAA4D;QAC5D,6DAA6D;QAC7D,gDAAgD;QAChD,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YACxE,QAAQ,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/C,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC,CAAC;IACN,CAAC;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "alchemy",
3
- "version": "0.22.0",
3
+ "version": "0.22.1",
4
4
  "type": "module",
5
5
  "module": "./lib/index.js",
6
6
  "scripts": {
@@ -10,6 +10,7 @@ import {
10
10
  import { external, external_als } from "./external.ts";
11
11
  import { getNodeJSCompatMode } from "./nodejs-compat-mode.ts";
12
12
  import { nodeJsCompatPlugin } from "./nodejs-compat.ts";
13
+ import { wasmPlugin } from "./wasm-plugin.ts";
13
14
 
14
15
  export async function bundleWorkerScript<B extends Bindings>(
15
16
  props: WorkerProps<B> & {
@@ -48,8 +49,11 @@ export async function bundleWorkerScript<B extends Bindings>(
48
49
  loader: {
49
50
  ".sql": "text",
50
51
  ".json": "json",
52
+ ...props.bundle?.loader,
53
+ ...props.bundle?.options?.loader,
51
54
  },
52
55
  plugins: [
56
+ wasmPlugin,
53
57
  ...(props.bundle?.plugins ?? []),
54
58
  ...(nodeJsCompatMode === "v2" ? [await nodeJsCompatPlugin()] : []),
55
59
  ...(props.bundle?.alias
@@ -0,0 +1,57 @@
1
+ import type esbuild from "esbuild";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+
5
+ export const wasmPlugin: esbuild.Plugin = {
6
+ name: "wasm",
7
+ setup(build) {
8
+ // Resolve ".wasm" files to a path with a namespace
9
+ build.onResolve({ filter: /\.wasm$/ }, (args) => {
10
+ // If this is the import inside the stub module, import the
11
+ // binary itself. Put the path in the "wasm-binary" namespace
12
+ // to tell our binary load callback to load the binary file.
13
+ if (args.namespace === "wasm-stub") {
14
+ return {
15
+ path: args.path,
16
+ namespace: "wasm-binary",
17
+ };
18
+ }
19
+
20
+ // Otherwise, generate the JavaScript stub module for this
21
+ // ".wasm" file. Put it in the "wasm-stub" namespace to tell
22
+ // our stub load callback to fill it with JavaScript.
23
+ //
24
+ // Resolve relative paths to absolute paths here since this
25
+ // resolve callback is given "resolveDir", the directory to
26
+ // resolve imports against.
27
+ if (args.resolveDir === "") {
28
+ return; // Ignore unresolvable paths
29
+ }
30
+ return {
31
+ path: path.isAbsolute(args.path)
32
+ ? args.path
33
+ : path.join(args.resolveDir, args.path),
34
+ namespace: "wasm-stub",
35
+ };
36
+ });
37
+
38
+ // Virtual modules in the "wasm-stub" namespace are filled with
39
+ // the JavaScript code for compiling the WebAssembly binary. The
40
+ // binary itself is imported from a second virtual module.
41
+ build.onLoad({ filter: /.*/, namespace: "wasm-stub" }, async (args) => ({
42
+ contents: `import wasm from ${JSON.stringify(args.path)}
43
+ export default (imports) =>
44
+ WebAssembly.instantiate(wasm, imports).then(
45
+ result => result.instance.exports)`,
46
+ }));
47
+
48
+ // Virtual modules in the "wasm-binary" namespace contain the
49
+ // actual bytes of the WebAssembly file. This uses esbuild's
50
+ // built-in "binary" loader instead of manually embedding the
51
+ // binary data inside JavaScript code ourselves.
52
+ build.onLoad({ filter: /.*/, namespace: "wasm-binary" }, async (args) => ({
53
+ contents: await fs.promises.readFile(args.path),
54
+ loader: "binary",
55
+ }));
56
+ },
57
+ };