wenay-common 1.0.74 → 1.0.75

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.
@@ -89,14 +89,14 @@ var E_SORTMODE;
89
89
  (function (E_SORTMODE) {
90
90
  E_SORTMODE[E_SORTMODE["DESCEND"] = 0] = "DESCEND";
91
91
  E_SORTMODE[E_SORTMODE["ASCEND"] = 1] = "ASCEND";
92
- })(E_SORTMODE = exports.E_SORTMODE || (exports.E_SORTMODE = {}));
92
+ })(E_SORTMODE || (exports.E_SORTMODE = E_SORTMODE = {}));
93
93
  ;
94
94
  var E_MATCH;
95
95
  (function (E_MATCH) {
96
96
  E_MATCH[E_MATCH["LESS_OR_EQUAL"] = -1] = "LESS_OR_EQUAL";
97
97
  E_MATCH[E_MATCH["EQUAL"] = 0] = "EQUAL";
98
98
  E_MATCH[E_MATCH["GREAT_OR_EQUAL"] = 1] = "GREAT_OR_EQUAL";
99
- })(E_MATCH = exports.E_MATCH || (exports.E_MATCH = {}));
99
+ })(E_MATCH || (exports.E_MATCH = E_MATCH = {}));
100
100
  function BSearch(array, arg2, arg3, ...args) {
101
101
  return typeof (arg3) == "function" ? __BSearch(array, arg2, arg3, ...args) :
102
102
  typeof (arg2) == "function" ? ___BSearch(array, arg2, arg3, ...args) :
@@ -0,0 +1,216 @@
1
+ import { const_Date } from "../Common/BaseTypes";
2
+ type Year = number;
3
+ type Month = number;
4
+ type Day = number;
5
+ type Hour = number;
6
+ type Minute = number;
7
+ export type DateTimeStr = `${Year}-${Month}-${Day} ${Hour}:${Minute}`;
8
+ type DateTime = DateTimeStr | const_Date;
9
+ export type RangeT<TVal, TStep = TVal> = {
10
+ min: TVal;
11
+ max: TVal;
12
+ step: TStep;
13
+ };
14
+ export type RangeExtT<TVal, TStep> = RangeT<TVal, TStep> & {
15
+ defaultMin: TVal;
16
+ defaultMax: TVal;
17
+ defaultStep: TStep;
18
+ };
19
+ export interface NumRange<T extends number = number> extends RangeT<T> {
20
+ min: T;
21
+ max: T;
22
+ step: T;
23
+ }
24
+ export type NumRangeExt<T extends number> = RangeExtT<T, T>;
25
+ export type UserRangeT<TVal, TStep> = Partial<RangeExtT<TVal, TStep>> & ({
26
+ min: TVal;
27
+ } | {
28
+ defaultMin: TVal;
29
+ }) & ({
30
+ max: TVal;
31
+ } | {
32
+ defaultMax: TVal;
33
+ }) & ({
34
+ step: TStep;
35
+ } | {
36
+ defaultStep: TStep;
37
+ });
38
+ export type UserNumRange<T extends number = number> = UserRangeT<T, T>;
39
+ export type UserTimeRange = Partial<UserRangeT<DateTime, number>>;
40
+ type Mutable<T> = {
41
+ -readonly [P in keyof T]: T[P];
42
+ };
43
+ export type ReadonlyFull<T> = T extends ((...args: any) => any) ? T : T extends const_Date ? const_Date : {
44
+ readonly [P in keyof T]: ReadonlyFull<T[P]>;
45
+ };
46
+ type ParamType = "number" | "string" | "boolean" | "time" | "symbol";
47
+ export type AnyEnumVal = number | string | const_Date | object;
48
+ interface IParamBase0 {
49
+ name?: string;
50
+ range?: (number | string | DateTime | object)[] | UserNumRange | UserTimeRange | undefined;
51
+ progressive?: boolean | undefined;
52
+ enabled?: boolean | undefined;
53
+ hidden?: boolean;
54
+ type?: ParamType | undefined;
55
+ }
56
+ interface IParamBase1<T = never> {
57
+ value: string | number | boolean | DateTime | IParams | T | (number | string | boolean | DateTime | IParams | T)[];
58
+ constLength?: boolean | undefined;
59
+ elementsEnabled?: boolean | undefined | (boolean[]);
60
+ }
61
+ export interface IParamBase extends IParamBase0, IParamBase1 {
62
+ }
63
+ export type IParamBaseReadonly = ReadonlyFull<IParamBase>;
64
+ interface IParamVal<T extends string | number | boolean | DateTime | IParams | object> extends IParamBase1<T> {
65
+ value: T;
66
+ constLength?: undefined;
67
+ elementsEnabled?: undefined;
68
+ }
69
+ type ParamVal<TParam extends IParamBase0, T extends string | number | boolean | DateTime | IParams> = TParam & IParamVal<T>;
70
+ interface IParamArr<T extends string | number | boolean | DateTime | IParams> extends IParamBase1<T> {
71
+ value: T[];
72
+ constLength?: boolean;
73
+ elementsEnabled?: boolean | (boolean[]);
74
+ }
75
+ type ParamArr<TParam extends IParamBase0, T extends string | number | boolean | DateTime | IParams> = TParam & IParamArr<T>;
76
+ interface IParamBaseDefault extends IParamBase0 {
77
+ progressive?: undefined;
78
+ }
79
+ interface IParamNumBase<T extends number> extends IParamBase0 {
80
+ range: UserNumRange<T>;
81
+ progressive?: boolean;
82
+ type?: "number" | undefined;
83
+ }
84
+ export type IParamNum<T extends number = number> = ParamVal<IParamNumBase<T>, T>;
85
+ export type IParamNumArr<T extends number = number> = ParamArr<IParamNumBase<T>, T>;
86
+ export type ParamNum<T extends number = number> = IParamNum<T> | IParamNumArr<T>;
87
+ interface _IParamEnumBase<T extends AnyEnumVal> extends IParamBaseDefault {
88
+ range: T[];
89
+ labels?: string[] | undefined;
90
+ valueToString?: {
91
+ (value: T): string;
92
+ } | undefined;
93
+ }
94
+ interface IParamEnumBaseAny1<T extends AnyEnumVal> extends _IParamEnumBase<T> {
95
+ labels: string[];
96
+ valueToString?: undefined;
97
+ }
98
+ interface IParamEnumBaseAny2<T extends AnyEnumVal> extends _IParamEnumBase<T> {
99
+ valueToString(value: T): string;
100
+ labels?: undefined;
101
+ }
102
+ type IParamEnumBaseAny<T extends AnyEnumVal> = IParamEnumBaseAny1<T> | IParamEnumBaseAny2<T>;
103
+ interface IParamEnumBase<T extends number | string | DateTime> extends _IParamEnumBase<T> {
104
+ labels?: string[];
105
+ type?: T extends number ? "number" : "string";
106
+ valueToString?: undefined;
107
+ }
108
+ export interface IParamEnum<T extends number | string | DateTime = number | string | DateTime> extends ParamVal<IParamEnumBase<T>, T> {
109
+ }
110
+ export type IParamEnumReadonly<T extends number | string | DateTime = number | string | DateTime> = ReadonlyFull<IParamEnum<T>>;
111
+ export type IParamEnumAny<T extends AnyEnumVal = AnyEnumVal> = (T extends number | string | DateTime ? IParamEnumReadonly<T> : IParamEnumBaseAny<T>) & IParamVal<T>;
112
+ export interface IParamEnumArr<T extends number | string | DateTime = number | string | DateTime> extends ParamArr<IParamEnumBase<T>, T> {
113
+ }
114
+ export type ParamEnum<T extends number | string | DateTime = number | string | DateTime> = IParamEnum<T> | IParamEnumArr<T>;
115
+ export type ParamEnumReadonly<T extends number | string | DateTime> = ReadonlyFull<ParamEnum<T>>;
116
+ interface IParamTimeBase1 extends IParamBaseDefault {
117
+ range?: DateTimeStr[] | UserTimeRange;
118
+ type: "time";
119
+ }
120
+ interface IParamTimeBase2 extends IParamBaseDefault {
121
+ range?: const_Date[] | UserTimeRange;
122
+ type?: "time";
123
+ }
124
+ export interface IParamTime1 extends ParamVal<IParamTimeBase1, DateTimeStr> {
125
+ }
126
+ export interface IParamTime2 extends ParamVal<IParamTimeBase2, const_Date> {
127
+ }
128
+ export interface IParamTimeArr1 extends ParamArr<IParamTimeBase1, DateTimeStr> {
129
+ }
130
+ export interface IParamTimeArr2 extends ParamArr<IParamTimeBase2, const_Date> {
131
+ }
132
+ export type ParamTime = IParamTime1 | IParamTime2 | IParamTimeArr1 | IParamTimeArr2;
133
+ export interface IParamEnum2<T extends number | string> extends IParamBaseDefault {
134
+ value: T | T[];
135
+ range: [T, ...T[]];
136
+ enabled?: undefined;
137
+ }
138
+ interface IParamStringBase extends IParamBaseDefault {
139
+ range?: undefined;
140
+ type?: "string" | "symbol";
141
+ }
142
+ interface IParamString extends ParamVal<IParamStringBase, string> {
143
+ }
144
+ interface IParamStringArr extends ParamArr<IParamStringBase, string> {
145
+ }
146
+ export type ParamString = IParamString | IParamStringArr;
147
+ interface IParamBoolBase extends IParamBaseDefault {
148
+ range?: undefined;
149
+ enabled?: undefined;
150
+ type?: "boolean";
151
+ }
152
+ export interface IParamBoolean extends ParamVal<IParamBoolBase, boolean> {
153
+ }
154
+ export interface IParamBooleanArr extends ParamArr<IParamBoolBase, boolean> {
155
+ constLength?: true;
156
+ }
157
+ export type ParamBoolean = IParamBoolean | IParamBooleanArr;
158
+ export interface IParamGroup extends IParamBaseDefault, IParamBase1 {
159
+ value: IParams;
160
+ range?: undefined;
161
+ enabled?: boolean;
162
+ type?: undefined;
163
+ constLength?: undefined;
164
+ elementsEnabled?: undefined;
165
+ }
166
+ export type ParamBase<T extends "time" | number | string | boolean | object = "time" | number | string | boolean | object> = T extends "time" ? ParamTime : T extends string ? ParamEnum<T> : T extends number ? ParamNum<T> | ParamEnum<T> : T extends boolean ? ParamBoolean : T extends object ? IParamGroup : never;
167
+ export type IParam = ParamTime | ParamNum | ParamEnum<number> | ParamEnum<string> | ParamBoolean | ParamString | boolean | number | string | IParamGroup | (() => any);
168
+ export type IParamReadonly = ReadonlyFull<IParam>;
169
+ export declare function isParamBase(param: IParam): param is IParam & IParamBase;
170
+ export type IParams = {
171
+ [key in string]: IParam;
172
+ };
173
+ export type IParamsReadonly = {
174
+ readonly [key in string]: IParamReadonly;
175
+ };
176
+ export declare class CParams implements IParams {
177
+ [key: string]: IParam;
178
+ }
179
+ export declare class CParamsReadonly implements IParamsReadonly {
180
+ readonly [key: string]: IParamReadonly;
181
+ }
182
+ export type IParamExpandable = Exclude<IParam, {
183
+ value: any;
184
+ }> | (Extract<IParam, {
185
+ value: any;
186
+ }> & {
187
+ expanded?: boolean;
188
+ });
189
+ export type IParamExpandableReadonly = ReadonlyFull<IParamExpandable>;
190
+ export type IParamsExpandable = {
191
+ [key: string]: IParamExpandable;
192
+ };
193
+ export type IParamsExpandableReadonly = ReadonlyFull<IParamsExpandable>;
194
+ export declare function isParamGroupOrArray<TParam extends IParamReadonly>(param: TParam): param is Extract<TParam, ReadonlyFull<IParamGroup | IParamArr<any>>>;
195
+ export declare function isParamGroup<TParam extends IParamReadonly>(param: TParam): param is Extract<TParam, ReadonlyFull<IParamGroup>>;
196
+ type ObjectKeyPath<TObject extends object = object, TValue = unknown> = readonly string[];
197
+ export declare function iterateParams<TObj extends IParamsReadonly, TVal extends IParamReadonly = TObj[string]>(obj: TObj, currentPath?: ObjectKeyPath<TObj, TVal>): Generator<[key: string, value: TVal, path: ObjectKeyPath<TObj, TVal>]>;
198
+ export declare function enableAllParams<T extends IParamsReadonly>(params: T, enabled?: boolean): T;
199
+ export type SimpleParamsMutable<T> = T extends const_Date ? const_Date : Mutable<{
200
+ [key in keyof T]: (T[key] extends {
201
+ value: IParamsReadonly;
202
+ } ? SimpleParamsMutable<T[key]["value"]> : T[key] extends {
203
+ value: any;
204
+ } ? (T[key] extends {
205
+ value: [];
206
+ elementsEnabled: boolean | [];
207
+ } ? Partial<Mutable<T[key]["value"]>> : Mutable<T[key]["value"]>) : T[key] extends () => infer RES ? RES : Mutable<T[key]>) | (T[key] extends {
208
+ enabled: boolean;
209
+ } ? null : never);
210
+ }> & {
211
+ readonly [key: number]: void;
212
+ };
213
+ export type SimpleParams<T = IParams> = ReadonlyFull<SimpleParamsMutable<T>>;
214
+ export declare function GetSimpleParams<T extends ReadonlyFull<IParams>>(params: T): SimpleParamsMutable<T>;
215
+ export declare function mergeParamValuesToInfos<TParams extends IParamsReadonly>(srcObj: TParams, valuesObj: SimpleParams): TParams;
216
+ export {};
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergeParamValuesToInfos = exports.GetSimpleParams = exports.enableAllParams = exports.iterateParams = exports.isParamGroup = exports.isParamGroupOrArray = exports.CParamsReadonly = exports.CParams = exports.isParamBase = void 0;
4
+ const Common_1 = require("../Common/Common");
5
+ let ts = "2025-06-01 16:25:25";
6
+ {
7
+ let x = { value: 5, range: [5, 6] };
8
+ }
9
+ let dd;
10
+ function isParamBase(param) {
11
+ return typeof param == "object" && !Array.isArray(param) && !(param instanceof Date);
12
+ }
13
+ exports.isParamBase = isParamBase;
14
+ class CParams {
15
+ }
16
+ exports.CParams = CParams;
17
+ class CParamsReadonly {
18
+ }
19
+ exports.CParamsReadonly = CParamsReadonly;
20
+ function isParamGroupOrArray(param) {
21
+ return typeof param == "object" && typeof param.value == "object" && !(param.value instanceof Date);
22
+ }
23
+ exports.isParamGroupOrArray = isParamGroupOrArray;
24
+ function isParamGroup(param) {
25
+ return isParamGroupOrArray(param) && !Array.isArray(param.value);
26
+ }
27
+ exports.isParamGroup = isParamGroup;
28
+ function* iterateParams(obj, currentPath = []) {
29
+ for (let [key, param] of Object.entries(obj)) {
30
+ let keyPath = currentPath.concat(key);
31
+ yield [key, param, keyPath];
32
+ if (typeof param == "object") {
33
+ const valKey = "value";
34
+ let value = param[valKey];
35
+ if (typeof value == "object" && !(0, Common_1.isDate)(value) && !Array.isArray(value))
36
+ yield* iterateParams(value, keyPath.concat(valKey));
37
+ }
38
+ }
39
+ }
40
+ exports.iterateParams = iterateParams;
41
+ function enableAllParams(params, enabled = true) {
42
+ const paramsInfoClone = (0, Common_1.deepCloneMutable)(params);
43
+ for (let [key, param] of iterateParams(paramsInfoClone)) {
44
+ if (isParamBase(param) && param.enabled != null)
45
+ param.enabled = enabled;
46
+ if (isParamBase(param) && param.elementsEnabled != null)
47
+ param.elementsEnabled = enabled;
48
+ }
49
+ return paramsInfoClone;
50
+ }
51
+ exports.enableAllParams = enableAllParams;
52
+ class C extends CParams {
53
+ lastBar = { name: "Last_Bar", value: 0, range: { defaultMin: -10000, max: 0, step: 1 } };
54
+ }
55
+ let xxx = {};
56
+ let bbb = xxx;
57
+ const param = {
58
+ p0: { name: "MA0", value: [10, 20], range: [10, 20, 30] },
59
+ p1: { name: "MA1", value: 20, range: { min: 10, max: 20, step: 2 } },
60
+ p2: { name: "MA2", value: 10, range: [10, 20, 30] },
61
+ p3: { name: "MA3", value: "a", range: ["a", "b", "c"] },
62
+ p4: { name: "MA4", value: true },
63
+ p5: {
64
+ name: "group",
65
+ enabled: true,
66
+ value: {
67
+ p1: { name: "gMA1", value: 20, range: { min: 10, max: 20, step: 2 } },
68
+ p2: { name: "gMA2", value: 10, range: [10, 20, 30] }
69
+ }
70
+ },
71
+ p6: 10,
72
+ p7: { name: "time", value: "2020-01-05 12:46", type: "time", range: { min: "2020-01-05 00:00", max: "2020-01-05 00:00", step: 200 } },
73
+ p8: { name: "time2", value: new Date() }
74
+ };
75
+ class CCC extends CParams {
76
+ time = { name: "Time", value: "2020-01-05 12:46", type: "time" };
77
+ text = { value: "text", type: "symbol" };
78
+ }
79
+ class Test2 {
80
+ p0 = 123;
81
+ p1 = "213";
82
+ p2 = [10, 20, 30];
83
+ p3 = "a";
84
+ p4 = true;
85
+ p5 = {
86
+ enabled: true,
87
+ p1: "gMA1",
88
+ p2: "gMA2"
89
+ };
90
+ }
91
+ class Test extends CParams {
92
+ p0 = { name: "MA0", value: [10, 20], range: [10, 20, 30] };
93
+ p1 = { name: "MA1", value: 20, range: { min: 10, max: 20, step: 2 } };
94
+ p2 = { name: "MA2", value: 10, range: [10, 20, 30] };
95
+ p3 = { name: "MA3", value: "a", range: ["a", "b", "c"] };
96
+ p4 = { name: "MA4", value: true };
97
+ p5 = {
98
+ name: "group",
99
+ enabled: true,
100
+ value: {
101
+ p1: { name: "gMA1", value: 20, range: { min: 10, max: 20, step: 2 } },
102
+ p2: { name: "gMA2", value: 10, range: [10, 20, 30] }
103
+ }
104
+ };
105
+ }
106
+ function GetSimpleParams(params) {
107
+ let simpleParams = params;
108
+ for (let key in params) {
109
+ const param = params[key];
110
+ simpleParams[key] =
111
+ typeof (param) == "function" ? param() :
112
+ typeof (param) != "object" ? param :
113
+ param.enabled == false ? null :
114
+ typeof (param.value) != "object" ? param.value :
115
+ param.value instanceof Array ? (param.value.filter((item, i) => Array.isArray(param.elementsEnabled) ? param.elementsEnabled[i] : param.elementsEnabled != false)) :
116
+ param.value instanceof Date ? new Date(param.value) :
117
+ GetSimpleParams(param.value);
118
+ }
119
+ return simpleParams;
120
+ }
121
+ exports.GetSimpleParams = GetSimpleParams;
122
+ let p = GetSimpleParams(new Test());
123
+ let p0 = p.p1;
124
+ let p3 = p.p3;
125
+ let p4 = p.p4;
126
+ let p5 = p.p5?.p1;
127
+ function convert_(valuesObj, srcObj) {
128
+ let resObj = {};
129
+ if (srcObj instanceof Array)
130
+ if (valuesObj instanceof Array)
131
+ return [...valuesObj];
132
+ else
133
+ return srcObj;
134
+ for (let key in srcObj) {
135
+ const srcval = srcObj[key];
136
+ resObj[key] = (() => {
137
+ const val = valuesObj[key];
138
+ if (val == undefined) {
139
+ if (typeof srcval == "object" && srcval.enabled != undefined)
140
+ return { ...srcval, enabled: false };
141
+ }
142
+ if (typeof srcval == "boolean") {
143
+ if (typeof val == "boolean")
144
+ return val;
145
+ }
146
+ if (typeof srcval == "object") {
147
+ let srcvalue = srcval.value;
148
+ if (srcvalue == null)
149
+ return srcval;
150
+ const resVal = { ...srcval };
151
+ if (srcvalue instanceof Date && (typeof val == "string" || val instanceof Date))
152
+ resVal.value = new Date(val);
153
+ else if (typeof srcvalue != typeof val)
154
+ return srcval;
155
+ else if (typeof srcvalue != "object")
156
+ resVal.value = val;
157
+ else if (Array.isArray(val)) {
158
+ resVal.value = [...val];
159
+ if (resVal.elementsEnabled != null)
160
+ resVal.elementsEnabled = true;
161
+ }
162
+ else
163
+ resVal.value = convert_(val, srcvalue);
164
+ if (srcval.enabled != undefined)
165
+ resVal.enabled = true;
166
+ return resVal;
167
+ }
168
+ return srcval;
169
+ })();
170
+ }
171
+ return resObj;
172
+ }
173
+ function mergeParamValuesToInfos(srcObj, valuesObj) {
174
+ return convert_(valuesObj, srcObj);
175
+ }
176
+ exports.mergeParamValuesToInfos = mergeParamValuesToInfos;
@@ -412,4 +412,4 @@ var spaceBinance;
412
412
  }
