From 1e367a9d163303a8241581eaba5472cb9d023b40 Mon Sep 17 00:00:00 2001 From: Alexandre Poirot Date: Thu, 24 Nov 2022 08:22:45 -0800 Subject: [PATCH] Migrate to wasm-bindgen --- lib/read-wasm-browser.js | 23 -- lib/read-wasm.js | 27 -- lib/source-map-consumer.js | 1 - lib/wasm.js | 199 ++++++-------- package.json | 3 +- wasm-mappings/Cargo.toml | 3 +- .../source-map-mappings-wasm-api/Cargo.toml | 1 + .../build-wasm-bindgen.sh | 5 + .../source-map-mappings-wasm-api/build.py | 162 ------------ .../source_map_mappings_wasm_api.mjs | 242 ++++++++++++++++++ .../source_map_mappings_wasm_api_bg.wasm | Bin 0 -> 238171 bytes .../source-map-mappings-wasm-api/src/lib.rs | 47 ++-- 12 files changed, 354 insertions(+), 359 deletions(-) delete mode 100644 lib/read-wasm-browser.js delete mode 100644 lib/read-wasm.js create mode 100755 wasm-mappings/source-map-mappings-wasm-api/build-wasm-bindgen.sh delete mode 100755 wasm-mappings/source-map-mappings-wasm-api/build.py create mode 100644 wasm-mappings/source-map-mappings-wasm-api/source_map_mappings_wasm_api.mjs create mode 100644 wasm-mappings/source-map-mappings-wasm-api/source_map_mappings_wasm_api_bg.wasm diff --git a/lib/read-wasm-browser.js b/lib/read-wasm-browser.js deleted file mode 100644 index a4fb29c2..00000000 --- a/lib/read-wasm-browser.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; - -let mappingsWasm = null; - -module.exports = function readWasm() { - if (typeof mappingsWasm === "string") { - return fetch(mappingsWasm).then(response => response.arrayBuffer()); - } - if (mappingsWasm instanceof ArrayBuffer) { - return Promise.resolve(mappingsWasm); - } - - throw new Error( - "You must provide the string URL or ArrayBuffer contents " + - "of lib/mappings.wasm by calling " + - "SourceMapConsumer.initialize({ 'lib/mappings.wasm': ... }) " + - "before using SourceMapConsumer" - ); -}; - -module.exports.initialize = input => { - mappingsWasm = input; -}; diff --git a/lib/read-wasm.js b/lib/read-wasm.js deleted file mode 100644 index 2ce01a75..00000000 --- a/lib/read-wasm.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; - -// Note: This file is replaced with "read-wasm-browser.js" when this module is -// bundled with a packager that takes package.json#browser fields into account. - -const fs = require("fs"); -const path = require("path"); - -module.exports = function readWasm() { - return new Promise((resolve, reject) => { - const wasmPath = path.join(__dirname, "mappings.wasm"); - fs.readFile(wasmPath, null, (error, data) => { - if (error) { - reject(error); - return; - } - - resolve(data.buffer); - }); - }); -}; - -module.exports.initialize = _ => { - console.debug( - "SourceMapConsumer.initialize is a no-op when running in node.js" - ); -}; diff --git a/lib/source-map-consumer.js b/lib/source-map-consumer.js index aa3357d7..465f97f5 100644 --- a/lib/source-map-consumer.js +++ b/lib/source-map-consumer.js @@ -9,7 +9,6 @@ const util = require("./util"); const binarySearch = require("./binary-search"); const ArraySet = require("./array-set").ArraySet; const base64VLQ = require("./base64-vlq"); // eslint-disable-line no-unused-vars -const readWasm = require("../lib/read-wasm"); const wasm = require("./wasm"); const INTERNAL = Symbol("smcInternal"); diff --git a/lib/wasm.js b/lib/wasm.js index 3091d9ee..7c0b25ed 100644 --- a/lib/wasm.js +++ b/lib/wasm.js @@ -1,4 +1,33 @@ -const readWasm = require("../lib/read-wasm"); +let cachedWasm = null; + +module.exports = async function wasm() { + if (cachedWasm) { + return cachedWasm; + } + + let wasmExports; + + // Once we support Es Modules is Workers in Firefox, + // we can migrate all modules from CommonJS to ES Modules, especially the current module + // and import the wasm mjs from the top level and no longar have to be async here! + // + // => This mean that we will no longer require to be async in this library, at least on nodejs + const wasm = await import("../wasm-mappings/source-map-mappings-wasm-api/source_map_mappings_wasm_api.mjs"); + if (true /* IS NODE */) { + const path = require('path').join(__dirname, '../wasm-mappings/source-map-mappings-wasm-api/source_map_mappings_wasm_api_bg.wasm'); + const bytes = require('fs').readFileSync(path); + const wasmModule = new WebAssembly.Module(bytes); + wasmExports = wasm.initSync(wasmModule); + } else { /* IS BROWSER */ + wasmExports = await wasm.default("../wasm-mappings/source-map-mappings-wasm-api/source_map_mappings_wasm_api.wasm"); + } + + cachedWasm = { + exports: wasmExports, + withMappingCallback, + }; + return cachedWasm; +}; /** * Provide the JIT with a nice shape / hidden class. @@ -13,126 +42,54 @@ function Mapping() { this.name = null; } -let cachedWasm = null; +const callbackStack = []; -module.exports = function wasm() { - if (cachedWasm) { - return cachedWasm; +function withMappingCallback(mappingCallback, f) { + callbackStack.push(mappingCallback); + try { + f(); + } finally { + callbackStack.pop(); } +} - const callbackStack = []; - - cachedWasm = readWasm() - .then(buffer => { - return WebAssembly.instantiate(buffer, { - env: { - mapping_callback( - generatedLine, - generatedColumn, - - hasLastGeneratedColumn, - lastGeneratedColumn, - - hasOriginal, - source, - originalLine, - originalColumn, - - hasName, - name - ) { - const mapping = new Mapping(); - // JS uses 1-based line numbers, wasm uses 0-based. - mapping.generatedLine = generatedLine + 1; - mapping.generatedColumn = generatedColumn; - - if (hasLastGeneratedColumn) { - // JS uses inclusive last generated column, wasm uses exclusive. - mapping.lastGeneratedColumn = lastGeneratedColumn - 1; - } - - if (hasOriginal) { - mapping.source = source; - // JS uses 1-based line numbers, wasm uses 0-based. - mapping.originalLine = originalLine + 1; - mapping.originalColumn = originalColumn; - - if (hasName) { - mapping.name = name; - } - } - - callbackStack[callbackStack.length - 1](mapping); - }, - - start_all_generated_locations_for() { - console.time("all_generated_locations_for"); - }, - end_all_generated_locations_for() { - console.timeEnd("all_generated_locations_for"); - }, - - start_compute_column_spans() { - console.time("compute_column_spans"); - }, - end_compute_column_spans() { - console.timeEnd("compute_column_spans"); - }, - - start_generated_location_for() { - console.time("generated_location_for"); - }, - end_generated_location_for() { - console.timeEnd("generated_location_for"); - }, - - start_original_location_for() { - console.time("original_location_for"); - }, - end_original_location_for() { - console.timeEnd("original_location_for"); - }, - - start_parse_mappings() { - console.time("parse_mappings"); - }, - end_parse_mappings() { - console.timeEnd("parse_mappings"); - }, - - start_sort_by_generated_location() { - console.time("sort_by_generated_location"); - }, - end_sort_by_generated_location() { - console.timeEnd("sort_by_generated_location"); - }, - - start_sort_by_original_location() { - console.time("sort_by_original_location"); - }, - end_sort_by_original_location() { - console.timeEnd("sort_by_original_location"); - }, - }, - }); - }) - .then(Wasm => { - return { - exports: Wasm.instance.exports, - withMappingCallback: (mappingCallback, f) => { - callbackStack.push(mappingCallback); - try { - f(); - } finally { - callbackStack.pop(); - } - }, - }; - }) - .then(null, e => { - cachedWasm = null; - throw e; - }); - - return cachedWasm; -}; +// Expose this method to WASM/Rust +module.exports.mapping_callback = + ( + generatedLine, + generatedColumn, + + hasLastGeneratedColumn, + lastGeneratedColumn, + + hasOriginal, + source, + originalLine, + originalColumn, + + hasName, + name + ) => { + const mapping = new Mapping(); + // JS uses 1-based line numbers, wasm uses 0-based. + mapping.generatedLine = generatedLine + 1; + mapping.generatedColumn = generatedColumn; + + if (hasLastGeneratedColumn) { + // JS uses inclusive last generated column, wasm uses exclusive. + mapping.lastGeneratedColumn = lastGeneratedColumn - 1; + } + + if (hasOriginal) { + mapping.source = source; + // JS uses 1-based line numbers, wasm uses 0-based. + mapping.originalLine = originalLine + 1; + mapping.originalColumn = originalColumn; + + if (hasName) { + mapping.name = name; + } + } + + callbackStack[callbackStack.length - 1](mapping); + }; diff --git a/package.json b/package.json index 00077059..3c697b68 100644 --- a/package.json +++ b/package.json @@ -49,8 +49,7 @@ "main": "./source-map.js", "types": "./source-map.d.ts", "browser": { - "./lib/url.js": "./lib/url-browser.js", - "./lib/read-wasm.js": "./lib/read-wasm-browser.js" + "./lib/url.js": "./lib/url-browser.js" }, "files": [ "source-map.js", diff --git a/wasm-mappings/Cargo.toml b/wasm-mappings/Cargo.toml index 6e075f37..eff301e5 100644 --- a/wasm-mappings/Cargo.toml +++ b/wasm-mappings/Cargo.toml @@ -21,7 +21,8 @@ repository = "https://github.com/mozilla/source-map" version = "0.5.0" [dependencies] -rand = "0.4.1" +rand = "0.8.5" +getrandom = { version = "0.2.8", features = ["js"] } vlq = "0.5.1" [dev-dependencies] diff --git a/wasm-mappings/source-map-mappings-wasm-api/Cargo.toml b/wasm-mappings/source-map-mappings-wasm-api/Cargo.toml index 43683b01..81bcbd56 100644 --- a/wasm-mappings/source-map-mappings-wasm-api/Cargo.toml +++ b/wasm-mappings/source-map-mappings-wasm-api/Cargo.toml @@ -9,6 +9,7 @@ version = "0.5.0" [dependencies] source-map-mappings = { version = "0.5.0", path = ".." } +wasm-bindgen = { version ="0.2.83" } [features] profiling = [] diff --git a/wasm-mappings/source-map-mappings-wasm-api/build-wasm-bindgen.sh b/wasm-mappings/source-map-mappings-wasm-api/build-wasm-bindgen.sh new file mode 100755 index 00000000..d5530d35 --- /dev/null +++ b/wasm-mappings/source-map-mappings-wasm-api/build-wasm-bindgen.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +cargo build --target=wasm32-unknown-unknown +wasm-bindgen target/wasm32-unknown-unknown/debug/source_map_mappings_wasm_api.wasm --out-dir . --target web --no-typescript +mv source_map_mappings_wasm_api.js source_map_mappings_wasm_api.mjs diff --git a/wasm-mappings/source-map-mappings-wasm-api/build.py b/wasm-mappings/source-map-mappings-wasm-api/build.py deleted file mode 100755 index 7ff2aab1..00000000 --- a/wasm-mappings/source-map-mappings-wasm-api/build.py +++ /dev/null @@ -1,162 +0,0 @@ -#!/usr/bin/env python3 - -import argparse -import os -import re -import subprocess -import sys - -DESC = """ - -Build, trim, and optimize the `.wasm` file for inclusion in the -`mozilla/source-map` library. - -Requires: - -- wasm-nm: https://github.com/fitzgen/wasm-nm -- wasm-gc: https://github.com/alexcrichton/wasm-gc -- wasm-snip: https://github.com/fitzgen/wasm-snip -- wasm-opt: https://github.com/WebAssembly/binaryen - -""" - -parser = argparse.ArgumentParser( - formatter_class=argparse.RawDescriptionHelpFormatter, - description=DESC) - -parser.add_argument( - "-g", - "--debug", - action="store_true", - help="Include debug info (the \"name\" section) in the final `.wasm` file.") - -parser.add_argument( - "-p", - "--profiling", - action="store_true", - help="Enable the `profiling` cargo feature.") - -parser.add_argument( - "-o", - "--output", - type=str, - default=None, - help="The path to write the output `.wasm` file to. If not supplied, the `.wasm` file is written to `stdout`.") - -parser.add_argument( - "--no-wasm-opt", - dest="wasm_opt", - action="store_false", - help="Do not run `wasm-opt`.") - -parser.add_argument( - "--no-wasm-gc", - dest="wasm_gc", - action="store_false", - help="Do not run `wasm-gc`.") - -parser.add_argument( - "--no-wasm-snip", - dest="wasm_snip", - action="store_false", - help="Do not run `wasm-snip`.") - -def decode(f): - return f.decode(encoding="utf-8", errors="ignore") - -def run(cmd, **kwargs): - sys.stderr.write(str(cmd) + "\n") - - if "stdout" not in kwargs: - kwargs["stdout"] = subprocess.PIPE - child = subprocess.run(cmd, **kwargs) - if child.returncode != 0: - raise Exception("{} did not exit OK".format(str(cmd))) - return decode(child.stdout) - -def add_path_ext_prefix(path, prefix): - (root, ext) = os.path.splitext(path) - return root + "." + prefix + ext - -def build(args): - cmd = ["cargo", "build", "--release", "--target", "wasm32-unknown-unknown"] - if args.profiling: - cmd.extend(["--features", "profiling"]) - run(cmd) - return "./target/wasm32-unknown-unknown/release/source_map_mappings_wasm_api.wasm" - -def wasm_gc(args, wasm_path): - if not args.wasm_gc: - return wasm_path - - out_path = add_path_ext_prefix(wasm_path, "gc") - run(["wasm-gc", wasm_path, out_path]) - return out_path - -SHOULD_SNIP = [ - re.compile(r".*(std|core)(9|::)panicking.*"), - re.compile(r".*(std|core)(3|::)fmt.*"), - re.compile(r".*core(6|::)option(13|::)expect_failed.*"), - re.compile(r".*core(5|::)slice(\d+|::)slice_index_.*_fail.*"), - re.compile(r".*core(3|::)str(\d+|::)slice_.*_fail.*"), - re.compile(r".*core(6|::)result(13|::)unwrap_failed.*"), - re.compile(r".*std(6|::)thread(5|::)local.*"), - re.compile(r".*std(2|::)io(5|::).*"), - re.compile(r"__.*2"), - re.compile(r".*(std|core)(5|::)error.*"), - re.compile(r".*(std|core)(3|::)any(3|::)Any.*"), -] - -def wasm_snip(args, wasm_path): - if not args.wasm_snip: - return wasm_path - - out_path = add_path_ext_prefix(wasm_path, "snip") - - private_functions = run(["wasm-nm", "-j", wasm_path]).splitlines() - - snip_functions = set() - for snip in SHOULD_SNIP: - snip_functions.update(filter(lambda f: re.match(snip, f), - private_functions)) - - run(["wasm-snip", "-o", out_path, wasm_path, *snip_functions]), - return out_path - -def wasm_opt(args, wasm_path): - if not args.wasm_opt: - return wasm_path - - out_path = add_path_ext_prefix(wasm_path, "opt") - - cmd = [ - "wasm-opt", - "-O3", - "-Oz", - "--duplicate-function-elimination", - "-o", out_path, - wasm_path - ] - if args.debug: - cmd.append("-g") - run(cmd) - return out_path - -def main(): - args = parser.parse_args() - os.chdir(os.path.dirname(sys.argv[0])) - - wasm_path = build(args) - wasm_path = wasm_gc(args, wasm_path) - wasm_path = wasm_snip(args, wasm_path) - # GC again after snipping. - wasm_path = wasm_gc(args, wasm_path) - wasm_path = wasm_opt(args, wasm_path) - - if args.output: - run(["cp", wasm_path, args.output]) - else: - run(["cat", wasm_path], stdout=subprocess.STDOUT) - -if __name__ == "__main__": - main() diff --git a/wasm-mappings/source-map-mappings-wasm-api/source_map_mappings_wasm_api.mjs b/wasm-mappings/source-map-mappings-wasm-api/source_map_mappings_wasm_api.mjs new file mode 100644 index 00000000..10ef384a --- /dev/null +++ b/wasm-mappings/source-map-mappings-wasm-api/source_map_mappings_wasm_api.mjs @@ -0,0 +1,242 @@ +import { mapping_callback } from '../../lib/wasm.js'; + +let wasm; + +const cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + +cachedTextDecoder.decode(); + +let cachedUint8Memory0 = new Uint8Array(); + +function getUint8Memory0() { + if (cachedUint8Memory0.byteLength === 0) { + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8Memory0; +} + +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} +/** +* Get the last error's error code, or 0 if there was none. +* +* See `source_map_mappings::Error` for the error code definitions. +* @returns {number} +*/ +export function get_last_error() { + const ret = wasm.get_last_error(); + return ret >>> 0; +} + +/** +* Allocate space for a mappings string of the given size (in bytes). +* +* It is the JS callers responsibility to initialize the resulting buffer by +* copying the JS `String` holding the source map's "mappings" into it (encoded +* in ascii). +* @param {number} size +* @returns {number} +*/ +export function allocate_mappings(size) { + const ret = wasm.allocate_mappings(size); + return ret; +} + +/** +* Parse the given initialized mappings string into a `Mappings` structure. +* +* Returns `NULL` on failure, or a pointer to the parsed `Mappings` structure +* on success. +* +* In the case of failure, the error can be retrieved with `get_last_error`. +* +* In the case of success, the caller takes ownership of the result, and must +* call `free_mappings` to destroy it when finished. +* +* In both the success or failure cases, the caller gives up ownership of the +* input mappings string and must not use it again. +* @param {number} mappings +* @returns {number} +*/ +export function parse_mappings(mappings) { + const ret = wasm.parse_mappings(mappings); + return ret; +} + +/** +* Destroy the given `Mappings` structure. +* +* The caller gives up ownership of the mappings and must not use them again. +* @param {number} mappings +*/ +export function free_mappings(mappings) { + wasm.free_mappings(mappings); +} + +/** +* Invoke the `mapping_callback` on each mapping in the given `Mappings` +* structure, in order of generated location. +* @param {number} mappings +*/ +export function by_generated_location(mappings) { + wasm.by_generated_location(mappings); +} + +/** +* Compute column spans for the given mappings. +* @param {number} mappings +*/ +export function compute_column_spans(mappings) { + wasm.compute_column_spans(mappings); +} + +/** +* Invoke the `mapping_callback` on each mapping in the given `Mappings` +* structure that has original location information, in order of original +* location. +* @param {number} mappings +*/ +export function by_original_location(mappings) { + wasm.by_original_location(mappings); +} + +/** +* Find the mapping for the given generated location, if any exists. +* +* If a mapping is found, the `mapping_callback` is invoked with it +* once. Otherwise, the `mapping_callback` is not invoked at all. +* @param {number} mappings +* @param {number} generated_line +* @param {number} generated_column +* @param {number} bias +*/ +export function original_location_for(mappings, generated_line, generated_column, bias) { + wasm.original_location_for(mappings, generated_line, generated_column, bias); +} + +/** +* Find the mapping for the given original location, if any exists. +* +* If a mapping is found, the `mapping_callback` is invoked with it +* once. Otherwise, the `mapping_callback` is not invoked at all. +* @param {number} mappings +* @param {number} source +* @param {number} original_line +* @param {number} original_column +* @param {number} bias +*/ +export function generated_location_for(mappings, source, original_line, original_column, bias) { + wasm.generated_location_for(mappings, source, original_line, original_column, bias); +} + +/** +* Find all mappings for the given original location, and invoke the +* `mapping_callback` on each of them. +* +* If `has_original_column` is `true`, then the `mapping_callback` is only +* invoked with mappings with matching source and original line **and** +* original column is equal to `original_column`. If `has_original_column` is +* `false`, then the `original_column` argument is ignored, and the +* `mapping_callback` is invoked on all mappings with matching source and +* original line. +* @param {number} mappings +* @param {number} source +* @param {number} original_line +* @param {boolean} has_original_column +* @param {number} original_column +*/ +export function all_generated_locations_for(mappings, source, original_line, has_original_column, original_column) { + wasm.all_generated_locations_for(mappings, source, original_line, has_original_column, original_column); +} + +async function load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + + } catch (e) { + if (module.headers.get('Content-Type') != 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + + } else { + throw e; + } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + + } else { + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + + } else { + return instance; + } + } +} + +function getImports() { + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbg_mappingcallback_af4710b7a58d26dd = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) { + mapping_callback(arg0 >>> 0, arg1 >>> 0, arg2 !== 0, arg3 >>> 0, arg4 !== 0, arg5 >>> 0, arg6 >>> 0, arg7 >>> 0, arg8 !== 0, arg9 >>> 0); + }; + imports.wbg.__wbindgen_throw = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + + return imports; +} + +function initMemory(imports, maybe_memory) { + +} + +function finalizeInit(instance, module) { + wasm = instance.exports; + init.__wbindgen_wasm_module = module; + cachedUint8Memory0 = new Uint8Array(); + + + return wasm; +} + +function initSync(module) { + const imports = getImports(); + + initMemory(imports); + + if (!(module instanceof WebAssembly.Module)) { + module = new WebAssembly.Module(module); + } + + const instance = new WebAssembly.Instance(module, imports); + + return finalizeInit(instance, module); +} + +async function init(input) { + if (typeof input === 'undefined') { + input = new URL('source_map_mappings_wasm_api_bg.wasm', import.meta.url); + } + const imports = getImports(); + + if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) { + input = fetch(input); + } + + initMemory(imports); + + const { instance, module } = await load(await input, imports); + + return finalizeInit(instance, module); +} + +export { initSync } +export default init; diff --git a/wasm-mappings/source-map-mappings-wasm-api/source_map_mappings_wasm_api_bg.wasm b/wasm-mappings/source-map-mappings-wasm-api/source_map_mappings_wasm_api_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2089c62a5af0001858159685f6f8a2c9dc8ff94a GIT binary patch literal 238171 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ǻ z{w)up*r}~eKHC3_%$?t}bN?z^YsK;Mi?C6{G6175kRH0gd~Dr?lqRU{gPGt61#ln% zx`W#0e|+7iNBpI*qcN_784WMIgf0g(+sQvM44Y@xd@|RoG7){CSK&;8sXi+r4}KJW za`*uKv(2)0Y5zd2kjJo0=+9F5crV7}Hr(6vvbhJs2Z6Ia#yyHK9lMD<#e6l*FCRWy zzc&ir#Ry)tFkjhKQH?)dKI6{A$CJy|)pUnU_=>nuqS<4j zIK!m|jBo^H+m-d&wEhTrx(foVsHeFK%vNw~AS|O7Ahx8*RYPMmF$Ou=v}yk?B9MHn zdepT^v-F~(+c);h2ps81SzbNdbi~6S(G+=%!A^gBEO}Q!VWcr?fgO=|&0^=orPdcU zIDC4lQBid5VuwM!prtYon7&3HH0kSxPMaW|?!r&(s9n-NW={b98*y;Wg1Y5BMw6*b>mPfYf>H3E?Me9-ZX6Sp4Pq; zC0f%x61!77l558d1*g;)CsNiZI#=C1jGKd+Pv)KCb!wIX_ILt*yx4GS_0jy?GVHA- zwceuKY|IgW9zNbaP8_m+WS<&tn5?z8By!;T6Bl*~(%u5SEwg)c>+s2~-@g#=OXUh; z6RvJYiY;2@hD77UFY#@|CmhIdjKuqaLoQ9AWbw|O?DpZdjgBO*-rkZJ6eAjQebOV1 zW}LjpAyx`WddG0^l{O z995)y*t2UDNJC3^9fE#|xTtcXJ@%nAP6brjIw z-6B^2Hl;`tA+>)zv&#e<5(nSC`~3Q}(@wk3U+>wwyV#$XdsnUd?WDo>e(vF5xRv+$ zKKJLJa@PK`I4nEW{wsOM^M7#;52M3JhwWO~G2XZH)Q3KtAQ^^YRi+OmTyqa|oWoq_ i5%)bM-O1PQJ38D+4j = None; /// Get the last error's error code, or 0 if there was none. /// /// See `source_map_mappings::Error` for the error code definitions. -#[no_mangle] -pub extern "C" fn get_last_error() -> u32 { +#[wasm_bindgen] +pub fn get_last_error() -> u32 { unsafe { match LAST_ERROR { None => 0, @@ -145,8 +147,8 @@ fn assert_pointer_is_word_aligned(p: *mut u8) { /// It is the JS callers responsibility to initialize the resulting buffer by /// copying the JS `String` holding the source map's "mappings" into it (encoded /// in ascii). -#[no_mangle] -pub extern "C" fn allocate_mappings(size: usize) -> *mut u8 { +#[wasm_bindgen] +pub fn allocate_mappings(size: usize) -> *mut u8 { // Make sure that we don't lose any bytes from size in the remainder. let size_in_units_of_usize = (size + mem::size_of::() - 1) / mem::size_of::(); @@ -191,8 +193,8 @@ where /// /// In both the success or failure cases, the caller gives up ownership of the /// input mappings string and must not use it again. -#[no_mangle] -pub extern "C" fn parse_mappings(mappings: *mut u8) -> *mut Mappings { +#[wasm_bindgen] +pub fn parse_mappings(mappings: *mut u8) -> *mut Mappings { assert_pointer_is_word_aligned(mappings); let mappings = mappings as *mut usize; @@ -236,8 +238,8 @@ pub extern "C" fn parse_mappings(mappings: *mut u8) -> *mut Mappings { /// Destroy the given `Mappings` structure. /// /// The caller gives up ownership of the mappings and must not use them again. -#[no_mangle] -pub extern "C" fn free_mappings(mappings: *mut Mappings) { +#[wasm_bindgen] +pub fn free_mappings(mappings: *mut Mappings) { unsafe { Box::from_raw(mappings); } @@ -251,6 +253,7 @@ unsafe fn mappings_mut<'a>( mappings.as_mut().unwrap() } +#[wasm_bindgen(raw_module = "../../lib/wasm.js")] extern "C" { fn mapping_callback( // These two parameters are always valid. @@ -323,8 +326,8 @@ unsafe fn invoke_mapping_callback(mapping: &Mapping) { /// Invoke the `mapping_callback` on each mapping in the given `Mappings` /// structure, in order of generated location. -#[no_mangle] -pub extern "C" fn by_generated_location(mappings: *mut Mappings) { +#[wasm_bindgen] +pub fn by_generated_location(mappings: *mut Mappings) { let this_scope = (); let mappings = unsafe { mappings_mut(&this_scope, mappings) }; @@ -337,8 +340,8 @@ pub extern "C" fn by_generated_location(mappings: *mut Mappings) { } /// Compute column spans for the given mappings. -#[no_mangle] -pub extern "C" fn compute_column_spans(mappings: *mut Mappings) { +#[wasm_bindgen] +pub fn compute_column_spans(mappings: *mut Mappings) { let this_scope = (); let mappings = unsafe { mappings_mut(&this_scope, mappings) }; @@ -348,8 +351,8 @@ pub extern "C" fn compute_column_spans(mappings: *mut Mappings) { /// Invoke the `mapping_callback` on each mapping in the given `Mappings` /// structure that has original location information, in order of original /// location. -#[no_mangle] -pub extern "C" fn by_original_location(mappings: *mut Mappings) { +#[wasm_bindgen] +pub fn by_original_location(mappings: *mut Mappings) { let this_scope = (); let mappings = unsafe { mappings_mut(&this_scope, mappings) }; @@ -381,8 +384,8 @@ fn u32_to_bias(bias: u32) -> Bias { /// /// If a mapping is found, the `mapping_callback` is invoked with it /// once. Otherwise, the `mapping_callback` is not invoked at all. -#[no_mangle] -pub extern "C" fn original_location_for( +#[wasm_bindgen] +pub fn original_location_for( mappings: *mut Mappings, generated_line: u32, generated_column: u32, @@ -403,8 +406,8 @@ pub extern "C" fn original_location_for( /// /// If a mapping is found, the `mapping_callback` is invoked with it /// once. Otherwise, the `mapping_callback` is not invoked at all. -#[no_mangle] -pub extern "C" fn generated_location_for( +#[wasm_bindgen] +pub fn generated_location_for( mappings: *mut Mappings, source: u32, original_line: u32, @@ -431,8 +434,8 @@ pub extern "C" fn generated_location_for( /// `false`, then the `original_column` argument is ignored, and the /// `mapping_callback` is invoked on all mappings with matching source and /// original line. -#[no_mangle] -pub extern "C" fn all_generated_locations_for( +#[wasm_bindgen] +pub fn all_generated_locations_for( mappings: *mut Mappings, source: u32, original_line: u32,