commit bf7bc1ae40c9b686378c7e0b8cdd740ed2c78605 Author: Alexey Kudelko Date: Wed May 21 15:54:15 2025 +0300 first diff --git a/example.html b/example.html new file mode 100644 index 0000000..d028aa6 --- /dev/null +++ b/example.html @@ -0,0 +1,39 @@ + + + + + + WASM Example + + +

WASM Example

+
+ + +
+
+ + +
+ +

+ + + + \ No newline at end of file diff --git a/hublib.d.ts b/hublib.d.ts new file mode 100644 index 0000000..47b60e1 --- /dev/null +++ b/hublib.d.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +export function get_secret_value(cur_time: bigint, user_agent: string, url: string): string; + +export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module; + +export interface InitOutput { + readonly memory: WebAssembly.Memory; + readonly ffi_hublib_uniffi_contract_version: () => number; + readonly ffi_hublib_rustbuffer_alloc: (a: number, b: bigint, c: number) => void; + readonly ffi_hublib_rustbuffer_from_bytes: (a: number, b: number, c: number, d: number) => void; + readonly ffi_hublib_rustbuffer_free: (a: bigint, b: bigint, c: number, d: number, e: number) => void; + readonly ffi_hublib_rustbuffer_reserve: (a: number, b: bigint, c: bigint, d: number, e: number, f: bigint, g: number) => void; + readonly ffi_hublib_rust_future_poll_u8: (a: bigint, b: number, c: bigint) => void; + readonly ffi_hublib_rust_future_cancel_u8: (a: bigint) => void; + readonly ffi_hublib_rust_future_complete_u8: (a: bigint, b: number) => number; + readonly ffi_hublib_rust_future_free_u8: (a: bigint) => void; + readonly ffi_hublib_rust_future_poll_i8: (a: bigint, b: number, c: bigint) => void; + readonly ffi_hublib_rust_future_cancel_i8: (a: bigint) => void; + readonly ffi_hublib_rust_future_complete_i8: (a: bigint, b: number) => number; + readonly ffi_hublib_rust_future_free_i8: (a: bigint) => void; + readonly ffi_hublib_rust_future_poll_u16: (a: bigint, b: number, c: bigint) => void; + readonly ffi_hublib_rust_future_cancel_u16: (a: bigint) => void; + readonly ffi_hublib_rust_future_complete_u16: (a: bigint, b: number) => number; + readonly ffi_hublib_rust_future_free_u16: (a: bigint) => void; + readonly ffi_hublib_rust_future_poll_i16: (a: bigint, b: number, c: bigint) => void; + readonly ffi_hublib_rust_future_cancel_i16: (a: bigint) => void; + readonly ffi_hublib_rust_future_complete_i16: (a: bigint, b: number) => number; + readonly ffi_hublib_rust_future_free_i16: (a: bigint) => void; + readonly ffi_hublib_rust_future_poll_u32: (a: bigint, b: number, c: bigint) => void; + readonly ffi_hublib_rust_future_cancel_u32: (a: bigint) => void; + readonly ffi_hublib_rust_future_complete_u32: (a: bigint, b: number) => number; + readonly ffi_hublib_rust_future_free_u32: (a: bigint) => void; + readonly ffi_hublib_rust_future_poll_i32: (a: bigint, b: number, c: bigint) => void; + readonly ffi_hublib_rust_future_cancel_i32: (a: bigint) => void; + readonly ffi_hublib_rust_future_complete_i32: (a: bigint, b: number) => number; + readonly ffi_hublib_rust_future_free_i32: (a: bigint) => void; + readonly ffi_hublib_rust_future_poll_u64: (a: bigint, b: number, c: bigint) => void; + readonly ffi_hublib_rust_future_cancel_u64: (a: bigint) => void; + readonly ffi_hublib_rust_future_complete_u64: (a: bigint, b: number) => bigint; + readonly ffi_hublib_rust_future_free_u64: (a: bigint) => void; + readonly ffi_hublib_rust_future_poll_i64: (a: bigint, b: number, c: bigint) => void; + readonly ffi_hublib_rust_future_cancel_i64: (a: bigint) => void; + readonly ffi_hublib_rust_future_complete_i64: (a: bigint, b: number) => bigint; + readonly ffi_hublib_rust_future_free_i64: (a: bigint) => void; + readonly ffi_hublib_rust_future_poll_f32: (a: bigint, b: number, c: bigint) => void; + readonly ffi_hublib_rust_future_cancel_f32: (a: bigint) => void; + readonly ffi_hublib_rust_future_complete_f32: (a: bigint, b: number) => number; + readonly ffi_hublib_rust_future_free_f32: (a: bigint) => void; + readonly ffi_hublib_rust_future_poll_f64: (a: bigint, b: number, c: bigint) => void; + readonly ffi_hublib_rust_future_cancel_f64: (a: bigint) => void; + readonly ffi_hublib_rust_future_complete_f64: (a: bigint, b: number) => number; + readonly ffi_hublib_rust_future_free_f64: (a: bigint) => void; + readonly ffi_hublib_rust_future_poll_pointer: (a: bigint, b: number, c: bigint) => void; + readonly ffi_hublib_rust_future_cancel_pointer: (a: bigint) => void; + readonly ffi_hublib_rust_future_complete_pointer: (a: bigint, b: number) => number; + readonly ffi_hublib_rust_future_free_pointer: (a: bigint) => void; + readonly ffi_hublib_rust_future_poll_rust_buffer: (a: bigint, b: number, c: bigint) => void; + readonly ffi_hublib_rust_future_cancel_rust_buffer: (a: bigint) => void; + readonly ffi_hublib_rust_future_complete_rust_buffer: (a: number, b: bigint, c: number) => void; + readonly ffi_hublib_rust_future_free_rust_buffer: (a: bigint) => void; + readonly ffi_hublib_rust_future_poll_void: (a: bigint, b: number, c: bigint) => void; + readonly ffi_hublib_rust_future_cancel_void: (a: bigint) => void; + readonly ffi_hublib_rust_future_complete_void: (a: bigint, b: number) => void; + readonly ffi_hublib_rust_future_free_void: (a: bigint) => void; + readonly uniffi_hublib_fn_func_get_secret_value: (a: number, b: bigint, c: bigint, d: bigint, e: number, f: number, g: bigint, h: bigint, i: number, j: number, k: number) => void; + readonly uniffi_hublib_checksum_func_get_secret_value: () => number; + readonly get_secret_value: (a: bigint, b: number, c: number, d: number, e: number) => [number, number]; + readonly uniffi_hublib_fn_func_validate_secret_value: (a: bigint, b: bigint, c: bigint, d: number, e: number, f: bigint, g: bigint, h: number, i: number, j: bigint, k: bigint, l: number, m: number, n: number) => number; + readonly uniffi_hublib_checksum_func_validate_secret_value: () => number; + readonly __wbindgen_export_0: WebAssembly.Table; + readonly __wbindgen_malloc: (a: number, b: number) => number; + readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; + readonly __wbindgen_free: (a: number, b: number, c: number) => void; + readonly __wbindgen_start: () => void; +} + +export type SyncInitInput = BufferSource | WebAssembly.Module; +/** +* Instantiates the given `module`, which can either be bytes or +* a precompiled `WebAssembly.Module`. +* +* @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated. +* +* @returns {InitOutput} +*/ +export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput; + +/** +* If `module_or_path` is {RequestInfo} or {URL}, makes a request and +* for everything else, calls `WebAssembly.instantiate` directly. +* +* @param {{ module_or_path: InitInput | Promise }} module_or_path - Passing `InitInput` directly is deprecated. +* +* @returns {Promise} +*/ +export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise } | InitInput | Promise): Promise; diff --git a/hublib.js b/hublib.js new file mode 100644 index 0000000..9b7fb9e --- /dev/null +++ b/hublib.js @@ -0,0 +1,226 @@ +let wasm; + +const cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } ); + +if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); }; + +let cachedUint8ArrayMemory0 = null; + +function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8ArrayMemory0; +} + +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); +} + +let WASM_VECTOR_LEN = 0; + +const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } ); + +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, 1) >>> 0; + getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8ArrayMemory0(); + + 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, 1) >>> 0; + const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} +/** + * @param {bigint} cur_time + * @param {string} user_agent + * @param {string} url + * @returns {string} + */ +export function get_secret_value(cur_time, user_agent, url) { + let deferred3_0; + let deferred3_1; + try { + const ptr0 = passStringToWasm0(user_agent, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0(url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + const ret = wasm.get_secret_value(cur_time, ptr0, len0, ptr1, len1); + deferred3_0 = ret[0]; + deferred3_1 = ret[1]; + return getStringFromWasm0(ret[0], ret[1]); + } finally { + wasm.__wbindgen_free(deferred3_0, deferred3_1, 1); + } +} + +async function __wbg_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 __wbg_get_imports() { + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbg_getTime_46267b1c24877e30 = function(arg0) { + const ret = arg0.getTime(); + return ret; + }; + imports.wbg.__wbg_new0_f788a2397c7ca929 = function() { + const ret = new Date(); + return ret; + }; + imports.wbg.__wbindgen_init_externref_table = function() { + const table = wasm.__wbindgen_export_0; + const offset = table.grow(4); + table.set(0, undefined); + table.set(offset + 0, undefined); + table.set(offset + 1, null); + table.set(offset + 2, true); + table.set(offset + 3, false); + ; + }; + imports.wbg.__wbindgen_throw = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + + return imports; +} + +function __wbg_init_memory(imports, memory) { + +} + +function __wbg_finalize_init(instance, module) { + wasm = instance.exports; + __wbg_init.__wbindgen_wasm_module = module; + cachedUint8ArrayMemory0 = null; + + + wasm.__wbindgen_start(); + return wasm; +} + +function initSync(module) { + if (wasm !== undefined) return wasm; + + + if (typeof module !== 'undefined') { + if (Object.getPrototypeOf(module) === Object.prototype) { + ({module} = module) + } else { + console.warn('using deprecated parameters for `initSync()`; pass a single object instead') + } + } + + const imports = __wbg_get_imports(); + + __wbg_init_memory(imports); + + if (!(module instanceof WebAssembly.Module)) { + module = new WebAssembly.Module(module); + } + + const instance = new WebAssembly.Instance(module, imports); + + return __wbg_finalize_init(instance, module); +} + +async function __wbg_init(module_or_path) { + if (wasm !== undefined) return wasm; + + + if (typeof module_or_path !== 'undefined') { + if (Object.getPrototypeOf(module_or_path) === Object.prototype) { + ({module_or_path} = module_or_path) + } else { + console.warn('using deprecated parameters for the initialization function; pass a single object instead') + } + } + + if (typeof module_or_path === 'undefined') { + module_or_path = new URL('hublib_bg.wasm', import.meta.url); + } + const imports = __wbg_get_imports(); + + if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) { + module_or_path = fetch(module_or_path); + } + + __wbg_init_memory(imports); + + const { instance, module } = await __wbg_load(await module_or_path, imports); + + return __wbg_finalize_init(instance, module); +} + +export { initSync }; +export default __wbg_init; diff --git a/hublib_bg.wasm b/hublib_bg.wasm new file mode 100644 index 0000000..75e65be Binary files /dev/null and b/hublib_bg.wasm differ diff --git a/hublib_bg.wasm.d.ts b/hublib_bg.wasm.d.ts new file mode 100644 index 0000000..0996008 --- /dev/null +++ b/hublib_bg.wasm.d.ts @@ -0,0 +1,70 @@ +/* tslint:disable */ +/* eslint-disable */ +export const memory: WebAssembly.Memory; +export const ffi_hublib_uniffi_contract_version: () => number; +export const ffi_hublib_rustbuffer_alloc: (a: number, b: bigint, c: number) => void; +export const ffi_hublib_rustbuffer_from_bytes: (a: number, b: number, c: number, d: number) => void; +export const ffi_hublib_rustbuffer_free: (a: bigint, b: bigint, c: number, d: number, e: number) => void; +export const ffi_hublib_rustbuffer_reserve: (a: number, b: bigint, c: bigint, d: number, e: number, f: bigint, g: number) => void; +export const ffi_hublib_rust_future_poll_u8: (a: bigint, b: number, c: bigint) => void; +export const ffi_hublib_rust_future_cancel_u8: (a: bigint) => void; +export const ffi_hublib_rust_future_complete_u8: (a: bigint, b: number) => number; +export const ffi_hublib_rust_future_free_u8: (a: bigint) => void; +export const ffi_hublib_rust_future_poll_i8: (a: bigint, b: number, c: bigint) => void; +export const ffi_hublib_rust_future_cancel_i8: (a: bigint) => void; +export const ffi_hublib_rust_future_complete_i8: (a: bigint, b: number) => number; +export const ffi_hublib_rust_future_free_i8: (a: bigint) => void; +export const ffi_hublib_rust_future_poll_u16: (a: bigint, b: number, c: bigint) => void; +export const ffi_hublib_rust_future_cancel_u16: (a: bigint) => void; +export const ffi_hublib_rust_future_complete_u16: (a: bigint, b: number) => number; +export const ffi_hublib_rust_future_free_u16: (a: bigint) => void; +export const ffi_hublib_rust_future_poll_i16: (a: bigint, b: number, c: bigint) => void; +export const ffi_hublib_rust_future_cancel_i16: (a: bigint) => void; +export const ffi_hublib_rust_future_complete_i16: (a: bigint, b: number) => number; +export const ffi_hublib_rust_future_free_i16: (a: bigint) => void; +export const ffi_hublib_rust_future_poll_u32: (a: bigint, b: number, c: bigint) => void; +export const ffi_hublib_rust_future_cancel_u32: (a: bigint) => void; +export const ffi_hublib_rust_future_complete_u32: (a: bigint, b: number) => number; +export const ffi_hublib_rust_future_free_u32: (a: bigint) => void; +export const ffi_hublib_rust_future_poll_i32: (a: bigint, b: number, c: bigint) => void; +export const ffi_hublib_rust_future_cancel_i32: (a: bigint) => void; +export const ffi_hublib_rust_future_complete_i32: (a: bigint, b: number) => number; +export const ffi_hublib_rust_future_free_i32: (a: bigint) => void; +export const ffi_hublib_rust_future_poll_u64: (a: bigint, b: number, c: bigint) => void; +export const ffi_hublib_rust_future_cancel_u64: (a: bigint) => void; +export const ffi_hublib_rust_future_complete_u64: (a: bigint, b: number) => bigint; +export const ffi_hublib_rust_future_free_u64: (a: bigint) => void; +export const ffi_hublib_rust_future_poll_i64: (a: bigint, b: number, c: bigint) => void; +export const ffi_hublib_rust_future_cancel_i64: (a: bigint) => void; +export const ffi_hublib_rust_future_complete_i64: (a: bigint, b: number) => bigint; +export const ffi_hublib_rust_future_free_i64: (a: bigint) => void; +export const ffi_hublib_rust_future_poll_f32: (a: bigint, b: number, c: bigint) => void; +export const ffi_hublib_rust_future_cancel_f32: (a: bigint) => void; +export const ffi_hublib_rust_future_complete_f32: (a: bigint, b: number) => number; +export const ffi_hublib_rust_future_free_f32: (a: bigint) => void; +export const ffi_hublib_rust_future_poll_f64: (a: bigint, b: number, c: bigint) => void; +export const ffi_hublib_rust_future_cancel_f64: (a: bigint) => void; +export const ffi_hublib_rust_future_complete_f64: (a: bigint, b: number) => number; +export const ffi_hublib_rust_future_free_f64: (a: bigint) => void; +export const ffi_hublib_rust_future_poll_pointer: (a: bigint, b: number, c: bigint) => void; +export const ffi_hublib_rust_future_cancel_pointer: (a: bigint) => void; +export const ffi_hublib_rust_future_complete_pointer: (a: bigint, b: number) => number; +export const ffi_hublib_rust_future_free_pointer: (a: bigint) => void; +export const ffi_hublib_rust_future_poll_rust_buffer: (a: bigint, b: number, c: bigint) => void; +export const ffi_hublib_rust_future_cancel_rust_buffer: (a: bigint) => void; +export const ffi_hublib_rust_future_complete_rust_buffer: (a: number, b: bigint, c: number) => void; +export const ffi_hublib_rust_future_free_rust_buffer: (a: bigint) => void; +export const ffi_hublib_rust_future_poll_void: (a: bigint, b: number, c: bigint) => void; +export const ffi_hublib_rust_future_cancel_void: (a: bigint) => void; +export const ffi_hublib_rust_future_complete_void: (a: bigint, b: number) => void; +export const ffi_hublib_rust_future_free_void: (a: bigint) => void; +export const uniffi_hublib_fn_func_get_secret_value: (a: number, b: bigint, c: bigint, d: bigint, e: number, f: number, g: bigint, h: bigint, i: number, j: number, k: number) => void; +export const uniffi_hublib_checksum_func_get_secret_value: () => number; +export const get_secret_value: (a: bigint, b: number, c: number, d: number, e: number) => [number, number]; +export const uniffi_hublib_fn_func_validate_secret_value: (a: bigint, b: bigint, c: bigint, d: number, e: number, f: bigint, g: bigint, h: number, i: number, j: bigint, k: bigint, l: number, m: number, n: number) => number; +export const uniffi_hublib_checksum_func_validate_secret_value: () => number; +export const __wbindgen_export_0: WebAssembly.Table; +export const __wbindgen_malloc: (a: number, b: number) => number; +export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; +export const __wbindgen_free: (a: number, b: number, c: number) => void; +export const __wbindgen_start: () => void; diff --git a/package.json b/package.json new file mode 100644 index 0000000..a55712e --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "hublib", + "type": "module", + "version": "0.1.0", + "files": [ + "hublib_bg.wasm", + "hublib.js", + "hublib.d.ts" + ], + "main": "hublib.js", + "types": "hublib.d.ts", + "sideEffects": [ + "./snippets/*" + ] +} \ No newline at end of file