@bananapus/nana-sdk-core 1.6.1 → 1.7.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/dist/cjs/utils/index.d.ts +1 -0
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +1 -0
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/timeSeries.d.ts +14 -0
- package/dist/cjs/utils/timeSeries.d.ts.map +1 -0
- package/dist/cjs/utils/timeSeries.js +67 -0
- package/dist/cjs/utils/timeSeries.js.map +1 -0
- package/dist/esm/utils/index.d.ts +1 -0
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/timeSeries.d.ts +14 -0
- package/dist/esm/utils/timeSeries.d.ts.map +1 -0
- package/dist/esm/utils/timeSeries.js +64 -0
- package/dist/esm/utils/timeSeries.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
package/dist/cjs/utils/index.js
CHANGED
|
@@ -24,6 +24,7 @@ __exportStar(require("./hook.js"), exports);
|
|
|
24
24
|
__exportStar(require("./ipfs.js"), exports);
|
|
25
25
|
__exportStar(require("./revnet.js"), exports);
|
|
26
26
|
__exportStar(require("./ruleset.js"), exports);
|
|
27
|
+
__exportStar(require("./timeSeries.js"), exports);
|
|
27
28
|
__exportStar(require("./token.js"), exports);
|
|
28
29
|
__exportStar(require("./tx.js"), exports);
|
|
29
30
|
__exportStar(require("./urn.js"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,4CAA0B;AAC1B,6CAA2B;AAC3B,8CAA4B;AAC5B,2CAAyB;AACzB,8CAA4B;AAC5B,4CAA0B;AAC1B,4CAA0B;AAC1B,8CAA4B;AAC5B,+CAA6B;AAC7B,6CAA2B;AAC3B,0CAAwB;AACxB,2CAAyB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,4CAA0B;AAC1B,6CAA2B;AAC3B,8CAA4B;AAC5B,2CAAyB;AACzB,8CAA4B;AAC5B,4CAA0B;AAC1B,4CAA0B;AAC1B,8CAA4B;AAC5B,+CAA6B;AAC7B,kDAAgC;AAChC,6CAA2B;AAC3B,0CAAwB;AACxB,2CAAyB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Downsample an ordered time series with the Largest-Triangle-Three-Buckets
|
|
3
|
+
* algorithm.
|
|
4
|
+
*
|
|
5
|
+
* The returned series never mutates `rows`, retains both endpoints whenever
|
|
6
|
+
* `maxPoints` is at least two, and preserves visually significant intermediate
|
|
7
|
+
* points better than fixed-interval sampling. Callers should pass rows in
|
|
8
|
+
* ascending X order.
|
|
9
|
+
*
|
|
10
|
+
* Non-finite projected coordinates are treated as zero so malformed source
|
|
11
|
+
* observations cannot make every triangle area `NaN`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function downsampleTimeSeries<T>(rows: readonly T[], maxPoints: number, xOf: (row: T) => number, yOf: (row: T) => number): T[];
|
|
14
|
+
//# sourceMappingURL=timeSeries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeSeries.d.ts","sourceRoot":"","sources":["../../../src/utils/timeSeries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,EACvB,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GACtB,CAAC,EAAE,CA4DL"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.downsampleTimeSeries = downsampleTimeSeries;
|
|
4
|
+
/**
|
|
5
|
+
* Downsample an ordered time series with the Largest-Triangle-Three-Buckets
|
|
6
|
+
* algorithm.
|
|
7
|
+
*
|
|
8
|
+
* The returned series never mutates `rows`, retains both endpoints whenever
|
|
9
|
+
* `maxPoints` is at least two, and preserves visually significant intermediate
|
|
10
|
+
* points better than fixed-interval sampling. Callers should pass rows in
|
|
11
|
+
* ascending X order.
|
|
12
|
+
*
|
|
13
|
+
* Non-finite projected coordinates are treated as zero so malformed source
|
|
14
|
+
* observations cannot make every triangle area `NaN`.
|
|
15
|
+
*/
|
|
16
|
+
function downsampleTimeSeries(rows, maxPoints, xOf, yOf) {
|
|
17
|
+
if (!Number.isSafeInteger(maxPoints) || maxPoints < 0) {
|
|
18
|
+
throw new RangeError("maxPoints must be a non-negative safe integer");
|
|
19
|
+
}
|
|
20
|
+
if (maxPoints === 0 || rows.length === 0)
|
|
21
|
+
return [];
|
|
22
|
+
if (rows.length <= maxPoints)
|
|
23
|
+
return rows.slice();
|
|
24
|
+
if (maxPoints < 3) {
|
|
25
|
+
return [rows[0], rows[rows.length - 1]].slice(0, maxPoints);
|
|
26
|
+
}
|
|
27
|
+
const x = rows.map((row) => finite(xOf(row)));
|
|
28
|
+
const y = rows.map((row) => finite(yOf(row)));
|
|
29
|
+
const sampled = [rows[0]];
|
|
30
|
+
const bucketWidth = (rows.length - 2) / (maxPoints - 2);
|
|
31
|
+
let anchorIndex = 0;
|
|
32
|
+
for (let bucketIndex = 0; bucketIndex < maxPoints - 2; bucketIndex += 1) {
|
|
33
|
+
const averageStart = Math.floor((bucketIndex + 1) * bucketWidth) + 1;
|
|
34
|
+
const averageEnd = Math.min(Math.floor((bucketIndex + 2) * bucketWidth) + 1, rows.length);
|
|
35
|
+
const averageLength = averageEnd - averageStart;
|
|
36
|
+
let averageX = 0;
|
|
37
|
+
let averageY = 0;
|
|
38
|
+
for (let index = averageStart; index < averageEnd; index += 1) {
|
|
39
|
+
averageX += x[index];
|
|
40
|
+
averageY += y[index];
|
|
41
|
+
}
|
|
42
|
+
averageX /= averageLength;
|
|
43
|
+
averageY /= averageLength;
|
|
44
|
+
const rangeStart = Math.floor(bucketIndex * bucketWidth) + 1;
|
|
45
|
+
const rangeEnd = Math.min(Math.floor((bucketIndex + 1) * bucketWidth) + 1, rows.length - 1);
|
|
46
|
+
const anchorX = x[anchorIndex];
|
|
47
|
+
const anchorY = y[anchorIndex];
|
|
48
|
+
let largestArea = -1;
|
|
49
|
+
let selectedIndex = rangeStart;
|
|
50
|
+
for (let index = rangeStart; index < rangeEnd; index += 1) {
|
|
51
|
+
const area = Math.abs((anchorX - averageX) * (y[index] - anchorY) -
|
|
52
|
+
(anchorX - x[index]) * (averageY - anchorY));
|
|
53
|
+
if (area > largestArea) {
|
|
54
|
+
largestArea = area;
|
|
55
|
+
selectedIndex = index;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
sampled.push(rows[selectedIndex]);
|
|
59
|
+
anchorIndex = selectedIndex;
|
|
60
|
+
}
|
|
61
|
+
sampled.push(rows[rows.length - 1]);
|
|
62
|
+
return sampled;
|
|
63
|
+
}
|
|
64
|
+
function finite(value) {
|
|
65
|
+
return Number.isFinite(value) ? value : 0;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=timeSeries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeSeries.js","sourceRoot":"","sources":["../../../src/utils/timeSeries.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Downsample an ordered time series with the Largest-Triangle-Three-Buckets
|
|
3
|
+
* algorithm.
|
|
4
|
+
*
|
|
5
|
+
* The returned series never mutates `rows`, retains both endpoints whenever
|
|
6
|
+
* `maxPoints` is at least two, and preserves visually significant intermediate
|
|
7
|
+
* points better than fixed-interval sampling. Callers should pass rows in
|
|
8
|
+
* ascending X order.
|
|
9
|
+
*
|
|
10
|
+
* Non-finite projected coordinates are treated as zero so malformed source
|
|
11
|
+
* observations cannot make every triangle area `NaN`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function downsampleTimeSeries<T>(rows: readonly T[], maxPoints: number, xOf: (row: T) => number, yOf: (row: T) => number): T[];
|
|
14
|
+
//# sourceMappingURL=timeSeries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeSeries.d.ts","sourceRoot":"","sources":["../../../src/utils/timeSeries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,EACvB,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GACtB,CAAC,EAAE,CA4DL"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Downsample an ordered time series with the Largest-Triangle-Three-Buckets
|
|
3
|
+
* algorithm.
|
|
4
|
+
*
|
|
5
|
+
* The returned series never mutates `rows`, retains both endpoints whenever
|
|
6
|
+
* `maxPoints` is at least two, and preserves visually significant intermediate
|
|
7
|
+
* points better than fixed-interval sampling. Callers should pass rows in
|
|
8
|
+
* ascending X order.
|
|
9
|
+
*
|
|
10
|
+
* Non-finite projected coordinates are treated as zero so malformed source
|
|
11
|
+
* observations cannot make every triangle area `NaN`.
|
|
12
|
+
*/
|
|
13
|
+
export function downsampleTimeSeries(rows, maxPoints, xOf, yOf) {
|
|
14
|
+
if (!Number.isSafeInteger(maxPoints) || maxPoints < 0) {
|
|
15
|
+
throw new RangeError("maxPoints must be a non-negative safe integer");
|
|
16
|
+
}
|
|
17
|
+
if (maxPoints === 0 || rows.length === 0)
|
|
18
|
+
return [];
|
|
19
|
+
if (rows.length <= maxPoints)
|
|
20
|
+
return rows.slice();
|
|
21
|
+
if (maxPoints < 3) {
|
|
22
|
+
return [rows[0], rows[rows.length - 1]].slice(0, maxPoints);
|
|
23
|
+
}
|
|
24
|
+
const x = rows.map((row) => finite(xOf(row)));
|
|
25
|
+
const y = rows.map((row) => finite(yOf(row)));
|
|
26
|
+
const sampled = [rows[0]];
|
|
27
|
+
const bucketWidth = (rows.length - 2) / (maxPoints - 2);
|
|
28
|
+
let anchorIndex = 0;
|
|
29
|
+
for (let bucketIndex = 0; bucketIndex < maxPoints - 2; bucketIndex += 1) {
|
|
30
|
+
const averageStart = Math.floor((bucketIndex + 1) * bucketWidth) + 1;
|
|
31
|
+
const averageEnd = Math.min(Math.floor((bucketIndex + 2) * bucketWidth) + 1, rows.length);
|
|
32
|
+
const averageLength = averageEnd - averageStart;
|
|
33
|
+
let averageX = 0;
|
|
34
|
+
let averageY = 0;
|
|
35
|
+
for (let index = averageStart; index < averageEnd; index += 1) {
|
|
36
|
+
averageX += x[index];
|
|
37
|
+
averageY += y[index];
|
|
38
|
+
}
|
|
39
|
+
averageX /= averageLength;
|
|
40
|
+
averageY /= averageLength;
|
|
41
|
+
const rangeStart = Math.floor(bucketIndex * bucketWidth) + 1;
|
|
42
|
+
const rangeEnd = Math.min(Math.floor((bucketIndex + 1) * bucketWidth) + 1, rows.length - 1);
|
|
43
|
+
const anchorX = x[anchorIndex];
|
|
44
|
+
const anchorY = y[anchorIndex];
|
|
45
|
+
let largestArea = -1;
|
|
46
|
+
let selectedIndex = rangeStart;
|
|
47
|
+
for (let index = rangeStart; index < rangeEnd; index += 1) {
|
|
48
|
+
const area = Math.abs((anchorX - averageX) * (y[index] - anchorY) -
|
|
49
|
+
(anchorX - x[index]) * (averageY - anchorY));
|
|
50
|
+
if (area > largestArea) {
|
|
51
|
+
largestArea = area;
|
|
52
|
+
selectedIndex = index;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
sampled.push(rows[selectedIndex]);
|
|
56
|
+
anchorIndex = selectedIndex;
|
|
57
|
+
}
|
|
58
|
+
sampled.push(rows[rows.length - 1]);
|
|
59
|
+
return sampled;
|
|
60
|
+
}
|
|
61
|
+
function finite(value) {
|
|
62
|
+
return Number.isFinite(value) ? value : 0;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=timeSeries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeSeries.js","sourceRoot":"","sources":["../../../src/utils/timeSeries.ts"],"names":[],"mappings":"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"}
|