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() { | ||||
|   | ||||
| @@ -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