From e1032588c52d460fe3870b1b2f00560e280408bb Mon Sep 17 00:00:00 2001 From: tycrek Date: Tue, 7 Sep 2021 20:50:32 -0600 Subject: [PATCH] migrated generators to TS!! --- package-lock.json | 52 ++++++++++++++++++++++--- package.json | 4 +- src/generators/{gfycat.js => gfycat.ts} | 8 ++-- src/generators/lengthGen.js | 2 - src/generators/lengthGen.ts | 2 + src/generators/random.js | 2 - src/generators/random.ts | 2 + src/generators/{token.js => token.ts} | 4 +- src/generators/{zws.js => zws.ts} | 2 +- tsconfig.json | 8 ++-- 10 files changed, 65 insertions(+), 21 deletions(-) rename src/generators/{gfycat.js => gfycat.ts} (75%) delete mode 100644 src/generators/lengthGen.js create mode 100644 src/generators/lengthGen.ts delete mode 100644 src/generators/random.js create mode 100644 src/generators/random.ts rename src/generators/{token.js => token.ts} (90%) rename src/generators/{zws.js => zws.ts} (54%) diff --git a/package-lock.json b/package-lock.json index df3988e..48a033a 100755 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,8 @@ "@tycrek/express-nofavicon": "^1.0.2", "@tycrek/isprod": "^2.0.2", "@tycrek/log": ">=0.5.x", + "@types/fs-extra": "^9.0.12", + "@types/node": "^14.17.15", "@types/ws": "^7.4.7", "any-shell-escape": "^0.1.1", "aws-sdk": "^2.930.0", @@ -722,10 +724,18 @@ "url": "https://patreon.com/tycrek" } }, + "node_modules/@types/fs-extra": { + "version": "9.0.12", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.12.tgz", + "integrity": "sha512-I+bsBr67CurCGnSenZZ7v94gd3tc3+Aj2taxMT4yu4ABLuOgOjeFxX3dokG24ztSRg5tnT00sL8BszO7gSMoIw==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + "version": "14.17.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.15.tgz", + "integrity": "sha512-D1sdW0EcSCmNdLKBGMYb38YsHUS6JcM7yQ6sLQ9KuZ35ck7LYCKE7kYFHOO59ayFOY3zobWVZxf4KXhYHcHYFA==" }, "node_modules/@types/ws": { "version": "7.4.7", @@ -2260,6 +2270,11 @@ "@types/node": "^10.0.3" } }, + "node_modules/http-response-object/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, "node_modules/https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -2900,6 +2915,11 @@ "url": "^0.11.0" } }, + "node_modules/node-vibrant/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, "node_modules/node-vibrant/node_modules/url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -5085,10 +5105,18 @@ "use-climate-change-reminder": "^0.0.7" } }, + "@types/fs-extra": { + "version": "9.0.12", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.12.tgz", + "integrity": "sha512-I+bsBr67CurCGnSenZZ7v94gd3tc3+Aj2taxMT4yu4ABLuOgOjeFxX3dokG24ztSRg5tnT00sL8BszO7gSMoIw==", + "requires": { + "@types/node": "*" + } + }, "@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + "version": "14.17.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.15.tgz", + "integrity": "sha512-D1sdW0EcSCmNdLKBGMYb38YsHUS6JcM7yQ6sLQ9KuZ35ck7LYCKE7kYFHOO59ayFOY3zobWVZxf4KXhYHcHYFA==" }, "@types/ws": { "version": "7.4.7", @@ -6310,6 +6338,13 @@ "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", "requires": { "@types/node": "^10.0.3" + }, + "dependencies": { + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + } } }, "https-proxy-agent": { @@ -6805,6 +6840,11 @@ "url": "^0.11.0" }, "dependencies": { + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", diff --git a/package.json b/package.json index 5717fc3..0acb411 100755 --- a/package.json +++ b/package.json @@ -41,6 +41,8 @@ "@tycrek/express-nofavicon": "^1.0.2", "@tycrek/isprod": "^2.0.2", "@tycrek/log": ">=0.5.x", + "@types/fs-extra": "^9.0.12", + "@types/node": "^14.17.15", "@types/ws": "^7.4.7", "any-shell-escape": "^0.1.1", "aws-sdk": "^2.930.0", @@ -67,4 +69,4 @@ "ts": "^0.2.2", "uuid": "^8.3.2" } -} +} \ No newline at end of file diff --git a/src/generators/gfycat.js b/src/generators/gfycat.ts similarity index 75% rename from src/generators/gfycat.js rename to src/generators/gfycat.ts index a7f418d..a9caf2a 100644 --- a/src/generators/gfycat.js +++ b/src/generators/gfycat.ts @@ -1,10 +1,10 @@ -const fs = require('fs-extra'); +import fs from 'fs-extra'; // Don't trigger circular dependency during setup -if (!require.main.filename.includes('setup.js')) +if (require !== undefined && !require?.main?.filename.includes('setup.js')) var MIN_LENGTH = require('../setup').gfyIdSize; // skipcq: JS-0239, JS-0102 -function getWord(list, delim = '') { +function getWord(list: string[], delim = '') { return list[Math.floor(Math.random() * list.length)].concat(delim); } @@ -20,4 +20,4 @@ function genString(count = MIN_LENGTH) { return gfycat.concat(getWord(animals)); }; -module.exports = ({ gfyLength }) => genString(gfyLength); +module.exports = ({ gfyLength }: { gfyLength: number }) => genString(gfyLength); diff --git a/src/generators/lengthGen.js b/src/generators/lengthGen.js deleted file mode 100644 index 825ae93..0000000 --- a/src/generators/lengthGen.js +++ /dev/null @@ -1,2 +0,0 @@ -const { randomBytes } = require('crypto'); -module.exports = (length, charset) => [...randomBytes(length)].map((byte) => charset[Number(byte) % charset.length]).join('').slice(1).concat(charset[0]); \ No newline at end of file diff --git a/src/generators/lengthGen.ts b/src/generators/lengthGen.ts new file mode 100644 index 0000000..54a5797 --- /dev/null +++ b/src/generators/lengthGen.ts @@ -0,0 +1,2 @@ +import { randomBytes } from 'crypto'; +module.exports = (length: number, charset: string[]): string => [...randomBytes(length)].map((byte) => charset[Number(byte) % charset.length]).join('').slice(1).concat(charset[0]); \ No newline at end of file diff --git a/src/generators/random.js b/src/generators/random.js deleted file mode 100644 index 398919b..0000000 --- a/src/generators/random.js +++ /dev/null @@ -1,2 +0,0 @@ -const cryptoRandomString = require('crypto-random-string'); -module.exports = ({ length }) => cryptoRandomString({ length, type: 'alphanumeric' }); diff --git a/src/generators/random.ts b/src/generators/random.ts new file mode 100644 index 0000000..9d32ffd --- /dev/null +++ b/src/generators/random.ts @@ -0,0 +1,2 @@ +import cryptoRandomString from 'crypto-random-string'; +module.exports = ({ length }: { length: number }) => cryptoRandomString({ length, type: 'alphanumeric' }); diff --git a/src/generators/token.js b/src/generators/token.ts similarity index 90% rename from src/generators/token.js rename to src/generators/token.ts index 5581844..8b8bd2b 100644 --- a/src/generators/token.js +++ b/src/generators/token.ts @@ -1,5 +1,5 @@ const uuid = require('uuid').v4; -const fs = require('fs-extra'); +import fs from 'fs-extra'; const path = require('path'); const randomGen = require('./random'); const TLog = require('@tycrek/log'); @@ -20,7 +20,7 @@ if (require.main === module) { // Generate the user const username = process.argv[2] ? process.argv[2].replace(/[^\da-z_]/gi, '').substring(0, MAX_USERNAME) : randomGen({ length: 20 }); // skipcq: JS-0074 if (!auth.users) auth.users = {}; - if (Object.values(auth.users).findIndex((user) => user.username === username) !== -1) { + if (Object.values(auth.users).findIndex((user: any) => user.username === username) !== -1) { log.error('Username already exists', username); process.exit(1); } diff --git a/src/generators/zws.js b/src/generators/zws.ts similarity index 54% rename from src/generators/zws.js rename to src/generators/zws.ts index 77d5a28..a64cf28 100644 --- a/src/generators/zws.js +++ b/src/generators/zws.ts @@ -1,3 +1,3 @@ const lengthGen = require('./lengthGen'); const zeroWidthChars = ['\u200B', '\u200C', '\u200D', '\u2060']; -module.exports = ({ length }) => lengthGen(length, zeroWidthChars); +module.exports = ({ length }: { length: number }) => lengthGen(length, zeroWidthChars); diff --git a/tsconfig.json b/tsconfig.json index 62b2949..5f09385 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,14 +1,16 @@ { "extends": "@tsconfig/node14/tsconfig.json", "compilerOptions": { - "allowJs": true, "lib": [ "ES2020", "DOM" - ] + ], + "allowJs": true, + "downlevelIteration": true }, "include": [ - "src/**/*.js" + "src/**/*.js", + "src/**/*.ts" ], "exclude": [ "ass-x"