mirror of
https://gitlab.com/PronounsPage/PronounsPage.git
synced 2025-09-08 06:51:43 -04:00
35 lines
1014 B
TypeScript
35 lines
1014 B
TypeScript
import fs from 'node:fs';
|
|
|
|
import type { TransformResult, Plugin } from 'rollup';
|
|
import Suml from 'suml';
|
|
|
|
const replacer = (key: string, value: unknown): unknown => {
|
|
if (value === Infinity) {
|
|
return '<<<{{{Infinity}}}>>>';
|
|
}
|
|
if (value === -Infinity) {
|
|
return '<<<{{{-Infinity}}}>>>';
|
|
}
|
|
if (value instanceof Date) {
|
|
return `<<<{{{new Date('${value.toISOString()}')}}}>>>`;
|
|
}
|
|
return value;
|
|
};
|
|
|
|
export default (): Plugin => {
|
|
return {
|
|
name: 'transform-suml',
|
|
async transform(code, id): Promise<TransformResult> {
|
|
if (/\.suml$/.test(id)) {
|
|
const suml = new Suml();
|
|
const source = await fs.promises.readFile(id, 'utf8');
|
|
return {
|
|
code: `export default ${JSON.stringify(suml.parse(source), replacer)}`.replace(/"<<<{{{([^}]*)}}}>>>"/g, '$1'),
|
|
map: { mappings: '' },
|
|
};
|
|
}
|
|
return null;
|
|
},
|
|
};
|
|
};
|