@nocobase/server 0.7.0-alpha.26 → 0.7.0-alpha.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/app-manager.d.ts +2 -2
- package/esm/app-manager.js +12 -1
- package/esm/app-manager.js.map +1 -1
- package/lib/app-manager.d.ts +2 -2
- package/lib/app-manager.js +12 -1
- package/lib/app-manager.js.map +1 -1
- package/package.json +6 -6
package/esm/app-manager.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import EventEmitter from 'events';
|
|
3
|
-
import http, { IncomingMessage } from 'http';
|
|
3
|
+
import http, { IncomingMessage, ServerResponse } from 'http';
|
|
4
4
|
import Application, { ApplicationOptions } from './application';
|
|
5
5
|
declare type AppSelector = (req: IncomingMessage) => Application | string | undefined | null;
|
|
6
6
|
export declare class AppManager extends EventEmitter {
|
|
@@ -13,7 +13,7 @@ export declare class AppManager extends EventEmitter {
|
|
|
13
13
|
setAppSelector(selector: AppSelector): void;
|
|
14
14
|
listen(...args: any[]): http.Server;
|
|
15
15
|
getApplication(appName: string): Promise<null | Application>;
|
|
16
|
-
callback(): (req:
|
|
16
|
+
callback(): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
|
|
17
17
|
emitAsync: (event: string | symbol, ...args: any[]) => Promise<boolean>;
|
|
18
18
|
}
|
|
19
19
|
export {};
|
package/esm/app-manager.js
CHANGED
|
@@ -59,7 +59,18 @@ export class AppManager extends EventEmitter {
|
|
|
59
59
|
return (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
60
60
|
let handleApp = this.appSelector(req) || this.app;
|
|
61
61
|
if (typeof handleApp === 'string') {
|
|
62
|
-
handleApp =
|
|
62
|
+
handleApp = yield this.getApplication(handleApp);
|
|
63
|
+
if (!handleApp) {
|
|
64
|
+
res.statusCode = 404;
|
|
65
|
+
return res.end(JSON.stringify({
|
|
66
|
+
redirectTo: process.env.APP_NOT_FOUND_REDIRECT_TO,
|
|
67
|
+
errors: [
|
|
68
|
+
{
|
|
69
|
+
message: 'Not Found',
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
63
74
|
}
|
|
64
75
|
handleApp.callback()(req, res);
|
|
65
76
|
});
|
package/esm/app-manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-manager.js","sourceRoot":"","sources":["../src/app-manager.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,
|
|
1
|
+
{"version":3,"file":"app-manager.js","sourceRoot":"","sources":["../src/app-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import { applyMixins, AsyncEmitter } from '@nocobase/utils';\nimport EventEmitter from 'events';\nimport http, { IncomingMessage, ServerResponse } from 'http';\nimport Application, { ApplicationOptions } from './application';\n\ntype AppSelector = (req: IncomingMessage) => Application | string | undefined | null;\n\nexport class AppManager extends EventEmitter {\n public applications: Map<string, Application> = new Map<string, Application>();\n\n constructor(private app: Application) {\n super();\n\n app.on('beforeStop', async (mainApp, options) => {\n return await Promise.all(\n [...this.applications.values()].map((application: Application) => application.stop(options)),\n );\n });\n\n app.on('afterDestroy', async (mainApp, options) => {\n return await Promise.all(\n [...this.applications.values()].map((application: Application) => application.destroy(options)),\n );\n });\n }\n\n appSelector: AppSelector = (req: IncomingMessage) => this.app;\n\n createApplication(name: string, options: ApplicationOptions): Application {\n const application = new Application(options);\n this.applications.set(name, application);\n return application;\n }\n\n async removeApplication(name: string) {\n const application = this.applications.get(name);\n if (!application) {\n return;\n }\n\n await application.destroy();\n\n this.applications.delete(name);\n }\n\n setAppSelector(selector: AppSelector) {\n this.appSelector = selector;\n }\n\n listen(...args) {\n const server = http.createServer(this.callback());\n return server.listen(...args);\n }\n\n async getApplication(appName: string): Promise<null | Application> {\n await this.emitAsync('beforeGetApplication', {\n appManager: this,\n name: appName,\n });\n\n return this.applications.get(appName);\n }\n\n callback() {\n return async (req: IncomingMessage, res: ServerResponse) => {\n let handleApp: any = this.appSelector(req) || this.app;\n\n if (typeof handleApp === 'string') {\n handleApp = await this.getApplication(handleApp);\n if (!handleApp) {\n res.statusCode = 404;\n return res.end(\n JSON.stringify({\n redirectTo: process.env.APP_NOT_FOUND_REDIRECT_TO,\n errors: [\n {\n message: 'Not Found',\n },\n ],\n }),\n );\n }\n }\n\n handleApp.callback()(req, res);\n };\n }\n\n emitAsync: (event: string | symbol, ...args: any[]) => Promise<boolean>;\n}\n\napplyMixins(AppManager, [AsyncEmitter]);\n"]}
|
package/lib/app-manager.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import EventEmitter from 'events';
|
|
3
|
-
import http, { IncomingMessage } from 'http';
|
|
3
|
+
import http, { IncomingMessage, ServerResponse } from 'http';
|
|
4
4
|
import Application, { ApplicationOptions } from './application';
|
|
5
5
|
declare type AppSelector = (req: IncomingMessage) => Application | string | undefined | null;
|
|
6
6
|
export declare class AppManager extends EventEmitter {
|
|
@@ -13,7 +13,7 @@ export declare class AppManager extends EventEmitter {
|
|
|
13
13
|
setAppSelector(selector: AppSelector): void;
|
|
14
14
|
listen(...args: any[]): http.Server;
|
|
15
15
|
getApplication(appName: string): Promise<null | Application>;
|
|
16
|
-
callback(): (req:
|
|
16
|
+
callback(): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
|
|
17
17
|
emitAsync: (event: string | symbol, ...args: any[]) => Promise<boolean>;
|
|
18
18
|
}
|
|
19
19
|
export {};
|
package/lib/app-manager.js
CHANGED
|
@@ -65,7 +65,18 @@ class AppManager extends events_1.default {
|
|
|
65
65
|
return (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
66
66
|
let handleApp = this.appSelector(req) || this.app;
|
|
67
67
|
if (typeof handleApp === 'string') {
|
|
68
|
-
handleApp =
|
|
68
|
+
handleApp = yield this.getApplication(handleApp);
|
|
69
|
+
if (!handleApp) {
|
|
70
|
+
res.statusCode = 404;
|
|
71
|
+
return res.end(JSON.stringify({
|
|
72
|
+
redirectTo: process.env.APP_NOT_FOUND_REDIRECT_TO,
|
|
73
|
+
errors: [
|
|
74
|
+
{
|
|
75
|
+
message: 'Not Found',
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
69
80
|
}
|
|
70
81
|
handleApp.callback()(req, res);
|
|
71
82
|
});
|
package/lib/app-manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-manager.js","sourceRoot":"","sources":["../src/app-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4D;AAC5D,oDAAkC;AAClC,
|
|
1
|
+
{"version":3,"file":"app-manager.js","sourceRoot":"","sources":["../src/app-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import { applyMixins, AsyncEmitter } from '@nocobase/utils';\nimport EventEmitter from 'events';\nimport http, { IncomingMessage, ServerResponse } from 'http';\nimport Application, { ApplicationOptions } from './application';\n\ntype AppSelector = (req: IncomingMessage) => Application | string | undefined | null;\n\nexport class AppManager extends EventEmitter {\n public applications: Map<string, Application> = new Map<string, Application>();\n\n constructor(private app: Application) {\n super();\n\n app.on('beforeStop', async (mainApp, options) => {\n return await Promise.all(\n [...this.applications.values()].map((application: Application) => application.stop(options)),\n );\n });\n\n app.on('afterDestroy', async (mainApp, options) => {\n return await Promise.all(\n [...this.applications.values()].map((application: Application) => application.destroy(options)),\n );\n });\n }\n\n appSelector: AppSelector = (req: IncomingMessage) => this.app;\n\n createApplication(name: string, options: ApplicationOptions): Application {\n const application = new Application(options);\n this.applications.set(name, application);\n return application;\n }\n\n async removeApplication(name: string) {\n const application = this.applications.get(name);\n if (!application) {\n return;\n }\n\n await application.destroy();\n\n this.applications.delete(name);\n }\n\n setAppSelector(selector: AppSelector) {\n this.appSelector = selector;\n }\n\n listen(...args) {\n const server = http.createServer(this.callback());\n return server.listen(...args);\n }\n\n async getApplication(appName: string): Promise<null | Application> {\n await this.emitAsync('beforeGetApplication', {\n appManager: this,\n name: appName,\n });\n\n return this.applications.get(appName);\n }\n\n callback() {\n return async (req: IncomingMessage, res: ServerResponse) => {\n let handleApp: any = this.appSelector(req) || this.app;\n\n if (typeof handleApp === 'string') {\n handleApp = await this.getApplication(handleApp);\n if (!handleApp) {\n res.statusCode = 404;\n return res.end(\n JSON.stringify({\n redirectTo: process.env.APP_NOT_FOUND_REDIRECT_TO,\n errors: [\n {\n message: 'Not Found',\n },\n ],\n }),\n );\n }\n }\n\n handleApp.callback()(req, res);\n };\n }\n\n emitAsync: (event: string | symbol, ...args: any[]) => Promise<boolean>;\n}\n\napplyMixins(AppManager, [AsyncEmitter]);\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nocobase/server",
|
|
3
|
-
"version": "0.7.0-alpha.
|
|
3
|
+
"version": "0.7.0-alpha.27",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"types": "./lib/index.d.ts",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@koa/cors": "^3.1.0",
|
|
20
20
|
"@koa/router": "^9.4.0",
|
|
21
|
-
"@nocobase/acl": "0.7.0-alpha.
|
|
22
|
-
"@nocobase/actions": "0.7.0-alpha.
|
|
23
|
-
"@nocobase/database": "0.7.0-alpha.
|
|
24
|
-
"@nocobase/resourcer": "0.7.0-alpha.
|
|
21
|
+
"@nocobase/acl": "0.7.0-alpha.27",
|
|
22
|
+
"@nocobase/actions": "0.7.0-alpha.27",
|
|
23
|
+
"@nocobase/database": "0.7.0-alpha.27",
|
|
24
|
+
"@nocobase/resourcer": "0.7.0-alpha.27",
|
|
25
25
|
"chalk": "^4.1.1",
|
|
26
26
|
"commander": "^8.1.0",
|
|
27
27
|
"dotenv": "^8.2.0",
|
|
@@ -32,5 +32,5 @@
|
|
|
32
32
|
"koa-static": "^5.0.0",
|
|
33
33
|
"lodash": "^4.17.21"
|
|
34
34
|
},
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "ebfe11ff09bf50b4b2322cbbad65b4ea936fdb71"
|
|
36
36
|
}
|