diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 6313b56..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-* text=auto eol=lf
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
deleted file mode 100644
index 40b2d4a..0000000
--- a/.github/FUNDING.yml
+++ /dev/null
@@ -1 +0,0 @@
-github: [jackyzha0]
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 7f1576d..0000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-name: Bug report
-about: Something about Quartz isn't working the way you expect
-title: ""
-labels: bug
-assignees: ""
----
-
-**Describe the bug**
-A clear and concise description of what the bug is.
-
-**To Reproduce**
-Steps to reproduce the behavior:
-
-1. Go to '...'
-2. Click on '....'
-3. Scroll down to '....'
-4. See error
-
-**Expected behavior**
-A clear and concise description of what you expected to happen.
-
-**Screenshots**
-If applicable, add screenshots to help explain your problem.
-
-**Desktop (please complete the following information):**
-
-- Device: [e.g. iPhone6]
-- OS: [e.g. iOS]
-- Browser [e.g. chrome, safari]
-
-**Additional context**
-Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index e766b49..0000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-name: Feature request
-about: Suggest an idea or improvement for Quartz
-title: ""
-labels: enhancement
-assignees: ""
----
-
-**Is your feature request related to a problem? Please describe.**
-A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
-
-**Describe the solution you'd like**
-A clear and concise description of what you want to happen.
-
-**Describe alternatives you've considered**
-A clear and concise description of any alternative solutions or features you've considered.
-
-**Additional context**
-Add any other context or screenshots about the feature request here.
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
deleted file mode 100644
index 8915143..0000000
--- a/.github/workflows/ci.yaml
+++ /dev/null
@@ -1,47 +0,0 @@
-name: Build and Test
-
-on:
- pull_request:
- branches:
- - v4
- push:
- branches:
- - v4
-
-jobs:
- build-and-test:
- if: ${{ github.repository == 'jackyzha0/quartz' }}
- strategy:
- matrix:
- os: [windows-latest, macos-latest, ubuntu-latest]
- runs-on: ${{ matrix.os }}
- permissions:
- contents: write
- steps:
- - uses: actions/checkout@v3
- with:
- fetch-depth: 0
-
- - name: Setup Node
- uses: actions/setup-node@v3
- with:
- node-version: 18
-
- - name: Cache dependencies
- uses: actions/cache@v3
- with:
- path: ~/.npm
- key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
- restore-keys: |
- ${{ runner.os }}-node-
-
- - run: npm ci
-
- - name: Check types and style
- run: npm run check
-
- - name: Test
- run: npm test
-
- - name: Ensure Quartz builds, check bundle info
- run: npx quartz build --bundleInfo
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
deleted file mode 100644
index c8c129a..0000000
--- a/.github/workflows/deploy.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-name: Deploy Quartz site to GitHub Pages
-
-on:
- push:
- branches:
- - v4
-
-permissions:
- contents: read
- pages: write
- id-token: write
-
-concurrency:
- group: "pages"
- cancel-in-progress: false
-
-jobs:
- build:
- runs-on: ubuntu-22.04
- steps:
- - uses: actions/checkout@v3
- with:
- fetch-depth: 0 # Fetch all history for git info
- - uses: actions/setup-node@v3
- with:
- node-version: 18.14
- - name: Install Dependencies
- run: npm ci
- - name: Build Quartz
- run: npx quartz build
- - name: Upload artifact
- uses: actions/upload-pages-artifact@v2
- with:
- path: public
-
- deploy:
- needs: build
- environment:
- name: github-pages
- url: ${{ steps.deployment.outputs.page_url }}
- runs-on: ubuntu-latest
- steps:
- - name: Deploy to GitHub Pages
- id: deployment
- uses: actions/deploy-pages@v2
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 25d07db..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-.DS_Store
-.gitignore
-node_modules
-public
-prof
-tsconfig.tsbuildinfo
-.obsidian
-.quartz-cache
-private/
-.replit
-replit.nix
diff --git a/.npmrc b/.npmrc
deleted file mode 100644
index b6f27f1..0000000
--- a/.npmrc
+++ /dev/null
@@ -1 +0,0 @@
-engine-strict=true
diff --git a/.obsidian/app.json b/.obsidian/app.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/.obsidian/app.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/.obsidian/appearance.json b/.obsidian/appearance.json
new file mode 100644
index 0000000..c8c365d
--- /dev/null
+++ b/.obsidian/appearance.json
@@ -0,0 +1,3 @@
+{
+ "accentColor": ""
+}
\ No newline at end of file
diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json
new file mode 100644
index 0000000..b9e00db
--- /dev/null
+++ b/.obsidian/community-plugins.json
@@ -0,0 +1,7 @@
+[
+ "obsidian-excalidraw-plugin",
+ "table-editor-obsidian",
+ "convert-url-to-iframe",
+ "obsidian-git",
+ "digitalgarden"
+]
\ No newline at end of file
diff --git a/.obsidian/core-plugins-migration.json b/.obsidian/core-plugins-migration.json
new file mode 100644
index 0000000..436f43c
--- /dev/null
+++ b/.obsidian/core-plugins-migration.json
@@ -0,0 +1,30 @@
+{
+ "file-explorer": true,
+ "global-search": true,
+ "switcher": true,
+ "graph": true,
+ "backlink": true,
+ "canvas": true,
+ "outgoing-link": true,
+ "tag-pane": true,
+ "properties": false,
+ "page-preview": true,
+ "daily-notes": true,
+ "templates": true,
+ "note-composer": true,
+ "command-palette": true,
+ "slash-command": false,
+ "editor-status": true,
+ "bookmarks": true,
+ "markdown-importer": false,
+ "zk-prefixer": false,
+ "random-note": false,
+ "outline": true,
+ "word-count": true,
+ "slides": false,
+ "audio-recorder": false,
+ "workspaces": false,
+ "file-recovery": true,
+ "publish": false,
+ "sync": false
+}
\ No newline at end of file
diff --git a/.obsidian/core-plugins.json b/.obsidian/core-plugins.json
new file mode 100644
index 0000000..9405bfd
--- /dev/null
+++ b/.obsidian/core-plugins.json
@@ -0,0 +1,20 @@
+[
+ "file-explorer",
+ "global-search",
+ "switcher",
+ "graph",
+ "backlink",
+ "canvas",
+ "outgoing-link",
+ "tag-pane",
+ "page-preview",
+ "daily-notes",
+ "templates",
+ "note-composer",
+ "command-palette",
+ "editor-status",
+ "bookmarks",
+ "outline",
+ "word-count",
+ "file-recovery"
+]
\ No newline at end of file
diff --git a/.obsidian/hotkeys.json b/.obsidian/hotkeys.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/.obsidian/hotkeys.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/.obsidian/plugins/convert-url-to-iframe/main.js b/.obsidian/plugins/convert-url-to-iframe/main.js
new file mode 100644
index 0000000..3303482
--- /dev/null
+++ b/.obsidian/plugins/convert-url-to-iframe/main.js
@@ -0,0 +1,6675 @@
+/*
+THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
+if you want to view the source, please visit the github repository of this plugin
+*/
+
+var __create = Object.create;
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __getProtoOf = Object.getPrototypeOf;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
+var __commonJS = (cb, mod) => function __require() {
+ return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
+};
+var __export = (target, all) => {
+ __markAsModule(target);
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __reExport = (target, module2, desc) => {
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
+ for (let key of __getOwnPropNames(module2))
+ if (!__hasOwnProp.call(target, key) && key !== "default")
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
+ }
+ return target;
+};
+var __toModule = (module2) => {
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
+};
+var __async = (__this, __arguments, generator) => {
+ return new Promise((resolve, reject) => {
+ var fulfilled = (value) => {
+ try {
+ step(generator.next(value));
+ } catch (e) {
+ reject(e);
+ }
+ };
+ var rejected = (value) => {
+ try {
+ step(generator.throw(value));
+ } catch (e) {
+ reject(e);
+ }
+ };
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
+ step((generator = generator.apply(__this, __arguments)).next());
+ });
+};
+
+// node_modules/oembed-parser/src/utils/isValidURL.js
+var require_isValidURL = __commonJS({
+ "node_modules/oembed-parser/src/utils/isValidURL.js"(exports, module2) {
+ module2.exports = (url = "") => {
+ try {
+ const ourl = new URL(url);
+ return ourl !== null && ourl.protocol.startsWith("http");
+ } catch (err) {
+ return false;
+ }
+ };
+ }
+});
+
+// node_modules/axios/lib/helpers/bind.js
+var require_bind = __commonJS({
+ "node_modules/axios/lib/helpers/bind.js"(exports, module2) {
+ "use strict";
+ module2.exports = function bind(fn, thisArg) {
+ return function wrap() {
+ var args = new Array(arguments.length);
+ for (var i = 0; i < args.length; i++) {
+ args[i] = arguments[i];
+ }
+ return fn.apply(thisArg, args);
+ };
+ };
+ }
+});
+
+// node_modules/axios/lib/utils.js
+var require_utils = __commonJS({
+ "node_modules/axios/lib/utils.js"(exports, module2) {
+ "use strict";
+ var bind = require_bind();
+ var toString = Object.prototype.toString;
+ function isArray(val) {
+ return toString.call(val) === "[object Array]";
+ }
+ function isUndefined(val) {
+ return typeof val === "undefined";
+ }
+ function isBuffer(val) {
+ return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && typeof val.constructor.isBuffer === "function" && val.constructor.isBuffer(val);
+ }
+ function isArrayBuffer(val) {
+ return toString.call(val) === "[object ArrayBuffer]";
+ }
+ function isFormData(val) {
+ return typeof FormData !== "undefined" && val instanceof FormData;
+ }
+ function isArrayBufferView(val) {
+ var result;
+ if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) {
+ result = ArrayBuffer.isView(val);
+ } else {
+ result = val && val.buffer && val.buffer instanceof ArrayBuffer;
+ }
+ return result;
+ }
+ function isString(val) {
+ return typeof val === "string";
+ }
+ function isNumber(val) {
+ return typeof val === "number";
+ }
+ function isObject(val) {
+ return val !== null && typeof val === "object";
+ }
+ function isPlainObject(val) {
+ if (toString.call(val) !== "[object Object]") {
+ return false;
+ }
+ var prototype = Object.getPrototypeOf(val);
+ return prototype === null || prototype === Object.prototype;
+ }
+ function isDate(val) {
+ return toString.call(val) === "[object Date]";
+ }
+ function isFile(val) {
+ return toString.call(val) === "[object File]";
+ }
+ function isBlob(val) {
+ return toString.call(val) === "[object Blob]";
+ }
+ function isFunction(val) {
+ return toString.call(val) === "[object Function]";
+ }
+ function isStream(val) {
+ return isObject(val) && isFunction(val.pipe);
+ }
+ function isURLSearchParams(val) {
+ return typeof URLSearchParams !== "undefined" && val instanceof URLSearchParams;
+ }
+ function trim(str) {
+ return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, "");
+ }
+ function isStandardBrowserEnv() {
+ if (typeof navigator !== "undefined" && (navigator.product === "ReactNative" || navigator.product === "NativeScript" || navigator.product === "NS")) {
+ return false;
+ }
+ return typeof window !== "undefined" && typeof document !== "undefined";
+ }
+ function forEach(obj, fn) {
+ if (obj === null || typeof obj === "undefined") {
+ return;
+ }
+ if (typeof obj !== "object") {
+ obj = [obj];
+ }
+ if (isArray(obj)) {
+ for (var i = 0, l = obj.length; i < l; i++) {
+ fn.call(null, obj[i], i, obj);
+ }
+ } else {
+ for (var key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
+ fn.call(null, obj[key], key, obj);
+ }
+ }
+ }
+ }
+ function merge() {
+ var result = {};
+ function assignValue(val, key) {
+ if (isPlainObject(result[key]) && isPlainObject(val)) {
+ result[key] = merge(result[key], val);
+ } else if (isPlainObject(val)) {
+ result[key] = merge({}, val);
+ } else if (isArray(val)) {
+ result[key] = val.slice();
+ } else {
+ result[key] = val;
+ }
+ }
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ forEach(arguments[i], assignValue);
+ }
+ return result;
+ }
+ function extend(a, b, thisArg) {
+ forEach(b, function assignValue(val, key) {
+ if (thisArg && typeof val === "function") {
+ a[key] = bind(val, thisArg);
+ } else {
+ a[key] = val;
+ }
+ });
+ return a;
+ }
+ function stripBOM(content) {
+ if (content.charCodeAt(0) === 65279) {
+ content = content.slice(1);
+ }
+ return content;
+ }
+ module2.exports = {
+ isArray,
+ isArrayBuffer,
+ isBuffer,
+ isFormData,
+ isArrayBufferView,
+ isString,
+ isNumber,
+ isObject,
+ isPlainObject,
+ isUndefined,
+ isDate,
+ isFile,
+ isBlob,
+ isFunction,
+ isStream,
+ isURLSearchParams,
+ isStandardBrowserEnv,
+ forEach,
+ merge,
+ extend,
+ trim,
+ stripBOM
+ };
+ }
+});
+
+// node_modules/axios/lib/helpers/buildURL.js
+var require_buildURL = __commonJS({
+ "node_modules/axios/lib/helpers/buildURL.js"(exports, module2) {
+ "use strict";
+ var utils = require_utils();
+ function encode(val) {
+ return encodeURIComponent(val).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]");
+ }
+ module2.exports = function buildURL(url, params, paramsSerializer) {
+ if (!params) {
+ return url;
+ }
+ var serializedParams;
+ if (paramsSerializer) {
+ serializedParams = paramsSerializer(params);
+ } else if (utils.isURLSearchParams(params)) {
+ serializedParams = params.toString();
+ } else {
+ var parts = [];
+ utils.forEach(params, function serialize(val, key) {
+ if (val === null || typeof val === "undefined") {
+ return;
+ }
+ if (utils.isArray(val)) {
+ key = key + "[]";
+ } else {
+ val = [val];
+ }
+ utils.forEach(val, function parseValue(v) {
+ if (utils.isDate(v)) {
+ v = v.toISOString();
+ } else if (utils.isObject(v)) {
+ v = JSON.stringify(v);
+ }
+ parts.push(encode(key) + "=" + encode(v));
+ });
+ });
+ serializedParams = parts.join("&");
+ }
+ if (serializedParams) {
+ var hashmarkIndex = url.indexOf("#");
+ if (hashmarkIndex !== -1) {
+ url = url.slice(0, hashmarkIndex);
+ }
+ url += (url.indexOf("?") === -1 ? "?" : "&") + serializedParams;
+ }
+ return url;
+ };
+ }
+});
+
+// node_modules/axios/lib/core/InterceptorManager.js
+var require_InterceptorManager = __commonJS({
+ "node_modules/axios/lib/core/InterceptorManager.js"(exports, module2) {
+ "use strict";
+ var utils = require_utils();
+ function InterceptorManager() {
+ this.handlers = [];
+ }
+ InterceptorManager.prototype.use = function use(fulfilled, rejected, options) {
+ this.handlers.push({
+ fulfilled,
+ rejected,
+ synchronous: options ? options.synchronous : false,
+ runWhen: options ? options.runWhen : null
+ });
+ return this.handlers.length - 1;
+ };
+ InterceptorManager.prototype.eject = function eject(id) {
+ if (this.handlers[id]) {
+ this.handlers[id] = null;
+ }
+ };
+ InterceptorManager.prototype.forEach = function forEach(fn) {
+ utils.forEach(this.handlers, function forEachHandler(h) {
+ if (h !== null) {
+ fn(h);
+ }
+ });
+ };
+ module2.exports = InterceptorManager;
+ }
+});
+
+// node_modules/axios/lib/helpers/normalizeHeaderName.js
+var require_normalizeHeaderName = __commonJS({
+ "node_modules/axios/lib/helpers/normalizeHeaderName.js"(exports, module2) {
+ "use strict";
+ var utils = require_utils();
+ module2.exports = function normalizeHeaderName(headers, normalizedName) {
+ utils.forEach(headers, function processHeader(value, name) {
+ if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {
+ headers[normalizedName] = value;
+ delete headers[name];
+ }
+ });
+ };
+ }
+});
+
+// node_modules/axios/lib/core/enhanceError.js
+var require_enhanceError = __commonJS({
+ "node_modules/axios/lib/core/enhanceError.js"(exports, module2) {
+ "use strict";
+ module2.exports = function enhanceError(error, config, code, request, response) {
+ error.config = config;
+ if (code) {
+ error.code = code;
+ }
+ error.request = request;
+ error.response = response;
+ error.isAxiosError = true;
+ error.toJSON = function toJSON() {
+ return {
+ message: this.message,
+ name: this.name,
+ description: this.description,
+ number: this.number,
+ fileName: this.fileName,
+ lineNumber: this.lineNumber,
+ columnNumber: this.columnNumber,
+ stack: this.stack,
+ config: this.config,
+ code: this.code,
+ status: this.response && this.response.status ? this.response.status : null
+ };
+ };
+ return error;
+ };
+ }
+});
+
+// node_modules/axios/lib/core/createError.js
+var require_createError = __commonJS({
+ "node_modules/axios/lib/core/createError.js"(exports, module2) {
+ "use strict";
+ var enhanceError = require_enhanceError();
+ module2.exports = function createError(message, config, code, request, response) {
+ var error = new Error(message);
+ return enhanceError(error, config, code, request, response);
+ };
+ }
+});
+
+// node_modules/axios/lib/core/settle.js
+var require_settle = __commonJS({
+ "node_modules/axios/lib/core/settle.js"(exports, module2) {
+ "use strict";
+ var createError = require_createError();
+ module2.exports = function settle(resolve, reject, response) {
+ var validateStatus = response.config.validateStatus;
+ if (!response.status || !validateStatus || validateStatus(response.status)) {
+ resolve(response);
+ } else {
+ reject(createError("Request failed with status code " + response.status, response.config, null, response.request, response));
+ }
+ };
+ }
+});
+
+// node_modules/axios/lib/helpers/cookies.js
+var require_cookies = __commonJS({
+ "node_modules/axios/lib/helpers/cookies.js"(exports, module2) {
+ "use strict";
+ var utils = require_utils();
+ module2.exports = utils.isStandardBrowserEnv() ? function standardBrowserEnv() {
+ return {
+ write: function write(name, value, expires, path, domain, secure) {
+ var cookie = [];
+ cookie.push(name + "=" + encodeURIComponent(value));
+ if (utils.isNumber(expires)) {
+ cookie.push("expires=" + new Date(expires).toGMTString());
+ }
+ if (utils.isString(path)) {
+ cookie.push("path=" + path);
+ }
+ if (utils.isString(domain)) {
+ cookie.push("domain=" + domain);
+ }
+ if (secure === true) {
+ cookie.push("secure");
+ }
+ document.cookie = cookie.join("; ");
+ },
+ read: function read(name) {
+ var match = document.cookie.match(new RegExp("(^|;\\s*)(" + name + ")=([^;]*)"));
+ return match ? decodeURIComponent(match[3]) : null;
+ },
+ remove: function remove(name) {
+ this.write(name, "", Date.now() - 864e5);
+ }
+ };
+ }() : function nonStandardBrowserEnv() {
+ return {
+ write: function write() {
+ },
+ read: function read() {
+ return null;
+ },
+ remove: function remove() {
+ }
+ };
+ }();
+ }
+});
+
+// node_modules/axios/lib/helpers/isAbsoluteURL.js
+var require_isAbsoluteURL = __commonJS({
+ "node_modules/axios/lib/helpers/isAbsoluteURL.js"(exports, module2) {
+ "use strict";
+ module2.exports = function isAbsoluteURL(url) {
+ return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
+ };
+ }
+});
+
+// node_modules/axios/lib/helpers/combineURLs.js
+var require_combineURLs = __commonJS({
+ "node_modules/axios/lib/helpers/combineURLs.js"(exports, module2) {
+ "use strict";
+ module2.exports = function combineURLs(baseURL, relativeURL) {
+ return relativeURL ? baseURL.replace(/\/+$/, "") + "/" + relativeURL.replace(/^\/+/, "") : baseURL;
+ };
+ }
+});
+
+// node_modules/axios/lib/core/buildFullPath.js
+var require_buildFullPath = __commonJS({
+ "node_modules/axios/lib/core/buildFullPath.js"(exports, module2) {
+ "use strict";
+ var isAbsoluteURL = require_isAbsoluteURL();
+ var combineURLs = require_combineURLs();
+ module2.exports = function buildFullPath(baseURL, requestedURL) {
+ if (baseURL && !isAbsoluteURL(requestedURL)) {
+ return combineURLs(baseURL, requestedURL);
+ }
+ return requestedURL;
+ };
+ }
+});
+
+// node_modules/axios/lib/helpers/parseHeaders.js
+var require_parseHeaders = __commonJS({
+ "node_modules/axios/lib/helpers/parseHeaders.js"(exports, module2) {
+ "use strict";
+ var utils = require_utils();
+ var ignoreDuplicateOf = [
+ "age",
+ "authorization",
+ "content-length",
+ "content-type",
+ "etag",
+ "expires",
+ "from",
+ "host",
+ "if-modified-since",
+ "if-unmodified-since",
+ "last-modified",
+ "location",
+ "max-forwards",
+ "proxy-authorization",
+ "referer",
+ "retry-after",
+ "user-agent"
+ ];
+ module2.exports = function parseHeaders(headers) {
+ var parsed = {};
+ var key;
+ var val;
+ var i;
+ if (!headers) {
+ return parsed;
+ }
+ utils.forEach(headers.split("\n"), function parser(line) {
+ i = line.indexOf(":");
+ key = utils.trim(line.substr(0, i)).toLowerCase();
+ val = utils.trim(line.substr(i + 1));
+ if (key) {
+ if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {
+ return;
+ }
+ if (key === "set-cookie") {
+ parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);
+ } else {
+ parsed[key] = parsed[key] ? parsed[key] + ", " + val : val;
+ }
+ }
+ });
+ return parsed;
+ };
+ }
+});
+
+// node_modules/axios/lib/helpers/isURLSameOrigin.js
+var require_isURLSameOrigin = __commonJS({
+ "node_modules/axios/lib/helpers/isURLSameOrigin.js"(exports, module2) {
+ "use strict";
+ var utils = require_utils();
+ module2.exports = utils.isStandardBrowserEnv() ? function standardBrowserEnv() {
+ var msie = /(msie|trident)/i.test(navigator.userAgent);
+ var urlParsingNode = document.createElement("a");
+ var originURL;
+ function resolveURL(url) {
+ var href = url;
+ if (msie) {
+ urlParsingNode.setAttribute("href", href);
+ href = urlParsingNode.href;
+ }
+ urlParsingNode.setAttribute("href", href);
+ return {
+ href: urlParsingNode.href,
+ protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, "") : "",
+ host: urlParsingNode.host,
+ search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, "") : "",
+ hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, "") : "",
+ hostname: urlParsingNode.hostname,
+ port: urlParsingNode.port,
+ pathname: urlParsingNode.pathname.charAt(0) === "/" ? urlParsingNode.pathname : "/" + urlParsingNode.pathname
+ };
+ }
+ originURL = resolveURL(window.location.href);
+ return function isURLSameOrigin(requestURL) {
+ var parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL;
+ return parsed.protocol === originURL.protocol && parsed.host === originURL.host;
+ };
+ }() : function nonStandardBrowserEnv() {
+ return function isURLSameOrigin() {
+ return true;
+ };
+ }();
+ }
+});
+
+// node_modules/axios/lib/cancel/Cancel.js
+var require_Cancel = __commonJS({
+ "node_modules/axios/lib/cancel/Cancel.js"(exports, module2) {
+ "use strict";
+ function Cancel(message) {
+ this.message = message;
+ }
+ Cancel.prototype.toString = function toString() {
+ return "Cancel" + (this.message ? ": " + this.message : "");
+ };
+ Cancel.prototype.__CANCEL__ = true;
+ module2.exports = Cancel;
+ }
+});
+
+// node_modules/axios/lib/adapters/xhr.js
+var require_xhr = __commonJS({
+ "node_modules/axios/lib/adapters/xhr.js"(exports, module2) {
+ "use strict";
+ var utils = require_utils();
+ var settle = require_settle();
+ var cookies = require_cookies();
+ var buildURL = require_buildURL();
+ var buildFullPath = require_buildFullPath();
+ var parseHeaders = require_parseHeaders();
+ var isURLSameOrigin = require_isURLSameOrigin();
+ var createError = require_createError();
+ var defaults = require_defaults();
+ var Cancel = require_Cancel();
+ module2.exports = function xhrAdapter(config) {
+ return new Promise(function dispatchXhrRequest(resolve, reject) {
+ var requestData = config.data;
+ var requestHeaders = config.headers;
+ var responseType = config.responseType;
+ var onCanceled;
+ function done() {
+ if (config.cancelToken) {
+ config.cancelToken.unsubscribe(onCanceled);
+ }
+ if (config.signal) {
+ config.signal.removeEventListener("abort", onCanceled);
+ }
+ }
+ if (utils.isFormData(requestData)) {
+ delete requestHeaders["Content-Type"];
+ }
+ var request = new XMLHttpRequest();
+ if (config.auth) {
+ var username = config.auth.username || "";
+ var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : "";
+ requestHeaders.Authorization = "Basic " + btoa(username + ":" + password);
+ }
+ var fullPath = buildFullPath(config.baseURL, config.url);
+ request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);
+ request.timeout = config.timeout;
+ function onloadend() {
+ if (!request) {
+ return;
+ }
+ var responseHeaders = "getAllResponseHeaders" in request ? parseHeaders(request.getAllResponseHeaders()) : null;
+ var responseData = !responseType || responseType === "text" || responseType === "json" ? request.responseText : request.response;
+ var response = {
+ data: responseData,
+ status: request.status,
+ statusText: request.statusText,
+ headers: responseHeaders,
+ config,
+ request
+ };
+ settle(function _resolve(value) {
+ resolve(value);
+ done();
+ }, function _reject(err) {
+ reject(err);
+ done();
+ }, response);
+ request = null;
+ }
+ if ("onloadend" in request) {
+ request.onloadend = onloadend;
+ } else {
+ request.onreadystatechange = function handleLoad() {
+ if (!request || request.readyState !== 4) {
+ return;
+ }
+ if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf("file:") === 0)) {
+ return;
+ }
+ setTimeout(onloadend);
+ };
+ }
+ request.onabort = function handleAbort() {
+ if (!request) {
+ return;
+ }
+ reject(createError("Request aborted", config, "ECONNABORTED", request));
+ request = null;
+ };
+ request.onerror = function handleError() {
+ reject(createError("Network Error", config, null, request));
+ request = null;
+ };
+ request.ontimeout = function handleTimeout() {
+ var timeoutErrorMessage = config.timeout ? "timeout of " + config.timeout + "ms exceeded" : "timeout exceeded";
+ var transitional = config.transitional || defaults.transitional;
+ if (config.timeoutErrorMessage) {
+ timeoutErrorMessage = config.timeoutErrorMessage;
+ }
+ reject(createError(timeoutErrorMessage, config, transitional.clarifyTimeoutError ? "ETIMEDOUT" : "ECONNABORTED", request));
+ request = null;
+ };
+ if (utils.isStandardBrowserEnv()) {
+ var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : void 0;
+ if (xsrfValue) {
+ requestHeaders[config.xsrfHeaderName] = xsrfValue;
+ }
+ }
+ if ("setRequestHeader" in request) {
+ utils.forEach(requestHeaders, function setRequestHeader(val, key) {
+ if (typeof requestData === "undefined" && key.toLowerCase() === "content-type") {
+ delete requestHeaders[key];
+ } else {
+ request.setRequestHeader(key, val);
+ }
+ });
+ }
+ if (!utils.isUndefined(config.withCredentials)) {
+ request.withCredentials = !!config.withCredentials;
+ }
+ if (responseType && responseType !== "json") {
+ request.responseType = config.responseType;
+ }
+ if (typeof config.onDownloadProgress === "function") {
+ request.addEventListener("progress", config.onDownloadProgress);
+ }
+ if (typeof config.onUploadProgress === "function" && request.upload) {
+ request.upload.addEventListener("progress", config.onUploadProgress);
+ }
+ if (config.cancelToken || config.signal) {
+ onCanceled = function(cancel) {
+ if (!request) {
+ return;
+ }
+ reject(!cancel || cancel && cancel.type ? new Cancel("canceled") : cancel);
+ request.abort();
+ request = null;
+ };
+ config.cancelToken && config.cancelToken.subscribe(onCanceled);
+ if (config.signal) {
+ config.signal.aborted ? onCanceled() : config.signal.addEventListener("abort", onCanceled);
+ }
+ }
+ if (!requestData) {
+ requestData = null;
+ }
+ request.send(requestData);
+ });
+ };
+ }
+});
+
+// node_modules/axios/lib/defaults.js
+var require_defaults = __commonJS({
+ "node_modules/axios/lib/defaults.js"(exports, module2) {
+ "use strict";
+ var utils = require_utils();
+ var normalizeHeaderName = require_normalizeHeaderName();
+ var enhanceError = require_enhanceError();
+ var DEFAULT_CONTENT_TYPE = {
+ "Content-Type": "application/x-www-form-urlencoded"
+ };
+ function setContentTypeIfUnset(headers, value) {
+ if (!utils.isUndefined(headers) && utils.isUndefined(headers["Content-Type"])) {
+ headers["Content-Type"] = value;
+ }
+ }
+ function getDefaultAdapter() {
+ var adapter;
+ if (typeof XMLHttpRequest !== "undefined") {
+ adapter = require_xhr();
+ } else if (typeof process !== "undefined" && Object.prototype.toString.call(process) === "[object process]") {
+ adapter = require_xhr();
+ }
+ return adapter;
+ }
+ function stringifySafely(rawValue, parser, encoder) {
+ if (utils.isString(rawValue)) {
+ try {
+ (parser || JSON.parse)(rawValue);
+ return utils.trim(rawValue);
+ } catch (e) {
+ if (e.name !== "SyntaxError") {
+ throw e;
+ }
+ }
+ }
+ return (encoder || JSON.stringify)(rawValue);
+ }
+ var defaults = {
+ transitional: {
+ silentJSONParsing: true,
+ forcedJSONParsing: true,
+ clarifyTimeoutError: false
+ },
+ adapter: getDefaultAdapter(),
+ transformRequest: [function transformRequest(data, headers) {
+ normalizeHeaderName(headers, "Accept");
+ normalizeHeaderName(headers, "Content-Type");
+ if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {
+ return data;
+ }
+ if (utils.isArrayBufferView(data)) {
+ return data.buffer;
+ }
+ if (utils.isURLSearchParams(data)) {
+ setContentTypeIfUnset(headers, "application/x-www-form-urlencoded;charset=utf-8");
+ return data.toString();
+ }
+ if (utils.isObject(data) || headers && headers["Content-Type"] === "application/json") {
+ setContentTypeIfUnset(headers, "application/json");
+ return stringifySafely(data);
+ }
+ return data;
+ }],
+ transformResponse: [function transformResponse(data) {
+ var transitional = this.transitional || defaults.transitional;
+ var silentJSONParsing = transitional && transitional.silentJSONParsing;
+ var forcedJSONParsing = transitional && transitional.forcedJSONParsing;
+ var strictJSONParsing = !silentJSONParsing && this.responseType === "json";
+ if (strictJSONParsing || forcedJSONParsing && utils.isString(data) && data.length) {
+ try {
+ return JSON.parse(data);
+ } catch (e) {
+ if (strictJSONParsing) {
+ if (e.name === "SyntaxError") {
+ throw enhanceError(e, this, "E_JSON_PARSE");
+ }
+ throw e;
+ }
+ }
+ }
+ return data;
+ }],
+ timeout: 0,
+ xsrfCookieName: "XSRF-TOKEN",
+ xsrfHeaderName: "X-XSRF-TOKEN",
+ maxContentLength: -1,
+ maxBodyLength: -1,
+ validateStatus: function validateStatus(status) {
+ return status >= 200 && status < 300;
+ },
+ headers: {
+ common: {
+ "Accept": "application/json, text/plain, */*"
+ }
+ }
+ };
+ utils.forEach(["delete", "get", "head"], function forEachMethodNoData(method) {
+ defaults.headers[method] = {};
+ });
+ utils.forEach(["post", "put", "patch"], function forEachMethodWithData(method) {
+ defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);
+ });
+ module2.exports = defaults;
+ }
+});
+
+// node_modules/axios/lib/core/transformData.js
+var require_transformData = __commonJS({
+ "node_modules/axios/lib/core/transformData.js"(exports, module2) {
+ "use strict";
+ var utils = require_utils();
+ var defaults = require_defaults();
+ module2.exports = function transformData(data, headers, fns) {
+ var context = this || defaults;
+ utils.forEach(fns, function transform(fn) {
+ data = fn.call(context, data, headers);
+ });
+ return data;
+ };
+ }
+});
+
+// node_modules/axios/lib/cancel/isCancel.js
+var require_isCancel = __commonJS({
+ "node_modules/axios/lib/cancel/isCancel.js"(exports, module2) {
+ "use strict";
+ module2.exports = function isCancel(value) {
+ return !!(value && value.__CANCEL__);
+ };
+ }
+});
+
+// node_modules/axios/lib/core/dispatchRequest.js
+var require_dispatchRequest = __commonJS({
+ "node_modules/axios/lib/core/dispatchRequest.js"(exports, module2) {
+ "use strict";
+ var utils = require_utils();
+ var transformData = require_transformData();
+ var isCancel = require_isCancel();
+ var defaults = require_defaults();
+ var Cancel = require_Cancel();
+ function throwIfCancellationRequested(config) {
+ if (config.cancelToken) {
+ config.cancelToken.throwIfRequested();
+ }
+ if (config.signal && config.signal.aborted) {
+ throw new Cancel("canceled");
+ }
+ }
+ module2.exports = function dispatchRequest(config) {
+ throwIfCancellationRequested(config);
+ config.headers = config.headers || {};
+ config.data = transformData.call(config, config.data, config.headers, config.transformRequest);
+ config.headers = utils.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers);
+ utils.forEach(["delete", "get", "head", "post", "put", "patch", "common"], function cleanHeaderConfig(method) {
+ delete config.headers[method];
+ });
+ var adapter = config.adapter || defaults.adapter;
+ return adapter(config).then(function onAdapterResolution(response) {
+ throwIfCancellationRequested(config);
+ response.data = transformData.call(config, response.data, response.headers, config.transformResponse);
+ return response;
+ }, function onAdapterRejection(reason) {
+ if (!isCancel(reason)) {
+ throwIfCancellationRequested(config);
+ if (reason && reason.response) {
+ reason.response.data = transformData.call(config, reason.response.data, reason.response.headers, config.transformResponse);
+ }
+ }
+ return Promise.reject(reason);
+ });
+ };
+ }
+});
+
+// node_modules/axios/lib/core/mergeConfig.js
+var require_mergeConfig = __commonJS({
+ "node_modules/axios/lib/core/mergeConfig.js"(exports, module2) {
+ "use strict";
+ var utils = require_utils();
+ module2.exports = function mergeConfig(config1, config2) {
+ config2 = config2 || {};
+ var config = {};
+ function getMergedValue(target, source) {
+ if (utils.isPlainObject(target) && utils.isPlainObject(source)) {
+ return utils.merge(target, source);
+ } else if (utils.isPlainObject(source)) {
+ return utils.merge({}, source);
+ } else if (utils.isArray(source)) {
+ return source.slice();
+ }
+ return source;
+ }
+ function mergeDeepProperties(prop) {
+ if (!utils.isUndefined(config2[prop])) {
+ return getMergedValue(config1[prop], config2[prop]);
+ } else if (!utils.isUndefined(config1[prop])) {
+ return getMergedValue(void 0, config1[prop]);
+ }
+ }
+ function valueFromConfig2(prop) {
+ if (!utils.isUndefined(config2[prop])) {
+ return getMergedValue(void 0, config2[prop]);
+ }
+ }
+ function defaultToConfig2(prop) {
+ if (!utils.isUndefined(config2[prop])) {
+ return getMergedValue(void 0, config2[prop]);
+ } else if (!utils.isUndefined(config1[prop])) {
+ return getMergedValue(void 0, config1[prop]);
+ }
+ }
+ function mergeDirectKeys(prop) {
+ if (prop in config2) {
+ return getMergedValue(config1[prop], config2[prop]);
+ } else if (prop in config1) {
+ return getMergedValue(void 0, config1[prop]);
+ }
+ }
+ var mergeMap = {
+ "url": valueFromConfig2,
+ "method": valueFromConfig2,
+ "data": valueFromConfig2,
+ "baseURL": defaultToConfig2,
+ "transformRequest": defaultToConfig2,
+ "transformResponse": defaultToConfig2,
+ "paramsSerializer": defaultToConfig2,
+ "timeout": defaultToConfig2,
+ "timeoutMessage": defaultToConfig2,
+ "withCredentials": defaultToConfig2,
+ "adapter": defaultToConfig2,
+ "responseType": defaultToConfig2,
+ "xsrfCookieName": defaultToConfig2,
+ "xsrfHeaderName": defaultToConfig2,
+ "onUploadProgress": defaultToConfig2,
+ "onDownloadProgress": defaultToConfig2,
+ "decompress": defaultToConfig2,
+ "maxContentLength": defaultToConfig2,
+ "maxBodyLength": defaultToConfig2,
+ "transport": defaultToConfig2,
+ "httpAgent": defaultToConfig2,
+ "httpsAgent": defaultToConfig2,
+ "cancelToken": defaultToConfig2,
+ "socketPath": defaultToConfig2,
+ "responseEncoding": defaultToConfig2,
+ "validateStatus": mergeDirectKeys
+ };
+ utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {
+ var merge = mergeMap[prop] || mergeDeepProperties;
+ var configValue = merge(prop);
+ utils.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue);
+ });
+ return config;
+ };
+ }
+});
+
+// node_modules/axios/lib/env/data.js
+var require_data = __commonJS({
+ "node_modules/axios/lib/env/data.js"(exports, module2) {
+ module2.exports = {
+ "version": "0.24.0"
+ };
+ }
+});
+
+// node_modules/axios/lib/helpers/validator.js
+var require_validator = __commonJS({
+ "node_modules/axios/lib/helpers/validator.js"(exports, module2) {
+ "use strict";
+ var VERSION = require_data().version;
+ var validators = {};
+ ["object", "boolean", "number", "function", "string", "symbol"].forEach(function(type, i) {
+ validators[type] = function validator(thing) {
+ return typeof thing === type || "a" + (i < 1 ? "n " : " ") + type;
+ };
+ });
+ var deprecatedWarnings = {};
+ validators.transitional = function transitional(validator, version, message) {
+ function formatMessage(opt, desc) {
+ return "[Axios v" + VERSION + "] Transitional option '" + opt + "'" + desc + (message ? ". " + message : "");
+ }
+ return function(value, opt, opts) {
+ if (validator === false) {
+ throw new Error(formatMessage(opt, " has been removed" + (version ? " in " + version : "")));
+ }
+ if (version && !deprecatedWarnings[opt]) {
+ deprecatedWarnings[opt] = true;
+ console.warn(formatMessage(opt, " has been deprecated since v" + version + " and will be removed in the near future"));
+ }
+ return validator ? validator(value, opt, opts) : true;
+ };
+ };
+ function assertOptions(options, schema, allowUnknown) {
+ if (typeof options !== "object") {
+ throw new TypeError("options must be an object");
+ }
+ var keys = Object.keys(options);
+ var i = keys.length;
+ while (i-- > 0) {
+ var opt = keys[i];
+ var validator = schema[opt];
+ if (validator) {
+ var value = options[opt];
+ var result = value === void 0 || validator(value, opt, options);
+ if (result !== true) {
+ throw new TypeError("option " + opt + " must be " + result);
+ }
+ continue;
+ }
+ if (allowUnknown !== true) {
+ throw Error("Unknown option " + opt);
+ }
+ }
+ }
+ module2.exports = {
+ assertOptions,
+ validators
+ };
+ }
+});
+
+// node_modules/axios/lib/core/Axios.js
+var require_Axios = __commonJS({
+ "node_modules/axios/lib/core/Axios.js"(exports, module2) {
+ "use strict";
+ var utils = require_utils();
+ var buildURL = require_buildURL();
+ var InterceptorManager = require_InterceptorManager();
+ var dispatchRequest = require_dispatchRequest();
+ var mergeConfig = require_mergeConfig();
+ var validator = require_validator();
+ var validators = validator.validators;
+ function Axios(instanceConfig) {
+ this.defaults = instanceConfig;
+ this.interceptors = {
+ request: new InterceptorManager(),
+ response: new InterceptorManager()
+ };
+ }
+ Axios.prototype.request = function request(config) {
+ if (typeof config === "string") {
+ config = arguments[1] || {};
+ config.url = arguments[0];
+ } else {
+ config = config || {};
+ }
+ config = mergeConfig(this.defaults, config);
+ if (config.method) {
+ config.method = config.method.toLowerCase();
+ } else if (this.defaults.method) {
+ config.method = this.defaults.method.toLowerCase();
+ } else {
+ config.method = "get";
+ }
+ var transitional = config.transitional;
+ if (transitional !== void 0) {
+ validator.assertOptions(transitional, {
+ silentJSONParsing: validators.transitional(validators.boolean),
+ forcedJSONParsing: validators.transitional(validators.boolean),
+ clarifyTimeoutError: validators.transitional(validators.boolean)
+ }, false);
+ }
+ var requestInterceptorChain = [];
+ var synchronousRequestInterceptors = true;
+ this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
+ if (typeof interceptor.runWhen === "function" && interceptor.runWhen(config) === false) {
+ return;
+ }
+ synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
+ requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
+ });
+ var responseInterceptorChain = [];
+ this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
+ responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
+ });
+ var promise;
+ if (!synchronousRequestInterceptors) {
+ var chain = [dispatchRequest, void 0];
+ Array.prototype.unshift.apply(chain, requestInterceptorChain);
+ chain = chain.concat(responseInterceptorChain);
+ promise = Promise.resolve(config);
+ while (chain.length) {
+ promise = promise.then(chain.shift(), chain.shift());
+ }
+ return promise;
+ }
+ var newConfig = config;
+ while (requestInterceptorChain.length) {
+ var onFulfilled = requestInterceptorChain.shift();
+ var onRejected = requestInterceptorChain.shift();
+ try {
+ newConfig = onFulfilled(newConfig);
+ } catch (error) {
+ onRejected(error);
+ break;
+ }
+ }
+ try {
+ promise = dispatchRequest(newConfig);
+ } catch (error) {
+ return Promise.reject(error);
+ }
+ while (responseInterceptorChain.length) {
+ promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());
+ }
+ return promise;
+ };
+ Axios.prototype.getUri = function getUri(config) {
+ config = mergeConfig(this.defaults, config);
+ return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, "");
+ };
+ utils.forEach(["delete", "get", "head", "options"], function forEachMethodNoData(method) {
+ Axios.prototype[method] = function(url, config) {
+ return this.request(mergeConfig(config || {}, {
+ method,
+ url,
+ data: (config || {}).data
+ }));
+ };
+ });
+ utils.forEach(["post", "put", "patch"], function forEachMethodWithData(method) {
+ Axios.prototype[method] = function(url, data, config) {
+ return this.request(mergeConfig(config || {}, {
+ method,
+ url,
+ data
+ }));
+ };
+ });
+ module2.exports = Axios;
+ }
+});
+
+// node_modules/axios/lib/cancel/CancelToken.js
+var require_CancelToken = __commonJS({
+ "node_modules/axios/lib/cancel/CancelToken.js"(exports, module2) {
+ "use strict";
+ var Cancel = require_Cancel();
+ function CancelToken(executor) {
+ if (typeof executor !== "function") {
+ throw new TypeError("executor must be a function.");
+ }
+ var resolvePromise;
+ this.promise = new Promise(function promiseExecutor(resolve) {
+ resolvePromise = resolve;
+ });
+ var token = this;
+ this.promise.then(function(cancel) {
+ if (!token._listeners)
+ return;
+ var i;
+ var l = token._listeners.length;
+ for (i = 0; i < l; i++) {
+ token._listeners[i](cancel);
+ }
+ token._listeners = null;
+ });
+ this.promise.then = function(onfulfilled) {
+ var _resolve;
+ var promise = new Promise(function(resolve) {
+ token.subscribe(resolve);
+ _resolve = resolve;
+ }).then(onfulfilled);
+ promise.cancel = function reject() {
+ token.unsubscribe(_resolve);
+ };
+ return promise;
+ };
+ executor(function cancel(message) {
+ if (token.reason) {
+ return;
+ }
+ token.reason = new Cancel(message);
+ resolvePromise(token.reason);
+ });
+ }
+ CancelToken.prototype.throwIfRequested = function throwIfRequested() {
+ if (this.reason) {
+ throw this.reason;
+ }
+ };
+ CancelToken.prototype.subscribe = function subscribe(listener) {
+ if (this.reason) {
+ listener(this.reason);
+ return;
+ }
+ if (this._listeners) {
+ this._listeners.push(listener);
+ } else {
+ this._listeners = [listener];
+ }
+ };
+ CancelToken.prototype.unsubscribe = function unsubscribe(listener) {
+ if (!this._listeners) {
+ return;
+ }
+ var index = this._listeners.indexOf(listener);
+ if (index !== -1) {
+ this._listeners.splice(index, 1);
+ }
+ };
+ CancelToken.source = function source() {
+ var cancel;
+ var token = new CancelToken(function executor(c) {
+ cancel = c;
+ });
+ return {
+ token,
+ cancel
+ };
+ };
+ module2.exports = CancelToken;
+ }
+});
+
+// node_modules/axios/lib/helpers/spread.js
+var require_spread = __commonJS({
+ "node_modules/axios/lib/helpers/spread.js"(exports, module2) {
+ "use strict";
+ module2.exports = function spread(callback) {
+ return function wrap(arr) {
+ return callback.apply(null, arr);
+ };
+ };
+ }
+});
+
+// node_modules/axios/lib/helpers/isAxiosError.js
+var require_isAxiosError = __commonJS({
+ "node_modules/axios/lib/helpers/isAxiosError.js"(exports, module2) {
+ "use strict";
+ module2.exports = function isAxiosError(payload) {
+ return typeof payload === "object" && payload.isAxiosError === true;
+ };
+ }
+});
+
+// node_modules/axios/lib/axios.js
+var require_axios = __commonJS({
+ "node_modules/axios/lib/axios.js"(exports, module2) {
+ "use strict";
+ var utils = require_utils();
+ var bind = require_bind();
+ var Axios = require_Axios();
+ var mergeConfig = require_mergeConfig();
+ var defaults = require_defaults();
+ function createInstance(defaultConfig) {
+ var context = new Axios(defaultConfig);
+ var instance = bind(Axios.prototype.request, context);
+ utils.extend(instance, Axios.prototype, context);
+ utils.extend(instance, context);
+ instance.create = function create(instanceConfig) {
+ return createInstance(mergeConfig(defaultConfig, instanceConfig));
+ };
+ return instance;
+ }
+ var axios = createInstance(defaults);
+ axios.Axios = Axios;
+ axios.Cancel = require_Cancel();
+ axios.CancelToken = require_CancelToken();
+ axios.isCancel = require_isCancel();
+ axios.VERSION = require_data().version;
+ axios.all = function all(promises) {
+ return Promise.all(promises);
+ };
+ axios.spread = require_spread();
+ axios.isAxiosError = require_isAxiosError();
+ module2.exports = axios;
+ module2.exports.default = axios;
+ }
+});
+
+// node_modules/axios/index.js
+var require_axios2 = __commonJS({
+ "node_modules/axios/index.js"(exports, module2) {
+ module2.exports = require_axios();
+ }
+});
+
+// node_modules/bellajs/dist/bella.min.js
+var require_bella_min = __commonJS({
+ "node_modules/bellajs/dist/bella.min.js"(exports, module2) {
+ !function(e, t) {
+ typeof exports == "object" && typeof module2 != "undefined" ? t(exports) : typeof define == "function" && define.amd ? define(["exports"], t) : t((e = typeof globalThis != "undefined" ? globalThis : e || self).bella = {});
+ }(exports, function(e) {
+ const t = (e2) => ({}).toString.call(e2), r = (e2) => Array.isArray(e2), n = (e2) => String(e2) === e2, o = (e2) => Number(e2) === e2, a = (e2) => t(e2) === "[object Null]", i = (e2) => t(e2) === "[object Undefined]", l = (e2) => i(e2) || a(e2), s = (e2) => t(e2) === "[object Object]" && !r(e2), c = (e2) => e2 instanceof Date && !isNaN(e2.valueOf()), u = (e2) => !e2 || l(e2) || n(e2) && e2 === "" || r(e2) && e2.length === 0 || s(e2) && Object.keys(e2).length === 0, g = (e2, t2) => !(!e2 || !t2) && Object.prototype.hasOwnProperty.call(e2, t2), f = (e2, t2) => {
+ if (u(e2) && u(t2))
+ return true;
+ if (c(e2) && c(t2))
+ return e2.getTime() === t2.getTime();
+ if (r(e2) && r(t2)) {
+ if (e2.length !== t2.length)
+ return false;
+ let r2 = true;
+ for (let n2 = 0; n2 < e2.length; n2++)
+ if (!f(e2[n2], t2[n2])) {
+ r2 = false;
+ break;
+ }
+ return r2;
+ }
+ if (s(e2) && s(t2)) {
+ if (Object.keys(e2).length !== Object.keys(t2).length)
+ return false;
+ let r2 = true;
+ for (const n2 in e2)
+ if (!g(t2, n2) || !f(e2[n2], t2[n2])) {
+ r2 = false;
+ break;
+ }
+ return r2;
+ }
+ return e2 === t2;
+ }, p = Number.MAX_SAFE_INTEGER, h = (e2, t2) => {
+ if ((!e2 || e2 < 0) && (e2 = 0), t2 || (t2 = p), e2 === t2)
+ return t2;
+ e2 > t2 && (e2 = Math.min(e2, t2), t2 = Math.max(e2, t2));
+ const r2 = e2, n2 = t2 - e2 + 1;
+ return Math.floor(Math.random() * n2) + r2;
+ }, d = (e2) => {
+ const t2 = o(e2) ? String(e2) : e2;
+ if (!n(t2))
+ throw new Error("InvalidInput: String required.");
+ return t2;
+ }, m = (e2) => {
+ const t2 = d(e2).toLowerCase();
+ return t2.length > 1 ? t2.charAt(0).toUpperCase() + t2.slice(1) : t2.toUpperCase();
+ }, b = (e2, t2, a2) => {
+ let i2 = d(e2);
+ if (o(t2) && (t2 = String(t2)), o(a2) && (a2 = String(a2)), n(t2) && n(a2)) {
+ const e3 = i2.split(t2);
+ i2 = e3.join(a2);
+ } else if (r(t2) && n(a2))
+ t2.forEach((e3) => {
+ i2 = b(i2, e3, a2);
+ });
+ else if (r(t2) && r(a2) && t2.length === a2.length) {
+ const e3 = t2.length;
+ if (e3 > 0)
+ for (let r2 = 0; r2 < e3; r2++) {
+ const e4 = t2[r2], n2 = a2[r2];
+ i2 = b(i2, e4, n2);
+ }
+ }
+ return i2;
+ }, y = (e2) => {
+ let t2 = d(e2);
+ const r2 = { a: "\xE1|\xE0|\u1EA3|\xE3|\u1EA1|\u0103|\u1EAF|\u1EB7|\u1EB1|\u1EB3|\u1EB5|\xE2|\u1EA5|\u1EA7|\u1EA9|\u1EAB|\u1EAD|\xE4", A: "\xC1|\xC0|\u1EA2|\xC3|\u1EA0|\u0102|\u1EAE|\u1EB6|\u1EB0|\u1EB2|\u1EB4|\xC2|\u1EA4|\u1EA6|\u1EA8|\u1EAA|\u1EAC|\xC4", c: "\xE7", C: "\xC7", d: "\u0111", D: "\u0110", e: "\xE9|\xE8|\u1EBB|\u1EBD|\u1EB9|\xEA|\u1EBF|\u1EC1|\u1EC3|\u1EC5|\u1EC7|\xEB", E: "\xC9|\xC8|\u1EBA|\u1EBC|\u1EB8|\xCA|\u1EBE|\u1EC0|\u1EC2|\u1EC4|\u1EC6|\xCB", i: "\xED|\xEC|\u1EC9|\u0129|\u1ECB|\xEF|\xEE", I: "\xCD|\xCC|\u1EC8|\u0128|\u1ECA|\xCF|\xCE", o: "\xF3|\xF2|\u1ECF|\xF5|\u1ECD|\xF4|\u1ED1|\u1ED3|\u1ED5|\u1ED7|\u1ED9|\u01A1|\u1EDB|\u1EDD|\u1EDF|\u1EE1|\u1EE3|\xF6", O: "\xD3|\xD2|\u1ECE|\xD5|\u1ECC|\xD4|\u1ED0|\u1ED2|\u1ED4|\xD4|\u1ED8|\u01A0|\u1EDA|\u1EDC|\u1EDE|\u1EE0|\u1EE2|\xD6", u: "\xFA|\xF9|\u1EE7|\u0169|\u1EE5|\u01B0|\u1EE9|\u1EEB|\u1EED|\u1EEF|\u1EF1|\xFB", U: "\xDA|\xD9|\u1EE6|\u0168|\u1EE4|\u01AF|\u1EE8|\u1EEA|\u1EEC|\u1EEE|\u1EF0|\xDB", y: "\xFD|\u1EF3|\u1EF7|\u1EF9|\u1EF5", Y: "\xDD|\u1EF2|\u1EF6|\u1EF8|\u1EF4" }, n2 = (e3, r3) => {
+ t2 = b(t2, e3, r3);
+ };
+ for (const e3 in r2)
+ if (g(r2, e3)) {
+ r2[e3].split("|").forEach((t3) => n2(t3, e3));
+ }
+ return t2;
+ }, w = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], M = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], j = () => new Date(), D = () => Date.now(), S = j().getTimezoneOffset(), N = (() => {
+ const e2 = Math.abs(S / 60);
+ return ["GMT", S < 0 ? "+" : "-", String(e2).padStart(4, "0")].join("");
+ })(), O = (e2) => String(e2 < 10 ? "0" + e2 : e2), A = (e2, t2 = "D, M d, Y h:i:s A") => {
+ const r2 = c(e2) ? e2 : new Date(e2);
+ if (!c(r2))
+ throw new Error("InvalidInput: Number or Date required.");
+ const n2 = t2.includes("a") || t2.includes("A"), o2 = w, a2 = M, i2 = { Y: () => r2.getFullYear(), y: () => (i2.Y() + "").slice(-2), F: () => a2[i2.n() - 1], M: () => (i2.F() + "").slice(0, 3), m: () => O(i2.n()), n: () => r2.getMonth() + 1, S: () => ((e3) => {
+ let t3 = e3 + " ";
+ const r3 = t3.charAt(t3.length - 2);
+ return t3 = r3 === "1" ? "st" : r3 === "2" ? "nd" : r3 === "3" ? "rd" : "th", t3;
+ })(i2.j()), j: () => r2.getDate(), d: () => O(i2.j()), t: () => new Date(i2.Y(), i2.n(), 0).getDate(), w: () => r2.getDay(), l: () => o2[i2.w()], D: () => (i2.l() + "").slice(0, 3), G: () => r2.getHours(), g: () => i2.G() % 12 || 12, h: () => O(n2 ? i2.g() : i2.G()), i: () => O(r2.getMinutes()), s: () => O(r2.getSeconds()), a: () => i2.G() > 11 ? "pm" : "am", A: () => i2.a().toUpperCase(), O: () => N };
+ return t2.replace(/\.*\\?([a-z])/gi, (e3, t3) => i2[e3] ? i2[e3]() : t3);
+ };
+ const I = (e2, t2, r2, n2 = {}) => {
+ const { writable: o2 = false, configurable: a2 = false, enumerable: i2 = false } = n2;
+ Object.defineProperty(e2, t2, { value: r2, writable: o2, configurable: a2, enumerable: i2 });
+ }, v = (e2) => {
+ const t2 = e2, r2 = () => t2 == null, n2 = Object.create({});
+ return I(n2, "__value__", t2, { enumerable: true }), I(n2, "__type__", "Maybe", { enumerable: true }), I(n2, "isNil", r2), I(n2, "value", () => t2), I(n2, "map", (e3) => v(r2() ? null : e3(t2))), I(n2, "if", (e3) => v(e3(t2) === true ? t2 : null)), I(n2, "else", (e3) => v(t2 || e3())), n2;
+ }, T = (e2, t2 = null) => {
+ const n2 = t2 || new Set();
+ if (n2.has(e2))
+ return e2;
+ if (n2.add(e2), c(e2))
+ return new Date(e2.valueOf());
+ const o2 = (e3) => {
+ const t3 = Object.create({});
+ for (const r2 in e3)
+ g(e3, r2) && (t3[r2] = T(e3[r2], n2));
+ return t3;
+ }, a2 = (e3) => [...e3].map((e4) => r(e4) ? a2(e4) : s(e4) ? o2(e4) : T(e4, n2));
+ return r(e2) ? a2(e2) : s(e2) ? o2(e2) : e2;
+ }, E = (e2, t2, n2 = false, o2 = []) => {
+ for (const a2 in e2)
+ if (!(o2.length > 0 && o2.includes(a2)) && (!n2 || n2 && g(t2, a2))) {
+ const i2 = e2[a2], l2 = t2[a2];
+ s(l2) && s(i2) || r(l2) && r(i2) ? t2[a2] = E(i2, t2[a2], n2, o2) : t2[a2] = T(i2);
+ }
+ return t2;
+ }, _ = (e2, t2) => e2 > t2 ? 1 : e2 < t2 ? -1 : 0, q = (e2 = [], t2 = null) => {
+ const r2 = [...e2], n2 = t2 || _;
+ return r2.sort(n2), r2;
+ }, C = (e2 = []) => {
+ const t2 = [...e2], r2 = [];
+ let n2 = t2.length;
+ for (; n2 > 0; ) {
+ const e3 = Math.floor(Math.random() * n2);
+ r2.push(t2.splice(e3, 1)[0]), n2--;
+ }
+ return r2;
+ };
+ e.clone = T, e.compose = (...e2) => e2.reduce((e3, t2) => (r2) => e3(t2(r2))), e.copies = E, e.curry = (e2) => {
+ const t2 = e2.length, r2 = (t3, n2) => t3 > 0 ? (...e3) => r2(t3 - e3.length, [...n2, ...e3]) : e2(...n2);
+ return r2(t2, []);
+ }, e.equals = f, e.escapeHTML = (e2) => d(e2).replace(/&/g, "&").replace(//g, ">").replace(/"/g, """), e.genid = (e2, t2 = "") => {
+ const r2 = "abcdefghijklmnopqrstuvwxyz", n2 = r2.toUpperCase(), o2 = [r2, n2, "0123456789"].join("").split("").sort(() => Math.random() > 0.5).join(""), a2 = o2.length, i2 = Math.max(e2 || 32, t2.length);
+ let l2 = t2;
+ for (; l2.length < i2; ) {
+ const e3 = h(0, a2);
+ l2 += o2.charAt(e3) || "";
+ }
+ return l2;
+ }, e.hasProperty = g, e.isArray = r, e.isBoolean = (e2) => Boolean(e2) === e2, e.isDate = c, e.isElement = (e2) => t(e2).match(/^\[object HTML\w*Element]$/) !== null, e.isEmail = (e2) => n(e2) && /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i.test(e2), e.isEmpty = u, e.isFunction = (e2) => t(e2) === "[object Function]", e.isInteger = (e2) => Number.isInteger(e2), e.isLetter = (e2) => n(e2) && /^[a-z]+$/i.test(e2), e.isNil = l, e.isNull = a, e.isNumber = o, e.isObject = s, e.isString = n, e.isUndefined = i, e.maybe = v, e.md5 = (e2) => {
+ for (var t2 = [], r2 = 0; r2 < 64; )
+ t2[r2] = 0 | 4294967296 * Math.abs(Math.sin(++r2));
+ for (var n2, o2, a2, i2, l2 = [], s2 = decodeURIComponent(encodeURI(e2)), c2 = s2.length, u2 = [n2 = 1732584193, o2 = -271733879, ~n2, ~o2], g2 = 0; g2 <= c2; )
+ l2[g2 >> 2] |= (s2.charCodeAt(g2) || 128) << g2++ % 4 * 8;
+ for (l2[e2 = 16 * (c2 + 8 >> 6) + 14] = 8 * c2, g2 = 0; g2 < e2; g2 += 16) {
+ for (c2 = u2, i2 = 0; i2 < 64; )
+ c2 = [a2 = c2[3], (n2 = 0 | c2[1]) + ((a2 = c2[0] + [n2 & (o2 = c2[2]) | ~n2 & a2, a2 & n2 | ~a2 & o2, n2 ^ o2 ^ a2, o2 ^ (n2 | ~a2)][c2 = i2 >> 4] + (t2[i2] + (0 | l2[[i2, 5 * i2 + 1, 3 * i2 + 5, 7 * i2][c2] % 16 + g2]))) << (c2 = [7, 12, 17, 22, 5, 9, 14, 20, 4, 11, 16, 23, 6, 10, 15, 21][4 * c2 + i2++ % 4]) | a2 >>> 32 - c2), n2, o2];
+ for (i2 = 4; i2; )
+ u2[--i2] = u2[i2] + c2[i2];
+ }
+ for (e2 = ""; i2 < 32; )
+ e2 += (u2[i2 >> 3] >> 4 * (1 ^ 7 & i2++) & 15).toString(16);
+ return e2;
+ }, e.now = j, e.pick = (e2 = [], t2 = 1) => {
+ const r2 = C(e2), n2 = Math.max(1, t2), o2 = Math.min(n2, r2.length - 1);
+ return r2.splice(0, o2);
+ }, e.pipe = (...e2) => e2.reduce((e3, t2) => (r2) => t2(e3(r2))), e.randint = h, e.replaceAll = b, e.shuffle = C, e.slugify = (e2, t2 = "-") => y(e2).trim().toLowerCase().replace(/\W+/g, " ").replace(/\s+/g, " ").replace(/\s/g, t2), e.sort = q, e.sortBy = (e2 = [], t2 = 1, r2 = "") => n(r2) && g(e2[0], r2) ? q(e2, (e3, n2) => e3[r2] > n2[r2] ? t2 : e3[r2] < n2[r2] ? -1 * t2 : 0) : e2, e.stripAccent = y, e.stripTags = (e2) => d(e2).replace(/<.*?>/gi, " ").replace(/\s\s+/g, " ").trim(), e.time = D, e.toDateString = A, e.toLocalDateString = (e2 = D()) => {
+ const t2 = c(e2) ? e2 : new Date(e2);
+ if (!c(t2))
+ throw new Error("InvalidInput: Number or Date required.");
+ return A(t2, "D, j M Y h:i:s O");
+ }, e.toRelativeTime = (e2 = D()) => {
+ const t2 = c(e2) ? e2 : new Date(e2);
+ if (!c(t2))
+ throw new Error("InvalidInput: Number or Date required.");
+ let r2 = j() - t2, n2 = parseInt(t2, 10);
+ if (isNaN(n2) && (n2 = 0), r2 <= n2)
+ return "Just now";
+ let o2 = null;
+ const a2 = { millisecond: 1, second: 1e3, minute: 60, hour: 60, day: 24, month: 30, year: 12 };
+ for (const e3 in a2) {
+ if (r2 < a2[e3])
+ break;
+ o2 = e3, r2 /= a2[e3];
+ }
+ return r2 = Math.floor(r2), r2 !== 1 && (o2 += "s"), [r2, o2].join(" ") + " ago";
+ }, e.toUTCDateString = (e2 = D()) => {
+ const t2 = c(e2) ? e2 : new Date(e2);
+ if (!c(t2))
+ throw new Error("InvalidInput: Number or Date required.");
+ const r2 = t2.getMinutes(), n2 = new Date(t2);
+ return n2.setMinutes(r2 + S), `${A(n2, "D, j M Y h:i:s")} GMT+0000`;
+ }, e.truncate = (e2, t2) => {
+ const r2 = d(e2), n2 = t2 || 140;
+ if (r2.length <= n2)
+ return r2;
+ let o2 = r2.substring(0, n2);
+ const a2 = o2.split(" ");
+ let i2 = "";
+ return a2.length > 1 ? (a2.pop(), i2 += a2.join(" "), i2.length < r2.length && (i2 += "...")) : (o2 = o2.substring(0, n2 - 3), i2 = o2 + "..."), i2;
+ }, e.ucfirst = m, e.ucwords = (e2) => d(e2).split(" ").map((e3) => m(e3)).join(" "), e.unescapeHTML = (e2) => d(e2).replace(/"/g, '"').replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&"), e.unique = (e2 = []) => [...new Set(e2)], Object.defineProperty(e, "__esModule", { value: true });
+ });
+ }
+});
+
+// node_modules/oembed-parser/src/config.js
+var require_config = __commonJS({
+ "node_modules/oembed-parser/src/config.js"(exports, module2) {
+ var { clone, copies } = require_bella_min();
+ var requestOptions = {
+ headers: {
+ "user-agent": "Mozilla/5.0 (X11; Linux i686; rv:94.0) Gecko/20100101 Firefox/94.0",
+ accept: "application/json; charset=utf-8"
+ },
+ responseType: "json",
+ responseEncoding: "utf8",
+ timeout: 6e4,
+ maxRedirects: 3
+ };
+ module2.exports = {
+ getRequestOptions: () => {
+ return clone(requestOptions);
+ },
+ setRequestOptions: (opts) => {
+ copies(opts, requestOptions);
+ }
+ };
+ }
+});
+
+// node_modules/oembed-parser/src/utils/retrieve.js
+var require_retrieve = __commonJS({
+ "node_modules/oembed-parser/src/utils/retrieve.js"(exports, module2) {
+ var axios = require_axios2();
+ var { getRequestOptions } = require_config();
+ module2.exports = (url) => __async(exports, null, function* () {
+ try {
+ const res = yield axios.get(url, getRequestOptions());
+ const contentType = res.headers["content-type"] || "";
+ if (!contentType || !contentType.includes("application/json")) {
+ return null;
+ }
+ return res.data;
+ } catch (err) {
+ return null;
+ }
+ });
+ }
+});
+
+// node_modules/oembed-parser/src/utils/fetchEmbed.js
+var require_fetchEmbed = __commonJS({
+ "node_modules/oembed-parser/src/utils/fetchEmbed.js"(exports, module2) {
+ var retrieve = require_retrieve();
+ var isFacebookGraphDependent = (url) => {
+ return url.includes("facebook.com") || url.includes("instagram.com");
+ };
+ var getFacebookGraphToken = () => {
+ const env = process.env || {};
+ const appId = env.FACEBOOK_APP_ID || "845078789498971";
+ const clientToken = env.FACEBOOK_CLIENT_TOKEN || "8ff3ab4ddd45b8f018b35c4fb7edac62";
+ return `access_token=${appId}|${clientToken}`;
+ };
+ var getRegularUrl = (query, basseUrl) => {
+ return basseUrl.replace(/\{format\}/g, "json") + "?" + query;
+ };
+ var fetchEmbed = (_0, _1, ..._2) => __async(exports, [_0, _1, ..._2], function* (url, provider, params = {}) {
+ const queries = [
+ "format=json",
+ `url=${encodeURIComponent(url)}`
+ ];
+ const {
+ maxwidth = 0,
+ maxheight = 0
+ } = params;
+ if (maxwidth > 0) {
+ queries.push(`maxwidth=${maxwidth}`);
+ }
+ if (maxheight > 0) {
+ queries.push(`maxheight=${maxheight}`);
+ }
+ if (isFacebookGraphDependent(provider.providerUrl)) {
+ queries.push(getFacebookGraphToken());
+ }
+ const query = queries.join("&");
+ const link = getRegularUrl(query, provider.fetchEndpoint);
+ const body = retrieve(link);
+ return body;
+ });
+ module2.exports = fetchEmbed;
+ }
+});
+
+// node_modules/oembed-parser/src/utils/getDomain.js
+var require_getDomain = __commonJS({
+ "node_modules/oembed-parser/src/utils/getDomain.js"(exports, module2) {
+ module2.exports = (url = "") => {
+ try {
+ const { host } = new URL(url);
+ return host;
+ } catch (err) {
+ return "";
+ }
+ };
+ }
+});
+
+// node_modules/oembed-parser/src/utils/providers.json
+var require_providers = __commonJS({
+ "node_modules/oembed-parser/src/utils/providers.json"(exports, module2) {
+ module2.exports = [
+ {
+ provider_name: "23HQ",
+ provider_url: "http://www.23hq.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.23hq.com/*/photo/*"
+ ],
+ url: "http://www.23hq.com/23/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Abraia",
+ provider_url: "https://abraia.me",
+ endpoints: [
+ {
+ schemes: [
+ "https://store.abraia.me/*"
+ ],
+ url: "https://api.abraia.me/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "ActBlue",
+ provider_url: "https://secure.actblue.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://secure.actblue.com/donate/*"
+ ],
+ url: "https://secure.actblue.com/cf/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Adways",
+ provider_url: "http://www.adways.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://play.adpaths.com/experience/*"
+ ],
+ url: "http://play.adpaths.com/oembed/*"
+ }
+ ]
+ },
+ {
+ provider_name: "afreecaTV",
+ provider_url: "https://www.afreecatv.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://v.afree.ca/ST/",
+ "https://vod.afreecatv.com/ST/",
+ "https://vod.afreecatv.com/PLAYER/STATION/"
+ ],
+ url: "https://openapi.afreecatv.com/vod/embedinfo",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Altium LLC",
+ provider_url: "https://altium.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://altium.com/viewer/*"
+ ],
+ url: "https://viewer.altium.com/shell/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Altru",
+ provider_url: "https://www.altrulabs.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://app.altrulabs.com/*/*?answer_id=*",
+ "https://app.altrulabs.com/player/*"
+ ],
+ url: "https://api.altrulabs.com/api/v1/social/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "amCharts Live Editor",
+ provider_url: "https://live.amcharts.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://live.amcharts.com/*",
+ "https://live.amcharts.com/*"
+ ],
+ url: "https://live.amcharts.com/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Animatron",
+ provider_url: "https://www.animatron.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.animatron.com/project/*",
+ "https://animatron.com/project/*"
+ ],
+ url: "https://animatron.com/oembed/json",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Animoto",
+ provider_url: "http://animoto.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://animoto.com/play/*"
+ ],
+ url: "http://animoto.com/oembeds/create"
+ }
+ ]
+ },
+ {
+ provider_name: "AnnieMusic",
+ provider_url: "https://anniemusic.app",
+ endpoints: [
+ {
+ schemes: [
+ "https://anniemusic.app/t/*",
+ "https://anniemusic.app/p/*"
+ ],
+ url: "https://api.anniemusic.app/api/v1/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Apester",
+ provider_url: "https://www.apester.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://renderer.apester.com/v2/*?preview=true&iframe_preview=true"
+ ],
+ url: "https://display.apester.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "ArcGIS StoryMaps",
+ provider_url: "https://storymaps.arcgis.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://storymaps.arcgis.com/stories/*"
+ ],
+ url: "https://storymaps.arcgis.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Archivos",
+ provider_url: "https://app.archivos.digital",
+ endpoints: [
+ {
+ schemes: [
+ "https://app.archivos.digital/app/view/*"
+ ],
+ url: "https://app.archivos.digital/oembed/"
+ }
+ ]
+ },
+ {
+ provider_name: "Audioboom",
+ provider_url: "https://audioboom.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://audioboom.com/channels/*",
+ "https://audioboom.com/channel/*",
+ "https://audioboom.com/posts/*"
+ ],
+ url: "https://audioboom.com/publishing/oembed/v4.{format}",
+ formats: [
+ "json",
+ "xml"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "AudioClip",
+ provider_url: "https://audioclip.naver.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://audioclip.naver.com/channels/*/clips/*",
+ "https://audioclip.naver.com/audiobooks/*"
+ ],
+ url: "https://audioclip.naver.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Audiomack",
+ provider_url: "https://audiomack.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://audiomack.com/*/song/*",
+ "https://audiomack.com/*/album/*",
+ "https://audiomack.com/*/playlist/*"
+ ],
+ url: "https://audiomack.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Audiomeans",
+ provider_url: "https://audiomeans.fr",
+ endpoints: [
+ {
+ schemes: [
+ "https://podcasts.audiomeans.fr/*"
+ ],
+ url: "https://podcasts.audiomeans.fr/services/oembed",
+ discovery: false,
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Avocode",
+ provider_url: "https://www.avocode.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://app.avocode.com/view/*"
+ ],
+ url: "https://stage-embed.avocode.com/api/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Backtracks",
+ provider_url: "https://backtracks.fm",
+ endpoints: [
+ {
+ schemes: [
+ "https://backtracks.fm/*/*/e/*",
+ "https://backtracks.fm/*/s/*/*",
+ "https://backtracks.fm/*/*/*/*/e/*/*",
+ "https://backtracks.fm/*",
+ "http://backtracks.fm/*"
+ ],
+ url: "https://backtracks.fm/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Beautiful.AI",
+ provider_url: "https://www.beautiful.ai/",
+ endpoints: [
+ {
+ url: "https://www.beautiful.ai/api/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Blackfire.io",
+ provider_url: "https://blackfire.io",
+ endpoints: [
+ {
+ schemes: [
+ "https://blackfire.io/profiles/*/graph",
+ "https://blackfire.io/profiles/compare/*/graph"
+ ],
+ url: "https://blackfire.io/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Blogcast",
+ provider_url: "https://blogcast.host/",
+ endpoints: [
+ {
+ schemes: [
+ "https://blogcast.host/embed/*",
+ "https://blogcast.host/embedly/*"
+ ],
+ url: "https://blogcast.host/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Box Office Buz",
+ provider_url: "http://boxofficebuz.com",
+ endpoints: [
+ {
+ url: "http://boxofficebuz.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "BrioVR",
+ provider_url: "https://view.briovr.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://view.briovr.com/api/v1/worlds/oembed/*"
+ ],
+ url: "https://view.briovr.com/api/v1/worlds/oembed/"
+ }
+ ]
+ },
+ {
+ provider_name: "Buttondown",
+ provider_url: "https://buttondown.email/",
+ endpoints: [
+ {
+ schemes: [
+ "https://buttondown.email/*"
+ ],
+ url: "https://buttondown.email/embed",
+ formats: [
+ "json"
+ ],
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Byzart Project",
+ provider_url: "https://cmc.byzart.eu",
+ endpoints: [
+ {
+ schemes: [
+ "https://cmc.byzart.eu/files/*"
+ ],
+ url: "https://cmc.byzart.eu/oembed/",
+ discovery: false
+ }
+ ]
+ },
+ {
+ provider_name: "Cacoo",
+ provider_url: "https://cacoo.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://cacoo.com/diagrams/*"
+ ],
+ url: "http://cacoo.com/oembed.{format}"
+ }
+ ]
+ },
+ {
+ provider_name: "Catapult",
+ provider_url: "https://www.catapult.app/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www-catapult-app.sandbox.hs-sites.com/video-page*",
+ "https://www-catapult.app/video-page*"
+ ],
+ url: "https://www.catapult.app/_hcms/api/video/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "CatBoat",
+ provider_url: "http://img.catbo.at/",
+ endpoints: [
+ {
+ schemes: [
+ "http://img.catbo.at/*"
+ ],
+ url: "http://img.catbo.at/oembed.json",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Ceros",
+ provider_url: "http://www.ceros.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://view.ceros.com/*"
+ ],
+ url: "http://view.ceros.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "ChartBlocks",
+ provider_url: "http://www.chartblocks.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://public.chartblocks.com/c/*"
+ ],
+ url: "http://embed.chartblocks.com/1.0/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "chirbit.com",
+ provider_url: "http://www.chirbit.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://chirb.it/*"
+ ],
+ url: "http://chirb.it/oembed.{format}",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "CHROCO",
+ provider_url: "https://chroco.ooo/",
+ endpoints: [
+ {
+ schemes: [
+ "https://chroco.ooo/mypage/*",
+ "https://chroco.ooo/story/*"
+ ],
+ url: "https://chroco.ooo/embed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "CircuitLab",
+ provider_url: "https://www.circuitlab.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.circuitlab.com/circuit/*"
+ ],
+ url: "https://www.circuitlab.com/circuit/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Clipland",
+ provider_url: "http://www.clipland.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.clipland.com/v/*",
+ "https://www.clipland.com/v/*"
+ ],
+ url: "https://www.clipland.com/api/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Clyp",
+ provider_url: "http://clyp.it/",
+ endpoints: [
+ {
+ schemes: [
+ "http://clyp.it/*",
+ "http://clyp.it/playlist/*"
+ ],
+ url: "http://api.clyp.it/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "CoCo Corp",
+ provider_url: "https://ilovecoco.video",
+ endpoints: [
+ {
+ schemes: [
+ "https://app.ilovecoco.video/*/embed"
+ ],
+ url: "https://app.ilovecoco.video/api/oembed.{format}",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "CodeHS",
+ provider_url: "http://www.codehs.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://codehs.com/editor/share_abacus/*"
+ ],
+ url: "https://codehs.com/api/sharedprogram/*/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "CodePen",
+ provider_url: "https://codepen.io",
+ endpoints: [
+ {
+ schemes: [
+ "http://codepen.io/*",
+ "https://codepen.io/*"
+ ],
+ url: "https://codepen.io/api/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Codepoints",
+ provider_url: "https://codepoints.net",
+ endpoints: [
+ {
+ schemes: [
+ "http://codepoints.net/*",
+ "https://codepoints.net/*",
+ "http://www.codepoints.net/*",
+ "https://www.codepoints.net/*"
+ ],
+ url: "https://codepoints.net/api/v1/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "CodeSandbox",
+ provider_url: "https://codesandbox.io",
+ endpoints: [
+ {
+ schemes: [
+ "https://codesandbox.io/s/*",
+ "https://codesandbox.io/embed/*"
+ ],
+ url: "https://codesandbox.io/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "CollegeHumor",
+ provider_url: "http://www.collegehumor.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.collegehumor.com/video/*"
+ ],
+ url: "http://www.collegehumor.com/oembed.{format}",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Commaful",
+ provider_url: "https://commaful.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://commaful.com/play/*"
+ ],
+ url: "https://commaful.com/api/oembed/"
+ }
+ ]
+ },
+ {
+ provider_name: "Coub",
+ provider_url: "http://coub.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://coub.com/view/*",
+ "http://coub.com/embed/*"
+ ],
+ url: "http://coub.com/api/oembed.{format}"
+ }
+ ]
+ },
+ {
+ provider_name: "Crowd Ranking",
+ provider_url: "http://crowdranking.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://crowdranking.com/*/*"
+ ],
+ url: "http://crowdranking.com/api/oembed.{format}"
+ }
+ ]
+ },
+ {
+ provider_name: "Cueup DJ Booking",
+ provider_url: "https://cueup.io",
+ endpoints: [
+ {
+ schemes: [
+ "https://cueup.io/user/*/sounds/*"
+ ],
+ url: "https://gql.cueup.io/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Curated",
+ provider_url: "https://curated.co/",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.curated.co/*"
+ ],
+ url: "https://api.curated.co/oembed",
+ formats: [
+ "json"
+ ],
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "CustomerDB",
+ provider_url: "http://customerdb.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://app.customerdb.com/share/*"
+ ],
+ url: "https://app.customerdb.com/embed"
+ }
+ ]
+ },
+ {
+ provider_name: "Dailymotion",
+ provider_url: "https://www.dailymotion.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.dailymotion.com/video/*"
+ ],
+ url: "https://www.dailymotion.com/services/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "DALEXNI",
+ provider_url: "https://dalexni.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://dalexni.com/i/*"
+ ],
+ url: "https://dalexni.com/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Datawrapper",
+ provider_url: "http://www.datawrapper.de",
+ endpoints: [
+ {
+ schemes: [
+ "https://datawrapper.dwcdn.net/*"
+ ],
+ url: "https://api.datawrapper.de/v3/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Deseret News",
+ provider_url: "https://www.deseret.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.deseret.com/*"
+ ],
+ url: "https://embed.deseret.com/"
+ }
+ ]
+ },
+ {
+ provider_name: "Deviantart.com",
+ provider_url: "http://www.deviantart.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://*.deviantart.com/art/*",
+ "http://*.deviantart.com/*#/d*",
+ "http://fav.me/*",
+ "http://sta.sh/*",
+ "https://*.deviantart.com/art/*",
+ "https://*.deviantart.com/*/art/*",
+ 'https://sta.sh/*",',
+ 'https://*.deviantart.com/*#/d*"'
+ ],
+ url: "http://backend.deviantart.com/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Didacte",
+ provider_url: "https://www.didacte.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.didacte.com/a/course/*"
+ ],
+ url: "https://*.didacte.com/cards/oembed",
+ discovery: true,
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Digiteka",
+ provider_url: "https://www.ultimedia.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.ultimedia.com/central/video/edit/id/*/topic_id/*/",
+ "https://www.ultimedia.com/default/index/videogeneric/id/*/showtitle/1/viewnc/1",
+ "https://www.ultimedia.com/default/index/videogeneric/id/*"
+ ],
+ url: "https://www.ultimedia.com/api/search/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "DocDroid",
+ provider_url: "https://www.docdroid.net/",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.docdroid.net/*",
+ "http://*.docdroid.net/*",
+ "https://docdro.id/*",
+ "http://docdro.id/*",
+ "https://*.docdroid.com/*",
+ "http://*.docdroid.com/*"
+ ],
+ url: "https://www.docdroid.net/api/oembed",
+ formats: [
+ "json"
+ ],
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Dotsub",
+ provider_url: "http://dotsub.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://dotsub.com/view/*"
+ ],
+ url: "http://dotsub.com/services/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "DTube",
+ provider_url: "https://d.tube/",
+ endpoints: [
+ {
+ schemes: [
+ "https://d.tube/v/*"
+ ],
+ url: "https://api.d.tube/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "eduMedia",
+ provider_url: "https://www.edumedia-sciences.com/",
+ endpoints: [
+ {
+ url: "https://www.edumedia-sciences.com/oembed.json",
+ discovery: true
+ },
+ {
+ url: "https://www.edumedia-sciences.com/oembed.xml",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "EgliseInfo",
+ provider_url: "http://egliseinfo.catholique.fr/",
+ endpoints: [
+ {
+ schemes: [
+ "http://egliseinfo.catholique.fr/*"
+ ],
+ url: "http://egliseinfo.catholique.fr/api/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Embedery",
+ provider_url: "https://embedery.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://embedery.com/widget/*"
+ ],
+ url: "https://embedery.com/api/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Embedly",
+ provider_url: "http://api.embed.ly/",
+ endpoints: [
+ {
+ url: "http://api.embed.ly/1/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Enystre Music",
+ provider_url: "https://music.enystre.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://music.enystre.com/lyrics/*"
+ ],
+ url: "https://music.enystre.com/oembed",
+ formats: [
+ "json",
+ "xml"
+ ],
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Ethfiddle",
+ provider_url: "https://www.ethfiddle.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://ethfiddle.com/*"
+ ],
+ url: "https://ethfiddle.com/services/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "EventLive",
+ provider_url: "https://eventlive.pro",
+ endpoints: [
+ {
+ schemes: [
+ "https://evt.live/*",
+ "https://evt.live/*/*",
+ "https://live.eventlive.pro/*",
+ "https://live.eventlive.pro/*/*"
+ ],
+ url: "https://evt.live/api/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Ex.Co",
+ provider_url: "https://ex.co",
+ endpoints: [
+ {
+ schemes: [
+ "https://app.ex.co/stories/*",
+ "https://www.playbuzz.com/*"
+ ],
+ url: "https://oembed.ex.co/item",
+ discovery: false
+ }
+ ]
+ },
+ {
+ provider_name: "Eyrie",
+ provider_url: "https://eyrie.io/",
+ endpoints: [
+ {
+ schemes: [
+ "https://eyrie.io/board/*",
+ "https://eyrie.io/sparkfun/*"
+ ],
+ url: "https://eyrie.io/v1/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Facebook",
+ provider_url: "https://www.facebook.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.facebook.com/*/posts/*",
+ "https://www.facebook.com/*/activity/*",
+ "https://www.facebook.com/*/photos/*",
+ "https://www.facebook.com/photo.php?fbid=*",
+ "https://www.facebook.com/photos/*",
+ "https://www.facebook.com/permalink.php?story_fbid=*",
+ "https://www.facebook.com/media/set?set=*",
+ "https://www.facebook.com/questions/*",
+ "https://www.facebook.com/notes/*/*/*"
+ ],
+ url: "https://graph.facebook.com/v10.0/oembed_post",
+ discovery: false
+ },
+ {
+ schemes: [
+ "https://www.facebook.com/*/videos/*",
+ "https://www.facebook.com/video.php?id=*",
+ "https://www.facebook.com/video.php?v=*"
+ ],
+ url: "https://graph.facebook.com/v10.0/oembed_video",
+ discovery: false
+ },
+ {
+ schemes: [
+ "https://www.facebook.com/*"
+ ],
+ url: "https://graph.facebook.com/v10.0/oembed_page",
+ discovery: false
+ }
+ ]
+ },
+ {
+ provider_name: "Fader",
+ provider_url: "https://app.getfader.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://app.getfader.com/projects/*/publish"
+ ],
+ url: "https://app.getfader.com/api/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Faithlife TV",
+ provider_url: "https://faithlifetv.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://faithlifetv.com/items/*",
+ "https://faithlifetv.com/items/resource/*/*",
+ "https://faithlifetv.com/media/*",
+ "https://faithlifetv.com/media/assets/*",
+ "https://faithlifetv.com/media/resource/*/*"
+ ],
+ url: "https://faithlifetv.com/api/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Firework",
+ provider_url: "https://fireworktv.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.fireworktv.com/*",
+ "https://*.fireworktv.com/embed/*/v/*"
+ ],
+ url: "https://www.fireworktv.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "FITE",
+ provider_url: "https://www.fite.tv/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.fite.tv/watch/*"
+ ],
+ url: "https://www.fite.tv/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Flat",
+ provider_url: "https://flat.io",
+ endpoints: [
+ {
+ schemes: [
+ "https://flat.io/score/*",
+ "https://*.flat.io/score/*"
+ ],
+ url: "https://flat.io/services/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Flickr",
+ provider_url: "https://www.flickr.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://*.flickr.com/photos/*",
+ "http://flic.kr/p/*",
+ "https://*.flickr.com/photos/*",
+ "https://*.*.flickr.com/*/*",
+ "http://*.*.flickr.com/*/*",
+ "https://flic.kr/p/*"
+ ],
+ url: "https://www.flickr.com/services/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Flourish",
+ provider_url: "https://flourish.studio/",
+ endpoints: [
+ {
+ schemes: [
+ "https://public.flourish.studio/visualisation/*",
+ "https://public.flourish.studio/story/*"
+ ],
+ url: "https://app.flourish.studio/api/v1/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "FOX SPORTS Australia",
+ provider_url: "http://www.foxsports.com.au",
+ endpoints: [
+ {
+ schemes: [
+ "http://fiso.foxsports.com.au/isomorphic-widget/*",
+ "https://fiso.foxsports.com.au/isomorphic-widget/*"
+ ],
+ url: "https://fiso.foxsports.com.au/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "FrameBuzz",
+ provider_url: "https://framebuzz.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://framebuzz.com/v/*",
+ "https://framebuzz.com/v/*"
+ ],
+ url: "https://framebuzz.com/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Framer",
+ provider_url: "https://www.framer.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://framer.com/share/*",
+ "https://framer.com/embed/*"
+ ],
+ url: "https://api.framer.com/web/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Geograph Britain and Ireland",
+ provider_url: "https://www.geograph.org.uk/",
+ endpoints: [
+ {
+ schemes: [
+ "http://*.geograph.org.uk/*",
+ "http://*.geograph.co.uk/*",
+ "http://*.geograph.ie/*",
+ "http://*.wikimedia.org/*_geograph.org.uk_*"
+ ],
+ url: "http://api.geograph.org.uk/api/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Geograph Channel Islands",
+ provider_url: "http://channel-islands.geograph.org/",
+ endpoints: [
+ {
+ schemes: [
+ "http://*.geograph.org.gg/*",
+ "http://*.geograph.org.je/*",
+ "http://channel-islands.geograph.org/*",
+ "http://channel-islands.geographs.org/*",
+ "http://*.channel.geographs.org/*"
+ ],
+ url: "http://www.geograph.org.gg/api/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Geograph Germany",
+ provider_url: "http://geo-en.hlipp.de/",
+ endpoints: [
+ {
+ schemes: [
+ "http://geo-en.hlipp.de/*",
+ "http://geo.hlipp.de/*",
+ "http://germany.geograph.org/*"
+ ],
+ url: "http://geo.hlipp.de/restapi.php/api/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Getty Images",
+ provider_url: "http://www.gettyimages.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://gty.im/*"
+ ],
+ url: "http://embed.gettyimages.com/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Gfycat",
+ provider_url: "https://gfycat.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://gfycat.com/*",
+ "http://www.gfycat.com/*",
+ "https://gfycat.com/*",
+ "https://www.gfycat.com/*"
+ ],
+ url: "https://api.gfycat.com/v1/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Gifnote",
+ provider_url: "https://www.gifnote.com/",
+ endpoints: [
+ {
+ url: "https://www.gifnote.com/services/oembed",
+ schemes: [
+ "https://www.gifnote.com/play/*"
+ ],
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "GIPHY",
+ provider_url: "https://giphy.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://giphy.com/gifs/*",
+ "https://giphy.com/clips/*",
+ "http://gph.is/*",
+ "https://media.giphy.com/media/*/giphy.gif"
+ ],
+ url: "https://giphy.com/services/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "GloriaTV",
+ provider_url: "https://gloria.tv/",
+ endpoints: [
+ {
+ url: "https://gloria.tv/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Gong",
+ provider_url: "https://www.gong.io/",
+ endpoints: [
+ {
+ schemes: [
+ "https://app.gong.io/call?id=*"
+ ],
+ url: "https://app.gong.io/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Grain",
+ provider_url: "https://grain.co",
+ endpoints: [
+ {
+ schemes: [
+ "https://grain.co/highlight/*"
+ ],
+ url: "http://api.grain.co/_/api/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "GT Channel",
+ provider_url: "https://gtchannel.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://gtchannel.com/watch/*"
+ ],
+ url: "https://api.luminery.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Gyazo",
+ provider_url: "https://gyazo.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://gyazo.com/*"
+ ],
+ url: "https://api.gyazo.com/api/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "hearthis.at",
+ provider_url: "https://hearthis.at/",
+ endpoints: [
+ {
+ schemes: [
+ "https://hearthis.at/*/*/",
+ "https://hearthis.at/*/set/*/"
+ ],
+ url: "https://hearthis.at/oembed/?format=json",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "hihaho",
+ provider_url: "https://www.hihaho.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://player.hihaho.com/*"
+ ],
+ url: "https://player.hihaho.com/services/oembed",
+ formats: [
+ "json",
+ "xml"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "HippoVideo",
+ provider_url: "https://hippovideo.io",
+ endpoints: [
+ {
+ schemes: [
+ "http://*.hippovideo.io/*",
+ "https://*.hippovideo.io/*"
+ ],
+ url: "https://www.hippovideo.io/services/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Homey",
+ provider_url: "https://homey.app",
+ endpoints: [
+ {
+ schemes: [
+ "https://homey.app/f/*",
+ "https://homey.app/*/flow/*"
+ ],
+ url: "https://homey.app/api/oembed/flow",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "HuffDuffer",
+ provider_url: "http://huffduffer.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://huffduffer.com/*/*"
+ ],
+ url: "http://huffduffer.com/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Hulu",
+ provider_url: "http://www.hulu.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.hulu.com/watch/*"
+ ],
+ url: "http://www.hulu.com/api/oembed.{format}"
+ }
+ ]
+ },
+ {
+ provider_name: "Idomoo",
+ provider_url: "https://idomoo.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.idomoo.com/*"
+ ],
+ url: "https://oembed.idomoo.com/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "iFixit",
+ provider_url: "http://www.iFixit.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.ifixit.com/Guide/View/*"
+ ],
+ url: "http://www.ifixit.com/Embed"
+ }
+ ]
+ },
+ {
+ provider_name: "IFTTT",
+ provider_url: "http://www.ifttt.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://ifttt.com/recipes/*"
+ ],
+ url: "http://www.ifttt.com/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "iHeartRadio",
+ provider_url: "https://www.iheart.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.iheart.com/podcast/*/*"
+ ],
+ url: "https://www.iheart.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Indaco",
+ provider_url: "https://player.indacolive.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://player.indacolive.com/player/jwp/clients/*"
+ ],
+ url: "https://player.indacolive.com/services/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Infogram",
+ provider_url: "https://infogram.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://infogram.com/*"
+ ],
+ url: "https://infogram.com/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Infoveave",
+ provider_url: "https://infoveave.net/",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.infoveave.net/E/*",
+ "https://*.infoveave.net/P/*"
+ ],
+ url: "https://infoveave.net/services/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Injurymap",
+ provider_url: "https://www.injurymap.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.injurymap.com/exercises/*"
+ ],
+ url: "https://www.injurymap.com/services/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Inoreader",
+ provider_url: "https://www.inoreader.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.inoreader.com/oembed/"
+ ],
+ url: "https://www.inoreader.com/oembed/api/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "inphood",
+ provider_url: "http://inphood.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://*.inphood.com/*"
+ ],
+ url: "http://api.inphood.com/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Instagram",
+ provider_url: "https://instagram.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://instagram.com/*/p/*,",
+ "http://www.instagram.com/*/p/*,",
+ "https://instagram.com/*/p/*,",
+ "https://www.instagram.com/*/p/*,",
+ "http://instagram.com/p/*",
+ "http://instagr.am/p/*",
+ "http://www.instagram.com/p/*",
+ "http://www.instagr.am/p/*",
+ "https://instagram.com/p/*",
+ "https://instagr.am/p/*",
+ "https://www.instagram.com/p/*",
+ "https://www.instagr.am/p/*",
+ "http://instagram.com/tv/*",
+ "http://instagr.am/tv/*",
+ "http://www.instagram.com/tv/*",
+ "http://www.instagr.am/tv/*",
+ "https://instagram.com/tv/*",
+ "https://instagr.am/tv/*",
+ "https://www.instagram.com/tv/*",
+ "https://www.instagr.am/tv/*",
+ "http://www.instagram.com/reel/*",
+ "https://www.instagram.com/reel/*",
+ "http://instagram.com/reel/*",
+ "https://instagram.com/reel/*",
+ "http://instagr.am/reel/*",
+ "https://instagr.am/reel/*"
+ ],
+ url: "https://graph.facebook.com/v10.0/instagram_oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Insticator Inc",
+ provider_url: "https://www.insticator.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://ppa.insticator.com/embed-unit/*"
+ ],
+ url: "https://www.insticator.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Issuu",
+ provider_url: "https://issuu.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://issuu.com/*/docs/*"
+ ],
+ url: "https://issuu.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Jovian",
+ provider_url: "https://jovian.ai/",
+ endpoints: [
+ {
+ schemes: [
+ "https://jovian.ml/*",
+ "https://jovian.ml/viewer*",
+ "https://*.jovian.ml/*",
+ "https://jovian.ai/*",
+ "https://jovian.ai/viewer*",
+ "https://*.jovian.ai/*"
+ ],
+ url: "https://api.jovian.ai/oembed.json",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "KakaoTv",
+ provider_url: "https://tv.kakao.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://tv.kakao.com/channel/*/cliplink/*",
+ "https://tv.kakao.com/m/channel/*/cliplink/*",
+ "https://tv.kakao.com/channel/v/*",
+ "https://tv.kakao.com/channel/*/livelink/*",
+ "https://tv.kakao.com/m/channel/*/livelink/*",
+ "https://tv.kakao.com/channel/l/*"
+ ],
+ url: "https://tv.kakao.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Kickstarter",
+ provider_url: "http://www.kickstarter.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.kickstarter.com/projects/*"
+ ],
+ url: "http://www.kickstarter.com/services/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Kidoju",
+ provider_url: "https://www.kidoju.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.kidoju.com/en/x/*/*",
+ "https://www.kidoju.com/fr/x/*/*"
+ ],
+ url: "https://www.kidoju.com/api/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Kirim.Email",
+ provider_url: "https://kirim.email/",
+ endpoints: [
+ {
+ schemes: [
+ "https://halaman.email/form/*",
+ "https://aplikasi.kirim.email/form/*"
+ ],
+ url: "https://halaman.email/service/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Kit",
+ provider_url: "https://kit.co/",
+ endpoints: [
+ {
+ schemes: [
+ "http://kit.co/*/*",
+ "https://kit.co/*/*"
+ ],
+ url: "https://embed.kit.co/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Kitchenbowl",
+ provider_url: "http://www.kitchenbowl.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.kitchenbowl.com/recipe/*"
+ ],
+ url: "http://www.kitchenbowl.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "kmdr",
+ provider_url: "https://kmdr.sh",
+ endpoints: [
+ {
+ schemes: [
+ "https://app.kmdr.sh/h/*",
+ "https://app.kmdr.sh/history/*"
+ ],
+ url: "https://api.kmdr.sh/services/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Knacki",
+ provider_url: "http://jdr.knacki.info",
+ endpoints: [
+ {
+ schemes: [
+ "http://jdr.knacki.info/meuh/*",
+ "https://jdr.knacki.info/meuh/*"
+ ],
+ url: "https://jdr.knacki.info/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Knowledge Pad",
+ provider_url: "https://knowledgepad.co/",
+ endpoints: [
+ {
+ schemes: [
+ "https://knowledgepad.co/#/knowledge/*"
+ ],
+ url: "https://api.spoonacular.com/knowledge/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Kooapp",
+ provider_url: "https://kooapp.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.kooapp.com/koo/",
+ "http://*.kooapp.com/koo/"
+ ],
+ url: "https://embed-stage.kooapp.com/services/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "LearningApps.org",
+ provider_url: "http://learningapps.org/",
+ endpoints: [
+ {
+ schemes: [
+ "http://learningapps.org/*"
+ ],
+ url: "http://learningapps.org/oembed.php",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "LeMans.Pod",
+ provider_url: "https://umotion-test.univ-lemans.fr/",
+ endpoints: [
+ {
+ schemes: [
+ "https://umotion-test.univ-lemans.fr/video/*"
+ ],
+ url: "https://umotion-test.univ-lemans.fr/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Lille.Pod",
+ provider_url: "https://pod.univ-lille.fr/",
+ endpoints: [
+ {
+ schemes: [
+ "https://pod.univ-lille.fr/video/*"
+ ],
+ url: "https://pod.univ-lille.fr/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Livestream",
+ provider_url: "https://livestream.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://livestream.com/accounts/*/events/*",
+ "https://livestream.com/accounts/*/events/*/videos/*",
+ "https://livestream.com/*/events/*",
+ "https://livestream.com/*/events/*/videos/*",
+ "https://livestream.com/*/*",
+ "https://livestream.com/*/*/videos/*"
+ ],
+ url: "https://livestream.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "LottieFiles",
+ provider_url: "https://lottiefiles.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://lottiefiles.com/*",
+ "https://*.lottiefiles.com/*"
+ ],
+ url: "https://embed.lottiefiles.com/oembed",
+ discovery: true,
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Ludus",
+ provider_url: "https://ludus.one",
+ endpoints: [
+ {
+ schemes: [
+ "https://app.ludus.one/*"
+ ],
+ url: "https://app.ludus.one/oembed",
+ discovery: true,
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Lumiere",
+ provider_url: "https://latd.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.lumiere.is/v/*"
+ ],
+ url: "https://admin.lumiere.is/api/services/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "MathEmbed",
+ provider_url: "http://mathembed.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://mathembed.com/latex?inputText=*",
+ "http://mathembed.com/latex?inputText=*"
+ ],
+ url: "http://mathembed.com/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Matterport",
+ provider_url: "https://matterport.com/",
+ endpoints: [
+ {
+ url: "https://my.matterport.com/api/v1/models/oembed/",
+ discovery: true,
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "me.me",
+ provider_url: "https://me.me/",
+ endpoints: [
+ {
+ schemes: [
+ "https://me.me/i/*"
+ ],
+ url: "https://me.me/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "MediaLab",
+ provider_url: "https://www.medialab.co/",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.medialab.app/share/watch/*",
+ "https://*.medialab.co/share/watch/*",
+ "https://*.medialab.app/share/social/*",
+ "https://*.medialab.co/share/social/*",
+ "https://*.medialab.app/share/embed/*",
+ "https://*.medialab.co/share/embed/*"
+ ],
+ url: "https://*.medialab.(co|app)/api/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Medienarchiv der K\xFCnste - Z\xFCrcher Hochschule der K\xFCnste",
+ provider_url: "https://medienarchiv.zhdk.ch/",
+ endpoints: [
+ {
+ schemes: [
+ "https://medienarchiv.zhdk.ch/entries/*"
+ ],
+ url: "https://medienarchiv.zhdk.ch/oembed.{format}",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Mermaid Ink",
+ provider_url: "https://mermaid.ink",
+ endpoints: [
+ {
+ schemes: [
+ "https://mermaid.ink/img/*",
+ "https://mermaid.ink/svg/*"
+ ],
+ url: "https://mermaid.ink/services/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Microsoft Stream",
+ provider_url: "https://stream.microsoft.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.microsoftstream.com/video/*",
+ "https://*.microsoftstream.com/channel/*"
+ ],
+ url: "https://web.microsoftstream.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Minerva",
+ provider_url: "https://www.minervaknows.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.minervaknows.com/featured-recipes/*",
+ "https://www.minervaknows.com/themes/*",
+ "https://www.minervaknows.com/themes/*/recipes/*",
+ "https://app.minervaknows.com/recipes/*",
+ "https://app.minervaknows.com/recipes/*/follow"
+ ],
+ url: "https://oembed.minervaknows.com",
+ formats: [
+ "json"
+ ],
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "MixCloud",
+ provider_url: "https://mixcloud.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.mixcloud.com/*/*/",
+ "https://www.mixcloud.com/*/*/"
+ ],
+ url: "https://www.mixcloud.com/oembed/"
+ }
+ ]
+ },
+ {
+ provider_name: "Moby Picture",
+ provider_url: "http://www.mobypicture.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.mobypicture.com/user/*/view/*",
+ "http://moby.to/*"
+ ],
+ url: "http://api.mobypicture.com/oEmbed"
+ }
+ ]
+ },
+ {
+ provider_name: "Music Box Maniacs",
+ provider_url: "https://musicboxmaniacs.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://musicboxmaniacs.com/explore/melody/*"
+ ],
+ url: "https://musicboxmaniacs.com/embed/",
+ formats: [
+ "json"
+ ],
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "myBeweeg",
+ provider_url: "https://mybeweeg.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://mybeweeg.com/w/*"
+ ],
+ url: "https://mybeweeg.com/services/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Namchey",
+ provider_url: "https://namchey.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://namchey.com/embeds/*"
+ ],
+ url: "https://namchey.com/api/oembed",
+ formats: [
+ "json",
+ "xml"
+ ],
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "nanoo.tv",
+ provider_url: "https://www.nanoo.tv/",
+ endpoints: [
+ {
+ schemes: [
+ "http://*.nanoo.tv/link/*",
+ "http://nanoo.tv/link/*",
+ "http://*.nanoo.pro/link/*",
+ "http://nanoo.pro/link/*",
+ "https://*.nanoo.tv/link/*",
+ "https://nanoo.tv/link/*",
+ "https://*.nanoo.pro/link/*",
+ "https://nanoo.pro/link/*",
+ "http://media.zhdk.ch/signatur/*",
+ "http://new.media.zhdk.ch/signatur/*",
+ "https://media.zhdk.ch/signatur/*",
+ "https://new.media.zhdk.ch/signatur/*"
+ ],
+ url: "https://www.nanoo.tv/services/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Nasjonalbiblioteket",
+ provider_url: "https://www.nb.no/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.nb.no/items/*"
+ ],
+ url: "https://api.nb.no/catalog/v1/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Natural Atlas",
+ provider_url: "https://naturalatlas.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://naturalatlas.com/*",
+ "https://naturalatlas.com/*/*",
+ "https://naturalatlas.com/*/*/*",
+ "https://naturalatlas.com/*/*/*/*"
+ ],
+ url: "https://naturalatlas.com/oembed.{format}",
+ discovery: true,
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "nfb.ca",
+ provider_url: "http://www.nfb.ca/",
+ endpoints: [
+ {
+ schemes: [
+ "http://*.nfb.ca/film/*"
+ ],
+ url: "http://www.nfb.ca/remote/services/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "NFTNDX.IO",
+ provider_url: "https://www.nftndx.io/",
+ endpoints: [
+ {
+ url: "https://www.nftndx.io/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "NoPaste",
+ provider_url: "https://nopaste.ml",
+ endpoints: [
+ {
+ schemes: [
+ "https://nopaste.ml/*"
+ ],
+ url: "https://oembed.nopaste.ml",
+ discovery: false
+ }
+ ]
+ },
+ {
+ provider_name: "Observable",
+ provider_url: "https://observablehq.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://observablehq.com/@*/*",
+ "https://observablehq.com/d/*",
+ "https://observablehq.com/embed/*"
+ ],
+ url: "https://api.observablehq.com/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Odds.com.au",
+ provider_url: "https://www.odds.com.au",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.odds.com.au/*",
+ "https://odds.com.au/*"
+ ],
+ url: "https://www.odds.com.au/api/oembed/"
+ }
+ ]
+ },
+ {
+ provider_name: "Odesli (formerly Songlink)",
+ provider_url: "https://odesli.co",
+ endpoints: [
+ {
+ schemes: [
+ "https://song.link/*",
+ "https://album.link/*",
+ "https://artist.link/*",
+ "https://playlist.link/*",
+ "https://pods.link/*",
+ "https://mylink.page/*",
+ "https://odesli.co/*"
+ ],
+ url: "https://song.link/oembed",
+ formats: [
+ "json"
+ ],
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Odysee",
+ provider_url: "https://odysee.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://odysee.com/*/*",
+ "https://odysee.com/*"
+ ],
+ url: "https://odysee.com/$/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Official FM",
+ provider_url: "http://official.fm",
+ endpoints: [
+ {
+ schemes: [
+ "http://official.fm/tracks/*",
+ "http://official.fm/playlists/*"
+ ],
+ url: "http://official.fm/services/oembed.{format}"
+ }
+ ]
+ },
+ {
+ provider_name: "Omniscope",
+ provider_url: "https://omniscope.me/",
+ endpoints: [
+ {
+ schemes: [
+ "https://omniscope.me/*"
+ ],
+ url: "https://omniscope.me/_global_/oembed/json",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Omny Studio",
+ provider_url: "https://omnystudio.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://omny.fm/shows/*"
+ ],
+ url: "https://omny.fm/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Ora TV",
+ provider_url: "http://www.ora.tv/",
+ endpoints: [
+ {
+ discovery: true,
+ url: "https://www.ora.tv/oembed/*?format={format}"
+ }
+ ]
+ },
+ {
+ provider_name: "Orbitvu",
+ provider_url: "https://orbitvu.co",
+ endpoints: [
+ {
+ schemes: [
+ "https://orbitvu.co/001/*/ov3601/view",
+ "https://orbitvu.co/001/*/ov3601/*/view",
+ "https://orbitvu.co/001/*/ov3602/*/view",
+ "https://orbitvu.co/001/*/2/orbittour/*/view",
+ "https://orbitvu.co/001/*/1/2/orbittour/*/view",
+ "http://orbitvu.co/001/*/ov3601/view",
+ "http://orbitvu.co/001/*/ov3601/*/view",
+ "http://orbitvu.co/001/*/ov3602/*/view",
+ "http://orbitvu.co/001/*/2/orbittour/*/view",
+ "http://orbitvu.co/001/*/1/2/orbittour/*/view"
+ ],
+ url: "http://orbitvu.co/service/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Outplayed.tv",
+ provider_url: "https://outplayed.tv/",
+ endpoints: [
+ {
+ schemes: [
+ "https://outplayed.tv/media/*"
+ ],
+ url: "https://outplayed.tv/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Overflow",
+ provider_url: "https://overflow.io",
+ endpoints: [
+ {
+ schemes: [
+ "https://overflow.io/s/*",
+ "https://overflow.io/embed/*"
+ ],
+ url: "https://overflow.io/services/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "OZ",
+ provider_url: "https://www.oz.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.oz.com/*/video/*"
+ ],
+ url: "https://core.oz.com/oembed",
+ formats: [
+ "json",
+ "xml"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Padlet",
+ provider_url: "https://padlet.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://padlet.com/*"
+ ],
+ url: "https://padlet.com/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Pastery",
+ provider_url: "https://www.pastery.net",
+ endpoints: [
+ {
+ schemes: [
+ "http://pastery.net/*",
+ "https://pastery.net/*",
+ "http://www.pastery.net/*",
+ "https://www.pastery.net/*"
+ ],
+ url: "https://www.pastery.net/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "PingVP",
+ provider_url: "https://www.pingvp.com/",
+ endpoints: [
+ {
+ url: "https://beta.pingvp.com.kpnis.nl/p/oembed.php",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Pinpoll",
+ provider_url: "https://www.pinpoll.com/products/tools",
+ endpoints: [
+ {
+ schemes: [
+ "https://tools.pinpoll.com/embed/*"
+ ],
+ url: "https://tools.pinpoll.com/oembed",
+ discovery: true,
+ formats: [
+ "json",
+ "xml"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Pinterest",
+ provider_url: "https://www.pinterest.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.pinterest.com/*"
+ ],
+ url: "https://www.pinterest.com/oembed.json",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "PitchHub",
+ provider_url: "https://www.pitchhub.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.pitchhub.com/en/public/player/*"
+ ],
+ url: "https://*.pitchhub.com.com/en/public/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Pixdor",
+ provider_url: "http://www.pixdor.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://store.pixdor.com/place-marker-widget/*/show",
+ "https://store.pixdor.com/map/*/show"
+ ],
+ url: "https://store.pixdor.com/oembed",
+ formats: [
+ "json",
+ "xml"
+ ],
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Podbean",
+ provider_url: "http://podbean.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.podbean.com/e/*",
+ "http://*.podbean.com/e/*"
+ ],
+ url: "https://api.podbean.com/v1/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Poll Daddy",
+ provider_url: "http://polldaddy.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://*.polldaddy.com/s/*",
+ "http://*.polldaddy.com/poll/*",
+ "http://*.polldaddy.com/ratings/*"
+ ],
+ url: "http://polldaddy.com/oembed/"
+ }
+ ]
+ },
+ {
+ provider_name: "Portfolium",
+ provider_url: "https://portfolium.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://portfolium.com/entry/*"
+ ],
+ url: "https://api.portfolium.com/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Present",
+ provider_url: "https://present.do",
+ endpoints: [
+ {
+ schemes: [
+ "https://present.do/decks/*"
+ ],
+ url: "https://gateway.cobalt.run/present/decks/oembed",
+ discovery: true,
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Prezi Video",
+ provider_url: "https://prezi.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://prezi.com/v/*",
+ "https://*.prezi.com/v/*"
+ ],
+ url: "https://prezi.com/v/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Quiz.biz",
+ provider_url: "http://www.quiz.biz/",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.quiz.biz/quizz-*.html"
+ ],
+ url: "http://www.quiz.biz/api/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Quizz.biz",
+ provider_url: "http://www.quizz.biz/",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.quizz.biz/quizz-*.html"
+ ],
+ url: "http://www.quizz.biz/api/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "RadioPublic",
+ provider_url: "https://radiopublic.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://play.radiopublic.com/*",
+ "https://radiopublic.com/*",
+ "https://www.radiopublic.com/*",
+ "http://play.radiopublic.com/*",
+ "http://radiopublic.com/*",
+ "http://www.radiopublic.com/*",
+ "https://*.radiopublic.com/*'"
+ ],
+ url: "https://oembed.radiopublic.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Raindrop",
+ provider_url: "https://raindrop.io",
+ endpoints: [
+ {
+ schemes: [
+ "https://raindrop.io/*",
+ "https://raindrop.io/*/*",
+ "https://raindrop.io/*/*/*",
+ "https://raindrop.io/*/*/*/*"
+ ],
+ url: "https://pub.raindrop.io/api/oembed",
+ discovery: true,
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "rcvis",
+ provider_url: "https://www.rcvis.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.rcvis.com/v/*",
+ "https://www.rcvis.com/visualize=*",
+ "https://www.rcvis.com/ve/*",
+ "https://www.rcvis.com/visualizeEmbedded=*"
+ ],
+ url: "https://animatron.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Reddit",
+ provider_url: "https://reddit.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://reddit.com/r/*/comments/*/*",
+ "https://www.reddit.com/r/*/comments/*/*"
+ ],
+ url: "https://www.reddit.com/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "ReleaseWire",
+ provider_url: "http://www.releasewire.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://rwire.com/*"
+ ],
+ url: "http://publisher.releasewire.com/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Replit",
+ provider_url: "https://replit.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://repl.it/@*/*",
+ "https://replit.com/@*/*"
+ ],
+ url: "https://replit.com/data/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "ReverbNation",
+ provider_url: "https://www.reverbnation.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.reverbnation.com/*",
+ "https://www.reverbnation.com/*/songs/*"
+ ],
+ url: "https://www.reverbnation.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Roomshare",
+ provider_url: "http://roomshare.jp",
+ endpoints: [
+ {
+ schemes: [
+ "http://roomshare.jp/post/*",
+ "http://roomshare.jp/en/post/*"
+ ],
+ url: "http://roomshare.jp/en/oembed.{format}"
+ }
+ ]
+ },
+ {
+ provider_name: "RoosterTeeth",
+ provider_url: "https://roosterteeth.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://roosterteeth.com/*"
+ ],
+ url: "https://roosterteeth.com/oembed",
+ formats: [
+ "json"
+ ],
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Rumble",
+ provider_url: "https://rumble.com/",
+ endpoints: [
+ {
+ url: "https://rumble.com/api/Media/oembed.{format}",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Runkit",
+ provider_url: "https://runkit.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://embed.runkit.com/*,",
+ "https://embed.runkit.com/*,"
+ ],
+ url: "https://embed.runkit.com/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Saooti",
+ provider_url: "https://octopus.saooti.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://octopus.saooti.com/main/pub/podcast/*"
+ ],
+ url: "https://octopus.saooti.com/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Sapo Videos",
+ provider_url: "http://videos.sapo.pt",
+ endpoints: [
+ {
+ schemes: [
+ "http://videos.sapo.pt/*"
+ ],
+ url: "http://videos.sapo.pt/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Screen9",
+ provider_url: "http://www.screen9.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://console.screen9.com/*",
+ "https://*.screen9.tv/*"
+ ],
+ url: "https://api.screen9.com/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Screencast.com",
+ provider_url: "http://www.screencast.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.screencast.com/*"
+ ],
+ url: "https://api.screencast.com/external/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Screenr",
+ provider_url: "http://www.screenr.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.screenr.com/*/"
+ ],
+ url: "http://www.screenr.com/api/oembed.{format}"
+ }
+ ]
+ },
+ {
+ provider_name: "ScribbleMaps",
+ provider_url: "https://scribblemaps.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.scribblemaps.com/maps/view/*",
+ "https://www.scribblemaps.com/maps/view/*",
+ "http://scribblemaps.com/maps/view/*",
+ "https://scribblemaps.com/maps/view/*"
+ ],
+ url: "https://scribblemaps.com/api/services/oembed.{format}",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Scribd",
+ provider_url: "http://www.scribd.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.scribd.com/doc/*"
+ ],
+ url: "http://www.scribd.com/services/oembed/"
+ }
+ ]
+ },
+ {
+ provider_name: "SendtoNews",
+ provider_url: "http://www.sendtonews.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://embed.sendtonews.com/oembed/*"
+ ],
+ url: "https://embed.sendtonews.com/services/oembed",
+ discovery: true,
+ formats: [
+ "json",
+ "xml"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "ShortNote",
+ provider_url: "https://www.shortnote.jp/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.shortnote.jp/view/notes/*"
+ ],
+ url: "https://www.shortnote.jp/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Shoudio",
+ provider_url: "http://shoudio.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://shoudio.com/*",
+ "http://shoud.io/*"
+ ],
+ url: "http://shoudio.com/api/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Show by Animaker",
+ provider_url: "https://getshow.io/",
+ endpoints: [
+ {
+ schemes: [
+ "https://app.getshow.io/iframe/*",
+ "https://*.getshow.io/share/*"
+ ],
+ url: "https://api.getshow.io/oembed.{format}",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Show the Way, actionable location info",
+ provider_url: "https://showtheway.io",
+ endpoints: [
+ {
+ schemes: [
+ "https://showtheway.io/to/*"
+ ],
+ url: "https://showtheway.io/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Simplecast",
+ provider_url: "https://simplecast.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://simplecast.com/s/*"
+ ],
+ url: "https://simplecast.com/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Sizzle",
+ provider_url: "https://onsizzle.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://onsizzle.com/i/*"
+ ],
+ url: "https://onsizzle.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Sketchfab",
+ provider_url: "http://sketchfab.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://sketchfab.com/*models/*",
+ "https://sketchfab.com/*models/*",
+ "https://sketchfab.com/*/folders/*"
+ ],
+ url: "http://sketchfab.com/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "SlideShare",
+ provider_url: "http://www.slideshare.net/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.slideshare.net/*/*",
+ "http://www.slideshare.net/*/*",
+ "https://fr.slideshare.net/*/*",
+ "http://fr.slideshare.net/*/*",
+ "https://de.slideshare.net/*/*",
+ "http://de.slideshare.net/*/*",
+ "https://es.slideshare.net/*/*",
+ "http://es.slideshare.net/*/*",
+ "https://pt.slideshare.net/*/*",
+ "http://pt.slideshare.net/*/*"
+ ],
+ url: "https://www.slideshare.net/api/oembed/2",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "SmashNotes",
+ provider_url: "https://smashnotes.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://smashnotes.com/p/*",
+ "https://smashnotes.com/p/*/e/* - https://smashnotes.com/p/*/e/*/s/*"
+ ],
+ url: "https://smashnotes.com/services/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Smrthi",
+ provider_url: "https://www.smrthi.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.smrthi.com/book/*"
+ ],
+ url: "https://www.smrthi.com/api/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "SmugMug",
+ provider_url: "https://www.smugmug.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://*.smugmug.com/*",
+ "https://*.smugmug.com/*"
+ ],
+ url: "https://api.smugmug.com/services/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "SocialExplorer",
+ provider_url: "https://www.socialexplorer.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.socialexplorer.com/*/explore",
+ "https://www.socialexplorer.com/*/view",
+ "https://www.socialexplorer.com/*/edit",
+ "https://www.socialexplorer.com/*/embed"
+ ],
+ url: "https://www.socialexplorer.com/services/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "SoundCloud",
+ provider_url: "http://soundcloud.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://soundcloud.com/*",
+ "https://soundcloud.com/*",
+ "https://soundcloud.app.goog.gl/*"
+ ],
+ url: "https://soundcloud.com/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "SpeakerDeck",
+ provider_url: "https://speakerdeck.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://speakerdeck.com/*/*",
+ "https://speakerdeck.com/*/*"
+ ],
+ url: "https://speakerdeck.com/oembed.json",
+ discovery: true,
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Spotify",
+ provider_url: "https://spotify.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://open.spotify.com/*",
+ "spotify:*"
+ ],
+ url: "https://open.spotify.com/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Spreaker",
+ provider_url: "https://www.spreaker.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://*.spreaker.com/*",
+ "https://*.spreaker.com/*"
+ ],
+ url: "https://api.spreaker.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "SproutVideo",
+ provider_url: "https://sproutvideo.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://sproutvideo.com/videos/*",
+ "https://*.vids.io/videos/*"
+ ],
+ url: "http://sproutvideo.com/oembed.{format}",
+ formats: [
+ "json",
+ "xml"
+ ],
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Stanford Digital Repository",
+ provider_url: "https://purl.stanford.edu/",
+ endpoints: [
+ {
+ schemes: [
+ "https://purl.stanford.edu/*"
+ ],
+ url: "https://purl.stanford.edu/embed.{format}",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Streamable",
+ provider_url: "https://streamable.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://streamable.com/*",
+ "https://streamable.com/*"
+ ],
+ url: "https://api.streamable.com/oembed.json",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Streamio",
+ provider_url: "https://www.streamio.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://s3m.io/*",
+ "https://23m.io/*"
+ ],
+ url: "https://streamio.com/api/v1/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Subscribi",
+ provider_url: "https://subscribi.io/",
+ endpoints: [
+ {
+ schemes: [
+ "https://subscribi.io/api/oembed*"
+ ],
+ url: "https://subscribi.io/api/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Sudomemo",
+ provider_url: "https://www.sudomemo.net/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.sudomemo.net/watch/*",
+ "http://www.sudomemo.net/watch/*",
+ "https://flipnot.es/*",
+ "http://flipnot.es/*"
+ ],
+ url: "https://www.sudomemo.net/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Sutori",
+ provider_url: "https://www.sutori.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.sutori.com/story/*"
+ ],
+ url: "https://www.sutori.com/api/oembed",
+ discovery: true,
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Sway",
+ provider_url: "https://www.sway.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://sway.com/*",
+ "https://www.sway.com/*"
+ ],
+ url: "https://sway.com/api/v1.0/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "TED",
+ provider_url: "https://www.ted.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://ted.com/talks/*",
+ "https://ted.com/talks/*",
+ "https://www.ted.com/talks/*"
+ ],
+ url: "https://www.ted.com/services/v1/oembed.{format}",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "The New York Times",
+ provider_url: "https://www.nytimes.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.nytimes.com/svc/oembed",
+ "https://nytimes.com/*",
+ "https://*.nytimes.com/*"
+ ],
+ url: "https://www.nytimes.com/svc/oembed/json/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "They Said So",
+ provider_url: "https://theysaidso.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://theysaidso.com/image/*"
+ ],
+ url: "https://theysaidso.com/extensions/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "TickCounter",
+ provider_url: "https://www.tickcounter.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.tickcounter.com/countdown/*",
+ "http://www.tickcounter.com/countup/*",
+ "http://www.tickcounter.com/ticker/*",
+ "http://www.tickcounter.com/worldclock/*",
+ "https://www.tickcounter.com/countdown/*",
+ "https://www.tickcounter.com/countup/*",
+ "https://www.tickcounter.com/ticker/*",
+ "https://www.tickcounter.com/worldclock/*"
+ ],
+ url: "https://www.tickcounter.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "TikTok",
+ provider_url: "http://www.tiktok.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.tiktok.com/*/video/*"
+ ],
+ url: "https://www.tiktok.com/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Toornament",
+ provider_url: "https://www.toornament.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.toornament.com/tournaments/*/information",
+ "https://www.toornament.com/tournaments/*/registration/",
+ "https://www.toornament.com/tournaments/*/matches/schedule",
+ "https://www.toornament.com/tournaments/*/stages/*/"
+ ],
+ url: "https://widget.toornament.com/oembed",
+ discovery: true,
+ formats: [
+ "json",
+ "xml"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Topy",
+ provider_url: "http://www.topy.se/",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.topy.se/image/*"
+ ],
+ url: "http://www.topy.se/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Totango",
+ provider_url: "https://totango.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://app-test.totango.com/*"
+ ],
+ url: "https://app-test.totango.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Trinity Audio",
+ provider_url: "https://trinityaudio.ai",
+ endpoints: [
+ {
+ schemes: [
+ "https://trinitymedia.ai/player/*",
+ "http://trinitymedia.ai/player/*"
+ ],
+ url: "https://trinitymedia.ai/player/trinity-oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Tumblr",
+ provider_url: "https://www.tumblr.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.tumblr.com/post/*"
+ ],
+ url: "https://www.tumblr.com/oembed/1.0"
+ }
+ ]
+ },
+ {
+ provider_name: "Tuxx",
+ provider_url: "https://www.tuxx.be/",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.tuxx.be/*"
+ ],
+ url: "https://www.tuxx.be/services/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "tvcf",
+ provider_url: "http://tvcf.co.kr",
+ endpoints: [
+ {
+ schemes: [
+ "https://play.tvcf.co.kr/*",
+ "https://*.tvcf.co.kr/*"
+ ],
+ url: "https://play.tvcf.co.kr/rest/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Twitter",
+ provider_url: "http://www.twitter.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://twitter.com/*/status/*",
+ "https://*.twitter.com/*/status/*"
+ ],
+ url: "https://publish.twitter.com/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "TypeCast",
+ provider_url: "https://typecast.ai",
+ endpoints: [
+ {
+ schemes: [
+ "https://play.typecast.ai/s/*",
+ "https://play.typecast.ai/e/*",
+ "https://play.typecast.ai/*"
+ ],
+ url: "https://play.typecast.ai/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Typlog",
+ provider_url: "https://typlog.com",
+ endpoints: [
+ {
+ url: "https://typlog.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "UAPod",
+ provider_url: "https://uapod.univ-antilles.fr/",
+ endpoints: [
+ {
+ schemes: [
+ "https://uapod.univ-antilles.fr/video/*"
+ ],
+ url: "https://uapod.univ-antilles.fr/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "University of Cambridge Map",
+ provider_url: "https://map.cam.ac.uk",
+ endpoints: [
+ {
+ schemes: [
+ "https://map.cam.ac.uk/*"
+ ],
+ url: "https://map.cam.ac.uk/oembed/"
+ }
+ ]
+ },
+ {
+ provider_name: "UnivParis1.Pod",
+ provider_url: "https://mediatheque.univ-paris1.fr/",
+ endpoints: [
+ {
+ schemes: [
+ "https://mediatheque.univ-paris1.fr/video/*"
+ ],
+ url: "https://mediatheque.univ-paris1.fr/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Upec.Pod",
+ provider_url: "https://pod.u-pec.fr/",
+ endpoints: [
+ {
+ schemes: [
+ "https://pod.u-pec.fr/video/*"
+ ],
+ url: "https://pod.u-pec.fr/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Ustream",
+ provider_url: "http://www.ustream.tv",
+ endpoints: [
+ {
+ schemes: [
+ "http://*.ustream.tv/*",
+ "http://*.ustream.com/*"
+ ],
+ url: "http://www.ustream.tv/oembed",
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "uStudio, Inc.",
+ provider_url: "https://www.ustudio.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.ustudio.com/embed/*",
+ "https://*.ustudio.com/embed/*/*"
+ ],
+ url: "https://app.ustudio.com/api/v2/oembed",
+ discovery: true,
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "VeeR VR",
+ provider_url: "http://veer.tv/",
+ endpoints: [
+ {
+ schemes: [
+ "http://veer.tv/videos/*"
+ ],
+ url: "https://api.veer.tv/oembed",
+ discovery: true
+ },
+ {
+ schemes: [
+ "http://veervr.tv/videos/*"
+ ],
+ url: "https://api.veervr.tv/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Verse",
+ provider_url: "http://verse.com/",
+ endpoints: [
+ {
+ url: "http://verse.com/services/oembed/"
+ }
+ ]
+ },
+ {
+ provider_name: "VEVO",
+ provider_url: "http://www.vevo.com/",
+ endpoints: [
+ {
+ schemes: [
+ "http://www.vevo.com/*",
+ "https://www.vevo.com/*"
+ ],
+ url: "https://www.vevo.com/oembed",
+ discovery: false
+ }
+ ]
+ },
+ {
+ provider_name: "Videfit",
+ provider_url: "https://videfit.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://videfit.com/videos/*"
+ ],
+ url: "https://videfit.com/oembed",
+ discovery: false
+ }
+ ]
+ },
+ {
+ provider_name: "Vidyard",
+ provider_url: "https://vidyard.com",
+ endpoints: [
+ {
+ schemes: [
+ "http://*.vidyard.com/*",
+ "https://*.vidyard.com/*",
+ "http://*.hubs.vidyard.com/*",
+ "https://*.hubs.vidyard.com/*"
+ ],
+ url: "https://api.vidyard.com/dashboard/v1.1/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Vimeo",
+ provider_url: "https://vimeo.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://vimeo.com/*",
+ "https://vimeo.com/album/*/video/*",
+ "https://vimeo.com/channels/*/*",
+ "https://vimeo.com/groups/*/videos/*",
+ "https://vimeo.com/ondemand/*/*",
+ "https://player.vimeo.com/video/*"
+ ],
+ url: "https://vimeo.com/api/oembed.{format}",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Viously",
+ provider_url: "https://www.viously.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://www.viously.com/*/*"
+ ],
+ url: "https://www.viously.com/oembed",
+ discovery: true,
+ formats: [
+ "json",
+ "xml"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Vizydrop",
+ provider_url: "https://vizydrop.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://vizydrop.com/shared/*"
+ ],
+ url: "https://vizydrop.com/oembed"
+ }
+ ]
+ },
+ {
+ provider_name: "Vlipsy",
+ provider_url: "https://vlipsy.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://vlipsy.com/*"
+ ],
+ url: "https://vlipsy.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "VLIVE",
+ provider_url: "https://www.vlive.tv",
+ endpoints: [
+ {
+ url: "https://www.vlive.tv/oembed",
+ schemes: [
+ "https://www.vlive.tv/video/*"
+ ],
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "VoxSnap",
+ provider_url: "https://voxsnap.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://article.voxsnap.com/*/*"
+ ],
+ url: "https://data.voxsnap.com/oembed",
+ discovery: true,
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Waltrack",
+ provider_url: "https://waltrack/net",
+ endpoints: [
+ {
+ schemes: [
+ "https://waltrack.net/product/*"
+ ],
+ url: "https://waltrack.net/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Wave.video",
+ provider_url: "https://wave.video",
+ endpoints: [
+ {
+ schemes: [
+ "https://watch.wave.video/*",
+ "https://embed.wave.video/*"
+ ],
+ url: "https://embed.wave.video/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "wecandeo",
+ provider_url: "https://www.wecandeo.com/",
+ endpoints: [
+ {
+ url: "https://play.wecandeo.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Wiredrive",
+ provider_url: "https://www.wiredrive.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.wiredrive.com/*"
+ ],
+ url: "http://*.wiredrive.com/present-oembed/",
+ formats: [
+ "json"
+ ],
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Wistia, Inc.",
+ provider_url: "https://wistia.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://fast.wistia.com/embed/iframe/*",
+ "https://fast.wistia.com/embed/playlists/*",
+ "https://*.wistia.com/medias/*"
+ ],
+ url: "https://fast.wistia.com/oembed.{format}",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "wizer.me",
+ provider_url: "https://www.wizer.me/",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.wizer.me/learn/*",
+ "https://*.wizer.me/preview/*"
+ ],
+ url: "https://app.wizer.me/api/oembed.{format}",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Wokwi",
+ provider_url: "https://wokwi.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://wokwi.com/share/*"
+ ],
+ url: "https://wokwi.com/api/oembed",
+ discovery: true,
+ formats: [
+ "json"
+ ]
+ }
+ ]
+ },
+ {
+ provider_name: "Wolfram Cloud",
+ provider_url: "https://www.wolframcloud.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.wolframcloud.com/*"
+ ],
+ url: "https://www.wolframcloud.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "WordPress.com",
+ provider_url: "http://wordpress.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://wordpress.com/*",
+ "http://wordpress.com/*",
+ "https://*.wordpress.com/*",
+ "http://*.wordpress.com/*",
+ "https://*.*.wordpress.com/*",
+ "http://*.*.wordpress.com/*",
+ "https://wp.me/*",
+ "http://wp.me/*"
+ ],
+ url: "http://public-api.wordpress.com/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "YouTube",
+ provider_url: "https://www.youtube.com/",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.youtube.com/watch*",
+ "https://*.youtube.com/v/*",
+ "https://youtu.be/*",
+ "https://*.youtube.com/playlist?list=*",
+ "https://youtube.com/playlist?list=*"
+ ],
+ url: "https://www.youtube.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Zeplin",
+ provider_url: "https://zeplin.io",
+ endpoints: [
+ {
+ schemes: [
+ "https://app.zeplin.io/project/*/screen/*",
+ "https://app.zeplin.io/project/*/screen/*/version/*",
+ "https://app.zeplin.io/project/*/styleguide/components?coid=*",
+ "https://app.zeplin.io/styleguide/*/components?coid=*"
+ ],
+ url: "https://app.zeplin.io/embed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "ZingSoft",
+ provider_url: "https://app.zingsoft.com",
+ endpoints: [
+ {
+ schemes: [
+ "https://app.zingsoft.com/embed/*",
+ "https://app.zingsoft.com/view/*"
+ ],
+ url: "https://app.zingsoft.com/oembed",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "ZnipeTV",
+ provider_url: "https://www.znipe.tv/",
+ endpoints: [
+ {
+ schemes: [
+ "https://*.znipe.tv/*"
+ ],
+ url: "https://api.znipe.tv/v3/oembed/",
+ discovery: true
+ }
+ ]
+ },
+ {
+ provider_name: "Zoomable",
+ provider_url: "https://zoomable.ca/",
+ endpoints: [
+ {
+ schemes: [
+ "https://srv2.zoomable.ca/viewer.php*"
+ ],
+ url: "https://srv2.zoomable.ca/oembed",
+ discovery: true
+ }
+ ]
+ }
+ ];
+ }
+});
+
+// node_modules/oembed-parser/src/utils/provider.js
+var require_provider = __commonJS({
+ "node_modules/oembed-parser/src/utils/provider.js"(exports, module2) {
+ var isValidURL = require_isValidURL();
+ var getDomain = require_getDomain();
+ var defaultProviderList = require_providers();
+ var providersFromList = (providers = []) => {
+ return providers.map((provider) => {
+ const { provider_url: url } = provider;
+ provider.domain = getDomain(url);
+ return provider;
+ }).filter((provider) => {
+ return provider.domain !== "";
+ });
+ };
+ var store = {
+ providers: providersFromList(defaultProviderList)
+ };
+ var get = () => {
+ return [...store.providers];
+ };
+ var set = (providers = []) => {
+ store.providers = providersFromList(providers);
+ return store.providers.length;
+ };
+ var getEndpoint = (url, domain, endpoints) => {
+ for (let i = 0; i < endpoints.length; i++) {
+ const endpoint = endpoints[i];
+ const { schemes = [], url: endpointUrl } = endpoint;
+ if (schemes.length === 0) {
+ const endpointDomain = getDomain(endpointUrl);
+ if (endpointDomain === domain) {
+ return endpoint;
+ }
+ }
+ const isMatchedScheme = schemes.some((scheme) => {
+ const reg = new RegExp(scheme.replace(/\*/g, "(.*)").replace(/\?/g, "\\?").replace(/,$/g, ""), "i");
+ return url.match(reg);
+ });
+ if (isMatchedScheme) {
+ return endpoint;
+ }
+ }
+ return null;
+ };
+ var find = (url = "") => {
+ if (!isValidURL(url)) {
+ return null;
+ }
+ const domain = getDomain(url);
+ const providers = get();
+ for (let i = 0; i < providers.length; i++) {
+ const prov = providers[i];
+ const {
+ endpoints,
+ provider_name: providerName,
+ provider_url: providerUrl
+ } = prov;
+ const endpoint = getEndpoint(url, domain, endpoints);
+ if (endpoint) {
+ return {
+ fetchEndpoint: endpoint.url,
+ providerName,
+ providerUrl
+ };
+ }
+ }
+ return null;
+ };
+ var has = (url = "") => {
+ return find(url) !== null;
+ };
+ module2.exports = {
+ get,
+ set,
+ find,
+ has
+ };
+ }
+});
+
+// node_modules/oembed-parser/src/main.js
+var require_main = __commonJS({
+ "node_modules/oembed-parser/src/main.js"(exports, module2) {
+ var isValidURL = require_isValidURL();
+ var fetchEmbed = require_fetchEmbed();
+ var provider = require_provider();
+ var {
+ setRequestOptions
+ } = require_config();
+ var extract2 = (_0, ..._1) => __async(exports, [_0, ..._1], function* (url, params = {}) {
+ if (!isValidURL(url)) {
+ throw new Error("Invalid input URL");
+ }
+ const p = provider.find(url);
+ if (!p) {
+ throw new Error(`No provider found with given url "${url}"`);
+ }
+ const data = yield fetchEmbed(url, p, params);
+ return data;
+ });
+ module2.exports = {
+ extract: extract2,
+ hasProvider: provider.has,
+ findProvider: provider.find,
+ setProviderList: provider.set,
+ setRequestOptions
+ };
+ }
+});
+
+// node_modules/oembed-parser/package.json
+var require_package = __commonJS({
+ "node_modules/oembed-parser/package.json"(exports, module2) {
+ module2.exports = {
+ version: "2.0.0",
+ name: "oembed-parser",
+ description: "Get oEmbed data from given URL.",
+ homepage: "https://www.npmjs.com/package/oembed-parser",
+ repository: {
+ type: "git",
+ url: "git@github.com:ndaidong/oembed-parser.git"
+ },
+ author: "@ndaidong",
+ main: "./index.js",
+ types: "./index.d.ts",
+ engines: {
+ node: ">= 10.14.2"
+ },
+ scripts: {
+ lint: "standard .",
+ pretest: "npm run lint",
+ test: "jest --verbose --coverage=true --unhandled-rejections=strict --detectOpenHandles",
+ eval: "node eval",
+ sync: "node sync",
+ tsc: "tsc --init",
+ build: "tsc",
+ reset: "node reset"
+ },
+ dependencies: {
+ axios: "^0.24.0",
+ bellajs: "^10.0.2"
+ },
+ devDependencies: {
+ jest: "^27.4.5",
+ nock: "^13.2.1"
+ },
+ keywords: [
+ "oembed",
+ "extractor",
+ "parser",
+ "util"
+ ],
+ license: "MIT",
+ _resolved: "https://registry.npmjs.org/oembed-parser/-/oembed-parser-2.0.0.tgz",
+ _integrity: "sha512-VuEGFjLBDaydO+6ZzHXBAzc7jwletgsFTHi8UT3Zdt13xT2JzXM0R3XfafKDsZVloPxGC2Ad+ubNjEDT6lN3Gg==",
+ _from: "oembed-parser@2.0.0"
+ };
+ }
+});
+
+// node_modules/oembed-parser/index.js
+var require_oembed_parser = __commonJS({
+ "node_modules/oembed-parser/index.js"(exports, module2) {
+ var main = require_main();
+ main.version = require_package().version;
+ module2.exports = main;
+ }
+});
+
+// node_modules/dompurify/dist/purify.js
+var require_purify = __commonJS({
+ "node_modules/dompurify/dist/purify.js"(exports, module2) {
+ (function(global, factory) {
+ typeof exports === "object" && typeof module2 !== "undefined" ? module2.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global = global || self, global.DOMPurify = factory());
+ })(exports, function() {
+ "use strict";
+ function _toConsumableArray(arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
+ arr2[i] = arr[i];
+ }
+ return arr2;
+ } else {
+ return Array.from(arr);
+ }
+ }
+ var hasOwnProperty = Object.hasOwnProperty, setPrototypeOf = Object.setPrototypeOf, isFrozen = Object.isFrozen, getPrototypeOf = Object.getPrototypeOf, getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
+ var freeze = Object.freeze, seal = Object.seal, create = Object.create;
+ var _ref = typeof Reflect !== "undefined" && Reflect, apply = _ref.apply, construct = _ref.construct;
+ if (!apply) {
+ apply = function apply2(fun, thisValue, args) {
+ return fun.apply(thisValue, args);
+ };
+ }
+ if (!freeze) {
+ freeze = function freeze2(x) {
+ return x;
+ };
+ }
+ if (!seal) {
+ seal = function seal2(x) {
+ return x;
+ };
+ }
+ if (!construct) {
+ construct = function construct2(Func, args) {
+ return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();
+ };
+ }
+ var arrayForEach = unapply(Array.prototype.forEach);
+ var arrayPop = unapply(Array.prototype.pop);
+ var arrayPush = unapply(Array.prototype.push);
+ var stringToLowerCase = unapply(String.prototype.toLowerCase);
+ var stringMatch = unapply(String.prototype.match);
+ var stringReplace = unapply(String.prototype.replace);
+ var stringIndexOf = unapply(String.prototype.indexOf);
+ var stringTrim = unapply(String.prototype.trim);
+ var regExpTest = unapply(RegExp.prototype.test);
+ var typeErrorCreate = unconstruct(TypeError);
+ function unapply(func) {
+ return function(thisArg) {
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ }
+ return apply(func, thisArg, args);
+ };
+ }
+ function unconstruct(func) {
+ return function() {
+ for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+ args[_key2] = arguments[_key2];
+ }
+ return construct(func, args);
+ };
+ }
+ function addToSet(set, array) {
+ if (setPrototypeOf) {
+ setPrototypeOf(set, null);
+ }
+ var l = array.length;
+ while (l--) {
+ var element = array[l];
+ if (typeof element === "string") {
+ var lcElement = stringToLowerCase(element);
+ if (lcElement !== element) {
+ if (!isFrozen(array)) {
+ array[l] = lcElement;
+ }
+ element = lcElement;
+ }
+ }
+ set[element] = true;
+ }
+ return set;
+ }
+ function clone(object) {
+ var newObject = create(null);
+ var property = void 0;
+ for (property in object) {
+ if (apply(hasOwnProperty, object, [property])) {
+ newObject[property] = object[property];
+ }
+ }
+ return newObject;
+ }
+ function lookupGetter(object, prop) {
+ while (object !== null) {
+ var desc = getOwnPropertyDescriptor(object, prop);
+ if (desc) {
+ if (desc.get) {
+ return unapply(desc.get);
+ }
+ if (typeof desc.value === "function") {
+ return unapply(desc.value);
+ }
+ }
+ object = getPrototypeOf(object);
+ }
+ function fallbackValue(element) {
+ console.warn("fallback value for", element);
+ return null;
+ }
+ return fallbackValue;
+ }
+ var html = freeze(["a", "abbr", "acronym", "address", "area", "article", "aside", "audio", "b", "bdi", "bdo", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "content", "data", "datalist", "dd", "decorator", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "element", "em", "fieldset", "figcaption", "figure", "font", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "img", "input", "ins", "kbd", "label", "legend", "li", "main", "map", "mark", "marquee", "menu", "menuitem", "meter", "nav", "nobr", "ol", "optgroup", "option", "output", "p", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "section", "select", "shadow", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "tr", "track", "tt", "u", "ul", "var", "video", "wbr"]);
+ var svg = freeze(["svg", "a", "altglyph", "altglyphdef", "altglyphitem", "animatecolor", "animatemotion", "animatetransform", "circle", "clippath", "defs", "desc", "ellipse", "filter", "font", "g", "glyph", "glyphref", "hkern", "image", "line", "lineargradient", "marker", "mask", "metadata", "mpath", "path", "pattern", "polygon", "polyline", "radialgradient", "rect", "stop", "style", "switch", "symbol", "text", "textpath", "title", "tref", "tspan", "view", "vkern"]);
+ var svgFilters = freeze(["feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence"]);
+ var svgDisallowed = freeze(["animate", "color-profile", "cursor", "discard", "fedropshadow", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "foreignobject", "hatch", "hatchpath", "mesh", "meshgradient", "meshpatch", "meshrow", "missing-glyph", "script", "set", "solidcolor", "unknown", "use"]);
+ var mathMl = freeze(["math", "menclose", "merror", "mfenced", "mfrac", "mglyph", "mi", "mlabeledtr", "mmultiscripts", "mn", "mo", "mover", "mpadded", "mphantom", "mroot", "mrow", "ms", "mspace", "msqrt", "mstyle", "msub", "msup", "msubsup", "mtable", "mtd", "mtext", "mtr", "munder", "munderover"]);
+ var mathMlDisallowed = freeze(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]);
+ var text = freeze(["#text"]);
+ var html$1 = freeze(["accept", "action", "align", "alt", "autocapitalize", "autocomplete", "autopictureinpicture", "autoplay", "background", "bgcolor", "border", "capture", "cellpadding", "cellspacing", "checked", "cite", "class", "clear", "color", "cols", "colspan", "controls", "controlslist", "coords", "crossorigin", "datetime", "decoding", "default", "dir", "disabled", "disablepictureinpicture", "disableremoteplayback", "download", "draggable", "enctype", "enterkeyhint", "face", "for", "headers", "height", "hidden", "high", "href", "hreflang", "id", "inputmode", "integrity", "ismap", "kind", "label", "lang", "list", "loading", "loop", "low", "max", "maxlength", "media", "method", "min", "minlength", "multiple", "muted", "name", "nonce", "noshade", "novalidate", "nowrap", "open", "optimum", "pattern", "placeholder", "playsinline", "poster", "preload", "pubdate", "radiogroup", "readonly", "rel", "required", "rev", "reversed", "role", "rows", "rowspan", "spellcheck", "scope", "selected", "shape", "size", "sizes", "span", "srclang", "start", "src", "srcset", "step", "style", "summary", "tabindex", "title", "translate", "type", "usemap", "valign", "value", "width", "xmlns", "slot"]);
+ var svg$1 = freeze(["accent-height", "accumulate", "additive", "alignment-baseline", "ascent", "attributename", "attributetype", "azimuth", "basefrequency", "baseline-shift", "begin", "bias", "by", "class", "clip", "clippathunits", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-profile", "color-rendering", "cx", "cy", "d", "dx", "dy", "diffuseconstant", "direction", "display", "divisor", "dur", "edgemode", "elevation", "end", "fill", "fill-opacity", "fill-rule", "filter", "filterunits", "flood-color", "flood-opacity", "font-family", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "fx", "fy", "g1", "g2", "glyph-name", "glyphref", "gradientunits", "gradienttransform", "height", "href", "id", "image-rendering", "in", "in2", "k", "k1", "k2", "k3", "k4", "kerning", "keypoints", "keysplines", "keytimes", "lang", "lengthadjust", "letter-spacing", "kernelmatrix", "kernelunitlength", "lighting-color", "local", "marker-end", "marker-mid", "marker-start", "markerheight", "markerunits", "markerwidth", "maskcontentunits", "maskunits", "max", "mask", "media", "method", "mode", "min", "name", "numoctaves", "offset", "operator", "opacity", "order", "orient", "orientation", "origin", "overflow", "paint-order", "path", "pathlength", "patterncontentunits", "patterntransform", "patternunits", "points", "preservealpha", "preserveaspectratio", "primitiveunits", "r", "rx", "ry", "radius", "refx", "refy", "repeatcount", "repeatdur", "restart", "result", "rotate", "scale", "seed", "shape-rendering", "specularconstant", "specularexponent", "spreadmethod", "startoffset", "stddeviation", "stitchtiles", "stop-color", "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke", "stroke-width", "style", "surfacescale", "systemlanguage", "tabindex", "targetx", "targety", "transform", "text-anchor", "text-decoration", "text-rendering", "textlength", "type", "u1", "u2", "unicode", "values", "viewbox", "visibility", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "width", "word-spacing", "wrap", "writing-mode", "xchannelselector", "ychannelselector", "x", "x1", "x2", "xmlns", "y", "y1", "y2", "z", "zoomandpan"]);
+ var mathMl$1 = freeze(["accent", "accentunder", "align", "bevelled", "close", "columnsalign", "columnlines", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lspace", "lquote", "mathbackground", "mathcolor", "mathsize", "mathvariant", "maxsize", "minsize", "movablelimits", "notation", "numalign", "open", "rowalign", "rowlines", "rowspacing", "rowspan", "rspace", "rquote", "scriptlevel", "scriptminsize", "scriptsizemultiplier", "selection", "separator", "separators", "stretchy", "subscriptshift", "supscriptshift", "symmetric", "voffset", "width", "xmlns"]);
+ var xml = freeze(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]);
+ var MUSTACHE_EXPR = seal(/\{\{[\s\S]*|[\s\S]*\}\}/gm);
+ var ERB_EXPR = seal(/<%[\s\S]*|[\s\S]*%>/gm);
+ var DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]/);
+ var ARIA_ATTR = seal(/^aria-[\-\w]+$/);
+ var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i);
+ var IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
+ var ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g);
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
+ return typeof obj;
+ } : function(obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+ function _toConsumableArray$1(arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
+ arr2[i] = arr[i];
+ }
+ return arr2;
+ } else {
+ return Array.from(arr);
+ }
+ }
+ var getGlobal = function getGlobal2() {
+ return typeof window === "undefined" ? null : window;
+ };
+ var _createTrustedTypesPolicy = function _createTrustedTypesPolicy2(trustedTypes, document2) {
+ if ((typeof trustedTypes === "undefined" ? "undefined" : _typeof(trustedTypes)) !== "object" || typeof trustedTypes.createPolicy !== "function") {
+ return null;
+ }
+ var suffix = null;
+ var ATTR_NAME = "data-tt-policy-suffix";
+ if (document2.currentScript && document2.currentScript.hasAttribute(ATTR_NAME)) {
+ suffix = document2.currentScript.getAttribute(ATTR_NAME);
+ }
+ var policyName = "dompurify" + (suffix ? "#" + suffix : "");
+ try {
+ return trustedTypes.createPolicy(policyName, {
+ createHTML: function createHTML(html$$1) {
+ return html$$1;
+ }
+ });
+ } catch (_) {
+ console.warn("TrustedTypes policy " + policyName + " could not be created.");
+ return null;
+ }
+ };
+ function createDOMPurify() {
+ var window2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();
+ var DOMPurify2 = function DOMPurify3(root) {
+ return createDOMPurify(root);
+ };
+ DOMPurify2.version = "2.3.4";
+ DOMPurify2.removed = [];
+ if (!window2 || !window2.document || window2.document.nodeType !== 9) {
+ DOMPurify2.isSupported = false;
+ return DOMPurify2;
+ }
+ var originalDocument = window2.document;
+ var document2 = window2.document;
+ var DocumentFragment = window2.DocumentFragment, HTMLTemplateElement = window2.HTMLTemplateElement, Node = window2.Node, Element = window2.Element, NodeFilter = window2.NodeFilter, _window$NamedNodeMap = window2.NamedNodeMap, NamedNodeMap = _window$NamedNodeMap === void 0 ? window2.NamedNodeMap || window2.MozNamedAttrMap : _window$NamedNodeMap, HTMLFormElement = window2.HTMLFormElement, DOMParser = window2.DOMParser, trustedTypes = window2.trustedTypes;
+ var ElementPrototype = Element.prototype;
+ var cloneNode = lookupGetter(ElementPrototype, "cloneNode");
+ var getNextSibling = lookupGetter(ElementPrototype, "nextSibling");
+ var getChildNodes = lookupGetter(ElementPrototype, "childNodes");
+ var getParentNode = lookupGetter(ElementPrototype, "parentNode");
+ if (typeof HTMLTemplateElement === "function") {
+ var template = document2.createElement("template");
+ if (template.content && template.content.ownerDocument) {
+ document2 = template.content.ownerDocument;
+ }
+ }
+ var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);
+ var emptyHTML = trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML("") : "";
+ var _document = document2, implementation = _document.implementation, createNodeIterator = _document.createNodeIterator, createDocumentFragment = _document.createDocumentFragment, getElementsByTagName = _document.getElementsByTagName;
+ var importNode = originalDocument.importNode;
+ var documentMode = {};
+ try {
+ documentMode = clone(document2).documentMode ? document2.documentMode : {};
+ } catch (_) {
+ }
+ var hooks = {};
+ DOMPurify2.isSupported = typeof getParentNode === "function" && implementation && typeof implementation.createHTMLDocument !== "undefined" && documentMode !== 9;
+ var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR, ERB_EXPR$$1 = ERB_EXPR, DATA_ATTR$$1 = DATA_ATTR, ARIA_ATTR$$1 = ARIA_ATTR, IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA, ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;
+ var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;
+ var ALLOWED_TAGS = null;
+ var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));
+ var ALLOWED_ATTR = null;
+ var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));
+ var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {
+ tagNameCheck: {
+ writable: true,
+ configurable: false,
+ enumerable: true,
+ value: null
+ },
+ attributeNameCheck: {
+ writable: true,
+ configurable: false,
+ enumerable: true,
+ value: null
+ },
+ allowCustomizedBuiltInElements: {
+ writable: true,
+ configurable: false,
+ enumerable: true,
+ value: false
+ }
+ }));
+ var FORBID_TAGS = null;
+ var FORBID_ATTR = null;
+ var ALLOW_ARIA_ATTR = true;
+ var ALLOW_DATA_ATTR = true;
+ var ALLOW_UNKNOWN_PROTOCOLS = false;
+ var SAFE_FOR_TEMPLATES = false;
+ var WHOLE_DOCUMENT = false;
+ var SET_CONFIG = false;
+ var FORCE_BODY = false;
+ var RETURN_DOM = false;
+ var RETURN_DOM_FRAGMENT = false;
+ var RETURN_TRUSTED_TYPE = false;
+ var SANITIZE_DOM = true;
+ var KEEP_CONTENT = true;
+ var IN_PLACE = false;
+ var USE_PROFILES = {};
+ var FORBID_CONTENTS = null;
+ var DEFAULT_FORBID_CONTENTS = addToSet({}, ["annotation-xml", "audio", "colgroup", "desc", "foreignobject", "head", "iframe", "math", "mi", "mn", "mo", "ms", "mtext", "noembed", "noframes", "noscript", "plaintext", "script", "style", "svg", "template", "thead", "title", "video", "xmp"]);
+ var DATA_URI_TAGS = null;
+ var DEFAULT_DATA_URI_TAGS = addToSet({}, ["audio", "video", "img", "source", "image", "track"]);
+ var URI_SAFE_ATTRIBUTES = null;
+ var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]);
+ var MATHML_NAMESPACE = "http://www.w3.org/1998/Math/MathML";
+ var SVG_NAMESPACE = "http://www.w3.org/2000/svg";
+ var HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
+ var NAMESPACE = HTML_NAMESPACE;
+ var IS_EMPTY_INPUT = false;
+ var PARSER_MEDIA_TYPE = void 0;
+ var SUPPORTED_PARSER_MEDIA_TYPES = ["application/xhtml+xml", "text/html"];
+ var DEFAULT_PARSER_MEDIA_TYPE = "text/html";
+ var transformCaseFunc = void 0;
+ var CONFIG = null;
+ var formElement = document2.createElement("form");
+ var isRegexOrFunction = function isRegexOrFunction2(testValue) {
+ return testValue instanceof RegExp || testValue instanceof Function;
+ };
+ var _parseConfig = function _parseConfig2(cfg) {
+ if (CONFIG && CONFIG === cfg) {
+ return;
+ }
+ if (!cfg || (typeof cfg === "undefined" ? "undefined" : _typeof(cfg)) !== "object") {
+ cfg = {};
+ }
+ cfg = clone(cfg);
+ ALLOWED_TAGS = "ALLOWED_TAGS" in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;
+ ALLOWED_ATTR = "ALLOWED_ATTR" in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;
+ URI_SAFE_ATTRIBUTES = "ADD_URI_SAFE_ATTR" in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;
+ DATA_URI_TAGS = "ADD_DATA_URI_TAGS" in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;
+ FORBID_CONTENTS = "FORBID_CONTENTS" in cfg ? addToSet({}, cfg.FORBID_CONTENTS) : DEFAULT_FORBID_CONTENTS;
+ FORBID_TAGS = "FORBID_TAGS" in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};
+ FORBID_ATTR = "FORBID_ATTR" in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};
+ USE_PROFILES = "USE_PROFILES" in cfg ? cfg.USE_PROFILES : false;
+ ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;
+ ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;
+ ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;
+ SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;
+ WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;
+ RETURN_DOM = cfg.RETURN_DOM || false;
+ RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;
+ RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;
+ FORCE_BODY = cfg.FORCE_BODY || false;
+ SANITIZE_DOM = cfg.SANITIZE_DOM !== false;
+ KEEP_CONTENT = cfg.KEEP_CONTENT !== false;
+ IN_PLACE = cfg.IN_PLACE || false;
+ IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;
+ NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
+ if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {
+ CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;
+ }
+ if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {
+ CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;
+ }
+ if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === "boolean") {
+ CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;
+ }
+ PARSER_MEDIA_TYPE = SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE;
+ transformCaseFunc = PARSER_MEDIA_TYPE === "application/xhtml+xml" ? function(x) {
+ return x;
+ } : stringToLowerCase;
+ if (SAFE_FOR_TEMPLATES) {
+ ALLOW_DATA_ATTR = false;
+ }
+ if (RETURN_DOM_FRAGMENT) {
+ RETURN_DOM = true;
+ }
+ if (USE_PROFILES) {
+ ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));
+ ALLOWED_ATTR = [];
+ if (USE_PROFILES.html === true) {
+ addToSet(ALLOWED_TAGS, html);
+ addToSet(ALLOWED_ATTR, html$1);
+ }
+ if (USE_PROFILES.svg === true) {
+ addToSet(ALLOWED_TAGS, svg);
+ addToSet(ALLOWED_ATTR, svg$1);
+ addToSet(ALLOWED_ATTR, xml);
+ }
+ if (USE_PROFILES.svgFilters === true) {
+ addToSet(ALLOWED_TAGS, svgFilters);
+ addToSet(ALLOWED_ATTR, svg$1);
+ addToSet(ALLOWED_ATTR, xml);
+ }
+ if (USE_PROFILES.mathMl === true) {
+ addToSet(ALLOWED_TAGS, mathMl);
+ addToSet(ALLOWED_ATTR, mathMl$1);
+ addToSet(ALLOWED_ATTR, xml);
+ }
+ }
+ if (cfg.ADD_TAGS) {
+ if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
+ ALLOWED_TAGS = clone(ALLOWED_TAGS);
+ }
+ addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);
+ }
+ if (cfg.ADD_ATTR) {
+ if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
+ ALLOWED_ATTR = clone(ALLOWED_ATTR);
+ }
+ addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);
+ }
+ if (cfg.ADD_URI_SAFE_ATTR) {
+ addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);
+ }
+ if (cfg.FORBID_CONTENTS) {
+ if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {
+ FORBID_CONTENTS = clone(FORBID_CONTENTS);
+ }
+ addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS);
+ }
+ if (KEEP_CONTENT) {
+ ALLOWED_TAGS["#text"] = true;
+ }
+ if (WHOLE_DOCUMENT) {
+ addToSet(ALLOWED_TAGS, ["html", "head", "body"]);
+ }
+ if (ALLOWED_TAGS.table) {
+ addToSet(ALLOWED_TAGS, ["tbody"]);
+ delete FORBID_TAGS.tbody;
+ }
+ if (freeze) {
+ freeze(cfg);
+ }
+ CONFIG = cfg;
+ };
+ var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ["mi", "mo", "mn", "ms", "mtext"]);
+ var HTML_INTEGRATION_POINTS = addToSet({}, ["foreignobject", "desc", "title", "annotation-xml"]);
+ var ALL_SVG_TAGS = addToSet({}, svg);
+ addToSet(ALL_SVG_TAGS, svgFilters);
+ addToSet(ALL_SVG_TAGS, svgDisallowed);
+ var ALL_MATHML_TAGS = addToSet({}, mathMl);
+ addToSet(ALL_MATHML_TAGS, mathMlDisallowed);
+ var _checkValidNamespace = function _checkValidNamespace2(element) {
+ var parent = getParentNode(element);
+ if (!parent || !parent.tagName) {
+ parent = {
+ namespaceURI: HTML_NAMESPACE,
+ tagName: "template"
+ };
+ }
+ var tagName = stringToLowerCase(element.tagName);
+ var parentTagName = stringToLowerCase(parent.tagName);
+ if (element.namespaceURI === SVG_NAMESPACE) {
+ if (parent.namespaceURI === HTML_NAMESPACE) {
+ return tagName === "svg";
+ }
+ if (parent.namespaceURI === MATHML_NAMESPACE) {
+ return tagName === "svg" && (parentTagName === "annotation-xml" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
+ }
+ return Boolean(ALL_SVG_TAGS[tagName]);
+ }
+ if (element.namespaceURI === MATHML_NAMESPACE) {
+ if (parent.namespaceURI === HTML_NAMESPACE) {
+ return tagName === "math";
+ }
+ if (parent.namespaceURI === SVG_NAMESPACE) {
+ return tagName === "math" && HTML_INTEGRATION_POINTS[parentTagName];
+ }
+ return Boolean(ALL_MATHML_TAGS[tagName]);
+ }
+ if (element.namespaceURI === HTML_NAMESPACE) {
+ if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {
+ return false;
+ }
+ if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {
+ return false;
+ }
+ var commonSvgAndHTMLElements = addToSet({}, ["title", "style", "font", "a", "script"]);
+ return !ALL_MATHML_TAGS[tagName] && (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName]);
+ }
+ return false;
+ };
+ var _forceRemove = function _forceRemove2(node) {
+ arrayPush(DOMPurify2.removed, { element: node });
+ try {
+ node.parentNode.removeChild(node);
+ } catch (_) {
+ try {
+ node.outerHTML = emptyHTML;
+ } catch (_2) {
+ node.remove();
+ }
+ }
+ };
+ var _removeAttribute = function _removeAttribute2(name, node) {
+ try {
+ arrayPush(DOMPurify2.removed, {
+ attribute: node.getAttributeNode(name),
+ from: node
+ });
+ } catch (_) {
+ arrayPush(DOMPurify2.removed, {
+ attribute: null,
+ from: node
+ });
+ }
+ node.removeAttribute(name);
+ if (name === "is" && !ALLOWED_ATTR[name]) {
+ if (RETURN_DOM || RETURN_DOM_FRAGMENT) {
+ try {
+ _forceRemove(node);
+ } catch (_) {
+ }
+ } else {
+ try {
+ node.setAttribute(name, "");
+ } catch (_) {
+ }
+ }
+ }
+ };
+ var _initDocument = function _initDocument2(dirty) {
+ var doc = void 0;
+ var leadingWhitespace = void 0;
+ if (FORCE_BODY) {
+ dirty = "