v1.5.0 — ESM rollup output + cwm-lint-deprecations
Additive, fully backward-compatible.
Added
-
ESM output from the shared Rollup config — unblocks first-class
JoomlaDialog.templates/rollup.config.jsnow picks output format by source suffix:*.es6.jsstill emits an IIFE bundle (every existing consumer builds exactly as before), while a new*.es6.mjssource emits an ES module (format: 'es'). In module builds, barejoomla.*specifiers (e.g.import JoomlaDialog from 'joomla.dialog') are marked external, so the import survives to the browser and Joomla's import-map resolves it at runtime. An IIFE bundle inlines everything and structurally cannot carry a live external ESM import — which is why consumingJoomlaDialog(or any Joomla JS module API) was previously impossible without hand-writing an unbundled module. Register the built file as atype="module"asset injoomla.asset.json. Extra externals (e.g.vue) via theMODULE_EXTERNALSenv var. -
cwm-lint-deprecations— flags Joomla 6/7 upgrade blockers in source. New CI-gating scanner (composer lint-deprecations) reportingfile:lineforbootstrap.modalassets,data-bs-toggle="modal"markup, legacy{handler: 'iframe'}modal links, the removedJoomla.ModalJS API, and jQuery globals. Exits non-zero on any finding (or--warnto report without failing). Skipsvendor/,node_modules/,build/,dist/,*.min.js.cwm-initnow offers to wire it into consumers.
Migration
No action required for existing builds (the old template ignores *.es6.mjs, so adopting it is safe to stage ahead of upgrading). To use JoomlaDialog: name the source <thing>.es6.mjs, import JoomlaDialog from 'joomla.dialog', and register the built <thing>.js as "type": "module". Note JoomlaDialog.confirm()/alert() are Promise-based, not synchronous like native confirm(). Run composer lint-deprecations to find Bootstrap-modal usages to migrate.