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 cachedUint8Memory0 = null; function getUint8Memory0() { if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); } return cachedUint8Memory0; } function getStringFromWasm0(ptr, len) { ptr = ptr >>> 0; return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); } const heap = new Array(128).fill(undefined); heap.push(undefined, null, true, false); 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]; heap[idx] = obj; return idx; } function getObject(idx) { return heap[idx]; } function dropObject(idx) { if (idx < 132) return; heap[idx] = heap_next; heap_next = idx; } function takeObject(idx) { const ret = getObject(idx); dropObject(idx); return ret; } let cachedInt32Memory0 = null; function getInt32Memory0() { if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); } return cachedInt32Memory0; } let WASM_VECTOR_LEN = 0; const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } ); const encodeString = function (arg, view) { return cachedTextEncoder.encodeInto(arg, view); }; function passStringToWasm0(arg, malloc, realloc) { if (realloc === undefined) { const buf = cachedTextEncoder.encode(arg); const ptr = malloc(buf.length, 1) >>> 0; getUint8Memory0().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 = 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, 1) >>> 0; const view = getUint8Memory0().subarray(ptr + offset, ptr + len); const ret = encodeString(arg, view); offset += ret.written; } WASM_VECTOR_LEN = offset; return ptr; } /** *Main structure. * - Contains numeric value of hijri and gregorian dates plus hijri month and day names. * - Hijri names dosent have suffix, example (day,month,year,..) * - Gregorian names are denoted with `gr` or `en` suffix. */ export class HijriDate { static __wrap(ptr) { ptr = ptr >>> 0; const obj = Object.create(HijriDate.prototype); obj.__wbg_ptr = ptr; return obj; } __destroy_into_raw() { const ptr = this.__wbg_ptr; this.__wbg_ptr = 0; return ptr; } free() { const ptr = this.__destroy_into_raw(); wasm.__wbg_hijridate_free(ptr); } /** * Get the day of the Hijri month * @returns {number} */ day() { const ret = wasm.hijridate_day(this.__wbg_ptr); return ret >>> 0; } /** * Get the month of the Hijri year * @returns {number} */ month() { const ret = wasm.hijridate_month(this.__wbg_ptr); return ret >>> 0; } /** * Get the length of the current Hijri month * @returns {number} */ month_len() { const ret = wasm.hijridate_month_len(this.__wbg_ptr); return ret >>> 0; } /** * Get the year of the Hijri date * @returns {number} */ year() { const ret = wasm.hijridate_year(this.__wbg_ptr); return ret >>> 0; } /** * Get the name of the day in the Hijri calendar * @returns {string} */ day_name() { let deferred1_0; let deferred1_1; try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); wasm.hijridate_day_name(retptr, this.__wbg_ptr); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; deferred1_0 = r0; deferred1_1 = r1; return getStringFromWasm0(r0, r1); } finally { wasm.__wbindgen_add_to_stack_pointer(16); wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } /** * Get the name of the month in the Hijri calendar * @returns {string} */ month_name() { let deferred1_0; let deferred1_1; try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); wasm.hijridate_month_name(retptr, this.__wbg_ptr); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; deferred1_0 = r0; deferred1_1 = r1; return getStringFromWasm0(r0, r1); } finally { wasm.__wbindgen_add_to_stack_pointer(16); wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } /** * Get the day of the week (Gregorian) corresponding to the Hijri date * @returns {number} */ day_gr() { const ret = wasm.hijridate_day_gr(this.__wbg_ptr); return ret >>> 0; } /** * Get the month of the year (Gregorian) corresponding to the Hijri date * @returns {number} */ month_gr() { const ret = wasm.hijridate_month_gr(this.__wbg_ptr); return ret >>> 0; } /** * Get the year (Gregorian) corresponding to the Hijri date * @returns {number} */ year_gr() { const ret = wasm.hijridate_year_gr(this.__wbg_ptr); return ret >>> 0; } /** * Get the English name of the day in the Hijri calendar * @returns {string} */ day_name_en() { let deferred1_0; let deferred1_1; try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); wasm.hijridate_day_name_en(retptr, this.__wbg_ptr); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; deferred1_0 = r0; deferred1_1 = r1; return getStringFromWasm0(r0, r1); } finally { wasm.__wbindgen_add_to_stack_pointer(16); wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } /** * Get the English name of the month in the Hijri calendar * @returns {string} */ month_name_en() { let deferred1_0; let deferred1_1; try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); wasm.hijridate_month_name_en(retptr, this.__wbg_ptr); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; deferred1_0 = r0; deferred1_1 = r1; return getStringFromWasm0(r0, r1); } finally { wasm.__wbindgen_add_to_stack_pointer(16); wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } /** * @returns {string} */ toString() { let deferred1_0; let deferred1_1; try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); wasm.hijridate_toString(retptr, this.__wbg_ptr); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; deferred1_0 = r0; deferred1_1 = r1; return getStringFromWasm0(r0, r1); } finally { wasm.__wbindgen_add_to_stack_pointer(16); wasm.__wbindgen_free(deferred1_0, deferred1_1, 1); } } /** * get data from hijri date * @param {number} year * @param {number} month * @param {number} day * @returns {HijriDate} */ static from_hijri(year, month, day) { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); wasm.hijridate_from_hijri(retptr, year, month, day); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; var r2 = getInt32Memory0()[retptr / 4 + 2]; if (r2) { throw takeObject(r1); } return HijriDate.__wrap(r0); } finally { wasm.__wbindgen_add_to_stack_pointer(16); } } /** * get data from gregorian date. * @param {number} year_gr * @param {number} month_gr * @param {number} day_gr * @returns {HijriDate} */ static from_gr(year_gr, month_gr, day_gr) { try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); wasm.hijridate_from_gr(retptr, year_gr, month_gr, day_gr); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; var r2 = getInt32Memory0()[retptr / 4 + 2]; if (r2) { throw takeObject(r1); } return HijriDate.__wrap(r0); } finally { wasm.__wbindgen_add_to_stack_pointer(16); } } /** * get data from today's date. * @returns {HijriDate} */ static today() { const ret = wasm.hijridate_today(); return HijriDate.__wrap(ret); } /** * Returns a representation of HijriDate defined by the given formatter * * ```text * hijri * * %Y hijri_year * %m hijri_month * %d hijri_day * %D hijri_day_name * %M hijri_month_name * %l hijri_month_len * * gregorian * * %gY gregorian_year * %gm gregorian_month * %gd gregorian_day * %gD gregorian_day_name * %gM gregorian_month_name * ``` * @param {string} f * @returns {string} */ format(f) { let deferred2_0; let deferred2_1; try { const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); const ptr0 = passStringToWasm0(f, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; wasm.hijridate_format(retptr, this.__wbg_ptr, ptr0, len0); var r0 = getInt32Memory0()[retptr / 4 + 0]; var r1 = getInt32Memory0()[retptr / 4 + 1]; deferred2_0 = r0; deferred2_1 = r1; return getStringFromWasm0(r0, r1); } finally { wasm.__wbindgen_add_to_stack_pointer(16); wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); } } } const imports = { __wbindgen_placeholder__: { __wbindgen_string_new: function(arg0, arg1) { const ret = getStringFromWasm0(arg0, arg1); return addHeapObject(ret); }, __wbindgen_object_drop_ref: function(arg0) { takeObject(arg0); }, __wbg_getTime_5e2054f832d82ec9: function(arg0) { const ret = getObject(arg0).getTime(); return ret; }, __wbg_new0_c0be7df4b6bd481f: function() { const ret = new Date(); return addHeapObject(ret); }, __wbindgen_throw: function(arg0, arg1) { throw new Error(getStringFromWasm0(arg0, arg1)); }, }, }; const wasm_url = new URL('hijri_date_bg.wasm', import.meta.url); let wasmCode = ''; switch (wasm_url.protocol) { case 'file:': wasmCode = await Deno.readFile(wasm_url); break case 'https:': case 'http:': wasmCode = await (await fetch(wasm_url)).arrayBuffer(); break default: throw new Error(`Unsupported protocol: ${wasm_url.protocol}`); } const wasmInstance = (await WebAssembly.instantiate(wasmCode, imports)).instance; const wasm = wasmInstance.exports;