markfeyn 0.1.0__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. {markfeyn-0.1.0 → markfeyn-0.2.0}/MANIFEST.in +2 -1
  2. {markfeyn-0.1.0/src/markfeyn.egg-info → markfeyn-0.2.0}/PKG-INFO +2 -1
  3. {markfeyn-0.1.0 → markfeyn-0.2.0}/THIRD_PARTY_NOTICES.md +4 -0
  4. {markfeyn-0.1.0 → markfeyn-0.2.0}/docs/installation.md +72 -0
  5. markfeyn-0.2.0/licenses/SVG-export-dependencies.md +413 -0
  6. {markfeyn-0.1.0 → markfeyn-0.2.0}/package-lock.json +84 -3
  7. {markfeyn-0.1.0 → markfeyn-0.2.0}/package.json +7 -4
  8. {markfeyn-0.1.0 → markfeyn-0.2.0}/pyproject.toml +4 -1
  9. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/__init__.py +1 -1
  10. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/__main__.py +42 -0
  11. markfeyn-0.2.0/src/markfeyn/assets/render-svg.cjs +37 -0
  12. markfeyn-0.2.0/src/markfeyn/export/render-svg.cjs +110 -0
  13. {markfeyn-0.1.0 → markfeyn-0.2.0/src/markfeyn.egg-info}/PKG-INFO +2 -1
  14. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn.egg-info/SOURCES.txt +5 -0
  15. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn.egg-info/entry_points.txt +3 -0
  16. markfeyn-0.2.0/tests/html-integration.test.js +31 -0
  17. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/test_cli.py +42 -0
  18. markfeyn-0.2.0/tests/test_html_integration.py +17 -0
  19. {markfeyn-0.1.0 → markfeyn-0.2.0}/LICENSE +0 -0
  20. {markfeyn-0.1.0 → markfeyn-0.2.0}/README.md +0 -0
  21. {markfeyn-0.1.0 → markfeyn-0.2.0}/docs/development.md +0 -0
  22. {markfeyn-0.1.0 → markfeyn-0.2.0}/docs/examples/edges.md +0 -0
  23. {markfeyn-0.1.0 → markfeyn-0.2.0}/docs/examples/from-the-literature.md +0 -0
  24. {markfeyn-0.1.0 → markfeyn-0.2.0}/docs/examples/index.md +0 -0
  25. {markfeyn-0.1.0 → markfeyn-0.2.0}/docs/examples/layout.md +0 -0
  26. {markfeyn-0.1.0 → markfeyn-0.2.0}/docs/examples/loops.md +0 -0
  27. {markfeyn-0.1.0 → markfeyn-0.2.0}/docs/examples/scattering-decays.md +0 -0
  28. {markfeyn-0.1.0 → markfeyn-0.2.0}/docs/examples/symmetric-layout.md +0 -0
  29. {markfeyn-0.1.0 → markfeyn-0.2.0}/docs/examples/vertices.md +0 -0
  30. {markfeyn-0.1.0 → markfeyn-0.2.0}/docs/index.md +0 -0
  31. {markfeyn-0.1.0 → markfeyn-0.2.0}/docs/syntax.md +0 -0
  32. {markfeyn-0.1.0 → markfeyn-0.2.0}/licenses/ELKJS-EPL-2.0.md +0 -0
  33. {markfeyn-0.1.0 → markfeyn-0.2.0}/mkdocs.yml +0 -0
  34. {markfeyn-0.1.0 → markfeyn-0.2.0}/properdocs.yml +0 -0
  35. {markfeyn-0.1.0 → markfeyn-0.2.0}/setup.cfg +0 -0
  36. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/assets/feynman-diagrams-loader.js +0 -0
  37. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/assets/feynman-diagrams.js +0 -0
  38. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/core.py +0 -0
  39. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/mkdocs_plugin.py +0 -0
  40. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/properdocs_plugin.py +0 -0
  41. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/feynman-diagrams.js +0 -0
  42. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/geometry/metrics.js +0 -0
  43. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/geometry/paths.js +0 -0
  44. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/geometry/vertex-shapes.js +0 -0
  45. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/coordinates.js +0 -0
  46. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/crowding.js +0 -0
  47. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/elk-compiler.js +0 -0
  48. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/elk-options.js +0 -0
  49. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/elk-runner.js +0 -0
  50. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/external-order.js +0 -0
  51. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/fallback.js +0 -0
  52. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/incremental.js +0 -0
  53. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/labels/boxes.js +0 -0
  54. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/labels/geometry.js +0 -0
  55. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/labels/placement.js +0 -0
  56. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/labels/regions.js +0 -0
  57. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/labels/scoring.js +0 -0
  58. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/labels.js +0 -0
  59. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/layout.js +0 -0
  60. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/loop-candidates.js +0 -0
  61. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/model.js +0 -0
  62. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/multiloop.js +0 -0
  63. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/normalization.js +0 -0
  64. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/normalizers/alignment.js +0 -0
  65. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/normalizers/edge-bounds.js +0 -0
  66. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/normalizers/elk.js +0 -0
  67. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/normalizers/process.js +0 -0
  68. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/normalizers/spring.js +0 -0
  69. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/normalizers/tikz-orientation.js +0 -0
  70. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/options.js +0 -0
  71. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/orientation.js +0 -0
  72. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/parallel.js +0 -0
  73. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/score.js +0 -0
  74. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/strategies.js +0 -0
  75. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/symmetric-unclassified.js +0 -0
  76. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/symmetric.js +0 -0
  77. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/topology/biconnected.js +0 -0
  78. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/topology/classification.js +0 -0
  79. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/topology/cycles.js +0 -0
  80. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/topology/fermion-flow.js +0 -0
  81. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/topology/graph.js +0 -0
  82. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/topology/parallel.js +0 -0
  83. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/topology/regions.js +0 -0
  84. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/topology.js +0 -0
  85. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout/validate.js +0 -0
  86. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/layout-engine.js +0 -0
  87. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/parser/braces.js +0 -0
  88. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/parser/constants.js +0 -0
  89. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/parser/directives.js +0 -0
  90. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/parser/edges.js +0 -0
  91. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/parser/feynman-parser.js +0 -0
  92. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/parser/index.js +0 -0
  93. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/parser/labels.js +0 -0
  94. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/parser/options.js +0 -0
  95. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/parser/vertices.js +0 -0
  96. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/render/braces.js +0 -0
  97. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/render/definitions.js +0 -0
  98. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/render/dom.js +0 -0
  99. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/render/edges.js +0 -0
  100. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/render/label-markup.js +0 -0
  101. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/render/labels.js +0 -0
  102. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/render/mathjax.js +0 -0
  103. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/render/paths.js +0 -0
  104. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/render/styles.js +0 -0
  105. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/render/svg-renderer.js +0 -0
  106. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/render/vertex-shapes.js +0 -0
  107. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/render/vertices.js +0 -0
  108. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn/renderer/render/visual-defaults.js +0 -0
  109. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn.egg-info/dependency_links.txt +0 -0
  110. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn.egg-info/requires.txt +0 -0
  111. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/markfeyn.egg-info/top_level.txt +0 -0
  112. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/mkdocs_feynman_diagrams/__init__.py +0 -0
  113. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/mkdocs_feynman_diagrams/plugin.py +0 -0
  114. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/properdocs_feynman_diagrams/__init__.py +0 -0
  115. {markfeyn-0.1.0 → markfeyn-0.2.0}/src/properdocs_feynman_diagrams/plugin.py +0 -0
  116. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/canvas-scaling.test.js +0 -0
  117. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/contact-star.test.js +0 -0
  118. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/docs-examples.test.js +0 -0
  119. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/feynman-visual-snapshots.test.js +0 -0
  120. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/helpers/feynman.js +0 -0
  121. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/labels.test.js +0 -0
  122. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/layout-misc.test.js +0 -0
  123. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/loader.test.js +0 -0
  124. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/loops.test.js +0 -0
  125. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/multiloop.test.js +0 -0
  126. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/orientation-crossing.test.js +0 -0
  127. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/orientation.test.js +0 -0
  128. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/parser-core.test.js +0 -0
  129. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/parser-identifiers.test.js +0 -0
  130. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/render-diagnostics.test.js +0 -0
  131. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/render-dom.test.js +0 -0
  132. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/symmetric-refinement.test.js +0 -0
  133. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/test_docs_config.py +0 -0
  134. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/test_docs_language.py +0 -0
  135. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/test_lazy_load.py +0 -0
  136. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/test_mkdocs_integration.py +0 -0
  137. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/test_plugin.py +0 -0
  138. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/test_properdocs_integration.py +0 -0
  139. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/test_version.py +0 -0
  140. {markfeyn-0.1.0 → markfeyn-0.2.0}/tests/topology-performance.test.js +0 -0
