From 41f5d71e38f785786656e111cf2ea1200e45886d Mon Sep 17 00:00:00 2001 From: V Date: Tue, 19 Sep 2023 04:07:24 +0200 Subject: [PATCH] Bundle dependencies with extensions for webstore rule compliance (#1740) --- browser/VencordNativeStub.ts | 7 +- browser/content.js | 5 + browser/manifest.json | 2 +- browser/monaco.ts | 43 + browser/monacoWin.html | 37 + browser/patch-worker.js | 135 ++ browser/third-party/rnnoise/LICENSE | 21 + browser/third-party/rnnoise/rnnoise.wasm | Bin 0 -> 152656 bytes .../rnnoise/rnnoise/workletProcessor.js | 13 + browser/third-party/rnnoise/rnnoise_simd.wasm | Bin 0 -> 152656 bytes package.json | 6 +- pnpm-lock.yaml | 81 +- scripts/build/build.mjs | 2 + scripts/build/buildWeb.mjs | 116 +- src/globals.d.ts | 1 + src/main/ipcMain.ts | 2 +- src/{components => main}/monacoWin.html | 0 src/plugins/{ => _core}/supportHelper.tsx | 2 +- src/plugins/fakeNitro.ts | 11 +- .../components/DecryptionModal.tsx | 0 .../components/EncryptionModal.tsx | 0 .../index.tsx | 0 src/plugins/petpet.ts | 5 +- .../api/languages.ts | 0 .../api/shiki.ts | 0 .../api/themes.ts | 0 .../components/ButtonRow.tsx | 0 .../components/Code.tsx | 0 .../components/CopyButton.tsx | 0 .../components/Header.tsx | 0 .../components/Highlighter.tsx | 0 .../devicon.css | 0 .../hooks/useCopyCooldown.ts | 0 .../hooks/useShikiSettings.ts | 0 .../hooks/useTheme.ts | 0 .../index.ts | 0 .../previewExample.tsx | 0 .../settings.ts | 0 .../shiki.css | 0 .../types.ts | 0 .../utils/color.ts | 0 .../utils/createStyle.ts | 0 .../utils/misc.ts | 0 src/utils/apng-canvas.js | 1168 +++++++++++++++++ src/utils/dependencies.ts | 35 +- src/utils/web-metadata.ts | 14 + 46 files changed, 1633 insertions(+), 73 deletions(-) create mode 100644 browser/monaco.ts create mode 100644 browser/monacoWin.html create mode 100644 browser/patch-worker.js create mode 100644 browser/third-party/rnnoise/LICENSE create mode 100644 browser/third-party/rnnoise/rnnoise.wasm create mode 100644 browser/third-party/rnnoise/rnnoise/workletProcessor.js create mode 100644 browser/third-party/rnnoise/rnnoise_simd.wasm rename src/{components => main}/monacoWin.html (100%) rename src/plugins/{ => _core}/supportHelper.tsx (99%) rename src/plugins/{invisibleChat => invisibleChat.desktop}/components/DecryptionModal.tsx (100%) rename src/plugins/{invisibleChat => invisibleChat.desktop}/components/EncryptionModal.tsx (100%) rename src/plugins/{invisibleChat => invisibleChat.desktop}/index.tsx (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/api/languages.ts (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/api/shiki.ts (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/api/themes.ts (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/components/ButtonRow.tsx (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/components/Code.tsx (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/components/CopyButton.tsx (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/components/Header.tsx (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/components/Highlighter.tsx (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/devicon.css (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/hooks/useCopyCooldown.ts (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/hooks/useShikiSettings.ts (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/hooks/useTheme.ts (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/index.ts (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/previewExample.tsx (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/settings.ts (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/shiki.css (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/types.ts (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/utils/color.ts (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/utils/createStyle.ts (100%) rename src/plugins/{shikiCodeblocks => shikiCodeblocks.desktop}/utils/misc.ts (100%) create mode 100644 src/utils/apng-canvas.js create mode 100644 src/utils/web-metadata.ts diff --git a/browser/VencordNativeStub.ts b/browser/VencordNativeStub.ts index 664e9eef..e3df0d66 100644 --- a/browser/VencordNativeStub.ts +++ b/browser/VencordNativeStub.ts @@ -19,9 +19,11 @@ /// /// -import monacoHtml from "~fileContent/../src/components/monacoWin.html"; +import monacoHtmlLocal from "~fileContent/monacoWin.html"; +import monacoHtmlCdn from "~fileContent/../src/main/monacoWin.html"; import * as DataStore from "../src/api/DataStore"; import { debounce } from "../src/utils"; +import { EXTENSION_BASE_URL } from "../src/utils/web-metadata"; import { getTheme, Theme } from "../src/utils/discord"; import { getThemeInfo } from "../src/main/themes"; @@ -80,6 +82,7 @@ window.VencordNative = { return; } + win.baseUrl = EXTENSION_BASE_URL; win.setCss = setCssDebounced; win.getCurrentCss = () => VencordNative.quickCss.get(); win.getTheme = () => @@ -87,7 +90,7 @@ window.VencordNative = { ? "vs-light" : "vs-dark"; - win.document.write(monacoHtml); + win.document.write(IS_EXTENSION ? monacoHtmlLocal : monacoHtmlCdn); }, }, diff --git a/browser/content.js b/browser/content.js index e47ef837..4810fe3c 100644 --- a/browser/content.js +++ b/browser/content.js @@ -4,6 +4,11 @@ if (typeof browser === "undefined") { const script = document.createElement("script"); script.src = browser.runtime.getURL("dist/Vencord.js"); +script.id = "vencord-script"; +Object.assign(script.dataset, { + extensionBaseUrl: browser.runtime.getURL(""), + version: browser.runtime.getManifest().version +}); const style = document.createElement("link"); style.type = "text/css"; diff --git a/browser/manifest.json b/browser/manifest.json index 49536a71..69bf0cec 100644 --- a/browser/manifest.json +++ b/browser/manifest.json @@ -28,7 +28,7 @@ "web_accessible_resources": [ { - "resources": ["dist/Vencord.js", "dist/Vencord.css"], + "resources": ["dist/*", "third-party/*"], "matches": ["*://*.discord.com/*"] } ], diff --git a/browser/monaco.ts b/browser/monaco.ts new file mode 100644 index 00000000..ead061d6 --- /dev/null +++ b/browser/monaco.ts @@ -0,0 +1,43 @@ +/* + * Vencord, a Discord client mod + * Copyright (c) 2023 Vendicated and contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +import "./patch-worker"; + +import * as monaco from "monaco-editor/esm/vs/editor/editor.main.js"; + +declare global { + const baseUrl: string; + const getCurrentCss: () => Promise; + const setCss: (css: string) => void; + const getTheme: () => string; +} + +const BASE = "/dist/monaco/vs"; + +self.MonacoEnvironment = { + getWorkerUrl(_moduleId: unknown, label: string) { + const path = label === "css" ? "/language/css/css.worker.js" : "/editor/editor.worker.js"; + return new URL(BASE + path, baseUrl).toString(); + } +}; + +getCurrentCss().then(css => { + const editor = monaco.editor.create( + document.getElementById("container")!, + { + value: css, + language: "css", + theme: getTheme(), + } + ); + editor.onDidChangeModelContent(() => + setCss(editor.getValue()) + ); + window.addEventListener("resize", () => { + // make monaco re-layout + editor.layout(); + }); +}); diff --git a/browser/monacoWin.html b/browser/monacoWin.html new file mode 100644 index 00000000..a55b0e54 --- /dev/null +++ b/browser/monacoWin.html @@ -0,0 +1,37 @@ + + + + + Vencord QuickCSS Editor + + + + +
+ + + + diff --git a/browser/patch-worker.js b/browser/patch-worker.js new file mode 100644 index 00000000..428ea6cc --- /dev/null +++ b/browser/patch-worker.js @@ -0,0 +1,135 @@ +/* +Copyright 2013 Rob Wu +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +// Target: Chrome 20+ + +// W3-compliant Worker proxy. +// This module replaces the global Worker object. +// When invoked, the default Worker object is called. +// If this call fails with SECURITY_ERR, the script is fetched +// using async XHR, and transparently proxies all calls and +// setters/getters to the new Worker object. +// Note: This script does not magically circumvent the Same origin policy. + +(function () { + 'use strict'; + var Worker_ = window.Worker; + var URL = window.URL || window.webkitURL; + // Create dummy worker for the following purposes: + // 1. Don't override the global Worker object if the fallback isn't + // going to work (future API changes?) + // 2. Use it to trigger early validation of postMessage calls + // Note: Blob constructor is supported since Chrome 20, but since + // some of the used Chrome APIs are only supported as of Chrome 20, + // I don't bother adding a BlobBuilder fallback. + var dummyWorker = new Worker_( + URL.createObjectURL(new Blob([], { type: 'text/javascript' }))); + window.Worker = function Worker(scriptURL) { + if (arguments.length === 0) { + throw new TypeError('Not enough arguments'); + } + try { + return new Worker_(scriptURL); + } catch (e) { + if (e.code === 18/*DOMException.SECURITY_ERR*/) { + return new WorkerXHR(scriptURL); + } else { + throw e; + } + } + }; + // Bind events and replay queued messages + function bindWorker(worker, workerURL) { + if (worker._terminated) { + return; + } + worker.Worker = new Worker_(workerURL); + worker.Worker.onerror = worker._onerror; + worker.Worker.onmessage = worker._onmessage; + var o; + while ((o = worker._replayQueue.shift())) { + worker.Worker[o.method].apply(worker.Worker, o.arguments); + } + while ((o = worker._messageQueue.shift())) { + worker.Worker.postMessage.apply(worker.Worker, o); + } + } + function WorkerXHR(scriptURL) { + var worker = this; + var x = new XMLHttpRequest(); + x.responseType = 'blob'; + x.onload = function () { + // http://stackoverflow.com/a/10372280/938089 + var workerURL = URL.createObjectURL(x.response); + bindWorker(worker, workerURL); + }; + x.open('GET', scriptURL); + x.send(); + worker._replayQueue = []; + worker._messageQueue = []; + } + WorkerXHR.prototype = { + constructor: Worker_, + terminate: function () { + if (!this._terminated) { + this._terminated = true; + if (this.Worker) + this.Worker.terminate(); + } + }, + postMessage: function (message, transfer) { + if (!(this instanceof WorkerXHR)) + throw new TypeError('Illegal invocation'); + if (this.Worker) { + this.Worker.postMessage.apply(this.Worker, arguments); + } else { + // Trigger validation: + dummyWorker.postMessage(message); + // Alright, push the valid message to the queue. + this._messageQueue.push(arguments); + } + } + }; + // Implement the EventTarget interface + [ + 'addEventListener', + 'removeEventListener', + 'dispatchEvent' + ].forEach(function (method) { + WorkerXHR.prototype[method] = function () { + if (!(this instanceof WorkerXHR)) { + throw new TypeError('Illegal invocation'); + } + if (this.Worker) { + this.Worker[method].apply(this.Worker, arguments); + } else { + this._replayQueue.push({ method: method, arguments: arguments }); + } + }; + }); + Object.defineProperties(WorkerXHR.prototype, { + onmessage: { + get: function () { return this._onmessage || null; }, + set: function (func) { + this._onmessage = typeof func === 'function' ? func : null; + } + }, + onerror: { + get: function () { return this._onerror || null; }, + set: function (func) { + this._onerror = typeof func === 'function' ? func : null; + } + } + }); +})(); \ No newline at end of file diff --git a/browser/third-party/rnnoise/LICENSE b/browser/third-party/rnnoise/LICENSE new file mode 100644 index 00000000..bc8b047a --- /dev/null +++ b/browser/third-party/rnnoise/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 翠 / green + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/browser/third-party/rnnoise/rnnoise.wasm b/browser/third-party/rnnoise/rnnoise.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6f9fbb604e5e6ea45e46849b0dc4008a5ebcf66a GIT binary patch literal 152656 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%0A(+s8+u7Y;$KKkdl6Zo^(2EUYrLoUbpQ%zz$(# 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 h0#tti0R0s@|A&^Rqvh#nd3p;UQxV{1;-yN}~V( literal 0 HcmV?d00001 diff --git a/browser/third-party/rnnoise/rnnoise/workletProcessor.js b/browser/third-party/rnnoise/rnnoise/workletProcessor.js new file mode 100644 index 00000000..e29fdc88 --- /dev/null +++ b/browser/third-party/rnnoise/rnnoise/workletProcessor.js @@ -0,0 +1,13 @@ +var Ke=Object.defineProperty;var Ze=(d,n,e)=>n in d?Ke(d,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):d[n]=e;var N=(d=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(d,{get:(n,e)=>(typeof require<"u"?require:n)[e]}):d)(function(d){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+d+'" is not supported')});var R=(d,n,e)=>(Ze(d,typeof n!="symbol"?n+"":n,e),e);var S={};var Je=async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),Pe=(()=>{var d=import.meta.url;return function(e){e=e||{};var e=typeof e<"u"?e:{},a=Object.assign,p,u;e.ready=new Promise(function(r,o){p=r,u=o}),Object.getOwnPropertyDescriptor(e.ready,"_rnnoise_process_frame")||(Object.defineProperty(e.ready,"_rnnoise_process_frame",{configurable:!0,get:function(){t("You are getting _rnnoise_process_frame on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(e.ready,"_rnnoise_process_frame",{configurable:!0,set:function(){t("You are setting _rnnoise_process_frame on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(e.ready,"_rnnoise_destroy")||(Object.defineProperty(e.ready,"_rnnoise_destroy",{configurable:!0,get:function(){t("You are getting _rnnoise_destroy on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(e.ready,"_rnnoise_destroy",{configurable:!0,set:function(){t("You are setting _rnnoise_destroy on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(e.ready,"_rnnoise_create")||(Object.defineProperty(e.ready,"_rnnoise_create",{configurable:!0,get:function(){t("You are getting _rnnoise_create on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(e.ready,"_rnnoise_create",{configurable:!0,set:function(){t("You are setting _rnnoise_create on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(e.ready,"_rnnoise_get_frame_size")||(Object.defineProperty(e.ready,"_rnnoise_get_frame_size",{configurable:!0,get:function(){t("You are getting _rnnoise_get_frame_size on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(e.ready,"_rnnoise_get_frame_size",{configurable:!0,set:function(){t("You are setting _rnnoise_get_frame_size on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(e.ready,"_rnnoise_model_from_string")||(Object.defineProperty(e.ready,"_rnnoise_model_from_string",{configurable:!0,get:function(){t("You are getting _rnnoise_model_from_string on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(e.ready,"_rnnoise_model_from_string",{configurable:!0,set:function(){t("You are setting _rnnoise_model_from_string on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(e.ready,"_rnnoise_model_free")||(Object.defineProperty(e.ready,"_rnnoise_model_free",{configurable:!0,get:function(){t("You are getting _rnnoise_model_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(e.ready,"_rnnoise_model_free",{configurable:!0,set:function(){t("You are setting _rnnoise_model_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(e.ready,"_malloc")||(Object.defineProperty(e.ready,"_malloc",{configurable:!0,get:function(){t("You are getting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(e.ready,"_malloc",{configurable:!0,set:function(){t("You are setting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(e.ready,"_free")||(Object.defineProperty(e.ready,"_free",{configurable:!0,get:function(){t("You are getting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(e.ready,"_free",{configurable:!0,set:function(){t("You are setting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(e.ready,"_fflush")||(Object.defineProperty(e.ready,"_fflush",{configurable:!0,get:function(){t("You are getting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(e.ready,"_fflush",{configurable:!0,set:function(){t("You are setting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(e.ready,"onRuntimeInitialized")||(Object.defineProperty(e.ready,"onRuntimeInitialized",{configurable:!0,get:function(){t("You are getting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(e.ready,"onRuntimeInitialized",{configurable:!0,set:function(){t("You are setting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}));var g=a({},e),b=typeof S=="object",f=typeof importScripts=="function",y=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",m=!b&&!y&&!f;if(e.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");var T="";function B(r){return e.locateFile?e.locateFile(r,T):T+r}var U,x,v,J,W,$;if(y){if(!(typeof process=="object"&&typeof N=="function"))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");f?T=N("path").dirname(T)+"/":T=__dirname+"/",$=function(){W||(J=N("fs"),W=N("path"))},U=function(o,i){return $(),o=W.normalize(o),J.readFileSync(o,i?null:"utf8")},v=function(o){var i=U(o,!0);return i.buffer||(i=new Uint8Array(i)),s(i.buffer),i},x=function(o,i,c){$(),o=W.normalize(o),J.readFile(o,function(O,M){O?c(O):i(M.buffer)})},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",function(r){if(!(r instanceof Ve))throw r}),process.on("unhandledRejection",function(r){throw r}),e.inspect=function(){return"[Emscripten Module object]"}}else if(m){if(typeof process=="object"&&typeof N=="function"||typeof S=="object"||typeof importScripts=="function")throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");typeof read<"u"&&(U=function(o){return read(o)}),v=function(o){let i;return typeof readbuffer=="function"?new Uint8Array(readbuffer(o)):(i=read(o,"binary"),s(typeof i=="object"),i)},x=function(o,i,c){setTimeout(()=>i(v(o)),0)},typeof scriptArgs<"u"&&scriptArgs,typeof print<"u"&&(typeof console>"u"&&(console={}),console.log=print,console.warn=console.error=typeof printErr<"u"?printErr:print)}else if(b||f){if(f?T=self.location.href:typeof document<"u"&&document.currentScript&&(T=document.currentScript.src),d&&(T=d),T.indexOf("blob:")!==0?T=T.substr(0,T.replace(/[?#].*/,"").lastIndexOf("/")+1):T="",!(typeof S=="object"||typeof importScripts=="function"))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");U=function(r){var o=new XMLHttpRequest;return o.open("GET",r,!1),o.send(null),o.responseText},f&&(v=function(r){var o=new XMLHttpRequest;return o.open("GET",r,!1),o.responseType="arraybuffer",o.send(null),new Uint8Array(o.response)}),x=function(r,o,i){var c=new XMLHttpRequest;c.open("GET",r,!0),c.responseType="arraybuffer",c.onload=function(){if(c.status==200||c.status==0&&c.response){o(c.response);return}i()},c.onerror=i,c.send(null)}}else throw new Error("environment detection error");e.print||console.log.bind(console);var _=e.printErr||console.warn.bind(console);a(e,g),g=null,e.arguments,Object.getOwnPropertyDescriptor(e,"arguments")||Object.defineProperty(e,"arguments",{configurable:!0,get:function(){t("Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),e.thisProgram,Object.getOwnPropertyDescriptor(e,"thisProgram")||Object.defineProperty(e,"thisProgram",{configurable:!0,get:function(){t("Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),e.quit,Object.getOwnPropertyDescriptor(e,"quit")||Object.defineProperty(e,"quit",{configurable:!0,get:function(){t("Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),s(typeof e.memoryInitializerPrefixURL>"u","Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),s(typeof e.pthreadMainPrefixURL>"u","Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),s(typeof e.cdInitializerPrefixURL>"u","Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),s(typeof e.filePackagePrefixURL>"u","Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),s(typeof e.read>"u","Module.read option was removed (modify read_ in JS)"),s(typeof e.readAsync>"u","Module.readAsync option was removed (modify readAsync in JS)"),s(typeof e.readBinary>"u","Module.readBinary option was removed (modify readBinary in JS)"),s(typeof e.setWindowTitle>"u","Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),s(typeof e.TOTAL_MEMORY>"u","Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),Object.getOwnPropertyDescriptor(e,"read")||Object.defineProperty(e,"read",{configurable:!0,get:function(){t("Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(e,"readAsync")||Object.defineProperty(e,"readAsync",{configurable:!0,get:function(){t("Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(e,"readBinary")||Object.defineProperty(e,"readBinary",{configurable:!0,get:function(){t("Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(e,"setWindowTitle")||Object.defineProperty(e,"setWindowTitle",{configurable:!0,get:function(){t("Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),s(!m,"shell environment detected but not enabled at build time. Add 'shell' to `-s ENVIRONMENT` to enable.");function H(r){H.shown||(H.shown={}),H.shown[r]||(H.shown[r]=1,_(r))}var k;e.wasmBinary&&(k=e.wasmBinary),Object.getOwnPropertyDescriptor(e,"wasmBinary")||Object.defineProperty(e,"wasmBinary",{configurable:!0,get:function(){t("Module.wasmBinary has been replaced with plain wasmBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),e.noExitRuntime,Object.getOwnPropertyDescriptor(e,"noExitRuntime")||Object.defineProperty(e,"noExitRuntime",{configurable:!0,get:function(){t("Module.noExitRuntime has been replaced with plain noExitRuntime (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),typeof WebAssembly!="object"&&t("no native wasm support detected");var C,Y=!1;function s(r,o){r||t("Assertion failed"+(o?": "+o:""))}var Ee=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function Fe(r,o,i){for(var c=o+i,O=o;r[O]&&!(O>=c);)++O;if(O-o>16&&r.subarray&&Ee)return Ee.decode(r.subarray(o,O));for(var M="";o>10,56320|j&1023)}}return M}function ee(r,o){return r?Fe(z,r,o):""}typeof TextDecoder<"u"&&new TextDecoder("utf-16le");function Ae(r,o){return r%o>0&&(r+=o-r%o),r}var te,z,X,re;function Oe(r){te=r,e.HEAP8=new Int8Array(r),e.HEAP16=new Int16Array(r),e.HEAP32=X=new Int32Array(r),e.HEAPU8=z=new Uint8Array(r),e.HEAPU16=new Uint16Array(r),e.HEAPU32=re=new Uint32Array(r),e.HEAPF32=new Float32Array(r),e.HEAPF64=new Float64Array(r)}var oe=5242880;e.TOTAL_STACK&&s(oe===e.TOTAL_STACK,"the stack size can no longer be determined at runtime");var ne=e.INITIAL_MEMORY||16777216;Object.getOwnPropertyDescriptor(e,"INITIAL_MEMORY")||Object.defineProperty(e,"INITIAL_MEMORY",{configurable:!0,get:function(){t("Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),s(ne>=oe,"INITIAL_MEMORY should be larger than TOTAL_STACK, was "+ne+"! (TOTAL_STACK="+oe+")"),s(typeof Int32Array<"u"&&typeof Float64Array<"u"&&Int32Array.prototype.subarray!==void 0&&Int32Array.prototype.set!==void 0,"JS engine does not provide full typed array support"),s(!e.wasmMemory,"Use of `wasmMemory` detected. Use -s IMPORTED_MEMORY to define wasmMemory externally"),s(ne==16777216,"Detected runtime INITIAL_MEMORY setting. Use -s IMPORTED_MEMORY to define wasmMemory dynamically");var V;function ue(){var r=ce();s((r&3)==0),X[r+4>>2]=34821223,X[r+8>>2]=2310721022,X[0]=1668509029}function G(){if(!Y){var r=ce(),o=re[r+4>>2],i=re[r+8>>2];(o!=34821223||i!=2310721022)&&t("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x"+i.toString(16)+" 0x"+o.toString(16)),X[0]!==1668509029&&t("Runtime error: The application has corrupted its heap memory area (address zero)!")}}(function(){var r=new Int16Array(1),o=new Int8Array(r.buffer);if(r[0]=25459,o[0]!==115||o[1]!==99)throw"Runtime error: expected the system to be little-endian! (Run with -s SUPPORT_BIG_ENDIAN=1 to bypass)"})();var Te=[],_e=[],ge=[],ie=!1,Ie=!1;function Ue(){if(e.preRun)for(typeof e.preRun=="function"&&(e.preRun=[e.preRun]);e.preRun.length;)Ne(e.preRun.shift());ae(Te)}function ve(){G(),s(!ie),ie=!0,ae(_e)}function je(){if(G(),e.postRun)for(typeof e.postRun=="function"&&(e.postRun=[e.postRun]);e.postRun.length;)He(e.postRun.shift());ae(ge)}function Ne(r){Te.unshift(r)}function xe(r){_e.unshift(r)}function He(r){ge.unshift(r)}s(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),s(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),s(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),s(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var F=0,A=null,Q=null,L={};function ke(r){F++,e.monitorRunDependencies&&e.monitorRunDependencies(F),r?(s(!L[r]),L[r]=1,A===null&&typeof setInterval<"u"&&(A=setInterval(function(){if(Y){clearInterval(A),A=null;return}var o=!1;for(var i in L)o||(o=!0,_("still waiting on run dependencies:")),_("dependency: "+i);o&&_("(end of list)")},1e4))):_("warning: run dependency added without ID")}function Ce(r){if(F--,e.monitorRunDependencies&&e.monitorRunDependencies(F),r?(s(L[r]),delete L[r]):_("warning: run dependency removed without ID"),F==0&&(A!==null&&(clearInterval(A),A=null),Q)){var o=Q;Q=null,o()}}e.preloadedImages={},e.preloadedAudios={};function t(r){e.onAbort&&e.onAbort(r),r="Aborted("+r+")",_(r),Y=!0;var o=new WebAssembly.RuntimeError(r);throw u(o),o}var h={error:function(){t("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1")},init:function(){h.error()},createDataFile:function(){h.error()},createPreloadedFile:function(){h.error()},createLazyFile:function(){h.error()},open:function(){h.error()},mkdev:function(){h.error()},registerDevice:function(){h.error()},analyzePath:function(){h.error()},loadFilesFromDB:function(){h.error()},ErrnoError:function(){h.error()}};e.FS_createDataFile=h.createDataFile,e.FS_createPreloadedFile=h.createPreloadedFile;var Xe="data:application/octet-stream;base64,";function De(r){return r.startsWith(Xe)}function se(r){return r.startsWith("file://")}function D(r,o){return function(){var i=r,c=o;return o||(c=e.asm),s(ie,"native function `"+i+"` called before runtime initialization"),s(!Ie,"native function `"+i+"` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),c[r]||s(c[r],"exported native function `"+i+"` not found"),c[r].apply(null,arguments)}}var E;e.locateFile?(E="rnnoise.wasm",De(E)||(E=B(E))):E=new URL("rnnoise.wasm",import.meta.url).toString();function ye(r){try{if(r==E&&k)return new Uint8Array(k);if(v)return v(r);throw"both async and sync fetching of the wasm failed"}catch(o){t(o)}}function Qe(){if(!k&&(b||f)){if(typeof fetch=="function"&&!se(E))return fetch(E,{credentials:"same-origin"}).then(function(r){if(!r.ok)throw"failed to load wasm binary file at '"+E+"'";return r.arrayBuffer()}).catch(function(){return ye(E)});if(x)return new Promise(function(r,o){x(E,function(i){r(new Uint8Array(i))},o)})}return Promise.resolve().then(function(){return ye(E)})}function Le(){var r={env:he,wasi_snapshot_preview1:he};function o(w,P){var j=w.exports;e.asm=j,C=e.asm.memory,s(C,"memory not found in wasm exports"),Oe(C.buffer),V=e.asm.__indirect_function_table,s(V,"table not found in wasm exports"),xe(e.asm.__wasm_call_ctors),Ce("wasm-instantiate")}ke("wasm-instantiate");var i=e;function c(w){s(e===i,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),i=null,o(w.instance)}function O(w){return Qe().then(function(P){return WebAssembly.instantiate(P,r)}).then(function(P){return P}).then(w,function(P){_("failed to asynchronously prepare wasm: "+P),se(E)&&_("warning: Loading from a file URI ("+E+") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"),t(P)})}function M(){return!k&&typeof WebAssembly.instantiateStreaming=="function"&&!De(E)&&!se(E)&&typeof fetch=="function"?fetch(E,{credentials:"same-origin"}).then(function(w){var P=WebAssembly.instantiateStreaming(w,r);return P.then(c,function(j){return _("wasm streaming compile failed: "+j),_("falling back to ArrayBuffer instantiation"),O(c)})}):O(c)}if(e.instantiateWasm)try{var l=e.instantiateWasm(r,o);return l}catch(w){return _("Module.instantiateWasm callback failed with error: "+w),!1}return M().catch(u),{}}function ae(r){for(;r.length>0;){var o=r.shift();if(typeof o=="function"){o(e);continue}var i=o.func;typeof i=="number"?o.arg===void 0?we(i)():we(i)(o.arg):i(o.arg===void 0?null:o.arg)}}var K=[];function we(r){var o=K[r];return o||(r>=K.length&&(K.length=r+1),K[r]=o=V.get(r)),s(V.get(r)==o,"JavaScript-side Wasm function table mirror is out of date!"),o}function Be(r,o,i,c){t("Assertion failed: "+ee(r)+", at: "+[o?ee(o):"unknown filename",i,c?ee(c):"unknown function"])}function We(r,o,i){z.copyWithin(r,o,o+i)}function Ye(r){try{return C.grow(r-te.byteLength+65535>>>16),Oe(C.buffer),1}catch(o){_("emscripten_realloc_buffer: Attempted to grow heap from "+te.byteLength+" bytes to "+r+" bytes, but got error: "+o)}}function ze(r){var o=z.length;r=r>>>0,s(r>o);var i=2147483648;if(r>i)return _("Cannot enlarge memory, asked to go up to "+r+" bytes, but the limit is "+i+" bytes!"),!1;for(var c=1;c<=4;c*=2){var O=o*(1+.2/c);O=Math.min(O,r+100663296);var M=Math.min(i,Ae(Math.max(r,O),65536)),l=Ye(M);if(l)return!0}return _("Failed to grow the heap from "+o+" bytes to "+M+" bytes, not enough memory!"),!1}var he={__assert_fail:Be,emscripten_memcpy_big:We,emscripten_resize_heap:ze};Le(),e.___wasm_call_ctors=D("__wasm_call_ctors"),e._rnnoise_get_frame_size=D("rnnoise_get_frame_size"),e._rnnoise_create=D("rnnoise_create"),e._rnnoise_destroy=D("rnnoise_destroy"),e._rnnoise_process_frame=D("rnnoise_process_frame"),e._rnnoise_model_free=D("rnnoise_model_free"),e._rnnoise_model_from_string=D("rnnoise_model_from_string"),e.___errno_location=D("__errno_location"),e._fflush=D("fflush");var Me=e._emscripten_stack_init=function(){return(Me=e._emscripten_stack_init=e.asm.emscripten_stack_init).apply(null,arguments)};e._emscripten_stack_get_free=function(){return(e._emscripten_stack_get_free=e.asm.emscripten_stack_get_free).apply(null,arguments)};var ce=e._emscripten_stack_get_end=function(){return(ce=e._emscripten_stack_get_end=e.asm.emscripten_stack_get_end).apply(null,arguments)};e.stackSave=D("stackSave"),e.stackRestore=D("stackRestore"),e.stackAlloc=D("stackAlloc"),e._malloc=D("malloc"),e._free=D("free"),Object.getOwnPropertyDescriptor(e,"intArrayFromString")||(e.intArrayFromString=function(){t("'intArrayFromString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"intArrayToString")||(e.intArrayToString=function(){t("'intArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"ccall")||(e.ccall=function(){t("'ccall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"cwrap")||(e.cwrap=function(){t("'cwrap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"setValue")||(e.setValue=function(){t("'setValue' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"getValue")||(e.getValue=function(){t("'getValue' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"allocate")||(e.allocate=function(){t("'allocate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"UTF8ArrayToString")||(e.UTF8ArrayToString=function(){t("'UTF8ArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"UTF8ToString")||(e.UTF8ToString=function(){t("'UTF8ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"stringToUTF8Array")||(e.stringToUTF8Array=function(){t("'stringToUTF8Array' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"stringToUTF8")||(e.stringToUTF8=function(){t("'stringToUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"lengthBytesUTF8")||(e.lengthBytesUTF8=function(){t("'lengthBytesUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"stackTrace")||(e.stackTrace=function(){t("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"addOnPreRun")||(e.addOnPreRun=function(){t("'addOnPreRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"addOnInit")||(e.addOnInit=function(){t("'addOnInit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"addOnPreMain")||(e.addOnPreMain=function(){t("'addOnPreMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"addOnExit")||(e.addOnExit=function(){t("'addOnExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"addOnPostRun")||(e.addOnPostRun=function(){t("'addOnPostRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"writeStringToMemory")||(e.writeStringToMemory=function(){t("'writeStringToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"writeArrayToMemory")||(e.writeArrayToMemory=function(){t("'writeArrayToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"writeAsciiToMemory")||(e.writeAsciiToMemory=function(){t("'writeAsciiToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"addRunDependency")||(e.addRunDependency=function(){t("'addRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(e,"removeRunDependency")||(e.removeRunDependency=function(){t("'removeRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(e,"FS_createFolder")||(e.FS_createFolder=function(){t("'FS_createFolder' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"FS_createPath")||(e.FS_createPath=function(){t("'FS_createPath' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(e,"FS_createDataFile")||(e.FS_createDataFile=function(){t("'FS_createDataFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(e,"FS_createPreloadedFile")||(e.FS_createPreloadedFile=function(){t("'FS_createPreloadedFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(e,"FS_createLazyFile")||(e.FS_createLazyFile=function(){t("'FS_createLazyFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(e,"FS_createLink")||(e.FS_createLink=function(){t("'FS_createLink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"FS_createDevice")||(e.FS_createDevice=function(){t("'FS_createDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(e,"FS_unlink")||(e.FS_unlink=function(){t("'FS_unlink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(e,"getLEB")||(e.getLEB=function(){t("'getLEB' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"getFunctionTables")||(e.getFunctionTables=function(){t("'getFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"alignFunctionTables")||(e.alignFunctionTables=function(){t("'alignFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerFunctions")||(e.registerFunctions=function(){t("'registerFunctions' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"addFunction")||(e.addFunction=function(){t("'addFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"removeFunction")||(e.removeFunction=function(){t("'removeFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"getFuncWrapper")||(e.getFuncWrapper=function(){t("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"prettyPrint")||(e.prettyPrint=function(){t("'prettyPrint' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"dynCall")||(e.dynCall=function(){t("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"getCompilerSetting")||(e.getCompilerSetting=function(){t("'getCompilerSetting' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"print")||(e.print=function(){t("'print' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"printErr")||(e.printErr=function(){t("'printErr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"getTempRet0")||(e.getTempRet0=function(){t("'getTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"setTempRet0")||(e.setTempRet0=function(){t("'setTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"callMain")||(e.callMain=function(){t("'callMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"abort")||(e.abort=function(){t("'abort' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"keepRuntimeAlive")||(e.keepRuntimeAlive=function(){t("'keepRuntimeAlive' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"zeroMemory")||(e.zeroMemory=function(){t("'zeroMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"stringToNewUTF8")||(e.stringToNewUTF8=function(){t("'stringToNewUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"setFileTime")||(e.setFileTime=function(){t("'setFileTime' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"emscripten_realloc_buffer")||(e.emscripten_realloc_buffer=function(){t("'emscripten_realloc_buffer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"ENV")||(e.ENV=function(){t("'ENV' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"withStackSave")||(e.withStackSave=function(){t("'withStackSave' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"ERRNO_CODES")||(e.ERRNO_CODES=function(){t("'ERRNO_CODES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"ERRNO_MESSAGES")||(e.ERRNO_MESSAGES=function(){t("'ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"setErrNo")||(e.setErrNo=function(){t("'setErrNo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"inetPton4")||(e.inetPton4=function(){t("'inetPton4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"inetNtop4")||(e.inetNtop4=function(){t("'inetNtop4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"inetPton6")||(e.inetPton6=function(){t("'inetPton6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"inetNtop6")||(e.inetNtop6=function(){t("'inetNtop6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"readSockaddr")||(e.readSockaddr=function(){t("'readSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"writeSockaddr")||(e.writeSockaddr=function(){t("'writeSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"DNS")||(e.DNS=function(){t("'DNS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"getHostByName")||(e.getHostByName=function(){t("'getHostByName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"GAI_ERRNO_MESSAGES")||(e.GAI_ERRNO_MESSAGES=function(){t("'GAI_ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"Protocols")||(e.Protocols=function(){t("'Protocols' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"Sockets")||(e.Sockets=function(){t("'Sockets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"getRandomDevice")||(e.getRandomDevice=function(){t("'getRandomDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"traverseStack")||(e.traverseStack=function(){t("'traverseStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"convertFrameToPC")||(e.convertFrameToPC=function(){t("'convertFrameToPC' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"UNWIND_CACHE")||(e.UNWIND_CACHE=function(){t("'UNWIND_CACHE' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"saveInUnwindCache")||(e.saveInUnwindCache=function(){t("'saveInUnwindCache' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"convertPCtoSourceLocation")||(e.convertPCtoSourceLocation=function(){t("'convertPCtoSourceLocation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"readAsmConstArgsArray")||(e.readAsmConstArgsArray=function(){t("'readAsmConstArgsArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"readAsmConstArgs")||(e.readAsmConstArgs=function(){t("'readAsmConstArgs' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"mainThreadEM_ASM")||(e.mainThreadEM_ASM=function(){t("'mainThreadEM_ASM' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"jstoi_q")||(e.jstoi_q=function(){t("'jstoi_q' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"jstoi_s")||(e.jstoi_s=function(){t("'jstoi_s' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"getExecutableName")||(e.getExecutableName=function(){t("'getExecutableName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"listenOnce")||(e.listenOnce=function(){t("'listenOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"autoResumeAudioContext")||(e.autoResumeAudioContext=function(){t("'autoResumeAudioContext' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"dynCallLegacy")||(e.dynCallLegacy=function(){t("'dynCallLegacy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"getDynCaller")||(e.getDynCaller=function(){t("'getDynCaller' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"dynCall")||(e.dynCall=function(){t("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"callRuntimeCallbacks")||(e.callRuntimeCallbacks=function(){t("'callRuntimeCallbacks' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"wasmTableMirror")||(e.wasmTableMirror=function(){t("'wasmTableMirror' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"setWasmTableEntry")||(e.setWasmTableEntry=function(){t("'setWasmTableEntry' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"getWasmTableEntry")||(e.getWasmTableEntry=function(){t("'getWasmTableEntry' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"handleException")||(e.handleException=function(){t("'handleException' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"runtimeKeepalivePush")||(e.runtimeKeepalivePush=function(){t("'runtimeKeepalivePush' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"runtimeKeepalivePop")||(e.runtimeKeepalivePop=function(){t("'runtimeKeepalivePop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"callUserCallback")||(e.callUserCallback=function(){t("'callUserCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"maybeExit")||(e.maybeExit=function(){t("'maybeExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"safeSetTimeout")||(e.safeSetTimeout=function(){t("'safeSetTimeout' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"asmjsMangle")||(e.asmjsMangle=function(){t("'asmjsMangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"asyncLoad")||(e.asyncLoad=function(){t("'asyncLoad' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"alignMemory")||(e.alignMemory=function(){t("'alignMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"mmapAlloc")||(e.mmapAlloc=function(){t("'mmapAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"reallyNegative")||(e.reallyNegative=function(){t("'reallyNegative' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"unSign")||(e.unSign=function(){t("'unSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"reSign")||(e.reSign=function(){t("'reSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"formatString")||(e.formatString=function(){t("'formatString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"PATH")||(e.PATH=function(){t("'PATH' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"PATH_FS")||(e.PATH_FS=function(){t("'PATH_FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"SYSCALLS")||(e.SYSCALLS=function(){t("'SYSCALLS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"syscallMmap2")||(e.syscallMmap2=function(){t("'syscallMmap2' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"syscallMunmap")||(e.syscallMunmap=function(){t("'syscallMunmap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"getSocketFromFD")||(e.getSocketFromFD=function(){t("'getSocketFromFD' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"getSocketAddress")||(e.getSocketAddress=function(){t("'getSocketAddress' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"JSEvents")||(e.JSEvents=function(){t("'JSEvents' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerKeyEventCallback")||(e.registerKeyEventCallback=function(){t("'registerKeyEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"specialHTMLTargets")||(e.specialHTMLTargets=function(){t("'specialHTMLTargets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"maybeCStringToJsString")||(e.maybeCStringToJsString=function(){t("'maybeCStringToJsString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"findEventTarget")||(e.findEventTarget=function(){t("'findEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"findCanvasEventTarget")||(e.findCanvasEventTarget=function(){t("'findCanvasEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"getBoundingClientRect")||(e.getBoundingClientRect=function(){t("'getBoundingClientRect' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"fillMouseEventData")||(e.fillMouseEventData=function(){t("'fillMouseEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerMouseEventCallback")||(e.registerMouseEventCallback=function(){t("'registerMouseEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerWheelEventCallback")||(e.registerWheelEventCallback=function(){t("'registerWheelEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerUiEventCallback")||(e.registerUiEventCallback=function(){t("'registerUiEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerFocusEventCallback")||(e.registerFocusEventCallback=function(){t("'registerFocusEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"fillDeviceOrientationEventData")||(e.fillDeviceOrientationEventData=function(){t("'fillDeviceOrientationEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerDeviceOrientationEventCallback")||(e.registerDeviceOrientationEventCallback=function(){t("'registerDeviceOrientationEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"fillDeviceMotionEventData")||(e.fillDeviceMotionEventData=function(){t("'fillDeviceMotionEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerDeviceMotionEventCallback")||(e.registerDeviceMotionEventCallback=function(){t("'registerDeviceMotionEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"screenOrientation")||(e.screenOrientation=function(){t("'screenOrientation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"fillOrientationChangeEventData")||(e.fillOrientationChangeEventData=function(){t("'fillOrientationChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerOrientationChangeEventCallback")||(e.registerOrientationChangeEventCallback=function(){t("'registerOrientationChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"fillFullscreenChangeEventData")||(e.fillFullscreenChangeEventData=function(){t("'fillFullscreenChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerFullscreenChangeEventCallback")||(e.registerFullscreenChangeEventCallback=function(){t("'registerFullscreenChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerRestoreOldStyle")||(e.registerRestoreOldStyle=function(){t("'registerRestoreOldStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"hideEverythingExceptGivenElement")||(e.hideEverythingExceptGivenElement=function(){t("'hideEverythingExceptGivenElement' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"restoreHiddenElements")||(e.restoreHiddenElements=function(){t("'restoreHiddenElements' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"setLetterbox")||(e.setLetterbox=function(){t("'setLetterbox' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"currentFullscreenStrategy")||(e.currentFullscreenStrategy=function(){t("'currentFullscreenStrategy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"restoreOldWindowedStyle")||(e.restoreOldWindowedStyle=function(){t("'restoreOldWindowedStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"softFullscreenResizeWebGLRenderTarget")||(e.softFullscreenResizeWebGLRenderTarget=function(){t("'softFullscreenResizeWebGLRenderTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"doRequestFullscreen")||(e.doRequestFullscreen=function(){t("'doRequestFullscreen' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"fillPointerlockChangeEventData")||(e.fillPointerlockChangeEventData=function(){t("'fillPointerlockChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerPointerlockChangeEventCallback")||(e.registerPointerlockChangeEventCallback=function(){t("'registerPointerlockChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerPointerlockErrorEventCallback")||(e.registerPointerlockErrorEventCallback=function(){t("'registerPointerlockErrorEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"requestPointerLock")||(e.requestPointerLock=function(){t("'requestPointerLock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"fillVisibilityChangeEventData")||(e.fillVisibilityChangeEventData=function(){t("'fillVisibilityChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerVisibilityChangeEventCallback")||(e.registerVisibilityChangeEventCallback=function(){t("'registerVisibilityChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerTouchEventCallback")||(e.registerTouchEventCallback=function(){t("'registerTouchEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"fillGamepadEventData")||(e.fillGamepadEventData=function(){t("'fillGamepadEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerGamepadEventCallback")||(e.registerGamepadEventCallback=function(){t("'registerGamepadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerBeforeUnloadEventCallback")||(e.registerBeforeUnloadEventCallback=function(){t("'registerBeforeUnloadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"fillBatteryEventData")||(e.fillBatteryEventData=function(){t("'fillBatteryEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"battery")||(e.battery=function(){t("'battery' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"registerBatteryEventCallback")||(e.registerBatteryEventCallback=function(){t("'registerBatteryEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"setCanvasElementSize")||(e.setCanvasElementSize=function(){t("'setCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"getCanvasElementSize")||(e.getCanvasElementSize=function(){t("'getCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"demangle")||(e.demangle=function(){t("'demangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"demangleAll")||(e.demangleAll=function(){t("'demangleAll' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"jsStackTrace")||(e.jsStackTrace=function(){t("'jsStackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"stackTrace")||(e.stackTrace=function(){t("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"getEnvStrings")||(e.getEnvStrings=function(){t("'getEnvStrings' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"checkWasiClock")||(e.checkWasiClock=function(){t("'checkWasiClock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"flush_NO_FILESYSTEM")||(e.flush_NO_FILESYSTEM=function(){t("'flush_NO_FILESYSTEM' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"writeI53ToI64")||(e.writeI53ToI64=function(){t("'writeI53ToI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"writeI53ToI64Clamped")||(e.writeI53ToI64Clamped=function(){t("'writeI53ToI64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"writeI53ToI64Signaling")||(e.writeI53ToI64Signaling=function(){t("'writeI53ToI64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"writeI53ToU64Clamped")||(e.writeI53ToU64Clamped=function(){t("'writeI53ToU64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"writeI53ToU64Signaling")||(e.writeI53ToU64Signaling=function(){t("'writeI53ToU64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"readI53FromI64")||(e.readI53FromI64=function(){t("'readI53FromI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"readI53FromU64")||(e.readI53FromU64=function(){t("'readI53FromU64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"convertI32PairToI53")||(e.convertI32PairToI53=function(){t("'convertI32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"convertU32PairToI53")||(e.convertU32PairToI53=function(){t("'convertU32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"setImmediateWrapped")||(e.setImmediateWrapped=function(){t("'setImmediateWrapped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"clearImmediateWrapped")||(e.clearImmediateWrapped=function(){t("'clearImmediateWrapped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"polyfillSetImmediate")||(e.polyfillSetImmediate=function(){t("'polyfillSetImmediate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"Browser")||(e.Browser=function(){t("'Browser' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"funcWrappers")||(e.funcWrappers=function(){t("'funcWrappers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"getFuncWrapper")||(e.getFuncWrapper=function(){t("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"setMainLoop")||(e.setMainLoop=function(){t("'setMainLoop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"wget")||(e.wget=function(){t("'wget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"FS")||(e.FS=function(){t("'FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"MEMFS")||(e.MEMFS=function(){t("'MEMFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"TTY")||(e.TTY=function(){t("'TTY' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"PIPEFS")||(e.PIPEFS=function(){t("'PIPEFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"SOCKFS")||(e.SOCKFS=function(){t("'SOCKFS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"_setNetworkCallback")||(e._setNetworkCallback=function(){t("'_setNetworkCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"warnOnce")||(e.warnOnce=function(){t("'warnOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"stackSave")||(e.stackSave=function(){t("'stackSave' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"stackRestore")||(e.stackRestore=function(){t("'stackRestore' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"stackAlloc")||(e.stackAlloc=function(){t("'stackAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"AsciiToString")||(e.AsciiToString=function(){t("'AsciiToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"stringToAscii")||(e.stringToAscii=function(){t("'stringToAscii' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"UTF16ToString")||(e.UTF16ToString=function(){t("'UTF16ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"stringToUTF16")||(e.stringToUTF16=function(){t("'stringToUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"lengthBytesUTF16")||(e.lengthBytesUTF16=function(){t("'lengthBytesUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"UTF32ToString")||(e.UTF32ToString=function(){t("'UTF32ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"stringToUTF32")||(e.stringToUTF32=function(){t("'stringToUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"lengthBytesUTF32")||(e.lengthBytesUTF32=function(){t("'lengthBytesUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"allocateUTF8")||(e.allocateUTF8=function(){t("'allocateUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(e,"allocateUTF8OnStack")||(e.allocateUTF8OnStack=function(){t("'allocateUTF8OnStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}),e.writeStackCookie=ue,e.checkStackCookie=G,Object.getOwnPropertyDescriptor(e,"ALLOC_NORMAL")||Object.defineProperty(e,"ALLOC_NORMAL",{configurable:!0,get:function(){t("'ALLOC_NORMAL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(e,"ALLOC_STACK")||Object.defineProperty(e,"ALLOC_STACK",{configurable:!0,get:function(){t("'ALLOC_STACK' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)")}});var Z;function Ve(r){this.name="ExitStatus",this.message="Program terminated with exit("+r+")",this.status=r}Q=function r(){Z||de(),Z||(Q=r)};function Ge(){Me(),ue()}function de(r){if(F>0||(Ge(),Ue(),F>0))return;function o(){Z||(Z=!0,e.calledRun=!0,!Y&&(ve(),p(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),s(!e._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),je()))}e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1),o()},1)):o(),G()}if(e.run=de,e.preInit)for(typeof e.preInit=="function"&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();return de(),e.ready}})(),I=class{constructor(n){R(this,"rnnoiseModule");R(this,"frameSize");this.rnnoiseModule=n,this.frameSize=n._rnnoise_get_frame_size()}static async load(n={}){let e=await Je().then(a=>Pe({locateFile:(p,u)=>(n.assetsPath!==void 0&&(u=n.assetsPath+"/"),n.wasmFileName!==void 0?(p=n.wasmFileName,console.debug("Loads rnnoise-wasm: ",u+p)):a?(p="rnnoise_simd.wasm",console.debug("Loads rnnoise-wasm (SIMD ver): ",u+p)):console.debug("Loads rnnoise-wasm (non SIMD ver): ",u+p),u+p)}));return Promise.resolve(new I(e))}static async loadBinary(n){let e=await Pe({locateFile:a=>a,wasmBinary:n});return new I(e)}createDenoiseState(n){return new pe(this.rnnoiseModule,n)}createModel(n){return new le(this.rnnoiseModule,n)}},q=4,pe=class{constructor(n,e){R(this,"rnnoiseModule");R(this,"state");R(this,"pcmInputBuf");R(this,"pcmOutputBuf");R(this,"frameSize");R(this,"model");this.rnnoiseModule=n,this.model=e,this.frameSize=this.rnnoiseModule._rnnoise_get_frame_size();let a;e!==void 0?a=this.rnnoiseModule._rnnoise_create(e.model):a=this.rnnoiseModule._rnnoise_create();let p=this.rnnoiseModule._malloc(this.frameSize*q),u=this.rnnoiseModule._malloc(this.frameSize*q);if(!a||!p||!u)throw this.destroy(),Error("Failed to allocate DenoiseState or PCM buffers.");this.state=a,this.pcmInputBuf=p,this.pcmOutputBuf=u}processFrame(n){if(this.rnnoiseModule===void 0)throw Error("This denoise state has already been destroyed.");if(n.length!=this.frameSize)throw Error(`Expected frame size ${this.frameSize}, but got ${n.length}`);let e=this.pcmInputBuf/q,a=this.pcmOutputBuf/q;this.rnnoiseModule.HEAPF32.set(n,e);let p=this.rnnoiseModule._rnnoise_process_frame(this.state,this.pcmOutputBuf,this.pcmInputBuf);return n.set(this.rnnoiseModule.HEAPF32.subarray(a,a+this.frameSize)),p}destroy(){this.rnnoiseModule!==void 0&&(this.rnnoiseModule._rnnoise_destroy(this.state),this.rnnoiseModule._free(this.pcmInputBuf),this.rnnoiseModule._free(this.pcmOutputBuf),this.rnnoiseModule=void 0)}},le=class{constructor(n,e){R(this,"rnnoiseModule");R(this,"model");this.rnnoiseModule=n;let a=new TextEncoder().encode(e+"\0"),p=n._malloc(a.length);if(n.HEAPU8.subarray(p,p+a.length).set(a),this.model=n._rnnoise_model_from_string(p),n._free(p),!this.model)throw Error("Failed to create Model from a given model string.")}free(){this.rnnoiseModule!==void 0&&(this.rnnoiseModule._rnnoise_model_free(this.model),this.rnnoiseModule=void 0)}};var Re=d=>{for(let[n,e]of d.entries())d[n]=e*32767},be=d=>{for(let[n,e]of d.entries())d[n]=e/32767};var $e=d=>{let n=d.createDenoiseState(),e=m=>{Re(m),n.processFrame(m),be(m)},a=128,p=480,u=(Math.floor(p/a)+1)*a+a,g=1920,b=new Float32Array(g),f=0,y=g-p*2;return{process:(m,T)=>{if(b.set(m,f),f=(f+a)%g,f===128||f===512||f===1024||f===1536){y=(y+p)%g;let U=b.subarray(y,y+p);e(U)}let B=(f+(g-u))%g;T.set(b.subarray(B,B+a))},destroy:()=>{n.destroy()}}},me=(d,{bufferSize:n,maxChannels:e})=>{if(d.frameSize!==480)throw new Error(`rnnoise frameSize must be 480. (was ${d.frameSize})`);if(n!==128)throw new Error(`bufferSize must be 128. (was ${n}).`);let a=Array.from({length:e},()=>$e(d));return{process:(g,b)=>{let f=Math.min(g.length,e);for(let y=0;y{for(let g of a)g.destroy()}}};var Se="@sapphi-red/web-noise-suppressor/rnnoise";var et=128,fe=class extends AudioWorkletProcessor{constructor(e){super();this.destroyed=!1;this.port.addEventListener("message",a=>{a.data==="destroy"&&this.destroy()}),(async()=>{let a=await I.loadBinary(e.processorOptions.wasmBinary);this.processor=me(a,{bufferSize:et,maxChannels:e.processorOptions.maxChannels}),this.destroyed&&this.destroy()})()}process(e,a,p){return e.length===0||!e[0]||e[0]?.length===0||!this.processor||this.processor.process(e[0],a[0]),!0}destroy(){this.destroyed=!0,this.processor?.destroy(),this.processor=void 0}};registerProcessor(Se,fe); +/*! Bundled license information: + +@shiguredo/rnnoise-wasm/dist/rnnoise.mjs: + (** + * @shiguredo/rnnoise-wasm + * SIMD-accelerated WebAssembly build of RNNoise + * @version: 2022.2.0 + * @author: Shiguredo Inc. + * @license: Apache-2.0 + **) +*/ +//# sourceMappingURL=workletProcessor.js.map \ No newline at end of file diff --git a/browser/third-party/rnnoise/rnnoise_simd.wasm b/browser/third-party/rnnoise/rnnoise_simd.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6f9fbb604e5e6ea45e46849b0dc4008a5ebcf66a GIT binary patch literal 152656 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%0A(+s8+u7Y;$KKkdl6Zo^(2EUYrLoUbpQ%zz$(# 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 h0#tti0R0s@|A&^Rqvh#nd3p;UQxV{1;-yN}~V( literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 0db7ddfa..3a10aeb3 100644 --- a/package.json +++ b/package.json @@ -36,10 +36,13 @@ "@vap/shiki": "0.10.5", "eslint-plugin-simple-header": "^1.0.2", "fflate": "^0.7.4", + "gifenc": "github:mattdesl/gifenc#64842fca317b112a8590f8fef2bf3825da8f6fe3", + "monaco-editor": "^0.43.0", "nanoid": "^4.0.2", "virtual-merge": "^1.0.1" }, "devDependencies": { + "@types/chrome": "^0.0.246", "@types/diff": "^5.0.3", "@types/lodash": "^4.14.194", "@types/node": "^18.16.3", @@ -64,7 +67,8 @@ "stylelint-config-standard": "^33.0.0", "tsx": "^3.12.7", "type-fest": "^3.9.0", - "typescript": "^5.0.4" + "typescript": "^5.0.4", + "zip-local": "^0.3.5" }, "packageManager": "pnpm@8.1.1", "pnpm": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5edbb11a..be7befab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,9 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + patchedDependencies: eslint-plugin-path-alias@1.0.0: hash: m6sma4g6bh67km3q6igf6uxaja @@ -24,6 +28,12 @@ dependencies: fflate: specifier: ^0.7.4 version: 0.7.4 + gifenc: + specifier: github:mattdesl/gifenc#64842fca317b112a8590f8fef2bf3825da8f6fe3 + version: github.com/mattdesl/gifenc/64842fca317b112a8590f8fef2bf3825da8f6fe3 + monaco-editor: + specifier: ^0.43.0 + version: 0.43.0 nanoid: specifier: ^4.0.2 version: 4.0.2 @@ -32,6 +42,9 @@ dependencies: version: 1.0.1 devDependencies: + '@types/chrome': + specifier: ^0.0.246 + version: 0.0.246 '@types/diff': specifier: ^5.0.3 version: 5.0.3 @@ -107,6 +120,9 @@ devDependencies: typescript: specifier: ^5.0.4 version: 5.0.4 + zip-local: + specifier: ^0.3.5 + version: 0.3.5 packages: @@ -520,10 +536,31 @@ packages: resolution: {integrity: sha512-gAC33DCXYwNTI/k1PxOVHmbbzakUSMbb/DHpoV6rn4pKZtPI1dduULSmAAm/y1ipgIlArnk2JcnQzw4n2tCZHw==} dev: false + /@types/chrome@0.0.246: + resolution: {integrity: sha512-MxGxEomGxsJiL9xe/7ZwVgwdn8XVKWbPvxpVQl3nWOjrS0Ce63JsfzxUc4aU3GvRcUPYsfufHmJ17BFyKxeA4g==} + dependencies: + '@types/filesystem': 0.0.33 + '@types/har-format': 1.2.13 + dev: true + /@types/diff@5.0.3: resolution: {integrity: sha512-amrLbRqTU9bXMCc6uX0sWpxsQzRIo9z6MJPkH1pkez/qOxuqSZVuryJAWoBRq94CeG8JxY+VK4Le9HtjQR5T9A==} dev: true + /@types/filesystem@0.0.33: + resolution: {integrity: sha512-2KedRPzwu2K528vFkoXnnWdsG0MtUwPjuA7pRy4vKxlxHEe8qUDZibYHXJKZZr2Cl/ELdCWYqyb/MKwsUuzBWw==} + dependencies: + '@types/filewriter': 0.0.30 + dev: true + + /@types/filewriter@0.0.30: + resolution: {integrity: sha512-lB98tui0uxc7erbj0serZfJlHKLNJHwBltPnbmO1WRpL5T325GOHRiQfr2E29V2q+S1brDO63Fpdt6vb3bES9Q==} + dev: true + + /@types/har-format@1.2.13: + resolution: {integrity: sha512-PwBsCBD3lDODn4xpje3Y1di0aDJp4Ww7aSfMRVw6ysnxD4I7Wmq2mBkSKaDtN403hqH5sp6c9xQUvFYY3+lkBg==} + dev: true + /@types/json-schema@7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true @@ -843,6 +880,10 @@ packages: engines: {node: '>=8'} dev: true + /async@1.5.2: + resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} + dev: true + /atob@2.1.2: resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} engines: {node: '>= 4.5.0'} @@ -1867,6 +1908,10 @@ packages: resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} dev: true + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true @@ -2184,6 +2229,12 @@ packages: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: false + /jszip@2.7.0: + resolution: {integrity: sha512-JIsRKRVC3gTRo2vM4Wy9WBC3TRcfnIZU8k65Phi3izkvPH975FowRYtKGT6PxevA0XnJ/yO8b0QwV0ydVyQwfw==} + dependencies: + pako: 1.0.11 + dev: true + /kind-of@3.2.2: resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} engines: {node: '>=0.10.0'} @@ -2354,6 +2405,10 @@ packages: resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} dev: true + /monaco-editor@0.43.0: + resolution: {integrity: sha512-cnoqwQi/9fml2Szamv1XbSJieGJ1Dc8tENVMD26Kcfl7xGQWp7OBKMjlwKVGYFJ3/AXJjSOGvcqK7Ry/j9BM1Q==} + dev: false + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true @@ -2511,6 +2566,10 @@ packages: engines: {node: '>=6'} dev: true + /pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: true + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -2662,6 +2721,11 @@ packages: - utf-8-validate dev: true + /q@1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + dev: true + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true @@ -3377,6 +3441,17 @@ packages: engines: {node: '>=10'} dev: true -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false + /zip-local@0.3.5: + resolution: {integrity: sha512-GRV3D5TJY+/PqyeRm5CYBs7xVrKTKzljBoEXvocZu0HJ7tPEcgpSOYa2zFIsCZWgKWMuc4U3yMFgFkERGFIB9w==} + dependencies: + async: 1.5.2 + graceful-fs: 4.2.11 + jszip: 2.7.0 + q: 1.5.1 + dev: true + + github.com/mattdesl/gifenc/64842fca317b112a8590f8fef2bf3825da8f6fe3: + resolution: {tarball: https://codeload.github.com/mattdesl/gifenc/tar.gz/64842fca317b112a8590f8fef2bf3825da8f6fe3} + name: gifenc + version: 1.0.3 + dev: false diff --git a/scripts/build/build.mjs b/scripts/build/build.mjs index ce84fed5..97e50b98 100755 --- a/scripts/build/build.mjs +++ b/scripts/build/build.mjs @@ -78,6 +78,7 @@ await Promise.all([ define: { ...defines, IS_WEB: false, + IS_EXTENSION: false, IS_DISCORD_DESKTOP: true, IS_VESKTOP: false } @@ -124,6 +125,7 @@ await Promise.all([ define: { ...defines, IS_WEB: false, + IS_EXTENSION: false, IS_DISCORD_DESKTOP: false, IS_VESKTOP: true } diff --git a/scripts/build/buildWeb.mjs b/scripts/build/buildWeb.mjs index aab82d06..8cf1ff36 100644 --- a/scripts/build/buildWeb.mjs +++ b/scripts/build/buildWeb.mjs @@ -17,12 +17,11 @@ * along with this program. If not, see . */ - import esbuild from "esbuild"; -import { zip } from "fflate"; import { readFileSync } from "fs"; -import { appendFile, mkdir, readFile, rm, writeFile } from "fs/promises"; +import { appendFile, mkdir, readdir, readFile, rm, writeFile } from "fs/promises"; import { join } from "path"; +import Zip from "zip-local"; import { BUILD_TIMESTAMP, commonOpts, globPlugins, VERSION, watch } from "./common.mjs"; @@ -42,6 +41,7 @@ const commonOptions = { target: ["esnext"], define: { IS_WEB: "true", + IS_EXTENSION: "false", IS_STANDALONE: "true", IS_DEV: JSON.stringify(watch), IS_DISCORD_DESKTOP: "false", @@ -52,19 +52,51 @@ const commonOptions = { } }; +const MonacoWorkerEntryPoints = [ + "vs/language/css/css.worker.js", + "vs/editor/editor.worker.js" +]; + await Promise.all( [ + esbuild.build({ + entryPoints: MonacoWorkerEntryPoints.map(entry => `node_modules/monaco-editor/esm/${entry}`), + bundle: true, + minify: true, + format: "iife", + outbase: "node_modules/monaco-editor/esm/", + outdir: "dist/monaco" + }), + esbuild.build({ + entryPoints: ["browser/monaco.ts"], + bundle: true, + minify: true, + format: "iife", + outfile: "dist/monaco/index.js", + loader: { + ".ttf": "file" + } + }), esbuild.build({ ...commonOptions, outfile: "dist/browser.js", footer: { js: "//# sourceURL=VencordWeb" }, }), + esbuild.build({ + ...commonOptions, + outfile: "dist/extension.js", + define: { + ...commonOptions?.define, + IS_EXTENSION: "true", + }, + footer: { js: "//# sourceURL=VencordWeb" }, + }), esbuild.build({ ...commonOptions, inject: ["browser/GMPolyfill.js", ...(commonOptions?.inject || [])], define: { - "window": "unsafeWindow", - ...(commonOptions?.define) + ...(commonOptions?.define), + window: "unsafeWindow", }, outfile: "dist/Vencord.user.js", banner: { @@ -79,12 +111,39 @@ await Promise.all( ); /** - * @type {(target: string, files: string[], shouldZip: boolean) => Promise} + * @type {(dir: string) => Promise} */ -async function buildPluginZip(target, files, shouldZip) { +async function globDir(dir) { + const files = []; + + for (const child of await readdir(dir, { withFileTypes: true })) { + const p = join(dir, child.name); + if (child.isDirectory()) + files.push(...await globDir(p)); + else + files.push(p); + } + + return files; +} + +/** + * @type {(dir: string, basePath?: string) => Promise>} + */ +async function loadDir(dir, basePath = "") { + const files = await globDir(dir); + return Object.fromEntries(await Promise.all(files.map(async f => [f.slice(basePath.length), await readFile(f)]))); +} + +/** + * @type {(target: string, files: string[]) => Promise} + */ +async function buildExtension(target, files) { const entries = { - "dist/Vencord.js": await readFile("dist/browser.js"), - "dist/Vencord.css": await readFile("dist/browser.css"), + "dist/Vencord.js": await readFile("dist/extension.js"), + "dist/Vencord.css": await readFile("dist/extension.css"), + ...await loadDir("dist/monaco"), + ...await loadDir("browser/third-party", "browser/"), ...Object.fromEntries(await Promise.all(files.map(async f => { let content = await readFile(join("browser", f)); if (f.startsWith("manifest")) { @@ -100,31 +159,15 @@ async function buildPluginZip(target, files, shouldZip) { }))), }; - if (shouldZip) { - return new Promise((resolve, reject) => { - zip(entries, {}, (err, data) => { - if (err) { - reject(err); - } else { - const out = join("dist", target); - writeFile(out, data).then(() => { - console.info("Extension written to " + out); - resolve(); - }).catch(reject); - } - }); - }); - } else { - await rm(target, { recursive: true, force: true }); - await Promise.all(Object.entries(entries).map(async ([file, content]) => { - const dest = join("dist", target, file); - const parentDirectory = join(dest, ".."); - await mkdir(parentDirectory, { recursive: true }); - await writeFile(dest, content); - })); + await rm(target, { recursive: true, force: true }); + await Promise.all(Object.entries(entries).map(async ([file, content]) => { + const dest = join("dist", target, file); + const parentDirectory = join(dest, ".."); + await mkdir(parentDirectory, { recursive: true }); + await writeFile(dest, content); + })); - console.info("Unpacked Extension written to dist/" + target); - } + console.info("Unpacked Extension written to dist/" + target); } const appendCssRuntime = readFile("dist/Vencord.user.css", "utf-8").then(content => { @@ -142,8 +185,9 @@ const appendCssRuntime = readFile("dist/Vencord.user.css", "utf-8").then(content await Promise.all([ appendCssRuntime, - buildPluginZip("extension.zip", ["modifyResponseHeaders.json", "content.js", "manifest.json", "icon.png"], true), - buildPluginZip("chromium-unpacked", ["modifyResponseHeaders.json", "content.js", "manifest.json", "icon.png"], false), - buildPluginZip("firefox-unpacked", ["background.js", "content.js", "manifestv2.json", "icon.png"], false), + buildExtension("chromium-unpacked", ["modifyResponseHeaders.json", "content.js", "manifest.json", "icon.png"]), + buildExtension("firefox-unpacked", ["background.js", "content.js", "manifestv2.json", "icon.png"]), ]); +Zip.sync.zip("dist/chromium-unpacked").compress().save("dist/extension.zip"); +console.info("Packed Chromium Extension written to dist/extension.zip"); diff --git a/src/globals.d.ts b/src/globals.d.ts index daccf33d..94b5f15e 100644 --- a/src/globals.d.ts +++ b/src/globals.d.ts @@ -33,6 +33,7 @@ declare global { * replace: `${IS_WEB}?foo:bar` */ export var IS_WEB: boolean; + export var IS_EXTENSION: boolean; export var IS_DEV: boolean; export var IS_STANDALONE: boolean; export var IS_UPDATER_DISABLED: boolean; diff --git a/src/main/ipcMain.ts b/src/main/ipcMain.ts index c8e45676..61cbe7ab 100644 --- a/src/main/ipcMain.ts +++ b/src/main/ipcMain.ts @@ -27,7 +27,7 @@ import { mkdirSync, readFileSync, watch } from "fs"; import { open, readdir, readFile, writeFile } from "fs/promises"; import { join, normalize } from "path"; -import monacoHtml from "~fileContent/../components/monacoWin.html;base64"; +import monacoHtml from "~fileContent/monacoWin.html;base64"; import { getThemeInfo, stripBOM, UserThemeHeader } from "./themes"; import { ALLOWED_PROTOCOLS, QUICKCSS_PATH, SETTINGS_DIR, SETTINGS_FILE, THEMES_DIR } from "./utils/constants"; diff --git a/src/components/monacoWin.html b/src/main/monacoWin.html similarity index 100% rename from src/components/monacoWin.html rename to src/main/monacoWin.html diff --git a/src/plugins/supportHelper.tsx b/src/plugins/_core/supportHelper.tsx similarity index 99% rename from src/plugins/supportHelper.tsx rename to src/plugins/_core/supportHelper.tsx index f36cc0fd..674be8e5 100644 --- a/src/plugins/supportHelper.tsx +++ b/src/plugins/_core/supportHelper.tsx @@ -27,7 +27,7 @@ import { Alerts, Forms, UserStore } from "@webpack/common"; import gitHash from "~git-hash"; import plugins from "~plugins"; -import settings from "./_core/settings"; +import settings from "./settings"; const REMEMBER_DISMISS_KEY = "Vencord-SupportHelper-Dismiss"; diff --git a/src/plugins/fakeNitro.ts b/src/plugins/fakeNitro.ts index f56239f5..13131456 100644 --- a/src/plugins/fakeNitro.ts +++ b/src/plugins/fakeNitro.ts @@ -19,7 +19,7 @@ import { addPreEditListener, addPreSendListener, removePreEditListener, removePreSendListener } from "@api/MessageEvents"; import { definePluginSettings, Settings } from "@api/Settings"; import { Devs } from "@utils/constants"; -import { ApngBlendOp, ApngDisposeOp, getGifEncoder, importApngJs } from "@utils/dependencies"; +import { ApngBlendOp, ApngDisposeOp, importApngJs } from "@utils/dependencies"; import { getCurrentGuild } from "@utils/discord"; import { proxyLazy } from "@utils/lazy"; import { Logger } from "@utils/Logger"; @@ -27,6 +27,7 @@ import definePlugin, { OptionType } from "@utils/types"; import { findByCodeLazy, findByPropsLazy, findLazy, findStoreLazy } from "@webpack"; import { ChannelStore, EmojiStore, FluxDispatcher, Parser, PermissionStore, UserStore } from "@webpack/common"; import type { Message } from "discord-types/general"; +import { applyPalette, GIFEncoder, quantize } from "gifenc"; import type { ReactElement, ReactNode } from "react"; const DRAFT_TYPE = 0; @@ -650,15 +651,11 @@ export default definePlugin({ }, async sendAnimatedSticker(stickerLink: string, stickerId: string, channelId: string) { - const [{ parseURL }, { - GIFEncoder, - quantize, - applyPalette - }] = await Promise.all([importApngJs(), getGifEncoder()]); + const { parseURL } = importApngJs(); const { frames, width, height } = await parseURL(stickerLink); - const gif = new GIFEncoder(); + const gif = GIFEncoder(); const resolution = Settings.plugins.FakeNitro.stickerSize; const canvas = document.createElement("canvas"); diff --git a/src/plugins/invisibleChat/components/DecryptionModal.tsx b/src/plugins/invisibleChat.desktop/components/DecryptionModal.tsx similarity index 100% rename from src/plugins/invisibleChat/components/DecryptionModal.tsx rename to src/plugins/invisibleChat.desktop/components/DecryptionModal.tsx diff --git a/src/plugins/invisibleChat/components/EncryptionModal.tsx b/src/plugins/invisibleChat.desktop/components/EncryptionModal.tsx similarity index 100% rename from src/plugins/invisibleChat/components/EncryptionModal.tsx rename to src/plugins/invisibleChat.desktop/components/EncryptionModal.tsx diff --git a/src/plugins/invisibleChat/index.tsx b/src/plugins/invisibleChat.desktop/index.tsx similarity index 100% rename from src/plugins/invisibleChat/index.tsx rename to src/plugins/invisibleChat.desktop/index.tsx diff --git a/src/plugins/petpet.ts b/src/plugins/petpet.ts index 9b1c2f16..0bfd21af 100644 --- a/src/plugins/petpet.ts +++ b/src/plugins/petpet.ts @@ -18,10 +18,10 @@ import { ApplicationCommandInputType, ApplicationCommandOptionType, Argument, CommandContext, findOption, sendBotMessage } from "@api/Commands"; import { Devs } from "@utils/constants"; -import { getGifEncoder } from "@utils/dependencies"; import { makeLazy } from "@utils/lazy"; import definePlugin from "@utils/types"; import { findByCodeLazy, findByPropsLazy } from "@webpack"; +import { applyPalette, GIFEncoder, quantize } from "gifenc"; const DRAFT_TYPE = 0; const DEFAULT_DELAY = 20; @@ -124,7 +124,6 @@ export default definePlugin({ } ], execute: async (opts, cmdCtx) => { - const { GIFEncoder, quantize, applyPalette } = await getGifEncoder(); const frames = await getFrames(); const noServerPfp = findOption(opts, "no-server-pfp", false); @@ -143,7 +142,7 @@ export default definePlugin({ const delay = findOption(opts, "delay", DEFAULT_DELAY); const resolution = findOption(opts, "resolution", DEFAULT_RESOLUTION); - const gif = new GIFEncoder(); + const gif = GIFEncoder(); const canvas = document.createElement("canvas"); canvas.width = canvas.height = resolution; diff --git a/src/plugins/shikiCodeblocks/api/languages.ts b/src/plugins/shikiCodeblocks.desktop/api/languages.ts similarity index 100% rename from src/plugins/shikiCodeblocks/api/languages.ts rename to src/plugins/shikiCodeblocks.desktop/api/languages.ts diff --git a/src/plugins/shikiCodeblocks/api/shiki.ts b/src/plugins/shikiCodeblocks.desktop/api/shiki.ts similarity index 100% rename from src/plugins/shikiCodeblocks/api/shiki.ts rename to src/plugins/shikiCodeblocks.desktop/api/shiki.ts diff --git a/src/plugins/shikiCodeblocks/api/themes.ts b/src/plugins/shikiCodeblocks.desktop/api/themes.ts similarity index 100% rename from src/plugins/shikiCodeblocks/api/themes.ts rename to src/plugins/shikiCodeblocks.desktop/api/themes.ts diff --git a/src/plugins/shikiCodeblocks/components/ButtonRow.tsx b/src/plugins/shikiCodeblocks.desktop/components/ButtonRow.tsx similarity index 100% rename from src/plugins/shikiCodeblocks/components/ButtonRow.tsx rename to src/plugins/shikiCodeblocks.desktop/components/ButtonRow.tsx diff --git a/src/plugins/shikiCodeblocks/components/Code.tsx b/src/plugins/shikiCodeblocks.desktop/components/Code.tsx similarity index 100% rename from src/plugins/shikiCodeblocks/components/Code.tsx rename to src/plugins/shikiCodeblocks.desktop/components/Code.tsx diff --git a/src/plugins/shikiCodeblocks/components/CopyButton.tsx b/src/plugins/shikiCodeblocks.desktop/components/CopyButton.tsx similarity index 100% rename from src/plugins/shikiCodeblocks/components/CopyButton.tsx rename to src/plugins/shikiCodeblocks.desktop/components/CopyButton.tsx diff --git a/src/plugins/shikiCodeblocks/components/Header.tsx b/src/plugins/shikiCodeblocks.desktop/components/Header.tsx similarity index 100% rename from src/plugins/shikiCodeblocks/components/Header.tsx rename to src/plugins/shikiCodeblocks.desktop/components/Header.tsx diff --git a/src/plugins/shikiCodeblocks/components/Highlighter.tsx b/src/plugins/shikiCodeblocks.desktop/components/Highlighter.tsx similarity index 100% rename from src/plugins/shikiCodeblocks/components/Highlighter.tsx rename to src/plugins/shikiCodeblocks.desktop/components/Highlighter.tsx diff --git a/src/plugins/shikiCodeblocks/devicon.css b/src/plugins/shikiCodeblocks.desktop/devicon.css similarity index 100% rename from src/plugins/shikiCodeblocks/devicon.css rename to src/plugins/shikiCodeblocks.desktop/devicon.css diff --git a/src/plugins/shikiCodeblocks/hooks/useCopyCooldown.ts b/src/plugins/shikiCodeblocks.desktop/hooks/useCopyCooldown.ts similarity index 100% rename from src/plugins/shikiCodeblocks/hooks/useCopyCooldown.ts rename to src/plugins/shikiCodeblocks.desktop/hooks/useCopyCooldown.ts diff --git a/src/plugins/shikiCodeblocks/hooks/useShikiSettings.ts b/src/plugins/shikiCodeblocks.desktop/hooks/useShikiSettings.ts similarity index 100% rename from src/plugins/shikiCodeblocks/hooks/useShikiSettings.ts rename to src/plugins/shikiCodeblocks.desktop/hooks/useShikiSettings.ts diff --git a/src/plugins/shikiCodeblocks/hooks/useTheme.ts b/src/plugins/shikiCodeblocks.desktop/hooks/useTheme.ts similarity index 100% rename from src/plugins/shikiCodeblocks/hooks/useTheme.ts rename to src/plugins/shikiCodeblocks.desktop/hooks/useTheme.ts diff --git a/src/plugins/shikiCodeblocks/index.ts b/src/plugins/shikiCodeblocks.desktop/index.ts similarity index 100% rename from src/plugins/shikiCodeblocks/index.ts rename to src/plugins/shikiCodeblocks.desktop/index.ts diff --git a/src/plugins/shikiCodeblocks/previewExample.tsx b/src/plugins/shikiCodeblocks.desktop/previewExample.tsx similarity index 100% rename from src/plugins/shikiCodeblocks/previewExample.tsx rename to src/plugins/shikiCodeblocks.desktop/previewExample.tsx diff --git a/src/plugins/shikiCodeblocks/settings.ts b/src/plugins/shikiCodeblocks.desktop/settings.ts similarity index 100% rename from src/plugins/shikiCodeblocks/settings.ts rename to src/plugins/shikiCodeblocks.desktop/settings.ts diff --git a/src/plugins/shikiCodeblocks/shiki.css b/src/plugins/shikiCodeblocks.desktop/shiki.css similarity index 100% rename from src/plugins/shikiCodeblocks/shiki.css rename to src/plugins/shikiCodeblocks.desktop/shiki.css diff --git a/src/plugins/shikiCodeblocks/types.ts b/src/plugins/shikiCodeblocks.desktop/types.ts similarity index 100% rename from src/plugins/shikiCodeblocks/types.ts rename to src/plugins/shikiCodeblocks.desktop/types.ts diff --git a/src/plugins/shikiCodeblocks/utils/color.ts b/src/plugins/shikiCodeblocks.desktop/utils/color.ts similarity index 100% rename from src/plugins/shikiCodeblocks/utils/color.ts rename to src/plugins/shikiCodeblocks.desktop/utils/color.ts diff --git a/src/plugins/shikiCodeblocks/utils/createStyle.ts b/src/plugins/shikiCodeblocks.desktop/utils/createStyle.ts similarity index 100% rename from src/plugins/shikiCodeblocks/utils/createStyle.ts rename to src/plugins/shikiCodeblocks.desktop/utils/createStyle.ts diff --git a/src/plugins/shikiCodeblocks/utils/misc.ts b/src/plugins/shikiCodeblocks.desktop/utils/misc.ts similarity index 100% rename from src/plugins/shikiCodeblocks/utils/misc.ts rename to src/plugins/shikiCodeblocks.desktop/utils/misc.ts diff --git a/src/utils/apng-canvas.js b/src/utils/apng-canvas.js new file mode 100644 index 00000000..5149dcc0 --- /dev/null +++ b/src/utils/apng-canvas.js @@ -0,0 +1,1168 @@ +/* eslint-disable */ + +const self = module.exports; +/** + * apng-canvas v2.1.2 + * + * @copyright 2011-2019 David Mzareulyan + * @link https://github.com/davidmz/apng-canvas + * @license MIT + */ +!(function i(o, a, s) { + function u(n, t) { + if (!a[n]) { + if (!o[n]) { + var e = "function" == typeof require && require; + if (!t && e) return e(n, !0); + if (c) return c(n, !0); + throw new Error("Cannot find module '" + n + "'"); + } + var r = (a[n] = { exports: {} }); + o[n][0].call( + r.exports, + function (t) { + var e = o[n][1][t]; + return u(e || t); + }, + r, + r.exports, + i, + o, + a, + s + ); + } + return a[n].exports; + } + for ( + var c = "function" == typeof require && require, t = 0; + t < s.length; + t++ + ) + u(s[t]); + return u; +})( + { + 1: [ + function (Y, n, r) { + (function (G, q) { + var t, e; + (t = this), + (e = function () { + "use strict"; + function u(t) { + return "function" == typeof t; + } + var n = Array.isArray + ? Array.isArray + : function (t) { + return ( + "[object Array]" === + Object.prototype.toString.call(t) + ); + }, + r = 0, + e = void 0, + i = void 0, + a = function (t, e) { + (l[r] = t), + (l[r + 1] = e), + 2 === (r += 2) && (i ? i(d) : g()); + }; + var t = + "undefined" != typeof window + ? window + : void 0, + o = t || {}, + s = + o.MutationObserver || + o.WebKitMutationObserver, + c = + "undefined" == typeof self && + void 0 !== G && + "[object process]" === {}.toString.call(G), + f = + "undefined" != typeof Uint8ClampedArray && + "undefined" != typeof importScripts && + "undefined" != typeof MessageChannel; + function h() { + var t = setTimeout; + return function () { + return t(d, 1); + }; + } + var l = new Array(1e3); + function d() { + for (var t = 0; t < r; t += 2) { + (0, l[t])(l[t + 1]), + (l[t] = void 0), + (l[t + 1] = void 0); + } + r = 0; + } + var p, + v, + A, + m, + g = void 0; + function w(t, e) { + var n = this, + r = new this.constructor(b); + void 0 === r[_] && j(r); + var i = n._state; + if (i) { + var o = arguments[i - 1]; + a(function () { + return L(i, r, o, n._result); + }); + } else U(n, r, t, e); + return r; + } + function y(t) { + if ( + t && + "object" == typeof t && + t.constructor === this + ) + return t; + var e = new this(b); + return T(e, t), e; + } + g = c + ? function () { + return G.nextTick(d); + } + : s + ? ((v = 0), + (A = new s(d)), + (m = document.createTextNode("")), + A.observe(m, { characterData: !0 }), + function () { + m.data = v = ++v % 2; + }) + : f + ? (((p = new MessageChannel()).port1.onmessage = + d), + function () { + return p.port2.postMessage(0); + }) + : void 0 === t && "function" == typeof Y + ? (function () { + try { + var t = + Function("return this")().require( + "vertx" + ); + return void 0 !== + (e = + t.runOnLoop || t.runOnContext) + ? function () { + e(d); + } + : h(); + } catch (t) { + return h(); + } + })() + : h(); + var _ = Math.random().toString(36).substring(2); + function b() { } + var E = void 0, + P = 1, + x = 2; + function N(t, r, i) { + a(function (e) { + var n = !1, + t = (function (t, e, n, r) { + try { + t.call(e, n, r); + } catch (t) { + return t; + } + })( + i, + r, + function (t) { + n || + ((n = !0), + r !== t + ? T(e, t) + : O(e, t)); + }, + function (t) { + n || ((n = !0), R(e, t)); + }, + e._label + ); + !n && t && ((n = !0), R(e, t)); + }, t); + } + function C(t, e, n) { + e.constructor === t.constructor && + n === w && + e.constructor.resolve === y + ? (function (e, t) { + t._state === P + ? O(e, t._result) + : t._state === x + ? R(e, t._result) + : U( + t, + void 0, + function (t) { + return T(e, t); + }, + function (t) { + return R(e, t); + } + ); + })(t, e) + : void 0 === n + ? O(t, e) + : u(n) + ? N(t, e, n) + : O(t, e); + } + function T(e, t) { + if (e === t) + R( + e, + new TypeError( + "You cannot resolve a promise with itself" + ) + ); + else if ( + (function (t) { + var e = typeof t; + return ( + null !== t && + ("object" == e || "function" == e) + ); + })(t) + ) { + var n = void 0; + try { + n = t.then; + } catch (t) { + return void R(e, t); + } + C(e, t, n); + } else O(e, t); + } + function B(t) { + t._onerror && t._onerror(t._result), I(t); + } + function O(t, e) { + t._state === E && + ((t._result = e), + (t._state = P), + 0 !== t._subscribers.length && a(I, t)); + } + function R(t, e) { + t._state === E && + ((t._state = x), (t._result = e), a(B, t)); + } + function U(t, e, n, r) { + var i = t._subscribers, + o = i.length; + (t._onerror = null), + (i[o] = e), + (i[o + P] = n), + (i[o + x] = r), + 0 === o && t._state && a(I, t); + } + function I(t) { + var e = t._subscribers, + n = t._state; + if (0 !== e.length) { + for ( + var r = void 0, + i = void 0, + o = t._result, + a = 0; + a < e.length; + a += 3 + ) + (r = e[a]), + (i = e[a + n]), + r ? L(n, r, i, o) : i(o); + t._subscribers.length = 0; + } + } + function L(t, e, n, r) { + var i = u(n), + o = void 0, + a = void 0, + s = !0; + if (i) { + try { + o = n(r); + } catch (t) { + (s = !1), (a = t); + } + if (e === o) + return void R( + e, + new TypeError( + "A promises callback cannot return that same promise." + ) + ); + } else o = r; + e._state !== E || + (i && s + ? T(e, o) + : !1 === s + ? R(e, a) + : t === P + ? O(e, o) + : t === x && R(e, o)); + } + var D = 0; + function j(t) { + (t[_] = D++), + (t._state = void 0), + (t._result = void 0), + (t._subscribers = []); + } + var k = + ((F.prototype._enumerate = function (t) { + for ( + var e = 0; + this._state === E && e < t.length; + e++ + ) + this._eachEntry(t[e], e); + }), + (F.prototype._eachEntry = function (e, t) { + var n = this._instanceConstructor, + r = n.resolve; + if (r === y) { + var i = void 0, + o = void 0, + a = !1; + try { + i = e.then; + } catch (t) { + (a = !0), (o = t); + } + if (i === w && e._state !== E) + this._settledAt( + e._state, + t, + e._result + ); + else if ("function" != typeof i) + this._remaining--, + (this._result[t] = e); + else if (n === S) { + var s = new n(b); + a ? R(s, o) : C(s, e, i), + this._willSettleAt(s, t); + } else + this._willSettleAt( + new n(function (t) { + return t(e); + }), + t + ); + } else this._willSettleAt(r(e), t); + }), + (F.prototype._settledAt = function (t, e, n) { + var r = this.promise; + r._state === E && + (this._remaining--, + t === x + ? R(r, n) + : (this._result[e] = n)), + 0 === this._remaining && + O(r, this._result); + }), + (F.prototype._willSettleAt = function (t, e) { + var n = this; + U( + t, + void 0, + function (t) { + return n._settledAt(P, e, t); + }, + function (t) { + return n._settledAt(x, e, t); + } + ); + }), + F); + function F(t, e) { + (this._instanceConstructor = t), + (this.promise = new t(b)), + this.promise[_] || j(this.promise), + n(e) + ? ((this.length = e.length), + (this._remaining = e.length), + (this._result = new Array( + this.length + )), + 0 === this.length + ? O(this.promise, this._result) + : ((this.length = + this.length || 0), + this._enumerate(e), + 0 === this._remaining && + O( + this.promise, + this._result + ))) + : R( + this.promise, + new Error( + "Array Methods must be provided an Array" + ) + ); + } + var S = + ((M.prototype.catch = function (t) { + return this.then(null, t); + }), + (M.prototype.finally = function (e) { + var n = this.constructor; + return u(e) + ? this.then( + function (t) { + return n + .resolve(e()) + .then(function () { + return t; + }); + }, + function (t) { + return n + .resolve(e()) + .then(function () { + throw t; + }); + } + ) + : this.then(e, e); + }), + M); + function M(t) { + (this[_] = D++), + (this._result = this._state = void 0), + (this._subscribers = []), + b !== t && + ("function" != typeof t && + (function () { + throw new TypeError( + "You must pass a resolver function as the first argument to the promise constructor" + ); + })(), + this instanceof M + ? (function (e, t) { + try { + t( + function (t) { + T(e, t); + }, + function (t) { + R(e, t); + } + ); + } catch (t) { + R(e, t); + } + })(this, t) + : (function () { + throw new TypeError( + "Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function." + ); + })()); + } + return ( + (S.prototype.then = w), + (S.all = function (t) { + return new k(this, t).promise; + }), + (S.race = function (i) { + var o = this; + return n(i) + ? new o(function (t, e) { + for ( + var n = i.length, r = 0; + r < n; + r++ + ) + o.resolve(i[r]).then(t, e); + }) + : new o(function (t, e) { + return e( + new TypeError( + "You must pass an array to race." + ) + ); + }); + }), + (S.resolve = y), + (S.reject = function (t) { + var e = new this(b); + return R(e, t), e; + }), + (S._setScheduler = function (t) { + i = t; + }), + (S._setAsap = function (t) { + a = t; + }), + (S._asap = a), + (S.polyfill = function () { + var t = void 0; + if (void 0 !== q) t = q; + else if ("undefined" != typeof self) + t = self; + else + try { + t = Function("return this")(); + } catch (t) { + throw new Error( + "polyfill failed because global object is unavailable in this environment" + ); + } + var e = t.Promise; + if (e) { + var n = null; + try { + n = Object.prototype.toString.call( + e.resolve() + ); + } catch (t) { } + if ("[object Promise]" === n && !e.cast) + return; + } + t.Promise = S; + }), + (S.Promise = S) + ); + }), + "object" == typeof r && void 0 !== n + ? (n.exports = e()) + : "function" == typeof define && define.amd + ? define(e) + : (t.ES6Promise = e()); + }).call( + this, + Y("VCmEsw"), + "undefined" != typeof self + ? self + : "undefined" != typeof window + ? window + : {} + ); + }, + { VCmEsw: 2 }, + ], + 2: [ + function (t, e, n) { + var r = (e.exports = {}); + function i() { } + (r.nextTick = (function () { + var t = "undefined" != typeof window && window.setImmediate, + e = + "undefined" != typeof window && + window.postMessage && + window.addEventListener; + if (t) + return function (t) { + return window.setImmediate(t); + }; + if (e) { + var n = []; + return ( + window.addEventListener( + "message", + function (t) { + var e = t.source; + (e !== window && null !== e) || + "process-tick" !== t.data || + (t.stopPropagation(), + 0 < n.length && n.shift()()); + }, + !0 + ), + function (t) { + n.push(t), + window.postMessage("process-tick", "*"); + } + ); + } + return function (t) { + setTimeout(t, 0); + }; + })()), + (r.title = "browser"), + (r.browser = !0), + (r.env = {}), + (r.argv = []), + (r.on = i), + (r.addListener = i), + (r.once = i), + (r.off = i), + (r.removeListener = i), + (r.removeAllListeners = i), + (r.emit = i), + (r.binding = function (t) { + throw new Error("process.binding is not supported"); + }), + (r.cwd = function () { + return "/"; + }), + (r.chdir = function (t) { + throw new Error("process.chdir is not supported"); + }); + }, + {}, + ], + 3: [ + function (t, e, n) { + "use strict"; + e.exports = function () { + (this.width = 0), + (this.height = 0), + (this.numPlays = 0), + (this.playTime = 0), + (this.frames = []), + (this.play = function () { + s || + u || + (this.rewind(), + (s = !0), + requestAnimationFrame(e)); + }), + (this.rewind = function () { + (o = i = 0), (a = null), (u = s = !1); + }), + (this.addContext = function (t) { + if (0 < c.length) { + var e = c[0].getImageData( + 0, + 0, + this.width, + this.height + ); + t.putImageData(e, 0, 0); + } + c.push(t), (t._apng_animation = this); + }), + (this.removeContext = function (t) { + var e = c.indexOf(t); + -1 !== e && + (c.splice(e, 1), + 0 === c.length && this.rewind(), + "_apng_animation" in t && + delete t._apng_animation); + }), + (this.isPlayed = function () { + return s; + }), + (this.isFinished = function () { + return u; + }); + var r = this, + i = 0, + o = 0, + a = null, + s = !1, + u = !1, + c = [], + e = function (t) { + for (; s && i <= t;) n(t); + s && requestAnimationFrame(e); + }, + n = function (t) { + var e = o++ % r.frames.length, + n = r.frames[e]; + if ( + 0 == r.numPlays || + o / r.frames.length <= r.numPlays + ) { + for ( + 0 == e && + (c.forEach(function (t) { + t.clearRect( + 0, + 0, + r.width, + r.height + ); + }), + (a = null), + 2 == n.disposeOp && (n.disposeOp = 1)), + a && 1 == a.disposeOp + ? c.forEach(function (t) { + t.clearRect( + a.left, + a.top, + a.width, + a.height + ); + }) + : a && + 2 == a.disposeOp && + c.forEach(function (t) { + t.putImageData( + a.iData, + a.left, + a.top + ); + }), + (a = n).iData = null, + 2 == a.disposeOp && + (a.iData = c[0].getImageData( + n.left, + n.top, + n.width, + n.height + )), + 0 == n.blendOp && + c.forEach(function (t) { + t.clearRect( + n.left, + n.top, + n.width, + n.height + ); + }), + c.forEach(function (t) { + t.drawImage(n.img, n.left, n.top); + }), + 0 == i && (i = t); + t > i + r.playTime; + + ) + i += r.playTime; + i += n.delay; + } else u = !(s = !1); + }; + }; + }, + {}, + ], + 4: [ + function (t, e, n) { + "use strict"; + for (var a = new Uint32Array(256), r = 0; r < 256; r++) { + for (var i = r, o = 0; o < 8; o++) + i = 1 & i ? 3988292384 ^ (i >>> 1) : i >>> 1; + a[r] = i; + } + e.exports = function (t, e, n) { + for ( + var r = -1, + i = (e = e || 0), + o = e + (n = n || t.length - e); + i < o; + i++ + ) + r = (r >>> 8) ^ a[255 & (r ^ t[i])]; + return -1 ^ r; + }; + }, + {}, + ], + 5: [ + function (a, t, e) { + (function (t) { + "use strict"; + var e = a("./support-test"), + n = a("./parser"), + r = a("./loader"), + i = (t.APNG = {}); + (i.checkNativeFeatures = e.checkNativeFeatures), + (i.ifNeeded = e.ifNeeded), + (i.parseBuffer = function (t) { + return n(t); + }); + var o = {}; + (i.parseURL = function (t) { + return t in o || (o[t] = r(t).then(n)), o[t]; + }), + (i.animateContext = function (t, e) { + return i.parseURL(t).then(function (t) { + return t.addContext(e), t.play(), t; + }); + }), + (i.animateImage = function (s) { + return ( + s.setAttribute("data-is-apng", "progress"), + i.parseURL(s.src).then( + function (t) { + s.setAttribute("data-is-apng", "yes"); + var e = + document.createElement("canvas"); + (e.width = t.width), + (e.height = t.height), + Array.prototype.slice + .call(s.attributes) + .forEach(function (t) { + -1 == + [ + "alt", + "src", + "usemap", + "ismap", + "data-is-apng", + "width", + "height", + ].indexOf(t.nodeName) && + e.setAttributeNode( + t.cloneNode(!1) + ); + }), + e.setAttribute( + "data-apng-src", + s.src + ), + "" != s.alt && + e.appendChild( + document.createTextNode( + s.alt + ) + ); + var n = "", + r = "", + i = 0, + o = ""; + "" != s.style.width && + "auto" != s.style.width + ? (n = s.style.width) + : s.hasAttribute("width") && + (n = + s.getAttribute("width") + + "px"), + "" != s.style.height && + "auto" != s.style.height + ? (r = s.style.height) + : s.hasAttribute("height") && + (r = + s.getAttribute("height") + + "px"), + "" != n && + "" == r && + ((i = parseFloat(n)), + (o = n.match(/\D+$/)[0]), + (r = + Math.round( + (e.height * i) / e.width + ) + o)), + "" != r && + "" == n && + ((i = parseFloat(r)), + (o = r.match(/\D+$/)[0]), + (n = + Math.round( + (e.width * i) / e.height + ) + o)), + (e.style.width = n), + (e.style.height = r); + var a = s.parentNode; + a.insertBefore(e, s), + a.removeChild(s), + t.addContext(e.getContext("2d")), + t.play(); + }, + function () { + s.setAttribute("data-is-apng", "no"); + } + ) + ); + }), + (i.releaseCanvas = function (t) { + var e = t.getContext("2d"); + "_apng_animation" in e && + e._apng_animation.removeContext(e); + }); + }).call( + this, + "undefined" != typeof self + ? self + : "undefined" != typeof window + ? window + : {} + ); + }, + { "./loader": 6, "./parser": 7, "./support-test": 8 }, + ], + 6: [ + function (t, e, n) { + "use strict"; + var i = i || t("es6-promise").Promise; + e.exports = function (r) { + return new i(function (t, e) { + var n = new XMLHttpRequest(); + n.open("GET", r), + (n.responseType = "arraybuffer"), + (n.onload = function () { + 200 == this.status ? t(this.response) : e(this); + }), + n.send(); + }); + }; + }, + { "es6-promise": 1 }, + ], + 7: [ + function (t, e, n) { + "use strict"; + var r = r || t("es6-promise").Promise, + m = t("./animation"), + o = t("./crc32"), + g = new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10]); + e.exports = function (t) { + var A = new Uint8Array(t); + return new r(function (t, e) { + for (var n = 0; n < g.length; n++) + if (g[n] != A[n]) + return void e( + "Not a PNG file (invalid file signature)" + ); + var r = !1; + if ( + (w(A, function (t) { + return "acTL" != t || !(r = !0); + }), + r) + ) { + var a = [], + s = [], + u = null, + c = null, + f = new m(); + if ( + (w(A, function (t, e, n, r) { + switch (t) { + case "IHDR": + (u = e.subarray(n + 8, n + 8 + r)), + (f.width = y(e, n + 8)), + (f.height = y(e, n + 12)); + break; + case "acTL": + f.numPlays = y(e, n + 8 + 4); + break; + case "fcTL": + c && f.frames.push(c), + ((c = {}).width = y( + e, + n + 8 + 4 + )), + (c.height = y(e, n + 8 + 8)), + (c.left = y(e, n + 8 + 12)), + (c.top = y(e, n + 8 + 16)); + var i = _(e, n + 8 + 20), + o = _(e, n + 8 + 22); + 0 == o && (o = 100), + (c.delay = (1e3 * i) / o), + c.delay <= 10 && + (c.delay = 100), + (f.playTime += c.delay), + (c.disposeOp = b( + e, + n + 8 + 24 + )), + (c.blendOp = b(e, n + 8 + 25)), + (c.dataParts = []); + break; + case "fdAT": + c && + c.dataParts.push( + e.subarray( + n + 8 + 4, + n + 8 + r + ) + ); + break; + case "IDAT": + c && + c.dataParts.push( + e.subarray(n + 8, n + 8 + r) + ); + break; + case "IEND": + s.push(E(e, n, 12 + r)); + break; + default: + a.push(E(e, n, 12 + r)); + } + }), + c && f.frames.push(c), + 0 != f.frames.length) + ) + for ( + var i = 0, + o = new Blob(a), + h = new Blob(s), + l = 0; + l < f.frames.length; + l++ + ) { + c = f.frames[l]; + var d = []; + d.push(g), + u.set(P(c.width), 0), + u.set(P(c.height), 4), + d.push(x("IHDR", u)), + d.push(o); + for (var p = 0; p < c.dataParts.length; p++) + d.push(x("IDAT", c.dataParts[p])); + d.push(h); + var v = URL.createObjectURL( + new Blob(d, { type: "image/png" }) + ); + delete c.dataParts, + (d = null), + (c.img = document.createElement("img")), + (c.img.onload = function () { + URL.revokeObjectURL(this.src), + ++i == f.frames.length && t(f); + }), + (c.img.onerror = function () { + e("Image creation error"); + }), + (c.img.src = v); + } + else e("Not an animated PNG"); + } else e("Not an animated PNG"); + }); + }; + var w = function (t, e) { + var n = 8; + do { + var r = y(t, n), + i = a(t, n + 4, 4), + o = e(i, t, n, r); + n += 12 + r; + } while (!1 !== o && "IEND" != i && n < t.length); + }, + y = function (t, e) { + var n = 0; + n += (t[0 + e] << 24) >>> 0; + for (var r = 1; r < 4; r++) + n += t[r + e] << (8 * (3 - r)); + return n; + }, + _ = function (t, e) { + for (var n = 0, r = 0; r < 2; r++) + n += t[r + e] << (8 * (1 - r)); + return n; + }, + b = function (t, e) { + return t[e]; + }, + E = function (t, e, n) { + var r = new Uint8Array(n); + return r.set(t.subarray(e, e + n)), r; + }, + a = function (t, e, n) { + var r = Array.prototype.slice.call( + t.subarray(e, e + n) + ); + return String.fromCharCode.apply(String, r); + }, + P = function (t) { + return [ + (t >>> 24) & 255, + (t >>> 16) & 255, + (t >>> 8) & 255, + 255 & t, + ]; + }, + x = function (t, e) { + var n = t.length + e.length, + r = new Uint8Array(new ArrayBuffer(n + 8)); + r.set(P(e.length), 0), + r.set( + (function (t) { + for (var e = [], n = 0; n < t.length; n++) + e.push(t.charCodeAt(n)); + return e; + })(t), + 4 + ), + r.set(e, 8); + var i = o(r, 4, n); + return r.set(P(i), n + 4), r; + }; + }, + { "./animation": 3, "./crc32": 4, "es6-promise": 1 }, + ], + 8: [ + function (o, a, t) { + (function (t) { + "use strict"; + var e, + n, + r = r || o("es6-promise").Promise, + i = + ((e = function (e) { + var n = document.createElement("canvas"), + r = { + TypedArrays: "ArrayBuffer" in t, + BlobURLs: "URL" in t, + requestAnimationFrame: + "requestAnimationFrame" in t, + pageProtocol: + "http:" == location.protocol || + "https:" == location.protocol, + canvas: + "getContext" in + document.createElement("canvas"), + APNG: !1, + }; + if (r.canvas) { + var i = new Image(); + (i.onload = function () { + var t = n.getContext("2d"); + t.drawImage(i, 0, 0), + (r.APNG = + 0 === + t.getImageData(0, 0, 1, 1) + .data[3]), + e(r); + }), + (i.src = + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg=="); + } else e(r); + }), + (n = null), + function (t) { + return (n = n || new r(e)), t && n.then(t), n; + }); + a.exports = { + checkNativeFeatures: i, + ifNeeded: function (r) { + return ( + void 0 === r && (r = !1), + i().then(function (t) { + if (t.APNG && !r) reject(); + else { + var e = !0; + for (var n in t) + t.hasOwnProperty(n) && + "APNG" != n && + (e = e && t[n]); + } + }) + ); + }, + }; + }).call( + this, + "undefined" != typeof self + ? self + : "undefined" != typeof window + ? window + : {} + ); + }, + { "es6-promise": 1 }, + ], + }, + {}, + [5] +); diff --git a/src/utils/dependencies.ts b/src/utils/dependencies.ts index f1a5c262..f05900e1 100644 --- a/src/utils/dependencies.ts +++ b/src/utils/dependencies.ts @@ -17,23 +17,15 @@ */ import { makeLazy } from "./lazy"; +import { EXTENSION_BASE_URL } from "./web-metadata"; /* Add dynamically loaded dependencies for plugins here. */ -// https://github.com/mattdesl/gifenc -// this lib is way better than gif.js and all other libs, they're all so terrible but this one is nice -// @ts-ignore ts mad -export const getGifEncoder = makeLazy(() => import("https://unpkg.com/gifenc@1.0.3/dist/gifenc.esm.js")); - // needed to parse APNGs in the nitroBypass plugin -export const importApngJs = makeLazy(async () => { - const exports = {}; - const winProxy = new Proxy(window, { set: (_, k, v) => exports[k] = v }); - Function("self", await fetch("https://cdnjs.cloudflare.com/ajax/libs/apng-canvas/2.1.1/apng-canvas.min.js").then(r => r.text()))(winProxy); - // @ts-ignore - return exports.APNG as { parseURL(url: string): Promise; }; +export const importApngJs = makeLazy(() => { + return require("./apng-canvas").APNG as { parseURL(url: string): Promise; }; }); // https://wiki.mozilla.org/APNG_Specification#.60fcTL.60:_The_Frame_Control_Chunk @@ -75,13 +67,20 @@ export interface ApngFrameData { playTime: number; } -const shikiWorkerDist = "https://unpkg.com/@vap/shiki-worker@0.0.8/dist"; -export const shikiWorkerSrc = `${shikiWorkerDist}/${IS_DEV ? "index.js" : "index.min.js"}`; -export const shikiOnigasmSrc = "https://unpkg.com/@vap/shiki@0.10.3/dist/onig.wasm"; - -export const rnnoiseDist = "https://unpkg.com/@sapphi-red/web-noise-suppressor@0.3.3/dist"; +// On web (extensions), use extension uri as basepath (load files from extension) +// On desktop (electron), load from cdn +export const rnnoiseDist = IS_EXTENSION + ? new URL("/third-party/rnnoise", EXTENSION_BASE_URL).toString() + : "https://unpkg.com/@sapphi-red/web-noise-suppressor@0.3.3/dist"; export const rnnoiseWasmSrc = (simd = false) => `${rnnoiseDist}/rnnoise${simd ? "_simd" : ""}.wasm`; export const rnnoiseWorkletSrc = `${rnnoiseDist}/rnnoise/workletProcessor.js`; -// @ts-expect-error SHUT UP -export const getStegCloak = makeLazy(() => import("https://unpkg.com/stegcloak-dist@1.0.0/index.js")); + +// The below code is only used on the Desktop (electron) build of Vencord. +// Browser (extension) builds do not contain these remote imports. + +export const shikiWorkerSrc = `https://unpkg.com/@vap/shiki-worker@0.0.8/dist/${IS_DEV ? "index.js" : "index.min.js"}`; +export const shikiOnigasmSrc = "https://unpkg.com/@vap/shiki@0.10.3/dist/onig.wasm"; + +// @ts-expect-error +export const getStegCloak = /* #__PURE__*/ makeLazy(() => import("https://unpkg.com/stegcloak-dist@1.0.0/index.js")); diff --git a/src/utils/web-metadata.ts b/src/utils/web-metadata.ts new file mode 100644 index 00000000..26409a21 --- /dev/null +++ b/src/utils/web-metadata.ts @@ -0,0 +1,14 @@ +/* + * Vencord, a Discord client mod + * Copyright (c) 2023 Vendicated and contributors + * SPDX-License-Identifier: GPL-3.0-or-later + */ + +export let EXTENSION_BASE_URL: string; +export let EXTENSION_VERSION: string; + +if (IS_EXTENSION) { + const script = document.querySelector("#vencord-script") as HTMLScriptElement; + EXTENSION_BASE_URL = script.dataset.extensionBaseUrl!; + EXTENSION_VERSION = script.dataset.version!; +}