From 50c6fd9071c9f8225666d67cf654de65b2432efe Mon Sep 17 00:00:00 2001 From: Xc Date: Tue, 19 Sep 2023 11:56:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=9A=84=E5=BD=A2=E5=BC=8F?= =?UTF-8?q?=E5=8C=96=E5=A3=B0=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/server/initialize.d.ts | 7 +++++-- lib/server/initialize.js | 1 + lib/server/start.d.ts | 7 +++++-- lib/server/start.js | 4 ++-- package.json | 1 + src/server/initialize.ts | 11 ++++++----- src/server/start.ts | 13 +++++++------ tsconfig.json | 3 ++- 8 files changed, 29 insertions(+), 18 deletions(-) diff --git a/lib/server/initialize.d.ts b/lib/server/initialize.d.ts index b95ea81..83768d3 100644 --- a/lib/server/initialize.d.ts +++ b/lib/server/initialize.d.ts @@ -1,5 +1,8 @@ /// +/// import { EntityDict } from 'oak-domain/lib/types'; import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain'; -import { AsyncContext, AsyncRowStore } from 'oak-domain/lib/store/AsyncRowStore'; -export declare function initialize>(path: string, contextBuilder: (scene?: string) => (store: AsyncRowStore) => Promise, dropIfExists?: boolean): Promise; +import { AsyncRowStore } from 'oak-domain/lib/store/AsyncRowStore'; +import { BackendRuntimeContext } from 'oak-frontend-base'; +import { IncomingHttpHeaders } from 'http'; +export declare function initialize>(path: string, contextBuilder: (scene?: string) => (store: AsyncRowStore, headers?: IncomingHttpHeaders) => Promise, dropIfExists?: boolean): Promise; diff --git a/lib/server/initialize.js b/lib/server/initialize.js index 5e45659..62e66fc 100644 --- a/lib/server/initialize.js +++ b/lib/server/initialize.js @@ -1,6 +1,7 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.initialize = void 0; +/// const oak_backend_base_1 = require("oak-backend-base"); async function initialize(path, contextBuilder, dropIfExists) { const appLoader = new oak_backend_base_1.AppLoader(path, contextBuilder); diff --git a/lib/server/start.d.ts b/lib/server/start.d.ts index 0ee138a..5e4ef85 100644 --- a/lib/server/start.d.ts +++ b/lib/server/start.d.ts @@ -1,7 +1,10 @@ /// +/// import './polyfill'; +import { IncomingHttpHeaders } from "http"; import { Connector, EntityDict } from 'oak-domain/lib/types'; import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain'; -import { AsyncContext, AsyncRowStore } from 'oak-domain/lib/store/AsyncRowStore'; +import { AsyncRowStore } from 'oak-domain/lib/store/AsyncRowStore'; +import { BackendRuntimeContext } from 'oak-frontend-base'; import { SyncContext } from 'oak-domain/lib/store/SyncRowStore'; -export declare function startup, FrontCxt extends SyncContext>(path: string, contextBuilder: (scene?: string) => (store: AsyncRowStore) => Promise, connector: Connector, omitWatchers?: boolean, omitTimers?: boolean, routine?: (context: Cxt) => Promise): Promise; +export declare function startup, FrontCxt extends SyncContext>(path: string, contextBuilder: (scene?: string) => (store: AsyncRowStore, header?: IncomingHttpHeaders) => Promise, connector: Connector, omitWatchers?: boolean, omitTimers?: boolean, routine?: (context: Cxt) => Promise): Promise; diff --git a/lib/server/start.js b/lib/server/start.js index bfa2077..d607c7b 100644 --- a/lib/server/start.js +++ b/lib/server/start.js @@ -61,7 +61,7 @@ async function startup(path, contextBuilder, connector, omitWatchers, omitTimers const router = new koa_router_1.default(); const serverConfig = require(path_1.default.join(path, '/configuration/server.json')); // 如果是开发环境,允许options - if (true) { + if (process.env.NODE_ENV === 'development') { koa.use(async (ctx, next) => { ctx.set('Access-Control-Allow-Origin', '*'); ctx.set('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With, oak-cxt, oak-aspect'); @@ -78,7 +78,7 @@ async function startup(path, contextBuilder, connector, omitWatchers, omitTimers const { request } = ctx; const data = request.files ? Object.assign({}, request.body, request.files) : request.body; // 这里处理multiPart的文件,不是太好 const { contextString, aspectName } = connector.parseRequestHeaders(request.headers); - const { result, opRecords, message } = await appLoader.execAspect(aspectName, contextString, data); + const { result, opRecords, message } = await appLoader.execAspect(aspectName, request.headers, contextString, data); const { body, headers } = await connector.serializeResult(result, opRecords, request.headers, request.body, message); ctx.response.body = body; return; diff --git a/package.json b/package.json index 80fb1ee..1637a5b 100644 --- a/package.json +++ b/package.json @@ -91,6 +91,7 @@ "loader-utils": "^3.2.0", "lodash": "^4.17.21", "mini-css-extract-plugin": "^2.5.3", + "oak-frontend-base": "file:../oak-frontend-base", "oak-backend-base": "file:../oak-backend-base", "oak-domain": "file:../oak-domain", "postcss": "^8.4.4", diff --git a/src/server/initialize.ts b/src/server/initialize.ts index b5c3f52..40a3a4b 100644 --- a/src/server/initialize.ts +++ b/src/server/initialize.ts @@ -1,13 +1,14 @@ /// -import PathLib from 'path'; import { AppLoader } from 'oak-backend-base'; -import { Context, EntityDict, RowStore } from 'oak-domain/lib/types'; +import { EntityDict } from 'oak-domain/lib/types'; import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain'; -import { AsyncContext, AsyncRowStore } from 'oak-domain/lib/store/AsyncRowStore'; +import { AsyncRowStore } from 'oak-domain/lib/store/AsyncRowStore'; +import { BackendRuntimeContext } from 'oak-frontend-base'; +import { IncomingHttpHeaders } from 'http'; -export async function initialize>( +export async function initialize>( path: string, - contextBuilder: (scene?: string) => (store: AsyncRowStore) => Promise, + contextBuilder: (scene?: string) => (store: AsyncRowStore, headers?: IncomingHttpHeaders) => Promise, dropIfExists?: boolean) { const appLoader = new AppLoader(path, contextBuilder); await appLoader.mount(true); diff --git a/src/server/start.ts b/src/server/start.ts index a4a7ec7..3a85572 100644 --- a/src/server/start.ts +++ b/src/server/start.ts @@ -1,23 +1,24 @@ /// import './polyfill'; -import { createServer } from "http"; +import { IncomingHttpHeaders, createServer } from "http"; import PathLib from 'path'; import Koa from 'koa'; import KoaRouter from 'koa-router'; import KoaBody from 'koa-body'; import { AppLoader } from 'oak-backend-base'; -import { OakException, Connector, EntityDict, EndpointItem, RowStore } from 'oak-domain/lib/types'; +import { OakException, Connector, EntityDict } from 'oak-domain/lib/types'; import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain'; -import { AsyncContext, AsyncRowStore } from 'oak-domain/lib/store/AsyncRowStore'; +import { AsyncRowStore } from 'oak-domain/lib/store/AsyncRowStore'; +import { BackendRuntimeContext } from 'oak-frontend-base'; import { SyncContext } from 'oak-domain/lib/store/SyncRowStore'; import { Server } from "socket.io"; import { createAdapter } from "@socket.io/cluster-adapter"; import { setupWorker } from "@socket.io/sticky"; const DATA_SUBSCRIBER_NAMESPACE = '/ds'; -export async function startup, FrontCxt extends SyncContext>( +export async function startup, FrontCxt extends SyncContext>( path: string, - contextBuilder: (scene?: string) => (store: AsyncRowStore) => Promise, + contextBuilder: (scene?: string) => (store: AsyncRowStore, header?: IncomingHttpHeaders) => Promise, connector: Connector, omitWatchers?: boolean, omitTimers?: boolean, @@ -89,7 +90,7 @@ export async function startup