@orion-js/helpers 2.0.1 → 3.0.0-alpha.9
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/lib/createMap.d.ts +5 -0
- package/lib/createMap.js +9 -15
- package/lib/createMapArray.d.ts +5 -0
- package/lib/createMapArray.js +10 -16
- package/lib/generateId.d.ts +6 -0
- package/lib/generateId.js +43 -47
- package/lib/generateId.test.d.ts +1 -0
- package/lib/generateId.test.js +9 -10
- package/lib/hashObject.d.ts +1 -0
- package/lib/hashObject.js +9 -13
- package/lib/hashObject.test.d.ts +1 -0
- package/lib/hashObject.test.js +26 -26
- package/lib/index.d.ts +5 -0
- package/lib/index.js +13 -38
- package/lib/sleep.d.ts +5 -0
- package/lib/sleep.js +7 -9
- package/package.json +8 -14
- package/tsconfig.json +16 -0
package/lib/createMap.js
CHANGED
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
for (const item of array) {
|
|
12
|
-
map[item[key]] = item;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
return map;
|
|
16
|
-
}
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function createMap(array, key = '_id') {
|
|
4
|
+
const map = {};
|
|
5
|
+
for (const item of array) {
|
|
6
|
+
map[item[key]] = item;
|
|
7
|
+
}
|
|
8
|
+
return map;
|
|
9
|
+
}
|
|
10
|
+
exports.default = createMap;
|
package/lib/createMapArray.js
CHANGED
|
@@ -1,17 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
map[item[key]] = map[item[key]] || [];
|
|
13
|
-
map[item[key]].push(item);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return map;
|
|
17
|
-
}
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function createMapArray(array, key = '_id') {
|
|
4
|
+
const map = {};
|
|
5
|
+
for (const item of array) {
|
|
6
|
+
map[item[key]] = map[item[key]] || [];
|
|
7
|
+
map[item[key]].push(item);
|
|
8
|
+
}
|
|
9
|
+
return map;
|
|
10
|
+
}
|
|
11
|
+
exports.default = createMapArray;
|
package/lib/generateId.js
CHANGED
|
@@ -1,58 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
|
|
7
|
-
});
|
|
8
|
-
exports.default = generateId;
|
|
9
|
-
|
|
10
|
-
var _crypto = _interopRequireDefault(require("crypto"));
|
|
11
|
-
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
12
7
|
const UNMISTAKABLE_CHARS = '23456789ABCDEFGHJKLMNPQRSTWXYZabcdefghjkmnopqrstuvwxyz';
|
|
13
|
-
|
|
14
8
|
const hexString = function (digits) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
9
|
+
var numBytes = Math.ceil(digits / 2);
|
|
10
|
+
var bytes;
|
|
11
|
+
// Try to get cryptographically strong randomness. Fall back to
|
|
12
|
+
// non-cryptographically strong if not available.
|
|
13
|
+
try {
|
|
14
|
+
bytes = crypto_1.default.randomBytes(numBytes);
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
// XXX should re-throw any error except insufficient entropy
|
|
18
|
+
bytes = crypto_1.default.pseudoRandomBytes(numBytes);
|
|
19
|
+
}
|
|
20
|
+
var result = bytes.toString('hex');
|
|
21
|
+
// If the number of digits is odd, we'll have generated an extra 4 bits
|
|
22
|
+
// of randomness, so we need to trim the last digit.
|
|
23
|
+
return result.substring(0, digits);
|
|
30
24
|
};
|
|
31
|
-
|
|
32
25
|
const fraction = function () {
|
|
33
|
-
|
|
34
|
-
|
|
26
|
+
var numerator = parseInt(hexString(8), 16);
|
|
27
|
+
return numerator * 2.3283064365386963e-10; // 2^-32
|
|
35
28
|
};
|
|
36
|
-
|
|
37
29
|
const choice = function (arrayOrString) {
|
|
38
|
-
|
|
39
|
-
|
|
30
|
+
var index = Math.floor(fraction() * arrayOrString.length);
|
|
31
|
+
if (typeof arrayOrString === 'string')
|
|
32
|
+
return arrayOrString.substr(index, 1);
|
|
33
|
+
else
|
|
34
|
+
return arrayOrString[index];
|
|
40
35
|
};
|
|
41
|
-
|
|
42
36
|
const randomString = function (charsCount, alphabet) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return digits.join('');
|
|
37
|
+
var digits = [];
|
|
38
|
+
for (var i = 0; i < charsCount; i++) {
|
|
39
|
+
digits[i] = choice(alphabet);
|
|
40
|
+
}
|
|
41
|
+
return digits.join('');
|
|
50
42
|
};
|
|
51
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Returns a random ID
|
|
45
|
+
* @param charsCount length of the ID
|
|
46
|
+
* @param chars characters used to generate the ID
|
|
47
|
+
*/
|
|
52
48
|
function generateId(charsCount, chars = UNMISTAKABLE_CHARS) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
49
|
+
if (!charsCount) {
|
|
50
|
+
charsCount = 17;
|
|
51
|
+
}
|
|
52
|
+
return randomString(charsCount, chars);
|
|
53
|
+
}
|
|
54
|
+
exports.default = generateId;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/generateId.test.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const generateId_1 = __importDefault(require("./generateId"));
|
|
7
|
+
const isString_1 = __importDefault(require("lodash/isString"));
|
|
9
8
|
it('should generate random ids', async () => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
});
|
|
9
|
+
expect((0, generateId_1.default)()).not.toBe((0, generateId_1.default)());
|
|
10
|
+
expect((0, isString_1.default)((0, generateId_1.default)())).toBe(true);
|
|
11
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function (object: any): string;
|
package/lib/hashObject.js
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
function _default(object) {
|
|
13
|
-
return (0, _objectHash.default)(object);
|
|
14
|
-
}
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const object_hash_1 = __importDefault(require("object-hash"));
|
|
7
|
+
function default_1(object) {
|
|
8
|
+
return (0, object_hash_1.default)(object);
|
|
9
|
+
}
|
|
10
|
+
exports.default = default_1;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/hashObject.test.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const hashObject_1 = __importDefault(require("./hashObject"));
|
|
7
7
|
it('should create a string hash of an object', async () => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
const object = {
|
|
9
|
+
hello: 'world',
|
|
10
|
+
date: new Date(),
|
|
11
|
+
subObject: {
|
|
12
|
+
name: 'Nicolás'
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const hash = (0, hashObject_1.default)(object);
|
|
16
|
+
expect(typeof hash).toBe('string');
|
|
17
17
|
});
|
|
18
18
|
it('object with different key orders should return same hash', async () => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
});
|
|
19
|
+
const object1 = {
|
|
20
|
+
one: '1',
|
|
21
|
+
two: '2'
|
|
22
|
+
};
|
|
23
|
+
const object2 = {
|
|
24
|
+
two: '2',
|
|
25
|
+
one: '1'
|
|
26
|
+
};
|
|
27
|
+
const hash1 = (0, hashObject_1.default)(object1);
|
|
28
|
+
const hash2 = (0, hashObject_1.default)(object2);
|
|
29
|
+
expect(hash1).toBe(hash2);
|
|
30
|
+
});
|
package/lib/index.d.ts
ADDED
package/lib/index.js
CHANGED
|
@@ -1,39 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
enumerable: true,
|
|
16
|
-
get: function () {
|
|
17
|
-
return _hashObject.default;
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
Object.defineProperty(exports, "generateId", {
|
|
21
|
-
enumerable: true,
|
|
22
|
-
get: function () {
|
|
23
|
-
return _generateId.default;
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
Object.defineProperty(exports, "createMap", {
|
|
27
|
-
enumerable: true,
|
|
28
|
-
get: function () {
|
|
29
|
-
return _createMap.default;
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
var _sleep = _interopRequireDefault(require("./sleep"));
|
|
34
|
-
|
|
35
|
-
var _hashObject = _interopRequireDefault(require("./hashObject"));
|
|
36
|
-
|
|
37
|
-
var _generateId = _interopRequireDefault(require("./generateId"));
|
|
38
|
-
|
|
39
|
-
var _createMap = _interopRequireDefault(require("./createMap"));
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.sleep = exports.hashObject = exports.generateId = exports.createMap = void 0;
|
|
7
|
+
const sleep_1 = __importDefault(require("./sleep"));
|
|
8
|
+
exports.sleep = sleep_1.default;
|
|
9
|
+
const hashObject_1 = __importDefault(require("./hashObject"));
|
|
10
|
+
exports.hashObject = hashObject_1.default;
|
|
11
|
+
const generateId_1 = __importDefault(require("./generateId"));
|
|
12
|
+
exports.generateId = generateId_1.default;
|
|
13
|
+
const createMap_1 = __importDefault(require("./createMap"));
|
|
14
|
+
exports.createMap = createMap_1.default;
|
package/lib/sleep.d.ts
ADDED
package/lib/sleep.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.default =
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
exports.default = _default;
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Creates a timeout with a promise
|
|
5
|
+
*/
|
|
6
|
+
exports.default = (time) => {
|
|
7
|
+
return new Promise(resolve => setTimeout(resolve, time));
|
|
8
|
+
};
|
package/package.json
CHANGED
|
@@ -1,30 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orion-js/helpers",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0-alpha.9",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"author": "nicolaslopezj",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"scripts": {
|
|
8
|
-
"
|
|
8
|
+
"test": "exit 0",
|
|
9
9
|
"prepare": "yarn run build",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"test:watch": "jest src --coverage --watch"
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"watch": "tsc -w"
|
|
13
12
|
},
|
|
14
13
|
"dependencies": {
|
|
15
|
-
"
|
|
16
|
-
"object-hash": "^2.1.1",
|
|
17
|
-
"serialize-javascript": "^5.0.1"
|
|
14
|
+
"object-hash": "^2.1.1"
|
|
18
15
|
},
|
|
19
16
|
"devDependencies": {
|
|
20
|
-
"@
|
|
21
|
-
"
|
|
22
|
-
"@babel/plugin-transform-runtime": "^7.5.5",
|
|
23
|
-
"@babel/preset-env": "^7.5.5",
|
|
24
|
-
"@babel/runtime": "^7.5.5"
|
|
17
|
+
"@types/jest": "^27.0.2",
|
|
18
|
+
"typescript": "^4.4.4"
|
|
25
19
|
},
|
|
26
20
|
"publishConfig": {
|
|
27
21
|
"access": "public"
|
|
28
22
|
},
|
|
29
|
-
"gitHead": "
|
|
23
|
+
"gitHead": "33761827112df20d8b86097448d9a1e23f020e3b"
|
|
30
24
|
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"strict": false,
|
|
4
|
+
"outDir": "./lib",
|
|
5
|
+
"rootDir": "./src",
|
|
6
|
+
"module": "commonjs",
|
|
7
|
+
"target": "es2020",
|
|
8
|
+
"moduleResolution": "node",
|
|
9
|
+
"lib": ["es2020"],
|
|
10
|
+
"declaration": true,
|
|
11
|
+
|
|
12
|
+
"esModuleInterop": true,
|
|
13
|
+
"skipLibCheck": true,
|
|
14
|
+
"forceConsistentCasingInFileNames": true
|
|
15
|
+
}
|
|
16
|
+
}
|