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",
"version": "0.0.0-internal",
"private": true,
"type": "module",
"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() {
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");
const {
import { Plugin, TFile, TFolder } from "obsidian";
import {
showFilePicker,
addFileMenuItems,
addFolderMenuItems,
} = require("./file-actions");
const {
} from "./file-actions.js";
import {
patchSettingsModal,
unpatchSettingsModal,
} = require("./settings/inject");
const pluginRegistry = require("./plugin-registry");
const { initStatusBar } = require("./status-bar");
const { WorkspacePickerModal } = require("./workspace-picker");
const { startDemoGuards, stopDemoGuards } = require("./demo-guards");
} from "./settings/inject.js";
import * as pluginRegistry from "./plugin-registry.js";
import { initStatusBar } from "./status-bar.js";
import { WorkspacePickerModal } from "./workspace-picker.js";
import { startDemoGuards, stopDemoGuards } from "./demo-guards.js";
class IgnisBridgePlugin extends Plugin {
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;
}
module.exports = { refresh, isIgnisPlugin, addId, getKnownIds };
export { refresh, isIgnisPlugin, addId, getKnownIds };

View File

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

View File

@@ -1,14 +1,14 @@
const generalTab = require("./general-tab");
const serverPluginsTab = require("./server-plugins-tab");
const { createNavEl, createTab, createGroup } = require("./settings-ui");
const {
import * as generalTab from "./general-tab.js";
import * as serverPluginsTab from "./server-plugins-tab.js";
import { createNavEl, createTab, createGroup } from "./settings-ui.js";
import {
allIgnisNavEls,
setupPluginTabs,
reconcilePluginTabs,
hideIgnisFromCommunityPlugins,
restoreCommunityPlugins,
clearOwnedPluginIds,
} = require("./plugin-tabs");
} from "./plugin-tabs.js";
function removeExistingIgnisGroups(tabHeadersEl) {
const groups = tabHeadersEl.querySelectorAll(".vertical-tab-header-group");
@@ -139,4 +139,4 @@ function unpatchSettingsModal(plugin) {
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).
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");
const { findGroupByTitle } = require("./settings-ui");
const { isIgnisPlugin } = require("../plugin-registry");
import { setIcon } from "obsidian";
import { findGroupByTitle } from "./settings-ui.js";
import { isIgnisPlugin } from "../plugin-registry.js";
// 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.
@@ -232,7 +232,7 @@ function clearOwnedPluginIds() {
ownedPluginIds.clear();
}
module.exports = {
export {
allIgnisNavEls,
setupPluginTabs,
reconcilePluginTabs,

View File

@@ -1,5 +1,5 @@
const { Setting, Notice } = require("obsidian");
const { reconcilePluginTabs } = require("./plugin-tabs");
import { Setting, Notice } from "obsidian";
import { reconcilePluginTabs } from "./plugin-tabs.js";
function getVaultId() {
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) {
const nav = document.createElement("div");
@@ -86,4 +86,4 @@ function findGroupByTitle(tabHeadersEl, title) {
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);
}
module.exports = { initStatusBar };
export { initStatusBar };

View File

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

View File

@@ -1,8 +1,5 @@
import { describe, it, expect } from "vitest";
import { createRequire } from "module";
const require = createRequire(import.meta.url);
const { stripBuildMetadata, isNewer } = require("./version.js");
import { stripBuildMetadata, isNewer } from "./version.js";
describe("isNewer", () => {
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 {
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()
.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 IgnisBridgePlugin = mod.default || mod;
const bridge = new IgnisBridgePlugin(window.app, BRIDGE_MANIFEST);