mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-08 02:23:43 +00:00
enhancement
___
- Introduced a new ESM module resolution setup using `ts-node` to enhance the development and deployment process.
- Implemented a dynamic loader script registration mechanism to facilitate ESM module loading.
- Simplified the predeploy script execution by refining environment variable handling and stdout configuration.
- Updated `package.json` to reflect changes in script commands for better ESM support and added necessary dependencies for `ts-node` and `typescript`.
___
<table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>loader.js</strong><dd><code>Introduce ESM Module Resolution via ts-node</code> </dd></summary>
<hr>
packages/backend/server/scripts/loader.js
<li>Introduced <code>ts-node</code> configuration for ESM module resolution.<br> <li> Exported a <code>resolve</code> function for module resolution.<br>
</details>
</td>
<td><a href="https:/toeverything/AFFiNE/pull/5920/files#diff-9ed793897a493633028d510db0742ff38d2d86471c54b17513d4354c51597ef8">+11/-0</a> </td>
</tr>
<tr>
<td>
<details>
<summary><strong>register.js</strong><dd><code>Implement Dynamic Loader Script Registration</code> </dd></summary>
<hr>
packages/backend/server/scripts/register.js
<li>Implemented dynamic registration of the loader script.<br> <li> Utilized <code>node:module</code> and <code>node:url</code> for script registration.<br>
</details>
</td>
<td><a href="https:/toeverything/AFFiNE/pull/5920/files#diff-64831012a09f2bc4bc5a611ddb8e0871b0e83588de6c5d4f2f5cb1dae8fff244">+4/-0</a> </td>
</tr>
<tr>
<td>
<details>
<summary><strong>self-host-predeploy.js</strong><dd><code>Simplify Predeploy Script Execution</code> </dd></summary>
<hr>
packages/backend/server/scripts/self-host-predeploy.js
<li>Simplified environment variable passing to <code>execSync</code>.<br> <li> Changed stdout handling to inherit from the parent process.<br>
</details>
</td>
<td><a href="https:/toeverything/AFFiNE/pull/5920/files#diff-bd7b0be14c198018c21dadda6945a779c57d13e4c8584ee62da4baa99d370664">+3/-5</a> </td>
</tr>
<tr>
<td>
<details>
<summary><strong>package.json</strong><dd><code>Update Scripts and Dependencies for ESM Support</code> </dd></summary>
<hr>
packages/backend/server/package.json
<li>Updated script commands for ESM compatibility.<br> <li> Added <code>ts-node</code> and <code>typescript</code> dependencies.<br> <li> Removed redundant <code>--es-module-specifier-resolution=node</code> flags.<br>
</details>
</td>
<td><a href="https:/toeverything/AFFiNE/pull/5920/files#diff-a6530c6fe539aaa49ff0a7a80bc4362c1d95c419fdd19125415dcc869b31a443">+6/-6</a> </td>
</tr>
</table></td></tr></tr></tbody></table>
___
> ✨ **PR-Agent usage**:
>Comment `/help` on the PR to get a list of all available PR-Agent tools and their descriptions
189 lines
5.5 KiB
JSON
189 lines
5.5 KiB
JSON
{
|
|
"name": "@affine/server",
|
|
"private": true,
|
|
"version": "0.12.0",
|
|
"description": "Affine Node.js server",
|
|
"type": "module",
|
|
"bin": {
|
|
"run-test": "./scripts/run-test.ts"
|
|
},
|
|
"scripts": {
|
|
"build": "tsc",
|
|
"start": "node --loader ts-node/esm/transpile-only.mjs ./src/index.ts",
|
|
"dev": "nodemon ./src/index.ts",
|
|
"test": "ava --concurrency 1 --serial",
|
|
"test:coverage": "c8 ava --concurrency 1 --serial",
|
|
"postinstall": "prisma generate",
|
|
"data-migration": "node --loader ts-node/esm/transpile-only.mjs ./src/data/index.ts",
|
|
"predeploy": "yarn prisma migrate deploy && node --import ./scripts/register.js ./dist/data/index.js run"
|
|
},
|
|
"dependencies": {
|
|
"@apollo/server": "^4.9.5",
|
|
"@auth/prisma-adapter": "^1.0.7",
|
|
"@aws-sdk/client-s3": "^3.499.0",
|
|
"@google-cloud/opentelemetry-cloud-monitoring-exporter": "^0.17.0",
|
|
"@google-cloud/opentelemetry-cloud-trace-exporter": "^2.1.0",
|
|
"@google-cloud/opentelemetry-resource-util": "^2.1.0",
|
|
"@keyv/redis": "^2.8.0",
|
|
"@nestjs/apollo": "^12.0.11",
|
|
"@nestjs/common": "^10.2.10",
|
|
"@nestjs/core": "^10.2.10",
|
|
"@nestjs/event-emitter": "^2.0.3",
|
|
"@nestjs/graphql": "^12.0.11",
|
|
"@nestjs/platform-express": "^10.2.10",
|
|
"@nestjs/platform-socket.io": "^10.2.10",
|
|
"@nestjs/schedule": "^4.0.0",
|
|
"@nestjs/serve-static": "^4.0.0",
|
|
"@nestjs/throttler": "^5.0.1",
|
|
"@nestjs/websockets": "^10.2.10",
|
|
"@node-rs/argon2": "^1.5.2",
|
|
"@node-rs/crc32": "^1.7.2",
|
|
"@node-rs/jsonwebtoken": "^0.3.0",
|
|
"@opentelemetry/api": "^1.7.0",
|
|
"@opentelemetry/core": "^1.21.0",
|
|
"@opentelemetry/exporter-prometheus": "^0.48.0",
|
|
"@opentelemetry/exporter-zipkin": "^1.21.0",
|
|
"@opentelemetry/host-metrics": "^0.35.0",
|
|
"@opentelemetry/instrumentation": "^0.48.0",
|
|
"@opentelemetry/instrumentation-graphql": "^0.37.0",
|
|
"@opentelemetry/instrumentation-http": "^0.48.0",
|
|
"@opentelemetry/instrumentation-ioredis": "^0.37.0",
|
|
"@opentelemetry/instrumentation-nestjs-core": "^0.34.0",
|
|
"@opentelemetry/instrumentation-socket.io": "^0.36.0",
|
|
"@opentelemetry/resources": "^1.21.0",
|
|
"@opentelemetry/sdk-metrics": "^1.21.0",
|
|
"@opentelemetry/sdk-node": "^0.48.0",
|
|
"@opentelemetry/sdk-trace-node": "^1.21.0",
|
|
"@opentelemetry/semantic-conventions": "^1.21.0",
|
|
"@prisma/client": "^5.7.1",
|
|
"@prisma/instrumentation": "^5.7.1",
|
|
"@socket.io/redis-adapter": "^8.2.1",
|
|
"cookie-parser": "^1.4.6",
|
|
"dotenv": "^16.3.1",
|
|
"dotenv-cli": "^7.3.0",
|
|
"express": "^4.18.2",
|
|
"file-type": "^19.0.0",
|
|
"get-stream": "^8.0.1",
|
|
"graphql": "^16.8.1",
|
|
"graphql-scalars": "^1.22.4",
|
|
"graphql-type-json": "^0.3.2",
|
|
"graphql-upload": "^16.0.2",
|
|
"ioredis": "^5.3.2",
|
|
"keyv": "^4.5.4",
|
|
"lodash-es": "^4.17.21",
|
|
"nanoid": "^5.0.3",
|
|
"nest-commander": "^3.12.2",
|
|
"nestjs-throttler-storage-redis": "^0.4.1",
|
|
"next-auth": "^4.24.5",
|
|
"nodemailer": "^6.9.7",
|
|
"on-headers": "^1.0.2",
|
|
"parse-duration": "^1.1.0",
|
|
"pretty-time": "^1.1.0",
|
|
"prisma": "^5.7.1",
|
|
"prom-client": "^15.0.0",
|
|
"reflect-metadata": "^0.2.0",
|
|
"rxjs": "^7.8.1",
|
|
"semver": "^7.5.4",
|
|
"socket.io": "^4.7.2",
|
|
"stripe": "^14.5.0",
|
|
"ts-node": "^10.9.2",
|
|
"typescript": "^5.3.3",
|
|
"ws": "^8.14.2",
|
|
"yjs": "^13.6.10",
|
|
"zod": "^3.22.4"
|
|
},
|
|
"devDependencies": {
|
|
"@affine-test/kit": "workspace:*",
|
|
"@affine/storage": "workspace:*",
|
|
"@napi-rs/image": "^1.7.0",
|
|
"@nestjs/testing": "^10.2.10",
|
|
"@types/cookie-parser": "^1.4.6",
|
|
"@types/engine.io": "^3.1.10",
|
|
"@types/express": "^4.17.21",
|
|
"@types/graphql-upload": "^16.0.5",
|
|
"@types/keyv": "^4.2.0",
|
|
"@types/lodash-es": "^4.17.11",
|
|
"@types/node": "^20.9.3",
|
|
"@types/nodemailer": "^6.4.14",
|
|
"@types/on-headers": "^1.0.3",
|
|
"@types/pretty-time": "^1.1.5",
|
|
"@types/sinon": "^17.0.2",
|
|
"@types/supertest": "^6.0.0",
|
|
"@types/ws": "^8.5.10",
|
|
"ava": "^6.0.0",
|
|
"c8": "^9.0.0",
|
|
"nodemon": "^3.0.1",
|
|
"sinon": "^17.0.1",
|
|
"supertest": "^6.3.3"
|
|
},
|
|
"ava": {
|
|
"timeout": "1m",
|
|
"extensions": {
|
|
"ts": "module"
|
|
},
|
|
"workerThreads": false,
|
|
"nodeArguments": [
|
|
"--trace-sigint",
|
|
"--loader",
|
|
"ts-node/esm/transpile-only.mjs",
|
|
"--es-module-specifier-resolution",
|
|
"node"
|
|
],
|
|
"files": [
|
|
"tests/**/*.spec.ts",
|
|
"tests/**/*.e2e.ts"
|
|
],
|
|
"require": [
|
|
"./src/prelude.ts"
|
|
],
|
|
"environmentVariables": {
|
|
"TS_NODE_PROJECT": "./tests/tsconfig.json",
|
|
"NODE_ENV": "test",
|
|
"MAILER_HOST": "0.0.0.0",
|
|
"MAILER_PORT": "1025",
|
|
"MAILER_USER": "noreply@toeverything.info",
|
|
"MAILER_PASSWORD": "affine",
|
|
"MAILER_SENDER": "noreply@toeverything.info",
|
|
"FEATURES_EARLY_ACCESS_PREVIEW": "false"
|
|
}
|
|
},
|
|
"nodemonConfig": {
|
|
"exec": "node",
|
|
"script": "./src/index.ts",
|
|
"nodeArgs": [
|
|
"--loader",
|
|
"ts-node/esm.mjs",
|
|
"--es-module-specifier-resolution",
|
|
"node"
|
|
],
|
|
"ignore": [
|
|
"**/__tests__/**",
|
|
"**/dist/**"
|
|
],
|
|
"env": {
|
|
"TS_NODE_TRANSPILE_ONLY": true,
|
|
"TS_NODE_PROJECT": "./tsconfig.json",
|
|
"DEBUG": "affine:*",
|
|
"FORCE_COLOR": true,
|
|
"DEBUG_COLORS": true
|
|
},
|
|
"delay": 1000
|
|
},
|
|
"c8": {
|
|
"reporter": [
|
|
"text",
|
|
"lcov"
|
|
],
|
|
"report-dir": ".coverage",
|
|
"exclude": [
|
|
"scripts",
|
|
"node_modules",
|
|
"**/*.spec.ts"
|
|
]
|
|
},
|
|
"stableVersion": "0.5.3",
|
|
"installConfig": {
|
|
"hoistingLimits": "workspaces"
|
|
}
|
|
}
|