@animepaste/bangumi
Version:
73 lines (67 loc) • 1.9 kB
JavaScript
;
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;