73 lines
2.5 KiB
JavaScript
73 lines
2.5 KiB
JavaScript
import { installRequire } from "./require.js";
|
|
import { installGlobals } from "./globals.js";
|
|
import { installCssOverrides } from "./css-overrides.js";
|
|
import { initialize, getBootstrapVirtualPlugins } from "./init.js";
|
|
import { fsShim } from "./fs/index.js";
|
|
import { registerUI } from "./ui-registry.js";
|
|
import {
|
|
extractObsidianModule,
|
|
loadVirtualPlugin,
|
|
reportLoadFailure,
|
|
watchPluginToggles,
|
|
} from "./virtual-plugin-loader.js";
|
|
import { wsClient } from "./ws-client.js";
|
|
import { installIgnisApi } from "./ignis-api.js";
|
|
|
|
// __IGNIS_VERSION__ is replaced at build time from package.json.
|
|
window.__ignis = { version: __IGNIS_VERSION__ };
|
|
window.__ignis_registerUI = registerUI;
|
|
|
|
installIgnisApi(wsClient);
|
|
|
|
const BRIDGE_MANIFEST = {
|
|
id: "ignis-bridge",
|
|
name: "Ignis Bridge",
|
|
version: __IGNIS_VERSION__,
|
|
minAppVersion: "1.12.4",
|
|
description:
|
|
"Additional Ignis specific functionality and ignis plugin management.",
|
|
author: "Nystik",
|
|
authorUrl: "https://github.com/Nystik-gh/ignis",
|
|
isDesktopOnly: false,
|
|
};
|
|
|
|
installGlobals(); // process, Buffer, window overrides (before require so Buffer is available)
|
|
installRequire(); // shim registry, window.require
|
|
installCssOverrides(); // browser-specific CSS fixes
|
|
|
|
// Set EmulateMobile flag for small viewports so Obsidian activates its mobile UI
|
|
if (window.innerWidth < 600) {
|
|
localStorage.setItem("EmulateMobile", "true");
|
|
} else {
|
|
localStorage.removeItem("EmulateMobile");
|
|
}
|
|
|
|
initialize(); // vault config, metadata cache, plugin prompt
|
|
|
|
// Connect the shared WebSocket after everything is initialized; watcher and live-toggle subscribers attach to the same client.
|
|
if (window.__currentVaultId) {
|
|
fsShim._watcherClient.connect(window.__currentVaultId);
|
|
watchPluginToggles(wsClient);
|
|
}
|
|
|
|
extractObsidianModule()
|
|
.then(async () => {
|
|
// Dynamic import so bridge's top-level require("obsidian") fires after installRequire + extractObsidianModule.
|
|
const mod = await import("@ignis/bridge");
|
|
const IgnisBridgePlugin = mod.default || mod;
|
|
const bridge = new IgnisBridgePlugin(window.app, BRIDGE_MANIFEST);
|
|
await bridge.onload();
|
|
console.log("[ignis] bridge loaded");
|
|
|
|
for (const vp of getBootstrapVirtualPlugins()) {
|
|
try {
|
|
await loadVirtualPlugin(vp);
|
|
console.log(`[ignis] virtual plugin loaded: ${vp.id}`);
|
|
} catch (e) {
|
|
reportLoadFailure(vp.id, e);
|
|
}
|
|
}
|
|
})
|
|
.catch((e) => console.error("[ignis] bridge load failed:", e));
|
|
|
|
console.log("[ignis] Shim loader initialized");
|