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