diff --git a/build.sh b/build.sh index 8c362fde..13ab4154 100755 --- a/build.sh +++ b/build.sh @@ -3,15 +3,17 @@ set -ex ESBUILD="node_modules/.bin/esbuild --bundle" -$ESBUILD --format=iife --target=es2021 playwright/content.ts --outfile=dist/autoconsent.playwright.js -$ESBUILD --format=esm --target=es2021 lib/web.ts --outfile=dist/autoconsent.esm.js -$ESBUILD --format=cjs --target=es2021 --platform=node lib/web.ts --outfile=dist/autoconsent.cjs.js +$ESBUILD --format=iife --define:BUNDLE_FILTERLIST=true --target=es2021 playwright/content.ts --outfile=dist/autoconsent.playwright.js +$ESBUILD --format=esm --define:BUNDLE_FILTERLIST=true --target=es2021 lib/web.ts --outfile=dist/autoconsent.extra.esm.js +$ESBUILD --format=cjs --define:BUNDLE_FILTERLIST=true --target=es2021 --platform=node lib/web.ts --outfile=dist/autoconsent.extra.cjs.js +$ESBUILD --format=esm --define:BUNDLE_FILTERLIST=false --target=es2021 lib/web.ts --outfile=dist/autoconsent.esm.js +$ESBUILD --format=cjs --define:BUNDLE_FILTERLIST=false --target=es2021 --platform=node lib/web.ts --outfile=dist/autoconsent.cjs.js # Extension -$ESBUILD addon/background.ts --outfile=dist/addon-mv3/background.bundle.js -$ESBUILD addon/content.ts --outfile=dist/addon-mv3/content.bundle.js -$ESBUILD addon/popup.ts --outfile=dist/addon-mv3/popup.bundle.js -$ESBUILD addon/devtools/panel.ts --outfile=dist/addon-mv3/devtools/panel.js +$ESBUILD addon/background.ts --define:BUNDLE_FILTERLIST=true --outfile=dist/addon-mv3/background.bundle.js +$ESBUILD addon/content.ts --define:BUNDLE_FILTERLIST=true --outfile=dist/addon-mv3/content.bundle.js +$ESBUILD addon/popup.ts --define:BUNDLE_FILTERLIST=true --outfile=dist/addon-mv3/popup.bundle.js +$ESBUILD addon/devtools/panel.ts --define:BUNDLE_FILTERLIST=true --outfile=dist/addon-mv3/devtools/panel.js ## Copy extension files into place mkdir -p dist/addon-firefox diff --git a/lib/web.ts b/lib/web.ts index 734825bb..8c4d1468 100644 --- a/lib/web.ts +++ b/lib/web.ts @@ -10,7 +10,7 @@ import { DomActions } from './dom-actions'; import { normalizeConfig } from './utils'; import { deserializeFilterList, getCosmeticStylesheet, getFilterlistSelectors } from './filterlist-utils'; import { FiltersEngine } from '@cliqz/adblocker'; -import { serializedEngine } from './filterlist-engine'; +import serializedEngine from './filterlist-engine'; function filterCMPs(rules: AutoCMP[], config: Config) { return rules.filter((cmp) => { diff --git a/package.json b/package.json index 603f4673..70ce29da 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,16 @@ "name": "@duckduckgo/autoconsent", "version": "10.16.0", "description": "", - "main": "dist/autoconsent.cjs.js", - "module": "dist/autoconsent.esm.js", + "exports": { + ".": { + "import": "./dist/autoconsent.esm.js", + "require": "./dist/autoconsent.cjs.js" + }, + "./extra": { + "import": "./dist/autoconsent.extra.esm.js", + "require": "./dist/autoconsent.extra.cjs.js" + } + }, "directories": { "lib": "lib" }, diff --git a/rules/rebuild-filterlist.mjs b/rules/rebuild-filterlist.mjs index 98e76a27..03b5da4c 100644 --- a/rules/rebuild-filterlist.mjs +++ b/rules/rebuild-filterlist.mjs @@ -21,8 +21,15 @@ const engineJson = JSON.stringify(Array.from(serializedEngine)); fs.writeFile( path.join(rulesDir, "../lib/filterlist-engine.ts"), - `export const serializedEngine = new Uint8Array( + ` +declare global { + const BUNDLE_FILTERLIST: boolean; +} +const serializedEngine = /* @__PURE__ */ new Uint8Array( ${engineJson} -);`, +); +const emptyEngine = /* @__PURE__ */ new Uint8Array([]); +export default BUNDLE_FILTERLIST ? serializedEngine : emptyEngine; +`, () => console.log("Written filterlist-engine.ts") );