diff --git a/.github/workflows/package-test.yml b/.github/workflows/package-test.yml index 558db2368..e01dca7da 100644 --- a/.github/workflows/package-test.yml +++ b/.github/workflows/package-test.yml @@ -45,3 +45,40 @@ jobs: with: files: ./packages/${{ inputs.package }}/coverage/lcov.info flags: ${{ inputs.package }}-unit + + deno-unit-test: + name: Deno Unit Test + runs-on: ubuntu-latest + needs: unit-test + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18 + - uses: denoland/setup-deno@main + with: + deno-version: "v1.29" + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT + - uses: actions/cache@v3 + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - run: yarn install --immutable + - name: Turbo Cache + id: turbo-cache + uses: actions/cache@v3 + with: + path: .turbo + key: ${{ runner.os }}-turbo-test:deno-unit-${{ inputs.package }}-${{ github.sha }} + - name: Build dist cache + if: steps.turbo-cache.outputs.cache-hit != 'true' + uses: actions/cache@v3 + with: + path: .turbo + key: ${{ runner.os }}-turbo-build-${{ github.sha }} + - name: Deno Unit Test + run: yarn test:deno-unit --cache-dir=".turbo" --filter=./packages/${{ inputs.package }} diff --git a/.gitignore b/.gitignore index 66104787e..49cce95c3 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ coverage # build dist +denoTestsDist out build .docusaurus diff --git a/denoImportMap.json b/denoImportMap.json new file mode 100644 index 000000000..effbc3241 --- /dev/null +++ b/denoImportMap.json @@ -0,0 +1,13 @@ +{ + "imports": { + "node:buffer": "https://deno.land/std@0.168.0/node/buffer.ts", + "node:fs": "https://deno.land/std@0.168.0/node/fs.ts", + "tweetnacl": "npm:tweetnacl", + "mocha": "https://deno.land/std@0.168.0/testing/bdd.ts", + "chai": "https://cdn.skypack.dev/chai@4.3.4?dts", + "sinon": "https://cdn.skypack.dev/sinon@15.0.0?dts", + "@discordeno/utils": "./packages/utils/dist/index.js", + "@discordeno/constant": "./packages/constant/dist/index.js", + "@discordeno/types": "./packages/types/dist/index.js" + } +} \ No newline at end of file diff --git a/examples/bigbot/package.json b/examples/bigbot/package.json index c7099a442..4ef9dd4d3 100644 --- a/examples/bigbot/package.json +++ b/examples/bigbot/package.json @@ -10,7 +10,7 @@ "devr": "nodemon --ignore ./src/bot/**/* --ignore ./src/gateway/**/* --ignore ./dist/**/* -e ts dist/rest/index.js", "devb": "nodemon --ignore ./src/rest/**/* --ignore ./src/gateway/**/* --ignore ./dist/**/* -e ts dist/bot/index.js", "type": "tsc --noEmit", - "build": "swc src --out-dir dist", + "build": "swc --delete-dir-on-start src --out-dir dist", "startr": "node dist/rest/index.js", "startg": "node dist/gateway/index.js", "startb": "node dist/bot/index.js" diff --git a/package.json b/package.json index d477625df..657ffcde2 100644 --- a/package.json +++ b/package.json @@ -11,12 +11,12 @@ "fmt": "turbo run fmt", "build:type": "turbo run build:type", "release-build": "turbo run release-build", - "release-build:clean": "turbo run release-build:clean", "dev": "turbo run dev --parallel", "lint": "turbo run lint", "test:type": "turbo run build:type", "test:unit-coverage": "turbo run test:unit-coverage", "test:unit": "turbo run test:unit", + "test:deno-unit": "turbo run test:deno-unit", "test:test-type": "turbo run test:test-type", "format": "prettier --write \"**/*.{ts,tsx,md}\"", "prepare": "husky install", diff --git a/packages/client/package.json b/packages/client/package.json index 90e1a9605..7538251aa 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -10,14 +10,14 @@ "url": "https://github.com/discordeno/discordeno.git" }, "scripts": { - "build": "swc src --out-dir dist", + "build": "swc --delete-dir-on-start src --out-dir dist", "build:type": "tsc --declaration --emitDeclarationOnly --declarationDir dist", "release-build": "yarn build && yarn build:type", - "release-build:clean": "shx rm -rf dist && yarn build && yarn build:type", "fmt": "eslint --fix \"src/**/*.ts*\"", "lint": "eslint \"src/**/*.ts*\"", "test:unit-coverage": "c8 mocha --no-warnings 'tests/**/*.spec.ts'", "test:unit": "c8 --r lcov mocha --no-warnings 'tests/**/*.spec.ts' && node ../../scripts/coveragePathFixing.js client", + "test:deno-unit": "swc tests --delete-dir-on-start --out-dir denoTestsDist && node ../../scripts/fixDenoTestExtension.js && deno test -A --import-map ../../denoImportMap.json denoTestsDist", "test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/**/*.spec.ts'", "test:type": "tsc --noEmit", "test:test-type": "tsc --project tsconfig.test.json" @@ -40,7 +40,6 @@ "eslint": "^8.0.1", "eslint-config-discordeno": "*", "mocha": "^10.1.0", - "shx": "^0.3.4", "sinon": "^15.0.0", "tsconfig": "*", "typescript": "^4.9.3" diff --git a/packages/client/tests/handlers.spec.ts b/packages/client/tests/handlers.spec.ts index 331b9f733..81b18f50b 100644 --- a/packages/client/tests/handlers.spec.ts +++ b/packages/client/tests/handlers.spec.ts @@ -1,4 +1,5 @@ import { expect } from 'chai' +import { describe, it } from 'mocha' import fs from 'node:fs' import { createClientGatewayHandlers, diff --git a/packages/client/tests/transformers.spec.ts b/packages/client/tests/transformers.spec.ts index 5e13aaab3..ac40eb444 100644 --- a/packages/client/tests/transformers.spec.ts +++ b/packages/client/tests/transformers.spec.ts @@ -2,6 +2,7 @@ import { expect } from 'chai' import fs from 'node:fs' import { createTransformers } from '../src/transformer.js' // import { createTransformers } from '../src/transformer.js' +import { describe, it } from 'mocha' import * as transformers from '../src/transformers/index.js' describe('Transformers', () => { diff --git a/packages/constant/package.json b/packages/constant/package.json index f43e8c16e..1ccbde8a2 100644 --- a/packages/constant/package.json +++ b/packages/constant/package.json @@ -10,14 +10,14 @@ "url": "https://github.com/discordeno/discordeno.git" }, "scripts": { - "build": "swc src --out-dir dist", + "build": "swc --delete-dir-on-start src --out-dir dist", "build:type": "tsc --declaration --emitDeclarationOnly --declarationDir dist", "release-build": "yarn build && yarn build:type", - "release-build:clean": "shx rm -rf dist && yarn build && yarn build:type", "fmt": "eslint --fix \"src/**/*.ts*\"", "lint": "eslint \"src/**/*.ts*\"", "test:unit-coverage": "c8 mocha --no-warnings 'tests/**/*.spec.ts'", "test:unit": "c8 --r lcov mocha --no-warnings 'tests/**/*.spec.ts'", + "test:deno-unit": "swc tests --delete-dir-on-start --out-dir denoTestsDist && node ../../scripts/fixDenoTestExtension.js && deno test -A --import-map ../../denoImportMap.json denoTestsDist", "test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/**/*.spec.ts'", "test:type": "tsc --noEmit", "test:test-type": "tsc --project tsconfig.test.json" @@ -38,7 +38,6 @@ "eslint": "^8.0.1", "eslint-config-discordeno": "*", "mocha": "^10.1.0", - "shx": "^0.3.4", "sinon": "^15.0.0", "tsconfig": "*", "typescript": "^4.9.3" diff --git a/packages/discordeno/package.json b/packages/discordeno/package.json index a6cda569c..5138c0aa2 100644 --- a/packages/discordeno/package.json +++ b/packages/discordeno/package.json @@ -10,14 +10,14 @@ "url": "https://github.com/discordeno/discordeno.git" }, "scripts": { - "build": "swc src --out-dir dist", + "build": "swc --delete-dir-on-start src --out-dir dist", "build:type": "tsc --declaration --emitDeclarationOnly --declarationDir dist", "release-build": "yarn build && yarn build:type", - "release-build:clean": "shx rm -rf dist && yarn build && yarn build:type", "fmt": "eslint --fix \"src/**/*.ts*\"", "lint": "eslint \"src/**/*.ts*\"", "test:unit-coverage": "c8 mocha --no-warnings 'tests/**/*.spec.ts'", "test:unit": "c8 --r lcov mocha --no-warnings 'tests/**/*.spec.ts' && node ../../scripts/coveragePathFixing.js discordeno", + "test:deno-unit": "swc tests --delete-dir-on-start --out-dir denoTestsDist && node ../../scripts/fixDenoTestExtension.js && deno test -A --import-map ../../denoImportMap.json denoTestsDist", "test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/**/*.spec.ts'", "test:type": "tsc --noEmit", "test:test-type": "tsc --project tsconfig.test.json" @@ -41,7 +41,6 @@ "eslint": "^8.0.1", "eslint-config-discordeno": "*", "mocha": "^10.1.0", - "shx": "^0.3.4", "sinon": "^15.0.0", "tsconfig": "*", "typescript": "^4.9.3" diff --git a/packages/embeds/package.json b/packages/embeds/package.json index f0fc63799..a6ae99c6f 100644 --- a/packages/embeds/package.json +++ b/packages/embeds/package.json @@ -21,7 +21,6 @@ "eslint": "^8.0.1", "eslint-config-discordeno": "*", "mocha": "^10.1.0", - "shx": "^0.3.4", "sinon": "^15.0.0", "tsconfig": "*", "typescript": "^4.9.3" diff --git a/packages/gateway/package.json b/packages/gateway/package.json index eb65389f7..6d2fee930 100644 --- a/packages/gateway/package.json +++ b/packages/gateway/package.json @@ -10,14 +10,14 @@ "url": "https://github.com/discordeno/discordeno.git" }, "scripts": { - "build": "swc src --out-dir dist", + "build": "swc --delete-dir-on-start src --out-dir dist", "build:type": "tsc --declaration --emitDeclarationOnly --declarationDir dist", "release-build": "yarn build && yarn build:type", - "release-build:clean": "shx rm -rf dist && yarn build && yarn build:type", "fmt": "eslint --fix \"src/**/*.ts*\"", "lint": "eslint \"src/**/*.ts*\"", "test:unit-coverage": "c8 mocha --no-warnings 'tests/**/*.spec.ts'", "test:unit": "c8 --r lcov mocha --no-warnings 'tests/**/*.spec.ts' && node ../../scripts/coveragePathFixing.js gateway", + "test:deno-unit": "swc tests --delete-dir-on-start --out-dir denoTestsDist && node ../../scripts/fixDenoTestExtension.js && deno test -A --import-map ../../denoImportMap.json denoTestsDist", "test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/**/*.spec.ts'", "test:type": "tsc --noEmit", "test:test-type": "tsc --project tsconfig.test.json" @@ -40,7 +40,6 @@ "eslint": "^8.0.1", "eslint-config-discordeno": "*", "mocha": "^10.1.0", - "shx": "^0.3.4", "sinon": "^15.0.0", "tsconfig": "*", "typescript": "^4.9.3" diff --git a/packages/logger/package.json b/packages/logger/package.json index d1e6f3e59..8b4956eca 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -10,10 +10,9 @@ "url": "https://github.com/discordeno/discordeno.git" }, "scripts": { - "build": "swc src --out-dir dist", + "build": "swc --delete-dir-on-start src --out-dir dist", "build:type": "tsc --declaration --emitDeclarationOnly --declarationDir dist", "release-build": "yarn build && yarn build:type", - "release-build:clean": "shx rm -rf dist && yarn build && yarn build:type", "fmt": "eslint --fix \"src/**/*.ts*\"", "lint": "eslint \"src/**/*.ts*\"", "test:type": "tsc --noEmit" @@ -24,7 +23,6 @@ "@types/node": "^18.11.9", "eslint": "^8.0.1", "eslint-config-discordeno": "*", - "shx": "^0.3.4", "sinon": "^15.0.0", "tsconfig": "*", "typescript": "^4.9.3" diff --git a/packages/plugins/cache/package.json b/packages/plugins/cache/package.json index ca1bd3d4c..e44520c16 100644 --- a/packages/plugins/cache/package.json +++ b/packages/plugins/cache/package.json @@ -10,14 +10,14 @@ "url": "https://github.com/discordeno/discordeno.git" }, "scripts": { - "build": "swc src --out-dir dist", + "build": "swc --delete-dir-on-start src --out-dir dist", "build:type": "tsc --declaration --emitDeclarationOnly --declarationDir dist", "release-build": "yarn build && yarn build:type", - "release-build:clean": "shx rm -rf dist && yarn build && yarn build:type", "fmt": "eslint --fix \"src/**/*.ts*\"", "lint": "eslint \"src/**/*.ts*\"", "test:unit-coverage": "c8 mocha --no-warnings 'tests/**/*.spec.ts'", "test:unit": "c8 --r lcov mocha --no-warnings 'tests/**/*.spec.ts'", + "test:deno-unit": "swc tests --delete-dir-on-start --out-dir denoTestsDist && node ../../scripts/fixDenoTestExtension.js && deno test -A --import-map ../../denoImportMap.json denoTestsDist", "test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/**/*.spec.ts'", "test:type": "tsc --noEmit", "test:test-type": "tsc --project tsconfig.test.json" @@ -36,7 +36,6 @@ "eslint": "^8.0.1", "eslint-config-discordeno": "*", "mocha": "^10.1.0", - "shx": "^0.3.4", "sinon": "^15.0.0", "tsconfig": "*", "typescript": "^4.9.3" diff --git a/packages/plugins/fileloader/package.json b/packages/plugins/fileloader/package.json index dc66a215d..eadb87665 100644 --- a/packages/plugins/fileloader/package.json +++ b/packages/plugins/fileloader/package.json @@ -10,14 +10,14 @@ "url": "https://github.com/discordeno/discordeno.git" }, "scripts": { - "build": "swc src --out-dir dist", + "build": "swc --delete-dir-on-start src --out-dir dist", "build:type": "tsc --declaration --emitDeclarationOnly --declarationDir dist", "release-build": "yarn build && yarn build:type", - "release-build:clean": "shx rm -rf dist && yarn build && yarn build:type", "fmt": "eslint --fix \"src/**/*.ts*\"", "lint": "eslint \"src/**/*.ts*\"", "test:unit-coverage": "c8 mocha --no-warnings 'tests/**/*.spec.ts'", "test:unit": "c8 --r lcov mocha --no-warnings 'tests/**/*.spec.ts'", + "test:deno-unit": "swc tests --delete-dir-on-start --out-dir denoTestsDist && node ../../scripts/fixDenoTestExtension.js && deno test -A --import-map ../../denoImportMap.json denoTestsDist", "test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/**/*.spec.ts'", "test:type": "tsc --noEmit", "test:test-type": "tsc --project tsconfig.test.json" diff --git a/packages/plugins/permissions/package.json b/packages/plugins/permissions/package.json index 81546e765..2d7e86f52 100644 --- a/packages/plugins/permissions/package.json +++ b/packages/plugins/permissions/package.json @@ -10,14 +10,14 @@ "url": "https://github.com/discordeno/discordeno.git" }, "scripts": { - "build": "swc src --out-dir dist", + "build": "swc --delete-dir-on-start src --out-dir dist", "build:type": "tsc --declaration --emitDeclarationOnly --declarationDir dist", "release-build": "yarn build && yarn build:type", - "release-build:clean": "shx rm -rf dist && yarn build && yarn build:type", "fmt": "eslint --fix \"src/**/*.ts*\"", "lint": "eslint \"src/**/*.ts*\"", "test:unit-coverage": "c8 mocha --no-warnings 'tests/**/*.spec.ts'", "test:unit": "c8 --r lcov mocha --no-warnings 'tests/**/*.spec.ts'", + "test:deno-unit": "swc tests --delete-dir-on-start --out-dir denoTestsDist && node ../../scripts/fixDenoTestExtension.js && deno test -A --import-map ../../denoImportMap.json denoTestsDist", "test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/**/*.spec.ts'", "test:type": "tsc --noEmit", "test:test-type": "tsc --project tsconfig.test.json" diff --git a/packages/plugins/utils/package.json b/packages/plugins/utils/package.json index 69ec28328..dee0b74f1 100644 --- a/packages/plugins/utils/package.json +++ b/packages/plugins/utils/package.json @@ -10,14 +10,14 @@ "url": "https://github.com/discordeno/discordeno.git" }, "scripts": { - "build": "swc src --out-dir dist", + "build": "swc --delete-dir-on-start src --out-dir dist", "build:type": "tsc --declaration --emitDeclarationOnly --declarationDir dist", "release-build": "yarn build && yarn build:type", - "release-build:clean": "shx rm -rf dist && yarn build && yarn build:type", "fmt": "eslint --fix \"src/**/*.ts*\"", "lint": "eslint \"src/**/*.ts*\"", "test:unit-coverage": "c8 mocha --no-warnings 'tests/**/*.spec.ts'", "test:unit": "c8 --r lcov mocha --no-warnings 'tests/**/*.spec.ts'", + "test:deno-unit": "swc tests --delete-dir-on-start --out-dir denoTestsDist && node ../../scripts/fixDenoTestExtension.js && deno test -A --import-map ../../denoImportMap.json denoTestsDist", "test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/**/*.spec.ts'", "test:type": "tsc --noEmit", "test:test-type": "tsc --project tsconfig.test.json" @@ -35,7 +35,6 @@ "eslint": "^8.0.1", "eslint-config-discordeno": "*", "mocha": "^10.1.0", - "shx": "^0.3.4", "sinon": "^15.0.0", "tsconfig": "*", "typescript": "^4.9.3" diff --git a/packages/plugins/validations/package.json b/packages/plugins/validations/package.json index ef6f58129..4ceb6b0b1 100644 --- a/packages/plugins/validations/package.json +++ b/packages/plugins/validations/package.json @@ -10,14 +10,14 @@ "url": "https://github.com/discordeno/discordeno.git" }, "scripts": { - "build": "swc src --out-dir dist", + "build": "swc --delete-dir-on-start src --out-dir dist", "build:type": "tsc --declaration --emitDeclarationOnly --declarationDir dist", "release-build": "yarn build && yarn build:type", - "release-build:clean": "shx rm -rf dist && yarn build && yarn build:type", "fmt": "eslint --fix \"src/**/*.ts*\"", "lint": "eslint \"src/**/*.ts*\"", "test:unit-coverage": "c8 mocha --no-warnings 'tests/**/*.spec.ts'", "test:unit": "c8 --r lcov mocha --no-warnings 'tests/**/*.spec.ts'", + "test:deno-unit": "swc tests --delete-dir-on-start --out-dir denoTestsDist && node ../../scripts/fixDenoTestExtension.js && deno test -A --import-map ../../denoImportMap.json denoTestsDist", "test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/**/*.spec.ts'", "test:type": "tsc --noEmit", "test:test-type": "tsc --project tsconfig.test.json" diff --git a/packages/rest/package.json b/packages/rest/package.json index b43f97f0e..b9fb06f3c 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -10,14 +10,14 @@ "url": "https://github.com/discordeno/discordeno.git" }, "scripts": { - "build": "swc src --out-dir dist", + "build": "swc --delete-dir-on-start src --out-dir dist", "build:type": "tsc --declaration --emitDeclarationOnly --declarationDir dist", "release-build": "yarn build && yarn build:type", - "release-build:clean": "shx rm -rf dist && yarn build && yarn build:type", "fmt": "eslint --fix \"src/**/*.ts*\"", "lint": "eslint \"src/**/*.ts*\"", "test:unit-coverage": "c8 mocha --no-warnings 'tests/**/*.spec.ts'", "test:unit": "c8 --r lcov mocha --no-warnings 'tests/**/*.spec.ts' && node ../../scripts/coveragePathFixing.js rest", + "test:deno-unit": "swc tests --delete-dir-on-start --out-dir denoTestsDist && node ../../scripts/fixDenoTestExtension.js && deno test -A --import-map ../../denoImportMap.json denoTestsDist", "test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/**/*.spec.ts'", "test:type": "tsc --noEmit", "test:test-type": "tsc --project tsconfig.test.json" @@ -40,7 +40,6 @@ "eslint": "^8.0.1", "eslint-config-discordeno": "*", "mocha": "^10.1.0", - "shx": "^0.3.4", "sinon": "^15.0.0", "tsconfig": "*", "typescript": "^4.9.3" diff --git a/packages/rest/tests/RestRequestRejection.spec.ts b/packages/rest/tests/RestRequestRejection.spec.ts index c704b90f0..629dc6136 100644 --- a/packages/rest/tests/RestRequestRejection.spec.ts +++ b/packages/rest/tests/RestRequestRejection.spec.ts @@ -1,4 +1,5 @@ import { expect } from 'chai' +import { describe, it } from 'mocha' import { convertRestError } from '../src/convertRestError.js' describe('[rest] convertRestError', () => { diff --git a/packages/rest/tests/checkRateLimits.spec.ts b/packages/rest/tests/checkRateLimits.spec.ts index 994610823..5d15ca4bc 100644 --- a/packages/rest/tests/checkRateLimits.spec.ts +++ b/packages/rest/tests/checkRateLimits.spec.ts @@ -1,10 +1,8 @@ import { expect } from 'chai' +import { afterEach, beforeEach, describe, it } from 'mocha' import sinon from 'sinon' -import { - checkRateLimits, - createRestManager, - RestManager -} from '../src/index.js' +import type { RestManager } from '../src/index.js' +import { checkRateLimits, createRestManager } from '../src/index.js' describe('[rest] checkRateLimits', () => { let rest: RestManager diff --git a/packages/rest/tests/processRateLimitedPaths.spec.ts b/packages/rest/tests/processRateLimitedPaths.spec.ts index ee5069e40..adae098a3 100644 --- a/packages/rest/tests/processRateLimitedPaths.spec.ts +++ b/packages/rest/tests/processRateLimitedPaths.spec.ts @@ -1,6 +1,8 @@ import { expect } from 'chai' +import { afterEach, beforeEach, describe, it } from 'mocha' import sinon, { spy } from 'sinon' -import { createRestManager, RestManager } from '../src/index.js' +import type { RestManager } from '../src/index.js' +import { createRestManager } from '../src/index.js' describe('[rest] processRateLimitedPaths', () => { let rest: RestManager diff --git a/packages/rest/tests/simplifyUrl.spec.ts b/packages/rest/tests/simplifyUrl.spec.ts index 6e42a9b13..28e533670 100644 --- a/packages/rest/tests/simplifyUrl.spec.ts +++ b/packages/rest/tests/simplifyUrl.spec.ts @@ -1,4 +1,5 @@ import { expect } from 'chai' +import { describe, it } from 'mocha' import { simplifyUrl } from '../src/index.js' describe('[rest] simplifyUrl', () => { diff --git a/packages/transformer/package.json b/packages/transformer/package.json index 9cf235d18..1d440300d 100644 --- a/packages/transformer/package.json +++ b/packages/transformer/package.json @@ -10,14 +10,14 @@ "url": "https://github.com/discordeno/discordeno.git" }, "scripts": { - "build": "swc src --out-dir dist", + "build": "swc --delete-dir-on-start src --out-dir dist", "build:type": "tsc --declaration --emitDeclarationOnly --declarationDir dist", "release-build": "yarn build && yarn build:type", - "release-build:clean": "shx rm -rf dist && yarn build && yarn build:type", "fmt": "eslint --fix \"src/**/*.ts*\"", "lint": "eslint \"src/**/*.ts*\"", "test:unit-coverage": "c8 mocha --no-warnings 'tests/**/*.spec.ts'", "test:unit": "c8 --r lcov mocha --no-warnings 'tests/**/*.spec.ts' && node ../../scripts/coveragePathFixing.js transformer", + "test:deno-unit": "swc tests --delete-dir-on-start --out-dir denoTestsDist && node ../../scripts/fixDenoTestExtension.js && deno test -A --import-map ../../denoImportMap.json denoTestsDist", "test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/**/*.spec.ts'", "test:type": "tsc --noEmit", "test:test-type": "tsc --project tsconfig.test.json" @@ -38,7 +38,6 @@ "eslint": "^8.0.1", "eslint-config-discordeno": "*", "mocha": "^10.1.0", - "shx": "^0.3.4", "sinon": "^15.0.0", "tsconfig": "*", "typescript": "^4.9.3" diff --git a/packages/types/package.json b/packages/types/package.json index 85f7d007d..e109336b3 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -10,10 +10,9 @@ "url": "https://github.com/discordeno/discordeno.git" }, "scripts": { - "build": "swc src --out-dir dist", + "build": "swc --delete-dir-on-start src --out-dir dist", "build:type": "tsc --declaration --emitDeclarationOnly --declarationDir dist", "release-build": "yarn build && yarn build:type", - "release-build:clean": "shx rm -rf dist && yarn build && yarn build:type", "fmt": "eslint --fix \"src/**/*.ts*\"", "lint": "eslint \"src/**/*.ts*\"", "test:type": "tsc --noEmit" @@ -23,7 +22,6 @@ "@swc/core": "^1.3.21", "eslint": "^8.0.1", "eslint-config-discordeno": "*", - "shx": "^0.3.4", "tsconfig": "*", "typescript": "^4.9.3" }, diff --git a/packages/utils/package.json b/packages/utils/package.json index 2d4070341..acb718d07 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -10,14 +10,14 @@ "url": "https://github.com/discordeno/discordeno.git" }, "scripts": { - "build": "swc src --out-dir dist", + "build": "swc --delete-dir-on-start src --out-dir dist", "build:type": "tsc --skipDefaultLibCheck --declaration --emitDeclarationOnly --declarationDir dist", "release-build": "yarn build && yarn build:type", - "release-build:clean": "shx rm -rf dist && yarn build && yarn build:type", "fmt": "eslint --fix \"src/**/*.ts*\"", "lint": "eslint \"src/**/*.ts*\"", "test:unit-coverage": "c8 mocha --no-warnings 'tests/**/*.spec.ts'", "test:unit": "c8 --r lcov mocha --no-warnings 'tests/**/*.spec.ts' && node ../../scripts/coveragePathFixing.js utils", + "test:deno-unit": "swc tests --delete-dir-on-start --out-dir denoTestsDist && node ../../scripts/fixDenoTestExtension.js && deno test -A --import-map ../../denoImportMap.json denoTestsDist", "test:unit:watch": "mocha --no-warnings --watch --parallel 'tests/**/*.spec.ts'", "test:type": "tsc --noEmit", "test:test-type": "tsc --project tsconfig.test.json" @@ -35,7 +35,6 @@ "eslint": "^8.0.1", "eslint-config-discordeno": "*", "mocha": "^10.1.0", - "shx": "^0.3.4", "sinon": "^15.0.0", "ts-node": "^10.9.1", "tsconfig": "*", diff --git a/packages/utils/src/token.ts b/packages/utils/src/token.ts index 73c5b7173..4cc0c51f7 100644 --- a/packages/utils/src/token.ts +++ b/packages/utils/src/token.ts @@ -1,7 +1,16 @@ +import { Buffer } from 'node:buffer' + /** Removes the Bot before the token. */ -export function removeTokenPrefix (token?: string, type: 'GATEWAY' | 'REST' = 'REST'): string { +export function removeTokenPrefix ( + token?: string, + type: 'GATEWAY' | 'REST' = 'REST' +): string { // If no token is provided, throw an error - if (token === undefined) throw new Error(`The ${type} was not given a token. Please provide a token and try again.`) + if (token === undefined) { + throw new Error( + `The ${type} was not given a token. Please provide a token and try again.` + ) + } // If the token does not have a prefix just return token if (!token.startsWith('Bot ')) return token // Remove the prefix and return only the token. diff --git a/packages/utils/src/verifySignature.ts b/packages/utils/src/verifySignature.ts index ab87da909..54bb2e599 100644 --- a/packages/utils/src/verifySignature.ts +++ b/packages/utils/src/verifySignature.ts @@ -1,3 +1,4 @@ +import { Buffer } from 'node:buffer' import nacl from 'tweetnacl' export function verifySignature ({ diff --git a/packages/utils/tests/base64.spec.ts b/packages/utils/tests/base64.spec.ts index 4daf0051c..146612382 100644 --- a/packages/utils/tests/base64.spec.ts +++ b/packages/utils/tests/base64.spec.ts @@ -1,4 +1,6 @@ import { expect } from 'chai' +import { describe, it } from 'mocha' +import { Buffer } from 'node:buffer' import { decode, encode } from '../src/base64.js' describe('base64.ts', () => { diff --git a/packages/utils/tests/bigint.spec.ts b/packages/utils/tests/bigint.spec.ts index e631f15b5..f61c80af4 100644 --- a/packages/utils/tests/bigint.spec.ts +++ b/packages/utils/tests/bigint.spec.ts @@ -1,4 +1,5 @@ import { expect } from 'chai' +import { it } from 'mocha' import { bigintToSnowflake, snowflakeToBigint } from '../src/bigint.js' it('[bigint] - Transform a snowflake string to bigint', () => { diff --git a/packages/utils/tests/collection.spec.ts b/packages/utils/tests/collection.spec.ts index 374554776..64a137821 100644 --- a/packages/utils/tests/collection.spec.ts +++ b/packages/utils/tests/collection.spec.ts @@ -1,4 +1,5 @@ import { expect } from 'chai' +import { beforeEach, describe, it } from 'mocha' import sinon from 'sinon' import { Collection } from '../src/collection.js' diff --git a/packages/utils/tests/hash.spec.ts b/packages/utils/tests/hash.spec.ts index 87e8c6330..4962a41ef 100644 --- a/packages/utils/tests/hash.spec.ts +++ b/packages/utils/tests/hash.spec.ts @@ -1,5 +1,6 @@ /* eslint-disable @typescript-eslint/naming-convention */ import { expect } from 'chai' +import { it } from 'mocha' import { iconBigintToHash, iconHashToBigInt } from '../src/hash.js' const iconHash = '4bbb271a13f7195031adcc06a2d867ce' diff --git a/packages/utils/tests/token.spec.ts b/packages/utils/tests/token.spec.ts index 0e4a075b1..9786383e9 100644 --- a/packages/utils/tests/token.spec.ts +++ b/packages/utils/tests/token.spec.ts @@ -1,4 +1,5 @@ import { expect } from 'chai' +import { it } from 'mocha' import { removeTokenPrefix } from '../src/token.js' it('[token] Remove token prefix when Bot is prefixed.', () => { diff --git a/packages/utils/tests/utils.spec.ts b/packages/utils/tests/utils.spec.ts index e2afc8508..a01ac5ae7 100644 --- a/packages/utils/tests/utils.spec.ts +++ b/packages/utils/tests/utils.spec.ts @@ -1,4 +1,5 @@ import { expect } from 'chai' +import { afterEach, beforeEach, describe, it } from 'mocha' import sinon from 'sinon' import { delay, formatImageURL, hasProperty } from '../src/utils.js' diff --git a/packages/utils/tests/validateLength.spec.ts b/packages/utils/tests/validateLength.spec.ts index f7eb0ad72..4137037db 100644 --- a/packages/utils/tests/validateLength.spec.ts +++ b/packages/utils/tests/validateLength.spec.ts @@ -1,4 +1,5 @@ import { expect } from 'chai' +import { it } from 'mocha' import { validateLength } from '../src/validateLength.js' it('[utils] Validate length is too low', () => { diff --git a/packages/utils/tests/verifySignature.spec.ts b/packages/utils/tests/verifySignature.spec.ts index e790d4a1f..3dce99a51 100644 --- a/packages/utils/tests/verifySignature.spec.ts +++ b/packages/utils/tests/verifySignature.spec.ts @@ -1,18 +1,19 @@ import { expect } from 'chai' -import type { KeyObject } from 'node:crypto' -import { generateKeyPairSync, sign } from 'node:crypto' +import { afterEach, beforeEach, describe, it } from 'mocha' +import { Buffer } from 'node:buffer' import Sinon from 'sinon' +import nacl from 'tweetnacl' import { verifySignature } from '../src/verifySignature.js' describe('VerifySignature', () => { - let publicKey: KeyObject - let privateKey: KeyObject + let publicKey: Uint8Array + let secretKey: Uint8Array let clock: Sinon.SinonFakeTimers beforeEach(() => { clock = Sinon.useFakeTimers(); - ({ publicKey, privateKey } = generateKeyPairSync('ed25519')) + ({ publicKey, secretKey } = nacl.sign.keyPair()) }) afterEach(() => { @@ -23,18 +24,14 @@ describe('VerifySignature', () => { it('reutrn true if signature is verified', () => { const timestamp = Date.now().toString() const body = 'test body' - const signature = sign( - undefined, + const signature = nacl.sign.detached( Buffer.from(timestamp + body), - privateKey + secretKey ) const verifiedSignature = verifySignature({ - publicKey: publicKey - .export({ type: 'spki', format: 'der' }) - .toString('hex') - .substring(24), - signature: signature.toString('hex'), + publicKey: Buffer.from(publicKey).toString('hex'), + signature: Buffer.from(signature).toString('hex'), timestamp, body }) diff --git a/scripts/fixDenoTestExtension.js b/scripts/fixDenoTestExtension.js new file mode 100644 index 000000000..83e04fb52 --- /dev/null +++ b/scripts/fixDenoTestExtension.js @@ -0,0 +1,22 @@ +import fs from 'node:fs' + +const dirs = [''] +for await (const dir of dirs) { + await Promise.all( + fs.readdirSync(`denoTestsDist${dir}`).map(async (file) => { + if (!file.endsWith('.js')) { + dirs.push(`${dir}/${file}`) + return + } + const content = await fs.promises.readFile( + `denoTestsDist${dir}/${file}`, + 'utf-8' + ) + fs.promises.writeFile( + `denoTestsDist${dir}/${file.slice(0, -7)}test.js`, + content.replace(/src\//g, 'dist/').replace(/\.ts/g, '.js') + ) + fs.promises.rm(`denoTestsDist${dir}/${file}`) + }) + ) +} diff --git a/turbo.json b/turbo.json index 4af7531c9..b9989bbe6 100644 --- a/turbo.json +++ b/turbo.json @@ -27,12 +27,6 @@ "dist/**" ] }, - "release-build:clean": { - "dependsOn": [ - "^release-build:clean" - ], - "cache": false - }, "test:unit-coverage": { "dependsOn": [ "^build" @@ -54,6 +48,15 @@ "^build:type" ] }, + "test:deno-unit": { + "dependsOn": [ + "build", + "^build" + ], + "outputs": [ + "denoTestsDist/**" + ] + }, "lint": { "dependsOn": [ "^build:type" diff --git a/yarn.lock b/yarn.lock index 35e9541da..149b68be5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40,7 +40,6 @@ __metadata: eslint: ^8.0.1 eslint-config-discordeno: "*" mocha: ^10.1.0 - shx: ^0.3.4 sinon: ^15.0.0 tsconfig: "*" typescript: ^4.9.3 @@ -64,7 +63,6 @@ __metadata: eslint: ^8.0.1 eslint-config-discordeno: "*" mocha: ^10.1.0 - shx: ^0.3.4 sinon: ^15.0.0 tsconfig: "*" typescript: ^4.9.3 @@ -83,7 +81,6 @@ __metadata: eslint: ^8.0.1 eslint-config-discordeno: "*" mocha: ^10.1.0 - shx: ^0.3.4 sinon: ^15.0.0 tsconfig: "*" typescript: ^4.9.3 @@ -108,7 +105,6 @@ __metadata: eslint: ^8.0.1 eslint-config-discordeno: "*" mocha: ^10.1.0 - shx: ^0.3.4 sinon: ^15.0.0 tsconfig: "*" typescript: ^4.9.3 @@ -126,7 +122,6 @@ __metadata: chalk: ^5.1.2 eslint: ^8.0.1 eslint-config-discordeno: "*" - shx: ^0.3.4 sinon: ^15.0.0 tsconfig: "*" typescript: ^4.9.3 @@ -152,7 +147,6 @@ __metadata: eslint: ^8.0.1 eslint-config-discordeno: "*" mocha: ^10.1.0 - shx: ^0.3.4 sinon: ^15.0.0 tsconfig: "*" typescript: ^4.9.3 @@ -176,7 +170,6 @@ __metadata: eslint: ^8.0.1 eslint-config-discordeno: "*" mocha: ^10.1.0 - shx: ^0.3.4 sinon: ^15.0.0 tsconfig: "*" typescript: ^4.9.3 @@ -192,7 +185,6 @@ __metadata: "@types/node": ^18.11.9 eslint: ^8.0.1 eslint-config-discordeno: "*" - shx: ^0.3.4 tsconfig: "*" typescript: ^4.9.3 languageName: unknown @@ -214,7 +206,6 @@ __metadata: eslint: ^8.0.1 eslint-config-discordeno: "*" mocha: ^10.1.0 - shx: ^0.3.4 sinon: ^15.0.0 ts-node: ^10.9.1 tsconfig: "*" @@ -1459,7 +1450,6 @@ __metadata: eslint: ^8.0.1 eslint-config-discordeno: "*" mocha: ^10.1.0 - shx: ^0.3.4 sinon: ^15.0.0 tsconfig: "*" typescript: ^4.9.3 @@ -2157,7 +2147,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.0.0, glob@npm:^7.1.3, glob@npm:^7.1.4": +"glob@npm:^7.1.3, glob@npm:^7.1.4": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -2438,13 +2428,6 @@ __metadata: languageName: node linkType: hard -"interpret@npm:^1.0.0": - version: 1.4.0 - resolution: "interpret@npm:1.4.0" - checksum: 2e5f51268b5941e4a17e4ef0575bc91ed0ab5f8515e3cf77486f7c14d13f3010df9c0959f37063dcc96e78d12dc6b0bb1b9e111cdfe69771f4656d2993d36155 - languageName: node - linkType: hard - "ip@npm:^2.0.0": version: 2.0.0 resolution: "ip@npm:2.0.0" @@ -2990,7 +2973,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6": +"minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6": version: 1.2.7 resolution: "minimist@npm:1.2.7" checksum: 7346574a1038ca23c32e02252f603801f09384dd1d78b69a943a4e8c2c28730b80e96193882d3d3b22a063445f460e48316b29b8a25addca2d7e5e8f75478bec @@ -3502,15 +3485,6 @@ __metadata: languageName: node linkType: hard -"rechoir@npm:^0.6.2": - version: 0.6.2 - resolution: "rechoir@npm:0.6.2" - dependencies: - resolve: ^1.1.6 - checksum: fe76bf9c21875ac16e235defedd7cbd34f333c02a92546142b7911a0f7c7059d2e16f441fe6fb9ae203f459c05a31b2bcf26202896d89e390eda7514d5d2702b - languageName: node - linkType: hard - "regexp.prototype.flags@npm:^1.4.3": version: 1.4.3 resolution: "regexp.prototype.flags@npm:1.4.3" @@ -3543,7 +3517,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.6, resolve@npm:^1.20.0, resolve@npm:^1.22.0, resolve@npm:^1.22.1": +"resolve@npm:^1.20.0, resolve@npm:^1.22.0, resolve@npm:^1.22.1": version: 1.22.1 resolution: "resolve@npm:1.22.1" dependencies: @@ -3556,7 +3530,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": +"resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": version: 1.22.1 resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=c3c19d" dependencies: @@ -3706,19 +3680,6 @@ __metadata: languageName: node linkType: hard -"shelljs@npm:^0.8.5": - version: 0.8.5 - resolution: "shelljs@npm:0.8.5" - dependencies: - glob: ^7.0.0 - interpret: ^1.0.0 - rechoir: ^0.6.2 - bin: - shjs: bin/shjs - checksum: 7babc46f732a98f4c054ec1f048b55b9149b98aa2da32f6cf9844c434b43c6251efebd6eec120937bd0999e13811ebd45efe17410edb3ca938f82f9381302748 - languageName: node - linkType: hard - "shiki@npm:^0.11.1": version: 0.11.1 resolution: "shiki@npm:0.11.1" @@ -3730,18 +3691,6 @@ __metadata: languageName: node linkType: hard -"shx@npm:^0.3.4": - version: 0.3.4 - resolution: "shx@npm:0.3.4" - dependencies: - minimist: ^1.2.3 - shelljs: ^0.8.5 - bin: - shx: lib/cli.js - checksum: 0aa168bfddc11e3fe8943cce2e0d2d8514a560bd58cf2b835b4351ba03f46068f7d88286c2627f4b85604e81952154c43746369fb3f0d60df0e3b511f465e5b8 - languageName: node - linkType: hard - "side-channel@npm:^1.0.4": version: 1.0.4 resolution: "side-channel@npm:1.0.4"