更新的形式化声明
This commit is contained in:
parent
2d720353a3
commit
50c6fd9071
|
|
@ -1,5 +1,8 @@
|
||||||
/// <reference path="../../src/typings/polyfill.d.ts" />
|
/// <reference path="../../src/typings/polyfill.d.ts" />
|
||||||
|
/// <reference types="node" />
|
||||||
import { EntityDict } from 'oak-domain/lib/types';
|
import { EntityDict } from 'oak-domain/lib/types';
|
||||||
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
|
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';
|
||||||
export declare function initialize<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>>(path: string, contextBuilder: (scene?: string) => (store: AsyncRowStore<ED, Cxt>) => Promise<Cxt>, dropIfExists?: boolean): Promise<void>;
|
import { BackendRuntimeContext } from 'oak-frontend-base';
|
||||||
|
import { IncomingHttpHeaders } from 'http';
|
||||||
|
export declare function initialize<ED extends EntityDict & BaseEntityDict, Cxt extends BackendRuntimeContext<ED>>(path: string, contextBuilder: (scene?: string) => (store: AsyncRowStore<ED, Cxt>, headers?: IncomingHttpHeaders) => Promise<Cxt>, dropIfExists?: boolean): Promise<void>;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.initialize = void 0;
|
exports.initialize = void 0;
|
||||||
|
/// <reference path="../typings/polyfill.d.ts" />
|
||||||
const oak_backend_base_1 = require("oak-backend-base");
|
const oak_backend_base_1 = require("oak-backend-base");
|
||||||
async function initialize(path, contextBuilder, dropIfExists) {
|
async function initialize(path, contextBuilder, dropIfExists) {
|
||||||
const appLoader = new oak_backend_base_1.AppLoader(path, contextBuilder);
|
const appLoader = new oak_backend_base_1.AppLoader(path, contextBuilder);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,10 @@
|
||||||
/// <reference path="../../src/typings/polyfill.d.ts" />
|
/// <reference path="../../src/typings/polyfill.d.ts" />
|
||||||
|
/// <reference types="node" />
|
||||||
import './polyfill';
|
import './polyfill';
|
||||||
|
import { IncomingHttpHeaders } from "http";
|
||||||
import { Connector, EntityDict } from 'oak-domain/lib/types';
|
import { Connector, EntityDict } from 'oak-domain/lib/types';
|
||||||
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
|
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 { SyncContext } from 'oak-domain/lib/store/SyncRowStore';
|
||||||
export declare function startup<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>, FrontCxt extends SyncContext<ED>>(path: string, contextBuilder: (scene?: string) => (store: AsyncRowStore<ED, Cxt>) => Promise<Cxt>, connector: Connector<ED, FrontCxt>, omitWatchers?: boolean, omitTimers?: boolean, routine?: (context: Cxt) => Promise<void>): Promise<void>;
|
export declare function startup<ED extends EntityDict & BaseEntityDict, Cxt extends BackendRuntimeContext<ED>, FrontCxt extends SyncContext<ED>>(path: string, contextBuilder: (scene?: string) => (store: AsyncRowStore<ED, Cxt>, header?: IncomingHttpHeaders) => Promise<Cxt>, connector: Connector<ED, FrontCxt>, omitWatchers?: boolean, omitTimers?: boolean, routine?: (context: Cxt) => Promise<void>): Promise<void>;
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ async function startup(path, contextBuilder, connector, omitWatchers, omitTimers
|
||||||
const router = new koa_router_1.default();
|
const router = new koa_router_1.default();
|
||||||
const serverConfig = require(path_1.default.join(path, '/configuration/server.json'));
|
const serverConfig = require(path_1.default.join(path, '/configuration/server.json'));
|
||||||
// 如果是开发环境,允许options
|
// 如果是开发环境,允许options
|
||||||
if (true) {
|
if (process.env.NODE_ENV === 'development') {
|
||||||
koa.use(async (ctx, next) => {
|
koa.use(async (ctx, next) => {
|
||||||
ctx.set('Access-Control-Allow-Origin', '*');
|
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');
|
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 { request } = ctx;
|
||||||
const data = request.files ? Object.assign({}, request.body, request.files) : request.body; // 这里处理multiPart的文件,不是太好
|
const data = request.files ? Object.assign({}, request.body, request.files) : request.body; // 这里处理multiPart的文件,不是太好
|
||||||
const { contextString, aspectName } = connector.parseRequestHeaders(request.headers);
|
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);
|
const { body, headers } = await connector.serializeResult(result, opRecords, request.headers, request.body, message);
|
||||||
ctx.response.body = body;
|
ctx.response.body = body;
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -91,6 +91,7 @@
|
||||||
"loader-utils": "^3.2.0",
|
"loader-utils": "^3.2.0",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"mini-css-extract-plugin": "^2.5.3",
|
"mini-css-extract-plugin": "^2.5.3",
|
||||||
|
"oak-frontend-base": "file:../oak-frontend-base",
|
||||||
"oak-backend-base": "file:../oak-backend-base",
|
"oak-backend-base": "file:../oak-backend-base",
|
||||||
"oak-domain": "file:../oak-domain",
|
"oak-domain": "file:../oak-domain",
|
||||||
"postcss": "^8.4.4",
|
"postcss": "^8.4.4",
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,14 @@
|
||||||
/// <reference path="../typings/polyfill.d.ts" />
|
/// <reference path="../typings/polyfill.d.ts" />
|
||||||
import PathLib from 'path';
|
|
||||||
import { AppLoader } from 'oak-backend-base';
|
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 { 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<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>>(
|
export async function initialize<ED extends EntityDict & BaseEntityDict, Cxt extends BackendRuntimeContext<ED>>(
|
||||||
path: string,
|
path: string,
|
||||||
contextBuilder: (scene?: string) => (store: AsyncRowStore<ED, Cxt>) => Promise<Cxt>,
|
contextBuilder: (scene?: string) => (store: AsyncRowStore<ED, Cxt>, headers?: IncomingHttpHeaders) => Promise<Cxt>,
|
||||||
dropIfExists?: boolean) {
|
dropIfExists?: boolean) {
|
||||||
const appLoader = new AppLoader(path, contextBuilder);
|
const appLoader = new AppLoader(path, contextBuilder);
|
||||||
await appLoader.mount(true);
|
await appLoader.mount(true);
|
||||||
|
|
|
||||||
|
|
@ -1,23 +1,24 @@
|
||||||
/// <reference path="../typings/polyfill.d.ts" />
|
/// <reference path="../typings/polyfill.d.ts" />
|
||||||
import './polyfill';
|
import './polyfill';
|
||||||
import { createServer } from "http";
|
import { IncomingHttpHeaders, createServer } from "http";
|
||||||
import PathLib from 'path';
|
import PathLib from 'path';
|
||||||
import Koa from 'koa';
|
import Koa from 'koa';
|
||||||
import KoaRouter from 'koa-router';
|
import KoaRouter from 'koa-router';
|
||||||
import KoaBody from 'koa-body';
|
import KoaBody from 'koa-body';
|
||||||
import { AppLoader } from 'oak-backend-base';
|
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 { 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 { SyncContext } from 'oak-domain/lib/store/SyncRowStore';
|
||||||
import { Server } from "socket.io";
|
import { Server } from "socket.io";
|
||||||
import { createAdapter } from "@socket.io/cluster-adapter";
|
import { createAdapter } from "@socket.io/cluster-adapter";
|
||||||
import { setupWorker } from "@socket.io/sticky";
|
import { setupWorker } from "@socket.io/sticky";
|
||||||
|
|
||||||
const DATA_SUBSCRIBER_NAMESPACE = '/ds';
|
const DATA_SUBSCRIBER_NAMESPACE = '/ds';
|
||||||
export async function startup<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>, FrontCxt extends SyncContext<ED>>(
|
export async function startup<ED extends EntityDict & BaseEntityDict, Cxt extends BackendRuntimeContext<ED>, FrontCxt extends SyncContext<ED>>(
|
||||||
path: string,
|
path: string,
|
||||||
contextBuilder: (scene?: string) => (store: AsyncRowStore<ED, Cxt>) => Promise<Cxt>,
|
contextBuilder: (scene?: string) => (store: AsyncRowStore<ED, Cxt>, header?: IncomingHttpHeaders) => Promise<Cxt>,
|
||||||
connector: Connector<ED, FrontCxt>,
|
connector: Connector<ED, FrontCxt>,
|
||||||
omitWatchers?: boolean,
|
omitWatchers?: boolean,
|
||||||
omitTimers?: boolean,
|
omitTimers?: boolean,
|
||||||
|
|
@ -89,7 +90,7 @@ export async function startup<ED extends EntityDict & BaseEntityDict, Cxt extend
|
||||||
const data = request.files ? Object.assign({}, request.body, request.files) : request.body; // 这里处理multiPart的文件,不是太好
|
const data = request.files ? Object.assign({}, request.body, request.files) : request.body; // 这里处理multiPart的文件,不是太好
|
||||||
const { contextString, aspectName } = connector.parseRequestHeaders(request.headers);
|
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);
|
const { body, headers } = await connector.serializeResult(result, opRecords, request.headers, request.body, message);
|
||||||
ctx.response.body = body;
|
ctx.response.body = body;
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,8 @@
|
||||||
/* Experimental Options */
|
/* Experimental Options */
|
||||||
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
|
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
|
||||||
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
|
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
|
||||||
/* Advanced Options */
|
/* Advanced Options */
|
||||||
|
"skipLibCheck": true,
|
||||||
"forceConsistentCasingInFileNames": true,
|
"forceConsistentCasingInFileNames": true,
|
||||||
"resolveJsonModule": true, /* Disallow inconsistently-cased references to the same file. */
|
"resolveJsonModule": true, /* Disallow inconsistently-cased references to the same file. */
|
||||||
"experimentalDecorators": true
|
"experimentalDecorators": true
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue