From 269fc4fa02ab2b0e72e7da4bc74af173de35f432 Mon Sep 17 00:00:00 2001 From: rcholic Date: Thu, 15 Jan 2026 05:55:35 +0000 Subject: [PATCH] chore: sync extension files from sentience-chrome v2.5.0 --- sentience/extension/background.js | 6 +- sentience/extension/content.js | 18 +- sentience/extension/injected_api.js | 157 ++++++-- sentience/extension/pkg/sentience_core.d.ts | 44 +-- sentience/extension/pkg/sentience_core.js | 344 ++++++++++-------- .../extension/pkg/sentience_core_bg.wasm | Bin 107496 -> 108711 bytes sentience/extension/release.json | 60 +-- 7 files changed, 379 insertions(+), 250 deletions(-) diff --git a/sentience/extension/background.js b/sentience/extension/background.js index aff49b0..2923f55 100644 --- a/sentience/extension/background.js +++ b/sentience/extension/background.js @@ -28,14 +28,14 @@ async function handleSnapshotProcessing(rawData, options = {}) { const startTime = performance.now(); try { if (!Array.isArray(rawData)) throw new Error("rawData must be an array"); - if (rawData.length > 1e4 && (rawData = rawData.slice(0, 1e4)), await initWASM(), + if (rawData.length > 1e4 && (rawData = rawData.slice(0, 1e4)), await initWASM(), !wasmReady) throw new Error("WASM module not initialized"); let analyzedElements, prunedRawData; try { const wasmPromise = new Promise((resolve, reject) => { try { let result; - result = options.limit || options.filter ? analyze_page_with_options(rawData, options) : analyze_page(rawData), + result = options.limit || options.filter ? analyze_page_with_options(rawData, options) : analyze_page(rawData), resolve(result); } catch (e) { reject(e); @@ -101,4 +101,4 @@ initWASM().catch(err => {}), chrome.runtime.onMessage.addListener((request, send event.preventDefault(); }), self.addEventListener("unhandledrejection", event => { event.preventDefault(); -}); +}); \ No newline at end of file diff --git a/sentience/extension/content.js b/sentience/extension/content.js index 97923a2..b65cfb5 100644 --- a/sentience/extension/content.js +++ b/sentience/extension/content.js @@ -82,7 +82,7 @@ if (!elements || !Array.isArray(elements)) return; removeOverlay(); const host = document.createElement("div"); - host.id = OVERLAY_HOST_ID, host.style.cssText = "\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n width: 100vw !important;\n height: 100vh !important;\n pointer-events: none !important;\n z-index: 2147483647 !important;\n margin: 0 !important;\n padding: 0 !important;\n ", + host.id = OVERLAY_HOST_ID, host.style.cssText = "\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n width: 100vw !important;\n height: 100vh !important;\n pointer-events: none !important;\n z-index: 2147483647 !important;\n margin: 0 !important;\n padding: 0 !important;\n ", document.body.appendChild(host); const shadow = host.attachShadow({ mode: "closed" @@ -94,15 +94,15 @@ let color; color = isTarget ? "#FF0000" : isPrimary ? "#0066FF" : "#00FF00"; const importanceRatio = maxImportance > 0 ? importance / maxImportance : .5, borderOpacity = isTarget ? 1 : isPrimary ? .9 : Math.max(.4, .5 + .5 * importanceRatio), fillOpacity = .2 * borderOpacity, borderWidth = isTarget ? 2 : isPrimary ? 1.5 : Math.max(.5, Math.round(2 * importanceRatio)), hexOpacity = Math.round(255 * fillOpacity).toString(16).padStart(2, "0"), box = document.createElement("div"); - if (box.style.cssText = `\n position: absolute;\n left: ${bbox.x}px;\n top: ${bbox.y}px;\n width: ${bbox.width}px;\n height: ${bbox.height}px;\n border: ${borderWidth}px solid ${color};\n background-color: ${color}${hexOpacity};\n box-sizing: border-box;\n opacity: ${borderOpacity};\n pointer-events: none;\n `, + if (box.style.cssText = `\n position: absolute;\n left: ${bbox.x}px;\n top: ${bbox.y}px;\n width: ${bbox.width}px;\n height: ${bbox.height}px;\n border: ${borderWidth}px solid ${color};\n background-color: ${color}${hexOpacity};\n box-sizing: border-box;\n opacity: ${borderOpacity};\n pointer-events: none;\n `, importance > 0 || isPrimary) { const badge = document.createElement("span"); - badge.textContent = isPrimary ? `⭐${importance}` : `${importance}`, badge.style.cssText = `\n position: absolute;\n top: -18px;\n left: 0;\n background: ${color};\n color: white;\n font-size: 11px;\n font-weight: bold;\n padding: 2px 6px;\n font-family: Arial, sans-serif;\n border-radius: 3px;\n opacity: 0.95;\n white-space: nowrap;\n pointer-events: none;\n `, + badge.textContent = isPrimary ? `⭐${importance}` : `${importance}`, badge.style.cssText = `\n position: absolute;\n top: -18px;\n left: 0;\n background: ${color};\n color: white;\n font-size: 11px;\n font-weight: bold;\n padding: 2px 6px;\n font-family: Arial, sans-serif;\n border-radius: 3px;\n opacity: 0.95;\n white-space: nowrap;\n pointer-events: none;\n `, box.appendChild(badge); } if (isTarget) { const targetIndicator = document.createElement("span"); - targetIndicator.textContent = "🎯", targetIndicator.style.cssText = "\n position: absolute;\n top: -18px;\n right: 0;\n font-size: 16px;\n pointer-events: none;\n ", + targetIndicator.textContent = "🎯", targetIndicator.style.cssText = "\n position: absolute;\n top: -18px;\n right: 0;\n font-size: 16px;\n pointer-events: none;\n ", box.appendChild(targetIndicator); } shadow.appendChild(box); @@ -122,7 +122,7 @@ if (!grids || !Array.isArray(grids)) return; removeOverlay(); const host = document.createElement("div"); - host.id = OVERLAY_HOST_ID, host.style.cssText = "\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n width: 100vw !important;\n height: 100vh !important;\n pointer-events: none !important;\n z-index: 2147483647 !important;\n margin: 0 !important;\n padding: 0 !important;\n ", + host.id = OVERLAY_HOST_ID, host.style.cssText = "\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n width: 100vw !important;\n height: 100vh !important;\n pointer-events: none !important;\n z-index: 2147483647 !important;\n margin: 0 !important;\n padding: 0 !important;\n ", document.body.appendChild(host); const shadow = host.attachShadow({ mode: "closed" @@ -138,10 +138,10 @@ let labelText = grid.label ? `Grid ${grid.grid_id}: ${grid.label}` : `Grid ${grid.grid_id}`; grid.is_dominant && (labelText = `⭐ ${labelText} (dominant)`); const badge = document.createElement("span"); - if (badge.textContent = labelText, badge.style.cssText = `\n position: absolute;\n top: -18px;\n left: 0;\n background: ${color};\n color: white;\n font-size: 11px;\n font-weight: bold;\n padding: 2px 6px;\n font-family: Arial, sans-serif;\n border-radius: 3px;\n opacity: 0.95;\n white-space: nowrap;\n pointer-events: none;\n `, + if (badge.textContent = labelText, badge.style.cssText = `\n position: absolute;\n top: -18px;\n left: 0;\n background: ${color};\n color: white;\n font-size: 11px;\n font-weight: bold;\n padding: 2px 6px;\n font-family: Arial, sans-serif;\n border-radius: 3px;\n opacity: 0.95;\n white-space: nowrap;\n pointer-events: none;\n `, box.appendChild(badge), isTarget) { const targetIndicator = document.createElement("span"); - targetIndicator.textContent = "🎯", targetIndicator.style.cssText = "\n position: absolute;\n top: -18px;\n right: 0;\n font-size: 16px;\n pointer-events: none;\n ", + targetIndicator.textContent = "🎯", targetIndicator.style.cssText = "\n position: absolute;\n top: -18px;\n right: 0;\n font-size: 16px;\n pointer-events: none;\n ", box.appendChild(targetIndicator); } shadow.appendChild(box); @@ -155,7 +155,7 @@ let overlayTimeout = null; function removeOverlay() { const existing = document.getElementById(OVERLAY_HOST_ID); - existing && existing.remove(), overlayTimeout && (clearTimeout(overlayTimeout), + existing && existing.remove(), overlayTimeout && (clearTimeout(overlayTimeout), overlayTimeout = null); } -}(); +}(); \ No newline at end of file diff --git a/sentience/extension/injected_api.js b/sentience/extension/injected_api.js index 136829f..abaee4b 100644 --- a/sentience/extension/injected_api.js +++ b/sentience/extension/injected_api.js @@ -112,7 +112,7 @@ if (labelEl) { let text = ""; try { - if (text = (labelEl.innerText || "").trim(), !text && labelEl.textContent && (text = labelEl.textContent.trim()), + if (text = (labelEl.innerText || "").trim(), !text && labelEl.textContent && (text = labelEl.textContent.trim()), !text && labelEl.getAttribute) { const ariaLabel = labelEl.getAttribute("aria-label"); ariaLabel && (text = ariaLabel.trim()); @@ -158,7 +158,12 @@ return null; } function getText(el) { - return el.getAttribute("aria-label") ? el.getAttribute("aria-label") : "INPUT" === el.tagName ? el.value || el.placeholder || "" : "IMG" === el.tagName ? el.alt || "" : (el.innerText || "").replace(/\s+/g, " ").trim().substring(0, 100); + if (el.getAttribute("aria-label")) return el.getAttribute("aria-label"); + if ("INPUT" === el.tagName) { + const t = el.getAttribute && el.getAttribute("type") || el.type || ""; + return "password" === String(t).toLowerCase() ? el.placeholder || "" : el.value || el.placeholder || ""; + } + return "IMG" === el.tagName ? el.alt || "" : (el.innerText || "").replace(/\s+/g, " ").trim().substring(0, 100); } function getClassName(el) { if (!el || !el.className) return ""; @@ -268,11 +273,17 @@ try { !1 !== options.waitForStability && await async function(options = {}) { const {minNodeCount: minNodeCount = 500, quietPeriod: quietPeriod = 200, maxWait: maxWait = 5e3} = options, startTime = Date.now(); + try { + window.__sentience_lastMutationTs = performance.now(); + } catch (e) {} return new Promise(resolve => { if (document.querySelectorAll("*").length >= minNodeCount) { let lastChange = Date.now(); const observer = new MutationObserver(() => { lastChange = Date.now(); + try { + window.__sentience_lastMutationTs = performance.now(); + } catch (e) {} }); observer.observe(document.body, { childList: !0, @@ -281,18 +292,24 @@ }); const checkStable = () => { const timeSinceLastChange = Date.now() - lastChange, totalWait = Date.now() - startTime; - timeSinceLastChange >= quietPeriod || totalWait >= maxWait ? (observer.disconnect(), + timeSinceLastChange >= quietPeriod || totalWait >= maxWait ? (observer.disconnect(), resolve()) : setTimeout(checkStable, 50); }; checkStable(); } else { const observer = new MutationObserver(() => { const currentCount = document.querySelectorAll("*").length, totalWait = Date.now() - startTime; + try { + window.__sentience_lastMutationTs = performance.now(); + } catch (e) {} if (currentCount >= minNodeCount) { observer.disconnect(); let lastChange = Date.now(); const quietObserver = new MutationObserver(() => { lastChange = Date.now(); + try { + window.__sentience_lastMutationTs = performance.now(); + } catch (e) {} }); quietObserver.observe(document.body, { childList: !0, @@ -301,7 +318,7 @@ }); const checkQuiet = () => { const timeSinceLastChange = Date.now() - lastChange, totalWait = Date.now() - startTime; - timeSinceLastChange >= quietPeriod || totalWait >= maxWait ? (quietObserver.disconnect(), + timeSinceLastChange >= quietPeriod || totalWait >= maxWait ? (quietObserver.disconnect(), resolve()) : setTimeout(checkQuiet, 50); }; checkQuiet(); @@ -323,14 +340,15 @@ if (!el.getBoundingClientRect) return; const rect = el.getBoundingClientRect(); if (rect.width < 5 || rect.height < 5) return; - if ("span" === el.tagName.toLowerCase()) { + const tagName = el.tagName.toLowerCase(); + if ("span" === tagName) { if (el.closest("a")) return; const childLink = el.querySelector("a[href]"); if (childLink && childLink.href) return; options.debug && el.className && el.className.includes("titleline"); } window.sentience_registry[idx] = el; - const semanticText = function(el, options = {}) { + const inputType = "input" === tagName ? toSafeString(el.getAttribute && el.getAttribute("type") || el.type || null) : null, isPasswordInput = inputType && "password" === inputType.toLowerCase(), semanticText = function(el, options = {}) { if (!el) return { text: "", source: null @@ -341,10 +359,10 @@ source: "explicit_aria_label" }; if ("INPUT" === el.tagName) { - const value = (el.value || el.placeholder || "").trim(); + const t = el.getAttribute && el.getAttribute("type") || el.type || "", isPassword = "password" === String(t).toLowerCase(), value = (isPassword ? el.placeholder || "" : el.value || el.placeholder || "").trim(); if (value) return { text: value, - source: "input_value" + source: isPassword ? "input_placeholder" : "input_value" }; } if ("IMG" === el.tagName) { @@ -417,9 +435,53 @@ } return null; }(el); + let safeValue = null, valueRedacted = null; + try { + if (void 0 !== el.value || el.getAttribute && null !== el.getAttribute("value")) if (isPasswordInput) safeValue = null, + valueRedacted = "true"; else { + const rawValue = void 0 !== el.value ? String(el.value) : String(el.getAttribute("value")); + safeValue = rawValue.length > 200 ? rawValue.substring(0, 200) : rawValue, valueRedacted = "false"; + } + } catch (e) {} + const accessibleName = toSafeString(function(el) { + if (!el || !el.getAttribute) return ""; + const ariaLabel = el.getAttribute("aria-label"); + if (ariaLabel && ariaLabel.trim()) return ariaLabel.trim().substring(0, 200); + const labelledBy = el.getAttribute("aria-labelledby"); + if (labelledBy && labelledBy.trim()) { + const ids = labelledBy.split(/\s+/).filter(id => id.trim()), texts = []; + for (const id of ids) try { + const ref = document.getElementById(id); + if (!ref) continue; + const txt = (ref.innerText || ref.textContent || ref.getAttribute?.("aria-label") || "").toString().trim(); + txt && texts.push(txt); + } catch (e) {} + if (texts.length > 0) return texts.join(" ").substring(0, 200); + } + try { + if (el.labels && el.labels.length > 0) { + const t = (el.labels[0].innerText || el.labels[0].textContent || "").toString().trim(); + if (t) return t.substring(0, 200); + } + } catch (e) {} + try { + const parentLabel = el.closest && el.closest("label"); + if (parentLabel) { + const t = (parentLabel.innerText || parentLabel.textContent || "").toString().trim(); + if (t) return t.substring(0, 200); + } + } catch (e) {} + const tag = (el.tagName || "").toUpperCase(); + if ("INPUT" === tag || "TEXTAREA" === tag) { + const ph = (el.getAttribute("placeholder") || "").toString().trim(); + if (ph) return ph.substring(0, 200); + } + const title = el.getAttribute("title"); + return title && title.trim() ? title.trim().substring(0, 200) : ""; + }(el) || null); rawData.push({ id: idx, - tag: el.tagName.toLowerCase(), + tag: tagName, rect: { x: rect.x, y: rect.y, @@ -441,14 +503,21 @@ attributes: { role: toSafeString(el.getAttribute("role")), type_: toSafeString(el.getAttribute("type")), + input_type: inputType, aria_label: "explicit_aria_label" === semanticText?.source ? semanticText.text : toSafeString(el.getAttribute("aria-label")), + name: accessibleName, inferred_label: semanticText?.source && ![ "explicit_aria_label", "input_value", "img_alt", "inner_text" ].includes(semanticText.source) ? toSafeString(semanticText.text) : null, label_source: semanticText?.source || null, inferred_role: inferredRole ? toSafeString(inferredRole) : null, href: toSafeString(el.href || el.getAttribute("href") || el.closest && el.closest("a")?.href || null), class: toSafeString(getClassName(el)), - value: void 0 !== el.value ? toSafeString(el.value) : toSafeString(el.getAttribute("value")), - checked: void 0 !== el.checked ? String(el.checked) : null + value: null !== safeValue ? toSafeString(safeValue) : null, + value_redacted: valueRedacted, + checked: void 0 !== el.checked ? String(el.checked) : null, + disabled: void 0 !== el.disabled ? String(el.disabled) : null, + aria_checked: toSafeString(el.getAttribute("aria-checked")), + aria_disabled: toSafeString(el.getAttribute("aria-disabled")), + aria_expanded: toSafeString(el.getAttribute("aria-expanded")) }, text: toSafeString(textVal), in_viewport: inView, @@ -468,8 +537,8 @@ const requestId = `iframe-${idx}-${Date.now()}`, timeout = setTimeout(() => { resolve(null); }, 5e3), listener = event => { - "SENTIENCE_IFRAME_SNAPSHOT_RESPONSE" === event.data?.type && event.data, "SENTIENCE_IFRAME_SNAPSHOT_RESPONSE" === event.data?.type && event.data?.requestId === requestId && (clearTimeout(timeout), - window.removeEventListener("message", listener), event.data.error ? resolve(null) : (event.data.snapshot, + "SENTIENCE_IFRAME_SNAPSHOT_RESPONSE" === event.data?.type && event.data, "SENTIENCE_IFRAME_SNAPSHOT_RESPONSE" === event.data?.type && event.data?.requestId === requestId && (clearTimeout(timeout), + window.removeEventListener("message", listener), event.data.error ? resolve(null) : (event.data.snapshot, resolve({ iframe: iframe, data: event.data.snapshot, @@ -485,7 +554,7 @@ ...options, collectIframes: !0 } - }, "*") : (clearTimeout(timeout), window.removeEventListener("message", listener), + }, "*") : (clearTimeout(timeout), window.removeEventListener("message", listener), resolve(null)); } catch (error) { clearTimeout(timeout), window.removeEventListener("message", listener), resolve(null); @@ -535,7 +604,7 @@ }, 25e3), listener = e => { if ("SENTIENCE_SNAPSHOT_RESULT" === e.data.type && e.data.requestId === requestId) { if (resolved) return; - resolved = !0, clearTimeout(timeout), window.removeEventListener("message", listener), + resolved = !0, clearTimeout(timeout), window.removeEventListener("message", listener), e.data.error ? reject(new Error(e.data.error)) : resolve({ elements: e.data.elements, raw_elements: e.data.raw_elements, @@ -552,7 +621,7 @@ options: options }, "*"); } catch (error) { - resolved || (resolved = !0, clearTimeout(timeout), window.removeEventListener("message", listener), + resolved || (resolved = !0, clearTimeout(timeout), window.removeEventListener("message", listener), reject(new Error(`Failed to send snapshot request: ${error.message}`))); } }); @@ -562,7 +631,7 @@ options.screenshot && (screenshot = await function(options) { return new Promise(resolve => { const requestId = Math.random().toString(36).substring(7), listener = e => { - "SENTIENCE_SCREENSHOT_RESULT" === e.data.type && e.data.requestId === requestId && (window.removeEventListener("message", listener), + "SENTIENCE_SCREENSHOT_RESULT" === e.data.type && e.data.requestId === requestId && (window.removeEventListener("message", listener), resolve(e.data.screenshot)); }; window.addEventListener("message", listener), window.postMessage({ @@ -576,6 +645,17 @@ }(options.screenshot)); const cleanedElements = cleanElement(processed.elements), cleanedRawElements = cleanElement(processed.raw_elements); cleanedElements.length, cleanedRawElements.length; + let diagnostics; + try { + const lastMutationTs = window.__sentience_lastMutationTs, now = performance.now(), quietMs = "number" == typeof lastMutationTs && Number.isFinite(lastMutationTs) ? Math.max(0, now - lastMutationTs) : null, nodeCount = document.querySelectorAll("*").length; + diagnostics = { + metrics: { + ready_state: document.readyState || null, + quiet_ms: quietMs, + node_count: nodeCount + } + }; + } catch (e) {} return { status: "success", url: window.location.href, @@ -585,7 +665,8 @@ }, elements: cleanedElements, raw_elements: cleanedRawElements, - screenshot: screenshot + screenshot: screenshot, + diagnostics: diagnostics }; } catch (error) { return { @@ -609,15 +690,15 @@ } if (node.nodeType !== Node.ELEMENT_NODE) return; const tag = node.tagName.toLowerCase(); - if ("h1" === tag && (markdown += "\n# "), "h2" === tag && (markdown += "\n## "), - "h3" === tag && (markdown += "\n### "), "li" === tag && (markdown += "\n- "), insideLink || "p" !== tag && "div" !== tag && "br" !== tag || (markdown += "\n"), - "strong" !== tag && "b" !== tag || (markdown += "**"), "em" !== tag && "i" !== tag || (markdown += "_"), - "a" === tag && (markdown += "[", insideLink = !0), node.shadowRoot ? Array.from(node.shadowRoot.childNodes).forEach(walk) : node.childNodes.forEach(walk), + if ("h1" === tag && (markdown += "\n# "), "h2" === tag && (markdown += "\n## "), + "h3" === tag && (markdown += "\n### "), "li" === tag && (markdown += "\n- "), insideLink || "p" !== tag && "div" !== tag && "br" !== tag || (markdown += "\n"), + "strong" !== tag && "b" !== tag || (markdown += "**"), "em" !== tag && "i" !== tag || (markdown += "_"), + "a" === tag && (markdown += "[", insideLink = !0), node.shadowRoot ? Array.from(node.shadowRoot.childNodes).forEach(walk) : node.childNodes.forEach(walk), "a" === tag) { const href = node.getAttribute("href"); markdown += href ? `](${href})` : "]", insideLink = !1; } - "strong" !== tag && "b" !== tag || (markdown += "**"), "em" !== tag && "i" !== tag || (markdown += "_"), + "strong" !== tag && "b" !== tag || (markdown += "**"), "em" !== tag && "i" !== tag || (markdown += "_"), insideLink || "h1" !== tag && "h2" !== tag && "h3" !== tag && "p" !== tag && "div" !== tag || (markdown += "\n"); }(tempDiv), markdown.replace(/\n{3,}/g, "\n\n").trim(); }(document.body) : function(root) { @@ -630,7 +711,7 @@ const style = window.getComputedStyle(node); if ("none" === style.display || "hidden" === style.visibility) return; const isBlock = "block" === style.display || "flex" === style.display || "P" === node.tagName || "DIV" === node.tagName; - isBlock && (text += " "), node.shadowRoot ? Array.from(node.shadowRoot.childNodes).forEach(walk) : node.childNodes.forEach(walk), + isBlock && (text += " "), node.shadowRoot ? Array.from(node.shadowRoot.childNodes).forEach(walk) : node.childNodes.forEach(walk), isBlock && (text += "\n"); } } else text += node.textContent; @@ -729,25 +810,25 @@ } function startRecording(options = {}) { const {highlightColor: highlightColor = "#ff0000", successColor: successColor = "#00ff00", autoDisableTimeout: autoDisableTimeout = 18e5, keyboardShortcut: keyboardShortcut = "Ctrl+Shift+I"} = options; - if (!window.sentience_registry || 0 === window.sentience_registry.length) return alert("Registry empty. Run `await window.sentience.snapshot()` first!"), + if (!window.sentience_registry || 0 === window.sentience_registry.length) return alert("Registry empty. Run `await window.sentience.snapshot()` first!"), () => {}; window.sentience_registry_map = new Map, window.sentience_registry.forEach((el, idx) => { el && window.sentience_registry_map.set(el, idx); }); let highlightBox = document.getElementById("sentience-highlight-box"); - highlightBox || (highlightBox = document.createElement("div"), highlightBox.id = "sentience-highlight-box", - highlightBox.style.cssText = `\n position: fixed;\n pointer-events: none;\n z-index: 2147483647;\n border: 2px solid ${highlightColor};\n background: rgba(255, 0, 0, 0.1);\n display: none;\n transition: all 0.1s ease;\n box-sizing: border-box;\n `, + highlightBox || (highlightBox = document.createElement("div"), highlightBox.id = "sentience-highlight-box", + highlightBox.style.cssText = `\n position: fixed;\n pointer-events: none;\n z-index: 2147483647;\n border: 2px solid ${highlightColor};\n background: rgba(255, 0, 0, 0.1);\n display: none;\n transition: all 0.1s ease;\n box-sizing: border-box;\n `, document.body.appendChild(highlightBox)); let recordingIndicator = document.getElementById("sentience-recording-indicator"); - recordingIndicator || (recordingIndicator = document.createElement("div"), recordingIndicator.id = "sentience-recording-indicator", - recordingIndicator.style.cssText = `\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 3px;\n background: ${highlightColor};\n z-index: 2147483646;\n pointer-events: none;\n `, + recordingIndicator || (recordingIndicator = document.createElement("div"), recordingIndicator.id = "sentience-recording-indicator", + recordingIndicator.style.cssText = `\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 3px;\n background: ${highlightColor};\n z-index: 2147483646;\n pointer-events: none;\n `, document.body.appendChild(recordingIndicator)), recordingIndicator.style.display = "block"; const mouseOverHandler = e => { const el = e.target; if (!el || el === highlightBox || el === recordingIndicator) return; const rect = el.getBoundingClientRect(); - highlightBox.style.display = "block", highlightBox.style.top = rect.top + window.scrollY + "px", - highlightBox.style.left = rect.left + window.scrollX + "px", highlightBox.style.width = rect.width + "px", + highlightBox.style.display = "block", highlightBox.style.top = rect.top + window.scrollY + "px", + highlightBox.style.left = rect.left + window.scrollX + "px", highlightBox.style.width = rect.width + "px", highlightBox.style.height = rect.height + "px"; }, clickHandler = e => { e.preventDefault(), e.stopPropagation(); @@ -824,7 +905,7 @@ debug_snapshot: rawData }, jsonString = JSON.stringify(snippet, null, 2); navigator.clipboard.writeText(jsonString).then(() => { - highlightBox.style.border = `2px solid ${successColor}`, highlightBox.style.background = "rgba(0, 255, 0, 0.2)", + highlightBox.style.border = `2px solid ${successColor}`, highlightBox.style.background = "rgba(0, 255, 0, 0.2)", setTimeout(() => { highlightBox.style.border = `2px solid ${highlightColor}`, highlightBox.style.background = "rgba(255, 0, 0, 0.1)"; }, 500); @@ -834,15 +915,15 @@ }; let timeoutId = null; const stopRecording = () => { - document.removeEventListener("mouseover", mouseOverHandler, !0), document.removeEventListener("click", clickHandler, !0), - document.removeEventListener("keydown", keyboardHandler, !0), timeoutId && (clearTimeout(timeoutId), - timeoutId = null), highlightBox && (highlightBox.style.display = "none"), recordingIndicator && (recordingIndicator.style.display = "none"), + document.removeEventListener("mouseover", mouseOverHandler, !0), document.removeEventListener("click", clickHandler, !0), + document.removeEventListener("keydown", keyboardHandler, !0), timeoutId && (clearTimeout(timeoutId), + timeoutId = null), highlightBox && (highlightBox.style.display = "none"), recordingIndicator && (recordingIndicator.style.display = "none"), window.sentience_registry_map && window.sentience_registry_map.clear(), window.sentience_stopRecording === stopRecording && delete window.sentience_stopRecording; }, keyboardHandler = e => { - (e.ctrlKey || e.metaKey) && e.shiftKey && "I" === e.key && (e.preventDefault(), + (e.ctrlKey || e.metaKey) && e.shiftKey && "I" === e.key && (e.preventDefault(), stopRecording()); }; - return document.addEventListener("mouseover", mouseOverHandler, !0), document.addEventListener("click", clickHandler, !0), + return document.addEventListener("mouseover", mouseOverHandler, !0), document.addEventListener("click", clickHandler, !0), document.addEventListener("keydown", keyboardHandler, !0), autoDisableTimeout > 0 && (timeoutId = setTimeout(() => { stopRecording(); }, autoDisableTimeout)), window.sentience_stopRecording = stopRecording, stopRecording; @@ -911,4 +992,4 @@ } }), window.sentience_iframe_handler_setup = !0)); })(); -}(); +}(); \ No newline at end of file diff --git a/sentience/extension/pkg/sentience_core.d.ts b/sentience/extension/pkg/sentience_core.d.ts index e280c26..39ef420 100644 --- a/sentience/extension/pkg/sentience_core.d.ts +++ b/sentience/extension/pkg/sentience_core.d.ts @@ -18,34 +18,34 @@ export function prune_for_api(val: any): any; export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module; export interface InitOutput { - readonly memory: WebAssembly.Memory; - readonly analyze_page: (a: number) => number; - readonly analyze_page_with_options: (a: number, b: number) => number; - readonly decide_and_act: (a: number) => void; - readonly prune_for_api: (a: number) => number; - readonly __wbindgen_export: (a: number, b: number) => number; - readonly __wbindgen_export2: (a: number, b: number, c: number, d: number) => number; - readonly __wbindgen_export3: (a: number) => void; + readonly memory: WebAssembly.Memory; + readonly analyze_page: (a: number) => number; + readonly analyze_page_with_options: (a: number, b: number) => number; + readonly decide_and_act: (a: number) => void; + readonly prune_for_api: (a: number) => number; + readonly __wbindgen_export: (a: number, b: number) => number; + readonly __wbindgen_export2: (a: number, b: number, c: number, d: number) => number; + readonly __wbindgen_export3: (a: number) => 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} -*/ + * 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} -*/ + * 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/sentience/extension/pkg/sentience_core.js b/sentience/extension/pkg/sentience_core.js index 2696a64..bb9cae0 100644 --- a/sentience/extension/pkg/sentience_core.js +++ b/sentience/extension/pkg/sentience_core.js @@ -1,4 +1,181 @@ -let wasm; +export function analyze_page(val) { + return takeObject(wasm.analyze_page(addHeapObject(val))); +} + +export function analyze_page_with_options(val, options) { + return takeObject(wasm.analyze_page_with_options(addHeapObject(val), addHeapObject(options))); +} + +export function decide_and_act(_raw_elements) { + wasm.decide_and_act(addHeapObject(_raw_elements)); +} + +export function prune_for_api(val) { + return takeObject(wasm.prune_for_api(addHeapObject(val))); +} + +function __wbg_get_imports() { + const import0 = { + __proto__: null, + __wbg_Error_8c4e43fe74559d73: function(arg0, arg1) { + return addHeapObject(Error(getStringFromWasm0(arg0, arg1))); + }, + __wbg_Number_04624de7d0e8332d: function(arg0) { + return Number(getObject(arg0)); + }, + __wbg___wbindgen_bigint_get_as_i64_8fcf4ce7f1ca72a2: function(arg0, arg1) { + const v = getObject(arg1), ret = "bigint" == typeof v ? v : void 0; + getDataViewMemory0().setBigInt64(arg0 + 8, isLikeNone(ret) ? BigInt(0) : ret, !0), + getDataViewMemory0().setInt32(arg0 + 0, !isLikeNone(ret), !0); + }, + __wbg___wbindgen_boolean_get_bbbb1c18aa2f5e25: function(arg0) { + const v = getObject(arg0), ret = "boolean" == typeof v ? v : void 0; + return isLikeNone(ret) ? 16777215 : ret ? 1 : 0; + }, + __wbg___wbindgen_debug_string_0bc8482c6e3508ae: function(arg0, arg1) { + const ptr1 = passStringToWasm0(debugString(getObject(arg1)), wasm.__wbindgen_export, wasm.__wbindgen_export2), len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4, len1, !0), getDataViewMemory0().setInt32(arg0 + 0, ptr1, !0); + }, + __wbg___wbindgen_in_47fa6863be6f2f25: function(arg0, arg1) { + return getObject(arg0) in getObject(arg1); + }, + __wbg___wbindgen_is_bigint_31b12575b56f32fc: function(arg0) { + return "bigint" == typeof getObject(arg0); + }, + __wbg___wbindgen_is_function_0095a73b8b156f76: function(arg0) { + return "function" == typeof getObject(arg0); + }, + __wbg___wbindgen_is_object_5ae8e5880f2c1fbd: function(arg0) { + const val = getObject(arg0); + return "object" == typeof val && null !== val; + }, + __wbg___wbindgen_is_undefined_9e4d92534c42d778: function(arg0) { + return void 0 === getObject(arg0); + }, + __wbg___wbindgen_jsval_eq_11888390b0186270: function(arg0, arg1) { + return getObject(arg0) === getObject(arg1); + }, + __wbg___wbindgen_jsval_loose_eq_9dd77d8cd6671811: function(arg0, arg1) { + return getObject(arg0) == getObject(arg1); + }, + __wbg___wbindgen_number_get_8ff4255516ccad3e: function(arg0, arg1) { + const obj = getObject(arg1), ret = "number" == typeof obj ? obj : void 0; + getDataViewMemory0().setFloat64(arg0 + 8, isLikeNone(ret) ? 0 : ret, !0), getDataViewMemory0().setInt32(arg0 + 0, !isLikeNone(ret), !0); + }, + __wbg___wbindgen_string_get_72fb696202c56729: function(arg0, arg1) { + const obj = getObject(arg1), ret = "string" == typeof obj ? obj : void 0; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2), len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4, len1, !0), getDataViewMemory0().setInt32(arg0 + 0, ptr1, !0); + }, + __wbg___wbindgen_throw_be289d5034ed271b: function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }, + __wbg_call_389efe28435a9388: function() { + return handleError(function(arg0, arg1) { + return addHeapObject(getObject(arg0).call(getObject(arg1))); + }, arguments); + }, + __wbg_done_57b39ecd9addfe81: function(arg0) { + return getObject(arg0).done; + }, + __wbg_error_9a7fe3f932034cde: function(arg0) {}, + __wbg_get_9b94d73e6221f75c: function(arg0, arg1) { + return addHeapObject(getObject(arg0)[arg1 >>> 0]); + }, + __wbg_get_b3ed3ad4be2bc8ac: function() { + return handleError(function(arg0, arg1) { + return addHeapObject(Reflect.get(getObject(arg0), getObject(arg1))); + }, arguments); + }, + __wbg_get_with_ref_key_1dc361bd10053bfe: function(arg0, arg1) { + return addHeapObject(getObject(arg0)[getObject(arg1)]); + }, + __wbg_instanceof_ArrayBuffer_c367199e2fa2aa04: function(arg0) { + let result; + try { + result = getObject(arg0) instanceof ArrayBuffer; + } catch (_) { + result = !1; + } + return result; + }, + __wbg_instanceof_Uint8Array_9b9075935c74707c: function(arg0) { + let result; + try { + result = getObject(arg0) instanceof Uint8Array; + } catch (_) { + result = !1; + } + return result; + }, + __wbg_isArray_d314bb98fcf08331: function(arg0) { + return Array.isArray(getObject(arg0)); + }, + __wbg_isSafeInteger_bfbc7332a9768d2a: function(arg0) { + return Number.isSafeInteger(getObject(arg0)); + }, + __wbg_iterator_6ff6560ca1568e55: function() { + return addHeapObject(Symbol.iterator); + }, + __wbg_js_click_element_2fe1e774f3d232c7: function(arg0) { + js_click_element(arg0); + }, + __wbg_length_32ed9a279acd054c: function(arg0) { + return getObject(arg0).length; + }, + __wbg_length_35a7bace40f36eac: function(arg0) { + return getObject(arg0).length; + }, + __wbg_new_361308b2356cecd0: function() { + return addHeapObject(new Object); + }, + __wbg_new_3eb36ae241fe6f44: function() { + return addHeapObject(new Array); + }, + __wbg_new_dd2b680c8bf6ae29: function(arg0) { + return addHeapObject(new Uint8Array(getObject(arg0))); + }, + __wbg_next_3482f54c49e8af19: function() { + return handleError(function(arg0) { + return addHeapObject(getObject(arg0).next()); + }, arguments); + }, + __wbg_next_418f80d8f5303233: function(arg0) { + return addHeapObject(getObject(arg0).next); + }, + __wbg_prototypesetcall_bdcdcc5842e4d77d: function(arg0, arg1, arg2) { + Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), getObject(arg2)); + }, + __wbg_set_3f1d0b984ed272ed: function(arg0, arg1, arg2) { + getObject(arg0)[takeObject(arg1)] = takeObject(arg2); + }, + __wbg_set_f43e577aea94465b: function(arg0, arg1, arg2) { + getObject(arg0)[arg1 >>> 0] = takeObject(arg2); + }, + __wbg_value_0546255b415e96c1: function(arg0) { + return addHeapObject(getObject(arg0).value); + }, + __wbindgen_cast_0000000000000001: function(arg0) { + return addHeapObject(arg0); + }, + __wbindgen_cast_0000000000000002: function(arg0, arg1) { + return addHeapObject(getStringFromWasm0(arg0, arg1)); + }, + __wbindgen_cast_0000000000000003: function(arg0) { + return addHeapObject(BigInt.asUintN(64, arg0)); + }, + __wbindgen_object_clone_ref: function(arg0) { + return addHeapObject(getObject(arg0)); + }, + __wbindgen_object_drop_ref: function(arg0) { + takeObject(arg0); + } + }; + return { + __proto__: null, + "./sentience_core_bg.js": import0 + }; +} function addHeapObject(obj) { heap_next === heap.length && heap.push(heap.length + 1); @@ -47,7 +224,7 @@ function getArrayU8FromWasm0(ptr, len) { let cachedDataViewMemory0 = null; function getDataViewMemory0() { - return (null === cachedDataViewMemory0 || !0 === cachedDataViewMemory0.buffer.detached || void 0 === cachedDataViewMemory0.buffer.detached && cachedDataViewMemory0.buffer !== wasm.memory.buffer) && (cachedDataViewMemory0 = new DataView(wasm.memory.buffer)), + return (null === cachedDataViewMemory0 || !0 === cachedDataViewMemory0.buffer.detached || void 0 === cachedDataViewMemory0.buffer.detached && cachedDataViewMemory0.buffer !== wasm.memory.buffer) && (cachedDataViewMemory0 = new DataView(wasm.memory.buffer)), cachedDataViewMemory0; } @@ -58,7 +235,7 @@ function getStringFromWasm0(ptr, len) { let cachedUint8ArrayMemory0 = null; function getUint8ArrayMemory0() { - return null !== cachedUint8ArrayMemory0 && 0 !== cachedUint8ArrayMemory0.byteLength || (cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer)), + return null !== cachedUint8ArrayMemory0 && 0 !== cachedUint8ArrayMemory0.byteLength || (cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer)), cachedUint8ArrayMemory0; } @@ -87,7 +264,7 @@ function isLikeNone(x) { function passStringToWasm0(arg, malloc, realloc) { if (void 0 === realloc) { const buf = cachedTextEncoder.encode(arg), ptr = malloc(buf.length, 1) >>> 0; - return getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf), WASM_VECTOR_LEN = buf.length, + return getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf), WASM_VECTOR_LEN = buf.length, ptr; } let len = arg.length, ptr = malloc(len, 1) >>> 0; @@ -139,32 +316,27 @@ const cachedTextEncoder = new TextEncoder; }; }); -let WASM_VECTOR_LEN = 0; - -export function analyze_page(val) { - return takeObject(wasm.analyze_page(addHeapObject(val))); -} +let wasmModule, wasm, WASM_VECTOR_LEN = 0; -export function analyze_page_with_options(val, options) { - return takeObject(wasm.analyze_page_with_options(addHeapObject(val), addHeapObject(options))); -} - -export function decide_and_act(_raw_elements) { - wasm.decide_and_act(addHeapObject(_raw_elements)); -} - -export function prune_for_api(val) { - return takeObject(wasm.prune_for_api(addHeapObject(val))); +function __wbg_finalize_init(instance, module) { + return wasm = instance.exports, wasmModule = module, cachedDataViewMemory0 = null, + cachedUint8ArrayMemory0 = null, wasm; } -const EXPECTED_RESPONSE_TYPES = new Set([ "basic", "cors", "default" ]); - async function __wbg_load(module, imports) { if ("function" == typeof Response && module instanceof Response) { if ("function" == typeof WebAssembly.instantiateStreaming) try { return await WebAssembly.instantiateStreaming(module, imports); } catch (e) { - if (!(module.ok && EXPECTED_RESPONSE_TYPES.has(module.type)) || "application/wasm" === module.headers.get("Content-Type")) throw e; + if (!(module.ok && function(type) { + switch (type) { + case "basic": + case "cors": + case "default": + return !0; + } + return !1; + }(module.type)) || "application/wasm" === module.headers.get("Content-Type")) throw e; } const bytes = await module.arrayBuffer(); return await WebAssembly.instantiate(bytes, imports); @@ -178,128 +350,6 @@ async function __wbg_load(module, imports) { } } -function __wbg_get_imports() { - const imports = { - wbg: {} - }; - return imports.wbg.__wbg_Error_52673b7de5a0ca89 = function(arg0, arg1) { - return addHeapObject(Error(getStringFromWasm0(arg0, arg1))); - }, imports.wbg.__wbg_Number_2d1dcfcf4ec51736 = function(arg0) { - return Number(getObject(arg0)); - }, imports.wbg.__wbg___wbindgen_bigint_get_as_i64_6e32f5e6aff02e1d = function(arg0, arg1) { - const v = getObject(arg1), ret = "bigint" == typeof v ? v : void 0; - getDataViewMemory0().setBigInt64(arg0 + 8, isLikeNone(ret) ? BigInt(0) : ret, !0), - getDataViewMemory0().setInt32(arg0 + 0, !isLikeNone(ret), !0); - }, imports.wbg.__wbg___wbindgen_boolean_get_dea25b33882b895b = function(arg0) { - const v = getObject(arg0), ret = "boolean" == typeof v ? v : void 0; - return isLikeNone(ret) ? 16777215 : ret ? 1 : 0; - }, imports.wbg.__wbg___wbindgen_debug_string_adfb662ae34724b6 = function(arg0, arg1) { - const ptr1 = passStringToWasm0(debugString(getObject(arg1)), wasm.__wbindgen_export, wasm.__wbindgen_export2), len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4, len1, !0), getDataViewMemory0().setInt32(arg0 + 0, ptr1, !0); - }, imports.wbg.__wbg___wbindgen_in_0d3e1e8f0c669317 = function(arg0, arg1) { - return getObject(arg0) in getObject(arg1); - }, imports.wbg.__wbg___wbindgen_is_bigint_0e1a2e3f55cfae27 = function(arg0) { - return "bigint" == typeof getObject(arg0); - }, imports.wbg.__wbg___wbindgen_is_function_8d400b8b1af978cd = function(arg0) { - return "function" == typeof getObject(arg0); - }, imports.wbg.__wbg___wbindgen_is_object_ce774f3490692386 = function(arg0) { - const val = getObject(arg0); - return "object" == typeof val && null !== val; - }, imports.wbg.__wbg___wbindgen_is_undefined_f6b95eab589e0269 = function(arg0) { - return void 0 === getObject(arg0); - }, imports.wbg.__wbg___wbindgen_jsval_eq_b6101cc9cef1fe36 = function(arg0, arg1) { - return getObject(arg0) === getObject(arg1); - }, imports.wbg.__wbg___wbindgen_jsval_loose_eq_766057600fdd1b0d = function(arg0, arg1) { - return getObject(arg0) == getObject(arg1); - }, imports.wbg.__wbg___wbindgen_number_get_9619185a74197f95 = function(arg0, arg1) { - const obj = getObject(arg1), ret = "number" == typeof obj ? obj : void 0; - getDataViewMemory0().setFloat64(arg0 + 8, isLikeNone(ret) ? 0 : ret, !0), getDataViewMemory0().setInt32(arg0 + 0, !isLikeNone(ret), !0); - }, imports.wbg.__wbg___wbindgen_string_get_a2a31e16edf96e42 = function(arg0, arg1) { - const obj = getObject(arg1), ret = "string" == typeof obj ? obj : void 0; - var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2), len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4, len1, !0), getDataViewMemory0().setInt32(arg0 + 0, ptr1, !0); - }, imports.wbg.__wbg___wbindgen_throw_dd24417ed36fc46e = function(arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); - }, imports.wbg.__wbg_call_abb4ff46ce38be40 = function() { - return handleError(function(arg0, arg1) { - return addHeapObject(getObject(arg0).call(getObject(arg1))); - }, arguments); - }, imports.wbg.__wbg_done_62ea16af4ce34b24 = function(arg0) { - return getObject(arg0).done; - }, imports.wbg.__wbg_error_7bc7d576a6aaf855 = function(arg0) {}, imports.wbg.__wbg_get_6b7bd52aca3f9671 = function(arg0, arg1) { - return addHeapObject(getObject(arg0)[arg1 >>> 0]); - }, imports.wbg.__wbg_get_af9dab7e9603ea93 = function() { - return handleError(function(arg0, arg1) { - return addHeapObject(Reflect.get(getObject(arg0), getObject(arg1))); - }, arguments); - }, imports.wbg.__wbg_get_with_ref_key_1dc361bd10053bfe = function(arg0, arg1) { - return addHeapObject(getObject(arg0)[getObject(arg1)]); - }, imports.wbg.__wbg_instanceof_ArrayBuffer_f3320d2419cd0355 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof ArrayBuffer; - } catch (_) { - result = !1; - } - return result; - }, imports.wbg.__wbg_instanceof_Uint8Array_da54ccc9d3e09434 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof Uint8Array; - } catch (_) { - result = !1; - } - return result; - }, imports.wbg.__wbg_isArray_51fd9e6422c0a395 = function(arg0) { - return Array.isArray(getObject(arg0)); - }, imports.wbg.__wbg_isSafeInteger_ae7d3f054d55fa16 = function(arg0) { - return Number.isSafeInteger(getObject(arg0)); - }, imports.wbg.__wbg_iterator_27b7c8b35ab3e86b = function() { - return addHeapObject(Symbol.iterator); - }, imports.wbg.__wbg_js_click_element_2fe1e774f3d232c7 = function(arg0) { - js_click_element(arg0); - }, imports.wbg.__wbg_length_22ac23eaec9d8053 = function(arg0) { - return getObject(arg0).length; - }, imports.wbg.__wbg_length_d45040a40c570362 = function(arg0) { - return getObject(arg0).length; - }, imports.wbg.__wbg_new_1ba21ce319a06297 = function() { - return addHeapObject(new Object); - }, imports.wbg.__wbg_new_25f239778d6112b9 = function() { - return addHeapObject(new Array); - }, imports.wbg.__wbg_new_6421f6084cc5bc5a = function(arg0) { - return addHeapObject(new Uint8Array(getObject(arg0))); - }, imports.wbg.__wbg_next_138a17bbf04e926c = function(arg0) { - return addHeapObject(getObject(arg0).next); - }, imports.wbg.__wbg_next_3cfe5c0fe2a4cc53 = function() { - return handleError(function(arg0) { - return addHeapObject(getObject(arg0).next()); - }, arguments); - }, imports.wbg.__wbg_prototypesetcall_dfe9b766cdc1f1fd = function(arg0, arg1, arg2) { - Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), getObject(arg2)); - }, imports.wbg.__wbg_set_3f1d0b984ed272ed = function(arg0, arg1, arg2) { - getObject(arg0)[takeObject(arg1)] = takeObject(arg2); - }, imports.wbg.__wbg_set_7df433eea03a5c14 = function(arg0, arg1, arg2) { - getObject(arg0)[arg1 >>> 0] = takeObject(arg2); - }, imports.wbg.__wbg_value_57b7b035e117f7ee = function(arg0) { - return addHeapObject(getObject(arg0).value); - }, imports.wbg.__wbindgen_cast_2241b6af4c4b2941 = function(arg0, arg1) { - return addHeapObject(getStringFromWasm0(arg0, arg1)); - }, imports.wbg.__wbindgen_cast_4625c577ab2ec9ee = function(arg0) { - return addHeapObject(BigInt.asUintN(64, arg0)); - }, imports.wbg.__wbindgen_cast_d6cd19b81560fd6e = function(arg0) { - return addHeapObject(arg0); - }, imports.wbg.__wbindgen_object_clone_ref = function(arg0) { - return addHeapObject(getObject(arg0)); - }, imports.wbg.__wbindgen_object_drop_ref = function(arg0) { - takeObject(arg0); - }, imports; -} - -function __wbg_finalize_init(instance, module) { - return wasm = instance.exports, __wbg_init.__wbindgen_wasm_module = module, cachedDataViewMemory0 = null, - cachedUint8ArrayMemory0 = null, wasm; -} - function initSync(module) { if (void 0 !== wasm) return wasm; void 0 !== module && Object.getPrototypeOf(module) === Object.prototype && ({module: module} = module); @@ -310,7 +360,7 @@ function initSync(module) { async function __wbg_init(module_or_path) { if (void 0 !== wasm) return wasm; - void 0 !== module_or_path && Object.getPrototypeOf(module_or_path) === Object.prototype && ({module_or_path: module_or_path} = module_or_path), + void 0 !== module_or_path && Object.getPrototypeOf(module_or_path) === Object.prototype && ({module_or_path: module_or_path} = module_or_path), void 0 === module_or_path && (module_or_path = new URL("sentience_core_bg.wasm", import.meta.url)); const imports = __wbg_get_imports(); ("string" == typeof module_or_path || "function" == typeof Request && module_or_path instanceof Request || "function" == typeof URL && module_or_path instanceof URL) && (module_or_path = fetch(module_or_path)); @@ -318,6 +368,4 @@ async function __wbg_init(module_or_path) { return __wbg_finalize_init(instance, module); } -export { initSync }; - -export default __wbg_init; +export { initSync, __wbg_init as default }; \ No newline at end of file diff --git a/sentience/extension/pkg/sentience_core_bg.wasm b/sentience/extension/pkg/sentience_core_bg.wasm index 71ba05599bb4624d0f43180988cc56107801b5cc..e6284e4563e29183ccde81e5daba43f9ca51220d 100644 GIT binary patch delta 15479 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 a|1oMUsvo1_X+C?t-|NHw;O7gM6#Oq6AZ!f) delta 14017 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