From 9712050e84c92b406a53c7cf1f624b251dda1ef2 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Tue, 3 Dec 2024 15:31:11 +0800
Subject: [PATCH 001/175] [optimize] debug or dev open 5432 pg port
---
src/main/core/db/common/client.ts | 14 ++++++++++++--
src/main/core/db/common/index.ts | 4 ++--
src/main/core/db/index.ts | 4 ++--
src/main/index.ts | 5 +++--
4 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/src/main/core/db/common/client.ts b/src/main/core/db/common/client.ts
index 22ee0dd96..e40729cc6 100644
--- a/src/main/core/db/common/client.ts
+++ b/src/main/core/db/common/client.ts
@@ -2,7 +2,7 @@ import { PGlite } from '@electric-sql/pglite';
import { drizzle } from 'drizzle-orm/pglite';
// import { migrate } from 'drizzle-orm/pglite/migrator';
import { app } from 'electron';
-import { join, resolve } from 'path';
+import { join } from 'path';
import * as schema from './schema';
const DB_PATH = join(app.getPath('userData'), 'database');
@@ -19,4 +19,14 @@ const db = drizzle({ client, schema });
// });
// };
// migrateAfterClientReady();
-export { client, db };
+
+const server = async () => {
+ // @ts-ignore
+ const { createServer } = await import('pglite-server');
+ await client.waitReady;
+ const PORT = 5432;
+ const pgServer = createServer(client);
+ pgServer.listen(PORT, () => {});
+};
+
+export { client, db, server };
diff --git a/src/main/core/db/common/index.ts b/src/main/core/db/common/index.ts
index 144bdeff2..ec1f362c7 100644
--- a/src/main/core/db/common/index.ts
+++ b/src/main/core/db/common/index.ts
@@ -1,5 +1,5 @@
-import { client, db } from './client';
+import { client, db, server } from './client';
import * as schema from './schema';
import * as webdev from './webdev';
-export { client, db, schema, webdev };
+export { client, db, schema, server, webdev };
diff --git a/src/main/core/db/index.ts b/src/main/core/db/index.ts
index f5949eba0..35b5bb051 100644
--- a/src/main/core/db/index.ts
+++ b/src/main/core/db/index.ts
@@ -2,7 +2,7 @@ import { compare } from 'compare-versions';
import { eq } from 'drizzle-orm';
import { app } from 'electron';
import { join } from 'path';
-import { db, schema, webdev } from './common';
+import { db, schema, server, webdev } from './common';
import migration from './migration';
import * as service from './service';
import logger from '@main/core/logger';
@@ -55,4 +55,4 @@ const setup = async () => {
logger.info(`[db][init] path:${DB_PATH}`);
};
-export { db, schema, setup, magrite, service, webdev };
+export { db, schema, setup, magrite, server, service, webdev };
diff --git a/src/main/index.ts b/src/main/index.ts
index 7063f5c02..63ab3c5b8 100644
--- a/src/main/index.ts
+++ b/src/main/index.ts
@@ -1,10 +1,10 @@
import { initialize as remoteInit } from '@electron/remote/main';
-import { electronApp, platform, optimizer } from '@electron-toolkit/utils';
+import { electronApp, is, optimizer, platform } from '@electron-toolkit/utils';
import { registerContextMenuListener } from '@electron-uikit/contextmenu';
import { registerTitleBarListener } from '@electron-uikit/titlebar';
import { app, BrowserWindow, globalShortcut, nativeTheme, session } from 'electron';
import fixPath from 'fix-path';
-import { setup as dbInit, webdev } from './core/db';
+import { setup as dbInit, server as dbServer, webdev } from './core/db';
import createMenu from './core/menu';
import { ipcListen } from './core/ipc';
import logger from './core/logger';
@@ -48,6 +48,7 @@ const setup = async () => {
remoteInit(); // 主进程初始化
await dbInit(); // 初始化数据库
await globalVariable(); // 全局变量
+ if (globalThis.variable.debug || is.dev) await dbServer(); // 初始化数据库服务
await serverInit(); // 后端服务
};
From f1d001b66c6204225f1bbd3712592314bb41f590 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Tue, 3 Dec 2024 15:31:32 +0800
Subject: [PATCH 002/175] [optimize] fastify route ready
---
src/main/core/server/index.ts | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/main/core/server/index.ts b/src/main/core/server/index.ts
index 5f42cff89..8dfe4e0ac 100644
--- a/src/main/core/server/index.ts
+++ b/src/main/core/server/index.ts
@@ -63,6 +63,7 @@ const setup = async () => {
server.register(routesV1Modules[key]);
});
+ await server.ready();
await server.listen({ port: 9978, host: '0.0.0.0' });
logger.info('[server][init] listen: http://0.0.0.0:9978');
} catch (err) {
From aa6bfe7c7e52d734701e48075cb429555c9313bd Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Tue, 3 Dec 2024 16:44:38 +0800
Subject: [PATCH 003/175] [change] server route
---
src/main/core/server/routes/v1/file/index.ts | 3 +++
.../routes/v1/{file.ts => file/work.ts} | 0
.../core/server/routes/v1/history/index.ts | 3 +++
.../routes/v1/{history.ts => history/work.ts} | 0
src/main/core/server/routes/v1/index.ts | 24 +++++++++----------
src/main/core/server/routes/v1/proxy/index.ts | 3 +++
.../routes/v1/{proxy.ts => proxy/work.ts} | 0
.../core/server/routes/v1/setting/index.ts | 3 +++
.../routes/v1/{setting.ts => setting/work.ts} | 0
src/main/core/server/routes/v1/star/index.ts | 3 +++
.../routes/v1/{star.ts => star/work.ts} | 0
.../core/server/routes/v1/system/index.ts | 3 +++
.../routes/v1/{system.ts => system/work.ts} | 0
13 files changed, 30 insertions(+), 12 deletions(-)
create mode 100644 src/main/core/server/routes/v1/file/index.ts
rename src/main/core/server/routes/v1/{file.ts => file/work.ts} (100%)
create mode 100644 src/main/core/server/routes/v1/history/index.ts
rename src/main/core/server/routes/v1/{history.ts => history/work.ts} (100%)
create mode 100644 src/main/core/server/routes/v1/proxy/index.ts
rename src/main/core/server/routes/v1/{proxy.ts => proxy/work.ts} (100%)
create mode 100644 src/main/core/server/routes/v1/setting/index.ts
rename src/main/core/server/routes/v1/{setting.ts => setting/work.ts} (100%)
create mode 100644 src/main/core/server/routes/v1/star/index.ts
rename src/main/core/server/routes/v1/{star.ts => star/work.ts} (100%)
create mode 100644 src/main/core/server/routes/v1/system/index.ts
rename src/main/core/server/routes/v1/{system.ts => system/work.ts} (100%)
diff --git a/src/main/core/server/routes/v1/file/index.ts b/src/main/core/server/routes/v1/file/index.ts
new file mode 100644
index 000000000..191370dfe
--- /dev/null
+++ b/src/main/core/server/routes/v1/file/index.ts
@@ -0,0 +1,3 @@
+import work from './work';
+
+export { work };
diff --git a/src/main/core/server/routes/v1/file.ts b/src/main/core/server/routes/v1/file/work.ts
similarity index 100%
rename from src/main/core/server/routes/v1/file.ts
rename to src/main/core/server/routes/v1/file/work.ts
diff --git a/src/main/core/server/routes/v1/history/index.ts b/src/main/core/server/routes/v1/history/index.ts
new file mode 100644
index 000000000..191370dfe
--- /dev/null
+++ b/src/main/core/server/routes/v1/history/index.ts
@@ -0,0 +1,3 @@
+import work from './work';
+
+export { work };
diff --git a/src/main/core/server/routes/v1/history.ts b/src/main/core/server/routes/v1/history/work.ts
similarity index 100%
rename from src/main/core/server/routes/v1/history.ts
rename to src/main/core/server/routes/v1/history/work.ts
diff --git a/src/main/core/server/routes/v1/index.ts b/src/main/core/server/routes/v1/index.ts
index b8c1a9357..2f12eec80 100644
--- a/src/main/core/server/routes/v1/index.ts
+++ b/src/main/core/server/routes/v1/index.ts
@@ -1,12 +1,12 @@
-import star from './star';
-import history from './history';
-import setting from './setting';
+import { work as starWork } from './star';
+import { work as historyWork } from './history';
+import { work as settingWork } from './setting';
import { db } from './db';
-import proxy from './proxy';
+import { work as proxyWork } from './proxy';
import { ad, ai, jsEdit, staticFilter } from './lab';
-import file from './file';
+import { work as fileWork } from './file';
import { barrage } from './player';
-import system from './system';
+import { work as systemWork } from './system';
import { db as driveDb, work as driveWork } from './drive';
import { channel, iptv } from './live';
@@ -18,24 +18,24 @@ const routesModules = {
analyzeWork,
cms,
sietDb,
- star,
- history,
+ starWork,
+ historyWork,
hot,
recomm,
driveDb,
driveWork,
- setting,
+ settingWork,
iptv,
channel,
db,
- proxy,
+ proxyWork,
ad,
ai,
jsEdit,
staticFilter,
- file,
+ fileWork,
barrage,
- system,
+ systemWork,
};
export default routesModules;
diff --git a/src/main/core/server/routes/v1/proxy/index.ts b/src/main/core/server/routes/v1/proxy/index.ts
new file mode 100644
index 000000000..191370dfe
--- /dev/null
+++ b/src/main/core/server/routes/v1/proxy/index.ts
@@ -0,0 +1,3 @@
+import work from './work';
+
+export { work };
diff --git a/src/main/core/server/routes/v1/proxy.ts b/src/main/core/server/routes/v1/proxy/work.ts
similarity index 100%
rename from src/main/core/server/routes/v1/proxy.ts
rename to src/main/core/server/routes/v1/proxy/work.ts
diff --git a/src/main/core/server/routes/v1/setting/index.ts b/src/main/core/server/routes/v1/setting/index.ts
new file mode 100644
index 000000000..191370dfe
--- /dev/null
+++ b/src/main/core/server/routes/v1/setting/index.ts
@@ -0,0 +1,3 @@
+import work from './work';
+
+export { work };
diff --git a/src/main/core/server/routes/v1/setting.ts b/src/main/core/server/routes/v1/setting/work.ts
similarity index 100%
rename from src/main/core/server/routes/v1/setting.ts
rename to src/main/core/server/routes/v1/setting/work.ts
diff --git a/src/main/core/server/routes/v1/star/index.ts b/src/main/core/server/routes/v1/star/index.ts
new file mode 100644
index 000000000..191370dfe
--- /dev/null
+++ b/src/main/core/server/routes/v1/star/index.ts
@@ -0,0 +1,3 @@
+import work from './work';
+
+export { work };
diff --git a/src/main/core/server/routes/v1/star.ts b/src/main/core/server/routes/v1/star/work.ts
similarity index 100%
rename from src/main/core/server/routes/v1/star.ts
rename to src/main/core/server/routes/v1/star/work.ts
diff --git a/src/main/core/server/routes/v1/system/index.ts b/src/main/core/server/routes/v1/system/index.ts
new file mode 100644
index 000000000..191370dfe
--- /dev/null
+++ b/src/main/core/server/routes/v1/system/index.ts
@@ -0,0 +1,3 @@
+import work from './work';
+
+export { work };
diff --git a/src/main/core/server/routes/v1/system.ts b/src/main/core/server/routes/v1/system/work.ts
similarity index 100%
rename from src/main/core/server/routes/v1/system.ts
rename to src/main/core/server/routes/v1/system/work.ts
From 41df9320f20987df5ece345e9c6eb1f2da647a79 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Tue, 3 Dec 2024 18:27:40 +0800
Subject: [PATCH 004/175] [bug] fix call system play(issue #363)
---
.../pages/chase/components/binge/index.vue | 39 ++++++++---------
.../pages/chase/components/history/index.vue | 43 +++++++++----------
2 files changed, 40 insertions(+), 42 deletions(-)
diff --git a/src/renderer/src/pages/chase/components/binge/index.vue b/src/renderer/src/pages/chase/components/binge/index.vue
index 8dc4a63d8..950504439 100644
--- a/src/renderer/src/pages/chase/components/binge/index.vue
+++ b/src/renderer/src/pages/chase/components/binge/index.vue
@@ -52,7 +52,7 @@
-
+
@@ -79,7 +79,7 @@ import emitter from '@/utils/emitter';
import DetailView from '@/pages/film/components/Detail.vue';
-const store = usePlayStore();
+const storePlayer = usePlayStore();
const renderError = () => {
return (
@@ -103,12 +103,10 @@ const pagination = ref({
pageSize: 32,
count: 0,
});
-const formDetailData = ref({
- neme: '',
- key: '',
- type: 1,
+const detailFormData = ref({
+ info: {},
+ ext: { site: {}, setting: {} },
}); // 详情组件源传参
-const siteData = ref();
const isVisible = reactive({
detail: false,
loading: false
@@ -166,33 +164,34 @@ const playEvent = async (item) => {
isVisible.loading = true;
try {
- const { videoName, videoId, relateSite } = item;
- siteData.value = relateSite;
+ const { videoName, videoImage, videoId, relateSite } = item;
+
await fetchCmsInit({ sourceId: relateSite.id })
if (!('vod_play_from' in item && 'vod_play_url' in item)) {
const res = await fetchCmsDetail({ sourceId: relateSite.id, id: videoId });
const detailItem = res?.list[0];
- if (relateSite.type === 9) {
- detailItem.vod_name = item.vod_name;
- detailItem.vod_pic = item.vod_pic;
- };
+ detailItem.vod_name = videoName;
+ detailItem.vod_pic = videoImage;
item = detailItem;
};
+ console.log('[binge][playEvent]', item);
- const playerMode = store.getSetting.playerMode;
+ const playerMode = storePlayer.getSetting.playerMode;
+ const doc = {
+ info: item,
+ ext: { site: relateSite, setting: storePlayer.setting },
+ }
if (playerMode.type === 'custom') {
- formDetailData.value = item;
+ detailFormData.value = doc;
isVisible.detail = true;
} else {
- store.updateConfig({
+ storePlayer.updateConfig({
type: 'film',
status: true,
- data: {
- info: item,
- ext: { site: relateSite, setting: store.setting },
- }
+ data: doc
});
+
window.electron.ipcRenderer.send('open-play-win', videoName);
}
} catch (err) {
diff --git a/src/renderer/src/pages/chase/components/history/index.vue b/src/renderer/src/pages/chase/components/history/index.vue
index dabd1ca78..f8cb39b2d 100644
--- a/src/renderer/src/pages/chase/components/history/index.vue
+++ b/src/renderer/src/pages/chase/components/history/index.vue
@@ -55,7 +55,7 @@
{{ $t('pages.chase.infiniteLoading.noMore') }}
{{ $t('pages.chase.infiniteLoading.error') }}
-
+
@@ -85,7 +85,8 @@ import emitter from '@/utils/emitter';
import DetailView from '@/pages/film/components/Detail.vue';
-const store = usePlayStore();
+const storePlayer = usePlayStore();
+
const renderError = () => {
return (
@@ -119,12 +120,10 @@ const pagination = ref({
pageSize: 32,
count: 0,
});
-const formDetailData = ref({
- neme: '',
- key: '',
- type: 1,
+const detailFormData = ref({
+ info: {},
+ ext: { site: {}, setting: {} },
}); // 详情组件源传参
-const siteData = ref();
const isVisible = reactive({
detail: false,
loading: false
@@ -183,34 +182,34 @@ const playEvent = async (item) => {
isVisible.loading = true;
try {
- const { videoName, videoId, relateSite } = item;
- siteData.value = relateSite;
- await fetchCmsInit({ sourceId: relateSite.id })
+ const { videoName, videoImage, videoId, relateSite } = item;
+
+ await fetchCmsInit({ sourceId: relateSite.id });
if (!('vod_play_from' in item && 'vod_play_url' in item)) {
const res = await fetchCmsDetail({ sourceId: relateSite.id, id: videoId });
const detailItem = res?.list[0];
- if (relateSite.type === 9) {
- detailItem.vod_name = item.vod_name;
- detailItem.vod_pic = item.vod_pic;
- };
+ detailItem.vod_name = videoName;
+ detailItem.vod_pic = videoImage;
item = detailItem;
};
- console.log('[film][playEvent]', item);
+ console.log('[history][playEvent]', item);
- const playerMode = store.getSetting.playerMode;
+ const playerMode = storePlayer.getSetting.playerMode;
+ const doc = {
+ info: item,
+ ext: { site: relateSite, setting: storePlayer.setting },
+ }
if (playerMode.type === 'custom') {
- formDetailData.value = item;
+ detailFormData.value = doc;
isVisible.detail = true;
} else {
- store.updateConfig({
+ storePlayer.updateConfig({
type: 'film',
status: true,
- data: {
- info: item,
- ext: { site: relateSite, setting: store.setting },
- }
+ data: doc
});
+
window.electron.ipcRenderer.send('open-play-win', videoName);
}
} catch (err) {
From 5518d39a8cebd047577214fafc770c7fff1815e4 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Tue, 3 Dec 2024 23:43:50 +0800
Subject: [PATCH 005/175] [bug] fix chase return length
---
.../pages/chase/components/binge/index.vue | 18 +++++------
.../pages/chase/components/history/index.vue | 30 +++++++++----------
2 files changed, 23 insertions(+), 25 deletions(-)
diff --git a/src/renderer/src/pages/chase/components/binge/index.vue b/src/renderer/src/pages/chase/components/binge/index.vue
index 950504439..605b6b204 100644
--- a/src/renderer/src/pages/chase/components/binge/index.vue
+++ b/src/renderer/src/pages/chase/components/binge/index.vue
@@ -127,17 +127,15 @@ onActivated(() => {
const getBingeList = async () => {
let length = 0;
+ const { pageIndex, pageSize } = pagination.value;
try {
- const { pageIndex, pageSize } = pagination.value;
-
- const star_res = await fetchStarPage({ page: pageIndex, pageSize });
-
- bingeConfig.value.data = _.unionWith(bingeConfig.value.data, star_res.list, _.isEqual) as any;
-
- pagination.value.count = star_res.total;
- pagination.value.pageIndex++;
-
- length = star_res.data.length;
+ const res = await fetchStarPage({ page: pageIndex, pageSize });
+ if (res?.list && Array.isArray(res?.list) && res?.list?.length > 0) {
+ bingeConfig.value.data = bingeConfig.value.data.concat(res.list);
+ pagination.value.count = res.total;
+ pagination.value.pageIndex++;
+ length = res.list.length;
+ }
return length;
} catch (err) {
console.error(err);
diff --git a/src/renderer/src/pages/chase/components/history/index.vue b/src/renderer/src/pages/chase/components/history/index.vue
index f8cb39b2d..8b7d3ff0a 100644
--- a/src/renderer/src/pages/chase/components/history/index.vue
+++ b/src/renderer/src/pages/chase/components/history/index.vue
@@ -137,23 +137,23 @@ onActivated(() => {
const getHistoryList = async () => {
let length = 0;
+ const { pageIndex, pageSize } = pagination.value;
try {
- const { pageIndex, pageSize } = pagination.value;
- const history_res = await fetchHistoryPage({ page: pageIndex, pageSize, type: 'film' });
-
- for (const item of history_res?.list) {
- const timeDiff = filterDate(item.date);
- let timeKey;
- if (timeDiff === 0) timeKey = 'today';
- else if (timeDiff < 7) timeKey = 'week';
- else timeKey = 'ago';
- options.value[timeKey].push(item);
+ const res = await fetchHistoryPage({ page: pageIndex, pageSize, type: 'film' });
+
+ if (res?.list && Array.isArray(res?.list) && res?.list?.length > 0) {
+ for (const item of res.list) {
+ const timeDiff = filterDate(item.date);
+ let timeKey;
+ if (timeDiff === 0) timeKey = 'today';
+ else if (timeDiff < 7) timeKey = 'week';
+ else timeKey = 'ago';
+ options.value[timeKey].push(item);
+ };
+ pagination.value.count = res.total;
+ pagination.value.pageIndex++;
+ length = res.list.length || 0;
}
-
- pagination.value.count = history_res.total;
- pagination.value.pageIndex++;
-
- length = history_res.list.length;
return length;
} catch (err) {
console.error(err);
From e99a61386860a172efee0278ab60ecfb0a1b6320 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Fri, 6 Dec 2024 13:58:11 +0800
Subject: [PATCH 006/175] [feat] plugin
---
.../core/server/routes/v1/plugin/index.ts | 3 +
.../server/routes/v1/plugin/utils/adapter.ts | 418 ++++++++++++++++
.../server/routes/v1/plugin/utils/types.ts | 42 ++
src/main/utils/plugin/index.ts | 14 +-
src/renderer/src/api/plugin.ts | 48 ++
.../src/locales/lang/en_US/pages/lab.ts | 46 +-
.../src/locales/lang/zh_CN/pages/lab.ts | 46 +-
.../lab/components/pluginCenter/index.vue | 462 ++++++++++++++++++
src/renderer/src/pages/lab/index.vue | 5 +
9 files changed, 1047 insertions(+), 37 deletions(-)
create mode 100644 src/main/core/server/routes/v1/plugin/index.ts
create mode 100644 src/main/core/server/routes/v1/plugin/utils/adapter.ts
create mode 100644 src/main/core/server/routes/v1/plugin/utils/types.ts
create mode 100644 src/renderer/src/api/plugin.ts
create mode 100644 src/renderer/src/pages/lab/components/pluginCenter/index.vue
diff --git a/src/main/core/server/routes/v1/plugin/index.ts b/src/main/core/server/routes/v1/plugin/index.ts
new file mode 100644
index 000000000..191370dfe
--- /dev/null
+++ b/src/main/core/server/routes/v1/plugin/index.ts
@@ -0,0 +1,3 @@
+import work from './work';
+
+export { work };
diff --git a/src/main/core/server/routes/v1/plugin/utils/adapter.ts b/src/main/core/server/routes/v1/plugin/utils/adapter.ts
new file mode 100644
index 000000000..8e7ccf3f4
--- /dev/null
+++ b/src/main/core/server/routes/v1/plugin/utils/adapter.ts
@@ -0,0 +1,418 @@
+import npm from 'npm';
+import JSON5 from 'json5';
+import { join, resolve } from 'path';
+import workerpool from 'workerpool';
+import request from '@main/utils/request';
+import logger from '@main/core/logger';
+import { fileExist, fileState, readJson, readFile, saveJson, createDir } from '@main/utils/hiker/file';
+
+import { AdapterHandlerOptions, AdapterInfo } from './types';
+
+const runModule = async (modulePath: string, method: 'stop' | 'start') => {
+ try {
+ const entry = await import(modulePath);
+ const res = await entry?.[method]();
+ return { code: 0, msg: 'ok', data: res };
+ } catch (err: any) {
+ throw err;
+ }
+};
+
+/**
+ * 系统插件管理器
+ * @class AdapterHandler
+ */
+class AdapterHandler {
+ public baseDir: string; // 插件安装地址
+ public pkgPath: string; // pkg配置文件路径
+ public pluginPath: string; // 插件信息配置文件路径
+ public pluginList: any[] = []; // 插件列表
+ public syncModules = new Map();
+ private pluginCaches: Record
= {}; // 缓存插件版本
+ readonly registry: string; // 插件源地址
+
+ /**
+ * Creates an instance of AdapterHandler.
+ * @param {AdapterHandlerOptions} options
+ * @memberof AdapterHandler
+ */
+ constructor(options: AdapterHandlerOptions) {
+ this.baseDir = options.baseDir;
+ this.pkgPath = join(this.baseDir, 'package.json');
+ this.pluginPath = join(this.baseDir, 'plugin.json');
+ this.registry = options.registry || 'https://registry.npmmirror.com/';
+
+ // 初始化插件目录
+ if (!fileExist(this.baseDir)) createDir(this.baseDir);
+ if (!fileExist(this.pkgPath) || fileState(this.pkgPath) !== 'file')
+ saveJson(this.pkgPath, { dependencies: {}, devDependencies: {} });
+ if (!fileExist(this.pluginPath) || fileState(this.pluginPath) !== 'file') saveJson(this.pluginPath, []);
+
+ // 初始化插件列表
+ this.pluginList = this.readJsonFile(this.pluginPath) || [];
+
+ (async () => {
+ let plugins = this.fetchList();
+ plugins = plugins.filter((p) => p.status === 'RUNNING');
+ try {
+ await this.start(plugins);
+ } catch {}
+ })();
+ }
+
+ /**
+ * 读取JSON文件
+ * @private
+ * @param {string} filePath 文件路径
+ * @returns {json} JSON对象
+ */
+ private readJsonFile(filePath: string) {
+ try {
+ const content = readJson(filePath);
+ return content;
+ } catch (err: any) {
+ logger.error(`[plugin][readJsonFile][error] ${err.message}`);
+ throw new Error(`Failed to read JSON file: ${filePath}`);
+ }
+ }
+
+ /**
+ * 写入JSON文件
+ * @private
+ * @param {string} filePath 文件路径
+ * @param {json} content JSON对象
+ */
+ private writeJsonFile(filePath: string, content: object) {
+ try {
+ saveJson(filePath, content);
+ } catch (err: any) {
+ logger.error(`[plugin][writeJsonFile][error] ${err.message}`);
+ throw new Error(`Failed to write JSON file: ${filePath}`);
+ }
+ }
+
+ /**
+ * 深度克隆对象
+ * @private
+ * @param {*} obj
+ * @returns {*}
+ */
+ private deepClone(obj: T): T {
+ try {
+ return JSON5.parse(JSON5.stringify(obj));
+ } catch (err: any) {
+ logger.error(`[plugin][deepClone][error] ${err.message}`);
+ throw new Error(`Failed to deepClone`);
+ }
+ }
+
+ fetchList(plugins: any[] = []) {
+ const infoList: AdapterInfo[] = [];
+ const currentPlugins = this.pluginList;
+ const namePlugins = plugins.map((plugin) => plugin.name);
+
+ for (let plugin of currentPlugins) {
+ const readmePath = join(this.baseDir, 'node_modules', plugin.name, 'README.md');
+ if (fileExist(readmePath) && fileState(readmePath) === 'file') plugin.readme = readFile(readmePath);
+ const pluginInfo: AdapterInfo = {
+ type: plugin?.pluginType || 'system',
+ name: plugin?.name || '',
+ pluginName: plugin?.pluginName || '',
+ author: plugin?.author || '',
+ description: plugin?.description || '',
+ readme: plugin?.readme || '',
+ main: plugin?.main || '',
+ version: plugin?.version || '0.0.0',
+ logo: plugin?.logo || '',
+ status: plugin?.status || 'STOPED',
+ };
+
+ if (plugins.length > 0) {
+ if (namePlugins.includes(plugin.name)) {
+ infoList.push(pluginInfo);
+ }
+ } else infoList.push(pluginInfo);
+ }
+
+ return infoList;
+ }
+
+ /**
+ * 获取插件信息
+ * @param {plugins}
+ * @memberof PluginHandler
+ */
+ async info(plugins: any[]) {
+ let infoList: AdapterInfo[] = [];
+ try {
+ infoList = this.fetchList(plugins);
+ } catch (err: any) {
+ logger.error(`[plugin][getAdapterInfo][error] ${err.message}`);
+ } finally {
+ return infoList;
+ }
+ }
+
+ /**
+ * 安装插件
+ * @param plugins
+ * @memberof AdapterHandler
+ */
+ async install(plugins: any[]) {
+ const currentPlugins = this.deepClone(this.pluginList);
+
+ for (let plugin of plugins) {
+ try {
+ const cmd = plugin.isDev ? 'link' : 'install';
+ const module = resolve(this.baseDir, 'modules', plugin.name);
+ if (!fileExist(module) || fileState(module) !== 'dir') continue;
+ await this.execCommand(cmd, [module]);
+
+ const pkg = this.readJsonFile(join(this.baseDir, 'modules', plugin.name, 'package.json'));
+ let info;
+ if (plugin.isDev) {
+ const pluginPath = resolve(this.baseDir, 'node_modules', pkg.name);
+ const pluginInfo = this.readJsonFile(join(pluginPath, 'package.json'));
+ info = { ...plugin, ...pluginInfo, pluginName: pkg.name };
+ }
+
+ const pluginIndex1 = plugins.findIndex((p) => p.name === plugin.name);
+ plugins[pluginIndex1].name = pkg.name;
+ const pluginIndex2 = currentPlugins.findIndex((p) => p.name === pkg.name);
+ if (pluginIndex2 === -1) currentPlugins.unshift(info);
+ } catch (err: any) {
+ logger.error(`[plugin][install][error] ${err.message}`);
+ }
+ }
+
+ this.pluginList = currentPlugins;
+ this.writeJsonFile(this.pluginPath, this.pluginList);
+
+ return this.fetchList(plugins);
+ }
+
+ /**
+ * 卸载插件
+ * @param plugins
+ * @memberof AdapterHandler
+ */
+ async uninstall(plugins: any[]) {
+ const currentPlugins = this.deepClone(this.pluginList);
+
+ for (const plugin of plugins) {
+ try {
+ const cmd = plugin.isDev ? 'unlink' : 'uninstall';
+ const module = join(this.baseDir, 'node_modules', plugin.name);
+ if (!fileExist(module) || fileState(module) !== 'dir') continue;
+
+ await this.stop([plugin]);
+ await this.execCommand(cmd, [module]);
+
+ const index = currentPlugins.findIndex((p) => p.name === plugin.name);
+ if (index > -1) currentPlugins.splice(index, 1);
+ } catch (err: any) {
+ logger.error(`[plugin][uninstall][error] ${err.message}`);
+ }
+ }
+
+ this.pluginList = currentPlugins;
+ this.writeJsonFile(this.pluginPath, this.pluginList);
+
+ return this.fetchList(plugins);
+ }
+
+ /**
+ * 更新指定插件
+ * @param plugins 插件名称
+ * @memberof AdapterHandler
+ */
+ async update(plugins: any[]) {
+ const currentPlugins = this.deepClone(this.pluginList);
+
+ for (const plugin of plugins) {
+ const module = join(this.baseDir, 'node_modules', plugin.name);
+ if (!fileExist(module) || fileState(module) !== 'dir') continue;
+ await this.execCommand('update', [module]);
+
+ const pluginPath = resolve(this.baseDir, 'node_modules', plugin.name);
+ const pluginInfo = this.readJsonFile(join(pluginPath, 'package.json'));
+ const pluginIndex = currentPlugins.findIndex((p) => `${p.name}` === `${plugin.name}`);
+ if (pluginIndex !== -1) currentPlugins[pluginIndex].version = pluginInfo.version || '0.0.0';
+ }
+
+ this.pluginList = currentPlugins;
+ this.writeJsonFile(this.pluginPath, this.pluginList);
+
+ return this.fetchList(plugins);
+ }
+
+ /**
+ * 升级插件
+ * @param plugins
+ * @memberof AdapterHandler
+ */
+ async upgrade(plugins: any[]) {
+ for (let plugin of plugins) {
+ try {
+ const pkg = await this.readJsonFile(join(this.baseDir, 'package.json'));
+ if (Object.keys(pkg.dependencies).length === 0 || !pkg.dependencies?.[plugin.name]) break;
+ const installedVersion = pkg.dependencies[plugin.name].replace('^', '');
+ let latestVersion = this.pluginCaches[plugin.name];
+ if (!latestVersion) {
+ const registryUrl = `${this.registry}${plugin.name}`;
+ const data = await request({
+ method: 'GET',
+ url: registryUrl,
+ timeout: 2000,
+ });
+ latestVersion = data['dist-tags'].latest;
+ this.pluginCaches[plugin.name] = latestVersion;
+ }
+ if (latestVersion > installedVersion) {
+ await this.install(plugin);
+ }
+ } catch (err: any) {
+ logger.error(`[plugin][upgrade][error] ${err.message}`);
+ }
+ }
+
+ return this.fetchList(plugins);
+ }
+
+ /**
+ * 列出所有已安装插件
+ * @memberof AdapterHandler
+ */
+ list() {
+ try {
+ if (!this.pluginList.length) this.pluginList = this.readJsonFile(this.pluginPath) || [];
+ return this.fetchList();
+ } catch (err: any) {
+ logger.error(`[plugin][list][error] ${err.message}`);
+ return [];
+ }
+ }
+
+ async start(plugins: any[]) {
+ const currentPlugins = this.deepClone(this.pluginList);
+
+ for (const plugin of plugins) {
+ const module = join(this.baseDir, 'node_modules', plugin.name);
+ if (!fileExist(module) || fileState(module) !== 'dir') continue;
+
+ const pluginIndex = currentPlugins.findIndex((p) => `${p.name}` === `${plugin.name}`);
+ if (pluginIndex === -1) continue;
+
+ const pluginInfo = currentPlugins[pluginIndex];
+
+ if (pluginInfo?.main && pluginInfo?.main.endsWith('.js')) {
+ try {
+ let pool = this.syncModules.get(`${plugin.name}`);
+ if (!pool) {
+ pool = workerpool.pool();
+ this.syncModules.set(`${plugin.name}`, pool);
+ }
+ try {
+ let entryModule = resolve(module, pluginInfo.main);
+ if (process.platform === 'win32') entryModule = `file:///${entryModule}`;
+ const res = await pool.exec(runModule, [entryModule, 'start']);
+ if (res.code === 0) currentPlugins[pluginIndex].status = 'RUNNING';
+ } catch (err: any) {
+ currentPlugins[pluginIndex].status = 'STOPED';
+ this.syncModules.delete(`${plugin.name}`);
+ await pool.terminate();
+ logger.error(`[plugin][run][error] ${err.message}`);
+ }
+ } catch (err: any) {
+ logger.error(`[plugin][run][pool] ${err.message}`);
+ }
+ }
+ }
+
+ this.pluginList = currentPlugins;
+ this.writeJsonFile(this.pluginPath, this.pluginList);
+
+ return this.fetchList(plugins);
+ }
+
+ async stop(plugins: any[]) {
+ const currentPlugins = this.deepClone(this.pluginList);
+
+ for (const plugin of plugins) {
+ const module = join(this.baseDir, 'node_modules', plugin.name);
+ if (!fileExist(module) || fileState(module) !== 'dir') continue;
+
+ const pluginIndex = currentPlugins.findIndex((p) => `${p.name}` === `${plugin.name}`);
+ if (pluginIndex === -1) continue;
+
+ const pluginInfo = currentPlugins[pluginIndex];
+
+ if (pluginInfo?.main && pluginInfo?.main.endsWith('.js')) {
+ try {
+ let pool = this.syncModules.get(`${plugin.name}`);
+ try {
+ if (pool) {
+ // let entryModule = resolve(module, pluginInfo.main);
+ // if (process.platform === 'win32') entryModule = `file:///${entryModule}`;
+ // const res = await pool.exec(runModule, [entryModule, 'stop']);
+ // if (res.code === 0) currentPlugins[pluginIndex].status = 'STOPED';
+ await pool.terminate();
+ this.syncModules.delete(`${plugin.name}`);
+ currentPlugins[pluginIndex].status = 'STOPED';
+ }
+ } catch (err: any) {
+ currentPlugins[pluginIndex].status = 'STOPED';
+ this.syncModules.delete(`${plugin.name}`);
+ if (pool) await pool.terminate();
+ logger.error(`[plugin][stop][error] ${err.message}`);
+ }
+ } catch (err: any) {
+ logger.error(`[plugin][stop][pool] ${err.message}`);
+ }
+ }
+ }
+
+ this.pluginList = currentPlugins;
+ this.writeJsonFile(this.pluginPath, this.pluginList);
+
+ return this.fetchList(plugins);
+ }
+
+ /**
+ * 执行包管理器命令
+ * @memberof AdapterHandler
+ */
+ private async execCommand(cmd: string, modules: string[]): Promise {
+ return new Promise((resolve: any, reject: any) => {
+ const module = cmd !== 'uninstall' && cmd !== 'link' ? modules.map((m) => `${m}@latest`) : modules;
+ const config: { [key: string]: any } = {
+ prefix: this.baseDir,
+ save: true,
+ cache: join(this.baseDir, 'cache'),
+ registry: this.registry,
+ };
+
+ npm.load(config, (loadErr: any) => {
+ if (loadErr) {
+ logger.error(`[plugin][execCommand][error] ${loadErr.message}`);
+ reject({ code: -1, msg: loadErr.message, data: null });
+ }
+
+ npm.commands[cmd](module, function (cmdErr: any, data: any[]) {
+ if (cmdErr) {
+ logger.error(`[plugin][execCommand][error] ${cmdErr.message}`);
+ // reject({ code: -1, msg: cmdErr.message, data: null });
+ }
+ logger.info(`[plugin][execCommand][data]`, data);
+ resolve({ code: 0, msg: 'ok', data });
+ });
+
+ npm.on('log', (message) => {
+ logger.info(`[plugin][execCommand][log] ${message}`);
+ });
+ });
+ });
+ }
+}
+
+export default AdapterHandler;
diff --git a/src/main/core/server/routes/v1/plugin/utils/types.ts b/src/main/core/server/routes/v1/plugin/utils/types.ts
new file mode 100644
index 000000000..42e1f24df
--- /dev/null
+++ b/src/main/core/server/routes/v1/plugin/utils/types.ts
@@ -0,0 +1,42 @@
+/**
+ * 插件管理器配置
+ * @param baseDir 插件安装目录
+ * @param registry 插件下载源 即 npm 源
+ * @export
+ * @interface AdapterHandlerOptions
+ */
+export interface AdapterHandlerOptions {
+ baseDir: string;
+ registry?: string;
+}
+
+/**
+ * 插件信息, 对应 plugin.json
+ * @export
+ * @interface AdapterInfo
+ */
+export interface AdapterInfo {
+ // 插件类型
+ type: 'adapter';
+ // 插件名称 zy-adapter-xxx
+ name: string;
+ // 可读插件名称
+ pluginName: string;
+ // 作者
+ author: string;
+ // 描述
+ description: string;
+ // 插件使用文档
+ readme: string;
+ // 入口文件
+ main: string;
+ // 版本
+ version: string;
+ // logo地址
+ logo: string;
+ // 插件状态
+ status: AdapterStatus;
+}
+
+// 插件运行状态
+export type AdapterStatus = 'RUNNING' | 'STOPED' | 'ERROR';
diff --git a/src/main/utils/plugin/index.ts b/src/main/utils/plugin/index.ts
index 871959923..538e35708 100644
--- a/src/main/utils/plugin/index.ts
+++ b/src/main/utils/plugin/index.ts
@@ -1,5 +1,4 @@
import axios from 'axios';
-import { ipcRenderer } from 'electron';
import fixPath from 'fix-path';
import fs from 'fs-extra';
import npm from 'npm';
@@ -33,18 +32,7 @@ class AdapterHandler {
}
this.baseDir = options.baseDir;
- let register = options.registry || 'https://registry.npmmirror.com/';
-
- try {
- const dbdata = ipcRenderer.sendSync('msg-trigger', {
- type: 'dbGet',
- data: { id: 'rubick-localhost-config' },
- });
- register = dbdata.data.register;
- } catch (e) {
- // ignore
- }
- this.registry = register || 'https://registry.npmmirror.com/';
+ this.registry = options.registry || 'https://registry.npmmirror.com/';
}
async upgrade(name: string): Promise {
diff --git a/src/renderer/src/api/plugin.ts b/src/renderer/src/api/plugin.ts
new file mode 100644
index 000000000..123557930
--- /dev/null
+++ b/src/renderer/src/api/plugin.ts
@@ -0,0 +1,48 @@
+import request from '@/utils/request';
+
+export function info(doc: object) {
+ return request({
+ url: `/v1/plugin/info`,
+ method: 'post',
+ data: doc,
+ });
+}
+
+export function start(doc: object) {
+ return request({
+ url: `/v1/plugin/start`,
+ method: 'post',
+ data: doc,
+ });
+}
+
+export function stop(doc: object) {
+ return request({
+ url: `/v1/plugin/stop`,
+ method: 'post',
+ data: doc,
+ });
+}
+
+export function install(doc: object) {
+ return request({
+ url: `/v1/plugin/install`,
+ method: 'post',
+ data: doc,
+ });
+}
+
+export function uninstall(doc: object) {
+ return request({
+ url: `/v1/plugin/uninstall`,
+ method: 'post',
+ data: doc,
+ });
+}
+
+export function list() {
+ return request({
+ url: `/v1/plugin/list`,
+ method: 'get',
+ });
+}
diff --git a/src/renderer/src/locales/lang/en_US/pages/lab.ts b/src/renderer/src/locales/lang/en_US/pages/lab.ts
index 32989933f..9c48bee59 100644
--- a/src/renderer/src/locales/lang/en_US/pages/lab.ts
+++ b/src/renderer/src/locales/lang/en_US/pages/lab.ts
@@ -360,17 +360,39 @@ export default {
},
pluginCenter: {
title: 'PluginCenter',
- search: 'Search',
- install: 'Install',
- uninstall: 'Uninstall',
- update: 'Update',
- detail: 'Detail',
- author: 'Author',
- version: 'Version',
- size: 'Size',
- download: 'Download',
- installed: 'Installed',
- uninstalled: 'Uninstalled',
- updateAvailable: 'Update Available',
+ server: 'Server',
+ file: 'File',
+ empty: 'Empty',
+ info: {
+ title: 'Info',
+ author: 'Author',
+ desc: 'Desc',
+ status: 'Status',
+ stop: 'Stop',
+ start: 'Start',
+ error: 'Error',
+ },
+ control: {
+ title: 'Control',
+ start: 'Start',
+ stop: 'Stop',
+ upgrade: 'Upgrade',
+ update: 'Update',
+ install: 'Install',
+ uninstall: 'UnInstall',
+ cancelTip: 'There is unfinished history. Please wait until it is finished',
+ },
+ content: {
+ title: 'README',
+ },
+ installDialog: {
+ tip: {
+ tip1: 'Put the project into the specified directory, the file name must not have any special characters (if it is already in the directory, it will be ignored).',
+ tip2: 'Enter the project name to install (project file name)',
+ },
+ step: 'Step',
+ goDir: 'Go to Specified Directory',
+ confirm: 'Install',
+ },
},
};
diff --git a/src/renderer/src/locales/lang/zh_CN/pages/lab.ts b/src/renderer/src/locales/lang/zh_CN/pages/lab.ts
index e1e17d186..0fe9800fd 100644
--- a/src/renderer/src/locales/lang/zh_CN/pages/lab.ts
+++ b/src/renderer/src/locales/lang/zh_CN/pages/lab.ts
@@ -360,17 +360,39 @@ export default {
},
pluginCenter: {
title: '插件中心',
- search: '搜索',
- install: '安装',
- uninstall: '卸载',
- update: '更新',
- detail: '详情',
- installed: '已安装',
- uninstalled: '未安装',
- updateAll: '全部更新',
- updateSuccess: '更新成功',
- updateFail: '更新失败',
- installSuccess: '安装成功',
- installFail: '安装失败',
+ server: '服务',
+ file: '目录',
+ empty: '空空如也',
+ info: {
+ title: '应用信息',
+ author: '作者',
+ desc: '描述',
+ status: '状态',
+ stop: '停止',
+ start: '启动',
+ error: '出错',
+ },
+ control: {
+ title: '控制中心',
+ start: '启动',
+ stop: '停止',
+ upgrade: '升级',
+ update: '更新',
+ install: '安装',
+ uninstall: '卸载',
+ cancelTip: '历史存在未执行完内容, 请等完成后执行',
+ },
+ content: {
+ title: 'README',
+ },
+ installDialog: {
+ tip: {
+ tip1: '将项目放入指定目录中, 文件名不可有特殊字符(如已放入则忽略)',
+ tip2: '输入项目名进行安装(项目文件名)',
+ },
+ step: '步骤',
+ goDir: '前往指定目录',
+ confirm: '安装',
+ },
},
};
diff --git a/src/renderer/src/pages/lab/components/pluginCenter/index.vue b/src/renderer/src/pages/lab/components/pluginCenter/index.vue
new file mode 100644
index 000000000..6c1d35aaf
--- /dev/null
+++ b/src/renderer/src/pages/lab/components/pluginCenter/index.vue
@@ -0,0 +1,462 @@
+
+
+
+
+
+
+
+
+
+
+
{{ $t('pages.lab.pluginCenter.control.title') }}
+
+ {{ $t('pages.lab.pluginCenter.info.status') }}:
+
+ {{ $t('pages.lab.pluginCenter.info.start') }}
+ {{ $t('pages.lab.pluginCenter.info.stop') }}
+
+
+
+
+ {{ $t('pages.lab.pluginCenter.control.start') }}
+ {{ $t('pages.lab.pluginCenter.control.stop') }}
+ {{ $t('pages.lab.pluginCenter.control.uninstall') }}
+
+
+
+
{{ $t('pages.lab.pluginCenter.content.title') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/renderer/src/pages/lab/index.vue b/src/renderer/src/pages/lab/index.vue
index fc58f566f..ca3669b73 100644
--- a/src/renderer/src/pages/lab/index.vue
+++ b/src/renderer/src/pages/lab/index.vue
@@ -23,6 +23,7 @@ const componentMap = {
'jsEdit': defineAsyncComponent(() => import('./components/jsEdit/index.vue')),
'staticFilter': defineAsyncComponent(() => import('./components/staticFilter/index.vue')),
'snifferPlay': defineAsyncComponent(() => import('./components/snifferPlay/index.vue')),
+ 'pluginCenter': defineAsyncComponent(() => import('./components/pluginCenter/index.vue')),
};
const currentComponent = shallowRef(componentMap['dataCrypto']);
@@ -45,6 +46,10 @@ const settingNav = computed(() => {
}, {
id: 'snifferPlay',
name: t('pages.lab.nav.snifferPlay')
+ },
+ {
+ id: 'pluginCenter',
+ name: t('pages.lab.nav.pluginCenter')
}
]
});
From bdfcc664777ad292573d40ad88ca27bd738db8dd Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Fri, 6 Dec 2024 13:58:28 +0800
Subject: [PATCH 007/175] [optimize] route
---
src/main/core/server/routes/v1/file/work.ts | 11 +--
src/main/core/server/routes/v1/index.ts | 19 +++--
src/main/core/server/routes/v1/plugin/work.ts | 85 +++++++++++++++++++
src/main/core/server/routes/v1/proxy/work.ts | 32 +------
src/main/utils/hiker/file.ts | 58 ++++++++++---
5 files changed, 147 insertions(+), 58 deletions(-)
create mode 100644 src/main/core/server/routes/v1/plugin/work.ts
diff --git a/src/main/core/server/routes/v1/file/work.ts b/src/main/core/server/routes/v1/file/work.ts
index 0dec639c5..2c0b4170c 100644
--- a/src/main/core/server/routes/v1/file/work.ts
+++ b/src/main/core/server/routes/v1/file/work.ts
@@ -14,6 +14,7 @@ import {
} from '@main/utils/hiker/file';
const API_PREFIX = 'api/v1/file';
+const APP_FILE_PATH = join(APP_STORE_PATH, 'file');
const api: FastifyPluginAsync = async (fastify): Promise => {
fastify.delete(`/${API_PREFIX}/*`, async (req: FastifyRequest<{ Params: { [key: string]: string } }>) => {
@@ -47,13 +48,13 @@ const api: FastifyPluginAsync = async (fastify): Promise => {
}; // 注入给index.js文件main函数里使用
const fileName = req.params['*'];
- const exists = await fileExist(fileName);
+ const exists = await fileExist(join(APP_FILE_PATH, fileName));
let response: any = '';
if (exists) {
- const stats = await fileState(fileName);
+ const stats = await fileState(join(APP_FILE_PATH, fileName));
if (stats === 'dir') {
- const indexPath = join(fileName, './index.js');
+ const indexPath = join(APP_FILE_PATH, fileName, './index.js');
const indexStats = await fileState(indexPath);
if (indexStats === 'file') {
@@ -79,7 +80,7 @@ const api: FastifyPluginAsync = async (fastify): Promise => {
};
}
} else if (stats === 'file') {
- response = await readFile(fileName);
+ response = await readFile(join(APP_FILE_PATH, fileName));
}
return response;
} else {
@@ -128,7 +129,7 @@ const api: FastifyPluginAsync = async (fastify): Promise => {
}
};
- await walk(APP_STORE_PATH, APP_STORE_PATH);
+ await walk(APP_FILE_PATH, APP_FILE_PATH);
return doc;
});
diff --git a/src/main/core/server/routes/v1/index.ts b/src/main/core/server/routes/v1/index.ts
index 2f12eec80..7a9ae5596 100644
--- a/src/main/core/server/routes/v1/index.ts
+++ b/src/main/core/server/routes/v1/index.ts
@@ -1,17 +1,17 @@
-import { work as starWork } from './star';
-import { work as historyWork } from './history';
-import { work as settingWork } from './setting';
import { db } from './db';
-import { work as proxyWork } from './proxy';
-import { ad, ai, jsEdit, staticFilter } from './lab';
-import { work as fileWork } from './file';
-import { barrage } from './player';
-import { work as systemWork } from './system';
-
import { db as driveDb, work as driveWork } from './drive';
+import { work as fileWork } from './file';
+import { work as historyWork } from './history';
+import { ad, ai, jsEdit, staticFilter } from './lab';
import { channel, iptv } from './live';
import { db as analyzeDb, work as analyzeWork } from './parse';
+import { barrage } from './player';
+import { work as pluginWork } from './plugin';
+import { work as proxyWork } from './proxy';
+import { work as settingWork } from './setting';
import { cms, hot, db as sietDb, recomm } from './site';
+import { work as systemWork } from './system';
+import { work as starWork } from './star';
const routesModules = {
analyzeDb,
@@ -36,6 +36,7 @@ const routesModules = {
fileWork,
barrage,
systemWork,
+ pluginWork,
};
export default routesModules;
diff --git a/src/main/core/server/routes/v1/plugin/work.ts b/src/main/core/server/routes/v1/plugin/work.ts
new file mode 100644
index 000000000..1ba31be98
--- /dev/null
+++ b/src/main/core/server/routes/v1/plugin/work.ts
@@ -0,0 +1,85 @@
+import { FastifyPluginAsync, FastifyRequest } from 'fastify';
+import { join } from 'path';
+import { APP_STORE_PATH } from '@main/utils/hiker/file';
+import adapter from './utils/adapter';
+
+const API_PREFIX = 'api/v1/plugin';
+const APP_PLUGIN_PATH = join(APP_STORE_PATH, 'plugin');
+
+const pluginAdapter = new adapter({ baseDir: APP_PLUGIN_PATH });
+
+const api: FastifyPluginAsync = async (fastify): Promise => {
+ fastify.get(`/${API_PREFIX}/list`, async () => {
+ const res = await pluginAdapter.list();
+ return {
+ code: 0,
+ msg: 'ok',
+ data: res,
+ };
+ });
+ fastify.post(`/${API_PREFIX}/info`, async (req: FastifyRequest<{ Body: any[] }>) => {
+ const plugins = req.body;
+ const res = await pluginAdapter.info(plugins);
+ return {
+ code: 0,
+ msg: 'ok',
+ data: res,
+ };
+ });
+ fastify.post(`/${API_PREFIX}/install`, async (req: FastifyRequest<{ Body: any[] }>) => {
+ const plugins = req.body;
+ const res = await pluginAdapter.install(plugins);
+ return {
+ code: 0,
+ msg: 'ok',
+ data: res,
+ };
+ });
+ fastify.post(`/${API_PREFIX}/uninstall`, async (req: FastifyRequest<{ Body: any[] }>) => {
+ const plugins = req.body;
+ const res = await pluginAdapter.uninstall(plugins);
+ return {
+ code: 0,
+ msg: 'ok',
+ data: res,
+ };
+ });
+ fastify.post(`/${API_PREFIX}/update`, async (req: FastifyRequest<{ Body: any[] }>) => {
+ const plugins = req.body;
+ const res = await pluginAdapter.update(plugins);
+ return {
+ code: 0,
+ msg: 'ok',
+ data: res,
+ };
+ });
+ fastify.post(`/${API_PREFIX}/upgrade`, async (req: FastifyRequest<{ Body: any[] }>) => {
+ const plugins = req.body;
+ const res = await pluginAdapter.upgrade(plugins);
+ return {
+ code: 0,
+ msg: 'ok',
+ data: res,
+ };
+ });
+ fastify.post(`/${API_PREFIX}/start`, async (req: FastifyRequest<{ Body: any[] }>) => {
+ const plugins = req.body;
+ const res = await pluginAdapter.start(plugins);
+ return {
+ code: 0,
+ msg: 'ok',
+ data: res,
+ };
+ });
+ fastify.post(`/${API_PREFIX}/stop`, async (req: FastifyRequest<{ Body: any[] }>) => {
+ const plugins = req.body;
+ const res = await pluginAdapter.stop(plugins);
+ return {
+ code: 0,
+ msg: 'ok',
+ data: res,
+ };
+ });
+};
+
+export default api;
diff --git a/src/main/core/server/routes/v1/proxy/work.ts b/src/main/core/server/routes/v1/proxy/work.ts
index 7239e6bf1..d8f0bdcf2 100644
--- a/src/main/core/server/routes/v1/proxy/work.ts
+++ b/src/main/core/server/routes/v1/proxy/work.ts
@@ -1,7 +1,6 @@
import { FastifyReply, FastifyPluginAsync, FastifyRequest } from 'fastify';
-import { pipeline } from 'stream';
import { hash, base64 } from '@main/utils/crypto';
-import request, { completeRequest } from '@main/utils/request';
+import request from '@main/utils/request';
const API_PREFIX = 'proxy';
const api: FastifyPluginAsync = async (fastify): Promise => {
@@ -68,35 +67,6 @@ const api: FastifyPluginAsync = async (fastify): Promise => {
data: `http://127.0.0.1:9978/proxy?do=js&url=${url}`,
};
});
- fastify.get(
- `/${API_PREFIX}/video`,
- async (req: FastifyRequest<{ Querystring: { [key: string]: string } }>, reply: FastifyReply) => {
- const { url, headers } = req.query;
- const response = await completeRequest({
- method: 'get',
- url: url,
- responseType: 'stream', // 重要:设置响应类型为流
- // headers: { 'Custom-Header': 'Custom Value' }
- });
- reply.raw.on('close', () => {
- console.log('Client disconnected, stopping stream.');
- response.data.destroy(); // 销毁目标流
- });
- reply.status(response.code);
- for (const [key, value] of Object.entries(response.headers)) {
- reply.header(key, value);
- }
- // response.pipe(reply.raw);
- pipeline(response.data, reply.raw, (err) => {
- if (err) {
- console.error('Pipeline error:', err);
- if (!reply.raw.headersSent) {
- reply.code(500).send({ error: 'Streaming error' });
- }
- }
- });
- },
- );
};
export default api;
diff --git a/src/main/utils/hiker/file.ts b/src/main/utils/hiker/file.ts
index 4b8e40b94..5c437fff4 100644
--- a/src/main/utils/hiker/file.ts
+++ b/src/main/utils/hiker/file.ts
@@ -5,7 +5,7 @@ import { gzip } from '@main/utils/crypto';
const APP_MARK = 'zy';
const APP_MARK_PATH = `${APP_MARK}://`;
-const APP_STORE_PATH = join(app.getPath('userData'), 'file');
+const APP_STORE_PATH = app.getPath('userData');
const isCheckAppMark = (url: string) => url.startsWith(APP_MARK_PATH);
const isCheckAppStore = (url: string) => url.startsWith(APP_STORE_PATH);
const relative2absolute = (path: string) => {
@@ -34,9 +34,7 @@ const joinPath = (path: string) => {
const saveFile = (fileName: string, content: string, crypto: number = 0) => {
try {
if (!content || !fileName) return false;
- if (crypto !== 0) {
- content = gzip.encode(content);
- }
+ if (crypto !== 0) content = gzip.encode(content);
fs.writeFileSync(joinPath(fileName), content, 'utf8');
return true;
} catch {
@@ -44,18 +42,39 @@ const saveFile = (fileName: string, content: string, crypto: number = 0) => {
}
};
+const saveJson = (fileName: string, content: object, crypto: number = 0) => {
+ try {
+ if (!content || !fileName) return false;
+ fs.writeJsonSync(joinPath(fileName), content, 'utf8');
+ return true;
+ } catch {
+ return false;
+ }
+};
+
const readFile = (fileName: string, crypto: number = 0) => {
try {
- if (!fileName) return false;
+ if (!fileName) return '';
let content = fs.readFileSync(joinPath(fileName), 'utf8');
- if (crypto !== 0) {
- content = gzip.decode(content);
- }
+ if (crypto !== 0) content = gzip.encode(content);
return content;
} catch {
return '';
}
};
+
+const readJson = (fileName: string, crypto: number = 0) => {
+ const defaultData = JSON.parse(JSON.stringify(''));
+ try {
+ if (!fileName) return defaultData;
+ let content = fs.readJSONSync(joinPath(fileName), 'utf8');
+ if (crypto !== 0) content = gzip.encode(content);
+ return content;
+ } catch {
+ return defaultData;
+ }
+};
+
const deleteFile = (fileName: string) => {
try {
if (!fileName) return false;
@@ -69,8 +88,7 @@ const deleteFile = (fileName: string) => {
const fileExist = (fileName: string) => {
try {
if (!fileName) return false;
- fs.existsSync(joinPath(fileName));
- return true;
+ return fs.existsSync(joinPath(fileName));
} catch {
return false;
}
@@ -98,10 +116,21 @@ const readDir = (path: string) => {
const deleteDir = (path: string) => {
try {
- if (!path) return [];
- return fs.rmdirSync(joinPath(path), { recursive: true });
+ if (!path) return false;
+ fs.rmdirSync(joinPath(path), { recursive: true });
+ return true;
} catch {
- return [];
+ return false;
+ }
+};
+
+const createDir = (path: string) => {
+ try {
+ if (!path) return false;
+ fs.mkdirSync(joinPath(path), { recursive: true });
+ return true;
+ } catch {
+ return false;
}
};
@@ -112,8 +141,11 @@ export {
deleteFile,
readFile,
saveFile,
+ saveJson,
readDir,
+ readJson,
deleteDir,
+ createDir,
relative2absolute,
absolute2relative,
};
From dca5c6b217e98364cee93268d7db7366f85a99d0 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Fri, 6 Dec 2024 13:58:42 +0800
Subject: [PATCH 008/175] [change] code wordWrap on
---
src/renderer/src/pages/lab/components/jsEdit/index.vue | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/renderer/src/pages/lab/components/jsEdit/index.vue b/src/renderer/src/pages/lab/components/jsEdit/index.vue
index 9ec82bc16..26a41f45a 100644
--- a/src/renderer/src/pages/lab/components/jsEdit/index.vue
+++ b/src/renderer/src/pages/lab/components/jsEdit/index.vue
@@ -328,6 +328,7 @@ const codeEditConf = ref({
language: 'javascript',
readOnly: false,
theme: store.displayMode === 'light' ? 'vs' : 'vs-dark',
+ wordWrap: 'on',
automaticLayout: true,
folding: true,
roundedSelection: false,
@@ -339,6 +340,7 @@ const logEditConf = ref({
language: 'javascript',
readOnly: true,
theme: store.displayMode === 'light' ? 'vs' : 'vs-dark',
+ wordWrap: 'on',
automaticLayout: true,
folding: true,
roundedSelection: false,
From 64b5dc1846a6c5414490a7f9582cfca01c5a810e Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Fri, 6 Dec 2024 14:00:23 +0800
Subject: [PATCH 009/175] [change] npm packages
---
package.json | 34 +-
yarn.lock | 4043 +++++++++++++++++++++++++++++++++++---------------
2 files changed, 2887 insertions(+), 1190 deletions(-)
diff --git a/package.json b/package.json
index a8d38ffce..c01259454 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "zyfun",
- "version": "3.3.9",
+ "version": "3.3.10-beta1206",
"description": "zyfun client",
"main": "./out/main/index.js",
"repository": {
@@ -47,10 +47,13 @@
"dependencies": {
"@electric-sql/pglite": "^0.2.14",
"@electron/remote": "^2.1.2",
- "puppeteer-core": "^23.9.0",
+ "npm": "6.14.18",
+ "pglite-server": "^0.1.4",
+ "puppeteer-core": "^23.10.1",
"puppeteer-in-electron": "^3.0.5",
"sync-fetch": "^0.6.0-2",
- "sync-request": "^6.1.0"
+ "sync-request": "^6.1.0",
+ "workerpool": "^9.2.0"
},
"devDependencies": {
"@electron-toolkit/eslint-config": "^1.0.2",
@@ -65,7 +68,7 @@
"@imengyu/vue3-context-menu": "^1.4.3",
"@nplayer/danmaku": "^1.0.12",
"@rushstack/eslint-patch": "^1.10.4",
- "@swc/core": "^1.9.3",
+ "@swc/core": "^1.10.0",
"@tdesign-vue-next/chat": "^0.1.4",
"@types/cheerio": "^0.22.35",
"@types/electron-localshortcut": "^3.1.3",
@@ -73,25 +76,25 @@
"@types/lodash": "^4.17.13",
"@types/node": "^22.10.1",
"@types/uuid": "^10.0.0",
- "@types/web": "^0.0.185",
+ "@types/web": "^0.0.186",
"@vitejs/plugin-vue": "^5.2.1",
"@vitejs/plugin-vue-jsx": "^4.1.1",
"@vueuse/core": "12.0.0",
- "@xmldom/xmldom": "^0.9.5",
+ "@xmldom/xmldom": "^0.9.6",
"artplayer": "^5.2.1",
"artplayer-plugin-danmuku": "^5.1.4",
- "axios": "^1.7.8",
+ "axios": "^1.7.9",
"cheerio": "1.0.0",
"compare-versions": "^6.1.1",
"crypto-js": "^4.2.0",
"depcheck": "^1.4.7",
"dplayer": "^1.27.1",
- "drizzle-kit": "^0.28.1",
- "drizzle-orm": "^0.36.4",
+ "drizzle-kit": "^0.29.1",
+ "drizzle-orm": "^0.37.0",
"electron": "^33.2.1",
"electron-builder": "^25.1.8",
"electron-localshortcut": "^3.2.1",
- "electron-log": "^5.2.3",
+ "electron-log": "^5.2.4",
"electron-notarize": "^1.2.2",
"electron-updater": "^6.3.9",
"electron-vite": "^2.3.0",
@@ -126,18 +129,17 @@
"node-json-db": "^2.3.0",
"node-rsa": "^1.1.1",
"nplayer": "^1.0.15",
- "npm": "^10.9.1",
"npm-check-updates": "^17.1.11",
- "openai": "^4.73.1",
+ "openai": "^4.76.0",
"ora": "^8.1.1",
"p-queue": "^8.0.1",
"pako": "^2.1.0",
- "pinia": "^2.2.8",
+ "pinia": "^2.3.0",
"pinia-plugin-persistedstate": "^4.1.3",
- "prettier": "^3.4.1",
+ "prettier": "^3.4.2",
"qrcode.vue": "^3.6.0",
"querystring": "^0.2.1",
- "shaka-player": "^4.12.3",
+ "shaka-player": "^4.12.4",
"sm-crypto": "^0.3.13",
"smooth-scrollbar": "^8.8.4",
"stylelint": "^16.11.0",
@@ -149,7 +151,7 @@
"unplugin-vue-components": "^0.27.5",
"uuid": "^11.0.3",
"v3-infinite-loading": "^1.3.2",
- "vite": "^6.0.1",
+ "vite": "^6.0.3",
"vite-plugin-vue-devtools": "^7.6.7",
"vite-svg-loader": "^5.1.0",
"vue": "^3.5.13",
diff --git a/yarn.lock b/yarn.lock
index d246070af..3fa797c94 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1080,6 +1080,14 @@
resolved "https://registry.npmmirror.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b"
integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==
+"@iarna/cli@^2.1.0":
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/@iarna/cli/-/cli-2.2.0.tgz#02807c8902fa1b515647c304c9c4d6db8aa9783f"
+ integrity sha512-fn1dwhQuWD/OuM/XZhaEy2GOL5Hta/Dis1ZtER/FAe/BKXTHohD4sxPcYQePHUYmrknD+iV+3uic0M8zH/9sJQ==
+ dependencies:
+ glob "^7.1.2"
+ signal-exit "^3.0.2"
+
"@imengyu/vue3-context-menu@^1.4.3":
version "1.4.3"
resolved "https://registry.npmmirror.com/@imengyu/vue3-context-menu/-/vue3-context-menu-1.4.3.tgz#9c4e634eccdc0c9fe5b87e8f7f5e5d5917539c43"
@@ -1118,18 +1126,6 @@
wrap-ansi "^8.1.0"
wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
-"@isaacs/fs-minipass@^4.0.0":
- version "4.0.1"
- resolved "https://registry.npmmirror.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz#2d59ae3ab4b38fb4270bfa23d30f8e2e86c7fe32"
- integrity sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==
- dependencies:
- minipass "^7.0.4"
-
-"@isaacs/string-locale-compare@^1.1.0":
- version "1.1.0"
- resolved "https://registry.npmmirror.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b"
- integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==
-
"@jridgewell/gen-mapping@^0.3.5":
version "0.3.5"
resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36"
@@ -1215,83 +1211,6 @@
resolved "https://registry.npmmirror.com/@nplayer/danmaku/-/danmaku-1.0.12.tgz#f1ff238644730c19da4b8de2dab6ee406620d104"
integrity sha512-VebpoFddFv5Rcf1u2g2q49/Ri/v21mRDDfhSfIZy5xmo4w0Ig8zG8N44r/YQe6F5ratciN5F7VvlqKqFbOjxog==
-"@npmcli/agent@^2.0.0":
- version "2.2.2"
- resolved "https://registry.npmmirror.com/@npmcli/agent/-/agent-2.2.2.tgz#967604918e62f620a648c7975461c9c9e74fc5d5"
- integrity sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==
- dependencies:
- agent-base "^7.1.0"
- http-proxy-agent "^7.0.0"
- https-proxy-agent "^7.0.1"
- lru-cache "^10.0.1"
- socks-proxy-agent "^8.0.3"
-
-"@npmcli/agent@^3.0.0":
- version "3.0.0"
- resolved "https://registry.npmmirror.com/@npmcli/agent/-/agent-3.0.0.tgz#1685b1fbd4a1b7bb4f930cbb68ce801edfe7aa44"
- integrity sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==
- dependencies:
- agent-base "^7.1.0"
- http-proxy-agent "^7.0.0"
- https-proxy-agent "^7.0.1"
- lru-cache "^10.0.1"
- socks-proxy-agent "^8.0.3"
-
-"@npmcli/arborist@^8.0.0":
- version "8.0.0"
- resolved "https://registry.npmmirror.com/@npmcli/arborist/-/arborist-8.0.0.tgz#681af823ac8ca067404dee57e0f91a3d27d6ef0a"
- integrity sha512-APDXxtXGSftyXibl0dZ3CuZYmmVnkiN3+gkqwXshY4GKC2rof2+Lg0sGuj6H1p2YfBAKd7PRwuMVhu6Pf/nQ/A==
- dependencies:
- "@isaacs/string-locale-compare" "^1.1.0"
- "@npmcli/fs" "^4.0.0"
- "@npmcli/installed-package-contents" "^3.0.0"
- "@npmcli/map-workspaces" "^4.0.1"
- "@npmcli/metavuln-calculator" "^8.0.0"
- "@npmcli/name-from-folder" "^3.0.0"
- "@npmcli/node-gyp" "^4.0.0"
- "@npmcli/package-json" "^6.0.1"
- "@npmcli/query" "^4.0.0"
- "@npmcli/redact" "^3.0.0"
- "@npmcli/run-script" "^9.0.1"
- bin-links "^5.0.0"
- cacache "^19.0.1"
- common-ancestor-path "^1.0.1"
- hosted-git-info "^8.0.0"
- json-parse-even-better-errors "^4.0.0"
- json-stringify-nice "^1.1.4"
- lru-cache "^10.2.2"
- minimatch "^9.0.4"
- nopt "^8.0.0"
- npm-install-checks "^7.1.0"
- npm-package-arg "^12.0.0"
- npm-pick-manifest "^10.0.0"
- npm-registry-fetch "^18.0.1"
- pacote "^19.0.0"
- parse-conflict-json "^4.0.0"
- proc-log "^5.0.0"
- proggy "^3.0.0"
- promise-all-reject-late "^1.0.0"
- promise-call-limit "^3.0.1"
- read-package-json-fast "^4.0.0"
- semver "^7.3.7"
- ssri "^12.0.0"
- treeverse "^3.0.0"
- walk-up-path "^3.0.1"
-
-"@npmcli/config@^9.0.0":
- version "9.0.0"
- resolved "https://registry.npmmirror.com/@npmcli/config/-/config-9.0.0.tgz#bd810a1e9e23fcfad800e40d6c2c8b8f4f4318e1"
- integrity sha512-P5Vi16Y+c8E0prGIzX112ug7XxqfaPFUVW/oXAV+2VsxplKZEnJozqZ0xnK8V8w/SEsBf+TXhUihrEIAU4CA5Q==
- dependencies:
- "@npmcli/map-workspaces" "^4.0.1"
- "@npmcli/package-json" "^6.0.1"
- ci-info "^4.0.0"
- ini "^5.0.0"
- nopt "^8.0.0"
- proc-log "^5.0.0"
- semver "^7.3.5"
- walk-up-path "^3.0.1"
-
"@npmcli/fs@^2.1.0":
version "2.1.2"
resolved "https://registry.npmmirror.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865"
@@ -1300,64 +1219,6 @@
"@gar/promisify" "^1.1.3"
semver "^7.3.5"
-"@npmcli/fs@^3.1.0":
- version "3.1.1"
- resolved "https://registry.npmmirror.com/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726"
- integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==
- dependencies:
- semver "^7.3.5"
-
-"@npmcli/fs@^4.0.0":
- version "4.0.0"
- resolved "https://registry.npmmirror.com/@npmcli/fs/-/fs-4.0.0.tgz#a1eb1aeddefd2a4a347eca0fab30bc62c0e1c0f2"
- integrity sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==
- dependencies:
- semver "^7.3.5"
-
-"@npmcli/git@^6.0.0", "@npmcli/git@^6.0.1":
- version "6.0.1"
- resolved "https://registry.npmmirror.com/@npmcli/git/-/git-6.0.1.tgz#9ee894a35c2082d0b41883e267ff140aece457d5"
- integrity sha512-BBWMMxeQzalmKadyimwb2/VVQyJB01PH0HhVSNLHNBDZN/M/h/02P6f8fxedIiFhpMj11SO9Ep5tKTBE7zL2nw==
- dependencies:
- "@npmcli/promise-spawn" "^8.0.0"
- ini "^5.0.0"
- lru-cache "^10.0.1"
- npm-pick-manifest "^10.0.0"
- proc-log "^5.0.0"
- promise-inflight "^1.0.1"
- promise-retry "^2.0.1"
- semver "^7.3.5"
- which "^5.0.0"
-
-"@npmcli/installed-package-contents@^3.0.0":
- version "3.0.0"
- resolved "https://registry.npmmirror.com/@npmcli/installed-package-contents/-/installed-package-contents-3.0.0.tgz#2c1170ff4f70f68af125e2842e1853a93223e4d1"
- integrity sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==
- dependencies:
- npm-bundled "^4.0.0"
- npm-normalize-package-bin "^4.0.0"
-
-"@npmcli/map-workspaces@^4.0.1":
- version "4.0.2"
- resolved "https://registry.npmmirror.com/@npmcli/map-workspaces/-/map-workspaces-4.0.2.tgz#d02c5508bf55624f60aaa58fe413748a5c773802"
- integrity sha512-mnuMuibEbkaBTYj9HQ3dMe6L0ylYW+s/gfz7tBDMFY/la0w9Kf44P9aLn4/+/t3aTR3YUHKoT6XQL9rlicIe3Q==
- dependencies:
- "@npmcli/name-from-folder" "^3.0.0"
- "@npmcli/package-json" "^6.0.0"
- glob "^10.2.2"
- minimatch "^9.0.0"
-
-"@npmcli/metavuln-calculator@^8.0.0":
- version "8.0.1"
- resolved "https://registry.npmmirror.com/@npmcli/metavuln-calculator/-/metavuln-calculator-8.0.1.tgz#c14307a1f0e43524e7ae833d1787c2e0425a9f44"
- integrity sha512-WXlJx9cz3CfHSt9W9Opi1PTFc4WZLFomm5O8wekxQZmkyljrBRwATwDxfC9iOXJwYVmfiW1C1dUe0W2aN0UrSg==
- dependencies:
- cacache "^19.0.0"
- json-parse-even-better-errors "^4.0.0"
- pacote "^20.0.0"
- proc-log "^5.0.0"
- semver "^7.3.5"
-
"@npmcli/move-file@^2.0.0":
version "2.0.1"
resolved "https://registry.npmmirror.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4"
@@ -1366,60 +1227,6 @@
mkdirp "^1.0.4"
rimraf "^3.0.2"
-"@npmcli/name-from-folder@^3.0.0":
- version "3.0.0"
- resolved "https://registry.npmmirror.com/@npmcli/name-from-folder/-/name-from-folder-3.0.0.tgz#ed49b18d16b954149f31240e16630cfec511cd57"
- integrity sha512-61cDL8LUc9y80fXn+lir+iVt8IS0xHqEKwPu/5jCjxQTVoSCmkXvw4vbMrzAMtmghz3/AkiBjhHkDKUH+kf7kA==
-
-"@npmcli/node-gyp@^4.0.0":
- version "4.0.0"
- resolved "https://registry.npmmirror.com/@npmcli/node-gyp/-/node-gyp-4.0.0.tgz#01f900bae62f0f27f9a5a127b40d443ddfb9d4c6"
- integrity sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==
-
-"@npmcli/package-json@^6.0.0", "@npmcli/package-json@^6.0.1":
- version "6.0.1"
- resolved "https://registry.npmmirror.com/@npmcli/package-json/-/package-json-6.0.1.tgz#550a8eb3e0ae9ad8577cb7a3f2d677a04a3bcee9"
- integrity sha512-YW6PZ99sc1Q4DINEY2td5z9Z3rwbbsx7CyCnOc7UXUUdePXh5gPi1UeaoQVmKQMVbIU7aOwX2l1OG5ZfjgGi5g==
- dependencies:
- "@npmcli/git" "^6.0.0"
- glob "^10.2.2"
- hosted-git-info "^8.0.0"
- json-parse-even-better-errors "^4.0.0"
- normalize-package-data "^7.0.0"
- proc-log "^5.0.0"
- semver "^7.5.3"
-
-"@npmcli/promise-spawn@^8.0.0", "@npmcli/promise-spawn@^8.0.2":
- version "8.0.2"
- resolved "https://registry.npmmirror.com/@npmcli/promise-spawn/-/promise-spawn-8.0.2.tgz#053688f8bc2b4ecc036d2d52c691fd82af58ea5e"
- integrity sha512-/bNJhjc+o6qL+Dwz/bqfTQClkEO5nTQ1ZEcdCkAQjhkZMHIh22LPG7fNh1enJP1NKWDqYiiABnjFCY7E0zHYtQ==
- dependencies:
- which "^5.0.0"
-
-"@npmcli/query@^4.0.0":
- version "4.0.0"
- resolved "https://registry.npmmirror.com/@npmcli/query/-/query-4.0.0.tgz#7a2470254f5a12a1499d2296a7343043c7847568"
- integrity sha512-3pPbese0fbCiFJ/7/X1GBgxAKYFE8sxBddA7GtuRmOgNseH4YbGsXJ807Ig3AEwNITjDUISHglvy89cyDJnAwA==
- dependencies:
- postcss-selector-parser "^6.1.2"
-
-"@npmcli/redact@^3.0.0":
- version "3.0.0"
- resolved "https://registry.npmmirror.com/@npmcli/redact/-/redact-3.0.0.tgz#ab3b6413355be7f3c02e87c36c2b0c2f9773fce4"
- integrity sha512-/1uFzjVcfzqrgCeGW7+SZ4hv0qLWmKXVzFahZGJ6QuJBj6Myt9s17+JL86i76NV9YSnJRcGXJYQbAU0rn1YTCQ==
-
-"@npmcli/run-script@^9.0.0", "@npmcli/run-script@^9.0.1":
- version "9.0.1"
- resolved "https://registry.npmmirror.com/@npmcli/run-script/-/run-script-9.0.1.tgz#f90a0cf4f4e8f42d66669d3af568c5036859b654"
- integrity sha512-q9C0uHrb6B6cm3qXVM32UmpqTKuFGbtP23O2K5sLvPMz2hilKd0ptqGXSpuunOuOmPQb/aT5F/kCXFc1P2gO/A==
- dependencies:
- "@npmcli/node-gyp" "^4.0.0"
- "@npmcli/package-json" "^6.0.0"
- "@npmcli/promise-spawn" "^8.0.0"
- node-gyp "^10.0.0"
- proc-log "^5.0.0"
- which "^5.0.0"
-
"@nuxt/kit@^3.13.2":
version "3.14.1592"
resolved "https://registry.npmmirror.com/@nuxt/kit/-/kit-3.14.1592.tgz#f959a269424c1ee313585a46112e474b6ccab3bc"
@@ -1485,10 +1292,10 @@
resolved "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
-"@puppeteer/browsers@2.4.1":
- version "2.4.1"
- resolved "https://registry.npmmirror.com/@puppeteer/browsers/-/browsers-2.4.1.tgz#7afd271199cc920ece2ff25109278be0a3e8a225"
- integrity sha512-0kdAbmic3J09I6dT8e9vE2JOCSt13wHCW5x/ly8TSt2bDtuIWe2TgLZZDHdcziw9AVCzflMAXCrVyRIhIs44Ng==
+"@puppeteer/browsers@2.5.0":
+ version "2.5.0"
+ resolved "https://registry.npmmirror.com/@puppeteer/browsers/-/browsers-2.5.0.tgz#7e4f7ba8f04e54f11501b78dc7bcc4033de935d4"
+ integrity sha512-6TQAc/5uRILE6deixJ1CR8rXyTbzXIXNgO1D0Woi9Bqicz2FV5iKP3BHYEg6o4UATCMcbQQ0jbmeaOkn/HQk2w==
dependencies:
debug "^4.3.7"
extract-zip "^2.0.1"
@@ -1608,52 +1415,6 @@
resolved "https://registry.npmmirror.com/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz#60de891bb126abfdc5410fdc6166aca065f10a0c"
integrity sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==
-"@sigstore/bundle@^3.0.0":
- version "3.0.0"
- resolved "https://registry.npmmirror.com/@sigstore/bundle/-/bundle-3.0.0.tgz#ffffc750436c6eb8330ead1ca65bc892f893a7c5"
- integrity sha512-XDUYX56iMPAn/cdgh/DTJxz5RWmqKV4pwvUAEKEWJl+HzKdCd/24wUa9JYNMlDSCb7SUHAdtksxYX779Nne/Zg==
- dependencies:
- "@sigstore/protobuf-specs" "^0.3.2"
-
-"@sigstore/core@^2.0.0":
- version "2.0.0"
- resolved "https://registry.npmmirror.com/@sigstore/core/-/core-2.0.0.tgz#f888a8e4c8fdaa27848514a281920b6fd8eca955"
- integrity sha512-nYxaSb/MtlSI+JWcwTHQxyNmWeWrUXJJ/G4liLrGG7+tS4vAz6LF3xRXqLH6wPIVUoZQel2Fs4ddLx4NCpiIYg==
-
-"@sigstore/protobuf-specs@^0.3.2":
- version "0.3.2"
- resolved "https://registry.npmmirror.com/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz#5becf88e494a920f548d0163e2978f81b44b7d6f"
- integrity sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==
-
-"@sigstore/sign@^3.0.0":
- version "3.0.0"
- resolved "https://registry.npmmirror.com/@sigstore/sign/-/sign-3.0.0.tgz#70752aaa54dfeafa0b0fbe1f58ebe9fe3d621f8f"
- integrity sha512-UjhDMQOkyDoktpXoc5YPJpJK6IooF2gayAr5LvXI4EL7O0vd58okgfRcxuaH+YTdhvb5aa1Q9f+WJ0c2sVuYIw==
- dependencies:
- "@sigstore/bundle" "^3.0.0"
- "@sigstore/core" "^2.0.0"
- "@sigstore/protobuf-specs" "^0.3.2"
- make-fetch-happen "^14.0.1"
- proc-log "^5.0.0"
- promise-retry "^2.0.1"
-
-"@sigstore/tuf@^3.0.0":
- version "3.0.0"
- resolved "https://registry.npmmirror.com/@sigstore/tuf/-/tuf-3.0.0.tgz#5f657e3052e93cb09e1735ee7f52b7938351278d"
- integrity sha512-9Xxy/8U5OFJu7s+OsHzI96IX/OzjF/zj0BSSaWhgJgTqtlBhQIV2xdrQI5qxLD7+CWWDepadnXAxzaZ3u9cvRw==
- dependencies:
- "@sigstore/protobuf-specs" "^0.3.2"
- tuf-js "^3.0.1"
-
-"@sigstore/verify@^2.0.0":
- version "2.0.0"
- resolved "https://registry.npmmirror.com/@sigstore/verify/-/verify-2.0.0.tgz#4ad96e9234b71b57622c3c446b63bad805351030"
- integrity sha512-Ggtq2GsJuxFNUvQzLoXqRwS4ceRfLAJnrIHUDrzAD0GgnOhwujJkKkxM/s5Bako07c3WtAs/sZo5PJq7VHjeDg==
- dependencies:
- "@sigstore/bundle" "^3.0.0"
- "@sigstore/core" "^2.0.0"
- "@sigstore/protobuf-specs" "^0.3.2"
-
"@sindresorhus/is@^4.0.0":
version "4.6.0"
resolved "https://registry.npmmirror.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f"
@@ -1669,74 +1430,74 @@
resolved "https://registry.npmmirror.com/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz#abb11d99aeb6d27f1b563c38147a72d50058e339"
integrity sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==
-"@swc/core-darwin-arm64@1.9.3":
- version "1.9.3"
- resolved "https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.3.tgz#cca13f7ce6e1099612a7ba017f4923857d3a4d5f"
- integrity sha512-hGfl/KTic/QY4tB9DkTbNuxy5cV4IeejpPD4zo+Lzt4iLlDWIeANL4Fkg67FiVceNJboqg48CUX+APhDHO5G1w==
-
-"@swc/core-darwin-x64@1.9.3":
- version "1.9.3"
- resolved "https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.9.3.tgz#01376c6c2caea5dd0c235f21ebc7e41238153c86"
- integrity sha512-IaRq05ZLdtgF5h9CzlcgaNHyg4VXuiStnOFpfNEMuI5fm5afP2S0FHq8WdakUz5WppsbddTdplL+vpeApt/WCQ==
-
-"@swc/core-linux-arm-gnueabihf@1.9.3":
- version "1.9.3"
- resolved "https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.3.tgz#4a9705903cebfc8e3e2bee71a42f7c88896e61df"
- integrity sha512-Pbwe7xYprj/nEnZrNBvZfjnTxlBIcfApAGdz2EROhjpPj+FBqBa3wOogqbsuGGBdCphf8S+KPprL1z+oDWkmSQ==
-
-"@swc/core-linux-arm64-gnu@1.9.3":
- version "1.9.3"
- resolved "https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.3.tgz#722aefc00a7abfb031fae7539226c7d7683f5c8d"
- integrity sha512-AQ5JZiwNGVV/2K2TVulg0mw/3LYfqpjZO6jDPtR2evNbk9Yt57YsVzS+3vHSlUBQDRV9/jqMuZYVU3P13xrk+g==
-
-"@swc/core-linux-arm64-musl@1.9.3":
- version "1.9.3"
- resolved "https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.3.tgz#6643f683311cc1dcee00970e3d6b4872225bdbd8"
- integrity sha512-tzVH480RY6RbMl/QRgh5HK3zn1ZTFsThuxDGo6Iuk1MdwIbdFYUY034heWUTI4u3Db97ArKh0hNL0xhO3+PZdg==
-
-"@swc/core-linux-x64-gnu@1.9.3":
- version "1.9.3"
- resolved "https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.3.tgz#e6f5cefa244409abe1451fbb4575696a870cbd7a"
- integrity sha512-ivXXBRDXDc9k4cdv10R21ccBmGebVOwKXT/UdH1PhxUn9m/h8erAWjz5pcELwjiMf27WokqPgaWVfaclDbgE+w==
-
-"@swc/core-linux-x64-musl@1.9.3":
- version "1.9.3"
- resolved "https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.3.tgz#4d45399f7a01389add61febd02da9b12f16abc81"
- integrity sha512-ILsGMgfnOz1HwdDz+ZgEuomIwkP1PHT6maigZxaCIuC6OPEhKE8uYna22uU63XvYcLQvZYDzpR3ms47WQPuNEg==
-
-"@swc/core-win32-arm64-msvc@1.9.3":
- version "1.9.3"
- resolved "https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.3.tgz#8c352bcea558b9a950877cd724f132d7d51a4d80"
- integrity sha512-e+XmltDVIHieUnNJHtspn6B+PCcFOMYXNJB1GqoCcyinkEIQNwC8KtWgMqUucUbEWJkPc35NHy9k8aCXRmw9Kg==
-
-"@swc/core-win32-ia32-msvc@1.9.3":
- version "1.9.3"
- resolved "https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.3.tgz#656f78b9c56413dbd590ac259dbe0d563cd8e166"
- integrity sha512-rqpzNfpAooSL4UfQnHhkW8aL+oyjqJniDP0qwZfGnjDoJSbtPysHg2LpcOBEdSnEH+uIZq6J96qf0ZFD8AGfXA==
-
-"@swc/core-win32-x64-msvc@1.9.3":
- version "1.9.3"
- resolved "https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.3.tgz#9595c177d2c11909558da93b18f37e7c5ae1909c"
- integrity sha512-3YJJLQ5suIEHEKc1GHtqVq475guiyqisKSoUnoaRtxkDaW5g1yvPt9IoSLOe2mRs7+FFhGGU693RsBUSwOXSdQ==
-
-"@swc/core@^1.9.3":
- version "1.9.3"
- resolved "https://registry.npmmirror.com/@swc/core/-/core-1.9.3.tgz#e5bc9b35df2f4a60026c6759c1a6575070339d4f"
- integrity sha512-oRj0AFePUhtatX+BscVhnzaAmWjpfAeySpM1TCbxA1rtBDeH/JDhi5yYzAKneDYtVtBvA7ApfeuzhMC9ye4xSg==
+"@swc/core-darwin-arm64@1.10.0":
+ version "1.10.0"
+ resolved "https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.0.tgz#39fd894356f8e858535e96111d34602da0a730c5"
+ integrity sha512-wCeUpanqZyzvgqWRtXIyhcFK3CqukAlYyP+fJpY2gWc/+ekdrenNIfZMwY7tyTFDkXDYEKzvn3BN/zDYNJFowQ==
+
+"@swc/core-darwin-x64@1.10.0":
+ version "1.10.0"
+ resolved "https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.10.0.tgz#d1b95c1db67ac328a96324b800843bc410d17f05"
+ integrity sha512-0CZPzqTynUBO+SHEl/qKsFSahp2Jv/P2ZRjFG0gwZY5qIcr1+B/v+o74/GyNMBGz9rft+F2WpU31gz2sJwyF4A==
+
+"@swc/core-linux-arm-gnueabihf@1.10.0":
+ version "1.10.0"
+ resolved "https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.0.tgz#e10510bb028bc3836948cb7345312269cd22295d"
+ integrity sha512-oq+DdMu5uJOFPtRkeiITc4kxmd+QSmK+v+OBzlhdGkSgoH3yRWZP+H2ao0cBXo93ZgCr2LfjiER0CqSKhjGuNA==
+
+"@swc/core-linux-arm64-gnu@1.10.0":
+ version "1.10.0"
+ resolved "https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.0.tgz#a4826c0b44db5b5a02826a0c47307f5969bcc353"
+ integrity sha512-Y6+PC8knchEViRxiCUj3j8wsGXaIhuvU+WqrFqV834eiItEMEI9+Vh3FovqJMBE3L7d4E4ZQtgImHCXjrHfxbw==
+
+"@swc/core-linux-arm64-musl@1.10.0":
+ version "1.10.0"
+ resolved "https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.0.tgz#d4adab4a646be095e3c64226a0150ebe4b874c1a"
+ integrity sha512-EbrX9A5U4cECCQQfky7945AW9GYnTXtCUXElWTkTYmmyQK87yCyFfY8hmZ9qMFIwxPOH6I3I2JwMhzdi8Qoz7g==
+
+"@swc/core-linux-x64-gnu@1.10.0":
+ version "1.10.0"
+ resolved "https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.0.tgz#278655c2b2abcb2e7ada031e75e6853777ebce4c"
+ integrity sha512-TaxpO6snTjjfLXFYh5EjZ78se69j2gDcqEM8yB9gguPYwkCHi2Ylfmh7iVaNADnDJFtjoAQp0L41bTV/Pfq9Cg==
+
+"@swc/core-linux-x64-musl@1.10.0":
+ version "1.10.0"
+ resolved "https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.0.tgz#7df236de40a685c1723a904d6dead99eea36a30f"
+ integrity sha512-IEGvDd6aEEKEyZFZ8oCKuik05G5BS7qwG5hO5PEMzdGeh8JyFZXxsfFXbfeAqjue4UaUUrhnoX+Ze3M2jBVMHw==
+
+"@swc/core-win32-arm64-msvc@1.10.0":
+ version "1.10.0"
+ resolved "https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.0.tgz#99278f8f02c79e03caeeb6d64941d0487e58d7e1"
+ integrity sha512-UkQ952GSpY+Z6XONj9GSW8xGSkF53jrCsuLj0nrcuw7Dvr1a816U/9WYZmmcYS8tnG2vHylhpm6csQkyS8lpCw==
+
+"@swc/core-win32-ia32-msvc@1.10.0":
+ version "1.10.0"
+ resolved "https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.0.tgz#a5cf2cfa3e31e8e01a3692d7e053aaa788d3cf3e"
+ integrity sha512-a2QpIZmTiT885u/mUInpeN2W9ClCnqrV2LnMqJR1/Fgx1Afw/hAtiDZPtQ0SqS8yDJ2VR5gfNZo3gpxWMrqdVA==
+
+"@swc/core-win32-x64-msvc@1.10.0":
+ version "1.10.0"
+ resolved "https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.0.tgz#ee1fdf8e6a627de33501b5a404465a7e676c8689"
+ integrity sha512-tZcCmMwf483nwsEBfUk5w9e046kMa1iSik4bP9Kwi2FGtOfHuDfIcwW4jek3hdcgF5SaBW1ktnK/lgQLDi5AtA==
+
+"@swc/core@^1.10.0":
+ version "1.10.0"
+ resolved "https://registry.npmmirror.com/@swc/core/-/core-1.10.0.tgz#9584465f7c5feaf34098466c7063c0044fa08bd8"
+ integrity sha512-+CuuTCmQFfzaNGg1JmcZvdUVITQXJk9sMnl1C2TiDLzOSVOJRwVD4dNo5dljX/qxpMAN+2BIYlwjlSkoGi6grg==
dependencies:
"@swc/counter" "^0.1.3"
"@swc/types" "^0.1.17"
optionalDependencies:
- "@swc/core-darwin-arm64" "1.9.3"
- "@swc/core-darwin-x64" "1.9.3"
- "@swc/core-linux-arm-gnueabihf" "1.9.3"
- "@swc/core-linux-arm64-gnu" "1.9.3"
- "@swc/core-linux-arm64-musl" "1.9.3"
- "@swc/core-linux-x64-gnu" "1.9.3"
- "@swc/core-linux-x64-musl" "1.9.3"
- "@swc/core-win32-arm64-msvc" "1.9.3"
- "@swc/core-win32-ia32-msvc" "1.9.3"
- "@swc/core-win32-x64-msvc" "1.9.3"
+ "@swc/core-darwin-arm64" "1.10.0"
+ "@swc/core-darwin-x64" "1.10.0"
+ "@swc/core-linux-arm-gnueabihf" "1.10.0"
+ "@swc/core-linux-arm64-gnu" "1.10.0"
+ "@swc/core-linux-arm64-musl" "1.10.0"
+ "@swc/core-linux-x64-gnu" "1.10.0"
+ "@swc/core-linux-x64-musl" "1.10.0"
+ "@swc/core-win32-arm64-msvc" "1.10.0"
+ "@swc/core-win32-ia32-msvc" "1.10.0"
+ "@swc/core-win32-x64-msvc" "1.10.0"
"@swc/counter@^0.1.3":
version "0.1.3"
@@ -1786,19 +1547,6 @@
resolved "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
-"@tufjs/canonical-json@2.0.0":
- version "2.0.0"
- resolved "https://registry.npmmirror.com/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz#a52f61a3d7374833fca945b2549bc30a2dd40d0a"
- integrity sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==
-
-"@tufjs/models@3.0.1":
- version "3.0.1"
- resolved "https://registry.npmmirror.com/@tufjs/models/-/models-3.0.1.tgz#5aebb782ebb9e06f071ae7831c1f35b462b0319c"
- integrity sha512-UUYHISyhCU3ZgN8yaear3cGATHb3SMuKHsQ/nVbHXcmnBf+LzQ/cQfhNG+rfaSHgqGKNEm2cOCLVLELStUQ1JA==
- dependencies:
- "@tufjs/canonical-json" "2.0.0"
- minimatch "^9.0.5"
-
"@types/async-retry@^1.4.1":
version "1.4.9"
resolved "https://registry.npmmirror.com/@types/async-retry/-/async-retry-1.4.9.tgz#47d118e835864d633b5208a78a6907b1b44e50bc"
@@ -2040,10 +1788,10 @@
resolved "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597"
integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==
-"@types/web@^0.0.185":
- version "0.0.185"
- resolved "https://registry.npmmirror.com/@types/web/-/web-0.0.185.tgz#def32eec50056cafa8218d1a625750822795c2c9"
- integrity sha512-jxXqkf4sBn/WV9YsOlB5fFzWo9kGafMDF62VmVC1mFF367BuRn/2txr0ZaEchPsNIvyiLckMpxO6Xz3knpC6Nw==
+"@types/web@^0.0.186":
+ version "0.0.186"
+ resolved "https://registry.npmmirror.com/@types/web/-/web-0.0.186.tgz#f34ebe66f022c4336cc298aeafb30817acf5c126"
+ integrity sha512-KKlMHVNDOzs9yfwCB93ur4ogZww5FOsh/RFoYYjkNDIAuUCLjHwGDD1lj7StPmnM5KfX41N41BiqL+Ui7LQEPw==
"@types/yauzl@^2.9.1":
version "2.10.3"
@@ -2366,12 +2114,20 @@
resolved "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99"
integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==
-"@xmldom/xmldom@^0.9.5":
- version "0.9.5"
- resolved "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.9.5.tgz#a2c08c3a0c5931daae67dd0385edf2f464d1fee4"
- integrity sha512-6g1EwSs8cr8JhP1iBxzyVAWM6BIDvx9Y3FZRIQiMDzgG43Pxi8YkWOZ0nQj2NHgNzgXDZbJewFx/n+YAvMZrfg==
+"@xmldom/xmldom@^0.9.6":
+ version "0.9.6"
+ resolved "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.9.6.tgz#3eaefb585c1f920e06fb35e6dcb8d505445621c0"
+ integrity sha512-Su4xcxR0CPGwlDHNmVP09fqET9YxbyDXHaSob6JlBH7L6reTYaeim6zbk9o08UarO0L5GTRo3uzl0D+9lSxmvw==
+
+JSONStream@^1.3.4, JSONStream@^1.3.5:
+ version "1.3.5"
+ resolved "https://registry.npmmirror.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
+ integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
+ dependencies:
+ jsonparse "^1.2.0"
+ through ">=2.2.7 <3"
-abbrev@^1.0.0:
+abbrev@1, abbrev@^1.0.0, abbrev@~1.1.1:
version "1.1.1"
resolved "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
@@ -2381,11 +2137,6 @@ abbrev@^2.0.0:
resolved "https://registry.npmmirror.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf"
integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==
-abbrev@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmmirror.com/abbrev/-/abbrev-3.0.0.tgz#c29a6337e167ac61a84b41b80461b29c5c271a27"
- integrity sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==
-
abort-controller@^3.0.0:
version "3.0.0"
resolved "https://registry.npmmirror.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
@@ -2408,6 +2159,13 @@ acorn@^8.14.0, acorn@^8.8.2:
resolved "https://registry.npmmirror.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0"
integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
+agent-base@4, agent-base@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee"
+ integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==
+ dependencies:
+ es6-promisify "^5.0.0"
+
agent-base@6, agent-base@^6.0.2:
version "6.0.2"
resolved "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
@@ -2422,6 +2180,20 @@ agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1:
dependencies:
debug "^4.3.4"
+agent-base@~4.2.1:
+ version "4.2.1"
+ resolved "https://registry.npmmirror.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9"
+ integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==
+ dependencies:
+ es6-promisify "^5.0.0"
+
+agentkeepalive@^3.4.1:
+ version "3.5.3"
+ resolved "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-3.5.3.tgz#c210afce942b4287e2df2fbfe6c0d57eda2ce634"
+ integrity sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw==
+ dependencies:
+ humanize-ms "^1.2.1"
+
agentkeepalive@^4.2.1:
version "4.5.0"
resolved "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923"
@@ -2449,7 +2221,7 @@ ajv-keywords@^3.4.1:
resolved "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
-ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.4:
+ajv@^6.10.0, ajv@^6.12.0, ajv@^6.12.3, ajv@^6.12.4:
version "6.12.6"
resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -2474,11 +2246,33 @@ alien-signals@^0.2.0:
resolved "https://registry.npmmirror.com/alien-signals/-/alien-signals-0.2.2.tgz#439d09b363dc4d609c0f6ce69362dce068d23197"
integrity sha512-cZIRkbERILsBOXTQmMrxc9hgpxglstn69zm+F1ARf4aPAzdAFYd6sBq87ErO0Fj3DV94tglcyHG5kQz9nDC/8A==
+ansi-align@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
+ integrity sha512-TdlOggdA/zURfMYa7ABC66j+oqfMew58KpJMbUlH3bcZP1b+cBHIHDDn5uH9INsxrHBPjsqM0tDB4jPTF/vgJA==
+ dependencies:
+ string-width "^2.0.0"
+
ansi-colors@^4.1.1:
version "4.1.3"
resolved "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==
+
+ansi-regex@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1"
+ integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
+
+ansi-regex@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed"
+ integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==
+
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
@@ -2489,7 +2283,7 @@ ansi-regex@^6.0.1:
resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654"
integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==
-ansi-styles@^3.2.1:
+ansi-styles@^3.2.0, ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
@@ -2508,6 +2302,16 @@ ansi-styles@^6.1.0:
resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+ansicolors@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.npmmirror.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979"
+ integrity sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==
+
+ansistyles@~0.1.3:
+ version "0.1.3"
+ resolved "https://registry.npmmirror.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539"
+ integrity sha512-6QWEyvMgIXX0eO972y7YPBLSBsq7UWKFAoNNTLGaOJ9bstcEL9sCbcjf96dVfNDdUsRoGOK82vWFJlKApXds7g==
+
anymatch@~3.1.2:
version "3.1.3"
resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
@@ -2559,7 +2363,12 @@ app-builder-lib@25.1.8:
tar "^6.1.12"
temp-file "^3.4.0"
-"aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0:
+aproba@^1.0.3, aproba@^1.1.1, aproba@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
+"aproba@^1.0.3 || ^2.0.0", "aproba@^1.1.2 || 2", aproba@^2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc"
integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==
@@ -2577,6 +2386,14 @@ are-we-there-yet@^3.0.0:
delegates "^1.0.0"
readable-stream "^3.6.0"
+are-we-there-yet@~1.1.2:
+ version "1.1.7"
+ resolved "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146"
+ integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.6"
+
argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@@ -2589,6 +2406,14 @@ argparse@^2.0.1:
resolved "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+array-buffer-byte-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f"
+ integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==
+ dependencies:
+ call-bind "^1.0.5"
+ is-array-buffer "^3.0.4"
+
array-differ@^3.0.0:
version "3.0.0"
resolved "https://registry.npmmirror.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b"
@@ -2599,6 +2424,33 @@ array-union@^2.1.0:
resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+array.prototype.reduce@^1.0.6:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/array.prototype.reduce/-/array.prototype.reduce-1.0.7.tgz#6aadc2f995af29cb887eb866d981dc85ab6f7dc7"
+ integrity sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+ es-array-method-boxes-properly "^1.0.0"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ is-string "^1.0.7"
+
+arraybuffer.prototype.slice@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6"
+ integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==
+ dependencies:
+ array-buffer-byte-length "^1.0.1"
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ es-abstract "^1.22.3"
+ es-errors "^1.2.1"
+ get-intrinsic "^1.2.3"
+ is-array-buffer "^3.0.4"
+ is-shared-array-buffer "^1.0.2"
+
arrify@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa"
@@ -2616,19 +2468,19 @@ artplayer@^5.2.1:
dependencies:
option-validator "^2.0.6"
-asap@~2.0.6:
+asap@^2.0.0, asap@~2.0.6:
version "2.0.6"
resolved "https://registry.npmmirror.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==
-asn1@^0.2.4:
+asn1@^0.2.4, asn1@~0.2.3:
version "0.2.6"
resolved "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d"
integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==
dependencies:
safer-buffer "~2.1.0"
-assert-plus@^1.0.0:
+assert-plus@1.0.0, assert-plus@^1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==
@@ -2677,6 +2529,13 @@ atomic-sleep@^1.0.0:
resolved "https://registry.npmmirror.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b"
integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==
+available-typed-arrays@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
+ integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
+ dependencies:
+ possible-typed-array-names "^1.0.0"
+
avvio@^9.0.0:
version "9.1.0"
resolved "https://registry.npmmirror.com/avvio/-/avvio-9.1.0.tgz#0ff80ed211682441d8aa39ff21a4b9d022109c44"
@@ -2685,6 +2544,16 @@ avvio@^9.0.0:
"@fastify/error" "^4.0.0"
fastq "^1.17.1"
+aws-sign2@~0.7.0:
+ version "0.7.0"
+ resolved "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
+ integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==
+
+aws4@^1.8.0:
+ version "1.13.2"
+ resolved "https://registry.npmmirror.com/aws4/-/aws4-1.13.2.tgz#0aa167216965ac9474ccfa83892cfb6b3e1e52ef"
+ integrity sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==
+
axios@1.2.3:
version "1.2.3"
resolved "https://registry.npmmirror.com/axios/-/axios-1.2.3.tgz#31a3d824c0ebf754a004b585e5f04a5f87e6c4ff"
@@ -2694,10 +2563,10 @@ axios@1.2.3:
form-data "^4.0.0"
proxy-from-env "^1.1.0"
-axios@^1.7.8:
- version "1.7.8"
- resolved "https://registry.npmmirror.com/axios/-/axios-1.7.8.tgz#1997b1496b394c21953e68c14aaa51b7b5de3d6e"
- integrity sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==
+axios@^1.7.9:
+ version "1.7.9"
+ resolved "https://registry.npmmirror.com/axios/-/axios-1.7.9.tgz#d7d071380c132a24accda1b2cfc1535b79ec650a"
+ integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==
dependencies:
follow-redirects "^1.15.6"
form-data "^4.0.0"
@@ -2771,18 +2640,26 @@ basic-ftp@^5.0.2:
resolved "https://registry.npmmirror.com/basic-ftp/-/basic-ftp-5.0.5.tgz#14a474f5fffecca1f4f406f1c26b18f800225ac0"
integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==
-bin-links@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmmirror.com/bin-links/-/bin-links-5.0.0.tgz#2b0605b62dd5e1ddab3b92a3c4e24221cae06cca"
- integrity sha512-sdleLVfCjBtgO5cNjA2HVRvWBJAHs4zwenaCPMNJAJU0yNxpzj80IpjOIimkpkr+mhlA+how5poQtt53PygbHA==
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
+ integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==
+ dependencies:
+ tweetnacl "^0.14.3"
+
+bin-links@^1.1.2, bin-links@^1.1.8:
+ version "1.1.8"
+ resolved "https://registry.npmmirror.com/bin-links/-/bin-links-1.1.8.tgz#bd39aadab5dc4bdac222a07df5baf1af745b2228"
+ integrity sha512-KgmVfx+QqggqP9dA3iIc5pA4T1qEEEL+hOhOhNPaUm77OTrJoOXE/C05SJLNJe6m/2wUK7F1tDSou7n5TfCDzQ==
dependencies:
- cmd-shim "^7.0.0"
- npm-normalize-package-bin "^4.0.0"
- proc-log "^5.0.0"
- read-cmd-shim "^5.0.0"
- write-file-atomic "^6.0.0"
+ bluebird "^3.5.3"
+ cmd-shim "^3.0.0"
+ gentle-fs "^2.3.0"
+ graceful-fs "^4.1.15"
+ npm-normalize-package-bin "^1.0.0"
+ write-file-atomic "^2.3.0"
-binary-extensions@^2.0.0, binary-extensions@^2.3.0:
+binary-extensions@^2.0.0:
version "2.3.0"
resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
@@ -2808,7 +2685,7 @@ bluebird-lst@^1.0.9:
dependencies:
bluebird "^3.5.5"
-bluebird@^3.5.5:
+bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5, bluebird@^3.7.2:
version "3.7.2"
resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
@@ -2823,6 +2700,19 @@ boolean@^3.0.1:
resolved "https://registry.npmmirror.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b"
integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==
+boxen@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b"
+ integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==
+ dependencies:
+ ansi-align "^2.0.0"
+ camelcase "^4.0.0"
+ chalk "^2.0.1"
+ cli-boxes "^1.0.0"
+ string-width "^2.0.0"
+ term-size "^1.2.0"
+ widest-line "^2.0.0"
+
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
@@ -2903,6 +2793,11 @@ builder-util@25.1.7:
stat-mode "^1.0.0"
temp-file "^3.4.0"
+builtins@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
+ integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==
+
bundle-name@^4.1.0:
version "4.1.0"
resolved "https://registry.npmmirror.com/bundle-name/-/bundle-name-4.1.0.tgz#f3b96b34160d6431a19d7688135af7cfb8797889"
@@ -2910,11 +2805,21 @@ bundle-name@^4.1.0:
dependencies:
run-applescript "^7.0.0"
+byline@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1"
+ integrity sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==
+
byte-length@^1.0.2:
version "1.0.2"
resolved "https://registry.npmmirror.com/byte-length/-/byte-length-1.0.2.tgz#ba5a5909240b0121c079b7f7b15248d6f08223cc"
integrity sha512-ovBpjmsgd/teRmgcPh23d4gJvxDoXtAzEL9xTfMU8Yc2kqCDb7L9jAG0XHl1nzuGl+h3ebCIF1i62UFyA9V/2Q==
+byte-size@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191"
+ integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw==
+
c12@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/c12/-/c12-2.0.1.tgz#5702d280b31a08abba39833494c9b1202f0f5aec"
@@ -2938,6 +2843,27 @@ cac@^6.7.14:
resolved "https://registry.npmmirror.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959"
integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==
+cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.4:
+ version "12.0.4"
+ resolved "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c"
+ integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==
+ dependencies:
+ bluebird "^3.5.5"
+ chownr "^1.1.1"
+ figgy-pudding "^3.5.1"
+ glob "^7.1.4"
+ graceful-fs "^4.1.15"
+ infer-owner "^1.0.3"
+ lru-cache "^5.1.1"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.1"
+ move-concurrently "^1.0.1"
+ promise-inflight "^1.0.1"
+ rimraf "^2.6.3"
+ ssri "^6.0.1"
+ unique-filename "^1.1.1"
+ y18n "^4.0.0"
+
cacache@^16.1.0:
version "16.1.3"
resolved "https://registry.npmmirror.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e"
@@ -2962,42 +2888,6 @@ cacache@^16.1.0:
tar "^6.1.11"
unique-filename "^2.0.0"
-cacache@^18.0.0:
- version "18.0.4"
- resolved "https://registry.npmmirror.com/cacache/-/cacache-18.0.4.tgz#4601d7578dadb59c66044e157d02a3314682d6a5"
- integrity sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==
- dependencies:
- "@npmcli/fs" "^3.1.0"
- fs-minipass "^3.0.0"
- glob "^10.2.2"
- lru-cache "^10.0.1"
- minipass "^7.0.3"
- minipass-collect "^2.0.1"
- minipass-flush "^1.0.5"
- minipass-pipeline "^1.2.4"
- p-map "^4.0.0"
- ssri "^10.0.0"
- tar "^6.1.11"
- unique-filename "^3.0.0"
-
-cacache@^19.0.0, cacache@^19.0.1:
- version "19.0.1"
- resolved "https://registry.npmmirror.com/cacache/-/cacache-19.0.1.tgz#3370cc28a758434c85c2585008bd5bdcff17d6cd"
- integrity sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==
- dependencies:
- "@npmcli/fs" "^4.0.0"
- fs-minipass "^3.0.0"
- glob "^10.2.2"
- lru-cache "^10.0.1"
- minipass "^7.0.3"
- minipass-collect "^2.0.1"
- minipass-flush "^1.0.5"
- minipass-pipeline "^1.2.4"
- p-map "^7.0.2"
- ssri "^12.0.0"
- tar "^7.4.3"
- unique-filename "^4.0.0"
-
cacheable-lookup@^5.0.3:
version "5.0.4"
resolved "https://registry.npmmirror.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005"
@@ -3016,7 +2906,7 @@ cacheable-request@^7.0.2:
normalize-url "^6.0.1"
responselike "^2.0.0"
-call-bind@^1.0.7:
+call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
version "1.0.7"
resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
@@ -3027,6 +2917,11 @@ call-bind@^1.0.7:
get-intrinsic "^1.2.4"
set-function-length "^1.2.1"
+call-limit@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/call-limit/-/call-limit-1.1.1.tgz#ef15f2670db3f1992557e2d965abc459e6e358d4"
+ integrity sha512-5twvci5b9eRBw2wCfPtN0GmlR2/gadZqyFpPhOK6CvMFoFgA+USnZ6Jpu1lhG9h85pQ3Ouil3PfXWRD4EUaRiQ==
+
callsite@^1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
@@ -3037,6 +2932,16 @@ callsites@^3.0.0:
resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+camelcase@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
+ integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==
+
+camelcase@^5.0.0:
+ version "5.3.1"
+ resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
camelcase@^6.3.0:
version "6.3.0"
resolved "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
@@ -3047,12 +2952,17 @@ caniuse-lite@^1.0.30001669:
resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz#0eca437bab7d5f03452ff0ef9de8299be6b08e16"
integrity sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==
+capture-stack-trace@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz#1c43f6b059d4249e7f3f8724f15f048b927d3a8a"
+ integrity sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==
+
caseless@^0.12.0, caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==
-chalk@^2.3.2, chalk@^2.4.1:
+chalk@^2.0.1, chalk@^2.3.2, chalk@^2.4.1:
version "2.4.2"
resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -3154,16 +3064,16 @@ chokidar@^4.0.1:
dependencies:
readdirp "^4.0.1"
+chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
+ integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
+
chownr@^2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
-chownr@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmmirror.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4"
- integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==
-
chromium-bidi@0.8.0:
version "0.8.0"
resolved "https://registry.npmmirror.com/chromium-bidi/-/chromium-bidi-0.8.0.tgz#ffd79dad7db1fcc874f1c55fcf46ded05a884269"
@@ -3178,22 +3088,27 @@ chromium-pickle-js@^0.2.0:
resolved "https://registry.npmmirror.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205"
integrity sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==
+ci-info@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497"
+ integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==
+
+ci-info@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
+ integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+
ci-info@^3.2.0:
version "3.9.0"
resolved "https://registry.npmmirror.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
-ci-info@^4.0.0, ci-info@^4.1.0:
- version "4.1.0"
- resolved "https://registry.npmmirror.com/ci-info/-/ci-info-4.1.0.tgz#92319d2fa29d2620180ea5afed31f589bc98cf83"
- integrity sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==
-
-cidr-regex@^4.1.1:
- version "4.1.1"
- resolved "https://registry.npmmirror.com/cidr-regex/-/cidr-regex-4.1.1.tgz#acbe7ba9f10d658710bddd25baa900509e90125a"
- integrity sha512-ekKcVp+iRB9zlKFXyx7io7nINgb0oRjgRdXNEodp1OuxRui8FXr/CA40Tz1voWUp9DPPrMyQKy01vJhDo4N1lw==
+cidr-regex@^2.0.10:
+ version "2.0.10"
+ resolved "https://registry.npmmirror.com/cidr-regex/-/cidr-regex-2.0.10.tgz#af13878bd4ad704de77d6dc800799358b3afa70d"
+ integrity sha512-sB3ogMQXWvreNPbJUZMRApxuRYd+KoIo4RGQ81VatjmMW6WJPo+IJZ2846FGItr9VzKo5w7DXzijPLGtSd0N3Q==
dependencies:
- ip-regex "^5.0.0"
+ ip-regex "^2.1.0"
citty@^0.1.6:
version "0.1.6"
@@ -3207,13 +3122,18 @@ clean-stack@^2.0.0:
resolved "https://registry.npmmirror.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
-cli-columns@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/cli-columns/-/cli-columns-4.0.0.tgz#9fe4d65975238d55218c41bd2ed296a7fa555646"
- integrity sha512-XW2Vg+w+L9on9wtwKpyzluIPCWXjaBahI7mTcYjx+BVIYD9c3yqcv/yKC7CmdCZat4rq2yiE1UMSJC5ivKfMtQ==
+cli-boxes@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
+ integrity sha512-3Fo5wu8Ytle8q9iCzS4D2MWVL2X7JVWRiS1BnXbTFDhS9c/REkM9vd1AmabsoZoY5/dGi5TT9iKL8Kb6DeBRQg==
+
+cli-columns@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/cli-columns/-/cli-columns-3.1.2.tgz#6732d972979efc2ae444a1f08e08fa139c96a18e"
+ integrity sha512-iQYpDgpPPmCjn534ikQOhi+ydP6uMar+DtJ6a0In4aGL/PKqWfao75s6eF81quQQaz7isGz+goNECLARRZswdg==
dependencies:
- string-width "^4.2.3"
- strip-ansi "^6.0.1"
+ string-width "^2.0.0"
+ strip-ansi "^3.0.1"
cli-cursor@^3.1.0:
version "3.1.0"
@@ -3234,6 +3154,16 @@ cli-spinners@^2.5.0, cli-spinners@^2.9.2:
resolved "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41"
integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==
+cli-table3@^0.5.0, cli-table3@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.npmmirror.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202"
+ integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==
+ dependencies:
+ object-assign "^4.1.0"
+ string-width "^2.1.1"
+ optionalDependencies:
+ colors "^1.1.2"
+
cli-truncate@^2.1.0:
version "2.1.0"
resolved "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7"
@@ -3251,6 +3181,15 @@ clipboard@^2.0.11:
select "^1.1.2"
tiny-emitter "^2.0.0"
+cliui@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
+ integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
+ dependencies:
+ string-width "^3.1.0"
+ strip-ansi "^5.2.0"
+ wrap-ansi "^5.1.0"
+
cliui@^7.0.2:
version "7.0.4"
resolved "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
@@ -3288,10 +3227,18 @@ clone@^1.0.2:
resolved "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==
-cmd-shim@^7.0.0:
- version "7.0.0"
- resolved "https://registry.npmmirror.com/cmd-shim/-/cmd-shim-7.0.0.tgz#23bcbf69fff52172f7e7c02374e18fb215826d95"
- integrity sha512-rtpaCbr164TPPh+zFdkWpCyZuKkjpAzODfaZCf/SVJZzJN+4bHQb/LP3Jzq5/+84um3XXY8r548XiWKSborwVw==
+cmd-shim@^3.0.0, cmd-shim@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.npmmirror.com/cmd-shim/-/cmd-shim-3.0.3.tgz#2c35238d3df37d98ecdd7d5f6b8dc6b21cadc7cb"
+ integrity sha512-DtGg+0xiFhQIntSBRzL2fRQBnmtAVwXIDo4Qq46HPpObYquxMaZS4sb82U9nH91qJrlosC1wa9gwr0QyL/HypA==
+ dependencies:
+ graceful-fs "^4.1.2"
+ mkdirp "~0.5.0"
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==
color-convert@^1.9.0:
version "1.9.3"
@@ -3327,7 +3274,20 @@ colord@^2.9.3:
resolved "https://registry.npmmirror.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43"
integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
-combined-stream@^1.0.6, combined-stream@^1.0.8:
+colors@^1.1.2:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
+ integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
+
+columnify@~1.5.4:
+ version "1.5.4"
+ resolved "https://registry.npmmirror.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb"
+ integrity sha512-rFl+iXVT1nhLQPfGDw+3WcS8rmm7XsLKUmhsGE3ihzzpIikeGrTaZPIRKYWeLsLBypsHzjXIvYEltVUZS84XxQ==
+ dependencies:
+ strip-ansi "^3.0.0"
+ wcwidth "^1.0.0"
+
+combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
version "1.0.8"
resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
@@ -3359,11 +3319,6 @@ commander@^7.2.0:
resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
-common-ancestor-path@^1.0.1:
- version "1.0.1"
- resolved "https://registry.npmmirror.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7"
- integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==
-
compare-version@^0.1.2:
version "0.1.2"
resolved "https://registry.npmmirror.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080"
@@ -3384,7 +3339,7 @@ concat-map@0.0.1:
resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
-concat-stream@^1.6.0, concat-stream@^1.6.2:
+concat-stream@^1.5.0, concat-stream@^1.6.0, concat-stream@^1.6.2:
version "1.6.2"
resolved "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
@@ -3420,12 +3375,24 @@ config-file-ts@0.2.8-rc1:
glob "^10.3.12"
typescript "^5.4.3"
+configstore@^3.0.0:
+ version "3.1.5"
+ resolved "https://registry.npmmirror.com/configstore/-/configstore-3.1.5.tgz#e9af331fadc14dabd544d3e7e76dc446a09a530f"
+ integrity sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==
+ dependencies:
+ dot-prop "^4.2.1"
+ graceful-fs "^4.1.2"
+ make-dir "^1.0.0"
+ unique-string "^1.0.0"
+ write-file-atomic "^2.0.0"
+ xdg-basedir "^3.0.0"
+
consola@^3.2.3:
version "3.2.3"
resolved "https://registry.npmmirror.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f"
integrity sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==
-console-control-strings@^1.1.0:
+console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0:
version "1.1.0"
resolved "https://registry.npmmirror.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==
@@ -3459,6 +3426,18 @@ copy-anything@^3.0.2:
dependencies:
is-what "^4.1.8"
+copy-concurrently@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
+ integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
+ dependencies:
+ aproba "^1.1.1"
+ fs-write-stream-atomic "^1.0.8"
+ iferr "^0.1.5"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.0"
+
core-js@^3.6.4:
version "3.39.0"
resolved "https://registry.npmmirror.com/core-js/-/core-js-3.39.0.tgz#57f7647f4d2d030c32a72ea23a0555b2eaa30f83"
@@ -3502,6 +3481,22 @@ crc@^3.8.0:
dependencies:
buffer "^5.1.0"
+create-error-class@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6"
+ integrity sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==
+ dependencies:
+ capture-stack-trace "^1.0.0"
+
+cross-spawn@^5.0.1:
+ version "5.1.0"
+ resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
+ integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==
+ dependencies:
+ lru-cache "^4.0.1"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.3, cross-spawn@^7.0.5:
version "7.0.6"
resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
@@ -3526,6 +3521,11 @@ crypto-js@^4.2.0:
resolved "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631"
integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==
+crypto-random-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
+ integrity sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==
+
css-functions-list@^3.2.3:
version "3.2.3"
resolved "https://registry.npmmirror.com/css-functions-list/-/css-functions-list-3.2.3.tgz#95652b0c24f0f59b291a9fc386041a19d4f40dbe"
@@ -3599,6 +3599,11 @@ csstype@^3.1.3:
resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
+cyclist@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/cyclist/-/cyclist-1.0.2.tgz#673b5f233bf34d8e602b949429f8171d9121bea3"
+ integrity sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==
+
d@1, d@^1.0.1, d@^1.0.2:
version "1.0.2"
resolved "https://registry.npmmirror.com/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de"
@@ -3614,6 +3619,13 @@ danmu.js@>=1.1.6:
dependencies:
event-emitter "^0.3.5"
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
+ integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==
+ dependencies:
+ assert-plus "^1.0.0"
+
data-uri-to-buffer@^4.0.0:
version "4.0.1"
resolved "https://registry.npmmirror.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e"
@@ -3624,8 +3636,35 @@ data-uri-to-buffer@^6.0.2:
resolved "https://registry.npmmirror.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b"
integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==
-dayjs@1.11.10:
- version "1.11.10"
+data-view-buffer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2"
+ integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==
+ dependencies:
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.1"
+
+data-view-byte-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2"
+ integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==
+ dependencies:
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.1"
+
+data-view-byte-offset@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a"
+ integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==
+ dependencies:
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.1"
+
+dayjs@1.11.10:
+ version "1.11.10"
resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0"
integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==
@@ -3634,13 +3673,42 @@ de-indent@^1.0.2:
resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
-debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.6, debug@^4.3.7:
+debug@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+ integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
+ dependencies:
+ ms "2.0.0"
+
+debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.7:
version "4.3.7"
resolved "https://registry.npmmirror.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52"
integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
dependencies:
ms "^2.1.3"
+debug@^3.1.0:
+ version "3.2.7"
+ resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
+ integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
+ dependencies:
+ ms "^2.1.1"
+
+debuglog@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
+ integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==
+
+decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==
+
+decode-uri-component@^0.2.0:
+ version "0.2.2"
+ resolved "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
+ integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
+
decompress-response@^6.0.0:
version "6.0.0"
resolved "https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
@@ -3648,6 +3716,11 @@ decompress-response@^6.0.0:
dependencies:
mimic-response "^3.1.0"
+deep-extend@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.npmmirror.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
+ integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
+
deep-is@^0.1.3:
version "0.1.4"
resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
@@ -3712,7 +3785,7 @@ define-lazy-prop@^3.0.0:
resolved "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f"
integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==
-define-properties@^1.2.1:
+define-properties@^1.2.0, define-properties@^1.2.1:
version "1.2.1"
resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
@@ -3794,11 +3867,21 @@ detect-file@^1.0.0:
resolved "https://registry.npmmirror.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
integrity sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==
+detect-indent@~5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d"
+ integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==
+
detect-libc@^2.0.1:
version "2.0.3"
resolved "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700"
integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==
+detect-newline@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
+ integrity sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==
+
detect-node@^2.0.4:
version "2.1.0"
resolved "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
@@ -3809,10 +3892,13 @@ devtools-protocol@0.0.1367902:
resolved "https://registry.npmmirror.com/devtools-protocol/-/devtools-protocol-0.0.1367902.tgz#7333bfc4466c5a54a4c6de48a9dfbcb4b811660c"
integrity sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg==
-diff@^5.1.0:
- version "5.2.0"
- resolved "https://registry.npmmirror.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531"
- integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==
+dezalgo@^1.0.0, dezalgo@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81"
+ integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==
+ dependencies:
+ asap "^2.0.0"
+ wrappy "1"
dir-compare@^4.2.0:
version "4.2.0"
@@ -3919,6 +4005,13 @@ domutils@^3.0.1, domutils@^3.1.0:
domelementtype "^2.3.0"
domhandler "^5.0.3"
+dot-prop@^4.2.1:
+ version "4.2.1"
+ resolved "https://registry.npmmirror.com/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4"
+ integrity sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==
+ dependencies:
+ is-obj "^1.0.0"
+
dotenv-expand@^11.0.6:
version "11.0.7"
resolved "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08"
@@ -3931,6 +4024,11 @@ dotenv@^16.4.5:
resolved "https://registry.npmmirror.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
+dotenv@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef"
+ integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==
+
downloadjs@1.4.7:
version "1.4.7"
resolved "https://registry.npmmirror.com/downloadjs/-/downloadjs-1.4.7.tgz#f69f96f940e0d0553dac291139865a3cd0101e3c"
@@ -3945,26 +4043,54 @@ dplayer@^1.27.1:
balloon-css "^1.0.3"
promise-polyfill "8.3.0"
-drizzle-kit@^0.28.1:
- version "0.28.1"
- resolved "https://registry.npmmirror.com/drizzle-kit/-/drizzle-kit-0.28.1.tgz#8bb92aa99319446b7158769ec605788f8fa23504"
- integrity sha512-JimOV+ystXTWMgZkLHYHf2w3oS28hxiH1FR0dkmJLc7GHzdGJoJAQtQS5DRppnabsRZwE2U1F6CuezVBgmsBBQ==
+drizzle-kit@^0.29.1:
+ version "0.29.1"
+ resolved "https://registry.npmmirror.com/drizzle-kit/-/drizzle-kit-0.29.1.tgz#71c83908d089d7bcbf7ce7a442827ccd75e1c915"
+ integrity sha512-OvHL8RVyYiPR3LLRE3SHdcON8xGXl+qMfR9uTTnFWBPIqVk/3NWYZPb7nfpM1Bhix3H+BsxqPyyagG7YZ+Z63A==
dependencies:
"@drizzle-team/brocli" "^0.10.2"
"@esbuild-kit/esm-loader" "^2.5.5"
esbuild "^0.19.7"
esbuild-register "^3.5.0"
-drizzle-orm@^0.36.4:
- version "0.36.4"
- resolved "https://registry.npmmirror.com/drizzle-orm/-/drizzle-orm-0.36.4.tgz#f296848e94534f318cba4cfa56634694c14742ca"
- integrity sha512-1OZY3PXD7BR00Gl61UUOFihslDldfH4NFRH2MbP54Yxi0G/PKn4HfO65JYZ7c16DeP3SpM3Aw+VXVG9j6CRSXA==
+drizzle-orm@^0.37.0:
+ version "0.37.0"
+ resolved "https://registry.npmmirror.com/drizzle-orm/-/drizzle-orm-0.37.0.tgz#313c508164922cf99cee5fa17381c503035538fa"
+ integrity sha512-AsCNACQ/T2CyZUkrBRUqFT2ibHJ9ZHz3+lzYJFFn3hnj7ylIeItMz5kacRG89uSE74nXYShqehr6u+6ks4JR1A==
+
+duplexer3@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.npmmirror.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e"
+ integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==
+
+duplexify@^3.4.2, duplexify@^3.6.0:
+ version "3.7.1"
+ resolved "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
eastasianwidth@^0.2.0:
version "0.2.0"
resolved "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
+ecc-jsbn@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
+ integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==
+ dependencies:
+ jsbn "~0.1.0"
+ safer-buffer "^2.1.0"
+
+editor@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742"
+ integrity sha512-SoRmbGStwNYHgKfjOrX2L0mUvp9bUVv0uPppZSOMAntEbcFtoC3MKF5b3T6HQPXKIV+QGY3xPO3JK5it5lVkuw==
+
editorconfig@^1.0.4:
version "1.0.4"
resolved "https://registry.npmmirror.com/editorconfig/-/editorconfig-1.0.4.tgz#040c9a8e9a6c5288388b87c2db07028aa89f53a3"
@@ -4013,10 +4139,10 @@ electron-localshortcut@^3.2.1:
keyboardevent-from-electron-accelerator "^2.0.0"
keyboardevents-areequal "^0.2.1"
-electron-log@^5.2.3:
- version "5.2.3"
- resolved "https://registry.npmmirror.com/electron-log/-/electron-log-5.2.3.tgz#b58447b2158b9aa5faa07c4d15340113069d3f15"
- integrity sha512-BabCiEV+p362LzY0EFE8hyzeGknzKDWSbhS0VFfRYQGA4FHWXWSfaKJlvTR9LFepNoORXxc/BWvqBXIPgsVFgA==
+electron-log@^5.2.4:
+ version "5.2.4"
+ resolved "https://registry.npmmirror.com/electron-log/-/electron-log-5.2.4.tgz#6b488d9db80aa3c6f3dc39bcd635fc9d1f79c8af"
+ integrity sha512-iX12WXc5XAaKeHg2QpiFjVwL+S1NVHPFd3V5RXtCmKhpAzXsVQnR3UEc0LovM6p6NkUQxDWnkdkaam9FNUVmCA==
electron-notarize@^1.2.2:
version "1.2.2"
@@ -4098,6 +4224,11 @@ emoji-regex@^10.3.0:
resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-10.4.0.tgz#03553afea80b3975749cfcb36f776ca268e413d4"
integrity sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
emoji-regex@^8.0.0:
version "8.0.0"
resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
@@ -4116,14 +4247,14 @@ encoding-sniffer@^0.2.0:
iconv-lite "^0.6.3"
whatwg-encoding "^3.1.1"
-encoding@^0.1.13:
+encoding@^0.1.11, encoding@^0.1.13:
version "0.1.13"
resolved "https://registry.npmmirror.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
dependencies:
iconv-lite "^0.6.2"
-end-of-stream@^1.1.0:
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
version "1.4.4"
resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
@@ -4150,12 +4281,17 @@ env-paths@^2.2.0, env-paths@^2.2.1:
resolved "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
+err-code@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960"
+ integrity sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==
+
err-code@^2.0.2:
version "2.0.3"
resolved "https://registry.npmmirror.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9"
integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==
-errno@^0.1.1:
+errno@^0.1.1, errno@~0.1.7:
version "0.1.8"
resolved "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
@@ -4174,6 +4310,63 @@ error-stack-parser-es@^0.1.5:
resolved "https://registry.npmmirror.com/error-stack-parser-es/-/error-stack-parser-es-0.1.5.tgz#15b50b67bea4b6ed6596976ee07c7867ae25bb1c"
integrity sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==
+es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2, es-abstract@^1.23.5:
+ version "1.23.5"
+ resolved "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.23.5.tgz#f4599a4946d57ed467515ed10e4f157289cd52fb"
+ integrity sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==
+ dependencies:
+ array-buffer-byte-length "^1.0.1"
+ arraybuffer.prototype.slice "^1.0.3"
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ data-view-buffer "^1.0.1"
+ data-view-byte-length "^1.0.1"
+ data-view-byte-offset "^1.0.0"
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ es-set-tostringtag "^2.0.3"
+ es-to-primitive "^1.2.1"
+ function.prototype.name "^1.1.6"
+ get-intrinsic "^1.2.4"
+ get-symbol-description "^1.0.2"
+ globalthis "^1.0.4"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.2"
+ has-proto "^1.0.3"
+ has-symbols "^1.0.3"
+ hasown "^2.0.2"
+ internal-slot "^1.0.7"
+ is-array-buffer "^3.0.4"
+ is-callable "^1.2.7"
+ is-data-view "^1.0.1"
+ is-negative-zero "^2.0.3"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.3"
+ is-string "^1.0.7"
+ is-typed-array "^1.1.13"
+ is-weakref "^1.0.2"
+ object-inspect "^1.13.3"
+ object-keys "^1.1.1"
+ object.assign "^4.1.5"
+ regexp.prototype.flags "^1.5.3"
+ safe-array-concat "^1.1.2"
+ safe-regex-test "^1.0.3"
+ string.prototype.trim "^1.2.9"
+ string.prototype.trimend "^1.0.8"
+ string.prototype.trimstart "^1.0.8"
+ typed-array-buffer "^1.0.2"
+ typed-array-byte-length "^1.0.1"
+ typed-array-byte-offset "^1.0.2"
+ typed-array-length "^1.0.6"
+ unbox-primitive "^1.0.2"
+ which-typed-array "^1.1.15"
+
+es-array-method-boxes-properly@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e"
+ integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==
+
es-define-property@^1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
@@ -4181,11 +4374,36 @@ es-define-property@^1.0.0:
dependencies:
get-intrinsic "^1.2.4"
-es-errors@^1.3.0:
+es-errors@^1.2.1, es-errors@^1.3.0:
version "1.3.0"
resolved "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
+es-object-atoms@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941"
+ integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==
+ dependencies:
+ es-errors "^1.3.0"
+
+es-set-tostringtag@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777"
+ integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==
+ dependencies:
+ get-intrinsic "^1.2.4"
+ has-tostringtag "^1.0.2"
+ hasown "^2.0.1"
+
+es-to-primitive@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18"
+ integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==
+ dependencies:
+ is-callable "^1.2.7"
+ is-date-object "^1.0.5"
+ is-symbol "^1.0.4"
+
es5-ext@^0.10.35, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14:
version "0.10.64"
resolved "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714"
@@ -4210,11 +4428,18 @@ es6-iterator@^2.0.3:
es5-ext "^0.10.35"
es6-symbol "^3.1.1"
-es6-promise@^4.2.4, es6-promise@^4.2.5, es6-promise@^4.2.8:
+es6-promise@^4.0.3, es6-promise@^4.2.4, es6-promise@^4.2.5, es6-promise@^4.2.8:
version "4.2.8"
resolved "https://registry.npmmirror.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
+es6-promisify@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
+ integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==
+ dependencies:
+ es6-promise "^4.0.3"
+
es6-symbol@^3.1.1, es6-symbol@^3.1.3:
version "3.1.4"
resolved "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c"
@@ -4528,6 +4753,19 @@ eventemitter3@^5.0.1:
resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4"
integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==
+execa@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.npmmirror.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
+ integrity sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==
+ dependencies:
+ cross-spawn "^5.0.1"
+ get-stream "^3.0.0"
+ is-stream "^1.1.0"
+ npm-run-path "^2.0.0"
+ p-finally "^1.0.0"
+ signal-exit "^3.0.0"
+ strip-eof "^1.0.0"
+
execa@^5.1.1:
version "5.1.1"
resolved "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
@@ -4595,6 +4833,11 @@ ext@^1.7.0:
dependencies:
type "^2.7.2"
+extend@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
extract-zip@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
@@ -4606,6 +4849,11 @@ extract-zip@^2.0.1:
optionalDependencies:
"@types/yauzl" "^2.9.1"
+extsprintf@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
+ integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==
+
extsprintf@^1.2.0:
version "1.4.1"
resolved "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07"
@@ -4764,6 +5012,11 @@ fetch-blob@^3.1.2, fetch-blob@^3.1.4:
node-domexception "^1.0.0"
web-streams-polyfill "^3.0.3"
+figgy-pudding@^3.4.1, figgy-pudding@^3.5.1, figgy-pudding@^3.5.2:
+ version "3.5.2"
+ resolved "https://registry.npmmirror.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
+ integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
+
figures@^6.1.0:
version "6.1.0"
resolved "https://registry.npmmirror.com/figures/-/figures-6.1.0.tgz#935479f51865fa7479f6fa94fc6fc7ac14e62c4a"
@@ -4799,6 +5052,11 @@ fill-range@^7.1.1:
dependencies:
to-regex-range "^5.0.1"
+filter-obj@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b"
+ integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==
+
find-my-way@^9.0.0:
version "9.1.0"
resolved "https://registry.npmmirror.com/find-my-way/-/find-my-way-9.1.0.tgz#df941d61198b6380bc962250652c2dff43468880"
@@ -4808,6 +5066,18 @@ find-my-way@^9.0.0:
fast-querystring "^1.0.0"
safe-regex2 "^4.0.0"
+find-npm-prefix@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf"
+ integrity sha512-KEftzJ+H90x6pcKtdXZEPsQse8/y/UnvzRKrOSQFprnrGaFuJ62fVkP34Iu2IYuMvyauCyoLTNkJZgrrGA2wkA==
+
+find-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
find-up@^5.0.0:
version "5.0.0"
resolved "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
@@ -4859,6 +5129,14 @@ flatted@^3.2.9, flatted@^3.3.1:
resolved "https://registry.npmmirror.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27"
integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==
+flush-write-stream@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
+ integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
+ dependencies:
+ inherits "^2.0.3"
+ readable-stream "^2.3.6"
+
flv.js@^1.6.2:
version "1.6.2"
resolved "https://registry.npmmirror.com/flv.js/-/flv.js-1.6.2.tgz#fa3340fe3f7ee01d3977f7876aee66b8436e5922"
@@ -4872,6 +5150,13 @@ follow-redirects@^1.15.0, follow-redirects@^1.15.6:
resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1"
integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==
+for-each@^0.3.3:
+ version "0.3.3"
+ resolved "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
+ integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
+ dependencies:
+ is-callable "^1.1.3"
+
foreground-child@^3.1.0:
version "3.3.0"
resolved "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77"
@@ -4880,6 +5165,11 @@ foreground-child@^3.1.0:
cross-spawn "^7.0.0"
signal-exit "^4.0.1"
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+ integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==
+
form-data-encoder@1.7.2:
version "1.7.2"
resolved "https://registry.npmmirror.com/form-data-encoder/-/form-data-encoder-1.7.2.tgz#1f1ae3dccf58ed4690b86d87e4f57c654fbab040"
@@ -4904,6 +5194,15 @@ form-data@^4.0.0, form-data@^4.0.1:
combined-stream "^1.0.8"
mime-types "^2.1.12"
+form-data@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.npmmirror.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
+ integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.6"
+ mime-types "^2.1.12"
+
formdata-node@^4.3.2:
version "4.4.1"
resolved "https://registry.npmmirror.com/formdata-node/-/formdata-node-4.4.1.tgz#23f6a5cb9cb55315912cbec4ff7b0f59bbd191e2"
@@ -4924,6 +5223,22 @@ forwarded@0.2.0:
resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
+from2@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/from2/-/from2-1.3.0.tgz#88413baaa5f9a597cfde9221d86986cd3c061dfd"
+ integrity sha512-1eKYoECvhpM4IT70THQV8XNfmZoIlnROymbwOSazfmQO3kK+zCV+LSqUDzl7gDo3MZddCFeVa9Zg3Hi6FXqcgg==
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "~1.1.10"
+
+from2@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
+ integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+
fs-extra@^10.0.0, fs-extra@^10.1.0:
version "10.1.0"
resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
@@ -4961,6 +5276,13 @@ fs-extra@^9.0.0, fs-extra@^9.0.1:
jsonfile "^6.0.1"
universalify "^2.0.0"
+fs-minipass@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
+ integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
+ dependencies:
+ minipass "^2.6.0"
+
fs-minipass@^2.0.0, fs-minipass@^2.1.0:
version "2.1.0"
resolved "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
@@ -4968,12 +5290,24 @@ fs-minipass@^2.0.0, fs-minipass@^2.1.0:
dependencies:
minipass "^3.0.0"
-fs-minipass@^3.0.0, fs-minipass@^3.0.3:
- version "3.0.3"
- resolved "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54"
- integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==
+fs-vacuum@^1.2.10, fs-vacuum@~1.2.10:
+ version "1.2.10"
+ resolved "https://registry.npmmirror.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36"
+ integrity sha512-bwbv1FcWYwxN1F08I1THN8nS4Qe/pGq0gM8dy1J34vpxxp3qgZKJPPaqex36RyZO0sD2J+2ocnbwC2d/OjYICQ==
+ dependencies:
+ graceful-fs "^4.1.2"
+ path-is-inside "^1.0.1"
+ rimraf "^2.5.2"
+
+fs-write-stream-atomic@^1.0.8, fs-write-stream-atomic@~1.0.10:
+ version "1.0.10"
+ resolved "https://registry.npmmirror.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
+ integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==
dependencies:
- minipass "^7.0.3"
+ graceful-fs "^4.1.2"
+ iferr "^0.1.5"
+ imurmurhash "^0.1.4"
+ readable-stream "1 || 2"
fs.realpath@^1.0.0:
version "1.0.0"
@@ -4995,6 +5329,21 @@ function-timeout@^0.1.0:
resolved "https://registry.npmmirror.com/function-timeout/-/function-timeout-0.1.1.tgz#6bf71d3d24c894d43b2bec312cabb8c5add2e9da"
integrity sha512-0NVVC0TaP7dSTvn1yMiy6d6Q8gifzbvQafO46RtLG/kHJUBNd+pVRGOBoK44wNBvtSPUJRfdVvkFdD3p0xvyZg==
+function.prototype.name@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd"
+ integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
+ functions-have-names "^1.2.3"
+
+functions-have-names@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
+ integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
+
gauge@^4.0.3:
version "4.0.4"
resolved "https://registry.npmmirror.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce"
@@ -5009,6 +5358,20 @@ gauge@^4.0.3:
strip-ansi "^6.0.1"
wide-align "^1.1.5"
+gauge@~2.7.3:
+ version "2.7.4"
+ resolved "https://registry.npmmirror.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
+ integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wide-align "^1.1.0"
+
generate-function@^2.0.0:
version "2.3.1"
resolved "https://registry.npmmirror.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f"
@@ -5023,12 +5386,34 @@ generate-object-property@^1.2.0:
dependencies:
is-property "^1.0.0"
+genfun@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537"
+ integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==
+
gensync@^1.0.0-beta.2:
version "1.0.0-beta.2"
resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
-get-caller-file@^2.0.5:
+gentle-fs@^2.3.0, gentle-fs@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.npmmirror.com/gentle-fs/-/gentle-fs-2.3.1.tgz#11201bf66c18f930ddca72cf69460bdfa05727b1"
+ integrity sha512-OlwBBwqCFPcjm33rF2BjW+Pr6/ll2741l+xooiwTCeaX2CA1ZuclavyMBe0/KlR21/XGsgY6hzEQZ15BdNa13Q==
+ dependencies:
+ aproba "^1.1.2"
+ chownr "^1.1.2"
+ cmd-shim "^3.0.3"
+ fs-vacuum "^1.2.10"
+ graceful-fs "^4.1.11"
+ iferr "^0.1.5"
+ infer-owner "^1.0.4"
+ mkdirp "^0.5.1"
+ path-is-inside "^1.0.2"
+ read-cmd-shim "^1.0.1"
+ slide "^1.1.6"
+
+get-caller-file@^2.0.1, get-caller-file@^2.0.5:
version "2.0.5"
resolved "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
@@ -5038,7 +5423,7 @@ get-east-asian-width@^1.0.0:
resolved "https://registry.npmmirror.com/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz#21b4071ee58ed04ee0db653371b55b4299875389"
integrity sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==
-get-intrinsic@^1.1.3, get-intrinsic@^1.2.4:
+get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
version "1.2.4"
resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
@@ -5059,6 +5444,18 @@ get-port@^5.1.1:
resolved "https://registry.npmmirror.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193"
integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==
+get-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+ integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==
+
+get-stream@^4.0.0, get-stream@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
get-stream@^5.1.0:
version "5.2.0"
resolved "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
@@ -5084,6 +5481,15 @@ get-stream@^9.0.0:
"@sec-ant/readable-stream" "^0.4.1"
is-stream "^4.0.1"
+get-symbol-description@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5"
+ integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==
+ dependencies:
+ call-bind "^1.0.5"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.4"
+
get-tsconfig@^4.7.0:
version "4.8.1"
resolved "https://registry.npmmirror.com/get-tsconfig/-/get-tsconfig-4.8.1.tgz#8995eb391ae6e1638d251118c7b56de7eb425471"
@@ -5101,6 +5507,13 @@ get-uri@^6.0.1:
debug "^4.3.4"
fs-extra "^11.2.0"
+getpass@^0.1.1:
+ version "0.1.7"
+ resolved "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
+ integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==
+ dependencies:
+ assert-plus "^1.0.0"
+
giget@^1.2.3:
version "1.2.3"
resolved "https://registry.npmmirror.com/giget/-/giget-1.2.3.tgz#ef6845d1140e89adad595f7f3bb60aa31c672cb6"
@@ -5134,7 +5547,7 @@ glob-parent@^6.0.2:
dependencies:
is-glob "^4.0.3"
-glob@^10.2.2, glob@^10.3.10, glob@^10.3.12, glob@^10.3.3, glob@^10.3.7, glob@^10.4.5:
+glob@^10.3.12, glob@^10.3.3:
version "10.4.5"
resolved "https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956"
integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
@@ -5146,7 +5559,7 @@ glob@^10.2.2, glob@^10.3.10, glob@^10.3.12, glob@^10.3.3, glob@^10.3.7, glob@^10
package-json-from-dist "^1.0.0"
path-scurry "^1.11.1"
-glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
+glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.3:
version "7.2.3"
resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
@@ -5181,6 +5594,13 @@ global-agent@^3.0.0:
semver "^7.3.2"
serialize-error "^7.0.1"
+global-dirs@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445"
+ integrity sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==
+ dependencies:
+ ini "^1.3.4"
+
global-modules@^1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
@@ -5227,7 +5647,7 @@ globals@^14.0.0:
resolved "https://registry.npmmirror.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
-globalthis@^1.0.1:
+globalthis@^1.0.1, globalthis@^1.0.4:
version "1.0.4"
resolved "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236"
integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==
@@ -5278,6 +5698,13 @@ gopd@^1.0.1:
dependencies:
get-intrinsic "^1.1.3"
+gopd@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/gopd/-/gopd-1.1.0.tgz#df8f0839c2d48caefc32a025a49294d39606c912"
+ integrity sha512-FQoVQnqcdk4hVM4JN1eromaun4iuS34oStkdlLENLdpULsuQcTyXj8w7ayhuUfPwEYZ1ZOooOTT6fdA9Vmx/RA==
+ dependencies:
+ get-intrinsic "^1.2.4"
+
got@^11.7.0, got@^11.8.5:
version "11.8.6"
resolved "https://registry.npmmirror.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a"
@@ -5295,7 +5722,24 @@ got@^11.7.0, got@^11.8.5:
p-cancelable "^2.0.0"
responselike "^2.0.0"
-graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.6:
+got@^6.7.1:
+ version "6.7.1"
+ resolved "https://registry.npmmirror.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0"
+ integrity sha512-Y/K3EDuiQN9rTZhBvPRWMLXIKdeD1Rj0nzunfoi0Yyn5WBEbzxXKU9Ub2X41oZBagVWOBU3MuDonFMgPWQFnwg==
+ dependencies:
+ create-error-class "^3.0.0"
+ duplexer3 "^0.1.4"
+ get-stream "^3.0.0"
+ is-redirect "^1.0.0"
+ is-retry-allowed "^1.0.0"
+ is-stream "^1.0.0"
+ lowercase-keys "^1.0.0"
+ safe-buffer "^5.0.1"
+ timed-out "^4.0.0"
+ unzip-response "^2.0.1"
+ url-parse-lax "^1.0.0"
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.2, graceful-fs@^4.2.6:
version "4.2.11"
resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
@@ -5305,6 +5749,24 @@ graphemer@^1.4.0:
resolved "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
+har-schema@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
+ integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==
+
+har-validator@~5.1.3:
+ version "5.1.5"
+ resolved "https://registry.npmmirror.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
+ integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
+ dependencies:
+ ajv "^6.12.3"
+ har-schema "^2.0.0"
+
+has-bigints@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
+ integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
+
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
@@ -5327,12 +5789,26 @@ has-proto@^1.0.1:
resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd"
integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
+has-proto@^1.0.3:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.1.0.tgz#deb10494cbbe8809bce168a3b961f42969f5ed43"
+ integrity sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q==
+ dependencies:
+ call-bind "^1.0.7"
+
has-symbols@^1.0.3:
version "1.0.3"
resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
-has-unicode@^2.0.1:
+has-tostringtag@^1.0.0, has-tostringtag@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
+ integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
+ dependencies:
+ has-symbols "^1.0.3"
+
+has-unicode@^2.0.0, has-unicode@^2.0.1, has-unicode@~2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==
@@ -5342,7 +5818,7 @@ hash-sum@^2.0.0:
resolved "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a"
integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
-hasown@^2.0.0, hasown@^2.0.2:
+hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2:
version "2.0.2"
resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
@@ -5376,6 +5852,11 @@ hookable@^5.5.3:
resolved "https://registry.npmmirror.com/hookable/-/hookable-5.5.3.tgz#6cfc358984a1ef991e2518cb9ed4a778bbd3215d"
integrity sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==
+hosted-git-info@^2.1.4, hosted-git-info@^2.7.1, hosted-git-info@^2.8.9:
+ version "2.8.9"
+ resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
+ integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
+
hosted-git-info@^4.1.0:
version "4.1.0"
resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224"
@@ -5383,13 +5864,6 @@ hosted-git-info@^4.1.0:
dependencies:
lru-cache "^6.0.0"
-hosted-git-info@^8.0.0, hosted-git-info@^8.0.2:
- version "8.0.2"
- resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-8.0.2.tgz#5bd7d8b5395616e41cc0d6578381a32f669b14b2"
- integrity sha512-sYKnA7eGln5ov8T8gnYlkSOxFJvywzEx9BueN6xo/GKO8PGiI6uK6xx+DIGe45T3bdVjLAQDQW1aicT8z8JwQg==
- dependencies:
- lru-cache "^10.0.1"
-
hot-patcher@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/hot-patcher/-/hot-patcher-2.0.1.tgz#1473b799a3b756460ef226e10cf2cea4d79b435e"
@@ -5440,11 +5914,24 @@ http-basic@^8.1.1:
http-response-object "^3.0.1"
parse-cache-control "^1.0.1"
-http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1:
+http-cache-semantics@^3.8.1:
+ version "3.8.1"
+ resolved "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2"
+ integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==
+
+http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0:
version "4.1.1"
resolved "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a"
integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==
+http-proxy-agent@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405"
+ integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==
+ dependencies:
+ agent-base "4"
+ debug "3.1.0"
+
http-proxy-agent@^5.0.0:
version "5.0.0"
resolved "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43"
@@ -5469,6 +5956,15 @@ http-response-object@^3.0.1:
dependencies:
"@types/node" "^10.0.3"
+http-signature@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
+ integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==
+ dependencies:
+ assert-plus "^1.0.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
http2-wrapper@^1.0.0-beta.5.2:
version "1.0.3"
resolved "https://registry.npmmirror.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d"
@@ -5477,6 +5973,14 @@ http2-wrapper@^1.0.0-beta.5.2:
quick-lru "^5.1.1"
resolve-alpn "^1.0.0"
+https-proxy-agent@^2.2.3:
+ version "2.2.4"
+ resolved "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b"
+ integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==
+ dependencies:
+ agent-base "^4.3.0"
+ debug "^3.1.0"
+
https-proxy-agent@^5.0.0:
version "5.0.1"
resolved "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
@@ -5485,7 +5989,7 @@ https-proxy-agent@^5.0.0:
agent-base "6"
debug "4"
-https-proxy-agent@^7.0.0, https-proxy-agent@^7.0.1, https-proxy-agent@^7.0.3, https-proxy-agent@^7.0.5:
+https-proxy-agent@^7.0.0, https-proxy-agent@^7.0.3, https-proxy-agent@^7.0.5:
version "7.0.5"
resolved "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2"
integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==
@@ -5535,12 +6039,22 @@ ieee754@^1.1.13:
resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-ignore-walk@^7.0.0:
- version "7.0.0"
- resolved "https://registry.npmmirror.com/ignore-walk/-/ignore-walk-7.0.0.tgz#8350e475cf4375969c12eb49618b3fd9cca6704f"
- integrity sha512-T4gbf83A4NH95zvhVYZc+qWocBBGlpzUXLPGurJggw/WIOwicfXJChLDP/iBZnN5WqROSu5Bm3hhle4z8a8YGQ==
+iferr@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.npmmirror.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
+ integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==
+
+iferr@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/iferr/-/iferr-1.0.2.tgz#e9fde49a9da06dc4a4194c6c9ed6d08305037a6d"
+ integrity sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg==
+
+ignore-walk@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.npmmirror.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335"
+ integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==
dependencies:
- minimatch "^9.0.0"
+ minimatch "^3.0.4"
ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1:
version "5.3.2"
@@ -5565,6 +6079,11 @@ import-fresh@^3.2.1, import-fresh@^3.3.0:
parent-module "^1.0.0"
resolve-from "^4.0.0"
+import-lazy@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
+ integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==
+
imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@@ -5575,12 +6094,12 @@ indent-string@^4.0.0:
resolved "https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
-infer-owner@^1.0.4:
+infer-owner@^1.0.3, infer-owner@^1.0.4:
version "1.0.4"
resolved "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
-inflight@^1.0.4:
+inflight@^1.0.4, inflight@~1.0.6:
version "1.0.6"
resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
@@ -5588,33 +6107,38 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
+inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
version "2.0.4"
resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-ini@^1.3.4, ini@^1.3.5:
+ini@^1.3.4, ini@^1.3.5, ini@^1.3.8, ini@~1.3.0:
version "1.3.8"
resolved "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
-ini@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmmirror.com/ini/-/ini-5.0.0.tgz#a7a4615339843d9a8ccc2d85c9d81cf93ffbc638"
- integrity sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==
-
-init-package-json@^7.0.1:
- version "7.0.1"
- resolved "https://registry.npmmirror.com/init-package-json/-/init-package-json-7.0.1.tgz#8f4580bbf427f015348727f215a39f42547ee208"
- integrity sha512-8KZtk/53ReI2T2f6z2hl5ql6xKLjDexNw7DUqTdR8f+Mo8WZmBjjkH6DrTfBjmW0j3Tqx+j3t8creN0O890+0A==
+init-package-json@^1.10.3:
+ version "1.10.3"
+ resolved "https://registry.npmmirror.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe"
+ integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw==
+ dependencies:
+ glob "^7.1.1"
+ npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0"
+ promzard "^0.3.0"
+ read "~1.0.1"
+ read-package-json "1 || 2"
+ semver "2.x || 3.x || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+ validate-npm-package-name "^3.0.0"
+
+internal-slot@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802"
+ integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==
dependencies:
- "@npmcli/package-json" "^6.0.0"
- npm-package-arg "^12.0.0"
- promzard "^2.0.0"
- read "^4.0.0"
- semver "^7.3.5"
- validate-npm-package-license "^3.0.4"
- validate-npm-package-name "^6.0.0"
+ es-errors "^1.3.0"
+ hasown "^2.0.0"
+ side-channel "^1.0.4"
ip-address@^9.0.5:
version "9.0.5"
@@ -5624,11 +6148,21 @@ ip-address@^9.0.5:
jsbn "1.1.0"
sprintf-js "^1.1.3"
+ip-regex@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
+ integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==
+
ip-regex@^5.0.0:
version "5.0.0"
resolved "https://registry.npmmirror.com/ip-regex/-/ip-regex-5.0.0.tgz#cd313b2ae9c80c07bd3851e12bf4fa4dc5480632"
integrity sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==
+ip@1.1.5:
+ version "1.1.5"
+ resolved "https://registry.npmmirror.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
+ integrity sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==
+
ipaddr.js@1.9.1:
version "1.9.1"
resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
@@ -5639,11 +6173,33 @@ ipaddr.js@^2.2.0:
resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8"
integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
+is-array-buffer@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98"
+ integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.2.1"
+
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
+is-async-function@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646"
+ integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-bigint@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672"
+ integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==
+ dependencies:
+ has-bigints "^1.0.2"
+
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
@@ -5651,11 +6207,31 @@ is-binary-path@~2.1.0:
dependencies:
binary-extensions "^2.0.0"
+is-boolean-object@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.2.0.tgz#9743641e80a62c094b5941c5bb791d66a88e497a"
+ integrity sha512-kR5g0+dXf/+kXnqI+lu0URKYPKgICtHGGNCDSB10AaUFj3o/HkB3u7WfpRBJGFopxxY0oH3ux7ZsDjLtK7xqvw==
+ dependencies:
+ call-bind "^1.0.7"
+ has-tostringtag "^1.0.2"
+
is-buffer@~1.1.6:
version "1.1.6"
resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+is-callable@^1.1.3, is-callable@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
+ integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
+
+is-ci@^1.0.10:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c"
+ integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==
+ dependencies:
+ ci-info "^1.5.0"
+
is-ci@^3.0.0:
version "3.0.1"
resolved "https://registry.npmmirror.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867"
@@ -5663,12 +6239,12 @@ is-ci@^3.0.0:
dependencies:
ci-info "^3.2.0"
-is-cidr@^5.1.0:
- version "5.1.0"
- resolved "https://registry.npmmirror.com/is-cidr/-/is-cidr-5.1.0.tgz#36f2d059f43f9b14f132745a2eec18c996df2f35"
- integrity sha512-OkVS+Ht2ssF27d48gZdB+ho1yND1VbkJRKKS6Pc1/Cw7uqkd9IOJg8/bTwBDQL6tfBhSdguPRnlGiE8pU/X5NQ==
+is-cidr@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/is-cidr/-/is-cidr-3.1.1.tgz#e92ef121bdec2782271a77ce487a8b8df3718ab7"
+ integrity sha512-Gx+oErgq1j2jAKCR2Kbq0b3wbH0vQKqZ0wOlHxm0o56nq51Cs/DZA8oz9dMDhbHyHEGgJ86eTeVudtgMMOx3Mw==
dependencies:
- cidr-regex "^4.1.1"
+ cidr-regex "^2.0.10"
is-core-module@^2.12.0, is-core-module@^2.13.0:
version "2.15.1"
@@ -5677,6 +6253,20 @@ is-core-module@^2.12.0, is-core-module@^2.13.0:
dependencies:
hasown "^2.0.2"
+is-data-view@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f"
+ integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==
+ dependencies:
+ is-typed-array "^1.1.13"
+
+is-date-object@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
+ integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
is-docker@^3.0.0:
version "3.0.0"
resolved "https://registry.npmmirror.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200"
@@ -5687,11 +6277,37 @@ is-extglob@^2.1.1:
resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+is-finalizationregistry@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz#d74a7d0c5f3578e34a20729e69202e578d495dc2"
+ integrity sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==
+ dependencies:
+ call-bind "^1.0.7"
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+ integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==
+
is-fullwidth-code-point@^3.0.0:
version "3.0.0"
resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+is-generator-function@^1.0.10:
+ version "1.0.10"
+ resolved "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72"
+ integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
version "4.0.3"
resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
@@ -5706,6 +6322,14 @@ is-inside-container@^1.0.0:
dependencies:
is-docker "^3.0.0"
+is-installed-globally@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmmirror.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80"
+ integrity sha512-ERNhMg+i/XgDwPIPF3u24qpajVreaiSuvpb1Uu0jugw7KKcxGyCX8cgp8P5fwTmAuXku6beDHHECdKArjlg7tw==
+ dependencies:
+ global-dirs "^0.1.0"
+ is-path-inside "^1.0.0"
+
is-interactive@^1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
@@ -5729,13 +6353,48 @@ is-lambda@^1.0.1:
resolved "https://registry.npmmirror.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5"
integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==
-is-number@^7.0.0:
- version "7.0.0"
- resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
- integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+is-map@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e"
+ integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==
-is-plain-obj@^4.1.0:
- version "4.1.0"
+is-negative-zero@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747"
+ integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==
+
+is-npm@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
+ integrity sha512-9r39FIr3d+KD9SbX0sfMsHzb5PP3uimOiwr3YupUaUFG4W0l1U57Rx3utpttV7qz5U3jmrO5auUa04LU9pyHsg==
+
+is-number-object@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.1.0.tgz#5a867e9ecc3d294dda740d9f127835857af7eb05"
+ integrity sha512-KVSZV0Dunv9DTPkhXwcZ3Q+tUc9TsaE1ZwX5J2WMvsSGS6Md8TFPun5uwh0yRdrNerI6vf/tbJxqSx4c1ZI1Lw==
+ dependencies:
+ call-bind "^1.0.7"
+ has-tostringtag "^1.0.2"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-obj@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==
+
+is-path-inside@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
+ integrity sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==
+ dependencies:
+ path-is-inside "^1.0.1"
+
+is-plain-obj@^4.1.0:
+ version "4.1.0"
resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0"
integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==
@@ -5749,11 +6408,48 @@ is-property@^1.0.0, is-property@^1.0.2:
resolved "https://registry.npmmirror.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==
+is-redirect@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
+ integrity sha512-cr/SlUEe5zOGmzvj9bUyC4LVvkNVAXu4GytXLNMr1pny+a65MpQ9IJzFHD5vi7FyJgb4qt27+eS3TuQnqB+RQw==
+
+is-regex@^1.1.4:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/is-regex/-/is-regex-1.2.0.tgz#41b9d266e7eb7451312c64efc37e8a7d453077cf"
+ integrity sha512-B6ohK4ZmoftlUe+uvenXSbPJFo6U37BH7oO1B3nQH8f/7h27N56s85MhUtbFJAziz5dcmuR3i8ovUl35zp8pFA==
+ dependencies:
+ call-bind "^1.0.7"
+ gopd "^1.1.0"
+ has-tostringtag "^1.0.2"
+ hasown "^2.0.2"
+
is-regexp@^3.0.0:
version "3.1.0"
resolved "https://registry.npmmirror.com/is-regexp/-/is-regexp-3.1.0.tgz#0235eab9cda5b83f96ac4a263d8c32c9d5ad7422"
integrity sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==
+is-retry-allowed@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4"
+ integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==
+
+is-set@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d"
+ integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==
+
+is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688"
+ integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==
+ dependencies:
+ call-bind "^1.0.7"
+
+is-stream@^1.0.0, is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==
+
is-stream@^2.0.0:
version "2.0.1"
resolved "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
@@ -5769,6 +6465,35 @@ is-stream@^4.0.1:
resolved "https://registry.npmmirror.com/is-stream/-/is-stream-4.0.1.tgz#375cf891e16d2e4baec250b85926cffc14720d9b"
integrity sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==
+is-string@^1.0.7, is-string@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-string/-/is-string-1.1.0.tgz#8cb83c5d57311bf8058bc6c8db294711641da45d"
+ integrity sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g==
+ dependencies:
+ call-bind "^1.0.7"
+ has-tostringtag "^1.0.2"
+
+is-symbol@^1.0.4, is-symbol@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.1.0.tgz#ae993830a56d4781886d39f9f0a46b3e89b7b60b"
+ integrity sha512-qS8KkNNXUZ/I+nX6QT8ZS1/Yx0A444yhzdTKxCzKkNjQ9sHErBxJnJAgh+f5YhusYECEcjo4XcyH87hn6+ks0A==
+ dependencies:
+ call-bind "^1.0.7"
+ has-symbols "^1.0.3"
+ safe-regex-test "^1.0.3"
+
+is-typed-array@^1.1.13:
+ version "1.1.13"
+ resolved "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229"
+ integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==
+ dependencies:
+ which-typed-array "^1.1.14"
+
+is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+ integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==
+
is-unicode-supported@^0.1.0:
version "0.1.0"
resolved "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
@@ -5784,6 +6509,26 @@ is-unicode-supported@^2.0.0:
resolved "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz#09f0ab0de6d3744d48d265ebb98f65d11f2a9b3a"
integrity sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==
+is-weakmap@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd"
+ integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==
+
+is-weakref@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
+ integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
+ dependencies:
+ call-bind "^1.0.2"
+
+is-weakset@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/is-weakset/-/is-weakset-2.0.3.tgz#e801519df8c0c43e12ff2834eead84ec9e624007"
+ integrity sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==
+ dependencies:
+ call-bind "^1.0.7"
+ get-intrinsic "^1.2.4"
+
is-what@^3.14.1:
version "3.14.1"
resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1"
@@ -5806,6 +6551,16 @@ is-wsl@^3.1.0:
dependencies:
is-inside-container "^1.0.0"
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmmirror.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+ integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
+
+isarray@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
+ integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
+
isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@@ -5826,10 +6581,10 @@ isexe@^2.0.0:
resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
-isexe@^3.1.1:
- version "3.1.1"
- resolved "https://registry.npmmirror.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d"
- integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+ integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==
jackspeak@^3.1.2:
version "3.4.3"
@@ -5901,6 +6656,11 @@ jsbn@1.1.0, jsbn@^1.1.0:
resolved "https://registry.npmmirror.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040"
integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==
+jsbn@~0.1.0:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
+ integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==
+
jsep@^1.4.0:
version "1.4.0"
resolved "https://registry.npmmirror.com/jsep/-/jsep-1.4.0.tgz#19feccbfa51d8a79f72480b4b8e40ce2e17152f0"
@@ -5916,16 +6676,16 @@ json-buffer@3.0.1:
resolved "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
+json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
json-parse-even-better-errors@^2.3.0:
version "2.3.1"
resolved "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
-json-parse-even-better-errors@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz#d3f67bd5925e81d3e31aa466acc821c8375cec43"
- integrity sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==
-
json-schema-ref-resolver@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz#6586f483b76254784fc1d2120f717bdc9f0a99bf"
@@ -5943,17 +6703,17 @@ json-schema-traverse@^1.0.0:
resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+json-schema@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5"
+ integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
+
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
-json-stringify-nice@^1.1.4:
- version "1.1.4"
- resolved "https://registry.npmmirror.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67"
- integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==
-
-json-stringify-safe@^5.0.1:
+json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
version "5.0.1"
resolved "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
@@ -5979,7 +6739,7 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"
-jsonparse@^1.3.1:
+jsonparse@^1.2.0:
version "1.3.1"
resolved "https://registry.npmmirror.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==
@@ -5993,6 +6753,16 @@ jsonpath-plus@^10.2.0:
"@jsep-plugin/regex" "^1.0.4"
jsep "^1.4.0"
+jsprim@^1.2.2:
+ version "1.4.2"
+ resolved "https://registry.npmmirror.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb"
+ integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==
+ dependencies:
+ assert-plus "1.0.0"
+ extsprintf "1.3.0"
+ json-schema "0.4.0"
+ verror "1.10.0"
+
juice@^8.0.0:
version "8.1.0"
resolved "https://registry.npmmirror.com/juice/-/juice-8.1.0.tgz#4ea23362522fe06418229943237ee3751a4fca70"
@@ -6004,16 +6774,6 @@ juice@^8.0.0:
slick "^1.12.2"
web-resource-inliner "^6.0.1"
-just-diff-apply@^5.2.0:
- version "5.5.0"
- resolved "https://registry.npmmirror.com/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f"
- integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==
-
-just-diff@^6.0.0:
- version "6.0.2"
- resolved "https://registry.npmmirror.com/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285"
- integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==
-
keyboardevent-from-electron-accelerator@^2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/keyboardevent-from-electron-accelerator/-/keyboardevent-from-electron-accelerator-2.0.0.tgz#ace21b1aa4e47148815d160057f9edb66567c50c"
@@ -6056,11 +6816,23 @@ kolorist@^1.8.0:
resolved "https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz#edddbbbc7894bc13302cdf740af6374d4a04743c"
integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==
+latest-version@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15"
+ integrity sha512-Be1YRHWWlZaSsrz2U+VInk+tO0EwLIyV+23RhWLINJYwg/UIikxjlj3MhH37/6/EDCAusjajvMkMMUXRaMWl/w==
+ dependencies:
+ package-json "^4.0.0"
+
layerr@^3.0.0:
version "3.0.0"
resolved "https://registry.npmmirror.com/layerr/-/layerr-3.0.0.tgz#bc4e0e5986ffd3ab8c3c88b458f53be8dceea29e"
integrity sha512-tv754Ki2dXpPVApOrjTyRo4/QegVb9eVFq4mjqp4+NM5NaX7syQvN5BBNfV/ZpAHCEHV24XdUVrBAoka4jt3pA==
+lazy-property@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147"
+ integrity sha512-O52TK7FHpBPzdtvc5GoF0EPLQIBMqrAupANPGBidPkrDpl9IXlzuma3T+m0o0OpkRVPmTu3SDoT7985lw4KbNQ==
+
lazy-val@^1.0.5:
version "1.0.5"
resolved "https://registry.npmmirror.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d"
@@ -6091,116 +6863,139 @@ levn@^0.4.1:
prelude-ls "^1.2.1"
type-check "~0.4.0"
-libnpmaccess@^9.0.0:
- version "9.0.0"
- resolved "https://registry.npmmirror.com/libnpmaccess/-/libnpmaccess-9.0.0.tgz#47ac12dcd358c2c2f2c9ecb0f081a65ef2cc68bc"
- integrity sha512-mTCFoxyevNgXRrvgdOhghKJnCWByBc9yp7zX4u9RBsmZjwOYdUDEBfL5DdgD1/8gahsYnauqIWFbq0iK6tO6CQ==
- dependencies:
- npm-package-arg "^12.0.0"
- npm-registry-fetch "^18.0.1"
-
-libnpmdiff@^7.0.0:
- version "7.0.0"
- resolved "https://registry.npmmirror.com/libnpmdiff/-/libnpmdiff-7.0.0.tgz#808893a36d673e46c927e4a0a836b3742191d307"
- integrity sha512-MjvsBJL1AT4ofsSsBRse5clxv7gfPbdgzT0VE+xmVTxE8M92T22laeX9vqFhaQKInSeKiZ2L9w/FVhoCCGPdUg==
+libcipm@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.npmmirror.com/libcipm/-/libcipm-4.0.8.tgz#dcea4919e10dfbce420327e63901613b9141bc89"
+ integrity sha512-IN3hh2yDJQtZZ5paSV4fbvJg4aHxCCg5tcZID/dSVlTuUiWktsgaldVljJv6Z5OUlYspx6xQkbR0efNodnIrOA==
+ dependencies:
+ bin-links "^1.1.2"
+ bluebird "^3.5.1"
+ figgy-pudding "^3.5.1"
+ find-npm-prefix "^1.0.2"
+ graceful-fs "^4.1.11"
+ ini "^1.3.5"
+ lock-verify "^2.1.0"
+ mkdirp "^0.5.1"
+ npm-lifecycle "^3.0.0"
+ npm-logical-tree "^1.2.1"
+ npm-package-arg "^6.1.0"
+ pacote "^9.1.0"
+ read-package-json "^2.0.13"
+ rimraf "^2.6.2"
+ worker-farm "^1.6.0"
+
+libnpm@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/libnpm/-/libnpm-3.0.1.tgz#0be11b4c9dd4d1ffd7d95c786e92e55d65be77a2"
+ integrity sha512-d7jU5ZcMiTfBqTUJVZ3xid44fE5ERBm9vBnmhp2ECD2Ls+FNXWxHSkO7gtvrnbLO78gwPdNPz1HpsF3W4rjkBQ==
+ dependencies:
+ bin-links "^1.1.2"
+ bluebird "^3.5.3"
+ find-npm-prefix "^1.0.2"
+ libnpmaccess "^3.0.2"
+ libnpmconfig "^1.2.1"
+ libnpmhook "^5.0.3"
+ libnpmorg "^1.0.1"
+ libnpmpublish "^1.1.2"
+ libnpmsearch "^2.0.2"
+ libnpmteam "^1.0.2"
+ lock-verify "^2.0.2"
+ npm-lifecycle "^3.0.0"
+ npm-logical-tree "^1.2.1"
+ npm-package-arg "^6.1.0"
+ npm-profile "^4.0.2"
+ npm-registry-fetch "^4.0.0"
+ npmlog "^4.1.2"
+ pacote "^9.5.3"
+ read-package-json "^2.0.13"
+ stringify-package "^1.0.0"
+
+libnpmaccess@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/libnpmaccess/-/libnpmaccess-3.0.2.tgz#8b2d72345ba3bef90d3b4f694edd5c0417f58923"
+ integrity sha512-01512AK7MqByrI2mfC7h5j8N9V4I7MHJuk9buo8Gv+5QgThpOgpjB7sQBDDkeZqRteFb1QM/6YNdHfG7cDvfAQ==
dependencies:
- "@npmcli/arborist" "^8.0.0"
- "@npmcli/installed-package-contents" "^3.0.0"
- binary-extensions "^2.3.0"
- diff "^5.1.0"
- minimatch "^9.0.4"
- npm-package-arg "^12.0.0"
- pacote "^19.0.0"
- tar "^6.2.1"
+ aproba "^2.0.0"
+ get-stream "^4.0.0"
+ npm-package-arg "^6.1.0"
+ npm-registry-fetch "^4.0.0"
-libnpmexec@^9.0.0:
- version "9.0.0"
- resolved "https://registry.npmmirror.com/libnpmexec/-/libnpmexec-9.0.0.tgz#4bb43ec4ba88bd33750480fcf73935837af061bf"
- integrity sha512-5dOwgvt0srgrOkwsjNWokx23BvQXEaUo87HWIY+9lymvAto2VSunNS+Ih7WXVwvkJk7cZ0jhS2H3rNK8G9Anxw==
- dependencies:
- "@npmcli/arborist" "^8.0.0"
- "@npmcli/run-script" "^9.0.1"
- ci-info "^4.0.0"
- npm-package-arg "^12.0.0"
- pacote "^19.0.0"
- proc-log "^5.0.0"
- read "^4.0.0"
- read-package-json-fast "^4.0.0"
- semver "^7.3.7"
- walk-up-path "^3.0.1"
-
-libnpmfund@^6.0.0:
- version "6.0.0"
- resolved "https://registry.npmmirror.com/libnpmfund/-/libnpmfund-6.0.0.tgz#5f324e9b9fb440af9c197f3f147943362758b49b"
- integrity sha512-+7ZTxPyJ0O/Y0xKoEd1CxPCUQ4ldn6EZ2qUMI/E1gJkfzcwb3AdFlSWk1WEXaGBu2+EqMrPf4Xu5lXFWw2Jd3w==
+libnpmconfig@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz#c0c2f793a74e67d4825e5039e7a02a0044dfcbc0"
+ integrity sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==
dependencies:
- "@npmcli/arborist" "^8.0.0"
+ figgy-pudding "^3.5.1"
+ find-up "^3.0.0"
+ ini "^1.3.5"
-libnpmhook@^11.0.0:
- version "11.0.0"
- resolved "https://registry.npmmirror.com/libnpmhook/-/libnpmhook-11.0.0.tgz#b8caf6fe31666d7b18cbf61ce8b722dca1600943"
- integrity sha512-Xc18rD9NFbRwZbYCQ+UCF5imPsiHSyuQA8RaCA2KmOUo8q4kmBX4JjGWzmZnxZCT8s6vwzmY1BvHNqBGdg9oBQ==
+libnpmhook@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.npmmirror.com/libnpmhook/-/libnpmhook-5.0.3.tgz#4020c0f5edbf08ebe395325caa5ea01885b928f7"
+ integrity sha512-UdNLMuefVZra/wbnBXECZPefHMGsVDTq5zaM/LgKNE9Keyl5YXQTnGAzEo+nFOpdRqTWI9LYi4ApqF9uVCCtuA==
dependencies:
aproba "^2.0.0"
- npm-registry-fetch "^18.0.1"
+ figgy-pudding "^3.4.1"
+ get-stream "^4.0.0"
+ npm-registry-fetch "^4.0.0"
-libnpmorg@^7.0.0:
- version "7.0.0"
- resolved "https://registry.npmmirror.com/libnpmorg/-/libnpmorg-7.0.0.tgz#055dfdba32ac5e8757dd4b264f805b64cbd6980b"
- integrity sha512-DcTodX31gDEiFrlIHurBQiBlBO6Var2KCqMVCk+HqZhfQXqUfhKGmFOp0UHr6HR1lkTVM0MzXOOYtUObk0r6Dg==
+libnpmorg@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/libnpmorg/-/libnpmorg-1.0.1.tgz#5d2503f6ceb57f33dbdcc718e6698fea6d5ad087"
+ integrity sha512-0sRUXLh+PLBgZmARvthhYXQAWn0fOsa6T5l3JSe2n9vKG/lCVK4nuG7pDsa7uMq+uTt2epdPK+a2g6btcY11Ww==
dependencies:
aproba "^2.0.0"
- npm-registry-fetch "^18.0.1"
+ figgy-pudding "^3.4.1"
+ get-stream "^4.0.0"
+ npm-registry-fetch "^4.0.0"
-libnpmpack@^8.0.0:
- version "8.0.0"
- resolved "https://registry.npmmirror.com/libnpmpack/-/libnpmpack-8.0.0.tgz#83cb6333861f8a0fe991420feaf0aa48a67d94bf"
- integrity sha512-Z5zqR+j8PNOki97D4XnKlekLQjqJYkqCFZeac07XCJYA3aq6O7wYIpn7RqLcNfFm+u3ZsdblY2VQENMoiHA+FQ==
+libnpmpublish@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/libnpmpublish/-/libnpmpublish-1.1.3.tgz#e3782796722d79eef1a0a22944c117e0c4ca4280"
+ integrity sha512-/3LsYqVc52cHXBmu26+J8Ed7sLs/hgGVFMH1mwYpL7Qaynb9RenpKqIKu0sJ130FB9PMkpMlWjlbtU8A4m7CQw==
dependencies:
- "@npmcli/arborist" "^8.0.0"
- "@npmcli/run-script" "^9.0.1"
- npm-package-arg "^12.0.0"
- pacote "^19.0.0"
-
-libnpmpublish@^10.0.1:
- version "10.0.1"
- resolved "https://registry.npmmirror.com/libnpmpublish/-/libnpmpublish-10.0.1.tgz#7a284565be164c2f8605225213316a0c1d0a9827"
- integrity sha512-xNa1DQs9a8dZetNRV0ky686MNzv1MTqB3szgOlRR3Fr24x1gWRu7aB9OpLZsml0YekmtppgHBkyZ+8QZlzmEyw==
- dependencies:
- ci-info "^4.0.0"
- normalize-package-data "^7.0.0"
- npm-package-arg "^12.0.0"
- npm-registry-fetch "^18.0.1"
- proc-log "^5.0.0"
- semver "^7.3.7"
- sigstore "^3.0.0"
- ssri "^12.0.0"
-
-libnpmsearch@^8.0.0:
- version "8.0.0"
- resolved "https://registry.npmmirror.com/libnpmsearch/-/libnpmsearch-8.0.0.tgz#ce2e28ad05a152c736d5ae86356aedd5a52406a5"
- integrity sha512-W8FWB78RS3Nkl1gPSHOlF024qQvcoU/e3m9BGDuBfVZGfL4MJ91GXXb04w3zJCGOW9dRQUyWVEqupFjCrgltDg==
+ aproba "^2.0.0"
+ figgy-pudding "^3.5.1"
+ get-stream "^4.0.0"
+ lodash.clonedeep "^4.5.0"
+ normalize-package-data "^2.4.0"
+ npm-package-arg "^6.1.0"
+ npm-registry-fetch "^4.0.0"
+ semver "^5.5.1"
+ ssri "^6.0.1"
+
+libnpmsearch@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/libnpmsearch/-/libnpmsearch-2.0.2.tgz#9a4f059102d38e3dd44085bdbfe5095f2a5044cf"
+ integrity sha512-VTBbV55Q6fRzTdzziYCr64+f8AopQ1YZ+BdPOv16UegIEaE8C0Kch01wo4s3kRTFV64P121WZJwgmBwrq68zYg==
dependencies:
- npm-registry-fetch "^18.0.1"
+ figgy-pudding "^3.5.1"
+ get-stream "^4.0.0"
+ npm-registry-fetch "^4.0.0"
-libnpmteam@^7.0.0:
- version "7.0.0"
- resolved "https://registry.npmmirror.com/libnpmteam/-/libnpmteam-7.0.0.tgz#e8f40c4bc543b720da2cdd4385e2fafcd06c92c0"
- integrity sha512-PKLOoVukN34qyJjgEm5DEOnDwZkeVMUHRx8NhcKDiCNJGPl7G/pF1cfBw8yicMwRlHaHkld1FdujOzKzy4AlwA==
+libnpmteam@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/libnpmteam/-/libnpmteam-1.0.2.tgz#8b48bcbb6ce70dd8150c950fcbdbf3feb6eec820"
+ integrity sha512-p420vM28Us04NAcg1rzgGW63LMM6rwe+6rtZpfDxCcXxM0zUTLl7nPFEnRF3JfFBF5skF/yuZDUthTsHgde8QA==
dependencies:
aproba "^2.0.0"
- npm-registry-fetch "^18.0.1"
-
-libnpmversion@^7.0.0:
- version "7.0.0"
- resolved "https://registry.npmmirror.com/libnpmversion/-/libnpmversion-7.0.0.tgz#b264a07662b31b78822ba870171088eca6466f38"
- integrity sha512-0xle91R6F8r/Q/4tHOnyKko+ZSquEXNdxwRdKCPv4kC1cOVBMFXRsKKrVtRKtXcFn362U8ZlJefk4Apu00424g==
- dependencies:
- "@npmcli/git" "^6.0.1"
- "@npmcli/run-script" "^9.0.1"
- json-parse-even-better-errors "^4.0.0"
- proc-log "^5.0.0"
- semver "^7.3.7"
+ figgy-pudding "^3.4.1"
+ get-stream "^4.0.0"
+ npm-registry-fetch "^4.0.0"
+
+libnpx@^10.2.4:
+ version "10.2.4"
+ resolved "https://registry.npmmirror.com/libnpx/-/libnpx-10.2.4.tgz#ef0e3258e29aef2ec7ee3276115e20e67f67d4ee"
+ integrity sha512-BPc0D1cOjBeS8VIBKUu5F80s6njm0wbVt7CsGMrIcJ+SI7pi7V0uVPGpEMH9H5L8csOcclTxAXFE2VAsJXUhfA==
+ dependencies:
+ dotenv "^5.0.1"
+ npm-package-arg "^6.0.0"
+ rimraf "^2.6.2"
+ safe-buffer "^5.1.0"
+ update-notifier "^2.3.0"
+ which "^1.3.0"
+ y18n "^4.0.0"
+ yargs "^14.2.3"
light-my-request@^6.0.0:
version "6.3.0"
@@ -6231,6 +7026,14 @@ local-pkg@^0.5.1:
mlly "^1.7.3"
pkg-types "^1.2.1"
+locate-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+ dependencies:
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
+
locate-path@^6.0.0:
version "6.0.0"
resolved "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
@@ -6238,6 +7041,45 @@ locate-path@^6.0.0:
dependencies:
p-locate "^5.0.0"
+lock-verify@^2.0.2, lock-verify@^2.1.0, lock-verify@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.npmmirror.com/lock-verify/-/lock-verify-2.2.2.tgz#9e93c0999dc3cbbede4f16f9cfdaa93ead8c76ef"
+ integrity sha512-2CUNtr1ZSVKJHcYP8uEzafmmuyauCB5zZimj8TvQd/Lflt9kXVZs+8S+EbAzZLaVUDn8CYGmeC3DFGdYfnCzeQ==
+ dependencies:
+ "@iarna/cli" "^2.1.0"
+ npm-package-arg "^6.1.0"
+ semver "^5.4.1"
+
+lockfile@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609"
+ integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==
+ dependencies:
+ signal-exit "^3.0.2"
+
+lodash._baseuniq@~4.6.0:
+ version "4.6.0"
+ resolved "https://registry.npmmirror.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8"
+ integrity sha512-Ja1YevpHZctlI5beLA7oc5KNDhGcPixFhcqSiORHNsp/1QTv7amAXzw+gu4YOvErqVlMVyIJGgtzeepCnnur0A==
+ dependencies:
+ lodash._createset "~4.0.0"
+ lodash._root "~3.0.0"
+
+lodash._createset@~4.0.0:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26"
+ integrity sha512-GTkC6YMprrJZCYU3zcqZj+jkXkrXzq3IPBcF/fIPpNEAB4hZEtXU8zp/RwKOvZl43NUmwDbyRk3+ZTbeRdEBXA==
+
+lodash._root@~3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
+ integrity sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ==
+
+lodash.clonedeep@^4.5.0, lodash.clonedeep@~4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
+ integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==
+
lodash.escaperegexp@^4.1.2:
version "4.1.2"
resolved "https://registry.npmmirror.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347"
@@ -6258,6 +7100,21 @@ lodash.truncate@^4.4.2:
resolved "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==
+lodash.union@~4.6.0:
+ version "4.6.0"
+ resolved "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
+ integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==
+
+lodash.uniq@~4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+ integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==
+
+lodash.without@~4.4.0:
+ version "4.4.0"
+ resolved "https://registry.npmmirror.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac"
+ integrity sha512-M3MefBwfDhgKgINVuBJCO1YR3+gf6s9HNJsIiZ/Ru77Ws6uTb9eBuvrkpzO+9iLoAaRodGuq7tyrPCx+74QYGQ==
+
lodash@^4.17.15, lodash@^4.17.21:
version "4.17.21"
resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
@@ -6279,16 +7136,29 @@ log-symbols@^6.0.0:
chalk "^5.3.0"
is-unicode-supported "^1.3.0"
+lowercase-keys@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
+ integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
+
lowercase-keys@^2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
-lru-cache@^10.0.1, lru-cache@^10.2.0, lru-cache@^10.2.2:
+lru-cache@^10.2.0:
version "10.4.3"
resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119"
integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
+lru-cache@^4.0.1:
+ version "4.1.5"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
lru-cache@^5.1.1:
version "5.1.1"
resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
@@ -6322,6 +7192,13 @@ magic-string@^0.30.14:
dependencies:
"@jridgewell/sourcemap-codec" "^1.5.0"
+make-dir@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
+ integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
+ dependencies:
+ pify "^3.0.0"
+
make-dir@^2.1.0:
version "2.1.0"
resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
@@ -6352,40 +7229,22 @@ make-fetch-happen@^10.0.3:
socks-proxy-agent "^7.0.0"
ssri "^9.0.0"
-make-fetch-happen@^13.0.0:
- version "13.0.1"
- resolved "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz#273ba2f78f45e1f3a6dca91cede87d9fa4821e36"
- integrity sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==
- dependencies:
- "@npmcli/agent" "^2.0.0"
- cacache "^18.0.0"
- http-cache-semantics "^4.1.1"
- is-lambda "^1.0.1"
- minipass "^7.0.2"
- minipass-fetch "^3.0.0"
- minipass-flush "^1.0.5"
- minipass-pipeline "^1.2.4"
- negotiator "^0.6.3"
- proc-log "^4.2.0"
- promise-retry "^2.0.1"
- ssri "^10.0.0"
-
-make-fetch-happen@^14.0.0, make-fetch-happen@^14.0.1, make-fetch-happen@^14.0.3:
- version "14.0.3"
- resolved "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz#d74c3ecb0028f08ab604011e0bc6baed483fcdcd"
- integrity sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==
- dependencies:
- "@npmcli/agent" "^3.0.0"
- cacache "^19.0.1"
- http-cache-semantics "^4.1.1"
- minipass "^7.0.2"
- minipass-fetch "^4.0.0"
- minipass-flush "^1.0.5"
- minipass-pipeline "^1.2.4"
- negotiator "^1.0.0"
- proc-log "^5.0.0"
- promise-retry "^2.0.1"
- ssri "^12.0.0"
+make-fetch-happen@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd"
+ integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==
+ dependencies:
+ agentkeepalive "^3.4.1"
+ cacache "^12.0.0"
+ http-cache-semantics "^3.8.1"
+ http-proxy-agent "^2.1.0"
+ https-proxy-agent "^2.2.3"
+ lru-cache "^5.1.1"
+ mississippi "^3.0.0"
+ node-fetch-npm "^2.0.2"
+ promise-retry "^1.1.1"
+ socks-proxy-agent "^4.0.0"
+ ssri "^6.0.0"
markdown-it-highlightjs@^4.2.0:
version "4.2.0"
@@ -6475,6 +7334,11 @@ mdurl@^2.0.0:
resolved "https://registry.npmmirror.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0"
integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==
+meant@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/meant/-/meant-1.0.3.tgz#67769af9de1d158773e928ae82c456114903554c"
+ integrity sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw==
+
mensch@^0.3.4:
version "0.3.4"
resolved "https://registry.npmmirror.com/mensch/-/mensch-0.3.4.tgz#770f91b46cb16ea5b204ee735768c3f0c491fecd"
@@ -6513,7 +7377,7 @@ mime-db@1.52.0:
resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-mime-types@^2.1.12, mime-types@^2.1.35:
+mime-types@^2.1.12, mime-types@^2.1.35, mime-types@~2.1.19:
version "2.1.35"
resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
@@ -6590,14 +7454,14 @@ minimatch@^7.4.6:
dependencies:
brace-expansion "^2.0.1"
-minimatch@^9.0.0, minimatch@^9.0.3, minimatch@^9.0.4, minimatch@^9.0.5:
+minimatch@^9.0.3, minimatch@^9.0.4, minimatch@^9.0.5:
version "9.0.5"
resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
dependencies:
brace-expansion "^2.0.1"
-minimist@^1.2.6:
+minimist@^1.2.0, minimist@^1.2.6:
version "1.2.8"
resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
@@ -6609,13 +7473,6 @@ minipass-collect@^1.0.2:
dependencies:
minipass "^3.0.0"
-minipass-collect@^2.0.1:
- version "2.0.1"
- resolved "https://registry.npmmirror.com/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863"
- integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==
- dependencies:
- minipass "^7.0.3"
-
minipass-fetch@^2.0.3:
version "2.1.2"
resolved "https://registry.npmmirror.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add"
@@ -6627,28 +7484,6 @@ minipass-fetch@^2.0.3:
optionalDependencies:
encoding "^0.1.13"
-minipass-fetch@^3.0.0:
- version "3.0.5"
- resolved "https://registry.npmmirror.com/minipass-fetch/-/minipass-fetch-3.0.5.tgz#f0f97e40580affc4a35cc4a1349f05ae36cb1e4c"
- integrity sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==
- dependencies:
- minipass "^7.0.3"
- minipass-sized "^1.0.3"
- minizlib "^2.1.2"
- optionalDependencies:
- encoding "^0.1.13"
-
-minipass-fetch@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/minipass-fetch/-/minipass-fetch-4.0.0.tgz#b8ea716464747aeafb7edf2e110114c38089a09c"
- integrity sha512-2v6aXUXwLP1Epd/gc32HAMIWoczx+fZwEPRHm/VwtrJzRGwR1qGZXEYV3Zp8ZjjbwaZhMrM6uHV4KVkk+XCc2w==
- dependencies:
- minipass "^7.0.3"
- minipass-sized "^1.0.3"
- minizlib "^3.0.1"
- optionalDependencies:
- encoding "^0.1.13"
-
minipass-flush@^1.0.5:
version "1.0.5"
resolved "https://registry.npmmirror.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373"
@@ -6670,6 +7505,14 @@ minipass-sized@^1.0.3:
dependencies:
minipass "^3.0.0"
+minipass@^2.3.5, minipass@^2.6.0, minipass@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.npmmirror.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
+ integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
+ dependencies:
+ safe-buffer "^5.1.2"
+ yallist "^3.0.0"
+
minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6:
version "3.3.6"
resolved "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a"
@@ -6682,11 +7525,18 @@ minipass@^5.0.0:
resolved "https://registry.npmmirror.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d"
integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
-"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.0.4, minipass@^7.1.1, minipass@^7.1.2:
+"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
version "7.1.2"
resolved "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
+minizlib@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.npmmirror.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
+ integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
+ dependencies:
+ minipass "^2.9.0"
+
minizlib@^2.1.1, minizlib@^2.1.2:
version "2.1.2"
resolved "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
@@ -6695,13 +7545,21 @@ minizlib@^2.1.1, minizlib@^2.1.2:
minipass "^3.0.0"
yallist "^4.0.0"
-minizlib@^3.0.1:
- version "3.0.1"
- resolved "https://registry.npmmirror.com/minizlib/-/minizlib-3.0.1.tgz#46d5329d1eb3c83924eff1d3b858ca0a31581012"
- integrity sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==
+mississippi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
+ integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
dependencies:
- minipass "^7.0.4"
- rimraf "^5.0.5"
+ concat-stream "^1.5.0"
+ duplexify "^3.4.2"
+ end-of-stream "^1.1.0"
+ flush-write-stream "^1.0.0"
+ from2 "^2.1.0"
+ parallel-transform "^1.1.0"
+ pump "^3.0.0"
+ pumpify "^1.3.3"
+ stream-each "^1.1.0"
+ through2 "^2.0.0"
mitt@3.0.1, mitt@^3.0.1:
version "3.0.1"
@@ -6713,7 +7571,7 @@ mj-context-menu@^0.6.1:
resolved "https://registry.npmmirror.com/mj-context-menu/-/mj-context-menu-0.6.1.tgz#a043c5282bf7e1cf3821de07b13525ca6f85aa69"
integrity sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==
-mkdirp@^0.5.1:
+mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@^0.5.6, mkdirp@~0.5.0:
version "0.5.6"
resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
@@ -6725,11 +7583,6 @@ mkdirp@^1.0.3, mkdirp@^1.0.4:
resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-mkdirp@^3.0.1:
- version "3.0.1"
- resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50"
- integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==
-
mlly@^1.7.1, mlly@^1.7.2, mlly@^1.7.3:
version "1.7.3"
resolved "https://registry.npmmirror.com/mlly/-/mlly-1.7.3.tgz#d86c0fcd8ad8e16395eb764a5f4b831590cee48c"
@@ -6757,6 +7610,18 @@ monaco-editor@^0.52.0:
resolved "https://registry.npmmirror.com/monaco-editor/-/monaco-editor-0.52.0.tgz#d47c02b191eae208d68878d679b3ee7456031be7"
integrity sha512-OeWhNpABLCeTqubfqLMXGsqf6OmPU6pHM85kF3dhy6kq5hnhuVS1p3VrEW/XhWHc71P2tHyS5JFySD8mgs1crw==
+move-concurrently@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
+ integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==
+ dependencies:
+ aproba "^1.1.1"
+ copy-concurrently "^1.0.0"
+ fs-write-stream-atomic "^1.0.8"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.3"
+
mpegts.js@^1.7.3:
version "1.7.3"
resolved "https://registry.npmmirror.com/mpegts.js/-/mpegts.js-1.7.3.tgz#a422ed501d778fa86f9eef98d71fd62fc013f262"
@@ -6775,7 +7640,12 @@ mrmime@^2.0.0:
resolved "https://registry.npmmirror.com/mrmime/-/mrmime-2.0.0.tgz#151082a6e06e59a9a39b46b3e14d5cfe92b3abb4"
integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==
-ms@^2.0.0, ms@^2.1.2, ms@^2.1.3:
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
+
+ms@^2.0.0, ms@^2.1.1, ms@^2.1.3:
version "2.1.3"
resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
@@ -6796,10 +7666,10 @@ multimatch@^5.0.0:
arrify "^2.0.1"
minimatch "^3.0.4"
-mute-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmmirror.com/mute-stream/-/mute-stream-2.0.0.tgz#a5446fc0c512b71c83c44d908d5c7b7b4c493b2b"
- integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==
+mute-stream@~0.0.4:
+ version "0.0.8"
+ resolved "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
+ integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
nanoid@^3.3.7:
version "3.3.7"
@@ -6829,11 +7699,6 @@ negotiator@^0.6.3:
resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7"
integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==
-negotiator@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmmirror.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a"
- integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==
-
nested-property@^4.0.0:
version "4.0.0"
resolved "https://registry.npmmirror.com/nested-property/-/nested-property-4.0.0.tgz#a67b5a31991e701e03cdbaa6453bc5b1011bb88d"
@@ -6878,6 +7743,15 @@ node-fetch-native@^1.6.3:
resolved "https://registry.npmmirror.com/node-fetch-native/-/node-fetch-native-1.6.4.tgz#679fc8fd8111266d47d7e72c379f1bed9acff06e"
integrity sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==
+node-fetch-npm@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4"
+ integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==
+ dependencies:
+ encoding "^0.1.11"
+ json-parse-better-errors "^1.0.0"
+ safe-buffer "^5.1.1"
+
node-fetch@^2.6.0, node-fetch@^2.6.7:
version "2.7.0"
resolved "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
@@ -6894,21 +7768,22 @@ node-fetch@^3.3.0, node-fetch@^3.3.2:
fetch-blob "^3.1.4"
formdata-polyfill "^4.0.10"
-node-gyp@^10.0.0, node-gyp@^10.2.0:
- version "10.2.0"
- resolved "https://registry.npmmirror.com/node-gyp/-/node-gyp-10.2.0.tgz#80101c4aa4f7ab225f13fcc8daaaac4eb1a8dd86"
- integrity sha512-sp3FonBAaFe4aYTcFdZUn2NYkbP7xroPGYvQmP4Nl5PxamznItBnNCgjrVTKrEfQynInMsJvZrdmqUnysCJ8rw==
+node-gyp@^5.0.2, node-gyp@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmmirror.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e"
+ integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw==
dependencies:
env-paths "^2.2.0"
- exponential-backoff "^3.1.1"
- glob "^10.3.10"
- graceful-fs "^4.2.6"
- make-fetch-happen "^13.0.0"
- nopt "^7.0.0"
- proc-log "^4.1.0"
- semver "^7.3.5"
- tar "^6.2.1"
- which "^4.0.0"
+ glob "^7.1.4"
+ graceful-fs "^4.2.2"
+ mkdirp "^0.5.1"
+ nopt "^4.0.1"
+ npmlog "^4.1.2"
+ request "^2.88.0"
+ rimraf "^2.6.3"
+ semver "^5.7.1"
+ tar "^4.4.12"
+ which "^1.3.1"
node-gyp@^9.0.0:
version "9.4.1"
@@ -6946,6 +7821,14 @@ node-rsa@^1.1.1:
dependencies:
asn1 "^0.2.4"
+nopt@^4.0.1, nopt@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48"
+ integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==
+ dependencies:
+ abbrev "1"
+ osenv "^0.1.4"
+
nopt@^6.0.0:
version "6.0.0"
resolved "https://registry.npmmirror.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d"
@@ -6953,28 +7836,22 @@ nopt@^6.0.0:
dependencies:
abbrev "^1.0.0"
-nopt@^7.0.0, nopt@^7.2.0:
+nopt@^7.2.0:
version "7.2.1"
resolved "https://registry.npmmirror.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7"
integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==
dependencies:
abbrev "^2.0.0"
-nopt@^8.0.0:
- version "8.0.0"
- resolved "https://registry.npmmirror.com/nopt/-/nopt-8.0.0.tgz#644f1e78da564b70e3606ab8db4836b0e32e198a"
- integrity sha512-1L/fTJ4UmV/lUxT2Uf006pfZKTvAgCF+chz+0OgBHO8u2Z67pE7AaAUUj7CJy0lXqHmymUvGFt6NE9R3HER0yw==
- dependencies:
- abbrev "^2.0.0"
-
-normalize-package-data@^7.0.0:
- version "7.0.0"
- resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-7.0.0.tgz#ab4f49d02f2e25108d3f4326f3c13f0de6fa6a0a"
- integrity sha512-k6U0gKRIuNCTkwHGZqblCfLfBRh+w1vI6tBo+IeJwq2M8FUiOqhX7GH+GArQGScA7azd1WfyRCvxoXDO3hQDIA==
+normalize-package-data@^2.0.0, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
dependencies:
- hosted-git-info "^8.0.0"
- semver "^7.3.5"
- validate-npm-package-license "^3.0.4"
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
@@ -6991,83 +7868,118 @@ nplayer@^1.0.15:
resolved "https://registry.npmmirror.com/nplayer/-/nplayer-1.0.15.tgz#cbce94efcab64510b25d9eae035db3c1ae297ad6"
integrity sha512-QONvD0+ZvorQNOghe55FY10ebNv6yDnr2QgHs8JdessOex+vVNSKZz88Rl9RBMflb4+MRpeMVJpkTpji0XzVCg==
-npm-audit-report@^6.0.0:
- version "6.0.0"
- resolved "https://registry.npmmirror.com/npm-audit-report/-/npm-audit-report-6.0.0.tgz#0262e5e2b674fabf0ea47e900fc7384b83de0fbb"
- integrity sha512-Ag6Y1irw/+CdSLqEEAn69T8JBgBThj5mw0vuFIKeP7hATYuQuS5jkMjK6xmVB8pr7U4g5Audbun0lHhBDMIBRA==
+npm-audit-report@^1.3.3:
+ version "1.3.3"
+ resolved "https://registry.npmmirror.com/npm-audit-report/-/npm-audit-report-1.3.3.tgz#8226deeb253b55176ed147592a3995442f2179ed"
+ integrity sha512-8nH/JjsFfAWMvn474HB9mpmMjrnKb1Hx/oTAdjv4PT9iZBvBxiZ+wtDUapHCJwLqYGQVPaAfs+vL5+5k9QndXw==
+ dependencies:
+ cli-table3 "^0.5.0"
+ console-control-strings "^1.1.0"
-npm-bundled@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/npm-bundled/-/npm-bundled-4.0.0.tgz#f5b983f053fe7c61566cf07241fab2d4e9d513d3"
- integrity sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==
+npm-bundled@^1.0.1:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1"
+ integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==
dependencies:
- npm-normalize-package-bin "^4.0.0"
+ npm-normalize-package-bin "^1.0.1"
+
+npm-cache-filename@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11"
+ integrity sha512-5v2y1KG06izpGvZJDSBR5q1Ej+NaPDO05yAAWBJE6+3eiId0R176Gz3Qc2vEmJnE+VGul84g6Qpq8fXzD82/JA==
npm-check-updates@^17.1.11:
version "17.1.11"
resolved "https://registry.npmmirror.com/npm-check-updates/-/npm-check-updates-17.1.11.tgz#f6d48ca6a9adc0df990f6cd11de3bcd1e48e5c54"
integrity sha512-TR2RuGIH7P3Qrb0jfdC/nT7JWqXPKjDlxuNQt3kx4oNVf1Pn5SBRB7KLypgYZhruivJthgTtfkkyK4mz342VjA==
-npm-install-checks@^7.1.0, npm-install-checks@^7.1.1:
- version "7.1.1"
- resolved "https://registry.npmmirror.com/npm-install-checks/-/npm-install-checks-7.1.1.tgz#e9d679fc8a1944c75cdcc96478a22f9d0f763632"
- integrity sha512-u6DCwbow5ynAX5BdiHQ9qvexme4U3qHW3MWe5NqH+NeBm0LbiH6zvGjNNew1fY+AZZUtVHbOPF3j7mJxbUzpXg==
+npm-install-checks@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/npm-install-checks/-/npm-install-checks-3.0.2.tgz#ab2e32ad27baa46720706908e5b14c1852de44d9"
+ integrity sha512-E4kzkyZDIWoin6uT5howP8VDvkM+E8IQDcHAycaAxMbwkqhIg5eEYALnXOl3Hq9MrkdQB/2/g1xwBINXdKSRkg==
dependencies:
- semver "^7.1.1"
+ semver "^2.3.0 || 3.x || 4 || 5"
-npm-normalize-package-bin@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz#df79e70cd0a113b77c02d1fe243c96b8e618acb1"
- integrity sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==
+npm-lifecycle@^3.0.0, npm-lifecycle@^3.1.5:
+ version "3.1.5"
+ resolved "https://registry.npmmirror.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309"
+ integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==
+ dependencies:
+ byline "^5.0.0"
+ graceful-fs "^4.1.15"
+ node-gyp "^5.0.2"
+ resolve-from "^4.0.0"
+ slide "^1.1.6"
+ uid-number "0.0.6"
+ umask "^1.1.0"
+ which "^1.3.1"
-npm-package-arg@^12.0.0:
- version "12.0.0"
- resolved "https://registry.npmmirror.com/npm-package-arg/-/npm-package-arg-12.0.0.tgz#c2a6631c09d244c6bc35a46c38cbd94d53e9829a"
- integrity sha512-ZTE0hbwSdTNL+Stx2zxSqdu2KZfNDcrtrLdIk7XGnQFYBWYDho/ORvXtn5XEePcL3tFpGjHCV3X3xrtDh7eZ+A==
+npm-logical-tree@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/npm-logical-tree/-/npm-logical-tree-1.2.1.tgz#44610141ca24664cad35d1e607176193fd8f5b88"
+ integrity sha512-AJI/qxDB2PWI4LG1CYN579AY1vCiNyWfkiquCsJWqntRu/WwimVrC8yXeILBFHDwxfOejxewlmnvW9XXjMlYIg==
+
+npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
+ integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
+
+"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0, npm-package-arg@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.npmmirror.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7"
+ integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==
dependencies:
- hosted-git-info "^8.0.0"
- proc-log "^5.0.0"
- semver "^7.3.5"
- validate-npm-package-name "^6.0.0"
+ hosted-git-info "^2.7.1"
+ osenv "^0.1.5"
+ semver "^5.6.0"
+ validate-npm-package-name "^3.0.0"
-npm-packlist@^9.0.0:
- version "9.0.0"
- resolved "https://registry.npmmirror.com/npm-packlist/-/npm-packlist-9.0.0.tgz#8e9b061bab940de639dd93d65adc95c34412c7d0"
- integrity sha512-8qSayfmHJQTx3nJWYbbUmflpyarbLMBc6LCAjYsiGtXxDB68HaZpb8re6zeaLGxZzDuMdhsg70jryJe+RrItVQ==
+npm-packlist@^1.1.12, npm-packlist@^1.4.8:
+ version "1.4.8"
+ resolved "https://registry.npmmirror.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e"
+ integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==
dependencies:
- ignore-walk "^7.0.0"
+ ignore-walk "^3.0.1"
+ npm-bundled "^1.0.1"
+ npm-normalize-package-bin "^1.0.1"
-npm-pick-manifest@^10.0.0:
- version "10.0.0"
- resolved "https://registry.npmmirror.com/npm-pick-manifest/-/npm-pick-manifest-10.0.0.tgz#6cc120c6473ceea56dfead500f00735b2b892851"
- integrity sha512-r4fFa4FqYY8xaM7fHecQ9Z2nE9hgNfJR+EmoKv0+chvzWkBcORX3r0FpTByP+CbOVJDladMXnPQGVN8PBLGuTQ==
+npm-pick-manifest@^3.0.0, npm-pick-manifest@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7"
+ integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==
dependencies:
- npm-install-checks "^7.1.0"
- npm-normalize-package-bin "^4.0.0"
- npm-package-arg "^12.0.0"
- semver "^7.3.5"
+ figgy-pudding "^3.5.1"
+ npm-package-arg "^6.0.0"
+ semver "^5.4.1"
-npm-profile@^11.0.1:
- version "11.0.1"
- resolved "https://registry.npmmirror.com/npm-profile/-/npm-profile-11.0.1.tgz#6ffac43f3d186316d37e80986d84aef2470269a2"
- integrity sha512-HP5Cw9WHwFS9vb4fxVlkNAQBUhVL5BmW6rAR+/JWkpwqcFJid7TihKUdYDWqHl0NDfLd0mpucheGySqo8ysyfw==
+npm-profile@^4.0.2, npm-profile@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.npmmirror.com/npm-profile/-/npm-profile-4.0.4.tgz#28ee94390e936df6d084263ee2061336a6a1581b"
+ integrity sha512-Ta8xq8TLMpqssF0H60BXS1A90iMoM6GeKwsmravJ6wYjWwSzcYBTdyWa3DZCYqPutacBMEm7cxiOkiIeCUAHDQ==
+ dependencies:
+ aproba "^1.1.2 || 2"
+ figgy-pudding "^3.4.1"
+ npm-registry-fetch "^4.0.0"
+
+npm-registry-fetch@^4.0.0, npm-registry-fetch@^4.0.7:
+ version "4.0.7"
+ resolved "https://registry.npmmirror.com/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz#57951bf6541e0246b34c9f9a38ab73607c9449d7"
+ integrity sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ==
dependencies:
- npm-registry-fetch "^18.0.0"
- proc-log "^5.0.0"
+ JSONStream "^1.3.4"
+ bluebird "^3.5.1"
+ figgy-pudding "^3.4.1"
+ lru-cache "^5.1.1"
+ make-fetch-happen "^5.0.0"
+ npm-package-arg "^6.1.0"
+ safe-buffer "^5.2.0"
-npm-registry-fetch@^18.0.0, npm-registry-fetch@^18.0.1, npm-registry-fetch@^18.0.2:
- version "18.0.2"
- resolved "https://registry.npmmirror.com/npm-registry-fetch/-/npm-registry-fetch-18.0.2.tgz#340432f56b5a8b1af068df91aae0435d2de646b5"
- integrity sha512-LeVMZBBVy+oQb5R6FDV9OlJCcWDU+al10oKpe+nsvcHnG24Z3uM3SvJYKfGJlfGjVU8v9liejCrUR/M5HO5NEQ==
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==
dependencies:
- "@npmcli/redact" "^3.0.0"
- jsonparse "^1.3.1"
- make-fetch-happen "^14.0.0"
- minipass "^7.0.2"
- minipass-fetch "^4.0.0"
- minizlib "^3.0.1"
- npm-package-arg "^12.0.0"
- proc-log "^5.0.0"
+ path-key "^2.0.0"
npm-run-path@^4.0.1:
version "4.0.1"
@@ -7091,84 +8003,141 @@ npm-run-path@^6.0.0:
path-key "^4.0.0"
unicorn-magic "^0.3.0"
-npm-user-validate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmmirror.com/npm-user-validate/-/npm-user-validate-3.0.0.tgz#9b1410796bf1f1d78297a8096328c55d3083f233"
- integrity sha512-9xi0RdSmJ4mPYTC393VJPz1Sp8LyCx9cUnm/L9Qcb3cFO8gjT4mN20P9FAsea8qDHdQ7LtcN8VLh2UT47SdKCw==
-
-npm@^10.9.1:
- version "10.9.1"
- resolved "https://registry.npmmirror.com/npm/-/npm-10.9.1.tgz#ab141c1229765c11c8c59060fc9cf450a2207bd6"
- integrity sha512-yJUw03xLqjiv1D52oHeoS5qmOEC5hkJlhP1cWlSrCgshuxWVyFEEK3M3hLC0NwbTaklLTYrhoIanYsuNP5WUKg==
- dependencies:
- "@isaacs/string-locale-compare" "^1.1.0"
- "@npmcli/arborist" "^8.0.0"
- "@npmcli/config" "^9.0.0"
- "@npmcli/fs" "^4.0.0"
- "@npmcli/map-workspaces" "^4.0.1"
- "@npmcli/package-json" "^6.0.1"
- "@npmcli/promise-spawn" "^8.0.2"
- "@npmcli/redact" "^3.0.0"
- "@npmcli/run-script" "^9.0.1"
- "@sigstore/tuf" "^3.0.0"
- abbrev "^3.0.0"
+npm-user-validate@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/npm-user-validate/-/npm-user-validate-1.0.1.tgz#31428fc5475fe8416023f178c0ab47935ad8c561"
+ integrity sha512-uQwcd/tY+h1jnEaze6cdX/LrhWhoBxfSknxentoqmIuStxUExxjWd3ULMLFPiFUrZKbOVMowH6Jq2FRWfmhcEw==
+
+npm@6.14.18:
+ version "6.14.18"
+ resolved "https://registry.npmmirror.com/npm/-/npm-6.14.18.tgz#5cd431567f0961e1fe63d46738cf37f74f7999eb"
+ integrity sha512-p3SjqSchSuNQUqbJBgwdv0L3O6bKkaSfQrQzJsskNpNKLg0g37c5xTXFV0SqTlX9GWvoGxBELVJMRWq0J8oaLA==
+ dependencies:
+ JSONStream "^1.3.5"
+ abbrev "~1.1.1"
+ ansicolors "~0.3.2"
+ ansistyles "~0.1.3"
+ aproba "^2.0.0"
archy "~1.0.0"
- cacache "^19.0.1"
- chalk "^5.3.0"
- ci-info "^4.1.0"
- cli-columns "^4.0.0"
- fastest-levenshtein "^1.0.16"
- fs-minipass "^3.0.3"
- glob "^10.4.5"
- graceful-fs "^4.2.11"
- hosted-git-info "^8.0.2"
- ini "^5.0.0"
- init-package-json "^7.0.1"
- is-cidr "^5.1.0"
- json-parse-even-better-errors "^4.0.0"
- libnpmaccess "^9.0.0"
- libnpmdiff "^7.0.0"
- libnpmexec "^9.0.0"
- libnpmfund "^6.0.0"
- libnpmhook "^11.0.0"
- libnpmorg "^7.0.0"
- libnpmpack "^8.0.0"
- libnpmpublish "^10.0.1"
- libnpmsearch "^8.0.0"
- libnpmteam "^7.0.0"
- libnpmversion "^7.0.0"
- make-fetch-happen "^14.0.3"
- minimatch "^9.0.5"
- minipass "^7.1.1"
- minipass-pipeline "^1.2.4"
- ms "^2.1.2"
- node-gyp "^10.2.0"
- nopt "^8.0.0"
- normalize-package-data "^7.0.0"
- npm-audit-report "^6.0.0"
- npm-install-checks "^7.1.1"
- npm-package-arg "^12.0.0"
- npm-pick-manifest "^10.0.0"
- npm-profile "^11.0.1"
- npm-registry-fetch "^18.0.2"
- npm-user-validate "^3.0.0"
- p-map "^4.0.0"
- pacote "^19.0.1"
- parse-conflict-json "^4.0.0"
- proc-log "^5.0.0"
+ bin-links "^1.1.8"
+ bluebird "^3.7.2"
+ byte-size "^5.0.1"
+ cacache "^12.0.4"
+ call-limit "^1.1.1"
+ chownr "^1.1.4"
+ ci-info "^2.0.0"
+ cli-columns "^3.1.2"
+ cli-table3 "^0.5.1"
+ cmd-shim "^3.0.3"
+ columnify "~1.5.4"
+ config-chain "^1.1.13"
+ detect-indent "~5.0.0"
+ detect-newline "^2.1.0"
+ dezalgo "^1.0.4"
+ editor "~1.0.0"
+ figgy-pudding "^3.5.2"
+ find-npm-prefix "^1.0.2"
+ fs-vacuum "~1.2.10"
+ fs-write-stream-atomic "~1.0.10"
+ gentle-fs "^2.3.1"
+ glob "^7.2.3"
+ graceful-fs "^4.2.10"
+ has-unicode "~2.0.1"
+ hosted-git-info "^2.8.9"
+ iferr "^1.0.2"
+ infer-owner "^1.0.4"
+ inflight "~1.0.6"
+ inherits "^2.0.4"
+ ini "^1.3.8"
+ init-package-json "^1.10.3"
+ is-cidr "^3.1.1"
+ json-parse-better-errors "^1.0.2"
+ lazy-property "~1.0.0"
+ libcipm "^4.0.8"
+ libnpm "^3.0.1"
+ libnpmaccess "^3.0.2"
+ libnpmhook "^5.0.3"
+ libnpmorg "^1.0.1"
+ libnpmsearch "^2.0.2"
+ libnpmteam "^1.0.2"
+ libnpx "^10.2.4"
+ lock-verify "^2.2.2"
+ lockfile "^1.0.4"
+ lodash._baseuniq "~4.6.0"
+ lodash.clonedeep "~4.5.0"
+ lodash.union "~4.6.0"
+ lodash.uniq "~4.5.0"
+ lodash.without "~4.4.0"
+ lru-cache "^5.1.1"
+ meant "^1.0.3"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.6"
+ move-concurrently "^1.0.1"
+ node-gyp "^5.1.1"
+ nopt "^4.0.3"
+ normalize-package-data "^2.5.0"
+ npm-audit-report "^1.3.3"
+ npm-cache-filename "~1.0.2"
+ npm-install-checks "^3.0.2"
+ npm-lifecycle "^3.1.5"
+ npm-package-arg "^6.1.1"
+ npm-packlist "^1.4.8"
+ npm-pick-manifest "^3.0.2"
+ npm-profile "^4.0.4"
+ npm-registry-fetch "^4.0.7"
+ npm-user-validate "^1.0.1"
+ npmlog "~4.1.2"
+ once "~1.4.0"
+ opener "^1.5.2"
+ osenv "^0.1.5"
+ pacote "^9.5.12"
+ path-is-inside "~1.0.2"
+ promise-inflight "~1.0.1"
qrcode-terminal "^0.12.0"
- read "^4.0.0"
- semver "^7.6.3"
- spdx-expression-parse "^4.0.0"
- ssri "^12.0.0"
- supports-color "^9.4.0"
- tar "^6.2.1"
+ query-string "^6.14.1"
+ qw "^1.0.2"
+ read "~1.0.7"
+ read-cmd-shim "^1.0.5"
+ read-installed "~4.0.3"
+ read-package-json "^2.1.2"
+ read-package-tree "^5.3.1"
+ readable-stream "^3.6.0"
+ readdir-scoped-modules "^1.1.0"
+ request "^2.88.2"
+ retry "^0.12.0"
+ rimraf "^2.7.1"
+ safe-buffer "^5.2.1"
+ semver "^5.7.1"
+ sha "^3.0.0"
+ slide "~1.1.6"
+ sorted-object "~2.0.1"
+ sorted-union-stream "~2.1.3"
+ ssri "^6.0.2"
+ stringify-package "^1.0.1"
+ tar "^4.4.19"
text-table "~0.2.0"
tiny-relative-date "^1.3.0"
- treeverse "^3.0.0"
- validate-npm-package-name "^6.0.0"
- which "^5.0.0"
- write-file-atomic "^6.0.0"
+ uid-number "0.0.6"
+ umask "~1.1.0"
+ unique-filename "^1.1.1"
+ unpipe "~1.0.0"
+ update-notifier "^2.5.0"
+ uuid "^3.4.0"
+ validate-npm-package-license "^3.0.4"
+ validate-npm-package-name "~3.0.0"
+ which "^1.3.1"
+ worker-farm "^1.7.0"
+ write-file-atomic "^2.4.3"
+
+npmlog@^4.1.2, npmlog@~4.1.2:
+ version "4.1.2"
+ resolved "https://registry.npmmirror.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
+ integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.3"
+ set-blocking "~2.0.0"
npmlog@^6.0.0:
version "6.0.2"
@@ -7187,6 +8156,11 @@ nth-check@^2.0.1:
dependencies:
boolbase "^1.0.0"
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==
+
nypm@^0.3.8:
version "0.3.12"
resolved "https://registry.npmmirror.com/nypm/-/nypm-0.3.12.tgz#37541bec0af3a37d3acd81d6662c6666e650b22e"
@@ -7199,7 +8173,17 @@ nypm@^0.3.8:
pkg-types "^1.2.0"
ufo "^1.5.4"
-object-inspect@^1.13.1:
+oauth-sign@~0.9.0:
+ version "0.9.0"
+ resolved "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
+ integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
+
+object-assign@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+
+object-inspect@^1.13.1, object-inspect@^1.13.3:
version "1.13.3"
resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a"
integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==
@@ -7209,6 +8193,29 @@ object-keys@^1.1.1:
resolved "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+object.assign@^4.1.5:
+ version "4.1.5"
+ resolved "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0"
+ integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==
+ dependencies:
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ has-symbols "^1.0.3"
+ object-keys "^1.1.1"
+
+object.getownpropertydescriptors@^2.0.3:
+ version "2.1.8"
+ resolved "https://registry.npmmirror.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz#2f1fe0606ec1a7658154ccd4f728504f69667923"
+ integrity sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==
+ dependencies:
+ array.prototype.reduce "^1.0.6"
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+ es-object-atoms "^1.0.0"
+ gopd "^1.0.1"
+ safe-array-concat "^1.1.2"
+
obliterator@^2.0.1:
version "2.0.4"
resolved "https://registry.npmmirror.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816"
@@ -7224,7 +8231,7 @@ on-exit-leak-free@^2.1.0:
resolved "https://registry.npmmirror.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8"
integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==
-once@^1.3.0, once@^1.3.1, once@^1.4.0:
+once@^1.3.0, once@^1.3.1, once@^1.4.0, once@~1.4.0:
version "1.4.0"
resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
@@ -7262,10 +8269,10 @@ open@^10.1.0:
is-inside-container "^1.0.0"
is-wsl "^3.1.0"
-openai@^4.73.1:
- version "4.73.1"
- resolved "https://registry.npmmirror.com/openai/-/openai-4.73.1.tgz#532bd000d5f1a558e4fff1119da6749992ac41e4"
- integrity sha512-nWImDJBcUsqrhy7yJScXB4+iqjzbUEgzfA3un/6UnHFdwWhjX24oztj69Ped/njABfOdLcO/F7CeWTI5dt8Xmg==
+openai@^4.76.0:
+ version "4.76.0"
+ resolved "https://registry.npmmirror.com/openai/-/openai-4.76.0.tgz#0ba135ff6452eadbce980c604f98799dfa239325"
+ integrity sha512-QBGIetjX1C9xDp5XGa/3mPnfKI9BgAe2xHQX6PmO98wuW9qQaurBaumcYptQWc9LHZZq7cH/Y1Rjnsr6uUDdVw==
dependencies:
"@types/node" "^18.11.18"
"@types/node-fetch" "^2.6.4"
@@ -7275,6 +8282,11 @@ openai@^4.73.1:
formdata-node "^4.3.2"
node-fetch "^2.6.7"
+opener@^1.5.2:
+ version "1.5.2"
+ resolved "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
+ integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
+
option-validator@^2.0.6:
version "2.0.6"
resolved "https://registry.npmmirror.com/option-validator/-/option-validator-2.0.6.tgz#a314dae65e26db5f948ef0ff96fc88f18bb76ed6"
@@ -7324,11 +8336,41 @@ ora@^8.1.1:
string-width "^7.2.0"
strip-ansi "^7.1.0"
+os-homedir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==
+
+os-tmpdir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
+
+osenv@^0.1.4, osenv@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.npmmirror.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
+ integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.0"
+
p-cancelable@^2.0.0:
version "2.1.1"
resolved "https://registry.npmmirror.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf"
integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==
+
+p-limit@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
p-limit@^3.0.2, "p-limit@^3.1.0 ":
version "3.1.0"
resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
@@ -7336,6 +8378,13 @@ p-limit@^3.0.2, "p-limit@^3.1.0 ":
dependencies:
yocto-queue "^0.1.0"
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ dependencies:
+ p-limit "^2.0.0"
+
p-locate@^5.0.0:
version "5.0.0"
resolved "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
@@ -7350,11 +8399,6 @@ p-map@^4.0.0:
dependencies:
aggregate-error "^3.0.0"
-p-map@^7.0.2:
- version "7.0.2"
- resolved "https://registry.npmmirror.com/p-map/-/p-map-7.0.2.tgz#7c5119fada4755660f70199a66aa3fe2f85a1fe8"
- integrity sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==
-
p-queue@^8.0.1:
version "8.0.1"
resolved "https://registry.npmmirror.com/p-queue/-/p-queue-8.0.1.tgz#718b7f83836922ef213ddec263ff4223ce70bef8"
@@ -7368,6 +8412,11 @@ p-timeout@^6.1.2:
resolved "https://registry.npmmirror.com/p-timeout/-/p-timeout-6.1.3.tgz#9635160c4e10c7b4c3db45b7d5d26f911d9fd853"
integrity sha512-UJUyfKbwvr/uZSV6btANfb+0t/mOhKV/KXcCUTp8FcQI+v/0d+wXqH4htrW0E4rR6WiEO/EPvUFiV9D5OI4vlw==
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
pac-proxy-agent@^7.0.1:
version "7.0.2"
resolved "https://registry.npmmirror.com/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz#0fb02496bd9fb8ae7eb11cfd98386daaac442f58"
@@ -7395,57 +8444,66 @@ package-json-from-dist@^1.0.0:
resolved "https://registry.npmmirror.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505"
integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==
-pacote@^19.0.0, pacote@^19.0.1:
- version "19.0.1"
- resolved "https://registry.npmmirror.com/pacote/-/pacote-19.0.1.tgz#66d22dbd274ed8a7c30029d70eb8030f5151e6fc"
- integrity sha512-zIpxWAsr/BvhrkSruspG8aqCQUUrWtpwx0GjiRZQhEM/pZXrigA32ElN3vTcCPUDOFmHr6SFxwYrvVUs5NTEUg==
- dependencies:
- "@npmcli/git" "^6.0.0"
- "@npmcli/installed-package-contents" "^3.0.0"
- "@npmcli/package-json" "^6.0.0"
- "@npmcli/promise-spawn" "^8.0.0"
- "@npmcli/run-script" "^9.0.0"
- cacache "^19.0.0"
- fs-minipass "^3.0.0"
- minipass "^7.0.2"
- npm-package-arg "^12.0.0"
- npm-packlist "^9.0.0"
- npm-pick-manifest "^10.0.0"
- npm-registry-fetch "^18.0.0"
- proc-log "^5.0.0"
- promise-retry "^2.0.1"
- sigstore "^3.0.0"
- ssri "^12.0.0"
- tar "^6.1.11"
-
-pacote@^20.0.0:
- version "20.0.0"
- resolved "https://registry.npmmirror.com/pacote/-/pacote-20.0.0.tgz#c974373d8e0859d00e8f9158574350f8c1b168e5"
- integrity sha512-pRjC5UFwZCgx9kUFDVM9YEahv4guZ1nSLqwmWiLUnDbGsjs+U5w7z6Uc8HNR1a6x8qnu5y9xtGE6D1uAuYz+0A==
- dependencies:
- "@npmcli/git" "^6.0.0"
- "@npmcli/installed-package-contents" "^3.0.0"
- "@npmcli/package-json" "^6.0.0"
- "@npmcli/promise-spawn" "^8.0.0"
- "@npmcli/run-script" "^9.0.0"
- cacache "^19.0.0"
- fs-minipass "^3.0.0"
- minipass "^7.0.2"
- npm-package-arg "^12.0.0"
- npm-packlist "^9.0.0"
- npm-pick-manifest "^10.0.0"
- npm-registry-fetch "^18.0.0"
- proc-log "^5.0.0"
- promise-retry "^2.0.1"
- sigstore "^3.0.0"
- ssri "^12.0.0"
- tar "^6.1.11"
+package-json@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed"
+ integrity sha512-q/R5GrMek0vzgoomq6rm9OX+3PQve8sLwTirmK30YB3Cu0Bbt9OX9M/SIUnroN5BGJkzwGsFwDaRGD9EwBOlCA==
+ dependencies:
+ got "^6.7.1"
+ registry-auth-token "^3.0.1"
+ registry-url "^3.0.3"
+ semver "^5.1.0"
+
+pacote@^9.1.0, pacote@^9.5.12, pacote@^9.5.3:
+ version "9.5.12"
+ resolved "https://registry.npmmirror.com/pacote/-/pacote-9.5.12.tgz#1e11dd7a8d736bcc36b375a9804d41bb0377bf66"
+ integrity sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==
+ dependencies:
+ bluebird "^3.5.3"
+ cacache "^12.0.2"
+ chownr "^1.1.2"
+ figgy-pudding "^3.5.1"
+ get-stream "^4.1.0"
+ glob "^7.1.3"
+ infer-owner "^1.0.4"
+ lru-cache "^5.1.1"
+ make-fetch-happen "^5.0.0"
+ minimatch "^3.0.4"
+ minipass "^2.3.5"
+ mississippi "^3.0.0"
+ mkdirp "^0.5.1"
+ normalize-package-data "^2.4.0"
+ npm-normalize-package-bin "^1.0.0"
+ npm-package-arg "^6.1.0"
+ npm-packlist "^1.1.12"
+ npm-pick-manifest "^3.0.0"
+ npm-registry-fetch "^4.0.0"
+ osenv "^0.1.5"
+ promise-inflight "^1.0.1"
+ promise-retry "^1.1.1"
+ protoduck "^5.0.1"
+ rimraf "^2.6.2"
+ safe-buffer "^5.1.2"
+ semver "^5.6.0"
+ ssri "^6.0.1"
+ tar "^4.4.10"
+ unique-filename "^1.1.1"
+ which "^1.3.1"
pako@^2.1.0:
version "2.1.0"
resolved "https://registry.npmmirror.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86"
integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==
+parallel-transform@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc"
+ integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==
+ dependencies:
+ cyclist "^1.0.1"
+ inherits "^2.0.3"
+ readable-stream "^2.1.5"
+
parent-module@^1.0.0:
version "1.0.1"
resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
@@ -7458,15 +8516,6 @@ parse-cache-control@^1.0.1:
resolved "https://registry.npmmirror.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e"
integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==
-parse-conflict-json@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/parse-conflict-json/-/parse-conflict-json-4.0.0.tgz#996b1edfc0c727583b56c7644dbb3258fc9e9e4b"
- integrity sha512-37CN2VtcuvKgHUs8+0b1uJeEsbGn61GRHz469C94P5xiOoqpDYJYwjg4RY9Vmz39WyZAVkR5++nbJwLMIgOCnQ==
- dependencies:
- json-parse-even-better-errors "^4.0.0"
- just-diff "^6.0.0"
- just-diff-apply "^5.2.0"
-
parse-json@^5.0.0, parse-json@^5.2.0:
version "5.2.0"
resolved "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
@@ -7531,6 +8580,11 @@ path-browserify@^1.0.1:
resolved "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==
+
path-exists@^4.0.0:
version "4.0.0"
resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
@@ -7541,6 +8595,16 @@ path-is-absolute@^1.0.0:
resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
+path-is-inside@^1.0.1, path-is-inside@^1.0.2, path-is-inside@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+ integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==
+
+path-key@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
+
path-key@^3.0.0, path-key@^3.1.0:
version "3.1.1"
resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
@@ -7599,6 +8663,16 @@ perfect-debounce@^1.0.0:
resolved "https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a"
integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==
+performance-now@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+ integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==
+
+pglite-server@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/pglite-server/-/pglite-server-0.1.4.tgz#da16cc6670dcf2de3dfe02212f7ebc4d5d5b963e"
+ integrity sha512-qcZZ5mu+UiLBHa6cHsFYqT6U6wvodg3HNO+kMFCLYlWWG7s1zm1BfO5MWb0yS0OZPgthJklzYz8NQJRujrZKZQ==
+
picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0, picocolors@^1.1.1:
version "1.1.1"
resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
@@ -7614,6 +8688,11 @@ picomatch@^4.0.2:
resolved "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab"
integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+ integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==
+
pify@^4.0.1:
version "4.0.1"
resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
@@ -7629,10 +8708,10 @@ pinia-plugin-persistedstate@^4.1.3:
defu "^6.1.4"
destr "^2.0.3"
-pinia@^2.2.8:
- version "2.2.8"
- resolved "https://registry.npmmirror.com/pinia/-/pinia-2.2.8.tgz#78bccede31f39e0119188fdaf705c31a93da6d5f"
- integrity sha512-NRTYy2g+kju5tBRe0oNlriZIbMNvma8ZJrpHsp3qudyiMEA8jMmPPKQ2QMHg0Oc4BkUyQYWagACabrwriCK9HQ==
+pinia@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/pinia/-/pinia-2.3.0.tgz#b81f4ac7da1031af8d8f7007686c4b2799a55b9f"
+ integrity sha512-ohZj3jla0LL0OH5PlLTDMzqKiVw2XARmC1XYLdLWIPBMdhDW/123ZWr4zVAhtJm+aoSkFa13pYXskAvAscIkhQ==
dependencies:
"@vue/devtools-api" "^6.6.3"
vue-demi "^0.14.10"
@@ -7717,6 +8796,11 @@ plist@^3.0.4, plist@^3.0.5, plist@^3.1.0:
base64-js "^1.5.1"
xmlbuilder "^15.1.1"
+possible-typed-array-names@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f"
+ integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==
+
postcss-resolve-nested-selector@^0.1.6:
version "0.1.6"
resolved "https://registry.npmmirror.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz#3d84dec809f34de020372c41b039956966896686"
@@ -7727,14 +8811,6 @@ postcss-safe-parser@^7.0.1:
resolved "https://registry.npmmirror.com/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz#36e4f7e608111a0ca940fd9712ce034718c40ec0"
integrity sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==
-postcss-selector-parser@^6.1.2:
- version "6.1.2"
- resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de"
- integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==
- dependencies:
- cssesc "^3.0.0"
- util-deprecate "^1.0.2"
-
postcss-selector-parser@^7.0.0:
version "7.0.0"
resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz#41bd8b56f177c093ca49435f65731befe25d6b9c"
@@ -7762,10 +8838,15 @@ prelude-ls@^1.2.1:
resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
-prettier@^3.4.1:
- version "3.4.1"
- resolved "https://registry.npmmirror.com/prettier/-/prettier-3.4.1.tgz#e211d451d6452db0a291672ca9154bc8c2579f7b"
- integrity sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==
+prepend-http@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+ integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==
+
+prettier@^3.4.2:
+ version "3.4.2"
+ resolved "https://registry.npmmirror.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f"
+ integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==
pretty-ms@^9.0.0:
version "9.2.0"
@@ -7774,16 +8855,6 @@ pretty-ms@^9.0.0:
dependencies:
parse-ms "^4.0.0"
-proc-log@^4.1.0, proc-log@^4.2.0:
- version "4.2.0"
- resolved "https://registry.npmmirror.com/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034"
- integrity sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==
-
-proc-log@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmmirror.com/proc-log/-/proc-log-5.0.0.tgz#e6c93cf37aef33f835c53485f314f50ea906a9d8"
- integrity sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==
-
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
@@ -7794,27 +8865,12 @@ process-warning@^4.0.0:
resolved "https://registry.npmmirror.com/process-warning/-/process-warning-4.0.0.tgz#581e3a7a1fb456c5f4fd239f76bce75897682d5a"
integrity sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==
-proggy@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmmirror.com/proggy/-/proggy-3.0.0.tgz#874e91fed27fe00a511758e83216a6b65148bd6c"
- integrity sha512-QE8RApCM3IaRRxVzxrjbgNMpQEX6Wu0p0KBeoSiSEw5/bsGwZHsshF4LCxH2jp/r6BU+bqA3LrMDEYNfJnpD8Q==
-
progress@^2.0.3:
version "2.0.3"
resolved "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
-promise-all-reject-late@^1.0.0:
- version "1.0.1"
- resolved "https://registry.npmmirror.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2"
- integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==
-
-promise-call-limit@^3.0.1:
- version "3.0.2"
- resolved "https://registry.npmmirror.com/promise-call-limit/-/promise-call-limit-3.0.2.tgz#524b7f4b97729ff70417d93d24f46f0265efa4f9"
- integrity sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw==
-
-promise-inflight@^1.0.1:
+promise-inflight@^1.0.1, promise-inflight@~1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==
@@ -7824,6 +8880,14 @@ promise-polyfill@8.3.0:
resolved "https://registry.npmmirror.com/promise-polyfill/-/promise-polyfill-8.3.0.tgz#9284810268138d103807b11f4e23d5e945a4db63"
integrity sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==
+promise-retry@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d"
+ integrity sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==
+ dependencies:
+ err-code "^1.0.0"
+ retry "^0.10.0"
+
promise-retry@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22"
@@ -7839,12 +8903,12 @@ promise@^8.0.0:
dependencies:
asap "~2.0.6"
-promzard@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmmirror.com/promzard/-/promzard-2.0.0.tgz#03ad0e4db706544dfdd4f459281f13484fc10c49"
- integrity sha512-Ncd0vyS2eXGOjchIRg6PVCYKetJYrW1BSbbIo+bKdig61TB6nH2RQNF2uP+qMpsI73L/jURLWojcw8JNIKZ3gg==
+promzard@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmmirror.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee"
+ integrity sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==
dependencies:
- read "^4.0.0"
+ read "1"
proto-list@~1.2.1:
version "1.2.4"
@@ -7877,6 +8941,13 @@ protocol-buffers@^4.0.4:
signed-varint "^2.0.0"
varint "^5.0.0"
+protoduck@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f"
+ integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==
+ dependencies:
+ genfun "^5.0.0"
+
proxy-addr@^2.0.7:
version "2.0.7"
resolved "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
@@ -7909,6 +8980,26 @@ prr@~1.0.1:
resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
+pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+ integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==
+
+psl@^1.1.28:
+ version "1.15.0"
+ resolved "https://registry.npmmirror.com/psl/-/psl-1.15.0.tgz#bdace31896f1d97cec6a79e8224898ce93d974c6"
+ integrity sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==
+ dependencies:
+ punycode "^2.3.1"
+
+pump@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
+ integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
pump@^3.0.0:
version "3.0.2"
resolved "https://registry.npmmirror.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8"
@@ -7917,22 +9008,31 @@ pump@^3.0.0:
end-of-stream "^1.1.0"
once "^1.3.1"
+pumpify@^1.3.3:
+ version "1.5.1"
+ resolved "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
+ integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
punycode.js@^2.3.1:
version "2.3.1"
resolved "https://registry.npmmirror.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7"
integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==
-punycode@^2.1.0:
+punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1:
version "2.3.1"
resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
-puppeteer-core@^23.9.0:
- version "23.9.0"
- resolved "https://registry.npmmirror.com/puppeteer-core/-/puppeteer-core-23.9.0.tgz#24add69fb58dde4ac49d165872b44a30d2bf5b32"
- integrity sha512-hLVrav2HYMVdK0YILtfJwtnkBAwNOztUdR4aJ5YKDvgsbtagNr6urUJk9HyjRA9e+PaLI3jzJ0wM7A4jSZ7Qxw==
+puppeteer-core@^23.10.1:
+ version "23.10.1"
+ resolved "https://registry.npmmirror.com/puppeteer-core/-/puppeteer-core-23.10.1.tgz#46feb3150454e799f1364c8e91d207dce3adbcb9"
+ integrity sha512-ey6NwixHYEUnhCA/uYi7uQQ4a0CZw4k+MatbHXGl5GEzaiRQziYUxc2HGpdQZ/gnh4KQWAKkocyIg1/dIm5d0g==
dependencies:
- "@puppeteer/browsers" "2.4.1"
+ "@puppeteer/browsers" "2.5.0"
chromium-bidi "0.8.0"
debug "^4.3.7"
devtools-protocol "0.0.1367902"
@@ -7969,6 +9069,21 @@ qs@^6.4.0:
dependencies:
side-channel "^1.0.6"
+qs@~6.5.2:
+ version "6.5.3"
+ resolved "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad"
+ integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==
+
+query-string@^6.14.1:
+ version "6.14.1"
+ resolved "https://registry.npmmirror.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a"
+ integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==
+ dependencies:
+ decode-uri-component "^0.2.0"
+ filter-obj "^1.1.0"
+ split-on-first "^1.0.0"
+ strict-uri-encode "^2.0.0"
+
querystring@^0.2.1:
version "0.2.1"
resolved "https://registry.npmmirror.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd"
@@ -8006,6 +9121,11 @@ quick-lru@^5.1.1:
resolved "https://registry.npmmirror.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
+qw@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/qw/-/qw-1.0.2.tgz#0c31a6f810320a91c58b05198679427103b03c4a"
+ integrity sha512-1PhZ/iLKwlVNq45dnerTMKFjMof49uqli7/0QsvPNbX5OJ3IZ8msa9lUpvPheVdP+IYYPrf6cOaVil7S35joVA==
+
rc9@^2.1.2:
version "2.1.2"
resolved "https://registry.npmmirror.com/rc9/-/rc9-2.1.2.tgz#6282ff638a50caa0a91a31d76af4a0b9cbd1080d"
@@ -8014,6 +9134,16 @@ rc9@^2.1.2:
defu "^6.1.4"
destr "^2.0.3"
+rc@^1.0.1, rc@^1.1.6:
+ version "1.2.8"
+ resolved "https://registry.npmmirror.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
+ integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
+ dependencies:
+ deep-extend "^0.6.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~2.0.1"
+
read-binary-file-arch@^1.0.6:
version "1.0.6"
resolved "https://registry.npmmirror.com/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz#959c4637daa932280a9b911b1a6766a7e44288fc"
@@ -8021,27 +9151,54 @@ read-binary-file-arch@^1.0.6:
dependencies:
debug "^4.3.4"
-read-cmd-shim@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmmirror.com/read-cmd-shim/-/read-cmd-shim-5.0.0.tgz#6e5450492187a0749f6c80dcbef0debc1117acca"
- integrity sha512-SEbJV7tohp3DAAILbEMPXavBjAnMN0tVnh4+9G8ihV4Pq3HYF9h8QNez9zkJ1ILkv9G2BjdzwctznGZXgu/HGw==
+read-cmd-shim@^1.0.1, read-cmd-shim@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16"
+ integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA==
+ dependencies:
+ graceful-fs "^4.1.2"
-read-package-json-fast@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/read-package-json-fast/-/read-package-json-fast-4.0.0.tgz#8ccbc05740bb9f58264f400acc0b4b4eee8d1b39"
- integrity sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==
+read-installed@~4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067"
+ integrity sha512-O03wg/IYuV/VtnK2h/KXEt9VIbMUFbk3ERG0Iu4FhLZw0EP0T9znqrYDGn6ncbEsXUFaUjiVAWXHzxwt3lhRPQ==
+ dependencies:
+ debuglog "^1.0.1"
+ read-package-json "^2.0.0"
+ readdir-scoped-modules "^1.0.0"
+ semver "2 || 3 || 4 || 5"
+ slide "~1.1.3"
+ util-extend "^1.0.1"
+ optionalDependencies:
+ graceful-fs "^4.1.2"
+
+"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13, read-package-json@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a"
+ integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==
dependencies:
- json-parse-even-better-errors "^4.0.0"
- npm-normalize-package-bin "^4.0.0"
+ glob "^7.1.1"
+ json-parse-even-better-errors "^2.3.0"
+ normalize-package-data "^2.0.0"
+ npm-normalize-package-bin "^1.0.0"
-read@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/read/-/read-4.0.0.tgz#46a989a22dfefe4eab2327e40e40b05eca727370"
- integrity sha512-nbYGT3cec3J5NPUeJia7l72I3oIzMIB6yeNyDqi8CVHr3WftwjrCUqR0j13daoHEMVaZ/rxCpmHKrbods3hI2g==
+read-package-tree@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.npmmirror.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636"
+ integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==
+ dependencies:
+ read-package-json "^2.0.0"
+ readdir-scoped-modules "^1.0.0"
+ util-promisify "^2.1.0"
+
+read@1, read@~1.0.1, read@~1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4"
+ integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==
dependencies:
- mute-stream "^2.0.0"
+ mute-stream "~0.0.4"
-readable-stream@^2.2.2, readable-stream@~2.3.6:
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6:
version "2.3.8"
resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b"
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
@@ -8063,6 +9220,26 @@ readable-stream@^3.4.0, readable-stream@^3.6.0:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
+readable-stream@~1.1.10:
+ version "1.1.14"
+ resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
+ integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
+readdir-scoped-modules@^1.0.0, readdir-scoped-modules@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309"
+ integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==
+ dependencies:
+ debuglog "^1.0.1"
+ dezalgo "^1.0.0"
+ graceful-fs "^4.1.2"
+ once "^1.3.0"
+
readdirp@^3.6.0, readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
@@ -8080,11 +9257,75 @@ real-require@^0.2.0:
resolved "https://registry.npmmirror.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78"
integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==
+reflect.getprototypeof@^1.0.6:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.7.tgz#04311b33a1b713ca5eb7b5aed9950a86481858e5"
+ integrity sha512-bMvFGIUKlc/eSfXNX+aZ+EL95/EgZzuwA0OBPTbZZDEJw/0AkentjMuM1oiRfwHrshqk4RzdgiTg5CcDalXN5g==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.5"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.4"
+ gopd "^1.0.1"
+ which-builtin-type "^1.1.4"
+
regenerator-runtime@^0.14.0:
version "0.14.1"
resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
+regexp.prototype.flags@^1.5.3:
+ version "1.5.3"
+ resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42"
+ integrity sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-errors "^1.3.0"
+ set-function-name "^2.0.2"
+
+registry-auth-token@^3.0.1:
+ version "3.4.0"
+ resolved "https://registry.npmmirror.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e"
+ integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==
+ dependencies:
+ rc "^1.1.6"
+ safe-buffer "^5.0.1"
+
+registry-url@^3.0.3:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942"
+ integrity sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==
+ dependencies:
+ rc "^1.0.1"
+
+request@^2.88.0, request@^2.88.2:
+ version "2.88.2"
+ resolved "https://registry.npmmirror.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
+ integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
+ dependencies:
+ aws-sign2 "~0.7.0"
+ aws4 "^1.8.0"
+ caseless "~0.12.0"
+ combined-stream "~1.0.6"
+ extend "~3.0.2"
+ forever-agent "~0.6.1"
+ form-data "~2.3.2"
+ har-validator "~5.1.3"
+ http-signature "~1.2.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.19"
+ oauth-sign "~0.9.0"
+ performance-now "^2.1.0"
+ qs "~6.5.2"
+ safe-buffer "^5.1.2"
+ tough-cookie "~2.5.0"
+ tunnel-agent "^0.6.0"
+ uuid "^3.3.2"
+
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -8095,6 +9336,11 @@ require-from-string@^2.0.2:
resolved "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
require-package-name@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9"
@@ -8140,7 +9386,7 @@ resolve-pkg-maps@^1.0.0:
resolved "https://registry.npmmirror.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f"
integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==
-resolve@^1.22.3:
+resolve@^1.10.0, resolve@^1.22.3:
version "1.22.8"
resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
@@ -8182,6 +9428,11 @@ retry@0.13.1:
resolved "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658"
integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==
+retry@^0.10.0:
+ version "0.10.1"
+ resolved "https://registry.npmmirror.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4"
+ integrity sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==
+
retry@^0.12.0:
version "0.12.0"
resolved "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
@@ -8197,6 +9448,13 @@ rfdc@^1.2.0, rfdc@^1.3.1, rfdc@^1.4.1:
resolved "https://registry.npmmirror.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca"
integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==
+rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1:
+ version "2.7.1"
+ resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
@@ -8204,13 +9462,6 @@ rimraf@^3.0.2:
dependencies:
glob "^7.1.3"
-rimraf@^5.0.5:
- version "5.0.10"
- resolved "https://registry.npmmirror.com/rimraf/-/rimraf-5.0.10.tgz#23b9843d3dc92db71f96e1a2ce92e39fd2a8221c"
- integrity sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==
- dependencies:
- glob "^10.3.7"
-
roarr@^2.15.3:
version "2.15.4"
resolved "https://registry.npmmirror.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd"
@@ -8262,12 +9513,29 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"
+run-queue@^1.0.0, run-queue@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
+ integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==
+ dependencies:
+ aproba "^1.1.1"
+
rwlock@^5.0.0:
version "5.0.0"
resolved "https://registry.npmmirror.com/rwlock/-/rwlock-5.0.0.tgz#888d6a77a3351cc1a209204ef2ee1722093836cf"
integrity sha512-XgzRqLMfCcm9QfZuPav9cV3Xin5TRcIlp4X/SH3CvB+x5D2AakdlEepfJKDd8ByncvfpcxNWdRZVUl38PS6ZJg==
-safe-buffer@^5.2.1, safe-buffer@~5.2.0:
+safe-array-concat@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb"
+ integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==
+ dependencies:
+ call-bind "^1.0.7"
+ get-intrinsic "^1.2.4"
+ has-symbols "^1.0.3"
+ isarray "^2.0.5"
+
+safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0:
version "5.2.1"
resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
@@ -8277,6 +9545,15 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1:
resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+safe-regex-test@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377"
+ integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==
+ dependencies:
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
+ is-regex "^1.1.4"
+
safe-regex2@^4.0.0:
version "4.0.0"
resolved "https://registry.npmmirror.com/safe-regex2/-/safe-regex2-4.0.0.tgz#5e04d8362cd4884753c8bce9715d4759a5239c0a"
@@ -8289,7 +9566,7 @@ safe-stable-stringify@^2.3.1:
resolved "https://registry.npmmirror.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd"
integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==
-"safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@~2.1.0:
+"safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
version "2.1.2"
resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
@@ -8331,7 +9608,14 @@ semver-compare@^1.0.0:
resolved "https://registry.npmmirror.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==
-semver@^5.6.0:
+semver-diff@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
+ integrity sha512-gL8F8L4ORwsS0+iQ34yCYv///jsOq0ZL7WP55d1HnJ32o7tyFYEFQZQA22mrLIacZdU6xecaBBZ+uEiffGNyXw==
+ dependencies:
+ semver "^5.0.3"
+
+"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1:
version "5.7.2"
resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
@@ -8341,7 +9625,7 @@ semver@^6.2.0, semver@^6.3.1:
resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-semver@^7.1.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3:
+semver@^7.3.2, semver@^7.3.5, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3:
version "7.6.3"
resolved "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
@@ -8353,7 +9637,7 @@ serialize-error@^7.0.1:
dependencies:
type-fest "^0.13.1"
-set-blocking@^2.0.0:
+set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
@@ -8375,6 +9659,23 @@ set-function-length@^1.2.1:
gopd "^1.0.1"
has-property-descriptors "^1.0.2"
+set-function-name@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985"
+ integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==
+ dependencies:
+ define-data-property "^1.1.4"
+ es-errors "^1.3.0"
+ functions-have-names "^1.2.3"
+ has-property-descriptors "^1.0.2"
+
+sha@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/sha/-/sha-3.0.0.tgz#b2f2f90af690c16a3a839a6a6c680ea51fedd1ae"
+ integrity sha512-DOYnM37cNsLNSGIG/zZWch5CKIRNoLdYUQTQlcgkRkoYIUwDYjqDyye16YcDZg/OPdcbUgTKMjc4SY6TB7ZAPw==
+ dependencies:
+ graceful-fs "^4.1.2"
+
shaka-player@^2.4.0:
version "2.5.23"
resolved "https://registry.npmmirror.com/shaka-player/-/shaka-player-2.5.23.tgz#db92d1c6cf2314f0180a2cec11b0e2f2560336f5"
@@ -8382,13 +9683,20 @@ shaka-player@^2.4.0:
dependencies:
eme-encryption-scheme-polyfill "^2.0.1"
-shaka-player@^4.12.3:
- version "4.12.3"
- resolved "https://registry.npmmirror.com/shaka-player/-/shaka-player-4.12.3.tgz#f807e75d4ea699ea4e2d476962c13fc56d76bca3"
- integrity sha512-7lmRM/5YOCXP5SLm2y49D/7t59mM8kSmkqjIrhqi0BQWjEnZCZVvhicz/akJvJAvgNG+WCF1zkLuiKo8YtNdGw==
+shaka-player@^4.12.4:
+ version "4.12.4"
+ resolved "https://registry.npmmirror.com/shaka-player/-/shaka-player-4.12.4.tgz#a22810763f36c7c3313545d4329420b520e6bda2"
+ integrity sha512-r3008gwhjgVZwLCpY8mT/OxLZQcJoqUKptKw7drsB8hV4lf1NhbTXxoNcM83lTS90iNMw2SXvk7vCLxyV/Uscw==
dependencies:
eme-encryption-scheme-polyfill "^2.1.6"
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==
+ dependencies:
+ shebang-regex "^1.0.0"
+
shebang-command@^2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
@@ -8396,6 +9704,11 @@ shebang-command@^2.0.0:
dependencies:
shebang-regex "^3.0.0"
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==
+
shebang-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
@@ -8417,7 +9730,7 @@ shell-path@^3.0.0:
dependencies:
shell-env "^4.0.0"
-side-channel@^1.0.6:
+side-channel@^1.0.4, side-channel@^1.0.6:
version "1.0.6"
resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
@@ -8427,7 +9740,7 @@ side-channel@^1.0.6:
get-intrinsic "^1.2.4"
object-inspect "^1.13.1"
-signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7:
+signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7:
version "3.0.7"
resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
@@ -8444,18 +9757,6 @@ signed-varint@^2.0.0, signed-varint@^2.0.1:
dependencies:
varint "~5.0.0"
-sigstore@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmmirror.com/sigstore/-/sigstore-3.0.0.tgz#d6eadcc6590185a7f1c16184078ce8a9ef6db937"
- integrity sha512-PHMifhh3EN4loMcHCz6l3v/luzgT3za+9f8subGgeMNjbJjzH4Ij/YoX3Gvu+kaouJRIlVdTHHCREADYf+ZteA==
- dependencies:
- "@sigstore/bundle" "^3.0.0"
- "@sigstore/core" "^2.0.0"
- "@sigstore/protobuf-specs" "^0.3.2"
- "@sigstore/sign" "^3.0.0"
- "@sigstore/tuf" "^3.0.0"
- "@sigstore/verify" "^2.0.0"
-
simple-update-notifier@2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb"
@@ -8505,6 +9806,11 @@ slick@^1.12.2:
resolved "https://registry.npmmirror.com/slick/-/slick-1.12.2.tgz#bd048ddb74de7d1ca6915faa4a57570b3550c2d7"
integrity sha512-4qdtOGcBjral6YIBCWJ0ljFSKNLz9KkhbWtuGvUyRowl1kxfuE1x/Z/aJcaiilpb3do9bl5K7/1h9XC5wWpY/A==
+slide@^1.1.6, slide@~1.1.3, slide@~1.1.6:
+ version "1.1.6"
+ resolved "https://registry.npmmirror.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
+ integrity sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==
+
sm-crypto@^0.3.13:
version "0.3.13"
resolved "https://registry.npmmirror.com/sm-crypto/-/sm-crypto-0.3.13.tgz#9615d67f9f2280970c353122e5901ae87d64899a"
@@ -8512,7 +9818,7 @@ sm-crypto@^0.3.13:
dependencies:
jsbn "^1.1.0"
-smart-buffer@^4.0.2, smart-buffer@^4.2.0:
+smart-buffer@^4.0.2, smart-buffer@^4.1.0, smart-buffer@^4.2.0:
version "4.2.0"
resolved "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae"
integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
@@ -8525,6 +9831,14 @@ smooth-scrollbar@^8.8.4:
core-js "^3.6.4"
tslib "^1.10.0"
+socks-proxy-agent@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386"
+ integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==
+ dependencies:
+ agent-base "~4.2.1"
+ socks "~2.3.2"
+
socks-proxy-agent@^7.0.0:
version "7.0.0"
resolved "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6"
@@ -8534,7 +9848,7 @@ socks-proxy-agent@^7.0.0:
debug "^4.3.3"
socks "^2.6.2"
-socks-proxy-agent@^8.0.2, socks-proxy-agent@^8.0.3, socks-proxy-agent@^8.0.4:
+socks-proxy-agent@^8.0.2, socks-proxy-agent@^8.0.4:
version "8.0.4"
resolved "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz#9071dca17af95f483300316f4b063578fa0db08c"
integrity sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==
@@ -8551,6 +9865,14 @@ socks@^2.6.2, socks@^2.8.3:
ip-address "^9.0.5"
smart-buffer "^4.2.0"
+socks@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.npmmirror.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3"
+ integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==
+ dependencies:
+ ip "1.1.5"
+ smart-buffer "^4.1.0"
+
sonic-boom@^4.0.1:
version "4.2.0"
resolved "https://registry.npmmirror.com/sonic-boom/-/sonic-boom-4.2.0.tgz#e59a525f831210fa4ef1896428338641ac1c124d"
@@ -8563,6 +9885,19 @@ sortablejs@^1.15.0:
resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.3.tgz#033668db5ebfb11167d1249ab88e748f27959e29"
integrity sha512-zdK3/kwwAK1cJgy1rwl1YtNTbRmc8qW/+vgXf75A7NHag5of4pyI6uK86ktmQETyWRH7IGaE73uZOOBcGxgqZg==
+sorted-object@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc"
+ integrity sha512-oKAAs26HeTu3qbawzUGCkTOBv/5MRrcuJyRWwbfEnWdpXnXsj+WEM3HTvarV73tMcf9uBEZNZoNDVRL62VLxzA==
+
+sorted-union-stream@~2.1.3:
+ version "2.1.3"
+ resolved "https://registry.npmmirror.com/sorted-union-stream/-/sorted-union-stream-2.1.3.tgz#c7794c7e077880052ff71a8d4a2dbb4a9a638ac7"
+ integrity sha512-RaKskQJZkmVREIwyAFho1RRU+sKjDdg51Crvxg2VxmIyiIrNhPNoJD/by5/pklWBXAZoO6LfAAGv8xd47p9TnQ==
+ dependencies:
+ from2 "^1.3.0"
+ stream-iterate "^1.1.0"
+
source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.0, source-map-js@^1.2.1:
version "1.2.1"
resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
@@ -8602,14 +9937,6 @@ spdx-expression-parse@^3.0.0:
spdx-exceptions "^2.1.0"
spdx-license-ids "^3.0.0"
-spdx-expression-parse@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz#a23af9f3132115465dac215c099303e4ceac5794"
- integrity sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==
- dependencies:
- spdx-exceptions "^2.1.0"
- spdx-license-ids "^3.0.0"
-
spdx-license-ids@^3.0.0:
version "3.0.20"
resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz#e44ed19ed318dd1e5888f93325cee800f0f51b89"
@@ -8629,6 +9956,11 @@ speech-rule-engine@^4.0.6:
wicked-good-xpath "1.3.0"
xmldom-sre "0.1.31"
+split-on-first@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f"
+ integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==
+
split2@^2.2.0:
version "2.2.0"
resolved "https://registry.npmmirror.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493"
@@ -8651,19 +9983,27 @@ sprintf-js@~1.0.2:
resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
-ssri@^10.0.0:
- version "10.0.6"
- resolved "https://registry.npmmirror.com/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5"
- integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==
+sshpk@^1.7.0:
+ version "1.18.0"
+ resolved "https://registry.npmmirror.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028"
+ integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==
dependencies:
- minipass "^7.0.3"
-
-ssri@^12.0.0:
- version "12.0.0"
- resolved "https://registry.npmmirror.com/ssri/-/ssri-12.0.0.tgz#bcb4258417c702472f8191981d3c8a771fee6832"
- integrity sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ bcrypt-pbkdf "^1.0.0"
+ dashdash "^1.12.0"
+ ecc-jsbn "~0.1.1"
+ getpass "^0.1.1"
+ jsbn "~0.1.0"
+ safer-buffer "^2.0.2"
+ tweetnacl "~0.14.0"
+
+ssri@^6.0.0, ssri@^6.0.1, ssri@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.npmmirror.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5"
+ integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==
dependencies:
- minipass "^7.0.3"
+ figgy-pudding "^3.5.1"
ssri@^9.0.0:
version "9.0.1"
@@ -8687,6 +10027,27 @@ stdin-discarder@^0.2.2:
resolved "https://registry.npmmirror.com/stdin-discarder/-/stdin-discarder-0.2.2.tgz#390037f44c4ae1a1ae535c5fe38dc3aba8d997be"
integrity sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==
+stream-each@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
+ integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
+ dependencies:
+ end-of-stream "^1.1.0"
+ stream-shift "^1.0.0"
+
+stream-iterate@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/stream-iterate/-/stream-iterate-1.2.0.tgz#2bd7c77296c1702a46488b8ad41f79865eecd4e1"
+ integrity sha512-QVfGkdBQ8NzsSIiL3rV6AoFFWwMvlg1qpTwVQaMGY5XYThDUuNM4hYSzi8pbKlimTsWyQdaWRZE+jwlPsMiiZw==
+ dependencies:
+ readable-stream "^2.1.5"
+ stream-shift "^1.0.0"
+
+stream-shift@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b"
+ integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==
+
streamx@^2.15.0, streamx@^2.20.0:
version "2.20.2"
resolved "https://registry.npmmirror.com/streamx/-/streamx-2.20.2.tgz#6a8911959d6f307c19781a1d19ecd94b5f042d78"
@@ -8698,6 +10059,11 @@ streamx@^2.15.0, streamx@^2.20.0:
optionalDependencies:
bare-events "^2.2.0"
+strict-uri-encode@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
+ integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==
+
"string-width-cjs@npm:string-width@^4.2.0":
version "4.2.3"
resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
@@ -8707,6 +10073,15 @@ streamx@^2.15.0, streamx@^2.20.0:
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
+string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
@@ -8716,6 +10091,23 @@ streamx@^2.15.0, streamx@^2.20.0:
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
+string-width@^2.0.0, string-width@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+ integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
+string-width@^3.0.0, string-width@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
string-width@^5.0.1, string-width@^5.1.2:
version "5.1.2"
resolved "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
@@ -8734,6 +10126,34 @@ string-width@^7.2.0:
get-east-asian-width "^1.0.0"
strip-ansi "^7.1.0"
+string.prototype.trim@^1.2.9:
+ version "1.2.9"
+ resolved "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4"
+ integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.0"
+ es-object-atoms "^1.0.0"
+
+string.prototype.trimend@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229"
+ integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+
+string.prototype.trimstart@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde"
+ integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+
string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
@@ -8741,6 +10161,11 @@ string_decoder@^1.1.1:
dependencies:
safe-buffer "~5.2.0"
+string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+ integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==
+
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
@@ -8748,6 +10173,11 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
+stringify-package@^1.0.0, stringify-package@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85"
+ integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==
+
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
version "6.0.1"
resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
@@ -8755,6 +10185,27 @@ string_decoder@~1.1.1:
dependencies:
ansi-regex "^5.0.1"
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
+ integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==
+ dependencies:
+ ansi-regex "^3.0.0"
+
+strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ dependencies:
+ ansi-regex "^4.1.0"
+
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
@@ -8769,6 +10220,11 @@ strip-ansi@^7.0.1, strip-ansi@^7.1.0:
dependencies:
ansi-regex "^6.0.1"
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+ integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==
+
strip-final-newline@^2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
@@ -8789,6 +10245,11 @@ strip-json-comments@^3.1.1:
resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+strip-json-comments@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+ integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
+
strip-literal@^2.1.0, strip-literal@^2.1.1:
version "2.1.1"
resolved "https://registry.npmmirror.com/strip-literal/-/strip-literal-2.1.1.tgz#26906e65f606d49f748454a08084e94190c2e5ad"
@@ -8882,11 +10343,6 @@ supports-color@^7.0.0, supports-color@^7.1.0:
dependencies:
has-flag "^4.0.0"
-supports-color@^9.4.0:
- version "9.4.0"
- resolved "https://registry.npmmirror.com/supports-color/-/supports-color-9.4.0.tgz#17bfcf686288f531db3dea3215510621ccb55954"
- integrity sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==
-
supports-hyperlinks@^3.1.0:
version "3.1.0"
resolved "https://registry.npmmirror.com/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz#b56150ff0173baacc15f21956450b61f2b18d3ac"
@@ -8974,7 +10430,20 @@ tar-stream@^3.1.5:
fast-fifo "^1.2.0"
streamx "^2.15.0"
-tar@^6.0.5, tar@^6.1.11, tar@^6.1.12, tar@^6.1.2, tar@^6.2.0, tar@^6.2.1:
+tar@^4.4.10, tar@^4.4.12, tar@^4.4.19:
+ version "4.4.19"
+ resolved "https://registry.npmmirror.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3"
+ integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==
+ dependencies:
+ chownr "^1.1.4"
+ fs-minipass "^1.2.7"
+ minipass "^2.9.0"
+ minizlib "^1.3.3"
+ mkdirp "^0.5.5"
+ safe-buffer "^5.2.1"
+ yallist "^3.1.1"
+
+tar@^6.0.5, tar@^6.1.11, tar@^6.1.12, tar@^6.1.2, tar@^6.2.0:
version "6.2.1"
resolved "https://registry.npmmirror.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a"
integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==
@@ -8986,18 +10455,6 @@ tar@^6.0.5, tar@^6.1.11, tar@^6.1.12, tar@^6.1.2, tar@^6.2.0, tar@^6.2.1:
mkdirp "^1.0.3"
yallist "^4.0.0"
-tar@^7.4.3:
- version "7.4.3"
- resolved "https://registry.npmmirror.com/tar/-/tar-7.4.3.tgz#88bbe9286a3fcd900e94592cda7a22b192e80571"
- integrity sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==
- dependencies:
- "@isaacs/fs-minipass" "^4.0.0"
- chownr "^3.0.0"
- minipass "^7.1.2"
- minizlib "^3.0.1"
- mkdirp "^3.0.1"
- yallist "^5.0.0"
-
tdesign-icons-vue-next@^0.2.2, tdesign-icons-vue-next@^0.2.4:
version "0.2.6"
resolved "https://registry.npmmirror.com/tdesign-icons-vue-next/-/tdesign-icons-vue-next-0.2.6.tgz#964be958cf8145271bf033f7f11093ee8baf5ff0"
@@ -9039,6 +10496,13 @@ temp-file@^3.4.0:
async-exit-hook "^2.0.1"
fs-extra "^10.0.0"
+term-size@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
+ integrity sha512-7dPUZQGy/+m3/wjVz3ZW5dobSoD/02NxJpoXUX0WIyjfVS3l0c+b/+9phIDFA7FHzkYtwtMFgeGZ/Y8jVTeqQQ==
+ dependencies:
+ execa "^0.7.0"
+
text-decoder@^1.1.0:
version "1.2.1"
resolved "https://registry.npmmirror.com/text-decoder/-/text-decoder-1.2.1.tgz#e173f5121d97bfa3ff8723429ad5ba92e1ead67e"
@@ -9073,7 +10537,7 @@ thread-stream@^3.0.0:
dependencies:
real-require "^0.2.0"
-through2@^2.0.2:
+through2@^2.0.0, through2@^2.0.2:
version "2.0.5"
resolved "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
@@ -9081,7 +10545,7 @@ through2@^2.0.2:
readable-stream "~2.3.6"
xtend "~4.0.1"
-through@^2.3.8:
+"through@>=2.2.7 <3", through@^2.3.8:
version "2.3.8"
resolved "https://registry.npmmirror.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
@@ -9093,6 +10557,11 @@ time-span@^5.1.0:
dependencies:
convert-hrtime "^5.0.0"
+timed-out@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
+ integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==
+
timeout-signal@^2.0.0:
version "2.0.0"
resolved "https://registry.npmmirror.com/timeout-signal/-/timeout-signal-2.0.0.tgz#23207ea448d50258bb0defe3beea4a467643abba"
@@ -9147,6 +10616,14 @@ totalist@^3.0.0:
resolved "https://registry.npmmirror.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8"
integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==
+tough-cookie@~2.5.0:
+ version "2.5.0"
+ resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
+ integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
+ dependencies:
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
@@ -9157,11 +10634,6 @@ tree-kill@^1.2.2:
resolved "https://registry.npmmirror.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
-treeverse@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmmirror.com/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8"
- integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==
-
truncate-utf8-bytes@^1.0.0:
version "1.0.2"
resolved "https://registry.npmmirror.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b"
@@ -9184,14 +10656,17 @@ tslib@^2.0.1, tslib@^2.2.0, tslib@^2.3.0:
resolved "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
-tuf-js@^3.0.1:
- version "3.0.1"
- resolved "https://registry.npmmirror.com/tuf-js/-/tuf-js-3.0.1.tgz#e3f07ed3d8e87afaa70607bd1ef801d5c1f57177"
- integrity sha512-+68OP1ZzSF84rTckf3FA95vJ1Zlx/uaXyiiKyPd1pA4rZNkpEvDAKmsu1xUSmbF/chCRYgZ6UZkDwC7PmzmAyA==
+tunnel-agent@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
+ integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
dependencies:
- "@tufjs/models" "3.0.1"
- debug "^4.3.6"
- make-fetch-happen "^14.0.1"
+ safe-buffer "^5.0.1"
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+ integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
@@ -9210,6 +10685,51 @@ type@^2.7.2:
resolved "https://registry.npmmirror.com/type/-/type-2.7.3.tgz#436981652129285cc3ba94f392886c2637ea0486"
integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==
+typed-array-buffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3"
+ integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==
+ dependencies:
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ is-typed-array "^1.1.13"
+
+typed-array-byte-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67"
+ integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==
+ dependencies:
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
+
+typed-array-byte-offset@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz#3fa9f22567700cc86aaf86a1e7176f74b59600f2"
+ integrity sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==
+ dependencies:
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
+ reflect.getprototypeof "^1.0.6"
+
+typed-array-length@^1.0.6:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d"
+ integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==
+ dependencies:
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ is-typed-array "^1.1.13"
+ possible-typed-array-names "^1.0.0"
+ reflect.getprototypeof "^1.0.6"
+
typed-query-selector@^2.12.0:
version "2.12.0"
resolved "https://registry.npmmirror.com/typed-query-selector/-/typed-query-selector-2.12.0.tgz#92b65dbc0a42655fccf4aeb1a08b1dddce8af5f2"
@@ -9235,6 +10755,26 @@ ufo@^1.5.4:
resolved "https://registry.npmmirror.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754"
integrity sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==
+uid-number@0.0.6:
+ version "0.0.6"
+ resolved "https://registry.npmmirror.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+ integrity sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w==
+
+umask@^1.1.0, umask@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d"
+ integrity sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA==
+
+unbox-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
+ integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
+ dependencies:
+ call-bind "^1.0.2"
+ has-bigints "^1.0.2"
+ has-symbols "^1.0.3"
+ which-boxed-primitive "^1.0.2"
+
unbzip2-stream@^1.4.3:
version "1.4.3"
resolved "https://registry.npmmirror.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7"
@@ -9326,6 +10866,13 @@ unimport@^3.13.4:
strip-literal "^2.1.1"
unplugin "^1.16.0"
+unique-filename@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
+ integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
+ dependencies:
+ unique-slug "^2.0.0"
+
unique-filename@^2.0.0:
version "2.0.1"
resolved "https://registry.npmmirror.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2"
@@ -9333,19 +10880,12 @@ unique-filename@^2.0.0:
dependencies:
unique-slug "^3.0.0"
-unique-filename@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmmirror.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea"
- integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==
- dependencies:
- unique-slug "^4.0.0"
-
-unique-filename@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/unique-filename/-/unique-filename-4.0.0.tgz#a06534d370e7c977a939cd1d11f7f0ab8f1fed13"
- integrity sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==
+unique-slug@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
+ integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
dependencies:
- unique-slug "^5.0.0"
+ imurmurhash "^0.1.4"
unique-slug@^3.0.0:
version "3.0.0"
@@ -9354,19 +10894,12 @@ unique-slug@^3.0.0:
dependencies:
imurmurhash "^0.1.4"
-unique-slug@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3"
- integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==
- dependencies:
- imurmurhash "^0.1.4"
-
-unique-slug@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmmirror.com/unique-slug/-/unique-slug-5.0.0.tgz#ca72af03ad0dbab4dad8aa683f633878b1accda8"
- integrity sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==
+unique-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a"
+ integrity sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==
dependencies:
- imurmurhash "^0.1.4"
+ crypto-random-string "^1.0.0"
universalify@^0.1.0:
version "0.1.2"
@@ -9378,6 +10911,11 @@ universalify@^2.0.0:
resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
+unpipe@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+ integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
+
unplugin-auto-import@^0.18.6:
version "0.18.6"
resolved "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.18.6.tgz#6848bef1742bc457f42cf67a13e824f69debc889"
@@ -9429,6 +10967,11 @@ untyped@^1.5.1:
mri "^1.2.0"
scule "^1.3.0"
+unzip-response@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
+ integrity sha512-N0XH6lqDtFH84JxptQoZYmloF4nzrQqqrAymNj+/gW60AO2AZgOcf4O/nUXJcYfyQkqvMo9lSupBZmmgvuVXlw==
+
update-browserslist-db@^1.1.1:
version "1.1.1"
resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5"
@@ -9437,6 +10980,22 @@ update-browserslist-db@^1.1.1:
escalade "^3.2.0"
picocolors "^1.1.0"
+update-notifier@^2.3.0, update-notifier@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.npmmirror.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6"
+ integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==
+ dependencies:
+ boxen "^1.2.1"
+ chalk "^2.0.1"
+ configstore "^3.0.0"
+ import-lazy "^2.1.0"
+ is-ci "^1.0.10"
+ is-installed-globally "^0.1.0"
+ is-npm "^1.0.0"
+ latest-version "^3.0.0"
+ semver-diff "^2.0.0"
+ xdg-basedir "^3.0.0"
+
uri-js@^4.2.2:
version "4.4.1"
resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
@@ -9449,6 +11008,13 @@ url-join@^5.0.0:
resolved "https://registry.npmmirror.com/url-join/-/url-join-5.0.0.tgz#c2f1e5cbd95fa91082a93b58a1f42fecb4bdbcf1"
integrity sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==
+url-parse-lax@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
+ integrity sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==
+ dependencies:
+ prepend-http "^1.0.1"
+
url-parse@^1.5.10:
version "1.5.10"
resolved "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1"
@@ -9472,11 +11038,28 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+util-extend@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f"
+ integrity sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==
+
+util-promisify@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53"
+ integrity sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==
+ dependencies:
+ object.getownpropertydescriptors "^2.0.3"
+
uuid@^11.0.3:
version "11.0.3"
resolved "https://registry.npmmirror.com/uuid/-/uuid-11.0.3.tgz#248451cac9d1a4a4128033e765d137e2b2c49a3d"
integrity sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==
+uuid@^3.3.2, uuid@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
+ integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
+
uuid@^8.3.2:
version "8.3.2"
resolved "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
@@ -9492,7 +11075,7 @@ valid-data-url@^3.0.0:
resolved "https://registry.npmmirror.com/valid-data-url/-/valid-data-url-3.0.1.tgz#826c1744e71b5632e847dd15dbd45b9fb38aa34f"
integrity sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==
-validate-npm-package-license@^3.0.4:
+validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4:
version "3.0.4"
resolved "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
@@ -9500,10 +11083,12 @@ validate-npm-package-license@^3.0.4:
spdx-correct "^3.0.0"
spdx-expression-parse "^3.0.0"
-validate-npm-package-name@^6.0.0:
- version "6.0.0"
- resolved "https://registry.npmmirror.com/validate-npm-package-name/-/validate-npm-package-name-6.0.0.tgz#3add966c853cfe36e0e8e6a762edd72ae6f1d6ac"
- integrity sha512-d7KLgL1LD3U3fgnvWEY1cQXoO/q6EQ1BSz48Sa149V/5zVTAbgmZIpyI8TRi6U9/JNyeYLlTKsEMPtLC27RFUg==
+validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e"
+ integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==
+ dependencies:
+ builtins "^1.0.3"
validator@^13.9.0:
version "13.12.0"
@@ -9520,6 +11105,15 @@ varint@^5.0.0, varint@~5.0.0:
resolved "https://registry.npmmirror.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4"
integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==
+verror@1.10.0:
+ version "1.10.0"
+ resolved "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
+ integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==
+ dependencies:
+ assert-plus "^1.0.0"
+ core-util-is "1.0.2"
+ extsprintf "^1.2.0"
+
verror@^1.10.0:
version "1.10.1"
resolved "https://registry.npmmirror.com/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb"
@@ -9584,10 +11178,10 @@ vite-svg-loader@^5.1.0:
dependencies:
svgo "^3.0.2"
-vite@^6.0.1:
- version "6.0.1"
- resolved "https://registry.npmmirror.com/vite/-/vite-6.0.1.tgz#24c9caf24998f0598de37bed67e50ec5b9dfeaf0"
- integrity sha512-Ldn6gorLGr4mCdFnmeAOLweJxZ34HjKnDm4HGo6P66IEqTxQb36VEdFJQENKxWjupNfoIjvRUnswjn1hpYEpjQ==
+vite@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.npmmirror.com/vite/-/vite-6.0.3.tgz#cc01f403e326a9fc1e064235df8a6de084c8a491"
+ integrity sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==
dependencies:
esbuild "^0.24.0"
postcss "^8.4.49"
@@ -9641,12 +11235,7 @@ vue@^3.5.13:
"@vue/server-renderer" "3.5.13"
"@vue/shared" "3.5.13"
-walk-up-path@^3.0.1:
- version "3.0.1"
- resolved "https://registry.npmmirror.com/walk-up-path/-/walk-up-path-3.0.1.tgz#c8d78d5375b4966c717eb17ada73dbd41490e886"
- integrity sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==
-
-wcwidth@^1.0.1:
+wcwidth@^1.0.0, wcwidth@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==
@@ -9735,7 +11324,63 @@ whatwg-url@^5.0.0:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
-which@^1.2.14, which@^1.3.1:
+which-boxed-primitive@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.1.0.tgz#2d850d6c4ac37b95441a67890e19f3fda8b6c6d9"
+ integrity sha512-Ei7Miu/AXe2JJ4iNF5j/UphAgRoma4trE6PtisM09bPygb3egMH3YLW/befsWb1A1AxvNSFidOFTB18XtnIIng==
+ dependencies:
+ is-bigint "^1.1.0"
+ is-boolean-object "^1.2.0"
+ is-number-object "^1.1.0"
+ is-string "^1.1.0"
+ is-symbol "^1.1.0"
+
+which-builtin-type@^1.1.4:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/which-builtin-type/-/which-builtin-type-1.2.0.tgz#58042ac9602d78a6d117c7e811349df1268ba63c"
+ integrity sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==
+ dependencies:
+ call-bind "^1.0.7"
+ function.prototype.name "^1.1.6"
+ has-tostringtag "^1.0.2"
+ is-async-function "^2.0.0"
+ is-date-object "^1.0.5"
+ is-finalizationregistry "^1.1.0"
+ is-generator-function "^1.0.10"
+ is-regex "^1.1.4"
+ is-weakref "^1.0.2"
+ isarray "^2.0.5"
+ which-boxed-primitive "^1.0.2"
+ which-collection "^1.0.2"
+ which-typed-array "^1.1.15"
+
+which-collection@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0"
+ integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==
+ dependencies:
+ is-map "^2.0.3"
+ is-set "^2.0.3"
+ is-weakmap "^2.0.2"
+ is-weakset "^2.0.3"
+
+which-module@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409"
+ integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==
+
+which-typed-array@^1.1.14, which-typed-array@^1.1.15:
+ version "1.1.16"
+ resolved "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.16.tgz#db4db429c4706feca2f01677a144278e4a8c216b"
+ integrity sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==
+ dependencies:
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-tostringtag "^1.0.2"
+
+which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1:
version "1.3.1"
resolved "https://registry.npmmirror.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
@@ -9749,37 +11394,42 @@ which@^2.0.1, which@^2.0.2:
dependencies:
isexe "^2.0.0"
-which@^4.0.0:
- version "4.0.0"
- resolved "https://registry.npmmirror.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a"
- integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==
- dependencies:
- isexe "^3.1.1"
-
-which@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmmirror.com/which/-/which-5.0.0.tgz#d93f2d93f79834d4363c7d0c23e00d07c466c8d6"
- integrity sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==
- dependencies:
- isexe "^3.1.1"
-
wicked-good-xpath@1.3.0:
version "1.3.0"
resolved "https://registry.npmmirror.com/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz#81b0e95e8650e49c94b22298fff8686b5553cf6c"
integrity sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==
-wide-align@^1.1.5:
+wide-align@^1.1.0, wide-align@^1.1.5:
version "1.1.5"
resolved "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3"
integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==
dependencies:
string-width "^1.0.2 || 2 || 3 || 4"
+widest-line@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc"
+ integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==
+ dependencies:
+ string-width "^2.1.1"
+
word-wrap@^1.2.5:
version "1.2.5"
resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
+worker-farm@^1.6.0, worker-farm@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.npmmirror.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
+ integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
+ dependencies:
+ errno "~0.1.7"
+
+workerpool@^9.2.0:
+ version "9.2.0"
+ resolved "https://registry.npmmirror.com/workerpool/-/workerpool-9.2.0.tgz#f74427cbb61234708332ed8ab9cbf56dcb1c4371"
+ integrity sha512-PKZqBOCo6CYkVOwAxWxQaSF2Fvb5Iv2fCeTP7buyWI2GiynWr46NcXSgK/idoV6e60dgCBfgYc+Un3HMvmqP8w==
+
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
version "7.0.0"
resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
@@ -9789,6 +11439,15 @@ word-wrap@^1.2.5:
string-width "^4.1.0"
strip-ansi "^6.0.0"
+wrap-ansi@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
+ integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
+ dependencies:
+ ansi-styles "^3.2.0"
+ string-width "^3.0.0"
+ strip-ansi "^5.0.0"
+
wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
@@ -9812,6 +11471,15 @@ wrappy@1:
resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
+write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.3:
+ version "2.4.3"
+ resolved "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481"
+ integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+ imurmurhash "^0.1.4"
+ signal-exit "^3.0.2"
+
write-file-atomic@^5.0.1:
version "5.0.1"
resolved "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7"
@@ -9820,14 +11488,6 @@ write-file-atomic@^5.0.1:
imurmurhash "^0.1.4"
signal-exit "^4.0.1"
-write-file-atomic@^6.0.0:
- version "6.0.0"
- resolved "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-6.0.0.tgz#e9c89c8191b3ef0606bc79fb92681aa1aa16fa93"
- integrity sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ==
- dependencies:
- imurmurhash "^0.1.4"
- signal-exit "^4.0.1"
-
ws@^8.18.0:
version "8.18.0"
resolved "https://registry.npmmirror.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc"
@@ -9838,6 +11498,11 @@ wxmp-rsa@^2.1.0:
resolved "https://registry.npmmirror.com/wxmp-rsa/-/wxmp-rsa-2.1.0.tgz#3c6603e1ded2587506ef273527a8d04aaa96da51"
integrity sha512-VbWMJ+vf8t7G93sjkqjCn5yGy/Si3M8uD6OFebqjJWJ1R0WCyle7X6SNia7WWG6Qe1F2/OWxhbcSGA6ebUBwIA==
+xdg-basedir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4"
+ integrity sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==
+
xgplayer-dash@^3.0.20:
version "3.0.20"
resolved "https://registry.npmmirror.com/xgplayer-dash/-/xgplayer-dash-3.0.20.tgz#2ae67223c8230bb071dbe0aa48f24c0b79120b51"
@@ -9964,12 +11629,22 @@ xtend@~4.0.1:
resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+y18n@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"
+ integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==
+
y18n@^5.0.5:
version "5.0.8"
resolved "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
-yallist@^3.0.2:
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+ integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==
+
+yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1:
version "3.1.1"
resolved "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
@@ -9979,16 +11654,19 @@ yallist@^4.0.0:
resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-yallist@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmmirror.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533"
- integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==
-
yaml@^1.10.0:
version "1.10.2"
resolved "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+yargs-parser@^15.0.1:
+ version "15.0.3"
+ resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-15.0.3.tgz#316e263d5febe8b38eef61ac092b33dfcc9b1115"
+ integrity sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
yargs-parser@^20.2.2:
version "20.2.9"
resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
@@ -9999,6 +11677,23 @@ yargs-parser@^21.1.1:
resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
+yargs@^14.2.3:
+ version "14.2.3"
+ resolved "https://registry.npmmirror.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414"
+ integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==
+ dependencies:
+ cliui "^5.0.0"
+ decamelize "^1.2.0"
+ find-up "^3.0.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^3.0.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^15.0.1"
+
yargs@^16.2.0:
version "16.2.0"
resolved "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
From 3c7df482a470dffdd9c200a93175354ef9b99b65 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Fri, 6 Dec 2024 18:22:38 +0800
Subject: [PATCH 010/175] [bug] fix hiker req res not standard
---
src/main/utils/hiker/syncFetch.ts | 4 ++--
src/main/utils/hiker/syncRequest.ts | 12 +++++++++++-
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/src/main/utils/hiker/syncFetch.ts b/src/main/utils/hiker/syncFetch.ts
index d4c9d9e13..34720f9d0 100644
--- a/src/main/utils/hiker/syncFetch.ts
+++ b/src/main/utils/hiker/syncFetch.ts
@@ -59,10 +59,10 @@ const toString = (val: any): string => {
}
};
-const serialize2dict = (headers) => {
+const serialize2dict = (headers: { [key: string]: any } = {}) => {
const headersDict = {};
for (const [key, value] of headers.entries()) {
- headersDict[key] = value;
+ headersDict[key] = value.split(';');
}
return headersDict;
};
diff --git a/src/main/utils/hiker/syncRequest.ts b/src/main/utils/hiker/syncRequest.ts
index 48fc9e418..bdefead72 100644
--- a/src/main/utils/hiker/syncRequest.ts
+++ b/src/main/utils/hiker/syncRequest.ts
@@ -21,7 +21,7 @@ const getTimeout = (timeout: number | undefined | null) => {
return baseTimeout;
};
-const toTitleCase = (str) => {
+const toTitleCase = (str: string) => {
return str
.split('-')
.map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
@@ -58,6 +58,14 @@ const toString = (val: any): string => {
}
};
+const serialize2dict = (headers: { [key: string]: any } = {}) => {
+ const headersDict = {};
+ for (const [key, value] of Object.entries(headers)) {
+ headersDict[key] = value.split(';');
+ }
+ return headersDict;
+};
+
type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD';
interface RequestOptions {
@@ -143,6 +151,8 @@ const fetch = (url: string, options: RequestOptions = {}) => {
res.getBody = function (encoding: BufferEncoding | undefined) {
return encoding ? this.body.toString(encoding) : this.body;
};
+ // @ts-ignore 重写请求头
+ res.headers = serialize2dict(res.headers);
if (options?.onlyHeaders) {
return toString(res.headers);
From 7920401dcb4fcee2ef616d881e6599d918d86e7d Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Fri, 6 Dec 2024 20:49:53 +0800
Subject: [PATCH 011/175] [bug] fix hiker req not stanard
---
.../site/cms/adapter/drpy/worker-test-case.ts | 67 +++++++++----------
src/main/utils/hiker/syncFetch.ts | 26 +++----
src/main/utils/hiker/syncRequest.ts | 20 +++---
3 files changed, 51 insertions(+), 62 deletions(-)
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/drpy/worker-test-case.ts b/src/main/core/server/routes/v1/site/cms/adapter/drpy/worker-test-case.ts
index e4d77ac7b..e162d0c23 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/drpy/worker-test-case.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/drpy/worker-test-case.ts
@@ -11,22 +11,36 @@ import syncFetch from 'sync-fetch';
import syncRequest from 'sync-request';
process.on('message', (message: { [key: string]: any }) => {
- // const r1 = fetch('http://localhost:5173/api/v1/system/status', { onlyHeaders: true });
- // console.log('fetch-onlyHeaders', r1);
- // const r2 = fetch('http://localhost:5173/api/v1/system/status', { withHeaders: true });
- // console.log('fetch-withHeaders', r2);
- // const r3 = fetch('https://www.sourcepower.top/api/v1/user/login', {
- // withStatusCode: true,
- // timeout: 50000,
- // method: 'POST',
- // body: { email: 'hiram@catni.cn', password: '994200' },
- // });
- // console.log('fetch-withStatusCode+post', r3);
- // console.log(
- // JSON.stringify({
- // 'content-type': 'application/json',
- // }),
- // );
+ const r1 = fetch('http://localhost:5173/api/v1/system/status', { onlyHeaders: true });
+ console.log('fetch-onlyHeaders', r1);
+ const r2 = fetch('http://localhost:5173/api/v1/system/status', { withHeaders: true });
+ console.log('fetch-withHeaders', JSON.parse(r2));
+ const r3 = fetch('https://www.sourcepower.top/api/v1/user/login', {
+ withStatusCode: true,
+ timeout: 50000,
+ method: 'POST',
+ body: { email: 'hiram@catni.cn', password: 'xxxxxx' },
+ });
+ console.log('fetch-withStatusCode+post', JSON.parse(r3));
+ const r4 = fetch('http://localhost:5173/api/v1/system/status', { toHex: true });
+ console.log('fetch-toHex', JSON.parse(r4));
+ const r5 = fetchPC('http://localhost:5173/api/v1/system/status');
+ console.log('fetchPC', JSON.parse(r5));
+ const r6 = postPC('https://www.sourcepower.top/api/v1/user/login', {
+ withStatusCode: true,
+ body: { email: 'hiram@catni.cn', password: 'xxxxxx' },
+ });
+ console.log('postPC', JSON.parse(r6));
+ const r7 = fetchCookie('https://x.mbd.pub/api/new_count');
+ console.log('fetchCookie', JSON.parse(r7));
+ const r8 = convertBase64Image('https://static-o.oss-cn-shenzhen.aliyuncs.com/sukoutu/icon/sukoutuVip.png');
+ console.log('convertBase64Image', r8);
+ const r9 = batchFetch([
+ { url: 'http://localhost:5173/api/v1/system/status' },
+ { url: 'http://localhost:5173/api/v1/system/status' },
+ ]);
+ console.log('batchFetch', r9);
+
// const test = syncFetch('https://www.sourcepower.top/api/v1/user/login', {
// method: 'POST',
// headers: {
@@ -35,26 +49,7 @@ process.on('message', (message: { [key: string]: any }) => {
// body: JSON.stringify({ email: 'hiram@catni.cn', password: '994200' }),
// });
// console.log(test.json());
- // const r4 = fetch('http://localhost:5173/api/v1/system/status', { toHex: true });
- // console.log('fetch-toHex', r4);
- // const r5 = fetchPC('http://localhost:5173/api/v1/system/status');
- // console.log('fetchPC', r5);
- // const r6 = postPC('https://www.sourcepower.top/api/v1/user/login', {
- // withStatusCode: true,
- // body: { email: 'hiram@catni.cn', password: '994200' },
- // });
- // console.log('postPC', r6);
- // const r7 = fetchCookie('https://x.mbd.pub/api/new_count');
- // console.log('fetchCookie', r7);
- // const r8 = convertBase64Image('https://static-o.oss-cn-shenzhen.aliyuncs.com/sukoutu/icon/sukoutuVip.png');
- // console.log('convertBase64Image', r8);
- // const r9 = batchFetch([
- // { url: 'http://localhost:5173/api/v1/system/status' },
- // {
- // url: 'http://localhost:5173/api/v1/system/status',
- // },
- // ]);
- // console.log('batchFetch', r9);
+
// let url = 'https://www.sourcepower.top/api/v1/system/info?' + Math.random();
// let t1 = new Date().getTime();
// syncFetch(url, {});
diff --git a/src/main/utils/hiker/syncFetch.ts b/src/main/utils/hiker/syncFetch.ts
index 34720f9d0..840095fed 100644
--- a/src/main/utils/hiker/syncFetch.ts
+++ b/src/main/utils/hiker/syncFetch.ts
@@ -59,14 +59,6 @@ const toString = (val: any): string => {
}
};
-const serialize2dict = (headers: { [key: string]: any } = {}) => {
- const headersDict = {};
- for (const [key, value] of headers.entries()) {
- headersDict[key] = value.split(';');
- }
- return headersDict;
-};
-
type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD';
interface RequestOptions {
@@ -144,23 +136,22 @@ const fetch = (url: string, options: RequestOptions = {}) => {
console.warn(`[request] url: ${url} | method: ${method} | options: ${JSON.stringify(config)}`);
let res = syncFetch(url, config);
- res.formatHeaders = serialize2dict(res.headers);
res.getBody = function (encoding: BufferEncoding | undefined) {
return encoding ? Buffer.from(res.buffer()).toString(encoding) : res.buffer();
};
if (options?.onlyHeaders) {
- return toString(res.formatHeaders);
+ return res.headers.raw();
}
if (options?.withHeaders) {
- return toString({ headers: res.formatHeaders, body: res.getBody(charset) });
+ return toString({ headers: res.headers.raw(), body: res.getBody(charset) });
}
if (options?.withStatusCode) {
- return toString({ headers: res.formatHeaders, body: res.getBody(charset), statusCode: res.status });
+ return toString({ headers: res.headers.raw(), body: res.getBody(charset), statusCode: res.status });
}
if (options?.toHex) {
return toString({
- headers: res.formatHeaders,
+ headers: res.headers.raw(),
body: Buffer.from(res.getBody()).toString('hex'),
statusCode: res.status,
});
@@ -179,11 +170,10 @@ const fetchCookie = (url: string, options: RequestOptions = {}) => {
if (options?.withStatusCode) delete options.withStatusCode;
if (options?.toHex) delete options.toHex;
options = Object.assign(options, { onlyHeaders: true });
- let header = fetch(url, options) || '{}';
- const formatHeader = JSON.parse(header);
- const setCk = Object.keys(formatHeader).find((it) => it.toLowerCase() === 'set-cookie');
- const cookie = setCk ? formatHeader[setCk] : '';
- return cookie;
+ const header = fetch(url, options) || {};
+ const setCk = Object.keys(header).find((it) => it.toLowerCase() === 'set-cookie');
+ const cookie = setCk ? header[setCk] : '[]';
+ return toString(cookie);
};
const post = (url: string, options: RequestOptions = {}) => {
diff --git a/src/main/utils/hiker/syncRequest.ts b/src/main/utils/hiker/syncRequest.ts
index bdefead72..dfb3d8d9f 100644
--- a/src/main/utils/hiker/syncRequest.ts
+++ b/src/main/utils/hiker/syncRequest.ts
@@ -60,8 +60,13 @@ const toString = (val: any): string => {
const serialize2dict = (headers: { [key: string]: any } = {}) => {
const headersDict = {};
+
for (const [key, value] of Object.entries(headers)) {
- headersDict[key] = value.split(';');
+ if (key.toLowerCase() === 'set-cookie') {
+ headersDict[key] = Array.isArray(value) ? value : [value];
+ } else {
+ headersDict[key] = [value];
+ }
}
return headersDict;
};
@@ -155,7 +160,7 @@ const fetch = (url: string, options: RequestOptions = {}) => {
res.headers = serialize2dict(res.headers);
if (options?.onlyHeaders) {
- return toString(res.headers);
+ return res.headers;
}
if (options?.withHeaders) {
return toString({ headers: res.headers, body: res.getBody(charset) });
@@ -184,11 +189,10 @@ const fetchCookie = (url: string, options: RequestOptions = {}) => {
if (options?.withStatusCode) delete options.withStatusCode;
if (options?.toHex) delete options.toHex;
options = Object.assign(options, { onlyHeaders: true });
- let header = fetch(url, options) || '{}';
- const formatHeader = JSON.parse(header);
- const setCk = Object.keys(formatHeader).find((it) => it.toLowerCase() === 'set-cookie');
- const cookie = setCk ? formatHeader[setCk] : '';
- return cookie;
+ const header = fetch(url, options) || '{}';
+ const setCk = Object.keys(header).find((it) => it.toLowerCase() === 'set-cookie');
+ const cookie = setCk ? header[setCk] : '[]';
+ return toString(cookie);
};
const post = (url: string, options: RequestOptions = {}) => {
@@ -221,7 +225,7 @@ const convertBase64Image = (url: string, options: RequestOptions = {}) => {
if (options?.toHex) delete options.toHex;
if (options?.onlyHeaders) delete options.onlyHeaders;
options = Object.assign(options, { toHex: true });
- const res = fetch(url, options) || '{"body":""}';
+ const res = (fetch(url, options) as string) || '{"body":""}';
const formatRes = JSON.parse(res);
const hexStr = formatRes.body;
const base64String = Buffer.from(hexStr, 'hex').toString('base64');
From 4d4d7489ee0a34e37d41d566b90e97102f134896 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sat, 7 Dec 2024 00:41:17 +0800
Subject: [PATCH 012/175] [optimize] plugin
---
.../server/routes/v1/plugin/utils/adapter.ts | 273 ++++++++----------
src/main/core/server/routes/v1/plugin/work.ts | 9 -
.../lab/components/pluginCenter/index.vue | 2 +-
3 files changed, 123 insertions(+), 161 deletions(-)
diff --git a/src/main/core/server/routes/v1/plugin/utils/adapter.ts b/src/main/core/server/routes/v1/plugin/utils/adapter.ts
index 8e7ccf3f4..7ee1bb4d0 100644
--- a/src/main/core/server/routes/v1/plugin/utils/adapter.ts
+++ b/src/main/core/server/routes/v1/plugin/utils/adapter.ts
@@ -1,8 +1,7 @@
import npm from 'npm';
-import JSON5 from 'json5';
import { join, resolve } from 'path';
import workerpool from 'workerpool';
-import request from '@main/utils/request';
+import { JsonDB, Config } from 'node-json-db';
import logger from '@main/core/logger';
import { fileExist, fileState, readJson, readFile, saveJson, createDir } from '@main/utils/hiker/file';
@@ -28,6 +27,8 @@ class AdapterHandler {
public pluginPath: string; // 插件信息配置文件路径
public pluginList: any[] = []; // 插件列表
public syncModules = new Map();
+ public dbTable: string = '/plugin';
+ public db: JsonDB;
private pluginCaches: Record = {}; // 缓存插件版本
readonly registry: string; // 插件源地址
@@ -40,19 +41,19 @@ class AdapterHandler {
this.baseDir = options.baseDir;
this.pkgPath = join(this.baseDir, 'package.json');
this.pluginPath = join(this.baseDir, 'plugin.json');
- this.registry = options.registry || 'https://registry.npmmirror.com/';
+ this.registry = options?.registry || 'https://registry.npmmirror.com/';
// 初始化插件目录
if (!fileExist(this.baseDir)) createDir(this.baseDir);
- if (!fileExist(this.pkgPath) || fileState(this.pkgPath) !== 'file')
- saveJson(this.pkgPath, { dependencies: {}, devDependencies: {} });
- if (!fileExist(this.pluginPath) || fileState(this.pluginPath) !== 'file') saveJson(this.pluginPath, []);
+ if (!fileExist(this.pkgPath) || fileState(this.pkgPath) !== 'file') saveJson(this.pkgPath, { dependencies: {} });
+ if (!fileExist(this.pluginPath) || fileState(this.pluginPath) !== 'file') saveJson(this.pluginPath, { plugin: [] });
// 初始化插件列表
- this.pluginList = this.readJsonFile(this.pluginPath) || [];
+ this.db = new JsonDB(new Config(this.pluginPath, true, true, '/'));
+ // 启动插件程序
(async () => {
- let plugins = this.fetchList();
+ let plugins = await this.fetchList();
plugins = plugins.filter((p) => p.status === 'RUNNING');
try {
await this.start(plugins);
@@ -91,47 +92,24 @@ class AdapterHandler {
}
}
- /**
- * 深度克隆对象
- * @private
- * @param {*} obj
- * @returns {*}
- */
- private deepClone(obj: T): T {
- try {
- return JSON5.parse(JSON5.stringify(obj));
- } catch (err: any) {
- logger.error(`[plugin][deepClone][error] ${err.message}`);
- throw new Error(`Failed to deepClone`);
- }
- }
-
- fetchList(plugins: any[] = []) {
- const infoList: AdapterInfo[] = [];
- const currentPlugins = this.pluginList;
- const namePlugins = plugins.map((plugin) => plugin.name);
-
- for (let plugin of currentPlugins) {
- const readmePath = join(this.baseDir, 'node_modules', plugin.name, 'README.md');
- if (fileExist(readmePath) && fileState(readmePath) === 'file') plugin.readme = readFile(readmePath);
- const pluginInfo: AdapterInfo = {
- type: plugin?.pluginType || 'system',
- name: plugin?.name || '',
- pluginName: plugin?.pluginName || '',
- author: plugin?.author || '',
- description: plugin?.description || '',
- readme: plugin?.readme || '',
- main: plugin?.main || '',
- version: plugin?.version || '0.0.0',
- logo: plugin?.logo || '',
- status: plugin?.status || 'STOPED',
- };
+ async fetchList(plugins: any[] = []) {
+ let infoList: AdapterInfo[] = [];
- if (plugins.length > 0) {
- if (namePlugins.includes(plugin.name)) {
+ try {
+ if (plugins.length === 0) {
+ infoList = await this.db.getData(`${this.dbTable}`);
+ } else {
+ for (let plugin of plugins) {
+ const index = await this.db.getIndex(`${this.dbTable}`, plugin, 'name');
+ if (index === -1) continue;
+
+ const pluginInfo = await this.db.getData(`${this.dbTable}[${index}]`);
infoList.push(pluginInfo);
}
- } else infoList.push(pluginInfo);
+ }
+ } catch (err: any) {
+ infoList = [];
+ logger.error(`[plugin][fetchList][error] ${err.message}`);
}
return infoList;
@@ -143,13 +121,13 @@ class AdapterHandler {
* @memberof PluginHandler
*/
async info(plugins: any[]) {
- let infoList: AdapterInfo[] = [];
try {
- infoList = this.fetchList(plugins);
+ const res = await this.fetchList([...new Set(plugins.map((p) => p.name))]);
+ return res;
} catch (err: any) {
logger.error(`[plugin][getAdapterInfo][error] ${err.message}`);
} finally {
- return infoList;
+ return [];
}
}
@@ -159,36 +137,61 @@ class AdapterHandler {
* @memberof AdapterHandler
*/
async install(plugins: any[]) {
- const currentPlugins = this.deepClone(this.pluginList);
+ plugins = plugins.map((plugin) => {
+ const updatedPlugin = { ...plugin };
+ updatedPlugin.pluginName = plugin.name;
+ return updatedPlugin;
+ });
for (let plugin of plugins) {
try {
- const cmd = plugin.isDev ? 'link' : 'install';
- const module = resolve(this.baseDir, 'modules', plugin.name);
+ // 1.默认参数
+ const pkgInfo = this.readJsonFile(join(this.baseDir, 'modules', plugin.pluginName, 'package.json'));
+ if (!pkgInfo) continue;
+ plugin.name = pkgInfo.name;
+
+ // 2.停止插件
+ const index = await this.db.getIndex(`${this.dbTable}`, plugin.name, 'name');
+ if (index > -1) await this.stop([plugin]);
+
+ // 3.安装插件
+ const module = resolve(this.baseDir, 'modules', plugin.pluginName);
if (!fileExist(module) || fileState(module) !== 'dir') continue;
+ const cmd = plugin.isDev ? 'link' : 'install';
await this.execCommand(cmd, [module]);
- const pkg = this.readJsonFile(join(this.baseDir, 'modules', plugin.name, 'package.json'));
- let info;
+ // 4.插件参数
if (plugin.isDev) {
- const pluginPath = resolve(this.baseDir, 'node_modules', pkg.name);
+ const pluginPath = join(this.baseDir, 'node_modules', plugin.name);
const pluginInfo = this.readJsonFile(join(pluginPath, 'package.json'));
- info = { ...plugin, ...pluginInfo, pluginName: pkg.name };
+ const readmePath = join(this.baseDir, 'node_modules', plugin.name, 'README.md');
+ if (fileExist(readmePath) && fileState(readmePath) === 'file') plugin.readme = readFile(readmePath);
+
+ plugin = { ...plugin, ...pluginInfo };
}
- const pluginIndex1 = plugins.findIndex((p) => p.name === plugin.name);
- plugins[pluginIndex1].name = pkg.name;
- const pluginIndex2 = currentPlugins.findIndex((p) => p.name === pkg.name);
- if (pluginIndex2 === -1) currentPlugins.unshift(info);
+ const data = {
+ type: plugin?.pluginType || 'system',
+ name: plugin?.name || '',
+ pluginName: plugin?.pluginName || '',
+ author: plugin?.author || '',
+ description: plugin?.description || '',
+ readme: plugin?.readme || '',
+ main: plugin?.main || '',
+ version: plugin?.version || '0.0.0',
+ logo: plugin?.logo || '',
+ status: plugin?.status || 'STOPED',
+ };
+
+ if (index > -1) await this.db.push(`${this.dbTable}[${index}]`, data, true);
+ else await this.db.push(`${this.dbTable}[]`, data);
} catch (err: any) {
logger.error(`[plugin][install][error] ${err.message}`);
}
}
- this.pluginList = currentPlugins;
- this.writeJsonFile(this.pluginPath, this.pluginList);
-
- return this.fetchList(plugins);
+ const res = await this.fetchList([...new Set(plugins.map((p) => p.name))]);
+ return res;
}
/**
@@ -197,96 +200,73 @@ class AdapterHandler {
* @memberof AdapterHandler
*/
async uninstall(plugins: any[]) {
- const currentPlugins = this.deepClone(this.pluginList);
-
for (const plugin of plugins) {
try {
- const cmd = plugin.isDev ? 'unlink' : 'uninstall';
- const module = join(this.baseDir, 'node_modules', plugin.name);
- if (!fileExist(module) || fileState(module) !== 'dir') continue;
+ const index = await this.db.getIndex(`${this.dbTable}`, plugin.name, 'name');
+ if (index === -1) continue;
+ // 停止插件
await this.stop([plugin]);
+
+ // 卸载插件
+ const module = join(this.baseDir, 'node_modules', plugin.name);
+ if (!fileExist(module) || fileState(module) !== 'dir') continue;
+ const cmd = plugin.isDev ? 'unlink' : 'uninstall';
await this.execCommand(cmd, [module]);
- const index = currentPlugins.findIndex((p) => p.name === plugin.name);
- if (index > -1) currentPlugins.splice(index, 1);
+ // 插件参数
+ await this.db.delete(`${this.dbTable}[${index}]`);
} catch (err: any) {
logger.error(`[plugin][uninstall][error] ${err.message}`);
}
}
- this.pluginList = currentPlugins;
- this.writeJsonFile(this.pluginPath, this.pluginList);
-
- return this.fetchList(plugins);
+ const res = await this.fetchList([...new Set(plugins.map((p) => p.name))]);
+ return res;
}
/**
- * 更新指定插件
+ * 升级插件
* @param plugins 插件名称
* @memberof AdapterHandler
*/
async update(plugins: any[]) {
- const currentPlugins = this.deepClone(this.pluginList);
-
for (const plugin of plugins) {
- const module = join(this.baseDir, 'node_modules', plugin.name);
- if (!fileExist(module) || fileState(module) !== 'dir') continue;
- await this.execCommand('update', [module]);
+ try {
+ const module = join(this.baseDir, 'node_modules', plugin.name);
+ if (!fileExist(module) || fileState(module) !== 'dir') continue;
- const pluginPath = resolve(this.baseDir, 'node_modules', plugin.name);
- const pluginInfo = this.readJsonFile(join(pluginPath, 'package.json'));
- const pluginIndex = currentPlugins.findIndex((p) => `${p.name}` === `${plugin.name}`);
- if (pluginIndex !== -1) currentPlugins[pluginIndex].version = pluginInfo.version || '0.0.0';
- }
+ // await this.execCommand('update', [module]);
- this.pluginList = currentPlugins;
- this.writeJsonFile(this.pluginPath, this.pluginList);
+ const index = await this.db.getIndex(`${this.dbTable}`, plugin.name, 'name');
+ if (index === -1) continue;
+ const pluginInfo = await this.db.getData(`${this.dbTable}[${index}]`);
- return this.fetchList(plugins);
- }
+ const pkgPath = join(this.baseDir, 'node_modules', plugin.name);
+ const pkgInfo = this.readJsonFile(join(pkgPath, 'package.json'));
+ if (!pkgInfo) continue;
- /**
- * 升级插件
- * @param plugins
- * @memberof AdapterHandler
- */
- async upgrade(plugins: any[]) {
- for (let plugin of plugins) {
- try {
- const pkg = await this.readJsonFile(join(this.baseDir, 'package.json'));
- if (Object.keys(pkg.dependencies).length === 0 || !pkg.dependencies?.[plugin.name]) break;
- const installedVersion = pkg.dependencies[plugin.name].replace('^', '');
- let latestVersion = this.pluginCaches[plugin.name];
- if (!latestVersion) {
- const registryUrl = `${this.registry}${plugin.name}`;
- const data = await request({
- method: 'GET',
- url: registryUrl,
- timeout: 2000,
- });
- latestVersion = data['dist-tags'].latest;
- this.pluginCaches[plugin.name] = latestVersion;
- }
- if (latestVersion > installedVersion) {
- await this.install(plugin);
+ if (index > -1 && pkgInfo) {
+ const latestVersion = pkgInfo?.version || '0.0.0';
+ const installedVersion = pluginInfo?.version || '0.0.0';
+ if (latestVersion > installedVersion) await this.install([plugin]);
}
} catch (err: any) {
- logger.error(`[plugin][upgrade][error] ${err.message}`);
+ logger.error(`[plugin][update][error] ${err.message}`);
}
}
- return this.fetchList(plugins);
+ const res = await this.fetchList([...new Set(plugins.map((p) => p.name))]);
+ return res;
}
/**
* 列出所有已安装插件
* @memberof AdapterHandler
*/
- list() {
+ async list() {
try {
- if (!this.pluginList.length) this.pluginList = this.readJsonFile(this.pluginPath) || [];
- return this.fetchList();
+ return await this.fetchList();
} catch (err: any) {
logger.error(`[plugin][list][error] ${err.message}`);
return [];
@@ -294,88 +274,79 @@ class AdapterHandler {
}
async start(plugins: any[]) {
- const currentPlugins = this.deepClone(this.pluginList);
-
for (const plugin of plugins) {
const module = join(this.baseDir, 'node_modules', plugin.name);
if (!fileExist(module) || fileState(module) !== 'dir') continue;
- const pluginIndex = currentPlugins.findIndex((p) => `${p.name}` === `${plugin.name}`);
- if (pluginIndex === -1) continue;
-
- const pluginInfo = currentPlugins[pluginIndex];
+ const index = await this.db.getIndex(`${this.dbTable}`, plugin.name, 'name');
+ if (index === -1) continue;
+ const pluginInfo = await this.db.getData(`${this.dbTable}[${index}]`);
if (pluginInfo?.main && pluginInfo?.main.endsWith('.js')) {
+ let status = pluginInfo?.status || 'STOPED';
try {
let pool = this.syncModules.get(`${plugin.name}`);
if (!pool) {
pool = workerpool.pool();
this.syncModules.set(`${plugin.name}`, pool);
}
+
try {
let entryModule = resolve(module, pluginInfo.main);
if (process.platform === 'win32') entryModule = `file:///${entryModule}`;
const res = await pool.exec(runModule, [entryModule, 'start']);
- if (res.code === 0) currentPlugins[pluginIndex].status = 'RUNNING';
+ if (res.code === 0) status = 'RUNNING';
} catch (err: any) {
- currentPlugins[pluginIndex].status = 'STOPED';
+ status = 'STOPED';
this.syncModules.delete(`${plugin.name}`);
await pool.terminate();
logger.error(`[plugin][run][error] ${err.message}`);
}
} catch (err: any) {
logger.error(`[plugin][run][pool] ${err.message}`);
+ } finally {
+ await this.db.push(`${this.dbTable}[${index}]`, Object.assign({}, pluginInfo, { status }), true);
}
}
}
- this.pluginList = currentPlugins;
- this.writeJsonFile(this.pluginPath, this.pluginList);
-
- return this.fetchList(plugins);
+ const res = await this.fetchList([...new Set(plugins.map((p) => p.name))]);
+ return res;
}
async stop(plugins: any[]) {
- const currentPlugins = this.deepClone(this.pluginList);
-
for (const plugin of plugins) {
const module = join(this.baseDir, 'node_modules', plugin.name);
if (!fileExist(module) || fileState(module) !== 'dir') continue;
- const pluginIndex = currentPlugins.findIndex((p) => `${p.name}` === `${plugin.name}`);
- if (pluginIndex === -1) continue;
-
- const pluginInfo = currentPlugins[pluginIndex];
+ const index = await this.db.getIndex(`${this.dbTable}`, plugin.name, 'name');
+ if (index === -1) continue;
+ const pluginInfo = await this.db.getData(`${this.dbTable}[${index}]`);
if (pluginInfo?.main && pluginInfo?.main.endsWith('.js')) {
+ let status = pluginInfo?.status || 'STOPED';
try {
let pool = this.syncModules.get(`${plugin.name}`);
try {
- if (pool) {
- // let entryModule = resolve(module, pluginInfo.main);
- // if (process.platform === 'win32') entryModule = `file:///${entryModule}`;
- // const res = await pool.exec(runModule, [entryModule, 'stop']);
- // if (res.code === 0) currentPlugins[pluginIndex].status = 'STOPED';
- await pool.terminate();
- this.syncModules.delete(`${plugin.name}`);
- currentPlugins[pluginIndex].status = 'STOPED';
- }
+ status = 'STOPED';
+ this.syncModules.delete(`${plugin.name}`);
+ if (pool) await pool.terminate();
} catch (err: any) {
- currentPlugins[pluginIndex].status = 'STOPED';
+ status = 'STOPED';
this.syncModules.delete(`${plugin.name}`);
if (pool) await pool.terminate();
logger.error(`[plugin][stop][error] ${err.message}`);
}
} catch (err: any) {
logger.error(`[plugin][stop][pool] ${err.message}`);
+ } finally {
+ await this.db.push(`${this.dbTable}[${index}]`, Object.assign({}, pluginInfo, { status }), true);
}
}
}
- this.pluginList = currentPlugins;
- this.writeJsonFile(this.pluginPath, this.pluginList);
-
- return this.fetchList(plugins);
+ const res = await this.fetchList([...new Set(plugins.map((p) => p.name))]);
+ return res;
}
/**
diff --git a/src/main/core/server/routes/v1/plugin/work.ts b/src/main/core/server/routes/v1/plugin/work.ts
index 1ba31be98..a43495e12 100644
--- a/src/main/core/server/routes/v1/plugin/work.ts
+++ b/src/main/core/server/routes/v1/plugin/work.ts
@@ -53,15 +53,6 @@ const api: FastifyPluginAsync = async (fastify): Promise => {
data: res,
};
});
- fastify.post(`/${API_PREFIX}/upgrade`, async (req: FastifyRequest<{ Body: any[] }>) => {
- const plugins = req.body;
- const res = await pluginAdapter.upgrade(plugins);
- return {
- code: 0,
- msg: 'ok',
- data: res,
- };
- });
fastify.post(`/${API_PREFIX}/start`, async (req: FastifyRequest<{ Body: any[] }>) => {
const plugins = req.body;
const res = await pluginAdapter.start(plugins);
diff --git a/src/renderer/src/pages/lab/components/pluginCenter/index.vue b/src/renderer/src/pages/lab/components/pluginCenter/index.vue
index 6c1d35aaf..eb7166760 100644
--- a/src/renderer/src/pages/lab/components/pluginCenter/index.vue
+++ b/src/renderer/src/pages/lab/components/pluginCenter/index.vue
@@ -169,7 +169,7 @@ const handleControl = async (type: string, name: string) => {
} else {
const updateIndex = pluginList.value.findIndex(p => p.name === name);
if (updateIndex > -1) {
- pluginInfo.value[updateIndex] = updatedPluginList[0];
+ pluginList.value[updateIndex] = updatedPluginList[0];
pluginInfo.value = updatedPluginList[0];
}
}
From dad14d36e87ad946e131694ad0fc70cd21055a27 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sat, 7 Dec 2024 17:30:07 +0800
Subject: [PATCH 013/175] [bug] fix headers and adRemove both data not catch
---
.../core/server/routes/v1/lab/ad/index.ts | 29 ++++++++++++++-----
src/main/index.ts | 4 +--
src/renderer/src/utils/common/film.ts | 5 +++-
3 files changed, 28 insertions(+), 10 deletions(-)
diff --git a/src/main/core/server/routes/v1/lab/ad/index.ts b/src/main/core/server/routes/v1/lab/ad/index.ts
index b25b1ad80..427de8bdf 100644
--- a/src/main/core/server/routes/v1/lab/ad/index.ts
+++ b/src/main/core/server/routes/v1/lab/ad/index.ts
@@ -1,4 +1,5 @@
import { FastifyPluginAsync, FastifyRequest, FastifyReply } from 'fastify';
+import { completeRequest } from '@main/utils/request';
import { fixAdM3u8Ai } from './utils';
const API_PREFIX = 'api/v1/lab/ad';
@@ -7,17 +8,31 @@ const api: FastifyPluginAsync = async (fastify): Promise => {
fastify.get(
`/${API_PREFIX}`,
async (req: FastifyRequest<{ Querystring: { [key: string]: string } }>, reply: FastifyReply) => {
- let { url, type, headers = '{}' } = req.query;
- if (!type || type !== 'm3u8' || !url || !url.startsWith('http')) {
- reply.code(500).send({ code: -1, msg: 'Invalid type provided or url' });
+ const m3u8ContentType = ['application/vnd.apple.mpegurl', 'application/x-mpegURL', 'application/octet-stream'];
+
+ let { url, headers = '{}' } = req.query;
+
+ if (!url || !url.startsWith('http')) {
+ reply.code(500).send({ code: -1, msg: 'Invalid url provided' });
+ return;
} else {
url = decodeURI(url);
headers = JSON.parse(headers);
- const content = (await fixAdM3u8Ai.v2(url, headers as any)) || '';
- if (content.includes('.ts')) {
- reply.code(200).header('Content-Type', 'application/vnd.apple.mpegurl').send(content);
+
+ const res = await completeRequest({ url, method: 'HEAD', headers } as any);
+
+ if (res?.headers?.['content-type'] && m3u8ContentType.includes(res.headers['content-type'])) {
+ const content = (await fixAdM3u8Ai.v2(url, headers as any)) || '';
+ if (content.includes('.ts')) {
+ reply.code(200).header('Content-Type', 'application/vnd.apple.mpegurl').send(content);
+ return;
+ } else {
+ reply.redirect(url);
+ return;
+ }
} else {
- reply.redirect(url);
+ reply.code(500).send({ code: -1, msg: 'Invalid url type provided' });
+ return;
}
}
},
diff --git a/src/main/index.ts b/src/main/index.ts
index 63ab3c5b8..64da43d55 100644
--- a/src/main/index.ts
+++ b/src/main/index.ts
@@ -81,8 +81,8 @@ const ready = () => {
return;
}
- // 不处理本地地址
- if (isLocalhostRef(url)) {
+ // 不处理本地地址 但lab/ad除外
+ if (isLocalhostRef(url) && !`${url}`.includes('lab/ad')) {
callback({});
return;
}
diff --git a/src/renderer/src/utils/common/film.ts b/src/renderer/src/utils/common/film.ts
index e977704ea..10e279162 100644
--- a/src/renderer/src/utils/common/film.ts
+++ b/src/renderer/src/utils/common/film.ts
@@ -238,7 +238,10 @@ const playHelper = async (
} finally {
if (adFlag && data.url && !data.url.startsWith('http://127.0.0.1') && data.mediaType.includes('m3u8')) {
console.log('[film_common][removeAd][start]开始移除广告流程');
- data.url = `http://127.0.0.1:9978/api/v1/lab/ad?url=${encodeURI(data.url)}&type=m3u8&headers=${JSON.stringify(data.headers || {})}`;
+ // data.url = `http://127.0.0.1:9978/api/v1/lab/ad?url=${encodeURI(data.url)}&headers=${JSON.stringify(data.headers || {})}`;
+ const url = encodeURI(data.url);
+ const headers = JSON.stringify(data.headers || {});
+ data.url = `http://127.0.0.1:9978/api/v1/lab/ad?url=${url}&headers=${headers}`;
console.log('[film_common][removeAd][end]结束移除广告流程');
}
console.log(`[film_common][playHelper][return]`, data);
From c9bab1e86f8a1d3378901ab5db996518bc7699a0 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sat, 7 Dec 2024 17:30:33 +0800
Subject: [PATCH 014/175] [bug] fix search when one site in group
---
src/renderer/src/pages/film/index.vue | 27 ++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)
diff --git a/src/renderer/src/pages/film/index.vue b/src/renderer/src/pages/film/index.vue
index 303808f13..2631c8d36 100644
--- a/src/renderer/src/pages/film/index.vue
+++ b/src/renderer/src/pages/film/index.vue
@@ -404,10 +404,11 @@ const getSearchList = async () => {
};
// 2. 请求数据
- const res = await fetchCmsSearch({ sourceId: currentSite.id, wd: searchTxt.value, page: pg === 1 ? '' : pg });
- const resultSearch = res?.list;
+ const res = await fetchCmsSearch({ sourceId: currentSite.id, wd: searchTxt.value, page: pg === 1 ? null : pg });
+ const reSearch = res?.list;
- if (!Array.isArray(resultSearch) || resultSearch.length === 0) {
+ // 2.1 数据为空
+ if (!Array.isArray(reSearch) || reSearch.length === 0) {
console.log('[film][search] empty search results');
// 聚搜过程中,如果某个站搜不出来结果,返回1让其他站继续搜索。单搜就返回0终止搜索
if (isLastSite) {
@@ -420,26 +421,26 @@ const getSearchList = async () => {
return length;
}
- let resultDetail = filterStatus ? resultSearch.filter((item) => item?.vod_name.includes(searchTxt.value)) : resultSearch;
+ // 2.2 数据去重
+ let resultDetail = filterStatus ? reSearch.filter((item) => item?.vod_name.includes(searchTxt.value)) : reSearch;
let newFilms = differenceBy(resultDetail, filmData.value.list, 'vod_id'); // 去重
if (newFilms.length > 0) {
newFilms = resultDetail.map(item => ({ ...item, relateSite: currentSite }));
filmData.value.list.push(...newFilms);
- };
- // 最后一个站点,并且是聚搜,参与搜索的站点数大于1的情况,正常搜完一个就结束。只有一个站点正常搜索还要继续搜
- if (isLastSite) {
- length = 0;
+ length = newFilms.length;
+ pagination.value.pageIndex++;
+ return length;
} else {
- if (newFilms.length > 0) {
- length = newFilms.length;
- pagination.value.pageIndex++;
+ if (isLastSite) {
+ length = 0;
} else {
length = 1;
searchCurrentSite.value = searchGroup[index + 1];
- pagination.value.pageIndex = 1;
};
- };
+ pagination.value.pageIndex = 1;
+ return length;
+ }
} catch (err) {
console.log(err)
// 聚搜的某一个站点发生错误,返回1让其他站点能继续搜索。只有一个站点进行搜索的时候发生错误就返回0终止搜索
From 2b21d2412fb50117191a306adc2db07dcd7558e6 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sun, 8 Dec 2024 01:32:59 +0800
Subject: [PATCH 015/175] [change] update drpy3 to 3.9.51beta6 20241126
---
.../routes/v1/site/cms/adapter/drpy/drpy3.ts | 56 +++++++++----------
1 file changed, 28 insertions(+), 28 deletions(-)
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/drpy/drpy3.ts b/src/main/core/server/routes/v1/site/cms/adapter/drpy/drpy3.ts
index f77b65852..d51272e7b 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/drpy/drpy3.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/drpy/drpy3.ts
@@ -84,8 +84,16 @@ cheerio.jinja2 = function (template, obj) {
declare let pdfl: () => void; // add-ts-mark
let vercode = typeof pdfl === 'function' ? 'drpy2.1' : 'drpy2';
-const VERSION = vercode + ' 3.9.51beta5 20241104';
+const VERSION = vercode + '3.9.51beta6 20241126';
const UpdateInfo = [
+ {
+ date: '20241126',
+ title: 'drpy更新,优化去广告算法',
+ version: '3.9.51beta6 20241126',
+ msg: `
+1. 更新龙头大佬提供的去广告算法
+ `,
+ },
{
date: '20241104',
title: 'drpy更新,增加新特性',
@@ -1267,7 +1275,11 @@ function fixAdM3u8(m3u8_text, m3u8_url, ad_remove) {
*/
function fixAdM3u8Ai(m3u8_url, headers) {
let ts = new Date().getTime();
- let option = headers ? { headers: headers } : {};
+ let option = headers
+ ? {
+ headers: headers,
+ }
+ : {};
function b(s1, s2) {
let i = 0;
@@ -1284,65 +1296,54 @@ function fixAdM3u8Ai(m3u8_url, headers) {
return str.split('').reverse().join('');
}
- //log('播放的地址:' + m3u8_url);
let m3u8 = request(m3u8_url, option);
- //log('m3u8处理前:' + m3u8);
m3u8 = m3u8
.trim()
.split('\n')
.map((it) => (it.startsWith('#') ? it : urljoin(m3u8_url, it)))
.join('\n');
- //log('m3u8处理后:============:' + m3u8);
- // 获取嵌套m3u8地址
- m3u8 = m3u8.replace(/\n\n/gi, '\n'); //删除多余的换行符
+ m3u8 = m3u8.replace(/\n\n/gi, '\n');
let last_url = m3u8.split('\n').slice(-1)[0];
if (last_url.length < 5) {
last_url = m3u8.split('\n').slice(-2)[0];
}
-
if (last_url.includes('.m3u8') && last_url !== m3u8_url) {
m3u8_url = urljoin2(m3u8_url, last_url);
log('嵌套的m3u8_url:' + m3u8_url);
m3u8 = request(m3u8_url, option);
}
- //log('----处理有广告的地址----');
let s = m3u8
.trim()
.split('\n')
.filter((it) => it.trim())
.join('\n');
let ss = s.split('\n');
- //找出第一条播放地址
- //let firststr = ss.find(x => !x.startsWith('#'));
let firststr = '';
- let maxl = 0; //最大相同字符
+ let maxl = 0;
let kk = 0;
- let kkk = 2;
+ let kkk1 = 1;
+ let kkk2 = 0;
let secondstr = '';
for (let i = 0; i < ss.length; i++) {
let s = ss[i];
if (!s.startsWith('#')) {
if (kk == 0) firststr = s;
- if (kk == 1) maxl = b(firststr, s);
- if (kk > 1) {
- if (maxl > b(firststr, s)) {
+ if (kk > 0) {
+ if (maxl > b(firststr, s) + 1) {
if (secondstr.length < 5) secondstr = s;
- kkk = kkk + 2;
+ kkk2++;
} else {
maxl = b(firststr, s);
- kkk++;
+ kkk1++;
}
}
kk++;
- if (kk >= 20) break;
+ if (kk >= 30) break;
}
}
- if (kkk > 30) firststr = secondstr;
+ if (kkk2 > kkk1) firststr = secondstr;
let firststrlen = firststr.length;
- //log('字符串长度:' + firststrlen);
- let ml = Math.round(ss.length / 2).toString().length; //取数据的长度的位数
- //log('数据条数的长度:' + ml);
- //找出最后一条播放地址
+ let ml = Math.round(ss.length / 2).toString().length;
let maxc = 0;
let laststr = ss.toReversed().find((x) => {
if (!x.startsWith('#')) {
@@ -1356,13 +1357,12 @@ function fixAdM3u8Ai(m3u8_url, headers) {
return false;
});
log('最后一条切片:' + laststr);
- //log('最小相同字符长度:' + maxl);
- let ad_urls: any[] = []; // add-ts-mark
+ let ad_urls = [];
for (let i = 0; i < ss.length; i++) {
let s = ss[i];
if (!s.startsWith('#')) {
if (b(firststr, s) < maxl) {
- ad_urls.push(s); // 广告地址加入列表
+ ad_urls.push(s);
ss.splice(i - 1, 2);
i = i - 2;
} else {
@@ -1376,8 +1376,8 @@ function fixAdM3u8Ai(m3u8_url, headers) {
log('----广告地址----');
log(ad_urls);
m3u8 = ss.join('\n');
- //log('处理完成');
log('处理耗时:' + (new Date().getTime() - ts).toString());
+ log(m3u8);
return m3u8;
}
From 33a06f4323c59fcbb745139aff47267f5bac9ca7 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sun, 8 Dec 2024 01:36:45 +0800
Subject: [PATCH 016/175] [bug] fix detail vod_content empty not trim method
---
src/main/core/server/routes/v1/site/cms/adapter/drpyjs0.ts | 2 +-
src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts | 2 +-
src/main/core/server/routes/v1/site/cms/adapter/t1Json.ts | 2 +-
src/main/core/server/routes/v1/site/cms/adapter/t4Hipy.ts | 5 +++--
4 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/drpyjs0.ts b/src/main/core/server/routes/v1/site/cms/adapter/drpyjs0.ts
index 1fb4a6089..2ef416d6b 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/drpyjs0.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/drpyjs0.ts
@@ -121,7 +121,7 @@ class DrpyJs0Adapter {
vod_remarks: vod.vod_remarks,
vod_actor: vod.vod_actor,
vod_director: vod.vod_director,
- vod_content: vod.vod_content.trim(),
+ vod_content: vod.vod_content?.trim(),
vod_play_from: vod.vod_play_from,
vod_play_url: vod.vod_play_url,
});
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts b/src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts
index fd917764e..f7d0292d2 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts
@@ -170,7 +170,7 @@ class T0Adapter {
vod_remarks: vod.note,
vod_actor: vod.actor,
vod_director: vod.director,
- vod_content: vod.des.trim(),
+ vod_content: vod.des?.trim(),
vod_play_from: vodPlayFrom(dldd),
vod_play_url: vodPlayUrl(dldd),
});
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/t1Json.ts b/src/main/core/server/routes/v1/site/cms/adapter/t1Json.ts
index 6a63f3ccd..ec9b2d3c4 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/t1Json.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/t1Json.ts
@@ -128,7 +128,7 @@ class T1Adapter {
vod_remarks: vod.vod_remarks,
vod_actor: vod.vod_actor,
vod_director: vod.vod_director,
- vod_content: vod.vod_content.trim(),
+ vod_content: vod.vod_content?.trim(),
vod_play_from: vod.vod_play_from,
vod_play_url: vod.vod_play_url,
});
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/t4Hipy.ts b/src/main/core/server/routes/v1/site/cms/adapter/t4Hipy.ts
index 7b04f973c..5001d9b92 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/t4Hipy.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/t4Hipy.ts
@@ -83,7 +83,7 @@ class HipyT4Adapter {
}
async category(doc: { [key: string]: string }) {
const { page, tid, f = '{}' } = doc;
- console.log(page, tid, f);
+
const response = await request({
url: this.api,
method: 'GET',
@@ -122,6 +122,7 @@ class HipyT4Adapter {
extend: this.ext,
},
});
+
const videos: any[] = [];
for (const vod of response.list) {
videos.push({
@@ -134,7 +135,7 @@ class HipyT4Adapter {
vod_remarks: vod.vod_remarks,
vod_actor: vod.vod_actor,
vod_director: vod.vod_director,
- vod_content: vod.vod_content.trim(),
+ vod_content: vod.vod_content?.trim(),
vod_play_from: vod.vod_play_from,
vod_play_url: vod.vod_play_url,
});
From dff2fc55aa363e83fd75e3ac66c876b1deede17c Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sun, 8 Dec 2024 01:37:47 +0800
Subject: [PATCH 017/175] [optimize] plugin
---
.../routes/v1/plugin/utils/adapter_install.ts | 412 ++++++++++++++++++
.../utils/{adapter.ts => adapter_link.ts} | 1 +
src/main/core/server/routes/v1/plugin/work.ts | 2 +-
.../lab/components/pluginCenter/index.vue | 5 +-
4 files changed, 416 insertions(+), 4 deletions(-)
create mode 100644 src/main/core/server/routes/v1/plugin/utils/adapter_install.ts
rename src/main/core/server/routes/v1/plugin/utils/{adapter.ts => adapter_link.ts} (99%)
diff --git a/src/main/core/server/routes/v1/plugin/utils/adapter_install.ts b/src/main/core/server/routes/v1/plugin/utils/adapter_install.ts
new file mode 100644
index 000000000..2489f7d63
--- /dev/null
+++ b/src/main/core/server/routes/v1/plugin/utils/adapter_install.ts
@@ -0,0 +1,412 @@
+import npm from 'npm';
+import { join, resolve } from 'path';
+import workerpool from 'workerpool';
+import { JsonDB, Config } from 'node-json-db';
+import logger from '@main/core/logger';
+import { fileExist, fileState, readJson, readFile, saveJson, createDir } from '@main/utils/hiker/file';
+
+import { AdapterHandlerOptions, AdapterInfo } from './types';
+
+const runModule = async (modulePath: string, method: 'stop' | 'start') => {
+ try {
+ const entry = await import(modulePath);
+ const res = await entry?.[method]();
+ return { code: 0, msg: 'ok', data: res };
+ } catch (err: any) {
+ throw err;
+ }
+};
+
+/**
+ * 系统插件管理器
+ * @class AdapterHandler
+ */
+class AdapterHandler {
+ public baseDir: string; // 插件安装地址
+ public pkgPath: string; // pkg配置文件路径
+ public pluginPath: string; // 插件信息配置文件路径
+ public pluginList: any[] = []; // 插件列表
+ public syncModules = new Map();
+ public dbTable: string = '/plugin';
+ public db: JsonDB;
+ readonly registry: string; // 插件源地址
+
+ /**
+ * Creates an instance of AdapterHandler.
+ * @param {AdapterHandlerOptions} options
+ * @memberof AdapterHandler
+ */
+ constructor(options: AdapterHandlerOptions) {
+ this.baseDir = options.baseDir;
+ this.pkgPath = join(this.baseDir, 'package.json');
+ this.pluginPath = join(this.baseDir, 'plugin.json');
+ this.registry = options?.registry || 'https://registry.npmmirror.com/';
+
+ // 初始化插件目录
+ if (!fileExist(this.baseDir)) createDir(this.baseDir);
+ if (!fileExist(this.pluginPath) || fileState(this.pluginPath) !== 'file') saveJson(this.pluginPath, { plugin: [] });
+
+ // 初始化插件列表
+ this.db = new JsonDB(new Config(this.pluginPath, true, true, '/'));
+
+ // 启动插件程序
+ (async () => {
+ let plugins = await this.fetchList();
+ plugins = plugins.filter((p) => p.status === 'RUNNING');
+ try {
+ await this.start([...new Set(plugins.map((p) => p.name))]);
+ } catch {}
+ })();
+ }
+
+ /**
+ * 读取JSON文件
+ * @private
+ * @param {string} filePath 文件路径
+ * @returns {json} JSON对象
+ */
+ private readJsonFile(filePath: string) {
+ try {
+ const content = readJson(filePath);
+ return content;
+ } catch (err: any) {
+ logger.error(`[plugin][readJsonFile][error] ${err.message}`);
+ throw new Error(`Failed to read JSON file: ${filePath}`);
+ }
+ }
+
+ async fetchList(plugins: any[] = []) {
+ let infoList: AdapterInfo[] = [];
+
+ try {
+ if (plugins.length === 0) {
+ infoList = await this.db.getData(`${this.dbTable}`);
+ } else {
+ for (let plugin of plugins) {
+ const index = await this.db.getIndex(`${this.dbTable}`, plugin, 'name');
+ if (index === -1) continue;
+
+ const pluginInfo = await this.db.getData(`${this.dbTable}[${index}]`);
+ infoList.push(pluginInfo);
+ }
+ }
+ } catch (err: any) {
+ infoList = [];
+ logger.error(`[plugin][fetchList][error] ${err.message}`);
+ }
+
+ return infoList;
+ }
+
+ /**
+ * 获取插件信息
+ * @param {plugins}
+ * @memberof PluginHandler
+ */
+ async info(plugins: any[]) {
+ plugins = [...new Set(plugins)];
+
+ try {
+ const res = await this.fetchList(plugins);
+ return res;
+ } catch (err: any) {
+ logger.error(`[plugin][getAdapterInfo][error] ${err.message}`);
+ } finally {
+ return [];
+ }
+ }
+
+ /**
+ * 安装插件
+ * @param plugins
+ * @memberof AdapterHandler
+ */
+ async install(plugins: any[]) {
+ plugins = [...new Set(plugins)];
+
+ for (const plugin of plugins) {
+ let info: { [key: string]: string } = { name: plugin, pluginName: plugin };
+
+ try {
+ // 1.判断项目存在
+ const pluginBasePath = join(this.baseDir, plugin);
+ if (!fileExist(pluginBasePath) || fileState(pluginBasePath) !== 'dir') continue;
+
+ // 2.设置默认参数
+ const pkgPath = join(pluginBasePath, 'package.json');
+ if (!fileExist(pkgPath) || fileState(pkgPath) !== 'file') continue;
+ const pkgInfo = this.readJsonFile(pkgPath);
+ if (!pkgInfo || typeof pkgInfo !== 'object') continue;
+ const readmePath = join(pluginBasePath, 'README.md');
+ info.readme = `### empty`;
+ if (fileExist(readmePath) && fileState(readmePath) === 'file') info.readme = readFile(readmePath);
+ info = { ...pkgInfo, ...info };
+
+ // 2.停止插件
+ const index = await this.db.getIndex(`${this.dbTable}`, info.name, 'name');
+ if (index > -1) await this.stop([plugin]);
+
+ // 3.安装插件
+ await this.execCommand('install', { prefix: pluginBasePath }, []);
+
+ // 4.插件参数
+ const data = {
+ type: info?.pluginType || 'system',
+ name: info?.name || '',
+ pluginName: info?.pluginName || '',
+ author: info?.author || '',
+ description: info?.description || '',
+ readme: info?.readme || `### empty`,
+ main: info?.main || '',
+ version: info?.version || '0.0.0',
+ logo: info?.logo || '',
+ status: info?.status || 'STOPED',
+ };
+
+ if (index > -1) await this.db.push(`${this.dbTable}[${index}]`, data, true);
+ else await this.db.push(`${this.dbTable}[]`, data);
+ } catch (err: any) {
+ logger.error(`[plugin][install][error] ${err.message}`);
+ }
+ }
+
+ const res = await this.fetchList(plugins);
+ return res;
+ }
+
+ /**
+ * 卸载插件
+ * @param plugins
+ * @memberof AdapterHandler
+ */
+ async uninstall(plugins: any[]) {
+ plugins = [...new Set(plugins)];
+
+ for (const plugin of plugins) {
+ try {
+ // 1.判断项目存在
+ const pluginBasePath = join(this.baseDir, plugin);
+ if (!fileExist(pluginBasePath) || fileState(pluginBasePath) !== 'dir') continue;
+
+ // 2.停止插件
+ const index = await this.db.getIndex(`${this.dbTable}`, plugin, 'name');
+ if (index > -1) await this.stop([plugin]);
+ else continue;
+
+ // 3.卸载插件
+ await this.execCommand('uninstall', { prefix: pluginBasePath }, []);
+
+ // 4.插件参数
+ await this.db.delete(`${this.dbTable}[${index}]`);
+ } catch (err: any) {
+ logger.error(`[plugin][uninstall][error] ${err.message}`);
+ }
+ }
+
+ const res = await this.fetchList(plugins);
+ return res;
+ }
+
+ /**
+ * 升级插件
+ * @param plugins 插件名称
+ * @memberof AdapterHandler
+ */
+ async update(plugins: any[]) {
+ plugins = [...new Set(plugins)];
+
+ for (const plugin of plugins) {
+ try {
+ // 1.判断项目存在
+ const pluginBasePath = join(this.baseDir, plugin);
+ if (!fileExist(pluginBasePath) || fileState(pluginBasePath) !== 'dir') continue;
+
+ // 2.获取参数
+ const index = await this.db.getIndex(`${this.dbTable}`, plugin, 'name');
+ if (index === -1) continue;
+ const pluginInfo = await this.db.getData(`${this.dbTable}[${index}]`);
+
+ // 3.获取插件参数
+ const pkgPath = join(pluginBasePath, 'package.json');
+ if (!fileExist(pkgPath) || fileState(pkgPath) !== 'file') continue;
+ const pkgInfo = this.readJsonFile(pkgPath);
+ if (!pkgInfo || typeof pkgInfo !== 'object') continue;
+
+ const latestVersion = pkgInfo?.version || '0.0.0';
+ const installedVersion = pluginInfo?.version || '0.0.0';
+ if (latestVersion > installedVersion) await this.install([plugin]);
+ } catch (err: any) {
+ logger.error(`[plugin][update][error] ${err.message}`);
+ }
+ }
+
+ const res = await this.fetchList(plugins);
+ return res;
+ }
+
+ /**
+ * 列出所有已安装插件
+ * @memberof AdapterHandler
+ */
+ async list() {
+ try {
+ return await this.fetchList();
+ } catch (err: any) {
+ logger.error(`[plugin][list][error] ${err.message}`);
+ return [];
+ }
+ }
+
+ /**
+ * 启动插件
+ * @param plugins
+ * @memberof AdapterHandler
+ */
+ async start(plugins: string[]) {
+ plugins = [...new Set(plugins)];
+
+ for (const plugin of plugins) {
+ try {
+ // 1.判断项目存在
+ const pluginBasePath = join(this.baseDir, plugin);
+ if (!fileExist(pluginBasePath) || fileState(pluginBasePath) !== 'dir') continue;
+
+ // 2.获取参数
+ const index = await this.db.getIndex(`${this.dbTable}`, plugin, 'name');
+ if (index === -1) continue;
+ const pluginInfo = await this.db.getData(`${this.dbTable}[${index}]`);
+
+ // 3.启动插件
+ if (pluginInfo?.main && pluginInfo?.main.endsWith('.js')) {
+ let status = pluginInfo?.status || 'STOPED';
+
+ try {
+ let pool = this.syncModules.get(`${plugin}`);
+ if (!pool) {
+ pool = workerpool.pool();
+ this.syncModules.set(`${plugin}`, pool);
+ }
+
+ try {
+ let entryModule = resolve(pluginBasePath, pluginInfo.main);
+ if (process.platform === 'win32') entryModule = `file:///${entryModule}`;
+ const res = await pool.exec(runModule, [entryModule, 'start']);
+ if (res.code === 0) status = 'RUNNING';
+ else status = 'STOPED';
+ } catch (err: any) {
+ status = 'STOPED';
+ this.syncModules.delete(`${plugin}`);
+ await pool.terminate();
+ logger.error(`[plugin][start][exec][error] ${err.message}`);
+ }
+ } catch (err: any) {
+ logger.error(`[plugin][start][pool][error] ${err.message}`);
+ } finally {
+ await this.db.push(`${this.dbTable}[${index}]`, Object.assign({}, pluginInfo, { status }), true);
+ }
+ }
+ } catch (err: any) {
+ logger.error(`[plugin][start][error] ${err.message}`);
+ }
+ }
+
+ const res = await this.fetchList(plugins);
+ return res;
+ }
+
+ /**
+ * 停止插件
+ * @param plugins
+ * @memberof AdapterHandler
+ */
+ async stop(plugins: string[]) {
+ plugins = [...new Set(plugins)];
+
+ for (const plugin of plugins) {
+ try {
+ // 1.判断项目存在
+ const pluginBasePath = join(this.baseDir, plugin);
+ if (!fileExist(pluginBasePath) || fileState(pluginBasePath) !== 'dir') continue;
+
+ // 2.获取参数
+ const index = await this.db.getIndex(`${this.dbTable}`, plugin, 'name');
+ if (index === -1) continue;
+ const pluginInfo = await this.db.getData(`${this.dbTable}[${index}]`);
+
+ // 3.停止插件
+ if (pluginInfo?.main && pluginInfo?.main.endsWith('.js')) {
+ let status = pluginInfo?.status || 'STOPED';
+
+ try {
+ let pool = this.syncModules.get(`${plugin}`);
+
+ try {
+ status = 'STOPED';
+ this.syncModules.delete(`${plugin}`);
+ if (pool) await pool.terminate();
+ } catch (err: any) {
+ status = 'STOPED';
+ this.syncModules.delete(`${plugin}`);
+ if (pool) await pool.terminate();
+ logger.error(`[plugin][stop][exec][error] ${err.message}`);
+ }
+ } catch (err: any) {
+ logger.error(`[plugin][stop][pool][error] ${err.message}`);
+ } finally {
+ await this.db.push(`${this.dbTable}[${index}]`, Object.assign({}, pluginInfo, { status }), true);
+ }
+ }
+ } catch (err: any) {
+ logger.error(`[plugin][stop][error] ${err.message}`);
+ }
+ }
+
+ const res = await this.fetchList(plugins);
+ return res;
+ }
+
+ /**
+ * 执行包管理器命令
+ * @memberof AdapterHandler
+ */
+ private async execCommand(
+ cmd: string,
+ options: { [key: string]: string },
+ modules: string[] = [],
+ ): Promise<{ code: number; msg: string; data: any[] }> {
+ return new Promise(async (resolve: any, reject: any) => {
+ const config: { [key: string]: any } = {
+ prefix: this.baseDir,
+ save: true,
+ registry: this.registry,
+ ...options,
+ };
+
+ console.log(npm.config.loaded);
+
+ npm.load(config, (loadErr: any) => {
+ npm.config.prefix = options?.prefix || this.baseDir; // 重要, 刷新项目工作路径
+
+ if (loadErr) {
+ logger.error(`[plugin][execCommand][load][error] ${loadErr.message}`);
+ reject({ code: -1, msg: loadErr.message, data: null });
+ }
+
+ npm.commands[cmd](modules, function (cmdErr: any, data: any[]) {
+ if (cmdErr) {
+ logger.error(`[plugin][execCommand][${cmd}][error] ${cmdErr.message}`);
+ reject({ code: -1, msg: cmdErr.message, data: null });
+ }
+ logger.info(`[plugin][execCommand][data]`, data);
+ resolve({ code: 0, msg: 'ok', data });
+ });
+
+ npm.on('log', (message) => {
+ logger.info(`[plugin][execCommand][log] ${message}`);
+ });
+ });
+ });
+ }
+}
+
+export default AdapterHandler;
diff --git a/src/main/core/server/routes/v1/plugin/utils/adapter.ts b/src/main/core/server/routes/v1/plugin/utils/adapter_link.ts
similarity index 99%
rename from src/main/core/server/routes/v1/plugin/utils/adapter.ts
rename to src/main/core/server/routes/v1/plugin/utils/adapter_link.ts
index 7ee1bb4d0..d34c49522 100644
--- a/src/main/core/server/routes/v1/plugin/utils/adapter.ts
+++ b/src/main/core/server/routes/v1/plugin/utils/adapter_link.ts
@@ -137,6 +137,7 @@ class AdapterHandler {
* @memberof AdapterHandler
*/
async install(plugins: any[]) {
+ // 赋值目录名
plugins = plugins.map((plugin) => {
const updatedPlugin = { ...plugin };
updatedPlugin.pluginName = plugin.name;
diff --git a/src/main/core/server/routes/v1/plugin/work.ts b/src/main/core/server/routes/v1/plugin/work.ts
index a43495e12..d2724a2e5 100644
--- a/src/main/core/server/routes/v1/plugin/work.ts
+++ b/src/main/core/server/routes/v1/plugin/work.ts
@@ -1,7 +1,7 @@
import { FastifyPluginAsync, FastifyRequest } from 'fastify';
import { join } from 'path';
import { APP_STORE_PATH } from '@main/utils/hiker/file';
-import adapter from './utils/adapter';
+import adapter from './utils/adapter_install';
const API_PREFIX = 'api/v1/plugin';
const APP_PLUGIN_PATH = join(APP_STORE_PATH, 'plugin');
diff --git a/src/renderer/src/pages/lab/components/pluginCenter/index.vue b/src/renderer/src/pages/lab/components/pluginCenter/index.vue
index eb7166760..f18033395 100644
--- a/src/renderer/src/pages/lab/components/pluginCenter/index.vue
+++ b/src/renderer/src/pages/lab/components/pluginCenter/index.vue
@@ -134,8 +134,7 @@ const handleItemClick = (name: string) => {
}
const handleGoDir = async() => {
- const defaultPath = await window.electron.ipcRenderer.invoke('path-join', 'plugin', 'modules');
- window.electron.ipcRenderer.send('open-path', defaultPath, true);
+ window.electron.ipcRenderer.send('open-path', 'plugin', true);
}
const handleControl = async (type: string, name: string) => {
@@ -149,7 +148,7 @@ const handleControl = async (type: string, name: string) => {
if (!methodMap?.[type]) return;
try {
- const updatedPluginList = await methodMap[type]([{ name, isDev: true }]);
+ const updatedPluginList = await methodMap[type]([ name ]);
const checkSuccess = () => {
return type === 'uninstall' ? true : updatedPluginList && updatedPluginList.length > 0;
};
From 42351f246a121ef9e347dba3244287ca4dc89c6c Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sun, 8 Dec 2024 01:38:10 +0800
Subject: [PATCH 018/175] [optimize] player headers remove unsafe
---
src/renderer/src/components/player/index.vue | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/renderer/src/components/player/index.vue b/src/renderer/src/components/player/index.vue
index 264fa0903..41e200079 100644
--- a/src/renderer/src/components/player/index.vue
+++ b/src/renderer/src/components/player/index.vue
@@ -33,6 +33,16 @@ const formatUrlHeaders = (url: string, headers: { [key: string]: string }) => {
return url;
};
+const formatRemoveUnSafeHeaders = (headers: { [key: string]: string }) => {
+ const unsafeHeads = ['host', 'referer', 'origin', 'user-agent', 'content-length', 'set-cookie'];
+
+ for (const key in headers) {
+ if (unsafeHeads.includes(key.toLowerCase())) delete headers[key];
+ }
+
+ return headers;
+};
+
const init = async () => {
if (playerMode.value.type === 'custom') return;
await destroy();
@@ -54,6 +64,7 @@ const create = async (doc: { [key: string]: any }) => {
};
doc.url = formatUrlHeaders(doc.url, doc.headers);
doc.type = mapVideoTypeToPlayerType(doc.type);
+ doc.headers = formatRemoveUnSafeHeaders(doc.headers);
await adapter.value.create(doc);
};
From 48e5233b4f7b9748f83de7b4da39ce66456eca91 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sun, 8 Dec 2024 02:08:36 +0800
Subject: [PATCH 019/175] [bug] fix play return parm not standed
---
src/main/core/server/routes/v1/site/cms/adapter/drpyjs0.ts | 4 +---
src/main/core/server/routes/v1/site/cms/adapter/t4Hipy.ts | 4 +---
2 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/drpyjs0.ts b/src/main/core/server/routes/v1/site/cms/adapter/drpyjs0.ts
index 2ef416d6b..68453affb 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/drpyjs0.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/drpyjs0.ts
@@ -169,9 +169,7 @@ class DrpyJs0Adapter {
url: input,
},
});
- return {
- play: response,
- };
+ return { ...response };
}
runMain() {
return '';
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/t4Hipy.ts b/src/main/core/server/routes/v1/site/cms/adapter/t4Hipy.ts
index 5001d9b92..5129ce212 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/t4Hipy.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/t4Hipy.ts
@@ -184,9 +184,7 @@ class HipyT4Adapter {
play: play,
},
});
- return {
- play: response,
- };
+ return { ...response };
}
runMain() {
return '';
From 4dfb90bd9fd3d1e6ea73ee88f1389a95774506b8 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sun, 8 Dec 2024 19:05:20 +0800
Subject: [PATCH 020/175] [optimize] plugin
---
.../routes/v1/plugin/utils/adapter_install.ts | 26 +++++++++++++------
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/src/main/core/server/routes/v1/plugin/utils/adapter_install.ts b/src/main/core/server/routes/v1/plugin/utils/adapter_install.ts
index 2489f7d63..a1fed9304 100644
--- a/src/main/core/server/routes/v1/plugin/utils/adapter_install.ts
+++ b/src/main/core/server/routes/v1/plugin/utils/adapter_install.ts
@@ -3,7 +3,16 @@ import { join, resolve } from 'path';
import workerpool from 'workerpool';
import { JsonDB, Config } from 'node-json-db';
import logger from '@main/core/logger';
-import { fileExist, fileState, readJson, readFile, saveJson, createDir } from '@main/utils/hiker/file';
+import {
+ deleteFile,
+ fileExist,
+ fileState,
+ readJson,
+ readFile,
+ saveJson,
+ createDir,
+ deleteDir,
+} from '@main/utils/hiker/file';
import { AdapterHandlerOptions, AdapterInfo } from './types';
@@ -147,7 +156,8 @@ class AdapterHandler {
if (index > -1) await this.stop([plugin]);
// 3.安装插件
- await this.execCommand('install', { prefix: pluginBasePath }, []);
+ const execRes = await this.execCommand('install', { prefix: pluginBasePath }, []);
+ if (execRes.code === -1) continue;
// 4.插件参数
const data = {
@@ -193,8 +203,11 @@ class AdapterHandler {
if (index > -1) await this.stop([plugin]);
else continue;
- // 3.卸载插件
- await this.execCommand('uninstall', { prefix: pluginBasePath }, []);
+ // 3.删除必要依赖
+ const pluginNodeModulesPath = join(pluginBasePath, 'node_modules');
+ if (fileExist(pluginNodeModulesPath) && fileState(pluginBasePath) === 'dir') deleteDir(pluginNodeModulesPath);
+ const pluginPkgLockPath = join(pluginBasePath, 'package-lock.json');
+ if (fileExist(pluginPkgLockPath) && fileState(pluginPkgLockPath) === 'file') deleteFile(pluginPkgLockPath);
// 4.插件参数
await this.db.delete(`${this.dbTable}[${index}]`);
@@ -376,16 +389,13 @@ class AdapterHandler {
): Promise<{ code: number; msg: string; data: any[] }> {
return new Promise(async (resolve: any, reject: any) => {
const config: { [key: string]: any } = {
- prefix: this.baseDir,
save: true,
registry: this.registry,
- ...options,
};
- console.log(npm.config.loaded);
-
npm.load(config, (loadErr: any) => {
npm.config.prefix = options?.prefix || this.baseDir; // 重要, 刷新项目工作路径
+ logger.info(`[plugin][execCommand][env][prefix] ${npm.config.prefix}`);
if (loadErr) {
logger.error(`[plugin][execCommand][load][error] ${loadErr.message}`);
From 60abbea7bdb30b24c79e73a7b02a7cf190508f44 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sun, 8 Dec 2024 19:05:39 +0800
Subject: [PATCH 021/175] [change]npm packages
---
package.json | 4 +-
yarn.lock | 134 +++++++++++++++++++++++++++++++++++++++++----------
2 files changed, 110 insertions(+), 28 deletions(-)
diff --git a/package.json b/package.json
index c01259454..879380660 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "zyfun",
- "version": "3.3.10-beta1206",
+ "version": "3.3.10-beta1208",
"description": "zyfun client",
"main": "./out/main/index.js",
"repository": {
@@ -65,7 +65,7 @@
"@electron-uikit/titlebar": "^1.1.0",
"@fastify/cors": "^10.0.1",
"@fastify/multipart": "^9.0.1",
- "@imengyu/vue3-context-menu": "^1.4.3",
+ "@imengyu/vue3-context-menu": "^1.4.4",
"@nplayer/danmaku": "^1.0.12",
"@rushstack/eslint-patch": "^1.10.4",
"@swc/core": "^1.10.0",
diff --git a/yarn.lock b/yarn.lock
index 3fa797c94..46bfd413a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1088,10 +1088,10 @@
glob "^7.1.2"
signal-exit "^3.0.2"
-"@imengyu/vue3-context-menu@^1.4.3":
- version "1.4.3"
- resolved "https://registry.npmmirror.com/@imengyu/vue3-context-menu/-/vue3-context-menu-1.4.3.tgz#9c4e634eccdc0c9fe5b87e8f7f5e5d5917539c43"
- integrity sha512-W2rT+xllLSg+u/Z36jE+mrjzO8gCIw0YDDyBxywuASmwrBotU4deftW8Zz9GK/QEHBRNyV5nBINZJo2J257Wlg==
+"@imengyu/vue3-context-menu@^1.4.4":
+ version "1.4.4"
+ resolved "https://registry.npmmirror.com/@imengyu/vue3-context-menu/-/vue3-context-menu-1.4.4.tgz#c354c2a261bfc3a115ef906fd61786b810581fd0"
+ integrity sha512-Zjh1BbrvcNbZvsWr9IJl9KQUomf50EeP2GT+mWk63sqatDZxG7ZFX1eltrwRyfSBr+SuFpMvdYv/yRxpBsyw6w==
"@intlify/core-base@10.0.5":
version "10.0.5"
@@ -2906,7 +2906,25 @@ cacheable-request@^7.0.2:
normalize-url "^6.0.1"
responselike "^2.0.0"
-call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
+call-bind-apply-helpers@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.0.tgz#33127b42608972f76812a501d69db5d8ce404979"
+ integrity sha512-CCKAP2tkPau7D3GE8+V8R6sQubA9R5foIzGp+85EXCVSCivuxBNAWqcpn72PKYiIcqoViv/kcUDpaEIMBVi1lQ==
+ dependencies:
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+
+call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
+ integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
+ dependencies:
+ call-bind-apply-helpers "^1.0.0"
+ es-define-property "^1.0.0"
+ get-intrinsic "^1.2.4"
+ set-function-length "^1.2.2"
+
+call-bind@^1.0.7:
version "1.0.7"
resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
@@ -3694,7 +3712,7 @@ debug@^3.1.0:
dependencies:
ms "^2.1.1"
-debuglog@^1.0.1:
+debuglog@*, debuglog@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
integrity sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==
@@ -4058,6 +4076,15 @@ drizzle-orm@^0.37.0:
resolved "https://registry.npmmirror.com/drizzle-orm/-/drizzle-orm-0.37.0.tgz#313c508164922cf99cee5fa17381c503035538fa"
integrity sha512-AsCNACQ/T2CyZUkrBRUqFT2ibHJ9ZHz3+lzYJFFn3hnj7ylIeItMz5kacRG89uSE74nXYShqehr6u+6ks4JR1A==
+dunder-proto@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.0.tgz#c2fce098b3c8f8899554905f4377b6d85dabaa80"
+ integrity sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==
+ dependencies:
+ call-bind-apply-helpers "^1.0.0"
+ es-errors "^1.3.0"
+ gopd "^1.2.0"
+
duplexer3@^0.1.4:
version "0.1.5"
resolved "https://registry.npmmirror.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e"
@@ -4374,6 +4401,11 @@ es-define-property@^1.0.0:
dependencies:
get-intrinsic "^1.2.4"
+es-define-property@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa"
+ integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
+
es-errors@^1.2.1, es-errors@^1.3.0:
version "1.3.0"
resolved "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
@@ -5423,7 +5455,7 @@ get-east-asian-width@^1.0.0:
resolved "https://registry.npmmirror.com/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz#21b4071ee58ed04ee0db653371b55b4299875389"
integrity sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==
-get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
+get-intrinsic@^1.1.3, get-intrinsic@^1.2.4:
version "1.2.4"
resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
@@ -5434,6 +5466,20 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@
has-symbols "^1.0.3"
hasown "^2.0.0"
+get-intrinsic@^1.2.1, get-intrinsic@^1.2.3:
+ version "1.2.5"
+ resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.5.tgz#dfe7dd1b30761b464fe51bf4bb00ac7c37b681e7"
+ integrity sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==
+ dependencies:
+ call-bind-apply-helpers "^1.0.0"
+ dunder-proto "^1.0.0"
+ es-define-property "^1.0.1"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ gopd "^1.2.0"
+ has-symbols "^1.1.0"
+ hasown "^2.0.2"
+
get-port@^3.1.0:
version "3.2.0"
resolved "https://registry.npmmirror.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc"
@@ -5698,12 +5744,10 @@ gopd@^1.0.1:
dependencies:
get-intrinsic "^1.1.3"
-gopd@^1.1.0:
- version "1.1.0"
- resolved "https://registry.npmmirror.com/gopd/-/gopd-1.1.0.tgz#df8f0839c2d48caefc32a025a49294d39606c912"
- integrity sha512-FQoVQnqcdk4hVM4JN1eromaun4iuS34oStkdlLENLdpULsuQcTyXj8w7ayhuUfPwEYZ1ZOooOTT6fdA9Vmx/RA==
- dependencies:
- get-intrinsic "^1.2.4"
+gopd@^1.1.0, gopd@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
+ integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
got@^11.7.0, got@^11.8.5:
version "11.8.6"
@@ -5790,17 +5834,22 @@ has-proto@^1.0.1:
integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
has-proto@^1.0.3:
- version "1.1.0"
- resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.1.0.tgz#deb10494cbbe8809bce168a3b961f42969f5ed43"
- integrity sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q==
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5"
+ integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==
dependencies:
- call-bind "^1.0.7"
+ dunder-proto "^1.0.0"
has-symbols@^1.0.3:
version "1.0.3"
resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+has-symbols@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338"
+ integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
+
has-tostringtag@^1.0.0, has-tostringtag@^1.0.2:
version "1.0.2"
resolved "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
@@ -6084,7 +6133,7 @@ import-lazy@^2.1.0:
resolved "https://registry.npmmirror.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
integrity sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==
-imurmurhash@^0.1.4:
+imurmurhash@*, imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
@@ -7057,6 +7106,11 @@ lockfile@^1.0.4:
dependencies:
signal-exit "^3.0.2"
+lodash._baseindexof@*:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c"
+ integrity sha512-bSYo8Pc/f0qAkr8fPJydpJjtrHiSynYfYBjtANIgXv5xEf1WlTC63dIDlgu0s9dmTvzRu1+JJTxcIAHe+sH0FQ==
+
lodash._baseuniq@~4.6.0:
version "4.6.0"
resolved "https://registry.npmmirror.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8"
@@ -7065,11 +7119,33 @@ lodash._baseuniq@~4.6.0:
lodash._createset "~4.0.0"
lodash._root "~3.0.0"
+lodash._bindcallback@*:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
+ integrity sha512-2wlI0JRAGX8WEf4Gm1p/mv/SZ+jLijpj0jyaE/AXeuQphzCgD8ZQW4oSpoN8JAopujOFGU3KMuq7qfHBWlGpjQ==
+
+lodash._cacheindexof@*:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92"
+ integrity sha512-S8dUjWr7SUT/X6TBIQ/OYoCHo1Stu1ZRy6uMUSKqzFnZp5G5RyQizSm6kvxD2Ewyy6AVfMg4AToeZzKfF99T5w==
+
+lodash._createcache@*:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093"
+ integrity sha512-ev5SP+iFpZOugyab/DEUQxUeZP5qyciVTlgQ1f4Vlw7VUcCD8fVnyIqVUEIaoFH9zjAqdgi69KiofzvVmda/ZQ==
+ dependencies:
+ lodash._getnative "^3.0.0"
+
lodash._createset@~4.0.0:
version "4.0.3"
resolved "https://registry.npmmirror.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26"
integrity sha512-GTkC6YMprrJZCYU3zcqZj+jkXkrXzq3IPBcF/fIPpNEAB4hZEtXU8zp/RwKOvZl43NUmwDbyRk3+ZTbeRdEBXA==
+lodash._getnative@*, lodash._getnative@^3.0.0:
+ version "3.9.1"
+ resolved "https://registry.npmmirror.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
+ integrity sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==
+
lodash._root@~3.0.0:
version "3.0.1"
resolved "https://registry.npmmirror.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
@@ -7095,6 +7171,11 @@ lodash.merge@^4.6.2:
resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+lodash.restparam@*:
+ version "3.6.1"
+ resolved "https://registry.npmmirror.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
+ integrity sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw==
+
lodash.truncate@^4.4.2:
version "4.4.2"
resolved "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
@@ -9258,17 +9339,18 @@ real-require@^0.2.0:
integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==
reflect.getprototypeof@^1.0.6:
- version "1.0.7"
- resolved "https://registry.npmmirror.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.7.tgz#04311b33a1b713ca5eb7b5aed9950a86481858e5"
- integrity sha512-bMvFGIUKlc/eSfXNX+aZ+EL95/EgZzuwA0OBPTbZZDEJw/0AkentjMuM1oiRfwHrshqk4RzdgiTg5CcDalXN5g==
+ version "1.0.8"
+ resolved "https://registry.npmmirror.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.8.tgz#c58afb17a4007b4d1118c07b92c23fca422c5d82"
+ integrity sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==
dependencies:
- call-bind "^1.0.7"
+ call-bind "^1.0.8"
define-properties "^1.2.1"
+ dunder-proto "^1.0.0"
es-abstract "^1.23.5"
es-errors "^1.3.0"
get-intrinsic "^1.2.4"
- gopd "^1.0.1"
- which-builtin-type "^1.1.4"
+ gopd "^1.2.0"
+ which-builtin-type "^1.2.0"
regenerator-runtime@^0.14.0:
version "0.14.1"
@@ -9647,7 +9729,7 @@ set-cookie-parser@^2.6.0:
resolved "https://registry.npmmirror.com/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz#3016f150072202dfbe90fadee053573cc89d2943"
integrity sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==
-set-function-length@^1.2.1:
+set-function-length@^1.2.1, set-function-length@^1.2.2:
version "1.2.2"
resolved "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
@@ -11335,7 +11417,7 @@ which-boxed-primitive@^1.0.2:
is-string "^1.1.0"
is-symbol "^1.1.0"
-which-builtin-type@^1.1.4:
+which-builtin-type@^1.2.0:
version "1.2.0"
resolved "https://registry.npmmirror.com/which-builtin-type/-/which-builtin-type-1.2.0.tgz#58042ac9602d78a6d117c7e811349df1268ba63c"
integrity sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==
From ece3c11910baaee10d19fe6691b83b7e9a230deb Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sun, 8 Dec 2024 23:49:35 +0800
Subject: [PATCH 022/175] [bug] fix t0xml return not stand
---
src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts b/src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts
index f7d0292d2..c6a7774f5 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts
@@ -221,10 +221,10 @@ class T0Adapter {
const { input } = doc;
let parse_url = this.playurl || '';
if (/\.(m3u8|mp4)/.test(input)) {
- return JSON.stringify({
+ return {
parse: 0,
url: input,
- });
+ };
} else {
if (parse_url.startsWith('json:')) {
const purl = parse_url.replace('json:', '') + input;
From 8fbe1f92b637f22596bb3f7fb55a0a30f5902620 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Fri, 13 Dec 2024 02:31:17 +0800
Subject: [PATCH 023/175] [optimize] plugin
---
.../routes/v1/plugin/utils/adapter_install.ts | 163 ++++----
.../src/locales/lang/en_US/pages/lab.ts | 12 +-
.../src/locales/lang/zh_CN/pages/lab.ts | 12 +-
.../lab/components/pluginCenter/index.vue | 363 ++++++++++++------
4 files changed, 368 insertions(+), 182 deletions(-)
diff --git a/src/main/core/server/routes/v1/plugin/utils/adapter_install.ts b/src/main/core/server/routes/v1/plugin/utils/adapter_install.ts
index a1fed9304..e99916d3a 100644
--- a/src/main/core/server/routes/v1/plugin/utils/adapter_install.ts
+++ b/src/main/core/server/routes/v1/plugin/utils/adapter_install.ts
@@ -2,6 +2,7 @@ import npm from 'npm';
import { join, resolve } from 'path';
import workerpool from 'workerpool';
import { JsonDB, Config } from 'node-json-db';
+import { pathToFileURL } from 'url';
import logger from '@main/core/logger';
import {
deleteFile,
@@ -60,7 +61,7 @@ class AdapterHandler {
// 启动插件程序
(async () => {
- let plugins = await this.fetchList();
+ let plugins = await this.fetchList([], true);
plugins = plugins.filter((p) => p.status === 'RUNNING');
try {
await this.start([...new Set(plugins.map((p) => p.name))]);
@@ -84,11 +85,11 @@ class AdapterHandler {
}
}
- async fetchList(plugins: any[] = []) {
+ async fetchList(plugins: any[] = [], all: boolean = false) {
let infoList: AdapterInfo[] = [];
try {
- if (plugins.length === 0) {
+ if (all) {
infoList = await this.db.getData(`${this.dbTable}`);
} else {
for (let plugin of plugins) {
@@ -107,6 +108,19 @@ class AdapterHandler {
return infoList;
}
+ /**
+ * 列出所有已安装插件
+ * @memberof AdapterHandler
+ */
+ async list() {
+ try {
+ return await this.fetchList([], true);
+ } catch (err: any) {
+ logger.error(`[plugin][list][error] ${err.message}`);
+ return [];
+ }
+ }
+
/**
* 获取插件信息
* @param {plugins}
@@ -120,7 +134,6 @@ class AdapterHandler {
return res;
} catch (err: any) {
logger.error(`[plugin][getAdapterInfo][error] ${err.message}`);
- } finally {
return [];
}
}
@@ -132,9 +145,10 @@ class AdapterHandler {
*/
async install(plugins: any[]) {
plugins = [...new Set(plugins)];
+ const projects: any[] = [];
for (const plugin of plugins) {
- let info: { [key: string]: string } = { name: plugin, pluginName: plugin };
+ let info: { [key: string]: string } = {};
try {
// 1.判断项目存在
@@ -146,14 +160,25 @@ class AdapterHandler {
if (!fileExist(pkgPath) || fileState(pkgPath) !== 'file') continue;
const pkgInfo = this.readJsonFile(pkgPath);
if (!pkgInfo || typeof pkgInfo !== 'object') continue;
+
+ info = { ...info, ...pkgInfo };
+
+ // 2.1 type
+ info.type = pkgInfo?.pluginType || 'system';
+ // 2.1 readme
const readmePath = join(pluginBasePath, 'README.md');
info.readme = `### empty`;
if (fileExist(readmePath) && fileState(readmePath) === 'file') info.readme = readFile(readmePath);
- info = { ...pkgInfo, ...info };
+ // 2.2 main
+ if (info.type === 'ui') {
+ info.main = info?.main ? pathToFileURL(resolve(pluginBasePath, info.main)).toString() : 'about:blank';
+ } else if (info?.type === 'system') {
+ info.main = info?.main ? pathToFileURL(resolve(pluginBasePath, info.main)).toString() : '';
+ }
// 2.停止插件
const index = await this.db.getIndex(`${this.dbTable}`, info.name, 'name');
- if (index > -1) await this.stop([plugin]);
+ if (index > -1) await this.stop([info.name]);
// 3.安装插件
const execRes = await this.execCommand('install', { prefix: pluginBasePath }, []);
@@ -161,26 +186,29 @@ class AdapterHandler {
// 4.插件参数
const data = {
- type: info?.pluginType || 'system',
+ type: info?.type || 'system',
name: info?.name || '',
- pluginName: info?.pluginName || '',
+ pluginName: info?.pluginName || info?.name || '',
+ pathName: plugin,
author: info?.author || '',
description: info?.description || '',
- readme: info?.readme || `### empty`,
+ readme: info?.readme || '',
main: info?.main || '',
version: info?.version || '0.0.0',
logo: info?.logo || '',
status: info?.status || 'STOPED',
};
+ logger.info(`[plugin][install][data]`, data);
if (index > -1) await this.db.push(`${this.dbTable}[${index}]`, data, true);
else await this.db.push(`${this.dbTable}[]`, data);
+ projects.push(data.name);
} catch (err: any) {
logger.error(`[plugin][install][error] ${err.message}`);
}
}
- const res = await this.fetchList(plugins);
+ const res = await this.fetchList(projects, false);
return res;
}
@@ -194,29 +222,36 @@ class AdapterHandler {
for (const plugin of plugins) {
try {
- // 1.判断项目存在
- const pluginBasePath = join(this.baseDir, plugin);
- if (!fileExist(pluginBasePath) || fileState(pluginBasePath) !== 'dir') continue;
-
- // 2.停止插件
+ // 1.获取插件信息
const index = await this.db.getIndex(`${this.dbTable}`, plugin, 'name');
- if (index > -1) await this.stop([plugin]);
- else continue;
+ if (index === -1) continue;
+ const pluginInfo = await this.db.getData(`${this.dbTable}[${index}]`);
+ if (Object.keys(pluginInfo).length === 0) continue;
- // 3.删除必要依赖
+ // 2.判断项目存在
+ const pluginBasePath = join(this.baseDir, pluginInfo.pathName);
+ if (!fileExist(pluginBasePath) || fileState(pluginBasePath) !== 'dir') {
+ if (index > -1) await this.db.delete(`${this.dbTable}[${index}]`);
+ continue;
+ }
+
+ // 3.停止插件
+ if (index > -1) await this.stop([pluginInfo.name]);
+
+ // 4.删除必要依赖
const pluginNodeModulesPath = join(pluginBasePath, 'node_modules');
if (fileExist(pluginNodeModulesPath) && fileState(pluginBasePath) === 'dir') deleteDir(pluginNodeModulesPath);
const pluginPkgLockPath = join(pluginBasePath, 'package-lock.json');
if (fileExist(pluginPkgLockPath) && fileState(pluginPkgLockPath) === 'file') deleteFile(pluginPkgLockPath);
- // 4.插件参数
+ // 5.插件参数
await this.db.delete(`${this.dbTable}[${index}]`);
} catch (err: any) {
logger.error(`[plugin][uninstall][error] ${err.message}`);
}
}
- const res = await this.fetchList(plugins);
+ const res = await this.fetchList(plugins, false);
return res;
}
@@ -230,16 +265,20 @@ class AdapterHandler {
for (const plugin of plugins) {
try {
- // 1.判断项目存在
- const pluginBasePath = join(this.baseDir, plugin);
- if (!fileExist(pluginBasePath) || fileState(pluginBasePath) !== 'dir') continue;
-
- // 2.获取参数
+ // 1.获取插件信息
const index = await this.db.getIndex(`${this.dbTable}`, plugin, 'name');
if (index === -1) continue;
const pluginInfo = await this.db.getData(`${this.dbTable}[${index}]`);
+ if (Object.keys(pluginInfo).length === 0) continue;
+
+ // 2.判断项目存在
+ const pluginBasePath = join(this.baseDir, pluginInfo.pathName);
+ if (!fileExist(pluginBasePath) || fileState(pluginBasePath) !== 'dir') {
+ if (index > -1) await this.db.delete(`${this.dbTable}[${index}]`);
+ continue;
+ }
- // 3.获取插件参数
+ // 3.获取pkg参数
const pkgPath = join(pluginBasePath, 'package.json');
if (!fileExist(pkgPath) || fileState(pkgPath) !== 'file') continue;
const pkgInfo = this.readJsonFile(pkgPath);
@@ -247,29 +286,16 @@ class AdapterHandler {
const latestVersion = pkgInfo?.version || '0.0.0';
const installedVersion = pluginInfo?.version || '0.0.0';
- if (latestVersion > installedVersion) await this.install([plugin]);
+ if (latestVersion > installedVersion) await this.install([pluginInfo.pathName]);
} catch (err: any) {
logger.error(`[plugin][update][error] ${err.message}`);
}
}
- const res = await this.fetchList(plugins);
+ const res = await this.fetchList(plugins, false);
return res;
}
- /**
- * 列出所有已安装插件
- * @memberof AdapterHandler
- */
- async list() {
- try {
- return await this.fetchList();
- } catch (err: any) {
- logger.error(`[plugin][list][error] ${err.message}`);
- return [];
- }
- }
-
/**
* 启动插件
* @param plugins
@@ -280,35 +306,38 @@ class AdapterHandler {
for (const plugin of plugins) {
try {
- // 1.判断项目存在
- const pluginBasePath = join(this.baseDir, plugin);
- if (!fileExist(pluginBasePath) || fileState(pluginBasePath) !== 'dir') continue;
-
- // 2.获取参数
+ // 1.获取插件信息
const index = await this.db.getIndex(`${this.dbTable}`, plugin, 'name');
if (index === -1) continue;
const pluginInfo = await this.db.getData(`${this.dbTable}[${index}]`);
+ if (Object.keys(pluginInfo).length === 0) continue;
+
+ // 2.判断项目存在
+ const pluginBasePath = join(this.baseDir, pluginInfo.pathName);
+ if (!fileExist(pluginBasePath) || fileState(pluginBasePath) !== 'dir') {
+ if (index > -1) await this.db.delete(`${this.dbTable}[${index}]`);
+ continue;
+ }
// 3.启动插件
- if (pluginInfo?.main && pluginInfo?.main.endsWith('.js')) {
+ if (pluginInfo?.main && pluginInfo?.main.toString().endsWith('.js')) {
let status = pluginInfo?.status || 'STOPED';
try {
- let pool = this.syncModules.get(`${plugin}`);
+ let pool = this.syncModules.get(`${pluginInfo.name}`);
if (!pool) {
pool = workerpool.pool();
- this.syncModules.set(`${plugin}`, pool);
+ this.syncModules.set(`${pluginInfo.name}`, pool);
}
try {
- let entryModule = resolve(pluginBasePath, pluginInfo.main);
- if (process.platform === 'win32') entryModule = `file:///${entryModule}`;
- const res = await pool.exec(runModule, [entryModule, 'start']);
+ logger.info(`[plugin][start][${pluginInfo.name}] 入口: ${pluginInfo.main}`);
+ const res = await pool.exec(runModule, [pluginInfo.main, 'start']);
if (res.code === 0) status = 'RUNNING';
else status = 'STOPED';
} catch (err: any) {
status = 'STOPED';
- this.syncModules.delete(`${plugin}`);
+ this.syncModules.delete(`${pluginInfo.name}`);
await pool.terminate();
logger.error(`[plugin][start][exec][error] ${err.message}`);
}
@@ -323,7 +352,7 @@ class AdapterHandler {
}
}
- const res = await this.fetchList(plugins);
+ const res = await this.fetchList(plugins, false);
return res;
}
@@ -337,29 +366,33 @@ class AdapterHandler {
for (const plugin of plugins) {
try {
- // 1.判断项目存在
- const pluginBasePath = join(this.baseDir, plugin);
- if (!fileExist(pluginBasePath) || fileState(pluginBasePath) !== 'dir') continue;
-
- // 2.获取参数
+ // 1.获取插件信息
const index = await this.db.getIndex(`${this.dbTable}`, plugin, 'name');
if (index === -1) continue;
const pluginInfo = await this.db.getData(`${this.dbTable}[${index}]`);
+ if (Object.keys(pluginInfo).length === 0) continue;
+
+ // 2.判断项目存在
+ const pluginBasePath = join(this.baseDir, pluginInfo.pathName);
+ if (!fileExist(pluginBasePath) || fileState(pluginBasePath) !== 'dir') {
+ if (index > -1) await this.db.delete(`${this.dbTable}[${index}]`);
+ continue;
+ }
// 3.停止插件
- if (pluginInfo?.main && pluginInfo?.main.endsWith('.js')) {
+ if (pluginInfo?.main && pluginInfo?.main.toString().endsWith('.js')) {
let status = pluginInfo?.status || 'STOPED';
try {
- let pool = this.syncModules.get(`${plugin}`);
+ let pool = this.syncModules.get(`${pluginInfo.name}`);
try {
status = 'STOPED';
- this.syncModules.delete(`${plugin}`);
+ this.syncModules.delete(`${pluginInfo.name}`);
if (pool) await pool.terminate();
} catch (err: any) {
status = 'STOPED';
- this.syncModules.delete(`${plugin}`);
+ this.syncModules.delete(`${pluginInfo.name}`);
if (pool) await pool.terminate();
logger.error(`[plugin][stop][exec][error] ${err.message}`);
}
@@ -374,7 +407,7 @@ class AdapterHandler {
}
}
- const res = await this.fetchList(plugins);
+ const res = await this.fetchList(plugins, false);
return res;
}
diff --git a/src/renderer/src/locales/lang/en_US/pages/lab.ts b/src/renderer/src/locales/lang/en_US/pages/lab.ts
index 9c48bee59..f4a63e825 100644
--- a/src/renderer/src/locales/lang/en_US/pages/lab.ts
+++ b/src/renderer/src/locales/lang/en_US/pages/lab.ts
@@ -374,17 +374,23 @@ export default {
},
control: {
title: 'Control',
- start: 'Start',
- stop: 'Stop',
+ start: 'StartServer',
+ stop: 'StopServer',
+ devtool: 'Devtool',
upgrade: 'Upgrade',
update: 'Update',
install: 'Install',
uninstall: 'UnInstall',
- cancelTip: 'There is unfinished history. Please wait until it is finished',
+ cancelTip: 'The current plug-in has an incomplete command, please wait moment',
+ devtoolDomAttchErrTip: 'The DOM is not mounted on the page, and the developer Tool failed to open',
+ loadUiEntryError: 'Failed to load entry',
},
content: {
title: 'README',
},
+ webview: {
+ title: 'ContentView',
+ },
installDialog: {
tip: {
tip1: 'Put the project into the specified directory, the file name must not have any special characters (if it is already in the directory, it will be ignored).',
diff --git a/src/renderer/src/locales/lang/zh_CN/pages/lab.ts b/src/renderer/src/locales/lang/zh_CN/pages/lab.ts
index 0fe9800fd..4ccf3e901 100644
--- a/src/renderer/src/locales/lang/zh_CN/pages/lab.ts
+++ b/src/renderer/src/locales/lang/zh_CN/pages/lab.ts
@@ -374,17 +374,23 @@ export default {
},
control: {
title: '控制中心',
- start: '启动',
- stop: '停止',
+ start: '启动服务',
+ stop: '停止服务',
+ devtool: '开发者工具',
upgrade: '升级',
update: '更新',
install: '安装',
uninstall: '卸载',
- cancelTip: '历史存在未执行完内容, 请等完成后执行',
+ cancelTip: '当前插件存在未执行完命令, 请稍后',
+ devtoolDomAttchErrTip: '打开开发者工具失败, DOM未挂载到页面上',
+ loadUiEntryError: '加载入口失败',
},
content: {
title: 'README',
},
+ webview: {
+ title: '内容视图',
+ },
installDialog: {
tip: {
tip1: '将项目放入指定目录中, 文件名不可有特殊字符(如已放入则忽略)',
diff --git a/src/renderer/src/pages/lab/components/pluginCenter/index.vue b/src/renderer/src/pages/lab/components/pluginCenter/index.vue
index f18033395..dbff03827 100644
--- a/src/renderer/src/pages/lab/components/pluginCenter/index.vue
+++ b/src/renderer/src/pages/lab/components/pluginCenter/index.vue
@@ -7,7 +7,6 @@
{{ $t('pages.lab.pluginCenter.control.install') }}
- {{ $t('pages.lab.pluginCenter.file') }}
@@ -28,7 +27,7 @@
{{ $t('pages.lab.pluginCenter.installDialog.step') }}1
{{ $t('pages.lab.pluginCenter.installDialog.tip.tip1') }}
-
{{ $t('pages.lab.pluginCenter.installDialog.goDir') }}
+
{{ $t('pages.lab.pluginCenter.installDialog.goDir') }}
{{ $t('pages.lab.pluginCenter.installDialog.step') }}2
@@ -38,68 +37,100 @@
+
-
-
+
+
-
-
@@ -71,14 +71,14 @@ import { putHistory, addHistory, findHistory } from '@/api/history';
import { fetchAnalyzeHelper } from '@/utils/common/film';
import emitter from '@/utils/emitter';
+import { MultiPlayer } from '@/components/player';
import DialogHistoryView from './components/DialogHistory.vue';
import DialogIframemView from './components/DialogIframe.vue';
import DialogSearchView from './components/DialogSearch.vue';
import SharePopup from '@/components/share-popup/index.vue';
import CommonNav from '@/components/common-nav/index.vue';
-import PlayerView from '@/components/player/index.vue';
-const store = usePlayStore();
+const storePlayer = usePlayStore();
const searchText = ref('');
const urlTitle = ref(''); // 播放地址的标题
const analyzeUrl = ref
(''); // 输入需要解析地址
@@ -181,13 +181,12 @@ const getVideoInfo = async (url: string, title: string) => {
playFormData.value.type = analyzeRes.mediaType;
playFormData.value.url = analyzeRes.url;
playFormData.value.headers = analyzeRes.headers;
- const { playerMode } = store.setting;
+ const playerMode = storePlayer.setting.playerMode;
if (playerMode.type === 'custom') {
window.electron.ipcRenderer.send('call-player', playerMode.external, playFormData.value.url);
} else {
if (playerRef.value) {
- await playerRef.value.init();
- await playerRef.value.create(playFormData.value);
+ await playerRef.value.create(playFormData.value, playerMode.type);
};
}
diff --git a/src/renderer/src/pages/lab/components/snifferPlay/index.vue b/src/renderer/src/pages/lab/components/snifferPlay/index.vue
index 79131deeb..f15d75140 100644
--- a/src/renderer/src/pages/lab/components/snifferPlay/index.vue
+++ b/src/renderer/src/pages/lab/components/snifferPlay/index.vue
@@ -54,6 +54,7 @@
+
@@ -65,7 +66,7 @@
@@ -75,11 +76,13 @@
-
+
diff --git a/src/renderer/src/components/markdown-render/style/github-markdown.less b/src/renderer/src/components/markdown-render/style/github-markdown.less
new file mode 100644
index 000000000..d838fd29d
--- /dev/null
+++ b/src/renderer/src/components/markdown-render/style/github-markdown.less
@@ -0,0 +1,1103 @@
+:root[theme-mode='dark'] {
+ .markdown-body {
+ color-scheme: dark;
+ --color-prettylights-syntax-comment: #8b949e;
+ --color-prettylights-syntax-constant: #79c0ff;
+ --color-prettylights-syntax-entity: #d2a8ff;
+ --color-prettylights-syntax-storage-modifier-import: #c9d1d9;
+ --color-prettylights-syntax-entity-tag: #7ee787;
+ --color-prettylights-syntax-keyword: #ff7b72;
+ --color-prettylights-syntax-string: #a5d6ff;
+ --color-prettylights-syntax-variable: #ffa657;
+ --color-prettylights-syntax-brackethighlighter-unmatched: #f85149;
+ --color-prettylights-syntax-invalid-illegal-text: #f0f6fc;
+ --color-prettylights-syntax-invalid-illegal-bg: #8e1519;
+ --color-prettylights-syntax-carriage-return-text: #f0f6fc;
+ --color-prettylights-syntax-carriage-return-bg: #b62324;
+ --color-prettylights-syntax-string-regexp: #7ee787;
+ --color-prettylights-syntax-markup-list: #f2cc60;
+ --color-prettylights-syntax-markup-heading: #1f6feb;
+ --color-prettylights-syntax-markup-italic: #c9d1d9;
+ --color-prettylights-syntax-markup-bold: #c9d1d9;
+ --color-prettylights-syntax-markup-deleted-text: #ffdcd7;
+ --color-prettylights-syntax-markup-deleted-bg: #67060c;
+ --color-prettylights-syntax-markup-inserted-text: #aff5b4;
+ --color-prettylights-syntax-markup-inserted-bg: #033a16;
+ --color-prettylights-syntax-markup-changed-text: #ffdfb6;
+ --color-prettylights-syntax-markup-changed-bg: #5a1e02;
+ --color-prettylights-syntax-markup-ignored-text: #c9d1d9;
+ --color-prettylights-syntax-markup-ignored-bg: #1158c7;
+ --color-prettylights-syntax-meta-diff-range: #d2a8ff;
+ --color-prettylights-syntax-brackethighlighter-angle: #8b949e;
+ --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;
+ --color-prettylights-syntax-constant-other-reference-link: #a5d6ff;
+ --color-fg-default: #c9d1d9;
+ --color-fg-muted: #8b949e;
+ --color-fg-subtle: #6e7681;
+ --color-canvas-default: #0d1117;
+ --color-canvas-subtle: #161b22;
+ --color-border-default: #30363d;
+ --color-border-muted: #21262d;
+ --color-neutral-muted: rgba(110,118,129,0.4);
+ --color-accent-fg: #58a6ff;
+ --color-accent-emphasis: #1f6feb;
+ --color-attention-subtle: rgba(187,128,9,0.15);
+ --color-danger-fg: #f85149;
+ }
+}
+
+:root,
+:root[theme-mode='light'] {
+ .markdown-body {
+ color-scheme: light;
+ --color-prettylights-syntax-comment: #6e7781;
+ --color-prettylights-syntax-constant: #0550ae;
+ --color-prettylights-syntax-entity: #8250df;
+ --color-prettylights-syntax-storage-modifier-import: #24292f;
+ --color-prettylights-syntax-entity-tag: #116329;
+ --color-prettylights-syntax-keyword: #cf222e;
+ --color-prettylights-syntax-string: #0a3069;
+ --color-prettylights-syntax-variable: #953800;
+ --color-prettylights-syntax-brackethighlighter-unmatched: #82071e;
+ --color-prettylights-syntax-invalid-illegal-text: #f6f8fa;
+ --color-prettylights-syntax-invalid-illegal-bg: #82071e;
+ --color-prettylights-syntax-carriage-return-text: #f6f8fa;
+ --color-prettylights-syntax-carriage-return-bg: #cf222e;
+ --color-prettylights-syntax-string-regexp: #116329;
+ --color-prettylights-syntax-markup-list: #3b2300;
+ --color-prettylights-syntax-markup-heading: #0550ae;
+ --color-prettylights-syntax-markup-italic: #24292f;
+ --color-prettylights-syntax-markup-bold: #24292f;
+ --color-prettylights-syntax-markup-deleted-text: #82071e;
+ --color-prettylights-syntax-markup-deleted-bg: #ffebe9;
+ --color-prettylights-syntax-markup-inserted-text: #116329;
+ --color-prettylights-syntax-markup-inserted-bg: #dafbe1;
+ --color-prettylights-syntax-markup-changed-text: #953800;
+ --color-prettylights-syntax-markup-changed-bg: #ffd8b5;
+ --color-prettylights-syntax-markup-ignored-text: #eaeef2;
+ --color-prettylights-syntax-markup-ignored-bg: #0550ae;
+ --color-prettylights-syntax-meta-diff-range: #8250df;
+ --color-prettylights-syntax-brackethighlighter-angle: #57606a;
+ --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;
+ --color-prettylights-syntax-constant-other-reference-link: #0a3069;
+ --color-fg-default: #24292f;
+ --color-fg-muted: #57606a;
+ --color-fg-subtle: #6e7781;
+ --color-canvas-default: #ffffff;
+ --color-canvas-subtle: #f6f8fa;
+ --color-border-default: #d0d7de;
+ --color-border-muted: hsla(210,18%,87%,1);
+ --color-neutral-muted: rgba(175,184,193,0.2);
+ --color-accent-fg: #0969da;
+ --color-accent-emphasis: #0969da;
+ --color-attention-subtle: #fff8c5;
+ --color-danger-fg: #cf222e;
+ }
+}
+
+.markdown-body {
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+ margin: 0;
+ color: var(--color-fg-default);
+ background-color: var(--color-canvas-default);
+ font-family: -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";
+ font-size: 16px;
+ line-height: 1.5;
+ word-wrap: break-word;
+}
+
+.markdown-body .octicon {
+ display: inline-block;
+ fill: currentColor;
+ vertical-align: text-bottom;
+}
+
+.markdown-body h1:hover .anchor .octicon-link:before,
+.markdown-body h2:hover .anchor .octicon-link:before,
+.markdown-body h3:hover .anchor .octicon-link:before,
+.markdown-body h4:hover .anchor .octicon-link:before,
+.markdown-body h5:hover .anchor .octicon-link:before,
+.markdown-body h6:hover .anchor .octicon-link:before {
+ width: 16px;
+ height: 16px;
+ content: ' ';
+ display: inline-block;
+ background-color: currentColor;
+ -webkit-mask-image: url("data:image/svg+xml,
");
+ mask-image: url("data:image/svg+xml,
");
+}
+
+.markdown-body details,
+.markdown-body figcaption,
+.markdown-body figure {
+ display: block;
+}
+
+.markdown-body summary {
+ display: list-item;
+}
+
+.markdown-body [hidden] {
+ display: none !important;
+}
+
+.markdown-body a {
+ background-color: transparent;
+ color: var(--color-accent-fg);
+ text-decoration: none;
+}
+
+.markdown-body abbr[title] {
+ border-bottom: none;
+ text-decoration: underline dotted;
+}
+
+.markdown-body b,
+.markdown-body strong {
+ font-weight: var(--base-text-weight-semibold, 600);
+}
+
+.markdown-body dfn {
+ font-style: italic;
+}
+
+.markdown-body h1 {
+ margin: .67em 0;
+ font-weight: var(--base-text-weight-semibold, 600);
+ padding-bottom: .3em;
+ font-size: 2em;
+ border-bottom: 1px solid var(--color-border-muted);
+}
+
+.markdown-body mark {
+ background-color: var(--color-attention-subtle);
+ color: var(--color-fg-default);
+}
+
+.markdown-body small {
+ font-size: 90%;
+}
+
+.markdown-body sub,
+.markdown-body sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+.markdown-body sub {
+ bottom: -0.25em;
+}
+
+.markdown-body sup {
+ top: -0.5em;
+}
+
+.markdown-body img {
+ border-style: none;
+ max-width: 100%;
+ box-sizing: content-box;
+ background-color: var(--color-canvas-default);
+}
+
+.markdown-body code,
+.markdown-body kbd,
+.markdown-body pre,
+.markdown-body samp {
+ font-family: monospace;
+ font-size: 1em;
+}
+
+.markdown-body figure {
+ margin: 1em 40px;
+}
+
+.markdown-body hr {
+ box-sizing: content-box;
+ overflow: hidden;
+ background: transparent;
+ border-bottom: 1px solid var(--color-border-muted);
+ height: .25em;
+ padding: 0;
+ margin: 24px 0;
+ background-color: var(--color-border-default);
+ border: 0;
+}
+
+.markdown-body input {
+ font: inherit;
+ margin: 0;
+ overflow: visible;
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+
+.markdown-body [type=button],
+.markdown-body [type=reset],
+.markdown-body [type=submit] {
+ -webkit-appearance: button;
+}
+
+.markdown-body [type=checkbox],
+.markdown-body [type=radio] {
+ box-sizing: border-box;
+ padding: 0;
+}
+
+.markdown-body [type=number]::-webkit-inner-spin-button,
+.markdown-body [type=number]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+.markdown-body [type=search]::-webkit-search-cancel-button,
+.markdown-body [type=search]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+.markdown-body ::-webkit-input-placeholder {
+ color: inherit;
+ opacity: .54;
+}
+
+.markdown-body ::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ font: inherit;
+}
+
+.markdown-body a:hover {
+ text-decoration: underline;
+}
+
+.markdown-body ::placeholder {
+ color: var(--color-fg-subtle);
+ opacity: 1;
+}
+
+.markdown-body hr::before {
+ display: table;
+ content: "";
+}
+
+.markdown-body hr::after {
+ display: table;
+ clear: both;
+ content: "";
+}
+
+.markdown-body table {
+ border-spacing: 0;
+ border-collapse: collapse;
+ display: block;
+ width: max-content;
+ max-width: 100%;
+ overflow: auto;
+}
+
+.markdown-body td,
+.markdown-body th {
+ padding: 0;
+}
+
+.markdown-body details summary {
+ cursor: pointer;
+}
+
+.markdown-body details:not([open])>*:not(summary) {
+ display: none !important;
+}
+
+.markdown-body a:focus,
+.markdown-body [role=button]:focus,
+.markdown-body input[type=radio]:focus,
+.markdown-body input[type=checkbox]:focus {
+ outline: 2px solid var(--color-accent-fg);
+ outline-offset: -2px;
+ box-shadow: none;
+}
+
+.markdown-body a:focus:not(:focus-visible),
+.markdown-body [role=button]:focus:not(:focus-visible),
+.markdown-body input[type=radio]:focus:not(:focus-visible),
+.markdown-body input[type=checkbox]:focus:not(:focus-visible) {
+ outline: solid 1px transparent;
+}
+
+.markdown-body a:focus-visible,
+.markdown-body [role=button]:focus-visible,
+.markdown-body input[type=radio]:focus-visible,
+.markdown-body input[type=checkbox]:focus-visible {
+ outline: 2px solid var(--color-accent-fg);
+ outline-offset: -2px;
+ box-shadow: none;
+}
+
+.markdown-body a:not([class]):focus,
+.markdown-body a:not([class]):focus-visible,
+.markdown-body input[type=radio]:focus,
+.markdown-body input[type=radio]:focus-visible,
+.markdown-body input[type=checkbox]:focus,
+.markdown-body input[type=checkbox]:focus-visible {
+ outline-offset: 0;
+}
+
+.markdown-body kbd {
+ display: inline-block;
+ padding: 3px 5px;
+ font: 11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
+ line-height: 10px;
+ color: var(--color-fg-default);
+ vertical-align: middle;
+ background-color: var(--color-canvas-subtle);
+ border: solid 1px var(--color-neutral-muted);
+ border-bottom-color: var(--color-neutral-muted);
+ border-radius: 6px;
+ box-shadow: inset 0 -1px 0 var(--color-neutral-muted);
+}
+
+.markdown-body h1,
+.markdown-body h2,
+.markdown-body h3,
+.markdown-body h4,
+.markdown-body h5,
+.markdown-body h6 {
+ margin-top: 24px;
+ margin-bottom: 16px;
+ font-weight: var(--base-text-weight-semibold, 600);
+ line-height: 1.25;
+}
+
+.markdown-body h2 {
+ font-weight: var(--base-text-weight-semibold, 600);
+ padding-bottom: .3em;
+ font-size: 1.5em;
+ border-bottom: 1px solid var(--color-border-muted);
+}
+
+.markdown-body h3 {
+ font-weight: var(--base-text-weight-semibold, 600);
+ font-size: 1.25em;
+}
+
+.markdown-body h4 {
+ font-weight: var(--base-text-weight-semibold, 600);
+ font-size: 1em;
+}
+
+.markdown-body h5 {
+ font-weight: var(--base-text-weight-semibold, 600);
+ font-size: .875em;
+}
+
+.markdown-body h6 {
+ font-weight: var(--base-text-weight-semibold, 600);
+ font-size: .85em;
+ color: var(--color-fg-muted);
+}
+
+.markdown-body p {
+ margin-top: 0;
+ margin-bottom: 10px;
+}
+
+.markdown-body blockquote {
+ margin: 0;
+ padding: 0 1em;
+ color: var(--color-fg-muted);
+ border-left: .25em solid var(--color-border-default);
+}
+
+.markdown-body ul,
+.markdown-body ol {
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-left: 2em;
+}
+
+.markdown-body ol ol,
+.markdown-body ul ol {
+ list-style-type: lower-roman;
+}
+
+.markdown-body ul ul ol,
+.markdown-body ul ol ol,
+.markdown-body ol ul ol,
+.markdown-body ol ol ol {
+ list-style-type: lower-alpha;
+}
+
+.markdown-body dd {
+ margin-left: 0;
+}
+
+.markdown-body tt,
+.markdown-body code,
+.markdown-body samp {
+ font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
+ font-size: 12px;
+}
+
+.markdown-body pre {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;
+ font-size: 12px;
+ word-wrap: normal;
+}
+
+.markdown-body .octicon {
+ display: inline-block;
+ overflow: visible !important;
+ vertical-align: text-bottom;
+ fill: currentColor;
+}
+
+.markdown-body input::-webkit-outer-spin-button,
+.markdown-body input::-webkit-inner-spin-button {
+ margin: 0;
+ -webkit-appearance: none;
+ appearance: none;
+}
+
+.markdown-body::before {
+ display: table;
+ content: "";
+}
+
+.markdown-body::after {
+ display: table;
+ clear: both;
+ content: "";
+}
+
+.markdown-body>*:first-child {
+ margin-top: 0 !important;
+}
+
+.markdown-body>*:last-child {
+ margin-bottom: 0 !important;
+}
+
+.markdown-body a:not([href]) {
+ color: inherit;
+ text-decoration: none;
+}
+
+.markdown-body .absent {
+ color: var(--color-danger-fg);
+}
+
+.markdown-body .anchor {
+ float: left;
+ padding-right: 4px;
+ margin-left: -20px;
+ line-height: 1;
+}
+
+.markdown-body .anchor:focus {
+ outline: none;
+}
+
+.markdown-body p,
+.markdown-body blockquote,
+.markdown-body ul,
+.markdown-body ol,
+.markdown-body dl,
+.markdown-body table,
+.markdown-body pre,
+.markdown-body details {
+ margin-top: 0;
+ margin-bottom: 16px;
+}
+
+.markdown-body blockquote>:first-child {
+ margin-top: 0;
+}
+
+.markdown-body blockquote>:last-child {
+ margin-bottom: 0;
+}
+
+.markdown-body h1 .octicon-link,
+.markdown-body h2 .octicon-link,
+.markdown-body h3 .octicon-link,
+.markdown-body h4 .octicon-link,
+.markdown-body h5 .octicon-link,
+.markdown-body h6 .octicon-link {
+ color: var(--color-fg-default);
+ vertical-align: middle;
+ visibility: hidden;
+}
+
+.markdown-body h1:hover .anchor,
+.markdown-body h2:hover .anchor,
+.markdown-body h3:hover .anchor,
+.markdown-body h4:hover .anchor,
+.markdown-body h5:hover .anchor,
+.markdown-body h6:hover .anchor {
+ text-decoration: none;
+}
+
+.markdown-body h1:hover .anchor .octicon-link,
+.markdown-body h2:hover .anchor .octicon-link,
+.markdown-body h3:hover .anchor .octicon-link,
+.markdown-body h4:hover .anchor .octicon-link,
+.markdown-body h5:hover .anchor .octicon-link,
+.markdown-body h6:hover .anchor .octicon-link {
+ visibility: visible;
+}
+
+.markdown-body h1 tt,
+.markdown-body h1 code,
+.markdown-body h2 tt,
+.markdown-body h2 code,
+.markdown-body h3 tt,
+.markdown-body h3 code,
+.markdown-body h4 tt,
+.markdown-body h4 code,
+.markdown-body h5 tt,
+.markdown-body h5 code,
+.markdown-body h6 tt,
+.markdown-body h6 code {
+ padding: 0 .2em;
+ font-size: inherit;
+}
+
+.markdown-body summary h1,
+.markdown-body summary h2,
+.markdown-body summary h3,
+.markdown-body summary h4,
+.markdown-body summary h5,
+.markdown-body summary h6 {
+ display: inline-block;
+}
+
+.markdown-body summary h1 .anchor,
+.markdown-body summary h2 .anchor,
+.markdown-body summary h3 .anchor,
+.markdown-body summary h4 .anchor,
+.markdown-body summary h5 .anchor,
+.markdown-body summary h6 .anchor {
+ margin-left: -40px;
+}
+
+.markdown-body summary h1,
+.markdown-body summary h2 {
+ padding-bottom: 0;
+ border-bottom: 0;
+}
+
+.markdown-body ul.no-list,
+.markdown-body ol.no-list {
+ padding: 0;
+ list-style-type: none;
+}
+
+.markdown-body ol[type=a] {
+ list-style-type: lower-alpha;
+}
+
+.markdown-body ol[type=A] {
+ list-style-type: upper-alpha;
+}
+
+.markdown-body ol[type=i] {
+ list-style-type: lower-roman;
+}
+
+.markdown-body ol[type=I] {
+ list-style-type: upper-roman;
+}
+
+.markdown-body ol[type="1"] {
+ list-style-type: decimal;
+}
+
+.markdown-body div>ol:not([type]) {
+ list-style-type: decimal;
+}
+
+.markdown-body ul ul,
+.markdown-body ul ol,
+.markdown-body ol ol,
+.markdown-body ol ul {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+.markdown-body li>p {
+ margin-top: 16px;
+}
+
+.markdown-body li+li {
+ margin-top: .25em;
+}
+
+.markdown-body dl {
+ padding: 0;
+}
+
+.markdown-body dl dt {
+ padding: 0;
+ margin-top: 16px;
+ font-size: 1em;
+ font-style: italic;
+ font-weight: var(--base-text-weight-semibold, 600);
+}
+
+.markdown-body dl dd {
+ padding: 0 16px;
+ margin-bottom: 16px;
+}
+
+.markdown-body table th {
+ font-weight: var(--base-text-weight-semibold, 600);
+}
+
+.markdown-body table th,
+.markdown-body table td {
+ padding: 6px 13px;
+ border: 1px solid var(--color-border-default);
+}
+
+.markdown-body table tr {
+ background-color: var(--color-canvas-default);
+ border-top: 1px solid var(--color-border-muted);
+}
+
+.markdown-body table tr:nth-child(2n) {
+ background-color: var(--color-canvas-subtle);
+}
+
+.markdown-body table img {
+ background-color: transparent;
+}
+
+.markdown-body img[align=right] {
+ padding-left: 20px;
+}
+
+.markdown-body img[align=left] {
+ padding-right: 20px;
+}
+
+.markdown-body .emoji {
+ max-width: none;
+ vertical-align: text-top;
+ background-color: transparent;
+}
+
+.markdown-body span.frame {
+ display: block;
+ overflow: hidden;
+}
+
+.markdown-body span.frame>span {
+ display: block;
+ float: left;
+ width: auto;
+ padding: 7px;
+ margin: 13px 0 0;
+ overflow: hidden;
+ border: 1px solid var(--color-border-default);
+}
+
+.markdown-body span.frame span img {
+ display: block;
+ float: left;
+}
+
+.markdown-body span.frame span span {
+ display: block;
+ padding: 5px 0 0;
+ clear: both;
+ color: var(--color-fg-default);
+}
+
+.markdown-body span.align-center {
+ display: block;
+ overflow: hidden;
+ clear: both;
+}
+
+.markdown-body span.align-center>span {
+ display: block;
+ margin: 13px auto 0;
+ overflow: hidden;
+ text-align: center;
+}
+
+.markdown-body span.align-center span img {
+ margin: 0 auto;
+ text-align: center;
+}
+
+.markdown-body span.align-right {
+ display: block;
+ overflow: hidden;
+ clear: both;
+}
+
+.markdown-body span.align-right>span {
+ display: block;
+ margin: 13px 0 0;
+ overflow: hidden;
+ text-align: right;
+}
+
+.markdown-body span.align-right span img {
+ margin: 0;
+ text-align: right;
+}
+
+.markdown-body span.float-left {
+ display: block;
+ float: left;
+ margin-right: 13px;
+ overflow: hidden;
+}
+
+.markdown-body span.float-left span {
+ margin: 13px 0 0;
+}
+
+.markdown-body span.float-right {
+ display: block;
+ float: right;
+ margin-left: 13px;
+ overflow: hidden;
+}
+
+.markdown-body span.float-right>span {
+ display: block;
+ margin: 13px auto 0;
+ overflow: hidden;
+ text-align: right;
+}
+
+.markdown-body code,
+.markdown-body tt {
+ padding: .2em .4em;
+ margin: 0;
+ font-size: 85%;
+ white-space: break-spaces;
+ background-color: var(--color-neutral-muted);
+ border-radius: 6px;
+}
+
+.markdown-body code br,
+.markdown-body tt br {
+ display: none;
+}
+
+.markdown-body del code {
+ text-decoration: inherit;
+}
+
+.markdown-body samp {
+ font-size: 85%;
+}
+
+.markdown-body pre code {
+ font-size: 100%;
+}
+
+.markdown-body pre>code {
+ padding: 0;
+ margin: 0;
+ word-break: normal;
+ white-space: pre;
+ background: transparent;
+ border: 0;
+}
+
+.markdown-body .highlight {
+ margin-bottom: 16px;
+}
+
+.markdown-body .highlight pre {
+ margin-bottom: 0;
+ word-break: normal;
+}
+
+.markdown-body .highlight pre,
+.markdown-body pre {
+ padding: 16px;
+ overflow: auto;
+ font-size: 85%;
+ line-height: 1.45;
+ background-color: var(--color-canvas-subtle);
+ border-radius: 6px;
+}
+
+.markdown-body pre code,
+.markdown-body pre tt {
+ display: inline;
+ max-width: auto;
+ padding: 0;
+ margin: 0;
+ overflow: visible;
+ line-height: inherit;
+ word-wrap: normal;
+ background-color: transparent;
+ border: 0;
+}
+
+.markdown-body .csv-data td,
+.markdown-body .csv-data th {
+ padding: 5px;
+ overflow: hidden;
+ font-size: 12px;
+ line-height: 1;
+ text-align: left;
+ white-space: nowrap;
+}
+
+.markdown-body .csv-data .blob-num {
+ padding: 10px 8px 9px;
+ text-align: right;
+ background: var(--color-canvas-default);
+ border: 0;
+}
+
+.markdown-body .csv-data tr {
+ border-top: 0;
+}
+
+.markdown-body .csv-data th {
+ font-weight: var(--base-text-weight-semibold, 600);
+ background: var(--color-canvas-subtle);
+ border-top: 0;
+}
+
+.markdown-body [data-footnote-ref]::before {
+ content: "[";
+}
+
+.markdown-body [data-footnote-ref]::after {
+ content: "]";
+}
+
+.markdown-body .footnotes {
+ font-size: 12px;
+ color: var(--color-fg-muted);
+ border-top: 1px solid var(--color-border-default);
+}
+
+.markdown-body .footnotes ol {
+ padding-left: 16px;
+}
+
+.markdown-body .footnotes ol ul {
+ display: inline-block;
+ padding-left: 16px;
+ margin-top: 16px;
+}
+
+.markdown-body .footnotes li {
+ position: relative;
+}
+
+.markdown-body .footnotes li:target::before {
+ position: absolute;
+ top: -8px;
+ right: -8px;
+ bottom: -8px;
+ left: -24px;
+ pointer-events: none;
+ content: "";
+ border: 2px solid var(--color-accent-emphasis);
+ border-radius: 6px;
+}
+
+.markdown-body .footnotes li:target {
+ color: var(--color-fg-default);
+}
+
+.markdown-body .footnotes .data-footnote-backref g-emoji {
+ font-family: monospace;
+}
+
+.markdown-body .pl-c {
+ color: var(--color-prettylights-syntax-comment);
+}
+
+.markdown-body .pl-c1,
+.markdown-body .pl-s .pl-v {
+ color: var(--color-prettylights-syntax-constant);
+}
+
+.markdown-body .pl-e,
+.markdown-body .pl-en {
+ color: var(--color-prettylights-syntax-entity);
+}
+
+.markdown-body .pl-smi,
+.markdown-body .pl-s .pl-s1 {
+ color: var(--color-prettylights-syntax-storage-modifier-import);
+}
+
+.markdown-body .pl-ent {
+ color: var(--color-prettylights-syntax-entity-tag);
+}
+
+.markdown-body .pl-k {
+ color: var(--color-prettylights-syntax-keyword);
+}
+
+.markdown-body .pl-s,
+.markdown-body .pl-pds,
+.markdown-body .pl-s .pl-pse .pl-s1,
+.markdown-body .pl-sr,
+.markdown-body .pl-sr .pl-cce,
+.markdown-body .pl-sr .pl-sre,
+.markdown-body .pl-sr .pl-sra {
+ color: var(--color-prettylights-syntax-string);
+}
+
+.markdown-body .pl-v,
+.markdown-body .pl-smw {
+ color: var(--color-prettylights-syntax-variable);
+}
+
+.markdown-body .pl-bu {
+ color: var(--color-prettylights-syntax-brackethighlighter-unmatched);
+}
+
+.markdown-body .pl-ii {
+ color: var(--color-prettylights-syntax-invalid-illegal-text);
+ background-color: var(--color-prettylights-syntax-invalid-illegal-bg);
+}
+
+.markdown-body .pl-c2 {
+ color: var(--color-prettylights-syntax-carriage-return-text);
+ background-color: var(--color-prettylights-syntax-carriage-return-bg);
+}
+
+.markdown-body .pl-sr .pl-cce {
+ font-weight: bold;
+ color: var(--color-prettylights-syntax-string-regexp);
+}
+
+.markdown-body .pl-ml {
+ color: var(--color-prettylights-syntax-markup-list);
+}
+
+.markdown-body .pl-mh,
+.markdown-body .pl-mh .pl-en,
+.markdown-body .pl-ms {
+ font-weight: bold;
+ color: var(--color-prettylights-syntax-markup-heading);
+}
+
+.markdown-body .pl-mi {
+ font-style: italic;
+ color: var(--color-prettylights-syntax-markup-italic);
+}
+
+.markdown-body .pl-mb {
+ font-weight: bold;
+ color: var(--color-prettylights-syntax-markup-bold);
+}
+
+.markdown-body .pl-md {
+ color: var(--color-prettylights-syntax-markup-deleted-text);
+ background-color: var(--color-prettylights-syntax-markup-deleted-bg);
+}
+
+.markdown-body .pl-mi1 {
+ color: var(--color-prettylights-syntax-markup-inserted-text);
+ background-color: var(--color-prettylights-syntax-markup-inserted-bg);
+}
+
+.markdown-body .pl-mc {
+ color: var(--color-prettylights-syntax-markup-changed-text);
+ background-color: var(--color-prettylights-syntax-markup-changed-bg);
+}
+
+.markdown-body .pl-mi2 {
+ color: var(--color-prettylights-syntax-markup-ignored-text);
+ background-color: var(--color-prettylights-syntax-markup-ignored-bg);
+}
+
+.markdown-body .pl-mdr {
+ font-weight: bold;
+ color: var(--color-prettylights-syntax-meta-diff-range);
+}
+
+.markdown-body .pl-ba {
+ color: var(--color-prettylights-syntax-brackethighlighter-angle);
+}
+
+.markdown-body .pl-sg {
+ color: var(--color-prettylights-syntax-sublimelinter-gutter-mark);
+}
+
+.markdown-body .pl-corl {
+ text-decoration: underline;
+ color: var(--color-prettylights-syntax-constant-other-reference-link);
+}
+
+.markdown-body g-emoji {
+ display: inline-block;
+ min-width: 1ch;
+ font-family: "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";
+ font-size: 1em;
+ font-style: normal !important;
+ font-weight: var(--base-text-weight-normal, 400);
+ line-height: 1;
+ vertical-align: -0.075em;
+}
+
+.markdown-body g-emoji img {
+ width: 1em;
+ height: 1em;
+}
+
+.markdown-body .task-list-item {
+ list-style-type: none;
+}
+
+.markdown-body .task-list-item label {
+ font-weight: var(--base-text-weight-normal, 400);
+}
+
+.markdown-body .task-list-item.enabled label {
+ cursor: pointer;
+}
+
+.markdown-body .task-list-item+.task-list-item {
+ margin-top: 4px;
+}
+
+.markdown-body .task-list-item .handle {
+ display: none;
+}
+
+.markdown-body .task-list-item-checkbox {
+ margin: 0 .2em .25em -1.4em;
+ vertical-align: middle;
+}
+
+.markdown-body .contains-task-list:dir(rtl) .task-list-item-checkbox {
+ margin: 0 -1.6em .25em .2em;
+}
+
+.markdown-body .contains-task-list {
+ position: relative;
+}
+
+.markdown-body .contains-task-list:hover .task-list-item-convert-container,
+.markdown-body .contains-task-list:focus-within .task-list-item-convert-container {
+ display: block;
+ width: auto;
+ height: 24px;
+ overflow: visible;
+ clip: auto;
+}
+
+.markdown-body ::-webkit-calendar-picker-indicator {
+ filter: invert(50%);
+}
diff --git a/src/renderer/src/components/markdown-render/style/highlight.less b/src/renderer/src/components/markdown-render/style/highlight.less
new file mode 100644
index 000000000..33c3942a9
--- /dev/null
+++ b/src/renderer/src/components/markdown-render/style/highlight.less
@@ -0,0 +1,204 @@
+:root[theme-mode='dark'] {
+ pre code.hljs {
+ display: block;
+ overflow-x: auto;
+ padding: 1em
+ }
+
+ code.hljs {
+ padding: 3px 5px
+ }
+
+ .hljs {
+ color: #abb2bf;
+ background: #282c34
+ }
+
+ .hljs-keyword,
+ .hljs-operator,
+ .hljs-pattern-match {
+ color: #f92672
+ }
+
+ .hljs-function,
+ .hljs-pattern-match .hljs-constructor {
+ color: #61aeee
+ }
+
+ .hljs-function .hljs-params {
+ color: #a6e22e
+ }
+
+ .hljs-function .hljs-params .hljs-typing {
+ color: #fd971f
+ }
+
+ .hljs-module-access .hljs-module {
+ color: #7e57c2
+ }
+
+ .hljs-constructor {
+ color: #e2b93d
+ }
+
+ .hljs-constructor .hljs-string {
+ color: #9ccc65
+ }
+
+ .hljs-comment,
+ .hljs-quote {
+ color: #b18eb1;
+ font-style: italic
+ }
+
+ .hljs-doctag,
+ .hljs-formula {
+ color: #c678dd
+ }
+
+ .hljs-deletion,
+ .hljs-name,
+ .hljs-section,
+ .hljs-selector-tag,
+ .hljs-subst {
+ color: #e06c75
+ }
+
+ .hljs-literal {
+ color: #56b6c2
+ }
+
+ .hljs-addition,
+ .hljs-attribute,
+ .hljs-meta .hljs-string,
+ .hljs-regexp,
+ .hljs-string {
+ color: #98c379
+ }
+
+ .hljs-built_in,
+ .hljs-class .hljs-title,
+ .hljs-title.class_ {
+ color: #e6c07b
+ }
+
+ .hljs-attr,
+ .hljs-number,
+ .hljs-selector-attr,
+ .hljs-selector-class,
+ .hljs-selector-pseudo,
+ .hljs-template-variable,
+ .hljs-type,
+ .hljs-variable {
+ color: #d19a66
+ }
+
+ .hljs-bullet,
+ .hljs-link,
+ .hljs-meta,
+ .hljs-selector-id,
+ .hljs-symbol,
+ .hljs-title {
+ color: #61aeee
+ }
+
+ .hljs-emphasis {
+ font-style: italic
+ }
+
+ .hljs-strong {
+ font-weight: 700
+ }
+
+ .hljs-link {
+ text-decoration: underline
+ }
+}
+
+:root,
+:root[theme-mode='light'] {
+ pre code.hljs {
+ display: block;
+ overflow-x: auto;
+ padding: 1em
+ }
+
+ code.hljs {
+ padding: 3px 5px
+ }
+
+ .hljs {
+ color: #383a42;
+ background: #fafafa
+ }
+
+ .hljs-comment,
+ .hljs-quote {
+ color: #a0a1a7;
+ font-style: italic
+ }
+
+ .hljs-doctag,
+ .hljs-formula,
+ .hljs-keyword {
+ color: #a626a4
+ }
+
+ .hljs-deletion,
+ .hljs-name,
+ .hljs-section,
+ .hljs-selector-tag,
+ .hljs-subst {
+ color: #e45649
+ }
+
+ .hljs-literal {
+ color: #0184bb
+ }
+
+ .hljs-addition,
+ .hljs-attribute,
+ .hljs-meta .hljs-string,
+ .hljs-regexp,
+ .hljs-string {
+ color: #50a14f
+ }
+
+ .hljs-attr,
+ .hljs-number,
+ .hljs-selector-attr,
+ .hljs-selector-class,
+ .hljs-selector-pseudo,
+ .hljs-template-variable,
+ .hljs-type,
+ .hljs-variable {
+ color: #986801
+ }
+
+ .hljs-bullet,
+ .hljs-link,
+ .hljs-meta,
+ .hljs-selector-id,
+ .hljs-symbol,
+ .hljs-title {
+ color: #4078f2
+ }
+
+ .hljs-built_in,
+ .hljs-class .hljs-title,
+ .hljs-title.class_ {
+ color: #c18401
+ }
+
+ .hljs-emphasis {
+ font-style: italic
+ }
+
+ .hljs-strong {
+ font-weight: 700
+ }
+
+ .hljs-link {
+ text-decoration: underline
+ }
+}
diff --git a/src/renderer/src/components/markdown-render/index.less b/src/renderer/src/components/markdown-render/style/index.less
similarity index 54%
rename from src/renderer/src/components/markdown-render/index.less
rename to src/renderer/src/components/markdown-render/style/index.less
index 1fdde5b49..15f3433c7 100644
--- a/src/renderer/src/components/markdown-render/index.less
+++ b/src/renderer/src/components/markdown-render/style/index.less
@@ -1,53 +1,11 @@
-@import 'github-markdown-css';
-
-.markdown-custom {
- .md-btn {
- width: 18px;
- height: 18px;
- display: flex;
- align-items: center;
- justify-content: center;
- border: 1px var(--td-border-level-2-color) solid;
- border-radius: var(--td-radius-default);
- background-color: var(--td-bg-color-secondarycontainer);
- margin: 0;
- padding: 0;
- transition: all 0.2s linear;
- display: none;
- padding: var(--td-size-1);
-
- &:hover {
- border-color: var(--td-brand-color-hover);
- display: flex;
- }
-
- .md-icon-copy{
- width: 100%;
- height: 100%;
- background-repeat: no-repeat;
- background-position: center center;
- background-size: 80% 80%;
- background-image: url(../../assets/copy.svg);
- -webkit-mask-image: url(../../assets/copy.svg);
- mask-image: url(../../assets/copy.svg);
- background-color: var(--td-text-color-primary);
- -webkit-mask-size: cover;
- mask-size: cover;
- }
- }
-
- pre {
- background-color: var(--td-bg-color-secondarycontainer);
- color: var(--td-text-color-primary);
-
- &:hover {
- & + .md-btn {
- display: flex;
- }
- }
- }
-
- blockquote {
+@import './highlight.less';
+@import './github-markdown.less';
+
+.markdown-body {
+ background-color: transparent !important;
+ font-size: 14px;
+
+ blockquote {
border-left: 0.25em solid var(--td-text-color-disabled);
color: var(--td-text-color-secondary);
}
@@ -127,4 +85,66 @@
img {
max-width: 35% !important;
}
+
+ p {
+ white-space: pre-wrap;
+ }
+
+ ol {
+ list-style-type: decimal;
+ }
+
+ ul {
+ list-style-type: disc;
+ }
+
+ pre code,
+ pre tt {
+ line-height: 1.65;
+ }
+
+ .highlight pre,
+ pre {
+ background-color: #fff;
+ }
+
+ code.hljs {
+ padding: 0;
+ }
+
+ .code-block {
+ &-wrapper {
+ position: relative;
+ padding-top: 24px;
+ }
+
+ &-header {
+ position: absolute;
+ top: 5px;
+ right: 0;
+ width: 100%;
+ padding: 0 1rem;
+ display: flex;
+ justify-content: flex-end;
+ align-items: center;
+ color: #b3b3b3;
+
+ &__copy{
+ cursor: pointer;
+ margin-left: 0.5rem;
+ user-select: none;
+ &:hover {
+ color: #65a665;
+ }
+ }
+ }
+ }
+}
+
+:root[theme-mode='dark'] {
+
+ .highlight pre,
+ pre {
+ background-color: #282c34;
+ }
}
diff --git a/src/renderer/src/pages/Disclaimer.vue b/src/renderer/src/pages/Disclaimer.vue
index 8271f6375..7ee72f9cd 100644
--- a/src/renderer/src/pages/Disclaimer.vue
+++ b/src/renderer/src/pages/Disclaimer.vue
@@ -14,7 +14,7 @@
{{ $t('pages.md.privacyPolicy.title') }}
-
+
diff --git a/src/renderer/src/pages/lab/components/aiBrain/index.vue b/src/renderer/src/pages/lab/components/aiBrain/index.vue
index 48b1986be..482168c08 100644
--- a/src/renderer/src/pages/lab/components/aiBrain/index.vue
+++ b/src/renderer/src/pages/lab/components/aiBrain/index.vue
@@ -91,7 +91,7 @@
-
+
{{
$t('pages.lab.aiBrain.copy') }}
diff --git a/src/renderer/src/pages/lab/components/pluginCenter/index.vue b/src/renderer/src/pages/lab/components/pluginCenter/index.vue
index dbff03827..800b1fdae 100644
--- a/src/renderer/src/pages/lab/components/pluginCenter/index.vue
+++ b/src/renderer/src/pages/lab/components/pluginCenter/index.vue
@@ -97,7 +97,7 @@
{{ $t('pages.lab.pluginCenter.content.title') }}
-
+
diff --git a/src/renderer/src/pages/setting/components/base/components/DialogCustomPlayer.vue b/src/renderer/src/pages/setting/components/base/components/DialogCustomPlayer.vue
index 550bbbbd9..ddaa68597 100644
--- a/src/renderer/src/pages/setting/components/base/components/DialogCustomPlayer.vue
+++ b/src/renderer/src/pages/setting/components/base/components/DialogCustomPlayer.vue
@@ -9,7 +9,7 @@
{{ $t('pages.md.customPlayer.title') }}
-
+
diff --git a/src/renderer/src/pages/setting/components/base/components/DialogThumbnail.vue b/src/renderer/src/pages/setting/components/base/components/DialogThumbnail.vue
index d7a33cd25..deeec8a7b 100644
--- a/src/renderer/src/pages/setting/components/base/components/DialogThumbnail.vue
+++ b/src/renderer/src/pages/setting/components/base/components/DialogThumbnail.vue
@@ -10,7 +10,7 @@
{{ $t('pages.md.thumbanilFfmpeg.title') }}
-
+
diff --git a/src/renderer/src/pages/setting/components/base/components/DialogUpdate.vue b/src/renderer/src/pages/setting/components/base/components/DialogUpdate.vue
index af10011a2..897bc7a51 100644
--- a/src/renderer/src/pages/setting/components/base/components/DialogUpdate.vue
+++ b/src/renderer/src/pages/setting/components/base/components/DialogUpdate.vue
@@ -19,7 +19,11 @@
{{ $t('pages.setting.update.changelog') }}
-
+
{{ $t('pages.setting.update.tip') }}
@@ -51,7 +55,7 @@
+
+
diff --git a/src/renderer/src/pages/lab/index.vue b/src/renderer/src/pages/lab/index.vue
index ca3669b73..436bb055e 100644
--- a/src/renderer/src/pages/lab/index.vue
+++ b/src/renderer/src/pages/lab/index.vue
@@ -19,6 +19,7 @@ import CommonNav from '@/components/common-nav/index.vue';
// 异步加载组件,也可以直接导入组件
const componentMap = {
'dataCrypto': defineAsyncComponent(() => import('./components/dataCrypto/index.vue')),
+ 'fileDiff': defineAsyncComponent(() => import('./components/fileDiff/index.vue')),
'aiBrain': defineAsyncComponent(() => import('./components/aiBrain/index.vue')),
'jsEdit': defineAsyncComponent(() => import('./components/jsEdit/index.vue')),
'staticFilter': defineAsyncComponent(() => import('./components/staticFilter/index.vue')),
@@ -34,6 +35,10 @@ const settingNav = computed(() => {
id: 'dataCrypto',
name: t('pages.lab.nav.dataCrypto')
},
+ {
+ id: 'fileDiff',
+ name: t('pages.lab.nav.fileDiff')
+ },
{
id: 'aiBrain',
name: t('pages.lab.nav.aiBrain')
From 55e77723cc8b56697b64acf470f8eb29870c4e34 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sat, 28 Dec 2024 18:52:18 +0800
Subject: [PATCH 059/175] [optimize] t0 t1 compatibility(issue #388)
---
.../routes/v1/site/cms/adapter/t0Xml.ts | 43 ++++++++++++------
.../routes/v1/site/cms/adapter/t1Json.ts | 44 +++++++++++++------
2 files changed, 59 insertions(+), 28 deletions(-)
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts b/src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts
index c6a7774f5..3bc2da3f5 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts
@@ -24,13 +24,21 @@ class T0Adapter {
async init() {}
async home() {
- const response = await request({
- url: this.api,
- method: 'GET',
- params: {
- ac: 'class',
- },
- });
+ let response;
+ try {
+ response = await request({
+ url: this.api,
+ method: 'GET',
+ params: {
+ ac: 'class',
+ },
+ });
+ } catch {
+ response = await request({
+ url: this.api,
+ method: 'GET',
+ });
+ };
const xml2json = parser.parse(response);
const data = xml2json?.rss?.class;
const classList = Array.isArray(data?.ty) ? data.ty : [data?.ty];
@@ -66,13 +74,20 @@ class T0Adapter {
}
async homeVod() {
let response;
- response = await request({
- url: this.api,
- method: 'GET',
- params: {
- ac: 'class',
- },
- });
+ try {
+ response = await request({
+ url: this.api,
+ method: 'GET',
+ params: {
+ ac: 'class',
+ },
+ });
+ } catch {
+ response = await request({
+ url: this.api,
+ method: 'GET',
+ });
+ };
const xml2json = parser.parse(response);
const data = xml2json?.rss?.list;
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/t1Json.ts b/src/main/core/server/routes/v1/site/cms/adapter/t1Json.ts
index ec9b2d3c4..d66cff950 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/t1Json.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/t1Json.ts
@@ -13,13 +13,21 @@ class T1Adapter {
async init() {}
async home() {
- const response = await request({
- url: this.api,
- method: 'GET',
- params: {
- ac: 'class',
- },
- });
+ let response;
+ try {
+ response = await request({
+ url: this.api,
+ method: 'GET',
+ params: {
+ ac: 'class',
+ },
+ });
+ } catch {
+ response = await request({
+ url: this.api,
+ method: 'GET',
+ });
+ };
let classes: any[] = [];
// 分类
@@ -52,13 +60,21 @@ class T1Adapter {
}
async homeVod() {
let response;
- response = await request({
- url: this.api,
- method: 'GET',
- params: {
- ac: 'class',
- },
- });
+ try {
+ response = await request({
+ url: this.api,
+ method: 'GET',
+ params: {
+ ac: 'class',
+ },
+ });
+ } catch {
+ response = await request({
+ url: this.api,
+ method: 'GET',
+ });
+ };
+
if (Array.isArray(response?.list) && response.list.length > 0 && !response.list[0].vod_pic) {
const ids = response.list.map((item) => item.vod_id);
response = await this.detail({ id: ids });
From db5d2735c8bdf0f89244f2080ab37cc60994e9e7 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sun, 29 Dec 2024 23:53:42 +0800
Subject: [PATCH 060/175] [change] tag-nav emit name
---
src/renderer/src/components/tag-nav/index.vue | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/renderer/src/components/tag-nav/index.vue b/src/renderer/src/components/tag-nav/index.vue
index 8f0a2099b..157aa659d 100644
--- a/src/renderer/src/components/tag-nav/index.vue
+++ b/src/renderer/src/components/tag-nav/index.vue
@@ -33,14 +33,14 @@ watch(
},
);
-const emit = defineEmits(['changeKey']);
+const emit = defineEmits(['change']);
const tagFlag = ref(props.active);
const uniqueList = computed(() => uniqBy(props.list, 'type_id'));
const handleItemClick = (key: string | number) => {
console.log(key)
- emit('changeKey', key);
+ emit('change', key);
};
From 4ace50e7c9c8e6fe8f8671e92db8b7f3a2ac2218 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sun, 29 Dec 2024 23:56:12 +0800
Subject: [PATCH 061/175] [feat] split component
---
.../components/split/hooks/use-merge-state.ts | 22 +
.../src/components/split/hooks/use-state.ts | 12 +
.../split/icon/drag-dot-vertical.svg | 14 +
.../src/components/split/icon/drag-dot.svg | 14 +
src/renderer/src/components/split/index.vue | 366 ++++++++++++
.../src/components/split/interface.ts | 9 +
.../src/components/split/resize-observer.tsx | 82 +++
.../src/components/split/resize-trigger.vue | 64 +++
.../src/components/split/style/index.less | 63 +++
.../components/split/utils/convert-case.ts | 22 +
.../src/components/split/utils/dom.ts | 172 ++++++
src/renderer/src/components/split/utils/is.ts | 107 ++++
.../src/components/split/utils/types.ts | 74 +++
.../src/components/split/utils/vue-utils.ts | 527 ++++++++++++++++++
14 files changed, 1548 insertions(+)
create mode 100644 src/renderer/src/components/split/hooks/use-merge-state.ts
create mode 100644 src/renderer/src/components/split/hooks/use-state.ts
create mode 100644 src/renderer/src/components/split/icon/drag-dot-vertical.svg
create mode 100644 src/renderer/src/components/split/icon/drag-dot.svg
create mode 100644 src/renderer/src/components/split/index.vue
create mode 100644 src/renderer/src/components/split/interface.ts
create mode 100644 src/renderer/src/components/split/resize-observer.tsx
create mode 100644 src/renderer/src/components/split/resize-trigger.vue
create mode 100644 src/renderer/src/components/split/style/index.less
create mode 100644 src/renderer/src/components/split/utils/convert-case.ts
create mode 100644 src/renderer/src/components/split/utils/dom.ts
create mode 100644 src/renderer/src/components/split/utils/is.ts
create mode 100644 src/renderer/src/components/split/utils/types.ts
create mode 100644 src/renderer/src/components/split/utils/vue-utils.ts
diff --git a/src/renderer/src/components/split/hooks/use-merge-state.ts b/src/renderer/src/components/split/hooks/use-merge-state.ts
new file mode 100644
index 000000000..9dd0279c9
--- /dev/null
+++ b/src/renderer/src/components/split/hooks/use-merge-state.ts
@@ -0,0 +1,22 @@
+import { Ref, toRefs, computed, watch, ComputedRef } from 'vue';
+import { isUndefined } from '../utils/is';
+import useState from './use-state';
+
+export default function useMergeState(
+ defaultValue: T,
+ props: { value: E }
+): [ComputedRef, (val: E) => void, Ref] {
+ const { value } = toRefs(props);
+ const [localValue, setLocalValue] = useState(
+ !isUndefined(value.value) ? value.value : defaultValue
+ );
+ watch(value, (newVal) => {
+ isUndefined(newVal) && setLocalValue(undefined);
+ });
+
+ const mergeValue = computed(() =>
+ !isUndefined(value.value) ? value.value : localValue.value
+ );
+
+ return [mergeValue, setLocalValue, localValue];
+}
diff --git a/src/renderer/src/components/split/hooks/use-state.ts b/src/renderer/src/components/split/hooks/use-state.ts
new file mode 100644
index 000000000..fb98811a6
--- /dev/null
+++ b/src/renderer/src/components/split/hooks/use-state.ts
@@ -0,0 +1,12 @@
+import { Ref, ref } from 'vue';
+
+export default function useState(
+ defaultValue?: T
+): [Ref, (newValue: T) => void] {
+ const value = ref(defaultValue) as Ref;
+ const setValue = (newValue: T) => {
+ value.value = newValue;
+ };
+
+ return [value, setValue];
+}
diff --git a/src/renderer/src/components/split/icon/drag-dot-vertical.svg b/src/renderer/src/components/split/icon/drag-dot-vertical.svg
new file mode 100644
index 000000000..604ba6588
--- /dev/null
+++ b/src/renderer/src/components/split/icon/drag-dot-vertical.svg
@@ -0,0 +1,14 @@
+
diff --git a/src/renderer/src/components/split/icon/drag-dot.svg b/src/renderer/src/components/split/icon/drag-dot.svg
new file mode 100644
index 000000000..e147338e4
--- /dev/null
+++ b/src/renderer/src/components/split/icon/drag-dot.svg
@@ -0,0 +1,14 @@
+
diff --git a/src/renderer/src/components/split/index.vue b/src/renderer/src/components/split/index.vue
new file mode 100644
index 000000000..0cc363465
--- /dev/null
+++ b/src/renderer/src/components/split/index.vue
@@ -0,0 +1,366 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/renderer/src/components/split/interface.ts b/src/renderer/src/components/split/interface.ts
new file mode 100644
index 000000000..e5d5242ef
--- /dev/null
+++ b/src/renderer/src/components/split/interface.ts
@@ -0,0 +1,9 @@
+export interface SplitProps {
+ component: string;
+ direction: 'horizontal' | 'vertical';
+ size: number | string | undefined;
+ defaultSize: number | string;
+ min: number | string | undefined;
+ max: number | string | undefined;
+ disabled: boolean;
+}
diff --git a/src/renderer/src/components/split/resize-observer.tsx b/src/renderer/src/components/split/resize-observer.tsx
new file mode 100644
index 000000000..bbd67fad5
--- /dev/null
+++ b/src/renderer/src/components/split/resize-observer.tsx
@@ -0,0 +1,82 @@
+import {
+ defineComponent,
+ onMounted,
+ onUnmounted,
+ ref,
+ ComponentPublicInstance,
+ computed,
+ cloneVNode,
+ watch,
+} from 'vue';
+import ResizeObserver from 'resize-observer-polyfill';
+import { getFirstComponent } from './utils/vue-utils';
+import { isComponentInstance } from './utils/is';
+
+export default defineComponent({
+ name: 'ResizeObserver',
+ emits: [
+ /**
+ * resize 事件
+ * @property {ResizeObserverEntry} entry 触发 resize 的 dom 元素
+ */
+ 'resize',
+ ],
+ setup(props, { emit, slots }) {
+ let resizeObserver: ResizeObserver | null;
+
+ const componentRef = ref();
+
+ const element = computed(() =>
+ isComponentInstance(componentRef.value)
+ ? componentRef.value.$el
+ : componentRef.value
+ );
+
+ const createResizeObserver = (target: HTMLElement) => {
+ if (!target) return;
+ resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => {
+ const entry = entries[0];
+ emit('resize', entry);
+ });
+ resizeObserver.observe(target);
+ };
+
+ const destroyResizeObserver = () => {
+ if (resizeObserver) {
+ resizeObserver.disconnect();
+ resizeObserver = null;
+ }
+ };
+
+ watch(element, (_element) => {
+ if (resizeObserver) destroyResizeObserver();
+ if (_element) createResizeObserver(_element);
+ });
+
+ onMounted(() => {
+ if (element.value) {
+ createResizeObserver(element.value);
+ }
+ });
+
+ onUnmounted(() => {
+ destroyResizeObserver();
+ });
+
+ return () => {
+ const firstChild = getFirstComponent(slots.default?.() ?? []);
+
+ if (firstChild) {
+ return cloneVNode(
+ firstChild,
+ {
+ ref: componentRef,
+ },
+ true
+ );
+ }
+
+ return null;
+ };
+ },
+});
diff --git a/src/renderer/src/components/split/resize-trigger.vue b/src/renderer/src/components/split/resize-trigger.vue
new file mode 100644
index 000000000..d8677cb56
--- /dev/null
+++ b/src/renderer/src/components/split/resize-trigger.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
diff --git a/src/renderer/src/components/split/style/index.less b/src/renderer/src/components/split/style/index.less
new file mode 100644
index 000000000..4927e50fa
--- /dev/null
+++ b/src/renderer/src/components/split/style/index.less
@@ -0,0 +1,63 @@
+/** 公共前缀 */
+@starter-prefix: zy;
+@split-prefix-cls: ~'@{starter-prefix}-split';
+@split-trigger-prefix-cls: ~'@{split-prefix-cls}-trigger';
+@split-trigger-color-icon: var(--td-text-color-primary);
+@split-trigger-font-size-icon: 12px;
+@split-trigger-color-background: var(--td-border-level-1-color);
+
+.@{split-prefix-cls} {
+ display: flex;
+
+ &-pane {
+ overflow: auto;
+ }
+
+ &-pane-second {
+ flex: 1;
+ }
+
+ &-horizontal {
+ flex-direction: row;
+ }
+
+ &-vertical {
+ flex-direction: column;
+ }
+}
+
+// 伸缩触发杆
+.@{split-trigger-prefix-cls} {
+ &-icon-wrapper {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 100%;
+ color: @split-trigger-color-icon;
+ font-size: @split-trigger-font-size-icon;
+ line-height: 1;
+ background-color: @split-trigger-color-background;
+ }
+
+ &-icon {
+ display: inline-block;
+ margin: -3px;
+ width: 1em;
+ height: 1em;
+ color: inherit;
+ font-style: normal;
+ vertical-align: -2px;
+ outline: none;
+ stroke: currentColor;
+ }
+
+ &-vertical {
+ height: 100%;
+ cursor: col-resize;
+ }
+
+ &-horizontal {
+ width: 100%;
+ cursor: row-resize;
+ }
+}
diff --git a/src/renderer/src/components/split/utils/convert-case.ts b/src/renderer/src/components/split/utils/convert-case.ts
new file mode 100644
index 000000000..39d30a9de
--- /dev/null
+++ b/src/renderer/src/components/split/utils/convert-case.ts
@@ -0,0 +1,22 @@
+// 转换大小写
+export const toKebabCase = (string: string): string => {
+ return string.replace(/\B([A-Z])/g, '-$1').toLowerCase();
+};
+
+// 连字符转驼峰
+export const toPascalCase = (string: string): string => {
+ return string
+ .replace(/^./, (match) => match.toUpperCase())
+ .replace(/-(\w)/g, (_, p1: string) => {
+ return p1?.toUpperCase() ?? '';
+ });
+};
+
+// 驼峰转连字符
+export const toCamelCase = (string: string): string => {
+ return string
+ .replace(/^./, (match) => match.toLowerCase())
+ .replace(/-(\w)/g, (_, p1: string) => {
+ return p1?.toUpperCase() ?? '';
+ });
+};
diff --git a/src/renderer/src/components/split/utils/dom.ts b/src/renderer/src/components/split/utils/dom.ts
new file mode 100644
index 000000000..f2f6d283d
--- /dev/null
+++ b/src/renderer/src/components/split/utils/dom.ts
@@ -0,0 +1,172 @@
+import { VNode } from 'vue';
+import { isString } from './is';
+
+export const NOOP = () => {
+ return undefined;
+};
+export interface Size {
+ height: number;
+ width: number;
+}
+export const getDocumentSize = (): Size => {
+ const { body } = document;
+ const html = document.documentElement;
+ let topBody;
+ try {
+ const topWindow = window.top || window.self || window;
+ topBody = topWindow.document.body;
+ } catch {}
+
+ return {
+ height: Math.max(
+ body.scrollHeight,
+ body.offsetHeight,
+ html.clientHeight,
+ html.scrollHeight,
+ html.offsetHeight,
+ topBody?.scrollHeight || 0,
+ topBody?.clientHeight || 0
+ ),
+ width: Math.max(
+ body.scrollWidth,
+ body.offsetWidth,
+ html.clientWidth,
+ html.scrollWidth,
+ html.offsetWidth,
+ topBody?.scrollWidth || 0,
+ topBody?.clientWidth || 0
+ ),
+ };
+};
+export const isServerRendering = (() => {
+ try {
+ return !(typeof window !== 'undefined' && document !== undefined);
+ } catch (e) {
+ return true;
+ }
+})();
+
+export const on = (() => {
+ if (isServerRendering) {
+ return NOOP;
+ }
+ return (
+ element: HTMLElement | Window,
+ event: K,
+ handler: (ev: HTMLElementEventMap[K]) => void,
+ options: boolean | AddEventListenerOptions = false
+ ) => {
+ element.addEventListener(
+ event,
+ handler as EventListenerOrEventListenerObject,
+ options
+ );
+ };
+})();
+
+export const off = (() => {
+ if (isServerRendering) {
+ return NOOP;
+ }
+ return (
+ element: HTMLElement | Window,
+ type: K,
+ handler: (ev: HTMLElementEventMap[K]) => void,
+ options: boolean | EventListenerOptions = false
+ ) => {
+ element.removeEventListener(
+ type,
+ handler as EventListenerOrEventListenerObject,
+ options
+ );
+ };
+})();
+
+export const findDomNode = (vnode: VNode) => {
+ let node = vnode.el;
+ while (node && !node.tagName) {
+ node = node.nextSibling;
+ }
+ return node as HTMLElement;
+};
+
+export const contains = (root: Node | null | undefined, ele: Node | null) => {
+ if (!root || !ele) {
+ return false;
+ }
+ let node: Node | null = ele;
+ while (node) {
+ if (node === root) {
+ return true;
+ }
+ node = node.parentNode;
+ }
+ return false;
+};
+
+export const OVERLAY_TYPES = [
+ 'modal',
+ 'message',
+ 'notification',
+ 'drawer',
+] as const;
+
+export const getOverlay = (type: typeof OVERLAY_TYPES[number]) => {
+ const popper = document.createElement('div');
+ popper.setAttribute('class', `arco-overlay arco-overlay-${type}`);
+ return popper;
+};
+
+export const querySelector = (
+ selectors: string,
+ container?: Document | HTMLElement
+) => {
+ if (isServerRendering) {
+ return NOOP();
+ }
+ return (
+ (container ?? document).querySelector(selectors) ?? undefined
+ );
+};
+
+export const getElement = (
+ target: string | HTMLElement | undefined,
+ container?: Document | HTMLElement
+): HTMLElement | undefined => {
+ if (isString(target)) {
+ const selector = target[0] === '#' ? `[id='${target.slice(1)}']` : target;
+ return querySelector(selector, container);
+ }
+ return target;
+};
+
+/**
+ * Get the relative distance between two DOMs
+ * @param target
+ * @param relative
+ */
+export const getRelativeRect = (target: HTMLElement, relative: HTMLElement) => {
+ const targetRect = target.getBoundingClientRect();
+ const relativeRect = relative.getBoundingClientRect();
+
+ return {
+ top: targetRect.top - relativeRect.top,
+ bottom: relativeRect.bottom - targetRect.bottom,
+ left: targetRect.left - relativeRect.left,
+ right: relativeRect.right - targetRect.right,
+ width: targetRect.width,
+ height: targetRect.height,
+ };
+};
+
+export const isScroll = (element: HTMLElement) => {
+ return element.tagName === 'BODY'
+ ? document.documentElement.scrollHeight > window.innerHeight
+ : element.scrollHeight > element.offsetHeight;
+};
+
+export const getScrollBarWidth = (element: HTMLElement) => {
+ return element.tagName === 'BODY'
+ ? window.innerWidth - getDocumentSize().width
+ : element.offsetWidth - element.clientWidth;
+};
diff --git a/src/renderer/src/components/split/utils/is.ts b/src/renderer/src/components/split/utils/is.ts
new file mode 100644
index 000000000..3e7c8e44b
--- /dev/null
+++ b/src/renderer/src/components/split/utils/is.ts
@@ -0,0 +1,107 @@
+import type { ComponentPublicInstance, VNodeNormalizedChildren } from 'vue';
+import { VNode } from 'vue';
+
+const opt = Object.prototype.toString;
+
+export function isArray(obj: any): obj is any[] {
+ return opt.call(obj) === '[object Array]';
+}
+
+export function isNull(obj: any): obj is null {
+ return opt.call(obj) === '[object Null]';
+}
+
+export function isBoolean(obj: unknown): obj is boolean {
+ return opt.call(obj) === '[object Boolean]';
+}
+
+export function isObject(
+ obj: T
+): obj is Extract> {
+ return opt.call(obj) === '[object Object]';
+}
+
+export const isPromise = (obj: unknown): obj is Promise => {
+ return opt.call(obj) === '[object Promise]';
+};
+
+export function isString(obj: any): obj is string {
+ return opt.call(obj) === '[object String]';
+}
+
+export function isNumber(obj: any): obj is number {
+ return opt.call(obj) === '[object Number]' && obj === obj; // eslint-disable-line
+}
+
+export function isRegExp(obj: any) {
+ return opt.call(obj) === '[object RegExp]';
+}
+
+export function isDate(obj: any) {
+ return opt.call(obj) === '[object Date]';
+}
+
+function isHex(color: any) {
+ return /^#[a-fA-F0-9]{3}$|#[a-fA-F0-9]{6}$/.test(color);
+}
+
+function isRgb(color: any) {
+ return /^rgb\((\s*\d+\s*,?){3}\)$/.test(color);
+}
+
+function isRgba(color: any) {
+ return /^rgba\((\s*\d+\s*,\s*){3}\s*\d(\.\d+)?\s*\)$/.test(color);
+}
+
+export function isColor(color: any): boolean {
+ return isHex(color) || isRgb(color) || isRgba(color);
+}
+
+export function isUndefined(obj: any): obj is undefined {
+ return obj === undefined;
+}
+
+export function isFunction(obj: any): obj is (...args: any[]) => any {
+ return typeof obj === 'function';
+}
+
+export function isEmptyObject(obj: any): boolean {
+ return isObject(obj) && Object.keys(obj).length === 0;
+}
+
+export function isExist(obj: any): boolean {
+ return obj || obj === 0;
+}
+
+export function isWindow(el: any): el is Window {
+ return el === window;
+}
+
+export const isComponentInstance = (
+ value: any
+): value is ComponentPublicInstance => {
+ return value?.$ !== undefined;
+};
+
+export const isArrayChildren = (
+ children: VNodeNormalizedChildren
+): children is VNode[] => {
+ return isArray(children);
+};
+
+export const isQuarter = (fromat: string) => {
+ return /\[Q]Q/.test(fromat);
+};
+
+export function isDayjs(time: any) {
+ return (
+ isObject(time) &&
+ '$y' in time &&
+ '$M' in time &&
+ '$D' in time &&
+ '$d' in time &&
+ '$H' in time &&
+ '$m' in time &&
+ '$s' in time
+ );
+}
diff --git a/src/renderer/src/components/split/utils/types.ts b/src/renderer/src/components/split/utils/types.ts
new file mode 100644
index 000000000..09b455d06
--- /dev/null
+++ b/src/renderer/src/components/split/utils/types.ts
@@ -0,0 +1,74 @@
+import type { App, RenderFunction } from 'vue';
+import { VNode } from 'vue';
+
+export interface ArcoOptions {
+ classPrefix?: string;
+ componentPrefix?: string;
+}
+
+export interface ArcoIconOptions {
+ iconPrefix?: string;
+}
+
+export interface ArcoGlobalConfig {
+ classPrefix?: string;
+}
+
+type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (
+ k: infer I
+) => void
+ ? I
+ : never;
+
+export type BaseType = string | number;
+export type UnionType = BaseType | Record;
+export type Data = Record;
+export type RenderContent = string | RenderFunction;
+
+export type EmitFn = (event: T, ...args: any[]) => void;
+
+export type EmitFn2<
+ Options = Record,
+ Event extends keyof Options = keyof Options
+> = UnionToIntersection<
+ {
+ [key in Event]: Options[key] extends (...args: infer Args) => any
+ ? (event: key, ...args: Args) => void
+ : (event: key, ...args: any[]) => void;
+ }[Event]
+>;
+
+export type EmitType = T | T[];
+
+export type SFCWithInstall> = T &
+ D & {
+ install: (app: App, opt?: ArcoOptions) => void;
+ };
+
+export type ClassName =
+ | string
+ | Record
+ | (string | Record)[];
+
+export type FieldString = {
+ [K in keyof T]?: string;
+};
+
+export interface SlotChildren {
+ value?: VNode[];
+}
+
+export interface ValueData {
+ value: string | number;
+ label: string;
+ closable?: boolean;
+
+ [other: string]: any;
+}
+
+export type AnimationDuration =
+ | number
+ | {
+ enter: number;
+ leave: number;
+ };
diff --git a/src/renderer/src/components/split/utils/vue-utils.ts b/src/renderer/src/components/split/utils/vue-utils.ts
new file mode 100644
index 000000000..423d82eeb
--- /dev/null
+++ b/src/renderer/src/components/split/utils/vue-utils.ts
@@ -0,0 +1,527 @@
+import type {
+ Component,
+ Slot,
+ Slots,
+ VNode,
+ VNodeTypes,
+ VNodeArrayChildren,
+ ComponentPublicInstance,
+ RenderFunction,
+} from 'vue';
+import { cloneVNode, Fragment, isVNode } from 'vue';
+import { Data, RenderContent } from './types';
+import { isArray, isFunction, isNumber, isObject, isString } from './is';
+import { toCamelCase, toKebabCase } from './convert-case';
+
+// Quoted from vue-next
+// https://github.com/vuejs/vue-next/blob/master/packages/shared/src/shapeFlags.ts
+export enum ShapeFlags {
+ ELEMENT = 1,
+ FUNCTIONAL_COMPONENT = 1 << 1,
+ STATEFUL_COMPONENT = 1 << 2,
+ COMPONENT = ShapeFlags.STATEFUL_COMPONENT | ShapeFlags.FUNCTIONAL_COMPONENT,
+ TEXT_CHILDREN = 1 << 3,
+ ARRAY_CHILDREN = 1 << 4,
+ SLOTS_CHILDREN = 1 << 5,
+ TELEPORT = 1 << 6,
+ SUSPENSE = 1 << 7,
+ COMPONENT_SHOULD_KEEP_ALIVE = 1 << 8,
+ COMPONENT_KEPT_ALIVE = 1 << 9,
+}
+
+// Quoted from vue-next
+// https://github.com/vuejs/vue-next/blob/master/packages/shared/src/patchFlags.ts
+export enum PatchFlags {
+ TEXT = 1,
+ CLASS = 2,
+ STYLE = 4,
+ PROPS = 8,
+ FULL_PROPS = 16,
+ HYDRATE_EVENTS = 32,
+ STABLE_FRAGMENT = 64,
+ KEYED_FRAGMENT = 128,
+ UNKEYED_FRAGMENT = 256,
+ NEED_PATCH = 512,
+ DYNAMIC_SLOTS = 1024,
+ DEV_ROOT_FRAGMENT = 2048,
+ HOISTED = -1,
+ BAIL = -2,
+}
+
+export const getValueFromSlotsOrProps = (
+ name: string,
+ props?: Data,
+ slots?: Slots
+) => {
+ if (slots?.[name]) {
+ return slots[name];
+ }
+ if (props?.[name]) {
+ return () => props[name];
+ }
+ return undefined;
+};
+
+export const isComponentInstance = (
+ value: any
+): value is ComponentPublicInstance => {
+ return value?.$ !== undefined;
+};
+
+export const isElement = (vn: VNode) => {
+ return Boolean(vn && vn.shapeFlag & ShapeFlags.ELEMENT);
+};
+
+export const isComponent = (
+ vn: VNode,
+ type?: VNodeTypes
+): type is Component => {
+ return Boolean(vn && vn.shapeFlag & ShapeFlags.COMPONENT);
+};
+
+export const isText = (
+ vn: VNode,
+ children: VNode['children']
+): children is string => {
+ return Boolean(vn && vn.shapeFlag & ShapeFlags.TEXT_CHILDREN);
+};
+
+export const isNamedComponent = (child: VNode, name: string) => {
+ return isComponent(child, child.type) && child.type.name === name;
+};
+
+export const isTextChildren = (
+ child: VNode,
+ children: VNode['children']
+): children is string => {
+ return Boolean(child && child.shapeFlag & 8);
+};
+
+export const isArrayChildren = (
+ vn: VNode,
+ children: VNode['children']
+): children is VNode[] => {
+ return Boolean(vn && vn.shapeFlag & ShapeFlags.ARRAY_CHILDREN);
+};
+
+export const isSlotsChildren = (
+ vn: VNode,
+ children: VNode['children']
+): children is Slots => {
+ return Boolean(vn && vn.shapeFlag & ShapeFlags.SLOTS_CHILDREN);
+};
+
+export const getChildrenString = (children: VNode[]): string => {
+ let text = '';
+ for (const child of children) {
+ if (isString(child) || isNumber(child)) {
+ text += String(child);
+ } else if (isTextChildren(child, child.children)) {
+ text += child.children;
+ } else if (isArrayChildren(child, child.children)) {
+ text += getChildrenString(child.children);
+ } else if (isSlotsChildren(child, child.children)) {
+ const _children = child.children.default?.();
+ if (_children) {
+ text += getChildrenString(_children);
+ }
+ }
+ }
+
+ return text;
+};
+
+export const getVNodeChildrenString = (vn: VNode): string => {
+ if (isText(vn, vn.children)) {
+ return vn.children;
+ }
+ // Used to splice the content of sub-components and return the text of all sub-components
+ let text = '';
+ if (isArrayChildren(vn, vn.children)) {
+ for (const child of vn.children) {
+ text += getVNodeChildrenString(child);
+ }
+ } else if (isSlotsChildren(vn, vn.children)) {
+ const children = vn.children.default?.() ?? [];
+ for (const child of children) {
+ text += getVNodeChildrenString(child);
+ }
+ }
+ return text;
+};
+
+export const getChildrenFunc = (vn: VNode): RenderFunction | undefined => {
+ if (isTextChildren(vn, vn.children) || isArrayChildren(vn, vn.children)) {
+ return (() => vn.children) as RenderFunction;
+ }
+ if (isSlotsChildren(vn, vn.children)) {
+ return vn.children.default;
+ }
+ return undefined;
+};
+
+export const getChildrenTextOrSlot = (vn: VNode): string | Slot | undefined => {
+ if (isText(vn, vn.children)) {
+ return vn.children;
+ }
+ if (isSlotsChildren(vn, vn.children)) {
+ const children = vn.children.default?.();
+ // 如果slot的内容是文字,优先返回字符串
+ if (children && children.length === 1) {
+ const child = children[0];
+ if (isTextChildren(child, child.children)) {
+ return child.children;
+ }
+ }
+ return vn.children.default;
+ }
+ if (isArrayChildren(vn, vn.children)) {
+ if (vn.children.length === 1) {
+ const child = vn.children[0];
+ if (isTextChildren(child, child.children)) {
+ return child.children;
+ }
+ }
+ return () => vn.children as VNode[];
+ }
+ return undefined;
+};
+
+export const getFirstComponent = (
+ children: VNode[] | undefined
+): VNode | undefined => {
+ if (!children) {
+ return undefined;
+ }
+
+ for (const child of children) {
+ if (isElement(child) || isComponent(child)) {
+ return child;
+ }
+ // If the current node is not a component, continue to find subcomponents
+ if (isArrayChildren(child, child.children)) {
+ const result = getFirstComponent(child.children);
+ if (result) return result;
+ } else if (isSlotsChildren(child, child.children)) {
+ const children = child.children.default?.();
+ if (children) {
+ const result = getFirstComponent(children);
+ if (result) return result;
+ }
+ } else if (isArray(child)) {
+ const result = getFirstComponent(child);
+ if (result) return result;
+ }
+ }
+
+ return undefined;
+};
+
+/**
+ * Used to get the number of specified components in children
+ * @param vNodes
+ * @param componentName
+ */
+export const getComponentNumber = (vNodes: VNode[], componentName: string) => {
+ let count = 0;
+ for (const item of vNodes) {
+ if (isComponent(item, item.type) && item.type.name === componentName) {
+ count++;
+ } else if (isArrayChildren(item, item.children)) {
+ count += getComponentNumber(item.children, componentName);
+ }
+ }
+ return count;
+};
+
+export const foreachComponent = (
+ children: VNode[],
+ name: string,
+ cb: (node: VNode) => void
+) => {
+ for (const item of children) {
+ if (isComponent(item, item.type) && item.type.name === name) {
+ cb(item);
+ }
+ if (isArrayChildren(item, item.children)) {
+ foreachComponent(item.children, name, cb);
+ }
+ }
+};
+
+export const isEmptyChildren = (children?: VNode[]) => {
+ if (!children) {
+ return true;
+ }
+
+ for (const item of children) {
+ if (item.children) {
+ return false;
+ }
+ }
+
+ return true;
+};
+
+export const getChildrenComponents = (
+ children: VNode[],
+ name: string,
+ props?: Data | ((node: VNode, index: number) => Data),
+ startIndex = 0
+): VNode[] => {
+ const result = [];
+ for (const item of children) {
+ if (isNamedComponent(item, name)) {
+ if (props) {
+ const index: number = startIndex + result.length;
+ const extraProps = isFunction(props) ? props(item, index) : props;
+ result.push(cloneVNode(item, extraProps, true));
+ } else {
+ result.push(item);
+ }
+ } else if (isArrayChildren(item, item.children)) {
+ result.push(
+ ...getChildrenComponents(item.children, name, props, result.length)
+ );
+ } else if (isSlotsChildren(item, item.children)) {
+ const defaultChildren = item.children.default?.() ?? [];
+ result.push(
+ ...getChildrenComponents(defaultChildren, name, props, result.length)
+ );
+ }
+ }
+ return result;
+};
+
+export const mergeFirstChild = (
+ children: VNode[] | undefined,
+ extraProps: Data | ((vn: VNode) => Data)
+): boolean => {
+ if (children && children.length > 0) {
+ for (let i = 0; i < children.length; i++) {
+ const child = children[i];
+ if (isElement(child) || isComponent(child)) {
+ const props = isFunction(extraProps) ? extraProps(child) : extraProps;
+ children[i] = cloneVNode(child, props, true);
+ return true;
+ }
+ const _children = getChildrenArray(child);
+ if (_children && _children.length > 0) {
+ const result = mergeFirstChild(_children, extraProps);
+ if (result) return true;
+ }
+ }
+ }
+ return false;
+};
+
+export const getChildrenArray = (vn: VNode): VNode[] | undefined => {
+ if (isArrayChildren(vn, vn.children)) {
+ return vn.children;
+ }
+ if (isArray(vn)) {
+ return vn;
+ }
+ return undefined;
+};
+
+export const getFirstElementFromVNode = (
+ vn: VNode
+): HTMLElement | undefined => {
+ if (isElement(vn)) {
+ return vn.el as HTMLElement;
+ }
+ if (isComponent(vn)) {
+ if ((vn.el as Node)?.nodeType === 1) {
+ return vn.el as HTMLElement;
+ }
+ if (vn.component?.subTree) {
+ const ele = getFirstElementFromVNode(vn.component.subTree);
+ if (ele) return ele;
+ }
+ } else {
+ const children = getChildrenArray(vn);
+ return getFirstElementFromChildren(children);
+ }
+ return undefined;
+};
+
+export const getFirstElementFromTemplateRef = (
+ target: HTMLElement | ComponentPublicInstance | undefined
+) => {
+ if (isComponentInstance(target)) {
+ return getFirstElementFromVNode(target.$.subTree);
+ }
+ return target;
+};
+
+export const getFirstElementFromChildren = (
+ children: VNode[] | undefined
+): HTMLElement | undefined => {
+ if (children && children.length > 0) {
+ for (const child of children) {
+ const element = getFirstElementFromVNode(child);
+ if (element) return element;
+ }
+ }
+ return undefined;
+};
+
+/**
+ * Get the value of boolean type prop
+ * @param value
+ */
+export const getBooleanProp = (value: string | boolean | undefined) => {
+ return !!(value || isString(value));
+};
+
+export const getRenderFunc = (content: RenderContent) => {
+ if (isFunction(content)) {
+ return content;
+ }
+ return () => content;
+};
+
+export const getAllElements = (
+ children: VNode[] | undefined,
+ includeText = false
+) => {
+ const results: VNode[] = [];
+ for (const item of children ?? []) {
+ if (
+ isElement(item) ||
+ isComponent(item) ||
+ (includeText && isTextChildren(item, item.children))
+ ) {
+ results.push(item);
+ } else if (isArrayChildren(item, item.children)) {
+ results.push(...getAllElements(item.children, includeText));
+ } else if (isSlotsChildren(item, item.children)) {
+ results.push(...getAllElements(item.children.default?.(), includeText));
+ } else if (isArray(item)) {
+ results.push(...getAllElements(item, includeText));
+ }
+ }
+ return results;
+};
+
+/**
+ * Remove Fragment
+ * @param nodeList
+ */
+export function unFragment(nodeList: VNode[]) {
+ function loop(nodes: VNodeArrayChildren) {
+ const unFragmentNodeList: VNodeArrayChildren = [];
+
+ nodes.forEach((node) => {
+ if (isVNode(node) && node.type === Fragment) {
+ if (isSlotsChildren(node, node.children)) {
+ // RowSlots
+ unFragmentNodeList.push(...loop(node.children.default?.() || []));
+ } else if (isArrayChildren(node, node.children)) {
+ // VNodeArrayChildren
+ unFragmentNodeList.push(...loop(node.children));
+ } else if (isString(node.children)) {
+ // string
+ unFragmentNodeList.push(node.children);
+ }
+ } else {
+ unFragmentNodeList.push(node);
+ }
+ });
+
+ return unFragmentNodeList;
+ }
+
+ return loop(nodeList);
+}
+
+export const resolveProps = (vn: VNode) => {
+ const props: Data = {};
+ // @ts-ignore
+ const options = vn.type?.props ?? {};
+ for (const key of Object.keys(vn.props ?? {})) {
+ const rawValue = vn.props?.[key];
+ const camelKey = toCamelCase(key);
+ let resolveValue = rawValue;
+ if (rawValue === '' || rawValue === toKebabCase(camelKey)) {
+ const type = isObject(options[camelKey])
+ ? options[camelKey].type
+ : options[camelKey];
+ if (type === Boolean) {
+ resolveValue = true;
+ }
+ }
+ props[camelKey] = resolveValue;
+ }
+ return props;
+};
+
+export const getFirstElement = (vn: VNode | VNode[]): HTMLElement | null => {
+ if (isArray(vn)) {
+ for (const child of vn) {
+ const result = getFirstElement(child);
+ if (result) return result;
+ }
+ } else if (isElement(vn)) {
+ return vn.el as HTMLElement;
+ } else if (isComponent(vn)) {
+ if ((vn.el as Node).nodeType === 1) {
+ return vn.el as HTMLElement;
+ }
+ if (vn.component) {
+ const result = getFirstElement(vn.component.subTree);
+ if (result) return result;
+ }
+ } else if (isArrayChildren(vn, vn.children)) {
+ for (const child of vn.children) {
+ const result = getFirstElement(child);
+ if (result) return result;
+ }
+ }
+ return null;
+};
+
+export const getSlotFunction = (param: RenderContent | undefined) => {
+ if (param) {
+ if (isFunction(param)) return param;
+ return () => param;
+ }
+ return undefined;
+};
+
+export const getComponentsFromVNode = (vn: VNode, name: string) => {
+ const components: number[] = [];
+
+ if (isComponent(vn, vn.type)) {
+ if (vn.type.name === name) {
+ if (vn.component) {
+ components.push(vn.component.uid);
+ }
+ } else if (vn.component?.subTree) {
+ components.push(...getComponentsFromVNode(vn.component.subTree, name));
+ }
+ } else {
+ const children = getChildrenArray(vn);
+ if (children) {
+ components.push(...getComponentsFromChildren(children, name));
+ }
+ }
+
+ return components;
+};
+
+export const getComponentsFromChildren = (
+ children: VNode[] | undefined,
+ name: string
+) => {
+ const components: number[] = [];
+
+ if (children && children.length > 0) {
+ for (const child of children) {
+ components.push(...getComponentsFromVNode(child, name));
+ }
+ }
+
+ return components;
+};
From 15272e30e9c70d815aa1338470895e0a3acf2534 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sun, 29 Dec 2024 23:56:33 +0800
Subject: [PATCH 062/175] [optimize] style
---
src/renderer/src/style/index.less | 1 +
src/renderer/src/style/layout.less | 2 +-
src/renderer/src/style/normalize.less | 353 ++++++++++++++++++++++++++
3 files changed, 355 insertions(+), 1 deletion(-)
create mode 100644 src/renderer/src/style/normalize.less
diff --git a/src/renderer/src/style/index.less b/src/renderer/src/style/index.less
index b777b7fb5..2ee7697f2 100644
--- a/src/renderer/src/style/index.less
+++ b/src/renderer/src/style/index.less
@@ -1,5 +1,6 @@
@import './font-family.less';
@import './reset.less';
+@import './normalize.less';
@import './theme/index.less';
@import './dialog.less';
diff --git a/src/renderer/src/style/layout.less b/src/renderer/src/style/layout.less
index c6f704fc4..e51d9373f 100644
--- a/src/renderer/src/style/layout.less
+++ b/src/renderer/src/style/layout.less
@@ -599,7 +599,7 @@
--td-bg-content-hover-1: #282828;
--td-bg-content-hover-2: #323232;
--td-bg-content-input: #242424;
- --td-bg-content-input-1: #242424;
+ --td-bg-content-input-1: #1d1f23;
--td-bg-content-input-2: #2c2c2c;
--td-bg-popup: #303032;
--td-context: 255, 255, 255;
diff --git a/src/renderer/src/style/normalize.less b/src/renderer/src/style/normalize.less
new file mode 100644
index 000000000..610d078f0
--- /dev/null
+++ b/src/renderer/src/style/normalize.less
@@ -0,0 +1,353 @@
+/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
+
+/* Document
+ ========================================================================== */
+
+/**
+ * 1. Correct the line height in all browsers.
+ * 2. Prevent adjustments of font size after orientation changes in iOS.
+ */
+
+ html {
+ line-height: 1.15; /* 1 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+ -webkit-font-smoothing: antialiased; /* chrome、safari */
+ -moz-osx-font-smoothing: grayscale; /* firefox */
+}
+
+/* Sections
+ ========================================================================== */
+
+/**
+ * Remove the margin in all browsers.
+ */
+
+body {
+ margin: 0;
+}
+
+/**
+ * Render the `main` element consistently in IE.
+ */
+
+main {
+ display: block;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+
+h1 {
+ margin: 0.67em 0;
+ font-size: 2em;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+
+hr {
+ box-sizing: content-box; /* 1 */
+ height: 0; /* 1 */
+ overflow: visible; /* 2 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+pre {
+ font-size: 1em; /* 2 */
+ font-family: monospace, monospace; /* 1 */
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Remove the gray background on active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * 1. Remove the bottom border in Chrome 57-
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+
+abbr[title] {
+ text-decoration: underline; /* 2 */
+ text-decoration: underline dotted; /* 2 */
+ border-bottom: none; /* 1 */
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+code,
+kbd,
+samp {
+ font-size: 1em; /* 2 */
+ font-family: monospace, monospace; /* 1 */
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+
+sub,
+sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove the border on images inside links in IE 10.
+ */
+
+img {
+ border-style: none;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * 1. Change the font styles in all browsers.
+ * 2. Remove the margin in Firefox and Safari.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ margin: 0; /* 2 */
+ font-size: 100%; /* 1 */
+ font-family: inherit; /* 1 */
+ line-height: 1.15; /* 1 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+
+button,
+input {
+ /* 1 */
+ overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+
+button,
+select {
+ /* 1 */
+ text-transform: none;
+}
+
+/**
+ * Correct the inability to style clickable types in iOS and Safari.
+ */
+
+button,
+[type='button'],
+[type='reset'],
+[type='submit'] {
+ -webkit-appearance: button;
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+
+button::-moz-focus-inner,
+[type='button']::-moz-focus-inner,
+[type='reset']::-moz-focus-inner,
+[type='submit']::-moz-focus-inner {
+ padding: 0;
+ border-style: none;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+
+button:-moz-focusring,
+[type='button']:-moz-focusring,
+[type='reset']:-moz-focusring,
+[type='submit']:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+/**
+ * Correct the padding in Firefox.
+ */
+
+fieldset {
+ padding: 0.35em 0.75em 0.625em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+
+legend {
+ display: table; /* 1 */
+ box-sizing: border-box; /* 1 */
+ max-width: 100%; /* 1 */
+ padding: 0; /* 3 */
+ color: inherit; /* 2 */
+ white-space: normal; /* 1 */
+}
+
+/**
+ * Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+
+progress {
+ vertical-align: baseline;
+}
+
+/**
+ * Remove the default vertical scrollbar in IE 10+.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10.
+ * 2. Remove the padding in IE 10.
+ */
+
+[type='checkbox'],
+[type='radio'] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+
+[type='number']::-webkit-inner-spin-button,
+[type='number']::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+[type='search'] {
+ outline-offset: -2px; /* 2 */
+ -webkit-appearance: textfield; /* 1 */
+}
+
+/**
+ * Remove the inner padding in Chrome and Safari on macOS.
+ */
+
+[type='search']::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+ font: inherit; /* 2 */
+ -webkit-appearance: button; /* 1 */
+}
+
+/* Interactive
+ ========================================================================== */
+
+/*
+ * Add the correct display in Edge, IE 10+, and Firefox.
+ */
+
+details {
+ display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+summary {
+ display: list-item;
+}
+
+/* Misc
+ ========================================================================== */
+
+/**
+ * Add the correct display in IE 10+.
+ */
+
+template {
+ display: none;
+}
+
+/**
+ * Add the correct display in IE 10.
+ */
+
+[hidden] {
+ display: none;
+}
From b6d4738de0900ef5131df6875f8c34d5c15c28d6 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sun, 29 Dec 2024 23:56:51 +0800
Subject: [PATCH 063/175] [optimize] format json
---
src/renderer/src/pages/lab/components/snifferPlay/index.vue | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/renderer/src/pages/lab/components/snifferPlay/index.vue b/src/renderer/src/pages/lab/components/snifferPlay/index.vue
index 303c4f528..66849c63b 100644
--- a/src/renderer/src/pages/lab/components/snifferPlay/index.vue
+++ b/src/renderer/src/pages/lab/components/snifferPlay/index.vue
@@ -77,6 +77,7 @@
@@ -1092,12 +1185,16 @@ const handleMonacoObject = (monaco) => {
.content {
flex: 1;
- display: flex;
- flex-direction: row;
- justify-content: space-between;
- grid-gap: var(--td-comp-margin-s);
+ // display: flex;
+ // flex-direction: row;
+ // justify-content: space-between;
+ // grid-gap: var(--td-comp-margin-s);
width: 100%;
- height: 100%;
+ // height: 100%;
+ height: calc(100% - 36px - var(--td-size-4));
+ // overflow: hidden;
+
+ border-radius: var(--td-radius-default);
overflow: hidden;
.left {
@@ -1334,4 +1431,301 @@ const handleMonacoObject = (monaco) => {
--vscode-editorStickyScroll-shadow: var(--td-bg-content-input-1);
--vscode-scrollbar-shadow: var(--td-bg-content-input-1);
}
+
+:deep(.t-tabs) {
+ height: 100%;
+
+ .t-tabs__header {
+ .t-tabs__nav-container.t-is-top {
+ background-color: var(--td-bg-content-input-1);
+ }
+ }
+
+ .t-tabs__nav--card.t-tabs__nav-item.t-is-active {
+ background-color: var(--td-bg-content-input-2);
+ border-bottom-color: transparent;
+ }
+
+ .t-tabs__content {
+ padding: var(--td-pop-padding-s);
+ background-color: var(--td-bg-content-input-2);
+ height: calc(100% - var(--td-comp-size-l));
+ width: 100%;
+ overflow: auto;
+
+ .t-tab-panel {
+ height: 100%;
+ width: 100%;
+ }
+ }
+
+ .t-tabs__nav-item.t-size-m {
+ height: var(--td-comp-size-l);
+ line-height: var(--td-comp-size-l);
+ background-color: var(--td-bg-content-input-1);
+ border-color: transparent;
+ }
+
+ .t-tabs__nav-item-text-wrapper {
+ color: var(--td-text-color-secondary);
+ font-size: var(--td-font-size-link-small);
+ font-weight: normal;
+ }
+
+}
+
+.data_debug, .dom_debug {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ flex-wrap: wrap;
+ grid-gap: var(--td-comp-margin-s);
+ overflow-y: auto;
+
+ .item {
+ display: flex;
+ flex-wrap: nowrap;
+ width: 100%;
+ overflow: hidden;
+ position: relative;
+
+ .init {
+ width: auto !important;
+
+ :deep(.t-button__text) {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ }
+
+ .click {
+ margin-left: var(--td-comp-margin-s);
+ border: 2px solid rgba(132, 133, 141, 0.7);
+ border-radius: var(--td-radius-circle);
+ width: 24px;
+ height: 24px;
+ }
+
+ .status {
+ display: flex;
+ flex-direction: column;
+ font-size: 12px;
+ line-height: 14px;
+ align-content: flex-start;
+
+ .title {
+ font-weight: 500;
+ text-align: left;
+ }
+
+ .desc {
+ font-size: 10px;
+ text-align: left;
+ }
+ }
+ }
+
+ .source {
+ :deep(.input-group) {
+ display: flex;
+ flex-wrap: nowrap;
+ width: 100%;
+ overflow: hidden;
+ gap: 0;
+
+ .input {
+ flex: 1;
+ width: 100%;
+ margin-right: var(--td-comp-margin-s);
+
+ .t-input {
+ background-color: var(--td-bg-content-input-1) !important;
+ }
+ }
+
+ .w-btn {
+ width: 50px !important;
+ background-color: var(--td-bg-content-input-1);
+ }
+ }
+ }
+
+ .input {
+ width: 100%;
+ margin-right: var(--td-comp-margin-s);
+
+ :deep(.t-input), :deep(.t-textarea__inner) {
+ background-color: var(--td-bg-content-input-1) !important;
+ }
+ }
+
+ .proxy-upload-textarea {
+ margin-right: 0;
+
+ :deep(.t-textarea__inner) {
+ padding-bottom: calc(var(--td-size-3) + var(--td-comp-size-m));
+ }
+ }
+
+ .proxy-upload-btn {
+ position: absolute;
+ right: var(--td-size-4);
+ bottom: var(--td-size-3);
+ }
+
+ .w-btn {
+ width: 50px;
+ background-color: var(--td-bg-content-input-1);
+ }
+
+ .w-100\% {
+ width: calc((100% - 50px - (var(--td-comp-margin-s))));
+ }
+
+ .w-50\% {
+ width: calc((100% - 50px - (var(--td-comp-margin-s) * 2)) / 2);
+ }
+
+ .w-50-30\% {
+ width: calc((100% - 50px - (var(--td-comp-margin-s) * 2)) / 10 * 3);
+ }
+
+ .w-50-70\% {
+ width: calc((100% - 50px - (var(--td-comp-margin-s) * 2)) / 10 * 7);
+ }
+
+ .w-33-30\% {
+ width: calc((100% - 50px - (var(--td-comp-margin-s) * 2)) / 10 * 3);
+ }
+
+ .w-33-40\% {
+ width: calc((100% - 50px - (var(--td-comp-margin-s) * 2)) / 10 * 4);
+ }
+
+ .w-33\% {
+ width: calc((100% - 50px - (var(--td-comp-margin-s) * 3)) / 3);
+ }
+ }
+}
+
+.html_preview {
+ display: flex;
+ flex-direction: column;
+ gap: var(--td-comp-margin-s);
+ height: 100%;
+
+ .urlbar-root {
+ display: flex;
+ gap: var(--td-comp-margin-s);
+
+ .urlbar-control {
+ display: flex;
+ justify-content: space-around;
+ align-items: center;
+ background-color: var(--td-bg-content-input-1);
+ border-radius: var(--td-radius-default);
+ height: 100%;
+ width: 100px;
+
+ :deep(.t-button) {
+ &:not(.t-is-disabled):not(.t-button--ghost) {
+ --ripple-color: transparent;
+ }
+ }
+
+ :deep(.t-button__text) {
+ svg {
+ color: var(--td-text-color-placeholder);
+ }
+ }
+
+ :deep(.t-button--variant-text) {
+ &:hover {
+ border-color: transparent;
+ background-color: transparent;
+
+ .t-button__text {
+ svg {
+ color: var(--td-primary-color);
+ }
+ }
+ }
+ }
+ }
+
+ .urlbar-url {
+ :deep(.t-input) {
+ background-color: var(--td-bg-content-input-1) !important;
+ }
+ }
+
+ .urlbar-devtool {
+ background-color: var(--td-bg-content-input-1);
+ --ripple-color: transparent;
+ color: var(--td-text-color-placeholder);
+
+ &:hover {
+ color: var(--td-primary-color);
+ }
+ }
+ }
+
+ .webview-box {
+ flex: 1;
+ height: 100%;
+ width: 100%;
+ }
+}
+
+.split-pane {
+ height: 100%;
+ width: 100%;
+
+ .editor-pane {
+ height: 100%;
+ width: 100%;
+ }
+
+ .console-pane {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ width: 100%;
+
+ .console-root {
+ display: flex;
+ justify-content: space-between;
+ background-color: var(--td-bg-content-input-1);
+ padding: 0 var(--td-comp-paddingLR-xs);
+
+ .header-name {
+ color: var(--td-text-color-secondary);
+ font-size: var(--td-font-size-link-small);
+ }
+
+ .header-clear {
+ color: var(--td-text-color-secondary);
+ cursor: pointer;
+
+ &:hover {
+ color: var(--td-text-color-primary);
+ }
+ }
+ }
+
+ .log-pane-content {
+ display: flex;
+ flex: 1 1 auto;
+ flex-direction: column;
+ min-height: 0;
+
+ .log-box {
+ width: 100%;
+ height: 100%;
+ overflow-y: auto;
+ background-color: var(--td-bg-content-input-2);
+ }
+ }
+ }
+}
diff --git a/src/renderer/src/pages/lab/components/jsEdit/index_t3.vue b/src/renderer/src/pages/lab/components/jsEdit/index_t3.vue
new file mode 100644
index 000000000..05ed0e2ff
--- /dev/null
+++ b/src/renderer/src/pages/lab/components/jsEdit/index_t3.vue
@@ -0,0 +1,1337 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('pages.lab.jsEdit.rule.try') }}
+
+
+
+
+
+
+
+
+
+ {{ $t('pages.lab.jsEdit.rule.try') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('pages.lab.jsEdit.action.init') }}
+ {{ $t('pages.lab.jsEdit.action.initStatus') }}:
+ {{
+ form.init.auto
+ ? $t('pages.lab.jsEdit.action.initAuto')
+ : $t('pages.lab.jsEdit.action.initManual')
+ }}
+
+
+
+
+
+
{{
+ $t('pages.lab.jsEdit.action.classify')
+ }}
+
{{
+ $t('pages.lab.jsEdit.action.home')
+ }}
+
+
+
+
+
+ {{
+ $t('pages.lab.jsEdit.action.list')
+ }}
+
+
+
+ {{
+ $t('pages.lab.jsEdit.action.detail')
+ }}
+
+
+
+
+ {{
+ $t('pages.lab.jsEdit.action.search')
+ }}
+
+
+
+
+ {{
+ $t('pages.lab.jsEdit.action.play')
+ }}
+
+
+
+ {{
+ $t('pages.lab.jsEdit.action.proxy')
+ }}
+
+
+
+
+
+
+ {{ $t('pages.lab.jsEdit.select.debug') }}
+ {{
+ $t('pages.lab.jsEdit.select.source')
+ }}
+ {{ $t('pages.lab.jsEdit.select.rule') }}
+ {{ $t('pages.lab.jsEdit.select.log') }}
+
+
+
+
+ {{ $t('pages.lab.jsEdit.select.f12') }}
+ {{ $t('pages.lab.jsEdit.select.clear') }}
+
+
+ {{ $t('pages.lab.jsEdit.select.upload') }}
+ {{ $t('pages.lab.jsEdit.select.copy') }}
+
+
+ {{
+ $t('pages.lab.jsEdit.select.format')
+ }}
+ {{ $t('pages.lab.jsEdit.select.reset') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/renderer/src/pages/lab/components/reqHtml/index.vue b/src/renderer/src/pages/lab/components/reqHtml/index.vue
index 664303ff2..5ddc18d8f 100644
--- a/src/renderer/src/pages/lab/components/reqHtml/index.vue
+++ b/src/renderer/src/pages/lab/components/reqHtml/index.vue
@@ -1,27 +1,27 @@
-
-
-
-
-
-
-
-
- {{ $t('pages.lab.staticFilter.action.source') }}
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('pages.lab.staticFilter.action.source') }}
+
+
@@ -203,35 +204,13 @@ const reqCancel = () => {
From 99a2b32f64790d5006cd3a01bc42af9965fa4670 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sun, 29 Dec 2024 23:58:26 +0800
Subject: [PATCH 065/175] [bug] fix categories when is null
---
src/main/core/server/routes/v1/site/cms/adapter/catvod.ts | 2 +-
src/main/core/server/routes/v1/site/cms/adapter/drpyjs0.ts | 2 +-
src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts | 2 +-
src/main/core/server/routes/v1/site/cms/adapter/t1Json.ts | 2 +-
src/main/core/server/routes/v1/site/cms/adapter/t4Hipy.ts | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/catvod.ts b/src/main/core/server/routes/v1/site/cms/adapter/catvod.ts
index dc91a2cc9..df3b5532e 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/catvod.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/catvod.ts
@@ -8,7 +8,7 @@ class CatvodAdapter {
constructor(source) {
this.api = source.api;
- this.categoryfilter = source.categories.split(/[,,]/).map((category) => category.trim());
+ this.categoryfilter = source.categories ? source.categories.split(/[,,]/).map((category) => category.trim()) : [];
}
async init() {
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/drpyjs0.ts b/src/main/core/server/routes/v1/site/cms/adapter/drpyjs0.ts
index 68453affb..35d128021 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/drpyjs0.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/drpyjs0.ts
@@ -5,7 +5,7 @@ class DrpyJs0Adapter {
categoryfilter: any[] = [];
constructor(source) {
this.api = source.api;
- this.categoryfilter = source.categories.split(/[,,]/).map((category) => category.trim());
+ this.categoryfilter = source.categories ? source.categories.split(/[,,]/).map((category) => category.trim()) : [];
}
async init() {}
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts b/src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts
index 3bc2da3f5..7e808c485 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/t0Xml.ts
@@ -19,7 +19,7 @@ class T0Adapter {
constructor(source) {
this.api = source.api;
this.playurl = source.playurl;
- this.categoryfilter = source.categories.split(/[,,]/).map((category) => category.trim());
+ this.categoryfilter = source.categories ? source.categories.split(/[,,]/).map((category) => category.trim()) : [];
}
async init() {}
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/t1Json.ts b/src/main/core/server/routes/v1/site/cms/adapter/t1Json.ts
index d66cff950..3d14c999f 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/t1Json.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/t1Json.ts
@@ -8,7 +8,7 @@ class T1Adapter {
constructor(source) {
this.api = source.api;
this.playurl = source.playurl;
- this.categoryfilter = source.categories.split(/[,,]/).map((category) => category.trim());
+ this.categoryfilter = source.categories ? source.categories.split(/[,,]/).map((category) => category.trim()) : [];
}
async init() {}
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/t4Hipy.ts b/src/main/core/server/routes/v1/site/cms/adapter/t4Hipy.ts
index 5129ce212..1efb7deea 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/t4Hipy.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/t4Hipy.ts
@@ -8,7 +8,7 @@ class HipyT4Adapter {
constructor(source) {
this.api = source.api;
this.ext = source.ext;
- this.categoryfilter = source.categories.split(/[,,]/).map((category) => category.trim());
+ this.categoryfilter = source.categories ? source.categories.split(/[,,]/).map((category) => category.trim()) : [];
}
async init() {}
From b5ca10b7d260b31878ff7a6bb97fc09efc2b4552 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Sun, 29 Dec 2024 23:58:44 +0800
Subject: [PATCH 066/175] [optimize] t3 log
---
.../core/server/routes/v1/site/cms/adapter/drpy/drpy3.ts | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/main/core/server/routes/v1/site/cms/adapter/drpy/drpy3.ts b/src/main/core/server/routes/v1/site/cms/adapter/drpy/drpy3.ts
index d51272e7b..4d4760af8 100644
--- a/src/main/core/server/routes/v1/site/cms/adapter/drpy/drpy3.ts
+++ b/src/main/core/server/routes/v1/site/cms/adapter/drpy/drpy3.ts
@@ -55,12 +55,14 @@ console.log = (function (oriLogFunc) {
let timeStamp = `${hours.toString().padStart(2, '0')}:${minutes
.toString()
.padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`; // 格式化时分秒
- logRecord.push([timeStamp, ...args]); // 记录日志内容
+ logRecord.push(['log', timeStamp, ...args]); // 记录日志内容
oriLogFunc(timeStamp, ...args); // 保持原来的输出功能
};
})(console.log);
const getLogRecord = () => {
- return logRecord;
+ const res = logRecord;
+ logRecord = [];
+ return res;
};
const clearLogRecord = () => {
logRecord = [];
From d8466876f2cffada5e9c9dab6c1d297643acfc3f Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Mon, 30 Dec 2024 00:02:58 +0800
Subject: [PATCH 067/175] [change] npm pkg
---
package.json | 17 +-
src/renderer/auto-imports.d.ts | 7 +
src/renderer/components.d.ts | 5 +-
yarn.lock | 474 ++++++++++++++++++---------------
4 files changed, 279 insertions(+), 224 deletions(-)
diff --git a/package.json b/package.json
index cb65d716c..d27627535 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "zyfun",
- "version": "3.3.10-beta1225",
+ "version": "3.3.10-beta1230",
"description": "zyfun client",
"main": "./out/main/index.js",
"repository": {
@@ -68,7 +68,7 @@
"@imengyu/vue3-context-menu": "^1.4.4",
"@nplayer/danmaku": "^1.0.12",
"@rushstack/eslint-patch": "^1.10.4",
- "@swc/core": "^1.10.1",
+ "@swc/core": "^1.10.3",
"@tdesign-vue-next/chat": "^0.1.4",
"@types/cheerio": "^0.22.35",
"@types/electron-localshortcut": "^3.1.3",
@@ -90,7 +90,7 @@
"depcheck": "^1.4.7",
"dplayer": "^1.27.1",
"drizzle-kit": "^0.30.1",
- "drizzle-orm": "^0.38.2",
+ "drizzle-orm": "^0.38.3",
"electron": "^33.2.1",
"electron-builder": "^25.1.8",
"electron-localshortcut": "^3.2.1",
@@ -108,7 +108,7 @@
"form-data": "^4.0.1",
"fs-extra": "^11.2.0",
"he": "^1.2.0",
- "highlight.js": "^11.11.0",
+ "highlight.js": "^11.11.1",
"hls.js": "^1.5.18",
"husky": "^9.1.7",
"iconv-lite": "^0.6.3",
@@ -119,6 +119,10 @@
"jsonpath-plus": "^10.2.0",
"less": "^4.2.1",
"lodash": "^4.17.21",
+ "luna-console": "^1.3.5",
+ "luna-data-grid": "^1.2.1",
+ "luna-dom-viewer": "^1.4.0",
+ "luna-object-viewer": "^0.3.1",
"markdown-it": "^14.1.0",
"markdown-it-mathjax3": "^4.3.2",
"mime-types": "^2.1.35",
@@ -139,6 +143,7 @@
"prettier": "^3.4.2",
"qrcode.vue": "^3.6.0",
"querystring": "^0.2.1",
+ "resize-observer-polyfill": "^1.5.1",
"shaka-player": "^4.12.5",
"sm-crypto": "^0.3.13",
"smooth-scrollbar": "^8.8.4",
@@ -151,11 +156,11 @@
"unplugin-vue-components": "^0.28.0",
"uuid": "^11.0.3",
"v3-infinite-loading": "^1.3.2",
- "vite": "^6.0.5",
+ "vite": "^6.0.6",
"vite-plugin-vue-devtools": "^7.6.8",
"vite-svg-loader": "^5.1.0",
"vue": "^3.5.13",
- "vue-i18n": "^11.0.0",
+ "vue-i18n": "^11.0.1",
"vue-router": "^4.5.0",
"vue-tsc": "^2.2.0",
"webdav": "^5.7.1",
diff --git a/src/renderer/auto-imports.d.ts b/src/renderer/auto-imports.d.ts
index aabe4d263..12a9137c6 100644
--- a/src/renderer/auto-imports.d.ts
+++ b/src/renderer/auto-imports.d.ts
@@ -8,6 +8,13 @@ export {}
declare global {
const DialogPlugin: typeof import('tdesign-vue-next')['DialogPlugin']
const MessagePlugin: typeof import('tdesign-vue-next')['MessagePlugin']
+ const TBSCertificate: typeof import('tdesign-vue-next')['BSCertificate']
const TCPlayer: typeof import('tdesign-vue-next')['CPlayer']
+ const TDesignChat: typeof import('tdesign-vue-next')['DesignChat']
+ const TEN: typeof import('tdesign-vue-next')['EN']
+ const THREE: typeof import('tdesign-vue-next')['HREE']
+ const TICKING: typeof import('tdesign-vue-next')['ICKING']
const TIMEOUT: typeof import('tdesign-vue-next')['IMEOUT']
+ const TWENTYFOUR: typeof import('tdesign-vue-next')['WENTYFOUR']
+ const TWO: typeof import('tdesign-vue-next')['WO']
}
diff --git a/src/renderer/components.d.ts b/src/renderer/components.d.ts
index cccf9f54b..18740c653 100644
--- a/src/renderer/components.d.ts
+++ b/src/renderer/components.d.ts
@@ -10,14 +10,14 @@ declare module 'vue' {
CommonNav: typeof import('./src/components/common-nav/index.vue')['default']
MarkdownRender: typeof import('./src/components/markdown-render/index.vue')['default']
Note: typeof import('./src/components/common-setting/note/index.vue')['default']
- Player: typeof import('./src/components/player/index.vue')['default']
+ ResizeTrigger: typeof import('./src/components/split/resize-trigger.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
SharePopup: typeof import('./src/components/share-popup/index.vue')['default']
+ Split: typeof import('./src/components/split/index.vue')['default']
Table: typeof import('./src/components/common-setting/table/index.vue')['default']
TagNav: typeof import('./src/components/tag-nav/index.vue')['default']
TAside: typeof import('tdesign-vue-next')['Aside']
- TAvatar: typeof import('tdesign-vue-next')['Avatar']
TBackTop: typeof import('tdesign-vue-next')['BackTop']
TBadge: typeof import('tdesign-vue-next')['Badge']
TBreadcrumb: typeof import('tdesign-vue-next')['Breadcrumb']
@@ -41,7 +41,6 @@ declare module 'vue' {
THeader: typeof import('tdesign-vue-next')['Header']
TImage: typeof import('tdesign-vue-next')['Image']
TInput: typeof import('tdesign-vue-next')['Input']
- TInputAdornment: typeof import('tdesign-vue-next')['InputAdornment']
TInputNumber: typeof import('tdesign-vue-next')['InputNumber']
TitleMenu: typeof import('./src/components/title-menu/index.vue')['default']
TLayout: typeof import('tdesign-vue-next')['Layout']
diff --git a/yarn.lock b/yarn.lock
index ce40168f5..6b160f6bc 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -482,10 +482,10 @@
resolved "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f"
integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==
-"@esbuild/aix-ppc64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz#b57697945b50e99007b4c2521507dc613d4a648c"
- integrity sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==
+"@esbuild/aix-ppc64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461"
+ integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==
"@esbuild/android-arm64@0.18.20":
version "0.18.20"
@@ -502,10 +502,10 @@
resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052"
integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
-"@esbuild/android-arm64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz#1add7e0af67acefd556e407f8497e81fddad79c0"
- integrity sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==
+"@esbuild/android-arm64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894"
+ integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==
"@esbuild/android-arm@0.18.20":
version "0.18.20"
@@ -522,10 +522,10 @@
resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28"
integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==
-"@esbuild/android-arm@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.24.0.tgz#ab7263045fa8e090833a8e3c393b60d59a789810"
- integrity sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==
+"@esbuild/android-arm@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3"
+ integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==
"@esbuild/android-x64@0.18.20":
version "0.18.20"
@@ -542,10 +542,10 @@
resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e"
integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==
-"@esbuild/android-x64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.24.0.tgz#e8f8b196cfdfdd5aeaebbdb0110983460440e705"
- integrity sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==
+"@esbuild/android-x64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb"
+ integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==
"@esbuild/darwin-arm64@0.18.20":
version "0.18.20"
@@ -562,10 +562,10 @@
resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a"
integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==
-"@esbuild/darwin-arm64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz#2d0d9414f2acbffd2d86e98253914fca603a53dd"
- integrity sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==
+"@esbuild/darwin-arm64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936"
+ integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==
"@esbuild/darwin-x64@0.18.20":
version "0.18.20"
@@ -582,10 +582,10 @@
resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22"
integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
-"@esbuild/darwin-x64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz#33087aab31a1eb64c89daf3d2cf8ce1775656107"
- integrity sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==
+"@esbuild/darwin-x64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9"
+ integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==
"@esbuild/freebsd-arm64@0.18.20":
version "0.18.20"
@@ -602,10 +602,10 @@
resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e"
integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==
-"@esbuild/freebsd-arm64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz#bb76e5ea9e97fa3c753472f19421075d3a33e8a7"
- integrity sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==
+"@esbuild/freebsd-arm64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00"
+ integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==
"@esbuild/freebsd-x64@0.18.20":
version "0.18.20"
@@ -622,10 +622,10 @@
resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261"
integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==
-"@esbuild/freebsd-x64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz#e0e2ce9249fdf6ee29e5dc3d420c7007fa579b93"
- integrity sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==
+"@esbuild/freebsd-x64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f"
+ integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==
"@esbuild/linux-arm64@0.18.20":
version "0.18.20"
@@ -642,10 +642,10 @@
resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b"
integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
-"@esbuild/linux-arm64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz#d1b2aa58085f73ecf45533c07c82d81235388e75"
- integrity sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==
+"@esbuild/linux-arm64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43"
+ integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==
"@esbuild/linux-arm@0.18.20":
version "0.18.20"
@@ -662,10 +662,10 @@
resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9"
integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==
-"@esbuild/linux-arm@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz#8e4915df8ea3e12b690a057e77a47b1d5935ef6d"
- integrity sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==
+"@esbuild/linux-arm@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736"
+ integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==
"@esbuild/linux-ia32@0.18.20":
version "0.18.20"
@@ -682,10 +682,10 @@
resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2"
integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==
-"@esbuild/linux-ia32@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz#8200b1110666c39ab316572324b7af63d82013fb"
- integrity sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==
+"@esbuild/linux-ia32@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5"
+ integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==
"@esbuild/linux-loong64@0.18.20":
version "0.18.20"
@@ -702,10 +702,10 @@
resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df"
integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==
-"@esbuild/linux-loong64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz#6ff0c99cf647504df321d0640f0d32e557da745c"
- integrity sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==
+"@esbuild/linux-loong64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc"
+ integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==
"@esbuild/linux-mips64el@0.18.20":
version "0.18.20"
@@ -722,10 +722,10 @@
resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe"
integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==
-"@esbuild/linux-mips64el@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz#3f720ccd4d59bfeb4c2ce276a46b77ad380fa1f3"
- integrity sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==
+"@esbuild/linux-mips64el@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb"
+ integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==
"@esbuild/linux-ppc64@0.18.20":
version "0.18.20"
@@ -742,10 +742,10 @@
resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4"
integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==
-"@esbuild/linux-ppc64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz#9d6b188b15c25afd2e213474bf5f31e42e3aa09e"
- integrity sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==
+"@esbuild/linux-ppc64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412"
+ integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==
"@esbuild/linux-riscv64@0.18.20":
version "0.18.20"
@@ -762,10 +762,10 @@
resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc"
integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==
-"@esbuild/linux-riscv64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz#f989fdc9752dfda286c9cd87c46248e4dfecbc25"
- integrity sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==
+"@esbuild/linux-riscv64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694"
+ integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==
"@esbuild/linux-s390x@0.18.20":
version "0.18.20"
@@ -782,10 +782,10 @@
resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de"
integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==
-"@esbuild/linux-s390x@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz#29ebf87e4132ea659c1489fce63cd8509d1c7319"
- integrity sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==
+"@esbuild/linux-s390x@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577"
+ integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==
"@esbuild/linux-x64@0.18.20":
version "0.18.20"
@@ -802,10 +802,15 @@
resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0"
integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==
-"@esbuild/linux-x64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz#4af48c5c0479569b1f359ffbce22d15f261c0cef"
- integrity sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==
+"@esbuild/linux-x64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f"
+ integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==
+
+"@esbuild/netbsd-arm64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6"
+ integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==
"@esbuild/netbsd-x64@0.18.20":
version "0.18.20"
@@ -822,15 +827,15 @@
resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047"
integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==
-"@esbuild/netbsd-x64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz#1ae73d23cc044a0ebd4f198334416fb26c31366c"
- integrity sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==
+"@esbuild/netbsd-x64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40"
+ integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==
-"@esbuild/openbsd-arm64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz#5d904a4f5158c89859fd902c427f96d6a9e632e2"
- integrity sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==
+"@esbuild/openbsd-arm64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f"
+ integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==
"@esbuild/openbsd-x64@0.18.20":
version "0.18.20"
@@ -847,10 +852,10 @@
resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70"
integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==
-"@esbuild/openbsd-x64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz#4c8aa88c49187c601bae2971e71c6dc5e0ad1cdf"
- integrity sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==
+"@esbuild/openbsd-x64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205"
+ integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==
"@esbuild/sunos-x64@0.18.20":
version "0.18.20"
@@ -867,10 +872,10 @@
resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b"
integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==
-"@esbuild/sunos-x64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz#8ddc35a0ea38575fa44eda30a5ee01ae2fa54dd4"
- integrity sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==
+"@esbuild/sunos-x64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6"
+ integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==
"@esbuild/win32-arm64@0.18.20":
version "0.18.20"
@@ -887,10 +892,10 @@
resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d"
integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==
-"@esbuild/win32-arm64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz#6e79c8543f282c4539db684a207ae0e174a9007b"
- integrity sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==
+"@esbuild/win32-arm64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85"
+ integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==
"@esbuild/win32-ia32@0.18.20":
version "0.18.20"
@@ -907,10 +912,10 @@
resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b"
integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==
-"@esbuild/win32-ia32@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz#057af345da256b7192d18b676a02e95d0fa39103"
- integrity sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==
+"@esbuild/win32-ia32@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2"
+ integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==
"@esbuild/win32-x64@0.18.20":
version "0.18.20"
@@ -927,10 +932,10 @@
resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c"
integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==
-"@esbuild/win32-x64@0.24.0":
- version "0.24.0"
- resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz#168ab1c7e1c318b922637fad8f339d48b01e1244"
- integrity sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==
+"@esbuild/win32-x64@0.24.2":
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b"
+ integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==
"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
version "4.4.1"
@@ -1093,26 +1098,26 @@
resolved "https://registry.npmmirror.com/@imengyu/vue3-context-menu/-/vue3-context-menu-1.4.4.tgz#c354c2a261bfc3a115ef906fd61786b810581fd0"
integrity sha512-Zjh1BbrvcNbZvsWr9IJl9KQUomf50EeP2GT+mWk63sqatDZxG7ZFX1eltrwRyfSBr+SuFpMvdYv/yRxpBsyw6w==
-"@intlify/core-base@11.0.0":
- version "11.0.0"
- resolved "https://registry.npmmirror.com/@intlify/core-base/-/core-base-11.0.0.tgz#e8cd5e542bce8c2d83419ae7b6c962d15edfb515"
- integrity sha512-sbtC0hVOEr4ZAYSffQoj362inaKpb4sjgtLHVGt4tbfP+YjnHO6eUDlHgAIEESch+Kffmsc7Z+l1l2sV9oJZQQ==
+"@intlify/core-base@11.0.1":
+ version "11.0.1"
+ resolved "https://registry.npmmirror.com/@intlify/core-base/-/core-base-11.0.1.tgz#f84564a5bd313879b32cea70e6e3d2fe9e1f128b"
+ integrity sha512-NAmhw1l/llM0HZRpagR/ChJTNymW4ll6/4EDSJML5c8L5Hl/+k6UyF8EIgE6DeHpfheQujkSRngauViHqq6jJQ==
dependencies:
- "@intlify/message-compiler" "11.0.0"
- "@intlify/shared" "11.0.0"
+ "@intlify/message-compiler" "11.0.1"
+ "@intlify/shared" "11.0.1"
-"@intlify/message-compiler@11.0.0":
- version "11.0.0"
- resolved "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-11.0.0.tgz#e0e3cdfb33a50e0006dcb964ef488852fcdc87d8"
- integrity sha512-teYbQMdZisn19KsKj/jvRIFN72Lyxd1VY69TLhhXd9wDgZMlyEVLLLdLb0wDLfbBP8uSda9vKmxYh+q8Xa5sZQ==
+"@intlify/message-compiler@11.0.1":
+ version "11.0.1"
+ resolved "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-11.0.1.tgz#7c159642e3a3c160dd25a15c17127c69d56b0561"
+ integrity sha512-5RFH8x+Mn3mbjcHXnb6KCXGiczBdiQkWkv99iiA0JpKrNuTAQeW59Pjq/uObMB0eR0shnKYGTkIJxum+DbL3sw==
dependencies:
- "@intlify/shared" "11.0.0"
+ "@intlify/shared" "11.0.1"
source-map-js "^1.0.2"
-"@intlify/shared@11.0.0":
- version "11.0.0"
- resolved "https://registry.npmmirror.com/@intlify/shared/-/shared-11.0.0.tgz#fb29b36c0867e916814a489f9e22757a412386d2"
- integrity sha512-MLKIyFz37qYF1G5UQZMwGoJyp8DD3rtcXDplRHZdSOmbfOYbD4g9kJZ6qCsm1Ru3vee6CTnJcbO4LV1JeIDGbA==
+"@intlify/shared@11.0.1":
+ version "11.0.1"
+ resolved "https://registry.npmmirror.com/@intlify/shared/-/shared-11.0.1.tgz#25ff7f038bbae903e2bc75bf862b2380fde07cc8"
+ integrity sha512-lH164+aDDptHZ3dBDbIhRa1dOPQUp+83iugpc+1upTOWCnwyC1PVis6rSWNMMJ8VQxvtHQB9JMib48K55y0PvQ==
"@isaacs/cliui@^8.0.2":
version "8.0.2"
@@ -1439,74 +1444,74 @@
resolved "https://registry.npmmirror.com/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz#abb11d99aeb6d27f1b563c38147a72d50058e339"
integrity sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==
-"@swc/core-darwin-arm64@1.10.1":
- version "1.10.1"
- resolved "https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.1.tgz#faaaab19b4a039ae67ef661c0144a6f20fe8a78e"
- integrity sha512-NyELPp8EsVZtxH/mEqvzSyWpfPJ1lugpTQcSlMduZLj1EASLO4sC8wt8hmL1aizRlsbjCX+r0PyL+l0xQ64/6Q==
+"@swc/core-darwin-arm64@1.10.3":
+ version "1.10.3"
+ resolved "https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.3.tgz#d84f19e12a0cc1a1c0ebffdaffd3650d318842c0"
+ integrity sha512-LFFCxAUKBy69AUE+01rgazQcafIXrYs6tBa9SyKPR51ft6Tp66dAVrWg9MTykaWskuXEe80LPUvUw1ga3bOH3A==
-"@swc/core-darwin-x64@1.10.1":
- version "1.10.1"
- resolved "https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.10.1.tgz#754600f453abd24471c202d48836f1161d798f49"
- integrity sha512-L4BNt1fdQ5ZZhAk5qoDfUnXRabDOXKnXBxMDJ+PWLSxOGBbWE6aJTnu4zbGjJvtot0KM46m2LPAPY8ttknqaZA==
+"@swc/core-darwin-x64@1.10.3":
+ version "1.10.3"
+ resolved "https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.10.3.tgz#2632a331c2d78f720426aa7e658242a8499f4231"
+ integrity sha512-yZNv1+yPg0GvYdThsMI8WpaPRAPuw2gQDMdgijLFfRcRlr2l1sTWsDHqGd7QMTx+acYM3uB537gyd31WjUAwlQ==
-"@swc/core-linux-arm-gnueabihf@1.10.1":
- version "1.10.1"
- resolved "https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.1.tgz#b0f43c482d0d1819b382a4eb4a0733ce2e386257"
- integrity sha512-Y1u9OqCHgvVp2tYQAJ7hcU9qO5brDMIrA5R31rwWQIAKDkJKtv3IlTHF0hrbWk1wPR0ZdngkQSJZple7G+Grvw==
+"@swc/core-linux-arm-gnueabihf@1.10.3":
+ version "1.10.3"
+ resolved "https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.3.tgz#467aa5b2ee72f4b2d1359103da9fddb2c046dc79"
+ integrity sha512-Qa6hu5ASoKV4rcYUBGG3y3z+9UT042KAG4A7ivqqYQFcMfkB4NbZb5So2YWOpUc0/5YlSVkgL22h3Mbj5EXy7A==
-"@swc/core-linux-arm64-gnu@1.10.1":
- version "1.10.1"
- resolved "https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.1.tgz#e02a9e22c25ba85ef00335742e549e06284cf33a"
- integrity sha512-tNQHO/UKdtnqjc7o04iRXng1wTUXPgVd8Y6LI4qIbHVoVPwksZydISjMcilKNLKIwOoUQAkxyJ16SlOAeADzhQ==
+"@swc/core-linux-arm64-gnu@1.10.3":
+ version "1.10.3"
+ resolved "https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.3.tgz#f721e57f8ddc11c4f6b5e798e57fb16958b740a0"
+ integrity sha512-BGnoZrmo0nlkXrOxVHk5U3j9u4BuquFviC+LvMe+HrDc5YLVe1gSXMUSBKhIz9MY9uFgxXW977TnB1XjLSKe5Q==
-"@swc/core-linux-arm64-musl@1.10.1":
- version "1.10.1"
- resolved "https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.1.tgz#3a0530af8f8bd3717f2f1bd8a2f5183fc58d4cf1"
- integrity sha512-x0L2Pd9weQ6n8dI1z1Isq00VHFvpBClwQJvrt3NHzmR+1wCT/gcYl1tp9P5xHh3ldM8Cn4UjWCw+7PaUgg8FcQ==
+"@swc/core-linux-arm64-musl@1.10.3":
+ version "1.10.3"
+ resolved "https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.3.tgz#45848528e653fd6d8976f30f98c5cd6e067558a5"
+ integrity sha512-L07/4zKnIY2S/00bE+Yn3oEHkyGjWmGGE8Ta4luVCL+00s04EIwMoE1Hc8E8xFB5zLew5ViKFc5kNb5YZ/tRFQ==
-"@swc/core-linux-x64-gnu@1.10.1":
- version "1.10.1"
- resolved "https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.1.tgz#5eb4d282b047a22896ab1d4627403be4c3e4fa6a"
- integrity sha512-yyYEwQcObV3AUsC79rSzN9z6kiWxKAVJ6Ntwq2N9YoZqSPYph+4/Am5fM1xEQYf/kb99csj0FgOelomJSobxQA==
+"@swc/core-linux-x64-gnu@1.10.3":
+ version "1.10.3"
+ resolved "https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.3.tgz#1e62072cda6226297bd1497f056ed9f61a3ea2e8"
+ integrity sha512-cvTCekY4u0fBIDNfhv/2UxcOXqH4XJE2iNxKuQejS5KIapFJwrZ+fRQ2lha3+yopI/d2p96BlBEWTAcBzeTntw==
-"@swc/core-linux-x64-musl@1.10.1":
- version "1.10.1"
- resolved "https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.1.tgz#890f2eda3e67ccc6817cdd04eff91e6ad9e761c4"
- integrity sha512-tcaS43Ydd7Fk7sW5ROpaf2Kq1zR+sI5K0RM+0qYLYYurvsJruj3GhBCaiN3gkzd8m/8wkqNqtVklWaQYSDsyqA==
+"@swc/core-linux-x64-musl@1.10.3":
+ version "1.10.3"
+ resolved "https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.3.tgz#452ee7745aafe5cff5eeee5ee7c5cd748285451d"
+ integrity sha512-h9kUOTrSSpY9JNc41a+NMAwK62USk/pvNE9Fi/Pfoklmlf9j9j8gRCitqvHpmZcEF4PPIsoMdiGetDipTwvWlw==
-"@swc/core-win32-arm64-msvc@1.10.1":
- version "1.10.1"
- resolved "https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.1.tgz#4ea7b2a2fab47f801d31ea8b001a141efaa5e6bf"
- integrity sha512-D3Qo1voA7AkbOzQ2UGuKNHfYGKL6eejN8VWOoQYtGHHQi1p5KK/Q7V1ku55oxXBsj79Ny5FRMqiRJpVGad7bjQ==
+"@swc/core-win32-arm64-msvc@1.10.3":
+ version "1.10.3"
+ resolved "https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.3.tgz#461f88d5ef8af95a5462acb8371e41d7b9718d13"
+ integrity sha512-iHOmLYkZYn3r1Ff4rfyczdrYGt/wVIWyY0t8swsO9o1TE+zmucGFZuYZzgj3ng8Kp4sojJrydAGz8TINQZDBzQ==
-"@swc/core-win32-ia32-msvc@1.10.1":
- version "1.10.1"
- resolved "https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.1.tgz#729102669ccdb72e69884cce58e3686ac63d6f36"
- integrity sha512-WalYdFoU3454Og+sDKHM1MrjvxUGwA2oralknXkXL8S0I/8RkWZOB++p3pLaGbTvOO++T+6znFbQdR8KRaa7DA==
+"@swc/core-win32-ia32-msvc@1.10.3":
+ version "1.10.3"
+ resolved "https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.3.tgz#18268542f1becc79fce13c22c964763128d10fed"
+ integrity sha512-4SqLSE4Ozh8SxuVuHIZhkSyJQru5+WbQMRs5ggLRqeUy3vkUPHOAFAY3oMwDJUN6BwbAr8+664TmdrMwaWh8Ng==
-"@swc/core-win32-x64-msvc@1.10.1":
- version "1.10.1"
- resolved "https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.1.tgz#7d665a7c69642861aed850ecb0cdf5d87197edda"
- integrity sha512-JWobfQDbTnoqaIwPKQ3DVSywihVXlQMbDuwik/dDWlj33A8oEHcjPOGs4OqcA3RHv24i+lfCQpM3Mn4FAMfacA==
+"@swc/core-win32-x64-msvc@1.10.3":
+ version "1.10.3"
+ resolved "https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.3.tgz#235c62f53fdc74c84ed6cb41e8e43ef3960b2032"
+ integrity sha512-jTyf/IbNq7NVyqqDIEDzgjALjWu1IMfXKLXXAJArreklIMzkfHU1sV32ZJLOBmRKPyslCoalxIAU+hTx4reUTQ==
-"@swc/core@^1.10.1":
- version "1.10.1"
- resolved "https://registry.npmmirror.com/@swc/core/-/core-1.10.1.tgz#16b3b8284bafb0ecabb253925796883971e5a761"
- integrity sha512-rQ4dS6GAdmtzKiCRt3LFVxl37FaY1cgL9kSUTnhQ2xc3fmHOd7jdJK/V4pSZMG1ruGTd0bsi34O2R0Olg9Zo/w==
+"@swc/core@^1.10.3":
+ version "1.10.3"
+ resolved "https://registry.npmmirror.com/@swc/core/-/core-1.10.3.tgz#d263db1f6575568ba2e85fda6b6f2a7e369f0e1e"
+ integrity sha512-2yjqCcsBx6SNBQZIYNlwxED9aYXW/7QBZyr8LYAxTx5bzmoNhKiClYbsNLe1NJ6ccf5uSbcInw12PjXLduNEdQ==
dependencies:
"@swc/counter" "^0.1.3"
"@swc/types" "^0.1.17"
optionalDependencies:
- "@swc/core-darwin-arm64" "1.10.1"
- "@swc/core-darwin-x64" "1.10.1"
- "@swc/core-linux-arm-gnueabihf" "1.10.1"
- "@swc/core-linux-arm64-gnu" "1.10.1"
- "@swc/core-linux-arm64-musl" "1.10.1"
- "@swc/core-linux-x64-gnu" "1.10.1"
- "@swc/core-linux-x64-musl" "1.10.1"
- "@swc/core-win32-arm64-msvc" "1.10.1"
- "@swc/core-win32-ia32-msvc" "1.10.1"
- "@swc/core-win32-x64-msvc" "1.10.1"
+ "@swc/core-darwin-arm64" "1.10.3"
+ "@swc/core-darwin-x64" "1.10.3"
+ "@swc/core-linux-arm-gnueabihf" "1.10.3"
+ "@swc/core-linux-arm64-gnu" "1.10.3"
+ "@swc/core-linux-arm64-musl" "1.10.3"
+ "@swc/core-linux-x64-gnu" "1.10.3"
+ "@swc/core-linux-x64-musl" "1.10.3"
+ "@swc/core-win32-arm64-msvc" "1.10.3"
+ "@swc/core-win32-ia32-msvc" "1.10.3"
+ "@swc/core-win32-x64-msvc" "1.10.3"
"@swc/counter@^0.1.3":
version "0.1.3"
@@ -4091,10 +4096,10 @@ drizzle-kit@^0.30.1:
esbuild "^0.19.7"
esbuild-register "^3.5.0"
-drizzle-orm@^0.38.2:
- version "0.38.2"
- resolved "https://registry.npmmirror.com/drizzle-orm/-/drizzle-orm-0.38.2.tgz#11cfaa6f17d9d7736306334de17615456b63ae84"
- integrity sha512-eCE3yPRAskLo1WpM9OHpFaM70tBEDsWhwR/0M3CKyztAXKR9Qs3asZlcJOEliIcUSg8GuwrlY0dmYDgmm6y5GQ==
+drizzle-orm@^0.38.3:
+ version "0.38.3"
+ resolved "https://registry.npmmirror.com/drizzle-orm/-/drizzle-orm-0.38.3.tgz#2bdf9a649eda9731cfd3f39b2fdaf6bf844be492"
+ integrity sha512-w41Y+PquMpSff/QDRGdItG0/aWca+/J3Sda9PPGkTxBtjWQvgU1jxlFBXdjog5tYvTu58uvi3PwR1NuCx0KeZg==
dunder-proto@^1.0.0:
version "1.0.0"
@@ -4507,36 +4512,6 @@ esbuild-register@^3.5.0:
dependencies:
debug "^4.3.4"
-esbuild@0.24.0:
- version "0.24.0"
- resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.24.0.tgz#f2d470596885fcb2e91c21eb3da3b3c89c0b55e7"
- integrity sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==
- optionalDependencies:
- "@esbuild/aix-ppc64" "0.24.0"
- "@esbuild/android-arm" "0.24.0"
- "@esbuild/android-arm64" "0.24.0"
- "@esbuild/android-x64" "0.24.0"
- "@esbuild/darwin-arm64" "0.24.0"
- "@esbuild/darwin-x64" "0.24.0"
- "@esbuild/freebsd-arm64" "0.24.0"
- "@esbuild/freebsd-x64" "0.24.0"
- "@esbuild/linux-arm" "0.24.0"
- "@esbuild/linux-arm64" "0.24.0"
- "@esbuild/linux-ia32" "0.24.0"
- "@esbuild/linux-loong64" "0.24.0"
- "@esbuild/linux-mips64el" "0.24.0"
- "@esbuild/linux-ppc64" "0.24.0"
- "@esbuild/linux-riscv64" "0.24.0"
- "@esbuild/linux-s390x" "0.24.0"
- "@esbuild/linux-x64" "0.24.0"
- "@esbuild/netbsd-x64" "0.24.0"
- "@esbuild/openbsd-arm64" "0.24.0"
- "@esbuild/openbsd-x64" "0.24.0"
- "@esbuild/sunos-x64" "0.24.0"
- "@esbuild/win32-arm64" "0.24.0"
- "@esbuild/win32-ia32" "0.24.0"
- "@esbuild/win32-x64" "0.24.0"
-
esbuild@^0.19.7:
version "0.19.12"
resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04"
@@ -4595,6 +4570,37 @@ esbuild@^0.21.5:
"@esbuild/win32-ia32" "0.21.5"
"@esbuild/win32-x64" "0.21.5"
+esbuild@^0.24.2:
+ version "0.24.2"
+ resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d"
+ integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==
+ optionalDependencies:
+ "@esbuild/aix-ppc64" "0.24.2"
+ "@esbuild/android-arm" "0.24.2"
+ "@esbuild/android-arm64" "0.24.2"
+ "@esbuild/android-x64" "0.24.2"
+ "@esbuild/darwin-arm64" "0.24.2"
+ "@esbuild/darwin-x64" "0.24.2"
+ "@esbuild/freebsd-arm64" "0.24.2"
+ "@esbuild/freebsd-x64" "0.24.2"
+ "@esbuild/linux-arm" "0.24.2"
+ "@esbuild/linux-arm64" "0.24.2"
+ "@esbuild/linux-ia32" "0.24.2"
+ "@esbuild/linux-loong64" "0.24.2"
+ "@esbuild/linux-mips64el" "0.24.2"
+ "@esbuild/linux-ppc64" "0.24.2"
+ "@esbuild/linux-riscv64" "0.24.2"
+ "@esbuild/linux-s390x" "0.24.2"
+ "@esbuild/linux-x64" "0.24.2"
+ "@esbuild/netbsd-arm64" "0.24.2"
+ "@esbuild/netbsd-x64" "0.24.2"
+ "@esbuild/openbsd-arm64" "0.24.2"
+ "@esbuild/openbsd-x64" "0.24.2"
+ "@esbuild/sunos-x64" "0.24.2"
+ "@esbuild/win32-arm64" "0.24.2"
+ "@esbuild/win32-ia32" "0.24.2"
+ "@esbuild/win32-x64" "0.24.2"
+
esbuild@~0.18.20:
version "0.18.20"
resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6"
@@ -5901,10 +5907,10 @@ he@^1.2.0:
resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
-highlight.js@^11.11.0:
- version "11.11.0"
- resolved "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.11.0.tgz#91b15082ca8cdbe22424e0a000449d7d8a5c74c6"
- integrity sha512-6ErL7JlGu2CNFHyRQEuDogOyGPNiqcuWdt4iSSFUPyferNTGlNTPFqeV36Y/XwA4V/TJ8l0sxp6FTnxud/mf8g==
+highlight.js@^11.11.1:
+ version "11.11.1"
+ resolved "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.11.1.tgz#fca06fa0e5aeecf6c4d437239135fabc15213585"
+ integrity sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==
highlight.js@^11.9.0:
version "11.10.0"
@@ -7091,6 +7097,11 @@ libnpx@^10.2.4:
y18n "^4.0.0"
yargs "^14.2.3"
+licia@^1.39.2, licia@^1.42.0, licia@^1.43.0, licia@^1.45.0:
+ version "1.46.0"
+ resolved "https://registry.npmmirror.com/licia/-/licia-1.46.0.tgz#fbe1f509ef3b0b32aafa6105e2e518f15a32cde3"
+ integrity sha512-Zms2AjJB+KdqUKFF87J5J/w9DwXnGN/lKlbjpRgvaPf0BIQ0mOZ/2lX4E79zwNafHGMUq5RtN54FN6Af5G92cA==
+
light-my-request@^6.0.0:
version "6.3.0"
resolved "https://registry.npmmirror.com/light-my-request/-/light-my-request-6.3.0.tgz#14f048b395db842c1ebca3b5536d1679d9dafd57"
@@ -7272,6 +7283,34 @@ lru-cache@^7.14.1, lru-cache@^7.7.1:
resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89"
integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==
+luna-console@^1.3.5:
+ version "1.3.5"
+ resolved "https://registry.npmmirror.com/luna-console/-/luna-console-1.3.5.tgz#2e967b3045bdd98622f70a215252a816fc564b71"
+ integrity sha512-Ac4g4y5AwTABPZpw/y5TEVpZxA7yA9w/BRmWKCdO3Qr0M/BTGxbjjH6UTWPcKIUfu3QO+cBsmK6+qL+OBZQb9A==
+ dependencies:
+ licia "^1.43.0"
+
+luna-data-grid@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/luna-data-grid/-/luna-data-grid-1.2.1.tgz#9141215f4120a01fdb011ebd5b5a8376f6f1923d"
+ integrity sha512-fFVRQErglvpv4tfbAj3+SlHshq0LaLbegvIINFevQ3IowhHD8coV1fZDxcwxNu0GkeBiITYaoY1U6aTb9fKrGw==
+ dependencies:
+ licia "^1.45.0"
+
+luna-dom-viewer@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/luna-dom-viewer/-/luna-dom-viewer-1.4.0.tgz#1862ea77e871928df6a145a8226004f8fb0a8744"
+ integrity sha512-T7nbFh0z/NmEMhyffp5BycG79eCAsD/8VGyCSzlMeGMjSMfQocPzeGk8miAedfPzGzmkrMseRfWpq+XEbI5Cng==
+ dependencies:
+ licia "^1.42.0"
+
+luna-object-viewer@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.npmmirror.com/luna-object-viewer/-/luna-object-viewer-0.3.1.tgz#f91c297fb4d50c22cc3f824149751a0860758ae3"
+ integrity sha512-byynxixA8aAzSg9LymFDzPPrhKCPBOiELnOGxuztAXmes7W7OFqGkiLSyV8ECDvRimF1WewVmyOdxyhsLVquFg==
+ dependencies:
+ licia "^1.39.2"
+
magic-string@^0.30.0, magic-string@^0.30.10, magic-string@^0.30.11, magic-string@^0.30.13, magic-string@^0.30.4:
version "0.30.13"
resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.13.tgz#92438e3ff4946cf54f18247c981e5c161c46683c"
@@ -9453,6 +9492,11 @@ resedit@^1.7.0:
dependencies:
pe-library "^0.4.1"
+resize-observer-polyfill@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
+ integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
+
resolve-alpn@^1.0.0:
version "1.2.1"
resolved "https://registry.npmmirror.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9"
@@ -11290,12 +11334,12 @@ vite-svg-loader@^5.1.0:
dependencies:
svgo "^3.0.2"
-vite@^6.0.5:
- version "6.0.5"
- resolved "https://registry.npmmirror.com/vite/-/vite-6.0.5.tgz#1d0fbdb3ffe61e944089abeddb7d2c509420acfd"
- integrity sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==
+vite@^6.0.6:
+ version "6.0.6"
+ resolved "https://registry.npmmirror.com/vite/-/vite-6.0.6.tgz#a851674fcff55b0c1962f72082354b8802e48505"
+ integrity sha512-NSjmUuckPmDU18bHz7QZ+bTYhRR0iA72cs2QAxCqDpafJ0S6qetco0LB3WW2OxlMHS0JmAv+yZ/R3uPmMyGTjQ==
dependencies:
- esbuild "0.24.0"
+ esbuild "^0.24.2"
postcss "^8.4.49"
rollup "^4.23.0"
optionalDependencies:
@@ -11311,13 +11355,13 @@ vue-demi@^0.14.10:
resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz#afc78de3d6f9e11bf78c55e8510ee12814522f04"
integrity sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==
-vue-i18n@^11.0.0:
- version "11.0.0"
- resolved "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-11.0.0.tgz#129c91cea93790cf2a4ed8963e588db5e0d4d9da"
- integrity sha512-U7U0IoyN2z8aaWbnRwtU2MRDxRSYKK3VKwgMGp9a3BETMuFBOIp5VlZLpuIG/A19+c5OaOx+88pjbM5wXelfqA==
+vue-i18n@^11.0.1:
+ version "11.0.1"
+ resolved "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-11.0.1.tgz#aa4c20d6f7c127bc46028ae3325659be47dd338e"
+ integrity sha512-pWAT8CusK8q9/EpN7V3oxwHwxWm6+Kp2PeTZmRGvdZTkUzMQDpbbmHp0TwQ8xw04XKm23cr6B4GL72y3W8Yekg==
dependencies:
- "@intlify/core-base" "11.0.0"
- "@intlify/shared" "11.0.0"
+ "@intlify/core-base" "11.0.1"
+ "@intlify/shared" "11.0.1"
"@vue/devtools-api" "^6.5.0"
vue-router@^4.5.0:
@@ -11410,7 +11454,7 @@ webworkify-webpack@^2.1.5:
resolved "https://registry.npmmirror.com/webworkify-webpack/-/webworkify-webpack-2.1.5.tgz#bf4336624c0626cbe85cf1ffde157f7aa90b1d1c"
integrity sha512-2akF8FIyUvbiBBdD+RoHpoTbHMQF2HwjcxfDvgztAX5YwbZNyrtfUMgvfgFVsgDhDPVTlkbb5vyasqDHfIDPQw==
-"webworkify-webpack@github:xqq/webworkify-webpack":
+webworkify-webpack@xqq/webworkify-webpack:
version "2.1.5"
resolved "https://codeload.github.com/xqq/webworkify-webpack/tar.gz/24d1e719b4a6cac37a518b2bb10fe124527ef4ef"
From 5731edf481ff0bac1b0e14580f60dd0b6d87ad18 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Mon, 30 Dec 2024 00:07:07 +0800
Subject: [PATCH 068/175] [optimize] compatibility
---
src/main/utils/tool/index.ts | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/src/main/utils/tool/index.ts b/src/main/utils/tool/index.ts
index b9da2ab88..0aa440646 100644
--- a/src/main/utils/tool/index.ts
+++ b/src/main/utils/tool/index.ts
@@ -30,16 +30,21 @@ const toggleWindowVisibility = () => {
const parseCustomUrl = (url: string) => {
url = decodeURIComponent(url);
- const [redirectURL, ...headerParts] = url.split('@');
- const headers = headerParts.reduce((acc, part) => {
+ const [redirectURL, ...headersParts] = url.split('@');
+
+ if (!headersParts) return { redirectURL, headers: {} };
+
+ const headers = headersParts.reduce((acc, part) => {
let [key, value] = part.split('=');
- key = key
- .split('-')
- .map(word => word.charAt(0).toUpperCase() + word.slice(1))
- .join('-');
- value = value.replaceAll('$*&', '=');
- acc[key] = value;
+ if (key && value) {
+ key = key
+ .split('-')
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
+ .join('-');
+ value = value.replaceAll('$*&', '=');
+ acc[key] = value;
+ }
return acc;
}, {});
From 423f0a765411dbf147506e0af1f3d9cd820b5c59 Mon Sep 17 00:00:00 2001
From: Hiram <>
Date: Mon, 30 Dec 2024 00:11:26 +0800
Subject: [PATCH 069/175] [reserve] vlc wasm
---
.../src/core/vlc/audio-worklet-processor.js | 69 +
.../player/src/core/vlc/experimental.js | 12358 ++++++++++++++++
.../player/src/core/vlc/experimental.wasm | Bin 0 -> 27051777 bytes
.../src/core/vlc/experimental.worker.js | 1 +
.../components/player/src/core/vlc/libvlc.js | 247 +
.../src/components/player/src/core/vlc/vlc.js | 103 +
src/renderer/src/pages/test/assets/demo.mp4 | Bin 0 -> 5818706 bytes
7 files changed, 12778 insertions(+)
create mode 100644 src/renderer/src/components/player/src/core/vlc/audio-worklet-processor.js
create mode 100644 src/renderer/src/components/player/src/core/vlc/experimental.js
create mode 100644 src/renderer/src/components/player/src/core/vlc/experimental.wasm
create mode 100644 src/renderer/src/components/player/src/core/vlc/experimental.worker.js
create mode 100644 src/renderer/src/components/player/src/core/vlc/libvlc.js
create mode 100644 src/renderer/src/components/player/src/core/vlc/vlc.js
create mode 100755 src/renderer/src/pages/test/assets/demo.mp4
diff --git a/src/renderer/src/components/player/src/core/vlc/audio-worklet-processor.js b/src/renderer/src/components/player/src/core/vlc/audio-worklet-processor.js
new file mode 100644
index 000000000..6f0f29a4f
--- /dev/null
+++ b/src/renderer/src/components/player/src/core/vlc/audio-worklet-processor.js
@@ -0,0 +1,69 @@
+
+/*****************************************************************************
+ * emscripten.c: Emscripten webaudio output
+ *****************************************************************************
+ * Copyright © 2022 VLC authors, VideoLAN and Videolabs
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+ class Processor extends AudioWorkletProcessor {
+ constructor() {
+ super();
+ this.port.onmessage = e => {
+ if (e.data.type === "recv-audio-queue") {
+ this.is_paused = e.data.is_paused;
+ this.head = e.data.head;
+ this.tail = e.data.tail;
+ this.can_write = e.data.can_write;
+ this.storage = e.data.storage;
+ this.port.postMessage( 'ready' );
+ } else {
+ this.port.postMessage( 'error' );
+ throw new Error('unexpected: wrong init from AudioWorkletNode');
+ }
+ };
+ }
+
+ process(inputs, outputs, parameters) {
+ const output = outputs[0];
+ const nbChannels = output.length;
+ const nbSamples = output[0].length;
+ if (this.head.buffer.byteLength === 0) {
+ throw new Error('wasmMemory grew');
+ }
+ var head = Atomics.load(this.head, 0) / 4;
+ var tail = Atomics.load(this.tail, 0) / 4;
+
+ var i = 0;
+
+ while (tail != head && i < nbSamples) {
+ for (let c = 0; c < nbChannels; ++c) {
+ output[c][i] = this.storage[tail];
+ tail++;
+ if (tail === this.storage.length) {
+ tail = 0;
+ }
+ }
+ i++;
+ }
+ Atomics.store(this.tail, 0, tail * 4);
+ Atomics.store(this.can_write, 0, 1);
+ Atomics.notify(this.can_write, 0);
+ return true;
+ }
+}
+
+registerProcessor('worklet-processor', Processor);
diff --git a/src/renderer/src/components/player/src/core/vlc/experimental.js b/src/renderer/src/components/player/src/core/vlc/experimental.js
new file mode 100644
index 000000000..4e3b1888b
--- /dev/null
+++ b/src/renderer/src/components/player/src/core/vlc/experimental.js
@@ -0,0 +1,12358 @@
+var initModule = (() => {
+ var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
+ if (typeof __filename !== 'undefined') _scriptDir ||= __filename;
+ return (
+ function(moduleArg = {}) {
+
+ var Module = moduleArg;
+ var readyPromiseResolve, readyPromiseReject;
+ Module["ready"] = new Promise((resolve, reject) => {
+ readyPromiseResolve = resolve;
+ readyPromiseReject = reject
+ });
+ var functions = ["_malloc", "_free", "_libvlc_errmsg", "_libvlc_clearerr", "_libvlc_add_intf", "_libvlc_audio_equalizer_get_amp_at_index", "_libvlc_audio_equalizer_get_band_count", "_libvlc_audio_equalizer_get_band_frequency", "_libvlc_audio_equalizer_get_preamp", "_libvlc_audio_equalizer_get_preset_count", "_libvlc_audio_equalizer_get_preset_name", "_libvlc_audio_equalizer_new", "_libvlc_audio_equalizer_new_from_preset", "_libvlc_audio_equalizer_release", "_libvlc_audio_equalizer_set_amp_at_index", "_libvlc_audio_equalizer_set_preamp", "_libvlc_audio_output_device_get", "_libvlc_audio_output_device_enum", "_libvlc_audio_output_device_list_release", "_libvlc_audio_output_device_set", "_libvlc_audio_output_list_get", "_libvlc_audio_output_list_release", "_libvlc_audio_output_set", "_libvlc_audio_get_channel", "_libvlc_audio_get_delay", "_libvlc_audio_get_mute", "_libvlc_audio_get_track", "_libvlc_audio_get_track_count", "_libvlc_audio_get_track_description", "_libvlc_audio_get_volume", "_libvlc_audio_set_channel", "_libvlc_audio_set_delay", "_libvlc_audio_set_mute", "_libvlc_audio_set_track", "_libvlc_audio_set_volume", "_libvlc_audio_toggle_mute", "_libvlc_audio_set_format", "_libvlc_audio_set_format_callbacks", "_libvlc_audio_set_callbacks", "_libvlc_audio_set_volume_callback", "_libvlc_chapter_descriptions_release", "_libvlc_clock", "_libvlc_dialog_dismiss", "_libvlc_dialog_get_context", "_libvlc_dialog_post_action", "_libvlc_dialog_post_login", "_libvlc_dialog_set_callbacks", "_libvlc_dialog_set_context", "_libvlc_event_attach", "_libvlc_event_detach", "_libvlc_free", "_libvlc_get_changeset", "_libvlc_get_compiler", "_libvlc_get_fullscreen", "_libvlc_get_version", "_libvlc_log_get_context", "_libvlc_log_get_object", "_libvlc_log_set", "_libvlc_log_set_file", "_libvlc_log_unset", "_libvlc_media_add_option", "_libvlc_media_add_option_flag", "_libvlc_media_discoverer_is_running", "_libvlc_media_discoverer_media_list", "_libvlc_media_discoverer_new", "_libvlc_media_discoverer_release", "_libvlc_media_discoverer_list_get", "_libvlc_media_discoverer_list_release", "_libvlc_media_discoverer_start", "_libvlc_media_discoverer_stop", "_libvlc_media_duplicate", "_libvlc_media_event_manager", "_libvlc_media_get_codec_description", "_libvlc_media_get_duration", "_libvlc_media_get_filestat", "_libvlc_media_get_meta", "_libvlc_media_get_mrl", "_libvlc_media_get_stats", "_libvlc_media_get_tracklist", "_libvlc_media_get_type", "_libvlc_media_get_user_data", "_libvlc_media_is_parsed", "_libvlc_media_get_parsed_status", "_libvlc_media_thumbnail_request_by_time", "_libvlc_media_thumbnail_request_by_pos", "_libvlc_media_thumbnail_request_cancel", "_libvlc_media_thumbnail_request_destroy", "_libvlc_media_track_hold", "_libvlc_media_track_release", "_libvlc_media_tracklist_at", "_libvlc_media_tracklist_count", "_libvlc_media_tracklist_delete", "_libvlc_media_list_add_media", "_libvlc_media_list_count", "_libvlc_media_list_event_manager", "_libvlc_media_list_index_of_item", "_libvlc_media_list_insert_media", "_libvlc_media_list_is_readonly", "_libvlc_media_list_item_at_index", "_libvlc_media_list_lock", "_libvlc_media_list_media", "_libvlc_media_list_new", "_libvlc_media_list_player_event_manager", "_libvlc_media_list_player_get_media_player", "_libvlc_media_list_player_get_state", "_libvlc_media_list_player_is_playing", "_libvlc_media_list_player_new", "_libvlc_media_list_player_next", "_libvlc_media_list_player_pause", "_libvlc_media_list_player_play", "_libvlc_media_list_player_play_item", "_libvlc_media_list_player_play_item_at_index", "_libvlc_media_list_player_previous", "_libvlc_media_list_player_release", "_libvlc_media_list_player_retain", "_libvlc_media_list_player_set_media_list", "_libvlc_media_list_player_set_media_player", "_libvlc_media_list_player_set_pause", "_libvlc_media_list_player_set_playback_mode", "_libvlc_media_list_player_stop_async", "_libvlc_media_list_release", "_libvlc_media_list_remove_index", "_libvlc_media_list_retain", "_libvlc_media_list_set_media", "_libvlc_media_list_unlock", "_libvlc_media_new_callbacks", "_libvlc_media_new_fd", "_libvlc_media_new_location", "_libvlc_media_new_path", "_libvlc_media_new_as_node", "_libvlc_media_parse", "_libvlc_media_parse_async", "_libvlc_media_parse_with_options", "_libvlc_media_parse_stop", "_libvlc_media_player_add_slave", "_libvlc_media_player_can_pause", "_libvlc_media_player_program_scrambled", "_libvlc_media_player_next_frame", "_libvlc_media_player_event_manager", "_libvlc_media_player_get_chapter", "_libvlc_media_player_get_chapter_count", "_libvlc_media_player_get_chapter_count_for_title", "_libvlc_media_player_get_full_chapter_descriptions", "_libvlc_media_player_get_full_title_descriptions", "_libvlc_media_player_get_hwnd", "_libvlc_media_player_get_length", "_libvlc_media_player_get_media", "_libvlc_media_player_get_nsobject", "_libvlc_media_player_get_position", "_libvlc_media_player_get_rate", "_libvlc_media_player_get_role", "_libvlc_media_player_get_state", "_libvlc_media_player_get_time", "_libvlc_media_player_get_title", "_libvlc_media_player_get_title_count", "_libvlc_media_player_get_xwindow", "_libvlc_media_player_has_vout", "_libvlc_media_player_is_seekable", "_libvlc_media_player_is_playing", "_libvlc_media_player_new", "_libvlc_media_player_new_from_media", "_libvlc_media_player_next_chapter", "_libvlc_media_player_set_pause", "_libvlc_media_player_pause", "_libvlc_media_player_play", "_libvlc_media_player_previous_chapter", "_libvlc_media_player_release", "_libvlc_media_player_retain", "_libvlc_media_player_set_android_context", "_libvlc_media_player_set_chapter", "_libvlc_media_player_set_equalizer", "_libvlc_media_player_set_hwnd", "_libvlc_media_player_set_media", "_libvlc_media_player_set_nsobject", "_libvlc_media_player_set_position", "_libvlc_media_player_set_rate", "_libvlc_media_player_set_renderer", "_libvlc_media_player_set_role", "_libvlc_media_player_set_time", "_libvlc_media_player_set_title", "_libvlc_media_player_set_xwindow", "_libvlc_media_player_stop_async", "_libvlc_media_player_navigate", "_libvlc_media_player_set_video_title_display", "_libvlc_media_player_get_tracklist", "_libvlc_media_player_get_track_from_id", "_libvlc_media_player_get_selected_track", "_libvlc_media_player_select_track", "_libvlc_media_player_unselect_track_type", "_libvlc_media_player_select_tracks", "_libvlc_media_player_select_tracks_by_ids", "_libvlc_player_program_delete", "_libvlc_player_programlist_count", "_libvlc_player_programlist_at", "_libvlc_player_programlist_delete", "_libvlc_media_player_select_program_id", "_libvlc_media_player_get_selected_program", "_libvlc_media_player_get_program_from_id", "_libvlc_media_player_get_programlist", "_libvlc_media_release", "_libvlc_media_retain", "_libvlc_media_save_meta", "_libvlc_media_slaves_add", "_libvlc_media_slaves_clear", "_libvlc_media_slaves_get", "_libvlc_media_slaves_release", "_libvlc_media_set_meta", "_libvlc_media_set_user_data", "_libvlc_media_subitems", "_libvlc_media_tracks_get", "_libvlc_media_tracks_release", "_libvlc_new", "_libvlc_playlist_play", "_libvlc_release", "_libvlc_renderer_item_name", "_libvlc_renderer_item_type", "_libvlc_renderer_item_icon_uri", "_libvlc_renderer_item_flags", "_libvlc_renderer_item_hold", "_libvlc_renderer_item_release", "_libvlc_renderer_discoverer_event_manager", "_libvlc_renderer_discoverer_list_get", "_libvlc_renderer_discoverer_list_release", "_libvlc_renderer_discoverer_new", "_libvlc_renderer_discoverer_release", "_libvlc_renderer_discoverer_start", "_libvlc_renderer_discoverer_stop", "_libvlc_retain", "_libvlc_set_fullscreen", "_libvlc_set_user_agent", "_libvlc_set_app_id", "_libvlc_title_descriptions_release", "_libvlc_toggle_fullscreen", "_libvlc_track_description_list_release", "_libvlc_video_get_adjust_float", "_libvlc_video_get_adjust_int", "_libvlc_video_get_aspect_ratio", "_libvlc_video_get_size", "_libvlc_video_get_cursor", "_libvlc_video_get_logo_int", "_libvlc_video_get_marquee_int", "_libvlc_video_get_scale", "_libvlc_video_get_spu", "_libvlc_video_get_spu_count", "_libvlc_video_get_spu_delay", "_libvlc_video_get_spu_description", "_libvlc_video_get_spu_text_scale", "_libvlc_video_get_teletext", "_libvlc_video_get_track", "_libvlc_video_get_track_count", "_libvlc_video_get_track_description", "_libvlc_video_set_adjust_float", "_libvlc_video_set_adjust_int", "_libvlc_video_set_aspect_ratio", "_libvlc_video_set_callbacks", "_libvlc_video_set_crop_ratio", "_libvlc_video_set_crop_window", "_libvlc_video_set_crop_border", "_libvlc_video_set_deinterlace", "_libvlc_video_set_format", "_libvlc_video_set_format_callbacks", "_libvlc_video_set_output_callbacks", "_libvlc_video_set_key_input", "_libvlc_video_set_logo_int", "_libvlc_video_set_logo_string", "_libvlc_video_set_marquee_int", "_libvlc_video_set_marquee_string", "_libvlc_video_set_mouse_input", "_libvlc_video_set_scale", "_libvlc_video_set_spu", "_libvlc_video_set_spu_delay", "_libvlc_video_set_spu_text_scale", "_libvlc_video_set_teletext", "_libvlc_video_set_track", "_libvlc_video_take_snapshot", "_libvlc_video_new_viewpoint", "_libvlc_video_update_viewpoint", "_libvlc_set_exit_handler", "_libvlc_audio_filter_list_get", "_libvlc_video_filter_list_get", "_libvlc_module_description_list_release", "_libvlc_picture_retain", "_libvlc_picture_release", "_libvlc_picture_save", "_libvlc_picture_get_buffer", "_libvlc_picture_type", "_libvlc_picture_get_stride", "_libvlc_picture_get_width", "_libvlc_picture_get_height", "_libvlc_picture_get_time", "_libvlc_picture_list_at", "_libvlc_picture_list_count", "_libvlc_picture_list_destroy", "__emscripten_thread_init", "__emscripten_thread_exit", "__emscripten_thread_crashed", "__emscripten_thread_mailbox_await", "__emscripten_tls_init", "_pthread_self", "checkMailbox", "__embind_initialize_bindings", "establishStackSpace", "invokeEntryPoint", "PThread", "_set_global_media_player", "_attach_update_events", "___indirect_function_table", "_wasm_media_player_new", "_wasm_media_list_player_new", "_wasm_media_player_new_from_media", "_wasm_media_player_release", "_wasmc_media_player_retain", "_wasm_media_player_set_media", "_wasm_media_player_get_media", "_wasm_media_player_is_playing", "_wasm_media_player_play", "_wasm_media_player_set_pause", "_wasm_media_player_pause", "_wasm_media_player_stop", "_wasm_media_player_get_length", "_wasm_media_player_get_time", "_wasm_media_player_set_time", "_wasm_media_player_get_position", "_wasm_media_player_set_position", "_wasm_media_player_set_chapter", "_wasm_media_player_get_chapter", "_wasm_media_player_get_chapter_count", "_wasm_media_player_get_chapter_count_for_title", "_wasm_media_player_set_title", "_wasm_media_player_get_title", "_wasm_media_player_get_title_count", "_wasm_media_player_previous_chapter", "_wasm_media_player_next_chapter", "_wasm_media_player_get_rate", "_wasm_media_player_set_rate", "_wasm_media_player_has_vout", "_wasm_media_player_is_seekable", "_wasm_media_player_can_pause", "_wasm_media_player_program_scrambled", "_wasm_media_player_next_frame", "_wasm_video_get_size_x", "_wasm_video_get_size_y", "_wasm_video_get_cursor_x", "_wasm_video_get_cursor_y", "_wasm_audio_toggle_mute", "_wasm_audio_get_mute", "_wasm_audio_set_mute", "_wasm_audio_get_volume", "_wasm_audio_set_volume", "_wasm_audio_get_channel", "_wasm_audio_set_channel", "_wasm_audio_get_delay", "_wasm_audio_set_delay", "_wasm_media_player_get_role", "_wasm_media_player_set_role", "_wasm_libvlc_init", "_wasm_media_new_path", "_wasm_media_new_location", "_wasm_media_retain", "_wasm_media_release", "___asyncjs__init_js_file", "___asyncjs__Swap", "___asyncjs__getVoutMessagePort", "_createGlContext", "___asyncjs__bindVideoFrame", "_setupMessagePort", "_initGlConvWorker", "_closeMessagePort", "___asyncjs__CopyFrameToBuffer", "_flushMainThread", "_waitPictureFromPool", "_getPictureFromPool", "_updateVideoOutput", "_queuePicture", "_getPictureIdx", "_getVlcDecoderWorkerThread", "_releaseBlock", "_decodeBlock", "___asyncjs__probeConfig", "_initDecoderJS", "___asyncjs__initDecoderWorkerMessagePort", "___asyncjs__flushAsync", "_ff_h264_cabac_tables", "_main", "onRuntimeInitialized"];
+ functions.forEach(prop => {
+ if (!Object.getOwnPropertyDescriptor(Module["ready"], prop)) {
+ Object.defineProperty(Module["ready"], prop, {
+ get: () => abort("You are getting " + prop + " on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"),
+ set: () => abort("You are setting " + prop + " on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")
+ })
+ }
+ });
+ var moduleOverrides = Object.assign({}, Module);
+ var arguments_ = [];
+ var thisProgram = "./this.program";
+ var quit_ = (status, toThrow) => {
+ throw toThrow
+ };
+ var ENVIRONMENT_IS_WEB = typeof window == "object";
+ var ENVIRONMENT_IS_WORKER = typeof importScripts == "function";
+ var ENVIRONMENT_IS_NODE = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string";
+ var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
+ if (Module["ENVIRONMENT"]) {
+ throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)")
+ }
+ var ENVIRONMENT_IS_PTHREAD = Module["ENVIRONMENT_IS_PTHREAD"] || false;
+ var scriptDirectory = "";
+
+ function locateFile(path) {
+ if (Module["locateFile"]) {
+ return Module["locateFile"](path, scriptDirectory)
+ }
+ return scriptDirectory + path
+ }
+ var read_, readAsync, readBinary;
+ if (ENVIRONMENT_IS_NODE) {
+ if (typeof process == "undefined" || !process.release || process.release.name !== "node") throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");
+ var nodeVersion = process.versions.node;
+ var numericVersion = nodeVersion.split(".").slice(0, 3);
+ numericVersion = numericVersion[0] * 1e4 + numericVersion[1] * 100 + numericVersion[2].split("-")[0] * 1;
+ if (numericVersion < 16e4) {
+ throw new Error("This emscripten-generated code requires node v16.0.0 (detected v" + nodeVersion + ")")
+ }
+ var fs = require("fs");
+ var nodePath = require("path");
+ if (ENVIRONMENT_IS_WORKER) {
+ scriptDirectory = nodePath.dirname(scriptDirectory) + "/"
+ } else {
+ scriptDirectory = __dirname + "/"
+ }
+ read_ = (filename, binary) => {
+ filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename);
+ return fs.readFileSync(filename, binary ? undefined : "utf8")
+ };
+ readBinary = filename => {
+ var ret = read_(filename, true);
+ if (!ret.buffer) {
+ ret = new Uint8Array(ret)
+ }
+ assert(ret.buffer);
+ return ret
+ };
+ readAsync = (filename, onload, onerror, binary = true) => {
+ filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename);
+ fs.readFile(filename, binary ? undefined : "utf8", (err, data) => {
+ if (err) onerror(err);
+ else onload(binary ? data.buffer : data)
+ })
+ };
+ if (!Module["thisProgram"] && process.argv.length > 1) {
+ thisProgram = process.argv[1].replace(/\\/g, "/")
+ }
+ arguments_ = process.argv.slice(2);
+ quit_ = (status, toThrow) => {
+ process.exitCode = status;
+ throw toThrow
+ };
+ global.Worker = require("worker_threads").Worker
+ } else if (ENVIRONMENT_IS_SHELL) {
+ if (typeof process == "object" && typeof require === "function" || typeof window == "object" || typeof importScripts == "function") throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");
+ if (typeof read != "undefined") {
+ read_ = read
+ }
+ readBinary = f => {
+ if (typeof readbuffer == "function") {
+ return new Uint8Array(readbuffer(f))
+ }
+ let data = read(f, "binary");
+ assert(typeof data == "object");
+ return data
+ };
+ readAsync = (f, onload, onerror) => {
+ setTimeout(() => onload(readBinary(f)))
+ };
+ if (typeof clearTimeout == "undefined") {
+ globalThis.clearTimeout = id => {}
+ }
+ if (typeof setTimeout == "undefined") {
+ globalThis.setTimeout = f => typeof f == "function" ? f() : abort()
+ }
+ if (typeof scriptArgs != "undefined") {
+ arguments_ = scriptArgs
+ } else if (typeof arguments != "undefined") {
+ arguments_ = arguments
+ }
+ if (typeof quit == "function") {
+ quit_ = (status, toThrow) => {
+ setTimeout(() => {
+ if (!(toThrow instanceof ExitStatus)) {
+ let toLog = toThrow;
+ if (toThrow && typeof toThrow == "object" && toThrow.stack) {
+ toLog = [toThrow, toThrow.stack]
+ }
+ err(`exiting due to exception: ${toLog}`)
+ }
+ quit(status)
+ });
+ throw toThrow
+ }
+ }
+ if (typeof print != "undefined") {
+ if (typeof console == "undefined") console = {};
+ console.log = print;
+ console.warn = console.error = typeof printErr != "undefined" ? printErr : print
+ }
+ } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
+ if (ENVIRONMENT_IS_WORKER) {
+ scriptDirectory = self.location.href
+ } else if (typeof document != "undefined" && document.currentScript) {
+ scriptDirectory = document.currentScript.src
+ }
+ if (_scriptDir) {
+ scriptDirectory = _scriptDir
+ }
+ if (scriptDirectory.startsWith("blob:")) {
+ scriptDirectory = ""
+ } else {
+ scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1)
+ }
+ if (!(typeof window == "object" || typeof importScripts == "function")) throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");
+ if (!ENVIRONMENT_IS_NODE) {
+ read_ = url => {
+ var xhr = new XMLHttpRequest;
+ xhr.open("GET", url, false);
+ xhr.send(null);
+ return xhr.responseText
+ };
+ if (ENVIRONMENT_IS_WORKER) {
+ readBinary = url => {
+ var xhr = new XMLHttpRequest;
+ xhr.open("GET", url, false);
+ xhr.responseType = "arraybuffer";
+ xhr.send(null);
+ return new Uint8Array(xhr.response)
+ }
+ }
+ readAsync = (url, onload, onerror) => {
+ var xhr = new XMLHttpRequest;
+ xhr.open("GET", url, true);
+ xhr.responseType = "arraybuffer";
+ xhr.onload = () => {
+ if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
+ onload(xhr.response);
+ return
+ }
+ onerror()
+ };
+ xhr.onerror = onerror;
+ xhr.send(null)
+ }
+ }
+ } else {
+ throw new Error("environment detection error")
+ }
+ if (ENVIRONMENT_IS_NODE) {
+ if (typeof performance == "undefined") {
+ global.performance = require("perf_hooks").performance
+ }
+ }
+ var defaultPrint = console.log.bind(console);
+ var defaultPrintErr = console.error.bind(console);
+ if (ENVIRONMENT_IS_NODE) {
+ defaultPrint = (...args) => fs.writeSync(1, args.join(" ") + "\n");
+ defaultPrintErr = (...args) => fs.writeSync(2, args.join(" ") + "\n")
+ }
+ var out = Module["print"] || defaultPrint;
+ var err = Module["printErr"] || defaultPrintErr;
+ Object.assign(Module, moduleOverrides);
+ moduleOverrides = null;
+ checkIncomingModuleAPI();
+ if (Module["arguments"]) arguments_ = Module["arguments"];
+ legacyModuleProp("arguments", "arguments_");
+ if (Module["thisProgram"]) thisProgram = Module["thisProgram"];
+ legacyModuleProp("thisProgram", "thisProgram");
+ if (Module["quit"]) quit_ = Module["quit"];
+ legacyModuleProp("quit", "quit_");
+ assert(typeof Module["memoryInitializerPrefixURL"] == "undefined", "Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead");
+ assert(typeof Module["pthreadMainPrefixURL"] == "undefined", "Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead");
+ assert(typeof Module["cdInitializerPrefixURL"] == "undefined", "Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead");
+ assert(typeof Module["filePackagePrefixURL"] == "undefined", "Module.filePackagePrefixURL option was removed, use Module.locateFile instead");
+ assert(typeof Module["read"] == "undefined", "Module.read option was removed (modify read_ in JS)");
+ assert(typeof Module["readAsync"] == "undefined", "Module.readAsync option was removed (modify readAsync in JS)");
+ assert(typeof Module["readBinary"] == "undefined", "Module.readBinary option was removed (modify readBinary in JS)");
+ assert(typeof Module["setWindowTitle"] == "undefined", "Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)");
+ assert(typeof Module["TOTAL_MEMORY"] == "undefined", "Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY");
+ legacyModuleProp("asm", "wasmExports");
+ legacyModuleProp("read", "read_");
+ legacyModuleProp("readAsync", "readAsync");
+ legacyModuleProp("readBinary", "readBinary");
+ legacyModuleProp("setWindowTitle", "setWindowTitle");
+ assert(ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER || ENVIRONMENT_IS_NODE, "Pthreads do not work in this environment yet (need Web Workers, or an alternative to them)");
+ assert(!ENVIRONMENT_IS_SHELL, "shell environment detected but not enabled at build time. Add `shell` to `-sENVIRONMENT` to enable.");
+ var wasmBinary;
+ if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"];
+ legacyModuleProp("wasmBinary", "wasmBinary");
+ if (typeof WebAssembly != "object") {
+ abort("no native wasm support detected")
+ }
+ var wasmMemory;
+ var wasmModule;
+ var ABORT = false;
+ var EXITSTATUS;
+
+ function assert(condition, text) {
+ if (!condition) {
+ abort("Assertion failed" + (text ? ": " + text : ""))
+ }
+ }
+ var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
+
+ function updateMemoryViews() {
+ var b = wasmMemory.buffer;
+ Module["HEAP8"] = HEAP8 = new Int8Array(b);
+ Module["HEAP16"] = HEAP16 = new Int16Array(b);
+ Module["HEAPU8"] = HEAPU8 = new Uint8Array(b);
+ Module["HEAPU16"] = HEAPU16 = new Uint16Array(b);
+ Module["HEAP32"] = HEAP32 = new Int32Array(b);
+ Module["HEAPU32"] = HEAPU32 = new Uint32Array(b);
+ Module["HEAPF32"] = HEAPF32 = new Float32Array(b);
+ Module["HEAPF64"] = HEAPF64 = new Float64Array(b)
+ }
+ assert(!Module["STACK_SIZE"], "STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time");
+ assert(typeof Int32Array != "undefined" && typeof Float64Array !== "undefined" && Int32Array.prototype.subarray != undefined && Int32Array.prototype.set != undefined, "JS engine does not provide full typed array support");
+ var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 2147483648;
+ legacyModuleProp("INITIAL_MEMORY", "INITIAL_MEMORY");
+ assert(INITIAL_MEMORY >= 65536, "INITIAL_MEMORY should be larger than STACK_SIZE, was " + INITIAL_MEMORY + "! (STACK_SIZE=" + 65536 + ")");
+ if (ENVIRONMENT_IS_PTHREAD) {
+ wasmMemory = Module["wasmMemory"]
+ } else {
+ if (Module["wasmMemory"]) {
+ wasmMemory = Module["wasmMemory"]
+ } else {
+ wasmMemory = new WebAssembly.Memory({
+ "initial": INITIAL_MEMORY / 65536,
+ "maximum": INITIAL_MEMORY / 65536,
+ "shared": true
+ });
+ if (!(wasmMemory.buffer instanceof SharedArrayBuffer)) {
+ err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");
+ if (ENVIRONMENT_IS_NODE) {
+ err("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)")
+ }
+ throw Error("bad memory")
+ }
+ }
+ }
+ updateMemoryViews();
+ INITIAL_MEMORY = wasmMemory.buffer.byteLength;
+ assert(INITIAL_MEMORY % 65536 === 0);
+
+ function writeStackCookie() {
+ var max = _emscripten_stack_get_end();
+ assert((max & 3) == 0);
+ if (max == 0) {
+ max += 4
+ }
+ HEAPU32[max >> 2] = 34821223;
+ HEAPU32[max + 4 >> 2] = 2310721022;
+ HEAPU32[0 >> 2] = 1668509029
+ }
+
+ function checkStackCookie() {
+ if (ABORT) return;
+ var max = _emscripten_stack_get_end();
+ if (max == 0) {
+ max += 4
+ }
+ var cookie1 = HEAPU32[max >> 2];
+ var cookie2 = HEAPU32[max + 4 >> 2];
+ if (cookie1 != 34821223 || cookie2 != 2310721022) {
+ abort(`Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`)
+ }
+ if (HEAPU32[0 >> 2] != 1668509029) {
+ abort("Runtime error: The application has corrupted its heap memory area (address zero)!")
+ }
+ }(function() {
+ var h16 = new Int16Array(1);
+ var h8 = new Int8Array(h16.buffer);
+ h16[0] = 25459;
+ if (h8[0] !== 115 || h8[1] !== 99) throw "Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"
+ })();
+ var __ATPRERUN__ = [];
+ var __ATINIT__ = [];
+ var __ATMAIN__ = [];
+ var __ATEXIT__ = [];
+ var __ATPOSTRUN__ = [];
+ var runtimeInitialized = false;
+ var runtimeExited = false;
+
+ function preRun() {
+ assert(!ENVIRONMENT_IS_PTHREAD);
+ if (Module["preRun"]) {
+ if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]];
+ while (Module["preRun"].length) {
+ addOnPreRun(Module["preRun"].shift())
+ }
+ }
+ callRuntimeCallbacks(__ATPRERUN__)
+ }
+
+ function initRuntime() {
+ assert(!runtimeInitialized);
+ runtimeInitialized = true;
+ if (ENVIRONMENT_IS_PTHREAD) return;
+ checkStackCookie();
+ SOCKFS.root = FS.mount(SOCKFS, {}, null);
+ if (!Module["noFSInit"] && !FS.init.initialized) FS.init();
+ FS.ignorePermissions = false;
+ TTY.init();
+ PIPEFS.root = FS.mount(PIPEFS, {}, null);
+ callRuntimeCallbacks(__ATINIT__)
+ }
+
+ function preMain() {
+ checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return;
+ callRuntimeCallbacks(__ATMAIN__)
+ }
+
+ function exitRuntime() {
+ assert(!runtimeExited);
+ Asyncify.state = Asyncify.State.Disabled;
+ checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return;
+ ___funcs_on_exit();
+ callRuntimeCallbacks(__ATEXIT__);
+ FS.quit();
+ TTY.shutdown();
+ PThread.terminateAllThreads();
+ runtimeExited = true
+ }
+
+ function postRun() {
+ checkStackCookie();
+ if (ENVIRONMENT_IS_PTHREAD) return;
+ if (Module["postRun"]) {
+ if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]];
+ while (Module["postRun"].length) {
+ addOnPostRun(Module["postRun"].shift())
+ }
+ }
+ callRuntimeCallbacks(__ATPOSTRUN__)
+ }
+
+ function addOnPreRun(cb) {
+ __ATPRERUN__.unshift(cb)
+ }
+
+ function addOnInit(cb) {
+ __ATINIT__.unshift(cb)
+ }
+
+ function addOnPostRun(cb) {
+ __ATPOSTRUN__.unshift(cb)
+ }
+ assert(Math.imul, "This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
+ assert(Math.fround, "This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
+ assert(Math.clz32, "This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
+ assert(Math.trunc, "This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");
+ var runDependencies = 0;
+ var runDependencyWatcher = null;
+ var dependenciesFulfilled = null;
+ var runDependencyTracking = {};
+
+ function getUniqueRunDependency(id) {
+ var orig = id;
+ while (1) {
+ if (!runDependencyTracking[id]) return id;
+ id = orig + Math.random()
+ }
+ }
+
+ function addRunDependency(id) {
+ runDependencies++;
+ Module["monitorRunDependencies"]?.(runDependencies);
+ if (id) {
+ assert(!runDependencyTracking[id]);
+ runDependencyTracking[id] = 1;
+ if (runDependencyWatcher === null && typeof setInterval != "undefined") {
+ runDependencyWatcher = setInterval(() => {
+ if (ABORT) {
+ clearInterval(runDependencyWatcher);
+ runDependencyWatcher = null;
+ return
+ }
+ var shown = false;
+ for (var dep in runDependencyTracking) {
+ if (!shown) {
+ shown = true;
+ err("still waiting on run dependencies:")
+ }
+ err(`dependency: ${dep}`)
+ }
+ if (shown) {
+ err("(end of list)")
+ }
+ }, 1e4)
+ }
+ } else {
+ err("warning: run dependency added without ID")
+ }
+ }
+
+ function removeRunDependency(id) {
+ runDependencies--;
+ Module["monitorRunDependencies"]?.(runDependencies);
+ if (id) {
+ assert(runDependencyTracking[id]);
+ delete runDependencyTracking[id]
+ } else {
+ err("warning: run dependency removed without ID")
+ }
+ if (runDependencies == 0) {
+ if (runDependencyWatcher !== null) {
+ clearInterval(runDependencyWatcher);
+ runDependencyWatcher = null
+ }
+ if (dependenciesFulfilled) {
+ var callback = dependenciesFulfilled;
+ dependenciesFulfilled = null;
+ callback()
+ }
+ }
+ }
+
+ function abort(what) {
+ Module["onAbort"]?.(what);
+ what = "Aborted(" + what + ")";
+ err(what);
+ ABORT = true;
+ EXITSTATUS = 1;
+ if (what.indexOf("RuntimeError: unreachable") >= 0) {
+ what += '. "unreachable" may be due to ASYNCIFY_STACK_SIZE not being large enough (try increasing it)'
+ }
+ var e = new WebAssembly.RuntimeError(what);
+ readyPromiseReject(e);
+ throw e
+ }
+ var dataURIPrefix = "data:application/octet-stream;base64,";
+ var isDataURI = filename => filename.startsWith(dataURIPrefix);
+ var isFileURI = filename => filename.startsWith("file://");
+
+ function createExportWrapper(name) {
+ return (...args) => {
+ assert(runtimeInitialized, `native function \`${name}\` called before runtime initialization`);
+ assert(!runtimeExited, `native function \`${name}\` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)`);
+ var f = wasmExports[name];
+ assert(f, `exported native function \`${name}\` not found`);
+ return f(...args)
+ }
+ }
+ var wasmBinaryFile;
+ wasmBinaryFile = "experimental.wasm";
+ if (!isDataURI(wasmBinaryFile)) {
+ wasmBinaryFile = locateFile(wasmBinaryFile)
+ }
+
+ function getBinarySync(file) {
+ if (file == wasmBinaryFile && wasmBinary) {
+ return new Uint8Array(wasmBinary)
+ }
+ if (readBinary) {
+ return readBinary(file)
+ }
+ throw "both async and sync fetching of the wasm failed"
+ }
+
+ function getBinaryPromise(binaryFile) {
+ if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {
+ if (typeof fetch == "function" && !isFileURI(binaryFile)) {
+ return fetch(binaryFile, {
+ credentials: "same-origin"
+ }).then(response => {
+ if (!response["ok"]) {
+ throw `failed to load wasm binary file at '${binaryFile}'`
+ }
+ return response["arrayBuffer"]()
+ }).catch(() => getBinarySync(binaryFile))
+ } else if (readAsync) {
+ return new Promise((resolve, reject) => {
+ readAsync(binaryFile, response => resolve(new Uint8Array(response)), reject)
+ })
+ }
+ }
+ return Promise.resolve().then(() => getBinarySync(binaryFile))
+ }
+
+ function instantiateArrayBuffer(binaryFile, imports, receiver) {
+ return getBinaryPromise(binaryFile).then(binary => WebAssembly.instantiate(binary, imports)).then(receiver, reason => {
+ err(`failed to asynchronously prepare wasm: ${reason}`);
+ if (isFileURI(wasmBinaryFile)) {
+ err(`warning: Loading from a file URI (${wasmBinaryFile}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`)
+ }
+ abort(reason)
+ })
+ }
+
+ function instantiateAsync(binary, binaryFile, imports, callback) {
+ if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && !isFileURI(binaryFile) && !ENVIRONMENT_IS_NODE && typeof fetch == "function") {
+ return fetch(binaryFile, {
+ credentials: "same-origin"
+ }).then(response => {
+ var result = WebAssembly.instantiateStreaming(response, imports);
+ return result.then(callback, function(reason) {
+ err(`wasm streaming compile failed: ${reason}`);
+ err("falling back to ArrayBuffer instantiation");
+ return instantiateArrayBuffer(binaryFile, imports, callback)
+ })
+ })
+ }
+ return instantiateArrayBuffer(binaryFile, imports, callback)
+ }
+
+ function createWasm() {
+ var info = {
+ "env": wasmImports,
+ "wasi_snapshot_preview1": wasmImports
+ };
+
+ function receiveInstance(instance, module) {
+ wasmExports = instance.exports;
+ wasmExports = Asyncify.instrumentWasmExports(wasmExports);
+ registerTLSInit(wasmExports["_emscripten_tls_init"]);
+ wasmTable = wasmExports["__indirect_function_table"];
+ assert(wasmTable, "table not found in wasm exports");
+ addOnInit(wasmExports["__wasm_call_ctors"]);
+ wasmModule = module;
+ removeRunDependency("wasm-instantiate");
+ return wasmExports
+ }
+ addRunDependency("wasm-instantiate");
+ var trueModule = Module;
+
+ function receiveInstantiationResult(result) {
+ assert(Module === trueModule, "the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?");
+ trueModule = null;
+ receiveInstance(result["instance"], result["module"])
+ }
+ if (Module["instantiateWasm"]) {
+ try {
+ return Module["instantiateWasm"](info, receiveInstance)
+ } catch (e) {
+ err(`Module.instantiateWasm callback failed with error: ${e}`);
+ readyPromiseReject(e)
+ }
+ }
+ instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject);
+ return {}
+ }
+ var tempDouble;
+ var tempI64;
+
+ function legacyModuleProp(prop, newName, incoming = true) {
+ if (!Object.getOwnPropertyDescriptor(Module, prop)) {
+ Object.defineProperty(Module, prop, {
+ configurable: true,
+ get() {
+ let extra = incoming ? " (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)" : "";
+ abort(`\`Module.${prop}\` has been replaced by \`${newName}\`` + extra)
+ }
+ })
+ }
+ }
+
+ function ignoredModuleProp(prop) {
+ if (Object.getOwnPropertyDescriptor(Module, prop)) {
+ abort(`\`Module.${prop}\` was supplied but \`${prop}\` not included in INCOMING_MODULE_JS_API`)
+ }
+ }
+
+ function isExportedByForceFilesystem(name) {
+ return name === "FS_createPath" || name === "FS_createDataFile" || name === "FS_createPreloadedFile" || name === "FS_unlink" || name === "addRunDependency" || name === "FS_createLazyFile" || name === "FS_createDevice" || name === "removeRunDependency"
+ }
+
+ function missingGlobal(sym, msg) {
+ if (typeof globalThis !== "undefined") {
+ Object.defineProperty(globalThis, sym, {
+ configurable: true,
+ get() {
+ warnOnce(`\`${sym}\` is not longer defined by emscripten. ${msg}`);
+ return undefined
+ }
+ })
+ }
+ }
+ missingGlobal("buffer", "Please use HEAP8.buffer or wasmMemory.buffer");
+ missingGlobal("asm", "Please use wasmExports instead");
+
+ function missingLibrarySymbol(sym) {
+ if (typeof globalThis !== "undefined" && !Object.getOwnPropertyDescriptor(globalThis, sym)) {
+ Object.defineProperty(globalThis, sym, {
+ configurable: true,
+ get() {
+ var msg = `\`${sym}\` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line`;
+ var librarySymbol = sym;
+ if (!librarySymbol.startsWith("_")) {
+ librarySymbol = "$" + sym
+ }
+ msg += ` (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='${librarySymbol}')`;
+ if (isExportedByForceFilesystem(sym)) {
+ msg += ". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"
+ }
+ warnOnce(msg);
+ return undefined
+ }
+ })
+ }
+ unexportedRuntimeSymbol(sym)
+ }
+
+ function unexportedRuntimeSymbol(sym) {
+ if (!Object.getOwnPropertyDescriptor(Module, sym)) {
+ Object.defineProperty(Module, sym, {
+ configurable: true,
+ get() {
+ var msg = `'${sym}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;
+ if (isExportedByForceFilesystem(sym)) {
+ msg += ". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"
+ }
+ abort(msg)
+ }
+ })
+ }
+ }
+
+ function dbg(...args) {
+ if (ENVIRONMENT_IS_NODE) {
+ fs.writeSync(2, args.join(" ") + "\n")
+ } else console.warn(...args)
+ }
+ var ASM_CONSTS = {
+ 5379300: () => {
+ Module["noExitRuntime"] = true
+ },
+ 5379329: () => {
+ const overlay = document.getElementById("overlay");
+ update_overlay(overlay)
+ },
+ 5379410: $0 => {
+ if (Module.vlcAccess === undefined) {
+ Module.vlcAccess = {}
+ }
+ Module.vlcAccess[$0] = {
+ worker_js_file: undefined,
+ reader: undefined
+ }
+ },
+ 5379550: $0 => {
+ const thread_id = $0;
+ let w = Module.PThread.pthreads[thread_id];
+
+ function handleFileRequest(e) {
+ const msg = e.data;
+ if (msg.type === "requestFile") {
+ w.removeEventListener("message", handleFileRequest);
+ if (Module.vlc_access_file === undefined) {
+ console.error("vlc_access_file property missing!");
+ w.postMessage({
+ cmd: "customCmd",
+ type: "ErrorVLCAccessFileUndefined"
+ });
+ return
+ }
+ if (msg.id === undefined) {
+ console.error("id property missing in requestFile message!");
+ w.postMessage({
+ cmd: "customCmd",
+ type: "ErrorRequestFileMessageWithoutId"
+ });
+ return
+ }
+ if (Module.vlc_access_file[msg.id] === undefined) {
+ console.error("error file missing!");
+ w.postMessage({
+ cmd: "customCmd",
+ type: "ErrorMissingFile"
+ });
+ return
+ }
+ w.postMessage({
+ cmd: "customCmd",
+ type: "FileResult",
+ file: Module.vlc_access_file[msg.id]
+ })
+ }
+ }
+ w.addEventListener("message", handleFileRequest)
+ },
+ 5380433: ($0, $1, $2, $3) => {
+ const offset = $0;
+ const buffer = $1;
+ const size = $2;
+ const blob = Module.vlcAccess[$3].worker_js_file.slice(offset, offset + size);
+ HEAPU8.set(new Uint8Array(Module.vlcAccess[$3].reader.readAsArrayBuffer(blob)), buffer)
+ },
+ 5380660: ($0, $1) => {
+ try {
+ var v = new BigUint64Array(wasmMemory.buffer, $0, 1);
+ v[0] = BigInt(Module.vlcAccess[$1].worker_js_file.size);
+ return 0
+ } catch (error) {
+ console.error("get_js_file_size error: " + error);
+ return 1
+ }
+ },
+ 5380872: $0 => {
+ Module.vlcAccess[$0].worker_js_file = undefined;
+ Module.vlcAccess[$0].reader = undefined
+ },
+ 5380966: ($0, $1) => {
+ let canvasName = UTF8ToString($1);
+
+ function onVoutMessage(msg) {
+ let data = msg["data"];
+ if (data.customCmd == "commitFrame") {
+ let bmp = data["bitmap"];
+ let ctx = document.getElementById(canvasName).getContext("bitmaprenderer");
+ ctx.transferFromImageBitmap(bmp)
+ }
+ }
+ let w = Module.PThread.pthreads[$0];
+ w.addEventListener("message", function(e) {
+ let msg = e["data"];
+ if (msg.customCmd == "getVoutMessagePort") {
+ let msgChannel = new MessageChannel;
+ msgChannel.port1.onmessage = onVoutMessage.bind(msgChannel.port1);
+ w.postMessage({
+ customCmd: "getVoutMessagePortResult",
+ msgPort: msgChannel.port2
+ }, [msgChannel.port2])
+ }
+ })
+ },
+ 5381604: ($0, $1) => {
+ let frame = Emval.toValue($0);
+ Module.msgChannel.port2.postMessage({
+ customCmd: "displayFrame",
+ pictureId: $1,
+ frame: frame
+ })
+ },
+ 5381736: ($0, $1) => {
+ const WEBCODEC_MAX_PICTURES = 32;
+ const picIndex = $0;
+ const poolIndex = $1;
+ const frame = Module.framePools[poolIndex][picIndex];
+ console.assert(picIndex >= 0 && picIndex < WEBCODEC_MAX_PICTURES);
+ if (frame !== undefined) frame.close();
+ Module.framePools[poolIndex][picIndex] = undefined
+ },
+ 5382030: $0 => {
+ const WEBCODEC_MAX_PICTURES = 32;
+ const thread_id = $0;
+ let w = Module.PThread.pthreads[thread_id];
+ const connect = msg => {
+ const port = msg.port;
+ port.onmessage = e => {
+ if (e.data.customCmd !== "sendFrame") return;
+ const decoderId = e.data.decoderId;
+ const picIndex = e.data.pictureIdx;
+ console.assert(picIndex >= 0 && picIndex < WEBCODEC_MAX_PICTURES);
+ const frame = Module.framePools[decoderId][picIndex];
+ if (frame === undefined) {
+ port.postMessage({
+ customCmd: "displayFrame",
+ frame: undefined,
+ pictureId: picIndex
+ });
+ return
+ }
+ port.postMessage({
+ customCmd: "displayFrame",
+ frame: frame,
+ pictureId: picIndex
+ }, [frame.clone()])
+ }
+ };
+ w.addEventListener("message", e => {
+ const LISTENERS = {
+ "connect": connect
+ };
+ const listener = LISTENERS[e.data.customCmd];
+ if (listener !== undefined) listener(e.data)
+ })
+ },
+ 5382854: $0 => {
+ const thread_id = $0;
+ let framePool = Module.framePools[thread_id];
+ console.warn("FLUSHING");
+ for (let i = 0; i < framePool.length; ++i) {
+ if (framePool[i]) {
+ framePool[i].close();
+ framePool[i] = undefined
+ }
+ }
+ },
+ 5383071: $0 => {
+ Module.decoder.decode(Emval.toValue($0))
+ },
+ 5383120: $0 => {
+ const WEBCODEC_MAX_PICTURES = 32;
+ if (Module.framePools === undefined) Module.framePools = {};
+ const thread_id = $0;
+ Module.framePools[thread_id] = new Array(WEBCODEC_MAX_PICTURES);
+ let framePool = Module.framePools[thread_id];
+ let w = Module.PThread.pthreads[thread_id];
+ const newFrame = msg => {
+ const picIndex = msg.picIdx;
+ console.assert(picIndex >= 0 && picIndex < WEBCODEC_MAX_PICTURES);
+ if (framePool[picIndex] !== undefined) {
+ console.warn("Discarding dropped frame ", picIndex);
+ framePool[picIndex].close()
+ }
+ framePool[picIndex] = msg.frame
+ };
+ w.addEventListener("message", e => {
+ const LISTENERS = {
+ "newFrame": newFrame
+ };
+ const listener = LISTENERS[e.data.customCmd];
+ if (listener !== undefined) listener(e.data)
+ })
+ },
+ 5383882: $0 => {
+ Module.decoderWorkerPort.postMessage({
+ customCmd: "decode",
+ block: $0
+ })
+ },
+ 5383960: () => {
+ Module.decoderWorkerPort.postMessage({
+ customCmd: "close"
+ })
+ }
+ };
+
+ function __asyncjs__init_js_file(p_access, id) {
+ return Asyncify.handleAsync(async () => {
+ let p = new Promise((resolve, reject) => {
+ function handleFileResult(e) {
+ const msg = e["data"];
+ if (msg.type === "FileResult") {
+ self.removeEventListener("message", handleFileResult);
+ if (msg.file !== undefined) {
+ Module.vlcAccess[p_access].worker_js_file = msg.file;
+ Module.vlcAccess[p_access].reader = new FileReaderSync;
+ resolve()
+ } else {
+ reject("error: sent an undefined File object from the main thread")
+ }
+ } else if (msg.type === "ErrorVLCAccessFileUndefined") {
+ reject("error: vlc_access_file object is not defined")
+ } else if (msg.type === "ErrorRequestFileMessageWithoutId") {
+ reject("error: request file message send without an id")
+ } else if (msg.type === "ErrorMissingFile") {
+ reject("error: missing file, bad id or vlc_access_file[id] is not defined")
+ }
+ }
+ self.addEventListener("message", handleFileResult)
+ });
+ let timer = undefined;
+ let timeout = new Promise(function(resolve, reject) {
+ timer = setTimeout(resolve, 1e3, "timeout")
+ });
+ let promises = [p, timeout];
+ self.postMessage({
+ cmd: "customCmd",
+ type: "requestFile",
+ id: id
+ });
+ let return_value = 0;
+ try {
+ let value = await Promise.race(promises);
+ if (value === "timeout") {
+ console.error("vlc_access timeout: could not get file!");
+ return_value = 1
+ }
+ } catch (error) {
+ console.error("vlc_access error in init_js_file(): ", error);
+ return_value = 1
+ }
+ clearTimeout(timer);
+ return return_value
+ })
+ }
+
+ function __asyncjs__Swap(gl) {
+ return Asyncify.handleAsync(async () => {
+ let bitmap = Module.offscreenCanvas.transferToImageBitmap();
+ await new Promise(resolve => {
+ setTimeout(() => {
+ Module.voutMsgPort.postMessage({
+ customCmd: "commitFrame",
+ bitmap: bitmap
+ }, [bitmap]);
+ resolve()
+ })
+ })
+ })
+ }
+
+ function __asyncjs__getVoutMessagePort() {
+ return Asyncify.handleAsync(async () => {
+ let p = new Promise((resolve, reject) => {
+ let listener = function(e) {
+ let msg = e.data;
+ if (msg.customCmd == "getVoutMessagePortResult") {
+ Module.voutMsgPort = msg["msgPort"];
+ Module.voutMsgPort.onmessage = function(vout_msg) {
+ if (vout_msg.data["customCmd"] == "releaseFrame") {
+ vout_msg.data["bitmap"].close()
+ }
+ };
+ resolve();
+ self.removeEventListener("message", listener)
+ }
+ };
+ self.addEventListener("message", listener);
+ self.postMessage({
+ customCmd: "getVoutMessagePort"
+ })
+ });
+ await p
+ })
+ }
+
+ function createGlContext(width, height) {
+ Module.offscreenCanvas = new OffscreenCanvas(width, height);
+ Module.glCtx = Module.offscreenCanvas.getContext("webgl2");
+ return GL.registerContext(Module.glCtx, {
+ antialias: false
+ })
+ }
+
+ function __asyncjs__bindVideoFrame(pictureIdx, decoderId) {
+ return Asyncify.handleAsync(async () => {
+ let frame = await Module.awaitFrame(pictureIdx, decoderId);
+ if (!frame) {
+ return
+ }
+ let glCtx = Module.glCtx;
+ glCtx.texImage2D(glCtx.TEXTURE_2D, 0, glCtx.RGBA, frame.displayWidth, frame.displayHeight, 0, glCtx.RGBA, glCtx.UNSIGNED_BYTE, frame)
+ })
+ }
+
+ function setupMessagePort(vctx) {
+ function onDecoderMessage(msg) {
+ let data = msg["data"];
+ if (data.customCmd == "displayFrame") {
+ let pictureIdx = data.pictureId;
+ let frame = data["frame"];
+ Module.glConv.frameResolver(frame)
+ }
+ }
+ Module.msgChannel = new MessageChannel;
+ Module.msgChannel.port1.onmessage = onDecoderMessage;
+ self.postMessage({
+ customCmd: "connect",
+ port: Module.msgChannel.port2
+ }, [Module.msgChannel.port2])
+ }
+
+ function initGlConvWorker(maxPictures) {
+ Module.glConv = {};
+ Module.glConv.lastFrame = {
+ pictureIdx: -1,
+ frame: undefined
+ };
+ Module.awaitFrame = async function(pictureIdx, decoderId) {
+ if (Module.glConv.lastFrame.pictureIdx == pictureIdx) {
+ return Module.glConv.lastFrame.frame
+ }
+ let p = new Promise((resolve, reject) => {
+ Module.glConv.frameResolver = resolve;
+ Module.msgChannel.port1.postMessage({
+ "customCmd": "sendFrame",
+ "pictureIdx": pictureIdx,
+ "decoderId": decoderId
+ })
+ });
+ let frame = await p;
+ Module.glConv.frameResolver = undefined;
+ if (Module.glConv.lastFrame.frame) Module.glConv.lastFrame.frame.close();
+ Module.glConv.lastFrame.frame = frame;
+ Module.glConv.lastFrame.pictureIdx = pictureIdx;
+ return frame
+ }
+ }
+
+ function closeMessagePort() {
+ if (Module.msgChannel) delete Module.msgChannel
+ }
+
+ function __asyncjs__CopyFrameToBuffer(pictureIdx, infoHandle) {
+ return Asyncify.handleAsync(async () => {
+ let info = Emval.toValue(infoHandle);
+ let frame = await Module.awaitFrame(pictureIdx);
+ let copyOpts = {
+ rect: frame.codedRect,
+ layout: info.layout
+ };
+ await frame.copyTo(info.buffer, copyOpts)
+ })
+ }
+
+ function __asyncjs__probeConfig(cfg) {
+ return Asyncify.handleAsync(async () => {
+ var decoderCfg = Emval.toValue(cfg);
+ var res = await VideoDecoder.isConfigSupported(decoderCfg).catch(err => {
+ console.log(err);
+ return {
+ "supported": false
+ }
+ });
+ return res["supported"]
+ })
+ }
+
+ function initDecoderJS(decoder, decCfgHandle) {
+ async function onDecoderWorkerMessage(msg) {
+ const data = msg["data"];
+ if (data["customCmd"] == "decode") {
+ let block = data["block"];
+ _decodeBlock(block);
+ _releaseBlock(block)
+ } else if (data["customCmd"] == "flush") {
+ await Module.decoder.flush();
+ self.postMessage({
+ customCmd: "flush"
+ });
+ Module.msgChannel.port1.postMessage({
+ customCmd: "onFlushCompleted"
+ })
+ } else if (data["customCmd"] == "close") {
+ Module.decoder.close()
+ }
+ }
+ self.addEventListener("message", e => {
+ let msg = e["data"];
+ console.log("Received message in decoder worker");
+ console.dir(msg);
+ if (msg["customCmd"] == "getDecoderWorkerMessagePort") {
+ Module.msgChannel = new MessageChannel;
+ Module.msgChannel.port1.onmessage = onDecoderWorkerMessage;
+ self.postMessage({
+ customCmd: "transferMessagePort",
+ targetThread: msg["replyTo"],
+ transferList: [Module.msgChannel.port2]
+ }, [Module.msgChannel.port2])
+ }
+ });
+ Module.webCodecCtx = decoder;
+ Module.framesReady = [];
+ Module.onPictureReleased = [];
+ let initCfg = {
+ "output": async function(frame) {
+ if (!_updateVideoOutput(Module.webCodecCtx)) {
+ frame.close();
+ return
+ }
+ let p = _waitPictureFromPool(Module.webCodecCtx);
+ if (Module.flushing || !p) {
+ frame.close();
+ return
+ }
+ let ts = frame.timestamp;
+ let picIdx = _getPictureIdx(p);
+ self.postMessage({
+ customCmd: "newFrame",
+ picIdx: picIdx,
+ frame: frame
+ }, [frame]);
+ _queuePicture(Module.webCodecCtx, p, ts)
+ },
+ "error": function(err) {
+ console.log("Error while decoding: ");
+ console.log(err)
+ }
+ };
+ Module.decoder = new VideoDecoder(initCfg);
+ let decCfg = Emval.toValue(decCfgHandle);
+ Module.decoder.configure(decCfg)
+ }
+
+ function __asyncjs__initDecoderWorkerMessagePort(dec) {
+ return Asyncify.handleAsync(async () => {
+ if (Module.decoderWorkerPort !== undefined) {
+ return
+ }
+ let workerMessagePortPromise = new Promise((resolve, reject) => {
+ self.addEventListener("message", function(e) {
+ let msg = e["data"];
+ if (msg.customCmd == "transferMessagePort") {
+ let port = msg["transferList"][0];
+ if (!port) {
+ console.log("No port provided, rejecting");
+ reject()
+ }
+ Module.decoderWorkerPort = port;
+ resolve()
+ }
+ });
+ self.postMessage({
+ customCmd: "getDecoderWorkerMessagePort",
+ targetThread: _getVlcDecoderWorkerThread(dec),
+ replyTo: _pthread_self()
+ })
+ });
+ await workerMessagePortPromise;
+ Module.decoderWorkerPort.onmessage = e => {
+ let data = e["data"];
+ if (data["customCmd"] == "onFlushCompleted") {
+ Module.flushPromiseResolver()
+ }
+ }
+ })
+ }
+
+ function __asyncjs__flushAsync() {
+ return Asyncify.handleAsync(async () => {
+ let p = new Promise(r => {
+ Module.flushPromiseResolver = r;
+ Module.decoderWorkerPort.postMessage({
+ customCmd: "flush"
+ })
+ });
+ await p;
+ Module.flushPromiseResolver = undefined
+ })
+ }
+
+ function ExitStatus(status) {
+ this.name = "ExitStatus";
+ this.message = `Program terminated with exit(${status})`;
+ this.status = status
+ }
+ var terminateWorker = worker => {
+ worker.terminate();
+ worker.onmessage = e => {
+ var cmd = e["data"]["cmd"];
+ err(`received "${cmd}" command from terminated worker: ${worker.workerID}`)
+ }
+ };
+ var killThread = pthread_ptr => {
+ assert(!ENVIRONMENT_IS_PTHREAD, "Internal Error! killThread() can only ever be called from main application thread!");
+ assert(pthread_ptr, "Internal Error! Null pthread_ptr in killThread!");
+ var worker = PThread.pthreads[pthread_ptr];
+ delete PThread.pthreads[pthread_ptr];
+ terminateWorker(worker);
+ __emscripten_thread_free_data(pthread_ptr);
+ PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker), 1);
+ worker.pthread_ptr = 0
+ };
+ var cancelThread = pthread_ptr => {
+ assert(!ENVIRONMENT_IS_PTHREAD, "Internal Error! cancelThread() can only ever be called from main application thread!");
+ assert(pthread_ptr, "Internal Error! Null pthread_ptr in cancelThread!");
+ var worker = PThread.pthreads[pthread_ptr];
+ worker.postMessage({
+ "cmd": "cancel"
+ })
+ };
+ var cleanupThread = pthread_ptr => {
+ assert(!ENVIRONMENT_IS_PTHREAD, "Internal Error! cleanupThread() can only ever be called from main application thread!");
+ assert(pthread_ptr, "Internal Error! Null pthread_ptr in cleanupThread!");
+ var worker = PThread.pthreads[pthread_ptr];
+ assert(worker);
+ PThread.returnWorkerToPool(worker)
+ };
+ var zeroMemory = (address, size) => {
+ HEAPU8.fill(0, address, address + size);
+ return address
+ };
+ var spawnThread = threadParams => {
+ assert(!ENVIRONMENT_IS_PTHREAD, "Internal Error! spawnThread() can only ever be called from main application thread!");
+ assert(threadParams.pthread_ptr, "Internal error, no pthread ptr!");
+ var worker = PThread.getNewWorker();
+ if (!worker) {
+ return 6
+ }
+ assert(!worker.pthread_ptr, "Internal error!");
+ PThread.runningWorkers.push(worker);
+ PThread.pthreads[threadParams.pthread_ptr] = worker;
+ worker.pthread_ptr = threadParams.pthread_ptr;
+ var msg = {
+ "cmd": "run",
+ "start_routine": threadParams.startRoutine,
+ "arg": threadParams.arg,
+ "pthread_ptr": threadParams.pthread_ptr
+ };
+ msg.moduleCanvasId = threadParams.moduleCanvasId;
+ msg.offscreenCanvases = threadParams.offscreenCanvases;
+ if (ENVIRONMENT_IS_NODE) {
+ worker.unref()
+ }
+ worker.postMessage(msg, threadParams.transferList);
+ return 0
+ };
+ var runtimeKeepaliveCounter = 0;
+ var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;
+ var withStackSave = f => {
+ var stack = stackSave();
+ var ret = f();
+ stackRestore(stack);
+ return ret
+ };
+ var convertI32PairToI53Checked = (lo, hi) => {
+ assert(lo == lo >>> 0 || lo == (lo | 0));
+ assert(hi === (hi | 0));
+ return hi + 2097152 >>> 0 < 4194305 - !!lo ? (lo >>> 0) + hi * 4294967296 : NaN
+ };
+ var proxyToMainThread = (funcIndex, emAsmAddr, sync, ...callArgs) => withStackSave(() => {
+ var serializedNumCallArgs = callArgs.length;
+ var args = stackAlloc(serializedNumCallArgs * 8);
+ var b = args >> 3;
+ for (var i = 0; i < callArgs.length; i++) {
+ var arg = callArgs[i];
+ HEAPF64[b + i] = arg
+ }
+ return __emscripten_run_on_main_thread_js(funcIndex, emAsmAddr, serializedNumCallArgs, args, sync)
+ });
+
+ function _proc_exit(code) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(0, 0, 1, code);
+ EXITSTATUS = code;
+ if (!keepRuntimeAlive()) {
+ PThread.terminateAllThreads();
+ Module["onExit"]?.(code);
+ ABORT = true
+ }
+ quit_(code, new ExitStatus(code))
+ }
+ var exitJS = (status, implicit) => {
+ EXITSTATUS = status;
+ if (ENVIRONMENT_IS_PTHREAD) {
+ assert(!implicit);
+ exitOnMainThread(status);
+ throw "unwind"
+ }
+ if (!keepRuntimeAlive()) {
+ exitRuntime()
+ }
+ if (keepRuntimeAlive() && !implicit) {
+ var msg = `program exited (with status: ${status}), but keepRuntimeAlive() is set (counter=${runtimeKeepaliveCounter}) due to an async operation, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)`;
+ readyPromiseReject(msg);
+ err(msg)
+ }
+ _proc_exit(status)
+ };
+ var _exit = exitJS;
+ var ptrToString = ptr => {
+ assert(typeof ptr === "number");
+ ptr >>>= 0;
+ return "0x" + ptr.toString(16).padStart(8, "0")
+ };
+ var handleException = e => {
+ if (e instanceof ExitStatus || e == "unwind") {
+ return EXITSTATUS
+ }
+ checkStackCookie();
+ if (e instanceof WebAssembly.RuntimeError) {
+ if (_emscripten_stack_get_current() <= 0) {
+ err("Stack overflow detected. You can try increasing -sSTACK_SIZE (currently set to 65536)")
+ }
+ }
+ quit_(1, e)
+ };
+ var PThread = {
+ unusedWorkers: [],
+ runningWorkers: [],
+ tlsInitFunctions: [],
+ pthreads: {},
+ nextWorkerID: 1,
+ debugInit() {
+ function pthreadLogPrefix() {
+ var t = 0;
+ if (runtimeInitialized && typeof _pthread_self != "undefined" && !runtimeExited) {
+ t = _pthread_self()
+ }
+ return "w:" + (Module["workerID"] || 0) + ",t:" + ptrToString(t) + ": "
+ }
+ var origDbg = dbg;
+ dbg = (...args) => origDbg(pthreadLogPrefix() + args.join(" "))
+ },
+ init() {
+ PThread.debugInit();
+ if (ENVIRONMENT_IS_PTHREAD) {
+ PThread.initWorker()
+ } else {
+ PThread.initMainThread()
+ }
+ },
+ initMainThread() {
+ var pthreadPoolSize = 25;
+ while (pthreadPoolSize--) {
+ PThread.allocateUnusedWorker()
+ }
+ addOnPreRun(() => {
+ addRunDependency("loading-workers");
+ PThread.loadWasmModuleToAllWorkers(() => removeRunDependency("loading-workers"))
+ })
+ },
+ initWorker() {
+ noExitRuntime = false
+ },
+ setExitStatus: status => EXITSTATUS = status,
+ terminateAllThreads__deps: ["$terminateWorker"],
+ terminateAllThreads: () => {
+ assert(!ENVIRONMENT_IS_PTHREAD, "Internal Error! terminateAllThreads() can only ever be called from main application thread!");
+ for (var worker of PThread.runningWorkers) {
+ terminateWorker(worker)
+ }
+ for (var worker of PThread.unusedWorkers) {
+ terminateWorker(worker)
+ }
+ PThread.unusedWorkers = [];
+ PThread.runningWorkers = [];
+ PThread.pthreads = []
+ },
+ returnWorkerToPool: worker => {
+ var pthread_ptr = worker.pthread_ptr;
+ delete PThread.pthreads[pthread_ptr];
+ PThread.unusedWorkers.push(worker);
+ PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker), 1);
+ worker.pthread_ptr = 0;
+ __emscripten_thread_free_data(pthread_ptr)
+ },
+ receiveObjectTransfer(data) {
+ if (typeof GL != "undefined") {
+ Object.assign(GL.offscreenCanvases, data.offscreenCanvases);
+ if (!Module["canvas"] && data.moduleCanvasId && GL.offscreenCanvases[data.moduleCanvasId]) {
+ Module["canvas"] = GL.offscreenCanvases[data.moduleCanvasId].offscreenCanvas;
+ Module["canvas"].id = data.moduleCanvasId
+ }
+ }
+ },
+ threadInitTLS() {
+ PThread.tlsInitFunctions.forEach(f => f())
+ },
+ loadWasmModuleToWorker: worker => new Promise(onFinishedLoading => {
+ worker.onmessage = e => {
+ var d = e["data"];
+ var cmd = d["cmd"];
+ if (d["targetThread"] && d["targetThread"] != _pthread_self()) {
+ var targetWorker = PThread.pthreads[d["targetThread"]];
+ if (targetWorker) {
+ targetWorker.postMessage(d, d["transferList"])
+ } else {
+ err(`Internal error! Worker sent a message "${cmd}" to target pthread ${d["targetThread"]}, but that thread no longer exists!`)
+ }
+ return
+ }
+ if (cmd === "checkMailbox") {
+ checkMailbox()
+ } else if (cmd === "spawnThread") {
+ spawnThread(d)
+ } else if (cmd === "cleanupThread") {
+ cleanupThread(d["thread"])
+ } else if (cmd === "killThread") {
+ killThread(d["thread"])
+ } else if (cmd === "cancelThread") {
+ cancelThread(d["thread"])
+ } else if (cmd === "loaded") {
+ worker.loaded = true;
+ if (ENVIRONMENT_IS_NODE && !worker.pthread_ptr) {
+ worker.unref()
+ }
+ onFinishedLoading(worker)
+ } else if (cmd === "alert") {
+ alert(`Thread ${d["threadId"]}: ${d["text"]}`)
+ } else if (d.target === "setimmediate") {
+ worker.postMessage(d)
+ } else if (cmd === "callHandler") {
+ Module[d["handler"]](...d["args"])
+ } else if (cmd) {
+ err(`worker sent an unknown command ${cmd}`)
+ }
+ };
+ worker.onerror = e => {
+ var message = "worker sent an error!";
+ if (worker.pthread_ptr) {
+ message = `Pthread ${ptrToString(worker.pthread_ptr)} sent an error!`
+ }
+ err(`${message} ${e.filename}:${e.lineno}: ${e.message}`);
+ throw e
+ };
+ if (ENVIRONMENT_IS_NODE) {
+ worker.on("message", data => worker.onmessage({
+ data: data
+ }));
+ worker.on("error", e => worker.onerror(e))
+ }
+ assert(wasmMemory instanceof WebAssembly.Memory, "WebAssembly memory should have been loaded by now!");
+ assert(wasmModule instanceof WebAssembly.Module, "WebAssembly Module should have been loaded by now!");
+ var handlers = [];
+ var knownHandlers = ["onExit", "onAbort", "print", "printErr"];
+ for (var handler of knownHandlers) {
+ if (Module.hasOwnProperty(handler)) {
+ handlers.push(handler)
+ }
+ }
+ worker.workerID = PThread.nextWorkerID++;
+ worker.postMessage({
+ "cmd": "load",
+ "handlers": handlers,
+ "urlOrBlob": Module["mainScriptUrlOrBlob"] || _scriptDir,
+ "wasmMemory": wasmMemory,
+ "wasmModule": wasmModule,
+ "workerID": worker.workerID
+ })
+ }),
+ loadWasmModuleToAllWorkers(onMaybeReady) {
+ if (ENVIRONMENT_IS_PTHREAD) {
+ return onMaybeReady()
+ }
+ let pthreadPoolReady = Promise.all(PThread.unusedWorkers.map(PThread.loadWasmModuleToWorker));
+ pthreadPoolReady.then(onMaybeReady)
+ },
+ allocateUnusedWorker() {
+ var worker;
+ var pthreadMainJs = locateFile("experimental.worker.js");
+ worker = new Worker(pthreadMainJs);
+ PThread.unusedWorkers.push(worker)
+ },
+ getNewWorker() {
+ if (PThread.unusedWorkers.length == 0) {
+ if (!ENVIRONMENT_IS_NODE) {
+ err("Tried to spawn a new thread, but the thread pool is exhausted.\n" + "This might result in a deadlock unless some threads eventually exit or the code explicitly breaks out to the event loop.\n" + "If you want to increase the pool size, use setting `-sPTHREAD_POOL_SIZE=...`." + "\nIf you want to throw an explicit error instead of the risk of deadlocking in those cases, use setting `-sPTHREAD_POOL_SIZE_STRICT=2`.")
+ }
+ PThread.allocateUnusedWorker();
+ PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])
+ }
+ return PThread.unusedWorkers.pop()
+ }
+ };
+ Module["PThread"] = PThread;
+ var callRuntimeCallbacks = callbacks => {
+ while (callbacks.length > 0) {
+ callbacks.shift()(Module)
+ }
+ };
+ var establishStackSpace = () => {
+ var pthread_ptr = _pthread_self();
+ var stackHigh = HEAPU32[pthread_ptr + 52 >> 2];
+ var stackSize = HEAPU32[pthread_ptr + 56 >> 2];
+ var stackLow = stackHigh - stackSize;
+ assert(stackHigh != 0);
+ assert(stackLow != 0);
+ assert(stackHigh > stackLow, "stackHigh must be higher then stackLow");
+ _emscripten_stack_set_limits(stackHigh, stackLow);
+ stackRestore(stackHigh);
+ writeStackCookie()
+ };
+ Module["establishStackSpace"] = establishStackSpace;
+
+ function exitOnMainThread(returnCode) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(1, 0, 0, returnCode);
+ _exit(returnCode)
+ }
+ var invokeEntryPoint = (ptr, arg) => {
+ runtimeKeepaliveCounter = 0;
+ var result = (a1 => dynCall_ii(ptr, a1))(arg);
+ checkStackCookie();
+
+ function finish(result) {
+ if (keepRuntimeAlive()) {
+ PThread.setExitStatus(result)
+ } else {
+ __emscripten_thread_exit(result)
+ }
+ }
+ finish(result)
+ };
+ Module["invokeEntryPoint"] = invokeEntryPoint;
+ var noExitRuntime = Module["noExitRuntime"] || false;
+ var registerTLSInit = tlsInitFunc => PThread.tlsInitFunctions.push(tlsInitFunc);
+ var warnOnce = text => {
+ warnOnce.shown ||= {};
+ if (!warnOnce.shown[text]) {
+ warnOnce.shown[text] = 1;
+ if (ENVIRONMENT_IS_NODE) text = "warning: " + text;
+ err(text)
+ }
+ };
+ var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf8") : undefined;
+ var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => {
+ var endIdx = idx + maxBytesToRead;
+ var endPtr = idx;
+ while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;
+ if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {
+ return UTF8Decoder.decode(heapOrArray.buffer instanceof SharedArrayBuffer ? heapOrArray.slice(idx, endPtr) : heapOrArray.subarray(idx, endPtr))
+ }
+ var str = "";
+ while (idx < endPtr) {
+ var u0 = heapOrArray[idx++];
+ if (!(u0 & 128)) {
+ str += String.fromCharCode(u0);
+ continue
+ }
+ var u1 = heapOrArray[idx++] & 63;
+ if ((u0 & 224) == 192) {
+ str += String.fromCharCode((u0 & 31) << 6 | u1);
+ continue
+ }
+ var u2 = heapOrArray[idx++] & 63;
+ if ((u0 & 240) == 224) {
+ u0 = (u0 & 15) << 12 | u1 << 6 | u2
+ } else {
+ if ((u0 & 248) != 240) warnOnce("Invalid UTF-8 leading byte " + ptrToString(u0) + " encountered when deserializing a UTF-8 string in wasm memory to a JS string!");
+ u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63
+ }
+ if (u0 < 65536) {
+ str += String.fromCharCode(u0)
+ } else {
+ var ch = u0 - 65536;
+ str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023)
+ }
+ }
+ return str
+ };
+ var UTF8ToString = (ptr, maxBytesToRead) => {
+ assert(typeof ptr == "number", `UTF8ToString expects a number (got ${typeof ptr})`);
+ return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""
+ };
+ var ___assert_fail = (condition, filename, line, func) => {
+ abort(`Assertion failed: ${UTF8ToString(condition)}, at: ` + [filename ? UTF8ToString(filename) : "unknown filename", line, func ? UTF8ToString(func) : "unknown function"])
+ };
+ var ___call_sighandler = (fp, sig) => (a1 => dynCall_vi(fp, a1))(sig);
+ var exceptionCaught = [];
+ var exceptionLast = 0;
+ var uncaughtExceptionCount = 0;
+ var ___cxa_rethrow = () => {
+ var info = exceptionCaught.pop();
+ if (!info) {
+ abort("no exception to throw")
+ }
+ var ptr = info.excPtr;
+ if (!info.get_rethrown()) {
+ exceptionCaught.push(info);
+ info.set_rethrown(true);
+ info.set_caught(false);
+ uncaughtExceptionCount++
+ }
+ exceptionLast = ptr;
+ assert(false, "Exception thrown, but exception catching is not enabled. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch.")
+ };
+ class ExceptionInfo {
+ constructor(excPtr) {
+ this.excPtr = excPtr;
+ this.ptr = excPtr - 24
+ }
+ set_type(type) {
+ HEAPU32[this.ptr + 4 >> 2] = type
+ }
+ get_type() {
+ return HEAPU32[this.ptr + 4 >> 2]
+ }
+ set_destructor(destructor) {
+ HEAPU32[this.ptr + 8 >> 2] = destructor
+ }
+ get_destructor() {
+ return HEAPU32[this.ptr + 8 >> 2]
+ }
+ set_caught(caught) {
+ caught = caught ? 1 : 0;
+ HEAP8[this.ptr + 12] = caught
+ }
+ get_caught() {
+ return HEAP8[this.ptr + 12] != 0
+ }
+ set_rethrown(rethrown) {
+ rethrown = rethrown ? 1 : 0;
+ HEAP8[this.ptr + 13] = rethrown
+ }
+ get_rethrown() {
+ return HEAP8[this.ptr + 13] != 0
+ }
+ init(type, destructor) {
+ this.set_adjusted_ptr(0);
+ this.set_type(type);
+ this.set_destructor(destructor)
+ }
+ set_adjusted_ptr(adjustedPtr) {
+ HEAPU32[this.ptr + 16 >> 2] = adjustedPtr
+ }
+ get_adjusted_ptr() {
+ return HEAPU32[this.ptr + 16 >> 2]
+ }
+ get_exception_ptr() {
+ var isPointer = ___cxa_is_pointer_type(this.get_type());
+ if (isPointer) {
+ return HEAPU32[this.excPtr >> 2]
+ }
+ var adjusted = this.get_adjusted_ptr();
+ if (adjusted !== 0) return adjusted;
+ return this.excPtr
+ }
+ }
+ var ___cxa_throw = (ptr, type, destructor) => {
+ var info = new ExceptionInfo(ptr);
+ info.init(type, destructor);
+ exceptionLast = ptr;
+ uncaughtExceptionCount++;
+ assert(false, "Exception thrown, but exception catching is not enabled. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch.")
+ };
+ var ___emscripten_init_main_thread_js = tb => {
+ __emscripten_thread_init(tb, !ENVIRONMENT_IS_WORKER, 1, !ENVIRONMENT_IS_WEB, 65536, false);
+ PThread.threadInitTLS()
+ };
+ var ___emscripten_thread_cleanup = thread => {
+ if (!ENVIRONMENT_IS_PTHREAD) cleanupThread(thread);
+ else postMessage({
+ "cmd": "cleanupThread",
+ "thread": thread
+ })
+ };
+
+ function pthreadCreateProxied(pthread_ptr, attr, startRoutine, arg) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(2, 0, 1, pthread_ptr, attr, startRoutine, arg);
+ return ___pthread_create_js(pthread_ptr, attr, startRoutine, arg)
+ }
+ var ___pthread_create_js = (pthread_ptr, attr, startRoutine, arg) => {
+ if (typeof SharedArrayBuffer == "undefined") {
+ err("Current environment does not support SharedArrayBuffer, pthreads are not available!");
+ return 6
+ }
+ var transferList = [];
+ var error = 0;
+ var transferredCanvasNames = attr ? HEAPU32[attr + 40 >> 2] : 0;
+ if (transferredCanvasNames == 4294967295) {
+ transferredCanvasNames = "#canvas"
+ } else transferredCanvasNames &&= UTF8ToString(transferredCanvasNames).trim();
+ transferredCanvasNames &&= transferredCanvasNames.split(",");
+ var offscreenCanvases = {};
+ var moduleCanvasId = Module["canvas"] ? Module["canvas"].id : "";
+ for (var i in transferredCanvasNames) {
+ var name = transferredCanvasNames[i].trim();
+ var offscreenCanvasInfo;
+ try {
+ if (name == "#canvas") {
+ if (!Module["canvas"]) {
+ err(`pthread_create: could not find canvas with ID "${name}" to transfer to thread!`);
+ error = 28;
+ break
+ }
+ name = Module["canvas"].id
+ }
+ assert(typeof GL == "object", "OFFSCREENCANVAS_SUPPORT assumes GL is in use (you can force-include it with '-sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE=$GL')");
+ if (GL.offscreenCanvases[name]) {
+ offscreenCanvasInfo = GL.offscreenCanvases[name];
+ GL.offscreenCanvases[name] = null;
+ if (Module["canvas"] instanceof OffscreenCanvas && name === Module["canvas"].id) Module["canvas"] = null
+ } else if (!ENVIRONMENT_IS_PTHREAD) {
+ var canvas = Module["canvas"] && Module["canvas"].id === name ? Module["canvas"] : document.querySelector(name);
+ if (!canvas) {
+ err(`pthread_create: could not find canvas with ID "${name}" to transfer to thread!`);
+ error = 28;
+ break
+ }
+ if (canvas.controlTransferredOffscreen) {
+ err(`pthread_create: cannot transfer canvas with ID "${name}" to thread, since the current thread does not have control over it!`);
+ error = 63;
+ break
+ }
+ if (canvas.transferControlToOffscreen) {
+ if (!canvas.canvasSharedPtr) {
+ canvas.canvasSharedPtr = _malloc(12);
+ HEAP32[canvas.canvasSharedPtr >> 2] = canvas.width;
+ HEAP32[canvas.canvasSharedPtr + 4 >> 2] = canvas.height;
+ HEAPU32[canvas.canvasSharedPtr + 8 >> 2] = 0
+ }
+ offscreenCanvasInfo = {
+ offscreenCanvas: canvas.transferControlToOffscreen(),
+ canvasSharedPtr: canvas.canvasSharedPtr,
+ id: canvas.id
+ };
+ canvas.controlTransferredOffscreen = true
+ } else {
+ err(`pthread_create: cannot transfer control of canvas "${name}" to pthread, because current browser does not support OffscreenCanvas!`)
+ }
+ }
+ if (offscreenCanvasInfo) {
+ transferList.push(offscreenCanvasInfo.offscreenCanvas);
+ offscreenCanvases[offscreenCanvasInfo.id] = offscreenCanvasInfo
+ }
+ } catch (e) {
+ err(`pthread_create: failed to transfer control of canvas "${name}" to OffscreenCanvas! Error: ${e}`);
+ return 28
+ }
+ }
+ if (ENVIRONMENT_IS_PTHREAD && (transferList.length === 0 || error)) {
+ return pthreadCreateProxied(pthread_ptr, attr, startRoutine, arg)
+ }
+ if (error) return error;
+ for (var canvas of Object.values(offscreenCanvases)) {
+ HEAPU32[canvas.canvasSharedPtr + 8 >> 2] = pthread_ptr
+ }
+ var threadParams = {
+ startRoutine: startRoutine,
+ pthread_ptr: pthread_ptr,
+ arg: arg,
+ moduleCanvasId: moduleCanvasId,
+ offscreenCanvases: offscreenCanvases,
+ transferList: transferList
+ };
+ if (ENVIRONMENT_IS_PTHREAD) {
+ threadParams.cmd = "spawnThread";
+ postMessage(threadParams, transferList);
+ return 0
+ }
+ return spawnThread(threadParams)
+ };
+ var ___pthread_kill_js = (thread, signal) => {
+ if (signal === 33) {
+ if (!ENVIRONMENT_IS_PTHREAD) cancelThread(thread);
+ else postMessage({
+ "cmd": "cancelThread",
+ "thread": thread
+ })
+ } else {
+ if (!ENVIRONMENT_IS_PTHREAD) killThread(thread);
+ else postMessage({
+ "cmd": "killThread",
+ "thread": thread
+ })
+ }
+ return 0
+ };
+ var initRandomFill = () => {
+ if (typeof crypto == "object" && typeof crypto["getRandomValues"] == "function") {
+ return view => (view.set(crypto.getRandomValues(new Uint8Array(view.byteLength))), view)
+ } else if (ENVIRONMENT_IS_NODE) {
+ try {
+ var crypto_module = require("crypto");
+ var randomFillSync = crypto_module["randomFillSync"];
+ if (randomFillSync) {
+ return view => crypto_module["randomFillSync"](view)
+ }
+ var randomBytes = crypto_module["randomBytes"];
+ return view => (view.set(randomBytes(view.byteLength)), view)
+ } catch (e) {}
+ }
+ abort("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: (array) => { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")
+ };
+ var randomFill = view => (randomFill = initRandomFill())(view);
+ var PATH = {
+ isAbs: path => path.charAt(0) === "/",
+ splitPath: filename => {
+ var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
+ return splitPathRe.exec(filename).slice(1)
+ },
+ normalizeArray: (parts, allowAboveRoot) => {
+ var up = 0;
+ for (var i = parts.length - 1; i >= 0; i--) {
+ var last = parts[i];
+ if (last === ".") {
+ parts.splice(i, 1)
+ } else if (last === "..") {
+ parts.splice(i, 1);
+ up++
+ } else if (up) {
+ parts.splice(i, 1);
+ up--
+ }
+ }
+ if (allowAboveRoot) {
+ for (; up; up--) {
+ parts.unshift("..")
+ }
+ }
+ return parts
+ },
+ normalize: path => {
+ var isAbsolute = PATH.isAbs(path),
+ trailingSlash = path.substr(-1) === "/";
+ path = PATH.normalizeArray(path.split("/").filter(p => !!p), !isAbsolute).join("/");
+ if (!path && !isAbsolute) {
+ path = "."
+ }
+ if (path && trailingSlash) {
+ path += "/"
+ }
+ return (isAbsolute ? "/" : "") + path
+ },
+ dirname: path => {
+ var result = PATH.splitPath(path),
+ root = result[0],
+ dir = result[1];
+ if (!root && !dir) {
+ return "."
+ }
+ if (dir) {
+ dir = dir.substr(0, dir.length - 1)
+ }
+ return root + dir
+ },
+ basename: path => {
+ if (path === "/") return "/";
+ path = PATH.normalize(path);
+ path = path.replace(/\/$/, "");
+ var lastSlash = path.lastIndexOf("/");
+ if (lastSlash === -1) return path;
+ return path.substr(lastSlash + 1)
+ },
+ join: (...paths) => PATH.normalize(paths.join("/")),
+ join2: (l, r) => PATH.normalize(l + "/" + r)
+ };
+ var PATH_FS = {
+ resolve: (...args) => {
+ var resolvedPath = "",
+ resolvedAbsolute = false;
+ for (var i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {
+ var path = i >= 0 ? args[i] : FS.cwd();
+ if (typeof path != "string") {
+ throw new TypeError("Arguments to path.resolve must be strings")
+ } else if (!path) {
+ return ""
+ }
+ resolvedPath = path + "/" + resolvedPath;
+ resolvedAbsolute = PATH.isAbs(path)
+ }
+ resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter(p => !!p), !resolvedAbsolute).join("/");
+ return (resolvedAbsolute ? "/" : "") + resolvedPath || "."
+ },
+ relative: (from, to) => {
+ from = PATH_FS.resolve(from).substr(1);
+ to = PATH_FS.resolve(to).substr(1);
+
+ function trim(arr) {
+ var start = 0;
+ for (; start < arr.length; start++) {
+ if (arr[start] !== "") break
+ }
+ var end = arr.length - 1;
+ for (; end >= 0; end--) {
+ if (arr[end] !== "") break
+ }
+ if (start > end) return [];
+ return arr.slice(start, end - start + 1)
+ }
+ var fromParts = trim(from.split("/"));
+ var toParts = trim(to.split("/"));
+ var length = Math.min(fromParts.length, toParts.length);
+ var samePartsLength = length;
+ for (var i = 0; i < length; i++) {
+ if (fromParts[i] !== toParts[i]) {
+ samePartsLength = i;
+ break
+ }
+ }
+ var outputParts = [];
+ for (var i = samePartsLength; i < fromParts.length; i++) {
+ outputParts.push("..")
+ }
+ outputParts = outputParts.concat(toParts.slice(samePartsLength));
+ return outputParts.join("/")
+ }
+ };
+ var FS_stdin_getChar_buffer = [];
+ var lengthBytesUTF8 = str => {
+ var len = 0;
+ for (var i = 0; i < str.length; ++i) {
+ var c = str.charCodeAt(i);
+ if (c <= 127) {
+ len++
+ } else if (c <= 2047) {
+ len += 2
+ } else if (c >= 55296 && c <= 57343) {
+ len += 4;
+ ++i
+ } else {
+ len += 3
+ }
+ }
+ return len
+ };
+ var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {
+ assert(typeof str === "string", `stringToUTF8Array expects a string (got ${typeof str})`);
+ if (!(maxBytesToWrite > 0)) return 0;
+ var startIdx = outIdx;
+ var endIdx = outIdx + maxBytesToWrite - 1;
+ for (var i = 0; i < str.length; ++i) {
+ var u = str.charCodeAt(i);
+ if (u >= 55296 && u <= 57343) {
+ var u1 = str.charCodeAt(++i);
+ u = 65536 + ((u & 1023) << 10) | u1 & 1023
+ }
+ if (u <= 127) {
+ if (outIdx >= endIdx) break;
+ heap[outIdx++] = u
+ } else if (u <= 2047) {
+ if (outIdx + 1 >= endIdx) break;
+ heap[outIdx++] = 192 | u >> 6;
+ heap[outIdx++] = 128 | u & 63
+ } else if (u <= 65535) {
+ if (outIdx + 2 >= endIdx) break;
+ heap[outIdx++] = 224 | u >> 12;
+ heap[outIdx++] = 128 | u >> 6 & 63;
+ heap[outIdx++] = 128 | u & 63
+ } else {
+ if (outIdx + 3 >= endIdx) break;
+ if (u > 1114111) warnOnce("Invalid Unicode code point " + ptrToString(u) + " encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).");
+ heap[outIdx++] = 240 | u >> 18;
+ heap[outIdx++] = 128 | u >> 12 & 63;
+ heap[outIdx++] = 128 | u >> 6 & 63;
+ heap[outIdx++] = 128 | u & 63
+ }
+ }
+ heap[outIdx] = 0;
+ return outIdx - startIdx
+ };
+
+ function intArrayFromString(stringy, dontAddNull, length) {
+ var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;
+ var u8array = new Array(len);
+ var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);
+ if (dontAddNull) u8array.length = numBytesWritten;
+ return u8array
+ }
+ var FS_stdin_getChar = () => {
+ if (!FS_stdin_getChar_buffer.length) {
+ var result = null;
+ if (ENVIRONMENT_IS_NODE) {
+ var BUFSIZE = 256;
+ var buf = Buffer.alloc(BUFSIZE);
+ var bytesRead = 0;
+ var fd = process.stdin.fd;
+ try {
+ bytesRead = fs.readSync(fd, buf)
+ } catch (e) {
+ if (e.toString().includes("EOF")) bytesRead = 0;
+ else throw e
+ }
+ if (bytesRead > 0) {
+ result = buf.slice(0, bytesRead).toString("utf-8")
+ } else {
+ result = null
+ }
+ } else if (typeof window != "undefined" && typeof window.prompt == "function") {
+ result = window.prompt("Input: ");
+ if (result !== null) {
+ result += "\n"
+ }
+ } else if (typeof readline == "function") {
+ result = readline();
+ if (result !== null) {
+ result += "\n"
+ }
+ }
+ if (!result) {
+ return null
+ }
+ FS_stdin_getChar_buffer = intArrayFromString(result, true)
+ }
+ return FS_stdin_getChar_buffer.shift()
+ };
+ var TTY = {
+ ttys: [],
+ init() {},
+ shutdown() {},
+ register(dev, ops) {
+ TTY.ttys[dev] = {
+ input: [],
+ output: [],
+ ops: ops
+ };
+ FS.registerDevice(dev, TTY.stream_ops)
+ },
+ stream_ops: {
+ open(stream) {
+ var tty = TTY.ttys[stream.node.rdev];
+ if (!tty) {
+ throw new FS.ErrnoError(43)
+ }
+ stream.tty = tty;
+ stream.seekable = false
+ },
+ close(stream) {
+ stream.tty.ops.fsync(stream.tty)
+ },
+ fsync(stream) {
+ stream.tty.ops.fsync(stream.tty)
+ },
+ read(stream, buffer, offset, length, pos) {
+ if (!stream.tty || !stream.tty.ops.get_char) {
+ throw new FS.ErrnoError(60)
+ }
+ var bytesRead = 0;
+ for (var i = 0; i < length; i++) {
+ var result;
+ try {
+ result = stream.tty.ops.get_char(stream.tty)
+ } catch (e) {
+ throw new FS.ErrnoError(29)
+ }
+ if (result === undefined && bytesRead === 0) {
+ throw new FS.ErrnoError(6)
+ }
+ if (result === null || result === undefined) break;
+ bytesRead++;
+ buffer[offset + i] = result
+ }
+ if (bytesRead) {
+ stream.node.timestamp = Date.now()
+ }
+ return bytesRead
+ },
+ write(stream, buffer, offset, length, pos) {
+ if (!stream.tty || !stream.tty.ops.put_char) {
+ throw new FS.ErrnoError(60)
+ }
+ try {
+ for (var i = 0; i < length; i++) {
+ stream.tty.ops.put_char(stream.tty, buffer[offset + i])
+ }
+ } catch (e) {
+ throw new FS.ErrnoError(29)
+ }
+ if (length) {
+ stream.node.timestamp = Date.now()
+ }
+ return i
+ }
+ },
+ default_tty_ops: {
+ get_char(tty) {
+ return FS_stdin_getChar()
+ },
+ put_char(tty, val) {
+ if (val === null || val === 10) {
+ out(UTF8ArrayToString(tty.output, 0));
+ tty.output = []
+ } else {
+ if (val != 0) tty.output.push(val)
+ }
+ },
+ fsync(tty) {
+ if (tty.output && tty.output.length > 0) {
+ out(UTF8ArrayToString(tty.output, 0));
+ tty.output = []
+ }
+ },
+ ioctl_tcgets(tty) {
+ return {
+ c_iflag: 25856,
+ c_oflag: 5,
+ c_cflag: 191,
+ c_lflag: 35387,
+ c_cc: [3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
+ }
+ },
+ ioctl_tcsets(tty, optional_actions, data) {
+ return 0
+ },
+ ioctl_tiocgwinsz(tty) {
+ return [24, 80]
+ }
+ },
+ default_tty1_ops: {
+ put_char(tty, val) {
+ if (val === null || val === 10) {
+ err(UTF8ArrayToString(tty.output, 0));
+ tty.output = []
+ } else {
+ if (val != 0) tty.output.push(val)
+ }
+ },
+ fsync(tty) {
+ if (tty.output && tty.output.length > 0) {
+ err(UTF8ArrayToString(tty.output, 0));
+ tty.output = []
+ }
+ }
+ }
+ };
+ var alignMemory = (size, alignment) => {
+ assert(alignment, "alignment argument is required");
+ return Math.ceil(size / alignment) * alignment
+ };
+ var mmapAlloc = size => {
+ size = alignMemory(size, 65536);
+ var ptr = _emscripten_builtin_memalign(65536, size);
+ if (!ptr) return 0;
+ return zeroMemory(ptr, size)
+ };
+ var MEMFS = {
+ ops_table: null,
+ mount(mount) {
+ return MEMFS.createNode(null, "/", 16384 | 511, 0)
+ },
+ createNode(parent, name, mode, dev) {
+ if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
+ throw new FS.ErrnoError(63)
+ }
+ MEMFS.ops_table ||= {
+ dir: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr,
+ lookup: MEMFS.node_ops.lookup,
+ mknod: MEMFS.node_ops.mknod,
+ rename: MEMFS.node_ops.rename,
+ unlink: MEMFS.node_ops.unlink,
+ rmdir: MEMFS.node_ops.rmdir,
+ readdir: MEMFS.node_ops.readdir,
+ symlink: MEMFS.node_ops.symlink
+ },
+ stream: {
+ llseek: MEMFS.stream_ops.llseek
+ }
+ },
+ file: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr
+ },
+ stream: {
+ llseek: MEMFS.stream_ops.llseek,
+ read: MEMFS.stream_ops.read,
+ write: MEMFS.stream_ops.write,
+ allocate: MEMFS.stream_ops.allocate,
+ mmap: MEMFS.stream_ops.mmap,
+ msync: MEMFS.stream_ops.msync
+ }
+ },
+ link: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr,
+ readlink: MEMFS.node_ops.readlink
+ },
+ stream: {}
+ },
+ chrdev: {
+ node: {
+ getattr: MEMFS.node_ops.getattr,
+ setattr: MEMFS.node_ops.setattr
+ },
+ stream: FS.chrdev_stream_ops
+ }
+ };
+ var node = FS.createNode(parent, name, mode, dev);
+ if (FS.isDir(node.mode)) {
+ node.node_ops = MEMFS.ops_table.dir.node;
+ node.stream_ops = MEMFS.ops_table.dir.stream;
+ node.contents = {}
+ } else if (FS.isFile(node.mode)) {
+ node.node_ops = MEMFS.ops_table.file.node;
+ node.stream_ops = MEMFS.ops_table.file.stream;
+ node.usedBytes = 0;
+ node.contents = null
+ } else if (FS.isLink(node.mode)) {
+ node.node_ops = MEMFS.ops_table.link.node;
+ node.stream_ops = MEMFS.ops_table.link.stream
+ } else if (FS.isChrdev(node.mode)) {
+ node.node_ops = MEMFS.ops_table.chrdev.node;
+ node.stream_ops = MEMFS.ops_table.chrdev.stream
+ }
+ node.timestamp = Date.now();
+ if (parent) {
+ parent.contents[name] = node;
+ parent.timestamp = node.timestamp
+ }
+ return node
+ },
+ getFileDataAsTypedArray(node) {
+ if (!node.contents) return new Uint8Array(0);
+ if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);
+ return new Uint8Array(node.contents)
+ },
+ expandFileStorage(node, newCapacity) {
+ var prevCapacity = node.contents ? node.contents.length : 0;
+ if (prevCapacity >= newCapacity) return;
+ var CAPACITY_DOUBLING_MAX = 1024 * 1024;
+ newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);
+ if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);
+ var oldContents = node.contents;
+ node.contents = new Uint8Array(newCapacity);
+ if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0)
+ },
+ resizeFileStorage(node, newSize) {
+ if (node.usedBytes == newSize) return;
+ if (newSize == 0) {
+ node.contents = null;
+ node.usedBytes = 0
+ } else {
+ var oldContents = node.contents;
+ node.contents = new Uint8Array(newSize);
+ if (oldContents) {
+ node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)))
+ }
+ node.usedBytes = newSize
+ }
+ },
+ node_ops: {
+ getattr(node) {
+ var attr = {};
+ attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
+ attr.ino = node.id;
+ attr.mode = node.mode;
+ attr.nlink = 1;
+ attr.uid = 0;
+ attr.gid = 0;
+ attr.rdev = node.rdev;
+ if (FS.isDir(node.mode)) {
+ attr.size = 4096
+ } else if (FS.isFile(node.mode)) {
+ attr.size = node.usedBytes
+ } else if (FS.isLink(node.mode)) {
+ attr.size = node.link.length
+ } else {
+ attr.size = 0
+ }
+ attr.atime = new Date(node.timestamp);
+ attr.mtime = new Date(node.timestamp);
+ attr.ctime = new Date(node.timestamp);
+ attr.blksize = 4096;
+ attr.blocks = Math.ceil(attr.size / attr.blksize);
+ return attr
+ },
+ setattr(node, attr) {
+ if (attr.mode !== undefined) {
+ node.mode = attr.mode
+ }
+ if (attr.timestamp !== undefined) {
+ node.timestamp = attr.timestamp
+ }
+ if (attr.size !== undefined) {
+ MEMFS.resizeFileStorage(node, attr.size)
+ }
+ },
+ lookup(parent, name) {
+ throw FS.genericErrors[44]
+ },
+ mknod(parent, name, mode, dev) {
+ return MEMFS.createNode(parent, name, mode, dev)
+ },
+ rename(old_node, new_dir, new_name) {
+ if (FS.isDir(old_node.mode)) {
+ var new_node;
+ try {
+ new_node = FS.lookupNode(new_dir, new_name)
+ } catch (e) {}
+ if (new_node) {
+ for (var i in new_node.contents) {
+ throw new FS.ErrnoError(55)
+ }
+ }
+ }
+ delete old_node.parent.contents[old_node.name];
+ old_node.parent.timestamp = Date.now();
+ old_node.name = new_name;
+ new_dir.contents[new_name] = old_node;
+ new_dir.timestamp = old_node.parent.timestamp;
+ old_node.parent = new_dir
+ },
+ unlink(parent, name) {
+ delete parent.contents[name];
+ parent.timestamp = Date.now()
+ },
+ rmdir(parent, name) {
+ var node = FS.lookupNode(parent, name);
+ for (var i in node.contents) {
+ throw new FS.ErrnoError(55)
+ }
+ delete parent.contents[name];
+ parent.timestamp = Date.now()
+ },
+ readdir(node) {
+ var entries = [".", ".."];
+ for (var key of Object.keys(node.contents)) {
+ entries.push(key)
+ }
+ return entries
+ },
+ symlink(parent, newname, oldpath) {
+ var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);
+ node.link = oldpath;
+ return node
+ },
+ readlink(node) {
+ if (!FS.isLink(node.mode)) {
+ throw new FS.ErrnoError(28)
+ }
+ return node.link
+ }
+ },
+ stream_ops: {
+ read(stream, buffer, offset, length, position) {
+ var contents = stream.node.contents;
+ if (position >= stream.node.usedBytes) return 0;
+ var size = Math.min(stream.node.usedBytes - position, length);
+ assert(size >= 0);
+ if (size > 8 && contents.subarray) {
+ buffer.set(contents.subarray(position, position + size), offset)
+ } else {
+ for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]
+ }
+ return size
+ },
+ write(stream, buffer, offset, length, position, canOwn) {
+ assert(!(buffer instanceof ArrayBuffer));
+ if (!length) return 0;
+ var node = stream.node;
+ node.timestamp = Date.now();
+ if (buffer.subarray && (!node.contents || node.contents.subarray)) {
+ if (canOwn) {
+ assert(position === 0, "canOwn must imply no weird position inside the file");
+ node.contents = buffer.subarray(offset, offset + length);
+ node.usedBytes = length;
+ return length
+ } else if (node.usedBytes === 0 && position === 0) {
+ node.contents = buffer.slice(offset, offset + length);
+ node.usedBytes = length;
+ return length
+ } else if (position + length <= node.usedBytes) {
+ node.contents.set(buffer.subarray(offset, offset + length), position);
+ return length
+ }
+ }
+ MEMFS.expandFileStorage(node, position + length);
+ if (node.contents.subarray && buffer.subarray) {
+ node.contents.set(buffer.subarray(offset, offset + length), position)
+ } else {
+ for (var i = 0; i < length; i++) {
+ node.contents[position + i] = buffer[offset + i]
+ }
+ }
+ node.usedBytes = Math.max(node.usedBytes, position + length);
+ return length
+ },
+ llseek(stream, offset, whence) {
+ var position = offset;
+ if (whence === 1) {
+ position += stream.position
+ } else if (whence === 2) {
+ if (FS.isFile(stream.node.mode)) {
+ position += stream.node.usedBytes
+ }
+ }
+ if (position < 0) {
+ throw new FS.ErrnoError(28)
+ }
+ return position
+ },
+ allocate(stream, offset, length) {
+ MEMFS.expandFileStorage(stream.node, offset + length);
+ stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length)
+ },
+ mmap(stream, length, position, prot, flags) {
+ if (!FS.isFile(stream.node.mode)) {
+ throw new FS.ErrnoError(43)
+ }
+ var ptr;
+ var allocated;
+ var contents = stream.node.contents;
+ if (!(flags & 2) && contents.buffer === HEAP8.buffer) {
+ allocated = false;
+ ptr = contents.byteOffset
+ } else {
+ if (position > 0 || position + length < contents.length) {
+ if (contents.subarray) {
+ contents = contents.subarray(position, position + length)
+ } else {
+ contents = Array.prototype.slice.call(contents, position, position + length)
+ }
+ }
+ allocated = true;
+ ptr = mmapAlloc(length);
+ if (!ptr) {
+ throw new FS.ErrnoError(48)
+ }
+ HEAP8.set(contents, ptr)
+ }
+ return {
+ ptr: ptr,
+ allocated: allocated
+ }
+ },
+ msync(stream, buffer, offset, length, mmapFlags) {
+ MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);
+ return 0
+ }
+ }
+ };
+ var asyncLoad = (url, onload, onerror, noRunDep) => {
+ var dep = !noRunDep ? getUniqueRunDependency(`al ${url}`) : "";
+ readAsync(url, arrayBuffer => {
+ assert(arrayBuffer, `Loading data file "${url}" failed (no arrayBuffer).`);
+ onload(new Uint8Array(arrayBuffer));
+ if (dep) removeRunDependency(dep)
+ }, event => {
+ if (onerror) {
+ onerror()
+ } else {
+ throw `Loading data file "${url}" failed.`
+ }
+ });
+ if (dep) addRunDependency(dep)
+ };
+ var FS_createDataFile = (parent, name, fileData, canRead, canWrite, canOwn) => {
+ FS.createDataFile(parent, name, fileData, canRead, canWrite, canOwn)
+ };
+ var preloadPlugins = Module["preloadPlugins"] || [];
+ var FS_handledByPreloadPlugin = (byteArray, fullname, finish, onerror) => {
+ if (typeof Browser != "undefined") Browser.init();
+ var handled = false;
+ preloadPlugins.forEach(plugin => {
+ if (handled) return;
+ if (plugin["canHandle"](fullname)) {
+ plugin["handle"](byteArray, fullname, finish, onerror);
+ handled = true
+ }
+ });
+ return handled
+ };
+ var FS_createPreloadedFile = (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {
+ var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;
+ var dep = getUniqueRunDependency(`cp ${fullname}`);
+
+ function processData(byteArray) {
+ function finish(byteArray) {
+ preFinish?.();
+ if (!dontCreateFile) {
+ FS_createDataFile(parent, name, byteArray, canRead, canWrite, canOwn)
+ }
+ onload?.();
+ removeRunDependency(dep)
+ }
+ if (FS_handledByPreloadPlugin(byteArray, fullname, finish, () => {
+ onerror?.();
+ removeRunDependency(dep)
+ })) {
+ return
+ }
+ finish(byteArray)
+ }
+ addRunDependency(dep);
+ if (typeof url == "string") {
+ asyncLoad(url, processData, onerror)
+ } else {
+ processData(url)
+ }
+ };
+ var FS_modeStringToFlags = str => {
+ var flagModes = {
+ "r": 0,
+ "r+": 2,
+ "w": 512 | 64 | 1,
+ "w+": 512 | 64 | 2,
+ "a": 1024 | 64 | 1,
+ "a+": 1024 | 64 | 2
+ };
+ var flags = flagModes[str];
+ if (typeof flags == "undefined") {
+ throw new Error(`Unknown file open mode: ${str}`)
+ }
+ return flags
+ };
+ var FS_getMode = (canRead, canWrite) => {
+ var mode = 0;
+ if (canRead) mode |= 292 | 73;
+ if (canWrite) mode |= 146;
+ return mode
+ };
+ var ERRNO_MESSAGES = {
+ 0: "Success",
+ 1: "Arg list too long",
+ 2: "Permission denied",
+ 3: "Address already in use",
+ 4: "Address not available",
+ 5: "Address family not supported by protocol family",
+ 6: "No more processes",
+ 7: "Socket already connected",
+ 8: "Bad file number",
+ 9: "Trying to read unreadable message",
+ 10: "Mount device busy",
+ 11: "Operation canceled",
+ 12: "No children",
+ 13: "Connection aborted",
+ 14: "Connection refused",
+ 15: "Connection reset by peer",
+ 16: "File locking deadlock error",
+ 17: "Destination address required",
+ 18: "Math arg out of domain of func",
+ 19: "Quota exceeded",
+ 20: "File exists",
+ 21: "Bad address",
+ 22: "File too large",
+ 23: "Host is unreachable",
+ 24: "Identifier removed",
+ 25: "Illegal byte sequence",
+ 26: "Connection already in progress",
+ 27: "Interrupted system call",
+ 28: "Invalid argument",
+ 29: "I/O error",
+ 30: "Socket is already connected",
+ 31: "Is a directory",
+ 32: "Too many symbolic links",
+ 33: "Too many open files",
+ 34: "Too many links",
+ 35: "Message too long",
+ 36: "Multihop attempted",
+ 37: "File or path name too long",
+ 38: "Network interface is not configured",
+ 39: "Connection reset by network",
+ 40: "Network is unreachable",
+ 41: "Too many open files in system",
+ 42: "No buffer space available",
+ 43: "No such device",
+ 44: "No such file or directory",
+ 45: "Exec format error",
+ 46: "No record locks available",
+ 47: "The link has been severed",
+ 48: "Not enough core",
+ 49: "No message of desired type",
+ 50: "Protocol not available",
+ 51: "No space left on device",
+ 52: "Function not implemented",
+ 53: "Socket is not connected",
+ 54: "Not a directory",
+ 55: "Directory not empty",
+ 56: "State not recoverable",
+ 57: "Socket operation on non-socket",
+ 59: "Not a typewriter",
+ 60: "No such device or address",
+ 61: "Value too large for defined data type",
+ 62: "Previous owner died",
+ 63: "Not super-user",
+ 64: "Broken pipe",
+ 65: "Protocol error",
+ 66: "Unknown protocol",
+ 67: "Protocol wrong type for socket",
+ 68: "Math result not representable",
+ 69: "Read only file system",
+ 70: "Illegal seek",
+ 71: "No such process",
+ 72: "Stale file handle",
+ 73: "Connection timed out",
+ 74: "Text file busy",
+ 75: "Cross-device link",
+ 100: "Device not a stream",
+ 101: "Bad font file fmt",
+ 102: "Invalid slot",
+ 103: "Invalid request code",
+ 104: "No anode",
+ 105: "Block device required",
+ 106: "Channel number out of range",
+ 107: "Level 3 halted",
+ 108: "Level 3 reset",
+ 109: "Link number out of range",
+ 110: "Protocol driver not attached",
+ 111: "No CSI structure available",
+ 112: "Level 2 halted",
+ 113: "Invalid exchange",
+ 114: "Invalid request descriptor",
+ 115: "Exchange full",
+ 116: "No data (for no delay io)",
+ 117: "Timer expired",
+ 118: "Out of streams resources",
+ 119: "Machine is not on the network",
+ 120: "Package not installed",
+ 121: "The object is remote",
+ 122: "Advertise error",
+ 123: "Srmount error",
+ 124: "Communication error on send",
+ 125: "Cross mount point (not really error)",
+ 126: "Given log. name not unique",
+ 127: "f.d. invalid for this operation",
+ 128: "Remote address changed",
+ 129: "Can access a needed shared lib",
+ 130: "Accessing a corrupted shared lib",
+ 131: ".lib section in a.out corrupted",
+ 132: "Attempting to link in too many libs",
+ 133: "Attempting to exec a shared library",
+ 135: "Streams pipe error",
+ 136: "Too many users",
+ 137: "Socket type not supported",
+ 138: "Not supported",
+ 139: "Protocol family not supported",
+ 140: "Can't send after socket shutdown",
+ 141: "Too many references",
+ 142: "Host is down",
+ 148: "No medium (in tape drive)",
+ 156: "Level 2 not synchronized"
+ };
+ var ERRNO_CODES = {
+ "EPERM": 63,
+ "ENOENT": 44,
+ "ESRCH": 71,
+ "EINTR": 27,
+ "EIO": 29,
+ "ENXIO": 60,
+ "E2BIG": 1,
+ "ENOEXEC": 45,
+ "EBADF": 8,
+ "ECHILD": 12,
+ "EAGAIN": 6,
+ "EWOULDBLOCK": 6,
+ "ENOMEM": 48,
+ "EACCES": 2,
+ "EFAULT": 21,
+ "ENOTBLK": 105,
+ "EBUSY": 10,
+ "EEXIST": 20,
+ "EXDEV": 75,
+ "ENODEV": 43,
+ "ENOTDIR": 54,
+ "EISDIR": 31,
+ "EINVAL": 28,
+ "ENFILE": 41,
+ "EMFILE": 33,
+ "ENOTTY": 59,
+ "ETXTBSY": 74,
+ "EFBIG": 22,
+ "ENOSPC": 51,
+ "ESPIPE": 70,
+ "EROFS": 69,
+ "EMLINK": 34,
+ "EPIPE": 64,
+ "EDOM": 18,
+ "ERANGE": 68,
+ "ENOMSG": 49,
+ "EIDRM": 24,
+ "ECHRNG": 106,
+ "EL2NSYNC": 156,
+ "EL3HLT": 107,
+ "EL3RST": 108,
+ "ELNRNG": 109,
+ "EUNATCH": 110,
+ "ENOCSI": 111,
+ "EL2HLT": 112,
+ "EDEADLK": 16,
+ "ENOLCK": 46,
+ "EBADE": 113,
+ "EBADR": 114,
+ "EXFULL": 115,
+ "ENOANO": 104,
+ "EBADRQC": 103,
+ "EBADSLT": 102,
+ "EDEADLOCK": 16,
+ "EBFONT": 101,
+ "ENOSTR": 100,
+ "ENODATA": 116,
+ "ETIME": 117,
+ "ENOSR": 118,
+ "ENONET": 119,
+ "ENOPKG": 120,
+ "EREMOTE": 121,
+ "ENOLINK": 47,
+ "EADV": 122,
+ "ESRMNT": 123,
+ "ECOMM": 124,
+ "EPROTO": 65,
+ "EMULTIHOP": 36,
+ "EDOTDOT": 125,
+ "EBADMSG": 9,
+ "ENOTUNIQ": 126,
+ "EBADFD": 127,
+ "EREMCHG": 128,
+ "ELIBACC": 129,
+ "ELIBBAD": 130,
+ "ELIBSCN": 131,
+ "ELIBMAX": 132,
+ "ELIBEXEC": 133,
+ "ENOSYS": 52,
+ "ENOTEMPTY": 55,
+ "ENAMETOOLONG": 37,
+ "ELOOP": 32,
+ "EOPNOTSUPP": 138,
+ "EPFNOSUPPORT": 139,
+ "ECONNRESET": 15,
+ "ENOBUFS": 42,
+ "EAFNOSUPPORT": 5,
+ "EPROTOTYPE": 67,
+ "ENOTSOCK": 57,
+ "ENOPROTOOPT": 50,
+ "ESHUTDOWN": 140,
+ "ECONNREFUSED": 14,
+ "EADDRINUSE": 3,
+ "ECONNABORTED": 13,
+ "ENETUNREACH": 40,
+ "ENETDOWN": 38,
+ "ETIMEDOUT": 73,
+ "EHOSTDOWN": 142,
+ "EHOSTUNREACH": 23,
+ "EINPROGRESS": 26,
+ "EALREADY": 7,
+ "EDESTADDRREQ": 17,
+ "EMSGSIZE": 35,
+ "EPROTONOSUPPORT": 66,
+ "ESOCKTNOSUPPORT": 137,
+ "EADDRNOTAVAIL": 4,
+ "ENETRESET": 39,
+ "EISCONN": 30,
+ "ENOTCONN": 53,
+ "ETOOMANYREFS": 141,
+ "EUSERS": 136,
+ "EDQUOT": 19,
+ "ESTALE": 72,
+ "ENOTSUP": 138,
+ "ENOMEDIUM": 148,
+ "EILSEQ": 25,
+ "EOVERFLOW": 61,
+ "ECANCELED": 11,
+ "ENOTRECOVERABLE": 56,
+ "EOWNERDEAD": 62,
+ "ESTRPIPE": 135
+ };
+ var FS = {
+ root: null,
+ mounts: [],
+ devices: {},
+ streams: [],
+ nextInode: 1,
+ nameTable: null,
+ currentPath: "/",
+ initialized: false,
+ ignorePermissions: true,
+ ErrnoError: class extends Error {
+ constructor(errno) {
+ super(ERRNO_MESSAGES[errno]);
+ this.name = "ErrnoError";
+ this.errno = errno;
+ for (var key in ERRNO_CODES) {
+ if (ERRNO_CODES[key] === errno) {
+ this.code = key;
+ break
+ }
+ }
+ }
+ },
+ genericErrors: {},
+ filesystems: null,
+ syncFSRequests: 0,
+ FSStream: class {
+ constructor() {
+ this.shared = {}
+ }
+ get object() {
+ return this.node
+ }
+ set object(val) {
+ this.node = val
+ }
+ get isRead() {
+ return (this.flags & 2097155) !== 1
+ }
+ get isWrite() {
+ return (this.flags & 2097155) !== 0
+ }
+ get isAppend() {
+ return this.flags & 1024
+ }
+ get flags() {
+ return this.shared.flags
+ }
+ set flags(val) {
+ this.shared.flags = val
+ }
+ get position() {
+ return this.shared.position
+ }
+ set position(val) {
+ this.shared.position = val
+ }
+ },
+ FSNode: class {
+ constructor(parent, name, mode, rdev) {
+ if (!parent) {
+ parent = this
+ }
+ this.parent = parent;
+ this.mount = parent.mount;
+ this.mounted = null;
+ this.id = FS.nextInode++;
+ this.name = name;
+ this.mode = mode;
+ this.node_ops = {};
+ this.stream_ops = {};
+ this.rdev = rdev;
+ this.readMode = 292 | 73;
+ this.writeMode = 146
+ }
+ get read() {
+ return (this.mode & this.readMode) === this.readMode
+ }
+ set read(val) {
+ val ? this.mode |= this.readMode : this.mode &= ~this.readMode
+ }
+ get write() {
+ return (this.mode & this.writeMode) === this.writeMode
+ }
+ set write(val) {
+ val ? this.mode |= this.writeMode : this.mode &= ~this.writeMode
+ }
+ get isFolder() {
+ return FS.isDir(this.mode)
+ }
+ get isDevice() {
+ return FS.isChrdev(this.mode)
+ }
+ },
+ lookupPath(path, opts = {}) {
+ path = PATH_FS.resolve(path);
+ if (!path) return {
+ path: "",
+ node: null
+ };
+ var defaults = {
+ follow_mount: true,
+ recurse_count: 0
+ };
+ opts = Object.assign(defaults, opts);
+ if (opts.recurse_count > 8) {
+ throw new FS.ErrnoError(32)
+ }
+ var parts = path.split("/").filter(p => !!p);
+ var current = FS.root;
+ var current_path = "/";
+ for (var i = 0; i < parts.length; i++) {
+ var islast = i === parts.length - 1;
+ if (islast && opts.parent) {
+ break
+ }
+ current = FS.lookupNode(current, parts[i]);
+ current_path = PATH.join2(current_path, parts[i]);
+ if (FS.isMountpoint(current)) {
+ if (!islast || islast && opts.follow_mount) {
+ current = current.mounted.root
+ }
+ }
+ if (!islast || opts.follow) {
+ var count = 0;
+ while (FS.isLink(current.mode)) {
+ var link = FS.readlink(current_path);
+ current_path = PATH_FS.resolve(PATH.dirname(current_path), link);
+ var lookup = FS.lookupPath(current_path, {
+ recurse_count: opts.recurse_count + 1
+ });
+ current = lookup.node;
+ if (count++ > 40) {
+ throw new FS.ErrnoError(32)
+ }
+ }
+ }
+ }
+ return {
+ path: current_path,
+ node: current
+ }
+ },
+ getPath(node) {
+ var path;
+ while (true) {
+ if (FS.isRoot(node)) {
+ var mount = node.mount.mountpoint;
+ if (!path) return mount;
+ return mount[mount.length - 1] !== "/" ? `${mount}/${path}` : mount + path
+ }
+ path = path ? `${node.name}/${path}` : node.name;
+ node = node.parent
+ }
+ },
+ hashName(parentid, name) {
+ var hash = 0;
+ for (var i = 0; i < name.length; i++) {
+ hash = (hash << 5) - hash + name.charCodeAt(i) | 0
+ }
+ return (parentid + hash >>> 0) % FS.nameTable.length
+ },
+ hashAddNode(node) {
+ var hash = FS.hashName(node.parent.id, node.name);
+ node.name_next = FS.nameTable[hash];
+ FS.nameTable[hash] = node
+ },
+ hashRemoveNode(node) {
+ var hash = FS.hashName(node.parent.id, node.name);
+ if (FS.nameTable[hash] === node) {
+ FS.nameTable[hash] = node.name_next
+ } else {
+ var current = FS.nameTable[hash];
+ while (current) {
+ if (current.name_next === node) {
+ current.name_next = node.name_next;
+ break
+ }
+ current = current.name_next
+ }
+ }
+ },
+ lookupNode(parent, name) {
+ var errCode = FS.mayLookup(parent);
+ if (errCode) {
+ throw new FS.ErrnoError(errCode)
+ }
+ var hash = FS.hashName(parent.id, name);
+ for (var node = FS.nameTable[hash]; node; node = node.name_next) {
+ var nodeName = node.name;
+ if (node.parent.id === parent.id && nodeName === name) {
+ return node
+ }
+ }
+ return FS.lookup(parent, name)
+ },
+ createNode(parent, name, mode, rdev) {
+ assert(typeof parent == "object");
+ var node = new FS.FSNode(parent, name, mode, rdev);
+ FS.hashAddNode(node);
+ return node
+ },
+ destroyNode(node) {
+ FS.hashRemoveNode(node)
+ },
+ isRoot(node) {
+ return node === node.parent
+ },
+ isMountpoint(node) {
+ return !!node.mounted
+ },
+ isFile(mode) {
+ return (mode & 61440) === 32768
+ },
+ isDir(mode) {
+ return (mode & 61440) === 16384
+ },
+ isLink(mode) {
+ return (mode & 61440) === 40960
+ },
+ isChrdev(mode) {
+ return (mode & 61440) === 8192
+ },
+ isBlkdev(mode) {
+ return (mode & 61440) === 24576
+ },
+ isFIFO(mode) {
+ return (mode & 61440) === 4096
+ },
+ isSocket(mode) {
+ return (mode & 49152) === 49152
+ },
+ flagsToPermissionString(flag) {
+ var perms = ["r", "w", "rw"][flag & 3];
+ if (flag & 512) {
+ perms += "w"
+ }
+ return perms
+ },
+ nodePermissions(node, perms) {
+ if (FS.ignorePermissions) {
+ return 0
+ }
+ if (perms.includes("r") && !(node.mode & 292)) {
+ return 2
+ } else if (perms.includes("w") && !(node.mode & 146)) {
+ return 2
+ } else if (perms.includes("x") && !(node.mode & 73)) {
+ return 2
+ }
+ return 0
+ },
+ mayLookup(dir) {
+ if (!FS.isDir(dir.mode)) return 54;
+ var errCode = FS.nodePermissions(dir, "x");
+ if (errCode) return errCode;
+ if (!dir.node_ops.lookup) return 2;
+ return 0
+ },
+ mayCreate(dir, name) {
+ try {
+ var node = FS.lookupNode(dir, name);
+ return 20
+ } catch (e) {}
+ return FS.nodePermissions(dir, "wx")
+ },
+ mayDelete(dir, name, isdir) {
+ var node;
+ try {
+ node = FS.lookupNode(dir, name)
+ } catch (e) {
+ return e.errno
+ }
+ var errCode = FS.nodePermissions(dir, "wx");
+ if (errCode) {
+ return errCode
+ }
+ if (isdir) {
+ if (!FS.isDir(node.mode)) {
+ return 54
+ }
+ if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
+ return 10
+ }
+ } else {
+ if (FS.isDir(node.mode)) {
+ return 31
+ }
+ }
+ return 0
+ },
+ mayOpen(node, flags) {
+ if (!node) {
+ return 44
+ }
+ if (FS.isLink(node.mode)) {
+ return 32
+ } else if (FS.isDir(node.mode)) {
+ if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) {
+ return 31
+ }
+ }
+ return FS.nodePermissions(node, FS.flagsToPermissionString(flags))
+ },
+ MAX_OPEN_FDS: 4096,
+ nextfd() {
+ for (var fd = 0; fd <= FS.MAX_OPEN_FDS; fd++) {
+ if (!FS.streams[fd]) {
+ return fd
+ }
+ }
+ throw new FS.ErrnoError(33)
+ },
+ getStreamChecked(fd) {
+ var stream = FS.getStream(fd);
+ if (!stream) {
+ throw new FS.ErrnoError(8)
+ }
+ return stream
+ },
+ getStream: fd => FS.streams[fd],
+ createStream(stream, fd = -1) {
+ stream = Object.assign(new FS.FSStream, stream);
+ if (fd == -1) {
+ fd = FS.nextfd()
+ }
+ stream.fd = fd;
+ FS.streams[fd] = stream;
+ return stream
+ },
+ closeStream(fd) {
+ FS.streams[fd] = null
+ },
+ dupStream(origStream, fd = -1) {
+ var stream = FS.createStream(origStream, fd);
+ stream.stream_ops?.dup?.(stream);
+ return stream
+ },
+ chrdev_stream_ops: {
+ open(stream) {
+ var device = FS.getDevice(stream.node.rdev);
+ stream.stream_ops = device.stream_ops;
+ stream.stream_ops.open?.(stream)
+ },
+ llseek() {
+ throw new FS.ErrnoError(70)
+ }
+ },
+ major: dev => dev >> 8,
+ minor: dev => dev & 255,
+ makedev: (ma, mi) => ma << 8 | mi,
+ registerDevice(dev, ops) {
+ FS.devices[dev] = {
+ stream_ops: ops
+ }
+ },
+ getDevice: dev => FS.devices[dev],
+ getMounts(mount) {
+ var mounts = [];
+ var check = [mount];
+ while (check.length) {
+ var m = check.pop();
+ mounts.push(m);
+ check.push(...m.mounts)
+ }
+ return mounts
+ },
+ syncfs(populate, callback) {
+ if (typeof populate == "function") {
+ callback = populate;
+ populate = false
+ }
+ FS.syncFSRequests++;
+ if (FS.syncFSRequests > 1) {
+ err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)
+ }
+ var mounts = FS.getMounts(FS.root.mount);
+ var completed = 0;
+
+ function doCallback(errCode) {
+ assert(FS.syncFSRequests > 0);
+ FS.syncFSRequests--;
+ return callback(errCode)
+ }
+
+ function done(errCode) {
+ if (errCode) {
+ if (!done.errored) {
+ done.errored = true;
+ return doCallback(errCode)
+ }
+ return
+ }
+ if (++completed >= mounts.length) {
+ doCallback(null)
+ }
+ }
+ mounts.forEach(mount => {
+ if (!mount.type.syncfs) {
+ return done(null)
+ }
+ mount.type.syncfs(mount, populate, done)
+ })
+ },
+ mount(type, opts, mountpoint) {
+ if (typeof type == "string") {
+ throw type
+ }
+ var root = mountpoint === "/";
+ var pseudo = !mountpoint;
+ var node;
+ if (root && FS.root) {
+ throw new FS.ErrnoError(10)
+ } else if (!root && !pseudo) {
+ var lookup = FS.lookupPath(mountpoint, {
+ follow_mount: false
+ });
+ mountpoint = lookup.path;
+ node = lookup.node;
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(10)
+ }
+ if (!FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(54)
+ }
+ }
+ var mount = {
+ type: type,
+ opts: opts,
+ mountpoint: mountpoint,
+ mounts: []
+ };
+ var mountRoot = type.mount(mount);
+ mountRoot.mount = mount;
+ mount.root = mountRoot;
+ if (root) {
+ FS.root = mountRoot
+ } else if (node) {
+ node.mounted = mount;
+ if (node.mount) {
+ node.mount.mounts.push(mount)
+ }
+ }
+ return mountRoot
+ },
+ unmount(mountpoint) {
+ var lookup = FS.lookupPath(mountpoint, {
+ follow_mount: false
+ });
+ if (!FS.isMountpoint(lookup.node)) {
+ throw new FS.ErrnoError(28)
+ }
+ var node = lookup.node;
+ var mount = node.mounted;
+ var mounts = FS.getMounts(mount);
+ Object.keys(FS.nameTable).forEach(hash => {
+ var current = FS.nameTable[hash];
+ while (current) {
+ var next = current.name_next;
+ if (mounts.includes(current.mount)) {
+ FS.destroyNode(current)
+ }
+ current = next
+ }
+ });
+ node.mounted = null;
+ var idx = node.mount.mounts.indexOf(mount);
+ assert(idx !== -1);
+ node.mount.mounts.splice(idx, 1)
+ },
+ lookup(parent, name) {
+ return parent.node_ops.lookup(parent, name)
+ },
+ mknod(path, mode, dev) {
+ var lookup = FS.lookupPath(path, {
+ parent: true
+ });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ if (!name || name === "." || name === "..") {
+ throw new FS.ErrnoError(28)
+ }
+ var errCode = FS.mayCreate(parent, name);
+ if (errCode) {
+ throw new FS.ErrnoError(errCode)
+ }
+ if (!parent.node_ops.mknod) {
+ throw new FS.ErrnoError(63)
+ }
+ return parent.node_ops.mknod(parent, name, mode, dev)
+ },
+ create(path, mode) {
+ mode = mode !== undefined ? mode : 438;
+ mode &= 4095;
+ mode |= 32768;
+ return FS.mknod(path, mode, 0)
+ },
+ mkdir(path, mode) {
+ mode = mode !== undefined ? mode : 511;
+ mode &= 511 | 512;
+ mode |= 16384;
+ return FS.mknod(path, mode, 0)
+ },
+ mkdirTree(path, mode) {
+ var dirs = path.split("/");
+ var d = "";
+ for (var i = 0; i < dirs.length; ++i) {
+ if (!dirs[i]) continue;
+ d += "/" + dirs[i];
+ try {
+ FS.mkdir(d, mode)
+ } catch (e) {
+ if (e.errno != 20) throw e
+ }
+ }
+ },
+ mkdev(path, mode, dev) {
+ if (typeof dev == "undefined") {
+ dev = mode;
+ mode = 438
+ }
+ mode |= 8192;
+ return FS.mknod(path, mode, dev)
+ },
+ symlink(oldpath, newpath) {
+ if (!PATH_FS.resolve(oldpath)) {
+ throw new FS.ErrnoError(44)
+ }
+ var lookup = FS.lookupPath(newpath, {
+ parent: true
+ });
+ var parent = lookup.node;
+ if (!parent) {
+ throw new FS.ErrnoError(44)
+ }
+ var newname = PATH.basename(newpath);
+ var errCode = FS.mayCreate(parent, newname);
+ if (errCode) {
+ throw new FS.ErrnoError(errCode)
+ }
+ if (!parent.node_ops.symlink) {
+ throw new FS.ErrnoError(63)
+ }
+ return parent.node_ops.symlink(parent, newname, oldpath)
+ },
+ rename(old_path, new_path) {
+ var old_dirname = PATH.dirname(old_path);
+ var new_dirname = PATH.dirname(new_path);
+ var old_name = PATH.basename(old_path);
+ var new_name = PATH.basename(new_path);
+ var lookup, old_dir, new_dir;
+ lookup = FS.lookupPath(old_path, {
+ parent: true
+ });
+ old_dir = lookup.node;
+ lookup = FS.lookupPath(new_path, {
+ parent: true
+ });
+ new_dir = lookup.node;
+ if (!old_dir || !new_dir) throw new FS.ErrnoError(44);
+ if (old_dir.mount !== new_dir.mount) {
+ throw new FS.ErrnoError(75)
+ }
+ var old_node = FS.lookupNode(old_dir, old_name);
+ var relative = PATH_FS.relative(old_path, new_dirname);
+ if (relative.charAt(0) !== ".") {
+ throw new FS.ErrnoError(28)
+ }
+ relative = PATH_FS.relative(new_path, old_dirname);
+ if (relative.charAt(0) !== ".") {
+ throw new FS.ErrnoError(55)
+ }
+ var new_node;
+ try {
+ new_node = FS.lookupNode(new_dir, new_name)
+ } catch (e) {}
+ if (old_node === new_node) {
+ return
+ }
+ var isdir = FS.isDir(old_node.mode);
+ var errCode = FS.mayDelete(old_dir, old_name, isdir);
+ if (errCode) {
+ throw new FS.ErrnoError(errCode)
+ }
+ errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);
+ if (errCode) {
+ throw new FS.ErrnoError(errCode)
+ }
+ if (!old_dir.node_ops.rename) {
+ throw new FS.ErrnoError(63)
+ }
+ if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {
+ throw new FS.ErrnoError(10)
+ }
+ if (new_dir !== old_dir) {
+ errCode = FS.nodePermissions(old_dir, "w");
+ if (errCode) {
+ throw new FS.ErrnoError(errCode)
+ }
+ }
+ FS.hashRemoveNode(old_node);
+ try {
+ old_dir.node_ops.rename(old_node, new_dir, new_name)
+ } catch (e) {
+ throw e
+ } finally {
+ FS.hashAddNode(old_node)
+ }
+ },
+ rmdir(path) {
+ var lookup = FS.lookupPath(path, {
+ parent: true
+ });
+ var parent = lookup.node;
+ var name = PATH.basename(path);
+ var node = FS.lookupNode(parent, name);
+ var errCode = FS.mayDelete(parent, name, true);
+ if (errCode) {
+ throw new FS.ErrnoError(errCode)
+ }
+ if (!parent.node_ops.rmdir) {
+ throw new FS.ErrnoError(63)
+ }
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(10)
+ }
+ parent.node_ops.rmdir(parent, name);
+ FS.destroyNode(node)
+ },
+ readdir(path) {
+ var lookup = FS.lookupPath(path, {
+ follow: true
+ });
+ var node = lookup.node;
+ if (!node.node_ops.readdir) {
+ throw new FS.ErrnoError(54)
+ }
+ return node.node_ops.readdir(node)
+ },
+ unlink(path) {
+ var lookup = FS.lookupPath(path, {
+ parent: true
+ });
+ var parent = lookup.node;
+ if (!parent) {
+ throw new FS.ErrnoError(44)
+ }
+ var name = PATH.basename(path);
+ var node = FS.lookupNode(parent, name);
+ var errCode = FS.mayDelete(parent, name, false);
+ if (errCode) {
+ throw new FS.ErrnoError(errCode)
+ }
+ if (!parent.node_ops.unlink) {
+ throw new FS.ErrnoError(63)
+ }
+ if (FS.isMountpoint(node)) {
+ throw new FS.ErrnoError(10)
+ }
+ parent.node_ops.unlink(parent, name);
+ FS.destroyNode(node)
+ },
+ readlink(path) {
+ var lookup = FS.lookupPath(path);
+ var link = lookup.node;
+ if (!link) {
+ throw new FS.ErrnoError(44)
+ }
+ if (!link.node_ops.readlink) {
+ throw new FS.ErrnoError(28)
+ }
+ return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link))
+ },
+ stat(path, dontFollow) {
+ var lookup = FS.lookupPath(path, {
+ follow: !dontFollow
+ });
+ var node = lookup.node;
+ if (!node) {
+ throw new FS.ErrnoError(44)
+ }
+ if (!node.node_ops.getattr) {
+ throw new FS.ErrnoError(63)
+ }
+ return node.node_ops.getattr(node)
+ },
+ lstat(path) {
+ return FS.stat(path, true)
+ },
+ chmod(path, mode, dontFollow) {
+ var node;
+ if (typeof path == "string") {
+ var lookup = FS.lookupPath(path, {
+ follow: !dontFollow
+ });
+ node = lookup.node
+ } else {
+ node = path
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(63)
+ }
+ node.node_ops.setattr(node, {
+ mode: mode & 4095 | node.mode & ~4095,
+ timestamp: Date.now()
+ })
+ },
+ lchmod(path, mode) {
+ FS.chmod(path, mode, true)
+ },
+ fchmod(fd, mode) {
+ var stream = FS.getStreamChecked(fd);
+ FS.chmod(stream.node, mode)
+ },
+ chown(path, uid, gid, dontFollow) {
+ var node;
+ if (typeof path == "string") {
+ var lookup = FS.lookupPath(path, {
+ follow: !dontFollow
+ });
+ node = lookup.node
+ } else {
+ node = path
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(63)
+ }
+ node.node_ops.setattr(node, {
+ timestamp: Date.now()
+ })
+ },
+ lchown(path, uid, gid) {
+ FS.chown(path, uid, gid, true)
+ },
+ fchown(fd, uid, gid) {
+ var stream = FS.getStreamChecked(fd);
+ FS.chown(stream.node, uid, gid)
+ },
+ truncate(path, len) {
+ if (len < 0) {
+ throw new FS.ErrnoError(28)
+ }
+ var node;
+ if (typeof path == "string") {
+ var lookup = FS.lookupPath(path, {
+ follow: true
+ });
+ node = lookup.node
+ } else {
+ node = path
+ }
+ if (!node.node_ops.setattr) {
+ throw new FS.ErrnoError(63)
+ }
+ if (FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(31)
+ }
+ if (!FS.isFile(node.mode)) {
+ throw new FS.ErrnoError(28)
+ }
+ var errCode = FS.nodePermissions(node, "w");
+ if (errCode) {
+ throw new FS.ErrnoError(errCode)
+ }
+ node.node_ops.setattr(node, {
+ size: len,
+ timestamp: Date.now()
+ })
+ },
+ ftruncate(fd, len) {
+ var stream = FS.getStreamChecked(fd);
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(28)
+ }
+ FS.truncate(stream.node, len)
+ },
+ utime(path, atime, mtime) {
+ var lookup = FS.lookupPath(path, {
+ follow: true
+ });
+ var node = lookup.node;
+ node.node_ops.setattr(node, {
+ timestamp: Math.max(atime, mtime)
+ })
+ },
+ open(path, flags, mode) {
+ if (path === "") {
+ throw new FS.ErrnoError(44)
+ }
+ flags = typeof flags == "string" ? FS_modeStringToFlags(flags) : flags;
+ mode = typeof mode == "undefined" ? 438 : mode;
+ if (flags & 64) {
+ mode = mode & 4095 | 32768
+ } else {
+ mode = 0
+ }
+ var node;
+ if (typeof path == "object") {
+ node = path
+ } else {
+ path = PATH.normalize(path);
+ try {
+ var lookup = FS.lookupPath(path, {
+ follow: !(flags & 131072)
+ });
+ node = lookup.node
+ } catch (e) {}
+ }
+ var created = false;
+ if (flags & 64) {
+ if (node) {
+ if (flags & 128) {
+ throw new FS.ErrnoError(20)
+ }
+ } else {
+ node = FS.mknod(path, mode, 0);
+ created = true
+ }
+ }
+ if (!node) {
+ throw new FS.ErrnoError(44)
+ }
+ if (FS.isChrdev(node.mode)) {
+ flags &= ~512
+ }
+ if (flags & 65536 && !FS.isDir(node.mode)) {
+ throw new FS.ErrnoError(54)
+ }
+ if (!created) {
+ var errCode = FS.mayOpen(node, flags);
+ if (errCode) {
+ throw new FS.ErrnoError(errCode)
+ }
+ }
+ if (flags & 512 && !created) {
+ FS.truncate(node, 0)
+ }
+ flags &= ~(128 | 512 | 131072);
+ var stream = FS.createStream({
+ node: node,
+ path: FS.getPath(node),
+ flags: flags,
+ seekable: true,
+ position: 0,
+ stream_ops: node.stream_ops,
+ ungotten: [],
+ error: false
+ });
+ if (stream.stream_ops.open) {
+ stream.stream_ops.open(stream)
+ }
+ if (Module["logReadFiles"] && !(flags & 1)) {
+ if (!FS.readFiles) FS.readFiles = {};
+ if (!(path in FS.readFiles)) {
+ FS.readFiles[path] = 1
+ }
+ }
+ return stream
+ },
+ close(stream) {
+ if (FS.isClosed(stream)) {
+ throw new FS.ErrnoError(8)
+ }
+ if (stream.getdents) stream.getdents = null;
+ try {
+ if (stream.stream_ops.close) {
+ stream.stream_ops.close(stream)
+ }
+ } catch (e) {
+ throw e
+ } finally {
+ FS.closeStream(stream.fd)
+ }
+ stream.fd = null
+ },
+ isClosed(stream) {
+ return stream.fd === null
+ },
+ llseek(stream, offset, whence) {
+ if (FS.isClosed(stream)) {
+ throw new FS.ErrnoError(8)
+ }
+ if (!stream.seekable || !stream.stream_ops.llseek) {
+ throw new FS.ErrnoError(70)
+ }
+ if (whence != 0 && whence != 1 && whence != 2) {
+ throw new FS.ErrnoError(28)
+ }
+ stream.position = stream.stream_ops.llseek(stream, offset, whence);
+ stream.ungotten = [];
+ return stream.position
+ },
+ read(stream, buffer, offset, length, position) {
+ assert(offset >= 0);
+ if (length < 0 || position < 0) {
+ throw new FS.ErrnoError(28)
+ }
+ if (FS.isClosed(stream)) {
+ throw new FS.ErrnoError(8)
+ }
+ if ((stream.flags & 2097155) === 1) {
+ throw new FS.ErrnoError(8)
+ }
+ if (FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(31)
+ }
+ if (!stream.stream_ops.read) {
+ throw new FS.ErrnoError(28)
+ }
+ var seeking = typeof position != "undefined";
+ if (!seeking) {
+ position = stream.position
+ } else if (!stream.seekable) {
+ throw new FS.ErrnoError(70)
+ }
+ var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
+ if (!seeking) stream.position += bytesRead;
+ return bytesRead
+ },
+ write(stream, buffer, offset, length, position, canOwn) {
+ assert(offset >= 0);
+ if (length < 0 || position < 0) {
+ throw new FS.ErrnoError(28)
+ }
+ if (FS.isClosed(stream)) {
+ throw new FS.ErrnoError(8)
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(8)
+ }
+ if (FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(31)
+ }
+ if (!stream.stream_ops.write) {
+ throw new FS.ErrnoError(28)
+ }
+ if (stream.seekable && stream.flags & 1024) {
+ FS.llseek(stream, 0, 2)
+ }
+ var seeking = typeof position != "undefined";
+ if (!seeking) {
+ position = stream.position
+ } else if (!stream.seekable) {
+ throw new FS.ErrnoError(70)
+ }
+ var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
+ if (!seeking) stream.position += bytesWritten;
+ return bytesWritten
+ },
+ allocate(stream, offset, length) {
+ if (FS.isClosed(stream)) {
+ throw new FS.ErrnoError(8)
+ }
+ if (offset < 0 || length <= 0) {
+ throw new FS.ErrnoError(28)
+ }
+ if ((stream.flags & 2097155) === 0) {
+ throw new FS.ErrnoError(8)
+ }
+ if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {
+ throw new FS.ErrnoError(43)
+ }
+ if (!stream.stream_ops.allocate) {
+ throw new FS.ErrnoError(138)
+ }
+ stream.stream_ops.allocate(stream, offset, length)
+ },
+ mmap(stream, length, position, prot, flags) {
+ if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {
+ throw new FS.ErrnoError(2)
+ }
+ if ((stream.flags & 2097155) === 1) {
+ throw new FS.ErrnoError(2)
+ }
+ if (!stream.stream_ops.mmap) {
+ throw new FS.ErrnoError(43)
+ }
+ return stream.stream_ops.mmap(stream, length, position, prot, flags)
+ },
+ msync(stream, buffer, offset, length, mmapFlags) {
+ assert(offset >= 0);
+ if (!stream.stream_ops.msync) {
+ return 0
+ }
+ return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags)
+ },
+ ioctl(stream, cmd, arg) {
+ if (!stream.stream_ops.ioctl) {
+ throw new FS.ErrnoError(59)
+ }
+ return stream.stream_ops.ioctl(stream, cmd, arg)
+ },
+ readFile(path, opts = {}) {
+ opts.flags = opts.flags || 0;
+ opts.encoding = opts.encoding || "binary";
+ if (opts.encoding !== "utf8" && opts.encoding !== "binary") {
+ throw new Error(`Invalid encoding type "${opts.encoding}"`)
+ }
+ var ret;
+ var stream = FS.open(path, opts.flags);
+ var stat = FS.stat(path);
+ var length = stat.size;
+ var buf = new Uint8Array(length);
+ FS.read(stream, buf, 0, length, 0);
+ if (opts.encoding === "utf8") {
+ ret = UTF8ArrayToString(buf, 0)
+ } else if (opts.encoding === "binary") {
+ ret = buf
+ }
+ FS.close(stream);
+ return ret
+ },
+ writeFile(path, data, opts = {}) {
+ opts.flags = opts.flags || 577;
+ var stream = FS.open(path, opts.flags, opts.mode);
+ if (typeof data == "string") {
+ var buf = new Uint8Array(lengthBytesUTF8(data) + 1);
+ var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
+ FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn)
+ } else if (ArrayBuffer.isView(data)) {
+ FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn)
+ } else {
+ throw new Error("Unsupported data type")
+ }
+ FS.close(stream)
+ },
+ cwd: () => FS.currentPath,
+ chdir(path) {
+ var lookup = FS.lookupPath(path, {
+ follow: true
+ });
+ if (lookup.node === null) {
+ throw new FS.ErrnoError(44)
+ }
+ if (!FS.isDir(lookup.node.mode)) {
+ throw new FS.ErrnoError(54)
+ }
+ var errCode = FS.nodePermissions(lookup.node, "x");
+ if (errCode) {
+ throw new FS.ErrnoError(errCode)
+ }
+ FS.currentPath = lookup.path
+ },
+ createDefaultDirectories() {
+ FS.mkdir("/tmp");
+ FS.mkdir("/home");
+ FS.mkdir("/home/web_user")
+ },
+ createDefaultDevices() {
+ FS.mkdir("/dev");
+ FS.registerDevice(FS.makedev(1, 3), {
+ read: () => 0,
+ write: (stream, buffer, offset, length, pos) => length
+ });
+ FS.mkdev("/dev/null", FS.makedev(1, 3));
+ TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
+ TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
+ FS.mkdev("/dev/tty", FS.makedev(5, 0));
+ FS.mkdev("/dev/tty1", FS.makedev(6, 0));
+ var randomBuffer = new Uint8Array(1024),
+ randomLeft = 0;
+ var randomByte = () => {
+ if (randomLeft === 0) {
+ randomLeft = randomFill(randomBuffer).byteLength
+ }
+ return randomBuffer[--randomLeft]
+ };
+ FS.createDevice("/dev", "random", randomByte);
+ FS.createDevice("/dev", "urandom", randomByte);
+ FS.mkdir("/dev/shm");
+ FS.mkdir("/dev/shm/tmp")
+ },
+ createSpecialDirectories() {
+ FS.mkdir("/proc");
+ var proc_self = FS.mkdir("/proc/self");
+ FS.mkdir("/proc/self/fd");
+ FS.mount({
+ mount() {
+ var node = FS.createNode(proc_self, "fd", 16384 | 511, 73);
+ node.node_ops = {
+ lookup(parent, name) {
+ var fd = +name;
+ var stream = FS.getStreamChecked(fd);
+ var ret = {
+ parent: null,
+ mount: {
+ mountpoint: "fake"
+ },
+ node_ops: {
+ readlink: () => stream.path
+ }
+ };
+ ret.parent = ret;
+ return ret
+ }
+ };
+ return node
+ }
+ }, {}, "/proc/self/fd")
+ },
+ createStandardStreams() {
+ if (Module["stdin"]) {
+ FS.createDevice("/dev", "stdin", Module["stdin"])
+ } else {
+ FS.symlink("/dev/tty", "/dev/stdin")
+ }
+ if (Module["stdout"]) {
+ FS.createDevice("/dev", "stdout", null, Module["stdout"])
+ } else {
+ FS.symlink("/dev/tty", "/dev/stdout")
+ }
+ if (Module["stderr"]) {
+ FS.createDevice("/dev", "stderr", null, Module["stderr"])
+ } else {
+ FS.symlink("/dev/tty1", "/dev/stderr")
+ }
+ var stdin = FS.open("/dev/stdin", 0);
+ var stdout = FS.open("/dev/stdout", 1);
+ var stderr = FS.open("/dev/stderr", 1);
+ assert(stdin.fd === 0, `invalid handle for stdin (${stdin.fd})`);
+ assert(stdout.fd === 1, `invalid handle for stdout (${stdout.fd})`);
+ assert(stderr.fd === 2, `invalid handle for stderr (${stderr.fd})`)
+ },
+ staticInit() {
+ [44].forEach(code => {
+ FS.genericErrors[code] = new FS.ErrnoError(code);
+ FS.genericErrors[code].stack = ""
+ });
+ FS.nameTable = new Array(4096);
+ FS.mount(MEMFS, {}, "/");
+ FS.createDefaultDirectories();
+ FS.createDefaultDevices();
+ FS.createSpecialDirectories();
+ FS.filesystems = {
+ "MEMFS": MEMFS
+ }
+ },
+ init(input, output, error) {
+ assert(!FS.init.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");
+ FS.init.initialized = true;
+ Module["stdin"] = input || Module["stdin"];
+ Module["stdout"] = output || Module["stdout"];
+ Module["stderr"] = error || Module["stderr"];
+ FS.createStandardStreams()
+ },
+ quit() {
+ FS.init.initialized = false;
+ _fflush(0);
+ for (var i = 0; i < FS.streams.length; i++) {
+ var stream = FS.streams[i];
+ if (!stream) {
+ continue
+ }
+ FS.close(stream)
+ }
+ },
+ findObject(path, dontResolveLastLink) {
+ var ret = FS.analyzePath(path, dontResolveLastLink);
+ if (!ret.exists) {
+ return null
+ }
+ return ret.object
+ },
+ analyzePath(path, dontResolveLastLink) {
+ try {
+ var lookup = FS.lookupPath(path, {
+ follow: !dontResolveLastLink
+ });
+ path = lookup.path
+ } catch (e) {}
+ var ret = {
+ isRoot: false,
+ exists: false,
+ error: 0,
+ name: null,
+ path: null,
+ object: null,
+ parentExists: false,
+ parentPath: null,
+ parentObject: null
+ };
+ try {
+ var lookup = FS.lookupPath(path, {
+ parent: true
+ });
+ ret.parentExists = true;
+ ret.parentPath = lookup.path;
+ ret.parentObject = lookup.node;
+ ret.name = PATH.basename(path);
+ lookup = FS.lookupPath(path, {
+ follow: !dontResolveLastLink
+ });
+ ret.exists = true;
+ ret.path = lookup.path;
+ ret.object = lookup.node;
+ ret.name = lookup.node.name;
+ ret.isRoot = lookup.path === "/"
+ } catch (e) {
+ ret.error = e.errno
+ }
+ return ret
+ },
+ createPath(parent, path, canRead, canWrite) {
+ parent = typeof parent == "string" ? parent : FS.getPath(parent);
+ var parts = path.split("/").reverse();
+ while (parts.length) {
+ var part = parts.pop();
+ if (!part) continue;
+ var current = PATH.join2(parent, part);
+ try {
+ FS.mkdir(current)
+ } catch (e) {}
+ parent = current
+ }
+ return current
+ },
+ createFile(parent, name, properties, canRead, canWrite) {
+ var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name);
+ var mode = FS_getMode(canRead, canWrite);
+ return FS.create(path, mode)
+ },
+ createDataFile(parent, name, data, canRead, canWrite, canOwn) {
+ var path = name;
+ if (parent) {
+ parent = typeof parent == "string" ? parent : FS.getPath(parent);
+ path = name ? PATH.join2(parent, name) : parent
+ }
+ var mode = FS_getMode(canRead, canWrite);
+ var node = FS.create(path, mode);
+ if (data) {
+ if (typeof data == "string") {
+ var arr = new Array(data.length);
+ for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);
+ data = arr
+ }
+ FS.chmod(node, mode | 146);
+ var stream = FS.open(node, 577);
+ FS.write(stream, data, 0, data.length, 0, canOwn);
+ FS.close(stream);
+ FS.chmod(node, mode)
+ }
+ },
+ createDevice(parent, name, input, output) {
+ var path = PATH.join2(typeof parent == "string" ? parent : FS.getPath(parent), name);
+ var mode = FS_getMode(!!input, !!output);
+ if (!FS.createDevice.major) FS.createDevice.major = 64;
+ var dev = FS.makedev(FS.createDevice.major++, 0);
+ FS.registerDevice(dev, {
+ open(stream) {
+ stream.seekable = false
+ },
+ close(stream) {
+ if (output?.buffer?.length) {
+ output(10)
+ }
+ },
+ read(stream, buffer, offset, length, pos) {
+ var bytesRead = 0;
+ for (var i = 0; i < length; i++) {
+ var result;
+ try {
+ result = input()
+ } catch (e) {
+ throw new FS.ErrnoError(29)
+ }
+ if (result === undefined && bytesRead === 0) {
+ throw new FS.ErrnoError(6)
+ }
+ if (result === null || result === undefined) break;
+ bytesRead++;
+ buffer[offset + i] = result
+ }
+ if (bytesRead) {
+ stream.node.timestamp = Date.now()
+ }
+ return bytesRead
+ },
+ write(stream, buffer, offset, length, pos) {
+ for (var i = 0; i < length; i++) {
+ try {
+ output(buffer[offset + i])
+ } catch (e) {
+ throw new FS.ErrnoError(29)
+ }
+ }
+ if (length) {
+ stream.node.timestamp = Date.now()
+ }
+ return i
+ }
+ });
+ return FS.mkdev(path, mode, dev)
+ },
+ forceLoadFile(obj) {
+ if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
+ if (typeof XMLHttpRequest != "undefined") {
+ throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")
+ } else if (read_) {
+ try {
+ obj.contents = intArrayFromString(read_(obj.url), true);
+ obj.usedBytes = obj.contents.length
+ } catch (e) {
+ throw new FS.ErrnoError(29)
+ }
+ } else {
+ throw new Error("Cannot load without read() or XMLHttpRequest.")
+ }
+ },
+ createLazyFile(parent, name, url, canRead, canWrite) {
+ class LazyUint8Array {
+ constructor() {
+ this.lengthKnown = false;
+ this.chunks = []
+ }
+ get(idx) {
+ if (idx > this.length - 1 || idx < 0) {
+ return undefined
+ }
+ var chunkOffset = idx % this.chunkSize;
+ var chunkNum = idx / this.chunkSize | 0;
+ return this.getter(chunkNum)[chunkOffset]
+ }
+ setDataGetter(getter) {
+ this.getter = getter
+ }
+ cacheLength() {
+ var xhr = new XMLHttpRequest;
+ xhr.open("HEAD", url, false);
+ xhr.send(null);
+ if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+ var datalength = Number(xhr.getResponseHeader("Content-length"));
+ var header;
+ var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
+ var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip";
+ var chunkSize = 1024 * 1024;
+ if (!hasByteServing) chunkSize = datalength;
+ var doXHR = (from, to) => {
+ if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
+ if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!");
+ var xhr = new XMLHttpRequest;
+ xhr.open("GET", url, false);
+ if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
+ xhr.responseType = "arraybuffer";
+ if (xhr.overrideMimeType) {
+ xhr.overrideMimeType("text/plain; charset=x-user-defined")
+ }
+ xhr.send(null);
+ if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
+ if (xhr.response !== undefined) {
+ return new Uint8Array(xhr.response || [])
+ }
+ return intArrayFromString(xhr.responseText || "", true)
+ };
+ var lazyArray = this;
+ lazyArray.setDataGetter(chunkNum => {
+ var start = chunkNum * chunkSize;
+ var end = (chunkNum + 1) * chunkSize - 1;
+ end = Math.min(end, datalength - 1);
+ if (typeof lazyArray.chunks[chunkNum] == "undefined") {
+ lazyArray.chunks[chunkNum] = doXHR(start, end)
+ }
+ if (typeof lazyArray.chunks[chunkNum] == "undefined") throw new Error("doXHR failed!");
+ return lazyArray.chunks[chunkNum]
+ });
+ if (usesGzip || !datalength) {
+ chunkSize = datalength = 1;
+ datalength = this.getter(0).length;
+ chunkSize = datalength;
+ out("LazyFiles on gzip forces download of the whole file when length is accessed")
+ }
+ this._length = datalength;
+ this._chunkSize = chunkSize;
+ this.lengthKnown = true
+ }
+ get length() {
+ if (!this.lengthKnown) {
+ this.cacheLength()
+ }
+ return this._length
+ }
+ get chunkSize() {
+ if (!this.lengthKnown) {
+ this.cacheLength()
+ }
+ return this._chunkSize
+ }
+ }
+ if (typeof XMLHttpRequest != "undefined") {
+ if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";
+ var lazyArray = new LazyUint8Array;
+ var properties = {
+ isDevice: false,
+ contents: lazyArray
+ }
+ } else {
+ var properties = {
+ isDevice: false,
+ url: url
+ }
+ }
+ var node = FS.createFile(parent, name, properties, canRead, canWrite);
+ if (properties.contents) {
+ node.contents = properties.contents
+ } else if (properties.url) {
+ node.contents = null;
+ node.url = properties.url
+ }
+ Object.defineProperties(node, {
+ usedBytes: {
+ get: function() {
+ return this.contents.length
+ }
+ }
+ });
+ var stream_ops = {};
+ var keys = Object.keys(node.stream_ops);
+ keys.forEach(key => {
+ var fn = node.stream_ops[key];
+ stream_ops[key] = (...args) => {
+ FS.forceLoadFile(node);
+ return fn(...args)
+ }
+ });
+
+ function writeChunks(stream, buffer, offset, length, position) {
+ var contents = stream.node.contents;
+ if (position >= contents.length) return 0;
+ var size = Math.min(contents.length - position, length);
+ assert(size >= 0);
+ if (contents.slice) {
+ for (var i = 0; i < size; i++) {
+ buffer[offset + i] = contents[position + i]
+ }
+ } else {
+ for (var i = 0; i < size; i++) {
+ buffer[offset + i] = contents.get(position + i)
+ }
+ }
+ return size
+ }
+ stream_ops.read = (stream, buffer, offset, length, position) => {
+ FS.forceLoadFile(node);
+ return writeChunks(stream, buffer, offset, length, position)
+ };
+ stream_ops.mmap = (stream, length, position, prot, flags) => {
+ FS.forceLoadFile(node);
+ var ptr = mmapAlloc(length);
+ if (!ptr) {
+ throw new FS.ErrnoError(48)
+ }
+ writeChunks(stream, HEAP8, ptr, length, position);
+ return {
+ ptr: ptr,
+ allocated: true
+ }
+ };
+ node.stream_ops = stream_ops;
+ return node
+ },
+ absolutePath() {
+ abort("FS.absolutePath has been removed; use PATH_FS.resolve instead")
+ },
+ createFolder() {
+ abort("FS.createFolder has been removed; use FS.mkdir instead")
+ },
+ createLink() {
+ abort("FS.createLink has been removed; use FS.symlink instead")
+ },
+ joinPath() {
+ abort("FS.joinPath has been removed; use PATH.join instead")
+ },
+ mmapAlloc() {
+ abort("FS.mmapAlloc has been replaced by the top level function mmapAlloc")
+ },
+ standardizePath() {
+ abort("FS.standardizePath has been removed; use PATH.normalize instead")
+ }
+ };
+ var SOCKFS = {
+ mount(mount) {
+ Module["websocket"] = Module["websocket"] && "object" === typeof Module["websocket"] ? Module["websocket"] : {};
+ Module["websocket"]._callbacks = {};
+ Module["websocket"]["on"] = function(event, callback) {
+ if ("function" === typeof callback) {
+ this._callbacks[event] = callback
+ }
+ return this
+ };
+ Module["websocket"].emit = function(event, param) {
+ if ("function" === typeof this._callbacks[event]) {
+ this._callbacks[event].call(this, param)
+ }
+ };
+ return FS.createNode(null, "/", 16384 | 511, 0)
+ },
+ createSocket(family, type, protocol) {
+ type &= ~526336;
+ var streaming = type == 1;
+ if (streaming && protocol && protocol != 6) {
+ throw new FS.ErrnoError(66)
+ }
+ var sock = {
+ family: family,
+ type: type,
+ protocol: protocol,
+ server: null,
+ error: null,
+ peers: {},
+ pending: [],
+ recv_queue: [],
+ sock_ops: SOCKFS.websocket_sock_ops
+ };
+ var name = SOCKFS.nextname();
+ var node = FS.createNode(SOCKFS.root, name, 49152, 0);
+ node.sock = sock;
+ var stream = FS.createStream({
+ path: name,
+ node: node,
+ flags: 2,
+ seekable: false,
+ stream_ops: SOCKFS.stream_ops
+ });
+ sock.stream = stream;
+ return sock
+ },
+ getSocket(fd) {
+ var stream = FS.getStream(fd);
+ if (!stream || !FS.isSocket(stream.node.mode)) {
+ return null
+ }
+ return stream.node.sock
+ },
+ stream_ops: {
+ poll(stream) {
+ var sock = stream.node.sock;
+ return sock.sock_ops.poll(sock)
+ },
+ ioctl(stream, request, varargs) {
+ var sock = stream.node.sock;
+ return sock.sock_ops.ioctl(sock, request, varargs)
+ },
+ read(stream, buffer, offset, length, position) {
+ var sock = stream.node.sock;
+ var msg = sock.sock_ops.recvmsg(sock, length);
+ if (!msg) {
+ return 0
+ }
+ buffer.set(msg.buffer, offset);
+ return msg.buffer.length
+ },
+ write(stream, buffer, offset, length, position) {
+ var sock = stream.node.sock;
+ return sock.sock_ops.sendmsg(sock, buffer, offset, length)
+ },
+ close(stream) {
+ var sock = stream.node.sock;
+ sock.sock_ops.close(sock)
+ }
+ },
+ nextname() {
+ if (!SOCKFS.nextname.current) {
+ SOCKFS.nextname.current = 0
+ }
+ return "socket[" + SOCKFS.nextname.current++ + "]"
+ },
+ websocket_sock_ops: {
+ createPeer(sock, addr, port) {
+ var ws;
+ if (typeof addr == "object") {
+ ws = addr;
+ addr = null;
+ port = null
+ }
+ if (ws) {
+ if (ws._socket) {
+ addr = ws._socket.remoteAddress;
+ port = ws._socket.remotePort
+ } else {
+ var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);
+ if (!result) {
+ throw new Error("WebSocket URL must be in the format ws(s)://address:port")
+ }
+ addr = result[1];
+ port = parseInt(result[2], 10)
+ }
+ } else {
+ try {
+ var runtimeConfig = Module["websocket"] && "object" === typeof Module["websocket"];
+ var url = "ws:#".replace("#", "//");
+ if (runtimeConfig) {
+ if ("string" === typeof Module["websocket"]["url"]) {
+ url = Module["websocket"]["url"]
+ }
+ }
+ if (url === "ws://" || url === "wss://") {
+ var parts = addr.split("/");
+ url = url + parts[0] + ":" + port + "/" + parts.slice(1).join("/")
+ }
+ var subProtocols = "binary";
+ if (runtimeConfig) {
+ if ("string" === typeof Module["websocket"]["subprotocol"]) {
+ subProtocols = Module["websocket"]["subprotocol"]
+ }
+ }
+ var opts = undefined;
+ if (subProtocols !== "null") {
+ subProtocols = subProtocols.replace(/^ +| +$/g, "").split(/ *, */);
+ opts = subProtocols
+ }
+ if (runtimeConfig && null === Module["websocket"]["subprotocol"]) {
+ subProtocols = "null";
+ opts = undefined
+ }
+ var WebSocketConstructor;
+ if (ENVIRONMENT_IS_NODE) {
+ WebSocketConstructor = require("ws")
+ } else {
+ WebSocketConstructor = WebSocket
+ }
+ ws = new WebSocketConstructor(url, opts);
+ ws.binaryType = "arraybuffer"
+ } catch (e) {
+ throw new FS.ErrnoError(23)
+ }
+ }
+ var peer = {
+ addr: addr,
+ port: port,
+ socket: ws,
+ dgram_send_queue: []
+ };
+ SOCKFS.websocket_sock_ops.addPeer(sock, peer);
+ SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer);
+ if (sock.type === 2 && typeof sock.sport != "undefined") {
+ peer.dgram_send_queue.push(new Uint8Array([255, 255, 255, 255, "p".charCodeAt(0), "o".charCodeAt(0), "r".charCodeAt(0), "t".charCodeAt(0), (sock.sport & 65280) >> 8, sock.sport & 255]))
+ }
+ return peer
+ },
+ getPeer(sock, addr, port) {
+ return sock.peers[addr + ":" + port]
+ },
+ addPeer(sock, peer) {
+ sock.peers[peer.addr + ":" + peer.port] = peer
+ },
+ removePeer(sock, peer) {
+ delete sock.peers[peer.addr + ":" + peer.port]
+ },
+ handlePeerEvents(sock, peer) {
+ var first = true;
+ var handleOpen = function() {
+ Module["websocket"].emit("open", sock.stream.fd);
+ try {
+ var queued = peer.dgram_send_queue.shift();
+ while (queued) {
+ peer.socket.send(queued);
+ queued = peer.dgram_send_queue.shift()
+ }
+ } catch (e) {
+ peer.socket.close()
+ }
+ };
+
+ function handleMessage(data) {
+ if (typeof data == "string") {
+ var encoder = new TextEncoder;
+ data = encoder.encode(data)
+ } else {
+ assert(data.byteLength !== undefined);
+ if (data.byteLength == 0) {
+ return
+ }
+ data = new Uint8Array(data)
+ }
+ var wasfirst = first;
+ first = false;
+ if (wasfirst && data.length === 10 && data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 && data[4] === "p".charCodeAt(0) && data[5] === "o".charCodeAt(0) && data[6] === "r".charCodeAt(0) && data[7] === "t".charCodeAt(0)) {
+ var newport = data[8] << 8 | data[9];
+ SOCKFS.websocket_sock_ops.removePeer(sock, peer);
+ peer.port = newport;
+ SOCKFS.websocket_sock_ops.addPeer(sock, peer);
+ return
+ }
+ sock.recv_queue.push({
+ addr: peer.addr,
+ port: peer.port,
+ data: data
+ });
+ Module["websocket"].emit("message", sock.stream.fd)
+ }
+ if (ENVIRONMENT_IS_NODE) {
+ peer.socket.on("open", handleOpen);
+ peer.socket.on("message", function(data, isBinary) {
+ if (!isBinary) {
+ return
+ }
+ handleMessage(new Uint8Array(data).buffer)
+ });
+ peer.socket.on("close", function() {
+ Module["websocket"].emit("close", sock.stream.fd)
+ });
+ peer.socket.on("error", function(error) {
+ sock.error = 14;
+ Module["websocket"].emit("error", [sock.stream.fd, sock.error, "ECONNREFUSED: Connection refused"])
+ })
+ } else {
+ peer.socket.onopen = handleOpen;
+ peer.socket.onclose = function() {
+ Module["websocket"].emit("close", sock.stream.fd)
+ };
+ peer.socket.onmessage = function peer_socket_onmessage(event) {
+ handleMessage(event.data)
+ };
+ peer.socket.onerror = function(error) {
+ sock.error = 14;
+ Module["websocket"].emit("error", [sock.stream.fd, sock.error, "ECONNREFUSED: Connection refused"])
+ }
+ }
+ },
+ poll(sock) {
+ if (sock.type === 1 && sock.server) {
+ return sock.pending.length ? 64 | 1 : 0
+ }
+ var mask = 0;
+ var dest = sock.type === 1 ? SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) : null;
+ if (sock.recv_queue.length || !dest || dest && dest.socket.readyState === dest.socket.CLOSING || dest && dest.socket.readyState === dest.socket.CLOSED) {
+ mask |= 64 | 1
+ }
+ if (!dest || dest && dest.socket.readyState === dest.socket.OPEN) {
+ mask |= 4
+ }
+ if (dest && dest.socket.readyState === dest.socket.CLOSING || dest && dest.socket.readyState === dest.socket.CLOSED) {
+ mask |= 16
+ }
+ return mask
+ },
+ ioctl(sock, request, arg) {
+ switch (request) {
+ case 21531:
+ var bytes = 0;
+ if (sock.recv_queue.length) {
+ bytes = sock.recv_queue[0].data.length
+ }
+ HEAP32[arg >> 2] = bytes;
+ return 0;
+ default:
+ return 28
+ }
+ },
+ close(sock) {
+ if (sock.server) {
+ try {
+ sock.server.close()
+ } catch (e) {}
+ sock.server = null
+ }
+ var peers = Object.keys(sock.peers);
+ for (var i = 0; i < peers.length; i++) {
+ var peer = sock.peers[peers[i]];
+ try {
+ peer.socket.close()
+ } catch (e) {}
+ SOCKFS.websocket_sock_ops.removePeer(sock, peer)
+ }
+ return 0
+ },
+ bind(sock, addr, port) {
+ if (typeof sock.saddr != "undefined" || typeof sock.sport != "undefined") {
+ throw new FS.ErrnoError(28)
+ }
+ sock.saddr = addr;
+ sock.sport = port;
+ if (sock.type === 2) {
+ if (sock.server) {
+ sock.server.close();
+ sock.server = null
+ }
+ try {
+ sock.sock_ops.listen(sock, 0)
+ } catch (e) {
+ if (!(e.name === "ErrnoError")) throw e;
+ if (e.errno !== 138) throw e
+ }
+ }
+ },
+ connect(sock, addr, port) {
+ if (sock.server) {
+ throw new FS.ErrnoError(138)
+ }
+ if (typeof sock.daddr != "undefined" && typeof sock.dport != "undefined") {
+ var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport);
+ if (dest) {
+ if (dest.socket.readyState === dest.socket.CONNECTING) {
+ throw new FS.ErrnoError(7)
+ } else {
+ throw new FS.ErrnoError(30)
+ }
+ }
+ }
+ var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port);
+ sock.daddr = peer.addr;
+ sock.dport = peer.port;
+ throw new FS.ErrnoError(26)
+ },
+ listen(sock, backlog) {
+ if (!ENVIRONMENT_IS_NODE) {
+ throw new FS.ErrnoError(138)
+ }
+ if (sock.server) {
+ throw new FS.ErrnoError(28)
+ }
+ var WebSocketServer = require("ws").Server;
+ var host = sock.saddr;
+ sock.server = new WebSocketServer({
+ host: host,
+ port: sock.sport
+ });
+ Module["websocket"].emit("listen", sock.stream.fd);
+ sock.server.on("connection", function(ws) {
+ if (sock.type === 1) {
+ var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol);
+ var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws);
+ newsock.daddr = peer.addr;
+ newsock.dport = peer.port;
+ sock.pending.push(newsock);
+ Module["websocket"].emit("connection", newsock.stream.fd)
+ } else {
+ SOCKFS.websocket_sock_ops.createPeer(sock, ws);
+ Module["websocket"].emit("connection", sock.stream.fd)
+ }
+ });
+ sock.server.on("close", function() {
+ Module["websocket"].emit("close", sock.stream.fd);
+ sock.server = null
+ });
+ sock.server.on("error", function(error) {
+ sock.error = 23;
+ Module["websocket"].emit("error", [sock.stream.fd, sock.error, "EHOSTUNREACH: Host is unreachable"])
+ })
+ },
+ accept(listensock) {
+ if (!listensock.server || !listensock.pending.length) {
+ throw new FS.ErrnoError(28)
+ }
+ var newsock = listensock.pending.shift();
+ newsock.stream.flags = listensock.stream.flags;
+ return newsock
+ },
+ getname(sock, peer) {
+ var addr, port;
+ if (peer) {
+ if (sock.daddr === undefined || sock.dport === undefined) {
+ throw new FS.ErrnoError(53)
+ }
+ addr = sock.daddr;
+ port = sock.dport
+ } else {
+ addr = sock.saddr || 0;
+ port = sock.sport || 0
+ }
+ return {
+ addr: addr,
+ port: port
+ }
+ },
+ sendmsg(sock, buffer, offset, length, addr, port) {
+ if (sock.type === 2) {
+ if (addr === undefined || port === undefined) {
+ addr = sock.daddr;
+ port = sock.dport
+ }
+ if (addr === undefined || port === undefined) {
+ throw new FS.ErrnoError(17)
+ }
+ } else {
+ addr = sock.daddr;
+ port = sock.dport
+ }
+ var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port);
+ if (sock.type === 1) {
+ if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {
+ throw new FS.ErrnoError(53)
+ } else if (dest.socket.readyState === dest.socket.CONNECTING) {
+ throw new FS.ErrnoError(6)
+ }
+ }
+ if (ArrayBuffer.isView(buffer)) {
+ offset += buffer.byteOffset;
+ buffer = buffer.buffer
+ }
+ var data;
+ if (buffer instanceof SharedArrayBuffer) {
+ data = new Uint8Array(new Uint8Array(buffer.slice(offset, offset + length))).buffer
+ } else {
+ data = buffer.slice(offset, offset + length)
+ }
+ if (sock.type === 2) {
+ if (!dest || dest.socket.readyState !== dest.socket.OPEN) {
+ if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {
+ dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port)
+ }
+ dest.dgram_send_queue.push(data);
+ return length
+ }
+ }
+ try {
+ dest.socket.send(data);
+ return length
+ } catch (e) {
+ throw new FS.ErrnoError(28)
+ }
+ },
+ recvmsg(sock, length) {
+ if (sock.type === 1 && sock.server) {
+ throw new FS.ErrnoError(53)
+ }
+ var queued = sock.recv_queue.shift();
+ if (!queued) {
+ if (sock.type === 1) {
+ var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport);
+ if (!dest) {
+ throw new FS.ErrnoError(53)
+ }
+ if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {
+ return null
+ }
+ throw new FS.ErrnoError(6)
+ }
+ throw new FS.ErrnoError(6)
+ }
+ var queuedLength = queued.data.byteLength || queued.data.length;
+ var queuedOffset = queued.data.byteOffset || 0;
+ var queuedBuffer = queued.data.buffer || queued.data;
+ var bytesRead = Math.min(length, queuedLength);
+ var res = {
+ buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead),
+ addr: queued.addr,
+ port: queued.port
+ };
+ if (sock.type === 1 && bytesRead < queuedLength) {
+ var bytesRemaining = queuedLength - bytesRead;
+ queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining);
+ sock.recv_queue.unshift(queued)
+ }
+ return res
+ }
+ }
+ };
+ var getSocketFromFD = fd => {
+ var socket = SOCKFS.getSocket(fd);
+ if (!socket) throw new FS.ErrnoError(8);
+ return socket
+ };
+ var inetPton4 = str => {
+ var b = str.split(".");
+ for (var i = 0; i < 4; i++) {
+ var tmp = Number(b[i]);
+ if (isNaN(tmp)) return null;
+ b[i] = tmp
+ }
+ return (b[0] | b[1] << 8 | b[2] << 16 | b[3] << 24) >>> 0
+ };
+ var jstoi_q = str => parseInt(str);
+ var inetPton6 = str => {
+ var words;
+ var w, offset, z;
+ var valid6regx = /^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;
+ var parts = [];
+ if (!valid6regx.test(str)) {
+ return null
+ }
+ if (str === "::") {
+ return [0, 0, 0, 0, 0, 0, 0, 0]
+ }
+ if (str.startsWith("::")) {
+ str = str.replace("::", "Z:")
+ } else {
+ str = str.replace("::", ":Z:")
+ }
+ if (str.indexOf(".") > 0) {
+ str = str.replace(new RegExp("[.]", "g"), ":");
+ words = str.split(":");
+ words[words.length - 4] = jstoi_q(words[words.length - 4]) + jstoi_q(words[words.length - 3]) * 256;
+ words[words.length - 3] = jstoi_q(words[words.length - 2]) + jstoi_q(words[words.length - 1]) * 256;
+ words = words.slice(0, words.length - 2)
+ } else {
+ words = str.split(":")
+ }
+ offset = 0;
+ z = 0;
+ for (w = 0; w < words.length; w++) {
+ if (typeof words[w] == "string") {
+ if (words[w] === "Z") {
+ for (z = 0; z < 8 - words.length + 1; z++) {
+ parts[w + z] = 0
+ }
+ offset = z - 1
+ } else {
+ parts[w + offset] = _htons(parseInt(words[w], 16))
+ }
+ } else {
+ parts[w + offset] = words[w]
+ }
+ }
+ return [parts[1] << 16 | parts[0], parts[3] << 16 | parts[2], parts[5] << 16 | parts[4], parts[7] << 16 | parts[6]]
+ };
+ var writeSockaddr = (sa, family, addr, port, addrlen) => {
+ switch (family) {
+ case 2:
+ addr = inetPton4(addr);
+ zeroMemory(sa, 16);
+ if (addrlen) {
+ HEAP32[addrlen >> 2] = 16
+ }
+ HEAP16[sa >> 1] = family;
+ HEAP32[sa + 4 >> 2] = addr;
+ HEAP16[sa + 2 >> 1] = _htons(port);
+ break;
+ case 10:
+ addr = inetPton6(addr);
+ zeroMemory(sa, 28);
+ if (addrlen) {
+ HEAP32[addrlen >> 2] = 28
+ }
+ HEAP32[sa >> 2] = family;
+ HEAP32[sa + 8 >> 2] = addr[0];
+ HEAP32[sa + 12 >> 2] = addr[1];
+ HEAP32[sa + 16 >> 2] = addr[2];
+ HEAP32[sa + 20 >> 2] = addr[3];
+ HEAP16[sa + 2 >> 1] = _htons(port);
+ break;
+ default:
+ return 5
+ }
+ return 0
+ };
+ var DNS = {
+ address_map: {
+ id: 1,
+ addrs: {},
+ names: {}
+ },
+ lookup_name(name) {
+ var res = inetPton4(name);
+ if (res !== null) {
+ return name
+ }
+ res = inetPton6(name);
+ if (res !== null) {
+ return name
+ }
+ var addr;
+ if (DNS.address_map.addrs[name]) {
+ addr = DNS.address_map.addrs[name]
+ } else {
+ var id = DNS.address_map.id++;
+ assert(id < 65535, "exceeded max address mappings of 65535");
+ addr = "172.29." + (id & 255) + "." + (id & 65280);
+ DNS.address_map.names[addr] = name;
+ DNS.address_map.addrs[name] = addr
+ }
+ return addr
+ },
+ lookup_addr(addr) {
+ if (DNS.address_map.names[addr]) {
+ return DNS.address_map.names[addr]
+ }
+ return null
+ }
+ };
+
+ function ___syscall_accept4(fd, addr, addrlen, flags, d1, d2) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(3, 0, 1, fd, addr, addrlen, flags, d1, d2);
+ try {
+ var sock = getSocketFromFD(fd);
+ var newsock = sock.sock_ops.accept(sock);
+ if (addr) {
+ var errno = writeSockaddr(addr, newsock.family, DNS.lookup_name(newsock.daddr), newsock.dport, addrlen);
+ assert(!errno)
+ }
+ return newsock.stream.fd
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+ var inetNtop4 = addr => (addr & 255) + "." + (addr >> 8 & 255) + "." + (addr >> 16 & 255) + "." + (addr >> 24 & 255);
+ var inetNtop6 = ints => {
+ var str = "";
+ var word = 0;
+ var longest = 0;
+ var lastzero = 0;
+ var zstart = 0;
+ var len = 0;
+ var i = 0;
+ var parts = [ints[0] & 65535, ints[0] >> 16, ints[1] & 65535, ints[1] >> 16, ints[2] & 65535, ints[2] >> 16, ints[3] & 65535, ints[3] >> 16];
+ var hasipv4 = true;
+ var v4part = "";
+ for (i = 0; i < 5; i++) {
+ if (parts[i] !== 0) {
+ hasipv4 = false;
+ break
+ }
+ }
+ if (hasipv4) {
+ v4part = inetNtop4(parts[6] | parts[7] << 16);
+ if (parts[5] === -1) {
+ str = "::ffff:";
+ str += v4part;
+ return str
+ }
+ if (parts[5] === 0) {
+ str = "::";
+ if (v4part === "0.0.0.0") v4part = "";
+ if (v4part === "0.0.0.1") v4part = "1";
+ str += v4part;
+ return str
+ }
+ }
+ for (word = 0; word < 8; word++) {
+ if (parts[word] === 0) {
+ if (word - lastzero > 1) {
+ len = 0
+ }
+ lastzero = word;
+ len++
+ }
+ if (len > longest) {
+ longest = len;
+ zstart = word - longest + 1
+ }
+ }
+ for (word = 0; word < 8; word++) {
+ if (longest > 1) {
+ if (parts[word] === 0 && word >= zstart && word < zstart + longest) {
+ if (word === zstart) {
+ str += ":";
+ if (zstart === 0) str += ":"
+ }
+ continue
+ }
+ }
+ str += Number(_ntohs(parts[word] & 65535)).toString(16);
+ str += word < 7 ? ":" : ""
+ }
+ return str
+ };
+ var readSockaddr = (sa, salen) => {
+ var family = HEAP16[sa >> 1];
+ var port = _ntohs(HEAPU16[sa + 2 >> 1]);
+ var addr;
+ switch (family) {
+ case 2:
+ if (salen !== 16) {
+ return {
+ errno: 28
+ }
+ }
+ addr = HEAP32[sa + 4 >> 2];
+ addr = inetNtop4(addr);
+ break;
+ case 10:
+ if (salen !== 28) {
+ return {
+ errno: 28
+ }
+ }
+ addr = [HEAP32[sa + 8 >> 2], HEAP32[sa + 12 >> 2], HEAP32[sa + 16 >> 2], HEAP32[sa + 20 >> 2]];
+ addr = inetNtop6(addr);
+ break;
+ default:
+ return {
+ errno: 5
+ }
+ }
+ return {
+ family: family,
+ addr: addr,
+ port: port
+ }
+ };
+ var getSocketAddress = (addrp, addrlen, allowNull) => {
+ if (allowNull && addrp === 0) return null;
+ var info = readSockaddr(addrp, addrlen);
+ if (info.errno) throw new FS.ErrnoError(info.errno);
+ info.addr = DNS.lookup_addr(info.addr) || info.addr;
+ return info
+ };
+
+ function ___syscall_bind(fd, addr, addrlen, d1, d2, d3) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(4, 0, 1, fd, addr, addrlen, d1, d2, d3);
+ try {
+ var sock = getSocketFromFD(fd);
+ var info = getSocketAddress(addr, addrlen);
+ sock.sock_ops.bind(sock, info.addr, info.port);
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_connect(fd, addr, addrlen, d1, d2, d3) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(5, 0, 1, fd, addr, addrlen, d1, d2, d3);
+ try {
+ var sock = getSocketFromFD(fd);
+ var info = getSocketAddress(addr, addrlen);
+ sock.sock_ops.connect(sock, info.addr, info.port);
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+ var SYSCALLS = {
+ DEFAULT_POLLMASK: 5,
+ calculateAt(dirfd, path, allowEmpty) {
+ if (PATH.isAbs(path)) {
+ return path
+ }
+ var dir;
+ if (dirfd === -100) {
+ dir = FS.cwd()
+ } else {
+ var dirstream = SYSCALLS.getStreamFromFD(dirfd);
+ dir = dirstream.path
+ }
+ if (path.length == 0) {
+ if (!allowEmpty) {
+ throw new FS.ErrnoError(44)
+ }
+ return dir
+ }
+ return PATH.join2(dir, path)
+ },
+ doStat(func, path, buf) {
+ var stat = func(path);
+ HEAP32[buf >> 2] = stat.dev;
+ HEAP32[buf + 4 >> 2] = stat.mode;
+ HEAPU32[buf + 8 >> 2] = stat.nlink;
+ HEAP32[buf + 12 >> 2] = stat.uid;
+ HEAP32[buf + 16 >> 2] = stat.gid;
+ HEAP32[buf + 20 >> 2] = stat.rdev;
+ tempI64 = [stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 24 >> 2] = tempI64[0], HEAP32[buf + 28 >> 2] = tempI64[1];
+ HEAP32[buf + 32 >> 2] = 4096;
+ HEAP32[buf + 36 >> 2] = stat.blocks;
+ var atime = stat.atime.getTime();
+ var mtime = stat.mtime.getTime();
+ var ctime = stat.ctime.getTime();
+ tempI64 = [Math.floor(atime / 1e3) >>> 0, (tempDouble = Math.floor(atime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];
+ HEAPU32[buf + 48 >> 2] = atime % 1e3 * 1e3;
+ tempI64 = [Math.floor(mtime / 1e3) >>> 0, (tempDouble = Math.floor(mtime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 56 >> 2] = tempI64[0], HEAP32[buf + 60 >> 2] = tempI64[1];
+ HEAPU32[buf + 64 >> 2] = mtime % 1e3 * 1e3;
+ tempI64 = [Math.floor(ctime / 1e3) >>> 0, (tempDouble = Math.floor(ctime / 1e3), +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 72 >> 2] = tempI64[0], HEAP32[buf + 76 >> 2] = tempI64[1];
+ HEAPU32[buf + 80 >> 2] = ctime % 1e3 * 1e3;
+ tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 88 >> 2] = tempI64[0], HEAP32[buf + 92 >> 2] = tempI64[1];
+ return 0
+ },
+ doMsync(addr, stream, len, flags, offset) {
+ if (!FS.isFile(stream.node.mode)) {
+ throw new FS.ErrnoError(43)
+ }
+ if (flags & 2) {
+ return 0
+ }
+ var buffer = HEAPU8.slice(addr, addr + len);
+ FS.msync(stream, buffer, offset, len, flags)
+ },
+ varargs: undefined,
+ get() {
+ assert(SYSCALLS.varargs != undefined);
+ var ret = HEAP32[+SYSCALLS.varargs >> 2];
+ SYSCALLS.varargs += 4;
+ return ret
+ },
+ getp() {
+ return SYSCALLS.get()
+ },
+ getStr(ptr) {
+ var ret = UTF8ToString(ptr);
+ return ret
+ },
+ getStreamFromFD(fd) {
+ var stream = FS.getStreamChecked(fd);
+ return stream
+ }
+ };
+
+ function ___syscall_dup(fd) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(6, 0, 1, fd);
+ try {
+ var old = SYSCALLS.getStreamFromFD(fd);
+ return FS.dupStream(old).fd
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_dup3(fd, newfd, flags) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(7, 0, 1, fd, newfd, flags);
+ try {
+ var old = SYSCALLS.getStreamFromFD(fd);
+ assert(!flags);
+ if (old.fd === newfd) return -28;
+ var existing = FS.getStream(newfd);
+ if (existing) FS.close(existing);
+ return FS.dupStream(old, newfd).fd
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_faccessat(dirfd, path, amode, flags) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(8, 0, 1, dirfd, path, amode, flags);
+ try {
+ path = SYSCALLS.getStr(path);
+ assert(flags === 0);
+ path = SYSCALLS.calculateAt(dirfd, path);
+ if (amode & ~7) {
+ return -28
+ }
+ var lookup = FS.lookupPath(path, {
+ follow: true
+ });
+ var node = lookup.node;
+ if (!node) {
+ return -44
+ }
+ var perms = "";
+ if (amode & 4) perms += "r";
+ if (amode & 2) perms += "w";
+ if (amode & 1) perms += "x";
+ if (perms && FS.nodePermissions(node, perms)) {
+ return -2
+ }
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_fadvise64(fd, offset, len, advice) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(9, 0, 0, fd, offset, len, advice);
+ return 0
+ }
+
+ function ___syscall_fcntl64(fd, cmd, varargs) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(10, 0, 1, fd, cmd, varargs);
+ SYSCALLS.varargs = varargs;
+ try {
+ var stream = SYSCALLS.getStreamFromFD(fd);
+ switch (cmd) {
+ case 0: {
+ var arg = SYSCALLS.get();
+ if (arg < 0) {
+ return -28
+ }
+ while (FS.streams[arg]) {
+ arg++
+ }
+ var newStream;
+ newStream = FS.dupStream(stream, arg);
+ return newStream.fd
+ }
+ case 1:
+ case 2:
+ return 0;
+ case 3:
+ return stream.flags;
+ case 4: {
+ var arg = SYSCALLS.get();
+ stream.flags |= arg;
+ return 0
+ }
+ case 12: {
+ var arg = SYSCALLS.getp();
+ var offset = 0;
+ HEAP16[arg + offset >> 1] = 2;
+ return 0
+ }
+ case 13:
+ case 14:
+ return 0
+ }
+ return -28
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_fdatasync(fd) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(11, 0, 1, fd);
+ try {
+ var stream = SYSCALLS.getStreamFromFD(fd);
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_fstat64(fd, buf) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(12, 0, 1, fd, buf);
+ try {
+ var stream = SYSCALLS.getStreamFromFD(fd);
+ return SYSCALLS.doStat(FS.stat, stream.path, buf)
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_ftruncate64(fd, length_low, length_high) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(13, 0, 1, fd, length_low, length_high);
+ var length = convertI32PairToI53Checked(length_low, length_high);
+ try {
+ if (isNaN(length)) return 61;
+ FS.ftruncate(fd, length);
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+ var stringToUTF8 = (str, outPtr, maxBytesToWrite) => {
+ assert(typeof maxBytesToWrite == "number", "stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");
+ return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite)
+ };
+
+ function ___syscall_getcwd(buf, size) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(14, 0, 1, buf, size);
+ try {
+ if (size === 0) return -28;
+ var cwd = FS.cwd();
+ var cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;
+ if (size < cwdLengthInBytes) return -68;
+ stringToUTF8(cwd, buf, size);
+ return cwdLengthInBytes
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_getdents64(fd, dirp, count) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(15, 0, 1, fd, dirp, count);
+ try {
+ var stream = SYSCALLS.getStreamFromFD(fd);
+ stream.getdents ||= FS.readdir(stream.path);
+ var struct_size = 280;
+ var pos = 0;
+ var off = FS.llseek(stream, 0, 1);
+ var idx = Math.floor(off / struct_size);
+ while (idx < stream.getdents.length && pos + struct_size <= count) {
+ var id;
+ var type;
+ var name = stream.getdents[idx];
+ if (name === ".") {
+ id = stream.node.id;
+ type = 4
+ } else if (name === "..") {
+ var lookup = FS.lookupPath(stream.path, {
+ parent: true
+ });
+ id = lookup.node.id;
+ type = 4
+ } else {
+ var child = FS.lookupNode(stream.node, name);
+ id = child.id;
+ type = FS.isChrdev(child.mode) ? 2 : FS.isDir(child.mode) ? 4 : FS.isLink(child.mode) ? 10 : 8
+ }
+ assert(id);
+ tempI64 = [id >>> 0, (tempDouble = id, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[dirp + pos >> 2] = tempI64[0], HEAP32[dirp + pos + 4 >> 2] = tempI64[1];
+ tempI64 = [(idx + 1) * struct_size >>> 0, (tempDouble = (idx + 1) * struct_size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[dirp + pos + 8 >> 2] = tempI64[0], HEAP32[dirp + pos + 12 >> 2] = tempI64[1];
+ HEAP16[dirp + pos + 16 >> 1] = 280;
+ HEAP8[dirp + pos + 18] = type;
+ stringToUTF8(name, dirp + pos + 19, 256);
+ pos += struct_size;
+ idx += 1
+ }
+ FS.llseek(stream, idx * struct_size, 0);
+ return pos
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_getpeername(fd, addr, addrlen, d1, d2, d3) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(16, 0, 1, fd, addr, addrlen, d1, d2, d3);
+ try {
+ var sock = getSocketFromFD(fd);
+ if (!sock.daddr) {
+ return -53
+ }
+ var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(sock.daddr), sock.dport, addrlen);
+ assert(!errno);
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_getsockname(fd, addr, addrlen, d1, d2, d3) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(17, 0, 1, fd, addr, addrlen, d1, d2, d3);
+ try {
+ var sock = getSocketFromFD(fd);
+ var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(sock.saddr || "0.0.0.0"), sock.sport, addrlen);
+ assert(!errno);
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_getsockopt(fd, level, optname, optval, optlen, d1) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(18, 0, 1, fd, level, optname, optval, optlen, d1);
+ try {
+ var sock = getSocketFromFD(fd);
+ if (level === 1) {
+ if (optname === 4) {
+ HEAP32[optval >> 2] = sock.error;
+ HEAP32[optlen >> 2] = 4;
+ sock.error = null;
+ return 0
+ }
+ }
+ return -50
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_ioctl(fd, op, varargs) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(19, 0, 1, fd, op, varargs);
+ SYSCALLS.varargs = varargs;
+ try {
+ var stream = SYSCALLS.getStreamFromFD(fd);
+ switch (op) {
+ case 21509: {
+ if (!stream.tty) return -59;
+ return 0
+ }
+ case 21505: {
+ if (!stream.tty) return -59;
+ if (stream.tty.ops.ioctl_tcgets) {
+ var termios = stream.tty.ops.ioctl_tcgets(stream);
+ var argp = SYSCALLS.getp();
+ HEAP32[argp >> 2] = termios.c_iflag || 0;
+ HEAP32[argp + 4 >> 2] = termios.c_oflag || 0;
+ HEAP32[argp + 8 >> 2] = termios.c_cflag || 0;
+ HEAP32[argp + 12 >> 2] = termios.c_lflag || 0;
+ for (var i = 0; i < 32; i++) {
+ HEAP8[argp + i + 17] = termios.c_cc[i] || 0
+ }
+ return 0
+ }
+ return 0
+ }
+ case 21510:
+ case 21511:
+ case 21512: {
+ if (!stream.tty) return -59;
+ return 0
+ }
+ case 21506:
+ case 21507:
+ case 21508: {
+ if (!stream.tty) return -59;
+ if (stream.tty.ops.ioctl_tcsets) {
+ var argp = SYSCALLS.getp();
+ var c_iflag = HEAP32[argp >> 2];
+ var c_oflag = HEAP32[argp + 4 >> 2];
+ var c_cflag = HEAP32[argp + 8 >> 2];
+ var c_lflag = HEAP32[argp + 12 >> 2];
+ var c_cc = [];
+ for (var i = 0; i < 32; i++) {
+ c_cc.push(HEAP8[argp + i + 17])
+ }
+ return stream.tty.ops.ioctl_tcsets(stream.tty, op, {
+ c_iflag: c_iflag,
+ c_oflag: c_oflag,
+ c_cflag: c_cflag,
+ c_lflag: c_lflag,
+ c_cc: c_cc
+ })
+ }
+ return 0
+ }
+ case 21519: {
+ if (!stream.tty) return -59;
+ var argp = SYSCALLS.getp();
+ HEAP32[argp >> 2] = 0;
+ return 0
+ }
+ case 21520: {
+ if (!stream.tty) return -59;
+ return -28
+ }
+ case 21531: {
+ var argp = SYSCALLS.getp();
+ return FS.ioctl(stream, op, argp)
+ }
+ case 21523: {
+ if (!stream.tty) return -59;
+ if (stream.tty.ops.ioctl_tiocgwinsz) {
+ var winsize = stream.tty.ops.ioctl_tiocgwinsz(stream.tty);
+ var argp = SYSCALLS.getp();
+ HEAP16[argp >> 1] = winsize[0];
+ HEAP16[argp + 2 >> 1] = winsize[1]
+ }
+ return 0
+ }
+ case 21524: {
+ if (!stream.tty) return -59;
+ return 0
+ }
+ case 21515: {
+ if (!stream.tty) return -59;
+ return 0
+ }
+ default:
+ return -28
+ }
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_listen(fd, backlog) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(20, 0, 1, fd, backlog);
+ try {
+ var sock = getSocketFromFD(fd);
+ sock.sock_ops.listen(sock, backlog);
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_lstat64(path, buf) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(21, 0, 1, path, buf);
+ try {
+ path = SYSCALLS.getStr(path);
+ return SYSCALLS.doStat(FS.lstat, path, buf)
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_mkdirat(dirfd, path, mode) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(22, 0, 1, dirfd, path, mode);
+ try {
+ path = SYSCALLS.getStr(path);
+ path = SYSCALLS.calculateAt(dirfd, path);
+ path = PATH.normalize(path);
+ if (path[path.length - 1] === "/") path = path.substr(0, path.length - 1);
+ FS.mkdir(path, mode, 0);
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_newfstatat(dirfd, path, buf, flags) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(23, 0, 1, dirfd, path, buf, flags);
+ try {
+ path = SYSCALLS.getStr(path);
+ var nofollow = flags & 256;
+ var allowEmpty = flags & 4096;
+ flags = flags & ~6400;
+ assert(!flags, `unknown flags in __syscall_newfstatat: ${flags}`);
+ path = SYSCALLS.calculateAt(dirfd, path, allowEmpty);
+ return SYSCALLS.doStat(nofollow ? FS.lstat : FS.stat, path, buf)
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_openat(dirfd, path, flags, varargs) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(24, 0, 1, dirfd, path, flags, varargs);
+ SYSCALLS.varargs = varargs;
+ try {
+ path = SYSCALLS.getStr(path);
+ path = SYSCALLS.calculateAt(dirfd, path);
+ var mode = varargs ? SYSCALLS.get() : 0;
+ return FS.open(path, flags, mode).fd
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+ var PIPEFS = {
+ BUCKET_BUFFER_SIZE: 8192,
+ mount(mount) {
+ return FS.createNode(null, "/", 16384 | 511, 0)
+ },
+ createPipe() {
+ var pipe = {
+ buckets: [],
+ refcnt: 2
+ };
+ pipe.buckets.push({
+ buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),
+ offset: 0,
+ roffset: 0
+ });
+ var rName = PIPEFS.nextname();
+ var wName = PIPEFS.nextname();
+ var rNode = FS.createNode(PIPEFS.root, rName, 4096, 0);
+ var wNode = FS.createNode(PIPEFS.root, wName, 4096, 0);
+ rNode.pipe = pipe;
+ wNode.pipe = pipe;
+ var readableStream = FS.createStream({
+ path: rName,
+ node: rNode,
+ flags: 0,
+ seekable: false,
+ stream_ops: PIPEFS.stream_ops
+ });
+ rNode.stream = readableStream;
+ var writableStream = FS.createStream({
+ path: wName,
+ node: wNode,
+ flags: 1,
+ seekable: false,
+ stream_ops: PIPEFS.stream_ops
+ });
+ wNode.stream = writableStream;
+ return {
+ readable_fd: readableStream.fd,
+ writable_fd: writableStream.fd
+ }
+ },
+ stream_ops: {
+ poll(stream) {
+ var pipe = stream.node.pipe;
+ if ((stream.flags & 2097155) === 1) {
+ return 256 | 4
+ }
+ if (pipe.buckets.length > 0) {
+ for (var i = 0; i < pipe.buckets.length; i++) {
+ var bucket = pipe.buckets[i];
+ if (bucket.offset - bucket.roffset > 0) {
+ return 64 | 1
+ }
+ }
+ }
+ return 0
+ },
+ ioctl(stream, request, varargs) {
+ return 28
+ },
+ fsync(stream) {
+ return 28
+ },
+ read(stream, buffer, offset, length, position) {
+ var pipe = stream.node.pipe;
+ var currentLength = 0;
+ for (var i = 0; i < pipe.buckets.length; i++) {
+ var bucket = pipe.buckets[i];
+ currentLength += bucket.offset - bucket.roffset
+ }
+ assert(buffer instanceof ArrayBuffer || buffer instanceof SharedArrayBuffer || ArrayBuffer.isView(buffer));
+ var data = buffer.subarray(offset, offset + length);
+ if (length <= 0) {
+ return 0
+ }
+ if (currentLength == 0) {
+ throw new FS.ErrnoError(6)
+ }
+ var toRead = Math.min(currentLength, length);
+ var totalRead = toRead;
+ var toRemove = 0;
+ for (var i = 0; i < pipe.buckets.length; i++) {
+ var currBucket = pipe.buckets[i];
+ var bucketSize = currBucket.offset - currBucket.roffset;
+ if (toRead <= bucketSize) {
+ var tmpSlice = currBucket.buffer.subarray(currBucket.roffset, currBucket.offset);
+ if (toRead < bucketSize) {
+ tmpSlice = tmpSlice.subarray(0, toRead);
+ currBucket.roffset += toRead
+ } else {
+ toRemove++
+ }
+ data.set(tmpSlice);
+ break
+ } else {
+ var tmpSlice = currBucket.buffer.subarray(currBucket.roffset, currBucket.offset);
+ data.set(tmpSlice);
+ data = data.subarray(tmpSlice.byteLength);
+ toRead -= tmpSlice.byteLength;
+ toRemove++
+ }
+ }
+ if (toRemove && toRemove == pipe.buckets.length) {
+ toRemove--;
+ pipe.buckets[toRemove].offset = 0;
+ pipe.buckets[toRemove].roffset = 0
+ }
+ pipe.buckets.splice(0, toRemove);
+ return totalRead
+ },
+ write(stream, buffer, offset, length, position) {
+ var pipe = stream.node.pipe;
+ assert(buffer instanceof ArrayBuffer || buffer instanceof SharedArrayBuffer || ArrayBuffer.isView(buffer));
+ var data = buffer.subarray(offset, offset + length);
+ var dataLen = data.byteLength;
+ if (dataLen <= 0) {
+ return 0
+ }
+ var currBucket = null;
+ if (pipe.buckets.length == 0) {
+ currBucket = {
+ buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),
+ offset: 0,
+ roffset: 0
+ };
+ pipe.buckets.push(currBucket)
+ } else {
+ currBucket = pipe.buckets[pipe.buckets.length - 1]
+ }
+ assert(currBucket.offset <= PIPEFS.BUCKET_BUFFER_SIZE);
+ var freeBytesInCurrBuffer = PIPEFS.BUCKET_BUFFER_SIZE - currBucket.offset;
+ if (freeBytesInCurrBuffer >= dataLen) {
+ currBucket.buffer.set(data, currBucket.offset);
+ currBucket.offset += dataLen;
+ return dataLen
+ } else if (freeBytesInCurrBuffer > 0) {
+ currBucket.buffer.set(data.subarray(0, freeBytesInCurrBuffer), currBucket.offset);
+ currBucket.offset += freeBytesInCurrBuffer;
+ data = data.subarray(freeBytesInCurrBuffer, data.byteLength)
+ }
+ var numBuckets = data.byteLength / PIPEFS.BUCKET_BUFFER_SIZE | 0;
+ var remElements = data.byteLength % PIPEFS.BUCKET_BUFFER_SIZE;
+ for (var i = 0; i < numBuckets; i++) {
+ var newBucket = {
+ buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),
+ offset: PIPEFS.BUCKET_BUFFER_SIZE,
+ roffset: 0
+ };
+ pipe.buckets.push(newBucket);
+ newBucket.buffer.set(data.subarray(0, PIPEFS.BUCKET_BUFFER_SIZE));
+ data = data.subarray(PIPEFS.BUCKET_BUFFER_SIZE, data.byteLength)
+ }
+ if (remElements > 0) {
+ var newBucket = {
+ buffer: new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),
+ offset: data.byteLength,
+ roffset: 0
+ };
+ pipe.buckets.push(newBucket);
+ newBucket.buffer.set(data)
+ }
+ return dataLen
+ },
+ close(stream) {
+ var pipe = stream.node.pipe;
+ pipe.refcnt--;
+ if (pipe.refcnt === 0) {
+ pipe.buckets = null
+ }
+ }
+ },
+ nextname() {
+ if (!PIPEFS.nextname.current) {
+ PIPEFS.nextname.current = 0
+ }
+ return "pipe[" + PIPEFS.nextname.current++ + "]"
+ }
+ };
+
+ function ___syscall_pipe(fdPtr) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(25, 0, 1, fdPtr);
+ try {
+ if (fdPtr == 0) {
+ throw new FS.ErrnoError(21)
+ }
+ var res = PIPEFS.createPipe();
+ HEAP32[fdPtr >> 2] = res.readable_fd;
+ HEAP32[fdPtr + 4 >> 2] = res.writable_fd;
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_poll(fds, nfds, timeout) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(26, 0, 1, fds, nfds, timeout);
+ try {
+ var nonzero = 0;
+ for (var i = 0; i < nfds; i++) {
+ var pollfd = fds + 8 * i;
+ var fd = HEAP32[pollfd >> 2];
+ var events = HEAP16[pollfd + 4 >> 1];
+ var mask = 32;
+ var stream = FS.getStream(fd);
+ if (stream) {
+ mask = SYSCALLS.DEFAULT_POLLMASK;
+ if (stream.stream_ops.poll) {
+ mask = stream.stream_ops.poll(stream, -1)
+ }
+ }
+ mask &= events | 8 | 16;
+ if (mask) nonzero++;
+ HEAP16[pollfd + 6 >> 1] = mask
+ }
+ return nonzero
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_recvfrom(fd, buf, len, flags, addr, addrlen) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(27, 0, 1, fd, buf, len, flags, addr, addrlen);
+ try {
+ var sock = getSocketFromFD(fd);
+ var msg = sock.sock_ops.recvmsg(sock, len);
+ if (!msg) return 0;
+ if (addr) {
+ var errno = writeSockaddr(addr, sock.family, DNS.lookup_name(msg.addr), msg.port, addrlen);
+ assert(!errno)
+ }
+ HEAPU8.set(msg.buffer, buf);
+ return msg.buffer.byteLength
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_recvmsg(fd, message, flags, d1, d2, d3) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(28, 0, 1, fd, message, flags, d1, d2, d3);
+ try {
+ var sock = getSocketFromFD(fd);
+ var iov = HEAPU32[message + 8 >> 2];
+ var num = HEAP32[message + 12 >> 2];
+ var total = 0;
+ for (var i = 0; i < num; i++) {
+ total += HEAP32[iov + (8 * i + 4) >> 2]
+ }
+ var msg = sock.sock_ops.recvmsg(sock, total);
+ if (!msg) return 0;
+ var name = HEAPU32[message >> 2];
+ if (name) {
+ var errno = writeSockaddr(name, sock.family, DNS.lookup_name(msg.addr), msg.port);
+ assert(!errno)
+ }
+ var bytesRead = 0;
+ var bytesRemaining = msg.buffer.byteLength;
+ for (var i = 0; bytesRemaining > 0 && i < num; i++) {
+ var iovbase = HEAPU32[iov + (8 * i + 0) >> 2];
+ var iovlen = HEAP32[iov + (8 * i + 4) >> 2];
+ if (!iovlen) {
+ continue
+ }
+ var length = Math.min(iovlen, bytesRemaining);
+ var buf = msg.buffer.subarray(bytesRead, bytesRead + length);
+ HEAPU8.set(buf, iovbase + bytesRead);
+ bytesRead += length;
+ bytesRemaining -= length
+ }
+ return bytesRead
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_renameat(olddirfd, oldpath, newdirfd, newpath) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(29, 0, 1, olddirfd, oldpath, newdirfd, newpath);
+ try {
+ oldpath = SYSCALLS.getStr(oldpath);
+ newpath = SYSCALLS.getStr(newpath);
+ oldpath = SYSCALLS.calculateAt(olddirfd, oldpath);
+ newpath = SYSCALLS.calculateAt(newdirfd, newpath);
+ FS.rename(oldpath, newpath);
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_rmdir(path) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(30, 0, 1, path);
+ try {
+ path = SYSCALLS.getStr(path);
+ FS.rmdir(path);
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_sendmsg(fd, message, flags, d1, d2, d3) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(31, 0, 1, fd, message, flags, d1, d2, d3);
+ try {
+ var sock = getSocketFromFD(fd);
+ var iov = HEAPU32[message + 8 >> 2];
+ var num = HEAP32[message + 12 >> 2];
+ var addr, port;
+ var name = HEAPU32[message >> 2];
+ var namelen = HEAP32[message + 4 >> 2];
+ if (name) {
+ var info = readSockaddr(name, namelen);
+ if (info.errno) return -info.errno;
+ port = info.port;
+ addr = DNS.lookup_addr(info.addr) || info.addr
+ }
+ var total = 0;
+ for (var i = 0; i < num; i++) {
+ total += HEAP32[iov + (8 * i + 4) >> 2]
+ }
+ var view = new Uint8Array(total);
+ var offset = 0;
+ for (var i = 0; i < num; i++) {
+ var iovbase = HEAPU32[iov + (8 * i + 0) >> 2];
+ var iovlen = HEAP32[iov + (8 * i + 4) >> 2];
+ for (var j = 0; j < iovlen; j++) {
+ view[offset++] = HEAP8[iovbase + j]
+ }
+ }
+ return sock.sock_ops.sendmsg(sock, view, 0, total, addr, port)
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_sendto(fd, message, length, flags, addr, addr_len) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(32, 0, 1, fd, message, length, flags, addr, addr_len);
+ try {
+ var sock = getSocketFromFD(fd);
+ var dest = getSocketAddress(addr, addr_len, true);
+ if (!dest) {
+ return FS.write(sock.stream, HEAP8, message, length)
+ }
+ return sock.sock_ops.sendmsg(sock, HEAP8, message, length, dest.addr, dest.port)
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_socket(domain, type, protocol) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(33, 0, 1, domain, type, protocol);
+ try {
+ var sock = SOCKFS.createSocket(domain, type, protocol);
+ assert(sock.stream.fd < 64);
+ return sock.stream.fd
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_stat64(path, buf) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(34, 0, 1, path, buf);
+ try {
+ path = SYSCALLS.getStr(path);
+ return SYSCALLS.doStat(FS.stat, path, buf)
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function ___syscall_unlinkat(dirfd, path, flags) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(35, 0, 1, dirfd, path, flags);
+ try {
+ path = SYSCALLS.getStr(path);
+ path = SYSCALLS.calculateAt(dirfd, path);
+ if (flags === 0) {
+ FS.unlink(path)
+ } else if (flags === 512) {
+ FS.rmdir(path)
+ } else {
+ abort("Invalid flags passed to unlinkat")
+ }
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+ var __embind_register_bigint = (primitiveType, name, size, minRange, maxRange) => {};
+ var embind_init_charCodes = () => {
+ var codes = new Array(256);
+ for (var i = 0; i < 256; ++i) {
+ codes[i] = String.fromCharCode(i)
+ }
+ embind_charCodes = codes
+ };
+ var embind_charCodes;
+ var readLatin1String = ptr => {
+ var ret = "";
+ var c = ptr;
+ while (HEAPU8[c]) {
+ ret += embind_charCodes[HEAPU8[c++]]
+ }
+ return ret
+ };
+ var awaitingDependencies = {};
+ var registeredTypes = {};
+ var typeDependencies = {};
+ var BindingError;
+ var throwBindingError = message => {
+ throw new BindingError(message)
+ };
+ var InternalError;
+ var throwInternalError = message => {
+ throw new InternalError(message)
+ };
+
+ function sharedRegisterType(rawType, registeredInstance, options = {}) {
+ var name = registeredInstance.name;
+ if (!rawType) {
+ throwBindingError(`type "${name}" must have a positive integer typeid pointer`)
+ }
+ if (registeredTypes.hasOwnProperty(rawType)) {
+ if (options.ignoreDuplicateRegistrations) {
+ return
+ } else {
+ throwBindingError(`Cannot register type '${name}' twice`)
+ }
+ }
+ registeredTypes[rawType] = registeredInstance;
+ delete typeDependencies[rawType];
+ if (awaitingDependencies.hasOwnProperty(rawType)) {
+ var callbacks = awaitingDependencies[rawType];
+ delete awaitingDependencies[rawType];
+ callbacks.forEach(cb => cb())
+ }
+ }
+
+ function registerType(rawType, registeredInstance, options = {}) {
+ if (!("argPackAdvance" in registeredInstance)) {
+ throw new TypeError("registerType registeredInstance requires argPackAdvance")
+ }
+ return sharedRegisterType(rawType, registeredInstance, options)
+ }
+ var GenericWireTypeSize = 8;
+ var __embind_register_bool = (rawType, name, trueValue, falseValue) => {
+ name = readLatin1String(name);
+ registerType(rawType, {
+ name: name,
+ "fromWireType": function(wt) {
+ return !!wt
+ },
+ "toWireType": function(destructors, o) {
+ return o ? trueValue : falseValue
+ },
+ "argPackAdvance": GenericWireTypeSize,
+ "readValueFromPointer": function(pointer) {
+ return this["fromWireType"](HEAPU8[pointer])
+ },
+ destructorFunction: null
+ })
+ };
+ var emval_freelist = [];
+ var emval_handles = [];
+ var __emval_decref = handle => {
+ if (handle > 9 && 0 === --emval_handles[handle + 1]) {
+ assert(emval_handles[handle] !== undefined, `Decref for unallocated handle.`);
+ emval_handles[handle] = undefined;
+ emval_freelist.push(handle)
+ }
+ };
+ var count_emval_handles = () => emval_handles.length / 2 - 5 - emval_freelist.length;
+ var init_emval = () => {
+ emval_handles.push(0, 1, undefined, 1, null, 1, true, 1, false, 1);
+ assert(emval_handles.length === 5 * 2);
+ Module["count_emval_handles"] = count_emval_handles
+ };
+ var Emval = {
+ toValue: handle => {
+ if (!handle) {
+ throwBindingError("Cannot use deleted val. handle = " + handle)
+ }
+ assert(handle === 2 || emval_handles[handle] !== undefined && handle % 2 === 0, `invalid handle: ${handle}`);
+ return emval_handles[handle]
+ },
+ toHandle: value => {
+ switch (value) {
+ case undefined:
+ return 2;
+ case null:
+ return 4;
+ case true:
+ return 6;
+ case false:
+ return 8;
+ default: {
+ const handle = emval_freelist.pop() || emval_handles.length;
+ emval_handles[handle] = value;
+ emval_handles[handle + 1] = 1;
+ return handle
+ }
+ }
+ }
+ };
+
+ function readPointer(pointer) {
+ return this["fromWireType"](HEAPU32[pointer >> 2])
+ }
+ var EmValType = {
+ name: "emscripten::val",
+ "fromWireType": handle => {
+ var rv = Emval.toValue(handle);
+ __emval_decref(handle);
+ return rv
+ },
+ "toWireType": (destructors, value) => Emval.toHandle(value),
+ "argPackAdvance": GenericWireTypeSize,
+ "readValueFromPointer": readPointer,
+ destructorFunction: null
+ };
+ var __embind_register_emval = rawType => registerType(rawType, EmValType);
+ var embindRepr = v => {
+ if (v === null) {
+ return "null"
+ }
+ var t = typeof v;
+ if (t === "object" || t === "array" || t === "function") {
+ return v.toString()
+ } else {
+ return "" + v
+ }
+ };
+ var floatReadValueFromPointer = (name, width) => {
+ switch (width) {
+ case 4:
+ return function(pointer) {
+ return this["fromWireType"](HEAPF32[pointer >> 2])
+ };
+ case 8:
+ return function(pointer) {
+ return this["fromWireType"](HEAPF64[pointer >> 3])
+ };
+ default:
+ throw new TypeError(`invalid float width (${width}): ${name}`)
+ }
+ };
+ var __embind_register_float = (rawType, name, size) => {
+ name = readLatin1String(name);
+ registerType(rawType, {
+ name: name,
+ "fromWireType": value => value,
+ "toWireType": (destructors, value) => {
+ if (typeof value != "number" && typeof value != "boolean") {
+ throw new TypeError(`Cannot convert ${embindRepr(value)} to ${this.name}`)
+ }
+ return value
+ },
+ "argPackAdvance": GenericWireTypeSize,
+ "readValueFromPointer": floatReadValueFromPointer(name, size),
+ destructorFunction: null
+ })
+ };
+ var integerReadValueFromPointer = (name, width, signed) => {
+ switch (width) {
+ case 1:
+ return signed ? pointer => HEAP8[pointer] : pointer => HEAPU8[pointer];
+ case 2:
+ return signed ? pointer => HEAP16[pointer >> 1] : pointer => HEAPU16[pointer >> 1];
+ case 4:
+ return signed ? pointer => HEAP32[pointer >> 2] : pointer => HEAPU32[pointer >> 2];
+ default:
+ throw new TypeError(`invalid integer width (${width}): ${name}`)
+ }
+ };
+ var __embind_register_integer = (primitiveType, name, size, minRange, maxRange) => {
+ name = readLatin1String(name);
+ if (maxRange === -1) {
+ maxRange = 4294967295
+ }
+ var fromWireType = value => value;
+ if (minRange === 0) {
+ var bitshift = 32 - 8 * size;
+ fromWireType = value => value << bitshift >>> bitshift
+ }
+ var isUnsignedType = name.includes("unsigned");
+ var checkAssertions = (value, toTypeName) => {
+ if (typeof value != "number" && typeof value != "boolean") {
+ throw new TypeError(`Cannot convert "${embindRepr(value)}" to ${toTypeName}`)
+ }
+ if (value < minRange || value > maxRange) {
+ throw new TypeError(`Passing a number "${embindRepr(value)}" from JS side to C/C++ side to an argument of type "${name}", which is outside the valid range [${minRange}, ${maxRange}]!`)
+ }
+ };
+ var toWireType;
+ if (isUnsignedType) {
+ toWireType = function(destructors, value) {
+ checkAssertions(value, this.name);
+ return value >>> 0
+ }
+ } else {
+ toWireType = function(destructors, value) {
+ checkAssertions(value, this.name);
+ return value
+ }
+ }
+ registerType(primitiveType, {
+ name: name,
+ "fromWireType": fromWireType,
+ "toWireType": toWireType,
+ "argPackAdvance": GenericWireTypeSize,
+ "readValueFromPointer": integerReadValueFromPointer(name, size, minRange !== 0),
+ destructorFunction: null
+ })
+ };
+ var __embind_register_memory_view = (rawType, dataTypeIndex, name) => {
+ var typeMapping = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array];
+ var TA = typeMapping[dataTypeIndex];
+
+ function decodeMemoryView(handle) {
+ var size = HEAPU32[handle >> 2];
+ var data = HEAPU32[handle + 4 >> 2];
+ return new TA(HEAP8.buffer, data, size)
+ }
+ name = readLatin1String(name);
+ registerType(rawType, {
+ name: name,
+ "fromWireType": decodeMemoryView,
+ "argPackAdvance": GenericWireTypeSize,
+ "readValueFromPointer": decodeMemoryView
+ }, {
+ ignoreDuplicateRegistrations: true
+ })
+ };
+ var __embind_register_std_string = (rawType, name) => {
+ name = readLatin1String(name);
+ var stdStringIsUTF8 = name === "std::string";
+ registerType(rawType, {
+ name: name,
+ "fromWireType"(value) {
+ var length = HEAPU32[value >> 2];
+ var payload = value + 4;
+ var str;
+ if (stdStringIsUTF8) {
+ var decodeStartPtr = payload;
+ for (var i = 0; i <= length; ++i) {
+ var currentBytePtr = payload + i;
+ if (i == length || HEAPU8[currentBytePtr] == 0) {
+ var maxRead = currentBytePtr - decodeStartPtr;
+ var stringSegment = UTF8ToString(decodeStartPtr, maxRead);
+ if (str === undefined) {
+ str = stringSegment
+ } else {
+ str += String.fromCharCode(0);
+ str += stringSegment
+ }
+ decodeStartPtr = currentBytePtr + 1
+ }
+ }
+ } else {
+ var a = new Array(length);
+ for (var i = 0; i < length; ++i) {
+ a[i] = String.fromCharCode(HEAPU8[payload + i])
+ }
+ str = a.join("")
+ }
+ _free(value);
+ return str
+ },
+ "toWireType"(destructors, value) {
+ if (value instanceof ArrayBuffer) {
+ value = new Uint8Array(value)
+ }
+ var length;
+ var valueIsOfTypeString = typeof value == "string";
+ if (!(valueIsOfTypeString || value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Int8Array)) {
+ throwBindingError("Cannot pass non-string to std::string")
+ }
+ if (stdStringIsUTF8 && valueIsOfTypeString) {
+ length = lengthBytesUTF8(value)
+ } else {
+ length = value.length
+ }
+ var base = _malloc(4 + length + 1);
+ var ptr = base + 4;
+ HEAPU32[base >> 2] = length;
+ if (stdStringIsUTF8 && valueIsOfTypeString) {
+ stringToUTF8(value, ptr, length + 1)
+ } else {
+ if (valueIsOfTypeString) {
+ for (var i = 0; i < length; ++i) {
+ var charCode = value.charCodeAt(i);
+ if (charCode > 255) {
+ _free(ptr);
+ throwBindingError("String has UTF-16 code units that do not fit in 8 bits")
+ }
+ HEAPU8[ptr + i] = charCode
+ }
+ } else {
+ for (var i = 0; i < length; ++i) {
+ HEAPU8[ptr + i] = value[i]
+ }
+ }
+ }
+ if (destructors !== null) {
+ destructors.push(_free, base)
+ }
+ return base
+ },
+ "argPackAdvance": GenericWireTypeSize,
+ "readValueFromPointer": readPointer,
+ destructorFunction(ptr) {
+ _free(ptr)
+ }
+ })
+ };
+ var UTF16Decoder = typeof TextDecoder != "undefined" ? new TextDecoder("utf-16le") : undefined;
+ var UTF16ToString = (ptr, maxBytesToRead) => {
+ assert(ptr % 2 == 0, "Pointer passed to UTF16ToString must be aligned to two bytes!");
+ var endPtr = ptr;
+ var idx = endPtr >> 1;
+ var maxIdx = idx + maxBytesToRead / 2;
+ while (!(idx >= maxIdx) && HEAPU16[idx]) ++idx;
+ endPtr = idx << 1;
+ if (endPtr - ptr > 32 && UTF16Decoder) return UTF16Decoder.decode(HEAPU8.slice(ptr, endPtr));
+ var str = "";
+ for (var i = 0; !(i >= maxBytesToRead / 2); ++i) {
+ var codeUnit = HEAP16[ptr + i * 2 >> 1];
+ if (codeUnit == 0) break;
+ str += String.fromCharCode(codeUnit)
+ }
+ return str
+ };
+ var stringToUTF16 = (str, outPtr, maxBytesToWrite) => {
+ assert(outPtr % 2 == 0, "Pointer passed to stringToUTF16 must be aligned to two bytes!");
+ assert(typeof maxBytesToWrite == "number", "stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");
+ maxBytesToWrite ??= 2147483647;
+ if (maxBytesToWrite < 2) return 0;
+ maxBytesToWrite -= 2;
+ var startPtr = outPtr;
+ var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length;
+ for (var i = 0; i < numCharsToWrite; ++i) {
+ var codeUnit = str.charCodeAt(i);
+ HEAP16[outPtr >> 1] = codeUnit;
+ outPtr += 2
+ }
+ HEAP16[outPtr >> 1] = 0;
+ return outPtr - startPtr
+ };
+ var lengthBytesUTF16 = str => str.length * 2;
+ var UTF32ToString = (ptr, maxBytesToRead) => {
+ assert(ptr % 4 == 0, "Pointer passed to UTF32ToString must be aligned to four bytes!");
+ var i = 0;
+ var str = "";
+ while (!(i >= maxBytesToRead / 4)) {
+ var utf32 = HEAP32[ptr + i * 4 >> 2];
+ if (utf32 == 0) break;
+ ++i;
+ if (utf32 >= 65536) {
+ var ch = utf32 - 65536;
+ str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023)
+ } else {
+ str += String.fromCharCode(utf32)
+ }
+ }
+ return str
+ };
+ var stringToUTF32 = (str, outPtr, maxBytesToWrite) => {
+ assert(outPtr % 4 == 0, "Pointer passed to stringToUTF32 must be aligned to four bytes!");
+ assert(typeof maxBytesToWrite == "number", "stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");
+ maxBytesToWrite ??= 2147483647;
+ if (maxBytesToWrite < 4) return 0;
+ var startPtr = outPtr;
+ var endPtr = startPtr + maxBytesToWrite - 4;
+ for (var i = 0; i < str.length; ++i) {
+ var codeUnit = str.charCodeAt(i);
+ if (codeUnit >= 55296 && codeUnit <= 57343) {
+ var trailSurrogate = str.charCodeAt(++i);
+ codeUnit = 65536 + ((codeUnit & 1023) << 10) | trailSurrogate & 1023
+ }
+ HEAP32[outPtr >> 2] = codeUnit;
+ outPtr += 4;
+ if (outPtr + 4 > endPtr) break
+ }
+ HEAP32[outPtr >> 2] = 0;
+ return outPtr - startPtr
+ };
+ var lengthBytesUTF32 = str => {
+ var len = 0;
+ for (var i = 0; i < str.length; ++i) {
+ var codeUnit = str.charCodeAt(i);
+ if (codeUnit >= 55296 && codeUnit <= 57343) ++i;
+ len += 4
+ }
+ return len
+ };
+ var __embind_register_std_wstring = (rawType, charSize, name) => {
+ name = readLatin1String(name);
+ var decodeString, encodeString, readCharAt, lengthBytesUTF;
+ if (charSize === 2) {
+ decodeString = UTF16ToString;
+ encodeString = stringToUTF16;
+ lengthBytesUTF = lengthBytesUTF16;
+ readCharAt = pointer => HEAPU16[pointer >> 1]
+ } else if (charSize === 4) {
+ decodeString = UTF32ToString;
+ encodeString = stringToUTF32;
+ lengthBytesUTF = lengthBytesUTF32;
+ readCharAt = pointer => HEAPU32[pointer >> 2]
+ }
+ registerType(rawType, {
+ name: name,
+ "fromWireType": value => {
+ var length = HEAPU32[value >> 2];
+ var str;
+ var decodeStartPtr = value + 4;
+ for (var i = 0; i <= length; ++i) {
+ var currentBytePtr = value + 4 + i * charSize;
+ if (i == length || readCharAt(currentBytePtr) == 0) {
+ var maxReadBytes = currentBytePtr - decodeStartPtr;
+ var stringSegment = decodeString(decodeStartPtr, maxReadBytes);
+ if (str === undefined) {
+ str = stringSegment
+ } else {
+ str += String.fromCharCode(0);
+ str += stringSegment
+ }
+ decodeStartPtr = currentBytePtr + charSize
+ }
+ }
+ _free(value);
+ return str
+ },
+ "toWireType": (destructors, value) => {
+ if (!(typeof value == "string")) {
+ throwBindingError(`Cannot pass non-string to C++ string type ${name}`)
+ }
+ var length = lengthBytesUTF(value);
+ var ptr = _malloc(4 + length + charSize);
+ HEAPU32[ptr >> 2] = length / charSize;
+ encodeString(value, ptr + 4, length + charSize);
+ if (destructors !== null) {
+ destructors.push(_free, ptr)
+ }
+ return ptr
+ },
+ "argPackAdvance": GenericWireTypeSize,
+ "readValueFromPointer": readPointer,
+ destructorFunction(ptr) {
+ _free(ptr)
+ }
+ })
+ };
+ var __embind_register_void = (rawType, name) => {
+ name = readLatin1String(name);
+ registerType(rawType, {
+ isVoid: true,
+ name: name,
+ "argPackAdvance": 0,
+ "fromWireType": () => undefined,
+ "toWireType": (destructors, o) => undefined
+ })
+ };
+ var nowIsMonotonic = 1;
+ var __emscripten_get_now_is_monotonic = () => nowIsMonotonic;
+ var maybeExit = () => {
+ if (runtimeExited) {
+ return
+ }
+ if (!keepRuntimeAlive()) {
+ try {
+ if (ENVIRONMENT_IS_PTHREAD) __emscripten_thread_exit(EXITSTATUS);
+ else _exit(EXITSTATUS)
+ } catch (e) {
+ handleException(e)
+ }
+ }
+ };
+ var callUserCallback = func => {
+ if (runtimeExited || ABORT) {
+ err("user callback triggered after runtime exited or application aborted. Ignoring.");
+ return
+ }
+ try {
+ func();
+ maybeExit()
+ } catch (e) {
+ handleException(e)
+ }
+ };
+ var __emscripten_thread_mailbox_await = pthread_ptr => {
+ if (typeof Atomics.waitAsync === "function") {
+ var wait = Atomics.waitAsync(HEAP32, pthread_ptr >> 2, pthread_ptr);
+ assert(wait.async);
+ wait.value.then(checkMailbox);
+ var waitingAsync = pthread_ptr + 128;
+ Atomics.store(HEAP32, waitingAsync >> 2, 1)
+ }
+ };
+ Module["__emscripten_thread_mailbox_await"] = __emscripten_thread_mailbox_await;
+ var checkMailbox = () => {
+ var pthread_ptr = _pthread_self();
+ if (pthread_ptr) {
+ __emscripten_thread_mailbox_await(pthread_ptr);
+ callUserCallback(__emscripten_check_mailbox)
+ }
+ };
+ Module["checkMailbox"] = checkMailbox;
+ var __emscripten_notify_mailbox_postmessage = (targetThreadId, currThreadId, mainThreadId) => {
+ if (targetThreadId == currThreadId) {
+ setTimeout(checkMailbox)
+ } else if (ENVIRONMENT_IS_PTHREAD) {
+ postMessage({
+ "targetThread": targetThreadId,
+ "cmd": "checkMailbox"
+ })
+ } else {
+ var worker = PThread.pthreads[targetThreadId];
+ if (!worker) {
+ err(`Cannot send message to thread with ID ${targetThreadId}, unknown thread ID!`);
+ return
+ }
+ worker.postMessage({
+ "cmd": "checkMailbox"
+ })
+ }
+ };
+ var webgl_enable_ANGLE_instanced_arrays = ctx => {
+ var ext = ctx.getExtension("ANGLE_instanced_arrays");
+ if (ext) {
+ ctx["vertexAttribDivisor"] = (index, divisor) => ext["vertexAttribDivisorANGLE"](index, divisor);
+ ctx["drawArraysInstanced"] = (mode, first, count, primcount) => ext["drawArraysInstancedANGLE"](mode, first, count, primcount);
+ ctx["drawElementsInstanced"] = (mode, count, type, indices, primcount) => ext["drawElementsInstancedANGLE"](mode, count, type, indices, primcount);
+ return 1
+ }
+ };
+ var webgl_enable_OES_vertex_array_object = ctx => {
+ var ext = ctx.getExtension("OES_vertex_array_object");
+ if (ext) {
+ ctx["createVertexArray"] = () => ext["createVertexArrayOES"]();
+ ctx["deleteVertexArray"] = vao => ext["deleteVertexArrayOES"](vao);
+ ctx["bindVertexArray"] = vao => ext["bindVertexArrayOES"](vao);
+ ctx["isVertexArray"] = vao => ext["isVertexArrayOES"](vao);
+ return 1
+ }
+ };
+ var webgl_enable_WEBGL_draw_buffers = ctx => {
+ var ext = ctx.getExtension("WEBGL_draw_buffers");
+ if (ext) {
+ ctx["drawBuffers"] = (n, bufs) => ext["drawBuffersWEBGL"](n, bufs);
+ return 1
+ }
+ };
+ var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance = ctx => !!(ctx.dibvbi = ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));
+ var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance = ctx => !!(ctx.mdibvbi = ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));
+ var webgl_enable_WEBGL_multi_draw = ctx => !!(ctx.multiDrawWebgl = ctx.getExtension("WEBGL_multi_draw"));
+ var getEmscriptenSupportedExtensions = ctx => {
+ var supportedExtensions = ["ANGLE_instanced_arrays", "EXT_blend_minmax", "EXT_disjoint_timer_query", "EXT_frag_depth", "EXT_shader_texture_lod", "EXT_sRGB", "OES_element_index_uint", "OES_fbo_render_mipmap", "OES_standard_derivatives", "OES_texture_float", "OES_texture_half_float", "OES_texture_half_float_linear", "OES_vertex_array_object", "WEBGL_color_buffer_float", "WEBGL_depth_texture", "WEBGL_draw_buffers", "EXT_color_buffer_float", "EXT_conservative_depth", "EXT_disjoint_timer_query_webgl2", "EXT_texture_norm16", "NV_shader_noperspective_interpolation", "WEBGL_clip_cull_distance", "EXT_color_buffer_half_float", "EXT_depth_clamp", "EXT_float_blend", "EXT_texture_compression_bptc", "EXT_texture_compression_rgtc", "EXT_texture_filter_anisotropic", "KHR_parallel_shader_compile", "OES_texture_float_linear", "WEBGL_blend_func_extended", "WEBGL_compressed_texture_astc", "WEBGL_compressed_texture_etc", "WEBGL_compressed_texture_etc1", "WEBGL_compressed_texture_s3tc", "WEBGL_compressed_texture_s3tc_srgb", "WEBGL_debug_renderer_info", "WEBGL_debug_shaders", "WEBGL_lose_context", "WEBGL_multi_draw"];
+ return (ctx.getSupportedExtensions() || []).filter(ext => supportedExtensions.includes(ext))
+ };
+ var GL = {
+ counter: 1,
+ buffers: [],
+ programs: [],
+ framebuffers: [],
+ renderbuffers: [],
+ textures: [],
+ shaders: [],
+ vaos: [],
+ contexts: {},
+ offscreenCanvases: {},
+ queries: [],
+ samplers: [],
+ transformFeedbacks: [],
+ syncs: [],
+ stringCache: {},
+ stringiCache: {},
+ unpackAlignment: 4,
+ recordError: errorCode => {
+ if (!GL.lastError) {
+ GL.lastError = errorCode
+ }
+ },
+ getNewId: table => {
+ var ret = GL.counter++;
+ for (var i = table.length; i < ret; i++) {
+ table[i] = null
+ }
+ return ret
+ },
+ genObject: (n, buffers, createFunction, objectTable) => {
+ for (var i = 0; i < n; i++) {
+ var buffer = GLctx[createFunction]();
+ var id = buffer && GL.getNewId(objectTable);
+ if (buffer) {
+ buffer.name = id;
+ objectTable[id] = buffer
+ } else {
+ GL.recordError(1282)
+ }
+ HEAP32[buffers + i * 4 >> 2] = id
+ }
+ },
+ getSource: (shader, count, string, length) => {
+ var source = "";
+ for (var i = 0; i < count; ++i) {
+ var len = length ? HEAPU32[length + i * 4 >> 2] : undefined;
+ source += UTF8ToString(HEAPU32[string + i * 4 >> 2], len)
+ }
+ return source
+ },
+ createContext: (canvas, webGLContextAttributes) => {
+ if (webGLContextAttributes.renderViaOffscreenBackBuffer) webGLContextAttributes["preserveDrawingBuffer"] = true;
+ if (!canvas.getContextSafariWebGL2Fixed) {
+ canvas.getContextSafariWebGL2Fixed = canvas.getContext;
+
+ function fixedGetContext(ver, attrs) {
+ var gl = canvas.getContextSafariWebGL2Fixed(ver, attrs);
+ return ver == "webgl" == gl instanceof WebGLRenderingContext ? gl : null
+ }
+ canvas.getContext = fixedGetContext
+ }
+ var ctx = webGLContextAttributes.majorVersion > 1 ? canvas.getContext("webgl2", webGLContextAttributes) : canvas.getContext("webgl", webGLContextAttributes);
+ if (!ctx) return 0;
+ var handle = GL.registerContext(ctx, webGLContextAttributes);
+ return handle
+ },
+ enableOffscreenFramebufferAttributes: webGLContextAttributes => {
+ webGLContextAttributes.renderViaOffscreenBackBuffer = true;
+ webGLContextAttributes.preserveDrawingBuffer = true
+ },
+ createOffscreenFramebuffer: context => {
+ var gl = context.GLctx;
+ var fbo = gl.createFramebuffer();
+ gl.bindFramebuffer(36160, fbo);
+ context.defaultFbo = fbo;
+ context.defaultFboForbidBlitFramebuffer = false;
+ if (gl.getContextAttributes().antialias) {
+ context.defaultFboForbidBlitFramebuffer = true
+ }
+ context.defaultColorTarget = gl.createTexture();
+ context.defaultDepthTarget = gl.createRenderbuffer();
+ GL.resizeOffscreenFramebuffer(context);
+ gl.bindTexture(3553, context.defaultColorTarget);
+ gl.texParameteri(3553, 10241, 9728);
+ gl.texParameteri(3553, 10240, 9728);
+ gl.texParameteri(3553, 10242, 33071);
+ gl.texParameteri(3553, 10243, 33071);
+ gl.texImage2D(3553, 0, 6408, gl.canvas.width, gl.canvas.height, 0, 6408, 5121, null);
+ gl.framebufferTexture2D(36160, 36064, 3553, context.defaultColorTarget, 0);
+ gl.bindTexture(3553, null);
+ var depthTarget = gl.createRenderbuffer();
+ gl.bindRenderbuffer(36161, context.defaultDepthTarget);
+ gl.renderbufferStorage(36161, 33189, gl.canvas.width, gl.canvas.height);
+ gl.framebufferRenderbuffer(36160, 36096, 36161, context.defaultDepthTarget);
+ gl.bindRenderbuffer(36161, null);
+ var vertices = [-1, -1, -1, 1, 1, -1, 1, 1];
+ var vb = gl.createBuffer();
+ gl.bindBuffer(34962, vb);
+ gl.bufferData(34962, new Float32Array(vertices), 35044);
+ gl.bindBuffer(34962, null);
+ context.blitVB = vb;
+ var vsCode = "attribute vec2 pos;" + "varying lowp vec2 tex;" + "void main() { tex = pos * 0.5 + vec2(0.5,0.5); gl_Position = vec4(pos, 0.0, 1.0); }";
+ var vs = gl.createShader(35633);
+ gl.shaderSource(vs, vsCode);
+ gl.compileShader(vs);
+ var fsCode = "varying lowp vec2 tex;" + "uniform sampler2D sampler;" + "void main() { gl_FragColor = texture2D(sampler, tex); }";
+ var fs = gl.createShader(35632);
+ gl.shaderSource(fs, fsCode);
+ gl.compileShader(fs);
+ var blitProgram = gl.createProgram();
+ gl.attachShader(blitProgram, vs);
+ gl.attachShader(blitProgram, fs);
+ gl.linkProgram(blitProgram);
+ context.blitProgram = blitProgram;
+ context.blitPosLoc = gl.getAttribLocation(blitProgram, "pos");
+ gl.useProgram(blitProgram);
+ gl.uniform1i(gl.getUniformLocation(blitProgram, "sampler"), 0);
+ gl.useProgram(null);
+ context.defaultVao = undefined;
+ if (gl.createVertexArray) {
+ context.defaultVao = gl.createVertexArray();
+ gl.bindVertexArray(context.defaultVao);
+ gl.enableVertexAttribArray(context.blitPosLoc);
+ gl.bindVertexArray(null)
+ }
+ },
+ resizeOffscreenFramebuffer: context => {
+ var gl = context.GLctx;
+ if (context.defaultColorTarget) {
+ var prevTextureBinding = gl.getParameter(32873);
+ gl.bindTexture(3553, context.defaultColorTarget);
+ gl.texImage2D(3553, 0, 6408, gl.drawingBufferWidth, gl.drawingBufferHeight, 0, 6408, 5121, null);
+ gl.bindTexture(3553, prevTextureBinding)
+ }
+ if (context.defaultDepthTarget) {
+ var prevRenderBufferBinding = gl.getParameter(36007);
+ gl.bindRenderbuffer(36161, context.defaultDepthTarget);
+ gl.renderbufferStorage(36161, 33189, gl.drawingBufferWidth, gl.drawingBufferHeight);
+ gl.bindRenderbuffer(36161, prevRenderBufferBinding)
+ }
+ },
+ blitOffscreenFramebuffer: context => {
+ var gl = context.GLctx;
+ var prevScissorTest = gl.getParameter(3089);
+ if (prevScissorTest) gl.disable(3089);
+ var prevFbo = gl.getParameter(36006);
+ if (gl.blitFramebuffer && !context.defaultFboForbidBlitFramebuffer) {
+ gl.bindFramebuffer(36008, context.defaultFbo);
+ gl.bindFramebuffer(36009, null);
+ gl.blitFramebuffer(0, 0, gl.canvas.width, gl.canvas.height, 0, 0, gl.canvas.width, gl.canvas.height, 16384, 9728)
+ } else {
+ gl.bindFramebuffer(36160, null);
+ var prevProgram = gl.getParameter(35725);
+ gl.useProgram(context.blitProgram);
+ var prevVB = gl.getParameter(34964);
+ gl.bindBuffer(34962, context.blitVB);
+ var prevActiveTexture = gl.getParameter(34016);
+ gl.activeTexture(33984);
+ var prevTextureBinding = gl.getParameter(32873);
+ gl.bindTexture(3553, context.defaultColorTarget);
+ var prevBlend = gl.getParameter(3042);
+ if (prevBlend) gl.disable(3042);
+ var prevCullFace = gl.getParameter(2884);
+ if (prevCullFace) gl.disable(2884);
+ var prevDepthTest = gl.getParameter(2929);
+ if (prevDepthTest) gl.disable(2929);
+ var prevStencilTest = gl.getParameter(2960);
+ if (prevStencilTest) gl.disable(2960);
+
+ function draw() {
+ gl.vertexAttribPointer(context.blitPosLoc, 2, 5126, false, 0, 0);
+ gl.drawArrays(5, 0, 4)
+ }
+ if (context.defaultVao) {
+ var prevVAO = gl.getParameter(34229);
+ gl.bindVertexArray(context.defaultVao);
+ draw();
+ gl.bindVertexArray(prevVAO)
+ } else {
+ var prevVertexAttribPointer = {
+ buffer: gl.getVertexAttrib(context.blitPosLoc, 34975),
+ size: gl.getVertexAttrib(context.blitPosLoc, 34339),
+ stride: gl.getVertexAttrib(context.blitPosLoc, 34340),
+ type: gl.getVertexAttrib(context.blitPosLoc, 34341),
+ normalized: gl.getVertexAttrib(context.blitPosLoc, 34922),
+ pointer: gl.getVertexAttribOffset(context.blitPosLoc, 34373)
+ };
+ var maxVertexAttribs = gl.getParameter(34921);
+ var prevVertexAttribEnables = [];
+ for (var i = 0; i < maxVertexAttribs; ++i) {
+ var prevEnabled = gl.getVertexAttrib(i, 34338);
+ var wantEnabled = i == context.blitPosLoc;
+ if (prevEnabled && !wantEnabled) {
+ gl.disableVertexAttribArray(i)
+ }
+ if (!prevEnabled && wantEnabled) {
+ gl.enableVertexAttribArray(i)
+ }
+ prevVertexAttribEnables[i] = prevEnabled
+ }
+ draw();
+ for (var i = 0; i < maxVertexAttribs; ++i) {
+ var prevEnabled = prevVertexAttribEnables[i];
+ var nowEnabled = i == context.blitPosLoc;
+ if (prevEnabled && !nowEnabled) {
+ gl.enableVertexAttribArray(i)
+ }
+ if (!prevEnabled && nowEnabled) {
+ gl.disableVertexAttribArray(i)
+ }
+ }
+ gl.bindBuffer(34962, prevVertexAttribPointer.buffer);
+ gl.vertexAttribPointer(context.blitPosLoc, prevVertexAttribPointer.size, prevVertexAttribPointer.type, prevVertexAttribPointer.normalized, prevVertexAttribPointer.stride, prevVertexAttribPointer.offset)
+ }
+ if (prevStencilTest) gl.enable(2960);
+ if (prevDepthTest) gl.enable(2929);
+ if (prevCullFace) gl.enable(2884);
+ if (prevBlend) gl.enable(3042);
+ gl.bindTexture(3553, prevTextureBinding);
+ gl.activeTexture(prevActiveTexture);
+ gl.bindBuffer(34962, prevVB);
+ gl.useProgram(prevProgram)
+ }
+ gl.bindFramebuffer(36160, prevFbo);
+ if (prevScissorTest) gl.enable(3089)
+ },
+ registerContext: (ctx, webGLContextAttributes) => {
+ var handle = _malloc(8);
+ HEAPU32[handle + 4 >> 2] = _pthread_self();
+ var context = {
+ handle: handle,
+ attributes: webGLContextAttributes,
+ version: webGLContextAttributes.majorVersion,
+ GLctx: ctx
+ };
+ if (ctx.canvas) ctx.canvas.GLctxObject = context;
+ GL.contexts[handle] = context;
+ if (typeof webGLContextAttributes.enableExtensionsByDefault == "undefined" || webGLContextAttributes.enableExtensionsByDefault) {
+ GL.initExtensions(context)
+ }
+ if (webGLContextAttributes.renderViaOffscreenBackBuffer) GL.createOffscreenFramebuffer(context);
+ return handle
+ },
+ makeContextCurrent: contextHandle => {
+ GL.currentContext = GL.contexts[contextHandle];
+ Module.ctx = GLctx = GL.currentContext?.GLctx;
+ return !(contextHandle && !GLctx)
+ },
+ getContext: contextHandle => GL.contexts[contextHandle],
+ deleteContext: contextHandle => {
+ if (GL.currentContext === GL.contexts[contextHandle]) {
+ GL.currentContext = null
+ }
+ if (typeof JSEvents == "object") {
+ JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)
+ }
+ if (GL.contexts[contextHandle] && GL.contexts[contextHandle].GLctx.canvas) {
+ GL.contexts[contextHandle].GLctx.canvas.GLctxObject = undefined
+ }
+ _free(GL.contexts[contextHandle].handle);
+ GL.contexts[contextHandle] = null
+ },
+ initExtensions: context => {
+ context ||= GL.currentContext;
+ if (context.initExtensionsDone) return;
+ context.initExtensionsDone = true;
+ var GLctx = context.GLctx;
+ webgl_enable_ANGLE_instanced_arrays(GLctx);
+ webgl_enable_OES_vertex_array_object(GLctx);
+ webgl_enable_WEBGL_draw_buffers(GLctx);
+ webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);
+ webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);
+ if (context.version >= 2) {
+ GLctx.disjointTimerQueryExt = GLctx.getExtension("EXT_disjoint_timer_query_webgl2")
+ }
+ if (context.version < 2 || !GLctx.disjointTimerQueryExt) {
+ GLctx.disjointTimerQueryExt = GLctx.getExtension("EXT_disjoint_timer_query")
+ }
+ webgl_enable_WEBGL_multi_draw(GLctx);
+ getEmscriptenSupportedExtensions(GLctx).forEach(ext => {
+ if (!ext.includes("lose_context") && !ext.includes("debug")) {
+ GLctx.getExtension(ext)
+ }
+ })
+ }
+ };
+ var __emscripten_proxied_gl_context_activated_from_main_browser_thread = contextHandle => {
+ GLctx = Module.ctx = GL.currentContext = contextHandle;
+ GL.currentContextIsProxied = true
+ };
+ var proxiedJSCallArgs = [];
+ var __emscripten_receive_on_main_thread_js = (funcIndex, emAsmAddr, callingThread, numCallArgs, args) => {
+ proxiedJSCallArgs.length = numCallArgs;
+ var b = args >> 3;
+ for (var i = 0; i < numCallArgs; i++) {
+ proxiedJSCallArgs[i] = HEAPF64[b + i]
+ }
+ var func = emAsmAddr ? ASM_CONSTS[emAsmAddr] : proxiedFunctionTable[funcIndex];
+ assert(!(funcIndex && emAsmAddr));
+ assert(func.length == numCallArgs, "Call args mismatch in _emscripten_receive_on_main_thread_js");
+ PThread.currentProxiedOperationCallerThread = callingThread;
+ var rtn = func(...proxiedJSCallArgs);
+ PThread.currentProxiedOperationCallerThread = 0;
+ assert(typeof rtn != "bigint");
+ return rtn
+ };
+
+ function __emscripten_runtime_keepalive_clear() {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(36, 0, 1);
+ noExitRuntime = false;
+ runtimeKeepaliveCounter = 0
+ }
+ var __emscripten_thread_set_strongref = thread => {
+ if (ENVIRONMENT_IS_NODE) {
+ PThread.pthreads[thread].ref()
+ }
+ };
+ var __emscripten_throw_longjmp = () => {
+ throw Infinity
+ };
+ var getTypeName = type => {
+ var ptr = ___getTypeName(type);
+ var rv = readLatin1String(ptr);
+ _free(ptr);
+ return rv
+ };
+ var requireRegisteredType = (rawType, humanName) => {
+ var impl = registeredTypes[rawType];
+ if (undefined === impl) {
+ throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)
+ }
+ return impl
+ };
+ var emval_returnValue = (returnType, destructorsRef, handle) => {
+ var destructors = [];
+ var result = returnType["toWireType"](destructors, handle);
+ if (destructors.length) {
+ HEAPU32[destructorsRef >> 2] = Emval.toHandle(destructors)
+ }
+ return result
+ };
+ var __emval_as = (handle, returnType, destructorsRef) => {
+ handle = Emval.toValue(handle);
+ returnType = requireRegisteredType(returnType, "emval::as");
+ return emval_returnValue(returnType, destructorsRef, handle)
+ };
+ var emval_methodCallers = [];
+ var __emval_call = (caller, handle, destructorsRef, args) => {
+ caller = emval_methodCallers[caller];
+ handle = Emval.toValue(handle);
+ return caller(null, handle, destructorsRef, args)
+ };
+ var emval_symbols = {};
+ var getStringOrSymbol = address => {
+ var symbol = emval_symbols[address];
+ if (symbol === undefined) {
+ return readLatin1String(address)
+ }
+ return symbol
+ };
+ var __emval_call_method = (caller, objHandle, methodName, destructorsRef, args) => {
+ caller = emval_methodCallers[caller];
+ objHandle = Emval.toValue(objHandle);
+ methodName = getStringOrSymbol(methodName);
+ return caller(objHandle, objHandle[methodName], destructorsRef, args)
+ };
+ var emval_get_global = () => {
+ if (typeof globalThis == "object") {
+ return globalThis
+ }
+ return function() {
+ return Function
+ }()("return this")()
+ };
+ var __emval_get_global = name => {
+ if (name === 0) {
+ return Emval.toHandle(emval_get_global())
+ } else {
+ name = getStringOrSymbol(name);
+ return Emval.toHandle(emval_get_global()[name])
+ }
+ };
+ var emval_addMethodCaller = caller => {
+ var id = emval_methodCallers.length;
+ emval_methodCallers.push(caller);
+ return id
+ };
+ var emval_lookupTypes = (argCount, argTypes) => {
+ var a = new Array(argCount);
+ for (var i = 0; i < argCount; ++i) {
+ a[i] = requireRegisteredType(HEAPU32[argTypes + i * 4 >> 2], "parameter " + i)
+ }
+ return a
+ };
+ var createNamedFunction = (name, body) => Object.defineProperty(body, "name", {
+ value: name
+ });
+ var reflectConstruct = Reflect.construct;
+
+ function newFunc(constructor, argumentList) {
+ if (!(constructor instanceof Function)) {
+ throw new TypeError(`new_ called with constructor type ${typeof constructor} which is not a function`)
+ }
+ var dummy = createNamedFunction(constructor.name || "unknownFunctionName", function() {});
+ dummy.prototype = constructor.prototype;
+ var obj = new dummy;
+ var r = constructor.apply(obj, argumentList);
+ return r instanceof Object ? r : obj
+ }
+ var __emval_get_method_caller = (argCount, argTypes, kind) => {
+ var types = emval_lookupTypes(argCount, argTypes);
+ var retType = types.shift();
+ argCount--;
+ var functionBody = `return function (obj, func, destructorsRef, args) {\n`;
+ var offset = 0;
+ var argsList = [];
+ if (kind === 0) {
+ argsList.push("obj")
+ }
+ var params = ["retType"];
+ var args = [retType];
+ for (var i = 0; i < argCount; ++i) {
+ argsList.push("arg" + i);
+ params.push("argType" + i);
+ args.push(types[i]);
+ functionBody += ` var arg${i} = argType${i}.readValueFromPointer(args${offset?"+"+offset:""});\n`;
+ offset += types[i]["argPackAdvance"]
+ }
+ var invoker = kind === 1 ? "new func" : "func.call";
+ functionBody += ` var rv = ${invoker}(${argsList.join(", ")});\n`;
+ if (!retType.isVoid) {
+ params.push("emval_returnValue");
+ args.push(emval_returnValue);
+ functionBody += " return emval_returnValue(retType, destructorsRef, rv);\n"
+ }
+ functionBody += "};\n";
+ params.push(functionBody);
+ var invokerFunction = newFunc(Function, params)(...args);
+ var functionName = `methodCaller<(${types.map(t=>t.name).join(", ")}) => ${retType.name}>`;
+ return emval_addMethodCaller(createNamedFunction(functionName, invokerFunction))
+ };
+ var __emval_get_property = (handle, key) => {
+ handle = Emval.toValue(handle);
+ key = Emval.toValue(key);
+ return Emval.toHandle(handle[key])
+ };
+ var __emval_incref = handle => {
+ if (handle > 9) {
+ emval_handles[handle + 1] += 1
+ }
+ };
+ var __emval_new_array = () => Emval.toHandle([]);
+ var __emval_new_cstring = v => Emval.toHandle(getStringOrSymbol(v));
+ var __emval_new_object = () => Emval.toHandle({});
+ var runDestructors = destructors => {
+ while (destructors.length) {
+ var ptr = destructors.pop();
+ var del = destructors.pop();
+ del(ptr)
+ }
+ };
+ var __emval_run_destructors = handle => {
+ var destructors = Emval.toValue(handle);
+ runDestructors(destructors);
+ __emval_decref(handle)
+ };
+ var __emval_set_property = (handle, key, value) => {
+ handle = Emval.toValue(handle);
+ key = Emval.toValue(key);
+ value = Emval.toValue(value);
+ handle[key] = value
+ };
+ var __emval_take_value = (type, arg) => {
+ type = requireRegisteredType(type, "_emval_take_value");
+ var v = type["readValueFromPointer"](arg);
+ return Emval.toHandle(v)
+ };
+
+ function __gmtime_js(time_low, time_high, tmPtr) {
+ var time = convertI32PairToI53Checked(time_low, time_high);
+ var date = new Date(time * 1e3);
+ HEAP32[tmPtr >> 2] = date.getUTCSeconds();
+ HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes();
+ HEAP32[tmPtr + 8 >> 2] = date.getUTCHours();
+ HEAP32[tmPtr + 12 >> 2] = date.getUTCDate();
+ HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth();
+ HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900;
+ HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();
+ var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);
+ var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;
+ HEAP32[tmPtr + 28 >> 2] = yday
+ }
+ var isLeapYear = year => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
+ var MONTH_DAYS_LEAP_CUMULATIVE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];
+ var MONTH_DAYS_REGULAR_CUMULATIVE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
+ var ydayFromDate = date => {
+ var leap = isLeapYear(date.getFullYear());
+ var monthDaysCumulative = leap ? MONTH_DAYS_LEAP_CUMULATIVE : MONTH_DAYS_REGULAR_CUMULATIVE;
+ var yday = monthDaysCumulative[date.getMonth()] + date.getDate() - 1;
+ return yday
+ };
+
+ function __localtime_js(time_low, time_high, tmPtr) {
+ var time = convertI32PairToI53Checked(time_low, time_high);
+ var date = new Date(time * 1e3);
+ HEAP32[tmPtr >> 2] = date.getSeconds();
+ HEAP32[tmPtr + 4 >> 2] = date.getMinutes();
+ HEAP32[tmPtr + 8 >> 2] = date.getHours();
+ HEAP32[tmPtr + 12 >> 2] = date.getDate();
+ HEAP32[tmPtr + 16 >> 2] = date.getMonth();
+ HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;
+ HEAP32[tmPtr + 24 >> 2] = date.getDay();
+ var yday = ydayFromDate(date) | 0;
+ HEAP32[tmPtr + 28 >> 2] = yday;
+ HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);
+ var start = new Date(date.getFullYear(), 0, 1);
+ var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();
+ var winterOffset = start.getTimezoneOffset();
+ var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;
+ HEAP32[tmPtr + 32 >> 2] = dst
+ }
+ var __mktime_js = function(tmPtr) {
+ var ret = (() => {
+ var date = new Date(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0);
+ var dst = HEAP32[tmPtr + 32 >> 2];
+ var guessedOffset = date.getTimezoneOffset();
+ var start = new Date(date.getFullYear(), 0, 1);
+ var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();
+ var winterOffset = start.getTimezoneOffset();
+ var dstOffset = Math.min(winterOffset, summerOffset);
+ if (dst < 0) {
+ HEAP32[tmPtr + 32 >> 2] = Number(summerOffset != winterOffset && dstOffset == guessedOffset)
+ } else if (dst > 0 != (dstOffset == guessedOffset)) {
+ var nonDstOffset = Math.max(winterOffset, summerOffset);
+ var trueOffset = dst > 0 ? dstOffset : nonDstOffset;
+ date.setTime(date.getTime() + (trueOffset - guessedOffset) * 6e4)
+ }
+ HEAP32[tmPtr + 24 >> 2] = date.getDay();
+ var yday = ydayFromDate(date) | 0;
+ HEAP32[tmPtr + 28 >> 2] = yday;
+ HEAP32[tmPtr >> 2] = date.getSeconds();
+ HEAP32[tmPtr + 4 >> 2] = date.getMinutes();
+ HEAP32[tmPtr + 8 >> 2] = date.getHours();
+ HEAP32[tmPtr + 12 >> 2] = date.getDate();
+ HEAP32[tmPtr + 16 >> 2] = date.getMonth();
+ HEAP32[tmPtr + 20 >> 2] = date.getYear();
+ var timeMs = date.getTime();
+ if (isNaN(timeMs)) {
+ return -1
+ }
+ return timeMs / 1e3
+ })();
+ return setTempRet0((tempDouble = ret, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)), ret >>> 0
+ };
+
+ function __mmap_js(len, prot, flags, fd, offset_low, offset_high, allocated, addr) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(37, 0, 1, len, prot, flags, fd, offset_low, offset_high, allocated, addr);
+ var offset = convertI32PairToI53Checked(offset_low, offset_high);
+ try {
+ if (isNaN(offset)) return 61;
+ var stream = SYSCALLS.getStreamFromFD(fd);
+ var res = FS.mmap(stream, len, offset, prot, flags);
+ var ptr = res.ptr;
+ HEAP32[allocated >> 2] = res.allocated;
+ HEAPU32[addr >> 2] = ptr;
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+
+ function __munmap_js(addr, len, prot, flags, fd, offset_low, offset_high) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(38, 0, 1, addr, len, prot, flags, fd, offset_low, offset_high);
+ var offset = convertI32PairToI53Checked(offset_low, offset_high);
+ try {
+ var stream = SYSCALLS.getStreamFromFD(fd);
+ if (prot & 2) {
+ SYSCALLS.doMsync(addr, stream, len, flags, offset)
+ }
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return -e.errno
+ }
+ }
+ var __timegm_js = function(tmPtr) {
+ var ret = (() => {
+ var time = Date.UTC(HEAP32[tmPtr + 20 >> 2] + 1900, HEAP32[tmPtr + 16 >> 2], HEAP32[tmPtr + 12 >> 2], HEAP32[tmPtr + 8 >> 2], HEAP32[tmPtr + 4 >> 2], HEAP32[tmPtr >> 2], 0);
+ var date = new Date(time);
+ HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();
+ var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);
+ var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;
+ HEAP32[tmPtr + 28 >> 2] = yday;
+ return date.getTime() / 1e3
+ })();
+ return setTempRet0((tempDouble = ret, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)), ret >>> 0
+ };
+ var __tzset_js = (timezone, daylight, std_name, dst_name) => {
+ var currentYear = (new Date).getFullYear();
+ var winter = new Date(currentYear, 0, 1);
+ var summer = new Date(currentYear, 6, 1);
+ var winterOffset = winter.getTimezoneOffset();
+ var summerOffset = summer.getTimezoneOffset();
+ var stdTimezoneOffset = Math.max(winterOffset, summerOffset);
+ HEAPU32[timezone >> 2] = stdTimezoneOffset * 60;
+ HEAP32[daylight >> 2] = Number(winterOffset != summerOffset);
+
+ function extractZone(date) {
+ var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/);
+ return match ? match[1] : "GMT"
+ }
+ var winterName = extractZone(winter);
+ var summerName = extractZone(summer);
+ if (summerOffset < winterOffset) {
+ stringToUTF8(winterName, std_name, 7);
+ stringToUTF8(summerName, dst_name, 7)
+ } else {
+ stringToUTF8(winterName, dst_name, 7);
+ stringToUTF8(summerName, std_name, 7)
+ }
+ };
+ var _abort = () => {
+ abort("native code called abort()")
+ };
+ var runtimeKeepalivePush = () => {
+ runtimeKeepaliveCounter += 1
+ };
+ var _emscripten_set_main_loop_timing = (mode, value) => {
+ Browser.mainLoop.timingMode = mode;
+ Browser.mainLoop.timingValue = value;
+ if (!Browser.mainLoop.func) {
+ err("emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up.");
+ return 1
+ }
+ if (!Browser.mainLoop.running) {
+ runtimeKeepalivePush();
+ Browser.mainLoop.running = true
+ }
+ if (mode == 0) {
+ Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setTimeout() {
+ var timeUntilNextTick = Math.max(0, Browser.mainLoop.tickStartTime + value - _emscripten_get_now()) | 0;
+ setTimeout(Browser.mainLoop.runner, timeUntilNextTick)
+ };
+ Browser.mainLoop.method = "timeout"
+ } else if (mode == 1) {
+ Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_rAF() {
+ Browser.requestAnimationFrame(Browser.mainLoop.runner)
+ };
+ Browser.mainLoop.method = "rAF"
+ } else if (mode == 2) {
+ if (typeof Browser.setImmediate == "undefined") {
+ if (typeof setImmediate == "undefined") {
+ var setImmediates = [];
+ var emscriptenMainLoopMessageId = "setimmediate";
+ var Browser_setImmediate_messageHandler = event => {
+ if (event.data === emscriptenMainLoopMessageId || event.data.target === emscriptenMainLoopMessageId) {
+ event.stopPropagation();
+ setImmediates.shift()()
+ }
+ };
+ addEventListener("message", Browser_setImmediate_messageHandler, true);
+ Browser.setImmediate = function Browser_emulated_setImmediate(func) {
+ setImmediates.push(func);
+ if (ENVIRONMENT_IS_WORKER) {
+ if (Module["setImmediates"] === undefined) Module["setImmediates"] = [];
+ Module["setImmediates"].push(func);
+ postMessage({
+ target: emscriptenMainLoopMessageId
+ })
+ } else postMessage(emscriptenMainLoopMessageId, "*")
+ }
+ } else {
+ Browser.setImmediate = setImmediate
+ }
+ }
+ Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setImmediate() {
+ Browser.setImmediate(Browser.mainLoop.runner)
+ };
+ Browser.mainLoop.method = "immediate"
+ }
+ return 0
+ };
+ var _emscripten_get_now;
+ _emscripten_get_now = () => performance.timeOrigin + performance.now();
+ var runtimeKeepalivePop = () => {
+ assert(runtimeKeepaliveCounter > 0);
+ runtimeKeepaliveCounter -= 1
+ };
+ var setMainLoop = (browserIterationFunc, fps, simulateInfiniteLoop, arg, noSetTiming) => {
+ assert(!Browser.mainLoop.func, "emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");
+ Browser.mainLoop.func = browserIterationFunc;
+ Browser.mainLoop.arg = arg;
+ var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop;
+
+ function checkIsRunning() {
+ if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) {
+ runtimeKeepalivePop();
+ maybeExit();
+ return false
+ }
+ return true
+ }
+ Browser.mainLoop.running = false;
+ Browser.mainLoop.runner = function Browser_mainLoop_runner() {
+ if (ABORT) return;
+ if (Browser.mainLoop.queue.length > 0) {
+ var start = Date.now();
+ var blocker = Browser.mainLoop.queue.shift();
+ blocker.func(blocker.arg);
+ if (Browser.mainLoop.remainingBlockers) {
+ var remaining = Browser.mainLoop.remainingBlockers;
+ var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining);
+ if (blocker.counted) {
+ Browser.mainLoop.remainingBlockers = next
+ } else {
+ next = next + .5;
+ Browser.mainLoop.remainingBlockers = (8 * remaining + next) / 9
+ }
+ }
+ Browser.mainLoop.updateStatus();
+ if (!checkIsRunning()) return;
+ setTimeout(Browser.mainLoop.runner, 0);
+ return
+ }
+ if (!checkIsRunning()) return;
+ Browser.mainLoop.currentFrameNumber = Browser.mainLoop.currentFrameNumber + 1 | 0;
+ if (Browser.mainLoop.timingMode == 1 && Browser.mainLoop.timingValue > 1 && Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0) {
+ Browser.mainLoop.scheduler();
+ return
+ } else if (Browser.mainLoop.timingMode == 0) {
+ Browser.mainLoop.tickStartTime = _emscripten_get_now()
+ }
+ if (typeof GL != "undefined" && GL.currentContext && !GL.currentContextIsProxied && !GL.currentContext.attributes.explicitSwapControl && GL.currentContext.GLctx.commit) {
+ GL.currentContext.GLctx.commit()
+ }
+ if (Browser.mainLoop.method === "timeout" && Module.ctx) {
+ warnOnce("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!");
+ Browser.mainLoop.method = ""
+ }
+ Browser.mainLoop.runIter(browserIterationFunc);
+ checkStackCookie();
+ if (!checkIsRunning()) return;
+ if (typeof SDL == "object") SDL.audio?.queueNewAudioData?.();
+ Browser.mainLoop.scheduler()
+ };
+ if (!noSetTiming) {
+ if (fps && fps > 0) {
+ _emscripten_set_main_loop_timing(0, 1e3 / fps)
+ } else {
+ _emscripten_set_main_loop_timing(1, 1)
+ }
+ Browser.mainLoop.scheduler()
+ }
+ if (simulateInfiniteLoop) {
+ throw "unwind"
+ }
+ };
+ var safeSetTimeout = (func, timeout) => {
+ runtimeKeepalivePush();
+ return setTimeout(() => {
+ runtimeKeepalivePop();
+ callUserCallback(func)
+ }, timeout)
+ };
+ var Browser = {
+ mainLoop: {
+ running: false,
+ scheduler: null,
+ method: "",
+ currentlyRunningMainloop: 0,
+ func: null,
+ arg: 0,
+ timingMode: 0,
+ timingValue: 0,
+ currentFrameNumber: 0,
+ queue: [],
+ pause() {
+ Browser.mainLoop.scheduler = null;
+ Browser.mainLoop.currentlyRunningMainloop++
+ },
+ resume() {
+ Browser.mainLoop.currentlyRunningMainloop++;
+ var timingMode = Browser.mainLoop.timingMode;
+ var timingValue = Browser.mainLoop.timingValue;
+ var func = Browser.mainLoop.func;
+ Browser.mainLoop.func = null;
+ setMainLoop(func, 0, false, Browser.mainLoop.arg, true);
+ _emscripten_set_main_loop_timing(timingMode, timingValue);
+ Browser.mainLoop.scheduler()
+ },
+ updateStatus() {
+ if (Module["setStatus"]) {
+ var message = Module["statusMessage"] || "Please wait...";
+ var remaining = Browser.mainLoop.remainingBlockers;
+ var expected = Browser.mainLoop.expectedBlockers;
+ if (remaining) {
+ if (remaining < expected) {
+ Module["setStatus"](`{message} ({expected - remaining}/{expected})`)
+ } else {
+ Module["setStatus"](message)
+ }
+ } else {
+ Module["setStatus"]("")
+ }
+ }
+ },
+ runIter(func) {
+ if (ABORT) return;
+ if (Module["preMainLoop"]) {
+ var preRet = Module["preMainLoop"]();
+ if (preRet === false) {
+ return
+ }
+ }
+ callUserCallback(func);
+ Module["postMainLoop"]?.()
+ }
+ },
+ isFullscreen: false,
+ pointerLock: false,
+ moduleContextCreatedCallbacks: [],
+ workers: [],
+ init() {
+ if (Browser.initted) return;
+ Browser.initted = true;
+ var imagePlugin = {};
+ imagePlugin["canHandle"] = function imagePlugin_canHandle(name) {
+ return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name)
+ };
+ imagePlugin["handle"] = function imagePlugin_handle(byteArray, name, onload, onerror) {
+ var b = new Blob([byteArray], {
+ type: Browser.getMimetype(name)
+ });
+ if (b.size !== byteArray.length) {
+ b = new Blob([new Uint8Array(byteArray).buffer], {
+ type: Browser.getMimetype(name)
+ })
+ }
+ var url = URL.createObjectURL(b);
+ assert(typeof url == "string", "createObjectURL must return a url as a string");
+ var img = new Image;
+ img.onload = () => {
+ assert(img.complete, `Image ${name} could not be decoded`);
+ var canvas = document.createElement("canvas");
+ canvas.width = img.width;
+ canvas.height = img.height;
+ var ctx = canvas.getContext("2d");
+ ctx.drawImage(img, 0, 0);
+ preloadedImages[name] = canvas;
+ URL.revokeObjectURL(url);
+ onload?.(byteArray)
+ };
+ img.onerror = event => {
+ err(`Image ${url} could not be decoded`);
+ onerror?.()
+ };
+ img.src = url
+ };
+ preloadPlugins.push(imagePlugin);
+ var audioPlugin = {};
+ audioPlugin["canHandle"] = function audioPlugin_canHandle(name) {
+ return !Module.noAudioDecoding && name.substr(-4) in {
+ ".ogg": 1,
+ ".wav": 1,
+ ".mp3": 1
+ }
+ };
+ audioPlugin["handle"] = function audioPlugin_handle(byteArray, name, onload, onerror) {
+ var done = false;
+
+ function finish(audio) {
+ if (done) return;
+ done = true;
+ preloadedAudios[name] = audio;
+ onload?.(byteArray)
+ }
+ var b = new Blob([byteArray], {
+ type: Browser.getMimetype(name)
+ });
+ var url = URL.createObjectURL(b);
+ assert(typeof url == "string", "createObjectURL must return a url as a string");
+ var audio = new Audio;
+ audio.addEventListener("canplaythrough", () => finish(audio), false);
+ audio.onerror = function audio_onerror(event) {
+ if (done) return;
+ err(`warning: browser could not fully decode audio ${name}, trying slower base64 approach`);
+
+ function encode64(data) {
+ var BASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ var PAD = "=";
+ var ret = "";
+ var leftchar = 0;
+ var leftbits = 0;
+ for (var i = 0; i < data.length; i++) {
+ leftchar = leftchar << 8 | data[i];
+ leftbits += 8;
+ while (leftbits >= 6) {
+ var curr = leftchar >> leftbits - 6 & 63;
+ leftbits -= 6;
+ ret += BASE[curr]
+ }
+ }
+ if (leftbits == 2) {
+ ret += BASE[(leftchar & 3) << 4];
+ ret += PAD + PAD
+ } else if (leftbits == 4) {
+ ret += BASE[(leftchar & 15) << 2];
+ ret += PAD
+ }
+ return ret
+ }
+ audio.src = "data:audio/x-" + name.substr(-3) + ";base64," + encode64(byteArray);
+ finish(audio)
+ };
+ audio.src = url;
+ safeSetTimeout(() => {
+ finish(audio)
+ }, 1e4)
+ };
+ preloadPlugins.push(audioPlugin);
+
+ function pointerLockChange() {
+ Browser.pointerLock = document["pointerLockElement"] === Module["canvas"] || document["mozPointerLockElement"] === Module["canvas"] || document["webkitPointerLockElement"] === Module["canvas"] || document["msPointerLockElement"] === Module["canvas"]
+ }
+ var canvas = Module["canvas"];
+ if (canvas) {
+ canvas.requestPointerLock = canvas["requestPointerLock"] || canvas["mozRequestPointerLock"] || canvas["webkitRequestPointerLock"] || canvas["msRequestPointerLock"] || (() => {});
+ canvas.exitPointerLock = document["exitPointerLock"] || document["mozExitPointerLock"] || document["webkitExitPointerLock"] || document["msExitPointerLock"] || (() => {});
+ canvas.exitPointerLock = canvas.exitPointerLock.bind(document);
+ document.addEventListener("pointerlockchange", pointerLockChange, false);
+ document.addEventListener("mozpointerlockchange", pointerLockChange, false);
+ document.addEventListener("webkitpointerlockchange", pointerLockChange, false);
+ document.addEventListener("mspointerlockchange", pointerLockChange, false);
+ if (Module["elementPointerLock"]) {
+ canvas.addEventListener("click", ev => {
+ if (!Browser.pointerLock && Module["canvas"].requestPointerLock) {
+ Module["canvas"].requestPointerLock();
+ ev.preventDefault()
+ }
+ }, false)
+ }
+ }
+ },
+ createContext(canvas, useWebGL, setInModule, webGLContextAttributes) {
+ if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx;
+ var ctx;
+ var contextHandle;
+ if (useWebGL) {
+ var contextAttributes = {
+ antialias: false,
+ alpha: false,
+ majorVersion: typeof WebGL2RenderingContext != "undefined" ? 2 : 1
+ };
+ if (webGLContextAttributes) {
+ for (var attribute in webGLContextAttributes) {
+ contextAttributes[attribute] = webGLContextAttributes[attribute]
+ }
+ }
+ if (typeof GL != "undefined") {
+ contextHandle = GL.createContext(canvas, contextAttributes);
+ if (contextHandle) {
+ ctx = GL.getContext(contextHandle).GLctx
+ }
+ }
+ } else {
+ ctx = canvas.getContext("2d")
+ }
+ if (!ctx) return null;
+ if (setInModule) {
+ if (!useWebGL) assert(typeof GLctx == "undefined", "cannot set in module if GLctx is used, but we are a non-GL context that would replace it");
+ Module.ctx = ctx;
+ if (useWebGL) GL.makeContextCurrent(contextHandle);
+ Module.useWebGL = useWebGL;
+ Browser.moduleContextCreatedCallbacks.forEach(callback => callback());
+ Browser.init()
+ }
+ return ctx
+ },
+ destroyContext(canvas, useWebGL, setInModule) {},
+ fullscreenHandlersInstalled: false,
+ lockPointer: undefined,
+ resizeCanvas: undefined,
+ requestFullscreen(lockPointer, resizeCanvas) {
+ Browser.lockPointer = lockPointer;
+ Browser.resizeCanvas = resizeCanvas;
+ if (typeof Browser.lockPointer == "undefined") Browser.lockPointer = true;
+ if (typeof Browser.resizeCanvas == "undefined") Browser.resizeCanvas = false;
+ var canvas = Module["canvas"];
+
+ function fullscreenChange() {
+ Browser.isFullscreen = false;
+ var canvasContainer = canvas.parentNode;
+ if ((document["fullscreenElement"] || document["mozFullScreenElement"] || document["msFullscreenElement"] || document["webkitFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvasContainer) {
+ canvas.exitFullscreen = Browser.exitFullscreen;
+ if (Browser.lockPointer) canvas.requestPointerLock();
+ Browser.isFullscreen = true;
+ if (Browser.resizeCanvas) {
+ Browser.setFullscreenCanvasSize()
+ } else {
+ Browser.updateCanvasDimensions(canvas)
+ }
+ } else {
+ canvasContainer.parentNode.insertBefore(canvas, canvasContainer);
+ canvasContainer.parentNode.removeChild(canvasContainer);
+ if (Browser.resizeCanvas) {
+ Browser.setWindowedCanvasSize()
+ } else {
+ Browser.updateCanvasDimensions(canvas)
+ }
+ }
+ Module["onFullScreen"]?.(Browser.isFullscreen);
+ Module["onFullscreen"]?.(Browser.isFullscreen)
+ }
+ if (!Browser.fullscreenHandlersInstalled) {
+ Browser.fullscreenHandlersInstalled = true;
+ document.addEventListener("fullscreenchange", fullscreenChange, false);
+ document.addEventListener("mozfullscreenchange", fullscreenChange, false);
+ document.addEventListener("webkitfullscreenchange", fullscreenChange, false);
+ document.addEventListener("MSFullscreenChange", fullscreenChange, false)
+ }
+ var canvasContainer = document.createElement("div");
+ canvas.parentNode.insertBefore(canvasContainer, canvas);
+ canvasContainer.appendChild(canvas);
+ canvasContainer.requestFullscreen = canvasContainer["requestFullscreen"] || canvasContainer["mozRequestFullScreen"] || canvasContainer["msRequestFullscreen"] || (canvasContainer["webkitRequestFullscreen"] ? () => canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]) : null) || (canvasContainer["webkitRequestFullScreen"] ? () => canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]) : null);
+ canvasContainer.requestFullscreen()
+ },
+ requestFullScreen() {
+ abort("Module.requestFullScreen has been replaced by Module.requestFullscreen (without a capital S)")
+ },
+ exitFullscreen() {
+ if (!Browser.isFullscreen) {
+ return false
+ }
+ var CFS = document["exitFullscreen"] || document["cancelFullScreen"] || document["mozCancelFullScreen"] || document["msExitFullscreen"] || document["webkitCancelFullScreen"] || (() => {});
+ CFS.apply(document, []);
+ return true
+ },
+ nextRAF: 0,
+ fakeRequestAnimationFrame(func) {
+ var now = Date.now();
+ if (Browser.nextRAF === 0) {
+ Browser.nextRAF = now + 1e3 / 60
+ } else {
+ while (now + 2 >= Browser.nextRAF) {
+ Browser.nextRAF += 1e3 / 60
+ }
+ }
+ var delay = Math.max(Browser.nextRAF - now, 0);
+ setTimeout(func, delay)
+ },
+ requestAnimationFrame(func) {
+ if (typeof requestAnimationFrame == "function") {
+ requestAnimationFrame(func);
+ return
+ }
+ var RAF = Browser.fakeRequestAnimationFrame;
+ RAF(func)
+ },
+ safeSetTimeout(func, timeout) {
+ return safeSetTimeout(func, timeout)
+ },
+ safeRequestAnimationFrame(func) {
+ runtimeKeepalivePush();
+ return Browser.requestAnimationFrame(() => {
+ runtimeKeepalivePop();
+ callUserCallback(func)
+ })
+ },
+ getMimetype(name) {
+ return {
+ "jpg": "image/jpeg",
+ "jpeg": "image/jpeg",
+ "png": "image/png",
+ "bmp": "image/bmp",
+ "ogg": "audio/ogg",
+ "wav": "audio/wav",
+ "mp3": "audio/mpeg"
+ } [name.substr(name.lastIndexOf(".") + 1)]
+ },
+ getUserMedia(func) {
+ window.getUserMedia ||= navigator["getUserMedia"] || navigator["mozGetUserMedia"];
+ window.getUserMedia(func)
+ },
+ getMovementX(event) {
+ return event["movementX"] || event["mozMovementX"] || event["webkitMovementX"] || 0
+ },
+ getMovementY(event) {
+ return event["movementY"] || event["mozMovementY"] || event["webkitMovementY"] || 0
+ },
+ getMouseWheelDelta(event) {
+ var delta = 0;
+ switch (event.type) {
+ case "DOMMouseScroll":
+ delta = event.detail / 3;
+ break;
+ case "mousewheel":
+ delta = event.wheelDelta / 120;
+ break;
+ case "wheel":
+ delta = event.deltaY;
+ switch (event.deltaMode) {
+ case 0:
+ delta /= 100;
+ break;
+ case 1:
+ delta /= 3;
+ break;
+ case 2:
+ delta *= 80;
+ break;
+ default:
+ throw "unrecognized mouse wheel delta mode: " + event.deltaMode
+ }
+ break;
+ default:
+ throw "unrecognized mouse wheel event: " + event.type
+ }
+ return delta
+ },
+ mouseX: 0,
+ mouseY: 0,
+ mouseMovementX: 0,
+ mouseMovementY: 0,
+ touches: {},
+ lastTouches: {},
+ calculateMouseCoords(pageX, pageY) {
+ var rect = Module["canvas"].getBoundingClientRect();
+ var cw = Module["canvas"].width;
+ var ch = Module["canvas"].height;
+ var scrollX = typeof window.scrollX != "undefined" ? window.scrollX : window.pageXOffset;
+ var scrollY = typeof window.scrollY != "undefined" ? window.scrollY : window.pageYOffset;
+ assert(typeof scrollX != "undefined" && typeof scrollY != "undefined", "Unable to retrieve scroll position, mouse positions likely broken.");
+ var adjustedX = pageX - (scrollX + rect.left);
+ var adjustedY = pageY - (scrollY + rect.top);
+ adjustedX = adjustedX * (cw / rect.width);
+ adjustedY = adjustedY * (ch / rect.height);
+ return {
+ x: adjustedX,
+ y: adjustedY
+ }
+ },
+ setMouseCoords(pageX, pageY) {
+ const {
+ x: x,
+ y: y
+ } = Browser.calculateMouseCoords(pageX, pageY);
+ Browser.mouseMovementX = x - Browser.mouseX;
+ Browser.mouseMovementY = y - Browser.mouseY;
+ Browser.mouseX = x;
+ Browser.mouseY = y
+ },
+ calculateMouseEvent(event) {
+ if (Browser.pointerLock) {
+ if (event.type != "mousemove" && "mozMovementX" in event) {
+ Browser.mouseMovementX = Browser.mouseMovementY = 0
+ } else {
+ Browser.mouseMovementX = Browser.getMovementX(event);
+ Browser.mouseMovementY = Browser.getMovementY(event)
+ }
+ if (typeof SDL != "undefined") {
+ Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;
+ Browser.mouseY = SDL.mouseY + Browser.mouseMovementY
+ } else {
+ Browser.mouseX += Browser.mouseMovementX;
+ Browser.mouseY += Browser.mouseMovementY
+ }
+ } else {
+ if (event.type === "touchstart" || event.type === "touchend" || event.type === "touchmove") {
+ var touch = event.touch;
+ if (touch === undefined) {
+ return
+ }
+ var coords = Browser.calculateMouseCoords(touch.pageX, touch.pageY);
+ if (event.type === "touchstart") {
+ Browser.lastTouches[touch.identifier] = coords;
+ Browser.touches[touch.identifier] = coords
+ } else if (event.type === "touchend" || event.type === "touchmove") {
+ var last = Browser.touches[touch.identifier];
+ last ||= coords;
+ Browser.lastTouches[touch.identifier] = last;
+ Browser.touches[touch.identifier] = coords
+ }
+ return
+ }
+ Browser.setMouseCoords(event.pageX, event.pageY)
+ }
+ },
+ resizeListeners: [],
+ updateResizeListeners() {
+ var canvas = Module["canvas"];
+ Browser.resizeListeners.forEach(listener => listener(canvas.width, canvas.height))
+ },
+ setCanvasSize(width, height, noUpdates) {
+ var canvas = Module["canvas"];
+ Browser.updateCanvasDimensions(canvas, width, height);
+ if (!noUpdates) Browser.updateResizeListeners()
+ },
+ windowedWidth: 0,
+ windowedHeight: 0,
+ setFullscreenCanvasSize() {
+ if (typeof SDL != "undefined") {
+ var flags = HEAPU32[SDL.screen >> 2];
+ flags = flags | 8388608;
+ HEAP32[SDL.screen >> 2] = flags
+ }
+ Browser.updateCanvasDimensions(Module["canvas"]);
+ Browser.updateResizeListeners()
+ },
+ setWindowedCanvasSize() {
+ if (typeof SDL != "undefined") {
+ var flags = HEAPU32[SDL.screen >> 2];
+ flags = flags & ~8388608;
+ HEAP32[SDL.screen >> 2] = flags
+ }
+ Browser.updateCanvasDimensions(Module["canvas"]);
+ Browser.updateResizeListeners()
+ },
+ updateCanvasDimensions(canvas, wNative, hNative) {
+ if (wNative && hNative) {
+ canvas.widthNative = wNative;
+ canvas.heightNative = hNative
+ } else {
+ wNative = canvas.widthNative;
+ hNative = canvas.heightNative
+ }
+ var w = wNative;
+ var h = hNative;
+ if (Module["forcedAspectRatio"] && Module["forcedAspectRatio"] > 0) {
+ if (w / h < Module["forcedAspectRatio"]) {
+ w = Math.round(h * Module["forcedAspectRatio"])
+ } else {
+ h = Math.round(w / Module["forcedAspectRatio"])
+ }
+ }
+ if ((document["fullscreenElement"] || document["mozFullScreenElement"] || document["msFullscreenElement"] || document["webkitFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvas.parentNode && typeof screen != "undefined") {
+ var factor = Math.min(screen.width / w, screen.height / h);
+ w = Math.round(w * factor);
+ h = Math.round(h * factor)
+ }
+ if (Browser.resizeCanvas) {
+ if (canvas.width != w) canvas.width = w;
+ if (canvas.height != h) canvas.height = h;
+ if (typeof canvas.style != "undefined") {
+ canvas.style.removeProperty("width");
+ canvas.style.removeProperty("height")
+ }
+ } else {
+ if (canvas.width != wNative) canvas.width = wNative;
+ if (canvas.height != hNative) canvas.height = hNative;
+ if (typeof canvas.style != "undefined") {
+ if (w != wNative || h != hNative) {
+ canvas.style.setProperty("width", w + "px", "important");
+ canvas.style.setProperty("height", h + "px", "important")
+ } else {
+ canvas.style.removeProperty("width");
+ canvas.style.removeProperty("height")
+ }
+ }
+ }
+ }
+ };
+ var EGL = {
+ errorCode: 12288,
+ defaultDisplayInitialized: false,
+ currentContext: 0,
+ currentReadSurface: 0,
+ currentDrawSurface: 0,
+ contextAttributes: {
+ alpha: false,
+ depth: false,
+ stencil: false,
+ antialias: false
+ },
+ stringCache: {},
+ setErrorCode(code) {
+ EGL.errorCode = code
+ },
+ chooseConfig(display, attribList, config, config_size, numConfigs) {
+ if (display != 62e3) {
+ EGL.setErrorCode(12296);
+ return 0
+ }
+ if (attribList) {
+ for (;;) {
+ var param = HEAP32[attribList >> 2];
+ if (param == 12321) {
+ var alphaSize = HEAP32[attribList + 4 >> 2];
+ EGL.contextAttributes.alpha = alphaSize > 0
+ } else if (param == 12325) {
+ var depthSize = HEAP32[attribList + 4 >> 2];
+ EGL.contextAttributes.depth = depthSize > 0
+ } else if (param == 12326) {
+ var stencilSize = HEAP32[attribList + 4 >> 2];
+ EGL.contextAttributes.stencil = stencilSize > 0
+ } else if (param == 12337) {
+ var samples = HEAP32[attribList + 4 >> 2];
+ EGL.contextAttributes.antialias = samples > 0
+ } else if (param == 12338) {
+ var samples = HEAP32[attribList + 4 >> 2];
+ EGL.contextAttributes.antialias = samples == 1
+ } else if (param == 12544) {
+ var requestedPriority = HEAP32[attribList + 4 >> 2];
+ EGL.contextAttributes.lowLatency = requestedPriority != 12547
+ } else if (param == 12344) {
+ break
+ }
+ attribList += 8
+ }
+ }
+ if ((!config || !config_size) && !numConfigs) {
+ EGL.setErrorCode(12300);
+ return 0
+ }
+ if (numConfigs) {
+ HEAP32[numConfigs >> 2] = 1
+ }
+ if (config && config_size > 0) {
+ HEAPU32[config >> 2] = 62002
+ }
+ EGL.setErrorCode(12288);
+ return 1
+ }
+ };
+
+ function _eglGetDisplay(nativeDisplayType) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(39, 0, 1, nativeDisplayType);
+ EGL.setErrorCode(12288);
+ if (nativeDisplayType != 0 && nativeDisplayType != 1) {
+ return 0
+ }
+ return 62e3
+ }
+ var readEmAsmArgsArray = [];
+ var readEmAsmArgs = (sigPtr, buf) => {
+ assert(Array.isArray(readEmAsmArgsArray));
+ assert(buf % 16 == 0);
+ readEmAsmArgsArray.length = 0;
+ var ch;
+ while (ch = HEAPU8[sigPtr++]) {
+ var chr = String.fromCharCode(ch);
+ var validChars = ["d", "f", "i", "p"];
+ assert(validChars.includes(chr), `Invalid character ${ch}("${chr}") in readEmAsmArgs! Use only [${validChars}], and do not specify "v" for void return argument.`);
+ var wide = ch != 105;
+ wide &= ch != 112;
+ buf += wide && buf % 8 ? 4 : 0;
+ readEmAsmArgsArray.push(ch == 112 ? HEAPU32[buf >> 2] : ch == 105 ? HEAP32[buf >> 2] : HEAPF64[buf >> 3]);
+ buf += wide ? 8 : 4
+ }
+ return readEmAsmArgsArray
+ };
+ var runMainThreadEmAsm = (emAsmAddr, sigPtr, argbuf, sync) => {
+ var args = readEmAsmArgs(sigPtr, argbuf);
+ if (ENVIRONMENT_IS_PTHREAD) {
+ return proxyToMainThread(0, emAsmAddr, sync, ...args)
+ }
+ assert(ASM_CONSTS.hasOwnProperty(emAsmAddr), `No EM_ASM constant found at address ${emAsmAddr}. The loaded WebAssembly file is likely out of sync with the generated JavaScript.`);
+ return ASM_CONSTS[emAsmAddr](...args)
+ };
+ var _emscripten_asm_const_async_on_main_thread = (emAsmAddr, sigPtr, argbuf) => runMainThreadEmAsm(emAsmAddr, sigPtr, argbuf, 0);
+ var runEmAsmFunction = (code, sigPtr, argbuf) => {
+ var args = readEmAsmArgs(sigPtr, argbuf);
+ assert(ASM_CONSTS.hasOwnProperty(code), `No EM_ASM constant found at address ${code}. The loaded WebAssembly file is likely out of sync with the generated JavaScript.`);
+ return ASM_CONSTS[code](...args)
+ };
+ var _emscripten_asm_const_int = (code, sigPtr, argbuf) => runEmAsmFunction(code, sigPtr, argbuf);
+ var _emscripten_asm_const_int_sync_on_main_thread = (emAsmAddr, sigPtr, argbuf) => runMainThreadEmAsm(emAsmAddr, sigPtr, argbuf, 1);
+ var _emscripten_cancel_main_loop = () => {
+ Browser.mainLoop.pause();
+ Browser.mainLoop.func = null
+ };
+ var _emscripten_check_blocking_allowed = () => {
+ if (ENVIRONMENT_IS_NODE) return;
+ if (ENVIRONMENT_IS_WORKER) return;
+ warnOnce("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")
+ };
+ var _emscripten_date_now = () => Date.now();
+ var _emscripten_err = str => err(UTF8ToString(str));
+ var _emscripten_exit_with_live_runtime = () => {
+ runtimeKeepalivePush();
+ throw "unwind"
+ };
+ var getHeapMax = () => HEAPU8.length;
+ var _emscripten_get_heap_max = () => getHeapMax();
+ var _emscripten_get_now_res = () => {
+ if (ENVIRONMENT_IS_NODE) {
+ return 1
+ }
+ return 1e3
+ };
+ var _glActiveTexture = x0 => GLctx.activeTexture(x0);
+ var _emscripten_glActiveTexture = _glActiveTexture;
+ var _glAttachShader = (program, shader) => {
+ GLctx.attachShader(GL.programs[program], GL.shaders[shader])
+ };
+ var _emscripten_glAttachShader = _glAttachShader;
+ var _glBeginQuery = (target, id) => {
+ GLctx.beginQuery(target, GL.queries[id])
+ };
+ var _emscripten_glBeginQuery = _glBeginQuery;
+ var _glBeginQueryEXT = (target, id) => {
+ GLctx.disjointTimerQueryExt["beginQueryEXT"](target, GL.queries[id])
+ };
+ var _emscripten_glBeginQueryEXT = _glBeginQueryEXT;
+ var _glBeginTransformFeedback = x0 => GLctx.beginTransformFeedback(x0);
+ var _emscripten_glBeginTransformFeedback = _glBeginTransformFeedback;
+ var _glBindAttribLocation = (program, index, name) => {
+ GLctx.bindAttribLocation(GL.programs[program], index, UTF8ToString(name))
+ };
+ var _emscripten_glBindAttribLocation = _glBindAttribLocation;
+ var _glBindBuffer = (target, buffer) => {
+ if (target == 35051) {
+ GLctx.currentPixelPackBufferBinding = buffer
+ } else if (target == 35052) {
+ GLctx.currentPixelUnpackBufferBinding = buffer
+ }
+ GLctx.bindBuffer(target, GL.buffers[buffer])
+ };
+ var _emscripten_glBindBuffer = _glBindBuffer;
+ var _glBindBufferBase = (target, index, buffer) => {
+ GLctx.bindBufferBase(target, index, GL.buffers[buffer])
+ };
+ var _emscripten_glBindBufferBase = _glBindBufferBase;
+ var _glBindBufferRange = (target, index, buffer, offset, ptrsize) => {
+ GLctx.bindBufferRange(target, index, GL.buffers[buffer], offset, ptrsize)
+ };
+ var _emscripten_glBindBufferRange = _glBindBufferRange;
+ var _glBindFramebuffer = (target, framebuffer) => {
+ GLctx.bindFramebuffer(target, framebuffer ? GL.framebuffers[framebuffer] : GL.currentContext.defaultFbo)
+ };
+ var _emscripten_glBindFramebuffer = _glBindFramebuffer;
+ var _glBindRenderbuffer = (target, renderbuffer) => {
+ GLctx.bindRenderbuffer(target, GL.renderbuffers[renderbuffer])
+ };
+ var _emscripten_glBindRenderbuffer = _glBindRenderbuffer;
+ var _glBindSampler = (unit, sampler) => {
+ GLctx.bindSampler(unit, GL.samplers[sampler])
+ };
+ var _emscripten_glBindSampler = _glBindSampler;
+ var _glBindTexture = (target, texture) => {
+ GLctx.bindTexture(target, GL.textures[texture])
+ };
+ var _emscripten_glBindTexture = _glBindTexture;
+ var _glBindTransformFeedback = (target, id) => {
+ GLctx.bindTransformFeedback(target, GL.transformFeedbacks[id])
+ };
+ var _emscripten_glBindTransformFeedback = _glBindTransformFeedback;
+ var _glBindVertexArray = vao => {
+ GLctx.bindVertexArray(GL.vaos[vao])
+ };
+ var _emscripten_glBindVertexArray = _glBindVertexArray;
+ var _glBlendColor = (x0, x1, x2, x3) => GLctx.blendColor(x0, x1, x2, x3);
+ var _emscripten_glBlendColor = _glBlendColor;
+ var _glBlendEquation = x0 => GLctx.blendEquation(x0);
+ var _emscripten_glBlendEquation = _glBlendEquation;
+ var _glBlendEquationSeparate = (x0, x1) => GLctx.blendEquationSeparate(x0, x1);
+ var _emscripten_glBlendEquationSeparate = _glBlendEquationSeparate;
+ var _glBlendFunc = (x0, x1) => GLctx.blendFunc(x0, x1);
+ var _emscripten_glBlendFunc = _glBlendFunc;
+ var _glBlendFuncSeparate = (x0, x1, x2, x3) => GLctx.blendFuncSeparate(x0, x1, x2, x3);
+ var _emscripten_glBlendFuncSeparate = _glBlendFuncSeparate;
+ var _glBlitFramebuffer = (x0, x1, x2, x3, x4, x5, x6, x7, x8, x9) => GLctx.blitFramebuffer(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9);
+ var _emscripten_glBlitFramebuffer = _glBlitFramebuffer;
+ var _glBufferData = (target, size, data, usage) => {
+ if (GL.currentContext.version >= 2) {
+ if (data && size) {
+ GLctx.bufferData(target, HEAPU8, usage, data, size)
+ } else {
+ GLctx.bufferData(target, size, usage)
+ }
+ return
+ }
+ GLctx.bufferData(target, data ? HEAPU8.subarray(data, data + size) : size, usage)
+ };
+ var _emscripten_glBufferData = _glBufferData;
+ var _glBufferSubData = (target, offset, size, data) => {
+ if (GL.currentContext.version >= 2) {
+ size && GLctx.bufferSubData(target, offset, HEAPU8, data, size);
+ return
+ }
+ GLctx.bufferSubData(target, offset, HEAPU8.subarray(data, data + size))
+ };
+ var _emscripten_glBufferSubData = _glBufferSubData;
+ var _glCheckFramebufferStatus = x0 => GLctx.checkFramebufferStatus(x0);
+ var _emscripten_glCheckFramebufferStatus = _glCheckFramebufferStatus;
+ var _glClear = x0 => GLctx.clear(x0);
+ var _emscripten_glClear = _glClear;
+ var _glClearBufferfi = (x0, x1, x2, x3) => GLctx.clearBufferfi(x0, x1, x2, x3);
+ var _emscripten_glClearBufferfi = _glClearBufferfi;
+ var _glClearBufferfv = (buffer, drawbuffer, value) => {
+ GLctx.clearBufferfv(buffer, drawbuffer, HEAPF32, value >> 2)
+ };
+ var _emscripten_glClearBufferfv = _glClearBufferfv;
+ var _glClearBufferiv = (buffer, drawbuffer, value) => {
+ GLctx.clearBufferiv(buffer, drawbuffer, HEAP32, value >> 2)
+ };
+ var _emscripten_glClearBufferiv = _glClearBufferiv;
+ var _glClearBufferuiv = (buffer, drawbuffer, value) => {
+ GLctx.clearBufferuiv(buffer, drawbuffer, HEAPU32, value >> 2)
+ };
+ var _emscripten_glClearBufferuiv = _glClearBufferuiv;
+ var _glClearColor = (x0, x1, x2, x3) => GLctx.clearColor(x0, x1, x2, x3);
+ var _emscripten_glClearColor = _glClearColor;
+ var _glClearDepthf = x0 => GLctx.clearDepth(x0);
+ var _emscripten_glClearDepthf = _glClearDepthf;
+ var _glClearStencil = x0 => GLctx.clearStencil(x0);
+ var _emscripten_glClearStencil = _glClearStencil;
+ var convertI32PairToI53 = (lo, hi) => {
+ assert(hi === (hi | 0));
+ return (lo >>> 0) + hi * 4294967296
+ };
+ var _glClientWaitSync = (sync, flags, timeout_low, timeout_high) => {
+ var timeout = convertI32PairToI53(timeout_low, timeout_high);
+ return GLctx.clientWaitSync(GL.syncs[sync], flags, timeout)
+ };
+ var _emscripten_glClientWaitSync = _glClientWaitSync;
+ var _glColorMask = (red, green, blue, alpha) => {
+ GLctx.colorMask(!!red, !!green, !!blue, !!alpha)
+ };
+ var _emscripten_glColorMask = _glColorMask;
+ var _glCompileShader = shader => {
+ GLctx.compileShader(GL.shaders[shader])
+ };
+ var _emscripten_glCompileShader = _glCompileShader;
+ var _glCompressedTexImage2D = (target, level, internalFormat, width, height, border, imageSize, data) => {
+ if (GL.currentContext.version >= 2) {
+ if (GLctx.currentPixelUnpackBufferBinding || !imageSize) {
+ GLctx.compressedTexImage2D(target, level, internalFormat, width, height, border, imageSize, data)
+ } else {
+ GLctx.compressedTexImage2D(target, level, internalFormat, width, height, border, HEAPU8, data, imageSize)
+ }
+ return
+ }
+ GLctx.compressedTexImage2D(target, level, internalFormat, width, height, border, data ? HEAPU8.subarray(data, data + imageSize) : null)
+ };
+ var _emscripten_glCompressedTexImage2D = _glCompressedTexImage2D;
+ var _glCompressedTexImage3D = (target, level, internalFormat, width, height, depth, border, imageSize, data) => {
+ if (GLctx.currentPixelUnpackBufferBinding) {
+ GLctx.compressedTexImage3D(target, level, internalFormat, width, height, depth, border, imageSize, data)
+ } else {
+ GLctx.compressedTexImage3D(target, level, internalFormat, width, height, depth, border, HEAPU8, data, imageSize)
+ }
+ };
+ var _emscripten_glCompressedTexImage3D = _glCompressedTexImage3D;
+ var _glCompressedTexSubImage2D = (target, level, xoffset, yoffset, width, height, format, imageSize, data) => {
+ if (GL.currentContext.version >= 2) {
+ if (GLctx.currentPixelUnpackBufferBinding || !imageSize) {
+ GLctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data)
+ } else {
+ GLctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, HEAPU8, data, imageSize)
+ }
+ return
+ }
+ GLctx.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, data ? HEAPU8.subarray(data, data + imageSize) : null)
+ };
+ var _emscripten_glCompressedTexSubImage2D = _glCompressedTexSubImage2D;
+ var _glCompressedTexSubImage3D = (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data) => {
+ if (GLctx.currentPixelUnpackBufferBinding) {
+ GLctx.compressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)
+ } else {
+ GLctx.compressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, HEAPU8, data, imageSize)
+ }
+ };
+ var _emscripten_glCompressedTexSubImage3D = _glCompressedTexSubImage3D;
+ var _glCopyBufferSubData = (x0, x1, x2, x3, x4) => GLctx.copyBufferSubData(x0, x1, x2, x3, x4);
+ var _emscripten_glCopyBufferSubData = _glCopyBufferSubData;
+ var _glCopyTexImage2D = (x0, x1, x2, x3, x4, x5, x6, x7) => GLctx.copyTexImage2D(x0, x1, x2, x3, x4, x5, x6, x7);
+ var _emscripten_glCopyTexImage2D = _glCopyTexImage2D;
+ var _glCopyTexSubImage2D = (x0, x1, x2, x3, x4, x5, x6, x7) => GLctx.copyTexSubImage2D(x0, x1, x2, x3, x4, x5, x6, x7);
+ var _emscripten_glCopyTexSubImage2D = _glCopyTexSubImage2D;
+ var _glCopyTexSubImage3D = (x0, x1, x2, x3, x4, x5, x6, x7, x8) => GLctx.copyTexSubImage3D(x0, x1, x2, x3, x4, x5, x6, x7, x8);
+ var _emscripten_glCopyTexSubImage3D = _glCopyTexSubImage3D;
+ var _glCreateProgram = () => {
+ var id = GL.getNewId(GL.programs);
+ var program = GLctx.createProgram();
+ program.name = id;
+ program.maxUniformLength = program.maxAttributeLength = program.maxUniformBlockNameLength = 0;
+ program.uniformIdCounter = 1;
+ GL.programs[id] = program;
+ return id
+ };
+ var _emscripten_glCreateProgram = _glCreateProgram;
+ var _glCreateShader = shaderType => {
+ var id = GL.getNewId(GL.shaders);
+ GL.shaders[id] = GLctx.createShader(shaderType);
+ return id
+ };
+ var _emscripten_glCreateShader = _glCreateShader;
+ var _glCullFace = x0 => GLctx.cullFace(x0);
+ var _emscripten_glCullFace = _glCullFace;
+ var _glDeleteBuffers = (n, buffers) => {
+ for (var i = 0; i < n; i++) {
+ var id = HEAP32[buffers + i * 4 >> 2];
+ var buffer = GL.buffers[id];
+ if (!buffer) continue;
+ GLctx.deleteBuffer(buffer);
+ buffer.name = 0;
+ GL.buffers[id] = null;
+ if (id == GLctx.currentPixelPackBufferBinding) GLctx.currentPixelPackBufferBinding = 0;
+ if (id == GLctx.currentPixelUnpackBufferBinding) GLctx.currentPixelUnpackBufferBinding = 0
+ }
+ };
+ var _emscripten_glDeleteBuffers = _glDeleteBuffers;
+ var _glDeleteFramebuffers = (n, framebuffers) => {
+ for (var i = 0; i < n; ++i) {
+ var id = HEAP32[framebuffers + i * 4 >> 2];
+ var framebuffer = GL.framebuffers[id];
+ if (!framebuffer) continue;
+ GLctx.deleteFramebuffer(framebuffer);
+ framebuffer.name = 0;
+ GL.framebuffers[id] = null
+ }
+ };
+ var _emscripten_glDeleteFramebuffers = _glDeleteFramebuffers;
+ var _glDeleteProgram = id => {
+ if (!id) return;
+ var program = GL.programs[id];
+ if (!program) {
+ GL.recordError(1281);
+ return
+ }
+ GLctx.deleteProgram(program);
+ program.name = 0;
+ GL.programs[id] = null
+ };
+ var _emscripten_glDeleteProgram = _glDeleteProgram;
+ var _glDeleteQueries = (n, ids) => {
+ for (var i = 0; i < n; i++) {
+ var id = HEAP32[ids + i * 4 >> 2];
+ var query = GL.queries[id];
+ if (!query) continue;
+ GLctx.deleteQuery(query);
+ GL.queries[id] = null
+ }
+ };
+ var _emscripten_glDeleteQueries = _glDeleteQueries;
+ var _glDeleteQueriesEXT = (n, ids) => {
+ for (var i = 0; i < n; i++) {
+ var id = HEAP32[ids + i * 4 >> 2];
+ var query = GL.queries[id];
+ if (!query) continue;
+ GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);
+ GL.queries[id] = null
+ }
+ };
+ var _emscripten_glDeleteQueriesEXT = _glDeleteQueriesEXT;
+ var _glDeleteRenderbuffers = (n, renderbuffers) => {
+ for (var i = 0; i < n; i++) {
+ var id = HEAP32[renderbuffers + i * 4 >> 2];
+ var renderbuffer = GL.renderbuffers[id];
+ if (!renderbuffer) continue;
+ GLctx.deleteRenderbuffer(renderbuffer);
+ renderbuffer.name = 0;
+ GL.renderbuffers[id] = null
+ }
+ };
+ var _emscripten_glDeleteRenderbuffers = _glDeleteRenderbuffers;
+ var _glDeleteSamplers = (n, samplers) => {
+ for (var i = 0; i < n; i++) {
+ var id = HEAP32[samplers + i * 4 >> 2];
+ var sampler = GL.samplers[id];
+ if (!sampler) continue;
+ GLctx.deleteSampler(sampler);
+ sampler.name = 0;
+ GL.samplers[id] = null
+ }
+ };
+ var _emscripten_glDeleteSamplers = _glDeleteSamplers;
+ var _glDeleteShader = id => {
+ if (!id) return;
+ var shader = GL.shaders[id];
+ if (!shader) {
+ GL.recordError(1281);
+ return
+ }
+ GLctx.deleteShader(shader);
+ GL.shaders[id] = null
+ };
+ var _emscripten_glDeleteShader = _glDeleteShader;
+ var _glDeleteSync = id => {
+ if (!id) return;
+ var sync = GL.syncs[id];
+ if (!sync) {
+ GL.recordError(1281);
+ return
+ }
+ GLctx.deleteSync(sync);
+ sync.name = 0;
+ GL.syncs[id] = null
+ };
+ var _emscripten_glDeleteSync = _glDeleteSync;
+ var _glDeleteTextures = (n, textures) => {
+ for (var i = 0; i < n; i++) {
+ var id = HEAP32[textures + i * 4 >> 2];
+ var texture = GL.textures[id];
+ if (!texture) continue;
+ GLctx.deleteTexture(texture);
+ texture.name = 0;
+ GL.textures[id] = null
+ }
+ };
+ var _emscripten_glDeleteTextures = _glDeleteTextures;
+ var _glDeleteTransformFeedbacks = (n, ids) => {
+ for (var i = 0; i < n; i++) {
+ var id = HEAP32[ids + i * 4 >> 2];
+ var transformFeedback = GL.transformFeedbacks[id];
+ if (!transformFeedback) continue;
+ GLctx.deleteTransformFeedback(transformFeedback);
+ transformFeedback.name = 0;
+ GL.transformFeedbacks[id] = null
+ }
+ };
+ var _emscripten_glDeleteTransformFeedbacks = _glDeleteTransformFeedbacks;
+ var _glDeleteVertexArrays = (n, vaos) => {
+ for (var i = 0; i < n; i++) {
+ var id = HEAP32[vaos + i * 4 >> 2];
+ GLctx.deleteVertexArray(GL.vaos[id]);
+ GL.vaos[id] = null
+ }
+ };
+ var _emscripten_glDeleteVertexArrays = _glDeleteVertexArrays;
+ var _glDepthFunc = x0 => GLctx.depthFunc(x0);
+ var _emscripten_glDepthFunc = _glDepthFunc;
+ var _glDepthMask = flag => {
+ GLctx.depthMask(!!flag)
+ };
+ var _emscripten_glDepthMask = _glDepthMask;
+ var _glDepthRangef = (x0, x1) => GLctx.depthRange(x0, x1);
+ var _emscripten_glDepthRangef = _glDepthRangef;
+ var _glDetachShader = (program, shader) => {
+ GLctx.detachShader(GL.programs[program], GL.shaders[shader])
+ };
+ var _emscripten_glDetachShader = _glDetachShader;
+ var _glDisable = x0 => GLctx.disable(x0);
+ var _emscripten_glDisable = _glDisable;
+ var _glDisableVertexAttribArray = index => {
+ GLctx.disableVertexAttribArray(index)
+ };
+ var _emscripten_glDisableVertexAttribArray = _glDisableVertexAttribArray;
+ var _glDrawArrays = (mode, first, count) => {
+ GLctx.drawArrays(mode, first, count)
+ };
+ var _emscripten_glDrawArrays = _glDrawArrays;
+ var _glDrawArraysInstanced = (mode, first, count, primcount) => {
+ GLctx.drawArraysInstanced(mode, first, count, primcount)
+ };
+ var _emscripten_glDrawArraysInstanced = _glDrawArraysInstanced;
+ var tempFixedLengthArray = [];
+ var _glDrawBuffers = (n, bufs) => {
+ var bufArray = tempFixedLengthArray[n];
+ for (var i = 0; i < n; i++) {
+ bufArray[i] = HEAP32[bufs + i * 4 >> 2]
+ }
+ GLctx.drawBuffers(bufArray)
+ };
+ var _emscripten_glDrawBuffers = _glDrawBuffers;
+ var _glDrawElements = (mode, count, type, indices) => {
+ GLctx.drawElements(mode, count, type, indices)
+ };
+ var _emscripten_glDrawElements = _glDrawElements;
+ var _glDrawElementsInstanced = (mode, count, type, indices, primcount) => {
+ GLctx.drawElementsInstanced(mode, count, type, indices, primcount)
+ };
+ var _emscripten_glDrawElementsInstanced = _glDrawElementsInstanced;
+ var _glDrawRangeElements = (mode, start, end, count, type, indices) => {
+ _glDrawElements(mode, count, type, indices)
+ };
+ var _emscripten_glDrawRangeElements = _glDrawRangeElements;
+ var _glEnable = x0 => GLctx.enable(x0);
+ var _emscripten_glEnable = _glEnable;
+ var _glEnableVertexAttribArray = index => {
+ GLctx.enableVertexAttribArray(index)
+ };
+ var _emscripten_glEnableVertexAttribArray = _glEnableVertexAttribArray;
+ var _glEndQuery = x0 => GLctx.endQuery(x0);
+ var _emscripten_glEndQuery = _glEndQuery;
+ var _glEndQueryEXT = target => {
+ GLctx.disjointTimerQueryExt["endQueryEXT"](target)
+ };
+ var _emscripten_glEndQueryEXT = _glEndQueryEXT;
+ var _glEndTransformFeedback = () => GLctx.endTransformFeedback();
+ var _emscripten_glEndTransformFeedback = _glEndTransformFeedback;
+ var _glFenceSync = (condition, flags) => {
+ var sync = GLctx.fenceSync(condition, flags);
+ if (sync) {
+ var id = GL.getNewId(GL.syncs);
+ sync.name = id;
+ GL.syncs[id] = sync;
+ return id
+ }
+ return 0
+ };
+ var _emscripten_glFenceSync = _glFenceSync;
+ var _glFinish = () => GLctx.finish();
+ var _emscripten_glFinish = _glFinish;
+ var _glFlush = () => GLctx.flush();
+ var _emscripten_glFlush = _glFlush;
+ var _glFramebufferRenderbuffer = (target, attachment, renderbuffertarget, renderbuffer) => {
+ GLctx.framebufferRenderbuffer(target, attachment, renderbuffertarget, GL.renderbuffers[renderbuffer])
+ };
+ var _emscripten_glFramebufferRenderbuffer = _glFramebufferRenderbuffer;
+ var _glFramebufferTexture2D = (target, attachment, textarget, texture, level) => {
+ GLctx.framebufferTexture2D(target, attachment, textarget, GL.textures[texture], level)
+ };
+ var _emscripten_glFramebufferTexture2D = _glFramebufferTexture2D;
+ var _glFramebufferTextureLayer = (target, attachment, texture, level, layer) => {
+ GLctx.framebufferTextureLayer(target, attachment, GL.textures[texture], level, layer)
+ };
+ var _emscripten_glFramebufferTextureLayer = _glFramebufferTextureLayer;
+ var _glFrontFace = x0 => GLctx.frontFace(x0);
+ var _emscripten_glFrontFace = _glFrontFace;
+ var _glGenBuffers = (n, buffers) => {
+ GL.genObject(n, buffers, "createBuffer", GL.buffers)
+ };
+ var _emscripten_glGenBuffers = _glGenBuffers;
+ var _glGenFramebuffers = (n, ids) => {
+ GL.genObject(n, ids, "createFramebuffer", GL.framebuffers)
+ };
+ var _emscripten_glGenFramebuffers = _glGenFramebuffers;
+ var _glGenQueries = (n, ids) => {
+ GL.genObject(n, ids, "createQuery", GL.queries)
+ };
+ var _emscripten_glGenQueries = _glGenQueries;
+ var _glGenQueriesEXT = (n, ids) => {
+ for (var i = 0; i < n; i++) {
+ var query = GLctx.disjointTimerQueryExt["createQueryEXT"]();
+ if (!query) {
+ GL.recordError(1282);
+ while (i < n) HEAP32[ids + i++ * 4 >> 2] = 0;
+ return
+ }
+ var id = GL.getNewId(GL.queries);
+ query.name = id;
+ GL.queries[id] = query;
+ HEAP32[ids + i * 4 >> 2] = id
+ }
+ };
+ var _emscripten_glGenQueriesEXT = _glGenQueriesEXT;
+ var _glGenRenderbuffers = (n, renderbuffers) => {
+ GL.genObject(n, renderbuffers, "createRenderbuffer", GL.renderbuffers)
+ };
+ var _emscripten_glGenRenderbuffers = _glGenRenderbuffers;
+ var _glGenSamplers = (n, samplers) => {
+ GL.genObject(n, samplers, "createSampler", GL.samplers)
+ };
+ var _emscripten_glGenSamplers = _glGenSamplers;
+ var _glGenTextures = (n, textures) => {
+ GL.genObject(n, textures, "createTexture", GL.textures)
+ };
+ var _emscripten_glGenTextures = _glGenTextures;
+ var _glGenTransformFeedbacks = (n, ids) => {
+ GL.genObject(n, ids, "createTransformFeedback", GL.transformFeedbacks)
+ };
+ var _emscripten_glGenTransformFeedbacks = _glGenTransformFeedbacks;
+ var _glGenVertexArrays = (n, arrays) => {
+ GL.genObject(n, arrays, "createVertexArray", GL.vaos)
+ };
+ var _emscripten_glGenVertexArrays = _glGenVertexArrays;
+ var _glGenerateMipmap = x0 => GLctx.generateMipmap(x0);
+ var _emscripten_glGenerateMipmap = _glGenerateMipmap;
+ var __glGetActiveAttribOrUniform = (funcName, program, index, bufSize, length, size, type, name) => {
+ program = GL.programs[program];
+ var info = GLctx[funcName](program, index);
+ if (info) {
+ var numBytesWrittenExclNull = name && stringToUTF8(info.name, name, bufSize);
+ if (length) HEAP32[length >> 2] = numBytesWrittenExclNull;
+ if (size) HEAP32[size >> 2] = info.size;
+ if (type) HEAP32[type >> 2] = info.type
+ }
+ };
+ var _glGetActiveAttrib = (program, index, bufSize, length, size, type, name) => {
+ __glGetActiveAttribOrUniform("getActiveAttrib", program, index, bufSize, length, size, type, name)
+ };
+ var _emscripten_glGetActiveAttrib = _glGetActiveAttrib;
+ var _glGetActiveUniform = (program, index, bufSize, length, size, type, name) => {
+ __glGetActiveAttribOrUniform("getActiveUniform", program, index, bufSize, length, size, type, name)
+ };
+ var _emscripten_glGetActiveUniform = _glGetActiveUniform;
+ var _glGetActiveUniformBlockName = (program, uniformBlockIndex, bufSize, length, uniformBlockName) => {
+ program = GL.programs[program];
+ var result = GLctx.getActiveUniformBlockName(program, uniformBlockIndex);
+ if (!result) return;
+ if (uniformBlockName && bufSize > 0) {
+ var numBytesWrittenExclNull = stringToUTF8(result, uniformBlockName, bufSize);
+ if (length) HEAP32[length >> 2] = numBytesWrittenExclNull
+ } else {
+ if (length) HEAP32[length >> 2] = 0
+ }
+ };
+ var _emscripten_glGetActiveUniformBlockName = _glGetActiveUniformBlockName;
+ var _glGetActiveUniformBlockiv = (program, uniformBlockIndex, pname, params) => {
+ if (!params) {
+ GL.recordError(1281);
+ return
+ }
+ program = GL.programs[program];
+ if (pname == 35393) {
+ var name = GLctx.getActiveUniformBlockName(program, uniformBlockIndex);
+ HEAP32[params >> 2] = name.length + 1;
+ return
+ }
+ var result = GLctx.getActiveUniformBlockParameter(program, uniformBlockIndex, pname);
+ if (result === null) return;
+ if (pname == 35395) {
+ for (var i = 0; i < result.length; i++) {
+ HEAP32[params + i * 4 >> 2] = result[i]
+ }
+ } else {
+ HEAP32[params >> 2] = result
+ }
+ };
+ var _emscripten_glGetActiveUniformBlockiv = _glGetActiveUniformBlockiv;
+ var _glGetActiveUniformsiv = (program, uniformCount, uniformIndices, pname, params) => {
+ if (!params) {
+ GL.recordError(1281);
+ return
+ }
+ if (uniformCount > 0 && uniformIndices == 0) {
+ GL.recordError(1281);
+ return
+ }
+ program = GL.programs[program];
+ var ids = [];
+ for (var i = 0; i < uniformCount; i++) {
+ ids.push(HEAP32[uniformIndices + i * 4 >> 2])
+ }
+ var result = GLctx.getActiveUniforms(program, ids, pname);
+ if (!result) return;
+ var len = result.length;
+ for (var i = 0; i < len; i++) {
+ HEAP32[params + i * 4 >> 2] = result[i]
+ }
+ };
+ var _emscripten_glGetActiveUniformsiv = _glGetActiveUniformsiv;
+ var _glGetAttachedShaders = (program, maxCount, count, shaders) => {
+ var result = GLctx.getAttachedShaders(GL.programs[program]);
+ var len = result.length;
+ if (len > maxCount) {
+ len = maxCount
+ }
+ HEAP32[count >> 2] = len;
+ for (var i = 0; i < len; ++i) {
+ var id = GL.shaders.indexOf(result[i]);
+ HEAP32[shaders + i * 4 >> 2] = id
+ }
+ };
+ var _emscripten_glGetAttachedShaders = _glGetAttachedShaders;
+ var _glGetAttribLocation = (program, name) => GLctx.getAttribLocation(GL.programs[program], UTF8ToString(name));
+ var _emscripten_glGetAttribLocation = _glGetAttribLocation;
+ var readI53FromI64 = ptr => HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;
+ var readI53FromU64 = ptr => HEAPU32[ptr >> 2] + HEAPU32[ptr + 4 >> 2] * 4294967296;
+ var writeI53ToI64 = (ptr, num) => {
+ HEAPU32[ptr >> 2] = num;
+ var lower = HEAPU32[ptr >> 2];
+ HEAPU32[ptr + 4 >> 2] = (num - lower) / 4294967296;
+ var deserialized = num >= 0 ? readI53FromU64(ptr) : readI53FromI64(ptr);
+ var offset = ptr >> 2;
+ if (deserialized != num) warnOnce(`writeI53ToI64() out of range: serialized JS Number ${num} to Wasm heap as bytes lo=${ptrToString(HEAPU32[offset])}, hi=${ptrToString(HEAPU32[offset+1])}, which deserializes back to ${deserialized} instead!`)
+ };
+ var webglGetExtensions = function $webglGetExtensions() {
+ var exts = getEmscriptenSupportedExtensions(GLctx);
+ exts = exts.concat(exts.map(e => "GL_" + e));
+ return exts
+ };
+ var emscriptenWebGLGet = (name_, p, type) => {
+ if (!p) {
+ GL.recordError(1281);
+ return
+ }
+ var ret = undefined;
+ switch (name_) {
+ case 36346:
+ ret = 1;
+ break;
+ case 36344:
+ if (type != 0 && type != 1) {
+ GL.recordError(1280)
+ }
+ return;
+ case 34814:
+ case 36345:
+ ret = 0;
+ break;
+ case 34466:
+ var formats = GLctx.getParameter(34467);
+ ret = formats ? formats.length : 0;
+ break;
+ case 33309:
+ if (GL.currentContext.version < 2) {
+ GL.recordError(1282);
+ return
+ }
+ ret = webglGetExtensions().length;
+ break;
+ case 33307:
+ case 33308:
+ if (GL.currentContext.version < 2) {
+ GL.recordError(1280);
+ return
+ }
+ ret = name_ == 33307 ? 3 : 0;
+ break
+ }
+ if (ret === undefined) {
+ var result = GLctx.getParameter(name_);
+ switch (typeof result) {
+ case "number":
+ ret = result;
+ break;
+ case "boolean":
+ ret = result ? 1 : 0;
+ break;
+ case "string":
+ GL.recordError(1280);
+ return;
+ case "object":
+ if (result === null) {
+ switch (name_) {
+ case 34964:
+ case 35725:
+ case 34965:
+ case 36006:
+ case 36007:
+ case 32873:
+ case 34229:
+ case 36662:
+ case 36663:
+ case 35053:
+ case 35055:
+ case 36010:
+ case 35097:
+ case 35869:
+ case 32874:
+ case 36389:
+ case 35983:
+ case 35368:
+ case 34068: {
+ ret = 0;
+ break
+ }
+ default: {
+ GL.recordError(1280);
+ return
+ }
+ }
+ } else if (result instanceof Float32Array || result instanceof Uint32Array || result instanceof Int32Array || result instanceof Array) {
+ for (var i = 0; i < result.length; ++i) {
+ switch (type) {
+ case 0:
+ HEAP32[p + i * 4 >> 2] = result[i];
+ break;
+ case 2:
+ HEAPF32[p + i * 4 >> 2] = result[i];
+ break;
+ case 4:
+ HEAP8[p + i] = result[i] ? 1 : 0;
+ break
+ }
+ }
+ return
+ } else {
+ try {
+ ret = result.name | 0
+ } catch (e) {
+ GL.recordError(1280);
+ err(`GL_INVALID_ENUM in glGet${type}v: Unknown object returned from WebGL getParameter(${name_})! (error: ${e})`);
+ return
+ }
+ }
+ break;
+ default:
+ GL.recordError(1280);
+ err(`GL_INVALID_ENUM in glGet${type}v: Native code calling glGet${type}v(${name_}) and it returns ${result} of type ${typeof result}!`);
+ return
+ }
+ }
+ switch (type) {
+ case 1:
+ writeI53ToI64(p, ret);
+ break;
+ case 0:
+ HEAP32[p >> 2] = ret;
+ break;
+ case 2:
+ HEAPF32[p >> 2] = ret;
+ break;
+ case 4:
+ HEAP8[p] = ret ? 1 : 0;
+ break
+ }
+ };
+ var _glGetBooleanv = (name_, p) => emscriptenWebGLGet(name_, p, 4);
+ var _emscripten_glGetBooleanv = _glGetBooleanv;
+ var _glGetBufferParameteri64v = (target, value, data) => {
+ if (!data) {
+ GL.recordError(1281);
+ return
+ }
+ writeI53ToI64(data, GLctx.getBufferParameter(target, value))
+ };
+ var _emscripten_glGetBufferParameteri64v = _glGetBufferParameteri64v;
+ var _glGetBufferParameteriv = (target, value, data) => {
+ if (!data) {
+ GL.recordError(1281);
+ return
+ }
+ HEAP32[data >> 2] = GLctx.getBufferParameter(target, value)
+ };
+ var _emscripten_glGetBufferParameteriv = _glGetBufferParameteriv;
+ var _glGetError = () => {
+ var error = GLctx.getError() || GL.lastError;
+ GL.lastError = 0;
+ return error
+ };
+ var _emscripten_glGetError = _glGetError;
+ var _glGetFloatv = (name_, p) => emscriptenWebGLGet(name_, p, 2);
+ var _emscripten_glGetFloatv = _glGetFloatv;
+ var _glGetFragDataLocation = (program, name) => GLctx.getFragDataLocation(GL.programs[program], UTF8ToString(name));
+ var _emscripten_glGetFragDataLocation = _glGetFragDataLocation;
+ var _glGetFramebufferAttachmentParameteriv = (target, attachment, pname, params) => {
+ var result = GLctx.getFramebufferAttachmentParameter(target, attachment, pname);
+ if (result instanceof WebGLRenderbuffer || result instanceof WebGLTexture) {
+ result = result.name | 0
+ }
+ HEAP32[params >> 2] = result
+ };
+ var _emscripten_glGetFramebufferAttachmentParameteriv = _glGetFramebufferAttachmentParameteriv;
+ var emscriptenWebGLGetIndexed = (target, index, data, type) => {
+ if (!data) {
+ GL.recordError(1281);
+ return
+ }
+ var result = GLctx.getIndexedParameter(target, index);
+ var ret;
+ switch (typeof result) {
+ case "boolean":
+ ret = result ? 1 : 0;
+ break;
+ case "number":
+ ret = result;
+ break;
+ case "object":
+ if (result === null) {
+ switch (target) {
+ case 35983:
+ case 35368:
+ ret = 0;
+ break;
+ default: {
+ GL.recordError(1280);
+ return
+ }
+ }
+ } else if (result instanceof WebGLBuffer) {
+ ret = result.name | 0
+ } else {
+ GL.recordError(1280);
+ return
+ }
+ break;
+ default:
+ GL.recordError(1280);
+ return
+ }
+ switch (type) {
+ case 1:
+ writeI53ToI64(data, ret);
+ break;
+ case 0:
+ HEAP32[data >> 2] = ret;
+ break;
+ case 2:
+ HEAPF32[data >> 2] = ret;
+ break;
+ case 4:
+ HEAP8[data] = ret ? 1 : 0;
+ break;
+ default:
+ throw "internal emscriptenWebGLGetIndexed() error, bad type: " + type
+ }
+ };
+ var _glGetInteger64i_v = (target, index, data) => emscriptenWebGLGetIndexed(target, index, data, 1);
+ var _emscripten_glGetInteger64i_v = _glGetInteger64i_v;
+ var _glGetInteger64v = (name_, p) => {
+ emscriptenWebGLGet(name_, p, 1)
+ };
+ var _emscripten_glGetInteger64v = _glGetInteger64v;
+ var _glGetIntegeri_v = (target, index, data) => emscriptenWebGLGetIndexed(target, index, data, 0);
+ var _emscripten_glGetIntegeri_v = _glGetIntegeri_v;
+ var _glGetIntegerv = (name_, p) => emscriptenWebGLGet(name_, p, 0);
+ var _emscripten_glGetIntegerv = _glGetIntegerv;
+ var _glGetInternalformativ = (target, internalformat, pname, bufSize, params) => {
+ if (bufSize < 0) {
+ GL.recordError(1281);
+ return
+ }
+ if (!params) {
+ GL.recordError(1281);
+ return
+ }
+ var ret = GLctx.getInternalformatParameter(target, internalformat, pname);
+ if (ret === null) return;
+ for (var i = 0; i < ret.length && i < bufSize; ++i) {
+ HEAP32[params + i * 4 >> 2] = ret[i]
+ }
+ };
+ var _emscripten_glGetInternalformativ = _glGetInternalformativ;
+ var _glGetProgramBinary = (program, bufSize, length, binaryFormat, binary) => {
+ GL.recordError(1282)
+ };
+ var _emscripten_glGetProgramBinary = _glGetProgramBinary;
+ var _glGetProgramInfoLog = (program, maxLength, length, infoLog) => {
+ var log = GLctx.getProgramInfoLog(GL.programs[program]);
+ if (log === null) log = "(unknown error)";
+ var numBytesWrittenExclNull = maxLength > 0 && infoLog ? stringToUTF8(log, infoLog, maxLength) : 0;
+ if (length) HEAP32[length >> 2] = numBytesWrittenExclNull
+ };
+ var _emscripten_glGetProgramInfoLog = _glGetProgramInfoLog;
+ var _glGetProgramiv = (program, pname, p) => {
+ if (!p) {
+ GL.recordError(1281);
+ return
+ }
+ if (program >= GL.counter) {
+ GL.recordError(1281);
+ return
+ }
+ program = GL.programs[program];
+ if (pname == 35716) {
+ var log = GLctx.getProgramInfoLog(program);
+ if (log === null) log = "(unknown error)";
+ HEAP32[p >> 2] = log.length + 1
+ } else if (pname == 35719) {
+ if (!program.maxUniformLength) {
+ for (var i = 0; i < GLctx.getProgramParameter(program, 35718); ++i) {
+ program.maxUniformLength = Math.max(program.maxUniformLength, GLctx.getActiveUniform(program, i).name.length + 1)
+ }
+ }
+ HEAP32[p >> 2] = program.maxUniformLength
+ } else if (pname == 35722) {
+ if (!program.maxAttributeLength) {
+ for (var i = 0; i < GLctx.getProgramParameter(program, 35721); ++i) {
+ program.maxAttributeLength = Math.max(program.maxAttributeLength, GLctx.getActiveAttrib(program, i).name.length + 1)
+ }
+ }
+ HEAP32[p >> 2] = program.maxAttributeLength
+ } else if (pname == 35381) {
+ if (!program.maxUniformBlockNameLength) {
+ for (var i = 0; i < GLctx.getProgramParameter(program, 35382); ++i) {
+ program.maxUniformBlockNameLength = Math.max(program.maxUniformBlockNameLength, GLctx.getActiveUniformBlockName(program, i).length + 1)
+ }
+ }
+ HEAP32[p >> 2] = program.maxUniformBlockNameLength
+ } else {
+ HEAP32[p >> 2] = GLctx.getProgramParameter(program, pname)
+ }
+ };
+ var _emscripten_glGetProgramiv = _glGetProgramiv;
+ var _glGetQueryObjecti64vEXT = (id, pname, params) => {
+ if (!params) {
+ GL.recordError(1281);
+ return
+ }
+ var query = GL.queries[id];
+ var param;
+ if (GL.currentContext.version < 2) {
+ param = GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query, pname)
+ } else {
+ param = GLctx.getQueryParameter(query, pname)
+ }
+ var ret;
+ if (typeof param == "boolean") {
+ ret = param ? 1 : 0
+ } else {
+ ret = param
+ }
+ writeI53ToI64(params, ret)
+ };
+ var _emscripten_glGetQueryObjecti64vEXT = _glGetQueryObjecti64vEXT;
+ var _glGetQueryObjectivEXT = (id, pname, params) => {
+ if (!params) {
+ GL.recordError(1281);
+ return
+ }
+ var query = GL.queries[id];
+ var param = GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query, pname);
+ var ret;
+ if (typeof param == "boolean") {
+ ret = param ? 1 : 0
+ } else {
+ ret = param
+ }
+ HEAP32[params >> 2] = ret
+ };
+ var _emscripten_glGetQueryObjectivEXT = _glGetQueryObjectivEXT;
+ var _glGetQueryObjectui64vEXT = _glGetQueryObjecti64vEXT;
+ var _emscripten_glGetQueryObjectui64vEXT = _glGetQueryObjectui64vEXT;
+ var _glGetQueryObjectuiv = (id, pname, params) => {
+ if (!params) {
+ GL.recordError(1281);
+ return
+ }
+ var query = GL.queries[id];
+ var param = GLctx.getQueryParameter(query, pname);
+ var ret;
+ if (typeof param == "boolean") {
+ ret = param ? 1 : 0
+ } else {
+ ret = param
+ }
+ HEAP32[params >> 2] = ret
+ };
+ var _emscripten_glGetQueryObjectuiv = _glGetQueryObjectuiv;
+ var _glGetQueryObjectuivEXT = _glGetQueryObjectivEXT;
+ var _emscripten_glGetQueryObjectuivEXT = _glGetQueryObjectuivEXT;
+ var _glGetQueryiv = (target, pname, params) => {
+ if (!params) {
+ GL.recordError(1281);
+ return
+ }
+ HEAP32[params >> 2] = GLctx.getQuery(target, pname)
+ };
+ var _emscripten_glGetQueryiv = _glGetQueryiv;
+ var _glGetQueryivEXT = (target, pname, params) => {
+ if (!params) {
+ GL.recordError(1281);
+ return
+ }
+ HEAP32[params >> 2] = GLctx.disjointTimerQueryExt["getQueryEXT"](target, pname)
+ };
+ var _emscripten_glGetQueryivEXT = _glGetQueryivEXT;
+ var _glGetRenderbufferParameteriv = (target, pname, params) => {
+ if (!params) {
+ GL.recordError(1281);
+ return
+ }
+ HEAP32[params >> 2] = GLctx.getRenderbufferParameter(target, pname)
+ };
+ var _emscripten_glGetRenderbufferParameteriv = _glGetRenderbufferParameteriv;
+ var _glGetSamplerParameterfv = (sampler, pname, params) => {
+ if (!params) {
+ GL.recordError(1281);
+ return
+ }
+ HEAPF32[params >> 2] = GLctx.getSamplerParameter(GL.samplers[sampler], pname)
+ };
+ var _emscripten_glGetSamplerParameterfv = _glGetSamplerParameterfv;
+ var _glGetSamplerParameteriv = (sampler, pname, params) => {
+ if (!params) {
+ GL.recordError(1281);
+ return
+ }
+ HEAP32[params >> 2] = GLctx.getSamplerParameter(GL.samplers[sampler], pname)
+ };
+ var _emscripten_glGetSamplerParameteriv = _glGetSamplerParameteriv;
+ var _glGetShaderInfoLog = (shader, maxLength, length, infoLog) => {
+ var log = GLctx.getShaderInfoLog(GL.shaders[shader]);
+ if (log === null) log = "(unknown error)";
+ var numBytesWrittenExclNull = maxLength > 0 && infoLog ? stringToUTF8(log, infoLog, maxLength) : 0;
+ if (length) HEAP32[length >> 2] = numBytesWrittenExclNull
+ };
+ var _emscripten_glGetShaderInfoLog = _glGetShaderInfoLog;
+ var _glGetShaderPrecisionFormat = (shaderType, precisionType, range, precision) => {
+ var result = GLctx.getShaderPrecisionFormat(shaderType, precisionType);
+ HEAP32[range >> 2] = result.rangeMin;
+ HEAP32[range + 4 >> 2] = result.rangeMax;
+ HEAP32[precision >> 2] = result.precision
+ };
+ var _emscripten_glGetShaderPrecisionFormat = _glGetShaderPrecisionFormat;
+ var _glGetShaderSource = (shader, bufSize, length, source) => {
+ var result = GLctx.getShaderSource(GL.shaders[shader]);
+ if (!result) return;
+ var numBytesWrittenExclNull = bufSize > 0 && source ? stringToUTF8(result, source, bufSize) : 0;
+ if (length) HEAP32[length >> 2] = numBytesWrittenExclNull
+ };
+ var _emscripten_glGetShaderSource = _glGetShaderSource;
+ var _glGetShaderiv = (shader, pname, p) => {
+ if (!p) {
+ GL.recordError(1281);
+ return
+ }
+ if (pname == 35716) {
+ var log = GLctx.getShaderInfoLog(GL.shaders[shader]);
+ if (log === null) log = "(unknown error)";
+ var logLength = log ? log.length + 1 : 0;
+ HEAP32[p >> 2] = logLength
+ } else if (pname == 35720) {
+ var source = GLctx.getShaderSource(GL.shaders[shader]);
+ var sourceLength = source ? source.length + 1 : 0;
+ HEAP32[p >> 2] = sourceLength
+ } else {
+ HEAP32[p >> 2] = GLctx.getShaderParameter(GL.shaders[shader], pname)
+ }
+ };
+ var _emscripten_glGetShaderiv = _glGetShaderiv;
+ var stringToNewUTF8 = str => {
+ var size = lengthBytesUTF8(str) + 1;
+ var ret = _malloc(size);
+ if (ret) stringToUTF8(str, ret, size);
+ return ret
+ };
+ var _glGetString = name_ => {
+ var ret = GL.stringCache[name_];
+ if (!ret) {
+ switch (name_) {
+ case 7939:
+ ret = stringToNewUTF8(webglGetExtensions().join(" "));
+ break;
+ case 7936:
+ case 7937:
+ case 37445:
+ case 37446:
+ var s = GLctx.getParameter(name_);
+ if (!s) {
+ GL.recordError(1280)
+ }
+ ret = s ? stringToNewUTF8(s) : 0;
+ break;
+ case 7938:
+ var glVersion = GLctx.getParameter(7938);
+ if (GL.currentContext.version >= 2) glVersion = `OpenGL ES 3.0 (${glVersion})`;
+ else {
+ glVersion = `OpenGL ES 2.0 (${glVersion})`
+ }
+ ret = stringToNewUTF8(glVersion);
+ break;
+ case 35724:
+ var glslVersion = GLctx.getParameter(35724);
+ var ver_re = /^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;
+ var ver_num = glslVersion.match(ver_re);
+ if (ver_num !== null) {
+ if (ver_num[1].length == 3) ver_num[1] = ver_num[1] + "0";
+ glslVersion = `OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`
+ }
+ ret = stringToNewUTF8(glslVersion);
+ break;
+ default:
+ GL.recordError(1280)
+ }
+ GL.stringCache[name_] = ret
+ }
+ return ret
+ };
+ var _emscripten_glGetString = _glGetString;
+ var _glGetStringi = (name, index) => {
+ if (GL.currentContext.version < 2) {
+ GL.recordError(1282);
+ return 0
+ }
+ var stringiCache = GL.stringiCache[name];
+ if (stringiCache) {
+ if (index < 0 || index >= stringiCache.length) {
+ GL.recordError(1281);
+ return 0
+ }
+ return stringiCache[index]
+ }
+ switch (name) {
+ case 7939:
+ var exts = webglGetExtensions().map(stringToNewUTF8);
+ stringiCache = GL.stringiCache[name] = exts;
+ if (index < 0 || index >= stringiCache.length) {
+ GL.recordError(1281);
+ return 0
+ }
+ return stringiCache[index];
+ default:
+ GL.recordError(1280);
+ return 0
+ }
+ };
+ var _emscripten_glGetStringi = _glGetStringi;
+ var _glGetSynciv = (sync, pname, bufSize, length, values) => {
+ if (bufSize < 0) {
+ GL.recordError(1281);
+ return
+ }
+ if (!values) {
+ GL.recordError(1281);
+ return
+ }
+ var ret = GLctx.getSyncParameter(GL.syncs[sync], pname);
+ if (ret !== null) {
+ HEAP32[values >> 2] = ret;
+ if (length) HEAP32[length >> 2] = 1
+ }
+ };
+ var _emscripten_glGetSynciv = _glGetSynciv;
+ var _glGetTexParameterfv = (target, pname, params) => {
+ if (!params) {
+ GL.recordError(1281);
+ return
+ }
+ HEAPF32[params >> 2] = GLctx.getTexParameter(target, pname)
+ };
+ var _emscripten_glGetTexParameterfv = _glGetTexParameterfv;
+ var _glGetTexParameteriv = (target, pname, params) => {
+ if (!params) {
+ GL.recordError(1281);
+ return
+ }
+ HEAP32[params >> 2] = GLctx.getTexParameter(target, pname)
+ };
+ var _emscripten_glGetTexParameteriv = _glGetTexParameteriv;
+ var _glGetTransformFeedbackVarying = (program, index, bufSize, length, size, type, name) => {
+ program = GL.programs[program];
+ var info = GLctx.getTransformFeedbackVarying(program, index);
+ if (!info) return;
+ if (name && bufSize > 0) {
+ var numBytesWrittenExclNull = stringToUTF8(info.name, name, bufSize);
+ if (length) HEAP32[length >> 2] = numBytesWrittenExclNull
+ } else {
+ if (length) HEAP32[length >> 2] = 0
+ }
+ if (size) HEAP32[size >> 2] = info.size;
+ if (type) HEAP32[type >> 2] = info.type
+ };
+ var _emscripten_glGetTransformFeedbackVarying = _glGetTransformFeedbackVarying;
+ var _glGetUniformBlockIndex = (program, uniformBlockName) => GLctx.getUniformBlockIndex(GL.programs[program], UTF8ToString(uniformBlockName));
+ var _emscripten_glGetUniformBlockIndex = _glGetUniformBlockIndex;
+ var _glGetUniformIndices = (program, uniformCount, uniformNames, uniformIndices) => {
+ if (!uniformIndices) {
+ GL.recordError(1281);
+ return
+ }
+ if (uniformCount > 0 && (uniformNames == 0 || uniformIndices == 0)) {
+ GL.recordError(1281);
+ return
+ }
+ program = GL.programs[program];
+ var names = [];
+ for (var i = 0; i < uniformCount; i++) names.push(UTF8ToString(HEAP32[uniformNames + i * 4 >> 2]));
+ var result = GLctx.getUniformIndices(program, names);
+ if (!result) return;
+ var len = result.length;
+ for (var i = 0; i < len; i++) {
+ HEAP32[uniformIndices + i * 4 >> 2] = result[i]
+ }
+ };
+ var _emscripten_glGetUniformIndices = _glGetUniformIndices;
+ var webglGetLeftBracePos = name => name.slice(-1) == "]" && name.lastIndexOf("[");
+ var webglPrepareUniformLocationsBeforeFirstUse = program => {
+ var uniformLocsById = program.uniformLocsById,
+ uniformSizeAndIdsByName = program.uniformSizeAndIdsByName,
+ i, j;
+ if (!uniformLocsById) {
+ program.uniformLocsById = uniformLocsById = {};
+ program.uniformArrayNamesById = {};
+ for (i = 0; i < GLctx.getProgramParameter(program, 35718); ++i) {
+ var u = GLctx.getActiveUniform(program, i);
+ var nm = u.name;
+ var sz = u.size;
+ var lb = webglGetLeftBracePos(nm);
+ var arrayName = lb > 0 ? nm.slice(0, lb) : nm;
+ var id = program.uniformIdCounter;
+ program.uniformIdCounter += sz;
+ uniformSizeAndIdsByName[arrayName] = [sz, id];
+ for (j = 0; j < sz; ++j) {
+ uniformLocsById[id] = j;
+ program.uniformArrayNamesById[id++] = arrayName
+ }
+ }
+ }
+ };
+ var _glGetUniformLocation = (program, name) => {
+ name = UTF8ToString(name);
+ if (program = GL.programs[program]) {
+ webglPrepareUniformLocationsBeforeFirstUse(program);
+ var uniformLocsById = program.uniformLocsById;
+ var arrayIndex = 0;
+ var uniformBaseName = name;
+ var leftBrace = webglGetLeftBracePos(name);
+ if (leftBrace > 0) {
+ arrayIndex = jstoi_q(name.slice(leftBrace + 1)) >>> 0;
+ uniformBaseName = name.slice(0, leftBrace)
+ }
+ var sizeAndId = program.uniformSizeAndIdsByName[uniformBaseName];
+ if (sizeAndId && arrayIndex < sizeAndId[0]) {
+ arrayIndex += sizeAndId[1];
+ if (uniformLocsById[arrayIndex] = uniformLocsById[arrayIndex] || GLctx.getUniformLocation(program, name)) {
+ return arrayIndex
+ }
+ }
+ } else {
+ GL.recordError(1281)
+ }
+ return -1
+ };
+ var _emscripten_glGetUniformLocation = _glGetUniformLocation;
+ var webglGetUniformLocation = location => {
+ var p = GLctx.currentProgram;
+ if (p) {
+ var webglLoc = p.uniformLocsById[location];
+ if (typeof webglLoc == "number") {
+ p.uniformLocsById[location] = webglLoc = GLctx.getUniformLocation(p, p.uniformArrayNamesById[location] + (webglLoc > 0 ? `[${webglLoc}]` : ""))
+ }
+ return webglLoc
+ } else {
+ GL.recordError(1282)
+ }
+ };
+ var emscriptenWebGLGetUniform = (program, location, params, type) => {
+ if (!params) {
+ GL.recordError(1281);
+ return
+ }
+ program = GL.programs[program];
+ webglPrepareUniformLocationsBeforeFirstUse(program);
+ var data = GLctx.getUniform(program, webglGetUniformLocation(location));
+ if (typeof data == "number" || typeof data == "boolean") {
+ switch (type) {
+ case 0:
+ HEAP32[params >> 2] = data;
+ break;
+ case 2:
+ HEAPF32[params >> 2] = data;
+ break
+ }
+ } else {
+ for (var i = 0; i < data.length; i++) {
+ switch (type) {
+ case 0:
+ HEAP32[params + i * 4 >> 2] = data[i];
+ break;
+ case 2:
+ HEAPF32[params + i * 4 >> 2] = data[i];
+ break
+ }
+ }
+ }
+ };
+ var _glGetUniformfv = (program, location, params) => {
+ emscriptenWebGLGetUniform(program, location, params, 2)
+ };
+ var _emscripten_glGetUniformfv = _glGetUniformfv;
+ var _glGetUniformiv = (program, location, params) => {
+ emscriptenWebGLGetUniform(program, location, params, 0)
+ };
+ var _emscripten_glGetUniformiv = _glGetUniformiv;
+ var _glGetUniformuiv = (program, location, params) => emscriptenWebGLGetUniform(program, location, params, 0);
+ var _emscripten_glGetUniformuiv = _glGetUniformuiv;
+ var emscriptenWebGLGetVertexAttrib = (index, pname, params, type) => {
+ if (!params) {
+ GL.recordError(1281);
+ return
+ }
+ var data = GLctx.getVertexAttrib(index, pname);
+ if (pname == 34975) {
+ HEAP32[params >> 2] = data && data["name"]
+ } else if (typeof data == "number" || typeof data == "boolean") {
+ switch (type) {
+ case 0:
+ HEAP32[params >> 2] = data;
+ break;
+ case 2:
+ HEAPF32[params >> 2] = data;
+ break;
+ case 5:
+ HEAP32[params >> 2] = Math.fround(data);
+ break
+ }
+ } else {
+ for (var i = 0; i < data.length; i++) {
+ switch (type) {
+ case 0:
+ HEAP32[params + i * 4 >> 2] = data[i];
+ break;
+ case 2:
+ HEAPF32[params + i * 4 >> 2] = data[i];
+ break;
+ case 5:
+ HEAP32[params + i * 4 >> 2] = Math.fround(data[i]);
+ break
+ }
+ }
+ }
+ };
+ var _glGetVertexAttribIiv = (index, pname, params) => {
+ emscriptenWebGLGetVertexAttrib(index, pname, params, 0)
+ };
+ var _emscripten_glGetVertexAttribIiv = _glGetVertexAttribIiv;
+ var _glGetVertexAttribIuiv = _glGetVertexAttribIiv;
+ var _emscripten_glGetVertexAttribIuiv = _glGetVertexAttribIuiv;
+ var _glGetVertexAttribPointerv = (index, pname, pointer) => {
+ if (!pointer) {
+ GL.recordError(1281);
+ return
+ }
+ HEAP32[pointer >> 2] = GLctx.getVertexAttribOffset(index, pname)
+ };
+ var _emscripten_glGetVertexAttribPointerv = _glGetVertexAttribPointerv;
+ var _glGetVertexAttribfv = (index, pname, params) => {
+ emscriptenWebGLGetVertexAttrib(index, pname, params, 2)
+ };
+ var _emscripten_glGetVertexAttribfv = _glGetVertexAttribfv;
+ var _glGetVertexAttribiv = (index, pname, params) => {
+ emscriptenWebGLGetVertexAttrib(index, pname, params, 5)
+ };
+ var _emscripten_glGetVertexAttribiv = _glGetVertexAttribiv;
+ var _glHint = (x0, x1) => GLctx.hint(x0, x1);
+ var _emscripten_glHint = _glHint;
+ var _glInvalidateFramebuffer = (target, numAttachments, attachments) => {
+ var list = tempFixedLengthArray[numAttachments];
+ for (var i = 0; i < numAttachments; i++) {
+ list[i] = HEAP32[attachments + i * 4 >> 2]
+ }
+ GLctx.invalidateFramebuffer(target, list)
+ };
+ var _emscripten_glInvalidateFramebuffer = _glInvalidateFramebuffer;
+ var _glInvalidateSubFramebuffer = (target, numAttachments, attachments, x, y, width, height) => {
+ var list = tempFixedLengthArray[numAttachments];
+ for (var i = 0; i < numAttachments; i++) {
+ list[i] = HEAP32[attachments + i * 4 >> 2]
+ }
+ GLctx.invalidateSubFramebuffer(target, list, x, y, width, height)
+ };
+ var _emscripten_glInvalidateSubFramebuffer = _glInvalidateSubFramebuffer;
+ var _glIsBuffer = buffer => {
+ var b = GL.buffers[buffer];
+ if (!b) return 0;
+ return GLctx.isBuffer(b)
+ };
+ var _emscripten_glIsBuffer = _glIsBuffer;
+ var _glIsEnabled = x0 => GLctx.isEnabled(x0);
+ var _emscripten_glIsEnabled = _glIsEnabled;
+ var _glIsFramebuffer = framebuffer => {
+ var fb = GL.framebuffers[framebuffer];
+ if (!fb) return 0;
+ return GLctx.isFramebuffer(fb)
+ };
+ var _emscripten_glIsFramebuffer = _glIsFramebuffer;
+ var _glIsProgram = program => {
+ program = GL.programs[program];
+ if (!program) return 0;
+ return GLctx.isProgram(program)
+ };
+ var _emscripten_glIsProgram = _glIsProgram;
+ var _glIsQuery = id => {
+ var query = GL.queries[id];
+ if (!query) return 0;
+ return GLctx.isQuery(query)
+ };
+ var _emscripten_glIsQuery = _glIsQuery;
+ var _glIsQueryEXT = id => {
+ var query = GL.queries[id];
+ if (!query) return 0;
+ return GLctx.disjointTimerQueryExt["isQueryEXT"](query)
+ };
+ var _emscripten_glIsQueryEXT = _glIsQueryEXT;
+ var _glIsRenderbuffer = renderbuffer => {
+ var rb = GL.renderbuffers[renderbuffer];
+ if (!rb) return 0;
+ return GLctx.isRenderbuffer(rb)
+ };
+ var _emscripten_glIsRenderbuffer = _glIsRenderbuffer;
+ var _glIsSampler = id => {
+ var sampler = GL.samplers[id];
+ if (!sampler) return 0;
+ return GLctx.isSampler(sampler)
+ };
+ var _emscripten_glIsSampler = _glIsSampler;
+ var _glIsShader = shader => {
+ var s = GL.shaders[shader];
+ if (!s) return 0;
+ return GLctx.isShader(s)
+ };
+ var _emscripten_glIsShader = _glIsShader;
+ var _glIsSync = sync => GLctx.isSync(GL.syncs[sync]);
+ var _emscripten_glIsSync = _glIsSync;
+ var _glIsTexture = id => {
+ var texture = GL.textures[id];
+ if (!texture) return 0;
+ return GLctx.isTexture(texture)
+ };
+ var _emscripten_glIsTexture = _glIsTexture;
+ var _glIsTransformFeedback = id => GLctx.isTransformFeedback(GL.transformFeedbacks[id]);
+ var _emscripten_glIsTransformFeedback = _glIsTransformFeedback;
+ var _glIsVertexArray = array => {
+ var vao = GL.vaos[array];
+ if (!vao) return 0;
+ return GLctx.isVertexArray(vao)
+ };
+ var _emscripten_glIsVertexArray = _glIsVertexArray;
+ var _glLineWidth = x0 => GLctx.lineWidth(x0);
+ var _emscripten_glLineWidth = _glLineWidth;
+ var _glLinkProgram = program => {
+ program = GL.programs[program];
+ GLctx.linkProgram(program);
+ program.uniformLocsById = 0;
+ program.uniformSizeAndIdsByName = {}
+ };
+ var _emscripten_glLinkProgram = _glLinkProgram;
+ var _glPauseTransformFeedback = () => GLctx.pauseTransformFeedback();
+ var _emscripten_glPauseTransformFeedback = _glPauseTransformFeedback;
+ var _glPixelStorei = (pname, param) => {
+ if (pname == 3317) {
+ GL.unpackAlignment = param
+ }
+ GLctx.pixelStorei(pname, param)
+ };
+ var _emscripten_glPixelStorei = _glPixelStorei;
+ var _glPolygonOffset = (x0, x1) => GLctx.polygonOffset(x0, x1);
+ var _emscripten_glPolygonOffset = _glPolygonOffset;
+ var _glProgramBinary = (program, binaryFormat, binary, length) => {
+ GL.recordError(1280)
+ };
+ var _emscripten_glProgramBinary = _glProgramBinary;
+ var _glProgramParameteri = (program, pname, value) => {
+ GL.recordError(1280)
+ };
+ var _emscripten_glProgramParameteri = _glProgramParameteri;
+ var _glQueryCounterEXT = (id, target) => {
+ GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id], target)
+ };
+ var _emscripten_glQueryCounterEXT = _glQueryCounterEXT;
+ var _glReadBuffer = x0 => GLctx.readBuffer(x0);
+ var _emscripten_glReadBuffer = _glReadBuffer;
+ var computeUnpackAlignedImageSize = (width, height, sizePerPixel, alignment) => {
+ function roundedToNextMultipleOf(x, y) {
+ return x + y - 1 & -y
+ }
+ var plainRowSize = width * sizePerPixel;
+ var alignedRowSize = roundedToNextMultipleOf(plainRowSize, alignment);
+ return height * alignedRowSize
+ };
+ var colorChannelsInGlTextureFormat = format => {
+ var colorChannels = {
+ 5: 3,
+ 6: 4,
+ 8: 2,
+ 29502: 3,
+ 29504: 4,
+ 26917: 2,
+ 26918: 2,
+ 29846: 3,
+ 29847: 4
+ };
+ return colorChannels[format - 6402] || 1
+ };
+ var heapObjectForWebGLType = type => {
+ type -= 5120;
+ if (type == 0) return HEAP8;
+ if (type == 1) return HEAPU8;
+ if (type == 2) return HEAP16;
+ if (type == 4) return HEAP32;
+ if (type == 6) return HEAPF32;
+ if (type == 5 || type == 28922 || type == 28520 || type == 30779 || type == 30782) return HEAPU32;
+ return HEAPU16
+ };
+ var toTypedArrayIndex = (pointer, heap) => pointer >>> 31 - Math.clz32(heap.BYTES_PER_ELEMENT);
+ var emscriptenWebGLGetTexPixelData = (type, format, width, height, pixels, internalFormat) => {
+ var heap = heapObjectForWebGLType(type);
+ var sizePerPixel = colorChannelsInGlTextureFormat(format) * heap.BYTES_PER_ELEMENT;
+ var bytes = computeUnpackAlignedImageSize(width, height, sizePerPixel, GL.unpackAlignment);
+ return heap.subarray(toTypedArrayIndex(pixels, heap), toTypedArrayIndex(pixels + bytes, heap))
+ };
+ var _glReadPixels = (x, y, width, height, format, type, pixels) => {
+ if (GL.currentContext.version >= 2) {
+ if (GLctx.currentPixelPackBufferBinding) {
+ GLctx.readPixels(x, y, width, height, format, type, pixels)
+ } else {
+ var heap = heapObjectForWebGLType(type);
+ var target = toTypedArrayIndex(pixels, heap);
+ GLctx.readPixels(x, y, width, height, format, type, heap, target)
+ }
+ return
+ }
+ var pixelData = emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, format);
+ if (!pixelData) {
+ GL.recordError(1280);
+ return
+ }
+ GLctx.readPixels(x, y, width, height, format, type, pixelData)
+ };
+ var _emscripten_glReadPixels = _glReadPixels;
+ var _glReleaseShaderCompiler = () => {};
+ var _emscripten_glReleaseShaderCompiler = _glReleaseShaderCompiler;
+ var _glRenderbufferStorage = (x0, x1, x2, x3) => GLctx.renderbufferStorage(x0, x1, x2, x3);
+ var _emscripten_glRenderbufferStorage = _glRenderbufferStorage;
+ var _glRenderbufferStorageMultisample = (x0, x1, x2, x3, x4) => GLctx.renderbufferStorageMultisample(x0, x1, x2, x3, x4);
+ var _emscripten_glRenderbufferStorageMultisample = _glRenderbufferStorageMultisample;
+ var _glResumeTransformFeedback = () => GLctx.resumeTransformFeedback();
+ var _emscripten_glResumeTransformFeedback = _glResumeTransformFeedback;
+ var _glSampleCoverage = (value, invert) => {
+ GLctx.sampleCoverage(value, !!invert)
+ };
+ var _emscripten_glSampleCoverage = _glSampleCoverage;
+ var _glSamplerParameterf = (sampler, pname, param) => {
+ GLctx.samplerParameterf(GL.samplers[sampler], pname, param)
+ };
+ var _emscripten_glSamplerParameterf = _glSamplerParameterf;
+ var _glSamplerParameterfv = (sampler, pname, params) => {
+ var param = HEAPF32[params >> 2];
+ GLctx.samplerParameterf(GL.samplers[sampler], pname, param)
+ };
+ var _emscripten_glSamplerParameterfv = _glSamplerParameterfv;
+ var _glSamplerParameteri = (sampler, pname, param) => {
+ GLctx.samplerParameteri(GL.samplers[sampler], pname, param)
+ };
+ var _emscripten_glSamplerParameteri = _glSamplerParameteri;
+ var _glSamplerParameteriv = (sampler, pname, params) => {
+ var param = HEAP32[params >> 2];
+ GLctx.samplerParameteri(GL.samplers[sampler], pname, param)
+ };
+ var _emscripten_glSamplerParameteriv = _glSamplerParameteriv;
+ var _glScissor = (x0, x1, x2, x3) => GLctx.scissor(x0, x1, x2, x3);
+ var _emscripten_glScissor = _glScissor;
+ var _glShaderBinary = (count, shaders, binaryformat, binary, length) => {
+ GL.recordError(1280)
+ };
+ var _emscripten_glShaderBinary = _glShaderBinary;
+ var _glShaderSource = (shader, count, string, length) => {
+ var source = GL.getSource(shader, count, string, length);
+ GLctx.shaderSource(GL.shaders[shader], source)
+ };
+ var _emscripten_glShaderSource = _glShaderSource;
+ var _glStencilFunc = (x0, x1, x2) => GLctx.stencilFunc(x0, x1, x2);
+ var _emscripten_glStencilFunc = _glStencilFunc;
+ var _glStencilFuncSeparate = (x0, x1, x2, x3) => GLctx.stencilFuncSeparate(x0, x1, x2, x3);
+ var _emscripten_glStencilFuncSeparate = _glStencilFuncSeparate;
+ var _glStencilMask = x0 => GLctx.stencilMask(x0);
+ var _emscripten_glStencilMask = _glStencilMask;
+ var _glStencilMaskSeparate = (x0, x1) => GLctx.stencilMaskSeparate(x0, x1);
+ var _emscripten_glStencilMaskSeparate = _glStencilMaskSeparate;
+ var _glStencilOp = (x0, x1, x2) => GLctx.stencilOp(x0, x1, x2);
+ var _emscripten_glStencilOp = _glStencilOp;
+ var _glStencilOpSeparate = (x0, x1, x2, x3) => GLctx.stencilOpSeparate(x0, x1, x2, x3);
+ var _emscripten_glStencilOpSeparate = _glStencilOpSeparate;
+ var _glTexImage2D = (target, level, internalFormat, width, height, border, format, type, pixels) => {
+ if (GL.currentContext.version >= 2) {
+ if (GLctx.currentPixelUnpackBufferBinding) {
+ GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixels)
+ } else if (pixels) {
+ var heap = heapObjectForWebGLType(type);
+ GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, heap, toTypedArrayIndex(pixels, heap))
+ } else {
+ GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, null)
+ }
+ return
+ }
+ GLctx.texImage2D(target, level, internalFormat, width, height, border, format, type, pixels ? emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, internalFormat) : null)
+ };
+ var _emscripten_glTexImage2D = _glTexImage2D;
+ var _glTexImage3D = (target, level, internalFormat, width, height, depth, border, format, type, pixels) => {
+ if (GLctx.currentPixelUnpackBufferBinding) {
+ GLctx.texImage3D(target, level, internalFormat, width, height, depth, border, format, type, pixels)
+ } else if (pixels) {
+ var heap = heapObjectForWebGLType(type);
+ GLctx.texImage3D(target, level, internalFormat, width, height, depth, border, format, type, heap, toTypedArrayIndex(pixels, heap))
+ } else {
+ GLctx.texImage3D(target, level, internalFormat, width, height, depth, border, format, type, null)
+ }
+ };
+ var _emscripten_glTexImage3D = _glTexImage3D;
+ var _glTexParameterf = (x0, x1, x2) => GLctx.texParameterf(x0, x1, x2);
+ var _emscripten_glTexParameterf = _glTexParameterf;
+ var _glTexParameterfv = (target, pname, params) => {
+ var param = HEAPF32[params >> 2];
+ GLctx.texParameterf(target, pname, param)
+ };
+ var _emscripten_glTexParameterfv = _glTexParameterfv;
+ var _glTexParameteri = (x0, x1, x2) => GLctx.texParameteri(x0, x1, x2);
+ var _emscripten_glTexParameteri = _glTexParameteri;
+ var _glTexParameteriv = (target, pname, params) => {
+ var param = HEAP32[params >> 2];
+ GLctx.texParameteri(target, pname, param)
+ };
+ var _emscripten_glTexParameteriv = _glTexParameteriv;
+ var _glTexStorage2D = (x0, x1, x2, x3, x4) => GLctx.texStorage2D(x0, x1, x2, x3, x4);
+ var _emscripten_glTexStorage2D = _glTexStorage2D;
+ var _glTexStorage3D = (x0, x1, x2, x3, x4, x5) => GLctx.texStorage3D(x0, x1, x2, x3, x4, x5);
+ var _emscripten_glTexStorage3D = _glTexStorage3D;
+ var _glTexSubImage2D = (target, level, xoffset, yoffset, width, height, format, type, pixels) => {
+ if (GL.currentContext.version >= 2) {
+ if (GLctx.currentPixelUnpackBufferBinding) {
+ GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels)
+ } else if (pixels) {
+ var heap = heapObjectForWebGLType(type);
+ GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, heap, toTypedArrayIndex(pixels, heap));
+ return
+ }
+ }
+ var pixelData = pixels ? emscriptenWebGLGetTexPixelData(type, format, width, height, pixels, 0) : null;
+ GLctx.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixelData)
+ };
+ var _emscripten_glTexSubImage2D = _glTexSubImage2D;
+ var _glTexSubImage3D = (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels) => {
+ if (GLctx.currentPixelUnpackBufferBinding) {
+ GLctx.texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels)
+ } else if (pixels) {
+ var heap = heapObjectForWebGLType(type);
+ GLctx.texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, heap, toTypedArrayIndex(pixels, heap))
+ } else {
+ GLctx.texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, null)
+ }
+ };
+ var _emscripten_glTexSubImage3D = _glTexSubImage3D;
+ var _glTransformFeedbackVaryings = (program, count, varyings, bufferMode) => {
+ program = GL.programs[program];
+ var vars = [];
+ for (var i = 0; i < count; i++) vars.push(UTF8ToString(HEAP32[varyings + i * 4 >> 2]));
+ GLctx.transformFeedbackVaryings(program, vars, bufferMode)
+ };
+ var _emscripten_glTransformFeedbackVaryings = _glTransformFeedbackVaryings;
+ var _glUniform1f = (location, v0) => {
+ GLctx.uniform1f(webglGetUniformLocation(location), v0)
+ };
+ var _emscripten_glUniform1f = _glUniform1f;
+ var miniTempWebGLFloatBuffers = [];
+ var _glUniform1fv = (location, count, value) => {
+ if (GL.currentContext.version >= 2) {
+ count && GLctx.uniform1fv(webglGetUniformLocation(location), HEAPF32, value >> 2, count);
+ return
+ }
+ if (count <= 288) {
+ var view = miniTempWebGLFloatBuffers[count - 1];
+ for (var i = 0; i < count; ++i) {
+ view[i] = HEAPF32[value + 4 * i >> 2]
+ }
+ } else {
+ var view = HEAPF32.subarray(value >> 2, value + count * 4 >> 2)
+ }
+ GLctx.uniform1fv(webglGetUniformLocation(location), view)
+ };
+ var _emscripten_glUniform1fv = _glUniform1fv;
+ var _glUniform1i = (location, v0) => {
+ GLctx.uniform1i(webglGetUniformLocation(location), v0)
+ };
+ var _emscripten_glUniform1i = _glUniform1i;
+ var miniTempWebGLIntBuffers = [];
+ var _glUniform1iv = (location, count, value) => {
+ if (GL.currentContext.version >= 2) {
+ count && GLctx.uniform1iv(webglGetUniformLocation(location), HEAP32, value >> 2, count);
+ return
+ }
+ if (count <= 288) {
+ var view = miniTempWebGLIntBuffers[count - 1];
+ for (var i = 0; i < count; ++i) {
+ view[i] = HEAP32[value + 4 * i >> 2]
+ }
+ } else {
+ var view = HEAP32.subarray(value >> 2, value + count * 4 >> 2)
+ }
+ GLctx.uniform1iv(webglGetUniformLocation(location), view)
+ };
+ var _emscripten_glUniform1iv = _glUniform1iv;
+ var _glUniform1ui = (location, v0) => {
+ GLctx.uniform1ui(webglGetUniformLocation(location), v0)
+ };
+ var _emscripten_glUniform1ui = _glUniform1ui;
+ var _glUniform1uiv = (location, count, value) => {
+ count && GLctx.uniform1uiv(webglGetUniformLocation(location), HEAPU32, value >> 2, count)
+ };
+ var _emscripten_glUniform1uiv = _glUniform1uiv;
+ var _glUniform2f = (location, v0, v1) => {
+ GLctx.uniform2f(webglGetUniformLocation(location), v0, v1)
+ };
+ var _emscripten_glUniform2f = _glUniform2f;
+ var _glUniform2fv = (location, count, value) => {
+ if (GL.currentContext.version >= 2) {
+ count && GLctx.uniform2fv(webglGetUniformLocation(location), HEAPF32, value >> 2, count * 2);
+ return
+ }
+ if (count <= 144) {
+ var view = miniTempWebGLFloatBuffers[2 * count - 1];
+ for (var i = 0; i < 2 * count; i += 2) {
+ view[i] = HEAPF32[value + 4 * i >> 2];
+ view[i + 1] = HEAPF32[value + (4 * i + 4) >> 2]
+ }
+ } else {
+ var view = HEAPF32.subarray(value >> 2, value + count * 8 >> 2)
+ }
+ GLctx.uniform2fv(webglGetUniformLocation(location), view)
+ };
+ var _emscripten_glUniform2fv = _glUniform2fv;
+ var _glUniform2i = (location, v0, v1) => {
+ GLctx.uniform2i(webglGetUniformLocation(location), v0, v1)
+ };
+ var _emscripten_glUniform2i = _glUniform2i;
+ var _glUniform2iv = (location, count, value) => {
+ if (GL.currentContext.version >= 2) {
+ count && GLctx.uniform2iv(webglGetUniformLocation(location), HEAP32, value >> 2, count * 2);
+ return
+ }
+ if (count <= 144) {
+ var view = miniTempWebGLIntBuffers[2 * count - 1];
+ for (var i = 0; i < 2 * count; i += 2) {
+ view[i] = HEAP32[value + 4 * i >> 2];
+ view[i + 1] = HEAP32[value + (4 * i + 4) >> 2]
+ }
+ } else {
+ var view = HEAP32.subarray(value >> 2, value + count * 8 >> 2)
+ }
+ GLctx.uniform2iv(webglGetUniformLocation(location), view)
+ };
+ var _emscripten_glUniform2iv = _glUniform2iv;
+ var _glUniform2ui = (location, v0, v1) => {
+ GLctx.uniform2ui(webglGetUniformLocation(location), v0, v1)
+ };
+ var _emscripten_glUniform2ui = _glUniform2ui;
+ var _glUniform2uiv = (location, count, value) => {
+ count && GLctx.uniform2uiv(webglGetUniformLocation(location), HEAPU32, value >> 2, count * 2)
+ };
+ var _emscripten_glUniform2uiv = _glUniform2uiv;
+ var _glUniform3f = (location, v0, v1, v2) => {
+ GLctx.uniform3f(webglGetUniformLocation(location), v0, v1, v2)
+ };
+ var _emscripten_glUniform3f = _glUniform3f;
+ var _glUniform3fv = (location, count, value) => {
+ if (GL.currentContext.version >= 2) {
+ count && GLctx.uniform3fv(webglGetUniformLocation(location), HEAPF32, value >> 2, count * 3);
+ return
+ }
+ if (count <= 96) {
+ var view = miniTempWebGLFloatBuffers[3 * count - 1];
+ for (var i = 0; i < 3 * count; i += 3) {
+ view[i] = HEAPF32[value + 4 * i >> 2];
+ view[i + 1] = HEAPF32[value + (4 * i + 4) >> 2];
+ view[i + 2] = HEAPF32[value + (4 * i + 8) >> 2]
+ }
+ } else {
+ var view = HEAPF32.subarray(value >> 2, value + count * 12 >> 2)
+ }
+ GLctx.uniform3fv(webglGetUniformLocation(location), view)
+ };
+ var _emscripten_glUniform3fv = _glUniform3fv;
+ var _glUniform3i = (location, v0, v1, v2) => {
+ GLctx.uniform3i(webglGetUniformLocation(location), v0, v1, v2)
+ };
+ var _emscripten_glUniform3i = _glUniform3i;
+ var _glUniform3iv = (location, count, value) => {
+ if (GL.currentContext.version >= 2) {
+ count && GLctx.uniform3iv(webglGetUniformLocation(location), HEAP32, value >> 2, count * 3);
+ return
+ }
+ if (count <= 96) {
+ var view = miniTempWebGLIntBuffers[3 * count - 1];
+ for (var i = 0; i < 3 * count; i += 3) {
+ view[i] = HEAP32[value + 4 * i >> 2];
+ view[i + 1] = HEAP32[value + (4 * i + 4) >> 2];
+ view[i + 2] = HEAP32[value + (4 * i + 8) >> 2]
+ }
+ } else {
+ var view = HEAP32.subarray(value >> 2, value + count * 12 >> 2)
+ }
+ GLctx.uniform3iv(webglGetUniformLocation(location), view)
+ };
+ var _emscripten_glUniform3iv = _glUniform3iv;
+ var _glUniform3ui = (location, v0, v1, v2) => {
+ GLctx.uniform3ui(webglGetUniformLocation(location), v0, v1, v2)
+ };
+ var _emscripten_glUniform3ui = _glUniform3ui;
+ var _glUniform3uiv = (location, count, value) => {
+ count && GLctx.uniform3uiv(webglGetUniformLocation(location), HEAPU32, value >> 2, count * 3)
+ };
+ var _emscripten_glUniform3uiv = _glUniform3uiv;
+ var _glUniform4f = (location, v0, v1, v2, v3) => {
+ GLctx.uniform4f(webglGetUniformLocation(location), v0, v1, v2, v3)
+ };
+ var _emscripten_glUniform4f = _glUniform4f;
+ var _glUniform4fv = (location, count, value) => {
+ if (GL.currentContext.version >= 2) {
+ count && GLctx.uniform4fv(webglGetUniformLocation(location), HEAPF32, value >> 2, count * 4);
+ return
+ }
+ if (count <= 72) {
+ var view = miniTempWebGLFloatBuffers[4 * count - 1];
+ var heap = HEAPF32;
+ value = value >> 2;
+ for (var i = 0; i < 4 * count; i += 4) {
+ var dst = value + i;
+ view[i] = heap[dst];
+ view[i + 1] = heap[dst + 1];
+ view[i + 2] = heap[dst + 2];
+ view[i + 3] = heap[dst + 3]
+ }
+ } else {
+ var view = HEAPF32.subarray(value >> 2, value + count * 16 >> 2)
+ }
+ GLctx.uniform4fv(webglGetUniformLocation(location), view)
+ };
+ var _emscripten_glUniform4fv = _glUniform4fv;
+ var _glUniform4i = (location, v0, v1, v2, v3) => {
+ GLctx.uniform4i(webglGetUniformLocation(location), v0, v1, v2, v3)
+ };
+ var _emscripten_glUniform4i = _glUniform4i;
+ var _glUniform4iv = (location, count, value) => {
+ if (GL.currentContext.version >= 2) {
+ count && GLctx.uniform4iv(webglGetUniformLocation(location), HEAP32, value >> 2, count * 4);
+ return
+ }
+ if (count <= 72) {
+ var view = miniTempWebGLIntBuffers[4 * count - 1];
+ for (var i = 0; i < 4 * count; i += 4) {
+ view[i] = HEAP32[value + 4 * i >> 2];
+ view[i + 1] = HEAP32[value + (4 * i + 4) >> 2];
+ view[i + 2] = HEAP32[value + (4 * i + 8) >> 2];
+ view[i + 3] = HEAP32[value + (4 * i + 12) >> 2]
+ }
+ } else {
+ var view = HEAP32.subarray(value >> 2, value + count * 16 >> 2)
+ }
+ GLctx.uniform4iv(webglGetUniformLocation(location), view)
+ };
+ var _emscripten_glUniform4iv = _glUniform4iv;
+ var _glUniform4ui = (location, v0, v1, v2, v3) => {
+ GLctx.uniform4ui(webglGetUniformLocation(location), v0, v1, v2, v3)
+ };
+ var _emscripten_glUniform4ui = _glUniform4ui;
+ var _glUniform4uiv = (location, count, value) => {
+ count && GLctx.uniform4uiv(webglGetUniformLocation(location), HEAPU32, value >> 2, count * 4)
+ };
+ var _emscripten_glUniform4uiv = _glUniform4uiv;
+ var _glUniformBlockBinding = (program, uniformBlockIndex, uniformBlockBinding) => {
+ program = GL.programs[program];
+ GLctx.uniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding)
+ };
+ var _emscripten_glUniformBlockBinding = _glUniformBlockBinding;
+ var _glUniformMatrix2fv = (location, count, transpose, value) => {
+ if (GL.currentContext.version >= 2) {
+ count && GLctx.uniformMatrix2fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 4);
+ return
+ }
+ if (count <= 72) {
+ var view = miniTempWebGLFloatBuffers[4 * count - 1];
+ for (var i = 0; i < 4 * count; i += 4) {
+ view[i] = HEAPF32[value + 4 * i >> 2];
+ view[i + 1] = HEAPF32[value + (4 * i + 4) >> 2];
+ view[i + 2] = HEAPF32[value + (4 * i + 8) >> 2];
+ view[i + 3] = HEAPF32[value + (4 * i + 12) >> 2]
+ }
+ } else {
+ var view = HEAPF32.subarray(value >> 2, value + count * 16 >> 2)
+ }
+ GLctx.uniformMatrix2fv(webglGetUniformLocation(location), !!transpose, view)
+ };
+ var _emscripten_glUniformMatrix2fv = _glUniformMatrix2fv;
+ var _glUniformMatrix2x3fv = (location, count, transpose, value) => {
+ count && GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 6)
+ };
+ var _emscripten_glUniformMatrix2x3fv = _glUniformMatrix2x3fv;
+ var _glUniformMatrix2x4fv = (location, count, transpose, value) => {
+ count && GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 8)
+ };
+ var _emscripten_glUniformMatrix2x4fv = _glUniformMatrix2x4fv;
+ var _glUniformMatrix3fv = (location, count, transpose, value) => {
+ if (GL.currentContext.version >= 2) {
+ count && GLctx.uniformMatrix3fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 9);
+ return
+ }
+ if (count <= 32) {
+ var view = miniTempWebGLFloatBuffers[9 * count - 1];
+ for (var i = 0; i < 9 * count; i += 9) {
+ view[i] = HEAPF32[value + 4 * i >> 2];
+ view[i + 1] = HEAPF32[value + (4 * i + 4) >> 2];
+ view[i + 2] = HEAPF32[value + (4 * i + 8) >> 2];
+ view[i + 3] = HEAPF32[value + (4 * i + 12) >> 2];
+ view[i + 4] = HEAPF32[value + (4 * i + 16) >> 2];
+ view[i + 5] = HEAPF32[value + (4 * i + 20) >> 2];
+ view[i + 6] = HEAPF32[value + (4 * i + 24) >> 2];
+ view[i + 7] = HEAPF32[value + (4 * i + 28) >> 2];
+ view[i + 8] = HEAPF32[value + (4 * i + 32) >> 2]
+ }
+ } else {
+ var view = HEAPF32.subarray(value >> 2, value + count * 36 >> 2)
+ }
+ GLctx.uniformMatrix3fv(webglGetUniformLocation(location), !!transpose, view)
+ };
+ var _emscripten_glUniformMatrix3fv = _glUniformMatrix3fv;
+ var _glUniformMatrix3x2fv = (location, count, transpose, value) => {
+ count && GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 6)
+ };
+ var _emscripten_glUniformMatrix3x2fv = _glUniformMatrix3x2fv;
+ var _glUniformMatrix3x4fv = (location, count, transpose, value) => {
+ count && GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 12)
+ };
+ var _emscripten_glUniformMatrix3x4fv = _glUniformMatrix3x4fv;
+ var _glUniformMatrix4fv = (location, count, transpose, value) => {
+ if (GL.currentContext.version >= 2) {
+ count && GLctx.uniformMatrix4fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 16);
+ return
+ }
+ if (count <= 18) {
+ var view = miniTempWebGLFloatBuffers[16 * count - 1];
+ var heap = HEAPF32;
+ value = value >> 2;
+ for (var i = 0; i < 16 * count; i += 16) {
+ var dst = value + i;
+ view[i] = heap[dst];
+ view[i + 1] = heap[dst + 1];
+ view[i + 2] = heap[dst + 2];
+ view[i + 3] = heap[dst + 3];
+ view[i + 4] = heap[dst + 4];
+ view[i + 5] = heap[dst + 5];
+ view[i + 6] = heap[dst + 6];
+ view[i + 7] = heap[dst + 7];
+ view[i + 8] = heap[dst + 8];
+ view[i + 9] = heap[dst + 9];
+ view[i + 10] = heap[dst + 10];
+ view[i + 11] = heap[dst + 11];
+ view[i + 12] = heap[dst + 12];
+ view[i + 13] = heap[dst + 13];
+ view[i + 14] = heap[dst + 14];
+ view[i + 15] = heap[dst + 15]
+ }
+ } else {
+ var view = HEAPF32.subarray(value >> 2, value + count * 64 >> 2)
+ }
+ GLctx.uniformMatrix4fv(webglGetUniformLocation(location), !!transpose, view)
+ };
+ var _emscripten_glUniformMatrix4fv = _glUniformMatrix4fv;
+ var _glUniformMatrix4x2fv = (location, count, transpose, value) => {
+ count && GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 8)
+ };
+ var _emscripten_glUniformMatrix4x2fv = _glUniformMatrix4x2fv;
+ var _glUniformMatrix4x3fv = (location, count, transpose, value) => {
+ count && GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location), !!transpose, HEAPF32, value >> 2, count * 12)
+ };
+ var _emscripten_glUniformMatrix4x3fv = _glUniformMatrix4x3fv;
+ var _glUseProgram = program => {
+ program = GL.programs[program];
+ GLctx.useProgram(program);
+ GLctx.currentProgram = program
+ };
+ var _emscripten_glUseProgram = _glUseProgram;
+ var _glValidateProgram = program => {
+ GLctx.validateProgram(GL.programs[program])
+ };
+ var _emscripten_glValidateProgram = _glValidateProgram;
+ var _glVertexAttrib1f = (x0, x1) => GLctx.vertexAttrib1f(x0, x1);
+ var _emscripten_glVertexAttrib1f = _glVertexAttrib1f;
+ var _glVertexAttrib1fv = (index, v) => {
+ GLctx.vertexAttrib1f(index, HEAPF32[v >> 2])
+ };
+ var _emscripten_glVertexAttrib1fv = _glVertexAttrib1fv;
+ var _glVertexAttrib2f = (x0, x1, x2) => GLctx.vertexAttrib2f(x0, x1, x2);
+ var _emscripten_glVertexAttrib2f = _glVertexAttrib2f;
+ var _glVertexAttrib2fv = (index, v) => {
+ GLctx.vertexAttrib2f(index, HEAPF32[v >> 2], HEAPF32[v + 4 >> 2])
+ };
+ var _emscripten_glVertexAttrib2fv = _glVertexAttrib2fv;
+ var _glVertexAttrib3f = (x0, x1, x2, x3) => GLctx.vertexAttrib3f(x0, x1, x2, x3);
+ var _emscripten_glVertexAttrib3f = _glVertexAttrib3f;
+ var _glVertexAttrib3fv = (index, v) => {
+ GLctx.vertexAttrib3f(index, HEAPF32[v >> 2], HEAPF32[v + 4 >> 2], HEAPF32[v + 8 >> 2])
+ };
+ var _emscripten_glVertexAttrib3fv = _glVertexAttrib3fv;
+ var _glVertexAttrib4f = (x0, x1, x2, x3, x4) => GLctx.vertexAttrib4f(x0, x1, x2, x3, x4);
+ var _emscripten_glVertexAttrib4f = _glVertexAttrib4f;
+ var _glVertexAttrib4fv = (index, v) => {
+ GLctx.vertexAttrib4f(index, HEAPF32[v >> 2], HEAPF32[v + 4 >> 2], HEAPF32[v + 8 >> 2], HEAPF32[v + 12 >> 2])
+ };
+ var _emscripten_glVertexAttrib4fv = _glVertexAttrib4fv;
+ var _glVertexAttribDivisor = (index, divisor) => {
+ GLctx.vertexAttribDivisor(index, divisor)
+ };
+ var _emscripten_glVertexAttribDivisor = _glVertexAttribDivisor;
+ var _glVertexAttribI4i = (x0, x1, x2, x3, x4) => GLctx.vertexAttribI4i(x0, x1, x2, x3, x4);
+ var _emscripten_glVertexAttribI4i = _glVertexAttribI4i;
+ var _glVertexAttribI4iv = (index, v) => {
+ GLctx.vertexAttribI4i(index, HEAP32[v >> 2], HEAP32[v + 4 >> 2], HEAP32[v + 8 >> 2], HEAP32[v + 12 >> 2])
+ };
+ var _emscripten_glVertexAttribI4iv = _glVertexAttribI4iv;
+ var _glVertexAttribI4ui = (x0, x1, x2, x3, x4) => GLctx.vertexAttribI4ui(x0, x1, x2, x3, x4);
+ var _emscripten_glVertexAttribI4ui = _glVertexAttribI4ui;
+ var _glVertexAttribI4uiv = (index, v) => {
+ GLctx.vertexAttribI4ui(index, HEAPU32[v >> 2], HEAPU32[v + 4 >> 2], HEAPU32[v + 8 >> 2], HEAPU32[v + 12 >> 2])
+ };
+ var _emscripten_glVertexAttribI4uiv = _glVertexAttribI4uiv;
+ var _glVertexAttribIPointer = (index, size, type, stride, ptr) => {
+ GLctx.vertexAttribIPointer(index, size, type, stride, ptr)
+ };
+ var _emscripten_glVertexAttribIPointer = _glVertexAttribIPointer;
+ var _glVertexAttribPointer = (index, size, type, normalized, stride, ptr) => {
+ GLctx.vertexAttribPointer(index, size, type, !!normalized, stride, ptr)
+ };
+ var _emscripten_glVertexAttribPointer = _glVertexAttribPointer;
+ var _glViewport = (x0, x1, x2, x3) => GLctx.viewport(x0, x1, x2, x3);
+ var _emscripten_glViewport = _glViewport;
+ var _glWaitSync = (sync, flags, timeout_low, timeout_high) => {
+ var timeout = convertI32PairToI53(timeout_low, timeout_high);
+ GLctx.waitSync(GL.syncs[sync], flags, timeout)
+ };
+ var _emscripten_glWaitSync = _glWaitSync;
+ var reallyNegative = x => x < 0 || x === 0 && 1 / x === -Infinity;
+ var convertU32PairToI53 = (lo, hi) => (lo >>> 0) + (hi >>> 0) * 4294967296;
+ var reSign = (value, bits) => {
+ if (value <= 0) {
+ return value
+ }
+ var half = bits <= 32 ? Math.abs(1 << bits - 1) : Math.pow(2, bits - 1);
+ if (value >= half && (bits <= 32 || value > half)) {
+ value = -2 * half + value
+ }
+ return value
+ };
+ var unSign = (value, bits) => {
+ if (value >= 0) {
+ return value
+ }
+ return bits <= 32 ? 2 * Math.abs(1 << bits - 1) + value : Math.pow(2, bits) + value
+ };
+ var strLen = ptr => {
+ var end = ptr;
+ while (HEAPU8[end]) ++end;
+ return end - ptr
+ };
+ var formatString = (format, varargs) => {
+ assert((varargs & 3) === 0);
+ var textIndex = format;
+ var argIndex = varargs;
+
+ function prepVararg(ptr, type) {
+ if (type === "double" || type === "i64") {
+ if (ptr & 7) {
+ assert((ptr & 7) === 4);
+ ptr += 4
+ }
+ } else {
+ assert((ptr & 3) === 0)
+ }
+ return ptr
+ }
+
+ function getNextArg(type) {
+ var ret;
+ argIndex = prepVararg(argIndex, type);
+ if (type === "double") {
+ ret = HEAPF64[argIndex >> 3];
+ argIndex += 8
+ } else if (type == "i64") {
+ ret = [HEAP32[argIndex >> 2], HEAP32[argIndex + 4 >> 2]];
+ argIndex += 8
+ } else {
+ assert((argIndex & 3) === 0);
+ type = "i32";
+ ret = HEAP32[argIndex >> 2];
+ argIndex += 4
+ }
+ return ret
+ }
+ var ret = [];
+ var curr, next, currArg;
+ while (1) {
+ var startTextIndex = textIndex;
+ curr = HEAP8[textIndex];
+ if (curr === 0) break;
+ next = HEAP8[textIndex + 1];
+ if (curr == 37) {
+ var flagAlwaysSigned = false;
+ var flagLeftAlign = false;
+ var flagAlternative = false;
+ var flagZeroPad = false;
+ var flagPadSign = false;
+ flagsLoop: while (1) {
+ switch (next) {
+ case 43:
+ flagAlwaysSigned = true;
+ break;
+ case 45:
+ flagLeftAlign = true;
+ break;
+ case 35:
+ flagAlternative = true;
+ break;
+ case 48:
+ if (flagZeroPad) {
+ break flagsLoop
+ } else {
+ flagZeroPad = true;
+ break
+ }
+ case 32:
+ flagPadSign = true;
+ break;
+ default:
+ break flagsLoop
+ }
+ textIndex++;
+ next = HEAP8[textIndex + 1]
+ }
+ var width = 0;
+ if (next == 42) {
+ width = getNextArg("i32");
+ textIndex++;
+ next = HEAP8[textIndex + 1]
+ } else {
+ while (next >= 48 && next <= 57) {
+ width = width * 10 + (next - 48);
+ textIndex++;
+ next = HEAP8[textIndex + 1]
+ }
+ }
+ var precisionSet = false,
+ precision = -1;
+ if (next == 46) {
+ precision = 0;
+ precisionSet = true;
+ textIndex++;
+ next = HEAP8[textIndex + 1];
+ if (next == 42) {
+ precision = getNextArg("i32");
+ textIndex++
+ } else {
+ while (1) {
+ var precisionChr = HEAP8[textIndex + 1];
+ if (precisionChr < 48 || precisionChr > 57) break;
+ precision = precision * 10 + (precisionChr - 48);
+ textIndex++
+ }
+ }
+ next = HEAP8[textIndex + 1]
+ }
+ if (precision < 0) {
+ precision = 6;
+ precisionSet = false
+ }
+ var argSize;
+ switch (String.fromCharCode(next)) {
+ case "h":
+ var nextNext = HEAP8[textIndex + 2];
+ if (nextNext == 104) {
+ textIndex++;
+ argSize = 1
+ } else {
+ argSize = 2
+ }
+ break;
+ case "l":
+ var nextNext = HEAP8[textIndex + 2];
+ if (nextNext == 108) {
+ textIndex++;
+ argSize = 8
+ } else {
+ argSize = 4
+ }
+ break;
+ case "L":
+ case "q":
+ case "j":
+ argSize = 8;
+ break;
+ case "z":
+ case "t":
+ case "I":
+ argSize = 4;
+ break;
+ default:
+ argSize = null
+ }
+ if (argSize) textIndex++;
+ next = HEAP8[textIndex + 1];
+ switch (String.fromCharCode(next)) {
+ case "d":
+ case "i":
+ case "u":
+ case "o":
+ case "x":
+ case "X":
+ case "p": {
+ var signed = next == 100 || next == 105;
+ argSize = argSize || 4;
+ currArg = getNextArg("i" + argSize * 8);
+ var argText;
+ if (argSize == 8) {
+ currArg = next == 117 ? convertU32PairToI53(currArg[0], currArg[1]) : convertI32PairToI53(currArg[0], currArg[1])
+ }
+ if (argSize <= 4) {
+ var limit = Math.pow(256, argSize) - 1;
+ currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8)
+ }
+ var currAbsArg = Math.abs(currArg);
+ var prefix = "";
+ if (next == 100 || next == 105) {
+ argText = reSign(currArg, 8 * argSize).toString(10)
+ } else if (next == 117) {
+ argText = unSign(currArg, 8 * argSize).toString(10);
+ currArg = Math.abs(currArg)
+ } else if (next == 111) {
+ argText = (flagAlternative ? "0" : "") + currAbsArg.toString(8)
+ } else if (next == 120 || next == 88) {
+ prefix = flagAlternative && currArg != 0 ? "0x" : "";
+ if (currArg < 0) {
+ currArg = -currArg;
+ argText = (currAbsArg - 1).toString(16);
+ var buffer = [];
+ for (var i = 0; i < argText.length; i++) {
+ buffer.push((15 - parseInt(argText[i], 16)).toString(16))
+ }
+ argText = buffer.join("");
+ while (argText.length < argSize * 2) argText = "f" + argText
+ } else {
+ argText = currAbsArg.toString(16)
+ }
+ if (next == 88) {
+ prefix = prefix.toUpperCase();
+ argText = argText.toUpperCase()
+ }
+ } else if (next == 112) {
+ if (currAbsArg === 0) {
+ argText = "(nil)"
+ } else {
+ prefix = "0x";
+ argText = currAbsArg.toString(16)
+ }
+ }
+ if (precisionSet) {
+ while (argText.length < precision) {
+ argText = "0" + argText
+ }
+ }
+ if (currArg >= 0) {
+ if (flagAlwaysSigned) {
+ prefix = "+" + prefix
+ } else if (flagPadSign) {
+ prefix = " " + prefix
+ }
+ }
+ if (argText.charAt(0) == "-") {
+ prefix = "-" + prefix;
+ argText = argText.substr(1)
+ }
+ while (prefix.length + argText.length < width) {
+ if (flagLeftAlign) {
+ argText += " "
+ } else {
+ if (flagZeroPad) {
+ argText = "0" + argText
+ } else {
+ prefix = " " + prefix
+ }
+ }
+ }
+ argText = prefix + argText;
+ argText.split("").forEach(function(chr) {
+ ret.push(chr.charCodeAt(0))
+ });
+ break
+ }
+ case "f":
+ case "F":
+ case "e":
+ case "E":
+ case "g":
+ case "G": {
+ currArg = getNextArg("double");
+ var argText;
+ if (isNaN(currArg)) {
+ argText = "nan";
+ flagZeroPad = false
+ } else if (!isFinite(currArg)) {
+ argText = (currArg < 0 ? "-" : "") + "inf";
+ flagZeroPad = false
+ } else {
+ var isGeneral = false;
+ var effectivePrecision = Math.min(precision, 20);
+ if (next == 103 || next == 71) {
+ isGeneral = true;
+ precision = precision || 1;
+ var exponent = parseInt(currArg.toExponential(effectivePrecision).split("e")[1], 10);
+ if (precision > exponent && exponent >= -4) {
+ next = (next == 103 ? "f" : "F").charCodeAt(0);
+ precision -= exponent + 1
+ } else {
+ next = (next == 103 ? "e" : "E").charCodeAt(0);
+ precision--
+ }
+ effectivePrecision = Math.min(precision, 20)
+ }
+ if (next == 101 || next == 69) {
+ argText = currArg.toExponential(effectivePrecision);
+ if (/[eE][-+]\d$/.test(argText)) {
+ argText = argText.slice(0, -1) + "0" + argText.slice(-1)
+ }
+ } else if (next == 102 || next == 70) {
+ argText = currArg.toFixed(effectivePrecision);
+ if (currArg === 0 && reallyNegative(currArg)) {
+ argText = "-" + argText
+ }
+ }
+ var parts = argText.split("e");
+ if (isGeneral && !flagAlternative) {
+ while (parts[0].length > 1 && parts[0].includes(".") && (parts[0].slice(-1) == "0" || parts[0].slice(-1) == ".")) {
+ parts[0] = parts[0].slice(0, -1)
+ }
+ } else {
+ if (flagAlternative && argText.indexOf(".") == -1) parts[0] += ".";
+ while (precision > effectivePrecision++) parts[0] += "0"
+ }
+ argText = parts[0] + (parts.length > 1 ? "e" + parts[1] : "");
+ if (next == 69) argText = argText.toUpperCase();
+ if (currArg >= 0) {
+ if (flagAlwaysSigned) {
+ argText = "+" + argText
+ } else if (flagPadSign) {
+ argText = " " + argText
+ }
+ }
+ }
+ while (argText.length < width) {
+ if (flagLeftAlign) {
+ argText += " "
+ } else {
+ if (flagZeroPad && (argText[0] == "-" || argText[0] == "+")) {
+ argText = argText[0] + "0" + argText.slice(1)
+ } else {
+ argText = (flagZeroPad ? "0" : " ") + argText
+ }
+ }
+ }
+ if (next < 97) argText = argText.toUpperCase();
+ argText.split("").forEach(function(chr) {
+ ret.push(chr.charCodeAt(0))
+ });
+ break
+ }
+ case "s": {
+ var arg = getNextArg("i8*");
+ var argLength = arg ? strLen(arg) : "(null)".length;
+ if (precisionSet) argLength = Math.min(argLength, precision);
+ if (!flagLeftAlign) {
+ while (argLength < width--) {
+ ret.push(32)
+ }
+ }
+ if (arg) {
+ for (var i = 0; i < argLength; i++) {
+ ret.push(HEAPU8[arg++])
+ }
+ } else {
+ ret = ret.concat(intArrayFromString("(null)".substr(0, argLength), true))
+ }
+ if (flagLeftAlign) {
+ while (argLength < width--) {
+ ret.push(32)
+ }
+ }
+ break
+ }
+ case "c": {
+ if (flagLeftAlign) ret.push(getNextArg("i8"));
+ while (--width > 0) {
+ ret.push(32)
+ }
+ if (!flagLeftAlign) ret.push(getNextArg("i8"));
+ break
+ }
+ case "n": {
+ var ptr = getNextArg("i32*");
+ HEAP32[ptr >> 2] = ret.length;
+ break
+ }
+ case "%": {
+ ret.push(curr);
+ break
+ }
+ default: {
+ for (var i = startTextIndex; i < textIndex + 2; i++) {
+ ret.push(HEAP8[i])
+ }
+ }
+ }
+ textIndex += 2
+ } else {
+ ret.push(curr);
+ textIndex += 1
+ }
+ }
+ return ret
+ };
+
+ function jsStackTrace() {
+ return (new Error).stack.toString()
+ }
+
+ function getCallstack(flags) {
+ var callstack = jsStackTrace();
+ var iThisFunc = callstack.lastIndexOf("_emscripten_log");
+ var iThisFunc2 = callstack.lastIndexOf("_emscripten_get_callstack");
+ var iNextLine = callstack.indexOf("\n", Math.max(iThisFunc, iThisFunc2)) + 1;
+ callstack = callstack.slice(iNextLine);
+ if (flags & 8 && typeof emscripten_source_map == "undefined") {
+ warnOnce('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with "--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js" linker flag to add source map loading to code.');
+ flags ^= 8;
+ flags |= 16
+ }
+ var lines = callstack.split("\n");
+ callstack = "";
+ var newFirefoxRe = new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)");
+ var firefoxRe = new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?");
+ var chromeRe = new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");
+ for (var l in lines) {
+ var line = lines[l];
+ var symbolName = "";
+ var file = "";
+ var lineno = 0;
+ var column = 0;
+ var parts = chromeRe.exec(line);
+ if (parts && parts.length == 5) {
+ symbolName = parts[1];
+ file = parts[2];
+ lineno = parts[3];
+ column = parts[4]
+ } else {
+ parts = newFirefoxRe.exec(line);
+ if (!parts) parts = firefoxRe.exec(line);
+ if (parts && parts.length >= 4) {
+ symbolName = parts[1];
+ file = parts[2];
+ lineno = parts[3];
+ column = parts[4] | 0
+ } else {
+ callstack += line + "\n";
+ continue
+ }
+ }
+ var haveSourceMap = false;
+ if (flags & 8) {
+ var orig = emscripten_source_map.originalPositionFor({
+ line: lineno,
+ column: column
+ });
+ haveSourceMap = orig?.source;
+ if (haveSourceMap) {
+ if (flags & 64) {
+ orig.source = orig.source.substring(orig.source.replace(/\\/g, "/").lastIndexOf("/") + 1)
+ }
+ callstack += ` at ${symbolName} (${orig.source}:${orig.line}:${orig.column})\n`
+ }
+ }
+ if (flags & 16 || !haveSourceMap) {
+ if (flags & 64) {
+ file = file.substring(file.replace(/\\/g, "/").lastIndexOf("/") + 1)
+ }
+ callstack += (haveSourceMap ? ` = ${symbolName}` : ` at ${symbolName}`) + ` (${file}:${lineno}:${column})\n`
+ }
+ }
+ callstack = callstack.replace(/\s+$/, "");
+ return callstack
+ }
+ var emscriptenLog = (flags, str) => {
+ if (flags & 24) {
+ str = str.replace(/\s+$/, "");
+ str += (str.length > 0 ? "\n" : "") + getCallstack(flags)
+ }
+ if (flags & 1) {
+ if (flags & 4) {
+ console.error(str)
+ } else if (flags & 2) {
+ console.warn(str)
+ } else if (flags & 512) {
+ console.info(str)
+ } else if (flags & 256) {
+ console.debug(str)
+ } else {
+ console.log(str)
+ }
+ } else if (flags & 6) {
+ err(str)
+ } else {
+ out(str)
+ }
+ };
+ var _emscripten_log = (flags, format, varargs) => {
+ var result = formatString(format, varargs);
+ var str = UTF8ArrayToString(result, 0);
+ emscriptenLog(flags, str)
+ };
+ var _emscripten_num_logical_cores = () => ENVIRONMENT_IS_NODE ? require("os").cpus().length : navigator["hardwareConcurrency"];
+ var abortOnCannotGrowMemory = requestedSize => {
+ abort(`Cannot enlarge memory arrays to size ${requestedSize} bytes (OOM). Either (1) compile with -sINITIAL_MEMORY=X with X higher than the current value ${HEAP8.length}, (2) compile with -sALLOW_MEMORY_GROWTH which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -sABORTING_MALLOC=0`)
+ };
+ var _emscripten_resize_heap = requestedSize => {
+ var oldSize = HEAPU8.length;
+ requestedSize >>>= 0;
+ abortOnCannotGrowMemory(requestedSize)
+ };
+ var _emscripten_set_main_loop = (func, fps, simulateInfiniteLoop) => {
+ var browserIterationFunc = () => dynCall_v(func);
+ setMainLoop(browserIterationFunc, fps, simulateInfiniteLoop)
+ };
+ var _emscripten_set_main_loop_arg = (func, arg, fps, simulateInfiniteLoop) => {
+ var browserIterationFunc = () => (a1 => dynCall_vi(func, a1))(arg);
+ setMainLoop(browserIterationFunc, fps, simulateInfiniteLoop, arg)
+ };
+ var _emscripten_unwind_to_js_event_loop = () => {
+ throw "unwind"
+ };
+ var _emscripten_webgl_do_commit_frame = () => {
+ if (!GL.currentContext || !GL.currentContext.GLctx) {
+ return -3
+ }
+ if (GL.currentContext.defaultFbo) {
+ GL.blitOffscreenFramebuffer(GL.currentContext);
+ return 0
+ }
+ if (!GL.currentContext.attributes.explicitSwapControl) {
+ return -3
+ }
+ return 0
+ };
+ var _emscripten_webgl_make_context_current_calling_thread = contextHandle => {
+ var success = GL.makeContextCurrent(contextHandle);
+ if (success) GL.currentContextIsProxied = false;
+ return success ? 0 : -5
+ };
+ var ENV = {};
+ var getExecutableName = () => thisProgram || "./this.program";
+ var getEnvStrings = () => {
+ if (!getEnvStrings.strings) {
+ var lang = (typeof navigator == "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8";
+ var env = {
+ "USER": "web_user",
+ "LOGNAME": "web_user",
+ "PATH": "/",
+ "PWD": "/",
+ "HOME": "/home/web_user",
+ "LANG": lang,
+ "_": getExecutableName()
+ };
+ for (var x in ENV) {
+ if (ENV[x] === undefined) delete env[x];
+ else env[x] = ENV[x]
+ }
+ var strings = [];
+ for (var x in env) {
+ strings.push(`${x}=${env[x]}`)
+ }
+ getEnvStrings.strings = strings
+ }
+ return getEnvStrings.strings
+ };
+ var stringToAscii = (str, buffer) => {
+ for (var i = 0; i < str.length; ++i) {
+ assert(str.charCodeAt(i) === (str.charCodeAt(i) & 255));
+ HEAP8[buffer++] = str.charCodeAt(i)
+ }
+ HEAP8[buffer] = 0
+ };
+ var _environ_get = function(__environ, environ_buf) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(40, 0, 1, __environ, environ_buf);
+ var bufSize = 0;
+ getEnvStrings().forEach((string, i) => {
+ var ptr = environ_buf + bufSize;
+ HEAPU32[__environ + i * 4 >> 2] = ptr;
+ stringToAscii(string, ptr);
+ bufSize += string.length + 1
+ });
+ return 0
+ };
+ var _environ_sizes_get = function(penviron_count, penviron_buf_size) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(41, 0, 1, penviron_count, penviron_buf_size);
+ var strings = getEnvStrings();
+ HEAPU32[penviron_count >> 2] = strings.length;
+ var bufSize = 0;
+ strings.forEach(string => bufSize += string.length + 1);
+ HEAPU32[penviron_buf_size >> 2] = bufSize;
+ return 0
+ };
+
+ function _fd_close(fd) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(42, 0, 1, fd);
+ try {
+ var stream = SYSCALLS.getStreamFromFD(fd);
+ FS.close(stream);
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return e.errno
+ }
+ }
+
+ function _fd_fdstat_get(fd, pbuf) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(43, 0, 1, fd, pbuf);
+ try {
+ var rightsBase = 0;
+ var rightsInheriting = 0;
+ var flags = 0;
+ {
+ var stream = SYSCALLS.getStreamFromFD(fd);
+ var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4
+ }
+ HEAP8[pbuf] = type;
+ HEAP16[pbuf + 2 >> 1] = flags;
+ tempI64 = [rightsBase >>> 0, (tempDouble = rightsBase, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[pbuf + 8 >> 2] = tempI64[0], HEAP32[pbuf + 12 >> 2] = tempI64[1];
+ tempI64 = [rightsInheriting >>> 0, (tempDouble = rightsInheriting, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[pbuf + 16 >> 2] = tempI64[0], HEAP32[pbuf + 20 >> 2] = tempI64[1];
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return e.errno
+ }
+ }
+ var doReadv = (stream, iov, iovcnt, offset) => {
+ var ret = 0;
+ for (var i = 0; i < iovcnt; i++) {
+ var ptr = HEAPU32[iov >> 2];
+ var len = HEAPU32[iov + 4 >> 2];
+ iov += 8;
+ var curr = FS.read(stream, HEAP8, ptr, len, offset);
+ if (curr < 0) return -1;
+ ret += curr;
+ if (curr < len) break;
+ if (typeof offset !== "undefined") {
+ offset += curr
+ }
+ }
+ return ret
+ };
+
+ function _fd_pread(fd, iov, iovcnt, offset_low, offset_high, pnum) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(44, 0, 1, fd, iov, iovcnt, offset_low, offset_high, pnum);
+ var offset = convertI32PairToI53Checked(offset_low, offset_high);
+ try {
+ if (isNaN(offset)) return 61;
+ var stream = SYSCALLS.getStreamFromFD(fd);
+ var num = doReadv(stream, iov, iovcnt, offset);
+ HEAPU32[pnum >> 2] = num;
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return e.errno
+ }
+ }
+
+ function _fd_read(fd, iov, iovcnt, pnum) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(45, 0, 1, fd, iov, iovcnt, pnum);
+ try {
+ var stream = SYSCALLS.getStreamFromFD(fd);
+ var num = doReadv(stream, iov, iovcnt);
+ HEAPU32[pnum >> 2] = num;
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return e.errno
+ }
+ }
+
+ function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(46, 0, 1, fd, offset_low, offset_high, whence, newOffset);
+ var offset = convertI32PairToI53Checked(offset_low, offset_high);
+ try {
+ if (isNaN(offset)) return 61;
+ var stream = SYSCALLS.getStreamFromFD(fd);
+ FS.llseek(stream, offset, whence);
+ tempI64 = [stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? +Math.floor(tempDouble / 4294967296) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];
+ if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return e.errno
+ }
+ }
+ var _fd_sync = function(fd) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(47, 0, 1, fd);
+ try {
+ var stream = SYSCALLS.getStreamFromFD(fd);
+ return Asyncify.handleSleep(wakeUp => {
+ var mount = stream.node.mount;
+ if (!mount.type.syncfs) {
+ wakeUp(0);
+ return
+ }
+ mount.type.syncfs(mount, false, err => {
+ if (err) {
+ wakeUp(29);
+ return
+ }
+ wakeUp(0)
+ })
+ })
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return e.errno
+ }
+ };
+ _fd_sync.isAsync = true;
+ var doWritev = (stream, iov, iovcnt, offset) => {
+ var ret = 0;
+ for (var i = 0; i < iovcnt; i++) {
+ var ptr = HEAPU32[iov >> 2];
+ var len = HEAPU32[iov + 4 >> 2];
+ iov += 8;
+ var curr = FS.write(stream, HEAP8, ptr, len, offset);
+ if (curr < 0) return -1;
+ ret += curr;
+ if (typeof offset !== "undefined") {
+ offset += curr
+ }
+ }
+ return ret
+ };
+
+ function _fd_write(fd, iov, iovcnt, pnum) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(48, 0, 1, fd, iov, iovcnt, pnum);
+ try {
+ var stream = SYSCALLS.getStreamFromFD(fd);
+ var num = doWritev(stream, iov, iovcnt);
+ HEAPU32[pnum >> 2] = num;
+ return 0
+ } catch (e) {
+ if (typeof FS == "undefined" || !(e.name === "ErrnoError")) throw e;
+ return e.errno
+ }
+ }
+
+ function _getaddrinfo(node, service, hint, out) {
+ if (ENVIRONMENT_IS_PTHREAD) return proxyToMainThread(49, 0, 1, node, service, hint, out);
+ var addr = 0;
+ var port = 0;
+ var flags = 0;
+ var family = 0;
+ var type = 0;
+ var proto = 0;
+ var ai;
+
+ function allocaddrinfo(family, type, proto, canon, addr, port) {
+ var sa, salen, ai;
+ var errno;
+ salen = family === 10 ? 28 : 16;
+ addr = family === 10 ? inetNtop6(addr) : inetNtop4(addr);
+ sa = _malloc(salen);
+ errno = writeSockaddr(sa, family, addr, port);
+ assert(!errno);
+ ai = _malloc(32);
+ HEAP32[ai + 4 >> 2] = family;
+ HEAP32[ai + 8 >> 2] = type;
+ HEAP32[ai + 12 >> 2] = proto;
+ HEAPU32[ai + 24 >> 2] = canon;
+ HEAPU32[ai + 20 >> 2] = sa;
+ if (family === 10) {
+ HEAP32[ai + 16 >> 2] = 28
+ } else {
+ HEAP32[ai + 16 >> 2] = 16
+ }
+ HEAP32[ai + 28 >> 2] = 0;
+ return ai
+ }
+ if (hint) {
+ flags = HEAP32[hint >> 2];
+ family = HEAP32[hint + 4 >> 2];
+ type = HEAP32[hint + 8 >> 2];
+ proto = HEAP32[hint + 12 >> 2]
+ }
+ if (type && !proto) {
+ proto = type === 2 ? 17 : 6
+ }
+ if (!type && proto) {
+ type = proto === 17 ? 2 : 1
+ }
+ if (proto === 0) {
+ proto = 6
+ }
+ if (type === 0) {
+ type = 1
+ }
+ if (!node && !service) {
+ return -2
+ }
+ if (flags & ~(1 | 2 | 4 | 1024 | 8 | 16 | 32)) {
+ return -1
+ }
+ if (hint !== 0 && HEAP32[hint >> 2] & 2 && !node) {
+ return -1
+ }
+ if (flags & 32) {
+ return -2
+ }
+ if (type !== 0 && type !== 1 && type !== 2) {
+ return -7
+ }
+ if (family !== 0 && family !== 2 && family !== 10) {
+ return -6
+ }
+ if (service) {
+ service = UTF8ToString(service);
+ port = parseInt(service, 10);
+ if (isNaN(port)) {
+ if (flags & 1024) {
+ return -2
+ }
+ return -8
+ }
+ }
+ if (!node) {
+ if (family === 0) {
+ family = 2
+ }
+ if ((flags & 1) === 0) {
+ if (family === 2) {
+ addr = _htonl(2130706433)
+ } else {
+ addr = [0, 0, 0, 1]
+ }
+ }
+ ai = allocaddrinfo(family, type, proto, null, addr, port);
+ HEAPU32[out >> 2] = ai;
+ return 0
+ }
+ node = UTF8ToString(node);
+ addr = inetPton4(node);
+ if (addr !== null) {
+ if (family === 0 || family === 2) {
+ family = 2
+ } else if (family === 10 && flags & 8) {
+ addr = [0, 0, _htonl(65535), addr];
+ family = 10
+ } else {
+ return -2
+ }
+ } else {
+ addr = inetPton6(node);
+ if (addr !== null) {
+ if (family === 0 || family === 10) {
+ family = 10
+ } else {
+ return -2
+ }
+ }
+ }
+ if (addr != null) {
+ ai = allocaddrinfo(family, type, proto, node, addr, port);
+ HEAPU32[out >> 2] = ai;
+ return 0
+ }
+ if (flags & 4) {
+ return -2
+ }
+ node = DNS.lookup_name(node);
+ addr = inetPton4(node);
+ if (family === 0) {
+ family = 2
+ } else if (family === 10) {
+ addr = [0, 0, _htonl(65535), addr]
+ }
+ ai = allocaddrinfo(family, type, proto, null, addr, port);
+ HEAPU32[out >> 2] = ai;
+ return 0
+ }
+ var _getnameinfo = (sa, salen, node, nodelen, serv, servlen, flags) => {
+ var info = readSockaddr(sa, salen);
+ if (info.errno) {
+ return -6
+ }
+ var port = info.port;
+ var addr = info.addr;
+ var overflowed = false;
+ if (node && nodelen) {
+ var lookup;
+ if (flags & 1 || !(lookup = DNS.lookup_addr(addr))) {
+ if (flags & 8) {
+ return -2
+ }
+ } else {
+ addr = lookup
+ }
+ var numBytesWrittenExclNull = stringToUTF8(addr, node, nodelen);
+ if (numBytesWrittenExclNull + 1 >= nodelen) {
+ overflowed = true
+ }
+ }
+ if (serv && servlen) {
+ port = "" + port;
+ var numBytesWrittenExclNull = stringToUTF8(port, serv, servlen);
+ if (numBytesWrittenExclNull + 1 >= servlen) {
+ overflowed = true
+ }
+ }
+ if (overflowed) {
+ return -12
+ }
+ return 0
+ };
+ var arraySum = (array, index) => {
+ var sum = 0;
+ for (var i = 0; i <= index; sum += array[i++]) {}
+ return sum
+ };
+ var MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
+ var MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
+ var addDays = (date, days) => {
+ var newDate = new Date(date.getTime());
+ while (days > 0) {
+ var leap = isLeapYear(newDate.getFullYear());
+ var currentMonth = newDate.getMonth();
+ var daysInCurrentMonth = (leap ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR)[currentMonth];
+ if (days > daysInCurrentMonth - newDate.getDate()) {
+ days -= daysInCurrentMonth - newDate.getDate() + 1;
+ newDate.setDate(1);
+ if (currentMonth < 11) {
+ newDate.setMonth(currentMonth + 1)
+ } else {
+ newDate.setMonth(0);
+ newDate.setFullYear(newDate.getFullYear() + 1)
+ }
+ } else {
+ newDate.setDate(newDate.getDate() + days);
+ return newDate
+ }
+ }
+ return newDate
+ };
+ var writeArrayToMemory = (array, buffer) => {
+ assert(array.length >= 0, "writeArrayToMemory array must have a length (should be an array or typed array)");
+ HEAP8.set(array, buffer)
+ };
+ var _strftime = (s, maxsize, format, tm) => {
+ var tm_zone = HEAPU32[tm + 40 >> 2];
+ var date = {
+ tm_sec: HEAP32[tm >> 2],
+ tm_min: HEAP32[tm + 4 >> 2],
+ tm_hour: HEAP32[tm + 8 >> 2],
+ tm_mday: HEAP32[tm + 12 >> 2],
+ tm_mon: HEAP32[tm + 16 >> 2],
+ tm_year: HEAP32[tm + 20 >> 2],
+ tm_wday: HEAP32[tm + 24 >> 2],
+ tm_yday: HEAP32[tm + 28 >> 2],
+ tm_isdst: HEAP32[tm + 32 >> 2],
+ tm_gmtoff: HEAP32[tm + 36 >> 2],
+ tm_zone: tm_zone ? UTF8ToString(tm_zone) : ""
+ };
+ var pattern = UTF8ToString(format);
+ var EXPANSION_RULES_1 = {
+ "%c": "%a %b %d %H:%M:%S %Y",
+ "%D": "%m/%d/%y",
+ "%F": "%Y-%m-%d",
+ "%h": "%b",
+ "%r": "%I:%M:%S %p",
+ "%R": "%H:%M",
+ "%T": "%H:%M:%S",
+ "%x": "%m/%d/%y",
+ "%X": "%H:%M:%S",
+ "%Ec": "%c",
+ "%EC": "%C",
+ "%Ex": "%m/%d/%y",
+ "%EX": "%H:%M:%S",
+ "%Ey": "%y",
+ "%EY": "%Y",
+ "%Od": "%d",
+ "%Oe": "%e",
+ "%OH": "%H",
+ "%OI": "%I",
+ "%Om": "%m",
+ "%OM": "%M",
+ "%OS": "%S",
+ "%Ou": "%u",
+ "%OU": "%U",
+ "%OV": "%V",
+ "%Ow": "%w",
+ "%OW": "%W",
+ "%Oy": "%y"
+ };
+ for (var rule in EXPANSION_RULES_1) {
+ pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_1[rule])
+ }
+ var WEEKDAYS = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
+ var MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
+
+ function leadingSomething(value, digits, character) {
+ var str = typeof value == "number" ? value.toString() : value || "";
+ while (str.length < digits) {
+ str = character[0] + str
+ }
+ return str
+ }
+
+ function leadingNulls(value, digits) {
+ return leadingSomething(value, digits, "0")
+ }
+
+ function compareByDay(date1, date2) {
+ function sgn(value) {
+ return value < 0 ? -1 : value > 0 ? 1 : 0
+ }
+ var compare;
+ if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {
+ if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {
+ compare = sgn(date1.getDate() - date2.getDate())
+ }
+ }
+ return compare
+ }
+
+ function getFirstWeekStartDate(janFourth) {
+ switch (janFourth.getDay()) {
+ case 0:
+ return new Date(janFourth.getFullYear() - 1, 11, 29);
+ case 1:
+ return janFourth;
+ case 2:
+ return new Date(janFourth.getFullYear(), 0, 3);
+ case 3:
+ return new Date(janFourth.getFullYear(), 0, 2);
+ case 4:
+ return new Date(janFourth.getFullYear(), 0, 1);
+ case 5:
+ return new Date(janFourth.getFullYear() - 1, 11, 31);
+ case 6:
+ return new Date(janFourth.getFullYear() - 1, 11, 30)
+ }
+ }
+
+ function getWeekBasedYear(date) {
+ var thisDate = addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);
+ var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);
+ var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);
+ var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);
+ var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);
+ if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {
+ if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {
+ return thisDate.getFullYear() + 1
+ }
+ return thisDate.getFullYear()
+ }
+ return thisDate.getFullYear() - 1
+ }
+ var EXPANSION_RULES_2 = {
+ "%a": date => WEEKDAYS[date.tm_wday].substring(0, 3),
+ "%A": date => WEEKDAYS[date.tm_wday],
+ "%b": date => MONTHS[date.tm_mon].substring(0, 3),
+ "%B": date => MONTHS[date.tm_mon],
+ "%C": date => {
+ var year = date.tm_year + 1900;
+ return leadingNulls(year / 100 | 0, 2)
+ },
+ "%d": date => leadingNulls(date.tm_mday, 2),
+ "%e": date => leadingSomething(date.tm_mday, 2, " "),
+ "%g": date => getWeekBasedYear(date).toString().substring(2),
+ "%G": getWeekBasedYear,
+ "%H": date => leadingNulls(date.tm_hour, 2),
+ "%I": date => {
+ var twelveHour = date.tm_hour;
+ if (twelveHour == 0) twelveHour = 12;
+ else if (twelveHour > 12) twelveHour -= 12;
+ return leadingNulls(twelveHour, 2)
+ },
+ "%j": date => leadingNulls(date.tm_mday + arraySum(isLeapYear(date.tm_year + 1900) ? MONTH_DAYS_LEAP : MONTH_DAYS_REGULAR, date.tm_mon - 1), 3),
+ "%m": date => leadingNulls(date.tm_mon + 1, 2),
+ "%M": date => leadingNulls(date.tm_min, 2),
+ "%n": () => "\n",
+ "%p": date => {
+ if (date.tm_hour >= 0 && date.tm_hour < 12) {
+ return "AM"
+ }
+ return "PM"
+ },
+ "%S": date => leadingNulls(date.tm_sec, 2),
+ "%t": () => "\t",
+ "%u": date => date.tm_wday || 7,
+ "%U": date => {
+ var days = date.tm_yday + 7 - date.tm_wday;
+ return leadingNulls(Math.floor(days / 7), 2)
+ },
+ "%V": date => {
+ var val = Math.floor((date.tm_yday + 7 - (date.tm_wday + 6) % 7) / 7);
+ if ((date.tm_wday + 371 - date.tm_yday - 2) % 7 <= 2) {
+ val++
+ }
+ if (!val) {
+ val = 52;
+ var dec31 = (date.tm_wday + 7 - date.tm_yday - 1) % 7;
+ if (dec31 == 4 || dec31 == 5 && isLeapYear(date.tm_year % 400 - 1)) {
+ val++
+ }
+ } else if (val == 53) {
+ var jan1 = (date.tm_wday + 371 - date.tm_yday) % 7;
+ if (jan1 != 4 && (jan1 != 3 || !isLeapYear(date.tm_year))) val = 1
+ }
+ return leadingNulls(val, 2)
+ },
+ "%w": date => date.tm_wday,
+ "%W": date => {
+ var days = date.tm_yday + 7 - (date.tm_wday + 6) % 7;
+ return leadingNulls(Math.floor(days / 7), 2)
+ },
+ "%y": date => (date.tm_year + 1900).toString().substring(2),
+ "%Y": date => date.tm_year + 1900,
+ "%z": date => {
+ var off = date.tm_gmtoff;
+ var ahead = off >= 0;
+ off = Math.abs(off) / 60;
+ off = off / 60 * 100 + off % 60;
+ return (ahead ? "+" : "-") + String("0000" + off).slice(-4)
+ },
+ "%Z": date => date.tm_zone,
+ "%%": () => "%"
+ };
+ pattern = pattern.replace(/%%/g, "\0\0");
+ for (var rule in EXPANSION_RULES_2) {
+ if (pattern.includes(rule)) {
+ pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_2[rule](date))
+ }
+ }
+ pattern = pattern.replace(/\0\0/g, "%");
+ var bytes = intArrayFromString(pattern, false);
+ if (bytes.length > maxsize) {
+ return 0
+ }
+ writeArrayToMemory(bytes, s);
+ return bytes.length - 1
+ };
+ var _strftime_l = (s, maxsize, format, tm, loc) => _strftime(s, maxsize, format, tm);
+
+ function _webaudio_getChannels() {
+ if (Module.webaudioContext === undefined) return 0;
+ return Module.webaudioContext.destination.channelCount
+ }
+
+ function _webaudio_getSampleRate() {
+ if (Module.webaudioContext === undefined) return 0;
+ return Module.webaudioContext.sampleRate
+ }
+ async function _webaudio_init(rate, channels, webaudio_buffer, latency) {
+ const STORAGE_SIZE = 1024 * 1024;
+ if (latency === 0) {
+ latency = "playback"
+ } else if (latency === 1) {
+ latency = "interactive"
+ } else if (latency === 2) {
+ latency = "balanced"
+ } else {
+ console.error("error: bad latency setting!");
+ return
+ }
+ var audioCtx = new AudioContext({
+ latencyHint: latency,
+ sampleRate: rate
+ });
+ audioCtx.suspend();
+ Module.webaudioContext = audioCtx;
+ var msg = {};
+ msg["type"] = "recv-audio-queue";
+ msg["is_paused"] = new Int32Array(wasmMemory.buffer, webaudio_buffer, 1);
+ msg["is_paused"][0] = 0;
+ webaudio_buffer += 4;
+ msg["head"] = new Int32Array(wasmMemory.buffer, webaudio_buffer, 1);
+ webaudio_buffer += 4;
+ msg["tail"] = new Int32Array(wasmMemory.buffer, webaudio_buffer, 1);
+ webaudio_buffer += 4;
+ msg["can_write"] = new Int32Array(wasmMemory.buffer, webaudio_buffer, 1);
+ msg["can_write"][0] = 1;
+ webaudio_buffer += 4;
+ msg["storage"] = new Float32Array(wasmMemory.buffer, webaudio_buffer, STORAGE_SIZE / 4);
+ if (audioCtx.sampleRate != rate) {
+ console.error("desired rate unsupported by the browser, actual sample rate is: " + audioCtx.sampleRate)
+ }
+ if (audioCtx.destination.maxChannelCount < channels) {
+ console.error("Max number of channels of the browser is ", audioCtx.destination.maxChannelCount);
+ channels = audioCtx.destination.maxChannelCount
+ }
+ try {
+ await audioCtx.audioWorklet.addModule("./lib/vlc/audio-worklet-processor.js")
+ } catch (error) {
+ console.error("could not add worklet module error: " + error);
+ return
+ }
+ const node = new AudioWorkletNode(audioCtx, "worklet-processor", {
+ numberOfInputs: 0,
+ numberOfOutputs: 1,
+ outputChannelCount: [channels]
+ });
+ var p = new Promise(function(resolve, reject) {
+ node["port"].onmessage = function(e) {
+ console.log("successfully constructed AudioWorkletProcessor");
+ if (e.data === "ready") {
+ resolve()
+ } else if (e.data === "error") {
+ reject();
+ return
+ }
+ }
+ });
+ node["port"].postMessage(msg);
+ await p;
+ node.connect(audioCtx.destination);
+ audioCtx.resume()
+ }
+ _webaudio_init.isAsync = true;
+ var wasmTableMirror = [];
+ var wasmTable;
+ var runAndAbortIfError = func => {
+ try {
+ return func()
+ } catch (e) {
+ abort(e)
+ }
+ };
+ var Asyncify = {
+ instrumentWasmImports(imports) {
+ var importPattern = /^(invoke_.*|__asyncjs__.*)$/;
+ for (let [x, original] of Object.entries(imports)) {
+ let sig = original.sig;
+ if (typeof original == "function") {
+ let isAsyncifyImport = original.isAsync || importPattern.test(x);
+ imports[x] = (...args) => {
+ var originalAsyncifyState = Asyncify.state;
+ try {
+ return original(...args)
+ } finally {
+ var changedToDisabled = originalAsyncifyState === Asyncify.State.Normal && Asyncify.state === Asyncify.State.Disabled;
+ var ignoredInvoke = x.startsWith("invoke_") && true;
+ if (Asyncify.state !== originalAsyncifyState && !isAsyncifyImport && !changedToDisabled && !ignoredInvoke) {
+ throw new Error(`import ${x} was not in ASYNCIFY_IMPORTS, but changed the state`)
+ }
+ }
+ }
+ }
+ }
+ },
+ instrumentWasmExports(exports) {
+ var ret = {};
+ for (let [x, original] of Object.entries(exports)) {
+ if (typeof original == "function") {
+ ret[x] = (...args) => {
+ Asyncify.exportCallStack.push(x);
+ try {
+ return original(...args)
+ } finally {
+ if (!ABORT) {
+ var y = Asyncify.exportCallStack.pop();
+ assert(y === x);
+ Asyncify.maybeStopUnwind()
+ }
+ }
+ }
+ } else {
+ ret[x] = original
+ }
+ }
+ return ret
+ },
+ State: {
+ Normal: 0,
+ Unwinding: 1,
+ Rewinding: 2,
+ Disabled: 3
+ },
+ state: 0,
+ StackSize: 4096,
+ currData: null,
+ handleSleepReturnValue: 0,
+ exportCallStack: [],
+ callStackNameToId: {},
+ callStackIdToName: {},
+ callStackId: 0,
+ asyncPromiseHandlers: null,
+ sleepCallbacks: [],
+ getCallStackId(funcName) {
+ var id = Asyncify.callStackNameToId[funcName];
+ if (id === undefined) {
+ id = Asyncify.callStackId++;
+ Asyncify.callStackNameToId[funcName] = id;
+ Asyncify.callStackIdToName[id] = funcName
+ }
+ return id
+ },
+ maybeStopUnwind() {
+ if (Asyncify.currData && Asyncify.state === Asyncify.State.Unwinding && Asyncify.exportCallStack.length === 0) {
+ Asyncify.state = Asyncify.State.Normal;
+ runtimeKeepalivePush();
+ runAndAbortIfError(_asyncify_stop_unwind);
+ if (typeof Fibers != "undefined") {
+ Fibers.trampoline()
+ }
+ }
+ },
+ whenDone() {
+ assert(Asyncify.currData, "Tried to wait for an async operation when none is in progress.");
+ assert(!Asyncify.asyncPromiseHandlers, "Cannot have multiple async operations in flight at once");
+ return new Promise((resolve, reject) => {
+ Asyncify.asyncPromiseHandlers = {
+ resolve: resolve,
+ reject: reject
+ }
+ })
+ },
+ allocateData() {
+ var ptr = _malloc(12 + Asyncify.StackSize);
+ Asyncify.setDataHeader(ptr, ptr + 12, Asyncify.StackSize);
+ Asyncify.setDataRewindFunc(ptr);
+ return ptr
+ },
+ setDataHeader(ptr, stack, stackSize) {
+ HEAPU32[ptr >> 2] = stack;
+ HEAPU32[ptr + 4 >> 2] = stack + stackSize
+ },
+ setDataRewindFunc(ptr) {
+ var bottomOfCallStack = Asyncify.exportCallStack[0];
+ var rewindId = Asyncify.getCallStackId(bottomOfCallStack);
+ HEAP32[ptr + 8 >> 2] = rewindId
+ },
+ getDataRewindFunc(ptr) {
+ var id = HEAP32[ptr + 8 >> 2];
+ var name = Asyncify.callStackIdToName[id];
+ var func = wasmExports[name];
+ return func
+ },
+ doRewind(ptr) {
+ var start = Asyncify.getDataRewindFunc(ptr);
+ runtimeKeepalivePop();
+ return start()
+ },
+ handleSleep(startAsync) {
+ assert(Asyncify.state !== Asyncify.State.Disabled, "Asyncify cannot be done during or after the runtime exits");
+ if (ABORT) return;
+ if (Asyncify.state === Asyncify.State.Normal) {
+ var reachedCallback = false;
+ var reachedAfterCallback = false;
+ startAsync((handleSleepReturnValue = 0) => {
+ assert(!handleSleepReturnValue || typeof handleSleepReturnValue == "number" || typeof handleSleepReturnValue == "boolean");
+ if (ABORT) return;
+ Asyncify.handleSleepReturnValue = handleSleepReturnValue;
+ reachedCallback = true;
+ if (!reachedAfterCallback) {
+ return
+ }
+ assert(!Asyncify.exportCallStack.length, "Waking up (starting to rewind) must be done from JS, without compiled code on the stack.");
+ Asyncify.state = Asyncify.State.Rewinding;
+ runAndAbortIfError(() => _asyncify_start_rewind(Asyncify.currData));
+ if (typeof Browser != "undefined" && Browser.mainLoop.func) {
+ Browser.mainLoop.resume()
+ }
+ var asyncWasmReturnValue, isError = false;
+ try {
+ asyncWasmReturnValue = Asyncify.doRewind(Asyncify.currData)
+ } catch (err) {
+ asyncWasmReturnValue = err;
+ isError = true
+ }
+ var handled = false;
+ if (!Asyncify.currData) {
+ var asyncPromiseHandlers = Asyncify.asyncPromiseHandlers;
+ if (asyncPromiseHandlers) {
+ Asyncify.asyncPromiseHandlers = null;
+ (isError ? asyncPromiseHandlers.reject : asyncPromiseHandlers.resolve)(asyncWasmReturnValue);
+ handled = true
+ }
+ }
+ if (isError && !handled) {
+ throw asyncWasmReturnValue
+ }
+ });
+ reachedAfterCallback = true;
+ if (!reachedCallback) {
+ Asyncify.state = Asyncify.State.Unwinding;
+ Asyncify.currData = Asyncify.allocateData();
+ if (typeof Browser != "undefined" && Browser.mainLoop.func) {
+ Browser.mainLoop.pause()
+ }
+ runAndAbortIfError(() => _asyncify_start_unwind(Asyncify.currData))
+ }
+ } else if (Asyncify.state === Asyncify.State.Rewinding) {
+ Asyncify.state = Asyncify.State.Normal;
+ runAndAbortIfError(_asyncify_stop_rewind);
+ _free(Asyncify.currData);
+ Asyncify.currData = null;
+ Asyncify.sleepCallbacks.forEach(callUserCallback)
+ } else {
+ abort(`invalid state: ${Asyncify.state}`)
+ }
+ return Asyncify.handleSleepReturnValue
+ },
+ handleAsync(startAsync) {
+ return Asyncify.handleSleep(wakeUp => {
+ startAsync().then(wakeUp)
+ })
+ }
+ };
+ var allocateUTF8 = stringToNewUTF8;
+ var writeAsciiToMemory = (str, buffer, dontAddNull) => {
+ for (var i = 0; i < str.length; ++i) {
+ assert(str.charCodeAt(i) === (str.charCodeAt(i) & 255));
+ HEAP8[buffer++] = str.charCodeAt(i)
+ }
+ if (!dontAddNull) HEAP8[buffer] = 0
+ };
+ PThread.init();
+ FS.createPreloadedFile = FS_createPreloadedFile;
+ FS.staticInit();
+ embind_init_charCodes();
+ BindingError = Module["BindingError"] = class BindingError extends Error {
+ constructor(message) {
+ super(message);
+ this.name = "BindingError"
+ }
+ };
+ InternalError = Module["InternalError"] = class InternalError extends Error {
+ constructor(message) {
+ super(message);
+ this.name = "InternalError"
+ }
+ };
+ init_emval();
+ var GLctx;
+ Module["requestFullscreen"] = Browser.requestFullscreen;
+ Module["requestFullScreen"] = Browser.requestFullScreen;
+ Module["requestAnimationFrame"] = Browser.requestAnimationFrame;
+ Module["setCanvasSize"] = Browser.setCanvasSize;
+ Module["pauseMainLoop"] = Browser.mainLoop.pause;
+ Module["resumeMainLoop"] = Browser.mainLoop.resume;
+ Module["getUserMedia"] = Browser.getUserMedia;
+ Module["createContext"] = Browser.createContext;
+ var preloadedImages = {};
+ var preloadedAudios = {};
+ for (var i = 0; i < 32; ++i) tempFixedLengthArray.push(new Array(i));
+ var miniTempWebGLFloatBuffersStorage = new Float32Array(288);
+ for (var i = 0; i < 288; ++i) {
+ miniTempWebGLFloatBuffers[i] = miniTempWebGLFloatBuffersStorage.subarray(0, i + 1)
+ }
+ var miniTempWebGLIntBuffersStorage = new Int32Array(288);
+ for (var i = 0; i < 288; ++i) {
+ miniTempWebGLIntBuffers[i] = miniTempWebGLIntBuffersStorage.subarray(0, i + 1)
+ }
+ var proxiedFunctionTable = [_proc_exit, exitOnMainThread, pthreadCreateProxied, ___syscall_accept4, ___syscall_bind, ___syscall_connect, ___syscall_dup, ___syscall_dup3, ___syscall_faccessat, ___syscall_fadvise64, ___syscall_fcntl64, ___syscall_fdatasync, ___syscall_fstat64, ___syscall_ftruncate64, ___syscall_getcwd, ___syscall_getdents64, ___syscall_getpeername, ___syscall_getsockname, ___syscall_getsockopt, ___syscall_ioctl, ___syscall_listen, ___syscall_lstat64, ___syscall_mkdirat, ___syscall_newfstatat, ___syscall_openat, ___syscall_pipe, ___syscall_poll, ___syscall_recvfrom, ___syscall_recvmsg, ___syscall_renameat, ___syscall_rmdir, ___syscall_sendmsg, ___syscall_sendto, ___syscall_socket, ___syscall_stat64, ___syscall_unlinkat, __emscripten_runtime_keepalive_clear, __mmap_js, __munmap_js, _eglGetDisplay, _environ_get, _environ_sizes_get, _fd_close, _fd_fdstat_get, _fd_pread, _fd_read, _fd_seek, _fd_sync, _fd_write, _getaddrinfo];
+
+ function checkIncomingModuleAPI() {
+ ignoredModuleProp("fetchSettings")
+ }
+ var wasmImports = {
+ __assert_fail: ___assert_fail,
+ __asyncjs__CopyFrameToBuffer: __asyncjs__CopyFrameToBuffer,
+ __asyncjs__Swap: __asyncjs__Swap,
+ __asyncjs__bindVideoFrame: __asyncjs__bindVideoFrame,
+ __asyncjs__flushAsync: __asyncjs__flushAsync,
+ __asyncjs__getVoutMessagePort: __asyncjs__getVoutMessagePort,
+ __asyncjs__initDecoderWorkerMessagePort: __asyncjs__initDecoderWorkerMessagePort,
+ __asyncjs__init_js_file: __asyncjs__init_js_file,
+ __asyncjs__probeConfig: __asyncjs__probeConfig,
+ __call_sighandler: ___call_sighandler,
+ __cxa_rethrow: ___cxa_rethrow,
+ __cxa_throw: ___cxa_throw,
+ __emscripten_init_main_thread_js: ___emscripten_init_main_thread_js,
+ __emscripten_thread_cleanup: ___emscripten_thread_cleanup,
+ __pthread_create_js: ___pthread_create_js,
+ __pthread_kill_js: ___pthread_kill_js,
+ __syscall_accept4: ___syscall_accept4,
+ __syscall_bind: ___syscall_bind,
+ __syscall_connect: ___syscall_connect,
+ __syscall_dup: ___syscall_dup,
+ __syscall_dup3: ___syscall_dup3,
+ __syscall_faccessat: ___syscall_faccessat,
+ __syscall_fadvise64: ___syscall_fadvise64,
+ __syscall_fcntl64: ___syscall_fcntl64,
+ __syscall_fdatasync: ___syscall_fdatasync,
+ __syscall_fstat64: ___syscall_fstat64,
+ __syscall_ftruncate64: ___syscall_ftruncate64,
+ __syscall_getcwd: ___syscall_getcwd,
+ __syscall_getdents64: ___syscall_getdents64,
+ __syscall_getpeername: ___syscall_getpeername,
+ __syscall_getsockname: ___syscall_getsockname,
+ __syscall_getsockopt: ___syscall_getsockopt,
+ __syscall_ioctl: ___syscall_ioctl,
+ __syscall_listen: ___syscall_listen,
+ __syscall_lstat64: ___syscall_lstat64,
+ __syscall_mkdirat: ___syscall_mkdirat,
+ __syscall_newfstatat: ___syscall_newfstatat,
+ __syscall_openat: ___syscall_openat,
+ __syscall_pipe: ___syscall_pipe,
+ __syscall_poll: ___syscall_poll,
+ __syscall_recvfrom: ___syscall_recvfrom,
+ __syscall_recvmsg: ___syscall_recvmsg,
+ __syscall_renameat: ___syscall_renameat,
+ __syscall_rmdir: ___syscall_rmdir,
+ __syscall_sendmsg: ___syscall_sendmsg,
+ __syscall_sendto: ___syscall_sendto,
+ __syscall_socket: ___syscall_socket,
+ __syscall_stat64: ___syscall_stat64,
+ __syscall_unlinkat: ___syscall_unlinkat,
+ _embind_register_bigint: __embind_register_bigint,
+ _embind_register_bool: __embind_register_bool,
+ _embind_register_emval: __embind_register_emval,
+ _embind_register_float: __embind_register_float,
+ _embind_register_integer: __embind_register_integer,
+ _embind_register_memory_view: __embind_register_memory_view,
+ _embind_register_std_string: __embind_register_std_string,
+ _embind_register_std_wstring: __embind_register_std_wstring,
+ _embind_register_void: __embind_register_void,
+ _emscripten_get_now_is_monotonic: __emscripten_get_now_is_monotonic,
+ _emscripten_notify_mailbox_postmessage: __emscripten_notify_mailbox_postmessage,
+ _emscripten_proxied_gl_context_activated_from_main_browser_thread: __emscripten_proxied_gl_context_activated_from_main_browser_thread,
+ _emscripten_receive_on_main_thread_js: __emscripten_receive_on_main_thread_js,
+ _emscripten_runtime_keepalive_clear: __emscripten_runtime_keepalive_clear,
+ _emscripten_thread_mailbox_await: __emscripten_thread_mailbox_await,
+ _emscripten_thread_set_strongref: __emscripten_thread_set_strongref,
+ _emscripten_throw_longjmp: __emscripten_throw_longjmp,
+ _emval_as: __emval_as,
+ _emval_call: __emval_call,
+ _emval_call_method: __emval_call_method,
+ _emval_decref: __emval_decref,
+ _emval_get_global: __emval_get_global,
+ _emval_get_method_caller: __emval_get_method_caller,
+ _emval_get_property: __emval_get_property,
+ _emval_incref: __emval_incref,
+ _emval_new_array: __emval_new_array,
+ _emval_new_cstring: __emval_new_cstring,
+ _emval_new_object: __emval_new_object,
+ _emval_run_destructors: __emval_run_destructors,
+ _emval_set_property: __emval_set_property,
+ _emval_take_value: __emval_take_value,
+ _gmtime_js: __gmtime_js,
+ _localtime_js: __localtime_js,
+ _mktime_js: __mktime_js,
+ _mmap_js: __mmap_js,
+ _munmap_js: __munmap_js,
+ _timegm_js: __timegm_js,
+ _tzset_js: __tzset_js,
+ abort: _abort,
+ closeMessagePort: closeMessagePort,
+ createGlContext: createGlContext,
+ eglGetDisplay: _eglGetDisplay,
+ emscripten_asm_const_async_on_main_thread: _emscripten_asm_const_async_on_main_thread,
+ emscripten_asm_const_int: _emscripten_asm_const_int,
+ emscripten_asm_const_int_sync_on_main_thread: _emscripten_asm_const_int_sync_on_main_thread,
+ emscripten_cancel_main_loop: _emscripten_cancel_main_loop,
+ emscripten_check_blocking_allowed: _emscripten_check_blocking_allowed,
+ emscripten_date_now: _emscripten_date_now,
+ emscripten_err: _emscripten_err,
+ emscripten_exit_with_live_runtime: _emscripten_exit_with_live_runtime,
+ emscripten_get_heap_max: _emscripten_get_heap_max,
+ emscripten_get_now: _emscripten_get_now,
+ emscripten_get_now_res: _emscripten_get_now_res,
+ emscripten_glActiveTexture: _emscripten_glActiveTexture,
+ emscripten_glAttachShader: _emscripten_glAttachShader,
+ emscripten_glBeginQuery: _emscripten_glBeginQuery,
+ emscripten_glBeginQueryEXT: _emscripten_glBeginQueryEXT,
+ emscripten_glBeginTransformFeedback: _emscripten_glBeginTransformFeedback,
+ emscripten_glBindAttribLocation: _emscripten_glBindAttribLocation,
+ emscripten_glBindBuffer: _emscripten_glBindBuffer,
+ emscripten_glBindBufferBase: _emscripten_glBindBufferBase,
+ emscripten_glBindBufferRange: _emscripten_glBindBufferRange,
+ emscripten_glBindFramebuffer: _emscripten_glBindFramebuffer,
+ emscripten_glBindRenderbuffer: _emscripten_glBindRenderbuffer,
+ emscripten_glBindSampler: _emscripten_glBindSampler,
+ emscripten_glBindTexture: _emscripten_glBindTexture,
+ emscripten_glBindTransformFeedback: _emscripten_glBindTransformFeedback,
+ emscripten_glBindVertexArray: _emscripten_glBindVertexArray,
+ emscripten_glBlendColor: _emscripten_glBlendColor,
+ emscripten_glBlendEquation: _emscripten_glBlendEquation,
+ emscripten_glBlendEquationSeparate: _emscripten_glBlendEquationSeparate,
+ emscripten_glBlendFunc: _emscripten_glBlendFunc,
+ emscripten_glBlendFuncSeparate: _emscripten_glBlendFuncSeparate,
+ emscripten_glBlitFramebuffer: _emscripten_glBlitFramebuffer,
+ emscripten_glBufferData: _emscripten_glBufferData,
+ emscripten_glBufferSubData: _emscripten_glBufferSubData,
+ emscripten_glCheckFramebufferStatus: _emscripten_glCheckFramebufferStatus,
+ emscripten_glClear: _emscripten_glClear,
+ emscripten_glClearBufferfi: _emscripten_glClearBufferfi,
+ emscripten_glClearBufferfv: _emscripten_glClearBufferfv,
+ emscripten_glClearBufferiv: _emscripten_glClearBufferiv,
+ emscripten_glClearBufferuiv: _emscripten_glClearBufferuiv,
+ emscripten_glClearColor: _emscripten_glClearColor,
+ emscripten_glClearDepthf: _emscripten_glClearDepthf,
+ emscripten_glClearStencil: _emscripten_glClearStencil,
+ emscripten_glClientWaitSync: _emscripten_glClientWaitSync,
+ emscripten_glColorMask: _emscripten_glColorMask,
+ emscripten_glCompileShader: _emscripten_glCompileShader,
+ emscripten_glCompressedTexImage2D: _emscripten_glCompressedTexImage2D,
+ emscripten_glCompressedTexImage3D: _emscripten_glCompressedTexImage3D,
+ emscripten_glCompressedTexSubImage2D: _emscripten_glCompressedTexSubImage2D,
+ emscripten_glCompressedTexSubImage3D: _emscripten_glCompressedTexSubImage3D,
+ emscripten_glCopyBufferSubData: _emscripten_glCopyBufferSubData,
+ emscripten_glCopyTexImage2D: _emscripten_glCopyTexImage2D,
+ emscripten_glCopyTexSubImage2D: _emscripten_glCopyTexSubImage2D,
+ emscripten_glCopyTexSubImage3D: _emscripten_glCopyTexSubImage3D,
+ emscripten_glCreateProgram: _emscripten_glCreateProgram,
+ emscripten_glCreateShader: _emscripten_glCreateShader,
+ emscripten_glCullFace: _emscripten_glCullFace,
+ emscripten_glDeleteBuffers: _emscripten_glDeleteBuffers,
+ emscripten_glDeleteFramebuffers: _emscripten_glDeleteFramebuffers,
+ emscripten_glDeleteProgram: _emscripten_glDeleteProgram,
+ emscripten_glDeleteQueries: _emscripten_glDeleteQueries,
+ emscripten_glDeleteQueriesEXT: _emscripten_glDeleteQueriesEXT,
+ emscripten_glDeleteRenderbuffers: _emscripten_glDeleteRenderbuffers,
+ emscripten_glDeleteSamplers: _emscripten_glDeleteSamplers,
+ emscripten_glDeleteShader: _emscripten_glDeleteShader,
+ emscripten_glDeleteSync: _emscripten_glDeleteSync,
+ emscripten_glDeleteTextures: _emscripten_glDeleteTextures,
+ emscripten_glDeleteTransformFeedbacks: _emscripten_glDeleteTransformFeedbacks,
+ emscripten_glDeleteVertexArrays: _emscripten_glDeleteVertexArrays,
+ emscripten_glDepthFunc: _emscripten_glDepthFunc,
+ emscripten_glDepthMask: _emscripten_glDepthMask,
+ emscripten_glDepthRangef: _emscripten_glDepthRangef,
+ emscripten_glDetachShader: _emscripten_glDetachShader,
+ emscripten_glDisable: _emscripten_glDisable,
+ emscripten_glDisableVertexAttribArray: _emscripten_glDisableVertexAttribArray,
+ emscripten_glDrawArrays: _emscripten_glDrawArrays,
+ emscripten_glDrawArraysInstanced: _emscripten_glDrawArraysInstanced,
+ emscripten_glDrawBuffers: _emscripten_glDrawBuffers,
+ emscripten_glDrawElements: _emscripten_glDrawElements,
+ emscripten_glDrawElementsInstanced: _emscripten_glDrawElementsInstanced,
+ emscripten_glDrawRangeElements: _emscripten_glDrawRangeElements,
+ emscripten_glEnable: _emscripten_glEnable,
+ emscripten_glEnableVertexAttribArray: _emscripten_glEnableVertexAttribArray,
+ emscripten_glEndQuery: _emscripten_glEndQuery,
+ emscripten_glEndQueryEXT: _emscripten_glEndQueryEXT,
+ emscripten_glEndTransformFeedback: _emscripten_glEndTransformFeedback,
+ emscripten_glFenceSync: _emscripten_glFenceSync,
+ emscripten_glFinish: _emscripten_glFinish,
+ emscripten_glFlush: _emscripten_glFlush,
+ emscripten_glFramebufferRenderbuffer: _emscripten_glFramebufferRenderbuffer,
+ emscripten_glFramebufferTexture2D: _emscripten_glFramebufferTexture2D,
+ emscripten_glFramebufferTextureLayer: _emscripten_glFramebufferTextureLayer,
+ emscripten_glFrontFace: _emscripten_glFrontFace,
+ emscripten_glGenBuffers: _emscripten_glGenBuffers,
+ emscripten_glGenFramebuffers: _emscripten_glGenFramebuffers,
+ emscripten_glGenQueries: _emscripten_glGenQueries,
+ emscripten_glGenQueriesEXT: _emscripten_glGenQueriesEXT,
+ emscripten_glGenRenderbuffers: _emscripten_glGenRenderbuffers,
+ emscripten_glGenSamplers: _emscripten_glGenSamplers,
+ emscripten_glGenTextures: _emscripten_glGenTextures,
+ emscripten_glGenTransformFeedbacks: _emscripten_glGenTransformFeedbacks,
+ emscripten_glGenVertexArrays: _emscripten_glGenVertexArrays,
+ emscripten_glGenerateMipmap: _emscripten_glGenerateMipmap,
+ emscripten_glGetActiveAttrib: _emscripten_glGetActiveAttrib,
+ emscripten_glGetActiveUniform: _emscripten_glGetActiveUniform,
+ emscripten_glGetActiveUniformBlockName: _emscripten_glGetActiveUniformBlockName,
+ emscripten_glGetActiveUniformBlockiv: _emscripten_glGetActiveUniformBlockiv,
+ emscripten_glGetActiveUniformsiv: _emscripten_glGetActiveUniformsiv,
+ emscripten_glGetAttachedShaders: _emscripten_glGetAttachedShaders,
+ emscripten_glGetAttribLocation: _emscripten_glGetAttribLocation,
+ emscripten_glGetBooleanv: _emscripten_glGetBooleanv,
+ emscripten_glGetBufferParameteri64v: _emscripten_glGetBufferParameteri64v,
+ emscripten_glGetBufferParameteriv: _emscripten_glGetBufferParameteriv,
+ emscripten_glGetError: _emscripten_glGetError,
+ emscripten_glGetFloatv: _emscripten_glGetFloatv,
+ emscripten_glGetFragDataLocation: _emscripten_glGetFragDataLocation,
+ emscripten_glGetFramebufferAttachmentParameteriv: _emscripten_glGetFramebufferAttachmentParameteriv,
+ emscripten_glGetInteger64i_v: _emscripten_glGetInteger64i_v,
+ emscripten_glGetInteger64v: _emscripten_glGetInteger64v,
+ emscripten_glGetIntegeri_v: _emscripten_glGetIntegeri_v,
+ emscripten_glGetIntegerv: _emscripten_glGetIntegerv,
+ emscripten_glGetInternalformativ: _emscripten_glGetInternalformativ,
+ emscripten_glGetProgramBinary: _emscripten_glGetProgramBinary,
+ emscripten_glGetProgramInfoLog: _emscripten_glGetProgramInfoLog,
+ emscripten_glGetProgramiv: _emscripten_glGetProgramiv,
+ emscripten_glGetQueryObjecti64vEXT: _emscripten_glGetQueryObjecti64vEXT,
+ emscripten_glGetQueryObjectivEXT: _emscripten_glGetQueryObjectivEXT,
+ emscripten_glGetQueryObjectui64vEXT: _emscripten_glGetQueryObjectui64vEXT,
+ emscripten_glGetQueryObjectuiv: _emscripten_glGetQueryObjectuiv,
+ emscripten_glGetQueryObjectuivEXT: _emscripten_glGetQueryObjectuivEXT,
+ emscripten_glGetQueryiv: _emscripten_glGetQueryiv,
+ emscripten_glGetQueryivEXT: _emscripten_glGetQueryivEXT,
+ emscripten_glGetRenderbufferParameteriv: _emscripten_glGetRenderbufferParameteriv,
+ emscripten_glGetSamplerParameterfv: _emscripten_glGetSamplerParameterfv,
+ emscripten_glGetSamplerParameteriv: _emscripten_glGetSamplerParameteriv,
+ emscripten_glGetShaderInfoLog: _emscripten_glGetShaderInfoLog,
+ emscripten_glGetShaderPrecisionFormat: _emscripten_glGetShaderPrecisionFormat,
+ emscripten_glGetShaderSource: _emscripten_glGetShaderSource,
+ emscripten_glGetShaderiv: _emscripten_glGetShaderiv,
+ emscripten_glGetString: _emscripten_glGetString,
+ emscripten_glGetStringi: _emscripten_glGetStringi,
+ emscripten_glGetSynciv: _emscripten_glGetSynciv,
+ emscripten_glGetTexParameterfv: _emscripten_glGetTexParameterfv,
+ emscripten_glGetTexParameteriv: _emscripten_glGetTexParameteriv,
+ emscripten_glGetTransformFeedbackVarying: _emscripten_glGetTransformFeedbackVarying,
+ emscripten_glGetUniformBlockIndex: _emscripten_glGetUniformBlockIndex,
+ emscripten_glGetUniformIndices: _emscripten_glGetUniformIndices,
+ emscripten_glGetUniformLocation: _emscripten_glGetUniformLocation,
+ emscripten_glGetUniformfv: _emscripten_glGetUniformfv,
+ emscripten_glGetUniformiv: _emscripten_glGetUniformiv,
+ emscripten_glGetUniformuiv: _emscripten_glGetUniformuiv,
+ emscripten_glGetVertexAttribIiv: _emscripten_glGetVertexAttribIiv,
+ emscripten_glGetVertexAttribIuiv: _emscripten_glGetVertexAttribIuiv,
+ emscripten_glGetVertexAttribPointerv: _emscripten_glGetVertexAttribPointerv,
+ emscripten_glGetVertexAttribfv: _emscripten_glGetVertexAttribfv,
+ emscripten_glGetVertexAttribiv: _emscripten_glGetVertexAttribiv,
+ emscripten_glHint: _emscripten_glHint,
+ emscripten_glInvalidateFramebuffer: _emscripten_glInvalidateFramebuffer,
+ emscripten_glInvalidateSubFramebuffer: _emscripten_glInvalidateSubFramebuffer,
+ emscripten_glIsBuffer: _emscripten_glIsBuffer,
+ emscripten_glIsEnabled: _emscripten_glIsEnabled,
+ emscripten_glIsFramebuffer: _emscripten_glIsFramebuffer,
+ emscripten_glIsProgram: _emscripten_glIsProgram,
+ emscripten_glIsQuery: _emscripten_glIsQuery,
+ emscripten_glIsQueryEXT: _emscripten_glIsQueryEXT,
+ emscripten_glIsRenderbuffer: _emscripten_glIsRenderbuffer,
+ emscripten_glIsSampler: _emscripten_glIsSampler,
+ emscripten_glIsShader: _emscripten_glIsShader,
+ emscripten_glIsSync: _emscripten_glIsSync,
+ emscripten_glIsTexture: _emscripten_glIsTexture,
+ emscripten_glIsTransformFeedback: _emscripten_glIsTransformFeedback,
+ emscripten_glIsVertexArray: _emscripten_glIsVertexArray,
+ emscripten_glLineWidth: _emscripten_glLineWidth,
+ emscripten_glLinkProgram: _emscripten_glLinkProgram,
+ emscripten_glPauseTransformFeedback: _emscripten_glPauseTransformFeedback,
+ emscripten_glPixelStorei: _emscripten_glPixelStorei,
+ emscripten_glPolygonOffset: _emscripten_glPolygonOffset,
+ emscripten_glProgramBinary: _emscripten_glProgramBinary,
+ emscripten_glProgramParameteri: _emscripten_glProgramParameteri,
+ emscripten_glQueryCounterEXT: _emscripten_glQueryCounterEXT,
+ emscripten_glReadBuffer: _emscripten_glReadBuffer,
+ emscripten_glReadPixels: _emscripten_glReadPixels,
+ emscripten_glReleaseShaderCompiler: _emscripten_glReleaseShaderCompiler,
+ emscripten_glRenderbufferStorage: _emscripten_glRenderbufferStorage,
+ emscripten_glRenderbufferStorageMultisample: _emscripten_glRenderbufferStorageMultisample,
+ emscripten_glResumeTransformFeedback: _emscripten_glResumeTransformFeedback,
+ emscripten_glSampleCoverage: _emscripten_glSampleCoverage,
+ emscripten_glSamplerParameterf: _emscripten_glSamplerParameterf,
+ emscripten_glSamplerParameterfv: _emscripten_glSamplerParameterfv,
+ emscripten_glSamplerParameteri: _emscripten_glSamplerParameteri,
+ emscripten_glSamplerParameteriv: _emscripten_glSamplerParameteriv,
+ emscripten_glScissor: _emscripten_glScissor,
+ emscripten_glShaderBinary: _emscripten_glShaderBinary,
+ emscripten_glShaderSource: _emscripten_glShaderSource,
+ emscripten_glStencilFunc: _emscripten_glStencilFunc,
+ emscripten_glStencilFuncSeparate: _emscripten_glStencilFuncSeparate,
+ emscripten_glStencilMask: _emscripten_glStencilMask,
+ emscripten_glStencilMaskSeparate: _emscripten_glStencilMaskSeparate,
+ emscripten_glStencilOp: _emscripten_glStencilOp,
+ emscripten_glStencilOpSeparate: _emscripten_glStencilOpSeparate,
+ emscripten_glTexImage2D: _emscripten_glTexImage2D,
+ emscripten_glTexImage3D: _emscripten_glTexImage3D,
+ emscripten_glTexParameterf: _emscripten_glTexParameterf,
+ emscripten_glTexParameterfv: _emscripten_glTexParameterfv,
+ emscripten_glTexParameteri: _emscripten_glTexParameteri,
+ emscripten_glTexParameteriv: _emscripten_glTexParameteriv,
+ emscripten_glTexStorage2D: _emscripten_glTexStorage2D,
+ emscripten_glTexStorage3D: _emscripten_glTexStorage3D,
+ emscripten_glTexSubImage2D: _emscripten_glTexSubImage2D,
+ emscripten_glTexSubImage3D: _emscripten_glTexSubImage3D,
+ emscripten_glTransformFeedbackVaryings: _emscripten_glTransformFeedbackVaryings,
+ emscripten_glUniform1f: _emscripten_glUniform1f,
+ emscripten_glUniform1fv: _emscripten_glUniform1fv,
+ emscripten_glUniform1i: _emscripten_glUniform1i,
+ emscripten_glUniform1iv: _emscripten_glUniform1iv,
+ emscripten_glUniform1ui: _emscripten_glUniform1ui,
+ emscripten_glUniform1uiv: _emscripten_glUniform1uiv,
+ emscripten_glUniform2f: _emscripten_glUniform2f,
+ emscripten_glUniform2fv: _emscripten_glUniform2fv,
+ emscripten_glUniform2i: _emscripten_glUniform2i,
+ emscripten_glUniform2iv: _emscripten_glUniform2iv,
+ emscripten_glUniform2ui: _emscripten_glUniform2ui,
+ emscripten_glUniform2uiv: _emscripten_glUniform2uiv,
+ emscripten_glUniform3f: _emscripten_glUniform3f,
+ emscripten_glUniform3fv: _emscripten_glUniform3fv,
+ emscripten_glUniform3i: _emscripten_glUniform3i,
+ emscripten_glUniform3iv: _emscripten_glUniform3iv,
+ emscripten_glUniform3ui: _emscripten_glUniform3ui,
+ emscripten_glUniform3uiv: _emscripten_glUniform3uiv,
+ emscripten_glUniform4f: _emscripten_glUniform4f,
+ emscripten_glUniform4fv: _emscripten_glUniform4fv,
+ emscripten_glUniform4i: _emscripten_glUniform4i,
+ emscripten_glUniform4iv: _emscripten_glUniform4iv,
+ emscripten_glUniform4ui: _emscripten_glUniform4ui,
+ emscripten_glUniform4uiv: _emscripten_glUniform4uiv,
+ emscripten_glUniformBlockBinding: _emscripten_glUniformBlockBinding,
+ emscripten_glUniformMatrix2fv: _emscripten_glUniformMatrix2fv,
+ emscripten_glUniformMatrix2x3fv: _emscripten_glUniformMatrix2x3fv,
+ emscripten_glUniformMatrix2x4fv: _emscripten_glUniformMatrix2x4fv,
+ emscripten_glUniformMatrix3fv: _emscripten_glUniformMatrix3fv,
+ emscripten_glUniformMatrix3x2fv: _emscripten_glUniformMatrix3x2fv,
+ emscripten_glUniformMatrix3x4fv: _emscripten_glUniformMatrix3x4fv,
+ emscripten_glUniformMatrix4fv: _emscripten_glUniformMatrix4fv,
+ emscripten_glUniformMatrix4x2fv: _emscripten_glUniformMatrix4x2fv,
+ emscripten_glUniformMatrix4x3fv: _emscripten_glUniformMatrix4x3fv,
+ emscripten_glUseProgram: _emscripten_glUseProgram,
+ emscripten_glValidateProgram: _emscripten_glValidateProgram,
+ emscripten_glVertexAttrib1f: _emscripten_glVertexAttrib1f,
+ emscripten_glVertexAttrib1fv: _emscripten_glVertexAttrib1fv,
+ emscripten_glVertexAttrib2f: _emscripten_glVertexAttrib2f,
+ emscripten_glVertexAttrib2fv: _emscripten_glVertexAttrib2fv,
+ emscripten_glVertexAttrib3f: _emscripten_glVertexAttrib3f,
+ emscripten_glVertexAttrib3fv: _emscripten_glVertexAttrib3fv,
+ emscripten_glVertexAttrib4f: _emscripten_glVertexAttrib4f,
+ emscripten_glVertexAttrib4fv: _emscripten_glVertexAttrib4fv,
+ emscripten_glVertexAttribDivisor: _emscripten_glVertexAttribDivisor,
+ emscripten_glVertexAttribI4i: _emscripten_glVertexAttribI4i,
+ emscripten_glVertexAttribI4iv: _emscripten_glVertexAttribI4iv,
+ emscripten_glVertexAttribI4ui: _emscripten_glVertexAttribI4ui,
+ emscripten_glVertexAttribI4uiv: _emscripten_glVertexAttribI4uiv,
+ emscripten_glVertexAttribIPointer: _emscripten_glVertexAttribIPointer,
+ emscripten_glVertexAttribPointer: _emscripten_glVertexAttribPointer,
+ emscripten_glViewport: _emscripten_glViewport,
+ emscripten_glWaitSync: _emscripten_glWaitSync,
+ emscripten_log: _emscripten_log,
+ emscripten_num_logical_cores: _emscripten_num_logical_cores,
+ emscripten_resize_heap: _emscripten_resize_heap,
+ emscripten_set_main_loop: _emscripten_set_main_loop,
+ emscripten_set_main_loop_arg: _emscripten_set_main_loop_arg,
+ emscripten_unwind_to_js_event_loop: _emscripten_unwind_to_js_event_loop,
+ emscripten_webgl_do_commit_frame: _emscripten_webgl_do_commit_frame,
+ emscripten_webgl_make_context_current_calling_thread: _emscripten_webgl_make_context_current_calling_thread,
+ environ_get: _environ_get,
+ environ_sizes_get: _environ_sizes_get,
+ exit: _exit,
+ fd_close: _fd_close,
+ fd_fdstat_get: _fd_fdstat_get,
+ fd_pread: _fd_pread,
+ fd_read: _fd_read,
+ fd_seek: _fd_seek,
+ fd_sync: _fd_sync,
+ fd_write: _fd_write,
+ getaddrinfo: _getaddrinfo,
+ getnameinfo: _getnameinfo,
+ initDecoderJS: initDecoderJS,
+ initGlConvWorker: initGlConvWorker,
+ invoke_ii: invoke_ii,
+ invoke_iii: invoke_iii,
+ invoke_iiii: invoke_iiii,
+ invoke_iiiii: invoke_iiiii,
+ invoke_iiiiiiiiii: invoke_iiiiiiiiii,
+ invoke_v: invoke_v,
+ invoke_vi: invoke_vi,
+ invoke_vii: invoke_vii,
+ invoke_viid: invoke_viid,
+ invoke_viii: invoke_viii,
+ invoke_viiii: invoke_viiii,
+ invoke_viiiii: invoke_viiiii,
+ invoke_viiiiiiiii: invoke_viiiiiiiii,
+ memory: wasmMemory || Module["wasmMemory"],
+ proc_exit: _proc_exit,
+ setupMessagePort: setupMessagePort,
+ strftime: _strftime,
+ strftime_l: _strftime_l,
+ webaudio_getChannels: _webaudio_getChannels,
+ webaudio_getSampleRate: _webaudio_getSampleRate,
+ webaudio_init: _webaudio_init
+ };
+ Asyncify.instrumentWasmImports(wasmImports);
+ var wasmExports = createWasm();
+ var ___wasm_call_ctors = createExportWrapper("__wasm_call_ctors");
+ var _set_global_media_player = Module["_set_global_media_player"] = createExportWrapper("set_global_media_player");
+ var _attach_update_events = Module["_attach_update_events"] = createExportWrapper("attach_update_events");
+ var _libvlc_media_player_event_manager = Module["_libvlc_media_player_event_manager"] = createExportWrapper("libvlc_media_player_event_manager");
+ var _libvlc_event_attach = Module["_libvlc_event_attach"] = createExportWrapper("libvlc_event_attach");
+ var _libvlc_media_player_get_time = Module["_libvlc_media_player_get_time"] = createExportWrapper("libvlc_media_player_get_time");
+ var _main = Module["_main"] = createExportWrapper("main");
+ var _wasm_media_player_new = Module["_wasm_media_player_new"] = createExportWrapper("wasm_media_player_new");
+ var _libvlc_media_player_new = Module["_libvlc_media_player_new"] = createExportWrapper("libvlc_media_player_new");
+ var _wasm_media_list_player_new = Module["_wasm_media_list_player_new"] = createExportWrapper("wasm_media_list_player_new");
+ var _libvlc_media_list_player_new = Module["_libvlc_media_list_player_new"] = createExportWrapper("libvlc_media_list_player_new");
+ var _wasm_media_player_new_from_media = Module["_wasm_media_player_new_from_media"] = createExportWrapper("wasm_media_player_new_from_media");
+ var _libvlc_media_player_new_from_media = Module["_libvlc_media_player_new_from_media"] = createExportWrapper("libvlc_media_player_new_from_media");
+ var _wasm_media_player_release = Module["_wasm_media_player_release"] = createExportWrapper("wasm_media_player_release");
+ var _libvlc_media_player_release = Module["_libvlc_media_player_release"] = createExportWrapper("libvlc_media_player_release");
+ var _wasmc_media_player_retain = Module["_wasmc_media_player_retain"] = createExportWrapper("wasmc_media_player_retain");
+ var _libvlc_media_player_retain = Module["_libvlc_media_player_retain"] = createExportWrapper("libvlc_media_player_retain");
+ var _wasm_media_player_set_media = Module["_wasm_media_player_set_media"] = createExportWrapper("wasm_media_player_set_media");
+ var _libvlc_media_player_set_media = Module["_libvlc_media_player_set_media"] = createExportWrapper("libvlc_media_player_set_media");
+ var _wasm_media_player_get_media = Module["_wasm_media_player_get_media"] = createExportWrapper("wasm_media_player_get_media");
+ var _libvlc_media_player_get_media = Module["_libvlc_media_player_get_media"] = createExportWrapper("libvlc_media_player_get_media");
+ var _wasm_media_player_is_playing = Module["_wasm_media_player_is_playing"] = createExportWrapper("wasm_media_player_is_playing");
+ var _libvlc_media_player_is_playing = Module["_libvlc_media_player_is_playing"] = createExportWrapper("libvlc_media_player_is_playing");
+ var _wasm_media_player_play = Module["_wasm_media_player_play"] = createExportWrapper("wasm_media_player_play");
+ var _libvlc_media_player_play = Module["_libvlc_media_player_play"] = createExportWrapper("libvlc_media_player_play");
+ var _wasm_media_player_set_pause = Module["_wasm_media_player_set_pause"] = createExportWrapper("wasm_media_player_set_pause");
+ var _libvlc_media_player_set_pause = Module["_libvlc_media_player_set_pause"] = createExportWrapper("libvlc_media_player_set_pause");
+ var _wasm_media_player_pause = Module["_wasm_media_player_pause"] = createExportWrapper("wasm_media_player_pause");
+ var _libvlc_media_player_pause = Module["_libvlc_media_player_pause"] = createExportWrapper("libvlc_media_player_pause");
+ var _wasm_media_player_stop = Module["_wasm_media_player_stop"] = createExportWrapper("wasm_media_player_stop");
+ var _libvlc_media_player_stop_async = Module["_libvlc_media_player_stop_async"] = createExportWrapper("libvlc_media_player_stop_async");
+ var _wasm_media_player_get_length = Module["_wasm_media_player_get_length"] = createExportWrapper("wasm_media_player_get_length");
+ var _libvlc_media_player_get_length = Module["_libvlc_media_player_get_length"] = createExportWrapper("libvlc_media_player_get_length");
+ var _wasm_media_player_get_time = Module["_wasm_media_player_get_time"] = createExportWrapper("wasm_media_player_get_time");
+ var _wasm_media_player_set_time = Module["_wasm_media_player_set_time"] = createExportWrapper("wasm_media_player_set_time");
+ var _libvlc_media_player_set_time = Module["_libvlc_media_player_set_time"] = createExportWrapper("libvlc_media_player_set_time");
+ var _wasm_media_player_get_position = Module["_wasm_media_player_get_position"] = createExportWrapper("wasm_media_player_get_position");
+ var _libvlc_media_player_get_position = Module["_libvlc_media_player_get_position"] = createExportWrapper("libvlc_media_player_get_position");
+ var _wasm_media_player_set_position = Module["_wasm_media_player_set_position"] = createExportWrapper("wasm_media_player_set_position");
+ var _libvlc_media_player_set_position = Module["_libvlc_media_player_set_position"] = createExportWrapper("libvlc_media_player_set_position");
+ var _wasm_media_player_set_chapter = Module["_wasm_media_player_set_chapter"] = createExportWrapper("wasm_media_player_set_chapter");
+ var _libvlc_media_player_set_chapter = Module["_libvlc_media_player_set_chapter"] = createExportWrapper("libvlc_media_player_set_chapter");
+ var _wasm_media_player_get_chapter = Module["_wasm_media_player_get_chapter"] = createExportWrapper("wasm_media_player_get_chapter");
+ var _libvlc_media_player_get_chapter = Module["_libvlc_media_player_get_chapter"] = createExportWrapper("libvlc_media_player_get_chapter");
+ var _wasm_media_player_get_chapter_count = Module["_wasm_media_player_get_chapter_count"] = createExportWrapper("wasm_media_player_get_chapter_count");
+ var _libvlc_media_player_get_chapter_count = Module["_libvlc_media_player_get_chapter_count"] = createExportWrapper("libvlc_media_player_get_chapter_count");
+ var _wasm_media_player_get_chapter_count_for_title = Module["_wasm_media_player_get_chapter_count_for_title"] = createExportWrapper("wasm_media_player_get_chapter_count_for_title");
+ var _libvlc_media_player_get_chapter_count_for_title = Module["_libvlc_media_player_get_chapter_count_for_title"] = createExportWrapper("libvlc_media_player_get_chapter_count_for_title");
+ var _wasm_media_player_set_title = Module["_wasm_media_player_set_title"] = createExportWrapper("wasm_media_player_set_title");
+ var _libvlc_media_player_set_title = Module["_libvlc_media_player_set_title"] = createExportWrapper("libvlc_media_player_set_title");
+ var _wasm_media_player_get_title = Module["_wasm_media_player_get_title"] = createExportWrapper("wasm_media_player_get_title");
+ var _libvlc_media_player_get_title = Module["_libvlc_media_player_get_title"] = createExportWrapper("libvlc_media_player_get_title");
+ var _wasm_media_player_get_title_count = Module["_wasm_media_player_get_title_count"] = createExportWrapper("wasm_media_player_get_title_count");
+ var _libvlc_media_player_get_title_count = Module["_libvlc_media_player_get_title_count"] = createExportWrapper("libvlc_media_player_get_title_count");
+ var _wasm_media_player_previous_chapter = Module["_wasm_media_player_previous_chapter"] = createExportWrapper("wasm_media_player_previous_chapter");
+ var _libvlc_media_player_previous_chapter = Module["_libvlc_media_player_previous_chapter"] = createExportWrapper("libvlc_media_player_previous_chapter");
+ var _wasm_media_player_next_chapter = Module["_wasm_media_player_next_chapter"] = createExportWrapper("wasm_media_player_next_chapter");
+ var _libvlc_media_player_next_chapter = Module["_libvlc_media_player_next_chapter"] = createExportWrapper("libvlc_media_player_next_chapter");
+ var _wasm_media_player_get_rate = Module["_wasm_media_player_get_rate"] = createExportWrapper("wasm_media_player_get_rate");
+ var _libvlc_media_player_get_rate = Module["_libvlc_media_player_get_rate"] = createExportWrapper("libvlc_media_player_get_rate");
+ var _wasm_media_player_set_rate = Module["_wasm_media_player_set_rate"] = createExportWrapper("wasm_media_player_set_rate");
+ var _libvlc_media_player_set_rate = Module["_libvlc_media_player_set_rate"] = createExportWrapper("libvlc_media_player_set_rate");
+ var _wasm_media_player_has_vout = Module["_wasm_media_player_has_vout"] = createExportWrapper("wasm_media_player_has_vout");
+ var _libvlc_media_player_has_vout = Module["_libvlc_media_player_has_vout"] = createExportWrapper("libvlc_media_player_has_vout");
+ var _wasm_media_player_is_seekable = Module["_wasm_media_player_is_seekable"] = createExportWrapper("wasm_media_player_is_seekable");
+ var _libvlc_media_player_is_seekable = Module["_libvlc_media_player_is_seekable"] = createExportWrapper("libvlc_media_player_is_seekable");
+ var _wasm_media_player_can_pause = Module["_wasm_media_player_can_pause"] = createExportWrapper("wasm_media_player_can_pause");
+ var _libvlc_media_player_can_pause = Module["_libvlc_media_player_can_pause"] = createExportWrapper("libvlc_media_player_can_pause");
+ var _wasm_media_player_program_scrambled = Module["_wasm_media_player_program_scrambled"] = createExportWrapper("wasm_media_player_program_scrambled");
+ var _libvlc_media_player_program_scrambled = Module["_libvlc_media_player_program_scrambled"] = createExportWrapper("libvlc_media_player_program_scrambled");
+ var _wasm_media_player_next_frame = Module["_wasm_media_player_next_frame"] = createExportWrapper("wasm_media_player_next_frame");
+ var _libvlc_media_player_next_frame = Module["_libvlc_media_player_next_frame"] = createExportWrapper("libvlc_media_player_next_frame");
+ var _wasm_video_get_size_x = Module["_wasm_video_get_size_x"] = createExportWrapper("wasm_video_get_size_x");
+ var _libvlc_video_get_size = Module["_libvlc_video_get_size"] = createExportWrapper("libvlc_video_get_size");
+ var _wasm_video_get_size_y = Module["_wasm_video_get_size_y"] = createExportWrapper("wasm_video_get_size_y");
+ var _wasm_video_get_cursor_x = Module["_wasm_video_get_cursor_x"] = createExportWrapper("wasm_video_get_cursor_x");
+ var _libvlc_video_get_cursor = Module["_libvlc_video_get_cursor"] = createExportWrapper("libvlc_video_get_cursor");
+ var _wasm_video_get_cursor_y = Module["_wasm_video_get_cursor_y"] = createExportWrapper("wasm_video_get_cursor_y");
+ var _wasm_audio_toggle_mute = Module["_wasm_audio_toggle_mute"] = createExportWrapper("wasm_audio_toggle_mute");
+ var _libvlc_audio_toggle_mute = Module["_libvlc_audio_toggle_mute"] = createExportWrapper("libvlc_audio_toggle_mute");
+ var _wasm_audio_get_mute = Module["_wasm_audio_get_mute"] = createExportWrapper("wasm_audio_get_mute");
+ var _libvlc_audio_get_mute = Module["_libvlc_audio_get_mute"] = createExportWrapper("libvlc_audio_get_mute");
+ var _wasm_audio_set_mute = Module["_wasm_audio_set_mute"] = createExportWrapper("wasm_audio_set_mute");
+ var _libvlc_audio_set_mute = Module["_libvlc_audio_set_mute"] = createExportWrapper("libvlc_audio_set_mute");
+ var _wasm_audio_get_volume = Module["_wasm_audio_get_volume"] = createExportWrapper("wasm_audio_get_volume");
+ var _libvlc_audio_get_volume = Module["_libvlc_audio_get_volume"] = createExportWrapper("libvlc_audio_get_volume");
+ var _wasm_audio_set_volume = Module["_wasm_audio_set_volume"] = createExportWrapper("wasm_audio_set_volume");
+ var _libvlc_audio_set_volume = Module["_libvlc_audio_set_volume"] = createExportWrapper("libvlc_audio_set_volume");
+ var _wasm_audio_get_channel = Module["_wasm_audio_get_channel"] = createExportWrapper("wasm_audio_get_channel");
+ var _libvlc_audio_get_channel = Module["_libvlc_audio_get_channel"] = createExportWrapper("libvlc_audio_get_channel");
+ var _wasm_audio_set_channel = Module["_wasm_audio_set_channel"] = createExportWrapper("wasm_audio_set_channel");
+ var _libvlc_audio_set_channel = Module["_libvlc_audio_set_channel"] = createExportWrapper("libvlc_audio_set_channel");
+ var _wasm_audio_get_delay = Module["_wasm_audio_get_delay"] = createExportWrapper("wasm_audio_get_delay");
+ var _libvlc_audio_get_delay = Module["_libvlc_audio_get_delay"] = createExportWrapper("libvlc_audio_get_delay");
+ var _wasm_audio_set_delay = Module["_wasm_audio_set_delay"] = createExportWrapper("wasm_audio_set_delay");
+ var _libvlc_audio_set_delay = Module["_libvlc_audio_set_delay"] = createExportWrapper("libvlc_audio_set_delay");
+ var _wasm_media_player_get_role = Module["_wasm_media_player_get_role"] = createExportWrapper("wasm_media_player_get_role");
+ var _libvlc_media_player_get_role = Module["_libvlc_media_player_get_role"] = createExportWrapper("libvlc_media_player_get_role");
+ var _wasm_media_player_set_role = Module["_wasm_media_player_set_role"] = createExportWrapper("wasm_media_player_set_role");
+ var _libvlc_media_player_set_role = Module["_libvlc_media_player_set_role"] = createExportWrapper("libvlc_media_player_set_role");
+ var _wasm_libvlc_init = Module["_wasm_libvlc_init"] = createExportWrapper("wasm_libvlc_init");
+ var _libvlc_new = Module["_libvlc_new"] = createExportWrapper("libvlc_new");
+ var _wasm_media_new_path = Module["_wasm_media_new_path"] = createExportWrapper("wasm_media_new_path");
+ var _libvlc_media_new_path = Module["_libvlc_media_new_path"] = createExportWrapper("libvlc_media_new_path");
+ var _wasm_media_new_location = Module["_wasm_media_new_location"] = createExportWrapper("wasm_media_new_location");
+ var _libvlc_media_new_location = Module["_libvlc_media_new_location"] = createExportWrapper("libvlc_media_new_location");
+ var _wasm_media_retain = Module["_wasm_media_retain"] = createExportWrapper("wasm_media_retain");
+ var _libvlc_media_retain = Module["_libvlc_media_retain"] = createExportWrapper("libvlc_media_retain");
+ var _wasm_media_release = Module["_wasm_media_release"] = createExportWrapper("wasm_media_release");
+ var _libvlc_media_release = Module["_libvlc_media_release"] = createExportWrapper("libvlc_media_release");
+ var _malloc = Module["_malloc"] = createExportWrapper("malloc");
+ var _free = Module["_free"] = createExportWrapper("free");
+ var _libvlc_retain = Module["_libvlc_retain"] = createExportWrapper("libvlc_retain");
+ var _libvlc_release = Module["_libvlc_release"] = createExportWrapper("libvlc_release");
+ var _libvlc_set_exit_handler = Module["_libvlc_set_exit_handler"] = createExportWrapper("libvlc_set_exit_handler");
+ var _libvlc_set_user_agent = Module["_libvlc_set_user_agent"] = createExportWrapper("libvlc_set_user_agent");
+ var _libvlc_set_app_id = Module["_libvlc_set_app_id"] = createExportWrapper("libvlc_set_app_id");
+ var _libvlc_get_version = Module["_libvlc_get_version"] = createExportWrapper("libvlc_get_version");
+ var _libvlc_get_compiler = Module["_libvlc_get_compiler"] = createExportWrapper("libvlc_get_compiler");
+ var _libvlc_get_changeset = Module["_libvlc_get_changeset"] = createExportWrapper("libvlc_get_changeset");
+ var _libvlc_free = Module["_libvlc_free"] = createExportWrapper("libvlc_free");
+ var _libvlc_module_description_list_release = Module["_libvlc_module_description_list_release"] = createExportWrapper("libvlc_module_description_list_release");
+ var _libvlc_audio_filter_list_get = Module["_libvlc_audio_filter_list_get"] = createExportWrapper("libvlc_audio_filter_list_get");
+ var _libvlc_video_filter_list_get = Module["_libvlc_video_filter_list_get"] = createExportWrapper("libvlc_video_filter_list_get");
+ var _libvlc_clock = Module["_libvlc_clock"] = createExportWrapper("libvlc_clock");
+ var _libvlc_dialog_set_callbacks = Module["_libvlc_dialog_set_callbacks"] = createExportWrapper("libvlc_dialog_set_callbacks");
+ var _libvlc_dialog_set_context = Module["_libvlc_dialog_set_context"] = createExportWrapper("libvlc_dialog_set_context");
+ var _libvlc_dialog_get_context = Module["_libvlc_dialog_get_context"] = createExportWrapper("libvlc_dialog_get_context");
+ var _libvlc_dialog_post_login = Module["_libvlc_dialog_post_login"] = createExportWrapper("libvlc_dialog_post_login");
+ var _libvlc_dialog_post_action = Module["_libvlc_dialog_post_action"] = createExportWrapper("libvlc_dialog_post_action");
+ var _libvlc_dialog_dismiss = Module["_libvlc_dialog_dismiss"] = createExportWrapper("libvlc_dialog_dismiss");
+ var _libvlc_renderer_item_hold = Module["_libvlc_renderer_item_hold"] = createExportWrapper("libvlc_renderer_item_hold");
+ var _libvlc_renderer_item_release = Module["_libvlc_renderer_item_release"] = createExportWrapper("libvlc_renderer_item_release");
+ var _libvlc_renderer_item_name = Module["_libvlc_renderer_item_name"] = createExportWrapper("libvlc_renderer_item_name");
+ var _libvlc_renderer_item_type = Module["_libvlc_renderer_item_type"] = createExportWrapper("libvlc_renderer_item_type");
+ var _libvlc_renderer_item_icon_uri = Module["_libvlc_renderer_item_icon_uri"] = createExportWrapper("libvlc_renderer_item_icon_uri");
+ var _libvlc_renderer_item_flags = Module["_libvlc_renderer_item_flags"] = createExportWrapper("libvlc_renderer_item_flags");
+ var _libvlc_renderer_discoverer_new = Module["_libvlc_renderer_discoverer_new"] = createExportWrapper("libvlc_renderer_discoverer_new");
+ var _libvlc_renderer_discoverer_release = Module["_libvlc_renderer_discoverer_release"] = createExportWrapper("libvlc_renderer_discoverer_release");
+ var _libvlc_renderer_discoverer_stop = Module["_libvlc_renderer_discoverer_stop"] = createExportWrapper("libvlc_renderer_discoverer_stop");
+ var _libvlc_renderer_discoverer_start = Module["_libvlc_renderer_discoverer_start"] = createExportWrapper("libvlc_renderer_discoverer_start");
+ var _libvlc_renderer_discoverer_event_manager = Module["_libvlc_renderer_discoverer_event_manager"] = createExportWrapper("libvlc_renderer_discoverer_event_manager");
+ var _libvlc_renderer_discoverer_list_release = Module["_libvlc_renderer_discoverer_list_release"] = createExportWrapper("libvlc_renderer_discoverer_list_release");
+ var _libvlc_renderer_discoverer_list_get = Module["_libvlc_renderer_discoverer_list_get"] = createExportWrapper("libvlc_renderer_discoverer_list_get");
+ var _libvlc_errmsg = Module["_libvlc_errmsg"] = createExportWrapper("libvlc_errmsg");
+ var _libvlc_clearerr = Module["_libvlc_clearerr"] = createExportWrapper("libvlc_clearerr");
+ var _libvlc_log_get_context = Module["_libvlc_log_get_context"] = createExportWrapper("libvlc_log_get_context");
+ var _libvlc_log_get_object = Module["_libvlc_log_get_object"] = createExportWrapper("libvlc_log_get_object");
+ var _libvlc_log_unset = Module["_libvlc_log_unset"] = createExportWrapper("libvlc_log_unset");
+ var _libvlc_log_set = Module["_libvlc_log_set"] = createExportWrapper("libvlc_log_set");
+ var _libvlc_log_set_file = Module["_libvlc_log_set_file"] = createExportWrapper("libvlc_log_set_file");
+ var _libvlc_playlist_play = Module["_libvlc_playlist_play"] = createExportWrapper("libvlc_playlist_play");
+ var _libvlc_add_intf = Module["_libvlc_add_intf"] = createExportWrapper("libvlc_add_intf");
+ var _libvlc_set_fullscreen = Module["_libvlc_set_fullscreen"] = createExportWrapper("libvlc_set_fullscreen");
+ var _libvlc_get_fullscreen = Module["_libvlc_get_fullscreen"] = createExportWrapper("libvlc_get_fullscreen");
+ var _libvlc_toggle_fullscreen = Module["_libvlc_toggle_fullscreen"] = createExportWrapper("libvlc_toggle_fullscreen");
+ var _libvlc_video_set_key_input = Module["_libvlc_video_set_key_input"] = createExportWrapper("libvlc_video_set_key_input");
+ var _libvlc_video_set_mouse_input = Module["_libvlc_video_set_mouse_input"] = createExportWrapper("libvlc_video_set_mouse_input");
+ var _libvlc_video_take_snapshot = Module["_libvlc_video_take_snapshot"] = createExportWrapper("libvlc_video_take_snapshot");
+ var _libvlc_media_player_get_selected_track = Module["_libvlc_media_player_get_selected_track"] = createExportWrapper("libvlc_media_player_get_selected_track");
+ var _libvlc_media_track_release = Module["_libvlc_media_track_release"] = createExportWrapper("libvlc_media_track_release");
+ var _libvlc_video_get_scale = Module["_libvlc_video_get_scale"] = createExportWrapper("libvlc_video_get_scale");
+ var _libvlc_video_set_scale = Module["_libvlc_video_set_scale"] = createExportWrapper("libvlc_video_set_scale");
+ var _libvlc_video_get_aspect_ratio = Module["_libvlc_video_get_aspect_ratio"] = createExportWrapper("libvlc_video_get_aspect_ratio");
+ var _libvlc_video_set_aspect_ratio = Module["_libvlc_video_set_aspect_ratio"] = createExportWrapper("libvlc_video_set_aspect_ratio");
+ var _libvlc_video_new_viewpoint = Module["_libvlc_video_new_viewpoint"] = createExportWrapper("libvlc_video_new_viewpoint");
+ var _libvlc_video_update_viewpoint = Module["_libvlc_video_update_viewpoint"] = createExportWrapper("libvlc_video_update_viewpoint");
+ var _libvlc_video_get_spu = Module["_libvlc_video_get_spu"] = createExportWrapper("libvlc_video_get_spu");
+ var _libvlc_video_get_spu_count = Module["_libvlc_video_get_spu_count"] = createExportWrapper("libvlc_video_get_spu_count");
+ var _libvlc_video_get_spu_description = Module["_libvlc_video_get_spu_description"] = createExportWrapper("libvlc_video_get_spu_description");
+ var _libvlc_video_set_spu = Module["_libvlc_video_set_spu"] = createExportWrapper("libvlc_video_set_spu");
+ var _libvlc_video_get_spu_delay = Module["_libvlc_video_get_spu_delay"] = createExportWrapper("libvlc_video_get_spu_delay");
+ var _libvlc_video_set_spu_delay = Module["_libvlc_video_set_spu_delay"] = createExportWrapper("libvlc_video_set_spu_delay");
+ var _libvlc_video_get_spu_text_scale = Module["_libvlc_video_get_spu_text_scale"] = createExportWrapper("libvlc_video_get_spu_text_scale");
+ var _libvlc_video_set_spu_text_scale = Module["_libvlc_video_set_spu_text_scale"] = createExportWrapper("libvlc_video_set_spu_text_scale");
+ var _libvlc_video_set_crop_ratio = Module["_libvlc_video_set_crop_ratio"] = createExportWrapper("libvlc_video_set_crop_ratio");
+ var _libvlc_video_set_crop_window = Module["_libvlc_video_set_crop_window"] = createExportWrapper("libvlc_video_set_crop_window");
+ var _libvlc_video_set_crop_border = Module["_libvlc_video_set_crop_border"] = createExportWrapper("libvlc_video_set_crop_border");
+ var _libvlc_video_get_teletext = Module["_libvlc_video_get_teletext"] = createExportWrapper("libvlc_video_get_teletext");
+ var _libvlc_video_set_teletext = Module["_libvlc_video_set_teletext"] = createExportWrapper("libvlc_video_set_teletext");
+ var _libvlc_video_get_track_count = Module["_libvlc_video_get_track_count"] = createExportWrapper("libvlc_video_get_track_count");
+ var _libvlc_video_get_track_description = Module["_libvlc_video_get_track_description"] = createExportWrapper("libvlc_video_get_track_description");
+ var _libvlc_video_get_track = Module["_libvlc_video_get_track"] = createExportWrapper("libvlc_video_get_track");
+ var _libvlc_video_set_track = Module["_libvlc_video_set_track"] = createExportWrapper("libvlc_video_set_track");
+ var _libvlc_video_set_deinterlace = Module["_libvlc_video_set_deinterlace"] = createExportWrapper("libvlc_video_set_deinterlace");
+ var _libvlc_video_get_marquee_int = Module["_libvlc_video_get_marquee_int"] = createExportWrapper("libvlc_video_get_marquee_int");
+ var _libvlc_video_set_marquee_int = Module["_libvlc_video_set_marquee_int"] = createExportWrapper("libvlc_video_set_marquee_int");
+ var _libvlc_video_set_marquee_string = Module["_libvlc_video_set_marquee_string"] = createExportWrapper("libvlc_video_set_marquee_string");
+ var _libvlc_video_set_logo_string = Module["_libvlc_video_set_logo_string"] = createExportWrapper("libvlc_video_set_logo_string");
+ var _libvlc_video_set_logo_int = Module["_libvlc_video_set_logo_int"] = createExportWrapper("libvlc_video_set_logo_int");
+ var _libvlc_video_get_logo_int = Module["_libvlc_video_get_logo_int"] = createExportWrapper("libvlc_video_get_logo_int");
+ var _libvlc_video_set_adjust_int = Module["_libvlc_video_set_adjust_int"] = createExportWrapper("libvlc_video_set_adjust_int");
+ var _libvlc_video_get_adjust_int = Module["_libvlc_video_get_adjust_int"] = createExportWrapper("libvlc_video_get_adjust_int");
+ var _libvlc_video_set_adjust_float = Module["_libvlc_video_set_adjust_float"] = createExportWrapper("libvlc_video_set_adjust_float");
+ var _libvlc_video_get_adjust_float = Module["_libvlc_video_get_adjust_float"] = createExportWrapper("libvlc_video_get_adjust_float");
+ var _libvlc_audio_output_list_get = Module["_libvlc_audio_output_list_get"] = createExportWrapper("libvlc_audio_output_list_get");
+ var _libvlc_audio_output_list_release = Module["_libvlc_audio_output_list_release"] = createExportWrapper("libvlc_audio_output_list_release");
+ var _libvlc_audio_output_set = Module["_libvlc_audio_output_set"] = createExportWrapper("libvlc_audio_output_set");
+ var _libvlc_audio_output_device_enum = Module["_libvlc_audio_output_device_enum"] = createExportWrapper("libvlc_audio_output_device_enum");
+ var _libvlc_audio_output_device_list_release = Module["_libvlc_audio_output_device_list_release"] = createExportWrapper("libvlc_audio_output_device_list_release");
+ var _libvlc_audio_output_device_set = Module["_libvlc_audio_output_device_set"] = createExportWrapper("libvlc_audio_output_device_set");
+ var _libvlc_audio_output_device_get = Module["_libvlc_audio_output_device_get"] = createExportWrapper("libvlc_audio_output_device_get");
+ var _libvlc_audio_get_track_count = Module["_libvlc_audio_get_track_count"] = createExportWrapper("libvlc_audio_get_track_count");
+ var _libvlc_audio_get_track_description = Module["_libvlc_audio_get_track_description"] = createExportWrapper("libvlc_audio_get_track_description");
+ var _libvlc_audio_get_track = Module["_libvlc_audio_get_track"] = createExportWrapper("libvlc_audio_get_track");
+ var _libvlc_audio_set_track = Module["_libvlc_audio_set_track"] = createExportWrapper("libvlc_audio_set_track");
+ var _libvlc_audio_equalizer_get_preset_count = Module["_libvlc_audio_equalizer_get_preset_count"] = createExportWrapper("libvlc_audio_equalizer_get_preset_count");
+ var _libvlc_audio_equalizer_get_preset_name = Module["_libvlc_audio_equalizer_get_preset_name"] = createExportWrapper("libvlc_audio_equalizer_get_preset_name");
+ var _libvlc_audio_equalizer_get_band_count = Module["_libvlc_audio_equalizer_get_band_count"] = createExportWrapper("libvlc_audio_equalizer_get_band_count");
+ var _libvlc_audio_equalizer_get_band_frequency = Module["_libvlc_audio_equalizer_get_band_frequency"] = createExportWrapper("libvlc_audio_equalizer_get_band_frequency");
+ var _libvlc_audio_equalizer_new = Module["_libvlc_audio_equalizer_new"] = createExportWrapper("libvlc_audio_equalizer_new");
+ var _libvlc_audio_equalizer_new_from_preset = Module["_libvlc_audio_equalizer_new_from_preset"] = createExportWrapper("libvlc_audio_equalizer_new_from_preset");
+ var _libvlc_audio_equalizer_release = Module["_libvlc_audio_equalizer_release"] = createExportWrapper("libvlc_audio_equalizer_release");
+ var _libvlc_audio_equalizer_set_preamp = Module["_libvlc_audio_equalizer_set_preamp"] = createExportWrapper("libvlc_audio_equalizer_set_preamp");
+ var _libvlc_audio_equalizer_get_preamp = Module["_libvlc_audio_equalizer_get_preamp"] = createExportWrapper("libvlc_audio_equalizer_get_preamp");
+ var _libvlc_audio_equalizer_set_amp_at_index = Module["_libvlc_audio_equalizer_set_amp_at_index"] = createExportWrapper("libvlc_audio_equalizer_set_amp_at_index");
+ var _libvlc_audio_equalizer_get_amp_at_index = Module["_libvlc_audio_equalizer_get_amp_at_index"] = createExportWrapper("libvlc_audio_equalizer_get_amp_at_index");
+ var _libvlc_event_detach = Module["_libvlc_event_detach"] = createExportWrapper("libvlc_event_detach");
+ var _libvlc_media_list_new = Module["_libvlc_media_list_new"] = createExportWrapper("libvlc_media_list_new");
+ var _libvlc_media_list_lock = Module["_libvlc_media_list_lock"] = createExportWrapper("libvlc_media_list_lock");
+ var _libvlc_media_list_unlock = Module["_libvlc_media_list_unlock"] = createExportWrapper("libvlc_media_list_unlock");
+ var _libvlc_media_new_fd = Module["_libvlc_media_new_fd"] = createExportWrapper("libvlc_media_new_fd");
+ var _libvlc_media_new_callbacks = Module["_libvlc_media_new_callbacks"] = createExportWrapper("libvlc_media_new_callbacks");
+ var _libvlc_media_new_as_node = Module["_libvlc_media_new_as_node"] = createExportWrapper("libvlc_media_new_as_node");
+ var _libvlc_media_list_release = Module["_libvlc_media_list_release"] = createExportWrapper("libvlc_media_list_release");
+ var _libvlc_media_add_option = Module["_libvlc_media_add_option"] = createExportWrapper("libvlc_media_add_option");
+ var _libvlc_media_add_option_flag = Module["_libvlc_media_add_option_flag"] = createExportWrapper("libvlc_media_add_option_flag");
+ var _libvlc_media_duplicate = Module["_libvlc_media_duplicate"] = createExportWrapper("libvlc_media_duplicate");
+ var _libvlc_media_get_mrl = Module["_libvlc_media_get_mrl"] = createExportWrapper("libvlc_media_get_mrl");
+ var _libvlc_media_get_meta = Module["_libvlc_media_get_meta"] = createExportWrapper("libvlc_media_get_meta");
+ var _libvlc_media_set_meta = Module["_libvlc_media_set_meta"] = createExportWrapper("libvlc_media_set_meta");
+ var _libvlc_media_save_meta = Module["_libvlc_media_save_meta"] = createExportWrapper("libvlc_media_save_meta");
+ var _libvlc_media_subitems = Module["_libvlc_media_subitems"] = createExportWrapper("libvlc_media_subitems");
+ var _libvlc_media_list_retain = Module["_libvlc_media_list_retain"] = createExportWrapper("libvlc_media_list_retain");
+ var _libvlc_media_get_stats = Module["_libvlc_media_get_stats"] = createExportWrapper("libvlc_media_get_stats");
+ var _libvlc_media_event_manager = Module["_libvlc_media_event_manager"] = createExportWrapper("libvlc_media_event_manager");
+ var _libvlc_media_get_duration = Module["_libvlc_media_get_duration"] = createExportWrapper("libvlc_media_get_duration");
+ var _libvlc_media_get_filestat = Module["_libvlc_media_get_filestat"] = createExportWrapper("libvlc_media_get_filestat");
+ var _libvlc_media_parse = Module["_libvlc_media_parse"] = createExportWrapper("libvlc_media_parse");
+ var _libvlc_media_parse_async = Module["_libvlc_media_parse_async"] = createExportWrapper("libvlc_media_parse_async");
+ var _libvlc_media_parse_with_options = Module["_libvlc_media_parse_with_options"] = createExportWrapper("libvlc_media_parse_with_options");
+ var _libvlc_media_parse_stop = Module["_libvlc_media_parse_stop"] = createExportWrapper("libvlc_media_parse_stop");
+ var _libvlc_media_is_parsed = Module["_libvlc_media_is_parsed"] = createExportWrapper("libvlc_media_is_parsed");
+ var _libvlc_media_get_parsed_status = Module["_libvlc_media_get_parsed_status"] = createExportWrapper("libvlc_media_get_parsed_status");
+ var _libvlc_media_set_user_data = Module["_libvlc_media_set_user_data"] = createExportWrapper("libvlc_media_set_user_data");
+ var _libvlc_media_get_user_data = Module["_libvlc_media_get_user_data"] = createExportWrapper("libvlc_media_get_user_data");
+ var _libvlc_media_tracks_get = Module["_libvlc_media_tracks_get"] = createExportWrapper("libvlc_media_tracks_get");
+ var _libvlc_media_tracks_release = Module["_libvlc_media_tracks_release"] = createExportWrapper("libvlc_media_tracks_release");
+ var _libvlc_media_get_tracklist = Module["_libvlc_media_get_tracklist"] = createExportWrapper("libvlc_media_get_tracklist");
+ var _libvlc_media_get_codec_description = Module["_libvlc_media_get_codec_description"] = createExportWrapper("libvlc_media_get_codec_description");
+ var _libvlc_media_get_type = Module["_libvlc_media_get_type"] = createExportWrapper("libvlc_media_get_type");
+ var _libvlc_media_thumbnail_request_by_time = Module["_libvlc_media_thumbnail_request_by_time"] = createExportWrapper("libvlc_media_thumbnail_request_by_time");
+ var _libvlc_picture_release = Module["_libvlc_picture_release"] = createExportWrapper("libvlc_picture_release");
+ var _libvlc_media_thumbnail_request_by_pos = Module["_libvlc_media_thumbnail_request_by_pos"] = createExportWrapper("libvlc_media_thumbnail_request_by_pos");
+ var _libvlc_media_thumbnail_request_cancel = Module["_libvlc_media_thumbnail_request_cancel"] = createExportWrapper("libvlc_media_thumbnail_request_cancel");
+ var _libvlc_media_thumbnail_request_destroy = Module["_libvlc_media_thumbnail_request_destroy"] = createExportWrapper("libvlc_media_thumbnail_request_destroy");
+ var _libvlc_media_slaves_add = Module["_libvlc_media_slaves_add"] = createExportWrapper("libvlc_media_slaves_add");
+ var _libvlc_media_slaves_clear = Module["_libvlc_media_slaves_clear"] = createExportWrapper("libvlc_media_slaves_clear");
+ var _libvlc_media_slaves_get = Module["_libvlc_media_slaves_get"] = createExportWrapper("libvlc_media_slaves_get");
+ var _libvlc_media_slaves_release = Module["_libvlc_media_slaves_release"] = createExportWrapper("libvlc_media_slaves_release");
+ var _libvlc_picture_list_count = Module["_libvlc_picture_list_count"] = createExportWrapper("libvlc_picture_list_count");
+ var _libvlc_picture_list_destroy = Module["_libvlc_picture_list_destroy"] = createExportWrapper("libvlc_picture_list_destroy");
+ var _libvlc_media_track_hold = Module["_libvlc_media_track_hold"] = createExportWrapper("libvlc_media_track_hold");
+ var _libvlc_media_tracklist_delete = Module["_libvlc_media_tracklist_delete"] = createExportWrapper("libvlc_media_tracklist_delete");
+ var _libvlc_media_tracklist_count = Module["_libvlc_media_tracklist_count"] = createExportWrapper("libvlc_media_tracklist_count");
+ var _libvlc_media_tracklist_at = Module["_libvlc_media_tracklist_at"] = createExportWrapper("libvlc_media_tracklist_at");
+ var _libvlc_media_player_set_renderer = Module["_libvlc_media_player_set_renderer"] = createExportWrapper("libvlc_media_player_set_renderer");
+ var _libvlc_video_set_callbacks = Module["_libvlc_video_set_callbacks"] = createExportWrapper("libvlc_video_set_callbacks");
+ var _libvlc_video_set_format_callbacks = Module["_libvlc_video_set_format_callbacks"] = createExportWrapper("libvlc_video_set_format_callbacks");
+ var _libvlc_video_set_format = Module["_libvlc_video_set_format"] = createExportWrapper("libvlc_video_set_format");
+ var _libvlc_video_set_output_callbacks = Module["_libvlc_video_set_output_callbacks"] = createExportWrapper("libvlc_video_set_output_callbacks");
+ var _libvlc_media_player_set_nsobject = Module["_libvlc_media_player_set_nsobject"] = createExportWrapper("libvlc_media_player_set_nsobject");
+ var _libvlc_media_player_get_nsobject = Module["_libvlc_media_player_get_nsobject"] = createExportWrapper("libvlc_media_player_get_nsobject");
+ var _libvlc_media_player_set_xwindow = Module["_libvlc_media_player_set_xwindow"] = createExportWrapper("libvlc_media_player_set_xwindow");
+ var _libvlc_media_player_get_xwindow = Module["_libvlc_media_player_get_xwindow"] = createExportWrapper("libvlc_media_player_get_xwindow");
+ var _libvlc_media_player_set_hwnd = Module["_libvlc_media_player_set_hwnd"] = createExportWrapper("libvlc_media_player_set_hwnd");
+ var _libvlc_media_player_get_hwnd = Module["_libvlc_media_player_get_hwnd"] = createExportWrapper("libvlc_media_player_get_hwnd");
+ var _libvlc_media_player_set_android_context = Module["_libvlc_media_player_set_android_context"] = createExportWrapper("libvlc_media_player_set_android_context");
+ var _libvlc_audio_set_callbacks = Module["_libvlc_audio_set_callbacks"] = createExportWrapper("libvlc_audio_set_callbacks");
+ var _libvlc_audio_set_volume_callback = Module["_libvlc_audio_set_volume_callback"] = createExportWrapper("libvlc_audio_set_volume_callback");
+ var _libvlc_audio_set_format_callbacks = Module["_libvlc_audio_set_format_callbacks"] = createExportWrapper("libvlc_audio_set_format_callbacks");
+ var _libvlc_audio_set_format = Module["_libvlc_audio_set_format"] = createExportWrapper("libvlc_audio_set_format");
+ var _libvlc_media_player_get_full_title_descriptions = Module["_libvlc_media_player_get_full_title_descriptions"] = createExportWrapper("libvlc_media_player_get_full_title_descriptions");
+ var _libvlc_title_descriptions_release = Module["_libvlc_title_descriptions_release"] = createExportWrapper("libvlc_title_descriptions_release");
+ var _libvlc_media_player_get_full_chapter_descriptions = Module["_libvlc_media_player_get_full_chapter_descriptions"] = createExportWrapper("libvlc_media_player_get_full_chapter_descriptions");
+ var _libvlc_chapter_descriptions_release = Module["_libvlc_chapter_descriptions_release"] = createExportWrapper("libvlc_chapter_descriptions_release");
+ var _libvlc_media_player_get_state = Module["_libvlc_media_player_get_state"] = createExportWrapper("libvlc_media_player_get_state");
+ var _libvlc_media_player_navigate = Module["_libvlc_media_player_navigate"] = createExportWrapper("libvlc_media_player_navigate");
+ var _libvlc_track_description_list_release = Module["_libvlc_track_description_list_release"] = createExportWrapper("libvlc_track_description_list_release");
+ var _libvlc_media_player_set_video_title_display = Module["_libvlc_media_player_set_video_title_display"] = createExportWrapper("libvlc_media_player_set_video_title_display");
+ var _libvlc_media_player_get_tracklist = Module["_libvlc_media_player_get_tracklist"] = createExportWrapper("libvlc_media_player_get_tracklist");
+ var _libvlc_media_player_get_track_from_id = Module["_libvlc_media_player_get_track_from_id"] = createExportWrapper("libvlc_media_player_get_track_from_id");
+ var _libvlc_media_player_select_track = Module["_libvlc_media_player_select_track"] = createExportWrapper("libvlc_media_player_select_track");
+ var _libvlc_media_player_unselect_track_type = Module["_libvlc_media_player_unselect_track_type"] = createExportWrapper("libvlc_media_player_unselect_track_type");
+ var _libvlc_media_player_select_tracks = Module["_libvlc_media_player_select_tracks"] = createExportWrapper("libvlc_media_player_select_tracks");
+ var _libvlc_media_player_select_tracks_by_ids = Module["_libvlc_media_player_select_tracks_by_ids"] = createExportWrapper("libvlc_media_player_select_tracks_by_ids");
+ var _libvlc_media_player_add_slave = Module["_libvlc_media_player_add_slave"] = createExportWrapper("libvlc_media_player_add_slave");
+ var _libvlc_media_player_set_equalizer = Module["_libvlc_media_player_set_equalizer"] = createExportWrapper("libvlc_media_player_set_equalizer");
+ var _libvlc_player_program_delete = Module["_libvlc_player_program_delete"] = createExportWrapper("libvlc_player_program_delete");
+ var _libvlc_media_player_select_program_id = Module["_libvlc_media_player_select_program_id"] = createExportWrapper("libvlc_media_player_select_program_id");
+ var _libvlc_media_player_get_selected_program = Module["_libvlc_media_player_get_selected_program"] = createExportWrapper("libvlc_media_player_get_selected_program");
+ var _libvlc_media_player_get_program_from_id = Module["_libvlc_media_player_get_program_from_id"] = createExportWrapper("libvlc_media_player_get_program_from_id");
+ var _libvlc_player_programlist_count = Module["_libvlc_player_programlist_count"] = createExportWrapper("libvlc_player_programlist_count");
+ var _libvlc_player_programlist_at = Module["_libvlc_player_programlist_at"] = createExportWrapper("libvlc_player_programlist_at");
+ var _libvlc_player_programlist_delete = Module["_libvlc_player_programlist_delete"] = createExportWrapper("libvlc_player_programlist_delete");
+ var _libvlc_media_player_get_programlist = Module["_libvlc_media_player_get_programlist"] = createExportWrapper("libvlc_media_player_get_programlist");
+ var _libvlc_media_list_set_media = Module["_libvlc_media_list_set_media"] = createExportWrapper("libvlc_media_list_set_media");
+ var _libvlc_media_list_media = Module["_libvlc_media_list_media"] = createExportWrapper("libvlc_media_list_media");
+ var _libvlc_media_list_count = Module["_libvlc_media_list_count"] = createExportWrapper("libvlc_media_list_count");
+ var _libvlc_media_list_add_media = Module["_libvlc_media_list_add_media"] = createExportWrapper("libvlc_media_list_add_media");
+ var _libvlc_media_list_insert_media = Module["_libvlc_media_list_insert_media"] = createExportWrapper("libvlc_media_list_insert_media");
+ var _libvlc_media_list_remove_index = Module["_libvlc_media_list_remove_index"] = createExportWrapper("libvlc_media_list_remove_index");
+ var _libvlc_media_list_item_at_index = Module["_libvlc_media_list_item_at_index"] = createExportWrapper("libvlc_media_list_item_at_index");
+ var _libvlc_media_list_index_of_item = Module["_libvlc_media_list_index_of_item"] = createExportWrapper("libvlc_media_list_index_of_item");
+ var _libvlc_media_list_is_readonly = Module["_libvlc_media_list_is_readonly"] = createExportWrapper("libvlc_media_list_is_readonly");
+ var _libvlc_media_list_event_manager = Module["_libvlc_media_list_event_manager"] = createExportWrapper("libvlc_media_list_event_manager");
+ var _libvlc_media_list_player_release = Module["_libvlc_media_list_player_release"] = createExportWrapper("libvlc_media_list_player_release");
+ var _libvlc_media_list_player_retain = Module["_libvlc_media_list_player_retain"] = createExportWrapper("libvlc_media_list_player_retain");
+ var _libvlc_media_list_player_event_manager = Module["_libvlc_media_list_player_event_manager"] = createExportWrapper("libvlc_media_list_player_event_manager");
+ var _libvlc_media_list_player_set_media_player = Module["_libvlc_media_list_player_set_media_player"] = createExportWrapper("libvlc_media_list_player_set_media_player");
+ var _libvlc_media_list_player_get_media_player = Module["_libvlc_media_list_player_get_media_player"] = createExportWrapper("libvlc_media_list_player_get_media_player");
+ var _libvlc_media_list_player_set_media_list = Module["_libvlc_media_list_player_set_media_list"] = createExportWrapper("libvlc_media_list_player_set_media_list");
+ var _libvlc_media_list_player_play = Module["_libvlc_media_list_player_play"] = createExportWrapper("libvlc_media_list_player_play");
+ var _libvlc_media_list_player_pause = Module["_libvlc_media_list_player_pause"] = createExportWrapper("libvlc_media_list_player_pause");
+ var _libvlc_media_list_player_set_pause = Module["_libvlc_media_list_player_set_pause"] = createExportWrapper("libvlc_media_list_player_set_pause");
+ var _libvlc_media_list_player_is_playing = Module["_libvlc_media_list_player_is_playing"] = createExportWrapper("libvlc_media_list_player_is_playing");
+ var _libvlc_media_list_player_get_state = Module["_libvlc_media_list_player_get_state"] = createExportWrapper("libvlc_media_list_player_get_state");
+ var _libvlc_media_list_player_play_item_at_index = Module["_libvlc_media_list_player_play_item_at_index"] = createExportWrapper("libvlc_media_list_player_play_item_at_index");
+ var _libvlc_media_list_player_play_item = Module["_libvlc_media_list_player_play_item"] = createExportWrapper("libvlc_media_list_player_play_item");
+ var _libvlc_media_list_player_stop_async = Module["_libvlc_media_list_player_stop_async"] = createExportWrapper("libvlc_media_list_player_stop_async");
+ var _libvlc_media_list_player_next = Module["_libvlc_media_list_player_next"] = createExportWrapper("libvlc_media_list_player_next");
+ var _libvlc_media_list_player_previous = Module["_libvlc_media_list_player_previous"] = createExportWrapper("libvlc_media_list_player_previous");
+ var _libvlc_media_list_player_set_playback_mode = Module["_libvlc_media_list_player_set_playback_mode"] = createExportWrapper("libvlc_media_list_player_set_playback_mode");
+ var _libvlc_media_discoverer_new = Module["_libvlc_media_discoverer_new"] = createExportWrapper("libvlc_media_discoverer_new");
+ var _libvlc_media_discoverer_start = Module["_libvlc_media_discoverer_start"] = createExportWrapper("libvlc_media_discoverer_start");
+ var _libvlc_media_discoverer_stop = Module["_libvlc_media_discoverer_stop"] = createExportWrapper("libvlc_media_discoverer_stop");
+ var _libvlc_media_discoverer_release = Module["_libvlc_media_discoverer_release"] = createExportWrapper("libvlc_media_discoverer_release");
+ var _libvlc_media_discoverer_media_list = Module["_libvlc_media_discoverer_media_list"] = createExportWrapper("libvlc_media_discoverer_media_list");
+ var _libvlc_media_discoverer_is_running = Module["_libvlc_media_discoverer_is_running"] = createExportWrapper("libvlc_media_discoverer_is_running");
+ var _libvlc_media_discoverer_list_release = Module["_libvlc_media_discoverer_list_release"] = createExportWrapper("libvlc_media_discoverer_list_release");
+ var _libvlc_media_discoverer_list_get = Module["_libvlc_media_discoverer_list_get"] = createExportWrapper("libvlc_media_discoverer_list_get");
+ var _libvlc_picture_retain = Module["_libvlc_picture_retain"] = createExportWrapper("libvlc_picture_retain");
+ var _libvlc_picture_save = Module["_libvlc_picture_save"] = createExportWrapper("libvlc_picture_save");
+ var _libvlc_picture_get_buffer = Module["_libvlc_picture_get_buffer"] = createExportWrapper("libvlc_picture_get_buffer");
+ var _libvlc_picture_type = Module["_libvlc_picture_type"] = createExportWrapper("libvlc_picture_type");
+ var _libvlc_picture_get_stride = Module["_libvlc_picture_get_stride"] = createExportWrapper("libvlc_picture_get_stride");
+ var _libvlc_picture_get_width = Module["_libvlc_picture_get_width"] = createExportWrapper("libvlc_picture_get_width");
+ var _libvlc_picture_get_height = Module["_libvlc_picture_get_height"] = createExportWrapper("libvlc_picture_get_height");
+ var _libvlc_picture_get_time = Module["_libvlc_picture_get_time"] = createExportWrapper("libvlc_picture_get_time");
+ var _libvlc_picture_list_at = Module["_libvlc_picture_list_at"] = createExportWrapper("libvlc_picture_list_at");
+ var _fflush = createExportWrapper("fflush");
+ var _htons = createExportWrapper("htons");
+ var _htonl = createExportWrapper("htonl");
+ var _pthread_self = Module["_pthread_self"] = () => (_pthread_self = Module["_pthread_self"] = wasmExports["pthread_self"])();
+ var _emscripten_main_runtime_thread_id = createExportWrapper("emscripten_main_runtime_thread_id");
+ var setTempRet0 = createExportWrapper("setTempRet0");
+ var _flushMainThread = Module["_flushMainThread"] = createExportWrapper("flushMainThread");
+ var _waitPictureFromPool = Module["_waitPictureFromPool"] = createExportWrapper("waitPictureFromPool");
+ var _getPictureFromPool = Module["_getPictureFromPool"] = createExportWrapper("getPictureFromPool");
+ var _updateVideoOutput = Module["_updateVideoOutput"] = createExportWrapper("updateVideoOutput");
+ var _queuePicture = Module["_queuePicture"] = createExportWrapper("queuePicture");
+ var _getPictureIdx = Module["_getPictureIdx"] = createExportWrapper("getPictureIdx");
+ var _getVlcDecoderWorkerThread = Module["_getVlcDecoderWorkerThread"] = createExportWrapper("getVlcDecoderWorkerThread");
+ var _releaseBlock = Module["_releaseBlock"] = createExportWrapper("releaseBlock");
+ var _decodeBlock = Module["_decodeBlock"] = createExportWrapper("decodeBlock");
+ var __emscripten_tls_init = Module["__emscripten_tls_init"] = createExportWrapper("_emscripten_tls_init");
+ var _emscripten_builtin_memalign = createExportWrapper("emscripten_builtin_memalign");
+ var ___getTypeName = createExportWrapper("__getTypeName");
+ var __embind_initialize_bindings = Module["__embind_initialize_bindings"] = createExportWrapper("_embind_initialize_bindings");
+ var _emscripten_webgl_commit_frame = createExportWrapper("emscripten_webgl_commit_frame");
+ var __emscripten_run_callback_on_thread = createExportWrapper("_emscripten_run_callback_on_thread");
+ var ___funcs_on_exit = createExportWrapper("__funcs_on_exit");
+ var __emscripten_thread_init = Module["__emscripten_thread_init"] = createExportWrapper("_emscripten_thread_init");
+ var __emscripten_thread_crashed = Module["__emscripten_thread_crashed"] = createExportWrapper("_emscripten_thread_crashed");
+ var _emscripten_main_thread_process_queued_calls = createExportWrapper("emscripten_main_thread_process_queued_calls");
+ var _ntohs = createExportWrapper("ntohs");
+ var _emscripten_stack_get_base = () => (_emscripten_stack_get_base = wasmExports["emscripten_stack_get_base"])();
+ var _emscripten_stack_get_end = () => (_emscripten_stack_get_end = wasmExports["emscripten_stack_get_end"])();
+ var __emscripten_run_on_main_thread_js = createExportWrapper("_emscripten_run_on_main_thread_js");
+ var __emscripten_thread_free_data = createExportWrapper("_emscripten_thread_free_data");
+ var __emscripten_thread_exit = Module["__emscripten_thread_exit"] = createExportWrapper("_emscripten_thread_exit");
+ var __emscripten_check_mailbox = createExportWrapper("_emscripten_check_mailbox");
+ var _setThrew = createExportWrapper("setThrew");
+ var _emscripten_stack_init = () => (_emscripten_stack_init = wasmExports["emscripten_stack_init"])();
+ var _emscripten_stack_set_limits = (a0, a1) => (_emscripten_stack_set_limits = wasmExports["emscripten_stack_set_limits"])(a0, a1);
+ var _emscripten_stack_get_free = () => (_emscripten_stack_get_free = wasmExports["emscripten_stack_get_free"])();
+ var stackSave = createExportWrapper("stackSave");
+ var stackRestore = createExportWrapper("stackRestore");
+ var stackAlloc = createExportWrapper("stackAlloc");
+ var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports["emscripten_stack_get_current"])();
+ var ___cxa_is_pointer_type = createExportWrapper("__cxa_is_pointer_type");
+ var dynCall_v = Module["dynCall_v"] = createExportWrapper("dynCall_v");
+ var dynCall_vii = Module["dynCall_vii"] = createExportWrapper("dynCall_vii");
+ var dynCall_vi = Module["dynCall_vi"] = createExportWrapper("dynCall_vi");
+ var dynCall_viii = Module["dynCall_viii"] = createExportWrapper("dynCall_viii");
+ var dynCall_iiiiii = Module["dynCall_iiiiii"] = createExportWrapper("dynCall_iiiiii");
+ var dynCall_vifi = Module["dynCall_vifi"] = createExportWrapper("dynCall_vifi");
+ var dynCall_viiii = Module["dynCall_viiii"] = createExportWrapper("dynCall_viiii");
+ var dynCall_vijfi = Module["dynCall_vijfi"] = createExportWrapper("dynCall_vijfi");
+ var dynCall_viji = Module["dynCall_viji"] = createExportWrapper("dynCall_viji");
+ var dynCall_viiiiii = Module["dynCall_viiiiii"] = createExportWrapper("dynCall_viiiiii");
+ var dynCall_ii = Module["dynCall_ii"] = createExportWrapper("dynCall_ii");
+ var dynCall_iii = Module["dynCall_iii"] = createExportWrapper("dynCall_iii");
+ var dynCall_iiii = Module["dynCall_iiii"] = createExportWrapper("dynCall_iiii");
+ var dynCall_iij = Module["dynCall_iij"] = createExportWrapper("dynCall_iij");
+ var dynCall_vij = Module["dynCall_vij"] = createExportWrapper("dynCall_vij");
+ var dynCall_jij = Module["dynCall_jij"] = createExportWrapper("dynCall_jij");
+ var dynCall_viiiii = Module["dynCall_viiiii"] = createExportWrapper("dynCall_viiiii");
+ var dynCall_jiji = Module["dynCall_jiji"] = createExportWrapper("dynCall_jiji");
+ var dynCall_ji = Module["dynCall_ji"] = createExportWrapper("dynCall_ji");
+ var dynCall_iijii = Module["dynCall_iijii"] = createExportWrapper("dynCall_iijii");
+ var dynCall_jii = Module["dynCall_jii"] = createExportWrapper("dynCall_jii");
+ var dynCall_iijdi = Module["dynCall_iijdi"] = createExportWrapper("dynCall_iijdi");
+ var dynCall_iiiii = Module["dynCall_iiiii"] = createExportWrapper("dynCall_iiiii");
+ var dynCall_viiijj = Module["dynCall_viiijj"] = createExportWrapper("dynCall_viiijj");
+ var dynCall_iiji = Module["dynCall_iiji"] = createExportWrapper("dynCall_iiji");
+ var dynCall_iiiij = Module["dynCall_iiiij"] = createExportWrapper("dynCall_iiiij");
+ var dynCall_iiiiiii = Module["dynCall_iiiiiii"] = createExportWrapper("dynCall_iiiiiii");
+ var dynCall_iiiiiiii = Module["dynCall_iiiiiiii"] = createExportWrapper("dynCall_iiiiiiii");
+ var dynCall_viij = Module["dynCall_viij"] = createExportWrapper("dynCall_viij");
+ var dynCall_iif = Module["dynCall_iif"] = createExportWrapper("dynCall_iif");
+ var dynCall_jiiji = Module["dynCall_jiiji"] = createExportWrapper("dynCall_jiiji");
+ var dynCall_jiij = Module["dynCall_jiij"] = createExportWrapper("dynCall_jiij");
+ var dynCall_viiij = Module["dynCall_viiij"] = createExportWrapper("dynCall_viiij");
+ var dynCall_iiiiiij = Module["dynCall_iiiiiij"] = createExportWrapper("dynCall_iiiiiij");
+ var dynCall_viiiiiiii = Module["dynCall_viiiiiiii"] = createExportWrapper("dynCall_viiiiiiii");
+ var dynCall_viijii = Module["dynCall_viijii"] = createExportWrapper("dynCall_viijii");
+ var dynCall_viiiiiiiii = Module["dynCall_viiiiiiiii"] = createExportWrapper("dynCall_viiiiiiiii");
+ var dynCall_viif = Module["dynCall_viif"] = createExportWrapper("dynCall_viif");
+ var dynCall_i = Module["dynCall_i"] = createExportWrapper("dynCall_i");
+ var dynCall_jiii = Module["dynCall_jiii"] = createExportWrapper("dynCall_jiii");
+ var dynCall_viiiiiii = Module["dynCall_viiiiiii"] = createExportWrapper("dynCall_viiiiiii");
+ var dynCall_jiiii = Module["dynCall_jiiii"] = createExportWrapper("dynCall_jiiii");
+ var dynCall_iiiiiiiiii = Module["dynCall_iiiiiiiiii"] = createExportWrapper("dynCall_iiiiiiiiii");
+ var dynCall_viid = Module["dynCall_viid"] = createExportWrapper("dynCall_viid");
+ var dynCall_viiiiiifi = Module["dynCall_viiiiiifi"] = createExportWrapper("dynCall_viiiiiifi");
+ var dynCall_ijiii = Module["dynCall_ijiii"] = createExportWrapper("dynCall_ijiii");
+ var dynCall_viiiifii = Module["dynCall_viiiifii"] = createExportWrapper("dynCall_viiiifii");
+ var dynCall_viiiffi = Module["dynCall_viiiffi"] = createExportWrapper("dynCall_viiiffi");
+ var dynCall_fiii = Module["dynCall_fiii"] = createExportWrapper("dynCall_fiii");
+ var dynCall_viiiff = Module["dynCall_viiiff"] = createExportWrapper("dynCall_viiiff");
+ var dynCall_viiiffiii = Module["dynCall_viiiffiii"] = createExportWrapper("dynCall_viiiffiii");
+ var dynCall_viiiiiiiiii = Module["dynCall_viiiiiiiiii"] = createExportWrapper("dynCall_viiiiiiiiii");
+ var dynCall_viiiiiiiiiif = Module["dynCall_viiiiiiiiiif"] = createExportWrapper("dynCall_viiiiiiiiiif");
+ var dynCall_viifi = Module["dynCall_viifi"] = createExportWrapper("dynCall_viifi");
+ var dynCall_viiiiiiiiiiiiii = Module["dynCall_viiiiiiiiiiiiii"] = createExportWrapper("dynCall_viiiiiiiiiiiiii");
+ var dynCall_viiiiiiiiiii = Module["dynCall_viiiiiiiiiii"] = createExportWrapper("dynCall_viiiiiiiiiii");
+ var dynCall_viiiiiiiiiiii = Module["dynCall_viiiiiiiiiiii"] = createExportWrapper("dynCall_viiiiiiiiiiii");
+ var dynCall_jji = Module["dynCall_jji"] = createExportWrapper("dynCall_jji");
+ var dynCall_iji = Module["dynCall_iji"] = createExportWrapper("dynCall_iji");
+ var dynCall_viiiiifi = Module["dynCall_viiiiifi"] = createExportWrapper("dynCall_viiiiifi");
+ var dynCall_iiiiiiiii = Module["dynCall_iiiiiiiii"] = createExportWrapper("dynCall_iiiiiiiii");
+ var dynCall_fii = Module["dynCall_fii"] = createExportWrapper("dynCall_fii");
+ var dynCall_viiiiiiif = Module["dynCall_viiiiiiif"] = createExportWrapper("dynCall_viiiiiiif");
+ var dynCall_iiiji = Module["dynCall_iiiji"] = createExportWrapper("dynCall_iiiji");
+ var dynCall_iiijjji = Module["dynCall_iiijjji"] = createExportWrapper("dynCall_iiijjji");
+ var dynCall_jiiij = Module["dynCall_jiiij"] = createExportWrapper("dynCall_jiiij");
+ var dynCall_iiiiij = Module["dynCall_iiiiij"] = createExportWrapper("dynCall_iiiiij");
+ var dynCall_dd = Module["dynCall_dd"] = createExportWrapper("dynCall_dd");
+ var dynCall_viidi = Module["dynCall_viidi"] = createExportWrapper("dynCall_viidi");
+ var dynCall_viiiiiiiiiiiii = Module["dynCall_viiiiiiiiiiiii"] = createExportWrapper("dynCall_viiiiiiiiiiiii");
+ var dynCall_vid = Module["dynCall_vid"] = createExportWrapper("dynCall_vid");
+ var dynCall_fi = Module["dynCall_fi"] = createExportWrapper("dynCall_fi");
+ var dynCall_iiiiiiiiiiii = Module["dynCall_iiiiiiiiiiii"] = createExportWrapper("dynCall_iiiiiiiiiiii");
+ var dynCall_jijjd = Module["dynCall_jijjd"] = createExportWrapper("dynCall_jijjd");
+ var dynCall_jijjdii = Module["dynCall_jijjdii"] = createExportWrapper("dynCall_jijjdii");
+ var dynCall_jijj = Module["dynCall_jijj"] = createExportWrapper("dynCall_jijj");
+ var dynCall_vjjdiii = Module["dynCall_vjjdiii"] = createExportWrapper("dynCall_vjjdiii");
+ var dynCall_vif = Module["dynCall_vif"] = createExportWrapper("dynCall_vif");
+ var dynCall_vffff = Module["dynCall_vffff"] = createExportWrapper("dynCall_vffff");
+ var dynCall_vf = Module["dynCall_vf"] = createExportWrapper("dynCall_vf");
+ var dynCall_vff = Module["dynCall_vff"] = createExportWrapper("dynCall_vff");
+ var dynCall_vfi = Module["dynCall_vfi"] = createExportWrapper("dynCall_vfi");
+ var dynCall_viff = Module["dynCall_viff"] = createExportWrapper("dynCall_viff");
+ var dynCall_vifff = Module["dynCall_vifff"] = createExportWrapper("dynCall_vifff");
+ var dynCall_viffff = Module["dynCall_viffff"] = createExportWrapper("dynCall_viffff");
+ var dynCall_iiij = Module["dynCall_iiij"] = createExportWrapper("dynCall_iiij");
+ var dynCall_iidiiii = Module["dynCall_iidiiii"] = createExportWrapper("dynCall_iidiiii");
+ var dynCall_iiiiid = Module["dynCall_iiiiid"] = createExportWrapper("dynCall_iiiiid");
+ var dynCall_iiiiijj = Module["dynCall_iiiiijj"] = createExportWrapper("dynCall_iiiiijj");
+ var dynCall_iiiiiijj = Module["dynCall_iiiiiijj"] = createExportWrapper("dynCall_iiiiiijj");
+ var _asyncify_start_unwind = createExportWrapper("asyncify_start_unwind");
+ var _asyncify_stop_unwind = createExportWrapper("asyncify_stop_unwind");
+ var _asyncify_start_rewind = createExportWrapper("asyncify_start_rewind");
+ var _asyncify_stop_rewind = createExportWrapper("asyncify_stop_rewind");
+ var _ff_h264_cabac_tables = Module["_ff_h264_cabac_tables"] = 1457676;
+ var ___start_em_js = Module["___start_em_js"] = 5384026;
+ var ___stop_em_js = Module["___stop_em_js"] = 5391317;
+
+ function invoke_vi(index, a1) {
+ var sp = stackSave();
+ try {
+ dynCall_vi(index, a1)
+ } catch (e) {
+ stackRestore(sp);
+ if (e !== e + 0) throw e;
+ _setThrew(1, 0)
+ }
+ }
+
+ function invoke_iiiii(index, a1, a2, a3, a4) {
+ var sp = stackSave();
+ try {
+ return dynCall_iiiii(index, a1, a2, a3, a4)
+ } catch (e) {
+ stackRestore(sp);
+ if (e !== e + 0) throw e;
+ _setThrew(1, 0)
+ }
+ }
+
+ function invoke_ii(index, a1) {
+ var sp = stackSave();
+ try {
+ return dynCall_ii(index, a1)
+ } catch (e) {
+ stackRestore(sp);
+ if (e !== e + 0) throw e;
+ _setThrew(1, 0)
+ }
+ }
+
+ function invoke_viii(index, a1, a2, a3) {
+ var sp = stackSave();
+ try {
+ dynCall_viii(index, a1, a2, a3)
+ } catch (e) {
+ stackRestore(sp);
+ if (e !== e + 0) throw e;
+ _setThrew(1, 0)
+ }
+ }
+
+ function invoke_iiii(index, a1, a2, a3) {
+ var sp = stackSave();
+ try {
+ return dynCall_iiii(index, a1, a2, a3)
+ } catch (e) {
+ stackRestore(sp);
+ if (e !== e + 0) throw e;
+ _setThrew(1, 0)
+ }
+ }
+
+ function invoke_viiii(index, a1, a2, a3, a4) {
+ var sp = stackSave();
+ try {
+ dynCall_viiii(index, a1, a2, a3, a4)
+ } catch (e) {
+ stackRestore(sp);
+ if (e !== e + 0) throw e;
+ _setThrew(1, 0)
+ }
+ }
+
+ function invoke_vii(index, a1, a2) {
+ var sp = stackSave();
+ try {
+ dynCall_vii(index, a1, a2)
+ } catch (e) {
+ stackRestore(sp);
+ if (e !== e + 0) throw e;
+ _setThrew(1, 0)
+ }
+ }
+
+ function invoke_iiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
+ var sp = stackSave();
+ try {
+ return dynCall_iiiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9)
+ } catch (e) {
+ stackRestore(sp);
+ if (e !== e + 0) throw e;
+ _setThrew(1, 0)
+ }
+ }
+
+ function invoke_viid(index, a1, a2, a3) {
+ var sp = stackSave();
+ try {
+ dynCall_viid(index, a1, a2, a3)
+ } catch (e) {
+ stackRestore(sp);
+ if (e !== e + 0) throw e;
+ _setThrew(1, 0)
+ }
+ }
+
+ function invoke_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
+ var sp = stackSave();
+ try {
+ dynCall_viiiiiiiii(index, a1, a2, a3, a4, a5, a6, a7, a8, a9)
+ } catch (e) {
+ stackRestore(sp);
+ if (e !== e + 0) throw e;
+ _setThrew(1, 0)
+ }
+ }
+
+ function invoke_iii(index, a1, a2) {
+ var sp = stackSave();
+ try {
+ return dynCall_iii(index, a1, a2)
+ } catch (e) {
+ stackRestore(sp);
+ if (e !== e + 0) throw e;
+ _setThrew(1, 0)
+ }
+ }
+
+ function invoke_viiiii(index, a1, a2, a3, a4, a5) {
+ var sp = stackSave();
+ try {
+ dynCall_viiiii(index, a1, a2, a3, a4, a5)
+ } catch (e) {
+ stackRestore(sp);
+ if (e !== e + 0) throw e;
+ _setThrew(1, 0)
+ }
+ }
+
+ function invoke_v(index) {
+ var sp = stackSave();
+ try {
+ dynCall_v(index)
+ } catch (e) {
+ stackRestore(sp);
+ if (e !== e + 0) throw e;
+ _setThrew(1, 0)
+ }
+ }
+ Module["wasmMemory"] = wasmMemory;
+ Module["keepRuntimeAlive"] = keepRuntimeAlive;
+ Module["ExitStatus"] = ExitStatus;
+ Module["writeAsciiToMemory"] = writeAsciiToMemory;
+ Module["allocateUTF8"] = allocateUTF8;
+ Module["PThread"] = PThread;
+ var missingLibrarySymbols = ["writeI53ToI64Clamped", "writeI53ToI64Signaling", "writeI53ToU64Clamped", "writeI53ToU64Signaling", "growMemory", "convertPCtoSourceLocation", "listenOnce", "autoResumeAudioContext", "dynCallLegacy", "getDynCaller", "dynCall", "asmjsMangle", "HandleAllocator", "getNativeTypeSize", "STACK_SIZE", "STACK_ALIGN", "POINTER_SIZE", "ASSERTIONS", "getCFunc", "ccall", "cwrap", "uleb128Encode", "generateFuncType", "convertJsFunctionToWasm", "getEmptyTableSlot", "updateTableMap", "getFunctionAddress", "addFunction", "removeFunction", "intArrayToString", "AsciiToString", "stringToUTF8OnStack", "registerKeyEventCallback", "maybeCStringToJsString", "findEventTarget", "findCanvasEventTarget", "getBoundingClientRect", "fillMouseEventData", "registerMouseEventCallback", "registerWheelEventCallback", "registerUiEventCallback", "registerFocusEventCallback", "fillDeviceOrientationEventData", "registerDeviceOrientationEventCallback", "fillDeviceMotionEventData", "registerDeviceMotionEventCallback", "screenOrientation", "fillOrientationChangeEventData", "registerOrientationChangeEventCallback", "fillFullscreenChangeEventData", "registerFullscreenChangeEventCallback", "JSEvents_requestFullscreen", "JSEvents_resizeCanvasForFullscreen", "registerRestoreOldStyle", "hideEverythingExceptGivenElement", "restoreHiddenElements", "setLetterbox", "softFullscreenResizeWebGLRenderTarget", "doRequestFullscreen", "fillPointerlockChangeEventData", "registerPointerlockChangeEventCallback", "registerPointerlockErrorEventCallback", "requestPointerLock", "fillVisibilityChangeEventData", "registerVisibilityChangeEventCallback", "registerTouchEventCallback", "fillGamepadEventData", "registerGamepadEventCallback", "registerBeforeUnloadEventCallback", "fillBatteryEventData", "battery", "registerBatteryEventCallback", "setCanvasElementSizeCallingThread", "setOffscreenCanvasSizeOnTargetThread", "setCanvasElementSizeMainThread", "setCanvasElementSize", "getCanvasSizeCallingThread", "getCanvasSizeMainThread", "getCanvasElementSize", "stackTrace", "checkWasiClock", "wasiRightsToMuslOFlags", "wasiOFlagsToMuslOFlags", "createDyncallWrapper", "setImmediateWrapped", "clearImmediateWrapped", "polyfillSetImmediate", "getPromise", "makePromise", "idsToPromises", "makePromiseCallback", "findMatchingCatch", "Browser_asyncPrepareDataCounter", "FS_unlink", "FS_mkdirTree", "_setNetworkCallback", "writeGLArray", "emscripten_webgl_destroy_context_before_on_calling_thread", "registerWebGlEventCallback", "ALLOC_NORMAL", "ALLOC_STACK", "allocate", "writeStringToMemory", "setErrNo", "demangle", "getFunctionName", "getFunctionArgsName", "heap32VectorToArray", "usesDestructorStack", "createJsInvokerSignature", "createJsInvoker", "init_embind", "throwUnboundTypeError", "ensureOverloadTable", "exposePublicSymbol", "replacePublicSymbol", "extendError", "getBasestPointer", "registerInheritedInstance", "unregisterInheritedInstance", "getInheritedInstance", "getInheritedInstanceCount", "getLiveInheritedInstances", "enumReadValueFromPointer", "craftInvokerFunction", "embind__requireFunction", "genericPointerToWireType", "constNoSmartPtrRawPointerToWireType", "nonConstNoSmartPtrRawPointerToWireType", "init_RegisteredPointer", "RegisteredPointer", "RegisteredPointer_fromWireType", "runDestructor", "releaseClassHandle", "detachFinalizer", "attachFinalizer", "makeClassHandle", "init_ClassHandle", "ClassHandle", "throwInstanceAlreadyDeleted", "flushPendingDeletes", "setDelayFunction", "RegisteredClass", "shallowCopyInternalPointer", "downcastPointer", "upcastPointer", "validateThis", "char_0", "char_9", "makeLegalFunctionName"];
+ missingLibrarySymbols.forEach(missingLibrarySymbol);
+ var unexportedSymbols = ["run", "addOnPreRun", "addOnInit", "addOnPreMain", "addOnExit", "addOnPostRun", "addRunDependency", "removeRunDependency", "FS_createFolder", "FS_createPath", "FS_createLazyFile", "FS_createLink", "FS_createDevice", "FS_readFile", "out", "err", "callMain", "abort", "wasmExports", "stackAlloc", "stackSave", "stackRestore", "getTempRet0", "setTempRet0", "writeStackCookie", "checkStackCookie", "writeI53ToI64", "readI53FromI64", "readI53FromU64", "convertI32PairToI53", "convertI32PairToI53Checked", "convertU32PairToI53", "ptrToString", "zeroMemory", "exitJS", "getHeapMax", "abortOnCannotGrowMemory", "ENV", "MONTH_DAYS_REGULAR", "MONTH_DAYS_LEAP", "MONTH_DAYS_REGULAR_CUMULATIVE", "MONTH_DAYS_LEAP_CUMULATIVE", "isLeapYear", "ydayFromDate", "arraySum", "addDays", "ERRNO_CODES", "ERRNO_MESSAGES", "inetPton4", "inetNtop4", "inetPton6", "inetNtop6", "readSockaddr", "writeSockaddr", "DNS", "Protocols", "Sockets", "initRandomFill", "randomFill", "timers", "warnOnce", "getCallstack", "emscriptenLog", "UNWIND_CACHE", "readEmAsmArgsArray", "readEmAsmArgs", "runEmAsmFunction", "runMainThreadEmAsm", "jstoi_q", "jstoi_s", "getExecutableName", "handleException", "runtimeKeepalivePush", "runtimeKeepalivePop", "callUserCallback", "maybeExit", "asyncLoad", "alignMemory", "mmapAlloc", "wasmTable", "noExitRuntime", "sigToWasmTypes", "freeTableIndexes", "functionsInTableMap", "reallyNegative", "unSign", "strLen", "reSign", "formatString", "setValue", "getValue", "PATH", "PATH_FS", "UTF8Decoder", "UTF8ArrayToString", "UTF8ToString", "stringToUTF8Array", "stringToUTF8", "lengthBytesUTF8", "intArrayFromString", "stringToAscii", "UTF16Decoder", "UTF16ToString", "stringToUTF16", "lengthBytesUTF16", "UTF32ToString", "stringToUTF32", "lengthBytesUTF32", "stringToNewUTF8", "writeArrayToMemory", "JSEvents", "specialHTMLTargets", "currentFullscreenStrategy", "restoreOldWindowedStyle", "jsStackTrace", "getEnvStrings", "doReadv", "doWritev", "safeSetTimeout", "promiseMap", "uncaughtExceptionCount", "exceptionLast", "exceptionCaught", "ExceptionInfo", "Browser", "setMainLoop", "getPreloadedImageData__data", "wget", "SYSCALLS", "getSocketFromFD", "getSocketAddress", "preloadPlugins", "FS_createPreloadedFile", "FS_modeStringToFlags", "FS_getMode", "FS_stdin_getChar_buffer", "FS_stdin_getChar", "FS", "FS_createDataFile", "MEMFS", "TTY", "PIPEFS", "SOCKFS", "tempFixedLengthArray", "miniTempWebGLFloatBuffers", "miniTempWebGLIntBuffers", "heapObjectForWebGLType", "toTypedArrayIndex", "webgl_enable_ANGLE_instanced_arrays", "webgl_enable_OES_vertex_array_object", "webgl_enable_WEBGL_draw_buffers", "webgl_enable_WEBGL_multi_draw", "GL", "emscriptenWebGLGet", "computeUnpackAlignedImageSize", "colorChannelsInGlTextureFormat", "emscriptenWebGLGetTexPixelData", "emscriptenWebGLGetUniform", "webglGetUniformLocation", "webglPrepareUniformLocationsBeforeFirstUse", "webglGetLeftBracePos", "emscriptenWebGLGetVertexAttrib", "__glGetActiveAttribOrUniform", "AL", "GLUT", "EGL", "GLEW", "IDBStore", "runAndAbortIfError", "Asyncify", "Fibers", "SDL", "SDL_gfx", "emscriptenWebGLGetIndexed", "webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance", "webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance", "allocateUTF8OnStack", "terminateWorker", "killThread", "cleanupThread", "registerTLSInit", "cancelThread", "spawnThread", "exitOnMainThread", "proxyToMainThread", "proxiedJSCallArgs", "invokeEntryPoint", "checkMailbox", "InternalError", "BindingError", "throwInternalError", "throwBindingError", "registeredTypes", "awaitingDependencies", "typeDependencies", "tupleRegistrations", "structRegistrations", "sharedRegisterType", "whenDependentTypesAreResolved", "embind_charCodes", "embind_init_charCodes", "readLatin1String", "getTypeName", "requireRegisteredType", "UnboundTypeError", "PureVirtualError", "GenericWireTypeSize", "EmValType", "createNamedFunction", "embindRepr", "registeredInstances", "registeredPointers", "registerType", "integerReadValueFromPointer", "floatReadValueFromPointer", "readPointer", "runDestructors", "newFunc", "finalizationRegistry", "detachFinalizer_deps", "deletionQueue", "delayFunction", "emval_freelist", "emval_handles", "emval_symbols", "init_emval", "count_emval_handles", "getStringOrSymbol", "Emval", "emval_get_global", "emval_returnValue", "emval_lookupTypes", "emval_methodCallers", "emval_addMethodCaller", "reflectConstruct"];
+ unexportedSymbols.forEach(unexportedRuntimeSymbol);
+ var calledRun;
+ dependenciesFulfilled = function runCaller() {
+ if (!calledRun) run();
+ if (!calledRun) dependenciesFulfilled = runCaller
+ };
+
+ function callMain() {
+ assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])');
+ assert(__ATPRERUN__.length == 0, "cannot call main when preRun functions remain to be called");
+ var entryFunction = _main;
+ var argc = 0;
+ var argv = 0;
+ try {
+ var ret = entryFunction(argc, argv);
+ exitJS(ret, true);
+ return ret
+ } catch (e) {
+ return handleException(e)
+ }
+ }
+
+ function stackCheckInit() {
+ assert(!ENVIRONMENT_IS_PTHREAD);
+ _emscripten_stack_init();
+ writeStackCookie()
+ }
+
+ function run() {
+ if (runDependencies > 0) {
+ return
+ }
+ if (!ENVIRONMENT_IS_PTHREAD) stackCheckInit();
+ if (ENVIRONMENT_IS_PTHREAD) {
+ readyPromiseResolve(Module);
+ initRuntime();
+ startWorker(Module);
+ return
+ }
+ preRun();
+ if (runDependencies > 0) {
+ return
+ }
+
+ function doRun() {
+ if (calledRun) return;
+ calledRun = true;
+ Module["calledRun"] = true;
+ if (ABORT) return;
+ initRuntime();
+ preMain();
+ readyPromiseResolve(Module);
+ if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"]();
+ if (shouldRunNow) callMain();
+ postRun()
+ }
+ if (Module["setStatus"]) {
+ Module["setStatus"]("Running...");
+ setTimeout(function() {
+ setTimeout(function() {
+ Module["setStatus"]("")
+ }, 1);
+ doRun()
+ }, 1)
+ } else {
+ doRun()
+ }
+ checkStackCookie()
+ }
+ if (Module["preInit"]) {
+ if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]];
+ while (Module["preInit"].length > 0) {
+ Module["preInit"].pop()()
+ }
+ }
+ var shouldRunNow = true;
+ if (Module["noInitialRun"]) shouldRunNow = false;
+ run();
+
+
+ return moduleArg.ready
+ }
+ );
+})();
+
+// export default initModule;
+
+if (typeof exports === 'object' && typeof module === 'object')
+ module.exports = initModule;
+else if (typeof define === 'function' && define['amd'])
+ define([], () => initModule);
diff --git a/src/renderer/src/components/player/src/core/vlc/experimental.wasm b/src/renderer/src/components/player/src/core/vlc/experimental.wasm
new file mode 100644
index 0000000000000000000000000000000000000000..6607f77aefdff3f10c85bfaa316fa8cec0b43cb1
GIT binary patch
literal 27051777
zcmeFa2bdgHmL?jJ;WE-kdYJ;*hNfw@0X2{Ao}PY~rk9!SX%^bd?#@h6s>+g5R8`hg
zR!L|UXyJqxk^l*W93bJXa6$+xgzy3ZLU=2X0fhJF{r|lYnGso8f}Ne&x8HjcSrr*^
z@44rmbMCq4oNFROX{&atilV5uBwtmJ)c=A*{mYRmPa*eGIZ{Ka!h1zR$P|EBgvX&A
zX}I4J@$KH2^2W`c#928q;X@!WqVTbjQvj;RsK=11W6A$u}C^b3hX#R*KtCgQpCp{84uJ=xZ{pH25=}V5DA8bREb@3bzFdDSt-t%
zAey8cOX_`1AV5fpdMr+WIPN%CILD$A!2>{8%W+`FV76ciqzG9B1TG+t#o@IKD??fE
zC2$>wFQE{}G9e@?G6g2)%YrHjhh*IX5lIJLFn^4zcgNJ)44|2SkmL;z9K)8Oz<`)-
zBg96^St(WEIFbg1V2-O|OwmCqtMMrgDiQ26Spjsip+->wno+dGUr=p`h!k8%&IR#8
zdcg)oI*X815`c!GP*kZY!~@|UgA@~I94`1@j=_b{DUj}UFLBAX0vSTHMBNa3P5s;p
zQsxj_;9w!vgrdYQ5aBx&0K!eJW?qqIh*zX)R9yBLN}XqrNOq749Y^~?y_l$?0kmV#
zj_5VVFiTvrJ|;oAcp=)_>!8QtR!E=B3JD7>M9pkCs-vjcViCxA}VieUexQFB-Z(tMvH(Hw>P=Oi#s70S4vD5m}{1eXe5~E8n|;C
zl&$2+6dK6BCU2$L!!=;R87{mYCX7HxP=-bn@)x4fS(2O!vc$J2&6xbdX)T1MLU(mJ
z6{##IIIc54^*g0;~|=xa3BFykzGxGQD#t9oQ3sfNh%_Gqt{NX
zNSX$LMH((9N`)2HQubd_!tKC*gXo$Lmhq6X0_rCF8}P9A<5mz$9TXR+$?Nh$F+_*5
zp{Vizr6O5y@A_BvF1HFPMtMUtO6a+Xvox*LGqqUiuD17;d;3d0t#InC?UkNte`~p?
zU$GjqtEK+d?zVDIYgeVxtLV%g?JHe6y4>G7t=vDkwW~a})Y>=D(_ii`DQUvRTYg#XqY%6yuCewcCD_gI*tvbD@y|vOKYwDleS8D5!b&c@Bx3~4Qm%4n^h+2%ciIu*7
zS!1-dwf*R}Rv@TMljY;3NnO7w^&ecW_I9;RS5(rlrw?bH25{fnj0_=>0$Bl#Q>v{H
z6IjMYXSu7SgorTVL)cZBBx`Q*6`54(|5Ih4|97QowQW-Auo}I|c5vEX`c2nCm7f06
z(ftx#(pU0`X>GlVXtVgV(!{obj&em1Af=hFrJ;r++PZtYN{0iVk|0%Cf964x+j@FR
zT~(Row3fQ3wsp0lRO_U!%EY!VDVeyN-cbT!owDAPo7PjB*4ozB2O$dV9ttK`CQd1}
z_sjI64|R8`e{!XxwY{yYtJEh|E9z!5O*vUKN8U|>?zDE4s{MTf?fsR$s;oWjtGyk0
z<(^5BRImR2wxdd|;AOyVi;P=4o}Dmkr{fV%4pZG&ms$%Hz7+p6rXD2EYCBxvkQ*uUWzCq
z(0XX5iX@w8BK2ZYe2%{=!j+Z%3Fu)%*$$<`6c18hlaLWXncFmNRi&5rc^~^|s);4^
zg3hwrzHv6d!KL;}N2%{`j*zVE<}2XKmJQ^Wu4t5;54y8!pgQ>g_F!o!JS|}dsA-81
zmrjc&8`~2BSrt|QG`Z3j>_^E2j2ul)A5@)2N3?6$gOhlosHF$GQ10ohC>a)FN?S(<
zv>7R)1xETzNWkQx&rOoemV@}HT&QbOx!PaqYn@tw$c35=&YM`NxF(l9GFT3#t~3c6
zCK{UEFPPogRcY&&jXq*fX0^Yg)$NC(=8;Vyrnw-(Ukt86SRW~z!R5P4-Ic!SQ1Oy$
z!~N#9)aUlZ2|j_r&`qLWK*xY5qakf=AL#2V!J@OX!)DMW(5DE4a{x%Lxj(f2(dAMH
z%wVl-TYG9A4@H5q=nd;2_a>oCsxTprH%p52|!k`jkVd^+7=#$lPE5
z^MGVQ2y{%40zbeJrQWtax;9ZyelXx61L)f#bC>3sH4MTAHc%?WaBy3Ho9t>0l#1LV
z1}4@4#s=y*XmY9jD4#r!=x^&Es7hr^2O+ykZLR_bDL9B3K3N3?EpiVo_4ZHhRQ`sd
z462OCJ_5m9JHjj>$)JD)-ru!Vk7~xp!Ns@|jLEijukd_A;C#XM;Bg)?CjmUz{=0f<;h#G?pbC8Ih4(qE-LT{7dM}uGl
zfXkZb`?(;=16^H*w6(kaFo^u%QdgPacSx1xrzGio!nxXM%6yo*UjY(Y+jlZk8
zc!I1*Fn=orMJn^%-soZoYJt!n(M_7Dh{zNwA~J*OCo&Ij>zRa@@NWmJ-@$NZL5r0Q
zNEyL*+eF050`vH0S${&5RytZ*wF5+qDPV(LK4PJwMko)VdQa6l#RjPR=
zP}8q_>NEuPR^|*rLJ-Lzh&rm1rIQbK>_Zq}$c!L%pMLn;Sdtj*Xg*N49nsOGj}EYM
zNFSVBU2TI>`c0`PptC_OL2ij=^mpanZf{@_bPa&;(cvmm&@}+W&x#8ZR2jeob+NIQ
ze(4Bhn=4^zRbwqK$RB&kot3_B2@~{%zbW+t0hF)QA$x|~^g&x9q5KY0M0$+`_aBIm
zsnpgpRd)7Z+W?0Y>tS$17(A5v%2TBp1}zHUe%;pxk0)Gzumd9R5QbK61wRQiDl>^$
zdRxgAmDyjP@LYq)K2%0?F4kbL09M!Zc;pTejhlZcLebx1>?-Qmt&uc;d;2L8@!cSb
zWLtPO4r*4J9jGv96+pFwIjpbLUalg5|vHsH^tPi+W@=ExJ#q
z@>fIFx{qh%niq8i(zMonc3SJcoyu>Ataaa=*1E4dm)5k_eRo>xgihtaA#0tm(^@B#
zWoK(z>jbaXpu=^W?ssi)fk#u6LVX?0s1O}`Xe6Fu4UL2%`3@wWo(zqIGW!lBUb7F4ghCZaf@aJw6W2*A
zV(KyI^8SSRvR-sru``|AVX}r~q>G*a#C;vqP)QpH2+ICkLxI
z5R;Ok5&xY^#;kVtDw}sAlU)^lK{b3
z#8p12c|pu|&65R#-NI8lIr|VS>9w0@ID?Y%a%*ZLRW7L2Y%}!8?JP@V#*D`#o{hs1Nqs1G~!pp{vx&9|gjbCL!tX2DC=Lm98xNEOl)gEN@{1Y6GC$b!^w5SfN(jPFI7<34k^u`
zN34S!h#`d3;~xZ&465l*i0rX&;!ddS9smZDL&3|DOOO#)WMa+YP|t&jd97e80c`-(
z>y|-x*a!vtEg1?nW&o2HHwB$u5M;oOt#$^3s)T0?8j40dE>KW&K(=cPY6K7B3ratU
zYYf5hf6!)mkvPZ|q%_Ul2f4yOHqG4^xy^z%InOr16GYI^)$4V|-835&?<^ZN?<^Zt
zyV*h6iS-Ss;vPUyzkLATjRH}Ykj;>Fbe5G}2M6eAKsk%#uB!)ifNoV%2sbF!iG+d&
zf$BPNXirDEz2tVTL3$vkMqP{NAJ2XoE44Foeqhh*YiGEF~jMDeYh{ga?z;I@mrVtV57bR|>-EdJsWU
zAwiideOnMao7u~5Vg}u;I+2pXpp72{Xd!5~sJ@KAt3A`h(&f|E@ej7AP?
z8>p5BLy9OPXh#k&RR_9<0uB01h}<3GLk6`8!l1bg0*GD}Q~?*D-e^*rg5o%|2RpyS
zoPsZ2lz>4Q*8yRk{jg%;DL8k@A(Wgp^_Jg;%EzEc4A6q2cYAbSPg@s5JnV094Y<>a
z4Te>*{j9USr@w2z336Kz_WOD1hmty6owN=Zl)tf{P{D3!PyX76w(Hq&t@
znW7E>VF3bb-W`fE1OQP?>nmd;#ZVA-Z(pUowZ01~Q>U)8tsPFQiiH?qBC++!qq}3E
zSE^SckhZU6FtAjL9alZrC^eBD)^EN!GgQwR)#{HpWtrA;wY9s_Q|Yhtl-rvuu(?p!
zt01ulaL5fnt=wCMy-AgxNn(TJ5K?kLTNyyD)$+fTs@x{2goXf(dY}SGFjW^pCzulZ
zMx}64^&D(W?D6F2*9-W_e&~g8Za#2-a<+~In=d<=)dW+QS7ZpfsVPu!LCR*5u&sViI*E5%{AjtRuG{)jE;!6!(l_
z>sVzP;uT>H(G9TuhJCA5ZrUXV(G5lfxc6YVl8jCvq7A>%8t9n@$I#ke;TGc3RPIp|
zJF7({VBM?as4{k`q6(o2V*?DyJ=U#9m9QsD?7D8}<{?QYFbD%vElC_{kAH9`of4AH|E$zGA+W#-?%n*_A9{xB6
z^`YMi?2_hTe#~g0$}~{dGige9uasH@CPD17ZS9hqXni_Jo7dYvL2(+?Z6cacCi;M}
z{ji5yp#?BDpnCQZGVd*w;1Uo_H_59)tC_th8g2
z#S(RHX9lTMI!ZP`q?MbVCv~%ZMMsacb|1y0T0$I62=(&P#MmR!I;p!Mp?jbQJ6%{R
z!v+kucDuL3c^hzU9f;*fp)&-9^qp|U@UDV;Q*KlZX)|Vo@TYCRSUvS(HJ#Sdnh{DQ
zR82EfRW&qi%T9~l2k2(LsJbkBtIb}X(3J1bu*DjXc|G%iL_y;nqkC3
zc;a%*ZmN;6kRBSdn{L=P%HmoNS$b60bzJ=9XTU1{1X^UOp;R`ZCdMSxpN{$6&oo0Z
zjS$cosM-k`Iw}e21hX_nvv3D$kVkqI4f(pEfhYo~q(=pLDod*|f=JGgYU}m^2Fl_S
zHgq$U+WmK9kQoyH79f8*2B^WTs_CfNFiagL4Rs+Yq=NSS%s&q^ap-2$jOzR8x&{Hr
z(v%Wu05p=2Xh3je0{BCMWJnG43F-i8S=o?!(}M?!lJ$uX^4TP~1vwTe3@ITU
zL{OsgPXY?|*(^|V)a=U4(1&G1YQa=Bh1EdlXnm-`Ut5}mTNL`4_16RkvcJY%Cp=RCPO}#`9r8tWHguC3jCMjVlL`sK
zV^$1eLwg%XSSmWO6fH_CLgtVg+BFN7!Ml}}XDBlOaPXvrLcfF-Q}fZM6m(S3g8mAb
z3rVL$D?*CUlNh9IrG8JsNH9Pg7!4b}P^a{K_^;O)xjH8GX}%9PfLOw5K4)*0yH}|4*89I?=q0u
zkSy{<5f+n0f(2_>2*AVpu47_d=yPlZTxG;T!3wI!jzt+ZWC-mANZi7b-~|h~Gutw{qh0p?`MQAGo9=Da*SfZJ5mIvq#*)aNKUdU6b1UjwgA)@)2
zE_*im1+UPKrircz8x^%;@pv>8Lx+)V0->TW07|F}&k#NI2F3w(;|f`jr4iM17)6*h
zAmM?|;QPolc_s&FOF<&PSQGI>l|rE0g6|@ILMKB%MJ738d$_tv@x*(j|`F^8;}N!JI8ZH@L7%%UFX4H7{tP87bPz%{c@@RZ8Nv>aV9&C*YP!m>mN
zDy^7~L@6>QmW-RpI8NiDLf0^?C7U=gvPFj_X`#1Jr|aWuurIA8?+k{FtD()^oagL+!EIwdDa5asfwkfSdDBhep5hT0D15j
zrYX>(MjTCkr`@F?NR3^HKf(5W`aWe&2bl|qq_2&*Pp
zr7aFw!%}Eebe@FT0-k<7*04@zO_~W84p3SX6(-$KV(nQQj2SVQ2X${f22&yc)YB@amO-|R3Eyn@ISoJs>uks*n5&j8?+AI=BV637G14aeY=
z27p1g@ShCaC;%!X4sEPSIb{5jFd>`f2bvhI4{84$8=L)>&8X8L$QG3ShB~6F!*(C_
z&-#c^YHvjwYdO?eD35}!7DG!Cljya)3YpA;?jT)3CO%RXi3ot=4CnAiSXopH>i0B+
z%eG9ksc9F_P|sA)Qb(pjBWHP-sbro()@epUR@6Ph@&GPSAkW?<`W;i;)R4jm99;v6
z&{Ne6X$kl*L>_J;Jr<)WK)3}-Ds>xQ#A6v`gjeHOh_M#zn@Auf6ZhhPi{$&WbU
zB7@Kihk`TABn=bAFM%8$s0}H=DLR&jv}h7B6k>zK*(}nQQo16CE*55YES!YEM>v?M
zL=;NENKXkFQIJfTqqJyaaUx%|JLuLj&KmNJk<)&E-p|Xn6;oWA(hZ`Eid&)v9bSt>
z$&=I}(bfiS1$wsWef=7A8yYpkz==%(A>`6sUq>Q;-CkA>0DZ2#qc6J)i;LH;jR6
zfB>baT_`id5wwaXO0gkPfesnDj*j}Sg%b4KTIiPm6c!H{g_xzRY5h5X^c_ILU{(Or
z5UW4ecEiEu!9jHs5Rk55hcft?NEVvNJp9K-!BUU^0Y+fr7L-tb&^izWnpuhATszK|
zj+eSbq?oD*B{eNfSBlCIq+@U+YDHc6woIK}mzM;mLx`b^DQapsSs6ceZ}?jHH#%0>
zPRr5}L%`zGQs~NT)ujJHv=~Fs54{2`BYs1V+PW5lFcF$SEF2*2qu6krq#8UamJN<5
zDC!#`bI2J?DIpV;69|+d6<2~0(#Iaaj>75@pQ4S?Zy*>@PGzxS*650bdO+3SNfh>3
zbZp_HiImMIkOHe@ABFWatt~L&4{ieOjg#4OMCgy&KSO;4>$H5-7S_fqKyk`}UY&6)
zLjsY*Mub^~HA4!65phAm;vZ6g3h;t~R}^9avCkw*Zv80-gqQA*<@SYsqivp&704CV*hfH17lNdHbqW?`zD-oE+v;s0%gQ{Rk
z2eUUqxfMtPei$Ar96n^O8a9*v*E#C0yPm6tRV92LStD-%2dAXTcYt6M3SpRG1m0kp
zGXjDMR0Yn`dN|6WX~ltTOa&J}ij&4N?$qolVq3*b*#YGOnx?GewoVgPRLE)V0kX#F~%+>Imdb$;cD=5r021
zC}-e@mqP*_6YQ&oep)}Mt28g(SvW|}urlP@yP_7x
z`pP&E35meYsuS`t%t&G+qgs%oszf>LK_5qhGrkd&qUSR5Q!Ph}YLJ=6?o3^W=LjB#
z(ck}H!~s8SY3%2Sek>)d$A+WVVCD;2X{Z?`mT@u=QyRT%I1DDfU^ta<(u@N!`w^V4
zhS-tPhuy?MO$Te3T1m1_afgI|r&LiRC5dph`87!r0Nw>`=Jz>3aP9EfwxKWCPsIGC
zEXJD}0$dDTkU4`2H^2i|5W%1X1VR6s4-;!0kS)GI47n99W=JAjxeF=zfdUCG(08En
z6=#8+Lc16PwV;gu-UZnyn*YC5DaHN~dKHf7%`kjHNTYT`Xr4)+AA-|h%obG)Tf|y8(d;u&
zK;z;D!I+{sh!Cs^h?OvV4qwEtG+?}_SAHWwg!FX&gANVRqX@38blO4;XDR#Z^#H5R
zp^f+mAIgG3HHOd#4y|zrLC0Zk(Hw_h7YF0C{q~boBJPAgbUhv8VCzr6p>v1l#$Z;D
zDN%ao0l_%dbVN7;cyKrs2<jIGu4WPH3WZT0tL?(XoZ~WKK(H
zs>6Yxg87zEh{FK15e5W|kuf$EBoGDL-o!{HZHLq8s5mJlj#@*>2#5q#oDcC1tn!!$
zYr}|7I08-P^5MO9p>FDsDCW>W1ZF=u{=x7Wm^qpNYk+l}2^oZfB6U;(;miphIcbG~S6I8fz5R8aJ
z#SMr+EW!iV2)iU4fK&_{kwPh8LSNv6YLoONsK1)v+mqM-UFLcL
zzt;x%mhq7X_HX)4t{4QyI37S4%a|D9sE`cLwAY9zF$6Hh&
zp+`8IY;Z!`hhTIK-TWCtTTM5zM2fq7=sJLmX&+jIq!#5SIMN
zMncc>4$Lp;FpZ!D0}rZ`s-*I{WX+_dF-@ZDVTX1@M)w?$4acyZJ6@nb&>$2KA%2HF
z2!{_l4AUA8D;6u23Z*8RgJu|`nZN;+qd`wQCP;u~$Y7|&fZTEv5!41ws0H+CHhJO)
zm8)#+uo8y+V8oCJP31@rU0zi$pwEW-tIBZt(cx+gBTCV!Bm#j0Wij>!U7A>IOb1jQ
zp;sntYw?g4Gos^YuQ8;CwQx);61Sr;LtqO2TL={v11t7!C#oAKUkCZ#m(av`n2`j?
zjbIvp%<=@QU}LI^@}^3XJKDAoX965kgQ~hd5yJ)a5gJL3$&9cC*<)xU(ju5O;k+kA
zMvR<`fG*-sj80)kt&HQKA;0@z%p#~1J%a<3;5|f7afidOi`>S5FN8G{4w$e%CNKW=
z$M>S`yQ%+QfsjF*JZlWhzR!`5qhAR6$W-*cIVt6fW==vKbXRQ
zZOZ>X&UVhX%-uQn^<2Laux+t3j?oT!By1ddXh``XIwyl!ghv4u9T;*|&C!|x0tUrm
ztSY)S;uH~0!Fj_1pqEO6&7Q5nXCpL131D>?AOf+;8C2K-WhAC;gr((lHDN@kLRjME
z5egL)bvW#XxWN<%MmTywOCbeGw9Clg#xzSGg}4Jd=d`R9%j{bKmEfw#ED$9B_*J{E
zUy95cP^c(C{Mj-E1WP=>FhH9GgJGjtD*gxw7QPsH%P^e58o+-ck%1-LitSUOecZyF
zL;_|BAThgGWks};B46aWG~nweqH3TMV7vd~7lJGg5izEK-n4w|;oJ;&TE2A(Vg*PlhaV#6^A)q0jK0Ahac^sGm
z6CdQTUi{%7O9>-UlIsnx$6#C=@gGQS2@r;dP2-5*JgA5O|RpKWIEK(YkN(Lay<7
ztqR;YsBmIwO#S=4vp<4H|56ANq#%6PMj)38zArw$V_%aBj|IDZK@#W#R08q3q>bxH
z;EA}&o?3*~S+N4wK|%#s84C+y=)#Z(mXahfTm?dy&qP^}g((hvAth9FxyBbdHwnS|
zH#S;?icU;l$ab|tF{#>YOeq4AgP2NF|KVRk#b1O%i#*hFxB)mF|4Kk
zi?UcXmZ;j;;_k(zY78VpvdUNvCh?3y$oc~Y4_Ft!NJS{Bhiudmx>&FzDvx3575GIT
z7ZveFR0*vRmpr+AfhCBvXcaDD5@@VvNC;9|#MTQeK3Lp*q;rEXXA`h+i*Y^n1)&JS
zBxsImOdh{X9qm67h_~HC(OaVbLs9m|{KMYA-viQ<`@RpD#AtDowWTJm0`LGPVlY(!Oo%fu0S#I+5%Kz`5=fJUpSe-_4+Rie3nx3+Y_tL5z=y2IFc3&QNHK!_x8agaZ)p
zV3rNr=p&d_Kt2Qw3lGjip*&WUFv+Iu)esr*Hp)c;3%l#&WRSaLhUOPTO%v1N|K}cJ
zt};n3lHo`)A8+;_&nF}Pe@s?FN|8vCj
zdxfKVIHJcVnATp&IJFJ>cCCu!L8+J@Kn#HmKT)WXm@;w)>V!+6aaW~I271p8|k+G3vud?GICJcI+`6e_36*c~|&kF`2j
zFxXCPafxAV4;S3eCDPDg5p^?{_KxeEKq2^qABEnFBj+Q2N4Z|)0aL=ZwI5YTS(Pv{J}24@fhC?N=G%^W)UfvQP?X`=Ps{-W4IDu{yiCQ)wBklwppIaC$U%^RD#bM^z??XeQ6pnB
zk-(k5A_=1-Ha0YwGzJcU3i|ztGD)7ftqn*8LQsbKP!C#Hz>AU@Yyd>`0B`|?#bFT~
zV%H*yqRSwX5tBb8jazRx#Y?huGyr#5;S&44M54mY8BiD#jiF$Sg(U^1b5@n!2Yxeb
z#o%WlD6AL}1*d1B0dNlR?ie&>u-66d0XPxn@(Y*{SYVnG;M~-OVHt;gkP^Enrxy*h
zH&QV@NMDW#ZE}UU2kHQgHL(JKec$lpmNt&lRcM)TQmBVzGd1Z7(3K*#!GJQ%X2EaK
zIm02N-Y}FKdyA+7U_I}Y3@`iSMws&Hoxx~jbgC^leLKrrTfY*-@L22o7Ek_AUvkO`G>l8)o7^f|49E23H*ly{{19Cul8?o
zh^_6W8nq3vx<-_E7=vyO-V3Wd*x(AUs2gL(jDh20xFM$Xu+XQ)baOZY1MXPIWt*;i(ivrgZotvz#C<6mS;`jkL1a6jDcK`Cu3Q5`38YGb~eK
zMH;gLj2YcO8BxjGom^`zBS(&8Y#sW?1jBL!0APe)852ZcVJjp;XH+i2V+6_wBr+rq
zAO4Ad0pnd_S`zUVigTuc#Sz#M0GC$EG>1bZhy}4R8y0)rVh9E
zS7*S6l`yOTTfrK~>iRB1XYsf#`nt-Wp7`zqh6KxM9O7_T!cis^70+Q|MIDcHz!G4b
z2cw336+II+0TU5?$`6AA^c)TfF+zw+<4O}U9JesTFalBRaKZDin2*#zkPgehhYvW0
z0QE>FQlQ|2M{+g+(=zNm=)Gc~k5xVNX%5k7vq2Vi0>SLSEO3?b(Fz2
zYEURf82?Tr^DHJ-E)C_%S3F~H%1sf2UH4wHJ#F0XbQsc10^1wrtlnyPo
z*dQ)ucf1-P0}f|V$l;(al-A6QDn>r_6CTS*YYDK;u^#CJu^1q$Xh;rn#Yhc;z}Ob;
z1+NO1iHAE(HGydfBw&aPPeU&NWA^`c%*`<|mNlSS9LdA9#xVs*KA@oNfFLr284e9A
zC8BBRXVLg<7PwxFVmPP5CyjYv_Y0&E#YC+Q)x~%|Zd=@#jQ}D|>GL;gFo{7O!b7f*
zuG>ZwAhyAo@EC|b@YJgV3PM$z27;9Z(e*0yYkWjrtH_qV-zPQ&<28e!GML6f^{s(%SHOP}&>t
zkCo-nbjGF-f@O!n)gQItFe@3Y1uX`7%2`>>!GztIpR#HMBfA;Ks8NRgQ`XOtI;L=G
z$h5sd1`qZ|C~C`CSu2P|lTfpNJzm$wV|SZ5p85fiV_y^|W$_~okRg`PC{-5aW=V1^
zYp0%V!8k-f1A{-oHkXi1EM8Ld
zn7*|VE&3><1@+P?KwjhoS>TifAl4)`i-DCCAry;5(xwfEouZgwZ&ApA!{7lOhLWL-
zmO)9Zl>vtNnz1*2
zVo4rPctN?L-f$eW?ZjohyD$$3l`dvn9Bo;{AhoRf7*d`
z8sc?^jt7B$0+9G_=q7)Ki{GN)
zf$~u=4J!9n#&3-S@sK$CsIV$9sL=@a>gPoYT1NyeCRV^e7J5M%Pd9}zRI+VaI^Y+3
z=YV)uSYgcX@{uwKW$&>DGKfRhSwCAAjB}4J7a|eF6CJ#
zYicSs`sa`fP$k4JdNB{iiqes*0;~?bEVF}nz
z&}1j6*6tW=VM_ot2KtI-fMTO7SbPd!RS$3F26-wnCV^>q#ev^KyGI3HR6aw!SH%z4
zP;K#JSL{;4b0W0b3Q#h#mk&Y5TJLkuY&bugB(q
za|wkG=Eiy=sePz{78uvDhaQHUZU~?lM{+%h6*(Eq#H;%Lis}5=!4@%`?E`-3^kSzi
z=FdYKeugEa?=Myo?E~<|5pm3nSz%|N*gjo&1g;xvU)XOgZh2!E!x6|%1qmawt-0S)G3}GU?--IF+hM7W{OynfZaer
zb`jcfH4W|J!>Ks9;egMN$of#B;4y@aK3tySNIIH4$k>&m02oA6hDs5QaU(uA7C>x<
z>FkOJ1uP{R%M5>5jYl3))#Uz_N7cvF_3Gp56Y2&v|D^hq`cJvN{_D6OKCK?JQQf8W
zX9xV`z}^08zh~4<>a*%|>hq``{t#VP-TwtdfK~p8MGREDs3v2M?Zl$P!+1_vQJnpq
z%uDLas`H8(8@GSQFg`(=fLwajP180_GyjnMi+aF&o8B~|_*VXBPOqqhegkLafHS|^
z%Hrol
z#qVP(FD+Ab{6uPxa*j5vwG}_bS;o(N;_c)3wN1VmytTg#FWyy^oM6LGZ7Y5{SUFcK
zG{erUcl6=DGW@MkmrYUdJS|98WB$v=C|_wQ9~N|9s7|RV^RzKTRPKk`p${93sZYKN
zQJJreXokYeeqWYtkb58ARt$liuMKZrR^)!5j~HAn8(zpzxj<`aR=5uEVYBjVHCcW^
z^YV3okMxm)>&MSuQ8=BOsu!BnD#|X_hBd8LWPa9++G>BLS6R}WQ|7hGpVt1OnXD*Eygz;tUgY`m
zGPS9&f*^i%cNLZZ{54tjvL@N&T4cYnObvDix4a)$$!)!O`I>UEwrev|{2;TN;UKLZj!T;3@Po`T#tx>#
z2Y}y=#t&U9%e3*$s2L16*ZA@Gz}JeON6wg2?JF#C#}V+>&yB*sgJ?j920
z+-Bv;ip;*OdHFiPdB*7GJc{zJ#4gvy4#k%rY@RV@FfQ??fyzL&){s|d74G%sDte@$!Bt6+|+rP5LK!OFGGdxRfkX*2C;Z|iZ5?{&?!qYkjFS&zco946tt
z;;q$ooIyy3a((k2H5hQY(ZmUf_Uh!D%9R_Mn`R%xrG|_=rj|QO6}~S(yilR_Xk~?#
zbJZ%CrM#jwEiqlWQInpf4&Oe|hgYuv*-f=DrZH1_b*NI)m76u`Aln8y$`$+`|D;J>
zrPl5N=-Dkb2RS(JEIlK7jm#lOqR6c^ei|}n1>mV{0)Ax!d@bW_UGiT?Gquu%7q2L{
z)tDTVH9Js-sN6EE8p`;x=C}^Gjtr(7zg^#@+}^-FdGzw;1xgW}m$SN|ls|92o^6m>
zM~T749a`R1f;ts4=hbDZzX*}Zj5`~O)N@{I>Z672sG$4Z)x7`K@^5R_`-#1erSEQD
zx|YAvNC^&IcK8MiV*Fzqqni%er)Xz%uXf|D+akYr+eB@V>{_m#N;^
z1%n~HDnq=P2JbWInuymyR+Uqhsb0A3&P1xJUOZvj*i#?q%-T%TzDIcgyna8RC5$
zJ<9AsMMY+t7%wVwmZ_d$c8hkDtKE1FyfU|54zK;_DD{DRyhft1&)_4V$>4(Rm6*y
zl_ks6l#7Qs13m0&OP8shEpXLaxoDZ{86r2S75${7TnuyXmS;>S=;eiS(lXT}u&tv5
z^Beu0%E@&yXdOBSy1LM3OL!H^vo(7{vV9rP)tr;-=6!k3*X99a$0g3AO4CtSFT%bT
z8oD)eyAdCk-24|CO82)NRjR$WOL?hoUi_nQQdh+kMtgq=F9Pc0>tC-hJSCP!SES;#
zD$<5Nt9y>J9^mjjVkPDET5Hv*mpO0LqQ!cdwrVeDhY${zE6U~u0J0VUc(Z{w`We24
zthd5fyu8&=+@15P18k|8;5q@--T`H616m=C-T`;;vaL2s2$b?0W@UQ=W>QYfZx4Z4
zh7NBaKya1JCo5Devo|kOy&fK{nFbfpGo}4bErt(b@PWKro06)7wD)1ILJECH6MYid
zd?^&(iuV3c`4cOBu(`?yHQ!$+vL9L^yuybKnUqT{^P>jL6uZ&K5=%p_5JfeiM^~}`Jy48<^B0z
zHE9(uAMbVIblEpeP{0CJ_$oN&f7?WIBA@losJW-QWNMkm>z*60w|85|lmYl#mOY^%
zo4on5Ppmn&L8UvpDtNKhNeuwL@)F?Wn&Xvm3C60hTlKhPX3Z%L&iBmADY`ce9DsqG
zl~ZeOFOb!N_Yt;Zf*Y^-QckP6sb(MnH+6c=88-uEeP`?x0^BQSHZV+y`1N>h&7I3S
z>iNFdPC2J$Q5&F?a~pD~ZPG@c*T87$p9k>zwSPev!8$M_LQvV67U*7FDbY6t6|v8S
zx;MSm400k~;pU=TsQ=KlUPA&Rq(!IcX`ikvs>MW&z>Ihn4@n(OJYOE>a-%G1XpTA`
zp6;x#Ep9Z{L}~DCS$N0VQr%ktX#{d5N1%&_6fZFWq7|y9VKN&&F1(j^JMhMXP2=kF)MfK-cVC!
z_O|t5@#C%rB1NjZ260c#PWno;PAm6Mc3Y;Z+*`A<31A+Q<5P#Q~+ZOZ)(xfDV@cU=QX!p_Opojy==T(V*}%TvJzo8T27Y&qqj
znhmZ~-43;G55y7=H)sQC6GOg7YWB&kd-6c{#2&l|5&2l@et!1j$U3<&z
z{R4faTFm^V;ThJQAi>aA*|JRiE=WwVwqs`OvG1e{E(Y(Govy5J5Nx#zeV_`@-=RF-
zpq6fye1+!|&C5YD%7%spam#rP@?;IICkWApq&qsn^n#Q?rbq2bX3(C9hLq#_O||&L
zrv?HuqGm*$%5x0{r=|q1+j^l!S0e)SvlnZ@iOlq^n|b3{<;$9;)kCDZ4gIR-S?am+
zrORT`Ue2X_U6X1fkn&BF@@@!KujJdI$?U1RL*N;PH~0^*LY=O`9B+6di~tOK?9p!g
ze?oH*qVYgZG=^MkoIDM$Bt5BlK2eDLlMQcLVGtFFHu@@MMjUb?X=ZIyD*ZMot&8Q9
z8q4)uIq_TrQcg93o}U;7wa;lae^y5%ft1sYA=l_QhL`JReydVd=GUr}t6jdZuUfMX
z=No&w(NsVP6q3N}u44u`cO_7+irJLQYLXd5SgqSCm)9z94kY74%*S3?YyJSBoY-(f
z=Bt|P8YhT2{ow}g!suV!oH##VRk_CSrq70~vr6Ys?x-r)Hg5(7OTu<4*9}!8rm4Nq
zUb(*3R<3dKmdRZEcSCb=xnz655Z8+4q*LQ0Fy?|>aOKA4Vk4}FQAFuLdsEF|1nKix
z{}*Z|x(NuZ@XfV`Y?AM?c}q?81A_NaBpm;(hUaJ`n4p5{C~lPvwT|w~mRV0W%aY#f
zsb)yojI!j@hBw3OLt2K0^?B7k(+r}o)Qw4CcR;bJCPhCE&TiMn9M3fc;c%q2(kW)b
zmFF8YPH>M{j;{=^^mI*EUTB6R7`49C;A;d9w_Ut$|9UetH5d^zziD^_P#;4sNMnWG
zxNwHeZf_Yw15+0y3R#b`r9q4Rtkf|xRoU81axS_2Qnoc~LJvUfAlhMg)A-H#
zkQqqiX~GM%-F49~Y7+!r21mupSBAGN<|R|RCJuCVVy^e=L1l!a{HAFc
zPGq8qzO7AC_z_MkcVMk~hS{vL$))n7$^FXlwK0IdpxEBFb?_idNCvLsMAPi->>8*}
zR-RvopOx#c^i-8I7s;zG<%~sYthawM%^!VSr!r@;IvT@$vBFyF!6a_EhYca#*zUr?
zr7c^eMxlIvD0TN9Uh4mea?uhsDJuCL;Qt`dDHo5&a(cP{FgfTu1XEUrRVrP|CF9c&
zU}NgC@s3=b_!GCG{9eqED$B>mFqRxBxxmV{Woo=$_Rx-_l}pDDL&BfB+7B*q@Y?t1
zO5ahXK9_*Y#>ZUEI8e+0tsEW2_!eOD_VV%B&d%1!`|LLXu`qg&+=yG%V%b)o0Q$SC
za6s5AaP|UqgfD&K09KbF8@ym1GmMk4yB7=Xt(<231C~Vpj(cxrqXbY*#DthYfi+}I
zMYi%DYK=|D3)B`L#%ZOAle!SscXwm`UGCmFcY!*_PYfEO7Pq%@>#&scaxB5MiVek8
zrg8yaxo)9a@E7&kj;zeYGE0*@>^`ba#)QWDh3b!dbO{x3izBpYFIB6pqFFEq!CH7#
zSq^RL>90%{dNs^f5*7t^2_k8o*oMiOtCy(7rny+FR<2p1j`q_;R>6zE@+nveO!;eM8kh1cgj|SYn
z@8hJ5{Ic>v0BKqIFbL66Rz3=(kn$TFDxNY$`Pf%65i6fGl$xS^>Jt(9#i87U#d}X|
zG6{({`*4A;DavO)8q4KQv-MrI>k4;=wW-PBuSybDJ#Jha*U}7hV-tDUaFlFVQpeO*O+}lto$^mc<
zc2^7*P+7STyDOTccPeXrRHAxRe*ZGH&;%6N%gVauXv)e1FceJ-DG&OTW(ri~_~ms|
zL6te7Q7EM0As=(BSRBg3K2#LlBR(i0Pk?nQkNP-50;)K1dEF>5g=Czxyl!3CI8&69
zmp9m?Day>{bu)%(+sAyEQ6Ku`dW1zy*)A)O`-sIvjPiuf0)WE}K1rhb+Mzt@s|2QF
zN{4cak9?5=)=yntx2Q~0PV)gxMJXUuPWOp=DkSri5B1be9Lm!^qNa8#8~rpR`%OCao2p7moyLZ|XvKvP8}&-+S&tSQPFK3XY8()xn091|e17kxcLB!SH{ecB?@
z$opB#)tq(y!L9(I3^H(x2A1>f7{p_4o8u#_h&x
z;|}9a<1XWF;~wK)V~ug2vDUcXSZ6$7JZL;*JZwB-JZijRylQMV)@vu5XPNWOd(5j6
z*C$pd?nykDcs%h;;)TR(iFXqpCq7Gjoj5mnY4Y0S>&ds0Unh@Gou0ZXb!%#6>Xp#iy=7P+^%;L=BnWr-^WM0j@p4pmtJM&@Yo6OAYnc3^JH)L}T1pvfpM;$j#2J$gRvhkb5|{KKEqq+1%#b?EJj^lKiFltMV)IEAw~e@6A7)
z-+eh9ta_z`RN4`Dsqmf^XJfY>h
zmJ3^!wp`kBP0I}}t6J8#ywvh$%iApeT|8>}sB1>uIBM0Xdq=Gw_4cSwM}0kN!RV!<
zFByIL=<7z`HhT5wwWHUKet7hT(VIrUIC}HwZKK~Cef*fy$IKtIbj&4Vt{ij2m|Mr(
zKIX15YsNe_X2Y0g$9y*Cn=z-3J#*}=v2(_rH}?Foi^eV=d->RF#-26q(s3)stsZyx
zxckPf8~5
z=7aV+`@>7rhs;OKbFIhCXU*r$r_86#jpj4vCi4aJMe}9zN%JN1Ve>I_W#q=lO_3`j
z*F>(3To<`Ia(!e)*ZbG>kIQMq@QZNaEbbozFs@sI>S2CI?I}6oo&sw=33`i=UW$8
z7g`Ig1=b?#0sCJ2e*0nj5&N{*#nySTvt#pO^J5pr7F$cK*|9mX(_`nyF0qzb3uDWz
zORc5WW!B{uv0h|dVO?q6Xx(J3v~IO-wr;`IYHO9iy~e)Jo@GB|-(}rxt+m!z_gVK?
z_geQ`>#PT?2d#&!hpkhs_12Tt%hrq5M(Y`Cll83is`Z-ny7h*&+1g^gZM|o`Z+&Ea
zW^J|Ju|BZ2S?^k(TidN2)_Uy=QTxf^nc?~23&IP+i^CU(FAOgUFAOgYFA852zAAjG
zb#?ff@U{59E_{7>Mfk?>4dJ!c&EZ?Zw}PnRH2W0$bbF?KhW%~$1bc>kqRm>5kDP7KvA;Cu+Ok2{
zYm00)>t@)fg*GIpEw&fhOYHU9Qt^F-eUZJ~zTCdbzS>@9Uus`x-(at>Z?tc+Z?^JN!_GWvl{SoT^#y&B!0W|V+M&zu>g2>sCIgxWB=SAj4&X1fKnH8BG
znHzb`nqi)cwE2+>A{Ry$MNYLA<9})7;>abDWsyrGmq#v(ToG9nxjk}EWOd};$ePG~
zk-H*mBX>r~|GLP7k%uCWM%G6jk313C5P354h@1X&WMhOnIQa7x@NbEHXg*%3_QT~g_dhN@|SCOwH-$Z1eI3aps^rR@I
zesYvjKP`HC^o;1N=$z^%Re)NLq(&$CC@72*eqW47ajoul(
zD|&ZyP4vF#+UUCI15s+xBT@46X!K%hvGrJ#y@`EkeUyD^z4mx?mi_co%TEPer&md7rQEyMp6v72Hy$2OU_#a6{`kFAc~8M`ZXckG_n
zy|FbhJd5yPY;ElR*aNYLVh_h2jXfTFBDNv+SnSEzQ?aLG8)J{eo{4RWJsVpedoK2B
z?6uhIu{UE|V{gT_#J0!Yj=d3kC-!b^N9?`W`>~H>pTs_oeG&UI_Eqeg*tfCM
zuf~Vxt?_pN@qYZH_@}_aoKq5CAbnQieVpf^{F21QiDme{JaKvaiul#>YvR|%Z-}pm
z-x$9seslcR_{#Wg@m2BL<9EdGir*c-H@+r*U;M%NL-B{>kH#O1ua7?-e5{HgfH
z_%rcmq|a^Z1wXukiUg{!RSb_>9Eyi4zhhCQeG6oS2z7HE~+v^u!s7GZSYe&Q8ou
z%t_2moRc^=ab9A6;{3z~i3N!Z6AKfI5{nZ{6Bi{eNi0uXnz$@+b>f=DwTbHzHzaON
z+>*F0u`+RcVpU>A;>N^HiJKF5B<@VymAE@`Z(>d2zQo$Z{fTvn2NDk@9!@-xcr@`?
z;)%qD#FL4qkn?n6V`5X{*~D{+7ZWchUP-)~cpYWlNNi5LiJZ3*TM}Cn+Y;LoZztYK
z>`1(qct7z$;={xziBA)sC%#C0nfNO4P2$_cjO6jj6Otz;PfDJgoS8f&d1~^sKAU_l`F!$)0Izosl{-byjLtYIf?p)V$OMsRgM;sb#6;nyn_7~(D77?o8UC+J
zU7uQ!x-oTa>W0*9sa2`lQ>#;Vq@GC4vNxojOg)u)I<+zNOlni=+0ebY1sn=6)q~1)umD-Zpn%b7yo_ag=ZfZyBz0~`u4^tndK2Cj_`YiQ%>WkEu
zsjpIBr@l#jo0{Pq@0{SA=$!1#bWU+jbxw0mcg}Fmbk1^SIcGbwojJ~2=N#u;=R9Yg
zGv7JixxiWAT<9!x7CDQZCC*akBIjb~5@(sS+_}`b%(>jT!nxA9%DLLP#<|wH&bi*X
z!CB$l=-lMo?A+qq>a28bb5=RGJFA^LoI9PnoV%TSoO_)$&V9~WXPxt)^N{n1^QiNf
zv)*~a+2B0oJnd|Bo^_scUT|J?UUFV@UU%MbHalCLZO(S*ZRZ_lhx4BEzVm_eq4SCJ
zsq>k8{??h1K0ZA&eM@QZSEjE@U!A@teO>zc^bP47(>JAWN#B}YnZ7N(
zDota5NBV5@&h%aByVLik*QD=DuT9^dUYC9#{h-KwEWJMcczQ$nsr1w7jp=97&!(SC
zKc9Xn{YH9o`nB|{>DSXQr{7G!mEMxxn%%n6y3GACzdW=_eRo;f3PX6CHS*_qjyIhk`Z^D^@@3o;jG7G;)XmS!%>T$~|Y
z*JiHEY&5UW+>lw3xiNE7=H|>TnOid}Gq+_{Wp2-`&fJl?Gjmtw?#w-zdoyb?_hr^*
z?$4~tJdk-X^HApD%p;jcGmmAS$ZW_wnRzO+F|#T2T;}=Ai{;1a*|W3fX6I$+XV1?r$X=Kw`LnZ&vU9RavU9T+
zWzWf8oV_HwEW12=DgK$eX}*fTtFqT*ugzYUU6H*hdvo@d?8@wI*;U!wv#YcBW!Gl!
zucpn0+YwSayB(@$947C$bM`AIWaaK9k*)eKz}C_WA6K*_X4gWM9p`mVG_@Ms{=d
z&Fq%!*6g}Vb`7Qaa`EB{_`M2}$`Mwlw+q)5t}onBSW&pKa8u#t!mWjsh1&|N3bz;T
zDBM}Nt8jPWp2C{KeTB7!`wI^g9xOamc)0LL;jzN{!Y1?a!V`rJg{KNn7d952DQqe{
zTX?SUeBp({i-ng8FBe`Zyjpmz@J3;C;myKZg)N1xh3$p63-1)(E$k?~U-+Q#Vd0~~
zCxuT7pBKI;tk=FSd{dZFJid5B@xH&gZN=@yw~Ox--z|PJY)5fz`O{(dmlu~8
zl{waXuXviZrhI<+{o)734~riaKQ68u{&xAD^1J2RhOZjFz5G@2>*6=XZ;LaA9Y5@Z
zVJ8kdY1qtRXZ$~uy!CHuTbC`U{7_%%)00Z-Dyda=&|!|9m}4gn*m1y^7~>@8IEIrO
z+xK4xGcz+YGcz+YGc%`sLGM+mpZcjaw5P|KbFMk&TH3bvwzLfh13drd+kXZEp8hio
z5CRAVL;xZIPrsr7(SR60EFey<^78BT*UCShe}w`5P$>Wu0g3@7fKosipd3&Es0362
zssS~CT0kA39?$@21T+Df0WE-5KpUVP&;jTKbOE{nJ%C<7AD|yF02l-e0fqr1fKk90
zU>q<3m;_7#rU5g6S->1%92zU%U0iFWS4=%eVX==V4L6$2Cl6@wIm6+;w56~h$Yr0
z&@E5s0j2{o0GWU+KsF!;kPFBIWB@aPS-@UkAFv-d034L(3<00=6`}xlfP26L;1Li7
z2nR+0BY{!CXkZi|1{e#B1IGW!6M%`pBw+HNJO!8vOarF>$+Lkuz+7OSJi7*13#I$wkozMwkvihb}Du$
z#waE#PAX0*PAkqUE+{T5t|+c5t|@LPZYpjm?kMgm?kgTB9w{Cxo+zFwo-1A`UMgNG
z-YDKGhAG7=-6`HHuKeRs@k#MnF0RkV=~L-T$zM50IaoPFIaE1J
zIb1nHIZ`=FIa)bJIaWDNIbJzIIY2p3IY~KLIYl{D`HxB&%9+Yp%Gt`f%6ZE9$_2`W
z%Eihh%B9L>%H_%xe`Zw4v#XVBlCC?O14U_N}kHDN`Xp=
zO1Vmn!q;-8`r9HbB)q!1CL;2)%Lt`han`#^=TG=-83g`O;h
z$3TU^Acc@1g`gmXuposql}nW?m1~t7m0Oj2l?Rnam1mV#l{b}ll@FCqm2VXvRbN#<
zRe#k0)nL^S)lk)N)d2L*rvK|!EkPzWd#6b1?hMSvnfQJ`p0%>Nw6g5p5&paf7NC<&Ad
zN&%&U(m@%ZMzu^(7APB(3(5l(fC@oHpkh!ds0>sNssPo1YC#R4CQvh|1=I#=2X%tF
zK;57oP%o$-)CU>>4gER(gN=YjL1Ul^&?IOI^w$l{JZJ&52>N4ZRzYi^bMHr&=KeubOJgBor5kwm!K=qHRu*}2f7D6fF40lpl8qv=oRz^dIx=gK0#lg
zZ;+3=pSr(#fO?R6uzHAksCu}1uTqqHw0eqqs(PAwx_X9srh1lowtB95o_c|Lp?Z;e
zv3iMm!GDyiSEyI2SE*O4*QnR2H>fwMH>$U&x2o6uTbp`^dZ&7q`d|I_sQ0S({mlo|
z2h~T_$JEEwN7N_Or`2cFXaA1Ot1qZ8s;{Z9t8b`ps&A=ptM91qs~@TFs_&^EsvoPL
zsGq8zsh_J~s9&mIsb8z#sNbsJt3Rkesz0f}swXSIslTg#sQ;Skze3nA2F%Sk+k5Sl8Il*w)z5*wfh8*wr}H
zc+xo1IMF!OIG5w~&pE!DewzN80h)oD!I~kOQJT@3F`BWO@tO&miJGaJX`1PpfAy5B
znWq`2nWLGnS*2O8*`V2|*`(R2*`;~=Z{3=`nthu6nuD4X|2CvKqB*K5zxdXi(45qq
z)tu9u*Id+G(p>t-isqW;y5@%FrskIBw&srJp60&hf##9svF3&5rRJ69iRP*1ndZ6X
zjpnW9o#wsfgXW`V)IXmzpEX}JUp3z}-!=WU0<;3Pg0!wQL$pG*!nDG*qO_v5VzlD4
z;E%l
zt2L-Kr8T29tTm!Fsx_uHt~H@GsWq!Lr!}v&pmijleXMn&b*6Q$b)j{o74^?+tsAXd
ztvjuItp}|~ttYK#trx8~t#_>tc}HJb-&(%fe%k)p0op;@!P+6(q1wsXDcb4Ux!N<@
zv)Xgo^V$pAi`q-t%i1g2tJ-VY>)IRIo7!92yV`r&``QQEhuX*5C)%glXWHl57uuKF
zSK8OwH`;gF5898~PukDgFWRr#@7f>QpW0vA-`YMpzB+z7{yG6VfjSX7kvdU2F*>n2
zK{~-YAv&Qt;X2VeaXRrj2|CF-DLSb-nL1fI**ZBoxjK0|`8u^a^*RkYjXF&_%{r|*
zZ945b9Xg#lT{=TL!#X26qdH?c<2n;MlR8s6(>ilH^EwMUi#kg>%Q`DMEB{#4+1EMH
zIn+7QIo3JRdDeN+dDVH-dDnT;`Ox{)`O^8;@zM3w_0#p&4bTnL4bqL)jnR$Ojnj?S
zP0&r$&C^NJ&C<=+Ezm90Ez&L4EzvF2UHM0uZj)}aZi{ZKZkukq?uhQF?wIbl?u71)
z?yT;dJU**?Ex$pJ`sae~lJ27JvhKF-j_#iBzV3nUq3)6HvF?ey?y2sX?z!%ToYnou
zgYL8L)<0f!Uv-1^Li9rQ!t}!RBJ?8lqV!_)V)ZigGWD|bvh{NGa`iGY6zcUF^cwY=
z^jh`W^xE}0^g8vr^qR618Z#9JG8Hm26sq;wG8C3G6j}ono&yyg0u_=16>|5E=#|4ROP
zqkpS^r+=^isQ;w@tpB3_rvI-0q5q}tXW(xTVi0N&Z4hOUV31~zZjfb=ZIEY>Z%|-R
zXiy}#NwFY$t^#%vjhS`QWhIxkhhQ)>@
zhLwg@hSi2OhP8%uhV_OGhK+{JhAoCohOLG@hP{S;hW&;EhJ%JfhQo#
zQH4>ZQ4FHWsM@H;sMe^?sNSf-sL`m&sM)B+sMV;=sNJZ;C~9=o9Bdq79BN!(5M~^19AO+~9Bmw99BUkJoNSzAoNAnAoN1h8oMW78oM)VG
zTwq*eTx?uoTxMKqTy9)v+-Tfn++y5n+-BTi+-clp+-=-zJYqa*JZ3y$JZU^-JZ(H<
zJZ?N|ylA{^ydu|FHC{7bH{LMbG~P1aHr_ElFg`T)HwiEaGzl^ZHVH8aH3>5bH;FKb
zG>I~aHis3
z6O&VU{@MTU{7#d5lLwP0lV_6)lS`9plN%EsurJsT><ZC^!rp4vqjv
zf}_CE;27`}ejGo7j|ETS$MD1WIPe616hDNI2M^-=@ZIa1*#0+yZU|
zw}CssUEpqT4|o9lNE`tVfrr6k;BoLIcnUlXo&nE-=fMl$W$+4k6}%4K0B?e~z;oa|
z@ILqedG(wsn&5%||8>Ai50qKNvLAoJBkUmI1WDwE|
z8G}qfrXaJBX~+y@4zdVYfviC`AX|`a$PQ!|at7IhTtSW?=a7BKHRKp_0Xcx&Ku#c+
zkVD8VrTxraPJ9wASVXUGer#CXtj$h6h;74imohkQUjAwH%7roN_rrftT7ra`7*
zrV*x*rtzi;rirE*rkSSMrn#nhrUj`=f%X#Zj(=pQt(@E1Q(`nNg(^=Cw(|OYc(?!!I(`C~Y(^bs
zvr4lnvl_EnvwE`zvqrNfvo>fGv>Dn6ZGhH8>!7vJX0sNvRVHXAV;H5-%Lak-t4*Xe`yLwlh;&~9iKv=cgMHf1(#
zHe)txHfJ_(wqUkswq&+!wqmwwwq~~eXPp7)AauiQ(`?IZ+iXW}cjb0ZUS}LS0Ud*m
zLPwy(&>`r)*@4-i*^$|?*@@Yy*_qk7*@fAq*_GL~*^SxlpLHgoQ_wrJd$R|#N3$on
zeU{r7d7TC5B6J=)2c3n^K&PRvW^ZQiW*=ssW?yFCW
zx(p40hC;)j;m`=Vjg;FcXce>!S`ICRmOzW4MbJWMG&BYp3yp)uLldBh&?IOwGzFRp
zO@pRGGoYE!8fZ1N0$K^pf@VW=pt;aIxy_f`0%({0Ds&CH4&8umLbssX&>iS5bPu`@
zJ%AoUkD$lU6X+@Q40;Y-{Vy4N(2GCg|J`@_zwurD>AQyBKyRUU(0k|u^bz_5eTKe3
zU!iZ%cjyQ76Z!@HhWfyKVSX@wSO6>#76c21g}_2#VX$ym1S}F31&fBoz+z!>uy|Mk
zED@FjONOPuQekPZbXW!~6P5+bhULI=VR^88SOKgMRs<`CmB312Ww3Hs1*{TQ1*?YD
zz-nQ2uzFYntP$1(YlgMJT48Olc320j6V?UmhV{UDVSTWE*Z^!0HUt}njlf1>W3X}9
z1Z)yE1)GM=z-D1{uzA=5Y!S8uTZXN`R$*(fb=U@M6Sf80hV8(1VSBKB*a7Sib_6?y
zoxo0EXRveF1?&=b1-pjbz;0o8uzT18>=E_^dxpKhUSV&r_dk_CV4twB|AX>3%m?lZ
z_k;g0Wq)`8JP`iBl!M^G@DTW4%AxQucsTsODo4Qocgm6QD0npd|9j0b@K|^pJpR8Z
zC%_ZoN&iJT8J+@9{aZN=o(|9WZ_1hfTjeZxHazG5pqvZOgXhBw{)=)Uya-){RXMtBpv8QubKg}1@m;T`Z!co)1I-UIK2_rd$&
z1Mork5PTRu0w0Bs!N=hf@JaX-d>TFjpM}rC=iv+RMfehY8NLEvg|ETa;T!Nx_!fK{
zz60Nd@4@%s2k=Aq5&Rf_0zZYH!O!6r@Jsj={2G1(zlGny@8J*dNB9%`8U6x)g}=ey
z;UDl%_!s;e?t}0}_#yle0f<0E5F!{6f(S)~A;J+6h)6^fA{r5ch(*L9;t>gmL_`uI
z8IgiWMWi9p5gCX~L>3|&k%K7z8x@E`WC|)AU4#
z)}xBhqljK)1F9H3hUh~!qDs)?h<;=fsuVqe7(h0o%FvUDL1YW696g2j3)6@pWGkuy
zJ&PDYwxg=hbBIx72dWx9j~GLCqH55KhzVpjst&z`m_+uV>d`BRX=ER&5xt6-LH47X
z&})cUoPl$8m7HSs#jJQBqA>Hr;%{6^lP4$%=vAJjeS2px&^MLnR7(NRc0)FbKy9gXxyJ)us~
zF~|VaGwKW-iws1)pw7{8$RN}!>H-~)3`V`7F3}0d5Y#*B3Z01j3rWaO)CcMsos0}a
zeWGsADadft7wQ(Bii|*gqwdgY$VikA`W~H*j6(UMAJ7@dXp|rN5uJ&QLHVPf&{@b>
zQ~>%JosEn`1)^WjImmca5c(CJi%dWTquB*OhSdCKhOopWKZoX)~WWH>^V!mp=X1;E|
zVZLd;Wxj2`W4>#?XTEQKV18(RWPWUZVt#6VW`1sdVSZ_TWqxgbV}5IXXMS(~VE$Rt*iy^^CL3FZImF~(%P~io
zTx)L`2&PncS42j&@5hwa3?VCu15
zm{&{#wj1+?X~gzm-Z4$sUd#uk8QX{X#I#`hF<+Qg>;UE)(}o?y_+Z=yPAJBQuI9%1LP
zJJ@6F0(KXBf?fO*OV~fK{3lkhe_-`btYP=Cr`UDuKK2Z|fjz*UV>kcA1@;nqg}uSv
zV(+l`*az$*_6hrpeZjtB->~o459}xQ3;T`rvGBFQlrJc|O0LW?4c
zVvBN%YKtn128%|ECW~f^7K?t10SjN;pv91dA8y!U#KIqUNqiul6R(K3#B1UmF%TDk
z^TBmkbXv4ooDh$QXT)BMQHvgnF^dU{8H-tqIg2%mRf~0t4U0{SZHq079g97SeTxH&
zLyIGeV~Z1uQ;PzFGm8t0bBjxh65|_-JBufacZ&~;Pm3>$Z;LmJVaqYgam!iD3Cl^#
zb;}LQIm-phMaw12Wy=-IDa(1wY0DYQRm(L?KTChh0LwtjAWL7%V9OB8P|GmOaLWkG
zNXsb8Xv-MOSj#xec*_LKM9U=0WXlxGRLeBWbjwW3EX!=m9LrqGJj;B`0?R_nBFkdS
z63bG{GRtzy3d>5%D$8oi8p~SCI?H;?2FpgvUdv6(UCTquW6LAU6U%MOeamm7Q%hgt
zGs|hrQyr;S=$V_%eJdz8PPM
z&%n3gtMHllc6>QL4c~&Vz^CI|@mcstd@jBkAA>Kz*Wlyvh4^}W0zMDlfRDxJ<7@G8
z_&WTT)wh+8b%3>>wZCC_bi)In{t~fn`)aHn_8PXn|hl@nL$vn+}^!n=YGfn;x59n?=Jun?ai)n-QB)n_-(Vn+Y3VNSTR`;kUuO&4SIM&63Ts
z&5F&c&6>@+&4$f^&A!c{&5_Nq&56ya&6&-)&4taS&6Uly&5g~i&7IA?&7;ke&9lvm
z&8y9u&AZL6&4Nz?Sk#1?UL=X?TYQH?Sbu??YZrR?WygR
z?X~TV?ThWR?W^sVtsmYO?~f0}2jPS9VfYAqiE%i720x3R!_VUv@Qe5*{4#z8zlvYO
zuj4oHoA@pKHhu@ci{HcV;}7tM_#^x={se!DKf|BnFYuT6EBrP727imc!{6f{@Q?T>
z{4@Rq|B8RZzvDmfpZG8QH{OTfOYkH369NcMNF5Jm~(gh|2-VUEydyhK9ukfS$Al9?n%w~*-7eqmlyF8kCtMIN30H(`!VTe;a7VZ&JP;lU
zPlRW}3*nXUMtCQD5IzZCgl~e6ov)proxfdxU7%f%U9eqU71~tU9DZ6UA6~-L2h|-HY9;-J9LJ-G|+`ogXoP
z7)T5vh7d!EVZ?A^1Tl&jLyRTH5#xyo#6)5eF`1Y`OeLlf(}@|xOkx%>o0vn)CFT+H
zi3P+$ViB>JSVAl%mJ!Q|6~sznHL-?RPi!Do5o?KU#7<%tv71wv_G;xwm-2y
zwLh~zx4*Ezw7;^yw!g8zv%j~0uz$3FvVXRJv46FHvwye$u>Z9Gvj4XCaR_naVWM;cgS$abjWhZcF1wab;xtbcPMZubSQEtb|`TubtrQvcc^fvbf|Ku
zcBpZvb*OV_a%gsFacFgDb7*(yaOiaCcIa~Gap-mEcNlOObQp4&aF}$Mau|1*c9?OP
zbr{k+bU1Rjbhvi7akzDOaJX~0cX)Joa(H%lad>rjbNF<4cldDla`<-earAZca}02N
zAwCnIh_Q}wj`5BOj){&*j>(QGj;W4mj_HmWj+u^Gj@gbmj`@yFj?Ip(j=he3j@^#^
zjzf;ajw6nvj$@AFjuVcPj#G})jx&z4j&qLljth>9j!TZqjw_CKvxznN3h0~?em(z{Yt<#;;z0-r!qtm<7htr$WwbPT6KPiM1N(v`M
zko-wuq)1W#DVh{R3MPF!rI6A{>7)!&CMk=QP0AtVlJZFTqykbQsfbieDj}7U%1Gs;
z3Q{Ghid0RiA=Q%VNcE%!QX{E})J$q2wUXLM?W7J;C#j3nP3j@_lKM#fqyf?(X^1pT
z8X=96#z^C&3DP8KiZo4{A!c0RCTX8^K-wbhkoHKs
zq+`+<>6~;yx+GnZu1PnfThblrmGnk>Cw-7UNnfOIk`LLJ>__$|2ap5FLF8a^2sxA-
zMh+)OkR!=amjAb*m-$lqiiiZ8{F;!g>n1X6-1!ITh6C?$*%PKlsIQlco)lo(1ZC5{qLNuVTB
zk|@cP6iO;3jgn5upkz|ADA|-8N-iajl20k16jF*P#gr0CDW!~3PN|?&QmQD`lp0Dc
zrH)chX`nPxnkdbbLCO$im@+~crHoO=DHD`Q$`oaqGDDfA%u(hk3zS955@ngPLRqD(
zQPwFNlugPOWt*}?*`@4J_9+LHL&_25m~uinrJPaDDHoJm${ppN@<4f{JW-x0FO*lx
z8|9tyLHVS7QNAfYR9~te)t?$b4WtH9gQ+3ZP-+-8oEkxmq()JrsWH@8Y8*A5nm|pY
zCQ*~ADb!SI8a17oLCvIQQM0Kz)Ld#FHJ@5QEuW2lQfe8soLWJxq*hU@sWsGE
zY8|zn+CXijHc^|YE!0+O8?~LIwVygb9i$FXhp8jfQR*0VoH{|B
zq)t(%sWa4B>Kt{RxV}ME7Vo$8g-qzLEWToQMai()LrTxb)R}bJ)|B{kEtir
zQ|cM@oO(gMq+U_4sW;SH>K*l-`apf8K2e{kFVt7+8}*&~LH(qDQNO7^G+&w@&7T%P
z3#0|nf@vYNP+Ax*oEAZgq(#x9X)&}|S{yB&mOx9SCDD>;DYR5t8ZDicLCd6N(Xwed
zv|L&qEuU6EE2I_CifJXZQd$|UoK``rq*c+XX*IN3S{<#P)(evpA^g?Dsx6#|_9rR9m7rmR_L+_>c(fjEG^g;R%eV9H%AEl4c
z$LSOFN%|Chnm$9HrO(ml=?nBl`VxJazCvH6uhG}(8}v>37JZw(L*J$E(f8>G^h5d)
z{g{42Kc%11&*>NROZpZ4ntnsSrQgx-=@0Zr`V;+`{z8AHztP|6AM{W97yX;=pbtg=Dgs%=)B~-?!4i=3rpU?R?{W>wM>Y@BHBW==|jT?EK>V<^1jZ?(FO0=i=|u>k#A;>=Nn{?h@$|{8-V>Qd%X?o#1W>r&%V=Th&|;L_;Qaymt?y~8!
z<+ANkV!Y$B>$2yv?{eUB=yKw6>T>3C2k_D<2|}uyF9qOx)d^s7;i4`
zE*~x>j8aA!qnuH}sA5zzY8iEmdPW1Ik_zm$8Dauz+7Z5F_)Pu%vI(Z
zbDg=t++=Psx0yT4UFIHhpLxJMWF9e3na9i%<{9&xdBMD7UNNtk?Tj1dE%T0f&wOA$
zGM|{w%opY>^Nsn={9t}EznI@lUzQ)spB2CgVg<88SfQ*4RyZq~6~~HaC9o1%?TjQ=
zGAo6Z%1UFUvocs&tZY^eE0>kW%4Zd@3Ry+0Vpa*OlvTzmXH~E&SyilRRt?M7t(H~C
zs%JH@8d*)OW>yQUmDR>-XLYbTSzW9iRxhiM)z2DW4YGzzn1n_GSCA{n-KRKz0y2oE^cAVn?%M*s<(5c04^ycEyPRFYu4GrStJ&MEct$j%gWbvQVt2E9*uCsNc0YT7
zJ;)wn53@(uqwF#EID3LU#hzx*u;;?8Bdx^cmUSqGbSJ@lvP4*Uho4v!{W$&@~
z*$3=H_7VG-eZoFvpRv!`7wk*+75kcf!@gzTvG3Ur>__$!`v@C!3SQIb!B=
z@;LdNM@9jskW<7d=9F+sIc1!3&R^$b1*eiz#i{1haB4YqoO(_pr-{?dY2oy8`Z)uf
zK~4{Am@~o|<&1I0ITL@+ndZ!JW;t`5dCp(&j|I*mXNj}SS>dd4);SxTEzUM)hqKGs
zZWXthTf?p8)^Y2(4cta<6StY$!foZYaof2a
z+)i!}w~yP;9pDafhq%Ms5$-5=j62Sq;7)Ri~m&$w6Id+sCG-}Q!j%e~`1b6>b0+%N7o*T*%`HOMu@
zHPkiCHQY7A^{@SpbdCC(MZ3nh#=6G2#=9oCCb}lMCcCD%rn(p=MBGh8!Wv*bM2
zHQ%+sHQP1EwaB&DHHJ~@TIO2gTI*WpTJPH6+UVNk+U(lm+UnZo+V0xn+UeTm+U?ro
zTJBom+V5KJI_Ns?I^lZ6oOGRXopzmZopqgaop)VuU36V_U2|P`-EiG@J#-CXY`X5a
z?z$ekp1Gd8UbtSmUb$Yo-nibnKD)lSzPi4-ez<tems9(056ai#0%zy
z@IrZEyl`FwFOnC-i{r)f5_pNcBwji%gO|)p;bro&c-g#MULG%>SHLUe74eFBCA?Bz
z1+Sb}&8y+n^8VVBI$k}mfp^Pj*Wpdwq5&q
z1H2*LFmHr6#vA8N@FsavylLJHZ3fv0airh-vO5MucD%>jFs@$sG
zYTRnw>fGwx8vdT$_zZP0DVZPabdZQO0xZNzQDZPIPZZQ5)q|+Z}#c-<@W97;~wT7?jG-+;QrU@65W&j
zX36d;?y2r+?&mR_eS?7_h$Dt_g43I_YU_?_b&HfMz?#9d#`(+d%ydD`=I-f`>^|n`>6Yv`?&jr
zd#vHRdyGe*TdYT%M>`|lBf%rlBgrG#BgG@#Bf}%pBg-S(BiAF}qrjukqsXJ!qr{`s
zqs*h+qr&5_jw?N?JgPlvJZe4aJQ_S2J(@h4Jz6|kJ=#3lJvux(J^uQf>hkFJ=<(?F
z==13J81NYMnDm(P81fkQ81oqSnDChKnDv#^st?{VO9=yBw6>~Z38>T%|A;c@A4>k;xJ?nly(5sA>LKaL;IPv9r=
zllaN}6n-i{ji1iX;Air)_}Tm%el92!E76#vkWT
z@F)3G{AvCSf0jSTpXV>|7x_#4W&SFEjla&{;BWG``8)hw{vLmyf51QFAMua*C;U_X
z8ULJr!N25R@vr$e{9FDV|DONA|Kj_2hIwXsHhDICws^LBwtIGXc6xSsc6;`C_Imbt
z_InO^4tfrG4ttJxj(U!Hj(bjcPI^vxPJ7OHUU^=7-gw@6-g(}8K6pNQK6yTSzIeWR
zzIncTet3R*etCX-`Urdlegc0%fFMv1BnTFS2toy6f^b2EAW{$|h!(^MVg+%6ctL_7
zQII4^7NiJL1!;nGL53hxkR`|#=^ay$deS&_$fM8HCBp4Qq2u1~Cf^orw
zU{Ww8m=??kW(9MCdBK8UQLrRf7OV(X1#5zJ!G>T{uqD_Q>VWcoh7$b}o
z#tGwvNy21diZE4}CQKJ*2s4FQ!fauVFjtr-%oi323x!3(VquA}R9Ge~7gh)>g;m08
zVU4g>SSPF(HV7MqO~Phji?CJLCTtgW2s?#c!fs)Yuvge8>=zCQ2ZckzVd02yR5&J_
z6V3}4gp0x@;j(Z=xGLNbZVI=A+rnMpo^W4yAUqTv36F&*!c*ay@LYHyycAvuuZ1_l
zTj8DXUict<6g~+*grCAM;kVF7Ylq<>;<%9|iz-Bw
zqAF3fs76#PsuR_V8bpnvCQ-AfMbs*46Sa#vM4h58QMaf^)GO)}^@|2XgQ6kPuxLay
zDjE}wizY;qqAAg|Xht+EniI{77DS7pCDF2IMYJkf6RnFjM4O^5(Y9zuv@6;Z?TZdX
zhoU3VvFJo}DmoLLi!MZ$qASt0=tguax)a@t9z>6#C(*O$Mf56q6TOQ*M4zHB(YMG)
z>?`&Y`-=m_f#M)>usB2RjuXd=6U2$)ByqAhRh%YH7iWmG
z#M$B;ajv*PTqrIQ7mG{8rQ$Mixwt}HDXtP%i)+NS;yQ7?xIx?~ZW1?(Tg0v6HgUVS
zL)U(fsy&tT7{UtPbZe=Yr5|F!*V=hyD9y-^W%uj^kS|N8#x
zL;euEua}>fzgK`)pqG#Q5&3VqKh!JCE66KEJ__~<_lg2UdPR6ec}05#|7-BSMtFtD
z|K+IAE6*$6tH7(sE7z;otHG<(tIVt1tHP_&t4f~L=C=Sly}INT
z|9Hs0L+%;&8uc3Yn)I6Xn)RBOKa9WVwdA$zwIXM$UTa?KUK?_@>9ysx?X@FkyIy-<
z`(6ifcIb8Fb?kK_uW;ja>-8*ueertqdh&Ypdhn9}$C>GP7
zzP*Be3;r$Sx6t3hehdFC>Yow6ef>+yZ>hhf{g(b)#&4tlUjJLeZ}
zuJVrhXSH{YcdK{1cZYYEcenST_mKCn_o(-Y_nG&(_m%gxcb)f*cboUC_lI}A_m}s#
zw~r)Tk|-&c1WKa*86*joL`tG0(UKTRtRzknFG-LjNs=Wgl2l2WBwdmr3I5kiNtWd3
zx8vWkB{`B@NuDHMQYa~s6iZ4ZrIIp9n505dDXEfFOKK#wl6pylq*2l&>5xoHrXyi!0resU9E!mOmO7L(qS_)7z&LDFDph%{6hCJmQHNF$|D(!+m=mc~e9rE$`DX@WFS
znj}q@rbyGI8ParVrZiicBh8iON%N&q|16LeN{gh$(h_N@v`ktqt&mnqQzcc>l>fOu
z)zTVit+Y;BFKv)ENt>lD(pG7kv|ZXE?Ub(kBkG@B(r#(5v`^YE9gq%6homFYQR#%V
zMKUR!lFmxkrF+r?>7jI5IwPHzE=rfA%hDC;s`NSXn@23e!5N!BcDm9@({WSz1u
zS+}f5)+_6i^~(ljL$YDnfNVrIDjSoH%O+%#vMJfLtVA{^JCmMEFQk{!E9tfLMtUo~
zlio`oq|ee<>6`Rj`XT+4eo4QjJ~CgKpUhttAPbZQ$%17evM^bMEK<&*WHGWhS-dPk
zmMB~LN0KaAmLf})rODD|nX)WdwyaZ9qjJfT*7-BVLj^VjLBGk;9Ssy=hS-|v^6%h|hohFgH#?<8+RAOQk|BtR0Pf}(<=qDGC1
zii(Pgii#Q)6%{ooDk|#yzQ6b4?losl%_>*;e4pp}eV^yOXJM9qPkgEgg^L&Et;O6$ZtFFqsUXKOCh%+_44nX9={bG7Df&Hb9ing=!aY97`+s#&giR&%T7
zdCiNO$2Chem6~eJO3j^`mo=+3uWN49JgIqF^R{NK=6%hFnvXS~YBtqwuH8~QT)XY>
zj@9~V{k4JGU~NmSc(&FmwXxdv+C*(}
z+I(%HcBr;kyRCM#c6;q)?f%*WwFhfUwTEgC*B+@Y*B-4s^moT=r)tOLx?Q!qYbR>=
zh;@5w_tl=LJz0CIcDnX%?VZ|6?Y-LjwTrb6YH!!_GwI&dzOFs-!#B0!3R$~e`(Awg
zSo^kiO~m&8?2}NRYrS=Qe-^E4t-Jb7XI-qWy)IstsOzfhu1nT+)TQghC*9R$>oRry
zb?xFaD*1Vexw?Gaa9yEpsIFMIscv)Kmb#I;y`pZbsM%3BTF1{@eDH%^b(11?ux_^Q
zK;8bjQr+RY6Llx+PS>5Po2ffjced_K-G#b~b(iWc*Ui;kk?vQ&QCIG+o2c7USE;*O
zcdu@-?tb0lx+irH>mJlSty`{pChDKpy{LO5yxZ#&^}Y3-^~w64`tJHveYQSbAFuDI
z&(!zV57b|-8?4XO57igzH`Nchyu
zL-mL2OZ5lqkJcZnKQ6LU^(X4D)?cfiufJZuP=BNTX8oP|+x55VEA@Bl?}_~V`o;RC
z`p5N8>X+-E)<3I%UjL%LTE9~Nvi?>5YCX4fz5YYJx53x&x&Bjqpdr}M(r~#h)DUh+
zHgq>+8hRR14SfyihHOKB!(hWeL%yNVFw{_N*wnDOVYp#y!$iYq!&t-4hTRQ28um2o
zYuME=-mtf!+%VFxt>I|HWW)Z30}TfoN)3lZwerIe@js7swPB@U*Dqc+h`-s~K>g_l
zPk!?02Pb|Qv9w#1AHHq)(BQLpEhE2)T3RhJOPl3m!>5K8OUM$oD3;F+LCbdQg|A*W
z#4QO+ho#ffW$Cu`SW=cgOWKmL^jZcigO;2nZz))YEFb=9(Xz?1*|NnlY#9-b+bpA&
z?Uo&ut%AobyDYmc6N2_y_E{z^`vo1elq`oVhb>1eWy>+kl;xyl+H%G+V>xfRV7X|y
zWSO&Ewai;?SQad|Efvc>%cA9>Wy$iy^3?Lo^1`xWd1ZNRd1HBNS+l&ee6W19e75)+
z1C1?>p+==K+8AqWZ%j0HHYOW;8dHtw#%$w2W3I8#SZv(XxTSHVaa-f|#+{Ahjk_E7
zH12EM-*~X`P~(xtqm9QKPc)utJl%M<@m%AD#*2-Y8?Q88YrNigv+-8royNP3_ZuHH
zK5Bg2__Xm^3-n6@EPt(4p{Y?j(4mBNVI@)x+=|t11rqfMl
zo6a>|Xu8;Rx#>#NwWjM$H=AxX-D$epbie6A)1#)xO;4MiHN9wBX?oT4y6J7xyQU9K
zADccm`I-aGEzRNPNONm*TXVd*qq(cOyScZyuQ}7)-#plyZysvi)V!s6q&
ztlidLYo9e^?Y9nE^VT8jChHdKh;^HF&KpvTe3)5j1QYv2C?&6Lq7u?Y14Z
zonq~nZQQoYwp-AIZI5lQZJ(e?+kV>t+d)Ak+acRw+Yv!!+fmyw+i~GCWjkRzX*(ro
z+IHG@#&%ZFjP0E5yzPRho3&lEU9w#kJ?3mzY*%g9L~P!6-FCxvQ_zC#mhHCfj-ZO|
zuI--fzNlNYJ+M8rJrcBJdu)4Rdn&Tawr95IwijYMtF{%}OWP|ETeZEmy|KL&v}Su}
zdvE(7Xoq#Db<8?$-EM9F)w=DY?UU`ZhJ!_q@o|BbHd$+yE-YfDcd!IdR&j`xe`|ShvK|wit
z-d?Z|2`bt***Dv_2pYDJ*tgoZ2^zI;x9_m;6f|ZZx9_s=7BpesW8Z7vCuq{X-+sV;
zP*BN!$bQ&