diff --git a/.gitignore b/.gitignore index c302ad40..f67723af 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ dist/ node_modules api/assets/*.js api/assets/*.css -database.db \ No newline at end of file +database.db +tsconfig.tsbuildinfo \ No newline at end of file diff --git a/api/.swcrc b/api/.swcrc deleted file mode 100644 index 794efbd7..00000000 --- a/api/.swcrc +++ /dev/null @@ -1,17 +0,0 @@ -{ - "module": { - "type": "commonjs" - }, - "jsc": { - "parser": { - "syntax": "typescript", - "decorators": true - }, - "target": "es2021", - "baseUrl": "./", - "paths": { - "@fosscord/api": ["src/index.ts"], - "@fosscord/api/*": ["src/*"] - } - } -} diff --git a/api/package-lock.json b/api/package-lock.json index 2af8c7b9..f4e7506c 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -104,7 +104,6 @@ "pg": "^8.7.1", "reflect-metadata": "^0.1.13", "sqlite3": "^5.0.2", - "swc": "^1.0.11", "tsconfig-paths": "^3.11.0", "typeorm": "^0.2.37", "typescript": "^4.4.2", @@ -18403,7 +18402,6 @@ "pg": "^8.7.1", "reflect-metadata": "^0.1.13", "sqlite3": "^5.0.2", - "swc": "^1.0.11", "tsconfig-paths": "^3.11.0", "typeorm": "^0.2.37", "typescript": "^4.4.2", diff --git a/bundle/.swcrc b/bundle/.swcrc deleted file mode 100644 index 9a89b49d..00000000 --- a/bundle/.swcrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "module": { - "type": "commonjs" - }, - "jsc": { - "parser": { - "syntax": "typescript", - "decorators": true - }, - "target": "es2021" - } -} diff --git a/bundle/package-lock.json b/bundle/package-lock.json index dd80d787..cb8078de 100644 --- a/bundle/package-lock.json +++ b/bundle/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "AGPLV3", "dependencies": { + "@esbuild-plugins/tsconfig-paths": "^0.0.4", "@fosscord/api": "file:../api", "@fosscord/cdn": "file:../cdn", "@fosscord/gateway": "file:../gateway", @@ -152,7 +153,6 @@ "nanocolors": "^0.2.12", "node-fetch": "^2.6.1", "supertest": "^6.1.6", - "swc": "^1.0.11", "typescript": "^4.1.2", "uuid": "^8.3.2" }, @@ -192,7 +192,6 @@ "missing-native-js-functions": "^1.2.17", "mongoose-autopopulate": "^0.12.3", "node-fetch": "^2.6.1", - "swc": "^1.0.11", "typeorm": "^0.2.37", "uuid": "^8.3.2", "ws": "^7.4.2" @@ -239,7 +238,6 @@ "pg": "^8.7.1", "reflect-metadata": "^0.1.13", "sqlite3": "^5.0.2", - "swc": "^1.0.11", "tsconfig-paths": "^3.11.0", "typeorm": "^0.2.37", "typescript": "^4.4.2", @@ -290,6 +288,41 @@ "node": ">=12" } }, + "node_modules/@esbuild-plugins/tsconfig-paths": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@esbuild-plugins/tsconfig-paths/-/tsconfig-paths-0.0.4.tgz", + "integrity": "sha512-/86k8BmhfJOFoFLR2oKtoxUVUpIYBtJy29QSM5TXzZP8vdjuMPtXSUeCL+8Aa2GZ3to2k6VD9WLBE9OU+j1yQQ==", + "dependencies": { + "debug": "^4.3.1", + "find-up": "^5.0.0", + "strip-json-comments": "^3.1.1" + }, + "peerDependencies": { + "esbuild": "*", + "typescript": "*" + } + }, + "node_modules/@esbuild-plugins/tsconfig-paths/node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@esbuild-plugins/tsconfig-paths/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/@fosscord/api": { "resolved": "../api", "link": true @@ -1230,7 +1263,6 @@ "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.4.tgz", "integrity": "sha512-wMA5eUwpavTBiNl+It6j8OQuKVh69l6z4DKDLzoTIqC+gChnPpcmqdA8WNHptUHRnfyML+mKEQPlW7Mybj8gHg==", - "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -1261,7 +1293,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "android" @@ -1274,7 +1305,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -1287,7 +1317,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -1300,7 +1329,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "freebsd" @@ -1313,7 +1341,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "freebsd" @@ -1326,7 +1353,6 @@ "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "linux" @@ -1339,7 +1365,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -1352,7 +1377,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "linux" @@ -1365,7 +1389,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -1378,7 +1401,6 @@ "cpu": [ "mips64el" ], - "dev": true, "optional": true, "os": [ "linux" @@ -1391,7 +1413,6 @@ "cpu": [ "ppc64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -1404,7 +1425,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "openbsd" @@ -1429,7 +1449,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "sunos" @@ -1442,7 +1461,6 @@ "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "win32" @@ -1455,7 +1473,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -1468,7 +1485,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -1581,6 +1597,21 @@ "node": ">= 0.8" } }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", @@ -1852,6 +1883,20 @@ "node": ">=0.10.0" } }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -1997,6 +2042,34 @@ "wrappy": "1" } }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -2005,6 +2078,14 @@ "node": ">= 0.8" } }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -2298,6 +2379,17 @@ "node": ">=10" } }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -2423,7 +2515,6 @@ "version": "4.4.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", - "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -2482,6 +2573,17 @@ "engines": { "node": ">=6" } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } }, "dependencies": { @@ -2509,6 +2611,31 @@ "@cspotcode/source-map-consumer": "0.8.0" } }, + "@esbuild-plugins/tsconfig-paths": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@esbuild-plugins/tsconfig-paths/-/tsconfig-paths-0.0.4.tgz", + "integrity": "sha512-/86k8BmhfJOFoFLR2oKtoxUVUpIYBtJy29QSM5TXzZP8vdjuMPtXSUeCL+8Aa2GZ3to2k6VD9WLBE9OU+j1yQQ==", + "requires": { + "debug": "^4.3.1", + "find-up": "^5.0.0", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "@fosscord/api": { "version": "file:../api", "requires": { @@ -2622,7 +2749,6 @@ "nanocolors": "^0.2.12", "node-fetch": "^2.6.1", "supertest": "^6.1.6", - "swc": "^1.0.11", "ts-patch": "^1.4.4", "typescript": "^4.1.2", "uuid": "^8.3.2" @@ -2653,7 +2779,6 @@ "missing-native-js-functions": "^1.2.17", "mongoose-autopopulate": "^0.12.3", "node-fetch": "^2.6.1", - "swc": "^1.0.11", "ts-node-dev": "^1.1.6", "ts-patch": "^1.4.4", "typeorm": "^0.2.37", @@ -2689,7 +2814,6 @@ "pg": "^8.7.1", "reflect-metadata": "^0.1.13", "sqlite3": "^5.0.2", - "swc": "^1.0.11", "tsconfig-paths": "^3.11.0", "typeorm": "^0.2.37", "typescript": "^4.4.2", @@ -3368,7 +3492,6 @@ "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.4.tgz", "integrity": "sha512-wMA5eUwpavTBiNl+It6j8OQuKVh69l6z4DKDLzoTIqC+gChnPpcmqdA8WNHptUHRnfyML+mKEQPlW7Mybj8gHg==", - "dev": true, "requires": { "esbuild-android-arm64": "0.13.4", "esbuild-darwin-64": "0.13.4", @@ -3392,84 +3515,72 @@ "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.4.tgz", "integrity": "sha512-elDJt+jNyoHFId0/dKsuVYUPke3EcquIyUwzJCH17a3ERglN3A9aMBI5zbz+xNZ+FbaDNdpn0RaJHCFLbZX+fA==", - "dev": true, "optional": true }, "esbuild-darwin-64": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.4.tgz", "integrity": "sha512-zJQGyHRAdZUXlRzbN7W+7ykmEiGC+bq3Gc4GxKYjjWTgDRSEly98ym+vRNkDjXwXYD3gGzSwvH35+MiHAtWvLA==", - "dev": true, "optional": true }, "esbuild-darwin-arm64": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.4.tgz", "integrity": "sha512-r8oYvAtqSGq8HNTZCAx4TdLE7jZiGhX9ooGi5AQAey37MA6XNaP8ZNlw9OCpcgpx3ryU2WctXwIqPzkHO7a8dg==", - "dev": true, "optional": true }, "esbuild-freebsd-64": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.4.tgz", "integrity": "sha512-u9DRGkn09EN8+lCh6z7FKle7awi17PJRBuAKdRNgSo5ZrH/3m+mYaJK2PR2URHMpAfXiwJX341z231tSdVe3Yw==", - "dev": true, "optional": true }, "esbuild-freebsd-arm64": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.4.tgz", "integrity": "sha512-q3B2k68Uf6gfjATjcK16DqxvjqRQkHL8aPoOfj4op+lSqegdXvBacB1d8jw8PxbWJ8JHpdTLdAVUYU80kotQXA==", - "dev": true, "optional": true }, "esbuild-linux-32": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.4.tgz", "integrity": "sha512-UUYJPHSiKAO8KoN3Ls/iZtgDLZvK5HarES96aolDPWZnq9FLx4dIHM/x2z4Rxv9IYqQ/DxlPoE2Co1UPBIYYeA==", - "dev": true, "optional": true }, "esbuild-linux-64": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.4.tgz", "integrity": "sha512-+RnohAKiiUW4UHLGRkNR1AnENW1gCuDWuygEtd4jxTNPIoeC7lbXGor7rtgjj9AdUzFgOEvAXyNNX01kJ8NueQ==", - "dev": true, "optional": true }, "esbuild-linux-arm": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.4.tgz", "integrity": "sha512-BH5gKve4jglS7UPSsfwHSX79I5agC/lm4eKoRUEyo8lwQs89frQSRp2Xup+6SFQnxt3md5EsKcd2Dbkqeb3gPA==", - "dev": true, "optional": true }, "esbuild-linux-arm64": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.4.tgz", "integrity": "sha512-+A188cAdd6QuSRxMIwRrWLjgphQA0LDAQ/ECVlrPVJwnx+1i64NjDZivoqPYLOTkSPIKntiWwMhhf0U5/RrPHQ==", - "dev": true, "optional": true }, "esbuild-linux-mips64le": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.4.tgz", "integrity": "sha512-0xkwtPaUkG5xMTFGaQPe1AadSe5QAiQuD4Gix1O9k5Xo/U8xGIkw9UFUTvfEUeu71vFb6ZgsIacfP1NLoFjWNw==", - "dev": true, "optional": true }, "esbuild-linux-ppc64le": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.4.tgz", "integrity": "sha512-E1+oJPP7A+j23GPo3CEpBhGwG1bni4B8IbTA3/3rvzjURwUMZdcN3Fhrz24rnjzdLSHmULtOE4VsbT42h1Om4Q==", - "dev": true, "optional": true }, "esbuild-openbsd-64": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.4.tgz", "integrity": "sha512-xEkI1o5HYxDzbv9jSox0EsDxpwraG09SRiKKv0W8pH6O3bt+zPSlnoK7+I7Q69tkvONkpIq5n2o+c55uq0X7cw==", - "dev": true, "optional": true }, "esbuild-plugin-tsc": { @@ -3485,28 +3596,24 @@ "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.4.tgz", "integrity": "sha512-bjXUMcODMnB6hQicLBBmmnBl7OMDyVpFahKvHGXJfDChIi5udiIRKCmFUFIRn+AUAKVlfrofRKdyPC7kBsbvGQ==", - "dev": true, "optional": true }, "esbuild-windows-32": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.4.tgz", "integrity": "sha512-z4CH07pfyVY0XF98TCsGmLxKCl0kyvshKDbdpTekW9f2d+dJqn5mmoUyWhpSVJ0SfYWJg86FoD9nMbbaMVyGdg==", - "dev": true, "optional": true }, "esbuild-windows-64": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.4.tgz", "integrity": "sha512-uVL11vORRPjocGLYam67rwFLd0LvkrHEs+JG+1oJN4UD9MQmNGZPa4gBHo6hDpF+kqRJ9kXgQSeDqUyRy0tj/Q==", - "dev": true, "optional": true }, "esbuild-windows-arm64": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.4.tgz", "integrity": "sha512-vA6GLvptgftRcDcWngD5cMlL4f4LbL8JjU2UMT9yJ0MT5ra6hdZNFWnOeOoEtY4GtJ6OjZ0i+81sTqhAB0fMkg==", - "dev": true, "optional": true }, "escape-html": { @@ -3601,6 +3708,15 @@ "unpipe": "~1.0.0" } }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, "form-data": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", @@ -3801,6 +3917,14 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -3913,11 +4037,32 @@ "wrappy": "1" } }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -4124,6 +4269,11 @@ "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", "dev": true }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4206,8 +4356,7 @@ "typescript": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", - "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", - "dev": true + "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==" }, "unpipe": { "version": "1.0.0", @@ -4244,6 +4393,11 @@ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } } } diff --git a/bundle/scripts/build.js b/bundle/scripts/build.js index ba559ecf..9939558d 100644 --- a/bundle/scripts/build.js +++ b/bundle/scripts/build.js @@ -1,8 +1,7 @@ const { spawn } = require("child_process"); const path = require("path"); -const { performance } = require("perf_hooks"); const fs = require("fs"); -const esbuildPluginTsc = require("esbuild-plugin-tsc"); +const { performance } = require("perf_hooks"); let parts = "api,cdn,gateway,bundle".split(","); const tscBin = path.join(__dirname, "..", "..", "util", "node_modules", "typescript", "bin", "tsc"); @@ -13,17 +12,49 @@ const swcBin = path.join(__dirname, "..", "..", "util", "node_modules", "@swc", function buildPackage(dir) { const element = path.basename(dir); - require("esbuild").build({ + return require("esbuild").build({ entryPoints: walk(path.join(dir, "src")), bundle: false, outdir: path.join(dir, "dist"), target: "es2021", - format: "cjs", - plugins: [esbuildPluginTsc({})], - keepNames: true, + // plugins don't really work because bundle is false + keepNames: false, + tsconfig: path.join(dir, "tsconfig.json"), }); } +const importPart = /import (\* as )?(({[^}]+})|(\w+)) from ("[.\w-/@q]+")/g; +const importMod = /import ("[\w-/@q.]+")/g; +const exportDefault = /export default/g; +const exportAllAs = /export \* from (".+")/g; +const exportMod = /export ({[\w, ]+})/g; +const exportConst = /export (const|var|let) (\w+)/g; +const exportPart = /export ((async )?\w+) (\w+)/g; + +// resolves tsconfig paths + rewrites es6 imports/exports to require (because esbuild/swc doesn't work properly) +function transpileFiles() { + for (const part of ["gateway", "api", "cdn", "bundle"]) { + const files = walk(path.join(__dirname, "..", "..", part, "dist")); + for (const file of files) { + let content = fs.readFileSync(file, { encoding: "utf8" }); + console.log(file); + content = content + .replaceAll( + `@fosscord/${part}`, + path.relative(file, path.join(__dirname, "..", "..", part, "dist")).slice(3) + ) + .replace(importPart, `const $2 = require($5)`) + .replace(importMod, `require($1)`) + .replace(exportDefault, `module.exports =`) + .replace(exportAllAs, `module.exports = {...(module.exports)||{}, ...require($1)}`) + .replace(exportMod, "module.exports = $1") + .replace(exportConst, `let $2 = {};\nmodule.exports.$2 = $2`) + .replace(exportPart, `module.exports.$3 = $1 $3`); + fs.writeFileSync(file, content); + } + } +} + function util() { // const child = spawn("node", `${swcBin} src --out-dir dist --sync`.split(" "), { const child = spawn("node", `${tscBin} -b .`.split(" "), { @@ -41,13 +72,16 @@ function util() { } const start = performance.now(); -console.log("[Build] starting ..."); -util(); -for (const part of parts) { - buildPackage(path.join(__dirname, "..", "..", part)); +async function main() { + console.log("[Build] starting ..."); + util(); + await Promise.all(parts.map((part) => buildPackage(path.join(__dirname, "..", "..", part)))); + transpileFiles(); } +main(); + process.on("exit", () => { console.log("[Build] took " + Math.round(performance.now() - start) + "ms"); }); @@ -61,7 +95,7 @@ function walk(dir) { if (stat && stat.isDirectory()) { /* Recurse into a subdirectory */ results = results.concat(walk(file)); - } else if (file.endsWith(".ts")) { + } else if (file.endsWith(".ts") || file.endsWith(".js")) { /* Is a file */ results.push(file); } diff --git a/bundle/tsconfig.json b/bundle/tsconfig.json index b300a426..69725244 100644 --- a/bundle/tsconfig.json +++ b/bundle/tsconfig.json @@ -65,6 +65,7 @@ "skipLibCheck": true /* Skip type checking of declaration files. */, "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */, "emitDecoratorMetadata": true, - "experimentalDecorators": true + "experimentalDecorators": true, + "baseUrl": "." } } diff --git a/cdn/tsconfig.json b/cdn/tsconfig.json index c80d16fd..249dffff 100644 --- a/cdn/tsconfig.json +++ b/cdn/tsconfig.json @@ -4,7 +4,7 @@ /* Visit https://aka.ms/tsconfig.json to read more about this file */ /* Basic Options */ - "incremental": true, /* Enable incremental compilation */ + "incremental": true /* Enable incremental compilation */, "target": "ES6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, "lib": ["ES2015", "dom"] /* Specify library files to be included in the compilation. */, @@ -68,7 +68,7 @@ "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */, "baseUrl": ".", "paths": { - "@fosscord/cdn/": ["src/index"], + "@fosscord/cdn": ["src/index"], "@fosscord/cdn/*": ["src/*"] }, "plugins": [{ "transform": "@zerollup/ts-transform-paths" }] diff --git a/gateway/.swcrc b/gateway/.swcrc index 3079a89f..e8cbb8a1 100644 --- a/gateway/.swcrc +++ b/gateway/.swcrc @@ -7,11 +7,10 @@ "syntax": "typescript", "decorators": true }, - "target": "es2021", + "target": "es5", "baseUrl": ".", "paths": { - "@fosscord/gateway": ["src/index"], - "@fosscord/gateway/*": ["src/*"] + "@fosscord/gateway": ["src/index"] } } } diff --git a/gateway/package-lock.json b/gateway/package-lock.json index 38962a2a..07ae02f9 100644 --- a/gateway/package-lock.json +++ b/gateway/package-lock.json @@ -65,7 +65,6 @@ "pg": "^8.7.1", "reflect-metadata": "^0.1.13", "sqlite3": "^5.0.2", - "swc": "^1.0.11", "tsconfig-paths": "^3.11.0", "typeorm": "^0.2.37", "typescript": "^4.4.2", @@ -10094,7 +10093,6 @@ "pg": "^8.7.1", "reflect-metadata": "^0.1.13", "sqlite3": "^5.0.2", - "swc": "^1.0.11", "tsconfig-paths": "^3.11.0", "typeorm": "^0.2.37", "typescript": "^4.4.2", diff --git a/gateway/tsconfig.json b/gateway/tsconfig.json index e2ac5b0b..2ad38f93 100644 --- a/gateway/tsconfig.json +++ b/gateway/tsconfig.json @@ -5,7 +5,7 @@ /* Visit https://aka.ms/tsconfig.json to read more about this file */ /* Basic Options */ - "incremental": true, /* Enable incremental compilation */ + "incremental": true /* Enable incremental compilation */, "target": "ES2020" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, "lib": ["ES2015", "ES2020.BigInt", "DOM"] /* Specify library files to be included in the compilation. */, @@ -70,7 +70,7 @@ "resolveJsonModule": true, "baseUrl": ".", "paths": { - "@fosscord/gateway": ["src/index"], + "@fosscord/gateway": ["src/index.ts"], "@fosscord/gateway/*": ["src/*"] }, "plugins": [{ "transform": "@zerollup/ts-transform-paths" }] diff --git a/util/.swcrc b/util/.swcrc deleted file mode 100644 index a723d37f..00000000 --- a/util/.swcrc +++ /dev/null @@ -1,18 +0,0 @@ -{ - "module": { - "type": "commonjs" - }, - "jsc": { - "parser": { - "syntax": "typescript", - "decorators": true - }, - "target": "es2021", - "transform": { - "legacyDecorator": true, - "decoratorMetadata": true - }, - "keepClassNames": true, - "loose": true - } -} diff --git a/webrtc/.swcrc b/webrtc/.swcrc deleted file mode 100644 index 9a89b49d..00000000 --- a/webrtc/.swcrc +++ /dev/null @@ -1,12 +0,0 @@ -{ - "module": { - "type": "commonjs" - }, - "jsc": { - "parser": { - "syntax": "typescript", - "decorators": true - }, - "target": "es2021" - } -}