CDNResources.java

  1. package docsite.util;

  2. import java.util.*;
  3. import j2html.tags.specialized.*;
  4. import static j2html.TagCreator.*;

  5. public final class CDNResources {

  6.     private CDNResources() { }


  7.     private static final String INTEGRITY = "integrity";
  8.     private static final String CROSSORIGIN = "crossorigin";
  9.     private static final String ANONYMOUS = "anonymous";
  10.     private static final String REFERRERPOLICY = "referrerpolicy";
  11.     private static final String NO_REFERRER = "no-referrer";
  12.     private static final String SRC = "src";
  13.     private static final String STYLESHEET = "stylesheet";
  14.     private static final String REL = "rel";
  15.     private static final String HREF = "href";





  16.     private static final Map<String, ScriptTag> scripts = Map.of(
  17.         "prism.min", script()
  18.             .attr(SRC,"https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/prism.min.js")
  19.             .attr(INTEGRITY, "sha512-YBk7HhgDZvBxmtOfUdvX0z8IH2d10Hp3aEygaMNhtF8fSOvBZ16D/1bXZTJV6ndk/L/DlXxYStP8jrF77v2MIg==")
  20.             .attr(CROSSORIGIN, ANONYMOUS)
  21.             .attr(REFERRERPOLICY, NO_REFERRER),
  22.         "prism.java", script()
  23.             .attr(SRC,"https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/components/prism-java.min.js")
  24.             .attr(INTEGRITY, "sha512-PWHY6Vao4E9K4LsGBYCY0ttDeiWZwuUozTbJvSy9UFHRz2J4Bl7rcWML3wEnJTVuCJhSwGne/8My5gTo/gnbpg==")
  25.             .attr(CROSSORIGIN, ANONYMOUS)
  26.             .attr(REFERRERPOLICY, NO_REFERRER),
  27.         "prism.yaml", script()
  28.             .attr(SRC,"https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/components/prism-yaml.min.js")
  29.             .attr(INTEGRITY, "sha512-QRKKJS95wG2dOCdc7Cm0Zbu+L04xY8fTwhHG3UnqZPMiFrAN8uXrqVTx//eqvTaoYwNJ7oFN3Vej5gnJ+GAxkw==")
  30.             .attr(CROSSORIGIN, ANONYMOUS)
  31.             .attr(REFERRERPOLICY, NO_REFERRER),
  32.         "prism.json", script()
  33.             .attr(SRC,"https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/components/prism-json.min.js")
  34.             .attr(INTEGRITY, "sha512-IC7rV8RslChgByOdUFC6ePqOGn+OwJhnKC3S5AezM8DAiOdGhJMwgsIvBChsa2yuxxoPbH2+W/kjNUM1cc+jUQ==")
  35.             .attr(CROSSORIGIN, ANONYMOUS)
  36.             .attr(REFERRERPOLICY, NO_REFERRER),
  37.         "prism.css", script()
  38.             .attr(SRC,"https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/components/prism-css.min.js")
  39.             .attr(INTEGRITY, "sha512-1qYok2x2Rsm2y+mrdyrp00iH7xYSgVyIQ1egDAoT7CBZ3kSzlaJK+NhWAh746NeL3gnH6dnP8FGS+3xOdwO7ig==")
  40.             .attr(CROSSORIGIN, ANONYMOUS)
  41.             .attr(REFERRERPOLICY, NO_REFERRER),
  42.         "prism.javascript", script()
  43.             .attr(SRC,"https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/components/prism-javascript.min.js")
  44.             .attr(INTEGRITY, "sha512-I4ZWqUpk7wqHcm7Gkv7k4IdgrDUTlGm1a7xeqyduqZLWeoGOn2E9us4XNBEDGclpk+6d1CmqIHYwmoyyL59zeA==")
  45.             .attr(CROSSORIGIN, ANONYMOUS)
  46.             .attr(REFERRERPOLICY, NO_REFERRER),
  47.         "prism.bash", script()
  48.             .attr(SRC,"https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/components/prism-bash.min.js")
  49.             .attr(INTEGRITY, "sha512-JvRd44DHaJAv/o3wxi/dxhz2TO/jwwX8V5/LTr3gj6QMQ6qNNGXk/psoingLDuc5yZmccOq7XhpVaelIZE4tsQ==")
  50.             .attr(CROSSORIGIN, ANONYMOUS)
  51.             .attr(REFERRERPOLICY, NO_REFERRER),
  52.         "prism.gherkin", script()
  53.             .attr(SRC,"https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/components/prism-gherkin.min.js")
  54.             .attr(INTEGRITY, "sha512-mIOZdB9UVqzUuNdWFcaqJssGJd6q7aaJpg+Q0z3kAWycvIrtcdiwELnKd2izg/ZlPqphj7rtqiUcmVS4bnd7RQ==")
  55.             .attr(CROSSORIGIN, ANONYMOUS)
  56.             .attr(REFERRERPOLICY, NO_REFERRER),
  57.         "katex", script()
  58.             .attr(SRC,"https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.0/katex.min.js")
  59.             .attr(INTEGRITY, "sha512-M7/jkZoKEln1jaaY2roCK9Jt4t+j/iru0e2vInDkVO5LY0EBt3m66tjTT5XFsGH2LJG+VRRL2ueIR3U0frs/GQ==")
  60.             .attr(CROSSORIGIN, ANONYMOUS)
  61.             .attr(REFERRERPOLICY, NO_REFERRER),
  62.         "mermaid", script()
  63.             .attr(SRC,"https://cdnjs.cloudflare.com/ajax/libs/mermaid/9.1.2/mermaid.min.js")
  64.             .attr(INTEGRITY, "sha512-8ZrL1m0+KXHylxkFJdFtFCauQdV/KZMjSBL9iydsyIfiB1LwYBlGegX8dUlLnUtRDrTgWKP6pPVyOqa2VrqoNA==")
  65.             .attr(CROSSORIGIN, ANONYMOUS)
  66.             .attr(REFERRERPOLICY, NO_REFERRER)
  67.     );



  68.     private static final Map<String, LinkTag> links = Map.of(
  69.         "prism.min", link()
  70.             .attr(HREF,"https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/themes/prism.min.css")
  71.             .attr(INTEGRITY, "sha512-tN7Ec6zAFaVSG3TpNAKtk4DOHNpSwKHxxrsiw4GHKESGPs5njn/0sMCUMl2svV4wo4BK/rCP7juYz+zx+l6oeQ==")
  72.             .attr(REL, STYLESHEET)
  73.             .attr(CROSSORIGIN, ANONYMOUS)
  74.             .attr(REFERRERPOLICY, NO_REFERRER),
  75.         "fontawesome.min", link()
  76.             .attr(HREF,"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/all.min.css")
  77.             .attr(INTEGRITY, "sha512-BnbUDfEUfV0Slx6TunuB042k9tuKe3xrD6q4mg5Ed72LTgzDIcLPxg6yI2gcMFRyomt+yJJxE+zJwNmxki6/RA==")
  78.             .attr(REL, STYLESHEET)
  79.             .attr(CROSSORIGIN, ANONYMOUS)
  80.             .attr(REFERRERPOLICY, NO_REFERRER),
  81.         "katex", link()
  82.             .attr(HREF,"https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.0/katex.min.css")
  83.             .attr(INTEGRITY, "sha512-Yfxo7zXGaQYyzWNxz8r4s8axNfG4jS3dips8p2HA/wNWmuapakkQiki+/XA3o3Ol+i8WI03cRJVDDUElEtED6g==")
  84.             .attr(REL, STYLESHEET)
  85.             .attr(CROSSORIGIN, ANONYMOUS)
  86.             .attr(REFERRERPOLICY, NO_REFERRER)
  87.     );


  88.     public static Optional<ScriptTag> js(String language) {
  89.         return Optional.ofNullable(scripts.get(language));
  90.     }

  91.     public static Optional<LinkTag> css(String language) {
  92.         return Optional.ofNullable(links.get(language));
  93.     }

  94. }