chore: seperate util

This commit is contained in:
H01001000
2022-12-01 11:26:55 +08:00
parent 735d5d498b
commit 1625a9b60c
21 changed files with 114 additions and 10 deletions

View File

@@ -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}\""

View File

@@ -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"

31
packages/utils/.swcrc Normal file
View File

@@ -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"
}

View File

@@ -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"
}
}

View File

@@ -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.

View File

@@ -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])

View File

@@ -0,0 +1,16 @@
{
"extends": "tsconfig/base.json",
"compilerOptions": {
"outDir": "./dist",
},
"include": [
"./src/**/*.ts",
"./src/**/*.tsx"
],
"exclude": [
"node_modules",
"dist",
"test",
"tests"
]
}

View File

@@ -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
}
}
}
}