obsidian-dev-utils
Version:
This is the collection of useful functions that you can use for your Obsidian plugin development
100 lines (96 loc) • 11.8 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 initEsm() {
if (globalThis.process) {
return;
}
const browserProcess = {
browser: true,
cwd() {
return '/';
},
env: {},
platform: 'android'
};
globalThis.process = browserProcess;
})();
import {
abortSignalAny,
abortSignalNever
} from "../AbortController.mjs";
import {
addErrorHandler,
invokeAsyncSafely
} from "../Async.mjs";
import { getStackTrace } from "../Error.mjs";
import { noop } from "../Function.mjs";
import { getObsidianDevUtilsState } from "./App.mjs";
import { runWithTimeoutNotice } from "./AsyncWithNotice.mjs";
import { t } from "./i18n/i18n.mjs";
import { invokeAsyncAndLog } from "./Logger.mjs";
function addToQueue(options) {
const stackTrace = options.stackTrace ?? getStackTrace(1);
invokeAsyncSafely(() => addToQueueAndWait(options), stackTrace);
}
async function addToQueueAndWait(options) {
const abortSignal = options.abortSignal ?? abortSignalNever();
abortSignal.throwIfAborted();
const DEFAULT_TIMEOUT_IN_MILLISECONDS = 6e4;
const timeoutInMilliseconds = options.timeoutInMilliseconds ?? DEFAULT_TIMEOUT_IN_MILLISECONDS;
const stackTrace = options.stackTrace ?? getStackTrace(1);
const operationName = options.operationName ?? "";
const queue = getQueue(options.app).value;
queue.items.push({
abortSignal,
operationFn: options.operationFn,
operationName,
shouldShowTimeoutNotice: options.shouldShowTimeoutNotice ?? true,
stackTrace,
timeoutInMilliseconds
});
queue.promise = queue.promise.then(() => processNextQueueItem(options.app));
await queue.promise;
}
async function flushQueue(app) {
await addToQueueAndWait({
app,
operationFn: noop,
operationName: t(($) => $.obsidianDevUtils.queue.flushQueue)
});
}
function getQueue(app) {
return getObsidianDevUtilsState(app, "queue", { items: [], promise: Promise.resolve() });
}
async function processNextQueueItem(app) {
const queue = getQueue(app).value;
const item = queue.items[0];
if (!item) {
return;
}
await addErrorHandler(
() => runWithTimeoutNotice({
context: { queuedFn: item.operationFn },
async operationFn(abortSignal) {
await invokeAsyncAndLog(
item.operationName || processNextQueueItem.name,
item.operationFn,
abortSignalAny(abortSignal, item.abortSignal),
item.stackTrace
);
},
operationName: item.operationName,
shouldShowTimeoutNotice: item.shouldShowTimeoutNotice,
stackTrace: item.stackTrace,
timeoutInMilliseconds: item.timeoutInMilliseconds
})
);
queue.items.shift();
}
export {
addToQueue,
addToQueueAndWait,
flushQueue
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1F1ZXVlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBlbnF1ZXVpbmcgYW5kIHByb2Nlc3NpbmcgZnVuY3Rpb25zIGluIE9ic2lkaWFuLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHR5cGUgeyBWYWx1ZVdyYXBwZXIgfSBmcm9tICcuL0FwcC50cyc7XG5cbmltcG9ydCB7XG4gIGFib3J0U2lnbmFsQW55LFxuICBhYm9ydFNpZ25hbE5ldmVyXG59IGZyb20gJy4uL0Fib3J0Q29udHJvbGxlci50cyc7XG5pbXBvcnQge1xuICBhZGRFcnJvckhhbmRsZXIsXG4gIGludm9rZUFzeW5jU2FmZWx5XG59IGZyb20gJy4uL0FzeW5jLnRzJztcbmltcG9ydCB7IGdldFN0YWNrVHJhY2UgfSBmcm9tICcuLi9FcnJvci50cyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi4vRnVuY3Rpb24udHMnO1xuaW1wb3J0IHsgZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlIH0gZnJvbSAnLi9BcHAudHMnO1xuaW1wb3J0IHsgcnVuV2l0aFRpbWVvdXROb3RpY2UgfSBmcm9tICcuL0FzeW5jV2l0aE5vdGljZS50cyc7XG5pbXBvcnQgeyB0IH0gZnJvbSAnLi9pMThuL2kxOG4udHMnO1xuaW1wb3J0IHsgaW52b2tlQXN5bmNBbmRMb2cgfSBmcm9tICcuL0xvZ2dlci50cyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIHtAbGluayBhZGRUb1F1ZXVlQW5kV2FpdH0gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWRkVG9RdWV1ZUFuZFdhaXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGFib3J0IHNpZ25hbC5cbiAgICovXG4gIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWw7XG5cbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdG8gYWRkLlxuICAgKi9cbiAgb3BlcmF0aW9uRm46IChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIG5hbWUgb2YgdGhlIG9wZXJhdGlvbi5cbiAgICovXG4gIG9wZXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHRpbWVvdXQgbm90aWNlLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIHNob3VsZFNob3dUaW1lb3V0Tm90aWNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgc3RhY2sgdHJhY2UuXG4gICAqL1xuICBzdGFja1RyYWNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuXG4gICAqL1xuICB0aW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIHtAbGluayBhZGRUb1F1ZXVlfSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRUb1F1ZXVlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBhYm9ydCBzaWduYWwuXG4gICAqL1xuICBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIGFkZC5cbiAgICovXG4gIG9wZXJhdGlvbkZuOiAoYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBuYW1lIG9mIHRoZSBvcGVyYXRpb24uXG4gICAqL1xuICBvcGVyYXRpb25OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSB0aW1lb3V0IG5vdGljZS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICBzaG91bGRTaG93VGltZW91dE5vdGljZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHN0YWNrIHRyYWNlLlxuICAgKi9cbiAgc3RhY2tUcmFjZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgdGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUXVldWUge1xuICBpdGVtczogUXVldWVJdGVtW107XG4gIHByb21pc2U6IFByb21pc2U8dm9pZD47XG59XG5cbmludGVyZmFjZSBRdWV1ZUl0ZW0ge1xuICBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWw7XG4gIG9wZXJhdGlvbkZuKHRoaXM6IHZvaWQsIGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCk6IFByb21pc2FibGU8dm9pZD47XG4gIG9wZXJhdGlvbk5hbWU6IHN0cmluZztcbiAgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2U6IGJvb2xlYW47XG4gIHN0YWNrVHJhY2U6IHN0cmluZztcbiAgdGltZW91dEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogQWRkcyBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIHByZXZpb3VzIGZ1bmN0aW9uIGNvbXBsZXRlcy5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRUb1F1ZXVlKG9wdGlvbnM6IEFkZFRvUXVldWVPcHRpb25zKTogdm9pZCB7XG4gIGNvbnN0IHN0YWNrVHJhY2UgPSBvcHRpb25zLnN0YWNrVHJhY2UgPz8gZ2V0U3RhY2tUcmFjZSgxKTtcbiAgaW52b2tlQXN5bmNTYWZlbHkoKCkgPT4gYWRkVG9RdWV1ZUFuZFdhaXQob3B0aW9ucyksIHN0YWNrVHJhY2UpO1xufVxuXG4vKipcbiAqIEFkZHMgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIGFmdGVyIHRoZSBwcmV2aW91cyBmdW5jdGlvbiBjb21wbGV0ZXMgYW5kIHJldHVybnMgYSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmdW5jdGlvbiBjb21wbGV0ZXMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWRkVG9RdWV1ZUFuZFdhaXQob3B0aW9uczogQWRkVG9RdWV1ZUFuZFdhaXRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGFib3J0U2lnbmFsID0gb3B0aW9ucy5hYm9ydFNpZ25hbCA/PyBhYm9ydFNpZ25hbE5ldmVyKCk7XG4gIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgY29uc3QgREVGQVVMVF9USU1FT1VUX0lOX01JTExJU0VDT05EUyA9IDYwMDAwO1xuICBjb25zdCB0aW1lb3V0SW5NaWxsaXNlY29uZHMgPSBvcHRpb25zLnRpbWVvdXRJbk1pbGxpc2Vjb25kcyA/PyBERUZBVUxUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTO1xuICBjb25zdCBzdGFja1RyYWNlID0gb3B0aW9ucy5zdGFja1RyYWNlID8/IGdldFN0YWNrVHJhY2UoMSk7XG4gIGNvbnN0IG9wZXJhdGlvbk5hbWUgPSBvcHRpb25zLm9wZXJhdGlvbk5hbWUgPz8gJyc7XG4gIGNvbnN0IHF1ZXVlID0gZ2V0UXVldWUob3B0aW9ucy5hcHApLnZhbHVlO1xuICBxdWV1ZS5pdGVtcy5wdXNoKHtcbiAgICBhYm9ydFNpZ25hbCxcbiAgICBvcGVyYXRpb25Gbjogb3B0aW9ucy5vcGVyYXRpb25GbixcbiAgICBvcGVyYXRpb25OYW1lLFxuICAgIHNob3VsZFNob3dUaW1lb3V0Tm90aWNlOiBvcHRpb25zLnNob3VsZFNob3dUaW1lb3V0Tm90aWNlID8/IHRydWUsXG4gICAgc3RhY2tUcmFjZSxcbiAgICB0aW1lb3V0SW5NaWxsaXNlY29uZHNcbiAgfSk7XG4gIHF1ZXVlLnByb21pc2UgPSBxdWV1ZS5wcm9taXNlLnRoZW4oKCkgPT4gcHJvY2Vzc05leHRRdWV1ZUl0ZW0ob3B0aW9ucy5hcHApKTtcbiAgYXdhaXQgcXVldWUucHJvbWlzZTtcbn1cblxuLyoqXG4gKiBGbHVzaGVzIHRoZSBxdWV1ZTtcbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmx1c2hRdWV1ZShhcHA6IEFwcCk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBhZGRUb1F1ZXVlQW5kV2FpdCh7XG4gICAgYXBwLFxuICAgIG9wZXJhdGlvbkZuOiBub29wLFxuICAgIG9wZXJhdGlvbk5hbWU6IHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5xdWV1ZS5mbHVzaFF1ZXVlKVxuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0UXVldWUoYXBwOiBBcHApOiBWYWx1ZVdyYXBwZXI8UXVldWU+IHtcbiAgcmV0dXJuIGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZShhcHAsICdxdWV1ZScsIHsgaXRlbXM6IFtdLCBwcm9taXNlOiBQcm9taXNlLnJlc29sdmUoKSB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc05leHRRdWV1ZUl0ZW0oYXBwOiBBcHApOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcXVldWUgPSBnZXRRdWV1ZShhcHApLnZhbHVlO1xuICBjb25zdCBpdGVtID0gcXVldWUuaXRlbXNbMF07XG4gIGlmICghaXRlbSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IGFkZEVycm9ySGFuZGxlcigoKSA9PlxuICAgIHJ1bldpdGhUaW1lb3V0Tm90aWNlKHtcbiAgICAgIGNvbnRleHQ6IHsgcXVldWVkRm46IGl0ZW0ub3BlcmF0aW9uRm4gfSxcbiAgICAgIGFzeW5jIG9wZXJhdGlvbkZuKGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCBpbnZva2VBc3luY0FuZExvZyhcbiAgICAgICAgICBpdGVtLm9wZXJhdGlvbk5hbWUgfHwgcHJvY2Vzc05leHRRdWV1ZUl0ZW0ubmFtZSxcbiAgICAgICAgICBpdGVtLm9wZXJhdGlvbkZuLFxuICAgICAgICAgIGFib3J0U2lnbmFsQW55KGFib3J0U2lnbmFsLCBpdGVtLmFib3J0U2lnbmFsKSxcbiAgICAgICAgICBpdGVtLnN0YWNrVHJhY2VcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBvcGVyYXRpb25OYW1lOiBpdGVtLm9wZXJhdGlvbk5hbWUsXG4gICAgICBzaG91bGRTaG93VGltZW91dE5vdGljZTogaXRlbS5zaG91bGRTaG93VGltZW91dE5vdGljZSxcbiAgICAgIHN0YWNrVHJhY2U6IGl0ZW0uc3RhY2tUcmFjZSxcbiAgICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogaXRlbS50aW1lb3V0SW5NaWxsaXNlY29uZHNcbiAgICB9KVxuICApO1xuICBxdWV1ZS5pdGVtcy5zaGlmdCgpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV0E7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMscUJBQXFCO0FBQzlCLFNBQVMsWUFBWTtBQUNyQixTQUFTLGdDQUFnQztBQUN6QyxTQUFTLDRCQUE0QjtBQUNyQyxTQUFTLFNBQVM7QUFDbEIsU0FBUyx5QkFBeUI7QUFxRzNCLFNBQVMsV0FBVyxTQUFrQztBQUMzRCxRQUFNLGFBQWEsUUFBUSxjQUFjLGNBQWMsQ0FBQztBQUN4RCxvQkFBa0IsTUFBTSxrQkFBa0IsT0FBTyxHQUFHLFVBQVU7QUFDaEU7QUFPQSxlQUFzQixrQkFBa0IsU0FBa0Q7QUFDeEYsUUFBTSxjQUFjLFFBQVEsZUFBZSxpQkFBaUI7QUFDNUQsY0FBWSxlQUFlO0FBRTNCLFFBQU0sa0NBQWtDO0FBQ3hDLFFBQU0sd0JBQXdCLFFBQVEseUJBQXlCO0FBQy9ELFFBQU0sYUFBYSxRQUFRLGNBQWMsY0FBYyxDQUFDO0FBQ3hELFFBQU0sZ0JBQWdCLFFBQVEsaUJBQWlCO0FBQy9DLFFBQU0sUUFBUSxTQUFTLFFBQVEsR0FBRyxFQUFFO0FBQ3BDLFFBQU0sTUFBTSxLQUFLO0FBQUEsSUFDZjtBQUFBLElBQ0EsYUFBYSxRQUFRO0FBQUEsSUFDckI7QUFBQSxJQUNBLHlCQUF5QixRQUFRLDJCQUEyQjtBQUFBLElBQzVEO0FBQUEsSUFDQTtBQUFBLEVBQ0YsQ0FBQztBQUNELFFBQU0sVUFBVSxNQUFNLFFBQVEsS0FBSyxNQUFNLHFCQUFxQixRQUFRLEdBQUcsQ0FBQztBQUMxRSxRQUFNLE1BQU07QUFDZDtBQU9BLGVBQXNCLFdBQVcsS0FBeUI7QUFDeEQsUUFBTSxrQkFBa0I7QUFBQSxJQUN0QjtBQUFBLElBQ0EsYUFBYTtBQUFBLElBQ2IsZUFBZSxFQUFFLENBQUMsTUFBTSxFQUFFLGlCQUFpQixNQUFNLFVBQVU7QUFBQSxFQUM3RCxDQUFDO0FBQ0g7QUFFQSxTQUFTLFNBQVMsS0FBK0I7QUFDL0MsU0FBTyx5QkFBeUIsS0FBSyxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsU0FBUyxRQUFRLFFBQVEsRUFBRSxDQUFDO0FBQ3pGO0FBRUEsZUFBZSxxQkFBcUIsS0FBeUI7QUFDM0QsUUFBTSxRQUFRLFNBQVMsR0FBRyxFQUFFO0FBQzVCLFFBQU0sT0FBTyxNQUFNLE1BQU0sQ0FBQztBQUMxQixNQUFJLENBQUMsTUFBTTtBQUNUO0FBQUEsRUFDRjtBQUVBLFFBQU07QUFBQSxJQUFnQixNQUNwQixxQkFBcUI7QUFBQSxNQUNuQixTQUFTLEVBQUUsVUFBVSxLQUFLLFlBQVk7QUFBQSxNQUN0QyxNQUFNLFlBQVksYUFBeUM7QUFDekQsY0FBTTtBQUFBLFVBQ0osS0FBSyxpQkFBaUIscUJBQXFCO0FBQUEsVUFDM0MsS0FBSztBQUFBLFVBQ0wsZUFBZSxhQUFhLEtBQUssV0FBVztBQUFBLFVBQzVDLEtBQUs7QUFBQSxRQUNQO0FBQUEsTUFDRjtBQUFBLE1BQ0EsZUFBZSxLQUFLO0FBQUEsTUFDcEIseUJBQXlCLEtBQUs7QUFBQSxNQUM5QixZQUFZLEtBQUs7QUFBQSxNQUNqQix1QkFBdUIsS0FBSztBQUFBLElBQzlCLENBQUM7QUFBQSxFQUNIO0FBQ0EsUUFBTSxNQUFNLE1BQU07QUFDcEI7IiwKICAibmFtZXMiOiBbXQp9Cg==