diff --git a/packages/backend/server/package.json b/packages/backend/server/package.json index bdf4630d2e..94e17998f3 100644 --- a/packages/backend/server/package.json +++ b/packages/backend/server/package.json @@ -15,8 +15,8 @@ "test:copilot": "ava \"src/__tests__/**/copilot-*.spec.ts\"", "test:coverage": "c8 ava --concurrency 1 --serial", "test:copilot:coverage": "c8 ava --timeout=5m \"src/__tests__/**/copilot-*.spec.ts\"", - "data-migration": "cross-env NODE_ENV=script r ./src/data/index.ts", - "predeploy": "yarn prisma migrate deploy && NODE_ENV=script node --import ./scripts/register.js ./dist/data/index.js run", + "data-migration": "cross-env NODE_ENV=development r ./src/data/index.ts", + "predeploy": "yarn prisma migrate deploy && node --import ./scripts/register.js ./dist/data/index.js run", "postinstall": "prisma generate" }, "dependencies": { diff --git a/packages/backend/server/src/__tests__/app/doc.e2e.ts b/packages/backend/server/src/__tests__/app/doc.e2e.ts index b63626a087..c06860c224 100644 --- a/packages/backend/server/src/__tests__/app/doc.e2e.ts +++ b/packages/backend/server/src/__tests__/app/doc.e2e.ts @@ -19,6 +19,7 @@ test.before('start app', async t => { sync: false, renderer: false, doc: true, + script: false, } satisfies typeof AFFiNE.flavor; const app = await createTestingApp({ imports: [buildAppModule()], diff --git a/packages/backend/server/src/__tests__/app/graphql.e2e.ts b/packages/backend/server/src/__tests__/app/graphql.e2e.ts index c22d208e15..2b8fa8b1a1 100644 --- a/packages/backend/server/src/__tests__/app/graphql.e2e.ts +++ b/packages/backend/server/src/__tests__/app/graphql.e2e.ts @@ -21,6 +21,7 @@ test.before('start app', async t => { sync: false, renderer: false, doc: false, + script: false, } satisfies typeof AFFiNE.flavor; const app = await createTestingApp({ imports: [buildAppModule()], diff --git a/packages/backend/server/src/__tests__/app/renderer.e2e.ts b/packages/backend/server/src/__tests__/app/renderer.e2e.ts index d1edfb0fbe..900f011cda 100644 --- a/packages/backend/server/src/__tests__/app/renderer.e2e.ts +++ b/packages/backend/server/src/__tests__/app/renderer.e2e.ts @@ -19,6 +19,7 @@ test.before('start app', async t => { sync: false, renderer: true, doc: false, + script: false, } satisfies typeof AFFiNE.flavor; const app = await createTestingApp({ imports: [buildAppModule()], diff --git a/packages/backend/server/src/__tests__/app/sync.e2e.ts b/packages/backend/server/src/__tests__/app/sync.e2e.ts index aa6a414b1e..b67ccd9f82 100644 --- a/packages/backend/server/src/__tests__/app/sync.e2e.ts +++ b/packages/backend/server/src/__tests__/app/sync.e2e.ts @@ -19,6 +19,7 @@ test.before('start app', async t => { sync: true, renderer: false, doc: false, + script: false, } satisfies typeof AFFiNE.flavor; const app = await createTestingApp({ imports: [buildAppModule()], diff --git a/packages/backend/server/src/base/config/def.ts b/packages/backend/server/src/base/config/def.ts index 6e22163980..f25676c982 100644 --- a/packages/backend/server/src/base/config/def.ts +++ b/packages/backend/server/src/base/config/def.ts @@ -2,9 +2,16 @@ import type { LeafPaths } from '../utils/types'; import { AppStartupConfig } from './types'; export type EnvConfigType = 'string' | 'int' | 'float' | 'boolean'; -export type ServerFlavor = 'allinone' | 'graphql' | 'sync' | 'renderer' | 'doc'; +export type ServerFlavor = + | 'allinone' + | 'graphql' + | 'sync' + | 'renderer' + | 'doc' + | 'script'; + export type AFFINE_ENV = 'dev' | 'beta' | 'production'; -export type NODE_ENV = 'development' | 'test' | 'production' | 'script'; +export type NODE_ENV = 'development' | 'test' | 'production'; export enum DeploymentType { Affine = 'affine', @@ -29,7 +36,6 @@ export interface PreDefinedAFFiNEConfig { prod: boolean; dev: boolean; test: boolean; - script: boolean; }; readonly deploy: boolean; } diff --git a/packages/backend/server/src/base/config/default.ts b/packages/backend/server/src/base/config/default.ts index 30cf58d003..51b1092bb6 100644 --- a/packages/backend/server/src/base/config/default.ts +++ b/packages/backend/server/src/base/config/default.ts @@ -13,12 +13,15 @@ import { import { readEnv } from './env'; import { defaultStartupConfig } from './register'; +function expectFlavor(flavor: ServerFlavor, expected: ServerFlavor) { + return flavor === expected || flavor === 'allinone'; +} + function getPredefinedAFFiNEConfig(): PreDefinedAFFiNEConfig { const NODE_ENV = readEnv('NODE_ENV', 'production', [ 'development', 'test', 'production', - 'script', ]); const AFFINE_ENV = readEnv('AFFINE_ENV', 'production', [ 'dev', @@ -31,6 +34,7 @@ function getPredefinedAFFiNEConfig(): PreDefinedAFFiNEConfig { 'sync', 'renderer', 'doc', + 'script', ]); const deploymentType = readEnv( 'DEPLOYMENT_TYPE', @@ -49,7 +53,6 @@ function getPredefinedAFFiNEConfig(): PreDefinedAFFiNEConfig { prod: NODE_ENV === 'production', dev: NODE_ENV === 'development', test: NODE_ENV === 'test', - script: NODE_ENV === 'script', }; return { @@ -64,10 +67,11 @@ function getPredefinedAFFiNEConfig(): PreDefinedAFFiNEConfig { flavor: { type: flavor, allinone: flavor === 'allinone', - graphql: flavor === 'graphql' || flavor === 'allinone', - sync: flavor === 'sync' || flavor === 'allinone', - renderer: flavor === 'renderer' || flavor === 'allinone', - doc: flavor === 'doc' || flavor === 'allinone', + graphql: expectFlavor(flavor, 'graphql'), + sync: expectFlavor(flavor, 'sync'), + renderer: expectFlavor(flavor, 'renderer'), + doc: expectFlavor(flavor, 'doc'), + script: expectFlavor(flavor, 'script'), }, affine, node, diff --git a/packages/backend/server/src/data/index.ts b/packages/backend/server/src/data/index.ts index f9735c6e1a..3797a9badb 100644 --- a/packages/backend/server/src/data/index.ts +++ b/packages/backend/server/src/data/index.ts @@ -1,11 +1,10 @@ -import '../prelude'; - import { Logger } from '@nestjs/common'; import { CommandFactory } from 'nest-commander'; async function bootstrap() { - AFFiNE.metrics.enabled = false; - AFFiNE.doc.manager.enableUpdateAutoMerging = false; + process.env.SERVER_FLAVOR = 'script'; + + await import('../prelude'); const { CliAppModule } = await import('./app'); await CommandFactory.run(CliAppModule, new Logger()).catch(e => { console.error(e);