UNPKG

@animepaste/bangumi

Version:
67 lines (64 loc) 1.68 kB
import createDebug from 'debug'; import { l as load } from './shared/bangumi.4a0b2d6f.mjs'; import { t as transform } from './shared/bangumi.6c4c2795.mjs'; import { d as decompress } from './shared/bangumi.aa4a6cb9.mjs'; import 'node:module'; import './shared/bangumi.679709b8.mjs'; const debug = createDebug("animepaste:bangumi"); function createBangumiPlugin(...options) { for (const option of options) { if (!option.id.endsWith(".json")) { option.id += ".json"; } } const map = new Map( options.map((op) => [op.id, void 0]) ); const task = Promise.all( options.map((option) => { try { return transform(option).then((data) => { map.set(option.id, decompress(data)); }); } catch (error) { debug(error); } }) ); return { name: "animepaste:bangumi", resolveId(id) { if (id.startsWith("~bangumi/")) { id = "\0" + id; if (!id.endsWith(".json")) { id += ".json"; } return id; } }, async load(id) { const PREFIX = "\0~bangumi/"; if (id.startsWith(PREFIX)) { id = id.slice(PREFIX.length); if (map.has(id)) { if (!!map.get(id)) { return JSON.stringify(map.get(id)); } else { await task; if (!!map.get(id)) { return JSON.stringify(map.get(id)); } } } try { const data = load(id); return JSON.stringify(data); } catch (error) { this.error(error?.message); debug(error); } } } }; } export { createBangumiPlugin as default };