diff-grok 1.0.9 → 1.0.10

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 (203) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +29 -0
  2. package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  3. package/.github/PULL_REQUEST_TEMPLATE.md +22 -0
  4. package/.github/workflows/deploy-docs.yml +15 -0
  5. package/CONTRIBUTING.md +74 -0
  6. package/README.MD +183 -5
  7. package/docs/.nojekyll +1 -0
  8. package/docs/assets/hierarchy.js +1 -0
  9. package/docs/assets/highlight.css +99 -0
  10. package/docs/assets/icons.js +18 -0
  11. package/docs/assets/icons.svg +1 -0
  12. package/docs/assets/main.js +60 -0
  13. package/docs/assets/navigation.js +1 -0
  14. package/docs/assets/search.js +1 -0
  15. package/docs/assets/style.css +1633 -0
  16. package/docs/classes/BasicModelPipelineCreator.html +10 -0
  17. package/docs/classes/Callback.html +7 -0
  18. package/docs/classes/CyclicModelPipelineCreator.html +10 -0
  19. package/docs/classes/IterCheckerCallback.html +8 -0
  20. package/docs/classes/PipelineCreator.html +6 -0
  21. package/docs/classes/TimeCheckerCallback.html +8 -0
  22. package/docs/classes/UpdatesModelPipelineCreator.html +10 -0
  23. package/docs/functions/applyPipeline.html +9 -0
  24. package/docs/functions/getCallback.html +3 -0
  25. package/docs/functions/getIVP.html +6 -0
  26. package/docs/functions/getInputVector.html +2 -0
  27. package/docs/functions/getIvp2WebWorker.html +6 -0
  28. package/docs/functions/getJScode.html +6 -0
  29. package/docs/functions/getOutputNames.html +4 -0
  30. package/docs/functions/getPipelineCreator.html +7 -0
  31. package/docs/functions/mrt.html +11 -0
  32. package/docs/functions/printE5.html +76 -0
  33. package/docs/functions/printHires.html +76 -0
  34. package/docs/functions/printOrego.html +66 -0
  35. package/docs/functions/printPollution.html +163 -0
  36. package/docs/functions/printRobertson.html +60 -0
  37. package/docs/functions/printVdpol.html +66 -0
  38. package/docs/functions/ros34prw.html +8 -0
  39. package/docs/functions/ros3prw.html +8 -0
  40. package/docs/functions/solveIvp.html +5 -0
  41. package/docs/hierarchy.html +1 -0
  42. package/docs/index.html +683 -0
  43. package/docs/media/CONTRIBUTING.md +74 -0
  44. package/docs/media/POLL.png +0 -0
  45. package/docs/media/VDPOL.png +0 -0
  46. package/docs/media/acid-prod.gif +0 -0
  47. package/docs/media/basic-use.js +40 -0
  48. package/docs/media/basic-use.js.map +1 -0
  49. package/docs/media/basic-use.ts +44 -0
  50. package/docs/media/check-methods.js +59 -0
  51. package/docs/media/check-methods.js.map +1 -0
  52. package/docs/media/check-methods.ts +81 -0
  53. package/docs/media/corr-probs.js +132 -0
  54. package/docs/media/corr-probs.js.map +1 -0
  55. package/docs/media/corr-probs.ts +155 -0
  56. package/docs/media/cyclic-model.js +100 -0
  57. package/docs/media/cyclic-model.js.map +1 -0
  58. package/docs/media/cyclic-model.ts +110 -0
  59. package/docs/media/e5.js +36 -0
  60. package/docs/media/e5.js.map +1 -0
  61. package/docs/media/e5.ts +36 -0
  62. package/docs/media/hires.js +39 -0
  63. package/docs/media/hires.js.map +1 -0
  64. package/docs/media/hires.ts +40 -0
  65. package/docs/media/model-updates.js +112 -0
  66. package/docs/media/model-updates.js.map +1 -0
  67. package/docs/media/model-updates.ts +122 -0
  68. package/docs/media/orego.js +24 -0
  69. package/docs/media/orego.js.map +1 -0
  70. package/docs/media/orego.ts +25 -0
  71. package/docs/media/pipeline-use.js +87 -0
  72. package/docs/media/pipeline-use.js.map +1 -0
  73. package/docs/media/pipeline-use.ts +98 -0
  74. package/docs/media/pollution.js +132 -0
  75. package/docs/media/pollution.js.map +1 -0
  76. package/docs/media/pollution.ts +133 -0
  77. package/docs/media/print-benchmark.js +581 -0
  78. package/docs/media/print-benchmark.js.map +1 -0
  79. package/docs/media/print-benchmark.ts +594 -0
  80. package/docs/media/robertson.js +19 -0
  81. package/docs/media/robertson.js.map +1 -0
  82. package/docs/media/robertson.ts +19 -0
  83. package/docs/media/scripting.js +30 -0
  84. package/docs/media/scripting.js.map +1 -0
  85. package/docs/media/scripting.ts +35 -0
  86. package/docs/media/vdpol.js +17 -0
  87. package/docs/media/vdpol.js.map +1 -0
  88. package/docs/media/vdpol.ts +17 -0
  89. package/docs/modules.html +1 -0
  90. package/docs/types/Arg.html +12 -0
  91. package/docs/types/DifEqs.html +8 -0
  92. package/docs/types/Func.html +7 -0
  93. package/docs/types/IVP.html +40 -0
  94. package/docs/types/IVP2WebWorker.html +12 -0
  95. package/docs/types/Input.html +8 -0
  96. package/docs/types/Loop.html +7 -0
  97. package/docs/types/ODEs.html +31 -0
  98. package/docs/types/Output.html +6 -0
  99. package/docs/types/Pipeline.html +6 -0
  100. package/docs/types/SolverOptions.html +8 -0
  101. package/docs/types/Update.html +9 -0
  102. package/docs/types/Wrapper.html +8 -0
  103. package/images/POLL.png +0 -0
  104. package/images/VDPOL.png +0 -0
  105. package/index.js +2 -2
  106. package/index.js.map +1 -1
  107. package/index.ts +6 -5
  108. package/package.json +2 -1
  109. package/src/examples/check-methods.js +23 -9
  110. package/src/examples/check-methods.js.map +1 -1
  111. package/src/examples/check-methods.ts +28 -9
  112. package/src/examples/corr-probs.js +3 -1
  113. package/src/examples/corr-probs.js.map +1 -1
  114. package/src/examples/corr-probs.ts +7 -3
  115. package/src/examples/e5.js +6 -0
  116. package/src/examples/e5.js.map +1 -1
  117. package/src/examples/e5.ts +7 -0
  118. package/src/examples/hires.js +10 -0
  119. package/src/examples/hires.js.map +1 -1
  120. package/src/examples/hires.ts +11 -0
  121. package/src/examples/index.js +21 -7
  122. package/src/examples/index.js.map +1 -1
  123. package/src/examples/index.ts +23 -7
  124. package/src/examples/orego.js +5 -0
  125. package/src/examples/orego.js.map +1 -1
  126. package/src/examples/orego.ts +6 -0
  127. package/src/examples/pollution.js +22 -0
  128. package/src/examples/pollution.js.map +1 -1
  129. package/src/examples/pollution.ts +23 -0
  130. package/src/examples/print-benchmark.js +581 -0
  131. package/src/examples/print-benchmark.js.map +1 -0
  132. package/src/examples/print-benchmark.ts +594 -0
  133. package/src/examples/robertson.js +6 -1
  134. package/src/examples/robertson.js.map +1 -1
  135. package/src/examples/robertson.ts +7 -1
  136. package/src/examples/scripting.js +1 -1
  137. package/src/examples/scripting.js.map +1 -1
  138. package/src/examples/scripting.ts +1 -1
  139. package/src/examples/vdpol.js +4 -0
  140. package/src/examples/vdpol.js.map +1 -1
  141. package/src/examples/vdpol.ts +5 -0
  142. package/src/pipeline/basic-pipeline-creator.js +96 -1
  143. package/src/pipeline/basic-pipeline-creator.js.map +1 -1
  144. package/src/pipeline/basic-pipeline-creator.ts +97 -1
  145. package/src/pipeline/loops-pipeline-creator.js +115 -2
  146. package/src/pipeline/loops-pipeline-creator.js.map +1 -1
  147. package/src/pipeline/loops-pipeline-creator.ts +116 -2
  148. package/src/pipeline/output.js +7 -2
  149. package/src/pipeline/output.js.map +1 -1
  150. package/src/pipeline/output.ts +7 -2
  151. package/src/pipeline/pipeline-creator.js.map +1 -1
  152. package/src/pipeline/pipeline-creator.ts +4 -0
  153. package/src/pipeline/pipeline.js +193 -2
  154. package/src/pipeline/pipeline.js.map +1 -1
  155. package/src/pipeline/pipeline.ts +206 -4
  156. package/src/pipeline/updates-pipeline-creator.js +130 -2
  157. package/src/pipeline/updates-pipeline-creator.js.map +1 -1
  158. package/src/pipeline/updates-pipeline-creator.ts +131 -2
  159. package/src/scripting-tools/constants.js +18 -4
  160. package/src/scripting-tools/constants.js.map +1 -1
  161. package/src/scripting-tools/constants.ts +22 -4
  162. package/src/scripting-tools/index.js.map +1 -1
  163. package/src/scripting-tools/index.ts +3 -2
  164. package/src/scripting-tools/model-error.js +3 -1
  165. package/src/scripting-tools/model-error.js.map +1 -1
  166. package/src/scripting-tools/model-error.ts +3 -1
  167. package/src/scripting-tools/scripting-tools.js +139 -9
  168. package/src/scripting-tools/scripting-tools.js.map +1 -1
  169. package/src/scripting-tools/scripting-tools.ts +228 -21
  170. package/src/solver-tools/callbacks/callback-base.js +2 -0
  171. package/src/solver-tools/callbacks/callback-base.js.map +1 -1
  172. package/src/solver-tools/callbacks/callback-base.ts +4 -0
  173. package/src/solver-tools/callbacks/callback-tools.js +3 -1
  174. package/src/solver-tools/callbacks/callback-tools.js.map +1 -1
  175. package/src/solver-tools/callbacks/callback-tools.ts +3 -1
  176. package/src/solver-tools/callbacks/iter-checker-callback.js +4 -0
  177. package/src/solver-tools/callbacks/iter-checker-callback.js.map +1 -1
  178. package/src/solver-tools/callbacks/iter-checker-callback.ts +4 -0
  179. package/src/solver-tools/callbacks/time-checker-callback.js +4 -0
  180. package/src/solver-tools/callbacks/time-checker-callback.js.map +1 -1
  181. package/src/solver-tools/callbacks/time-checker-callback.ts +4 -0
  182. package/src/solver-tools/index.js +3 -0
  183. package/src/solver-tools/index.js.map +1 -1
  184. package/src/solver-tools/index.ts +3 -0
  185. package/src/solver-tools/mrt-method.js +40 -1
  186. package/src/solver-tools/mrt-method.js.map +1 -1
  187. package/src/solver-tools/mrt-method.ts +40 -1
  188. package/src/solver-tools/ros34prw-method.js +39 -1
  189. package/src/solver-tools/ros34prw-method.js.map +1 -1
  190. package/src/solver-tools/ros34prw-method.ts +39 -1
  191. package/src/solver-tools/ros3prw-method.js +39 -1
  192. package/src/solver-tools/ros3prw-method.js.map +1 -1
  193. package/src/solver-tools/ros3prw-method.ts +39 -1
  194. package/src/solver-tools/solver-defs.js +9 -3
  195. package/src/solver-tools/solver-defs.js.map +1 -1
  196. package/src/solver-tools/solver-defs.ts +85 -7
  197. package/src/worker-tools/scripting.js +95 -1
  198. package/src/worker-tools/scripting.js.map +1 -1
  199. package/src/worker-tools/scripting.ts +104 -2
  200. package/src/worker-tools/solving.js +5 -1
  201. package/src/worker-tools/solving.js.map +1 -1
  202. package/src/worker-tools/solving.ts +5 -1
  203. package/typedoc.json +8 -0
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: Bug report
3
+ about: Report a bug in diff-grok
4
+ title: "[BUG] "
5
+ labels: bug
6
+ assignees: ""
7
+
8
+ ---
9
+
10
+ **What happened?**
11
+ A clear and concise description of the problem.
12
+
13
+ **How to reproduce?**
14
+ Provide a minimal reproducible example (code snippet, inputs, parameters, Node/TS version, OS).
15
+
16
+ **What did you expect to happen?**
17
+ Describe the expected behavior.
18
+
19
+ **What actually happened?**
20
+ Describe the actual behavior, error messages, stack trace, wrong output, etc.
21
+
22
+ **Environment:**
23
+ - diff-grok version:
24
+ - Node / TypeScript version:
25
+ - OS / Platform:
26
+ - Additional context (e.g. dependency versions):
27
+
28
+ (optional) **Example / Test case:**
29
+ Provide a minimal code snippet or scenario where bug occurs.
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest a new feature or improvement
4
+ title: "[FEATURE] "
5
+ labels: enhancement
6
+ assignees: ""
7
+
8
+ ---
9
+
10
+ **What problem would this feature solve?**
11
+ Describe the motivation, use-cases, or scenarios.
12
+
13
+ **Proposed solution / API idea (if any):**
14
+ Give a rough idea how this could look (function signature, parameters, return type, etc.).
15
+
16
+ **Alternatives / Workarounds:**
17
+ Describe any existing workaround or alternative that motivated this.
18
+
19
+ **Additional context (optional):**
20
+ Remarks, performance considerations, backward-compatibility notes, etc.
@@ -0,0 +1,22 @@
1
+ ## Description
2
+
3
+ Please describe what this PR does and why it is needed.
4
+
5
+ ## Related Issue(s) / Motivation
6
+
7
+ Closes / Addresses / References: #[issue number] (if applicable)
8
+
9
+ ## Type of change
10
+
11
+ - [ ] Bug fix
12
+ - [ ] New feature
13
+ - [ ] Update / improvement
14
+ - [ ] Documentation / example update
15
+
16
+ ## Checklist
17
+
18
+ - [ ] I have read CONTRIBUTING.md
19
+ - [ ] My code follows project style (lint + formatting)
20
+ - [ ] I added / updated tests or examples (if applicable)
21
+ - [ ] All existing tests pass
22
+ - [ ] I updated documentation / README (if applicable)
@@ -0,0 +1,15 @@
1
+ name: Deploy Docs
2
+ on:
3
+ push:
4
+ branches: [ main ]
5
+ jobs:
6
+ build:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v4
10
+ - run: npm ci
11
+ - run: npx typedoc
12
+ - uses: peaceiris/actions-gh-pages@v3
13
+ with:
14
+ github_token: ${{ secrets.GITHUB_TOKEN }}
15
+ publish_dir: ./docs
@@ -0,0 +1,74 @@
1
+ # Contributing to diff-grok 🚀
2
+
3
+ Thank you for your interest in contributing to diff-grok!
4
+ We welcome bug reports, documentation improvements, new features, and help with tests or examples.
5
+
6
+ ## ✅ How to contribute
7
+
8
+ ### Reporting issues
9
+
10
+ - Please search existing issues before creating a new one — your problem or idea may already be discussed or solved.
11
+ - When reporting a bug, include as much information as possible: error messages, minimal reproducible example, environment (Node version, OS, TypeScript version), and expected vs actual behavior.
12
+ - For feature requests — describe the motivation, proposed API (if relevant), and possible use-cases.
13
+
14
+ ### Submitting pull requests (PR)
15
+
16
+ 1. Fork the repository and create a branch:
17
+ `feat/your-feature` or `fix/bug-description` or `docs/update-readme`
18
+ 2. Make sure your code follows the existing style (TypeScript, ESLint, Prettier — as used in the repo).
19
+ 3. Add or update tests/examples if applicable.
20
+ 4. Run linter and tests before committing:
21
+
22
+ ```bash
23
+ npm install
24
+ npm run lint
25
+ npm test
26
+ ```
27
+
28
+ 5. Commit with a clear message. Prefer descriptive messages, e.g.:
29
+
30
+ ```bash
31
+ feat: add new Rosenbrock method,
32
+ fix: correct edge behaviour in solver,
33
+ docs: improve README example for ODE usage.
34
+ ```
35
+
36
+ 6. Rebase or merge main upstream if needed; make sure no conflicts remain.
37
+
38
+ 7. Create a PR, describing what you’ve changed and referencing related issues (if any).
39
+
40
+ ## 🧑‍💻 Code style & conventions
41
+
42
+ Project uses TypeScript.
43
+
44
+ Follow the existing coding conventions and folder structure.
45
+
46
+ Keep changes focused and minimal — avoid mixing unrelated changes (e.g. code + formatting + docs) in one PR.
47
+
48
+ Write clear, self-contained commits.
49
+
50
+ ## 📚 Documentation & Examples
51
+
52
+ If you fix or add public API — update README or add an example.
53
+
54
+ For new features — prefer adding minimal examples or tests demonstrating usage.
55
+
56
+ If you change behavior in edge cases — mention it clearly in docs/README.
57
+
58
+ ## 🗣 Communication & Etiquette
59
+
60
+ Use GitHub Issues and Pull Requests for all discussions.
61
+
62
+ Be respectful and patient: contributors and maintainers may be in different timezones or busy.
63
+
64
+ Before opening an Issue or PR — read existing content (README, issues, pull requests) to avoid duplicates.
65
+
66
+ ## 🔧 CI, Tests, and Quality
67
+
68
+ Ensure all existing tests pass; add new tests if adding functionality.
69
+
70
+ Code should pass linting/formatting checks.
71
+
72
+ If your change is substantial — consider adding a test or example illustrating it.
73
+
74
+ Thank you for helping make diff-grok better! 🎉
package/README.MD CHANGED
@@ -18,8 +18,34 @@ A lightweight TypeScript library for solving initial value problem ([IVP](https:
18
18
 
19
19
  ## Installation
20
20
 
21
+ To install via npm:
22
+
21
23
  ```bash
22
- npm i diff-grok
24
+ npm install diff-grok
25
+ ```
26
+
27
+ Minimal "Hello World" example:
28
+
29
+ ```typescript
30
+ // example.ts
31
+
32
+ import {ODEs, mrt} from 'diff-grok';
33
+
34
+ const task: ODEs = {
35
+ name: 'Example',
36
+ arg: {name: 't', start: 0, finish: 1, step: 0.1},
37
+ initial: [1, -1],
38
+ func: (t: number, y: Float64Array, output: Float64Array) => {
39
+ out[0] = y[0] - t;
40
+ },
41
+ tolerance: 1e-7,
42
+ solutionColNames: ['y(t)'],
43
+ };
44
+
45
+ const solution = mrt(task);
46
+
47
+ console.log('t:', solution[0]);
48
+ console.log('y(t):', solution[1]);
23
49
  ```
24
50
 
25
51
  ## Solving
@@ -74,7 +100,7 @@ y(0) = -1
74
100
  To solve it on the segment $[0, 2]$ with the step $0.01$ using the [MRT](https://doi.org/10.1137/S1064827594276424) method with the tolerance $10^{-7}$, we start with imports:
75
101
 
76
102
  ```typescript
77
- import {ODEs, mrt} from '@datagrok-ai/diff-studio-tools';
103
+ import {ODEs, mrt} from 'diff-grok';
78
104
  ```
79
105
 
80
106
  Next, we create
@@ -152,7 +178,39 @@ The MRT, ROS3PRw and ROS34PRw methods demonstrate the following time performance
152
178
  |[E5](https://archimede.uniba.it/~testset/report/e5.pdf)|[0, 10E+13]|40K|1E-6|14|17|8|
153
179
  |[Pollution](https://archimede.uniba.it/~testset/report/pollu.pdf)|[0, 60]|30K|1E-6|36|50|23|
154
180
 
155
- Run [check-methods.ts](./src/examples/check-methods.ts) to check results.
181
+ Maximum absolute deviations (MADs) from the reference solutions obtained using SciPy (Radau) are summarized in the table below:
182
+
183
+ |Problem|MRT|ROS3PRw|ROS34PRw|
184
+ |-|-|-|-|
185
+ |[Rober](https://archimede.uniba.it/~testset/report/rober.pdf)|1.87e-8|1.88e-8|1.88e-8|
186
+ |[HIRES](https://archimede.uniba.it/~testset/report/hires.pdf)|4.80e-11|1.05e-14|2.87e-14|
187
+ |[VDPOL](https://archimede.uniba.it/~testset/report/vdpol.pdf)|5.12e-4|5.12e-4|5.12e-4|
188
+ |[OREGO](https://archimede.uniba.it/~testset/report/orego.pdf)|3.05e-5|3.45e-7|2.31e-6|
189
+ |[E5](https://archimede.uniba.it/~testset/report/e5.pdf)|1.12e-19| 1.33e-19|3.40e-17|
190
+ |[Pollution](https://archimede.uniba.it/~testset/report/pollu.pdf)|4.06e-10|9.16e-12|1.58e-10|
191
+
192
+ Run [check-methods.ts](./src/examples/check-methods.ts) to reproduce these results (see [here](#examples) how to run scripts standalone).
193
+
194
+ The following charts compare the Diff Grok and Radau solutions for the **van der Pol** system:
195
+
196
+ ![Pollution](images/VDPOL.png)
197
+
198
+ The following graphs present a comparison of the Diff Grok and Radau solutions for the **Pollution** model, highlighting a portion of the functions:
199
+
200
+ ![Pollution](images/POLL.png)
201
+
202
+ Run benchmark models and find the reference solutions via the following links to the [Datagrok](https://public.datagrok.ai) platform:
203
+
204
+ |Problem|Diff Grok|Radau|
205
+ |-|-|-|
206
+ |Rober|[ROBER.ivp](https://public.datagrok.ai/file/System.AppData/DiffStudio/benchmarks/ROBER.ivp)|[ROBER.csv](https://public.datagrok.ai/file/System.AppData/DiffStudio/benchmarks/ROBER-using-Radau.csv?browse=files)|
207
+ |HIRES|[HIRES.ivp](https://public.datagrok.ai/file/System.AppData/DiffStudio/benchmarks/HIRES.ivp)|[HIRES.csv](https://public.datagrok.ai/file/System.AppData/DiffStudio/benchmarks/HIRES-using-Radau.csv?browse=files)|
208
+ |VDPOL|[VDPOL.ivp](https://public.datagrok.ai/file/System.AppData/DiffStudio/benchmarks/VDPOL.ivp)|[VDPOL.csv](https://public.datagrok.ai/file/System.AppData/DiffStudio/benchmarks/VANDERPOL-using-Radau.csv?browse=files)|
209
+ |OREGO|[OREGO.ivp](https://public.datagrok.ai/file/System.AppData/DiffStudio/benchmarks/OREGO.ivp)|[OREGO.csv](https://public.datagrok.ai/file/System.AppData/DiffStudio/benchmarks/OREGO-using-Radau.csv?browse=files)|
210
+ |E5|[E5.ivp](https://public.datagrok.ai/file/System.AppData/DiffStudio/benchmarks/E5.ivp)|[E5.csv](https://public.datagrok.ai/file/System.AppData/DiffStudio/benchmarks/E5-using-Radau.csv?browse=files)|
211
+ |Pollution|[POLL.ivp](https://public.datagrok.ai/file/System.AppData/DiffStudio/benchmarks/POLL.ivp)|[POLL.csv](https://public.datagrok.ai/file/System.AppData/DiffStudio/benchmarks/POLL-using-Radau.csv?browse=files)|
212
+
213
+ In the file [print-benchmark.ts](./src/examples/print-benchmark.ts), you can find standalone functions that print the solutions of these problems to the console, as well as Python scripts for computing the solutions using SciPy.
156
214
 
157
215
  ## Scripting
158
216
 
@@ -262,7 +320,7 @@ To transform any model to JavaScript code with an appropriate specification of `
262
320
  1. Import the parsing and code generating tools:
263
321
 
264
322
  ```typescript
265
- import {getIVP, getJScode} from '@datagrok-ai/diff-studio-tools';
323
+ import {getIVP, getJScode} from 'diff-grok';
266
324
  ```
267
325
 
268
326
  2. Define a string with a model specification, use a simple [model syntax](#model-components-and-syntax):
@@ -302,7 +360,7 @@ Diff Grok **pipeline** is a powerful feature for complex process simulation and
302
360
  1. Start with imports:
303
361
 
304
362
  ```typescript
305
- import * as DGL from '@datagrok/diff-grok';
363
+ import * as DGL from 'diff-grok';
306
364
  ```
307
365
 
308
366
  2. Define your model:
@@ -394,3 +452,123 @@ Learn more
394
452
  * Diff Studio example [models](https://datagrok.ai/help/compute/models)
395
453
  * [Parameters optimization](https://datagrok.ai/help/compute/function-analysis#parameter-optimization)
396
454
  * [Sensitivity analysis](https://datagrok.ai/help/compute/function-analysis#sensitivity-analysis)
455
+
456
+ ## Environment Requirements
457
+
458
+ ### Development & Build
459
+
460
+ * **Node.js ≥ 19.3.0** (required for development and building the library)
461
+ * **npm** or **yarn** package manager
462
+
463
+ ### Runtime Environments
464
+
465
+ #### Server-Side (Node.js)
466
+
467
+ * **Node.js ≥ 16.0.0** (for server-side usage)
468
+ * Requires support for ES modules
469
+ * `Float64Array` and typed arrays support (available since Node.js 0.10+)
470
+
471
+ #### Operating Systems
472
+
473
+ * Windows (x64, ARM64)
474
+ * macOS (Intel & Apple Silicon)
475
+ * Linux (most common distributions)
476
+
477
+ #### Browser Support
478
+
479
+ The library runs in all modern browsers with ES2015+ support. Key requirements:
480
+
481
+ * **ES Modules** (native `import`/`export`)
482
+ * **Typed Arrays** (`Float64Array`, `Uint8Array`)
483
+ * **WebWorkers** (for pipeline computations)
484
+ * **ArrayBuffer** support
485
+
486
+ | Browser | Minimum Version | Supported? | Notes |
487
+ | ---------------------- | --------------- | ---------- | ----------------------------------------------- |
488
+ | **Chrome** | 63+ | ✔️ Yes | Full ES2015+ and WebWorker support |
489
+ | **Firefox** | 60+ | ✔️ Yes | Full ES2015+ and WebWorker support |
490
+ | **Safari (macOS/iOS)** | 11.1+ | ✔️ Yes | Native ES module and WebWorker support |
491
+ | **Edge (Chromium)** | 79+ | ✔️ Yes | Same support level as Chrome |
492
+ | **Opera** | 50+ | ✔️ Yes | Chromium-based, full support |
493
+ | **Legacy Browsers** | - | ❌ No | IE 11, pre-Chromium Edge, old Android browsers |
494
+
495
+ **Browser Feature Requirements:**
496
+ * ES2015 (ES6) JavaScript support
497
+ * Native ES modules (`<script type="module">`)
498
+ * `Float64Array` and other typed arrays
499
+ * `WebWorker` API (for parallel computations)
500
+ * `Promise` support
501
+ * `Math` object with standard functions (`exp`, `sin`, `cos`, etc.)
502
+
503
+ **Notes:**
504
+ * For older browsers, consider using a transpiler (Babel) and bundler (Webpack/Rollup)
505
+ * TypeScript compilation target should be ES2015 or higher
506
+ * WebWorker support is required for pipeline computations; without it, computations run on the main thread
507
+
508
+ ### Bundler Configuration
509
+
510
+ When bundling for browsers, ensure:
511
+ * ES module output format is preserved or properly transformed
512
+ * TypedArray polyfills are not included (not needed for target browsers)
513
+ * WebWorker files are properly handled by your bundler
514
+
515
+ ### Polyfills
516
+
517
+ No polyfills required for target environments. All required features are natively supported in the minimum browser versions listed above.
518
+
519
+ ## Examples
520
+
521
+ Diff Grok contains a set of examples located in the folder [src/examples](./src/examples/):
522
+
523
+ |File|Features|
524
+ |-|-|
525
+ |[basic-use.ts](./src/examples/basic-use.ts)|Minimal "Hello World" example. Illustrates the use of the [MRT](https://doi.org/10.1137/S1064827594276424) method.|
526
+ |[check-methods.ts](./src/examples/check-methods.ts)| Checks the [performance](#performance) of numerical methods.|
527
+ |[corr-probs.ts](./src/examples/corr-probs.ts)|Solves a set of problems with exact solutions and evaluate the deviation.|
528
+ |[cyclic-model.ts](./src/examples/cyclic-model.ts)| Considers pharmacokinetic-pharmacodynamic (PK-PD) simulation and shows how to apply pipelines and cyclic models.|
529
+ |[model-updates.ts](./src/examples/model-updates.ts)|Considers gluconic acid (GA) production by Aspergillus niger modeling and shows how to apply pipelines and models with updates.|
530
+ |[pipeline-use.ts](./src/examples/pipeline-use.ts)|Considers modeling queues and shows shows how to apply pipelines and models with customized outputs.|
531
+ |[scripting.ts](./src/examples/scripting.ts)|Shows how to generate JS-script from Diff Grok model.|
532
+
533
+ To run examples standalone:
534
+
535
+ 1. Install TypeScript locally. If your project does not already include TypeScript:
536
+ ```bash
537
+ npm install --save-dev typescript
538
+ ```
539
+
540
+ 2. Create a tsconfig.json. If you do not have one yet:
541
+ ```bash
542
+ npx tsc --init
543
+ ```
544
+ Recommended configuration:
545
+ ```json
546
+ {
547
+ "compilerOptions": {
548
+ "target": "es6",
549
+ "lib": ["ES2022", "dom"],
550
+ "sourceMap": true,
551
+ "strict": true,
552
+ "moduleResolution": "node",
553
+ "types": ["jest", "node"],
554
+ "esModuleInterop": true,
555
+ "skipLibCheck": true,
556
+ }
557
+ }
558
+ ```
559
+
560
+ 3. Compile the TypeScript file:
561
+ ```bash
562
+ tsc src/examples/basic-use.ts
563
+ ```
564
+
565
+ 4. Run:
566
+ ```bash
567
+ node src/examples/basic-use.js
568
+ ```
569
+
570
+ ## Contributing
571
+
572
+ We welcome contributions of all kinds - bug reports, feature requests, documentation updates, and pull requests.
573
+
574
+ Before contributing, please read our [Contributing Guidelines](./CONTRIBUTING.md).
package/docs/.nojekyll ADDED
@@ -0,0 +1 @@
1
+ TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.
@@ -0,0 +1 @@
1
+ window.hierarchyData = "eJyVkj9rwzAQxb/LzUr/WCC7HuupQ6FDO5UMqnTFwmcpSOpQgr97LykFUZI4Wix89x6/x5P2EEPICfp3pUTz0G4FRPwkNNkFz+M9KHX4ej0j9DBoog9tJhAwOW+hv286AV+ReGdIp4Tp9k9zM+aZWHic8z4nuzmYNr8DXoyObETP8FaKTm4XAa0saE8Z4zCimfi4AnxCvpKBgV0JfHUzVgBPyNeBXHJBfHE7JOdxiKhziJdo/6Q19co7JWTTCCmPJfNvEeFRJ2eeg0WqCHPWtF4ABylf1Lehevx51xV8WV75287qjKk2wAXbWoJl+QF6ASdd"
@@ -0,0 +1,99 @@
1
+ :root {
2
+ --light-hl-0: #795E26;
3
+ --dark-hl-0: #DCDCAA;
4
+ --light-hl-1: #000000;
5
+ --dark-hl-1: #D4D4D4;
6
+ --light-hl-2: #A31515;
7
+ --dark-hl-2: #CE9178;
8
+ --light-hl-3: #008000;
9
+ --dark-hl-3: #6A9955;
10
+ --light-hl-4: #AF00DB;
11
+ --dark-hl-4: #CE92A4;
12
+ --light-hl-5: #001080;
13
+ --dark-hl-5: #9CDCFE;
14
+ --light-hl-6: #0000FF;
15
+ --dark-hl-6: #569CD6;
16
+ --light-hl-7: #0070C1;
17
+ --dark-hl-7: #4FC1FF;
18
+ --light-hl-8: #267F99;
19
+ --dark-hl-8: #4EC9B0;
20
+ --light-hl-9: #098658;
21
+ --dark-hl-9: #B5CEA8;
22
+ --light-hl-10: #0451A5;
23
+ --dark-hl-10: #9CDCFE;
24
+ --light-code-background: #FFFFFF;
25
+ --dark-code-background: #1E1E1E;
26
+ }
27
+
28
+ @media (prefers-color-scheme: light) { :root {
29
+ --hl-0: var(--light-hl-0);
30
+ --hl-1: var(--light-hl-1);
31
+ --hl-2: var(--light-hl-2);
32
+ --hl-3: var(--light-hl-3);
33
+ --hl-4: var(--light-hl-4);
34
+ --hl-5: var(--light-hl-5);
35
+ --hl-6: var(--light-hl-6);
36
+ --hl-7: var(--light-hl-7);
37
+ --hl-8: var(--light-hl-8);
38
+ --hl-9: var(--light-hl-9);
39
+ --hl-10: var(--light-hl-10);
40
+ --code-background: var(--light-code-background);
41
+ } }
42
+
43
+ @media (prefers-color-scheme: dark) { :root {
44
+ --hl-0: var(--dark-hl-0);
45
+ --hl-1: var(--dark-hl-1);
46
+ --hl-2: var(--dark-hl-2);
47
+ --hl-3: var(--dark-hl-3);
48
+ --hl-4: var(--dark-hl-4);
49
+ --hl-5: var(--dark-hl-5);
50
+ --hl-6: var(--dark-hl-6);
51
+ --hl-7: var(--dark-hl-7);
52
+ --hl-8: var(--dark-hl-8);
53
+ --hl-9: var(--dark-hl-9);
54
+ --hl-10: var(--dark-hl-10);
55
+ --code-background: var(--dark-code-background);
56
+ } }
57
+
58
+ :root[data-theme='light'] {
59
+ --hl-0: var(--light-hl-0);
60
+ --hl-1: var(--light-hl-1);
61
+ --hl-2: var(--light-hl-2);
62
+ --hl-3: var(--light-hl-3);
63
+ --hl-4: var(--light-hl-4);
64
+ --hl-5: var(--light-hl-5);
65
+ --hl-6: var(--light-hl-6);
66
+ --hl-7: var(--light-hl-7);
67
+ --hl-8: var(--light-hl-8);
68
+ --hl-9: var(--light-hl-9);
69
+ --hl-10: var(--light-hl-10);
70
+ --code-background: var(--light-code-background);
71
+ }
72
+
73
+ :root[data-theme='dark'] {
74
+ --hl-0: var(--dark-hl-0);
75
+ --hl-1: var(--dark-hl-1);
76
+ --hl-2: var(--dark-hl-2);
77
+ --hl-3: var(--dark-hl-3);
78
+ --hl-4: var(--dark-hl-4);
79
+ --hl-5: var(--dark-hl-5);
80
+ --hl-6: var(--dark-hl-6);
81
+ --hl-7: var(--dark-hl-7);
82
+ --hl-8: var(--dark-hl-8);
83
+ --hl-9: var(--dark-hl-9);
84
+ --hl-10: var(--dark-hl-10);
85
+ --code-background: var(--dark-code-background);
86
+ }
87
+
88
+ .hl-0 { color: var(--hl-0); }
89
+ .hl-1 { color: var(--hl-1); }
90
+ .hl-2 { color: var(--hl-2); }
91
+ .hl-3 { color: var(--hl-3); }
92
+ .hl-4 { color: var(--hl-4); }
93
+ .hl-5 { color: var(--hl-5); }
94
+ .hl-6 { color: var(--hl-6); }
95
+ .hl-7 { color: var(--hl-7); }
96
+ .hl-8 { color: var(--hl-8); }
97
+ .hl-9 { color: var(--hl-9); }
98
+ .hl-10 { color: var(--hl-10); }
99
+ pre, code { background: var(--code-background); }
@@ -0,0 +1,18 @@
1
+ (function() {
2
+ addIcons();
3
+ function addIcons() {
4
+ if (document.readyState === "loading") return document.addEventListener("DOMContentLoaded", addIcons);
5
+ const svg = document.body.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg"));
6
+ svg.innerHTML = `<g id="icon-1" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-module)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">M</text></g><g id="icon-2" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-module)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">M</text></g><g id="icon-4" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">N</text></g><g id="icon-8" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-enum)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">E</text></g><g id="icon-16" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">P</text></g><g id="icon-32" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-variable)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">V</text></g><g id="icon-64" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-function)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">F</text></g><g id="icon-128" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-class)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">C</text></g><g id="icon-256" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-interface)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">I</text></g><g id="icon-512" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-constructor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">C</text></g><g id="icon-1024" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">P</text></g><g id="icon-2048" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-method)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">M</text></g><g id="icon-4096" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-function)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">F</text></g><g id="icon-8192" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">P</text></g><g id="icon-16384" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-constructor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">C</text></g><g id="icon-32768" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">P</text></g><g id="icon-65536" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">T</text></g><g id="icon-131072" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">T</text></g><g id="icon-262144" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">A</text></g><g id="icon-524288" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">A</text></g><g id="icon-1048576" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">A</text></g><g id="icon-2097152" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">T</text></g><g id="icon-4194304" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-reference)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">R</text></g><g id="icon-8388608" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-document)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><g stroke="var(--color-icon-text)" fill="none" stroke-width="1.5"><polygon points="6,5 6,19 18,19, 18,10 13,5"></polygon><line x1="9" y1="9" x2="13" y2="9"></line><line x1="9" y1="12" x2="15" y2="12"></line><line x1="9" y1="15" x2="15" y2="15"></line></g></g><g id="icon-folder" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-document)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><g stroke="var(--color-icon-text)" fill="none" stroke-width="1.5"><polygon points="5,5 10,5 12,8 19,8 19,18 5,18"></polygon></g></g><g id="icon-chevronDown" class="tsd-no-select"><path d="M4.93896 8.531L12 15.591L19.061 8.531L16.939 6.409L12 11.349L7.06098 6.409L4.93896 8.531Z" fill="var(--color-icon-text)"></path></g><g id="icon-chevronSmall" class="tsd-no-select"><path d="M1.5 5.50969L8 11.6609L14.5 5.50969L12.5466 3.66086L8 7.96494L3.45341 3.66086L1.5 5.50969Z" fill="var(--color-icon-text)"></path></g><g id="icon-checkbox" class="tsd-no-select"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></g><g id="icon-menu" class="tsd-no-select"><rect x="1" y="3" width="14" height="2" fill="var(--color-icon-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-icon-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-icon-text)"></rect></g><g id="icon-search" class="tsd-no-select"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 12.5238 10.7195 12.6644L13.8354 15.7797C14.1292 16.0734 14.6042 16.0734 14.8948 15.7797L15.7793 14.8954C16.0731 14.6017 16.0731 14.1267 15.7824 13.833ZM6.50048 10.499C4.29094 10.499 2.50018 8.71165 2.50018 6.49937C2.50018 4.29021 4.28781 2.49976 6.50048 2.49976C8.71001 2.49976 10.5008 4.28708 10.5008 6.49937C10.5008 8.70852 8.71314 10.499 6.50048 10.499Z" fill="var(--color-icon-text)"></path></g><g id="icon-anchor" class="tsd-no-select"><g stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></g></g><g id="icon-alertNote" class="tsd-no-select"><path fill="var(--color-alert-note)" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></g><g id="icon-alertTip" class="tsd-no-select"><path fill="var(--color-alert-tip)" d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z"></path></g><g id="icon-alertImportant" class="tsd-no-select"><path fill="var(--color-alert-important)" d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></g><g id="icon-alertWarning" class="tsd-no-select"><path fill="var(--color-alert-warning)" d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></g><g id="icon-alertCaution" class="tsd-no-select"><path fill="var(--color-alert-caution)" d="M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></g>`;
7
+ svg.style.display = "none";
8
+ if (location.protocol === "file:") updateUseElements();
9
+ }
10
+
11
+ function updateUseElements() {
12
+ document.querySelectorAll("use").forEach(el => {
13
+ if (el.getAttribute("href").includes("#icon-")) {
14
+ el.setAttribute("href", el.getAttribute("href").replace(/.*#/, "#"));
15
+ }
16
+ });
17
+ }
18
+ })()
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg"><g id="icon-1" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-module)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">M</text></g><g id="icon-2" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-module)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">M</text></g><g id="icon-4" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-namespace)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">N</text></g><g id="icon-8" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-enum)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">E</text></g><g id="icon-16" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">P</text></g><g id="icon-32" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-variable)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">V</text></g><g id="icon-64" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-function)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">F</text></g><g id="icon-128" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-class)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">C</text></g><g id="icon-256" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-interface)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">I</text></g><g id="icon-512" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-constructor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">C</text></g><g id="icon-1024" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">P</text></g><g id="icon-2048" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-method)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">M</text></g><g id="icon-4096" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-function)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">F</text></g><g id="icon-8192" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">P</text></g><g id="icon-16384" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-constructor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">C</text></g><g id="icon-32768" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-property)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">P</text></g><g id="icon-65536" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">T</text></g><g id="icon-131072" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">T</text></g><g id="icon-262144" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">A</text></g><g id="icon-524288" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">A</text></g><g id="icon-1048576" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-accessor)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">A</text></g><g id="icon-2097152" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-type-alias)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">T</text></g><g id="icon-4194304" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-ts-reference)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="12"></rect><text fill="var(--color-icon-text)" x="50%" y="50%" dominant-baseline="central" text-anchor="middle">R</text></g><g id="icon-8388608" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-document)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><g stroke="var(--color-icon-text)" fill="none" stroke-width="1.5"><polygon points="6,5 6,19 18,19, 18,10 13,5"></polygon><line x1="9" y1="9" x2="13" y2="9"></line><line x1="9" y1="12" x2="15" y2="12"></line><line x1="9" y1="15" x2="15" y2="15"></line></g></g><g id="icon-folder" class="tsd-no-select"><rect fill="var(--color-icon-background)" stroke="var(--color-document)" stroke-width="1.5" x="1" y="1" width="22" height="22" rx="6"></rect><g stroke="var(--color-icon-text)" fill="none" stroke-width="1.5"><polygon points="5,5 10,5 12,8 19,8 19,18 5,18"></polygon></g></g><g id="icon-chevronDown" class="tsd-no-select"><path d="M4.93896 8.531L12 15.591L19.061 8.531L16.939 6.409L12 11.349L7.06098 6.409L4.93896 8.531Z" fill="var(--color-icon-text)"></path></g><g id="icon-chevronSmall" class="tsd-no-select"><path d="M1.5 5.50969L8 11.6609L14.5 5.50969L12.5466 3.66086L8 7.96494L3.45341 3.66086L1.5 5.50969Z" fill="var(--color-icon-text)"></path></g><g id="icon-checkbox" class="tsd-no-select"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></g><g id="icon-menu" class="tsd-no-select"><rect x="1" y="3" width="14" height="2" fill="var(--color-icon-text)"></rect><rect x="1" y="7" width="14" height="2" fill="var(--color-icon-text)"></rect><rect x="1" y="11" width="14" height="2" fill="var(--color-icon-text)"></rect></g><g id="icon-search" class="tsd-no-select"><path d="M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 12.5238 10.7195 12.6644L13.8354 15.7797C14.1292 16.0734 14.6042 16.0734 14.8948 15.7797L15.7793 14.8954C16.0731 14.6017 16.0731 14.1267 15.7824 13.833ZM6.50048 10.499C4.29094 10.499 2.50018 8.71165 2.50018 6.49937C2.50018 4.29021 4.28781 2.49976 6.50048 2.49976C8.71001 2.49976 10.5008 4.28708 10.5008 6.49937C10.5008 8.70852 8.71314 10.499 6.50048 10.499Z" fill="var(--color-icon-text)"></path></g><g id="icon-anchor" class="tsd-no-select"><g stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5"></path><path d="M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5"></path></g></g><g id="icon-alertNote" class="tsd-no-select"><path fill="var(--color-alert-note)" d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></g><g id="icon-alertTip" class="tsd-no-select"><path fill="var(--color-alert-tip)" d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z"></path></g><g id="icon-alertImportant" class="tsd-no-select"><path fill="var(--color-alert-important)" d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></g><g id="icon-alertWarning" class="tsd-no-select"><path fill="var(--color-alert-warning)" d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></g><g id="icon-alertCaution" class="tsd-no-select"><path fill="var(--color-alert-caution)" d="M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></g></svg>