mirror of
https://github.com/hanzoai/DOMPurify.git
synced 2026-09-24 16:55:05 +00:00
41 lines
1.4 KiB
JavaScript
41 lines
1.4 KiB
JavaScript
// @ts-check
|
|
|
|
const fs = require('node:fs/promises');
|
|
const path = require('node:path');
|
|
|
|
(async () => {
|
|
// Note that this script is intended to run on the type declaration file that is
|
|
// output by Rollup, and not the type declaration file generated from TypeScript.
|
|
await fixCjsTypes(path.resolve(__dirname, '../dist/purify.cjs.d.ts'));
|
|
})().catch((ex) => {
|
|
console.error(ex);
|
|
process.exitCode = 1;
|
|
});
|
|
|
|
/**
|
|
* Fixes the CommonJS type declarations file.
|
|
* @param {string} fileName
|
|
*/
|
|
async function fixCjsTypes(fileName) {
|
|
let types = await fs.readFile(fileName, { encoding: 'utf-8' });
|
|
|
|
// DOMPurify is exported as a default export, but rollup changes
|
|
// it to be assigned to `module.exports`. We need to change the
|
|
// type declarations to match what rollup changed it to. Remove
|
|
// the "default" export from the `export { ... }` statement.
|
|
let fixed = types.replace(', _default as default', '');
|
|
|
|
// Verify that we actually removed something in case the
|
|
// type declarations are different to what we expected.
|
|
if (fixed === types) {
|
|
throw new Error('Failed to fix CommonJS type declarations.');
|
|
}
|
|
|
|
// Append `export = _default;` to match the `module.exports = DOMPurify`
|
|
// statement that Rollup creates. This can cause compilation errors
|
|
// for certain configurations, so add a `@ts-ignore` comment before it.
|
|
fixed += '\n// @ts-ignore\nexport = _default;\n';
|
|
|
|
await fs.writeFile(fileName, fixed);
|
|
}
|