mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Speed-up extensions loading. Add tracking of response times
This commit is contained in:
21
package-lock.json
generated
21
package-lock.json
generated
@ -36,6 +36,7 @@
|
||||
"png-chunk-text": "^1.0.0",
|
||||
"png-chunks-encode": "^1.0.0",
|
||||
"png-chunks-extract": "^1.0.0",
|
||||
"response-time": "^2.3.2",
|
||||
"rimraf": "^3.0.2",
|
||||
"sanitize-filename": "^1.6.3",
|
||||
"sentencepiece-js": "^1.1.0",
|
||||
@ -2695,6 +2696,26 @@
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/response-time": {
|
||||
"version": "2.3.2",
|
||||
"resolved": "https://registry.npmjs.org/response-time/-/response-time-2.3.2.tgz",
|
||||
"integrity": "sha512-MUIDaDQf+CVqflfTdQ5yam+aYCkXj1PY8fjlPDQ6ppxJlmgZb864pHtA750mayywNg8tx4rS7qH9JXd/OF+3gw==",
|
||||
"dependencies": {
|
||||
"depd": "~1.1.0",
|
||||
"on-headers": "~1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/response-time/node_modules/depd": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
|
||||
"integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/reusify": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
|
||||
|
@ -27,6 +27,7 @@
|
||||
"png-chunk-text": "^1.0.0",
|
||||
"png-chunks-encode": "^1.0.0",
|
||||
"png-chunks-extract": "^1.0.0",
|
||||
"response-time": "^2.3.2",
|
||||
"rimraf": "^3.0.2",
|
||||
"sanitize-filename": "^1.6.3",
|
||||
"sentencepiece-js": "^1.1.0",
|
||||
|
@ -108,19 +108,29 @@ async function disableExtension(name) {
|
||||
|
||||
async function getManifests(names) {
|
||||
const obj = {};
|
||||
for (const name of names) {
|
||||
const response = await fetch(`/scripts/extensions/${name}/manifest.json`);
|
||||
const promises = [];
|
||||
|
||||
for (const name of names) {
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
fetch(`/scripts/extensions/${name}/manifest.json`).then(async response => {
|
||||
if (response.ok) {
|
||||
const json = await response.json();
|
||||
obj[name] = json;
|
||||
resolve();
|
||||
}
|
||||
}).catch(err => reject() && console.log('Could not load manifest.json for ' + name, err));
|
||||
});
|
||||
|
||||
promises.push(promise);
|
||||
}
|
||||
|
||||
await Promise.allSettled(promises);
|
||||
return obj;
|
||||
}
|
||||
|
||||
async function activateExtensions() {
|
||||
const extensions = Object.entries(manifests).sort((a, b) => a[1].loading_order - b[1].loading_order);
|
||||
const promises = [];
|
||||
|
||||
for (let entry of extensions) {
|
||||
const name = entry[0];
|
||||
@ -138,9 +148,11 @@ async function activateExtensions() {
|
||||
const li = document.createElement('li');
|
||||
|
||||
if (!isDisabled) {
|
||||
await addExtensionScript(name, manifest);
|
||||
await addExtensionStyle(name, manifest);
|
||||
activeExtensions.add(name);
|
||||
const promise = Promise.all([addExtensionScript(name, manifest), addExtensionStyle(name, manifest)]);
|
||||
promise
|
||||
.then(() => activeExtensions.add(name))
|
||||
.catch(err => console.log('Could not activate extension: ' + name, err));
|
||||
promises.push(promise);
|
||||
}
|
||||
else {
|
||||
li.classList.add('disabled');
|
||||
@ -157,6 +169,8 @@ async function activateExtensions() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await Promise.allSettled(promises);
|
||||
}
|
||||
|
||||
async function connectClickHandler() {
|
||||
@ -353,7 +367,7 @@ async function runGenerationInterceptors(chat) {
|
||||
if (typeof window[interceptorKey] === 'function') {
|
||||
try {
|
||||
await window[interceptorKey](chat);
|
||||
} catch(e) {
|
||||
} catch (e) {
|
||||
console.error(`Failed running interceptor for ${manifest.display_name}`, e);
|
||||
}
|
||||
}
|
||||
|
@ -5,9 +5,12 @@ import {
|
||||
eventSource,
|
||||
event_types,
|
||||
} from "../../../script.js";
|
||||
import { debounce } from "../../utils.js";
|
||||
|
||||
const MODULE_NAME = "Objective"
|
||||
|
||||
const saveMetadataDebounced = debounce(async () => await context.saveMetadata(), 1000);
|
||||
|
||||
let globalObjective = ""
|
||||
let globalTasks = []
|
||||
let currentChatId = ""
|
||||
@ -201,7 +204,7 @@ function saveState() {
|
||||
hideTasks: $('#objective-hide-tasks').prop('checked'),
|
||||
}
|
||||
|
||||
context.saveMetadata();
|
||||
saveMetadataDebounced();
|
||||
}
|
||||
|
||||
// Dump core state
|
||||
|
@ -28,7 +28,9 @@ process.chdir(directory);
|
||||
const express = require('express');
|
||||
const compression = require('compression');
|
||||
const app = express();
|
||||
const responseTime = require('response-time')
|
||||
app.use(compression());
|
||||
app.use(responseTime());
|
||||
|
||||
const fs = require('fs');
|
||||
const readline = require('readline');
|
||||
|
Reference in New Issue
Block a user