diff --git a/kanidm_tools/src/cli/group.rs b/kanidm_tools/src/cli/group.rs index 91c6a40c7..5aa918dd0 100644 --- a/kanidm_tools/src/cli/group.rs +++ b/kanidm_tools/src/cli/group.rs @@ -78,7 +78,11 @@ impl GroupOpt { .await { Err(e) => error!("Error -> {:?}", e), - Ok(_) => println!("Successfully added {:?} to group \"{}\"", &new_members, gcopt.name.as_str()), + Ok(_) => println!( + "Successfully added {:?} to group \"{}\"", + &new_members, + gcopt.name.as_str() + ), } } diff --git a/kanidmd/score/src/https/mod.rs b/kanidmd/score/src/https/mod.rs index c79a82391..552ff32ed 100644 --- a/kanidmd/score/src/https/mod.rs +++ b/kanidmd/score/src/https/mod.rs @@ -167,7 +167,6 @@ async fn index_view(_req: tide::Request) -> tide::Result { - @@ -282,28 +281,34 @@ impl tide::Middleware // update it with the hash response.set_body(body_str.replace("==WASMHASH==", self.integrity_wasmloader.as_str())); response.insert_header( - /* content-security-policy headers tell the browser what to trust - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy + /* content-security-policy headers tell the browser what to trust + https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy - In this case we're only trusting the same server that the page is being loaded from, and adding - a hash of wasmloader.js, which is the main script we should be loading, and should be really secure - about that! + In this case we're only trusting the same server that the page is + loaded from, and adding a hash of wasmloader.js, which is the main script + we should be loading, and should be really secure about that! - */ - - // TODO: consider scraping the other js files that wasm-pack builds and including them too - "content-security-policy", - vec![ - "default-src 'self'", - // we need unsafe-eval because of WASM things - format!("script-src 'self' 'sha384-{}' 'unsafe-eval'", self.integrity_wasmloader.as_str() ).as_str(), - "img-src 'self'", - - "object-src 'self'", - // not currently using workers so it can be blocked - "worker-src 'none'", - ].join(";"), - ); + */ + // TODO: consider scraping the other js files that wasm-pack builds and including them too + "content-security-policy", + vec![ + "default-src 'self'", + // we need unsafe-eval because of WASM things + format!( + "script-src 'self' 'sha384-{}' 'unsafe-eval'", + self.integrity_wasmloader.as_str() + ) + .as_str(), + "form-action https: 'self'", // to allow for OAuth posts + // we are not currently using workers so it can be blocked + "worker-src 'none'", + // TODO: Content-Security-Policy-Report-Only https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only + // "report-to 'none'", // unsupported by a lot of things still, but mozilla's saying report-uri is deprecated? + "report-uri 'none'", + "base-uri 'self'", + ] + .join(";"), + ); Ok(response) } diff --git a/kanidmd/score/src/https/oauth2.rs b/kanidmd/score/src/https/oauth2.rs index 2fbc0a7b6..d774c565a 100644 --- a/kanidmd/score/src/https/oauth2.rs +++ b/kanidmd/score/src/https/oauth2.rs @@ -261,7 +261,10 @@ async fn oauth2_authorise( .append_pair("code", &code); res.insert_header("Location", redirect_uri.as_str()); // I think the client server needs this - res.insert_header("Access-Control-Allow-Origin", redirect_uri.origin().ascii_serialization()); + res.insert_header( + "Access-Control-Allow-Origin", + redirect_uri.origin().ascii_serialization(), + ); tide::Body::from_json(&AuthorisationResponse::Permitted).map(|b| { res.set_body(b); res @@ -358,7 +361,10 @@ async fn oauth2_authorise_permit( .append_pair("code", &code); res.insert_header("Location", redirect_uri.as_str()); // I think the client server needs this - res.insert_header("Access-Control-Allow-Origin", redirect_uri.origin().ascii_serialization()); + res.insert_header( + "Access-Control-Allow-Origin", + redirect_uri.origin().ascii_serialization(), + ); res } Err(_e) => { diff --git a/kanidmd_web_ui/build_wasm_dev.sh b/kanidmd_web_ui/build_wasm_dev.sh index 672e985bb..ca33091c4 100755 --- a/kanidmd_web_ui/build_wasm_dev.sh +++ b/kanidmd_web_ui/build_wasm_dev.sh @@ -1,10 +1,3 @@ #!/bin/sh -wasm-pack build --dev --target web || exit 1 - -touch ./pkg/ANYTHING_HERE_WILL_BE_DELETED_ADD_TO_SRC && \ - cp -R ./src/img ./pkg/ && \ - cp ./src/style.css ./pkg/style.css && \ - cp ./src/wasmloader.js ./pkg/wasmloader.js && \ - cp -a ./src/external ./pkg/external && \ - rm ./pkg/.gitignore +BUILD_FLAGS="--dev" ./build_wasm.sh diff --git a/kanidmd_web_ui/build_wasm_release.sh b/kanidmd_web_ui/build_wasm_release.sh index 1e8572027..f20cc75d7 100755 --- a/kanidmd_web_ui/build_wasm_release.sh +++ b/kanidmd_web_ui/build_wasm_release.sh @@ -1,10 +1,14 @@ #!/bin/sh -wasm-pack build --release --target web || exit 1 + +if [ -z "${BUILD_FLAGS}" ]; then + BUILD_FLAGS="--release" +fi + +wasm-pack build ${BUILD_FLAGS} --target web || exit 1 touch ./pkg/ANYTHING_HERE_WILL_BE_DELETED_ADD_TO_SRC && \ - cp -R ./src/img ./pkg/ && + rsync --delete-after -av ./src/img/ ./pkg/img/ && \ + rsync --delete-after -av ./src/external/ ./pkg/external/ && \ cp ./src/style.css ./pkg/style.css && \ cp ./src/wasmloader.js ./pkg/wasmloader.js && \ rm ./pkg/.gitignore - - diff --git a/kanidmd_web_ui/pkg/kanidmd_web_ui.d.ts b/kanidmd_web_ui/pkg/kanidmd_web_ui.d.ts index 64d194aa2..fcf3d9a18 100644 --- a/kanidmd_web_ui/pkg/kanidmd_web_ui.d.ts +++ b/kanidmd_web_ui/pkg/kanidmd_web_ui.d.ts @@ -12,14 +12,23 @@ export interface InitOutput { readonly __wbindgen_malloc: (a: number) => number; readonly __wbindgen_realloc: (a: number, b: number, c: number) => number; readonly __wbindgen_export_2: WebAssembly.Table; - readonly _dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h517d7fce3d158796: (a: number, b: number, c: number) => void; - readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h6c41bce435f08bdb: (a: number, b: number, c: number) => void; - readonly _dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hea19f293916f5b3a: (a: number, b: number, c: number) => void; + readonly _dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hab3be56b8155b388: (a: number, b: number, c: number) => void; + readonly _dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h17af29331a011f5b: (a: number, b: number, c: number) => void; + readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h67ec72bbd39c79bf: (a: number, b: number, c: number) => void; readonly __wbindgen_add_to_stack_pointer: (a: number) => number; readonly __wbindgen_free: (a: number, b: number) => void; readonly __wbindgen_exn_store: (a: number) => void; } +/** +* Synchronously compiles the given `bytes` and instantiates the WebAssembly module. +* +* @param {BufferSource} bytes +* +* @returns {InitOutput} +*/ +export function initSync(bytes: BufferSource): InitOutput; + /** * If `module_or_path` is {RequestInfo} or {URL}, makes a request and * for everything else, calls `WebAssembly.instantiate` directly. diff --git a/kanidmd_web_ui/pkg/kanidmd_web_ui.js b/kanidmd_web_ui/pkg/kanidmd_web_ui.js index 724460f69..341b4f8bb 100644 --- a/kanidmd_web_ui/pkg/kanidmd_web_ui.js +++ b/kanidmd_web_ui/pkg/kanidmd_web_ui.js @@ -8,14 +8,37 @@ heap.push(undefined, null, true, false); function getObject(idx) { return heap[idx]; } +let heap_next = heap.length; + +function dropObject(idx) { + if (idx < 36) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + let WASM_VECTOR_LEN = 0; -let cachegetUint8Memory0 = null; +let cachedUint8Memory0; function getUint8Memory0() { - if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { - cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); + if (cachedUint8Memory0.byteLength === 0) { + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); } - return cachegetUint8Memory0; + return cachedUint8Memory0; } const cachedTextEncoder = new TextEncoder('utf-8'); @@ -35,8 +58,6 @@ const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' function passStringToWasm0(arg, malloc, realloc) { - if (typeof(arg) !== 'string') throw new Error('expected a string argument'); - if (realloc === undefined) { const buf = cachedTextEncoder.encode(arg); const ptr = malloc(buf.length); @@ -65,7 +86,7 @@ function passStringToWasm0(arg, malloc, realloc) { ptr = realloc(ptr, len, len = offset + arg.length * 3); const view = getUint8Memory0().subarray(ptr + offset, ptr + len); const ret = encodeString(arg, view); - if (ret.read !== arg.length) throw new Error('failed to pass whole string'); + offset += ret.written; } @@ -73,12 +94,16 @@ function passStringToWasm0(arg, malloc, realloc) { return ptr; } -let cachegetInt32Memory0 = null; +function isLikeNone(x) { + return x === undefined || x === null; +} + +let cachedInt32Memory0; function getInt32Memory0() { - if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { - cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); + if (cachedInt32Memory0.byteLength === 0) { + cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); } - return cachegetInt32Memory0; + return cachedInt32Memory0; } const cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); @@ -89,51 +114,12 @@ function getStringFromWasm0(ptr, len) { return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); } -let heap_next = heap.length; - -function addHeapObject(obj) { - if (heap_next === heap.length) heap.push(heap.length + 1); - const idx = heap_next; - heap_next = heap[idx]; - - if (typeof(heap_next) !== 'number') throw new Error('corrupt heap'); - - heap[idx] = obj; - return idx; -} - -function isLikeNone(x) { - return x === undefined || x === null; -} - -function _assertBoolean(n) { - if (typeof(n) !== 'boolean') { - throw new Error('expected a boolean argument'); - } -} - -function _assertNum(n) { - if (typeof(n) !== 'number') throw new Error('expected a number argument'); -} - -let cachegetFloat64Memory0 = null; +let cachedFloat64Memory0; function getFloat64Memory0() { - if (cachegetFloat64Memory0 === null || cachegetFloat64Memory0.buffer !== wasm.memory.buffer) { - cachegetFloat64Memory0 = new Float64Array(wasm.memory.buffer); + if (cachedFloat64Memory0.byteLength === 0) { + cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer); } - return cachegetFloat64Memory0; -} - -function dropObject(idx) { - if (idx < 36) return; - heap[idx] = heap_next; - heap_next = idx; -} - -function takeObject(idx) { - const ret = getObject(idx); - dropObject(idx); - return ret; + return cachedFloat64Memory0; } function debugString(val) { @@ -201,49 +187,6 @@ function debugString(val) { return className; } -function makeClosure(arg0, arg1, dtor, f) { - const state = { a: arg0, b: arg1, cnt: 1, dtor }; - const real = (...args) => { - // First up with a closure we increment the internal reference - // count. This ensures that the Rust closure environment won't - // be deallocated while we're invoking it. - state.cnt++; - try { - return f(state.a, state.b, ...args); - } finally { - if (--state.cnt === 0) { - wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b); - state.a = 0; - - } - } - }; - real.original = state; - - return real; -} - -function logError(f, args) { - try { - return f.apply(this, args); - } catch (e) { - let error = (function () { - try { - return e instanceof Error ? `${e.message}\n\nStack:\n${e.stack}` : e.toString(); - } catch(_) { - return ""; - } - }()); - console.error("wasm-bindgen: imported JS function that was not marked as `catch` threw an error:", error); - throw e; - } -} -function __wbg_adapter_30(arg0, arg1, arg2) { - _assertNum(arg0); - _assertNum(arg1); - wasm._dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h517d7fce3d158796(arg0, arg1, addHeapObject(arg2)); -} - function makeMutClosure(arg0, arg1, dtor, f) { const state = { a: arg0, b: arg1, cnt: 1, dtor }; const real = (...args) => { @@ -268,11 +211,6 @@ function makeMutClosure(arg0, arg1, dtor, f) { return real; } -function __wbg_adapter_33(arg0, arg1, arg2) { - _assertNum(arg0); - _assertNum(arg1); - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h6c41bce435f08bdb(arg0, arg1, addHeapObject(arg2)); -} let stack_pointer = 32; @@ -281,16 +219,43 @@ function addBorrowedObject(obj) { heap[--stack_pointer] = obj; return stack_pointer; } -function __wbg_adapter_36(arg0, arg1, arg2) { +function __wbg_adapter_30(arg0, arg1, arg2) { try { - _assertNum(arg0); - _assertNum(arg1); - wasm._dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hea19f293916f5b3a(arg0, arg1, addBorrowedObject(arg2)); + wasm._dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hab3be56b8155b388(arg0, arg1, addBorrowedObject(arg2)); } finally { heap[stack_pointer++] = undefined; } } +function makeClosure(arg0, arg1, dtor, f) { + const state = { a: arg0, b: arg1, cnt: 1, dtor }; + const real = (...args) => { + // First up with a closure we increment the internal reference + // count. This ensures that the Rust closure environment won't + // be deallocated while we're invoking it. + state.cnt++; + try { + return f(state.a, state.b, ...args); + } finally { + if (--state.cnt === 0) { + wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b); + state.a = 0; + + } + } + }; + real.original = state; + + return real; +} +function __wbg_adapter_33(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h17af29331a011f5b(arg0, arg1, addHeapObject(arg2)); +} + +function __wbg_adapter_36(arg0, arg1, arg2) { + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h67ec72bbd39c79bf(arg0, arg1, addHeapObject(arg2)); +} + /** */ export function run_app() { @@ -307,12 +272,12 @@ export function run_app() { } } -let cachegetUint32Memory0 = null; +let cachedUint32Memory0; function getUint32Memory0() { - if (cachegetUint32Memory0 === null || cachegetUint32Memory0.buffer !== wasm.memory.buffer) { - cachegetUint32Memory0 = new Uint32Array(wasm.memory.buffer); + if (cachedUint32Memory0.byteLength === 0) { + cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer); } - return cachegetUint32Memory0; + return cachedUint32Memory0; } function getArrayJsValueFromWasm0(ptr, len) { @@ -364,25 +329,14 @@ async function load(module, imports) { } } -async function init(input) { - if (typeof input === 'undefined') { - input = new URL('kanidmd_web_ui_bg.wasm', import.meta.url); - } +function getImports() { const imports = {}; imports.wbg = {}; - imports.wbg.__wbindgen_json_serialize = function(arg0, arg1) { - const obj = getObject(arg1); - const ret = JSON.stringify(obj === undefined ? null : obj); - const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; + imports.wbg.__wbindgen_object_drop_ref = function(arg0) { + takeObject(arg0); }; - imports.wbg.__wbg_modalhide_673016763df325bd = function() { return logError(function (arg0, arg1) { - modal_hide(getStringFromWasm0(arg0, arg1)); - }, arguments) }; - imports.wbg.__wbindgen_string_new = function(arg0, arg1) { - const ret = getStringFromWasm0(arg0, arg1); + imports.wbg.__wbindgen_object_clone_ref = function(arg0) { + const ret = getObject(arg0); return addHeapObject(ret); }; imports.wbg.__wbindgen_string_get = function(arg0, arg1) { @@ -393,59 +347,21 @@ async function init(input) { getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbindgen_object_clone_ref = function(arg0) { - const ret = getObject(arg0); + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); return addHeapObject(ret); }; - imports.wbg.__wbindgen_json_parse = function(arg0, arg1) { - const ret = JSON.parse(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); + imports.wbg.__wbg_modalhide_673016763df325bd = function(arg0, arg1) { + modal_hide(getStringFromWasm0(arg0, arg1)); }; - imports.wbg.__wbindgen_is_undefined = function(arg0) { - const ret = getObject(arg0) === undefined; - _assertBoolean(ret); - return ret; - }; - imports.wbg.__wbindgen_boolean_get = function(arg0) { - const v = getObject(arg0); - const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2; - _assertNum(ret); - return ret; - }; - imports.wbg.__wbindgen_number_get = function(arg0, arg1) { + imports.wbg.__wbindgen_json_serialize = function(arg0, arg1) { const obj = getObject(arg1); - const ret = typeof(obj) === 'number' ? obj : undefined; - if (!isLikeNone(ret)) { - _assertNum(ret); - } - getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret; - getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); - }; - imports.wbg.__wbindgen_number_new = function(arg0) { - const ret = arg0; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_object_drop_ref = function(arg0) { - takeObject(arg0); - }; - imports.wbg.__wbg_error_09919627ac0992f5 = function() { return logError(function (arg0, arg1) { - try { - console.error(getStringFromWasm0(arg0, arg1)); - } finally { - wasm.__wbindgen_free(arg0, arg1); - } - }, arguments) }; - imports.wbg.__wbg_new_693216e109162396 = function() { return logError(function () { - const ret = new Error(); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_stack_0ddaca5d1abfb52f = function() { return logError(function (arg0, arg1) { - const ret = getObject(arg1).stack; + const ret = JSON.stringify(obj === undefined ? null : obj); const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }, arguments) }; + }; imports.wbg.__wbindgen_cb_drop = function(arg0) { const obj = takeObject(arg0).original; if (obj.cnt-- == 1) { @@ -453,406 +369,432 @@ async function init(input) { return true; } const ret = false; - _assertBoolean(ret); return ret; }; - imports.wbg.__wbg_log_06b7ffc63a0f8bee = function() { return logError(function (arg0, arg1) { + imports.wbg.__wbindgen_boolean_get = function(arg0) { + const v = getObject(arg0); + const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2; + return ret; + }; + imports.wbg.__wbindgen_is_undefined = function(arg0) { + const ret = getObject(arg0) === undefined; + return ret; + }; + imports.wbg.__wbindgen_json_parse = function(arg0, arg1) { + const ret = JSON.parse(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_number_new = function(arg0) { + const ret = arg0; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_number_get = function(arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof(obj) === 'number' ? obj : undefined; + getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret; + getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); + }; + imports.wbg.__wbg_new_693216e109162396 = function() { + const ret = new Error(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_stack_0ddaca5d1abfb52f = function(arg0, arg1) { + const ret = getObject(arg1).stack; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }; + imports.wbg.__wbg_error_09919627ac0992f5 = function(arg0, arg1) { + try { + console.error(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_free(arg0, arg1); + } + }; + imports.wbg.__wbg_log_06b7ffc63a0f8bee = function(arg0, arg1) { var v0 = getArrayJsValueFromWasm0(arg0, arg1).slice(); wasm.__wbindgen_free(arg0, arg1 * 4); console.log(...v0); - }, arguments) }; - imports.wbg.__wbg_warn_2aa0e7178e1d35f6 = function() { return logError(function (arg0, arg1) { + }; + imports.wbg.__wbg_warn_2aa0e7178e1d35f6 = function(arg0, arg1) { var v0 = getArrayJsValueFromWasm0(arg0, arg1).slice(); wasm.__wbindgen_free(arg0, arg1 * 4); console.warn(...v0); - }, arguments) }; - imports.wbg.__wbg_instanceof_Window_0e6c0f1096d66c3c = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_instanceof_Window_a2a08d3918d7d4d0 = function(arg0) { const ret = getObject(arg0) instanceof Window; - _assertBoolean(ret); return ret; - }, arguments) }; - imports.wbg.__wbg_document_99eddbbc11ec831e = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_document_14a383364c173445 = function(arg0) { const ret = getObject(arg0).document; return isLikeNone(ret) ? 0 : addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_location_fa9019d2eb2195e8 = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_location_3b5031b281e8d218 = function(arg0) { const ret = getObject(arg0).location; return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_history_dd96d7b18f9170a6 = function() { return handleError(function (arg0) { + }; + imports.wbg.__wbg_history_138ac6c183c00847 = function() { return handleError(function (arg0) { const ret = getObject(arg0).history; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_navigator_1f72d7edb7b4c387 = function() { return logError(function (arg0) { + imports.wbg.__wbg_navigator_2d05aef684d827d8 = function(arg0) { const ret = getObject(arg0).navigator; return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_localStorage_6e9ba4e9a3771427 = function() { return handleError(function (arg0) { + }; + imports.wbg.__wbg_localStorage_2409bbdfe5a4d2a7 = function() { return handleError(function (arg0) { const ret = getObject(arg0).localStorage; return isLikeNone(ret) ? 0 : addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_sessionStorage_ac0b57844426d0d8 = function() { return handleError(function (arg0) { + imports.wbg.__wbg_sessionStorage_e83c2c60c5113416 = function() { return handleError(function (arg0) { const ret = getObject(arg0).sessionStorage; return isLikeNone(ret) ? 0 : addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_fetch_ef7a6623d1fcd3b8 = function() { return logError(function (arg0, arg1) { + imports.wbg.__wbg_fetch_23507368eed8d838 = function(arg0, arg1) { const ret = getObject(arg0).fetch(getObject(arg1)); return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_body_2a1ff14b05042a51 = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_body_36a11f2467926b2b = function(arg0) { const ret = getObject(arg0).body; return isLikeNone(ret) ? 0 : addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_createElement_3c9b5f3aa42457a1 = function() { return handleError(function (arg0, arg1, arg2) { + }; + imports.wbg.__wbg_createElement_2d8b75cffbd32c70 = function() { return handleError(function (arg0, arg1, arg2) { const ret = getObject(arg0).createElement(getStringFromWasm0(arg1, arg2)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_createElementNS_a0904ea4c02292f4 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + imports.wbg.__wbg_createElementNS_02b4562aadf76190 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { const ret = getObject(arg0).createElementNS(arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_createTextNode_72cf3c22f1eed9ee = function() { return logError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_createTextNode_cdbaccf3b941b486 = function(arg0, arg1, arg2) { const ret = getObject(arg0).createTextNode(getStringFromWasm0(arg1, arg2)); return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_getElementById_f83c5de20dc455d6 = function() { return logError(function (arg0, arg1, arg2) { + }; + imports.wbg.__wbg_getElementById_0c9415d96f5b9ec6 = function(arg0, arg1, arg2) { const ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2)); return isLikeNone(ret) ? 0 : addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_querySelector_c03126fc82664294 = function() { return handleError(function (arg0, arg1, arg2) { + }; + imports.wbg.__wbg_querySelector_d5f2cd97210290fd = function() { return handleError(function (arg0, arg1, arg2) { const ret = getObject(arg0).querySelector(getStringFromWasm0(arg1, arg2)); return isLikeNone(ret) ? 0 : addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_pushState_b0c96c33f80b8f64 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5) { - getObject(arg0).pushState(getObject(arg1), getStringFromWasm0(arg2, arg3), arg4 === 0 ? undefined : getStringFromWasm0(arg4, arg5)); - }, arguments) }; - imports.wbg.__wbg_pathname_805641640383ca79 = function() { return handleError(function (arg0, arg1) { - const ret = getObject(arg1).pathname; - const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }, arguments) }; - imports.wbg.__wbg_search_083c5449552cf16e = function() { return handleError(function (arg0, arg1) { - const ret = getObject(arg1).search; - const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }, arguments) }; - imports.wbg.__wbg_replace_345170f940d047af = function() { return handleError(function (arg0, arg1, arg2) { - getObject(arg0).replace(getStringFromWasm0(arg1, arg2)); - }, arguments) }; - imports.wbg.__wbg_parentElement_d078cf0bd5c4b641 = function() { return logError(function (arg0) { - const ret = getObject(arg0).parentElement; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_lastChild_84687239bfef7d2f = function() { return logError(function (arg0) { - const ret = getObject(arg0).lastChild; - return isLikeNone(ret) ? 0 : addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_setnodeValue_77a78d32cf9e9152 = function() { return logError(function (arg0, arg1, arg2) { - getObject(arg0).nodeValue = arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2); - }, arguments) }; - imports.wbg.__wbg_appendChild_a86c0da8d152eae4 = function() { return handleError(function (arg0, arg1) { - const ret = getObject(arg0).appendChild(getObject(arg1)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_insertBefore_4df558a2aa0435c1 = function() { return handleError(function (arg0, arg1, arg2) { - const ret = getObject(arg0).insertBefore(getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_removeChild_b4ce6c8d6e5d47be = function() { return handleError(function (arg0, arg1) { - const ret = getObject(arg0).removeChild(getObject(arg1)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_instanceof_Response_ccfeb62399355bcd = function() { return logError(function (arg0) { - const ret = getObject(arg0) instanceof Response; - _assertBoolean(ret); - return ret; - }, arguments) }; - imports.wbg.__wbg_status_600fd8b881393898 = function() { return logError(function (arg0) { - const ret = getObject(arg0).status; - _assertNum(ret); - return ret; - }, arguments) }; - imports.wbg.__wbg_headers_9e7f2c05a9b962ea = function() { return logError(function (arg0) { - const ret = getObject(arg0).headers; - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_json_df9259ba758ea2fe = function() { return handleError(function (arg0) { - const ret = getObject(arg0).json(); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_text_2612fbe0b9d32220 = function() { return handleError(function (arg0) { - const ret = getObject(arg0).text(); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_getItem_eb6e17b18b890a47 = function() { return handleError(function (arg0, arg1, arg2, arg3) { - const ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3)); - var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }, arguments) }; - imports.wbg.__wbg_removeItem_be0233b7e0822d46 = function() { return handleError(function (arg0, arg1, arg2) { - getObject(arg0).removeItem(getStringFromWasm0(arg1, arg2)); - }, arguments) }; - imports.wbg.__wbg_setItem_ed2ea572329ab721 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { - getObject(arg0).setItem(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); - }, arguments) }; - imports.wbg.__wbg_get_85a5f49f8e22030b = function() { return handleError(function (arg0, arg1, arg2, arg3) { + imports.wbg.__wbg_get_053104ee983370de = function() { return handleError(function (arg0, arg1, arg2, arg3) { const ret = getObject(arg1).get(getStringFromWasm0(arg2, arg3)); var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }, arguments) }; - imports.wbg.__wbg_set_6884dcc6cdd65022 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + imports.wbg.__wbg_set_23d56ff06768e13b = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { getObject(arg0).set(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); }, arguments) }; - imports.wbg.__wbg_headers_0a71906114661592 = function() { return logError(function (arg0) { - const ret = getObject(arg0).headers; - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_newwithstrandinit_fd99688f189f053e = function() { return handleError(function (arg0, arg1, arg2) { - const ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_pathname_704bbbf916a0727d = function() { return logError(function (arg0, arg1) { + imports.wbg.__wbg_pathname_362af71fbfa579b5 = function(arg0, arg1) { const ret = getObject(arg1).pathname; const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }, arguments) }; - imports.wbg.__wbg_new_25e89e4c66f17ba3 = function() { return handleError(function (arg0, arg1) { + }; + imports.wbg.__wbg_new_f508102bcfd6feb6 = function() { return handleError(function (arg0, arg1) { const ret = new URL(getStringFromWasm0(arg0, arg1)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_get_63177ea11cf74f5a = function() { return handleError(function (arg0, arg1) { - const ret = getObject(arg0).get(getObject(arg1)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_add_0e4449143d6e7625 = function() { return handleError(function (arg0, arg1, arg2) { - getObject(arg0).add(getStringFromWasm0(arg1, arg2)); - }, arguments) }; - imports.wbg.__wbg_remove_90cd0eb3c01b4900 = function() { return handleError(function (arg0, arg1, arg2) { - getObject(arg0).remove(getStringFromWasm0(arg1, arg2)); - }, arguments) }; - imports.wbg.__wbg_value_f232184bd0e27b00 = function() { return logError(function (arg0, arg1) { + imports.wbg.__wbg_value_92e4233a8e4ce8c1 = function(arg0, arg1) { const ret = getObject(arg1).value; const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }, arguments) }; - imports.wbg.__wbg_setvalue_8efcd1f77232ee9b = function() { return logError(function (arg0, arg1, arg2) { + }; + imports.wbg.__wbg_setvalue_61440ce246b0279d = function(arg0, arg1, arg2) { getObject(arg0).value = getStringFromWasm0(arg1, arg2); - }, arguments) }; - imports.wbg.__wbg_instanceof_Element_4fafc1ceb4cdee77 = function() { return logError(function (arg0) { - const ret = getObject(arg0) instanceof Element; - _assertBoolean(ret); - return ret; - }, arguments) }; - imports.wbg.__wbg_namespaceURI_3bb5841c365214c8 = function() { return logError(function (arg0, arg1) { - const ret = getObject(arg1).namespaceURI; - var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }, arguments) }; - imports.wbg.__wbg_classList_557a7b717387d03d = function() { return logError(function (arg0) { - const ret = getObject(arg0).classList; + }; + imports.wbg.__wbg_headers_3618f72dcec019b7 = function(arg0) { + const ret = getObject(arg0).headers; + return addHeapObject(ret); + }; + imports.wbg.__wbg_newwithstrandinit_41c86e821f771b24 = function() { return handleError(function (arg0, arg1, arg2) { + const ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_setinnerHTML_cc7e5a208667d1bc = function() { return logError(function (arg0, arg1, arg2) { - getObject(arg0).innerHTML = getStringFromWasm0(arg1, arg2); + imports.wbg.__wbg_add_2c230dc2850cac52 = function() { return handleError(function (arg0, arg1, arg2) { + getObject(arg0).add(getStringFromWasm0(arg1, arg2)); }, arguments) }; - imports.wbg.__wbg_removeAttribute_8a8f459a4b627ec4 = function() { return handleError(function (arg0, arg1, arg2) { - getObject(arg0).removeAttribute(getStringFromWasm0(arg1, arg2)); + imports.wbg.__wbg_remove_1e3a41bd96b25c83 = function() { return handleError(function (arg0, arg1, arg2) { + getObject(arg0).remove(getStringFromWasm0(arg1, arg2)); }, arguments) }; - imports.wbg.__wbg_setAttribute_8d90e00d652037be = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { - getObject(arg0).setAttribute(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); + imports.wbg.__wbg_get_f93fc477a365e405 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).get(getObject(arg1)); + return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_instanceof_HtmlElement_806c643943ab20c1 = function() { return logError(function (arg0) { - const ret = getObject(arg0) instanceof HTMLElement; - _assertBoolean(ret); - return ret; - }, arguments) }; - imports.wbg.__wbg_focus_42ad8e77a7a0b22a = function() { return handleError(function (arg0) { - getObject(arg0).focus(); - }, arguments) }; - imports.wbg.__wbg_href_fbf5127aa00a8b86 = function() { return logError(function (arg0, arg1) { + imports.wbg.__wbg_href_3e6228257a9ec234 = function(arg0, arg1) { const ret = getObject(arg1).href; const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }, arguments) }; - imports.wbg.__wbg_instanceof_HtmlInputElement_750fccab172eab35 = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_instanceof_HtmlInputElement_756d5883770e3491 = function(arg0) { const ret = getObject(arg0) instanceof HTMLInputElement; - _assertBoolean(ret); return ret; - }, arguments) }; - imports.wbg.__wbg_setchecked_e37cbc4fab363e71 = function() { return logError(function (arg0, arg1) { + }; + imports.wbg.__wbg_setchecked_5ce7b275aa2d0bbd = function(arg0, arg1) { getObject(arg0).checked = arg1 !== 0; - }, arguments) }; - imports.wbg.__wbg_value_14b43f7df5bd6160 = function() { return logError(function (arg0, arg1) { + }; + imports.wbg.__wbg_value_5573c798506a4119 = function(arg0, arg1) { const ret = getObject(arg1).value; const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }, arguments) }; - imports.wbg.__wbg_setvalue_649eb7de76d4a493 = function() { return logError(function (arg0, arg1, arg2) { + }; + imports.wbg.__wbg_setvalue_f3bd4ea96d361b70 = function(arg0, arg1, arg2) { getObject(arg0).value = getStringFromWasm0(arg1, arg2); - }, arguments) }; - imports.wbg.__wbg_getClientExtensionResults_8400549e426a9259 = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_getClientExtensionResults_6f7de95bed8d48ef = function(arg0) { const ret = getObject(arg0).getClientExtensionResults(); return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_instanceof_Event_2311550b7d159b6e = function() { return logError(function (arg0) { - const ret = getObject(arg0) instanceof Event; - _assertBoolean(ret); + }; + imports.wbg.__wbg_instanceof_Element_9a257409019cee1b = function(arg0) { + const ret = getObject(arg0) instanceof Element; return ret; + }; + imports.wbg.__wbg_namespaceURI_46712e5b566ccc37 = function(arg0, arg1) { + const ret = getObject(arg1).namespaceURI; + var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }; + imports.wbg.__wbg_classList_69b08a61aad2445b = function(arg0) { + const ret = getObject(arg0).classList; + return addHeapObject(ret); + }; + imports.wbg.__wbg_setinnerHTML_c3959ab1092c9bae = function(arg0, arg1, arg2) { + getObject(arg0).innerHTML = getStringFromWasm0(arg1, arg2); + }; + imports.wbg.__wbg_removeAttribute_8f6b6cf6fe7a2054 = function() { return handleError(function (arg0, arg1, arg2) { + getObject(arg0).removeAttribute(getStringFromWasm0(arg1, arg2)); }, arguments) }; - imports.wbg.__wbg_target_46fd3a29f64b0e43 = function() { return logError(function (arg0) { + imports.wbg.__wbg_setAttribute_6091f6f3602fc299 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + getObject(arg0).setAttribute(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); + }, arguments) }; + imports.wbg.__wbg_instanceof_HtmlElement_d2b7afdac18ee070 = function(arg0) { + const ret = getObject(arg0) instanceof HTMLElement; + return ret; + }; + imports.wbg.__wbg_focus_c3aa381bd2a1b65c = function() { return handleError(function (arg0) { + getObject(arg0).focus(); + }, arguments) }; + imports.wbg.__wbg_instanceof_Event_16c4141f82752987 = function(arg0) { + const ret = getObject(arg0) instanceof Event; + return ret; + }; + imports.wbg.__wbg_target_98e6e332956ee051 = function(arg0) { const ret = getObject(arg0).target; return isLikeNone(ret) ? 0 : addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_cancelBubble_7446704fccad1780 = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_cancelBubble_050e4dd024a8d3f8 = function(arg0) { const ret = getObject(arg0).cancelBubble; - _assertBoolean(ret); return ret; - }, arguments) }; - imports.wbg.__wbg_preventDefault_747982fd5fe3b6d0 = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_preventDefault_2e92eb64f38efc0d = function(arg0) { getObject(arg0).preventDefault(); - }, arguments) }; - imports.wbg.__wbg_addEventListener_be0c061a1359c1dd = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { - getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), getObject(arg4)); - }, arguments) }; - imports.wbg.__wbg_removeEventListener_3e7319b5d7c8be8f = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { - getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), arg4 !== 0); - }, arguments) }; - imports.wbg.__wbg_credentials_f81f9e33f9789a54 = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_credentials_544a26c31049992f = function(arg0) { const ret = getObject(arg0).credentials; return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_instanceof_HtmlDocument_a4a9eb971e2c2b02 = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_instanceof_HtmlDocument_85f8820e092a58bd = function(arg0) { const ret = getObject(arg0) instanceof HTMLDocument; - _assertBoolean(ret); return ret; - }, arguments) }; - imports.wbg.__wbg_cookie_4b5805da6b19c329 = function() { return handleError(function (arg0, arg1) { + }; + imports.wbg.__wbg_cookie_6a5bd022c585a389 = function() { return handleError(function (arg0, arg1) { const ret = getObject(arg1).cookie; const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }, arguments) }; - imports.wbg.__wbg_new_94fb1279cf6afea5 = function() { return logError(function () { + imports.wbg.__wbg_addEventListener_a77a92f38176616e = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), getObject(arg4)); + }, arguments) }; + imports.wbg.__wbg_removeEventListener_2882dfde82b5b4d9 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), arg4 !== 0); + }, arguments) }; + imports.wbg.__wbg_parentElement_479f575ed7e67715 = function(arg0) { + const ret = getObject(arg0).parentElement; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_lastChild_0df6447e8b05813b = function(arg0) { + const ret = getObject(arg0).lastChild; + return isLikeNone(ret) ? 0 : addHeapObject(ret); + }; + imports.wbg.__wbg_setnodeValue_103010d70088271d = function(arg0, arg1, arg2) { + getObject(arg0).nodeValue = arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2); + }; + imports.wbg.__wbg_appendChild_e9d52952defb480f = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).appendChild(getObject(arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_insertBefore_8a88fe62c2fad6ca = function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).insertBefore(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_removeChild_67ab7410bea7e2cb = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).removeChild(getObject(arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_pushState_54f843ea8212e98f = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5) { + getObject(arg0).pushState(getObject(arg1), getStringFromWasm0(arg2, arg3), arg4 === 0 ? undefined : getStringFromWasm0(arg4, arg5)); + }, arguments) }; + imports.wbg.__wbg_pathname_84f841cd108e1614 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg1).pathname; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_search_48955415868c6221 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg1).search; + const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_replace_22c22b6b59d0a5ff = function() { return handleError(function (arg0, arg1, arg2) { + getObject(arg0).replace(getStringFromWasm0(arg1, arg2)); + }, arguments) }; + imports.wbg.__wbg_instanceof_Response_e928c54c1025470c = function(arg0) { + const ret = getObject(arg0) instanceof Response; + return ret; + }; + imports.wbg.__wbg_status_5b4a574de7c5bbfe = function(arg0) { + const ret = getObject(arg0).status; + return ret; + }; + imports.wbg.__wbg_headers_1dc1ef92ba3d32b1 = function(arg0) { + const ret = getObject(arg0).headers; + return addHeapObject(ret); + }; + imports.wbg.__wbg_json_6416cf78642ce433 = function() { return handleError(function (arg0) { + const ret = getObject(arg0).json(); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_text_5cb78830c1a11c5b = function() { return handleError(function (arg0) { + const ret = getObject(arg0).text(); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_getItem_9cb4c95f48b3e51b = function() { return handleError(function (arg0, arg1, arg2, arg3) { + const ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3)); + var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_removeItem_6d8d7a1539920d51 = function() { return handleError(function (arg0, arg1, arg2) { + getObject(arg0).removeItem(getStringFromWasm0(arg1, arg2)); + }, arguments) }; + imports.wbg.__wbg_setItem_04c4ba5c4a9c337f = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + getObject(arg0).setItem(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); + }, arguments) }; + imports.wbg.__wbg_new_2ab697f1555e0dbc = function() { const ret = new Array(); return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_push_40c6a90f1805aa90 = function() { return logError(function (arg0, arg1) { - const ret = getObject(arg0).push(getObject(arg1)); - _assertNum(ret); - return ret; - }, arguments) }; - imports.wbg.__wbg_instanceof_Error_b074c76f6096db9b = function() { return logError(function (arg0) { - const ret = getObject(arg0) instanceof Error; - _assertBoolean(ret); - return ret; - }, arguments) }; - imports.wbg.__wbg_message_dcca38fbff239fbf = function() { return logError(function (arg0) { - const ret = getObject(arg0).message; - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_name_642dd84602f48d65 = function() { return logError(function (arg0) { - const ret = getObject(arg0).name; - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_toString_eec28c54c24b830b = function() { return logError(function (arg0) { - const ret = getObject(arg0).toString(); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_newnoargs_e23b458e372830de = function() { return logError(function (arg0, arg1) { + }; + imports.wbg.__wbg_newnoargs_fc5356289219b93b = function(arg0, arg1) { const ret = new Function(getStringFromWasm0(arg0, arg1)); return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_call_ae78342adc33730a = function() { return handleError(function (arg0, arg1) { - const ret = getObject(arg0).call(getObject(arg1)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_valueOf_a08afc4df5d92043 = function() { return logError(function (arg0) { - const ret = getObject(arg0).valueOf(); - return ret; - }, arguments) }; - imports.wbg.__wbg_is_40969b082b54c84d = function() { return logError(function (arg0, arg1) { - const ret = Object.is(getObject(arg0), getObject(arg1)); - _assertBoolean(ret); - return ret; - }, arguments) }; - imports.wbg.__wbg_new_36359baae5a47e27 = function() { return logError(function () { - const ret = new Object(); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_resolve_a9a87bdd64e9e62c = function() { return logError(function (arg0) { - const ret = Promise.resolve(getObject(arg0)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_then_ce526c837d07b68f = function() { return logError(function (arg0, arg1) { - const ret = getObject(arg0).then(getObject(arg1)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_then_842e65b843962f56 = function() { return logError(function (arg0, arg1, arg2) { - const ret = getObject(arg0).then(getObject(arg1), getObject(arg2)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_globalThis_8e275ef40caea3a3 = function() { return handleError(function () { - const ret = globalThis.globalThis; - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_self_99737b4dcdf6f0d8 = function() { return handleError(function () { - const ret = self.self; - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_window_9b61fbbf3564c4fb = function() { return handleError(function () { - const ret = window.window; - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_global_5de1e0f82bddcd27 = function() { return handleError(function () { - const ret = global.global; - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_new_cc9018bd6f283b6f = function() { return logError(function (arg0) { - const ret = new Uint8Array(getObject(arg0)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_newwithbyteoffsetandlength_ce1e75f0ce5f7974 = function() { return logError(function (arg0, arg1, arg2) { - const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_length_0acb1cf9bbaf8519 = function() { return logError(function (arg0) { - const ret = getObject(arg0).length; - _assertNum(ret); - return ret; - }, arguments) }; - imports.wbg.__wbg_set_f25e869e4565d2a2 = function() { return logError(function (arg0, arg1, arg2) { - getObject(arg0).set(getObject(arg1), arg2 >>> 0); - }, arguments) }; - imports.wbg.__wbg_buffer_7af23f65f6c64548 = function() { return logError(function (arg0) { - const ret = getObject(arg0).buffer; - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_get_a9cab131e3152c49 = function() { return handleError(function (arg0, arg1) { + }; + imports.wbg.__wbg_get_89247d3aeaa38cc5 = function() { return handleError(function (arg0, arg1) { const ret = Reflect.get(getObject(arg0), getObject(arg1)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_set_93b1c87ee2af852e = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_call_4573f605ca4b5f10 = function() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).call(getObject(arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_new_306ce8d57919e6ae = function() { + const ret = new Object(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_self_ba1ddafe9ea7a3a2 = function() { return handleError(function () { + const ret = self.self; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_window_be3cc430364fd32c = function() { return handleError(function () { + const ret = window.window; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_globalThis_56d9c9f814daeeee = function() { return handleError(function () { + const ret = globalThis.globalThis; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_global_8c35aeee4ac77f2b = function() { return handleError(function () { + const ret = global.global; + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_push_811c8b08bf4ff9d5 = function(arg0, arg1) { + const ret = getObject(arg0).push(getObject(arg1)); + return ret; + }; + imports.wbg.__wbg_instanceof_Error_53fd3b982f19be06 = function(arg0) { + const ret = getObject(arg0) instanceof Error; + return ret; + }; + imports.wbg.__wbg_message_136debd54c3edfe4 = function(arg0) { + const ret = getObject(arg0).message; + return addHeapObject(ret); + }; + imports.wbg.__wbg_name_d0cc50bf0e4abe7f = function(arg0) { + const ret = getObject(arg0).name; + return addHeapObject(ret); + }; + imports.wbg.__wbg_toString_ef76a2af8f5bb98a = function(arg0) { + const ret = getObject(arg0).toString(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_valueOf_3520735ced6d6137 = function(arg0) { + const ret = getObject(arg0).valueOf(); + return ret; + }; + imports.wbg.__wbg_is_aafa609b540ad47f = function(arg0, arg1) { + const ret = Object.is(getObject(arg0), getObject(arg1)); + return ret; + }; + imports.wbg.__wbg_resolve_f269ce174f88b294 = function(arg0) { + const ret = Promise.resolve(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_then_1c698eedca15eed6 = function(arg0, arg1) { + const ret = getObject(arg0).then(getObject(arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_then_4debc41d4fc92ce5 = function(arg0, arg1, arg2) { + const ret = getObject(arg0).then(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_buffer_de1150f91b23aa89 = function(arg0) { + const ret = getObject(arg0).buffer; + return addHeapObject(ret); + }; + imports.wbg.__wbg_newwithbyteoffsetandlength_9ca61320599a2c84 = function(arg0, arg1, arg2) { + const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_new_97cf52648830a70d = function(arg0) { + const ret = new Uint8Array(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_set_a0172b213e2469e9 = function(arg0, arg1, arg2) { + getObject(arg0).set(getObject(arg1), arg2 >>> 0); + }; + imports.wbg.__wbg_length_e09c0b925ab8de5d = function(arg0) { + const ret = getObject(arg0).length; + return ret; + }; + imports.wbg.__wbg_set_b12cd0ab82903c2f = function() { return handleError(function (arg0, arg1, arg2) { const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2)); - _assertBoolean(ret); return ret; }, arguments) }; imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { @@ -869,32 +811,65 @@ async function init(input) { const ret = wasm.memory; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper19806 = function() { return logError(function (arg0, arg1, arg2) { - const ret = makeClosure(arg0, arg1, 1261, __wbg_adapter_30); + imports.wbg.__wbindgen_closure_wrapper2128 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 871, __wbg_adapter_30); return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbindgen_closure_wrapper21982 = function() { return logError(function (arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 1281, __wbg_adapter_33); + }; + imports.wbg.__wbindgen_closure_wrapper2356 = function(arg0, arg1, arg2) { + const ret = makeClosure(arg0, arg1, 916, __wbg_adapter_33); return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbindgen_closure_wrapper22336 = function() { return logError(function (arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 1307, __wbg_adapter_36); + }; + imports.wbg.__wbindgen_closure_wrapper2501 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 959, __wbg_adapter_36); return addHeapObject(ret); - }, arguments) }; + }; + + return imports; +} + +function initMemory(imports, maybe_memory) { + +} + +function finalizeInit(instance, module) { + wasm = instance.exports; + init.__wbindgen_wasm_module = module; + cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer); + cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); + cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer); + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); + + + return wasm; +} + +function initSync(bytes) { + const imports = getImports(); + + initMemory(imports); + + const module = new WebAssembly.Module(bytes); + const instance = new WebAssembly.Instance(module, imports); + + return finalizeInit(instance, module); +} + +async function init(input) { + if (typeof input === 'undefined') { + input = new URL('kanidmd_web_ui_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); - wasm = instance.exports; - init.__wbindgen_wasm_module = module; - - return wasm; + return finalizeInit(instance, module); } +export { initSync } export default init; - diff --git a/kanidmd_web_ui/pkg/kanidmd_web_ui_bg.wasm b/kanidmd_web_ui/pkg/kanidmd_web_ui_bg.wasm index 095af8a64..50f7951d4 100644 Binary files a/kanidmd_web_ui/pkg/kanidmd_web_ui_bg.wasm and b/kanidmd_web_ui/pkg/kanidmd_web_ui_bg.wasm differ diff --git a/kanidmd_web_ui/pkg/kanidmd_web_ui_bg.wasm.d.ts b/kanidmd_web_ui/pkg/kanidmd_web_ui_bg.wasm.d.ts index 66bca6863..1be85344c 100644 --- a/kanidmd_web_ui/pkg/kanidmd_web_ui_bg.wasm.d.ts +++ b/kanidmd_web_ui/pkg/kanidmd_web_ui_bg.wasm.d.ts @@ -5,9 +5,9 @@ export function run_app(a: number): void; export function __wbindgen_malloc(a: number): number; export function __wbindgen_realloc(a: number, b: number, c: number): number; export const __wbindgen_export_2: WebAssembly.Table; -export function _dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h517d7fce3d158796(a: number, b: number, c: number): void; -export function _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h6c41bce435f08bdb(a: number, b: number, c: number): void; -export function _dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hea19f293916f5b3a(a: number, b: number, c: number): void; +export function _dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hab3be56b8155b388(a: number, b: number, c: number): void; +export function _dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h17af29331a011f5b(a: number, b: number, c: number): void; +export function _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h67ec72bbd39c79bf(a: number, b: number, c: number): void; export function __wbindgen_add_to_stack_pointer(a: number): number; export function __wbindgen_free(a: number, b: number): void; export function __wbindgen_exn_store(a: number): void; diff --git a/kanidmd_web_ui/src/credential/delete.rs b/kanidmd_web_ui/src/credential/delete.rs index 1b023fb93..46cd5008b 100644 --- a/kanidmd_web_ui/src/credential/delete.rs +++ b/kanidmd_web_ui/src/credential/delete.rs @@ -5,17 +5,14 @@ use super::eventbus::{EventBus, EventBusMsg}; use super::reset::ModalProps; use gloo::console; -use web_sys::Node; use yew::prelude::*; -use yew_agent::{Dispatched, Dispatcher}; +use yew_agent::Dispatched; use wasm_bindgen::{JsCast, JsValue, UnwrapThrowExt}; use wasm_bindgen_futures::JsFuture; use web_sys::{Request, RequestInit, RequestMode, Response}; -use kanidm_proto::v1::{ - CURegState, CURequest, CUSessionToken, CUStatus, OperationError, PasswordFeedback, TotpSecret, -}; +use kanidm_proto::v1::{CURequest, CUSessionToken, CUStatus}; enum State { Init, diff --git a/kanidmd_web_ui/src/credential/pwmodal.rs b/kanidmd_web_ui/src/credential/pwmodal.rs index 9d513a162..7ce038952 100644 --- a/kanidmd_web_ui/src/credential/pwmodal.rs +++ b/kanidmd_web_ui/src/credential/pwmodal.rs @@ -6,7 +6,7 @@ use super::reset::ModalProps; use gloo::console; use yew::prelude::*; -use yew_agent::{Dispatched, Dispatcher}; +use yew_agent::Dispatched; use wasm_bindgen::{JsCast, JsValue, UnwrapThrowExt}; use wasm_bindgen_futures::JsFuture; diff --git a/kanidmd_web_ui/src/credential/totpmodal.rs b/kanidmd_web_ui/src/credential/totpmodal.rs index 29a98dd11..18b06360e 100644 --- a/kanidmd_web_ui/src/credential/totpmodal.rs +++ b/kanidmd_web_ui/src/credential/totpmodal.rs @@ -7,15 +7,13 @@ use super::reset::ModalProps; use gloo::console; use web_sys::Node; use yew::prelude::*; -use yew_agent::{Dispatched, Dispatcher}; +use yew_agent::Dispatched; use wasm_bindgen::{JsCast, JsValue, UnwrapThrowExt}; use wasm_bindgen_futures::JsFuture; use web_sys::{Request, RequestInit, RequestMode, Response}; -use kanidm_proto::v1::{ - CURegState, CURequest, CUSessionToken, CUStatus, OperationError, PasswordFeedback, TotpSecret, -}; +use kanidm_proto::v1::{CURegState, CURequest, CUSessionToken, CUStatus, TotpSecret}; use qrcode::{render::svg, QrCode}; enum TotpState { @@ -196,9 +194,14 @@ impl Component for TotpModalApp { self.check = TotpCheck::Invalid; self.state = TotpState::Init; } + // TODO: which status do we want to return? Msg::TotpClearInvalid => { self.check = TotpCheck::Init; } + // this was originally lower in the code + // Msg::TotpClearInvalid => { + // self.check = TotpCheck::Invalid; + // } Msg::TotpInvalidSha1 => { self.check = TotpCheck::Sha1Accept; self.state = TotpState::Init; @@ -213,9 +216,6 @@ impl Component for TotpModalApp { self.state = TotpState::Waiting; } - Msg::TotpClearInvalid => { - self.check = TotpCheck::Invalid; - } Msg::TotpSuccess => { // Nothing to do but close and hide! self.reset_and_hide(); diff --git a/kanidmd_web_ui/src/login.rs b/kanidmd_web_ui/src/login.rs index 4e2ed9f51..14bad4421 100644 --- a/kanidmd_web_ui/src/login.rs +++ b/kanidmd_web_ui/src/login.rs @@ -17,11 +17,6 @@ use kanidm_proto::v1::{ use webauthn_rs::proto::PublicKeyCredential; -#[wasm_bindgen] -extern "C" { - fn startConfetti(); -} - pub struct LoginApp { inputvalue: String, session_id: String, diff --git a/kanidmd_web_ui/src/views/mod.rs b/kanidmd_web_ui/src/views/mod.rs index 09f2799c0..826026f32 100644 --- a/kanidmd_web_ui/src/views/mod.rs +++ b/kanidmd_web_ui/src/views/mod.rs @@ -9,7 +9,7 @@ use yew_router::prelude::*; use serde::{Deserialize, Serialize}; -use wasm_bindgen::{JsCast, JsValue, UnwrapThrowExt}; +use wasm_bindgen::{JsCast, UnwrapThrowExt}; use wasm_bindgen_futures::JsFuture; use web_sys::{Request, RequestInit, RequestMode, Response}; diff --git a/kanidmd_web_ui/src/views/security.rs b/kanidmd_web_ui/src/views/security.rs index c872d1f0c..e7a1e0a3b 100644 --- a/kanidmd_web_ui/src/views/security.rs +++ b/kanidmd_web_ui/src/views/security.rs @@ -13,7 +13,7 @@ use yew_router::prelude::*; use kanidm_proto::v1::{CUSessionToken, CUStatus, UserAuthToken}; -use wasm_bindgen::{JsCast, JsValue, UnwrapThrowExt}; +use wasm_bindgen::{JsCast, UnwrapThrowExt}; use wasm_bindgen_futures::JsFuture; use web_sys::{Request, RequestInit, RequestMode, Response};