更新的形式化声明

This commit is contained in:
Xu Chang 2023-09-19 11:56:19 +08:00
parent 2d720353a3
commit 50c6fd9071
8 changed files with 29 additions and 18 deletions

View File

@ -1,5 +1,8 @@
/// <reference path="../../src/typings/polyfill.d.ts" />
/// <reference types="node" />
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<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>>(path: string, contextBuilder: (scene?: string) => (store: AsyncRowStore<ED, Cxt>) => Promise<Cxt>, dropIfExists?: boolean): Promise<void>;
import { AsyncRowStore } from 'oak-domain/lib/store/AsyncRowStore';
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>;

View File

@ -1,6 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.initialize = void 0;
/// <reference path="../typings/polyfill.d.ts" />
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);

View File

@ -1,7 +1,10 @@
/// <reference path="../../src/typings/polyfill.d.ts" />
/// <reference types="node" />
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<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>;

View File

@ -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;

View File

@ -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",

View File

@ -1,13 +1,14 @@
/// <reference path="../typings/polyfill.d.ts" />
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<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>>(
export async function initialize<ED extends EntityDict & BaseEntityDict, Cxt extends BackendRuntimeContext<ED>>(
path: string,
contextBuilder: (scene?: string) => (store: AsyncRowStore<ED, Cxt>) => Promise<Cxt>,
contextBuilder: (scene?: string) => (store: AsyncRowStore<ED, Cxt>, headers?: IncomingHttpHeaders) => Promise<Cxt>,
dropIfExists?: boolean) {
const appLoader = new AppLoader(path, contextBuilder);
await appLoader.mount(true);

View File

@ -1,23 +1,24 @@
/// <reference path="../typings/polyfill.d.ts" />
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<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,
contextBuilder: (scene?: string) => (store: AsyncRowStore<ED, Cxt>) => Promise<Cxt>,
contextBuilder: (scene?: string) => (store: AsyncRowStore<ED, Cxt>, header?: IncomingHttpHeaders) => Promise<Cxt>,
connector: Connector<ED, FrontCxt>,
omitWatchers?: 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 { 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;

View File

@ -61,7 +61,8 @@
/* Experimental Options */
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
/* Advanced Options */
/* Advanced Options */
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true, /* Disallow inconsistently-cased references to the same file. */
"experimentalDecorators": true