diff --git a/package.json b/package.json index 03e38b1fe..bec6e3720 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,9 @@ ], "scripts": { "build": "turbo run build", + "fmt": "turbo run fmt", + "build-types": "turbo run fmt", + "release-build": "turbo run release-build", "dev": "turbo run dev --parallel", "lint": "turbo run lint", "format": "prettier --write \"**/*.{ts,tsx,md}\"" diff --git a/packages/rest/package.json b/packages/rest/package.json index 43354ee48..857b523f0 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -20,7 +20,8 @@ "eslint-config-discordeno": "*", "tsconfig": "*", "typescript": "^4.5.2", - "@discordeno/types": "18.0.0-alpha.1" + "@discordeno/types": "18.0.0-alpha.1", + "@discordeno/utils": "18.0.0-alpha.1" }, "dependencies": { "@types/node": "^18.11.9" diff --git a/packages/utils/.swcrc b/packages/utils/.swcrc new file mode 100644 index 000000000..5ae43bb99 --- /dev/null +++ b/packages/utils/.swcrc @@ -0,0 +1,31 @@ +{ + "minify": true, + "jsc": { + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "legacyDecorator": true, + "decoratorMetadata": true + }, + "target": "es2022", + "keepClassNames": true, + "loose": true, + "minify": { + "compress": { + "unused": true + }, + "mangle": true + } + }, + "module": { + "type": "es6", + "strict": false, + "strictMode": true, + "lazy": false, + "noInterop": false + }, + "sourceMaps": "inline" +} \ No newline at end of file diff --git a/packages/utils/package.json b/packages/utils/package.json new file mode 100644 index 000000000..a57d11a48 --- /dev/null +++ b/packages/utils/package.json @@ -0,0 +1,28 @@ +{ + "name": "@discordeno/utils", + "version": "18.0.0-alpha.1", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "type": "module", + "license": "Apache-2.0", + "scripts": { + "build": "swc src --out-dir dist", + "build-types": "tsc --declaration --emitDeclarationOnly --declarationDir dist", + "release-build": "yarn build && yarn build-types", + "fmt": "prettier -w ./src", + "lint": "eslint \"src/**/*.ts*\"", + "test-types": "tsc --noEmit" + }, + "devDependencies": { + "@swc/cli": "^0.1.57", + "@swc/core": "^1.3.21", + "eslint": "^8.0.1", + "eslint-config-discordeno": "*", + "tsconfig": "*", + "@discordeno/types": "18.0.0-alpha.1", + "typescript": "^4.5.2" + }, + "dependencies": { + "@types/node": "^18.11.9" + } +} \ No newline at end of file diff --git a/packages/bot/src/util/base64.ts b/packages/utils/src/base64.ts similarity index 100% rename from packages/bot/src/util/base64.ts rename to packages/utils/src/base64.ts diff --git a/packages/bot/src/util/bigint.ts b/packages/utils/src/bigint.ts similarity index 100% rename from packages/bot/src/util/bigint.ts rename to packages/utils/src/bigint.ts diff --git a/packages/bot/src/util/bucket.ts b/packages/utils/src/bucket.ts similarity index 97% rename from packages/bot/src/util/bucket.ts rename to packages/utils/src/bucket.ts index 9024db7b8..a71a66cc6 100644 --- a/packages/bot/src/util/bucket.ts +++ b/packages/utils/src/bucket.ts @@ -1,4 +1,4 @@ -import { PickPartial } from '../types/shared.js' +import { PickPartial } from '@discordeno/types' import { delay } from './utils.js' /** A Leaky Bucket. @@ -165,7 +165,7 @@ async function acquire (bucket: LeakyBucket, amount: number, highPriority = fals // In order to not subtract too much from the tokens, // calculate what is actually needed to subtract. - const toSubtract = (amount % bucket.refillAmount) || amount + const toSubtract = amount % bucket.refillAmount ?? amount bucket.tokensState -= toSubtract // Allow the next acquire to happen. diff --git a/packages/bot/src/util/calculateShardId.ts b/packages/utils/src/calculateShardId.ts similarity index 100% rename from packages/bot/src/util/calculateShardId.ts rename to packages/utils/src/calculateShardId.ts diff --git a/packages/bot/src/util/collection.ts b/packages/utils/src/collection.ts similarity index 100% rename from packages/bot/src/util/collection.ts rename to packages/utils/src/collection.ts diff --git a/packages/bot/src/util/constants.ts b/packages/utils/src/constants.ts similarity index 100% rename from packages/bot/src/util/constants.ts rename to packages/utils/src/constants.ts diff --git a/packages/bot/src/util/hash.ts b/packages/utils/src/hash.ts similarity index 100% rename from packages/bot/src/util/hash.ts rename to packages/utils/src/hash.ts diff --git a/packages/bot/src/util/mod.ts b/packages/utils/src/index.ts similarity index 100% rename from packages/bot/src/util/mod.ts rename to packages/utils/src/index.ts diff --git a/packages/bot/src/util/permissions.ts b/packages/utils/src/permissions.ts similarity index 76% rename from packages/bot/src/util/permissions.ts rename to packages/utils/src/permissions.ts index 8e8863091..eda151860 100644 --- a/packages/bot/src/util/permissions.ts +++ b/packages/utils/src/permissions.ts @@ -1,17 +1,17 @@ -import { BitwisePermissionFlags, PermissionStrings } from '../types/shared.js' +import { BitwisePermissionFlags, PermissionStrings } from '@discordeno/types' /** This function converts a bitwise string to permission strings */ -export function calculatePermissions (permissionBits: bigint) { +export function calculatePermissions (permissionBits: bigint): PermissionStrings[] { return Object.keys(BitwisePermissionFlags).filter((permission) => { // Since Object.keys() not only returns the permission names but also the bit values we need to return false if it is a Number - if (Number(permission)) return false + if (typeof permission === 'number') return false // Check if permissionBits has this permission return permissionBits & BigInt(BitwisePermissionFlags[permission as PermissionStrings]) }) as PermissionStrings[] } /** This function converts an array of permissions into the bitwise string. */ -export function calculateBits (permissions: PermissionStrings[]) { +export function calculateBits (permissions: PermissionStrings[]): string { return permissions .reduce((bits, perm) => { bits |= BigInt(BitwisePermissionFlags[perm]) diff --git a/packages/bot/src/util/routes.ts b/packages/utils/src/routes.ts similarity index 100% rename from packages/bot/src/util/routes.ts rename to packages/utils/src/routes.ts diff --git a/packages/bot/src/util/token.ts b/packages/utils/src/token.ts similarity index 100% rename from packages/bot/src/util/token.ts rename to packages/utils/src/token.ts diff --git a/packages/bot/src/util/urlToBase64.ts b/packages/utils/src/urlToBase64.ts similarity index 100% rename from packages/bot/src/util/urlToBase64.ts rename to packages/utils/src/urlToBase64.ts diff --git a/packages/bot/src/util/utils.ts b/packages/utils/src/utils.ts similarity index 100% rename from packages/bot/src/util/utils.ts rename to packages/utils/src/utils.ts diff --git a/packages/bot/src/util/validateLength.ts b/packages/utils/src/validateLength.ts similarity index 100% rename from packages/bot/src/util/validateLength.ts rename to packages/utils/src/validateLength.ts diff --git a/packages/bot/src/util/verifySignature.ts b/packages/utils/src/verifySignature.ts similarity index 100% rename from packages/bot/src/util/verifySignature.ts rename to packages/utils/src/verifySignature.ts diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json new file mode 100644 index 000000000..50e6ef6eb --- /dev/null +++ b/packages/utils/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "tsconfig/base.json", + "compilerOptions": { + "outDir": "./dist", + }, + "include": [ + "./src/**/*.ts", + "./src/**/*.tsx" + ], + "exclude": [ + "node_modules", + "dist", + "test", + "tests" + ] +} \ No newline at end of file diff --git a/turbo.json b/turbo.json index 0c90c3d7b..aee1e1f60 100644 --- a/turbo.json +++ b/turbo.json @@ -2,14 +2,39 @@ "$schema": "https://turbo.build/schema.json", "pipeline": { "build": { - "dependsOn": ["^build"], - "outputs": ["dist/**", ".next/**"] + "dependsOn": [ + "^build" + ], + "outputs": [ + "dist/**/*.js" + ] + }, + "build-types": { + "dependsOn": [ + "^build" + ], + "outputs": [ + "dist/**/d.ts", + "dist/**/d.ts.map" + ] + }, + "release-build": { + "dependsOn": [ + "^build", + "^build-types" + ], + "outputs": [ + "dist/**" + ] }, "lint": { "outputs": [] }, + "fmt": { + "outputs": [] + }, "dev": { "cache": false } } -} +} \ No newline at end of file