wickra 0.5.0 → 0.5.2
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 +8 -4
- package/index.d.ts +275 -0
- package/index.js +29 -1
- package/npm/darwin-arm64/package.json +1 -1
- package/npm/darwin-arm64/wickra.darwin-arm64.node +0 -0
- package/npm/darwin-x64/package.json +1 -1
- package/npm/darwin-x64/wickra.darwin-x64.node +0 -0
- package/npm/linux-arm64-gnu/package.json +1 -1
- package/npm/linux-arm64-gnu/wickra.linux-arm64-gnu.node +0 -0
- package/npm/linux-x64-gnu/package.json +1 -1
- package/npm/linux-x64-gnu/wickra.linux-x64-gnu.node +0 -0
- package/npm/win32-arm64-msvc/package.json +1 -1
- package/npm/win32-arm64-msvc/wickra.win32-arm64-msvc.node +0 -0
- package/npm/win32-x64-msvc/package.json +1 -1
- package/npm/win32-x64-msvc/wickra.win32-x64-msvc.node +0 -0
- package/package.json +7 -7
- package/wickra.darwin-arm64.node +0 -0
- package/wickra.darwin-x64.node +0 -0
- package/wickra.linux-arm64-gnu.node +0 -0
- package/wickra.linux-x64-gnu.node +0 -0
- package/wickra.win32-arm64-msvc.node +0 -0
- package/wickra.win32-x64-msvc.node +0 -0
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<a href="https://wickra.org"><img src="https://raw.githubusercontent.com/wickra-lib/.github/main/profile/wickra-banner.webp?v=
|
|
2
|
+
<a href="https://wickra.org"><img src="https://raw.githubusercontent.com/wickra-lib/.github/main/profile/wickra-banner.webp?v=367" alt="Wickra — streaming-first technical indicators" width="100%"></a>
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
[](https://github.com/wickra-lib/wickra/actions/workflows/ci.yml)
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
[](https://www.npmjs.com/package/wickra)
|
|
12
12
|
[](#license)
|
|
13
13
|
[](https://scorecard.dev/viewer/?uri=github.com/wickra-lib/wickra)
|
|
14
|
+
[](https://www.bestpractices.dev/projects/13094)
|
|
14
15
|
[](https://github.com/wickra-lib/wickra/attestations)
|
|
15
16
|
[](https://docs.wickra.org)
|
|
16
17
|
|
|
@@ -47,7 +48,7 @@ Full documentation lives at **[docs.wickra.org](https://docs.wickra.org)**:
|
|
|
47
48
|
[Node](https://docs.wickra.org/Quickstart-Node),
|
|
48
49
|
[WASM](https://docs.wickra.org/Quickstart-WASM).
|
|
49
50
|
- **Indicators** — a per-indicator deep dive (formula, parameters, warmup) for
|
|
50
|
-
every one of the
|
|
51
|
+
every one of the 367 indicators; start at the
|
|
51
52
|
[indicators overview](https://docs.wickra.org/Indicators-Overview).
|
|
52
53
|
- **Reference** — [warmup periods](https://docs.wickra.org/Warmup-Periods),
|
|
53
54
|
[streaming vs batch](https://docs.wickra.org/Streaming-vs-Batch),
|
|
@@ -135,7 +136,7 @@ python -m benchmarks.compare_libraries
|
|
|
135
136
|
|
|
136
137
|
## Indicators
|
|
137
138
|
|
|
138
|
-
|
|
139
|
+
367 streaming-first indicators across twenty-three families. Every one passes the
|
|
139
140
|
`batch == streaming` equivalence test, reference-value tests, and reset
|
|
140
141
|
semantics tests. Each has a per-indicator deep dive (formula, parameters,
|
|
141
142
|
warmup) at [docs.wickra.org](https://docs.wickra.org/Indicators-Overview).
|
|
@@ -157,11 +158,14 @@ warmup) at [docs.wickra.org](https://docs.wickra.org/Indicators-Overview).
|
|
|
157
158
|
| Ichimoku & Charts | Ichimoku Kinko Hyo (Tenkan, Kijun, Senkou A/B, Chikou), Heikin-Ashi |
|
|
158
159
|
| Alt-Chart Bars | Renko (box-size bricks), Kagi (reversal-amount lines), Point & Figure (X/O columns) |
|
|
159
160
|
| Candlestick Patterns | Doji, Hammer, Inverted Hammer, Hanging Man, Shooting Star, Engulfing, Harami, Morning/Evening Star, Three White Soldiers/Black Crows, Piercing Line/Dark Cloud Cover, Marubozu, Tweezer, Spinning Top, Three Inside Up/Down, Three Outside Up/Down, Two Crows, Upside Gap Two Crows, Identical Three Crows, Three Line Strike, Three Stars in the South, Abandoned Baby, Advance Block, Belt-hold, Breakaway, Counterattack, Doji Star, Dragonfly Doji, Gravestone Doji, Long-Legged Doji, Rickshaw Man, Evening Doji Star, Morning Doji Star, Gap Side-by-Side White, High-Wave, Hikkake, Modified Hikkake, Homing Pigeon, On-Neck, In-Neck, Thrusting, Separating Lines, Kicking, Kicking by Length, Ladder Bottom, Mat Hold, Matching Low, Long Line, Short Line, Rising Three Methods, Falling Three Methods, Upside Gap Three Methods, Downside Gap Three Methods, Stalled Pattern, Stick Sandwich, Takuri, Closing Marubozu, Opening Marubozu, Tasuki Gap, Unique Three River, Concealing Baby Swallow |
|
|
161
|
+
| Chart Patterns | Double Top / Bottom, Triple Top / Bottom, Head and Shoulders, Triangle (asc/desc/sym), Wedge (rising/falling), Flag / Pennant, Rectangle / Range, Cup and Handle |
|
|
162
|
+
| Harmonic Patterns | AB=CD, Gartley, Butterfly, Bat, Crab, Shark, Cypher, Three Drives |
|
|
160
163
|
| Microstructure | Order-Book Imbalance (Top-1 / Top-N / Full), Microprice, Quoted Spread, Depth Slope, Signed Volume, Cumulative Volume Delta, Trade Imbalance, Effective Spread, Realized Spread, Kyle's Lambda, Footprint |
|
|
161
164
|
| Derivatives | Funding Rate, Funding Rate Mean, Funding Rate Z-Score, Funding Basis, Open-Interest Delta, OI / Price Divergence, OI-Weighted Price, Long/Short Ratio, Taker Buy/Sell Ratio, Liquidation Features, Term-Structure Basis, Calendar Spread |
|
|
162
165
|
| Market Profile | Value Area (POC / VAH / VAL), Volume Profile (histogram), TPO Profile, Initial Balance, Opening Range |
|
|
163
166
|
| Market Breadth | Advance/Decline Line, Advance/Decline Ratio, Advance/Decline Volume Line, McClellan Oscillator, McClellan Summation Index, TRIN / Arms Index, Breadth Thrust, New Highs - New Lows, High-Low Index, Percent Above Moving Average, Up/Down Volume Ratio, Bullish Percent Index, Cumulative Volume Index, Absolute Breadth Index, TICK Index |
|
|
164
167
|
| Risk / Performance | Sharpe Ratio, Sortino Ratio, Calmar Ratio, Omega Ratio, Max Drawdown, Average Drawdown, Drawdown Duration, Pain Index, Value at Risk, Conditional Value at Risk (CVaR), Profit Factor, Gain/Loss Ratio, Recovery Factor, Kelly Criterion, Treynor Ratio, Information Ratio, Alpha (Jensen) |
|
|
168
|
+
| Seasonality & Session | Session VWAP, Session High/Low, Session Range, Average Daily Range, Overnight Gap, Overnight/Intraday Return, Turn-of-Month, Seasonal Z-Score, Time-of-Day Return Profile, Day-of-Week Profile, Intraday Volatility Profile, Volume-by-Time Profile |
|
|
165
169
|
|
|
166
170
|
Every candlestick pattern emits a signed per-bar value — `+1.0` bullish,
|
|
167
171
|
`−1.0` bearish, `0.0` none — so the family drops straight into a feature matrix
|
|
@@ -240,7 +244,7 @@ A Python live-trading example using the public `websockets` package lives at
|
|
|
240
244
|
```
|
|
241
245
|
wickra/
|
|
242
246
|
├── crates/
|
|
243
|
-
│ ├── wickra-core/ core engine + all
|
|
247
|
+
│ ├── wickra-core/ core engine + all 367 indicators
|
|
244
248
|
│ ├── wickra/ top-level facade crate (publishes on crates.io) + benches/
|
|
245
249
|
│ └── wickra-data/ CSV reader, tick aggregator, live exchange feeds
|
|
246
250
|
├── bindings/
|
package/index.d.ts
CHANGED
|
@@ -349,6 +349,19 @@ export interface PnfColumnValue {
|
|
|
349
349
|
high: number
|
|
350
350
|
low: number
|
|
351
351
|
}
|
|
352
|
+
export interface SessionHighLowValue {
|
|
353
|
+
high: number
|
|
354
|
+
low: number
|
|
355
|
+
}
|
|
356
|
+
export interface SessionRangeValue {
|
|
357
|
+
asia: number
|
|
358
|
+
eu: number
|
|
359
|
+
us: number
|
|
360
|
+
}
|
|
361
|
+
export interface OvernightIntradayReturnValue {
|
|
362
|
+
overnight: number
|
|
363
|
+
intraday: number
|
|
364
|
+
}
|
|
352
365
|
export type SmaNode = SMA
|
|
353
366
|
export declare class SMA {
|
|
354
367
|
constructor(period: number)
|
|
@@ -3019,6 +3032,150 @@ export declare class ConcealingBabySwallow {
|
|
|
3019
3032
|
isReady(): boolean
|
|
3020
3033
|
warmupPeriod(): number
|
|
3021
3034
|
}
|
|
3035
|
+
export type DoubleTopBottomNode = DoubleTopBottom
|
|
3036
|
+
export declare class DoubleTopBottom {
|
|
3037
|
+
constructor()
|
|
3038
|
+
update(open: number, high: number, low: number, close: number): number | null
|
|
3039
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
|
|
3040
|
+
reset(): void
|
|
3041
|
+
isReady(): boolean
|
|
3042
|
+
warmupPeriod(): number
|
|
3043
|
+
}
|
|
3044
|
+
export type TripleTopBottomNode = TripleTopBottom
|
|
3045
|
+
export declare class TripleTopBottom {
|
|
3046
|
+
constructor()
|
|
3047
|
+
update(open: number, high: number, low: number, close: number): number | null
|
|
3048
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
|
|
3049
|
+
reset(): void
|
|
3050
|
+
isReady(): boolean
|
|
3051
|
+
warmupPeriod(): number
|
|
3052
|
+
}
|
|
3053
|
+
export type HeadAndShouldersNode = HeadAndShoulders
|
|
3054
|
+
export declare class HeadAndShoulders {
|
|
3055
|
+
constructor()
|
|
3056
|
+
update(open: number, high: number, low: number, close: number): number | null
|
|
3057
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
|
|
3058
|
+
reset(): void
|
|
3059
|
+
isReady(): boolean
|
|
3060
|
+
warmupPeriod(): number
|
|
3061
|
+
}
|
|
3062
|
+
export type TriangleNode = Triangle
|
|
3063
|
+
export declare class Triangle {
|
|
3064
|
+
constructor()
|
|
3065
|
+
update(open: number, high: number, low: number, close: number): number | null
|
|
3066
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
|
|
3067
|
+
reset(): void
|
|
3068
|
+
isReady(): boolean
|
|
3069
|
+
warmupPeriod(): number
|
|
3070
|
+
}
|
|
3071
|
+
export type WedgeNode = Wedge
|
|
3072
|
+
export declare class Wedge {
|
|
3073
|
+
constructor()
|
|
3074
|
+
update(open: number, high: number, low: number, close: number): number | null
|
|
3075
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
|
|
3076
|
+
reset(): void
|
|
3077
|
+
isReady(): boolean
|
|
3078
|
+
warmupPeriod(): number
|
|
3079
|
+
}
|
|
3080
|
+
export type FlagPennantNode = FlagPennant
|
|
3081
|
+
export declare class FlagPennant {
|
|
3082
|
+
constructor()
|
|
3083
|
+
update(open: number, high: number, low: number, close: number): number | null
|
|
3084
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
|
|
3085
|
+
reset(): void
|
|
3086
|
+
isReady(): boolean
|
|
3087
|
+
warmupPeriod(): number
|
|
3088
|
+
}
|
|
3089
|
+
export type RectangleRangeNode = RectangleRange
|
|
3090
|
+
export declare class RectangleRange {
|
|
3091
|
+
constructor()
|
|
3092
|
+
update(open: number, high: number, low: number, close: number): number | null
|
|
3093
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
|
|
3094
|
+
reset(): void
|
|
3095
|
+
isReady(): boolean
|
|
3096
|
+
warmupPeriod(): number
|
|
3097
|
+
}
|
|
3098
|
+
export type CupAndHandleNode = CupAndHandle
|
|
3099
|
+
export declare class CupAndHandle {
|
|
3100
|
+
constructor()
|
|
3101
|
+
update(open: number, high: number, low: number, close: number): number | null
|
|
3102
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
|
|
3103
|
+
reset(): void
|
|
3104
|
+
isReady(): boolean
|
|
3105
|
+
warmupPeriod(): number
|
|
3106
|
+
}
|
|
3107
|
+
export type AbcdNode = Abcd
|
|
3108
|
+
export declare class Abcd {
|
|
3109
|
+
constructor()
|
|
3110
|
+
update(open: number, high: number, low: number, close: number): number | null
|
|
3111
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
|
|
3112
|
+
reset(): void
|
|
3113
|
+
isReady(): boolean
|
|
3114
|
+
warmupPeriod(): number
|
|
3115
|
+
}
|
|
3116
|
+
export type GartleyNode = Gartley
|
|
3117
|
+
export declare class Gartley {
|
|
3118
|
+
constructor()
|
|
3119
|
+
update(open: number, high: number, low: number, close: number): number | null
|
|
3120
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
|
|
3121
|
+
reset(): void
|
|
3122
|
+
isReady(): boolean
|
|
3123
|
+
warmupPeriod(): number
|
|
3124
|
+
}
|
|
3125
|
+
export type ButterflyNode = Butterfly
|
|
3126
|
+
export declare class Butterfly {
|
|
3127
|
+
constructor()
|
|
3128
|
+
update(open: number, high: number, low: number, close: number): number | null
|
|
3129
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
|
|
3130
|
+
reset(): void
|
|
3131
|
+
isReady(): boolean
|
|
3132
|
+
warmupPeriod(): number
|
|
3133
|
+
}
|
|
3134
|
+
export type BatNode = Bat
|
|
3135
|
+
export declare class Bat {
|
|
3136
|
+
constructor()
|
|
3137
|
+
update(open: number, high: number, low: number, close: number): number | null
|
|
3138
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
|
|
3139
|
+
reset(): void
|
|
3140
|
+
isReady(): boolean
|
|
3141
|
+
warmupPeriod(): number
|
|
3142
|
+
}
|
|
3143
|
+
export type CrabNode = Crab
|
|
3144
|
+
export declare class Crab {
|
|
3145
|
+
constructor()
|
|
3146
|
+
update(open: number, high: number, low: number, close: number): number | null
|
|
3147
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
|
|
3148
|
+
reset(): void
|
|
3149
|
+
isReady(): boolean
|
|
3150
|
+
warmupPeriod(): number
|
|
3151
|
+
}
|
|
3152
|
+
export type SharkNode = Shark
|
|
3153
|
+
export declare class Shark {
|
|
3154
|
+
constructor()
|
|
3155
|
+
update(open: number, high: number, low: number, close: number): number | null
|
|
3156
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
|
|
3157
|
+
reset(): void
|
|
3158
|
+
isReady(): boolean
|
|
3159
|
+
warmupPeriod(): number
|
|
3160
|
+
}
|
|
3161
|
+
export type CypherNode = Cypher
|
|
3162
|
+
export declare class Cypher {
|
|
3163
|
+
constructor()
|
|
3164
|
+
update(open: number, high: number, low: number, close: number): number | null
|
|
3165
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
|
|
3166
|
+
reset(): void
|
|
3167
|
+
isReady(): boolean
|
|
3168
|
+
warmupPeriod(): number
|
|
3169
|
+
}
|
|
3170
|
+
export type ThreeDrivesNode = ThreeDrives
|
|
3171
|
+
export declare class ThreeDrives {
|
|
3172
|
+
constructor()
|
|
3173
|
+
update(open: number, high: number, low: number, close: number): number | null
|
|
3174
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>): Array<number>
|
|
3175
|
+
reset(): void
|
|
3176
|
+
isReady(): boolean
|
|
3177
|
+
warmupPeriod(): number
|
|
3178
|
+
}
|
|
3022
3179
|
export type OrderBookImbalanceTop1Node = OrderBookImbalanceTop1
|
|
3023
3180
|
export declare class OrderBookImbalanceTop1 {
|
|
3024
3181
|
constructor()
|
|
@@ -3557,3 +3714,121 @@ export declare class Alpha {
|
|
|
3557
3714
|
isReady(): boolean
|
|
3558
3715
|
warmupPeriod(): number
|
|
3559
3716
|
}
|
|
3717
|
+
export type SessionVwapNode = SessionVwap
|
|
3718
|
+
export declare class SessionVwap {
|
|
3719
|
+
constructor(utcOffsetMinutes: number)
|
|
3720
|
+
update(open: number, high: number, low: number, close: number, volume: number, timestamp: number): number | null
|
|
3721
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>, volume: Array<number>, timestamp: Array<number>): Array<number>
|
|
3722
|
+
reset(): void
|
|
3723
|
+
isReady(): boolean
|
|
3724
|
+
warmupPeriod(): number
|
|
3725
|
+
utcOffsetMinutes(): number
|
|
3726
|
+
}
|
|
3727
|
+
export type OvernightGapNode = OvernightGap
|
|
3728
|
+
export declare class OvernightGap {
|
|
3729
|
+
constructor(utcOffsetMinutes: number)
|
|
3730
|
+
update(open: number, high: number, low: number, close: number, volume: number, timestamp: number): number | null
|
|
3731
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>, volume: Array<number>, timestamp: Array<number>): Array<number>
|
|
3732
|
+
reset(): void
|
|
3733
|
+
isReady(): boolean
|
|
3734
|
+
warmupPeriod(): number
|
|
3735
|
+
utcOffsetMinutes(): number
|
|
3736
|
+
}
|
|
3737
|
+
export type SeasonalZScoreNode = SeasonalZScore
|
|
3738
|
+
export declare class SeasonalZScore {
|
|
3739
|
+
constructor(utcOffsetMinutes: number)
|
|
3740
|
+
update(open: number, high: number, low: number, close: number, volume: number, timestamp: number): number | null
|
|
3741
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>, volume: Array<number>, timestamp: Array<number>): Array<number>
|
|
3742
|
+
reset(): void
|
|
3743
|
+
isReady(): boolean
|
|
3744
|
+
warmupPeriod(): number
|
|
3745
|
+
utcOffsetMinutes(): number
|
|
3746
|
+
}
|
|
3747
|
+
export type TimeOfDayReturnProfileNode = TimeOfDayReturnProfile
|
|
3748
|
+
export declare class TimeOfDayReturnProfile {
|
|
3749
|
+
constructor(buckets: number, utcOffsetMinutes: number)
|
|
3750
|
+
update(open: number, high: number, low: number, close: number, volume: number, timestamp: number): Array<number> | null
|
|
3751
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>, volume: Array<number>, timestamp: Array<number>): Array<number>
|
|
3752
|
+
reset(): void
|
|
3753
|
+
isReady(): boolean
|
|
3754
|
+
warmupPeriod(): number
|
|
3755
|
+
buckets(): number
|
|
3756
|
+
utcOffsetMinutes(): number
|
|
3757
|
+
}
|
|
3758
|
+
export type IntradayVolatilityProfileNode = IntradayVolatilityProfile
|
|
3759
|
+
export declare class IntradayVolatilityProfile {
|
|
3760
|
+
constructor(buckets: number, utcOffsetMinutes: number)
|
|
3761
|
+
update(open: number, high: number, low: number, close: number, volume: number, timestamp: number): Array<number> | null
|
|
3762
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>, volume: Array<number>, timestamp: Array<number>): Array<number>
|
|
3763
|
+
reset(): void
|
|
3764
|
+
isReady(): boolean
|
|
3765
|
+
warmupPeriod(): number
|
|
3766
|
+
buckets(): number
|
|
3767
|
+
utcOffsetMinutes(): number
|
|
3768
|
+
}
|
|
3769
|
+
export type VolumeByTimeProfileNode = VolumeByTimeProfile
|
|
3770
|
+
export declare class VolumeByTimeProfile {
|
|
3771
|
+
constructor(buckets: number, utcOffsetMinutes: number)
|
|
3772
|
+
update(open: number, high: number, low: number, close: number, volume: number, timestamp: number): Array<number> | null
|
|
3773
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>, volume: Array<number>, timestamp: Array<number>): Array<number>
|
|
3774
|
+
reset(): void
|
|
3775
|
+
isReady(): boolean
|
|
3776
|
+
warmupPeriod(): number
|
|
3777
|
+
buckets(): number
|
|
3778
|
+
utcOffsetMinutes(): number
|
|
3779
|
+
}
|
|
3780
|
+
export type DayOfWeekProfileNode = DayOfWeekProfile
|
|
3781
|
+
export declare class DayOfWeekProfile {
|
|
3782
|
+
constructor(utcOffsetMinutes: number)
|
|
3783
|
+
update(open: number, high: number, low: number, close: number, volume: number, timestamp: number): Array<number> | null
|
|
3784
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>, volume: Array<number>, timestamp: Array<number>): Array<number>
|
|
3785
|
+
reset(): void
|
|
3786
|
+
isReady(): boolean
|
|
3787
|
+
warmupPeriod(): number
|
|
3788
|
+
utcOffsetMinutes(): number
|
|
3789
|
+
}
|
|
3790
|
+
export type AverageDailyRangeNode = AverageDailyRange
|
|
3791
|
+
export declare class AverageDailyRange {
|
|
3792
|
+
constructor(period: number, utcOffsetMinutes: number)
|
|
3793
|
+
update(open: number, high: number, low: number, close: number, volume: number, timestamp: number): number | null
|
|
3794
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>, volume: Array<number>, timestamp: Array<number>): Array<number>
|
|
3795
|
+
reset(): void
|
|
3796
|
+
isReady(): boolean
|
|
3797
|
+
warmupPeriod(): number
|
|
3798
|
+
}
|
|
3799
|
+
export type TurnOfMonthNode = TurnOfMonth
|
|
3800
|
+
export declare class TurnOfMonth {
|
|
3801
|
+
constructor(nFirst: number, nLast: number, utcOffsetMinutes: number)
|
|
3802
|
+
update(open: number, high: number, low: number, close: number, volume: number, timestamp: number): number | null
|
|
3803
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>, volume: Array<number>, timestamp: Array<number>): Array<number>
|
|
3804
|
+
reset(): void
|
|
3805
|
+
isReady(): boolean
|
|
3806
|
+
warmupPeriod(): number
|
|
3807
|
+
}
|
|
3808
|
+
export type SessionHighLowNode = SessionHighLow
|
|
3809
|
+
export declare class SessionHighLow {
|
|
3810
|
+
constructor(utcOffsetMinutes: number)
|
|
3811
|
+
update(open: number, high: number, low: number, close: number, volume: number, timestamp: number): SessionHighLowValue | null
|
|
3812
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>, volume: Array<number>, timestamp: Array<number>): Array<number>
|
|
3813
|
+
reset(): void
|
|
3814
|
+
isReady(): boolean
|
|
3815
|
+
warmupPeriod(): number
|
|
3816
|
+
}
|
|
3817
|
+
export type SessionRangeNode = SessionRange
|
|
3818
|
+
export declare class SessionRange {
|
|
3819
|
+
constructor(utcOffsetMinutes: number)
|
|
3820
|
+
update(open: number, high: number, low: number, close: number, volume: number, timestamp: number): SessionRangeValue | null
|
|
3821
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>, volume: Array<number>, timestamp: Array<number>): Array<number>
|
|
3822
|
+
reset(): void
|
|
3823
|
+
isReady(): boolean
|
|
3824
|
+
warmupPeriod(): number
|
|
3825
|
+
}
|
|
3826
|
+
export type OvernightIntradayReturnNode = OvernightIntradayReturn
|
|
3827
|
+
export declare class OvernightIntradayReturn {
|
|
3828
|
+
constructor(utcOffsetMinutes: number)
|
|
3829
|
+
update(open: number, high: number, low: number, close: number, volume: number, timestamp: number): OvernightIntradayReturnValue | null
|
|
3830
|
+
batch(open: Array<number>, high: Array<number>, low: Array<number>, close: Array<number>, volume: Array<number>, timestamp: Array<number>): Array<number>
|
|
3831
|
+
reset(): void
|
|
3832
|
+
isReady(): boolean
|
|
3833
|
+
warmupPeriod(): number
|
|
3834
|
+
}
|
package/index.js
CHANGED
|
@@ -310,7 +310,7 @@ if (!nativeBinding) {
|
|
|
310
310
|
throw new Error(`Failed to load native binding`)
|
|
311
311
|
}
|
|
312
312
|
|
|
313
|
-
const { version, SMA, EMA, WMA, RSI, DEMA, TEMA, HMA, ROC, TRIX, SMMA, TRIMA, ZLEMA, MOM, CMO, DPO, StdDev, UlcerIndex, VerticalHorizontalFilter, ZScore, McGinleyDynamic, FRAMA, SuperSmoother, FisherTransform, Decycler, CenterOfGravity, CyberneticCycle, InstantaneousTrendline, EhlersStochastic, RVIVolatility, Variance, CoefficientOfVariation, Skewness, Kurtosis, StandardError, DetrendedStdDev, RSquared, MedianAbsoluteDeviation, MIDPOINT, ROCP, ROCR, ROCR100, LINEARREG_INTERCEPT, TSF, Autocorrelation, HurstExponent, PearsonCorrelation, Beta, PairwiseBeta, SpearmanCorrelation, RollingCorrelation, RollingCovariance, OuHalfLife, SpreadHurst, DistanceSsd, BetaNeutralSpread, PairSpreadZScore, LeadLagCrossCorrelation, Cointegration, RelativeStrengthAB, VarianceRatio, GrangerCausality, KalmanHedgeRatio, SpreadBollingerBands, MACD, MACDFIX, MACDEXT, BollingerBands, ATR, PLUS_DM, MINUS_DM, PLUS_DI, MINUS_DI, DX, MIDPRICE, AVGPRICE, SAREXT, HT_PHASOR, Stochastic, OBV, ADX, ADXR, CCI, WilliamsR, MFI, PSAR, Keltner, Donchian, VWAP, RollingVWAP, AwesomeOscillator, Aroon, Inertia, ConnorsRSI, LaguerreRSI, SMI, KST, PGO, RVI, AwesomeOscillatorHistogram, STC, ElderImpulse, ZeroLagMACD, CFO, APO, KAMA, EVWMA, Alligator, JMA, VIDYA, ALMA, T3, TSI, PMO, TII, ADL, VolumePriceTrend, ChaikinMoneyFlow, ChaikinOscillator, ForceIndex, NVI, PVI, VolumeOscillator, KVO, WilliamsAD, AnchoredRSI, AnchoredVWAP, DemandIndex, TSV, VZO, MarketFacilitationIndex, EaseOfMovement, SuperTrend, ChandelierExit, ChandeKrollStop, AtrTrailingStop, HiLoActivator, VoltyStop, YoyoExit, DonchianStop, PercentageTrailingStop, StepTrailingStop, RenkoTrailingStop, TypicalPrice, MedianPrice, WeightedClose, LinearRegression, LinRegSlope, AcceleratorOscillator, BalanceOfPower, ChoppinessIndex, TrueRange, ChaikinVolatility, YangZhangVolatility, RogersSatchellVolatility, GarmanKlassVolatility, ParkinsonVolatility, LinRegAngle, BollingerBandwidth, PercentB, NATR, HistoricalVolatility, AroonOscillator, WaveTrend, RWI, Vortex, MassIndex, StochRSI, UltimateOscillator, PPO, Coppock, VWMA, MaEnvelope, AccelerationBands, StarcBands, AtrBands, HurstChannel, LinRegChannel, StandardErrorBands, DoubleBollinger, TtmSqueeze, FractalChaosBands, VwapStdDevBands, ClassicPivots, FibonacciPivots, Camarilla, WoodiePivots, DemarkPivots, WilliamsFractals, ZigZag, TDSetup, TDSequential, TDDeMarker, TDREI, TDPressure, TDCombo, TDCountdown, TDLines, TDRangeProjection, TDDifferential, TDOpen, TDRiskLevel, InverseFisherTransform, DecyclerOscillator, RoofingFilter, EmpiricalModeDecomposition, HT_DCPHASE, HT_TRENDMODE, HilbertDominantCycle, AdaptiveCycle, SineWave, MAMA, FAMA, Ichimoku, HeikinAshi, ValueArea, VolumeProfile, TpoProfile, InitialBalance, OpeningRange, Doji, Hammer, InvertedHammer, HangingMan, ShootingStar, Engulfing, Harami, MorningEveningStar, ThreeSoldiersOrCrows, PiercingDarkCloud, Marubozu, Tweezer, SpinningTop, ThreeInside, ThreeOutside, TwoCrows, UpsideGapTwoCrows, IdenticalThreeCrows, ThreeLineStrike, ThreeStarsInSouth, AbandonedBaby, AdvanceBlock, BeltHold, Breakaway, Counterattack, DojiStar, DragonflyDoji, GravestoneDoji, LongLeggedDoji, RickshawMan, EveningDojiStar, MorningDojiStar, GapSideBySideWhite, HighWave, Hikkake, HikkakeModified, HomingPigeon, OnNeck, InNeck, Thrusting, SeparatingLines, Kicking, KickingByLength, LadderBottom, MatHold, MatchingLow, LongLine, ShortLine, RisingThreeMethods, FallingThreeMethods, UpsideGapThreeMethods, DownsideGapThreeMethods, StalledPattern, StickSandwich, Takuri, ClosingMarubozu, OpeningMarubozu, TasukiGap, UniqueThreeRiver, ConcealingBabySwallow, OrderBookImbalanceTop1, OrderBookImbalanceFull, Microprice, QuotedSpread, DepthSlope, OrderBookImbalanceTopN, SignedVolume, CumulativeVolumeDelta, TradeImbalance, EffectiveSpread, RealizedSpread, KylesLambda, Footprint, FundingRate, FundingRateMean, FundingRateZScore, FundingBasis, OpenInterestDelta, OIPriceDivergence, OIWeighted, LongShortRatio, TakerBuySellRatio, LiquidationFeatures, TermStructureBasis, CalendarSpread, AdvanceDecline, AdvanceDeclineRatio, AdVolumeLine, McClellanOscillator, McClellanSummationIndex, Trin, BreadthThrust, NewHighsNewLows, HighLowIndex, PercentAboveMa, UpDownVolumeRatio, BullishPercentIndex, CumulativeVolumeIndex, AbsoluteBreadthIndex, TickIndex, SharpeRatio, SortinoRatio, CalmarRatio, OmegaRatio, MaxDrawdown, AverageDrawdown, DrawdownDuration, PainIndex, ValueAtRisk, ConditionalValueAtRisk, ProfitFactor, GainLossRatio, RecoveryFactor, KellyCriterion, TreynorRatio, InformationRatio, RenkoBars, KagiBars, PointAndFigureBars, Alpha } = nativeBinding
|
|
313
|
+
const { version, SMA, EMA, WMA, RSI, DEMA, TEMA, HMA, ROC, TRIX, SMMA, TRIMA, ZLEMA, MOM, CMO, DPO, StdDev, UlcerIndex, VerticalHorizontalFilter, ZScore, McGinleyDynamic, FRAMA, SuperSmoother, FisherTransform, Decycler, CenterOfGravity, CyberneticCycle, InstantaneousTrendline, EhlersStochastic, RVIVolatility, Variance, CoefficientOfVariation, Skewness, Kurtosis, StandardError, DetrendedStdDev, RSquared, MedianAbsoluteDeviation, MIDPOINT, ROCP, ROCR, ROCR100, LINEARREG_INTERCEPT, TSF, Autocorrelation, HurstExponent, PearsonCorrelation, Beta, PairwiseBeta, SpearmanCorrelation, RollingCorrelation, RollingCovariance, OuHalfLife, SpreadHurst, DistanceSsd, BetaNeutralSpread, PairSpreadZScore, LeadLagCrossCorrelation, Cointegration, RelativeStrengthAB, VarianceRatio, GrangerCausality, KalmanHedgeRatio, SpreadBollingerBands, MACD, MACDFIX, MACDEXT, BollingerBands, ATR, PLUS_DM, MINUS_DM, PLUS_DI, MINUS_DI, DX, MIDPRICE, AVGPRICE, SAREXT, HT_PHASOR, Stochastic, OBV, ADX, ADXR, CCI, WilliamsR, MFI, PSAR, Keltner, Donchian, VWAP, RollingVWAP, AwesomeOscillator, Aroon, Inertia, ConnorsRSI, LaguerreRSI, SMI, KST, PGO, RVI, AwesomeOscillatorHistogram, STC, ElderImpulse, ZeroLagMACD, CFO, APO, KAMA, EVWMA, Alligator, JMA, VIDYA, ALMA, T3, TSI, PMO, TII, ADL, VolumePriceTrend, ChaikinMoneyFlow, ChaikinOscillator, ForceIndex, NVI, PVI, VolumeOscillator, KVO, WilliamsAD, AnchoredRSI, AnchoredVWAP, DemandIndex, TSV, VZO, MarketFacilitationIndex, EaseOfMovement, SuperTrend, ChandelierExit, ChandeKrollStop, AtrTrailingStop, HiLoActivator, VoltyStop, YoyoExit, DonchianStop, PercentageTrailingStop, StepTrailingStop, RenkoTrailingStop, TypicalPrice, MedianPrice, WeightedClose, LinearRegression, LinRegSlope, AcceleratorOscillator, BalanceOfPower, ChoppinessIndex, TrueRange, ChaikinVolatility, YangZhangVolatility, RogersSatchellVolatility, GarmanKlassVolatility, ParkinsonVolatility, LinRegAngle, BollingerBandwidth, PercentB, NATR, HistoricalVolatility, AroonOscillator, WaveTrend, RWI, Vortex, MassIndex, StochRSI, UltimateOscillator, PPO, Coppock, VWMA, MaEnvelope, AccelerationBands, StarcBands, AtrBands, HurstChannel, LinRegChannel, StandardErrorBands, DoubleBollinger, TtmSqueeze, FractalChaosBands, VwapStdDevBands, ClassicPivots, FibonacciPivots, Camarilla, WoodiePivots, DemarkPivots, WilliamsFractals, ZigZag, TDSetup, TDSequential, TDDeMarker, TDREI, TDPressure, TDCombo, TDCountdown, TDLines, TDRangeProjection, TDDifferential, TDOpen, TDRiskLevel, InverseFisherTransform, DecyclerOscillator, RoofingFilter, EmpiricalModeDecomposition, HT_DCPHASE, HT_TRENDMODE, HilbertDominantCycle, AdaptiveCycle, SineWave, MAMA, FAMA, Ichimoku, HeikinAshi, ValueArea, VolumeProfile, TpoProfile, InitialBalance, OpeningRange, Doji, Hammer, InvertedHammer, HangingMan, ShootingStar, Engulfing, Harami, MorningEveningStar, ThreeSoldiersOrCrows, PiercingDarkCloud, Marubozu, Tweezer, SpinningTop, ThreeInside, ThreeOutside, TwoCrows, UpsideGapTwoCrows, IdenticalThreeCrows, ThreeLineStrike, ThreeStarsInSouth, AbandonedBaby, AdvanceBlock, BeltHold, Breakaway, Counterattack, DojiStar, DragonflyDoji, GravestoneDoji, LongLeggedDoji, RickshawMan, EveningDojiStar, MorningDojiStar, GapSideBySideWhite, HighWave, Hikkake, HikkakeModified, HomingPigeon, OnNeck, InNeck, Thrusting, SeparatingLines, Kicking, KickingByLength, LadderBottom, MatHold, MatchingLow, LongLine, ShortLine, RisingThreeMethods, FallingThreeMethods, UpsideGapThreeMethods, DownsideGapThreeMethods, StalledPattern, StickSandwich, Takuri, ClosingMarubozu, OpeningMarubozu, TasukiGap, UniqueThreeRiver, ConcealingBabySwallow, DoubleTopBottom, TripleTopBottom, HeadAndShoulders, Triangle, Wedge, FlagPennant, RectangleRange, CupAndHandle, Abcd, Gartley, Butterfly, Bat, Crab, Shark, Cypher, ThreeDrives, OrderBookImbalanceTop1, OrderBookImbalanceFull, Microprice, QuotedSpread, DepthSlope, OrderBookImbalanceTopN, SignedVolume, CumulativeVolumeDelta, TradeImbalance, EffectiveSpread, RealizedSpread, KylesLambda, Footprint, FundingRate, FundingRateMean, FundingRateZScore, FundingBasis, OpenInterestDelta, OIPriceDivergence, OIWeighted, LongShortRatio, TakerBuySellRatio, LiquidationFeatures, TermStructureBasis, CalendarSpread, AdvanceDecline, AdvanceDeclineRatio, AdVolumeLine, McClellanOscillator, McClellanSummationIndex, Trin, BreadthThrust, NewHighsNewLows, HighLowIndex, PercentAboveMa, UpDownVolumeRatio, BullishPercentIndex, CumulativeVolumeIndex, AbsoluteBreadthIndex, TickIndex, SharpeRatio, SortinoRatio, CalmarRatio, OmegaRatio, MaxDrawdown, AverageDrawdown, DrawdownDuration, PainIndex, ValueAtRisk, ConditionalValueAtRisk, ProfitFactor, GainLossRatio, RecoveryFactor, KellyCriterion, TreynorRatio, InformationRatio, RenkoBars, KagiBars, PointAndFigureBars, Alpha, SessionVwap, OvernightGap, SeasonalZScore, TimeOfDayReturnProfile, IntradayVolatilityProfile, VolumeByTimeProfile, DayOfWeekProfile, AverageDailyRange, TurnOfMonth, SessionHighLow, SessionRange, OvernightIntradayReturn } = nativeBinding
|
|
314
314
|
|
|
315
315
|
module.exports.version = version
|
|
316
316
|
module.exports.SMA = SMA
|
|
@@ -592,6 +592,22 @@ module.exports.OpeningMarubozu = OpeningMarubozu
|
|
|
592
592
|
module.exports.TasukiGap = TasukiGap
|
|
593
593
|
module.exports.UniqueThreeRiver = UniqueThreeRiver
|
|
594
594
|
module.exports.ConcealingBabySwallow = ConcealingBabySwallow
|
|
595
|
+
module.exports.DoubleTopBottom = DoubleTopBottom
|
|
596
|
+
module.exports.TripleTopBottom = TripleTopBottom
|
|
597
|
+
module.exports.HeadAndShoulders = HeadAndShoulders
|
|
598
|
+
module.exports.Triangle = Triangle
|
|
599
|
+
module.exports.Wedge = Wedge
|
|
600
|
+
module.exports.FlagPennant = FlagPennant
|
|
601
|
+
module.exports.RectangleRange = RectangleRange
|
|
602
|
+
module.exports.CupAndHandle = CupAndHandle
|
|
603
|
+
module.exports.Abcd = Abcd
|
|
604
|
+
module.exports.Gartley = Gartley
|
|
605
|
+
module.exports.Butterfly = Butterfly
|
|
606
|
+
module.exports.Bat = Bat
|
|
607
|
+
module.exports.Crab = Crab
|
|
608
|
+
module.exports.Shark = Shark
|
|
609
|
+
module.exports.Cypher = Cypher
|
|
610
|
+
module.exports.ThreeDrives = ThreeDrives
|
|
595
611
|
module.exports.OrderBookImbalanceTop1 = OrderBookImbalanceTop1
|
|
596
612
|
module.exports.OrderBookImbalanceFull = OrderBookImbalanceFull
|
|
597
613
|
module.exports.Microprice = Microprice
|
|
@@ -652,3 +668,15 @@ module.exports.RenkoBars = RenkoBars
|
|
|
652
668
|
module.exports.KagiBars = KagiBars
|
|
653
669
|
module.exports.PointAndFigureBars = PointAndFigureBars
|
|
654
670
|
module.exports.Alpha = Alpha
|
|
671
|
+
module.exports.SessionVwap = SessionVwap
|
|
672
|
+
module.exports.OvernightGap = OvernightGap
|
|
673
|
+
module.exports.SeasonalZScore = SeasonalZScore
|
|
674
|
+
module.exports.TimeOfDayReturnProfile = TimeOfDayReturnProfile
|
|
675
|
+
module.exports.IntradayVolatilityProfile = IntradayVolatilityProfile
|
|
676
|
+
module.exports.VolumeByTimeProfile = VolumeByTimeProfile
|
|
677
|
+
module.exports.DayOfWeekProfile = DayOfWeekProfile
|
|
678
|
+
module.exports.AverageDailyRange = AverageDailyRange
|
|
679
|
+
module.exports.TurnOfMonth = TurnOfMonth
|
|
680
|
+
module.exports.SessionHighLow = SessionHighLow
|
|
681
|
+
module.exports.SessionRange = SessionRange
|
|
682
|
+
module.exports.OvernightIntradayReturn = OvernightIntradayReturn
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wickra-darwin-arm64",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "Native binding for wickra (macOS Apple Silicon). Installed automatically as an optional dependency of wickra on matching platforms.",
|
|
5
5
|
"main": "wickra.darwin-arm64.node",
|
|
6
6
|
"files": [
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wickra-darwin-x64",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "Native binding for wickra (macOS Intel). Installed automatically as an optional dependency of wickra on matching platforms.",
|
|
5
5
|
"main": "wickra.darwin-x64.node",
|
|
6
6
|
"files": [
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wickra-linux-arm64-gnu",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "Native binding for wickra (linux arm64 GNU). Installed automatically as an optional dependency of wickra on matching platforms.",
|
|
5
5
|
"main": "wickra.linux-arm64-gnu.node",
|
|
6
6
|
"files": [
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wickra-linux-x64-gnu",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "Native binding for wickra (linux x64 GNU). Installed automatically as an optional dependency of wickra on matching platforms.",
|
|
5
5
|
"main": "wickra.linux-x64-gnu.node",
|
|
6
6
|
"files": [
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wickra-win32-arm64-msvc",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "Native binding for wickra (Windows arm64 MSVC). Installed automatically as an optional dependency of wickra on matching platforms.",
|
|
5
5
|
"main": "wickra.win32-arm64-msvc.node",
|
|
6
6
|
"files": [
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wickra-win32-x64-msvc",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "Native binding for wickra (Windows x64 MSVC). Installed automatically as an optional dependency of wickra on matching platforms.",
|
|
5
5
|
"main": "wickra.win32-x64-msvc.node",
|
|
6
6
|
"files": [
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wickra",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "Streaming-first technical indicators: incremental, fast, install-free. Node bindings powered by Rust.",
|
|
5
5
|
"author": "kingchenc <support@wickra.org>",
|
|
6
6
|
"main": "index.js",
|
|
@@ -47,12 +47,12 @@
|
|
|
47
47
|
"node": ">= 18"
|
|
48
48
|
},
|
|
49
49
|
"optionalDependencies": {
|
|
50
|
-
"wickra-linux-x64-gnu": "0.5.
|
|
51
|
-
"wickra-linux-arm64-gnu": "0.5.
|
|
52
|
-
"wickra-darwin-x64": "0.5.
|
|
53
|
-
"wickra-darwin-arm64": "0.5.
|
|
54
|
-
"wickra-win32-x64-msvc": "0.5.
|
|
55
|
-
"wickra-win32-arm64-msvc": "0.5.
|
|
50
|
+
"wickra-linux-x64-gnu": "0.5.2",
|
|
51
|
+
"wickra-linux-arm64-gnu": "0.5.2",
|
|
52
|
+
"wickra-darwin-x64": "0.5.2",
|
|
53
|
+
"wickra-darwin-arm64": "0.5.2",
|
|
54
|
+
"wickra-win32-x64-msvc": "0.5.2",
|
|
55
|
+
"wickra-win32-arm64-msvc": "0.5.2"
|
|
56
56
|
},
|
|
57
57
|
"scripts": {
|
|
58
58
|
"build": "napi build --platform --release",
|
package/wickra.darwin-arm64.node
CHANGED
|
Binary file
|
package/wickra.darwin-x64.node
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|