This repository has been archived on 2025-01-27. You can view files and clone it, but cannot push or open issues or pull requests.
puyoskey-firefish/packages/client/vite.json5.ts
naskya d096da02e6 🎉 First Commit
release: v20240729

Co-authored-by: Laura Hausmann <laura@hausmann.dev>
Co-authored-by: GitLab CI <project_7_bot_1bfaee5701aed20091a86249a967a6c1@noreply.firefish.dev>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Saamkhaih Kyakya <70475761+hiohlan@users.noreply.github.com>

See merge request firefish/firefish!11214
2024-08-01 00:03:39 +09:00

49 lines
1.3 KiB
TypeScript

// Original: https://github.com/rollup/plugins/tree/8835dd2aed92f408d7dc72d7cc25a9728e16face/packages/json
import JSON5 from "json5";
import { Plugin } from "rollup";
import { createFilter, dataToEsm } from "@rollup/pluginutils";
import { RollupJsonOptions } from "@rollup/plugin-json";
interface Json5SyntaxError extends SyntaxError {
lineNumber: number;
columnNumber: number;
}
export default function json5(options: RollupJsonOptions = {}): Plugin {
const filter = createFilter(options.include, options.exclude);
const indent = "indent" in options ? options.indent : "\t";
return {
name: "json5",
transform(json, id) {
if (id.slice(-6) !== ".json5" || !filter(id)) return null;
try {
const parsed = JSON5.parse(json);
return {
code: dataToEsm(parsed, {
preferConst: options.preferConst,
compact: options.compact,
namedExports: options.namedExports,
indent,
}),
map: { mappings: "" },
};
} catch (err) {
if (!(err instanceof SyntaxError)) {
throw err;
}
const message = "Could not parse JSON5 file";
const { lineNumber, columnNumber } = err as Json5SyntaxError;
this.warn({
message,
id,
loc: { line: lineNumber, column: columnNumber },
});
return null;
}
},
};
}