@@ -7,6 +7,7 @@ include mkdocs.yml
7
7
  include properdocs.yml
8
8
  recursive-include licenses *.md
9
9
  recursive-include src/markfeyn/renderer *.js
10
- recursive-include src/markfeyn/assets *.js
10
+ recursive-include src/markfeyn/assets *.js *.cjs
11
+ recursive-include src/markfeyn/export *.cjs
11
12
  recursive-include docs *.md
12
13
  recursive-include tests *.py *.js
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: markfeyn
3
- Version: 0.1.0
3
+ Version: 0.2.0
4
4
  Summary: Render simple Feynman diagram code blocks as native SVG in MkDocs and ProperDocs.
5
5
  Author: MarkFeyn contributors
6
6
  License-Expression: MIT
@@ -20,6 +20,7 @@ Description-Content-Type: text/markdown
20
20
  License-File: LICENSE
21
21
  License-File: THIRD_PARTY_NOTICES.md
22
22
  License-File: licenses/ELKJS-EPL-2.0.md
23
+ License-File: licenses/SVG-export-dependencies.md
23
24
  Provides-Extra: mkdocs
24
25
  Requires-Dist: mkdocs>=1.5; extra == "mkdocs"
25
26
  Provides-Extra: properdocs
@@ -13,3 +13,7 @@ MarkFeyn bundles the following third-party JavaScript dependency into
13
13
  `elkjs` is the JavaScript distribution of the Eclipse Layout Kernel. Its full
