Add typing for QR API global

4fa7de9c93655a361182cb325e564fc10e4ff475

Cohee <18619528+Cohee1207@users.noreply.github.com>

4 files changed, +8 -5Showing whitespace changes
public/global.d.ts+2 -0
@@ -1,6 +1,7 @@
1import libs from './lib';1import libs from './lib';
2import getContext from './scripts/st-context';2import getContext from './scripts/st-context';
3import { power_user } from './scripts/power-user';3import { power_user } from './scripts/power-user';
4import { QuickReplyApi } from './scripts/extensions/quick-reply/api/QuickReplyApi';
45
5declare global {6declare global {
6 // Custom types7 // Custom types
@@ -13,6 +14,7 @@ declare global {
1314
14 declare var pdfjsLib;15 declare var pdfjsLib;
15 declare var ePub;16 declare var ePub;
17 declare var quickReplyApi: QuickReplyApi;
1618
17 declare var SillyTavern: {19 declare var SillyTavern: {
18 getContext(): typeof getContext;20 getContext(): typeof getContext;
public/scripts/extensions/quick-reply/index.js+1 -1
@@ -181,7 +181,7 @@ const init = async () => {
181181
182 eventSource.on(event_types.APP_READY, async()=>await finalizeInit());182 eventSource.on(event_types.APP_READY, async()=>await finalizeInit());
183183
184 window['quickReplyApi'] = quickReplyApi;184 globalThis.quickReplyApi = quickReplyApi;
185};185};
186const finalizeInit = async () => {186const finalizeInit = async () => {
187 debug('executing startup');187 debug('executing startup');
public/scripts/slash-commands/SlashCommandParser.js+3 -1
@@ -516,12 +516,14 @@ export class SlashCommandParser {
516 ?? []516 ?? []
517 ;517 ;
518 try {518 try {
519 const qrApi = (await import('../extensions/quick-reply/index.js')).quickReplyApi;519 if ('quickReplyApi' in globalThis) {
520 const qrApi = globalThis.quickReplyApi;
520 options.push(...qrApi.listSets()521 options.push(...qrApi.listSets()
521 .map(set=>qrApi.listQuickReplies(set).map(qr=>`${set}.${qr}`))522 .map(set=>qrApi.listQuickReplies(set).map(qr=>`${set}.${qr}`))
522 .flat()523 .flat()
523 .map(qr=>new SlashCommandQuickReplyAutoCompleteOption(qr)),524 .map(qr=>new SlashCommandQuickReplyAutoCompleteOption(qr)),
524 );525 );
526 }
525 } catch { /* empty */ }527 } catch { /* empty */ }
526 const result = new AutoCompleteNameResult(528 const result = new AutoCompleteNameResult(
527 executor.unnamedArgumentList[0]?.value.toString(),529 executor.unnamedArgumentList[0]?.value.toString(),
public/scripts/world-info.js+2 -3
@@ -3433,9 +3433,8 @@ function getAutomationIdCallback(data) {
3433 }3433 }
3434 }3434 }
34353435
3436 if ('quickReplyApi' in window) {3436 if ('quickReplyApi' in globalThis) {
3437 // @ts-ignore3437 for (const automationId of globalThis.quickReplyApi.listAutomationIds()) {
3438 for (const automationId of window['quickReplyApi'].listAutomationIds()) {
3439 ids.add(String(automationId));3438 ids.add(String(automationId));
3440 }3439 }
3441 }3440 }