Files
metabase/shadow-cljs.edn
Nicola Mometto 02a1dc223b Restrict notification markdown link schemes and diff pulse recipients by email (#80597)
* Restrict markdown link URI schemes in rendered notifications

Only http/https/mailto links and images survive markdown rendering for
email/Slack notifications; other schemes and unparseable URIs are
dropped instead of being passed through (or, for malformed URIs when a
site URL is set, throwing mid-render).

* Diff pulse recipients by id or email in the subscription-permission check

Key the added-recipients diff the same way pulse-channel keys
recipients (user recipients by :id, external ones by :email) so
external-address changes are covered by the check too.

* Allow inline base64 images in notification markdown

The app's markdown renderer accepts data:image/...;base64 URIs
(DATA_IMAGE_URI_PATTERN); let notification rendering accept the same
pattern so text-card images look the same in email.

* Cross-link DATA_IMAGE_URI_PATTERN to its backend counterpart

* Share the data-image URI pattern between backend and frontend

Lift the pattern into metabase.util.markdown.image (cljc), compile it
into the frontend bundle via shadow-cljs, and re-export it as
DATA_IMAGE_URI_PATTERN so both renderers accept the same inline images
by construction.

* Apply resolve-uri to Slack images too

* Render a dropped link-ref as its text alone instead of restoring brackets
2026-08-26 12:09:26 +00:00

46 lines
1.6 KiB
Clojure

;; shadow-cljs configuration
{:deps {:aliases [:cljs]}
:nrepl
{:middleware
[cider.nrepl/cider-middleware
cider.piggieback/wrap-cljs-repl
refactor-nrepl.middleware/wrap-refactor]
:port 50655}
:builds
{:app
{:target :npm-module
:output-dir "target/cljs_release/"
:dev {:output-dir "target/cljs_dev/"
:compiler-options {:reader-features #{:cljs-dev}}}
:compiler-options {:reader-features #{:cljs-release}
:source-map true
:warnings {:fn-deprecated false}}
:closure-defines {goog.debug.LOGGING_ENABLED true}
:entries [metabase.dashboards.constants
metabase.lib.column-group
metabase.lib.js
metabase.lib.limit
metabase.transforms-inspector.js
metabase.lib.types.isa
metabase.lib-metric.js
metabase.parameters.shared
metabase.pivot.core
metabase.pivot.js
metabase.types.core
metabase.util.currency
metabase.util.devtools
metabase.util.formatting.constants
metabase.util.formatting.date
metabase.util.markdown.image
metabase.util.time
metabase.xrays.domain-entities.queries.util]}
:test
{:target :node-test
:output-to "target/node-tests.js"
:ns-regexp "-test$"
:compiler-options {:reader-features #{:cljs-test}
:warnings {:fn-deprecated false}}}}}