UNPKG

zephyr-rspress-plugin

Version:

Rspress plugin for Zephyr

90 lines (89 loc) • 3.08 kB
"use strict"; var __webpack_require__ = {}; (()=>{ __webpack_require__.d = (exports1, getters, values)=>{ var define = (defs, kind)=>{ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, { enumerable: true, [kind]: defs[key] }); }; define(getters, "get"); define(values, "value"); }; })(); (()=>{ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop); })(); (()=>{ __webpack_require__.r = (exports1)=>{ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, { value: 'Module' }); Object.defineProperty(exports1, '__esModule', { value: true }); }; })(); var __webpack_exports__ = {}; __webpack_require__.r(__webpack_exports__); const trackedHooks = new WeakMap(); function trackHook(plugin) { if ('object' != typeof plugin || null === plugin || !('afterBuild' in plugin) || 'function' != typeof plugin.afterBuild || 'name' in plugin && 'zephyr-rspress-plugin-ssg' === plugin.name) return; const existing = trackedHooks.get(plugin); if (existing?.hook === plugin.afterBuild) return existing; const originalHook = plugin.afterBuild; const pending = new WeakMap(); const hook = function(config, isProd) { let jobs = pending.get(config); if (void 0 === jobs) { jobs = []; pending.set(config, jobs); } const currentJobs = jobs; const job = Promise.resolve().then(async ()=>{ await Reflect.apply(originalHook, this, [ config, isProd ]); }); currentJobs.push(job); const remove = ()=>{ const index = currentJobs.indexOf(job); if (-1 !== index) currentJobs.splice(index, 1); }; job.then(remove, remove); return job; }; plugin.afterBuild = hook; const tracker = { hook, pending }; trackedHooks.set(plugin, tracker); return tracker; } function trackAfterBuildHooks(plugins) { const trackers = plugins.map(trackHook).filter((tracker)=>void 0 !== tracker); return async (config)=>{ await Promise.resolve(); const jobs = trackers.flatMap((tracker)=>{ const job = tracker.pending.get(config)?.shift(); return void 0 === job ? [] : [ job ]; }); await Promise.all(jobs); }; } __webpack_require__.d(__webpack_exports__, { trackAfterBuildHooks: ()=>trackAfterBuildHooks }); exports.trackAfterBuildHooks = __webpack_exports__.trackAfterBuildHooks; for(var __rspack_i in __webpack_exports__)if (-1 === [ "trackAfterBuildHooks" ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i]; Object.defineProperty(exports, '__esModule', { value: true }); //# sourceMappingURL=afterBuildHooks.js.map