@ch20026103/anysis 0.0.16-beta → 0.0.16-beta2

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.
@@ -5,5 +5,8 @@ export declare enum SwingExtremesType {
5
5
  type Index = number;
6
6
  export declare function findPeaksByGradient(prices: number[], level?: number): Index[];
7
7
  export declare function findTroughByGradient(prices: number[], level?: number): Index[];
8
- export declare function SwingExtremes(y: number[], type: SwingExtremesType, level?: number): Index[];
8
+ export declare function SwingExtremes(y: number[], level?: number): {
9
+ index: Index;
10
+ type: SwingExtremesType;
11
+ }[];
9
12
  export {};
@@ -60,48 +60,25 @@ function findTroughByGradient(prices, level) {
60
60
  return troughs;
61
61
  }
62
62
  exports.findTroughByGradient = findTroughByGradient;
63
- function SwingExtremes(y, type, level) {
63
+ function SwingExtremes(y, level) {
64
64
  if (level === void 0) { level = 1; }
65
- if (type === SwingExtremesType.Peak) {
66
- var result = [];
67
- var indexs = findPeaksByGradient(y, level);
68
- result.push(indexs[0]);
69
- for (var i = 1; i < indexs.length; i++) {
70
- if (y[indexs[i]] > y[result[result.length - 1]] &&
71
- y[indexs[i]] > y[result[result.length - 2]]) {
72
- result[result.length - 1] = indexs[i];
73
- }
74
- else if (y[indexs[i + 1]] < y[i] &&
75
- y[indexs[i]] > y[result[result.length - 1]]) {
76
- result.pop();
77
- result.push(indexs[i]);
78
- }
79
- else
80
- result.push(indexs[i]);
81
- }
82
- return result;
83
- }
84
- if (type === SwingExtremesType.Trough) {
85
- var result = [];
86
- var indexs = findTroughByGradient(y, level);
87
- result.push(indexs[0]);
88
- for (var i = 1; i < indexs.length; i++) {
89
- if (y[indexs[i]] < y[result[result.length - 1]] &&
90
- y[indexs[i]] < y[result[result.length - 2]]) {
91
- result[result.length - 1] = indexs[i];
92
- }
93
- else if (y[indexs[i + 1]] > y[i] &&
94
- y[indexs[i]] < y[result[result.length - 1]]) {
95
- result.pop();
96
- result.push(indexs[i]);
97
- }
98
- else
99
- result.push(indexs[i]);
100
- }
101
- return result;
65
+ try {
66
+ var peaks = findPeaksByGradient(y, level);
67
+ var peakObjs = peaks.map(function (index) { return ({
68
+ index: index,
69
+ type: SwingExtremesType.Peak,
70
+ }); });
71
+ var troughs = findTroughByGradient(y, level);
72
+ var troughObjs = troughs.map(function (index) { return ({
73
+ index: index,
74
+ type: SwingExtremesType.Trough,
75
+ }); });
76
+ var merge = peakObjs.concat(troughObjs);
77
+ return merge.sort(function (a, b) { return a.index - b.index; });
102
78
  }
103
- else {
104
- throw new Error("Invalid SwingExtremesType");
79
+ catch (err) {
80
+ console.error(err);
81
+ return [];
105
82
  }
106
83
  }
107
84
  exports.SwingExtremes = SwingExtremes;
@@ -16,11 +16,25 @@ describe("test SwingExtremes", function () {
16
16
  expect(res).toEqual([2, 5, 8, 12, 14]);
17
17
  });
18
18
  it("test SwingExtremes Peak", function () {
19
- var res = (0, index_1.SwingExtremes)(prices, index_1.SwingExtremesType.Peak);
20
- expect(res).toEqual([1, 6, 10, 13]);
19
+ var arr = (0, index_1.SwingExtremes)(prices);
20
+ var res = arr.filter(function (x) { return x.type === index_1.SwingExtremesType.Peak; });
21
+ expect(res).toEqual([
22
+ { index: 1, type: "Peak" },
23
+ { index: 4, type: "Peak" },
24
+ { index: 6, type: "Peak" },
25
+ { index: 10, type: "Peak" },
26
+ { index: 13, type: "Peak" },
27
+ ]);
21
28
  });
22
29
  it("test SwingExtremes Trough", function () {
23
- var res = (0, index_1.SwingExtremes)(prices, index_1.SwingExtremesType.Trough);
24
- expect(res).toEqual([2, 14]);
30
+ var arr = (0, index_1.SwingExtremes)(prices);
31
+ var res = arr.filter(function (x) { return x.type === index_1.SwingExtremesType.Trough; });
32
+ expect(res).toEqual([
33
+ { index: 2, type: "Trough" },
34
+ { index: 5, type: "Trough" },
35
+ { index: 8, type: "Trough" },
36
+ { index: 12, type: "Trough" },
37
+ { index: 14, type: "Trough" },
38
+ ]);
25
39
  });
26
40
  });
@@ -6,10 +6,7 @@ export declare enum Mode {
6
6
  TimeStampToNumber = 5,
7
7
  StringToNumber = 6
8
8
  }
9
- declare function dateFormat(date: number, mode: Mode.NumberToString): string;
10
- declare function dateFormat(date: number, mode: Mode.NumberToTimeStamp): number;
11
- declare function dateFormat(date: string, mode: Mode.StringToTimeStamp): number;
12
- declare function dateFormat(date: number, mode: Mode.TimeStampToString): string;
13
- declare function dateFormat(date: number, mode: Mode.TimeStampToNumber): number;
14
- declare function dateFormat(date: string, mode: Mode.StringToNumber): number;
9
+ type DateFormatInput<M extends Mode> = M extends Mode.NumberToString | Mode.NumberToTimeStamp | Mode.TimeStampToString | Mode.TimeStampToNumber ? number : M extends Mode.StringToTimeStamp | Mode.StringToNumber ? string : never;
10
+ type DateFormatOutput<M extends Mode> = M extends Mode.NumberToString | Mode.TimeStampToString ? string : M extends Mode.NumberToTimeStamp | Mode.StringToTimeStamp | Mode.TimeStampToNumber | Mode.StringToNumber ? number : never;
11
+ declare function dateFormat<M extends Mode>(date: DateFormatInput<M>, mode: M): DateFormatOutput<M>;
15
12
  export default dateFormat;
@@ -13,15 +13,13 @@ var Mode;
13
13
  function dateFormat(date, mode) {
14
14
  switch (mode) {
15
15
  case Mode.NumberToString: {
16
- var input = date.toString();
17
- var res = input.slice(0, 4) + "-" + input.slice(4, 6) + "-" + input.slice(6, 8);
18
- return res;
16
+ var input = String(date).padStart(8, "0");
17
+ return "".concat(input.slice(0, 4), "-").concat(input.slice(4, 6), "-").concat(input.slice(6, 8));
19
18
  }
20
19
  case Mode.NumberToTimeStamp: {
21
- var input = date.toString();
22
- var stringDate = input.slice(0, 4) + "-" + input.slice(4, 6) + "-" + input.slice(6, 8);
23
- var res = Date.parse(stringDate);
24
- return res;
20
+ var input = String(date).padStart(8, "0");
21
+ var stringDate = "".concat(input.slice(0, 4), "-").concat(input.slice(4, 6), "-").concat(input.slice(6, 8));
22
+ return new Date(stringDate).getTime();
25
23
  }
26
24
  case Mode.StringToTimeStamp: {
27
25
  var res = Date.parse(date);
@@ -40,15 +38,12 @@ function dateFormat(date, mode) {
40
38
  case Mode.TimeStampToNumber: {
41
39
  var newDate = new Date(date);
42
40
  var yy = newDate.getFullYear();
43
- var mm = newDate.getMonth() + 1 < 10
44
- ? "0" + (newDate.getMonth() + 1)
45
- : newDate.getMonth() + 1;
46
- var dd = newDate.getDate() < 10 ? "0" + newDate.getDate() : newDate.getDate();
47
- var res = "".concat(yy).concat(mm).concat(dd);
48
- return parseInt(res);
41
+ var mm = String(newDate.getMonth() + 1).padStart(2, "0");
42
+ var dd = String(newDate.getDate()).padStart(2, "0");
43
+ return parseInt("".concat(yy).concat(mm).concat(dd), 10);
49
44
  }
50
45
  case Mode.StringToNumber: {
51
- var res = date.replace(/-/g, '');
46
+ var res = date.replace(/-/g, "");
52
47
  return parseInt(res);
53
48
  }
54
49
  default:
@@ -5,5 +5,8 @@ export declare enum SwingExtremesType {
5
5
  type Index = number;
6
6
  export declare function findPeaksByGradient(prices: number[], level?: number): Index[];
7
7
  export declare function findTroughByGradient(prices: number[], level?: number): Index[];
8
- export declare function SwingExtremes(y: number[], type: SwingExtremesType, level?: number): Index[];
8
+ export declare function SwingExtremes(y: number[], level?: number): {
9
+ index: Index;
10
+ type: SwingExtremesType;
11
+ }[];
9
12
  export {};
@@ -55,47 +55,24 @@ export function findTroughByGradient(prices, level) {
55
55
  }
56
56
  return troughs;
57
57
  }
58
- export function SwingExtremes(y, type, level) {
58
+ export function SwingExtremes(y, level) {
59
59
  if (level === void 0) { level = 1; }
60
- if (type === SwingExtremesType.Peak) {
61
- var result = [];
62
- var indexs = findPeaksByGradient(y, level);
63
- result.push(indexs[0]);
64
- for (var i = 1; i < indexs.length; i++) {
65
- if (y[indexs[i]] > y[result[result.length - 1]] &&
66
- y[indexs[i]] > y[result[result.length - 2]]) {
67
- result[result.length - 1] = indexs[i];
68
- }
69
- else if (y[indexs[i + 1]] < y[i] &&
70
- y[indexs[i]] > y[result[result.length - 1]]) {
71
- result.pop();
72
- result.push(indexs[i]);
73
- }
74
- else
75
- result.push(indexs[i]);
76
- }
77
- return result;
78
- }
79
- if (type === SwingExtremesType.Trough) {
80
- var result = [];
81
- var indexs = findTroughByGradient(y, level);
82
- result.push(indexs[0]);
83
- for (var i = 1; i < indexs.length; i++) {
84
- if (y[indexs[i]] < y[result[result.length - 1]] &&
85
- y[indexs[i]] < y[result[result.length - 2]]) {
86
- result[result.length - 1] = indexs[i];
87
- }
88
- else if (y[indexs[i + 1]] > y[i] &&
89
- y[indexs[i]] < y[result[result.length - 1]]) {
90
- result.pop();
91
- result.push(indexs[i]);
92
- }
93
- else
94
- result.push(indexs[i]);
95
- }
96
- return result;
60
+ try {
61
+ var peaks = findPeaksByGradient(y, level);
62
+ var peakObjs = peaks.map(function (index) { return ({
63
+ index: index,
64
+ type: SwingExtremesType.Peak,
65
+ }); });
66
+ var troughs = findTroughByGradient(y, level);
67
+ var troughObjs = troughs.map(function (index) { return ({
68
+ index: index,
69
+ type: SwingExtremesType.Trough,
70
+ }); });
71
+ var merge = peakObjs.concat(troughObjs);
72
+ return merge.sort(function (a, b) { return a.index - b.index; });
97
73
  }
98
- else {
99
- throw new Error("Invalid SwingExtremesType");
74
+ catch (err) {
75
+ console.error(err);
76
+ return [];
100
77
  }
101
78
  }
@@ -14,11 +14,25 @@ describe("test SwingExtremes", function () {
14
14
  expect(res).toEqual([2, 5, 8, 12, 14]);
15
15
  });
16
16
  it("test SwingExtremes Peak", function () {
17
- var res = SwingExtremes(prices, SwingExtremesType.Peak);
18
- expect(res).toEqual([1, 6, 10, 13]);
17
+ var arr = SwingExtremes(prices);
18
+ var res = arr.filter(function (x) { return x.type === SwingExtremesType.Peak; });
19
+ expect(res).toEqual([
20
+ { index: 1, type: "Peak" },
21
+ { index: 4, type: "Peak" },
22
+ { index: 6, type: "Peak" },
23
+ { index: 10, type: "Peak" },
24
+ { index: 13, type: "Peak" },
25
+ ]);
19
26
  });
20
27
  it("test SwingExtremes Trough", function () {
21
- var res = SwingExtremes(prices, SwingExtremesType.Trough);
22
- expect(res).toEqual([2, 14]);
28
+ var arr = SwingExtremes(prices);
29
+ var res = arr.filter(function (x) { return x.type === SwingExtremesType.Trough; });
30
+ expect(res).toEqual([
31
+ { index: 2, type: "Trough" },
32
+ { index: 5, type: "Trough" },
33
+ { index: 8, type: "Trough" },
34
+ { index: 12, type: "Trough" },
35
+ { index: 14, type: "Trough" },
36
+ ]);
23
37
  });
24
38
  });
@@ -6,10 +6,7 @@ export declare enum Mode {
6
6
  TimeStampToNumber = 5,
7
7
  StringToNumber = 6
8
8
  }
9
- declare function dateFormat(date: number, mode: Mode.NumberToString): string;
10
- declare function dateFormat(date: number, mode: Mode.NumberToTimeStamp): number;
11
- declare function dateFormat(date: string, mode: Mode.StringToTimeStamp): number;
12
- declare function dateFormat(date: number, mode: Mode.TimeStampToString): string;
13
- declare function dateFormat(date: number, mode: Mode.TimeStampToNumber): number;
14
- declare function dateFormat(date: string, mode: Mode.StringToNumber): number;
9
+ type DateFormatInput<M extends Mode> = M extends Mode.NumberToString | Mode.NumberToTimeStamp | Mode.TimeStampToString | Mode.TimeStampToNumber ? number : M extends Mode.StringToTimeStamp | Mode.StringToNumber ? string : never;
10
+ type DateFormatOutput<M extends Mode> = M extends Mode.NumberToString | Mode.TimeStampToString ? string : M extends Mode.NumberToTimeStamp | Mode.StringToTimeStamp | Mode.TimeStampToNumber | Mode.StringToNumber ? number : never;
11
+ declare function dateFormat<M extends Mode>(date: DateFormatInput<M>, mode: M): DateFormatOutput<M>;
15
12
  export default dateFormat;
@@ -10,15 +10,13 @@ export var Mode;
10
10
  function dateFormat(date, mode) {
11
11
  switch (mode) {
12
12
  case Mode.NumberToString: {
13
- var input = date.toString();
14
- var res = input.slice(0, 4) + "-" + input.slice(4, 6) + "-" + input.slice(6, 8);
15
- return res;
13
+ var input = String(date).padStart(8, "0");
14
+ return "".concat(input.slice(0, 4), "-").concat(input.slice(4, 6), "-").concat(input.slice(6, 8));
16
15
  }
17
16
  case Mode.NumberToTimeStamp: {
18
- var input = date.toString();
19
- var stringDate = input.slice(0, 4) + "-" + input.slice(4, 6) + "-" + input.slice(6, 8);
20
- var res = Date.parse(stringDate);
21
- return res;
17
+ var input = String(date).padStart(8, "0");
18
+ var stringDate = "".concat(input.slice(0, 4), "-").concat(input.slice(4, 6), "-").concat(input.slice(6, 8));
19
+ return new Date(stringDate).getTime();
22
20
  }
23
21
  case Mode.StringToTimeStamp: {
24
22
  var res = Date.parse(date);
@@ -37,15 +35,12 @@ function dateFormat(date, mode) {
37
35
  case Mode.TimeStampToNumber: {
38
36
  var newDate = new Date(date);
39
37
  var yy = newDate.getFullYear();
40
- var mm = newDate.getMonth() + 1 < 10
41
- ? "0" + (newDate.getMonth() + 1)
42
- : newDate.getMonth() + 1;
43
- var dd = newDate.getDate() < 10 ? "0" + newDate.getDate() : newDate.getDate();
44
- var res = "".concat(yy).concat(mm).concat(dd);
45
- return parseInt(res);
38
+ var mm = String(newDate.getMonth() + 1).padStart(2, "0");
39
+ var dd = String(newDate.getDate()).padStart(2, "0");
40
+ return parseInt("".concat(yy).concat(mm).concat(dd), 10);
46
41
  }
47
42
  case Mode.StringToNumber: {
48
- var res = date.replace(/-/g, '');
43
+ var res = date.replace(/-/g, "");
49
44
  return parseInt(res);
50
45
  }
51
46
  default:
package/dist/umd/index.js CHANGED
@@ -178,48 +178,25 @@
178
178
  }
179
179
  return troughs;
180
180
  }
181
- function SwingExtremes(y, type, level) {
181
+ function SwingExtremes(y, level) {
182
182
  if (level === void 0) { level = 1; }
183
- if (type === exports.SwingExtremesType.Peak) {
184
- var result = [];
185
- var indexs = findPeaksByGradient(y, level);
186
- result.push(indexs[0]);
187
- for (var i = 1; i < indexs.length; i++) {
188
- if (y[indexs[i]] > y[result[result.length - 1]] &&
189
- y[indexs[i]] > y[result[result.length - 2]]) {
190
- result[result.length - 1] = indexs[i];
191
- }
192
- else if (y[indexs[i + 1]] < y[i] &&
193
- y[indexs[i]] > y[result[result.length - 1]]) {
194
- result.pop();
195
- result.push(indexs[i]);
196
- }
197
- else
198
- result.push(indexs[i]);
199
- }
200
- return result;
201
- }
202
- if (type === exports.SwingExtremesType.Trough) {
203
- var result = [];
204
- var indexs = findTroughByGradient(y, level);
205
- result.push(indexs[0]);
206
- for (var i = 1; i < indexs.length; i++) {
207
- if (y[indexs[i]] < y[result[result.length - 1]] &&
208
- y[indexs[i]] < y[result[result.length - 2]]) {
209
- result[result.length - 1] = indexs[i];
210
- }
211
- else if (y[indexs[i + 1]] > y[i] &&
212
- y[indexs[i]] < y[result[result.length - 1]]) {
213
- result.pop();
214
- result.push(indexs[i]);
215
- }
216
- else
217
- result.push(indexs[i]);
218
- }
219
- return result;
183
+ try {
184
+ var peaks = findPeaksByGradient(y, level);
185
+ var peakObjs = peaks.map(function (index) { return ({
186
+ index: index,
187
+ type: exports.SwingExtremesType.Peak,
188
+ }); });
189
+ var troughs = findTroughByGradient(y, level);
190
+ var troughObjs = troughs.map(function (index) { return ({
191
+ index: index,
192
+ type: exports.SwingExtremesType.Trough,
193
+ }); });
194
+ var merge = peakObjs.concat(troughObjs);
195
+ return merge.sort(function (a, b) { return a.index - b.index; });
220
196
  }
221
- else {
222
- throw new Error("Invalid SwingExtremesType");
197
+ catch (err) {
198
+ console.error(err);
199
+ return [];
223
200
  }
224
201
  }
225
202
 
@@ -1517,15 +1494,13 @@
1517
1494
  function dateFormat(date, mode) {
1518
1495
  switch (mode) {
1519
1496
  case Mode.NumberToString: {
1520
- var input = date.toString();
1521
- var res = input.slice(0, 4) + "-" + input.slice(4, 6) + "-" + input.slice(6, 8);
1522
- return res;
1497
+ var input = String(date).padStart(8, "0");
1498
+ return "".concat(input.slice(0, 4), "-").concat(input.slice(4, 6), "-").concat(input.slice(6, 8));
1523
1499
  }
1524
1500
  case Mode.NumberToTimeStamp: {
1525
- var input = date.toString();
1526
- var stringDate = input.slice(0, 4) + "-" + input.slice(4, 6) + "-" + input.slice(6, 8);
1527
- var res = Date.parse(stringDate);
1528
- return res;
1501
+ var input = String(date).padStart(8, "0");
1502
+ var stringDate = "".concat(input.slice(0, 4), "-").concat(input.slice(4, 6), "-").concat(input.slice(6, 8));
1503
+ return new Date(stringDate).getTime();
1529
1504
  }
1530
1505
  case Mode.StringToTimeStamp: {
1531
1506
  var res = Date.parse(date);
@@ -1544,15 +1519,12 @@
1544
1519
  case Mode.TimeStampToNumber: {
1545
1520
  var newDate = new Date(date);
1546
1521
  var yy = newDate.getFullYear();
1547
- var mm = newDate.getMonth() + 1 < 10
1548
- ? "0" + (newDate.getMonth() + 1)
1549
- : newDate.getMonth() + 1;
1550
- var dd = newDate.getDate() < 10 ? "0" + newDate.getDate() : newDate.getDate();
1551
- var res = "".concat(yy).concat(mm).concat(dd);
1552
- return parseInt(res);
1522
+ var mm = String(newDate.getMonth() + 1).padStart(2, "0");
1523
+ var dd = String(newDate.getDate()).padStart(2, "0");
1524
+ return parseInt("".concat(yy).concat(mm).concat(dd), 10);
1553
1525
  }
1554
1526
  case Mode.StringToNumber: {
1555
- var res = date.replace(/-/g, '');
1527
+ var res = date.replace(/-/g, "");
1556
1528
  return parseInt(res);
1557
1529
  }
1558
1530
  default:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ch20026103/anysis",
3
- "version": "0.0.16-beta",
3
+ "version": "0.0.16-beta2",
4
4
  "description": "provide many analyze methods in the library.",
5
5
  "keywords": [],
6
6
  "bugs": "git@github.com:cosmic1330/anysis/issues",