diff-grok 1.3.1 → 1.4.0
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.
- package/README.MD +22 -3
- package/dist/src/pipeline/loops-pipeline-creator.js +3 -2
- package/dist/src/pipeline/loops-pipeline-creator.js.map +1 -1
- package/dist/src/pipeline/output.d.ts +4 -0
- package/dist/src/pipeline/output.js +85 -38
- package/dist/src/pipeline/output.js.map +1 -1
- package/dist/src/pipeline/updates-pipeline-creator.js +4 -3
- package/dist/src/pipeline/updates-pipeline-creator.js.map +1 -1
- package/package.json +2 -3
package/README.MD
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# Diff Grok
|
|
2
2
|
|
|
3
|
+
[](https://link.springer.com/chapter/10.1007/978-3-032-22236-7_31)
|
|
3
4
|
[](https://doi.org/10.21105/joss.09090)
|
|
4
5
|
[](https://doi.org/10.5281/zenodo.19219694)
|
|
5
6
|
[](https://datagrok-ai.github.io/diff-grok/)
|
|
@@ -7,7 +8,7 @@
|
|
|
7
8
|
[](https://github.com/datagrok-ai/diff-grok/actions/workflows/libraries.yaml)
|
|
8
9
|
[](https://github.com/datagrok-ai/diff-grok/actions/workflows/test.yaml)
|
|
9
10
|
|
|
10
|
-
A lightweight TypeScript library for solving initial value problem ([IVP](https://en.wikipedia.org/wiki/Initial_value_problem)) for ordinary differential equations ([ODEs](https://en.wikipedia.org/wiki/Ordinary_differential_equation)) using numerical methods. The primary solvers are [LSODA](https://doi.org/10.1137/0904010)
|
|
11
|
+
A lightweight TypeScript library for solving initial value problem ([IVP](https://en.wikipedia.org/wiki/Initial_value_problem)) for ordinary differential equations ([ODEs](https://en.wikipedia.org/wiki/Ordinary_differential_equation)) using numerical methods. The primary solvers are [LSODA](https://doi.org/10.1137/0904010) - a variable-order method that automatically detects stiffness and switches between Adams (non-stiff) and BDF (stiff) formulations - and [CVODE](https://sundials.readthedocs.io/en/latest/cvode/index.html) - a variable-order, variable-step solver from the SUNDIALS suite supporting both Adams and BDF methods.
|
|
11
12
|
|
|
12
13
|
## Features
|
|
13
14
|
|
|
@@ -424,7 +425,7 @@ Find this example in [scripting.ts](./src/examples/scripting.ts).
|
|
|
424
425
|
|
|
425
426
|
### Pipelines
|
|
426
427
|
|
|
427
|
-
Diff Grok **pipeline** is a powerful feature for complex process simulation and model analysis in webworkers. It wraps the main solver with a set of actions that perform pre- and post-processing of a model inputs & outputs. In addition, they provide an output customization.
|
|
428
|
+
Diff Grok **pipeline** is a powerful feature for complex process simulation and model analysis in webworkers (see our [paper](https://link.springer.com/chapter/10.1007/978-3-032-22236-7_31) in Lecture Notes in Networks and Systems). It wraps the main solver with a set of actions that perform pre- and post-processing of a model inputs & outputs. In addition, they provide an output customization.
|
|
428
429
|
|
|
429
430
|
1. Start with imports:
|
|
430
431
|
|
|
@@ -676,7 +677,9 @@ node src/examples/basic-use.js
|
|
|
676
677
|
|
|
677
678
|
## Citation
|
|
678
679
|
|
|
679
|
-
If you use this library for research purposes, please cite the following:
|
|
680
|
+
If you use this library for research purposes, please cite the following papers:
|
|
681
|
+
|
|
682
|
+
* [Diff Studio: Ecosystem for Interactive Modeling by Ordinary Differential Equations](https://joss.theoj.org/papers/10.21105/joss.09090) in Journal of Open Source Software (2026).
|
|
680
683
|
|
|
681
684
|
```
|
|
682
685
|
@article{diffstudio2026joss,
|
|
@@ -690,6 +693,22 @@ If you use this library for research purposes, please cite the following:
|
|
|
690
693
|
}
|
|
691
694
|
```
|
|
692
695
|
|
|
696
|
+
* [Diff Studio: Web-Based Environment for Interactive Modeling with Ordinary Differential Equations](https://link.springer.com/chapter/10.1007/978-3-032-22236-7_31) in Springer, CoMeSySo 2025 Proceedings (Lecture Notes in Networks and Systems, vol. 1901) - foundational paper.
|
|
697
|
+
|
|
698
|
+
```
|
|
699
|
+
@InProceedings{diffstudio2026lnns,
|
|
700
|
+
title = {Diff Studio: Web-Based Environment for Interactive Modeling with Ordinary Differential Equations},
|
|
701
|
+
author = {Viktor Makarichev, Larisa Bankurova, Gennadii Zakharov, Leonid Stolbov, Steven Mehrman, Dan Skatov, Jeffrey Cohen, Paul Sass, Davit Rizhinashvili, Andrew Skalkin},
|
|
702
|
+
editor = {Radek Silhavy, Petr Silhavy},
|
|
703
|
+
booktitle = {Focus on Artificial Intelligence in Intelligent Systems Design},
|
|
704
|
+
year = {2026},
|
|
705
|
+
publisher = {Springer Nature Switzerland},
|
|
706
|
+
address = {Cham},
|
|
707
|
+
pages = {390--401},
|
|
708
|
+
doi = {10.1007/978-3-032-22236-7_31}
|
|
709
|
+
}
|
|
710
|
+
```
|
|
711
|
+
|
|
693
712
|
## References
|
|
694
713
|
|
|
695
714
|
* L. Petzold, "Automatic Selection of Methods for Solving Stiff and Nonstiff Systems of Ordinary Differential Equations," *SIAM J. Sci. Stat. Comput.*, 4(1), 136–148, 1983. [doi:10.1137/0904010](https://doi.org/10.1137/0904010)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MATH_CONSTS, MATH_FUNCS, POW_IDX } from '../scripting-tools/scripting-tools';
|
|
2
|
-
import { getOutputCode } from './output';
|
|
2
|
+
import { getOutputCode, getStageOutputCode } from './output';
|
|
3
3
|
import { PipelineCreator } from './pipeline-creator';
|
|
4
4
|
import { argName2IdxMap, ARG, ARG_COL_IDX, CORRECTION_FACTOR, DEFAULT_CORRECTION, LOOP_MIN_COUNT } from './constants';
|
|
5
5
|
/** Pipeline creator for cyclic model
|
|
@@ -191,10 +191,11 @@ export class CyclicModelPipelineCreator extends PipelineCreator {
|
|
|
191
191
|
const preCode = preProcLines.join('\n');
|
|
192
192
|
const postCode = postProcLines.join('\n');
|
|
193
193
|
const wrappers = new Array(repetitions);
|
|
194
|
+
const stageOut = getStageOutputCode(this.ivp);
|
|
194
195
|
for (let i = 0; i < repetitions; ++i) {
|
|
195
196
|
wrappers[i] = {
|
|
196
197
|
preproc: preCode,
|
|
197
|
-
out:
|
|
198
|
+
out: stageOut,
|
|
198
199
|
postproc: postCode,
|
|
199
200
|
};
|
|
200
201
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loops-pipeline-creator.js","sourceRoot":"","sources":["../../../src/pipeline/loops-pipeline-creator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAE,UAAU,EAAE,OAAO,EAAC,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"loops-pipeline-creator.js","sourceRoot":"","sources":["../../../src/pipeline/loops-pipeline-creator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { IVP } from '../scripting-tools/scripting-tools';
|
|
2
|
+
/** Return per-stage output code for cyclic/multistage models: recompute the output expressions
|
|
3
|
+
for this stage (using this stage's parameters), then APPEND them as columns to the stage
|
|
4
|
+
solution. Returns null when the model has no expressions in its outputs. */
|
|
5
|
+
export declare function getStageOutputCode(ivp: IVP): string | null;
|
|
2
6
|
/** Return a code for output extraction
|
|
3
7
|
* @internal
|
|
4
8
|
*/
|
|
@@ -22,16 +22,28 @@ function getOutputNoExprs(ivp) {
|
|
|
22
22
|
lines.push('return solution;');
|
|
23
23
|
return lines.join('\n');
|
|
24
24
|
} // getOutputNoExprs
|
|
25
|
-
/**
|
|
26
|
-
function
|
|
25
|
+
/** Output-expression names, in #expressions order — the columns a stage appends. */
|
|
26
|
+
function outputExprNames(ivp) {
|
|
27
|
+
const outputs = ivp.outputs;
|
|
28
|
+
const exprs = ivp.exprs;
|
|
29
|
+
if (outputs === null || exprs === null)
|
|
30
|
+
return [];
|
|
31
|
+
const names = [];
|
|
32
|
+
exprs.forEach((_, name) => {
|
|
33
|
+
if (outputs.has(name))
|
|
34
|
+
names.push(name);
|
|
35
|
+
});
|
|
36
|
+
return names;
|
|
37
|
+
} // outputExprNames
|
|
38
|
+
/** Lines that recompute the expressions row-by-row from the argument & solution columns of
|
|
39
|
+
arguments[0], reading parameters from the input vector arguments[1], and fill a Float64Array
|
|
40
|
+
<name>Raw for each output expression. Shared by the basic recompute and the per-stage code. */
|
|
41
|
+
function getExprComputeLines(ivp) {
|
|
27
42
|
const outputs = ivp.outputs;
|
|
28
|
-
if (outputs === null)
|
|
29
|
-
throw new Error('Grok Lib issue: no outputs in the initial value problem');
|
|
30
43
|
const exprs = ivp.exprs;
|
|
31
|
-
if (!exprsInOutputs(ivp) || (exprs === null))
|
|
32
|
-
throw new Error('Grok Lib issue: expressions must be given');
|
|
33
44
|
const argName = ivp.arg.name;
|
|
34
|
-
const
|
|
45
|
+
const funcNames = ivp.deqs.solutionNames;
|
|
46
|
+
const lines = [];
|
|
35
47
|
// Used math funcs
|
|
36
48
|
ivp.usedMathFuncs.forEach((idx) => {
|
|
37
49
|
if (idx !== POW_IDX)
|
|
@@ -44,37 +56,50 @@ function getOutputWithExprs(ivp) {
|
|
|
44
56
|
// Model constants
|
|
45
57
|
if (ivp.consts !== null)
|
|
46
58
|
ivp.consts.forEach((input, name) => lines.push(`const ${name} = ${input.value};`));
|
|
47
|
-
// Model parameters
|
|
59
|
+
// Model parameters (per-stage input vector)
|
|
48
60
|
if (ivp.params !== null) {
|
|
49
|
-
let idx = ARG_INP_COUNT +
|
|
61
|
+
let idx = ARG_INP_COUNT + funcNames.length;
|
|
50
62
|
ivp.params.forEach((_, name) => {
|
|
51
63
|
lines.push(`const ${name} = arguments[1][${idx}];`);
|
|
52
64
|
++idx;
|
|
53
65
|
});
|
|
54
66
|
}
|
|
55
67
|
lines.push('');
|
|
56
|
-
|
|
57
|
-
|
|
68
|
+
// __len / __i are underscore-prefixed so they cannot collide with a model constant or parameter
|
|
69
|
+
// (e.g. a model with a constant named `k` would otherwise be shadowed by the loop counter).
|
|
70
|
+
lines.push('const __len = arguments[0][0].length;');
|
|
58
71
|
lines.push(`let ${argName} = 0;`);
|
|
59
72
|
funcNames.forEach((name) => lines.push(`let ${name} = 0;`));
|
|
60
73
|
lines.push('');
|
|
61
74
|
exprs.forEach((_, name) => {
|
|
62
75
|
lines.push(`let ${name} = 0;`);
|
|
63
76
|
if (outputs.has(name))
|
|
64
|
-
lines.push(`let ${name}Raw = new Float64Array(
|
|
77
|
+
lines.push(`let ${name}Raw = new Float64Array(__len);`);
|
|
65
78
|
});
|
|
66
79
|
lines.push('');
|
|
67
|
-
lines.push('for (let
|
|
68
|
-
lines.push(` ${argName} = arguments[0][0][
|
|
69
|
-
funcNames.forEach((name, idx) => lines.push(` ${name} = arguments[0][${SHIFT + idx}][
|
|
80
|
+
lines.push('for (let __i = 0; __i < __len; ++__i) {');
|
|
81
|
+
lines.push(` ${argName} = arguments[0][0][__i];`);
|
|
82
|
+
funcNames.forEach((name, idx) => lines.push(` ${name} = arguments[0][${SHIFT + idx}][__i];`));
|
|
70
83
|
lines.push('');
|
|
71
84
|
exprs.forEach((expr, name) => {
|
|
72
85
|
lines.push(` ${name} = ${expr};`);
|
|
73
86
|
if (outputs.has(name))
|
|
74
|
-
lines.push(` ${name}Raw[
|
|
87
|
+
lines.push(` ${name}Raw[__i] = ${name};`);
|
|
75
88
|
});
|
|
76
89
|
lines.push('}');
|
|
77
90
|
lines.push('');
|
|
91
|
+
return lines;
|
|
92
|
+
} // getExprComputeLines
|
|
93
|
+
/** Return output for a basic (non-cyclic, non-multistage) model WITH expressions.
|
|
94
|
+
Recomputes the output expressions once, at top level, over the full solution. */
|
|
95
|
+
function getOutputWithExprs(ivp) {
|
|
96
|
+
const outputs = ivp.outputs;
|
|
97
|
+
const exprs = ivp.exprs;
|
|
98
|
+
if (outputs === null || exprs === null || !exprsInOutputs(ivp))
|
|
99
|
+
throw new Error('Grok Lib issue: expressions must be given');
|
|
100
|
+
const argName = ivp.arg.name;
|
|
101
|
+
const lines = getExprComputeLines(ivp);
|
|
102
|
+
lines.push('const solution = [];');
|
|
78
103
|
outputs.forEach((_, name) => {
|
|
79
104
|
if (name === argName)
|
|
80
105
|
lines.push('solution.push(arguments[0][0]);');
|
|
@@ -89,6 +114,44 @@ function getOutputWithExprs(ivp) {
|
|
|
89
114
|
lines.push('return solution;');
|
|
90
115
|
return lines.join('\n');
|
|
91
116
|
} // getOutputWithExprs
|
|
117
|
+
/** Return per-stage output code for cyclic/multistage models: recompute the output expressions
|
|
118
|
+
for this stage (using this stage's parameters), then APPEND them as columns to the stage
|
|
119
|
+
solution. Returns null when the model has no expressions in its outputs. */
|
|
120
|
+
export function getStageOutputCode(ivp) {
|
|
121
|
+
if (!exprsInOutputs(ivp))
|
|
122
|
+
return null;
|
|
123
|
+
const lines = getExprComputeLines(ivp);
|
|
124
|
+
// Keep [arg, f0..fN] intact and append the output-expression columns after them.
|
|
125
|
+
lines.push('const solution = arguments[0];');
|
|
126
|
+
outputExprNames(ivp).forEach((name) => lines.push(`solution.push(${name}Raw);`));
|
|
127
|
+
lines.push('return solution;');
|
|
128
|
+
return lines.join('\n');
|
|
129
|
+
} // getStageOutputCode
|
|
130
|
+
/** Return top-level output code for cyclic/multistage models with output expressions: the stages
|
|
131
|
+
already appended the expression columns, so this only selects columns into #output order. */
|
|
132
|
+
function getOutputSelectWithExprCols(ivp) {
|
|
133
|
+
const outputs = ivp.outputs;
|
|
134
|
+
const argName = ivp.arg.name;
|
|
135
|
+
const funcNames = ivp.deqs.solutionNames;
|
|
136
|
+
const exprNames = outputExprNames(ivp);
|
|
137
|
+
const lines = ['const solution = [];'];
|
|
138
|
+
outputs.forEach((_, name) => {
|
|
139
|
+
if (name === argName) {
|
|
140
|
+
lines.push('solution.push(arguments[0][0]);');
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const funcIdx = funcNames.indexOf(name);
|
|
144
|
+
if (funcIdx > -1) {
|
|
145
|
+
lines.push(`solution.push(arguments[0][${funcIdx + 1}]);`);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const exprIdx = exprNames.indexOf(name);
|
|
149
|
+
if (exprIdx > -1)
|
|
150
|
+
lines.push(`solution.push(arguments[0][${1 + funcNames.length + exprIdx}]);`);
|
|
151
|
+
});
|
|
152
|
+
lines.push('return solution;');
|
|
153
|
+
return lines.join('\n');
|
|
154
|
+
} // getOutputSelectWithExprCols
|
|
92
155
|
/** Return a code for output extraction
|
|
93
156
|
* @internal
|
|
94
157
|
*/
|
|
@@ -96,11 +159,13 @@ export function getOutputCode(ivp) {
|
|
|
96
159
|
const outputs = ivp.outputs;
|
|
97
160
|
if (outputs === null)
|
|
98
161
|
return null;
|
|
99
|
-
|
|
100
|
-
if (exprsInOutputs(ivp))
|
|
101
|
-
return getOutputWithExprs(ivp);
|
|
102
|
-
else
|
|
162
|
+
if (!exprsInOutputs(ivp))
|
|
103
163
|
return getOutputNoExprs(ivp);
|
|
164
|
+
// Cyclic (#loop) & multistage (#update) models compute expression columns per stage; the
|
|
165
|
+
// top level only selects them. Basic models recompute the expressions here.
|
|
166
|
+
if (ivp.loop !== null || ivp.updates !== null)
|
|
167
|
+
return getOutputSelectWithExprCols(ivp);
|
|
168
|
+
return getOutputWithExprs(ivp);
|
|
104
169
|
} // getOutputCode
|
|
105
170
|
/** Check whether outputs have items from expressions */
|
|
106
171
|
function exprsInOutputs(ivp) {
|
|
@@ -114,24 +179,6 @@ function exprsInOutputs(ivp) {
|
|
|
114
179
|
exprs.forEach((_, name) => flag ||= outputs.has(name));
|
|
115
180
|
return flag;
|
|
116
181
|
}
|
|
117
|
-
/** Check applicability of model outputs */
|
|
118
|
-
function checkApplicability(ivp) {
|
|
119
|
-
const outputs = ivp.outputs;
|
|
120
|
-
if (outputs === null)
|
|
121
|
-
throw new Error('Model has no outputs');
|
|
122
|
-
const exprs = ivp.exprs;
|
|
123
|
-
if (exprs === null)
|
|
124
|
-
return;
|
|
125
|
-
if (ivp.loop !== null) {
|
|
126
|
-
if (exprsInOutputs(ivp))
|
|
127
|
-
throw new Error('Non-supported model: expressions in output & loops');
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
if (ivp.updates !== null) {
|
|
131
|
-
if (exprsInOutputs(ivp))
|
|
132
|
-
throw new Error('Non-supported model: expressions in output and updates');
|
|
133
|
-
}
|
|
134
|
-
} // checkApplicability
|
|
135
182
|
/** Return names of the model outputs
|
|
136
183
|
* @param ivp - initial value problem
|
|
137
184
|
* @returns an array of names of the model outputs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/pipeline/output.ts"],"names":[],"mappings":"AAAA,mDAAmD;AAEnD,OAAO,EAAM,WAAW,EAAE,OAAO,EAAE,UAAU,EAAC,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAE1C,MAAM,KAAK,GAAG,CAAC,CAAC;AAEhB,sDAAsD;AACtD,SAAS,gBAAgB,CAAC,GAAQ;IAChC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAC5B,IAAI,OAAO,KAAK,IAAI;QAClB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAE7E,IAAI,cAAc,CAAC,GAAG,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAGhE,MAAM,KAAK,GAAa,CAAC,sBAAsB,CAAC,CAAC;IAEjD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE;QAC1B,IAAI,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI;YACvB,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;aAC3C,CAAC;YACJ,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEjD,IAAI,GAAG,GAAG,CAAC,CAAC;gBACV,KAAK,CAAC,IAAI,CAAC,8BAA8B,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAE/B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC,CAAC,mBAAmB;AAErB,
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/pipeline/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable max-len */
|
|
2
2
|
import { MATH_CONSTS, MATH_FUNCS, POW_IDX } from '../scripting-tools/scripting-tools';
|
|
3
|
-
import { getOutputCode } from './output';
|
|
3
|
+
import { getOutputCode, getStageOutputCode } from './output';
|
|
4
4
|
import { PipelineCreator } from './pipeline-creator';
|
|
5
5
|
import { argName2IdxMap, ARG, ARG_COL_IDX, CORRECTION_FACTOR, DEFAULT_CORRECTION } from './constants';
|
|
6
6
|
/** Pipeline creator for model with updates
|
|
@@ -141,9 +141,10 @@ export class UpdatesModelPipelineCreator extends PipelineCreator {
|
|
|
141
141
|
getPipeline(inputs) {
|
|
142
142
|
if (this.ivp.updates === null)
|
|
143
143
|
throw new Error('Incorrect use of UpdatesModelPipelineCreator: model has no updates');
|
|
144
|
+
const stageOut = getStageOutputCode(this.ivp);
|
|
144
145
|
const wrappers = [{
|
|
145
146
|
preproc: null,
|
|
146
|
-
out:
|
|
147
|
+
out: stageOut,
|
|
147
148
|
postproc: null,
|
|
148
149
|
}];
|
|
149
150
|
this.ivp.updates.forEach((update) => {
|
|
@@ -200,7 +201,7 @@ export class UpdatesModelPipelineCreator extends PipelineCreator {
|
|
|
200
201
|
lines.push('return inputs;');
|
|
201
202
|
wrappers.push({
|
|
202
203
|
preproc: lines.join('\n'),
|
|
203
|
-
out:
|
|
204
|
+
out: stageOut,
|
|
204
205
|
postproc: null,
|
|
205
206
|
});
|
|
206
207
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updates-pipeline-creator.js","sourceRoot":"","sources":["../../../src/pipeline/updates-pipeline-creator.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAG5B,OAAO,EAAC,WAAW,EAAE,UAAU,EAAE,OAAO,EAAC,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"updates-pipeline-creator.js","sourceRoot":"","sources":["../../../src/pipeline/updates-pipeline-creator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"access": "public"
|
|
9
9
|
},
|
|
10
10
|
"license": "MIT",
|
|
11
|
-
"version": "1.
|
|
11
|
+
"version": "1.4.0",
|
|
12
12
|
"description": "Tools for solving initial value problem for ordinary differential equations",
|
|
13
13
|
"main": "dist/index.js",
|
|
14
14
|
"types": "dist/index.d.ts",
|
|
@@ -45,7 +45,6 @@
|
|
|
45
45
|
},
|
|
46
46
|
"repository": {
|
|
47
47
|
"type": "git",
|
|
48
|
-
"url": "git
|
|
49
|
-
"directory": ""
|
|
48
|
+
"url": "git+https://github.com/datagrok-ai/diff-grok.git"
|
|
50
49
|
}
|
|
51
50
|
}
|