413
413
  spaceBinance.BinanceDataFunc = BinanceDataFunc;
414
414
  spaceBinance.binanceFunc = new BinanceDataFunc;
415
- })(spaceBinance = exports.spaceBinance || (exports.spaceBinance = {}));
415
+ })(spaceBinance || (exports.spaceBinance = spaceBinance = {}));
@@ -510,4 +510,4 @@ var Test;
510
510
  function Test1() { }
511
511
  Test.Test1 = Test1;
512
512
  function Test2() { }
513
- })(Test = exports.Test || (exports.Test = {}));
513
+ })(Test || (exports.Test = Test = {}));
package/lib/index.d.ts CHANGED
@@ -22,5 +22,6 @@ export * as Color from "./Common/Color";
22
22
  export * as ListNodeAnd from "./Common/ListNodeAnd";
23
23
  export * as Math from "./Common/Math";
24
24
  export * as List from "./Common/List";
25
+ export * as Params from "./Exchange/CParams";
25
26
  export * as LoadCandles from "./Exchange/ConnectData/Binance";
26
27
  export declare function test(): void;
package/lib/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.test = exports.LoadCandles = exports.List = exports.Math = exports.ListNodeAnd = exports.Color = exports.Time = exports.Common = exports.BaseTypes = void 0;
17
+ exports.test = exports.LoadCandles = exports.Params = exports.List = exports.Math = exports.ListNodeAnd = exports.Color = exports.Time = exports.Common = exports.BaseTypes = void 0;
18
18
  __exportStar(require("./Common/BaseTypes"), exports);
