ソースを参照

ref: remove index.js import for dialogs

Sv443 2 ヶ月 前
コミット
19cbceec0f

+ 3 - 3
src/components/ExImDialog.ts

@@ -11,8 +11,7 @@ import "./ExImDialog.css";
 // - [ ] Still allow downloading the `exportDataSpecial`
 // - [ ] Checkboxes on both sides to configure which DataStore instances to import/export to/from
 
-type ExImDialogOpts =
-  & Omit<BytmDialogOptions, "renderHeader" | "renderBody" | "renderFooter">
+export type ExImDialogOpts = Omit<BytmDialogOptions, "renderHeader" | "renderBody" | "renderFooter">
   & {
     /** Title of the dialog */
     title: StringGen;
@@ -26,7 +25,8 @@ type ExImDialogOpts =
     exportData: StringGen;
     /** Optional variant of the data, used for special cases like when shift-clicking the copy button */
     exportDataSpecial?: StringGen;
-  };
+  }
+  & Partial<Pick<BytmDialogOptions, "renderHeader" | "renderBody" | "renderFooter">>;
 
 //#region class
 

+ 0 - 10
src/dialogs/index.ts

@@ -1,10 +0,0 @@
-import "./dialogs.css";
-
-export * from "./autoLike.js";
-export * from "./changelog.js";
-export * from "./featConfig.js";
-export * from "./featHelp.js";
-export * from "./pluginList.js";
-export * from "./prompt.js";
-export * from "./versionNotif.js";
-export * from "./welcome.js";

+ 4 - 2
src/features/index.ts

@@ -1,3 +1,4 @@
+import { consumeStringGen, type StringGen } from "@sv443-network/userutils";
 import { formatNumber, getLocale, getPreferredLocale, getResourceUrl, reloadTab, resourceAsString, t, tp } from "../utils/index.js";
 import { clearLyricsCache, getLyricsCache } from "./lyricsCache.js";
 import { doVersionCheck } from "./versionCheck.js";
@@ -5,11 +6,12 @@ import { getFeature, promptResetConfig } from "../config.js";
 import { FeatureInfo, type ColorLightnessPref, type ResourceKey, type SiteSelection, type SiteSelectionOrNone } from "../types.js";
 import { emitSiteEvent } from "../siteEvents.js";
 import langMapping from "../../assets/locales.json" with { type: "json" };
-import { getAutoLikeDialog, getPluginListDialog, showPrompt } from "../dialogs/index.js";
 import { showIconToast } from "../components/index.js";
 import { mode } from "../constants.js";
 import { getStoreSerializer } from "../serializer.js";
-import { consumeStringGen, type StringGen } from "@sv443-network/userutils";
+import { getAutoLikeDialog } from "../dialogs/autoLike.js";
+import { showPrompt } from "../dialogs/prompt.js";
+import { getPluginListDialog } from "../dialogs/pluginList.js";
 
 //#region re-exports
 

+ 1 - 1
src/features/input.ts

@@ -8,7 +8,7 @@ import { getFeature } from "../config.js";
 import { compressionFormat } from "../constants.js";
 import { addSelectorListener } from "../observers.js";
 import { createLongBtn, createRipple, showIconToast } from "../components/index.js";
-import { getAutoLikeDialog } from "../dialogs/index.js";
+import { getAutoLikeDialog } from "../dialogs/autoLike.js";
 import "./input.css";
 
 export const inputIgnoreTagNames = ["INPUT", "TEXTAREA", "SELECT", "BUTTON", "A"];

+ 3 - 2
src/features/versionCheck.ts

@@ -1,8 +1,9 @@
+import { compare } from "compare-versions";
 import { scriptInfo } from "../constants.js";
 import { getFeature } from "../config.js";
 import { error, info, sendRequest, t } from "../utils/index.js";
-import { getVersionNotifDialog, showPrompt } from "../dialogs/index.js";
-import { compare } from "compare-versions";
+import { getVersionNotifDialog } from "../dialogs/versionNotif.js";
+import { showPrompt } from "../dialogs/prompt.js";
 import { LogLevel } from "../types.js";
 
 const releaseURL = "https://github.com/Sv443/BetterYTM/releases/latest";

