obsidian-dev-utils
Version:
This is the collection of useful functions that you can use for your Obsidian plugin development
110 lines (107 loc) • 12.9 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){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}__name(name,"name");function extractDefault(module){return module&&module.__esModule&&"default"in module?module.default:module}__name(extractDefault,"extractDefault");function requirePatched(id){const module=originalRequire?.(id);if(module){return extractDefault(module)}if(id==="process"||id==="node:process"){console.error(`Module not found: ${id}. Fake process object is returned instead.`);return globalThis.process}console.error(`Module not found: ${id}. Empty object is returned instead.`);return{}}__name(requirePatched,"requirePatched")})();
;
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 Loop_exports = {};
__export(Loop_exports, {
loop: () => loop
});
module.exports = __toCommonJS(Loop_exports);
var import_obsidian = require('obsidian');
var import_AbortController = require('../AbortController.cjs');
var import_Async = require('../Async.cjs');
var import_Debug = require('../Debug.cjs');
var import_Error = require('../Error.cjs');
var import_Function = require('../Function.cjs');
async function loop(options) {
const DEFAULT_OPTIONS = {
abortSignal: (0, import_AbortController.abortSignalNever)(),
buildNoticeMessage() {
throw new Error("buildNoticeMessage is required");
},
items: [],
// eslint-disable-next-line no-magic-numbers
noticeMinTimeoutInMilliseconds: 2e3,
processItem: import_Function.noop,
progressBarTitle: "",
shouldContinueOnError: true,
shouldShowProgressBar: true,
// eslint-disable-next-line no-magic-numbers
uiUpdateThresholdInMilliseconds: 100
};
const fullOptions = {
...DEFAULT_OPTIONS,
...options
};
const stackTrace = (0, import_Error.getStackTrace)(1);
const items = fullOptions.items;
let iterationCount = 0;
let notice = null;
if (fullOptions.shouldShowProgressBar) {
notice = new import_obsidian.Notice("", 0);
}
const noticeMinTimeoutPromise = sleep(fullOptions.noticeMinTimeoutInMilliseconds);
const progressBarEl = createEl("progress");
progressBarEl.max = items.length;
if (fullOptions.shouldShowProgressBar) {
const fragment = createFragment();
fragment.createDiv({ text: fullOptions.progressBarTitle });
fragment.appendChild(progressBarEl);
notice?.setMessage(fragment);
}
let lastUIUpdateTimestamp = performance.now();
for (const item of items) {
if (fullOptions.abortSignal.aborted) {
notice?.hide();
return;
}
iterationCount++;
const iterationStr = `# ${String(iterationCount)} / ${String(items.length)}`;
const message = fullOptions.buildNoticeMessage(item, iterationStr);
if (!fullOptions.shouldShowProgressBar) {
notice?.setMessage(message);
}
(0, import_Debug.getLibDebugger)("Loop")(message);
try {
if (performance.now() - lastUIUpdateTimestamp > fullOptions.uiUpdateThresholdInMilliseconds) {
await (0, import_Async.requestAnimationFrameAsync)();
lastUIUpdateTimestamp = performance.now();
}
await fullOptions.processItem(item);
} catch (error) {
console.error("Error processing item", item);
if (!fullOptions.shouldContinueOnError) {
notice?.hide();
throw new import_Error.CustomStackTraceError("loop failed", stackTrace, error);
}
(0, import_Error.emitAsyncErrorEvent)(new import_Error.CustomStackTraceError(import_Error.ASYNC_WRAPPER_ERROR_MESSAGE, stackTrace, error));
}
progressBarEl.value++;
}
await noticeMinTimeoutPromise;
notice?.hide();
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
loop
});
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0xvb3AudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGxvb3BpbmcgaW4gT2JzaWRpYW4uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgTm90aWNlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbE5ldmVyIH0gZnJvbSAnLi4vQWJvcnRDb250cm9sbGVyLnRzJztcbmltcG9ydCB7IHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jIH0gZnJvbSAnLi4vQXN5bmMudHMnO1xuaW1wb3J0IHsgZ2V0TGliRGVidWdnZXIgfSBmcm9tICcuLi9EZWJ1Zy50cyc7XG5pbXBvcnQge1xuICBBU1lOQ19XUkFQUEVSX0VSUk9SX01FU1NBR0UsXG4gIEN1c3RvbVN0YWNrVHJhY2VFcnJvcixcbiAgZW1pdEFzeW5jRXJyb3JFdmVudCxcbiAgZ2V0U3RhY2tUcmFjZVxufSBmcm9tICcuLi9FcnJvci50cyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi4vRnVuY3Rpb24udHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBsb29wfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb29wT3B0aW9uczxUPiB7XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBhYm9ydCBzaWduYWwgdG8gY2FuY2VsIHRoZSBsb29wLlxuICAgKi9cbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcblxuICAvKipcbiAgICogQnVpbGQgYSBub3RpY2UgbWVzc2FnZSBmb3IgZWFjaCBpdGVtLlxuICAgKlxuICAgKiBAcGFyYW0gaXRlbSAtIFRoZSBjdXJyZW50IGl0ZW0uXG4gICAqIEBwYXJhbSBpdGVyYXRpb25TdHIgLSBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyBBIHN0cmluZyB0byBkaXNwbGF5IGluIHRoZSBub3RpY2UuXG4gICAqL1xuICBidWlsZE5vdGljZU1lc3NhZ2UoaXRlbTogVCwgaXRlcmF0aW9uU3RyOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEl0ZW1zIHRvIGxvb3Agb3Zlci5cbiAgICovXG4gIGl0ZW1zOiBUW107XG5cbiAgLyoqXG4gICAqIEEgbWluaW11bSB0aW1lb3V0IGZvciB0aGUgbm90aWNlLlxuICAgKi9cbiAgbm90aWNlTWluVGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGVhY2ggaXRlbS5cbiAgICpcbiAgICogQHBhcmFtIGl0ZW0gLSBUaGUgY3VycmVudCBpdGVtLlxuICAgKi9cbiAgcHJvY2Vzc0l0ZW0oaXRlbTogVCk6IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIEEgdGl0bGUgb2YgdGhlIHByb2dyZXNzIGJhci5cbiAgICovXG4gIHByb2dyZXNzQmFyVGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY29udGludWUgdGhlIGxvb3Agb24gZXJyb3IuXG4gICAqL1xuICBzaG91bGRDb250aW51ZU9uRXJyb3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSBwcm9ncmVzcyBiYXIuXG4gICAqL1xuICBzaG91bGRTaG93UHJvZ3Jlc3NCYXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIHRocmVzaG9sZCBmb3IgdGhlIFVJIHVwZGF0ZS5cbiAgICovXG4gIHVpVXBkYXRlVGhyZXNob2xkSW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogTG9vcHMgb3ZlciBhIGxpc3Qgb2YgaXRlbXMgYW5kIHByb2Nlc3NlcyBlYWNoIGl0ZW0uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGxvb3AuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb29wPFQ+KG9wdGlvbnM6IExvb3BPcHRpb25zPFQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogUmVxdWlyZWQ8TG9vcE9wdGlvbnM8VD4+ID0ge1xuICAgIGFib3J0U2lnbmFsOiBhYm9ydFNpZ25hbE5ldmVyKCksXG4gICAgYnVpbGROb3RpY2VNZXNzYWdlKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdidWlsZE5vdGljZU1lc3NhZ2UgaXMgcmVxdWlyZWQnKTtcbiAgICB9LFxuICAgIGl0ZW1zOiBbXSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIG5vdGljZU1pblRpbWVvdXRJbk1pbGxpc2Vjb25kczogMjAwMCxcbiAgICBwcm9jZXNzSXRlbTogbm9vcCxcbiAgICBwcm9ncmVzc0JhclRpdGxlOiAnJyxcbiAgICBzaG91bGRDb250aW51ZU9uRXJyb3I6IHRydWUsXG4gICAgc2hvdWxkU2hvd1Byb2dyZXNzQmFyOiB0cnVlLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgdWlVcGRhdGVUaHJlc2hvbGRJbk1pbGxpc2Vjb25kczogMTAwXG4gIH07XG5cbiAgY29uc3QgZnVsbE9wdGlvbnM6IFJlcXVpcmVkPExvb3BPcHRpb25zPFQ+PiA9IHtcbiAgICAuLi5ERUZBVUxUX09QVElPTlMsXG4gICAgLi4ub3B0aW9uc1xuICB9O1xuXG4gIGNvbnN0IHN0YWNrVHJhY2UgPSBnZXRTdGFja1RyYWNlKDEpO1xuXG4gIGNvbnN0IGl0ZW1zID0gZnVsbE9wdGlvbnMuaXRlbXM7XG4gIGxldCBpdGVyYXRpb25Db3VudCA9IDA7XG4gIGxldCBub3RpY2U6IE5vdGljZSB8IG51bGwgPSBudWxsO1xuICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkU2hvd1Byb2dyZXNzQmFyKSB7XG4gICAgbm90aWNlID0gbmV3IE5vdGljZSgnJywgMCk7XG4gIH1cbiAgY29uc3Qgbm90aWNlTWluVGltZW91dFByb21pc2UgPSBzbGVlcChmdWxsT3B0aW9ucy5ub3RpY2VNaW5UaW1lb3V0SW5NaWxsaXNlY29uZHMpO1xuICBjb25zdCBwcm9ncmVzc0JhckVsID0gY3JlYXRlRWwoJ3Byb2dyZXNzJyk7XG4gIHByb2dyZXNzQmFyRWwubWF4ID0gaXRlbXMubGVuZ3RoO1xuICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkU2hvd1Byb2dyZXNzQmFyKSB7XG4gICAgY29uc3QgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudCgpO1xuICAgIGZyYWdtZW50LmNyZWF0ZURpdih7IHRleHQ6IGZ1bGxPcHRpb25zLnByb2dyZXNzQmFyVGl0bGUgfSk7XG4gICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQocHJvZ3Jlc3NCYXJFbCk7XG4gICAgbm90aWNlPy5zZXRNZXNzYWdlKGZyYWdtZW50KTtcbiAgfVxuXG4gIGxldCBsYXN0VUlVcGRhdGVUaW1lc3RhbXAgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICBpZiAoZnVsbE9wdGlvbnMuYWJvcnRTaWduYWwuYWJvcnRlZCkge1xuICAgICAgbm90aWNlPy5oaWRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGl0ZXJhdGlvbkNvdW50Kys7XG4gICAgY29uc3QgaXRlcmF0aW9uU3RyID0gYCMgJHtTdHJpbmcoaXRlcmF0aW9uQ291bnQpfSAvICR7U3RyaW5nKGl0ZW1zLmxlbmd0aCl9YDtcbiAgICBjb25zdCBtZXNzYWdlID0gZnVsbE9wdGlvbnMuYnVpbGROb3RpY2VNZXNzYWdlKGl0ZW0sIGl0ZXJhdGlvblN0cik7XG4gICAgaWYgKCFmdWxsT3B0aW9ucy5zaG91bGRTaG93UHJvZ3Jlc3NCYXIpIHtcbiAgICAgIG5vdGljZT8uc2V0TWVzc2FnZShtZXNzYWdlKTtcbiAgICB9XG4gICAgZ2V0TGliRGVidWdnZXIoJ0xvb3AnKShtZXNzYWdlKTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAocGVyZm9ybWFuY2Uubm93KCkgLSBsYXN0VUlVcGRhdGVUaW1lc3RhbXAgPiBmdWxsT3B0aW9ucy51aVVwZGF0ZVRocmVzaG9sZEluTWlsbGlzZWNvbmRzKSB7XG4gICAgICAgIGF3YWl0IHJlcXVlc3RBbmltYXRpb25GcmFtZUFzeW5jKCk7XG4gICAgICAgIGxhc3RVSVVwZGF0ZVRpbWVzdGFtcCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgICAgfVxuICAgICAgYXdhaXQgZnVsbE9wdGlvbnMucHJvY2Vzc0l0ZW0oaXRlbSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHByb2Nlc3NpbmcgaXRlbScsIGl0ZW0pO1xuICAgICAgaWYgKCFmdWxsT3B0aW9ucy5zaG91bGRDb250aW51ZU9uRXJyb3IpIHtcbiAgICAgICAgbm90aWNlPy5oaWRlKCk7XG4gICAgICAgIHRocm93IG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3IoJ2xvb3AgZmFpbGVkJywgc3RhY2tUcmFjZSwgZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICBlbWl0QXN5bmNFcnJvckV2ZW50KG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3IoQVNZTkNfV1JBUFBFUl9FUlJPUl9NRVNTQUdFLCBzdGFja1RyYWNlLCBlcnJvcikpO1xuICAgIH1cbiAgICBwcm9ncmVzc0JhckVsLnZhbHVlKys7XG4gIH1cbiAgYXdhaXQgbm90aWNlTWluVGltZW91dFByb21pc2U7XG4gIG5vdGljZT8uaGlkZSgpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxzQkFBdUI7QUFFdkIsNkJBQWlDO0FBQ2pDLG1CQUEyQztBQUMzQyxtQkFBK0I7QUFDL0IsbUJBS087QUFDUCxzQkFBcUI7QUErRHJCLGVBQXNCLEtBQVEsU0FBd0M7QUFDcEUsUUFBTSxrQkFBNEM7QUFBQSxJQUNoRCxpQkFBYSx5Q0FBaUI7QUFBQSxJQUM5QixxQkFBcUI7QUFDbkIsWUFBTSxJQUFJLE1BQU0sZ0NBQWdDO0FBQUEsSUFDbEQ7QUFBQSxJQUNBLE9BQU8sQ0FBQztBQUFBO0FBQUEsSUFFUixnQ0FBZ0M7QUFBQSxJQUNoQyxhQUFhO0FBQUEsSUFDYixrQkFBa0I7QUFBQSxJQUNsQix1QkFBdUI7QUFBQSxJQUN2Qix1QkFBdUI7QUFBQTtBQUFBLElBRXZCLGlDQUFpQztBQUFBLEVBQ25DO0FBRUEsUUFBTSxjQUF3QztBQUFBLElBQzVDLEdBQUc7QUFBQSxJQUNILEdBQUc7QUFBQSxFQUNMO0FBRUEsUUFBTSxpQkFBYSw0QkFBYyxDQUFDO0FBRWxDLFFBQU0sUUFBUSxZQUFZO0FBQzFCLE1BQUksaUJBQWlCO0FBQ3JCLE1BQUksU0FBd0I7QUFDNUIsTUFBSSxZQUFZLHVCQUF1QjtBQUNyQyxhQUFTLElBQUksdUJBQU8sSUFBSSxDQUFDO0FBQUEsRUFDM0I7QUFDQSxRQUFNLDBCQUEwQixNQUFNLFlBQVksOEJBQThCO0FBQ2hGLFFBQU0sZ0JBQWdCLFNBQVMsVUFBVTtBQUN6QyxnQkFBYyxNQUFNLE1BQU07QUFDMUIsTUFBSSxZQUFZLHVCQUF1QjtBQUNyQyxVQUFNLFdBQVcsZUFBZTtBQUNoQyxhQUFTLFVBQVUsRUFBRSxNQUFNLFlBQVksaUJBQWlCLENBQUM7QUFDekQsYUFBUyxZQUFZLGFBQWE7QUFDbEMsWUFBUSxXQUFXLFFBQVE7QUFBQSxFQUM3QjtBQUVBLE1BQUksd0JBQXdCLFlBQVksSUFBSTtBQUU1QyxhQUFXLFFBQVEsT0FBTztBQUN4QixRQUFJLFlBQVksWUFBWSxTQUFTO0FBQ25DLGNBQVEsS0FBSztBQUNiO0FBQUEsSUFDRjtBQUNBO0FBQ0EsVUFBTSxlQUFlLEtBQUssT0FBTyxjQUFjLENBQUMsTUFBTSxPQUFPLE1BQU0sTUFBTSxDQUFDO0FBQzFFLFVBQU0sVUFBVSxZQUFZLG1CQUFtQixNQUFNLFlBQVk7QUFDakUsUUFBSSxDQUFDLFlBQVksdUJBQXVCO0FBQ3RDLGNBQVEsV0FBVyxPQUFPO0FBQUEsSUFDNUI7QUFDQSxxQ0FBZSxNQUFNLEVBQUUsT0FBTztBQUU5QixRQUFJO0FBQ0YsVUFBSSxZQUFZLElBQUksSUFBSSx3QkFBd0IsWUFBWSxpQ0FBaUM7QUFDM0Ysa0JBQU0seUNBQTJCO0FBQ2pDLGdDQUF3QixZQUFZLElBQUk7QUFBQSxNQUMxQztBQUNBLFlBQU0sWUFBWSxZQUFZLElBQUk7QUFBQSxJQUNwQyxTQUFTLE9BQU87QUFDZCxjQUFRLE1BQU0seUJBQXlCLElBQUk7QUFDM0MsVUFBSSxDQUFDLFlBQVksdUJBQXVCO0FBQ3RDLGdCQUFRLEtBQUs7QUFDYixjQUFNLElBQUksbUNBQXNCLGVBQWUsWUFBWSxLQUFLO0FBQUEsTUFDbEU7QUFFQSw0Q0FBb0IsSUFBSSxtQ0FBc0IsMENBQTZCLFlBQVksS0FBSyxDQUFDO0FBQUEsSUFDL0Y7QUFDQSxrQkFBYztBQUFBLEVBQ2hCO0FBQ0EsUUFBTTtBQUNOLFVBQVEsS0FBSztBQUNmOyIsCiAgIm5hbWVzIjogW10KfQo=