19
19
  __exportStar(require("./Common/ByteStream"), exports);
20
20
  __exportStar(require("./Common/Color"), exports);
@@ -39,6 +39,7 @@ exports.Color = require("./Common/Color");
39
39
  exports.ListNodeAnd = require("./Common/ListNodeAnd");
40
40
  exports.Math = require("./Common/Math");
41
41
  exports.List = require("./Common/List");
42
+ exports.Params = require("./Exchange/CParams");
42
43
  exports.LoadCandles = require("./Exchange/ConnectData/Binance");
43
44
  const ListNodeAnd_1 = require("./Common/ListNodeAnd");
44
45
  function test() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wenay-common",
3
- "version": "1.0.74",
3
+ "version": "1.0.75",
4
4
  "description": "math math math",
5
5
  "strict": true,
6
6
  "main": "lib/index.js",
@@ -30,15 +30,16 @@
30
30
  "node-fetch": "^3.3.1",
31
31
  "npm": "^9.6.7",
32
32
  "ts-node": "^10.9.1",
33
- "xmlhttprequest": "^1.8.0",
34
- "wenay-common": "^1.0.69"
33
+ "wenay-common": "^1.0.69",
34
+ "xmlhttprequest": "^1.8.0"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/create-hmac": "^1.1.0",
38
38
  "@types/dotenv": "^8.2.0",
39
39
  "@types/node": "^18.7.14",
40
40
  "@types/validator": "^13.1.0",
41
- "dotenv": "^8.2.0"
41
+ "dotenv": "^8.2.0",
42
+ "typescript": "^5.1.3"
42
43
  },
43
44
  "optionalDependencies": {
44
45
  "utf-8-validate": "^6.0.3"