+ 4 - 3
src/index.ts

@@ -6,7 +6,10 @@ import { dbg, error, getDomain, info, getSessionId, log, setLogLevel, initTransl
 import { initSiteEvents } from "./siteEvents.js";
 import { emitInterface, initInterface, initPlugins } from "./interface.js";
 import { initObservers, addSelectorListener, globservers } from "./observers.js";
-import { getWelcomeDialog, showPrompt } from "./dialogs/index.js";
+import { downloadData, getStoreSerializer } from "./serializer.js";
+import { MarkdownDialog } from "./components/index.js";
+import { getWelcomeDialog } from "./dialogs/welcome.js";
+import { showPrompt } from "./dialogs/prompt.js";
 import type { FeatureConfig } from "./types.js";
 import {
   // layout
@@ -35,8 +38,6 @@ import {
   // menu
   addConfigMenuOptionYT, addConfigMenuOptionYTM,
 } from "./features/index.js";
-import { downloadData, getStoreSerializer } from "./serializer.js";
-import { MarkdownDialog } from "./components/index.js";
 
 //#region cns. watermark
 

+ 3 - 1
src/menu/menu_old.ts

@@ -4,10 +4,12 @@ import { buildNumber, compressionFormat, host, mode, scriptInfo } from "../const
 import { featInfo } from "../features/index.js";
 import { error, getResourceUrl, info, log, resourceAsString, getLocale, hasKey, initTranslations, setLocale, t, arrayWithSeparators, tp, type TrKey, onInteraction, getDomain, copyToClipboard, warn, compressionSupported, tryToDecompressAndParse, setInnerHtml, type TrLocale, tl, reloadTab } from "../utils/index.js";
 import { emitSiteEvent, siteEvents } from "../siteEvents.js";
-import { getChangelogDialog, getFeatHelpDialog, showPrompt } from "../dialogs/index.js";
 import type { FeatureCategory, FeatureKey, FeatureConfig, HotkeyObj, FeatureInfo } from "../types.js";
 import { BytmDialog, ExImDialog, createHotkeyInput, createToggleInput, openDialogs, setCurrentDialogId } from "../components/index.js";
 import { emitInterface } from "../interface.js";
+import { showPrompt } from "../dialogs/prompt.js";
+import { getFeatHelpDialog } from "../dialogs/featHelp.js";
+import { getChangelogDialog } from "../dialogs/changelog.js";
 import pkg from "../../package.json" with { type: "json" };
 import localeMapping from "../../assets/locales.json" with { type: "json" };
 import "./menu_old.css";

+ 10 - 4
src/serializer.ts

@@ -12,13 +12,19 @@ import packageJson from "../package.json" with { type: "json" };
 /** Central serializer for all data stores */
 let serializer: DataStoreSerializer | undefined;
 
+/** Array of all data stores that are included in the DataStoreSerializer instance */
+export const allSerializerStores = [
+  configStore,
+  autoLikeStore,
+];
+
+/** Array of IDs of all stores included in the DataStoreSerializer instance */
+export const allSerializerStoresIds = allSerializerStores.map(store => store.id);
+
 /** Returns the serializer for all data stores */
 export function getStoreSerializer() {
   if(!serializer) {
-    serializer = new DataStoreSerializer([
-      configStore,
-      autoLikeStore,
-    ], {
+    serializer = new DataStoreSerializer(allSerializerStores, {
       addChecksum: true,
       ensureIntegrity: true,
     });

+ 3 - 1
src/utils/translations.ts

@@ -46,7 +46,9 @@ export async function initTranslations(locale: TrLocale) {
       ...transFile,
     };
 
-    tr.addTranslations(locale, translations);
+    const { meta: { authors: _authors, ...meta }, ...trans } = translations;
+
+    tr.addTranslations(locale, { ...meta, ...trans });
 
     info(`Loaded translations for locale '${locale}'`);
   }