#!/usr/bin/make -f

STEM = leaflet

ESLINT = eslint --format tap

# TODO: drop when node-eslint-config-mourner is in Debian
ESLINT += $(strip \
 --no-eslintrc --global L --env commonjs,amd,node \
 --parser-options '{ "ecmaVersion": 2015, "sourceType": "module" }' \
 --rule '{ \
  "linebreak-style": [ 0, "unix" ], \
  "no-mixed-spaces-and-tabs": [ 2, "smart-tabs" ], \
  "indent": [ 2, "tab", { "VariableDeclarator": 0, "flatTernaryExpressions": true } ], \
  "curly": 2, \
  "spaced-comment": 2, \
  "strict": 0, \
  "wrap-iife": 0, \
  "key-spacing": 0, \
  "consistent-return": 0, \
  "no-unused-expressions": [ "error", { "allowShortCircuit": true } ] }')

override_dh_auto_build: \
 debian/js/$(STEM).esm.min.js.gz \
 debian/js/$(STEM).min.js.gz \
 debian/js/$(STEM).css.gz

dist/$(STEM)-src.esm.js \
dist/$(STEM)-src.js:
	NODE_ENV=release rollup --config build/rollup-config.js

override_dh_auto_test:
	$(ESLINT) src spec/suites docs/docs/js

execute_after_dh_install:
	rename 's/-src//' debian/*/usr/share/javascript/leaflet/*.js

# optimize JavaScript for browser use
# * include source-map using upstream intermediary
debian/js/%.esm.min.js: dist/%-src.esm.js
	mkdir --parents debian/js
	terser --compress --mangle \
		--source-map "base='$(abspath $(dir $@))',content='$<.map',url='$(notdir $@).map'" \
		--output $@ \
		-- $<
debian/js/%.min.js: dist/%-src.js
	mkdir --parents debian/js
	uglifyjs --compress --mangle \
		--source-map "base='$(abspath $(dir $@))',content='$<.map',url='$(notdir $@).map'" \
		--output $@ \
		-- $<

# pre-compress for browser use
%.gz: %
	pigz --force --keep -11 -- $<
	brotli --force --keep --best --suffix=.brotli -- $<

# optimize CSS
debian/js/%.css: dist/%.css
	sassc --style compressed --sourcemap \
		-- $< $@

%:
	dh $@

.SECONDARY:
