@futdevpro/fsm-dynamo 1.9.9 → 1.9.12
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/.github/workflows/main.yml +196 -0
- package/HOWTO.md +15 -15
- package/README.md +17 -17
- package/build/_collections/constants/country-divisions.const.d.ts +1 -1
- package/build/_collections/constants/country-divisions.const.d.ts.map +1 -1
- package/build/_collections/constants/country-divisions.const.js +2 -2
- package/build/_collections/constants/country-divisions.const.js.map +1 -1
- package/build/_collections/constants/courtry-isos.const.d.ts +1 -1
- package/build/_collections/constants/courtry-isos.const.d.ts.map +1 -1
- package/build/_collections/constants/courtry-isos.const.js +2 -2
- package/build/_collections/constants/courtry-isos.const.js.map +1 -1
- package/build/_collections/constants/error-defaults.const.d.ts +1 -1
- package/build/_collections/constants/error-defaults.const.d.ts.map +1 -1
- package/build/_collections/constants/module-settings/usage-module-settings.const.js +1 -1
- package/build/_collections/constants/pipe-transforms.const.js +12 -12
- package/build/_collections/constants/pipe-transforms.const.js.map +1 -1
- package/build/_collections/utils/pipe-transforms/division-pipe.util.js +1 -1
- package/build/_collections/utils/pipe-transforms/division-pipe.util.js.map +1 -1
- package/build/_collections/utils/pipe-transforms/list-pipe.util.d.ts.map +1 -1
- package/build/_collections/utils/pipe-transforms/list-pipe.util.js.map +1 -1
- package/build/_collections/utils/pipe-transforms/range-pipe.util.d.ts +2 -2
- package/build/_collections/utils/pipe-transforms/range-pipe.util.d.ts.map +1 -1
- package/build/_collections/utils/pipe-transforms/range-pipe.util.js +11 -11
- package/build/_collections/utils/pipe-transforms/range-pipe.util.js.map +1 -1
- package/build/_collections/utils/regions.util.d.ts.map +1 -1
- package/build/_collections/utils/regions.util.js +3 -0
- package/build/_collections/utils/regions.util.js.map +1 -1
- package/build/_enums/range-pipe-setting.enum.d.ts +1 -1
- package/build/_enums/range-pipe-setting.enum.d.ts.map +1 -1
- package/build/_enums/range-pipe-setting.enum.js +12 -12
- package/build/_enums/range-pipe-setting.enum.js.map +1 -1
- package/build/_models/control-models/error.control-model.js +1 -1
- package/build/_models/control-models/error.control-model.js.map +1 -1
- package/build/_models/control-models/error.control-model.spec.js +25 -6
- package/build/_models/control-models/error.control-model.spec.js.map +1 -1
- package/build/_models/interfaces/index.d.ts +3 -0
- package/build/_models/interfaces/index.d.ts.map +1 -1
- package/build/_models/interfaces/index.js +3 -0
- package/build/_models/interfaces/index.js.map +1 -1
- package/build/_models/interfaces/pipe-transforms.interface.d.ts +2 -2
- package/build/_models/interfaces/pipe-transforms.interface.d.ts.map +1 -1
- package/futdevpro-fsm-dynamo-01.09.12.tgz +0 -0
- package/nodemon.json +11 -11
- package/package.json +151 -151
- package/src/_collections/assets/location/country-codes-ISO-3166.json +3239 -3239
- package/src/_collections/assets/location/country-divisions-ISO-3166-all-list.json +19035 -19035
- package/src/_collections/assets/location/country-divisions-ISO-3166.json +4993 -4993
- package/src/_collections/assets/location/country-phone-codes.json +1203 -1203
- package/src/_collections/constants/country-divisions.const.ts +9 -9
- package/src/_collections/constants/courtry-isos.const.ts +8 -8
- package/src/_collections/constants/error-defaults.const.ts +11 -11
- package/src/_collections/constants/index.ts +15 -15
- package/src/_collections/constants/module-settings/custom-data-module-settings.const.ts +15 -15
- package/src/_collections/constants/module-settings/index.ts +8 -8
- package/src/_collections/constants/module-settings/test-module-settings.const.ts +19 -19
- package/src/_collections/constants/module-settings/usage-module-settings.const.ts +19 -19
- package/src/_collections/constants/pipe-transforms.const.ts +35 -35
- package/src/_collections/constants/times.const.ts +8 -8
- package/src/_collections/index.ts +6 -6
- package/src/_collections/utils/array.util.spec.ts +39 -39
- package/src/_collections/utils/array.util.ts +137 -137
- package/src/_collections/utils/index.ts +18 -18
- package/src/_collections/utils/location.util.ts +55 -55
- package/src/_collections/utils/log.util.ts +239 -239
- package/src/_collections/utils/math/box-bounds.util.ts +85 -85
- package/src/_collections/utils/math/index.ts +5 -5
- package/src/_collections/utils/math/math.util.ts +53 -53
- package/src/_collections/utils/math/random.util.ts +80 -80
- package/src/_collections/utils/math/trigonometry.util.ts +73 -73
- package/src/_collections/utils/math/vector2.util.ts +197 -197
- package/src/_collections/utils/pipe-transforms/country-pipe.util.ts +18 -18
- package/src/_collections/utils/pipe-transforms/custom-pipe.util.ts +9 -9
- package/src/_collections/utils/pipe-transforms/division-pipe.util.ts +20 -20
- package/src/_collections/utils/pipe-transforms/index.ts +15 -15
- package/src/_collections/utils/pipe-transforms/list-pipe.util.ts +10 -14
- package/src/_collections/utils/pipe-transforms/multi-pipe-pipe.util.ts +160 -160
- package/src/_collections/utils/pipe-transforms/obj-key-pipe.util.ts +9 -9
- package/src/_collections/utils/pipe-transforms/range-pipe.util.ts +94 -94
- package/src/_collections/utils/pipe-transforms/region-pipe.util.ts +18 -18
- package/src/_collections/utils/pipe-transforms/replace-pipe.util.ts +11 -11
- package/src/_collections/utils/pipe-transforms/slider-pipe.util.ts +20 -20
- package/src/_collections/utils/pipe-transforms/smart-replace-pipe.util.ts +71 -71
- package/src/_collections/utils/regex/index.ts +4 -4
- package/src/_collections/utils/regex/password-regex.util.ts +52 -52
- package/src/_collections/utils/regex/regex.util.ts +6 -6
- package/src/_collections/utils/regex/username-regex.util.ts +33 -33
- package/src/_collections/utils/regions.util.ts +100 -97
- package/src/_collections/utils/round-list.util.ts +44 -44
- package/src/_collections/utils/shared.static-service.ts +177 -177
- package/src/_collections/utils/time.util.spec.ts +50 -50
- package/src/_collections/utils/time.util.ts +219 -219
- package/src/_collections/utils/type-cloning-facility.util.ts +121 -121
- package/src/_collections/utils/utilities.util.ts +130 -130
- package/src/_enums/basic-property-type.enum.ts +9 -9
- package/src/_enums/data-model-type.enum.ts +13 -13
- package/src/_enums/day-of-week.enum.ts +28 -28
- package/src/_enums/error-level.enum.ts +17 -17
- package/src/_enums/index.ts +16 -16
- package/src/_enums/location/index.ts +3 -3
- package/src/_enums/location/region.enum.ts +9 -9
- package/src/_enums/location/sub-region.enum.ts +26 -26
- package/src/_enums/location/subdivision-region-type.enum.ts +44 -44
- package/src/_enums/log-style.enum.ts +30 -30
- package/src/_enums/month.enum.ts +16 -16
- package/src/_enums/pipe.enum.ts +45 -45
- package/src/_enums/range-pipe-setting.enum.ts +11 -11
- package/src/_enums/time/day-of-week.enum.ts +28 -28
- package/src/_enums/time/index.ts +3 -3
- package/src/_enums/time/month.enum.ts +16 -16
- package/src/_enums/time/relative-date.enum.ts +13 -13
- package/src/_models/control-models/daily-usage-data.control-model.ts +21 -21
- package/src/_models/control-models/data-model-params.control-model.ts +39 -39
- package/src/_models/control-models/data-property-params.control-model.ts +106 -106
- package/src/_models/control-models/error.control-model.spec.ts +753 -716
- package/src/_models/control-models/error.control-model.ts +722 -722
- package/src/_models/control-models/index.ts +10 -10
- package/src/_models/control-models/poll.control-model.ts +113 -113
- package/src/_models/control-models/range-value.control-model.ts +142 -142
- package/src/_models/control-models/usage-action.control-model.ts +15 -15
- package/src/_models/control-models/usage-data.control-model.ts +20 -20
- package/src/_models/data-models/custom-data.data-model.ts +28 -28
- package/src/_models/data-models/index.ts +5 -5
- package/src/_models/data-models/metadata.data-model.ts +83 -83
- package/src/_models/data-models/usage-session.data-model.ts +53 -53
- package/src/_models/index.ts +12 -12
- package/src/_models/interfaces/error-defaults.interface.ts +11 -11
- package/src/_models/interfaces/index.ts +11 -8
- package/src/_models/interfaces/location/country-division.interface.ts +7 -7
- package/src/_models/interfaces/location/country-iso.interface.ts +21 -21
- package/src/_models/interfaces/location/country-phone-code.interface.ts +7 -7
- package/src/_models/interfaces/location/division-collection.interface.ts +10 -10
- package/src/_models/interfaces/location/division-region-data.interface.ts +8 -8
- package/src/_models/interfaces/location/geo-ip-location.interface.ts +26 -26
- package/src/_models/interfaces/location/index.ts +10 -10
- package/src/_models/interfaces/location/location-coordinates.interface.ts +5 -5
- package/src/_models/interfaces/multi-pipe-settings.type.ts +7 -7
- package/src/_models/interfaces/paged.interface.ts +11 -11
- package/src/_models/interfaces/pipe-transforms.interface.ts +29 -29
- package/src/_models/interfaces/random-weight.interface.ts +7 -7
- package/src/_models/interfaces/route-settings.interface.ts +11 -11
- package/src/_modules/collections.index.ts +2 -2
- package/src/_modules/constants.index.ts +2 -2
- package/src/_modules/custom-data-module.index.ts +6 -6
- package/src/_modules/data-modules.index.ts +9 -9
- package/src/_modules/enums.index.ts +2 -2
- package/src/_modules/error-module.index.ts +8 -8
- package/src/_modules/location.index.ts +15 -15
- package/src/_modules/models.index.ts +2 -2
- package/src/_modules/shared-service.index.ts +9 -9
- package/src/_modules/test-module.index.ts +5 -5
- package/src/_modules/usage-module.index.ts +10 -10
- package/tsconfig.json +29 -29
- package/tslint.json +153 -153
- package/build/_enums/region.enum.d.ts +0 -8
- package/build/_enums/region.enum.d.ts.map +0 -1
- package/build/_enums/region.enum.js +0 -12
- package/build/_enums/region.enum.js.map +0 -1
- package/build/_enums/relative-date.enum.d.ts +0 -9
- package/build/_enums/relative-date.enum.d.ts.map +0 -1
- package/build/_enums/relative-date.enum.js +0 -13
- package/build/_enums/relative-date.enum.js.map +0 -1
- package/build/_enums/sub-region.enum.d.ts +0 -20
- package/build/_enums/sub-region.enum.d.ts.map +0 -1
- package/build/_enums/sub-region.enum.js +0 -24
- package/build/_enums/sub-region.enum.js.map +0 -1
- package/build/_enums/subdivision-region-type.enum.d.ts +0 -41
- package/build/_enums/subdivision-region-type.enum.d.ts.map +0 -1
- package/build/_enums/subdivision-region-type.enum.js +0 -46
- package/build/_enums/subdivision-region-type.enum.js.map +0 -1
- package/src/_enums/region.enum.ts +0 -9
- package/src/_enums/relative-date.enum.ts +0 -13
- package/src/_enums/sub-region.enum.ts +0 -26
- package/src/_enums/subdivision-region-type.enum.ts +0 -44
|
@@ -1,137 +1,137 @@
|
|
|
1
|
-
|
|
2
|
-
import { DynamoFM_Paged } from '../../_models/interfaces/paged.interface';
|
|
3
|
-
|
|
4
|
-
export type DFM_Array = DynamoFM_Array;
|
|
5
|
-
export class DynamoFM_Array {
|
|
6
|
-
|
|
7
|
-
static async asyncForEach<T>(
|
|
8
|
-
list: T[],
|
|
9
|
-
func: (element: T, index?: number, array?: T[]) => Promise<void>
|
|
10
|
-
): Promise<void> {
|
|
11
|
-
for (let i = 0; i < list.length; i++) {
|
|
12
|
-
await func(list[i], i, list);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
static async asyncMap<T, R>(
|
|
17
|
-
list: T[],
|
|
18
|
-
mapFunc: (element: T, index?: number, array?: T[]) => Promise<R>
|
|
19
|
-
): Promise<R[]> {
|
|
20
|
-
const resultList: R[] = [];
|
|
21
|
-
|
|
22
|
-
for (let i = 0; i < list.length; i++) {
|
|
23
|
-
resultList.push(await mapFunc(list[i], i, list));
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
return resultList;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
static last<T>(array: T[]): T {
|
|
30
|
-
return array.length ? array[array.length - 1] : null;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
static remove<T>(array: T[], element: T): T[] {
|
|
34
|
-
const index = array.indexOf(element);
|
|
35
|
-
|
|
36
|
-
if (-1 < index) {
|
|
37
|
-
array.splice(index, 1);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return array;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
static findNRemove<T>(
|
|
44
|
-
array: T[],
|
|
45
|
-
func: (element: T, index?: number, array?: T[]) => boolean
|
|
46
|
-
): T[] {
|
|
47
|
-
const index = array.findIndex(func);
|
|
48
|
-
|
|
49
|
-
if (-1 < index) {
|
|
50
|
-
array.splice(index, 1);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return array;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
static shuffle<T>(array: T[]): T[] {
|
|
57
|
-
let currentIndex = array.length;
|
|
58
|
-
let randomIndex: number;
|
|
59
|
-
|
|
60
|
-
while (0 < currentIndex) {
|
|
61
|
-
randomIndex = Math.floor(Math.random() * currentIndex);
|
|
62
|
-
currentIndex--;
|
|
63
|
-
|
|
64
|
-
[ array[currentIndex], array[randomIndex] ] = [ array[randomIndex], array[currentIndex] ];
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
return array;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
static page<T>(array: T[], pageIndex: number, pageSize: number): T[] {
|
|
71
|
-
return array.slice(pageIndex * pageSize, (pageIndex + 1) * pageSize);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
static paged<T>(array: T[], pageIndex: number, pageSize: number): DynamoFM_Paged<T> {
|
|
75
|
-
return {
|
|
76
|
-
pageIndex,
|
|
77
|
-
pageSize,
|
|
78
|
-
total: array.length,
|
|
79
|
-
totalPageCount: Math.ceil(array.length / pageSize),
|
|
80
|
-
items: this.page(array, pageIndex, pageSize)
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
static swap<T>(array: T[], indexA: number, indexB: number): T[] {
|
|
85
|
-
[ array[indexA], array[indexB] ] = [ array[indexB], array[indexA] ];
|
|
86
|
-
|
|
87
|
-
return array;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* returns the opposite index as they circular
|
|
92
|
-
* so after the last index, the first comes next
|
|
93
|
-
* an array that has 8 elements, the opposite of 7 is 3
|
|
94
|
-
* */
|
|
95
|
-
static getRoundListOppositeIndex(
|
|
96
|
-
arrayLength: number,
|
|
97
|
-
index: number,
|
|
98
|
-
roundUp: boolean = false
|
|
99
|
-
): number {
|
|
100
|
-
const oppositeIndex = index + (
|
|
101
|
-
roundUp ?
|
|
102
|
-
Math.ceil(arrayLength / 2) :
|
|
103
|
-
Math.floor(arrayLength / 2)
|
|
104
|
-
);
|
|
105
|
-
|
|
106
|
-
if (arrayLength <= oppositeIndex) {
|
|
107
|
-
return oppositeIndex - arrayLength;
|
|
108
|
-
} else {
|
|
109
|
-
return oppositeIndex;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
getRoundListOutboundIndex<T>(array: T[], index: number): T {
|
|
114
|
-
try {
|
|
115
|
-
while (array.length <= index) {
|
|
116
|
-
index -= array.length;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
while (index < 0) {
|
|
120
|
-
index += array.length;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
return array[index];
|
|
124
|
-
} catch (error) {
|
|
125
|
-
console.error(
|
|
126
|
-
'DynamoFM_Array.getRoundListOutboundIndex error:', error,
|
|
127
|
-
'\narray:', array,
|
|
128
|
-
'\nindex:', index
|
|
129
|
-
);
|
|
130
|
-
|
|
131
|
-
return null;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
|
|
1
|
+
|
|
2
|
+
import { DynamoFM_Paged } from '../../_models/interfaces/paged.interface';
|
|
3
|
+
|
|
4
|
+
export type DFM_Array = DynamoFM_Array;
|
|
5
|
+
export class DynamoFM_Array {
|
|
6
|
+
|
|
7
|
+
static async asyncForEach<T>(
|
|
8
|
+
list: T[],
|
|
9
|
+
func: (element: T, index?: number, array?: T[]) => Promise<void>
|
|
10
|
+
): Promise<void> {
|
|
11
|
+
for (let i = 0; i < list.length; i++) {
|
|
12
|
+
await func(list[i], i, list);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
static async asyncMap<T, R>(
|
|
17
|
+
list: T[],
|
|
18
|
+
mapFunc: (element: T, index?: number, array?: T[]) => Promise<R>
|
|
19
|
+
): Promise<R[]> {
|
|
20
|
+
const resultList: R[] = [];
|
|
21
|
+
|
|
22
|
+
for (let i = 0; i < list.length; i++) {
|
|
23
|
+
resultList.push(await mapFunc(list[i], i, list));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return resultList;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static last<T>(array: T[]): T {
|
|
30
|
+
return array.length ? array[array.length - 1] : null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
static remove<T>(array: T[], element: T): T[] {
|
|
34
|
+
const index = array.indexOf(element);
|
|
35
|
+
|
|
36
|
+
if (-1 < index) {
|
|
37
|
+
array.splice(index, 1);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return array;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
static findNRemove<T>(
|
|
44
|
+
array: T[],
|
|
45
|
+
func: (element: T, index?: number, array?: T[]) => boolean
|
|
46
|
+
): T[] {
|
|
47
|
+
const index = array.findIndex(func);
|
|
48
|
+
|
|
49
|
+
if (-1 < index) {
|
|
50
|
+
array.splice(index, 1);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return array;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
static shuffle<T>(array: T[]): T[] {
|
|
57
|
+
let currentIndex = array.length;
|
|
58
|
+
let randomIndex: number;
|
|
59
|
+
|
|
60
|
+
while (0 < currentIndex) {
|
|
61
|
+
randomIndex = Math.floor(Math.random() * currentIndex);
|
|
62
|
+
currentIndex--;
|
|
63
|
+
|
|
64
|
+
[ array[currentIndex], array[randomIndex] ] = [ array[randomIndex], array[currentIndex] ];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return array;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
static page<T>(array: T[], pageIndex: number, pageSize: number): T[] {
|
|
71
|
+
return array.slice(pageIndex * pageSize, (pageIndex + 1) * pageSize);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
static paged<T>(array: T[], pageIndex: number, pageSize: number): DynamoFM_Paged<T> {
|
|
75
|
+
return {
|
|
76
|
+
pageIndex,
|
|
77
|
+
pageSize,
|
|
78
|
+
total: array.length,
|
|
79
|
+
totalPageCount: Math.ceil(array.length / pageSize),
|
|
80
|
+
items: this.page(array, pageIndex, pageSize)
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
static swap<T>(array: T[], indexA: number, indexB: number): T[] {
|
|
85
|
+
[ array[indexA], array[indexB] ] = [ array[indexB], array[indexA] ];
|
|
86
|
+
|
|
87
|
+
return array;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* returns the opposite index as they circular
|
|
92
|
+
* so after the last index, the first comes next
|
|
93
|
+
* an array that has 8 elements, the opposite of 7 is 3
|
|
94
|
+
* */
|
|
95
|
+
static getRoundListOppositeIndex(
|
|
96
|
+
arrayLength: number,
|
|
97
|
+
index: number,
|
|
98
|
+
roundUp: boolean = false
|
|
99
|
+
): number {
|
|
100
|
+
const oppositeIndex = index + (
|
|
101
|
+
roundUp ?
|
|
102
|
+
Math.ceil(arrayLength / 2) :
|
|
103
|
+
Math.floor(arrayLength / 2)
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
if (arrayLength <= oppositeIndex) {
|
|
107
|
+
return oppositeIndex - arrayLength;
|
|
108
|
+
} else {
|
|
109
|
+
return oppositeIndex;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
getRoundListOutboundIndex<T>(array: T[], index: number): T {
|
|
114
|
+
try {
|
|
115
|
+
while (array.length <= index) {
|
|
116
|
+
index -= array.length;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
while (index < 0) {
|
|
120
|
+
index += array.length;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return array[index];
|
|
124
|
+
} catch (error) {
|
|
125
|
+
console.error(
|
|
126
|
+
'DynamoFM_Array.getRoundListOutboundIndex error:', error,
|
|
127
|
+
'\narray:', array,
|
|
128
|
+
'\nindex:', index
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
export * from './math';
|
|
3
|
-
export * from './pipe-transforms';
|
|
4
|
-
export * from './regex';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
// TOOLS
|
|
8
|
-
export * from './array.util';
|
|
9
|
-
export * from './location.util';
|
|
10
|
-
export * from './log.util';
|
|
11
|
-
export * from './regions.util';
|
|
12
|
-
export * from './round-list.util';
|
|
13
|
-
export * from './shared.static-service';
|
|
14
|
-
export * from './time.util';
|
|
15
|
-
export * from './type-cloning-facility.util';
|
|
16
|
-
export * from './utilities.util';
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
|
|
2
|
+
export * from './math';
|
|
3
|
+
export * from './pipe-transforms';
|
|
4
|
+
export * from './regex';
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
// TOOLS
|
|
8
|
+
export * from './array.util';
|
|
9
|
+
export * from './location.util';
|
|
10
|
+
export * from './log.util';
|
|
11
|
+
export * from './regions.util';
|
|
12
|
+
export * from './round-list.util';
|
|
13
|
+
export * from './shared.static-service';
|
|
14
|
+
export * from './time.util';
|
|
15
|
+
export * from './type-cloning-facility.util';
|
|
16
|
+
export * from './utilities.util';
|
|
17
|
+
|
|
18
|
+
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
|
|
2
|
-
import { DynamoFM_Error } from '../../_models/control-models/error.control-model';
|
|
3
|
-
import { DynamoFM_Trigonometry } from './math/trigonometry.util';
|
|
4
|
-
import { DynamoFM_LocationCoordinates } from '../../_models/interfaces/location/location-coordinates.interface';
|
|
5
|
-
|
|
6
|
-
export type DFM_Location = DynamoFM_Location;
|
|
7
|
-
export class DynamoFM_Location {
|
|
8
|
-
|
|
9
|
-
static getDistanceInKilometres(
|
|
10
|
-
from: DynamoFM_LocationCoordinates,
|
|
11
|
-
to: DynamoFM_LocationCoordinates
|
|
12
|
-
): number {
|
|
13
|
-
|
|
14
|
-
const R = 6371; // kilometres
|
|
15
|
-
const φ1 = DynamoFM_Trigonometry.angleToRadians(from.latitude);
|
|
16
|
-
const φ2 = DynamoFM_Trigonometry.angleToRadians(to.latitude);
|
|
17
|
-
const Δφ = DynamoFM_Trigonometry.angleToRadians(to.latitude - from.latitude);
|
|
18
|
-
const Δλ = DynamoFM_Trigonometry.angleToRadians(to.longitude - from.longitude);
|
|
19
|
-
|
|
20
|
-
const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +
|
|
21
|
-
Math.cos(φ1) * Math.cos(φ2) *
|
|
22
|
-
Math.sin(Δλ / 2) * Math.sin(Δλ / 2);
|
|
23
|
-
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
|
24
|
-
|
|
25
|
-
return R * c;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
static getLocationDegByKilometers(
|
|
29
|
-
latiOrLong: 'latitude' | 'longitude',
|
|
30
|
-
distanceInKm: number,
|
|
31
|
-
latitude?: number
|
|
32
|
-
): number {
|
|
33
|
-
if (latiOrLong === 'latitude') {
|
|
34
|
-
return distanceInKm / 110.574;
|
|
35
|
-
} else {
|
|
36
|
-
if (latitude) {
|
|
37
|
-
return distanceInKm / (Math.cos(DynamoFM_Trigonometry.angleToRadians(latitude)) * 111.320);
|
|
38
|
-
} else {
|
|
39
|
-
throw new DynamoFM_Error({
|
|
40
|
-
status: 417,
|
|
41
|
-
errorCode: 'FSM-DSS-505',
|
|
42
|
-
addECToUserMsg: true,
|
|
43
|
-
message:
|
|
44
|
-
`When using getLocationDegByKilometers for longitude, you need to give latitude! ` +
|
|
45
|
-
`(latiOrLong: ${latiOrLong}, distanceInKm: ${distanceInKm}, latitude: ${latitude})`,
|
|
46
|
-
userMessage:
|
|
47
|
-
`We encountered an uncought BackEnd Error, ` +
|
|
48
|
-
`please contact the responsible development team.`
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
|
|
1
|
+
|
|
2
|
+
import { DynamoFM_Error } from '../../_models/control-models/error.control-model';
|
|
3
|
+
import { DynamoFM_Trigonometry } from './math/trigonometry.util';
|
|
4
|
+
import { DynamoFM_LocationCoordinates } from '../../_models/interfaces/location/location-coordinates.interface';
|
|
5
|
+
|
|
6
|
+
export type DFM_Location = DynamoFM_Location;
|
|
7
|
+
export class DynamoFM_Location {
|
|
8
|
+
|
|
9
|
+
static getDistanceInKilometres(
|
|
10
|
+
from: DynamoFM_LocationCoordinates,
|
|
11
|
+
to: DynamoFM_LocationCoordinates
|
|
12
|
+
): number {
|
|
13
|
+
|
|
14
|
+
const R = 6371; // kilometres
|
|
15
|
+
const φ1 = DynamoFM_Trigonometry.angleToRadians(from.latitude);
|
|
16
|
+
const φ2 = DynamoFM_Trigonometry.angleToRadians(to.latitude);
|
|
17
|
+
const Δφ = DynamoFM_Trigonometry.angleToRadians(to.latitude - from.latitude);
|
|
18
|
+
const Δλ = DynamoFM_Trigonometry.angleToRadians(to.longitude - from.longitude);
|
|
19
|
+
|
|
20
|
+
const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +
|
|
21
|
+
Math.cos(φ1) * Math.cos(φ2) *
|
|
22
|
+
Math.sin(Δλ / 2) * Math.sin(Δλ / 2);
|
|
23
|
+
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
|
24
|
+
|
|
25
|
+
return R * c;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
static getLocationDegByKilometers(
|
|
29
|
+
latiOrLong: 'latitude' | 'longitude',
|
|
30
|
+
distanceInKm: number,
|
|
31
|
+
latitude?: number
|
|
32
|
+
): number {
|
|
33
|
+
if (latiOrLong === 'latitude') {
|
|
34
|
+
return distanceInKm / 110.574;
|
|
35
|
+
} else {
|
|
36
|
+
if (latitude) {
|
|
37
|
+
return distanceInKm / (Math.cos(DynamoFM_Trigonometry.angleToRadians(latitude)) * 111.320);
|
|
38
|
+
} else {
|
|
39
|
+
throw new DynamoFM_Error({
|
|
40
|
+
status: 417,
|
|
41
|
+
errorCode: 'FSM-DSS-505',
|
|
42
|
+
addECToUserMsg: true,
|
|
43
|
+
message:
|
|
44
|
+
`When using getLocationDegByKilometers for longitude, you need to give latitude! ` +
|
|
45
|
+
`(latiOrLong: ${latiOrLong}, distanceInKm: ${distanceInKm}, latitude: ${latitude})`,
|
|
46
|
+
userMessage:
|
|
47
|
+
`We encountered an uncought BackEnd Error, ` +
|
|
48
|
+
`please contact the responsible development team.`
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
|