Skip to content

Commit

Permalink
fix: use uint8array for user's wasm modules used in middleware instea…
Browse files Browse the repository at this point in the history
…d of base64 (#2740)
  • Loading branch information
pieh authored Jan 16, 2025
1 parent 25f6f30 commit aab8803
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 20 deletions.
1 change: 0 additions & 1 deletion edge-runtime/vendor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
// It acts as a seed that populates the `vendor/` directory and should not be
// imported directly.

import 'https://deno.land/[email protected]/encoding/base64.ts'
import 'https://deno.land/[email protected]/http/cookie.ts'
import 'https://deno.land/[email protected]/node/buffer.ts'
import 'https://deno.land/[email protected]/node/events.ts'
Expand Down
21 changes: 2 additions & 19 deletions src/build/functions/edge.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { cp, mkdir, readFile, rm, writeFile } from 'node:fs/promises'
import { dirname, join, relative, sep } from 'node:path'
import { sep as posixSep } from 'node:path/posix'
import { dirname, join } from 'node:path'

import type { Manifest, ManifestFunction } from '@netlify/edge-functions'
import { glob } from 'fast-glob'
Expand All @@ -9,8 +8,6 @@ import { pathToRegexp } from 'path-to-regexp'

import { EDGE_HANDLER_NAME, PluginContext } from '../plugin-context.js'

const toPosixPath = (path: string) => path.split(sep).join(posixSep)

const writeEdgeManifest = async (ctx: PluginContext, manifest: Manifest) => {
await mkdir(ctx.edgeFunctionsDir, { recursive: true })
await writeFile(join(ctx.edgeFunctionsDir, 'manifest.json'), JSON.stringify(manifest, null, 2))
Expand Down Expand Up @@ -126,23 +123,9 @@ const copyHandlerDependencies = async (
const outputFile = join(destDir, `server/${name}.js`)

if (wasm?.length) {
const base64ModulePath = join(
destDir,
'edge-runtime/vendor/deno.land/[email protected]/encoding/base64.ts',
)

const base64ModulePathRelativeToOutputFile = toPosixPath(
relative(dirname(outputFile), base64ModulePath),
)

parts.push(`import { decode as _base64Decode } from "${base64ModulePathRelativeToOutputFile}";`)
for (const wasmChunk of wasm ?? []) {
const data = await readFile(join(srcDir, wasmChunk.filePath))
parts.push(
`const ${wasmChunk.name} = _base64Decode(${JSON.stringify(
data.toString('base64'),
)}).buffer`,
)
parts.push(`const ${wasmChunk.name} = Uint8Array.from(${JSON.stringify([...data])})`)
}
}

Expand Down

0 comments on commit aab8803

Please sign in to comment.