UNPKG

2.65 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5var __importStar = (this && this.__importStar) || function (mod) {
6 if (mod && mod.__esModule) return mod;
7 var result = {};
8 if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
9 result["default"] = mod;
10 return result;
11};
12Object.defineProperty(exports, "__esModule", { value: true });
13const biguint_format_1 = __importDefault(require("biguint-format"));
14const crypto_1 = __importDefault(require("crypto"));
15const flake_idgen_1 = __importDefault(require("flake-idgen"));
16const winston = __importStar(require("winston"));
17const flaker = new flake_idgen_1.default({ id: Number.parseInt(process.env.SERVER_ID) || 0, epoch: 1514764800000 });
18var Security;
19(function (Security) {
20 /**
21 * Creates a unique snowflake
22 */
23 function snowflake() {
24 return new Promise((resolve, reject) => {
25 flaker.next((err, id) => {
26 err ? reject(err) : resolve(biguint_format_1.default(id, 'dec'));
27 });
28 });
29 }
30 Security.snowflake = snowflake;
31 /**
32 * Creates a secure random string of a given length
33 * @param length the length
34 */
35 function random(length) {
36 return new Promise((resolve, reject) => {
37 crypto_1.default.randomBytes(length / 2, function (err, buffer) {
38 err ? reject(err) : resolve(buffer.toString("hex"));
39 });
40 });
41 }
42 Security.random = random;
43})(Security = exports.Security || (exports.Security = {}));
44var Miscellaneous;
45(function (Miscellaneous) {
46 /**
47 * Returns an object with a promise and a callback
48 */
49 function callbackPromise() {
50 let struct = {};
51 struct.promise = new Promise((resolve) => struct.cb = resolve);
52 return struct;
53 }
54 Miscellaneous.callbackPromise = callbackPromise;
55 function sortNumbersInObject(obj) {
56 const sortable = [];
57 for (let key in obj) {
58 sortable.push([key, obj[key]]);
59 }
60 sortable.sort((a, b) => a[1] - b[1]);
61 return sortable;
62 }
63 Miscellaneous.sortNumbersInObject = sortNumbersInObject;
64})(Miscellaneous = exports.Miscellaneous || (exports.Miscellaneous = {}));
65exports.Logger = new winston.Logger({
66 transports: [
67 new winston.transports.Console({
68 level: "debug",
69 handleExceptions: false,
70 json: false,
71 colorize: true,
72 }),
73 ],
74 exitOnError: false,
75});
76//# sourceMappingURL=util.js.map
\No newline at end of file