14
14
  license text is included in this repository at `licenses/ELKJS-EPL-2.0.md` and
15
15
  is available from the upstream project.
16
+
17
+ The standalone SVG exporter bundles LinkeDOM, MathJax, and the supporting
18
+ packages listed with their licenses in
19
+ [SVG-export-dependencies.md](licenses/SVG-export-dependencies.md).
@@ -119,3 +119,75 @@ markdown_extensions:
119
119
  class: language-feynman
120
120
  format: !!python/name:pymdownx.superfences.fence_code_format
121
121
  ```
122
+
123
+ ### Python-Markdown and other HTML renderers
124
+
125
+ Any HTML page can render a `feynman` fence if its Markdown engine emits
126
+ `<pre><code class="language-feynman">…</code></pre>` and the page loads the
127
+ MarkFeyn bundle. Python-Markdown's `fenced_code` extension does this by default.
128
+
129
+ ```sh
130
+ python -m pip install markfeyn Markdown
131
+ python -m markfeyn copy-asset feynman-diagrams.js
132
+ ```
133
+
134
+ Save this as `build.py` and run `python build.py`. Open the generated
135
+ `index.html` alongside the copied bundle.
136
+
137
+ ````python
138
+ from pathlib import Path
139
+
140
+ from markdown import markdown
141
+
142
+ source = """# Photon exchange
143
+
144
+ ```feynman
145
+ incoming a
146
+ outgoing b
147
+ photon a->b
148
+ label a:e^- b:e^- a->b:\\gamma
149
+ ```
150
+ """
151
+
152
+ body = markdown(source, extensions=["fenced_code"])
153
+ Path("index.html").write_text(
154
+ '<!doctype html><meta charset="utf-8"><title>Photon exchange</title>'
155
+ '<script defer src="feynman-diagrams.js"></script>'
156
+ f"<main id='content'>{body}</main>",
157
+ encoding="utf-8",
158
+ )
159
+ ````
160
+
161
+ If your application inserts Markdown-generated HTML after page load, call
162
+ `renderAll` on the container after updating it. Load the bundle before this
163
+ code runs and pass HTML from a trusted source or your application's sanitizer.
164
+
165
+ ```javascript
166
+ function showRenderedMarkdown(container, html) {
167
+ container.innerHTML = html;
168
+ FeynmanDiagrams.renderAll(container);
169
+ }
170
+ ```
171
+
172
+ If a syntax highlighter takes over unknown code languages, configure it to
173
+ preserve `language-feynman` on the `code` or `pre` element and leave the
174
+ diagram source intact.
175
+
176
+ ## Export a standalone SVG
177
+
178
+ For a source checkout, run `npm ci` and `npm run build:js` before installing
179
+ MarkFeyn. Put Node.js 22 or newer on `PATH`. The export command
180
+ uses the renderer and MathJax bundled in the Python package, so it runs
181
+ offline without a browser or an npm install.
182
+
183
+ Save one diagram's source in `diagram.feynman` without the Markdown fences.
184
+
185
+ ```sh
186
+ markfeyn render diagram.feynman -o diagram.svg
187
+ python -m markfeyn render - < diagram.feynman > diagram.svg
188
+ ```
189
+
190
+ Use `-` as the input path to read stdin. SVG goes to stdout unless you pass
191
+ `-o`. Invalid diagram source or math labels produce a diagnostic on stderr
192
+ and a nonzero exit status. Embed the resulting file in Markdown as
193
+ `![Photon exchange](diagram.svg)`.
@@ -0,0 +1,413 @@
1
+ # Standalone SVG exporter dependencies
2
+
3
+ ## boolbase 1.0.0 (ISC)
4
+
5
+ Copyright (c) 2014-2015, Felix Boehm <me@feedic.com>
6
+
7
+ Permission to use, copy, modify, and/or distribute this software for any
8
+ purpose with or without fee is hereby granted, provided that the above
9
+ copyright notice and this permission notice appear in all copies.
10
+
11
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18
+
19
+ ## css-select 5.2.2 (BSD-2-Clause)
20
+
21
+ Copyright (c) Felix Böhm
22
+ All rights reserved.
23
+
24
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
25
+
26
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
27
+
28
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
29
+
30
+ THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
31
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
+
33
+ ## css-what 6.2.2 (BSD-2-Clause)
34
+
35
+ Copyright (c) Felix Böhm
36
+ All rights reserved.
37
+
38
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
39
+
40
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
41
+
42
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
43
+
44
+ THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
45
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
46
+
47
+ ## cssom 0.5.0 (MIT)
48
+
49
+ Copyright (c) Nikita Vasilyev
50
+
51
+ Permission is hereby granted, free of charge, to any person obtaining
52
+ a copy of this software and associated documentation files (the
53
+ "Software"), to deal in the Software without restriction, including
54
+ without limitation the rights to use, copy, modify, merge, publish,
55
+ distribute, sublicense, and/or sell copies of the Software, and to
56
+ permit persons to whom the Software is furnished to do so, subject to
57
+ the following conditions:
58
+
59
+ The above copyright notice and this permission notice shall be
60
+ included in all copies or substantial portions of the Software.
61
+
62
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
63
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
64
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
65
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
66
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
67
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
68
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
69
+
70
+ ## dom-serializer 2.0.0 (MIT)
71
+
72
+ License
73
+
74
+ (The MIT License)
75
+
76
+ Copyright (c) 2014 The cheeriojs contributors
77
+
78
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
79
+
80
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
81
+
82
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
83
+
84
+ ## domelementtype 2.3.0 (BSD-2-Clause)
85
+
86
+ Copyright (c) Felix Böhm
87
+ All rights reserved.
88
+
89
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
90
+
91
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
92
+
93
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
94
+
95
+ THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
96
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
97
+
98
+ ## domhandler 5.0.3 (BSD-2-Clause)
99
+
100
+ Copyright (c) Felix Böhm
101
+ All rights reserved.
102
+
103
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
104
+
105
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
106
+
107
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
108
+
109
+ THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
110
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
111
+
112
+ ## domutils 3.2.2 (BSD-2-Clause)
113
+
114
+ Copyright (c) Felix Böhm
115
+ All rights reserved.
116
+
117
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
118
+
119
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
120
+
121
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
122
+
123
+ THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
124
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
125
+
126
+ ## entities 4.5.0 (BSD-2-Clause)
127
+
128
+ Copyright (c) Felix Böhm
129
+ All rights reserved.
130
+
131
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
132
+
133
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
134
+
135
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
136
+
137
+ THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
138
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
139
+
140
+ ## htmlparser2 10.1.0 (MIT)
141
+
142
+ Copyright 2010, 2011, Chris Winberry <chris@winberry.net>. All rights reserved.
143
+ Permission is hereby granted, free of charge, to any person obtaining a copy
144
+ of this software and associated documentation files (the "Software"), to
145
+ deal in the Software without restriction, including without limitation the
146
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
147
+ sell copies of the Software, and to permit persons to whom the Software is
148
+ furnished to do so, subject to the following conditions:
149
+
150
+ The above copyright notice and this permission notice shall be included in
151
+ all copies or substantial portions of the Software.
152
+
153
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
154
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
155
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
156
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
157
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
158
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
159
+ IN THE SOFTWARE.
160
+
161
+ ## linkedom 0.18.12 (ISC)
162
+
163
+ ISC License
164
+
165
+ Copyright (c) 2021, Andrea Giammarchi, @WebReflection
166
+
167
+ Permission to use, copy, modify, and/or distribute this software for any
168
+ purpose with or without fee is hereby granted, provided that the above
169
+ copyright notice and this permission notice appear in all copies.
170
+
171
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
172
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
173
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
174
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
175
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
176
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
177
+ PERFORMANCE OF THIS SOFTWARE.
178
+
179
+ ## mathjax-full 3.2.2 (Apache-2.0)
180
+
181
+ Apache License
182
+ Version 2.0, January 2004
183
+ http://www.apache.org/licenses/
184
+
185
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
186
+
187
+ 1. Definitions.
188
+
189
+ "License" shall mean the terms and conditions for use, reproduction,
190
+ and distribution as defined by Sections 1 through 9 of this document.
191
+
192
+ "Licensor" shall mean the copyright owner or entity authorized by
193
+ the copyright owner that is granting the License.
194
+
195
+ "Legal Entity" shall mean the union of the acting entity and all
196
+ other entities that control, are controlled by, or are under common
197
+ control with that entity. For the purposes of this definition,
198
+ "control" means (i) the power, direct or indirect, to cause the
199
+ direction or management of such entity, whether by contract or
200
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
201
+ outstanding shares, or (iii) beneficial ownership of such entity.
202
+
203
+ "You" (or "Your") shall mean an individual or Legal Entity
204
+ exercising permissions granted by this License.
205
+
206
+ "Source" form shall mean the preferred form for making modifications,
207
+ including but not limited to software source code, documentation
208
+ source, and configuration files.
209
+
210
+ "Object" form shall mean any form resulting from mechanical
211
+ transformation or translation of a Source form, including but
212
+ not limited to compiled object code, generated documentation,
213
+ and conversions to other media types.
214
+
215
+ "Work" shall mean the work of authorship, whether in Source or
216
+ Object form, made available under the License, as indicated by a
217
+ copyright notice that is included in or attached to the work
218
+ (an example is provided in the Appendix below).
219
+
220
+ "Derivative Works" shall mean any work, whether in Source or Object
221
+ form, that is based on (or derived from) the Work and for which the
222
+ editorial revisions, annotations, elaborations, or other modifications
223
+ represent, as a whole, an original work of authorship. For the purposes
224
+ of this License, Derivative Works shall not include works that remain
225
+ separable from, or merely link (or bind by name) to the interfaces of,
226
+ the Work and Derivative Works thereof.
227
+
228
+ "Contribution" shall mean any work of authorship, including
229
+ the original version of the Work and any modifications or additions
230
+ to that Work or Derivative Works thereof, that is intentionally
231
+ submitted to Licensor for inclusion in the Work by the copyright owner
232
+ or by an individual or Legal Entity authorized to submit on behalf of
233
+ the copyright owner. For the purposes of this definition, "submitted"
234
+ means any form of electronic, verbal, or written communication sent
235
+ to the Licensor or its representatives, including but not limited to
236
+ communication on electronic mailing lists, source code control systems,
237
+ and issue tracking systems that are managed by, or on behalf of, the
238
+ Licensor for the purpose of discussing and improving the Work, but
239
+ excluding communication that is conspicuously marked or otherwise
240
+ designated in writing by the copyright owner as "Not a Contribution."
241
+
242
+ "Contributor" shall mean Licensor and any individual or Legal Entity
243
+ on behalf of whom a Contribution has been received by Licensor and
244
+ subsequently incorporated within the Work.
245
+
246
+ 2. Grant of Copyright License. Subject to the terms and conditions of
247
+ this License, each Contributor hereby grants to You a perpetual,
248
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
249
+ copyright license to reproduce, prepare Derivative Works of,
250
+ publicly display, publicly perform, sublicense, and distribute the
251
+ Work and such Derivative Works in Source or Object form.
252
+
253
+ 3. Grant of Patent License. Subject to the terms and conditions of
254
+ this License, each Contributor hereby grants to You a perpetual,
255
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
256
+ (except as stated in this section) patent license to make, have made,
257
+ use, offer to sell, sell, import, and otherwise transfer the Work,
258
+ where such license applies only to those patent claims licensable
259
+ by such Contributor that are necessarily infringed by their
260
+ Contribution(s) alone or by combination of their Contribution(s)
261
+ with the Work to which such Contribution(s) was submitted. If You
262
+ institute patent litigation against any entity (including a
263
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
264
+ or a Contribution incorporated within the Work constitutes direct
265
+ or contributory patent infringement, then any patent licenses
266
+ granted to You under this License for that Work shall terminate
267
+ as of the date such litigation is filed.
268
+
269
+ 4. Redistribution. You may reproduce and distribute copies of the
270
+ Work or Derivative Works thereof in any medium, with or without
271
+ modifications, and in Source or Object form, provided that You
272
+ meet the following conditions:
273
+
274
+ (a) You must give any other recipients of the Work or
275
+ Derivative Works a copy of this License; and
276
+
277
+ (b) You must cause any modified files to carry prominent notices
278
+ stating that You changed the files; and
279
+
280
+ (c) You must retain, in the Source form of any Derivative Works
281
+ that You distribute, all copyright, patent, trademark, and
282
+ attribution notices from the Source form of the Work,
283
+ excluding those notices that do not pertain to any part of
284
+ the Derivative Works; and
285
+
286
+ (d) If the Work includes a "NOTICE" text file as part of its
287
+ distribution, then any Derivative Works that You distribute must
288
+ include a readable copy of the attribution notices contained
289
+ within such NOTICE file, excluding those notices that do not
290
+ pertain to any part of the Derivative Works, in at least one
291
+ of the following places: within a NOTICE text file distributed
292
+ as part of the Derivative Works; within the Source form or
293
+ documentation, if provided along with the Derivative Works; or,
294
+ within a display generated by the Derivative Works, if and
295
+ wherever such third-party notices normally appear. The contents
296
+ of the NOTICE file are for informational purposes only and
297
+ do not modify the License. You may add Your own attribution
298
+ notices within Derivative Works that You distribute, alongside
299
+ or as an addendum to the NOTICE text from the Work, provided
300
+ that such additional attribution notices cannot be construed
301
+ as modifying the License.
302
+
303
+ You may add Your own copyright statement to Your modifications and
304
+ may provide additional or different license terms and conditions
305
+ for use, reproduction, or distribution of Your modifications, or
306
+ for any such Derivative Works as a whole, provided Your use,
307
+ reproduction, and distribution of the Work otherwise complies with
308
+ the conditions stated in this License.
309
+
310
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
311
+ any Contribution intentionally submitted for inclusion in the Work
312
+ by You to the Licensor shall be under the terms and conditions of
313
+ this License, without any additional terms or conditions.
314
+ Notwithstanding the above, nothing herein shall supersede or modify
315
+ the terms of any separate license agreement you may have executed
316
+ with Licensor regarding such Contributions.
317
+
318
+ 6. Trademarks. This License does not grant permission to use the trade
319
+ names, trademarks, service marks, or product names of the Licensor,
320
+ except as required for reasonable and customary use in describing the
321
+ origin of the Work and reproducing the content of the NOTICE file.
322
+
323
+ 7. Disclaimer of Warranty. Unless required by applicable law or
324
+ agreed to in writing, Licensor provides the Work (and each
325
+ Contributor provides its Contributions) on an "AS IS" BASIS,
326
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
327
+ implied, including, without limitation, any warranties or conditions
328
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
329
+ PARTICULAR PURPOSE. You are solely responsible for determining the
330
+ appropriateness of using or redistributing the Work and assume any
331
+ risks associated with Your exercise of permissions under this License.
332
+
333
+ 8. Limitation of Liability. In no event and under no legal theory,
334
+ whether in tort (including negligence), contract, or otherwise,
335
+ unless required by applicable law (such as deliberate and grossly
336
+ negligent acts) or agreed to in writing, shall any Contributor be
337
+ liable to You for damages, including any direct, indirect, special,
338
+ incidental, or consequential damages of any character arising as a
339
+ result of this License or out of the use or inability to use the
340
+ Work (including but not limited to damages for loss of goodwill,
341
+ work stoppage, computer failure or malfunction, or any and all
342
+ other commercial damages or losses), even if such Contributor
343
+ has been advised of the possibility of such damages.
344
+
345
+ 9. Accepting Warranty or Additional Liability. While redistributing
346
+ the Work or Derivative Works thereof, You may choose to offer,
347
+ and charge a fee for, acceptance of support, warranty, indemnity,
348
+ or other liability obligations and/or rights consistent with this
349
+ License. However, in accepting such obligations, You may act only
350
+ on Your own behalf and on Your sole responsibility, not on behalf
351
+ of any other Contributor, and only if You agree to indemnify,
352
+ defend, and hold each Contributor harmless for any liability
353
+ incurred by, or claims asserted against, such Contributor by reason
354
+ of your accepting any such warranty or additional liability.
355
+
356
+ END OF TERMS AND CONDITIONS
357
+
358
+ APPENDIX: How to apply the Apache License to your work.
359
+
360
+ To apply the Apache License to your work, attach the following
361
+ boilerplate notice, with the fields enclosed by brackets "[]"
362
+ replaced with your own identifying information. (Don't include
363
+ the brackets!) The text should be enclosed in the appropriate
364
+ comment syntax for the file format. We also recommend that a
365
+ file or class name and description of purpose be included on the
366
+ same "printed page" as the copyright notice for easier
367
+ identification within third-party archives.
368
+
369
+ Copyright [yyyy] [name of copyright owner]
370
+
371
+ Licensed under the Apache License, Version 2.0 (the "License");
372
+ you may not use this file except in compliance with the License.
373
+ You may obtain a copy of the License at
374
+
375
+ http://www.apache.org/licenses/LICENSE-2.0
376
+
377
+ Unless required by applicable law or agreed to in writing, software
378
+ distributed under the License is distributed on an "AS IS" BASIS,
379
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
380
+ See the License for the specific language governing permissions and
381
+ limitations under the License.
382
+
383
+ ## nth-check 2.1.1 (BSD-2-Clause)
384
+
385
+ Copyright (c) Felix Böhm
386
+ All rights reserved.
387
+
388
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
389
+
390
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
391
+
392
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
393
+
394
+ THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS,
395
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
396
+
397
+ ## uhyphen 0.2.0 (ISC)
398
+
399
+ ISC License
400
+
401
+ Copyright (c) 2020, Andrea Giammarchi, @WebReflection
402
+
403
+ Permission to use, copy, modify, and/or distribute this software for any
404
+ purpose with or without fee is hereby granted, provided that the above
405
+ copyright notice and this permission notice appear in all copies.
406
+
407
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
408
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
409
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
410
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
411
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
412
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
413
+ PERFORMANCE OF THIS SOFTWARE.
@@ -1,19 +1,20 @@
1
1
  {
2
2
  "name": "markfeyn",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "markfeyn",
9
- "version": "0.1.0",
9
+ "version": "0.2.0",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "elkjs": "^0.11.1"
13
13
  },
14
14
  "devDependencies": {
15
15
  "esbuild": "^0.28.1",
16
- "linkedom": "^0.18.12"
16
+ "linkedom": "^0.18.12",
17
+ "mathjax-full": "^3.2.2"
17
18
  }
18
19
  },
19
20
  "node_modules/@esbuild/aix-ppc64": {
@@ -458,6 +459,16 @@
458
459
  "node": ">=18"
459
460
  }
460
461
  },
462
+ "node_modules/@xmldom/xmldom": {
463
+ "version": "0.9.12",
464
+ "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.12.tgz",
465
+ "integrity": "sha512-5AXjrcMClTryPe9LgZrygpB1lj7s0S9E0+W+AHaVKAVyHanafK86iPSvG5xHVSp/jC+VH1UXu0TAEmY279xH7A==",
466
+ "dev": true,
467
+ "license": "MIT",
468
+ "engines": {
469
+ "node": ">=14.6"
470
+ }
471
+ },
461
472
  "node_modules/boolbase": {
462
473
  "version": "1.0.0",
463
474
  "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
@@ -465,6 +476,16 @@
465
476
  "dev": true,
466
477
  "license": "ISC"
467
478
  },
479
+ "node_modules/commander": {
480
+ "version": "13.1.0",
481
+ "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz",
482
+ "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==",
483
+ "dev": true,
484
+ "license": "MIT",
485
+ "engines": {
486
+ "node": ">=18"
487
+ }
488
+ },
468
489
  "node_modules/css-select": {
469
490
  "version": "5.2.2",
470
491
  "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
@@ -622,6 +643,16 @@
622
643
  "@esbuild/win32-x64": "0.28.1"
623
644
  }
624
645
  },
646
+ "node_modules/esm": {
647
+ "version": "3.2.25",
648
+ "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
649
+ "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
650
+ "dev": true,
651
+ "license": "MIT",
652
+ "engines": {
653
+ "node": ">=6"
654
+ }
655
+ },
625
656
  "node_modules/html-escaper": {
626
657
  "version": "3.0.3",
627
658
  "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz",
@@ -687,6 +718,34 @@
687
718
  }
688
719
  }
689
720
  },
721
+ "node_modules/mathjax-full": {
722
+ "version": "3.2.2",
723
+ "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz",
724
+ "integrity": "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==",
725
+ "deprecated": "Version 4 replaces this package with the scoped package @mathjax/src",
726
+ "dev": true,
727
+ "license": "Apache-2.0",
728
+ "dependencies": {
729
+ "esm": "^3.2.25",
730
+ "mhchemparser": "^4.1.0",
731
+ "mj-context-menu": "^0.6.1",
732
+ "speech-rule-engine": "^4.0.6"
733
+ }
734
+ },
735
+ "node_modules/mhchemparser": {
736
+ "version": "4.2.1",
737
+ "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz",
738
+ "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==",
739
+ "dev": true,
740
+ "license": "Apache-2.0"
741
+ },
742
+ "node_modules/mj-context-menu": {
743
+ "version": "0.6.1",
744
+ "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz",
745
+ "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==",
746
+ "dev": true,
747
+ "license": "Apache-2.0"
748
+ },
690
749
  "node_modules/nth-check": {
691
750
  "version": "2.1.1",
692
751
  "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
@@ -700,12 +759,34 @@
700
759
  "url": "https://github.com/fb55/nth-check?sponsor=1"
701
760
  }
702
761
  },
762
+ "node_modules/speech-rule-engine": {
763
+ "version": "4.1.5",
764
+ "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.1.5.tgz",
765
+ "integrity": "sha512-Nx4d44Ca0FQ4ve9WS8Ja6w2zkI9q7JvH1+3nI9zh4aU/vICXTZWzzYR4MyYRkk/5vcF7OMkwjYkX3qrfahfOgg==",
766
+ "dev": true,
767
+ "license": "Apache-2.0",
768
+ "dependencies": {
769
+ "@xmldom/xmldom": "^0.9.12",
770
+ "commander": "13.1.0",
771
+ "wicked-good-xpath": "1.3.0"
772
+ },
773
+ "bin": {
774
+ "sre": "bin/sre"
775
+ }
776
+ },
703
777
  "node_modules/uhyphen": {
704
778
  "version": "0.2.0",
705
779
  "resolved": "https://registry.npmjs.org/uhyphen/-/uhyphen-0.2.0.tgz",
706
780
  "integrity": "sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==",
707
781
  "dev": true,
708
782
  "license": "ISC"
783
+ },
784
+ "node_modules/wicked-good-xpath": {
785
+ "version": "1.3.0",
786
+ "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz",
787
+ "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==",
788
+ "dev": true,
789
+ "license": "MIT"
709
790
  }
710
791
  }
711
792
  }