From 7644f85e7770905a2a64166fe65f7f296210d54d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gunnlaugur=20=C3=9E=C3=B3r=20Briem?= Date: Thu, 23 Sep 2021 18:14:30 +0000 Subject: [PATCH 1/3] add wasm-bindgen example --- cspell.json | 6 +- examples/wasm-bindgen-esm/README.md | 387 ++++++++++++++++++ examples/wasm-bindgen-esm/build.js | 1 + examples/wasm-bindgen-esm/example.js | 4 + examples/wasm-bindgen-esm/index.html | 5 + examples/wasm-bindgen-esm/pkg/hi_wasm.d.ts | 7 + examples/wasm-bindgen-esm/pkg/hi_wasm.js | 2 + examples/wasm-bindgen-esm/pkg/hi_wasm_bg.js | 103 +++++ examples/wasm-bindgen-esm/pkg/hi_wasm_bg.wasm | Bin 0 -> 15104 bytes .../wasm-bindgen-esm/pkg/hi_wasm_bg.wasm.d.ts | 8 + examples/wasm-bindgen-esm/pkg/package.json | 14 + examples/wasm-bindgen-esm/template.md | 30 ++ examples/wasm-bindgen-esm/test.filter.js | 5 + examples/wasm-bindgen-esm/webpack.config.js | 21 + 14 files changed, 592 insertions(+), 1 deletion(-) create mode 100644 examples/wasm-bindgen-esm/README.md create mode 100644 examples/wasm-bindgen-esm/build.js create mode 100644 examples/wasm-bindgen-esm/example.js create mode 100644 examples/wasm-bindgen-esm/index.html create mode 100644 examples/wasm-bindgen-esm/pkg/hi_wasm.d.ts create mode 100644 examples/wasm-bindgen-esm/pkg/hi_wasm.js create mode 100644 examples/wasm-bindgen-esm/pkg/hi_wasm_bg.js create mode 100644 examples/wasm-bindgen-esm/pkg/hi_wasm_bg.wasm create mode 100644 examples/wasm-bindgen-esm/pkg/hi_wasm_bg.wasm.d.ts create mode 100644 examples/wasm-bindgen-esm/pkg/package.json create mode 100644 examples/wasm-bindgen-esm/template.md create mode 100644 examples/wasm-bindgen-esm/test.filter.js create mode 100644 examples/wasm-bindgen-esm/webpack.config.js diff --git a/cspell.json b/cspell.json index 1f5e3a39996..5dfe4982d34 100644 --- a/cspell.json +++ b/cspell.json @@ -227,5 +227,9 @@ "pnpm" ], "ignoreRegExpList": ["/Author.+/", "/data:.*/", "/\"mappings\":\".+\"/"], - "ignorePaths": ["**/dist/**", "examples/**/README.md"] + "ignorePaths": [ + "**/dist/**", + "examples/**/README.md", + "examples/wasm-bindgen*/pkg/*_bg.js" + ] } diff --git a/examples/wasm-bindgen-esm/README.md b/examples/wasm-bindgen-esm/README.md new file mode 100644 index 00000000000..32926c5e11f --- /dev/null +++ b/examples/wasm-bindgen-esm/README.md @@ -0,0 +1,387 @@ +This is a simple example that shows the usage of an ES module packaging around a Rust module, built by wasm-pack. + +WebAssembly modules can be imported like other async modules with `import` or `import()`. +When importing, they are downloaded and instantiated in a streaming way. + +# example.js + +```javascript +import { greeting } from "./pkg"; + +document.write(greeting('Bob')); +``` + +# dist/output.js + +```javascript +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */ +/*!********************!*\ + !*** ./example.js ***! + \********************/ +/*! namespace exports */ +/*! exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_require__, __webpack_require__.r, __webpack_exports__, module, __webpack_require__.a, __webpack_require__.* */ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.a(module, async (__webpack_handle_async_dependencies__) => { +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _pkg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pkg */ 1); +var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_pkg__WEBPACK_IMPORTED_MODULE_0__]); +_pkg__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? await __webpack_async_dependencies__ : __webpack_async_dependencies__)[0]; + + +document.write((0,_pkg__WEBPACK_IMPORTED_MODULE_0__.greeting)('Bob')); + + +}); + +/***/ }), +/* 1 */ +/*!***************************!*\ + !*** ./pkg/hi_wasm_bg.js ***! + \***************************/ +/*! namespace exports */ +/*! export greeting [provided] [no usage info] [missing usage info prevents renaming] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: __webpack_require__, __webpack_require__.r, __webpack_exports__, module, __webpack_require__.a, __webpack_require__.d, __webpack_require__.* */ +/***/ ((__webpack_module__, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.a(__webpack_module__, async (__webpack_handle_async_dependencies__) => { +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "greeting": () => (/* binding */ greeting) +/* harmony export */ }); +/* harmony import */ var _hi_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hi_wasm_bg.wasm */ 2); +var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_hi_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__]); +_hi_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? await __webpack_async_dependencies__ : __webpack_async_dependencies__)[0]; + + +let WASM_VECTOR_LEN = 0; + +let cachegetUint8Memory0 = null; +function getUint8Memory0() { + if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== _hi_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.memory.buffer) { + cachegetUint8Memory0 = new Uint8Array(_hi_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.memory.buffer); + } + return cachegetUint8Memory0; +} + +const lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder; + +let cachedTextEncoder = new lTextEncoder('utf-8'); + +const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); +} + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; +}); + +function passStringToWasm0(arg, malloc, realloc) { + + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length); + getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len); + + const mem = getUint8Memory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3); + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +let cachegetInt32Memory0 = null; +function getInt32Memory0() { + if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== _hi_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.memory.buffer) { + cachegetInt32Memory0 = new Int32Array(_hi_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.memory.buffer); + } + return cachegetInt32Memory0; +} + +const lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder; + +let cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + +cachedTextDecoder.decode(); + +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} +/** +* @param {string} name +* @returns {string} +*/ +function greeting(name) { + try { + const retptr = _hi_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_add_to_stack_pointer(-16); + var ptr0 = passStringToWasm0(name, _hi_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc, _hi_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + _hi_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.greeting(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + return getStringFromWasm0(r0, r1); + } finally { + _hi_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_add_to_stack_pointer(16); + _hi_wasm_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_free(r0, r1); + } +} + + +}); + +/***/ }), +/* 2 */ +/*!*****************************!*\ + !*** ./pkg/hi_wasm_bg.wasm ***! + \*****************************/ +/*! namespace exports */ +/*! export __wbindgen_add_to_stack_pointer [provided] [no usage info] [provision prevents renaming (no use info)] */ +/*! export __wbindgen_free [provided] [no usage info] [provision prevents renaming (no use info)] */ +/*! export __wbindgen_malloc [provided] [no usage info] [provision prevents renaming (no use info)] */ +/*! export __wbindgen_realloc [provided] [no usage info] [provision prevents renaming (no use info)] */ +/*! export greeting [provided] [no usage info] [provision prevents renaming (no use info)] */ +/*! export memory [provided] [no usage info] [provision prevents renaming (no use info)] */ +/*! other exports [not provided] [no usage info] */ +/*! runtime requirements: module, module.id, __webpack_exports__, __webpack_require__.v, __webpack_require__.* */ +/***/ ((module, exports, __webpack_require__) => { + +module.exports = __webpack_require__.v(exports, module.id, "ffe21e855d11d22ab54f"); + +/***/ }) +/******/ ]); +``` + +
/* webpack runtime code */ + +``` js +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ id: moduleId, +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/async module */ +/******/ (() => { +/******/ var webpackThen = typeof Symbol === "function" ? Symbol("webpack then") : "__webpack_then__"; +/******/ var webpackExports = typeof Symbol === "function" ? Symbol("webpack exports") : "__webpack_exports__"; +/******/ var completeQueue = (queue) => { +/******/ if(queue) { +/******/ queue.forEach((fn) => (fn.r--)); +/******/ queue.forEach((fn) => (fn.r-- ? fn.r++ : fn())); +/******/ } +/******/ } +/******/ var completeFunction = (fn) => (!--fn.r && fn()); +/******/ var queueFunction = (queue, fn) => (queue ? queue.push(fn) : completeFunction(fn)); +/******/ var wrapDeps = (deps) => (deps.map((dep) => { +/******/ if(dep !== null && typeof dep === "object") { +/******/ if(dep[webpackThen]) return dep; +/******/ if(dep.then) { +/******/ var queue = []; +/******/ dep.then((r) => { +/******/ obj[webpackExports] = r; +/******/ completeQueue(queue); +/******/ queue = 0; +/******/ }); +/******/ var obj = {}; +/******/ obj[webpackThen] = (fn, reject) => (queueFunction(queue, fn), dep.catch(reject)); +/******/ return obj; +/******/ } +/******/ } +/******/ var ret = {}; +/******/ ret[webpackThen] = (fn) => (completeFunction(fn)); +/******/ ret[webpackExports] = dep; +/******/ return ret; +/******/ })); +/******/ __webpack_require__.a = (module, body, hasAwait) => { +/******/ var queue = hasAwait && []; +/******/ var exports = module.exports; +/******/ var currentDeps; +/******/ var outerResolve; +/******/ var reject; +/******/ var isEvaluating = true; +/******/ var nested = false; +/******/ var whenAll = (deps, onResolve, onReject) => { +/******/ if (nested) return; +/******/ nested = true; +/******/ onResolve.r += deps.length; +/******/ deps.map((dep, i) => (dep[webpackThen](onResolve, onReject))); +/******/ nested = false; +/******/ }; +/******/ var promise = new Promise((resolve, rej) => { +/******/ reject = rej; +/******/ outerResolve = () => (resolve(exports), completeQueue(queue), queue = 0); +/******/ }); +/******/ promise[webpackExports] = exports; +/******/ promise[webpackThen] = (fn, rejectFn) => { +/******/ if (isEvaluating) { return completeFunction(fn); } +/******/ if (currentDeps) whenAll(currentDeps, fn, rejectFn); +/******/ queueFunction(queue, fn); +/******/ promise.catch(rejectFn); +/******/ }; +/******/ module.exports = promise; +/******/ body((deps) => { +/******/ if(!deps) return outerResolve(); +/******/ currentDeps = wrapDeps(deps); +/******/ var fn, result; +/******/ var promise = new Promise((resolve, reject) => { +/******/ fn = () => (resolve(result = currentDeps.map((d) => (d[webpackExports])))); +/******/ fn.r = 0; +/******/ whenAll(currentDeps, fn, reject); +/******/ }); +/******/ return fn.r ? promise : result; +/******/ }).then(outerResolve, reject); +/******/ isEvaluating = false; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/wasm loading */ +/******/ (() => { +/******/ __webpack_require__.v = (exports, wasmModuleId, wasmModuleHash, importsObj) => { +/******/ var req = fetch(__webpack_require__.p + "" + wasmModuleHash + ".wasm"); +/******/ if (typeof WebAssembly.instantiateStreaming === 'function') { +/******/ return WebAssembly.instantiateStreaming(req, importsObj) +/******/ .then((res) => (Object.assign(exports, res.instance.exports))); +/******/ } +/******/ return req +/******/ .then((x) => (x.arrayBuffer())) +/******/ .then((bytes) => (WebAssembly.instantiate(bytes, importsObj))) +/******/ .then((res) => (Object.assign(exports, res.instance.exports))); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/publicPath */ +/******/ (() => { +/******/ __webpack_require__.p = "dist/"; +/******/ })(); +/******/ +/************************************************************************/ +``` + +
+ +``` js +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module used 'module' so it can't be inlined +/******/ var __webpack_exports__ = __webpack_require__(0); +/******/ +/******/ })() +; +``` + +# Info + +## Unoptimized + +``` +asset ffe21e855d11d22ab54f.wasm 14.8 KiB [emitted] [immutable] (auxiliary name: main) +asset output.js 12.8 KiB [emitted] (name: main) +chunk (runtime: main) output.js (main) 3.03 KiB (javascript) 14.8 KiB (webassembly) 3.35 KiB (runtime) [entry] [rendered] + > ./example.js main + runtime modules 3.35 KiB 6 modules + dependent modules 2.97 KiB (javascript) 14.8 KiB (webassembly) [dependent] 2 modules + ./example.js 69 bytes [built] [code generated] + [no exports] + [used exports unknown] + entry ./example.js main +webpack 5.53.0 compiled successfully +``` + +## Production mode + +``` +asset f7199313c1125f249cd6.wasm 14.8 KiB [emitted] [immutable] (auxiliary name: main) +asset output.js 2.96 KiB [emitted] [minimized] (name: main) +chunk (runtime: main) output.js (main) 3.03 KiB (javascript) 14.8 KiB (webassembly) 3.08 KiB (runtime) [entry] [rendered] + > ./example.js main + runtime modules 3.08 KiB 5 modules + dependent modules 2.97 KiB (javascript) 14.8 KiB (webassembly) [dependent] 2 modules + ./example.js 69 bytes [built] [code generated] + [no exports] + [no exports used] + entry ./example.js main +webpack 5.53.0 compiled successfully +``` diff --git a/examples/wasm-bindgen-esm/build.js b/examples/wasm-bindgen-esm/build.js new file mode 100644 index 00000000000..41c29c9d169 --- /dev/null +++ b/examples/wasm-bindgen-esm/build.js @@ -0,0 +1 @@ +require("../build-common"); \ No newline at end of file diff --git a/examples/wasm-bindgen-esm/example.js b/examples/wasm-bindgen-esm/example.js new file mode 100644 index 00000000000..f823d275465 --- /dev/null +++ b/examples/wasm-bindgen-esm/example.js @@ -0,0 +1,4 @@ +import { greeting } from "./pkg"; + +document.write(greeting('Bob')); + diff --git a/examples/wasm-bindgen-esm/index.html b/examples/wasm-bindgen-esm/index.html new file mode 100644 index 00000000000..d1fb49339c9 --- /dev/null +++ b/examples/wasm-bindgen-esm/index.html @@ -0,0 +1,5 @@ + + + + + diff --git a/examples/wasm-bindgen-esm/pkg/hi_wasm.d.ts b/examples/wasm-bindgen-esm/pkg/hi_wasm.d.ts new file mode 100644 index 00000000000..51bb2718d6d --- /dev/null +++ b/examples/wasm-bindgen-esm/pkg/hi_wasm.d.ts @@ -0,0 +1,7 @@ +/* tslint:disable */ +/* eslint-disable */ +/** +* @param {string} name +* @returns {string} +*/ +export function greeting(name: string): string; diff --git a/examples/wasm-bindgen-esm/pkg/hi_wasm.js b/examples/wasm-bindgen-esm/pkg/hi_wasm.js new file mode 100644 index 00000000000..ae789f18707 --- /dev/null +++ b/examples/wasm-bindgen-esm/pkg/hi_wasm.js @@ -0,0 +1,2 @@ +import * as wasm from "./hi_wasm_bg.wasm"; +export * from "./hi_wasm_bg.js"; \ No newline at end of file diff --git a/examples/wasm-bindgen-esm/pkg/hi_wasm_bg.js b/examples/wasm-bindgen-esm/pkg/hi_wasm_bg.js new file mode 100644 index 00000000000..71aef983bfc --- /dev/null +++ b/examples/wasm-bindgen-esm/pkg/hi_wasm_bg.js @@ -0,0 +1,103 @@ +import * as wasm from './hi_wasm_bg.wasm'; + +let WASM_VECTOR_LEN = 0; + +let cachegetUint8Memory0 = null; +function getUint8Memory0() { + if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { + cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachegetUint8Memory0; +} + +const lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder; + +let cachedTextEncoder = new lTextEncoder('utf-8'); + +const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); +} + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; +}); + +function passStringToWasm0(arg, malloc, realloc) { + + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length); + getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len); + + const mem = getUint8Memory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3); + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +let cachegetInt32Memory0 = null; +function getInt32Memory0() { + if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { + cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachegetInt32Memory0; +} + +const lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder; + +let cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + +cachedTextDecoder.decode(); + +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} +/** +* @param {string} name +* @returns {string} +*/ +export function greeting(name) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + var ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + wasm.greeting(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(r0, r1); + } +} + diff --git a/examples/wasm-bindgen-esm/pkg/hi_wasm_bg.wasm b/examples/wasm-bindgen-esm/pkg/hi_wasm_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8f5af1057b505ca44e11494d4266e9794abea9af GIT binary patch literal 15104 zcmcJWU5s5I}w2yih+Qr#6uo%b@^&Q873W2Se{k`|v>wB$z#w}brmpJE=kLAbx^0L#fWchfaU+HpPcUE=k{p|6K zUX3~ztM0f1 zuADe?{?zHk^G__CI`zcx!V{N<3n%+eT)c4R{BUvLKDKUb#<_*FXD^&|8}AtF8!X1o z-&;G@`6LIp?UQ#WE+qNvt|O1#*?Ip5XWp~n{!Nb_dhE^zXFu}Mox2`8JoWmy$N!`B z1*o~lg`!{Oo1CBb^Q8;_lN`(DgDVbHNtuLBu{EsM?_MaZ=!ds&e7YB|EQQbXDj!&E zbNsNc`K3QHSGuD!o{h4eM!H$}`WLRb&E6fDNrEf0emB)gep!vM;t$WbyTV4QH*VaR zI6{MJo1f0*)0OLA4#^UGCBuGrsFzo*;D_O*FI{szHmqDWUuI>i`0%hh5nMM(?FPj| zl`k{4Eh+lc(__>bE`62GI3}jkY0jqWZ4+O%ndr)i@PW%ATjHK^??ZDMnCrF~NjRW% zGcGUN9NF%=X`h$LjL&syNXpi**wI{bsp6(->5AP?tp=9fJe}vHgu#cvR(6ak5Vp(o z@KVK52`8pHQ_Hthc3^Tq$Gr5sp|ApF$G{uoEIc+h1IpD`Jlt)uB=_@W8VLdoHK*8H zw#u})m+lp>KDDL-Pu{ z&?7M2Wk5=o4ggNppyKGvMCswEnz@8@NOUXGlj0%cxH1twvw7j)y2KWcJv}VE3!RDZ zo-i8m4tZIuX7d$<}R+ZZtwIWGyFz+f-EZ zVfm7Adar^o!^(x1L=`c4J9KJ3b&*t+I|L$NS>YQdkNB<$6h2#~SC*g=tSTB0iw~9U z;s7i^!8y>?g^h41{Hh&>OCU_RU3FqwpQy>k9Pvb&@x+?Kc4Bie&h_=VkR7(u?}uS+ zZEj*XhAqjhGr}@h^WPY<#yC;JfPUKxgS1i~87d0nNL{0?UPHr?1 zZ-P>&A#}l+hLQFyT+Lodv)72L>%Da6ckGq2*KJsRCIQv&{6AtA80au6_M10l`p8Ts zwN&Qtx1`1O!H+53Rk|0tU{bPTYw>|H7jJY9%;c(dy3^r1x*hebnzB0My$Y~hc!d%B zr6s0*%H+tLMqZ8}NHc$zYS)>3>?=D5rNP+ObPy~$;$)ac)J$q|;2Prb0IDN?IieeD z)+Z)|1HIup&uL0m)ub@sv|NnEFNE}7o3XcEFqMbbBZP=|34sp}X2i(sIWLu7gmU_j zDpjJZwVV4?{%E!g|I?fGFiEZ8a+I%ac5_EIWJ^N?m8l+@JR(7)0}*f@yGqt-Oh|#P zI{P4$ZqDpZj#dkatSl#wYHhKvoIHXKZ+3Aq8i?nlhN_8ZU8}YIa0YUT_9A=<2PD0U zt3^bYlfA=p)eLA{Q_hrY4ToZsmMPCPZqjYX$z5+i>3&Qx8(t>R40$X>CovxSdJ5Da zrtMyjqxu!H)jL0Djo(uGM#C^*VFv(i49g(Rzy?-aj)TH z3;eLITqDkXl^HbmFutZ-M-g5VAkzZrnrc(3i3DXwHO(*AP!m3b_y&pulR*^59BSG+v6vmy=P^P)u_W z%0z_}jj^S;U&ci6Q@{loXcokx1ezRlg7bzd?AQ?!`@O1Vf`KBVl=9?QdXcrV)$4aN zV6SBrer$xXbO*6IIt1ewl0!2s52kP}+V#ybT&AAF^vHrlTat*Yp`XC_rF2_k;>YxP z8+6qwJ%dXG1g7L+oS#WaLiCh6O@ zlD`SZLL`|+vtzhSB01DiXM_T$>=t3~pgUtpqK0>hpfFVzi|qmftC_;x*_ zay0Fl8sDi$RF0;-rp9;c5tXB9udDHDJ)&|n?FVXnuO3l3ns!}{H|i0UqiH`@#Lp{3bPsST>tDzo^{A|3j@UiU8YN$seUmb6J zT@CeU*rtxvJ`evhyL?^Ud>K5jnzWyp?h(q)HQ4Ob76xF)@DDwE(I(pe5M@2 z+tM(W$lDHe0N++zm@rMl-4t&jtvY3PkN~R_lAg{iJ0EclUu*d>yv2!dBU$QB`enr^ z2bJsSPL-Kfcec7De0+&!C-`2DDW4426EX?obMetNH{I%-<{D_s#Q_O#CHVE_gn_~m z{1mn?GZ1TG0(k_WDJSAe9G7s%5SQsKw^UAr>EQs3wTFWNU9V!iA z0Wi+yR$$HQ-Ohju*u6;Kv~FIdbMq?c_$6W_RJI@yXg0*PN?AHuDfjagm$AfvwJUlSQgt14S#zp`MtoCtQqm_**;DRUPb~;+Klb6xD=LtaV_W*~u@Bhges zFAAJ7QgCZ;p0|1@JELqLUTY3%%DmePd;Y)eq>Zj94pv-PnLN4u5e2kAu3*ocY(GzP zk0c+a=)oBd-|UeJdxbB<43ve1e?nAxXvUi(7K4ANPNcaR7_<~6g-2@%vFL)`;xvP> zIvvuIsscaqpm57??=+_)rx^&7;sKV_=RuyDl(m;yMlXB}Vyl*BcUC!%J_hpaM1%}U zv_YIE4c%yMG^54)npV5eBXmR|WBEfBX)o~QMfP~%Bt{8I9VIA_wJJ)eFZ?c1!p#eF zuE)0>ow*9@a*gdycDqr|Ah);?dX>pBaTAddHz4)*!%egXNtST4uk|f(%CY4^(JH407OJARVGb5pWH5c%rB<< z@L_XSbJe4CS+u;2`4$&Khr=d(zL<)>xEyj$lw1m5N%`a*M`M=;M_j#VML;`61-x>@(!yxWe6WuE6c2@G!gJ!r zIguQhJ2F@Buu*ukDK@9+y-VH5I3vuzi(d!ww=?`ea5FCrG$>YU-lgp(BF{_@MhO)Jdm9U6cI2D_hV3o{vE`>|P zq6=n+^~waZiDJSfE+#t#XfbE`Z}WG?kjUibT49GGF_(WoOGu2f0`c=Tnr`n^agOK< zjJJAK0%f&VWxUI#=sI~-TKYTlsyHM1RCXGEo1bsYK)d&bK2c(9CRRp>5DKQzhQ(voGEWMG8 zxmXblQy=mU_~gLyh$8Wnwec1Rgl^|8qyZcbEB~v!1#^w$EnsX`c?$wH|F<-mlp-rJ z7VsCImdWF!DU|L62xwHz6d+Uz&Z3@pMxPEumDC9nOL}|;C3`J;){KepQG8TbyTjK8 zH*TcFXi{9p^&WL5?)MnkSUy#k$LsP_b@|D*BT%qKJbO zywNEaW)_2j2?Sxj50UHs8V@mD3)g@=Q#j!NS`JeyUq znnr&kldu*Cw8LHbzY6E^yBsgQ4G-3ryWuPbk>$sR+7PkZmqTMxJ*immOT=M_T|y=8XKOz*)bEu z0IRkb&AEQtEoOoxEXEI=vGp8t%~k}S+`w(TB&B4P%T#H0-~R(6x8U$MA%h&TF-rdKk($5clNMgZ zex7y_S>jO`9XmwUP#<=I-{!-vBoL9zk zi&#?H%`S$_BAe4Dy`(6l?AGI#2$XbA7AwZws4$p9a*gfK0=X{Jx(RzryCp0{zmpYB zbuoipmbemv%;th~!d8SuUa~k0v&BsfRs;ZB<0uTA4I>IvGPV|6p)l85R*?7RxjIrw zqUMLuWOowGrZC>niI0JRbb~z}ORotJv+61;59JK@LR?C>Oj-O8&%y>lZde2!8_q8z zGt2fZKy#h(=Srm{?4yk~clW}cj57uK(CCFgqdFy1CPWGlSow6J!1kfz#zy;9e+ZKQ zh4)$fERy(4>Q_FDNM_q&{H}lQ8dq`M7$>R*7mE2|k7iJ>HgcLgT1ydy51W-v9+_m1 zaiu*n$#AfltSCu8wA1#=(ej`$*Jc+K^Su6CU5BBQEoP=e%MR&nlb|0%1@_jmgp^cWhoJ3*jWOTl&;_9`w0H?lmAr`85#1y#~v3Na+lfD$hy z|I0X1ud&WFiVW>_gfwglS5a8ST+|_2WGY|ClUV8Y^1kwyYebJLR#VfNf+vYx7u4UP zN^he`$6^~V4KNnlK(%*Oq$b54k$8;N3eW1VCCOa-mX)y`xRNR-FIgEH_x;ey7%)|Sg-Z-JV zU@_E7H|8(Y2rQz;tu3ed69yquEw!hILCBQx?&Z3CsR4Dwgc$&uLPFnVUBn*va~QxJ zBo)|c@!BisdyxYcFV-6QAY(mE<1eiq|6-CPV#s;4uG!1`%tHw;d|nEiFT}%DtF4DE zBn5PQq!*;1sC~2--fK0f{S9=ydR43V5ForyY9G{@+TU!o0xh)HYO2|0pEyp#Y%BY$B%~jq;z7JqTz031Xnq82X%T3?P%5zJQXqh)7o=CV!0284Y zk`V>m{HakCEw+Rkrp+BTaR~Q@tDIvxixI+Uc|sBtMqX$}3^e_TgYgl%**I0`H;pS1 zDch6)&yIhgy$@k0U0>} zo5R-x;0JSzVglBn7t42n`W^r=l^dUnY`T55Y?qV*b@`n_G%ysEQr<}mC@jp#^E*In zxRZ8rxzF#72j}wl#UpRsV}qf6HoO7X2VMckKTFCBTho(k!?gZVK5ZSc??syD^ohW_ z?^*`rJ#a3Gra``*!g$DVq!*XOX}ctL3voq~cbJ9rPUP>=@>_&LSl#Nf;Q8+Nay}Jz zF5QyOwE_NGrUob?GOy`mNA^aoq~OIQU&rTay5hR<4GPJ`8nyw%yV7|cvhl8H-Xm8R zp`Nm#EIhL`swPd9k8;MUm-9QBD>?nbHSGoh5a2mHOa3U%MtXJGw-Ppq+E4Voqwc3LSl>grP(FEKaBg9!KYuKTgM~B0^31u5XBW>co*ypg%H?2j z`1IgBI9NDeE)E742F>+ulHkd6L$2ojF)7?EdmiF0y5l=1-lSDSkMhFh#le$jFI-{% zTddc*?W`C6-_MW!iBGiegQasjyl&&%JSEfI0YT(GpG;mHTsZag$;H7X-#NQ*{`Aue zrx%m#4`41g&CtokOP3Z;Z9Va9+A@aw;LdFi?Af+s>-jUMpBkQhw%j~oz;f4)T|2k# z*td1(eOuaB7S1xgy<^+XecN_SU*Qj2x7L3hddH4!ySDAwTW;R- Date: Sat, 9 Oct 2021 20:53:26 +0000 Subject: [PATCH 2/3] doc: update readme in accordance with template --- examples/wasm-bindgen-esm/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/wasm-bindgen-esm/README.md b/examples/wasm-bindgen-esm/README.md index 32926c5e11f..e316207b016 100644 --- a/examples/wasm-bindgen-esm/README.md +++ b/examples/wasm-bindgen-esm/README.md @@ -1,7 +1,7 @@ This is a simple example that shows the usage of an ES module packaging around a Rust module, built by wasm-pack. -WebAssembly modules can be imported like other async modules with `import` or `import()`. -When importing, they are downloaded and instantiated in a streaming way. +The ES module can be imported like other async modules with `import` or `import()`. +When importing, the underlying WebAssembly module is downloaded and instantiated in a streaming way. # example.js From 30275fc9aedb16c0a66ecb9e6cbc1cd201e3dd4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gunnlaugur=20=C3=9E=C3=B3r=20Briem?= Date: Fri, 4 Mar 2022 13:14:42 +0000 Subject: [PATCH 3/3] address cspell lint violations --- cspell.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cspell.json b/cspell.json index e9596480abf..ed865ceb738 100644 --- a/cspell.json +++ b/cspell.json @@ -15,6 +15,7 @@ "backported", "basictest", "bigint", + "bindgen", "BirĂ³", "bitfield", "bomfile", @@ -289,6 +290,7 @@ "**/dist/**", "examples/**/README.md", "examples/wasm-bindgen*/pkg/*_bg.js", + "examples/wasm-bindgen*/pkg/*_bg*.d.ts", "**/webpack.lock.data/**", "package.json", "yarn.lock",