obsidian-dev-utils
Version:
This is the collection of useful functions that you can use for your Obsidian plugin development
207 lines (193 loc) • 14.3 kB
JavaScript
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
*/
(function initCjs() {
const globalThisRecord = globalThis;
globalThisRecord['__name'] ??= name;
const originalRequire = require;
if (originalRequire && !originalRequire.__isPatched) {
// eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
require = Object.assign(
(id) => requirePatched(id),
originalRequire,
{
__isPatched: true
}
);
}
const newFuncs = {
__extractDefault() {
return extractDefault;
},
process() {
const browserProcess = {
browser: true,
cwd() {
return '/';
},
env: {},
platform: 'android'
};
return browserProcess;
}
};
for (const key of Object.keys(newFuncs)) {
globalThisRecord[key] ??= newFuncs[key]?.();
}
function name(obj) {
return obj;
}
function extractDefault(module) {
return module && module.__esModule && 'default' in module ? module.default : module;
}
const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
'obsidian',
'@codemirror/autocomplete',
'@codemirror/collab',
'@codemirror/commands',
'@codemirror/language',
'@codemirror/lint',
'@codemirror/search',
'@codemirror/state',
'@codemirror/text',
'@codemirror/view',
'@lezer/common',
'@lezer/lr',
'@lezer/highlight'];
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
'@codemirror/closebrackets',
'@codemirror/comment',
'@codemirror/fold',
'@codemirror/gutter',
'@codemirror/highlight',
'@codemirror/history',
'@codemirror/matchbrackets',
'@codemirror/panel',
'@codemirror/rangeset',
'@codemirror/rectangular-selection',
'@codemirror/stream-parser',
'@codemirror/tooltip'];
function requirePatched(id) {
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
return originalRequire?.(id);
}
// eslint-disable-next-line @typescript-eslint/no-deprecated, @typescript-eslint/no-unnecessary-condition -- We need access to app here which might not be available yet.
if (globalThis?.app?.isMobile) {
if (id === 'process' || id === 'node:process') {
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
return globalThis.process;
}
} else {
const module = originalRequire?.(id);
if (module) {
return extractDefault(module);
}
}
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
return {};
}
})();
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var Backlink_exports = {};
__export(Backlink_exports, {
renderBacklinksTable: () => renderBacklinksTable,
renderDelayedBacklinks: () => renderDelayedBacklinks,
renderDelayedBacklinksForFolder: () => renderDelayedBacklinksForFolder
});
module.exports = __toCommonJS(Backlink_exports);
var import_Error = require('../Error.cjs');
var import_Callout = require('./Callout.cjs');
var import_Dataview = require('./Dataview.cjs');
var import_DataviewLink = require('./DataviewLink.cjs');
var import_FileSystem = require('./FileSystem.cjs');
var import_Link = require('./Link.cjs');
var import_MetadataCache = require('./MetadataCache.cjs');
async function renderBacklinksTable(dv, pathOrFiles) {
pathOrFiles ??= [];
const files = pathOrFiles.flatMap((abstractFileOrPath) => {
const abstractFile = (0, import_FileSystem.getAbstractFileOrNull)(dv.app, abstractFileOrPath);
if (!abstractFile) {
return [];
}
if ((0, import_FileSystem.isFile)(abstractFile)) {
return [abstractFile];
}
if (!(0, import_FileSystem.isFolder)(abstractFile)) {
throw new Error("Expected a folder");
}
return (0, import_FileSystem.getMarkdownFiles)(dv.app, abstractFile, true);
});
const backlinkRows = [];
for (const file of files) {
const link = (0, import_DataviewLink.fixTitle)(dv, file.path);
const backlinks = await (0, import_MetadataCache.getBacklinksForFileSafe)(dv.app, file);
const backlinkLinks = backlinks.keys().map((backLinkPath) => {
const markdownLink = (0, import_Link.generateMarkdownLink)({
app: dv.app,
sourcePathOrFile: dv.current().file.path,
targetPathOrFile: dv.app.metadataCache.getFirstLinkpathDest(backLinkPath, file.path) ?? (0, import_Error.throwExpression)(new Error("Link not found"))
});
return `${markdownLink} (${backLinkPath})`;
});
if (backlinkLinks.length) {
backlinkRows.push([link, backlinkLinks]);
}
}
await (0, import_Dataview.renderPaginatedTable)({
dv,
headers: ["Note", "Backlinks"],
rows: backlinkRows
});
}
function renderDelayedBacklinks(options) {
const {
dv,
files,
title = "Backlinks"
} = options;
(0, import_Callout.renderCallout)({
async contentProvider() {
await renderBacklinksTable(dv, files);
},
dv,
header: title
});
}
function renderDelayedBacklinksForFolder(options) {
const {
dv,
folder,
title = "Folder Backlinks"
} = options;
const folder2 = folder ?? dv.current().file.folder;
renderDelayedBacklinks({
dv,
files: (0, import_FileSystem.getMarkdownFiles)(dv.app, folder2, true),
title
});
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
renderBacklinksTable,
renderDelayedBacklinks,
renderDelayedBacklinksForFolder
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0JhY2tsaW5rLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIFByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggYmFja2xpbmtzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgVEZpbGUgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHtcbiAgRGF0YXZpZXdJbmxpbmVBcGksXG4gIExpbmtcbn0gZnJvbSAnLi9EYXRhdmlldy50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFBhdGhPckFic3RyYWN0RmlsZSxcbiAgUGF0aE9yRmlsZVxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyB0aHJvd0V4cHJlc3Npb24gfSBmcm9tICcuLi9FcnJvci50cyc7XG5pbXBvcnQgeyByZW5kZXJDYWxsb3V0IH0gZnJvbSAnLi9DYWxsb3V0LnRzJztcbmltcG9ydCB7IHJlbmRlclBhZ2luYXRlZFRhYmxlIH0gZnJvbSAnLi9EYXRhdmlldy50cyc7XG5pbXBvcnQgeyBmaXhUaXRsZSB9IGZyb20gJy4vRGF0YXZpZXdMaW5rLnRzJztcbmltcG9ydCB7XG4gIGdldEFic3RyYWN0RmlsZU9yTnVsbCxcbiAgZ2V0TWFya2Rvd25GaWxlcyxcbiAgaXNGaWxlLFxuICBpc0ZvbGRlclxufSBmcm9tICcuL0ZpbGVTeXN0ZW0udHMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVNYXJrZG93bkxpbmsgfSBmcm9tICcuL0xpbmsudHMnO1xuaW1wb3J0IHsgZ2V0QmFja2xpbmtzRm9yRmlsZVNhZmUgfSBmcm9tICcuL01ldGFkYXRhQ2FjaGUudHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZW5kZXJEZWxheWVkQmFja2xpbmtzRm9yRm9sZGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJEZWxheWVkQmFja2xpbmtzRm9yRm9sZGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0lubGluZUFwaX0gaW5zdGFuY2UuXG4gICAqL1xuICBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIEEgZm9sZGVyIHBhdGguIElmIG5vdCBwcm92aWRlZCwgdGhlIGN1cnJlbnQgZmlsZSdzIGZvbGRlciB3aWxsIGJlIHVzZWQuXG4gICAqL1xuICBmb2xkZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgZm9yIHRoZSByZW5kZXJlZCBiYWNrbGlua3MuIERlZmF1bHRzIHRvIFwiRm9sZGVyIEJhY2tsaW5rc1wiLlxuICAgKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIHJlbmRlckRlbGF5ZWRCYWNrbGlua3N9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlckRlbGF5ZWRCYWNrbGlua3NPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEge0BsaW5rIERhdGF2aWV3SW5saW5lQXBpfSBpbnN0YW5jZS5cbiAgICovXG4gIGR2OiBEYXRhdmlld0lubGluZUFwaTtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgUGF0aE9yRmlsZS5cbiAgICovXG4gIGZpbGVzOiBQYXRoT3JGaWxlW107XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgZm9yIHRoZSByZW5kZXJlZCBiYWNrbGlua3MuIERlZmF1bHRzIHRvIFwiQmFja2xpbmtzXCIuXG4gICAqL1xuICB0aXRsZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgYmFja2xpbmtzIHRhYmxlIHVzaW5nIHRoZSBwcm92aWRlZCBEYXRhdmlld0lubGluZUFwaSBhbmQgb3B0aW9uYWwgYXJyYXkgb2YgUGF0aE9yQWJzdHJhY3RGaWxlLlxuICpcbiAqIEBwYXJhbSBkdiAtIFRoZSBEYXRhdmlld0lubGluZUFwaSBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JGaWxlcyAtIEFuIG9wdGlvbmFsIGFycmF5IG9mIFBhdGhPckFic3RyYWN0RmlsZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYmFja2xpbmtzIHRhYmxlIGhhcyBiZWVuIHJlbmRlcmVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyQmFja2xpbmtzVGFibGUoZHY6IERhdGF2aWV3SW5saW5lQXBpLCBwYXRoT3JGaWxlcz86IFBhdGhPckFic3RyYWN0RmlsZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gIHBhdGhPckZpbGVzID8/PSBbXTtcbiAgY29uc3QgZmlsZXM6IFRGaWxlW10gPSBwYXRoT3JGaWxlcy5mbGF0TWFwKChhYnN0cmFjdEZpbGVPclBhdGgpID0+IHtcbiAgICBjb25zdCBhYnN0cmFjdEZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoZHYuYXBwLCBhYnN0cmFjdEZpbGVPclBhdGgpO1xuICAgIGlmICghYWJzdHJhY3RGaWxlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaWYgKGlzRmlsZShhYnN0cmFjdEZpbGUpKSB7XG4gICAgICByZXR1cm4gW2Fic3RyYWN0RmlsZV07XG4gICAgfVxuXG4gICAgaWYgKCFpc0ZvbGRlcihhYnN0cmFjdEZpbGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGEgZm9sZGVyJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldE1hcmtkb3duRmlsZXMoZHYuYXBwLCBhYnN0cmFjdEZpbGUsIHRydWUpO1xuICB9KTtcblxuICBjb25zdCBiYWNrbGlua1Jvd3M6IFtMaW5rLCBzdHJpbmdbXV1bXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGNvbnN0IGxpbmsgPSBmaXhUaXRsZShkdiwgZmlsZS5wYXRoKTtcbiAgICBjb25zdCBiYWNrbGlua3MgPSBhd2FpdCBnZXRCYWNrbGlua3NGb3JGaWxlU2FmZShkdi5hcHAsIGZpbGUpO1xuICAgIGNvbnN0IGJhY2tsaW5rTGlua3MgPSBiYWNrbGlua3Mua2V5cygpLm1hcCgoYmFja0xpbmtQYXRoKSA9PiB7XG4gICAgICBjb25zdCBtYXJrZG93bkxpbmsgPSBnZW5lcmF0ZU1hcmtkb3duTGluayh7XG4gICAgICAgIGFwcDogZHYuYXBwLFxuICAgICAgICBzb3VyY2VQYXRoT3JGaWxlOiBkdi5jdXJyZW50KCkuZmlsZS5wYXRoLFxuICAgICAgICB0YXJnZXRQYXRoT3JGaWxlOiBkdi5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdChiYWNrTGlua1BhdGgsIGZpbGUucGF0aCkgPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcignTGluayBub3QgZm91bmQnKSlcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYCR7bWFya2Rvd25MaW5rfSAoJHtiYWNrTGlua1BhdGh9KWA7XG4gICAgfSk7XG4gICAgaWYgKGJhY2tsaW5rTGlua3MubGVuZ3RoKSB7XG4gICAgICBiYWNrbGlua1Jvd3MucHVzaChbbGluaywgYmFja2xpbmtMaW5rc10pO1xuICAgIH1cbiAgfVxuXG4gIGF3YWl0IHJlbmRlclBhZ2luYXRlZFRhYmxlKHtcbiAgICBkdixcbiAgICBoZWFkZXJzOiBbJ05vdGUnLCAnQmFja2xpbmtzJ10sXG4gICAgcm93czogYmFja2xpbmtSb3dzXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgZGVsYXllZCBiYWNrbGlua3MuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgcmVuZGVyaW5nIGRlbGF5ZWQgYmFja2xpbmtzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyRGVsYXllZEJhY2tsaW5rcyhvcHRpb25zOiBSZW5kZXJEZWxheWVkQmFja2xpbmtzT3B0aW9ucyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgZmlsZXMsXG4gICAgdGl0bGUgPSAnQmFja2xpbmtzJ1xuICB9ID0gb3B0aW9ucztcbiAgcmVuZGVyQ2FsbG91dCh7XG4gICAgYXN5bmMgY29udGVudFByb3ZpZGVyKCkge1xuICAgICAgYXdhaXQgcmVuZGVyQmFja2xpbmtzVGFibGUoZHYsIGZpbGVzKTtcbiAgICB9LFxuICAgIGR2LFxuICAgIGhlYWRlcjogdGl0bGVcbiAgfSk7XG59XG5cbi8qKlxuICogUmVuZGVycyBkZWxheWVkIGJhY2tsaW5rcyBmb3IgYSBzcGVjaWZpYyBmb2xkZXIuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgcmVuZGVyaW5nIGRlbGF5ZWQgYmFja2xpbmtzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyRGVsYXllZEJhY2tsaW5rc0ZvckZvbGRlcihvcHRpb25zOiBSZW5kZXJEZWxheWVkQmFja2xpbmtzRm9yRm9sZGVyT3B0aW9ucyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgZHYsXG4gICAgZm9sZGVyLFxuICAgIHRpdGxlID0gJ0ZvbGRlciBCYWNrbGlua3MnXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBmb2xkZXIyID0gZm9sZGVyID8/IGR2LmN1cnJlbnQoKS5maWxlLmZvbGRlcjtcbiAgcmVuZGVyRGVsYXllZEJhY2tsaW5rcyh7XG4gICAgZHYsXG4gICAgZmlsZXM6IGdldE1hcmtkb3duRmlsZXMoZHYuYXBwLCBmb2xkZXIyLCB0cnVlKSxcbiAgICB0aXRsZVxuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlCQSxtQkFBZ0M7QUFDaEMscUJBQThCO0FBQzlCLHNCQUFxQztBQUNyQywwQkFBeUI7QUFDekIsd0JBS087QUFDUCxrQkFBcUM7QUFDckMsMkJBQXdDO0FBaUR4QyxlQUFzQixxQkFBcUIsSUFBdUIsYUFBbUQ7QUFDbkgsa0JBQWdCLENBQUM7QUFDakIsUUFBTSxRQUFpQixZQUFZLFFBQVEsQ0FBQyx1QkFBdUI7QUFDakUsVUFBTSxtQkFBZSx5Q0FBc0IsR0FBRyxLQUFLLGtCQUFrQjtBQUNyRSxRQUFJLENBQUMsY0FBYztBQUNqQixhQUFPLENBQUM7QUFBQSxJQUNWO0FBRUEsWUFBSSwwQkFBTyxZQUFZLEdBQUc7QUFDeEIsYUFBTyxDQUFDLFlBQVk7QUFBQSxJQUN0QjtBQUVBLFFBQUksS0FBQyw0QkFBUyxZQUFZLEdBQUc7QUFDM0IsWUFBTSxJQUFJLE1BQU0sbUJBQW1CO0FBQUEsSUFDckM7QUFFQSxlQUFPLG9DQUFpQixHQUFHLEtBQUssY0FBYyxJQUFJO0FBQUEsRUFDcEQsQ0FBQztBQUVELFFBQU0sZUFBbUMsQ0FBQztBQUUxQyxhQUFXLFFBQVEsT0FBTztBQUN4QixVQUFNLFdBQU8sOEJBQVMsSUFBSSxLQUFLLElBQUk7QUFDbkMsVUFBTSxZQUFZLFVBQU0sOENBQXdCLEdBQUcsS0FBSyxJQUFJO0FBQzVELFVBQU0sZ0JBQWdCLFVBQVUsS0FBSyxFQUFFLElBQUksQ0FBQyxpQkFBaUI7QUFDM0QsWUFBTSxtQkFBZSxrQ0FBcUI7QUFBQSxRQUN4QyxLQUFLLEdBQUc7QUFBQSxRQUNSLGtCQUFrQixHQUFHLFFBQVEsRUFBRSxLQUFLO0FBQUEsUUFDcEMsa0JBQWtCLEdBQUcsSUFBSSxjQUFjLHFCQUFxQixjQUFjLEtBQUssSUFBSSxTQUFLLDhCQUFnQixJQUFJLE1BQU0sZ0JBQWdCLENBQUM7QUFBQSxNQUNySSxDQUFDO0FBRUQsYUFBTyxHQUFHLFlBQVksS0FBSyxZQUFZO0FBQUEsSUFDekMsQ0FBQztBQUNELFFBQUksY0FBYyxRQUFRO0FBQ3hCLG1CQUFhLEtBQUssQ0FBQyxNQUFNLGFBQWEsQ0FBQztBQUFBLElBQ3pDO0FBQUEsRUFDRjtBQUVBLFlBQU0sc0NBQXFCO0FBQUEsSUFDekI7QUFBQSxJQUNBLFNBQVMsQ0FBQyxRQUFRLFdBQVc7QUFBQSxJQUM3QixNQUFNO0FBQUEsRUFDUixDQUFDO0FBQ0g7QUFPTyxTQUFTLHVCQUF1QixTQUE4QztBQUNuRixRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBLFFBQVE7QUFBQSxFQUNWLElBQUk7QUFDSixvQ0FBYztBQUFBLElBQ1osTUFBTSxrQkFBa0I7QUFDdEIsWUFBTSxxQkFBcUIsSUFBSSxLQUFLO0FBQUEsSUFDdEM7QUFBQSxJQUNBO0FBQUEsSUFDQSxRQUFRO0FBQUEsRUFDVixDQUFDO0FBQ0g7QUFPTyxTQUFTLGdDQUFnQyxTQUF1RDtBQUNyRyxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBLFFBQVE7QUFBQSxFQUNWLElBQUk7QUFDSixRQUFNLFVBQVUsVUFBVSxHQUFHLFFBQVEsRUFBRSxLQUFLO0FBQzVDLHlCQUF1QjtBQUFBLElBQ3JCO0FBQUEsSUFDQSxXQUFPLG9DQUFpQixHQUFHLEtBQUssU0FBUyxJQUFJO0FBQUEsSUFDN0M7QUFBQSxFQUNGLENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFtdCn0K