#!/usr/bin/make -f
# -*- makefile -*-

#export DH_VERBOSE=1

# Compile the helper scripts (and their src/ deps) as a CommonJS bundle so
# Node.js can run them without ts-node ESM (broken with module:nodenext).
TSC_SCRIPTS = tsc --ignoreConfig --ignoreDeprecations 6.0 \
              --module commonjs --moduleResolution node \
              --target es2020 --esModuleInterop \
              --resolveJsonModule --skipLibCheck --types node \
              --rootDir . --outDir build-scripts

%:
	dh $@

generated: src/generated/decode-data-html.ts src/generated/encode-html.ts

override_dh_auto_build: generated
	# 1. ESM build (the upstream tsconfig)
	tsc
	# 2. Extra CommonJS build so consumers that still use require("entities")
	# (e.g. node-jsdom 20 → node-parse5) keep working.
	# The CJS build's `exports` aliasing is wired in via
	# debian/patches/package-json-cjs-exports.patch.
	tsc --ignoreConfig \
	    --module commonjs --moduleResolution bundler \
	    --target es2020 --esModuleInterop \
	    --resolveJsonModule --skipLibCheck --types node \
	    --rootDir src --outDir dist/cjs \
	    src/index.ts src/decode.ts src/escape.ts
	echo '{"type":"commonjs"}' > dist/cjs/package.json

build-scripts/scripts/write-decode-map.js:
	$(TSC_SCRIPTS) scripts/write-decode-map.ts
	echo '{"type":"commonjs"}' > build-scripts/package.json

build-scripts/scripts/write-encode-map.js:
	$(TSC_SCRIPTS) scripts/write-encode-map.ts
	echo '{"type":"commonjs"}' > build-scripts/package.json

src/generated/decode-data-html.ts: build-scripts/scripts/write-decode-map.js
	node build-scripts/scripts/write-decode-map.js

src/generated/encode-html.ts: build-scripts/scripts/write-encode-map.js
	node build-scripts/scripts/write-encode-map.js

.PHONY: generated
