Skip to content

Commit

Permalink
sanitize Leaflet innerHTML mutations at build time
Browse files Browse the repository at this point in the history
  • Loading branch information
Stassi committed Sep 28, 2024
1 parent 59f69c2 commit 4a74878
Showing 1 changed file with 21 additions and 2 deletions.
23 changes: 21 additions & 2 deletions rollup.config.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
// noinspection JSUnusedGlobalSymbols

import commonjs from '@rollup/plugin-commonjs'
import inject from '@rollup/plugin-inject'
import terser from '@rollup/plugin-terser'
import typescript from '@rollup/plugin-typescript'
// @ts-expect-error -- untyped plugin
import untypedModify from 'rollup-plugin-modify'
import { nodeResolve } from '@rollup/plugin-node-resolve'
import { type RollupOptions } from 'rollup'
import { type Plugin, type RollupOptions } from 'rollup'

// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- untyped plugin
const modify: (modifyOptions: {
find: string | RegExp
replace: string | ((match: string, element: string, value: string) => string)
}) => Plugin = untypedModify

const rollupConfig: RollupOptions = {
input: 'src/index.ts',
Expand All @@ -14,8 +25,16 @@ const rollupConfig: RollupOptions = {
},
],
plugins: [
nodeResolve(),
commonjs(),
modify({
find: /(?<element>.*)\.innerHTML\s*=\s*(?<value>.*);/,
replace: (_match: string, element: string, value: string): string =>
`${element}.innerHTML = DOMPurify.sanitize(${value});`,
}),
inject({
DOMPurify: 'dompurify',
}),
nodeResolve(),
typescript({
exclude: ['rollup.config.ts'],
}),
Expand Down

0 comments on commit 4a74878

Please sign in to comment.