@steerprotocol/app-loader 2.1.1 → 3.0.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 +137 -1
- package/lib/{WasmModule.d.ts → WasmModule-MhaHnYBX.d.mts} +21 -2
- package/lib/{esm/WasmModule.d.ts → WasmModule-MhaHnYBX.d.ts} +21 -2
- package/lib/browser.mjs +559 -0
- package/lib/browser.mjs.map +1 -0
- package/lib/index.cjs +623 -0
- package/lib/index.cjs.map +1 -0
- package/lib/index.d.mts +20 -0
- package/lib/index.d.ts +10 -8
- package/lib/index.mjs +600 -0
- package/lib/index.mjs.map +1 -0
- package/lib/node.cjs +607 -0
- package/lib/node.cjs.map +1 -0
- package/lib/node.d.mts +19 -0
- package/lib/node.d.ts +19 -0
- package/lib/node.mjs +567 -0
- package/lib/node.mjs.map +1 -0
- package/package.json +27 -13
- package/lib/Candle.d.ts +0 -14
- package/lib/Candle.js +0 -79
- package/lib/RawTradeData.d.ts +0 -6
- package/lib/RawTradeData.js +0 -11
- package/lib/WasmModule.js +0 -2
- package/lib/esm/Candle.d.ts +0 -14
- package/lib/esm/Candle.js +0 -75
- package/lib/esm/RawTradeData.d.ts +0 -6
- package/lib/esm/RawTradeData.js +0 -10
- package/lib/esm/WasmModule.js +0 -1
- package/lib/esm/index.d.ts +0 -18
- package/lib/esm/index.js +0 -397
- package/lib/esm/package.json +0 -1
- package/lib/esm/timestring.d.ts +0 -9
- package/lib/esm/timestring.js +0 -83
- package/lib/index.js +0 -439
- package/lib/timestring.d.ts +0 -9
- package/lib/timestring.js +0 -86
package/package.json
CHANGED
|
@@ -1,30 +1,43 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steerprotocol/app-loader",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "App Loader for Steer Protocol",
|
|
5
|
-
"main": "lib/index.
|
|
6
|
-
"module": "lib/
|
|
7
|
-
"types": "lib/index.d.ts",
|
|
5
|
+
"main": "./lib/index.cjs",
|
|
6
|
+
"module": "./lib/index.mjs",
|
|
7
|
+
"types": "./lib/index.d.ts",
|
|
8
|
+
"engines": {
|
|
9
|
+
"node": ">=18"
|
|
10
|
+
},
|
|
8
11
|
"exports": {
|
|
9
12
|
".": {
|
|
10
13
|
"types": "./lib/index.d.ts",
|
|
11
|
-
"
|
|
12
|
-
"
|
|
14
|
+
"browser": "./lib/browser.mjs",
|
|
15
|
+
"import": "./lib/index.mjs",
|
|
16
|
+
"require": "./lib/index.cjs",
|
|
17
|
+
"default": "./lib/index.mjs"
|
|
18
|
+
},
|
|
19
|
+
"./browser": {
|
|
20
|
+
"types": "./lib/browser.d.mts",
|
|
21
|
+
"import": "./lib/browser.mjs",
|
|
22
|
+
"default": "./lib/browser.mjs"
|
|
13
23
|
},
|
|
14
|
-
"
|
|
24
|
+
"./node": {
|
|
25
|
+
"types": "./lib/node.d.ts",
|
|
26
|
+
"import": "./lib/node.mjs",
|
|
27
|
+
"require": "./lib/node.cjs",
|
|
28
|
+
"default": "./lib/node.mjs"
|
|
29
|
+
}
|
|
15
30
|
},
|
|
16
31
|
"publishConfig": {
|
|
17
32
|
"access": "public"
|
|
18
33
|
},
|
|
19
34
|
"scripts": {
|
|
20
|
-
"build": "
|
|
21
|
-
"build:cjs": "tsc",
|
|
22
|
-
"build:esm": "tsc -p tsconfig.esm.json",
|
|
23
|
-
"build:post": "echo '{\"type\": \"module\"}' > lib/esm/package.json",
|
|
35
|
+
"build": "tsup",
|
|
24
36
|
"format": "prettier --write \"src/**/*.(js|ts)\"",
|
|
25
37
|
"lint": "eslint src --ext .js,.ts",
|
|
26
38
|
"lint:fix": "eslint src --fix --ext .js,.ts",
|
|
27
39
|
"test": "jest --config jest.config.js",
|
|
40
|
+
"test:consumers": "node scripts/test-consumers.mjs",
|
|
28
41
|
"prepare": "npm run build",
|
|
29
42
|
"prepublishOnly": "npm test && npm run lint",
|
|
30
43
|
"preversion": "npm run lint",
|
|
@@ -56,6 +69,7 @@
|
|
|
56
69
|
"@semantic-release/npm": "^13.1.3",
|
|
57
70
|
"@semantic-release/release-notes-generator": "^14.1.0",
|
|
58
71
|
"@types/jest": "29.5.6",
|
|
72
|
+
"@types/node": "24.7.2",
|
|
59
73
|
"@typescript-eslint/eslint-plugin": "6.8.0",
|
|
60
74
|
"@typescript-eslint/parser": "6.8.0",
|
|
61
75
|
"eslint": "8.51.0",
|
|
@@ -64,6 +78,7 @@
|
|
|
64
78
|
"prettier": "3.0.3",
|
|
65
79
|
"semantic-release": "^24.2.9",
|
|
66
80
|
"ts-jest": "29.1.1",
|
|
81
|
+
"tsup": "^8.5.0",
|
|
67
82
|
"typescript": "5.2.2"
|
|
68
83
|
},
|
|
69
84
|
"files": [
|
|
@@ -71,7 +86,6 @@
|
|
|
71
86
|
],
|
|
72
87
|
"dependencies": {
|
|
73
88
|
"ccxt": "^4.1.19",
|
|
74
|
-
"ethers": "^6.12.1"
|
|
75
|
-
"undici": "^5.26.4"
|
|
89
|
+
"ethers": "^6.12.1"
|
|
76
90
|
}
|
|
77
91
|
}
|
package/lib/Candle.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { RawTradeData } from './RawTradeData';
|
|
2
|
-
export declare class Candle {
|
|
3
|
-
timestamp: number;
|
|
4
|
-
high: number;
|
|
5
|
-
low: number;
|
|
6
|
-
open: number;
|
|
7
|
-
close: number;
|
|
8
|
-
volume: number;
|
|
9
|
-
constructor(timestamp: number, high: number, low: number, open: number, close: number, volume: number);
|
|
10
|
-
toString(): string;
|
|
11
|
-
}
|
|
12
|
-
export declare function encodeCandle(candle: Candle): Uint32Array;
|
|
13
|
-
export declare function decodeCandle(buffer: Uint32Array): Candle;
|
|
14
|
-
export declare function generateCandles(data: RawTradeData[], candleSize: string): Candle[];
|
package/lib/Candle.js
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.generateCandles = exports.decodeCandle = exports.encodeCandle = exports.Candle = void 0;
|
|
7
|
-
const timestring_1 = __importDefault(require("./timestring"));
|
|
8
|
-
class Candle {
|
|
9
|
-
constructor(timestamp, high, low, open, close, volume) {
|
|
10
|
-
this.timestamp = timestamp;
|
|
11
|
-
this.high = high;
|
|
12
|
-
this.low = low;
|
|
13
|
-
this.open = open;
|
|
14
|
-
this.close = close;
|
|
15
|
-
this.volume = volume;
|
|
16
|
-
}
|
|
17
|
-
toString() {
|
|
18
|
-
return JSON.stringify(this);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.Candle = Candle;
|
|
22
|
-
function encodeCandle(candle) {
|
|
23
|
-
return new Uint32Array([candle.timestamp, candle.high, candle.low, candle.open, candle.close, candle.volume]);
|
|
24
|
-
}
|
|
25
|
-
exports.encodeCandle = encodeCandle;
|
|
26
|
-
function decodeCandle(buffer) {
|
|
27
|
-
return new Candle(buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], buffer[5]);
|
|
28
|
-
}
|
|
29
|
-
exports.decodeCandle = decodeCandle;
|
|
30
|
-
function generateCandles(data, candleSize) {
|
|
31
|
-
const candleWidth = (0, timestring_1.default)(candleSize, 'ms', {});
|
|
32
|
-
if (data.length === 0) {
|
|
33
|
-
throw new Error('Input data is empty');
|
|
34
|
-
}
|
|
35
|
-
const _data = data.map((point) => {
|
|
36
|
-
return Object.assign(Object.assign({}, point), {
|
|
37
|
-
// This will convert the timestamp to milliseconds if it's in seconds
|
|
38
|
-
timestamp: point.timestamp && String(point.timestamp).length == 10 ? point.timestamp * 1000 : point.timestamp,
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
if (_data[0] === undefined || Object.keys(_data[0]).length === 0) {
|
|
42
|
-
return [];
|
|
43
|
-
}
|
|
44
|
-
const ohlcvData = [];
|
|
45
|
-
let i = 0;
|
|
46
|
-
let currentTimestamp = Math.floor(_data[0].timestamp / candleWidth) * candleWidth;
|
|
47
|
-
let open = _data[0].price;
|
|
48
|
-
let high = _data[0].price;
|
|
49
|
-
let low = _data[0].price;
|
|
50
|
-
let close = _data[0].price;
|
|
51
|
-
let volume = 0.0;
|
|
52
|
-
while (i < _data.length) {
|
|
53
|
-
open = close;
|
|
54
|
-
high = close;
|
|
55
|
-
low = close;
|
|
56
|
-
volume = 0.0;
|
|
57
|
-
let innerI = i;
|
|
58
|
-
while (innerI < _data.length && _data[innerI].timestamp < currentTimestamp + candleWidth) {
|
|
59
|
-
open = innerI === 0 ? _data[innerI].price : open;
|
|
60
|
-
high = Math.max(high, _data[innerI].price);
|
|
61
|
-
low = Math.min(low, _data[innerI].price);
|
|
62
|
-
close = _data[innerI].price;
|
|
63
|
-
volume += _data[innerI].volume;
|
|
64
|
-
innerI++;
|
|
65
|
-
}
|
|
66
|
-
ohlcvData.push({
|
|
67
|
-
timestamp: currentTimestamp,
|
|
68
|
-
high,
|
|
69
|
-
low,
|
|
70
|
-
open,
|
|
71
|
-
close,
|
|
72
|
-
volume,
|
|
73
|
-
});
|
|
74
|
-
currentTimestamp += candleWidth;
|
|
75
|
-
i = innerI;
|
|
76
|
-
}
|
|
77
|
-
return ohlcvData;
|
|
78
|
-
}
|
|
79
|
-
exports.generateCandles = generateCandles;
|
package/lib/RawTradeData.d.ts
DELETED
package/lib/RawTradeData.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RawTradeData = void 0;
|
|
4
|
-
class RawTradeData {
|
|
5
|
-
constructor(timestamp, price, volume) {
|
|
6
|
-
this.timestamp = timestamp;
|
|
7
|
-
this.price = price;
|
|
8
|
-
this.volume = volume;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
exports.RawTradeData = RawTradeData;
|
package/lib/WasmModule.js
DELETED
package/lib/esm/Candle.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { RawTradeData } from './RawTradeData';
|
|
2
|
-
export declare class Candle {
|
|
3
|
-
timestamp: number;
|
|
4
|
-
high: number;
|
|
5
|
-
low: number;
|
|
6
|
-
open: number;
|
|
7
|
-
close: number;
|
|
8
|
-
volume: number;
|
|
9
|
-
constructor(timestamp: number, high: number, low: number, open: number, close: number, volume: number);
|
|
10
|
-
toString(): string;
|
|
11
|
-
}
|
|
12
|
-
export declare function encodeCandle(candle: Candle): Uint32Array;
|
|
13
|
-
export declare function decodeCandle(buffer: Uint32Array): Candle;
|
|
14
|
-
export declare function generateCandles(data: RawTradeData[], candleSize: string): Candle[];
|
package/lib/esm/Candle.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import timestring from './timestring';
|
|
2
|
-
export class Candle {
|
|
3
|
-
timestamp;
|
|
4
|
-
high;
|
|
5
|
-
low;
|
|
6
|
-
open;
|
|
7
|
-
close;
|
|
8
|
-
volume;
|
|
9
|
-
constructor(timestamp, high, low, open, close, volume) {
|
|
10
|
-
this.timestamp = timestamp;
|
|
11
|
-
this.high = high;
|
|
12
|
-
this.low = low;
|
|
13
|
-
this.open = open;
|
|
14
|
-
this.close = close;
|
|
15
|
-
this.volume = volume;
|
|
16
|
-
}
|
|
17
|
-
toString() {
|
|
18
|
-
return JSON.stringify(this);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
export function encodeCandle(candle) {
|
|
22
|
-
return new Uint32Array([candle.timestamp, candle.high, candle.low, candle.open, candle.close, candle.volume]);
|
|
23
|
-
}
|
|
24
|
-
export function decodeCandle(buffer) {
|
|
25
|
-
return new Candle(buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], buffer[5]);
|
|
26
|
-
}
|
|
27
|
-
export function generateCandles(data, candleSize) {
|
|
28
|
-
const candleWidth = timestring(candleSize, 'ms', {});
|
|
29
|
-
if (data.length === 0) {
|
|
30
|
-
throw new Error('Input data is empty');
|
|
31
|
-
}
|
|
32
|
-
const _data = data.map((point) => {
|
|
33
|
-
return Object.assign(Object.assign({}, point), {
|
|
34
|
-
// This will convert the timestamp to milliseconds if it's in seconds
|
|
35
|
-
timestamp: point.timestamp && String(point.timestamp).length == 10 ? point.timestamp * 1000 : point.timestamp,
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
if (_data[0] === undefined || Object.keys(_data[0]).length === 0) {
|
|
39
|
-
return [];
|
|
40
|
-
}
|
|
41
|
-
const ohlcvData = [];
|
|
42
|
-
let i = 0;
|
|
43
|
-
let currentTimestamp = Math.floor(_data[0].timestamp / candleWidth) * candleWidth;
|
|
44
|
-
let open = _data[0].price;
|
|
45
|
-
let high = _data[0].price;
|
|
46
|
-
let low = _data[0].price;
|
|
47
|
-
let close = _data[0].price;
|
|
48
|
-
let volume = 0.0;
|
|
49
|
-
while (i < _data.length) {
|
|
50
|
-
open = close;
|
|
51
|
-
high = close;
|
|
52
|
-
low = close;
|
|
53
|
-
volume = 0.0;
|
|
54
|
-
let innerI = i;
|
|
55
|
-
while (innerI < _data.length && _data[innerI].timestamp < currentTimestamp + candleWidth) {
|
|
56
|
-
open = innerI === 0 ? _data[innerI].price : open;
|
|
57
|
-
high = Math.max(high, _data[innerI].price);
|
|
58
|
-
low = Math.min(low, _data[innerI].price);
|
|
59
|
-
close = _data[innerI].price;
|
|
60
|
-
volume += _data[innerI].volume;
|
|
61
|
-
innerI++;
|
|
62
|
-
}
|
|
63
|
-
ohlcvData.push({
|
|
64
|
-
timestamp: currentTimestamp,
|
|
65
|
-
high,
|
|
66
|
-
low,
|
|
67
|
-
open,
|
|
68
|
-
close,
|
|
69
|
-
volume,
|
|
70
|
-
});
|
|
71
|
-
currentTimestamp += candleWidth;
|
|
72
|
-
i = innerI;
|
|
73
|
-
}
|
|
74
|
-
return ohlcvData;
|
|
75
|
-
}
|
package/lib/esm/RawTradeData.js
DELETED
package/lib/esm/WasmModule.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/lib/esm/index.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Candle } from './Candle';
|
|
2
|
-
import { RawTradeData } from './RawTradeData';
|
|
3
|
-
import { WasmModule } from './WasmModule';
|
|
4
|
-
export { Candle, RawTradeData, WasmModule };
|
|
5
|
-
/**
|
|
6
|
-
* Load a wasm bundle synchronously. Only accepts the actual binary data.
|
|
7
|
-
* @param input - Wasm bundle data
|
|
8
|
-
* @param imports - Imports
|
|
9
|
-
* @returns
|
|
10
|
-
*/
|
|
11
|
-
export declare function loadWasmSync(input: ArrayBuffer, imports?: {}): WasmModule;
|
|
12
|
-
/**
|
|
13
|
-
* Load a wasm bundle asynchronously. Accepts the actual binary data or file path.
|
|
14
|
-
* @param input - Wasm bundle data or path
|
|
15
|
-
* @param imports - Imports
|
|
16
|
-
* @returns
|
|
17
|
-
*/
|
|
18
|
-
export declare function loadWasm(input: string | ArrayBuffer, imports?: {}): Promise<WasmModule>;
|