convert bridge to ESM

This commit is contained in:
Nystik
2026-06-06 19:28:17 +02:00
parent 04be97e48c
commit a51b2d3ffa
16 changed files with 43 additions and 45 deletions

View File

@@ -2,5 +2,6 @@
"name": "@ignis/bridge", "name": "@ignis/bridge",
"version": "0.0.0-internal", "version": "0.0.0-internal",
"private": true, "private": true,
"type": "module",
"main": "src/main.js" "main": "src/main.js"
} }

View File

@@ -51,4 +51,4 @@ function stopDemoGuards() {
} }
} }
module.exports = { startDemoGuards, stopDemoGuards, isDemoMode }; export { startDemoGuards, stopDemoGuards, isDemoMode };

View File

@@ -1,4 +1,4 @@
const { Notice, TFile, TFolder } = require("obsidian"); import { Notice, TFile, TFolder } from "obsidian";
function getVaultId() { function getVaultId() {
return window.__currentVaultId || ""; return window.__currentVaultId || "";
@@ -92,4 +92,4 @@ function addFolderMenuItems(menu, folder, app) {
}); });
} }
module.exports = { showFilePicker, addFileMenuItems, addFolderMenuItems }; export { showFilePicker, addFileMenuItems, addFolderMenuItems };

View File

@@ -1,17 +1,17 @@
const { Plugin, TFile, TFolder } = require("obsidian"); import { Plugin, TFile, TFolder } from "obsidian";
const { import {
showFilePicker, showFilePicker,
addFileMenuItems, addFileMenuItems,
addFolderMenuItems, addFolderMenuItems,
} = require("./file-actions"); } from "./file-actions.js";
const { import {
patchSettingsModal, patchSettingsModal,
unpatchSettingsModal, unpatchSettingsModal,
} = require("./settings/inject"); } from "./settings/inject.js";
const pluginRegistry = require("./plugin-registry"); import * as pluginRegistry from "./plugin-registry.js";
const { initStatusBar } = require("./status-bar"); import { initStatusBar } from "./status-bar.js";
const { WorkspacePickerModal } = require("./workspace-picker"); import { WorkspacePickerModal } from "./workspace-picker.js";
const { startDemoGuards, stopDemoGuards } = require("./demo-guards"); import { startDemoGuards, stopDemoGuards } from "./demo-guards.js";
class IgnisBridgePlugin extends Plugin { class IgnisBridgePlugin extends Plugin {
async onload() { async onload() {
@@ -65,4 +65,4 @@ class IgnisBridgePlugin extends Plugin {
} }
} }
module.exports = IgnisBridgePlugin; export default IgnisBridgePlugin;

View File

@@ -34,4 +34,4 @@ function getKnownIds() {
return knownIds; return knownIds;
} }
module.exports = { refresh, isIgnisPlugin, addId, getKnownIds }; export { refresh, isIgnisPlugin, addId, getKnownIds };

View File

@@ -1,7 +1,7 @@
const { Setting, Notice } = require("obsidian"); import { Setting, Notice } from "obsidian";
const { isDemoMode } = require("../demo-guards"); import { isDemoMode } from "../demo-guards.js";
const { stripBuildMetadata, isNewer } = require("../util/version"); import { stripBuildMetadata, isNewer } from "../util/version.js";
const { ListEditorModal } = require("./list-editor-modal"); import { ListEditorModal } from "./list-editor-modal.js";
const GITHUB_URL = "https://github.com/Nystik-gh/ignis"; const GITHUB_URL = "https://github.com/Nystik-gh/ignis";
const GITHUB_API_LATEST = const GITHUB_API_LATEST =
@@ -353,4 +353,4 @@ function listField(containerEl, { name, desc, value, key, app, modal }) {
return setting; return setting;
} }
module.exports = { display }; export { display };

View File

@@ -1,14 +1,14 @@
const generalTab = require("./general-tab"); import * as generalTab from "./general-tab.js";
const serverPluginsTab = require("./server-plugins-tab"); import * as serverPluginsTab from "./server-plugins-tab.js";
const { createNavEl, createTab, createGroup } = require("./settings-ui"); import { createNavEl, createTab, createGroup } from "./settings-ui.js";
const { import {
allIgnisNavEls, allIgnisNavEls,
setupPluginTabs, setupPluginTabs,
reconcilePluginTabs, reconcilePluginTabs,
hideIgnisFromCommunityPlugins, hideIgnisFromCommunityPlugins,
restoreCommunityPlugins, restoreCommunityPlugins,
clearOwnedPluginIds, clearOwnedPluginIds,
} = require("./plugin-tabs"); } from "./plugin-tabs.js";
function removeExistingIgnisGroups(tabHeadersEl) { function removeExistingIgnisGroups(tabHeadersEl) {
const groups = tabHeadersEl.querySelectorAll(".vertical-tab-header-group"); const groups = tabHeadersEl.querySelectorAll(".vertical-tab-header-group");
@@ -139,4 +139,4 @@ function unpatchSettingsModal(plugin) {
clearOwnedPluginIds(); clearOwnedPluginIds();
} }
module.exports = { patchSettingsModal, unpatchSettingsModal, reconcilePluginTabs }; export { patchSettingsModal, unpatchSettingsModal, reconcilePluginTabs };

View File

@@ -1,4 +1,4 @@
const { Modal, Setting, Notice } = require("obsidian"); import { Modal, Setting, Notice } from "obsidian";
// Modal editor for a list of string entries (the proxy host allowlist). // Modal editor for a list of string entries (the proxy host allowlist).
class ListEditorModal extends Modal { class ListEditorModal extends Modal {
@@ -131,4 +131,4 @@ class ListEditorModal extends Modal {
} }
} }
module.exports = { ListEditorModal }; export { ListEditorModal };

