@lakutata/core 1.0.47 → 1.0.50
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/build/plugins/Formatter.d.ts +4 -0
- package/build/plugins/Formatter.js +4 -0
- package/build/plugins/Formatter.js.map +1 -1
- package/build/plugins/Security.js +9 -8
- package/build/plugins/Security.js.map +1 -1
- package/package.json +8 -7
- package/src/plugins/Formatter.ts +12 -1
- package/src/plugins/Security.ts +9 -8
- package/src/tests/Main.spec.ts +1 -1
|
@@ -12,4 +12,8 @@ export declare class Formatter extends Plugin {
|
|
|
12
12
|
asDate(inp: string | number | Date): Date;
|
|
13
13
|
asDateText(inp?: Date | string | number, format?: string): string;
|
|
14
14
|
asPercent(value: number, decimals?: number): string;
|
|
15
|
+
sortObject<T = any>(obj: T, options?: {
|
|
16
|
+
deep?: boolean;
|
|
17
|
+
compare?: (left: string, right: string) => number;
|
|
18
|
+
}): T;
|
|
15
19
|
}
|
|
@@ -16,6 +16,7 @@ exports.Formatter = void 0;
|
|
|
16
16
|
const Plugin_1 = require("../base/Plugin");
|
|
17
17
|
const moment_timezone_1 = __importDefault(require("moment-timezone"));
|
|
18
18
|
const DependencyInjection_1 = require("../decorators/DependencyInjection");
|
|
19
|
+
const sort_keys_1 = __importDefault(require("sort-keys"));
|
|
19
20
|
class Formatter extends Plugin_1.Plugin {
|
|
20
21
|
constructor() {
|
|
21
22
|
super(...arguments);
|
|
@@ -40,6 +41,9 @@ class Formatter extends Plugin_1.Plugin {
|
|
|
40
41
|
const val = +((value * 100).toFixed(decimals));
|
|
41
42
|
return `${val}%`;
|
|
42
43
|
}
|
|
44
|
+
sortObject(obj, options) {
|
|
45
|
+
return (0, sort_keys_1.default)(obj, options ? options : { deep: true });
|
|
46
|
+
}
|
|
43
47
|
}
|
|
44
48
|
__decorate([
|
|
45
49
|
(0, DependencyInjection_1.Configurable)(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Formatter.js","sourceRoot":"","sources":["../../src/plugins/Formatter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAqC;AACrC,sEAA4C;AAC5C,2EAA8D;
|
|
1
|
+
{"version":3,"file":"Formatter.js","sourceRoot":"","sources":["../../src/plugins/Formatter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAqC;AACrC,sEAA4C;AAC5C,2EAA8D;AAC9D,0DAAgC;AAQhC,MAAa,SAAU,SAAQ,eAAM;IAArC;;QAYoB,eAAU,GAAW,qBAAqB,CAAA;IA2D9D,CAAC;IArEA,IAAc,QAAQ;QACrB,OAAe,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IAC9B,CAAC;IAeM,WAAW,CAAC,MAA8B,IAAI,IAAI,EAAE;QAC1D,OAAO,yBAAc,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAA;IACpD,CAAC;IAOM,sBAAsB,CAAC,MAA8B,IAAI,IAAI,EAAE;QACrE,OAAO,yBAAc,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAA;IACvD,CAAC;IAOM,MAAM,CAAC,GAA2B;QACxC,OAAO,yBAAc,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;IACtD,CAAC;IAQM,UAAU,CAAC,MAA8B,IAAI,IAAI,EAAE,EAAE,MAAe;QAC1E,OAAO,yBAAc,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACvF,CAAC;IAQM,SAAS,CAAC,KAAa,EAAE,WAAmB,CAAC;QACnD,MAAM,GAAG,GAAW,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;QACtD,OAAO,GAAG,GAAG,GAAG,CAAA;IACjB,CAAC;IAQM,UAAU,CAAU,GAAM,EAAE,OAA+E;QACjH,OAAO,IAAA,mBAAQ,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAA;IACvD,CAAC;CACD;AA3DA;IADC,IAAA,kCAAY,GAAE;;6CAC8C;AAZ9D,8BAuEC"}
|
|
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.Security = void 0;
|
|
16
16
|
const string_random_1 = __importDefault(require("string-random"));
|
|
17
17
|
const crypto_js_1 = require("crypto-js");
|
|
18
|
+
const sort_keys_1 = __importDefault(require("sort-keys"));
|
|
18
19
|
const bcryptjs_1 = require("bcryptjs");
|
|
19
20
|
const Plugin_1 = require("../base/Plugin");
|
|
20
21
|
const JSON_1 = require("./JSON");
|
|
@@ -37,7 +38,7 @@ class Security extends Plugin_1.Plugin {
|
|
|
37
38
|
});
|
|
38
39
|
}
|
|
39
40
|
MD5(data, key) {
|
|
40
|
-
const stringData = typeof data === 'string' ? data : this.JSON.stringify(data);
|
|
41
|
+
const stringData = typeof data === 'string' ? data : this.JSON.stringify((0, sort_keys_1.default)(data, { deep: true }));
|
|
41
42
|
if (key) {
|
|
42
43
|
return (0, crypto_js_1.HmacMD5)(stringData, key).toString();
|
|
43
44
|
}
|
|
@@ -46,7 +47,7 @@ class Security extends Plugin_1.Plugin {
|
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
SHA1(data, key) {
|
|
49
|
-
const stringData = typeof data === 'string' ? data : this.JSON.stringify(data);
|
|
50
|
+
const stringData = typeof data === 'string' ? data : this.JSON.stringify((0, sort_keys_1.default)(data, { deep: true }));
|
|
50
51
|
if (key) {
|
|
51
52
|
return (0, crypto_js_1.HmacSHA1)(stringData, key).toString();
|
|
52
53
|
}
|
|
@@ -55,7 +56,7 @@ class Security extends Plugin_1.Plugin {
|
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
58
|
SHA3(data, key) {
|
|
58
|
-
const stringData = typeof data === 'string' ? data : this.JSON.stringify(data);
|
|
59
|
+
const stringData = typeof data === 'string' ? data : this.JSON.stringify((0, sort_keys_1.default)(data, { deep: true }));
|
|
59
60
|
if (key) {
|
|
60
61
|
return (0, crypto_js_1.HmacSHA3)(stringData, key).toString();
|
|
61
62
|
}
|
|
@@ -64,7 +65,7 @@ class Security extends Plugin_1.Plugin {
|
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
67
|
SHA224(data, key) {
|
|
67
|
-
const stringData = typeof data === 'string' ? data : this.JSON.stringify(data);
|
|
68
|
+
const stringData = typeof data === 'string' ? data : this.JSON.stringify((0, sort_keys_1.default)(data, { deep: true }));
|
|
68
69
|
if (key) {
|
|
69
70
|
return (0, crypto_js_1.HmacSHA224)(stringData, key).toString();
|
|
70
71
|
}
|
|
@@ -73,7 +74,7 @@ class Security extends Plugin_1.Plugin {
|
|
|
73
74
|
}
|
|
74
75
|
}
|
|
75
76
|
SHA256(data, key) {
|
|
76
|
-
const stringData = typeof data === 'string' ? data : this.JSON.stringify(data);
|
|
77
|
+
const stringData = typeof data === 'string' ? data : this.JSON.stringify((0, sort_keys_1.default)(data, { deep: true }));
|
|
77
78
|
if (key) {
|
|
78
79
|
return (0, crypto_js_1.HmacSHA256)(stringData, key).toString();
|
|
79
80
|
}
|
|
@@ -82,7 +83,7 @@ class Security extends Plugin_1.Plugin {
|
|
|
82
83
|
}
|
|
83
84
|
}
|
|
84
85
|
SHA384(data, key) {
|
|
85
|
-
const stringData = typeof data === 'string' ? data : this.JSON.stringify(data);
|
|
86
|
+
const stringData = typeof data === 'string' ? data : this.JSON.stringify((0, sort_keys_1.default)(data, { deep: true }));
|
|
86
87
|
if (key) {
|
|
87
88
|
return (0, crypto_js_1.HmacSHA384)(stringData, key).toString();
|
|
88
89
|
}
|
|
@@ -91,7 +92,7 @@ class Security extends Plugin_1.Plugin {
|
|
|
91
92
|
}
|
|
92
93
|
}
|
|
93
94
|
SHA512(data, key) {
|
|
94
|
-
const stringData = typeof data === 'string' ? data : this.JSON.stringify(data);
|
|
95
|
+
const stringData = typeof data === 'string' ? data : this.JSON.stringify((0, sort_keys_1.default)(data, { deep: true }));
|
|
95
96
|
if (key) {
|
|
96
97
|
return (0, crypto_js_1.HmacSHA512)(stringData, key).toString();
|
|
97
98
|
}
|
|
@@ -100,7 +101,7 @@ class Security extends Plugin_1.Plugin {
|
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
103
|
encryptByPassword(data, password) {
|
|
103
|
-
const stringData = typeof data === 'string' ? data : this.JSON.stringify(data);
|
|
104
|
+
const stringData = typeof data === 'string' ? data : this.JSON.stringify((0, sort_keys_1.default)(data, { deep: true }));
|
|
104
105
|
return crypto_js_1.AES.encrypt(stringData, password).toString();
|
|
105
106
|
}
|
|
106
107
|
decryptByPassword(ciphertext, password) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Security.js","sourceRoot":"","sources":["../../src/plugins/Security.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kEAAwC;AACxC,yCAiBkB;AAClB,uCAAmF;AACnF,2CAAqC;AACrC,iCAA2B;AAC3B,qCAA+B;AAC/B,2EAAsE;AAQtE,MAAa,QAAS,SAAQ,eAAM;IAApC;;QAaoB,cAAS,GAAW,CAAC,CAAA;IAyNzC,CAAC;IAjNO,oBAAoB,CAAC,SAAiB,EAAE,EAAE,UAAgG;QAChJ,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,KAAK;KACf;QACA,OAAO,IAAA,uBAAY,EAAC,MAAM,EAAE;YAC3B,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO;YAC/D,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO;YAC/D,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ;SACnE,CAAC,CAAA;IACH,CAAC;IASM,GAAG,CAAC,IAAS,EAAE,GAAY;QACjC,MAAM,UAAU,GAAW,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"Security.js","sourceRoot":"","sources":["../../src/plugins/Security.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lakutata/core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.50",
|
|
4
4
|
"description": "Lakutata Framework Core",
|
|
5
5
|
"main": "./build/Core.js",
|
|
6
6
|
"types": "./build/Core.d.ts",
|
|
@@ -55,23 +55,24 @@
|
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"bcryptjs": "^2.4.3",
|
|
57
57
|
"crypto-js": "^4.1.1",
|
|
58
|
-
"google-libphonenumber": "^3.2.
|
|
58
|
+
"google-libphonenumber": "^3.2.30",
|
|
59
59
|
"inversify": "^6.0.1",
|
|
60
60
|
"is-ssh": "^1.3.3",
|
|
61
61
|
"json-helpers": "^5.2.0",
|
|
62
62
|
"json5": "^2.2.1",
|
|
63
63
|
"lodash.mapvalues": "^4.6.0",
|
|
64
|
-
"memfs": "^3.4.
|
|
64
|
+
"memfs": "^3.4.7",
|
|
65
65
|
"merge-deep": "^3.0.3",
|
|
66
|
-
"moment": "^2.29.
|
|
66
|
+
"moment": "^2.29.4",
|
|
67
67
|
"moment-timezone": "^0.5.34",
|
|
68
|
-
"msgpack5": "^6.0.
|
|
68
|
+
"msgpack5": "^6.0.2",
|
|
69
69
|
"needle": "^3.1.0",
|
|
70
70
|
"node-rsa": "^1.1.1",
|
|
71
71
|
"p-timeout": "^4.1.0",
|
|
72
72
|
"pupa": "^2.1.1",
|
|
73
73
|
"random": "^3.0.6",
|
|
74
74
|
"reflect-metadata": "^0.1.13",
|
|
75
|
+
"sort-keys": "^4.2.0",
|
|
75
76
|
"string-random": "^0.1.3",
|
|
76
77
|
"winston": "^3.7.2",
|
|
77
78
|
"winston-transport": "^4.5.0",
|
|
@@ -96,8 +97,8 @@
|
|
|
96
97
|
"eslint-plugin-node": "^11.1.0",
|
|
97
98
|
"eslint-plugin-promise": "^5.2.0",
|
|
98
99
|
"shx": "^0.3.4",
|
|
99
|
-
"ts-node": "^10.
|
|
100
|
-
"typescript": "
|
|
100
|
+
"ts-node": "^10.9.1",
|
|
101
|
+
"typescript": "4.7.4"
|
|
101
102
|
},
|
|
102
103
|
"engines": {
|
|
103
104
|
"node": ">=12.22.1"
|
package/src/plugins/Formatter.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {Plugin} from '../base/Plugin'
|
|
2
2
|
import momentTimezone from 'moment-timezone'
|
|
3
3
|
import {Configurable} from '../decorators/DependencyInjection'
|
|
4
|
+
import sortKeys from 'sort-keys'
|
|
4
5
|
|
|
5
6
|
declare module '../Core' {
|
|
6
7
|
interface Application {
|
|
@@ -69,4 +70,14 @@ export class Formatter extends Plugin {
|
|
|
69
70
|
const val: number = +((value * 100).toFixed(decimals))
|
|
70
71
|
return `${val}%`
|
|
71
72
|
}
|
|
72
|
-
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* 对象内容排序(Object或Array均可)
|
|
76
|
+
* @param {T} obj
|
|
77
|
+
* @param {{deep?: boolean, compare?: (left: string, right: string) => number}} options
|
|
78
|
+
* @returns {T}
|
|
79
|
+
*/
|
|
80
|
+
public sortObject<T = any>(obj: T, options?: { deep?: boolean; compare?: (left: string, right: string) => number }): T {
|
|
81
|
+
return sortKeys(obj, options ? options : {deep: true})
|
|
82
|
+
}
|
|
83
|
+
}
|
package/src/plugins/Security.ts
CHANGED
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
AES,
|
|
18
18
|
enc
|
|
19
19
|
} from 'crypto-js'
|
|
20
|
+
import sortKeys from 'sort-keys'
|
|
20
21
|
import {genSalt, genSaltSync, hash, hashSync, compare, compareSync} from 'bcryptjs'
|
|
21
22
|
import {Plugin} from '../base/Plugin'
|
|
22
23
|
import {JSON} from './JSON'
|
|
@@ -70,7 +71,7 @@ export class Security extends Plugin {
|
|
|
70
71
|
* @constructor
|
|
71
72
|
*/
|
|
72
73
|
public MD5(data: any, key?: string): string {
|
|
73
|
-
const stringData: string = typeof data === 'string' ? data : this.JSON.stringify(data)
|
|
74
|
+
const stringData: string = typeof data === 'string' ? data : this.JSON.stringify(sortKeys(data, {deep: true}))
|
|
74
75
|
if (key) {
|
|
75
76
|
return HmacMD5(stringData, key).toString()
|
|
76
77
|
} else {
|
|
@@ -86,7 +87,7 @@ export class Security extends Plugin {
|
|
|
86
87
|
* @constructor
|
|
87
88
|
*/
|
|
88
89
|
public SHA1(data: any, key?: string): string {
|
|
89
|
-
const stringData: string = typeof data === 'string' ? data : this.JSON.stringify(data)
|
|
90
|
+
const stringData: string = typeof data === 'string' ? data : this.JSON.stringify(sortKeys(data, {deep: true}))
|
|
90
91
|
if (key) {
|
|
91
92
|
return HmacSHA1(stringData, key).toString()
|
|
92
93
|
} else {
|
|
@@ -102,7 +103,7 @@ export class Security extends Plugin {
|
|
|
102
103
|
* @constructor
|
|
103
104
|
*/
|
|
104
105
|
public SHA3(data: any, key?: string): string {
|
|
105
|
-
const stringData: string = typeof data === 'string' ? data : this.JSON.stringify(data)
|
|
106
|
+
const stringData: string = typeof data === 'string' ? data : this.JSON.stringify(sortKeys(data, {deep: true}))
|
|
106
107
|
if (key) {
|
|
107
108
|
return HmacSHA3(stringData, key).toString()
|
|
108
109
|
} else {
|
|
@@ -118,7 +119,7 @@ export class Security extends Plugin {
|
|
|
118
119
|
* @constructor
|
|
119
120
|
*/
|
|
120
121
|
public SHA224(data: any, key?: string): string {
|
|
121
|
-
const stringData: string = typeof data === 'string' ? data : this.JSON.stringify(data)
|
|
122
|
+
const stringData: string = typeof data === 'string' ? data : this.JSON.stringify(sortKeys(data, {deep: true}))
|
|
122
123
|
if (key) {
|
|
123
124
|
return HmacSHA224(stringData, key).toString()
|
|
124
125
|
} else {
|
|
@@ -134,7 +135,7 @@ export class Security extends Plugin {
|
|
|
134
135
|
* @constructor
|
|
135
136
|
*/
|
|
136
137
|
public SHA256(data: any, key?: string): string {
|
|
137
|
-
const stringData: string = typeof data === 'string' ? data : this.JSON.stringify(data)
|
|
138
|
+
const stringData: string = typeof data === 'string' ? data : this.JSON.stringify(sortKeys(data, {deep: true}))
|
|
138
139
|
if (key) {
|
|
139
140
|
return HmacSHA256(stringData, key).toString()
|
|
140
141
|
} else {
|
|
@@ -150,7 +151,7 @@ export class Security extends Plugin {
|
|
|
150
151
|
* @constructor
|
|
151
152
|
*/
|
|
152
153
|
public SHA384(data: any, key?: string): string {
|
|
153
|
-
const stringData: string = typeof data === 'string' ? data : this.JSON.stringify(data)
|
|
154
|
+
const stringData: string = typeof data === 'string' ? data : this.JSON.stringify(sortKeys(data, {deep: true}))
|
|
154
155
|
if (key) {
|
|
155
156
|
return HmacSHA384(stringData, key).toString()
|
|
156
157
|
} else {
|
|
@@ -166,7 +167,7 @@ export class Security extends Plugin {
|
|
|
166
167
|
* @constructor
|
|
167
168
|
*/
|
|
168
169
|
public SHA512(data: any, key?: string): string {
|
|
169
|
-
const stringData: string = typeof data === 'string' ? data : this.JSON.stringify(data)
|
|
170
|
+
const stringData: string = typeof data === 'string' ? data : this.JSON.stringify(sortKeys(data, {deep: true}))
|
|
170
171
|
if (key) {
|
|
171
172
|
return HmacSHA512(stringData, key).toString()
|
|
172
173
|
} else {
|
|
@@ -181,7 +182,7 @@ export class Security extends Plugin {
|
|
|
181
182
|
* @returns {string}
|
|
182
183
|
*/
|
|
183
184
|
public encryptByPassword<T = any>(data: T, password: string): string {
|
|
184
|
-
const stringData: string = typeof data === 'string' ? data : this.JSON.stringify(data)
|
|
185
|
+
const stringData: string = typeof data === 'string' ? data : this.JSON.stringify(sortKeys(data, {deep: true}))
|
|
185
186
|
return AES.encrypt(stringData, password).toString()
|
|
186
187
|
}
|
|
187
188
|
|