UNPKG

@animepaste/bangumi

Version:
73 lines (67 loc) 1.9 kB
'use strict'; const createDebug = require('debug'); const load = require('./shared/bangumi.3ed8d645.cjs'); const index = require('./shared/bangumi.766b3f2d.cjs'); const compress = require('./shared/bangumi.2a35e04e.cjs'); require('node:module'); require('./shared/bangumi.94598bfb.cjs'); function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; } const createDebug__default = /*#__PURE__*/_interopDefaultCompat(createDebug); const debug = createDebug__default("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 index.transform(option).then((data) => { map.set(option.id, compress.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.load(id); return JSON.stringify(data); } catch (error) { this.error(error?.message); debug(error); } } } }; } module.exports = createBangumiPlugin;