View File

@@ -1,6 +1,6 @@
const { setIcon } = require("obsidian"); import { setIcon } from "obsidian";
const { findGroupByTitle } = require("./settings-ui"); import { findGroupByTitle } from "./settings-ui.js";
const { isIgnisPlugin } = require("../plugin-registry"); import { isIgnisPlugin } from "../plugin-registry.js";
// All ignis-managed nav elements (both Ignis group and Ignis Core Plugins group). // All ignis-managed nav elements (both Ignis group and Ignis Core Plugins group).
// Shared with inject.js so the openTab patch can manage is-active across all of them. // Shared with inject.js so the openTab patch can manage is-active across all of them.
@@ -232,7 +232,7 @@ function clearOwnedPluginIds() {
ownedPluginIds.clear(); ownedPluginIds.clear();
} }
module.exports = { export {
allIgnisNavEls, allIgnisNavEls,
setupPluginTabs, setupPluginTabs,
reconcilePluginTabs, reconcilePluginTabs,

View File

@@ -1,5 +1,5 @@
const { Setting, Notice } = require("obsidian"); import { Setting, Notice } from "obsidian";
const { reconcilePluginTabs } = require("./plugin-tabs"); import { reconcilePluginTabs } from "./plugin-tabs.js";
function getVaultId() { function getVaultId() {
return window.__currentVaultId || ""; return window.__currentVaultId || "";
@@ -94,4 +94,4 @@ function display(containerEl, app) {
}); });
} }
module.exports = { display }; export { display };

View File

@@ -1,4 +1,4 @@
const { setIcon } = require("obsidian"); import { setIcon } from "obsidian";
function createNavEl(tab, setting) { function createNavEl(tab, setting) {
const nav = document.createElement("div"); const nav = document.createElement("div");
@@ -86,4 +86,4 @@ function findGroupByTitle(tabHeadersEl, title) {
return null; return null;
} }
module.exports = { createNavEl, createTab, createGroup, findGroupByTitle }; export { createNavEl, createTab, createGroup, findGroupByTitle };

View File

@@ -32,4 +32,4 @@ function initStatusBar(plugin) {
return ws.onStateChange(render); return ws.onStateChange(render);
} }
module.exports = { initStatusBar }; export { initStatusBar };

View File

@@ -36,4 +36,4 @@ function isNewer(latest, current) {
return false; return false;
} }
module.exports = { stripBuildMetadata, parseSemver, isNewer }; export { stripBuildMetadata, parseSemver, isNewer };

View File

@@ -1,8 +1,5 @@
import { describe, it, expect } from "vitest"; import { describe, it, expect } from "vitest";
import { createRequire } from "module"; import { stripBuildMetadata, isNewer } from "./version.js";
const require = createRequire(import.meta.url);
const { stripBuildMetadata, isNewer } = require("./version.js");
describe("isNewer", () => { describe("isNewer", () => {
it("is true when latest is strictly newer", () => { it("is true when latest is strictly newer", () => {

View File

@@ -1,4 +1,4 @@
const { FuzzySuggestModal } = require("obsidian"); import { FuzzySuggestModal } from "obsidian";
class WorkspacePickerModal extends FuzzySuggestModal { class WorkspacePickerModal extends FuzzySuggestModal {
constructor(app) { constructor(app) {
@@ -29,4 +29,4 @@ class WorkspacePickerModal extends FuzzySuggestModal {
} }
} }
module.exports = { WorkspacePickerModal }; export { WorkspacePickerModal };

View File

@@ -52,7 +52,7 @@ if (window.__currentVaultId) {
extractObsidianModule() extractObsidianModule()
.then(async () => { .then(async () => {
// Dynamic import so bridge's top-level require("obsidian") fires after installRequire + extractObsidianModule. // Dynamic import so the bridge's top-level obsidian import resolves after installRequire + extractObsidianModule.
const mod = await import("@ignis/bridge"); const mod = await import("@ignis/bridge");
const IgnisBridgePlugin = mod.default || mod; const IgnisBridgePlugin = mod.default || mod;
const bridge = new IgnisBridgePlugin(window.app, BRIDGE_MANIFEST); const bridge = new IgnisBridgePlugin(window.app, BRIDGE_MANIFEST);