@qelos/plugin-play 3.1.28 → 3.1.30
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/dist/app.js +33 -11
- package/dist/app.js.map +1 -1
- package/dist/config.d.ts +3 -1
- package/dist/config.js +6 -2
- package/dist/config.js.map +1 -1
- package/dist/endpoints.d.ts +3 -0
- package/dist/endpoints.js +10 -0
- package/dist/endpoints.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lifecycle.d.ts +16 -1
- package/dist/lifecycle.js +7 -1
- package/dist/lifecycle.js.map +1 -1
- package/package.json +2 -2
- package/src/app.ts +41 -11
- package/src/config.ts +6 -2
- package/src/endpoints.ts +11 -0
- package/src/index.ts +1 -1
- package/src/lifecycle.ts +20 -2
package/dist/app.js
CHANGED
|
@@ -6,16 +6,24 @@ import { manifest } from './manifest';
|
|
|
6
6
|
import config, { setConfig } from './config';
|
|
7
7
|
import { getCallbackRoute, getFrontendAuthorizationRoute, getFrontendUnAuthorizationRoute, getRefreshTokenRoute, getRegisterRoute, verifyAccessToken, verifyCookieToken } from './authentication';
|
|
8
8
|
import handlers from './handlers';
|
|
9
|
-
import { endpoints } from './endpoints';
|
|
9
|
+
import { endpoints, internalEndpoints } from './endpoints';
|
|
10
10
|
import { LifecycleEvent, trigger } from './lifecycle';
|
|
11
11
|
const hooks = new Set();
|
|
12
12
|
let app;
|
|
13
|
+
let internalApp;
|
|
13
14
|
export async function start(options) {
|
|
14
15
|
configure(options?.manifest || {}, options?.config || {});
|
|
15
16
|
const app = getApp();
|
|
17
|
+
if (internalEndpoints.size) {
|
|
18
|
+
createInternalApp();
|
|
19
|
+
}
|
|
16
20
|
try {
|
|
17
21
|
console.log('start application for environment: ', config.dev ? 'development' : 'production');
|
|
18
22
|
await app.listen({ port: Number(config.port), host: config.host });
|
|
23
|
+
if (internalApp) {
|
|
24
|
+
console.log(`Internal Application listening on: ${config.internalHost}:${config.internalPort}`);
|
|
25
|
+
await internalApp.listen({ port: Number(config.internalPort), host: config.internalHost });
|
|
26
|
+
}
|
|
19
27
|
}
|
|
20
28
|
catch (err) {
|
|
21
29
|
app.log.error(err);
|
|
@@ -57,16 +65,7 @@ function createApp() {
|
|
|
57
65
|
trigger(LifecycleEvent.beforeCreate, { fastifyOptions, config, manifest });
|
|
58
66
|
app = fastify(fastifyOptions);
|
|
59
67
|
trigger(LifecycleEvent.beforeMount, { app, fastifyOptions, config, manifest });
|
|
60
|
-
app.addContentTypeParser('application/json', { parseAs: 'string' },
|
|
61
|
-
try {
|
|
62
|
-
const bodyStr = body.toString();
|
|
63
|
-
done(null, bodyStr ? JSON.parse(bodyStr) : {});
|
|
64
|
-
}
|
|
65
|
-
catch (err) {
|
|
66
|
-
err.statusCode = 400;
|
|
67
|
-
done(err, undefined);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
68
|
+
app.addContentTypeParser('application/json', { parseAs: 'string' }, parseJsonRequest);
|
|
70
69
|
app.route(getRefreshTokenRoute());
|
|
71
70
|
app.route(getRegisterRoute());
|
|
72
71
|
app.route(getCallbackRoute());
|
|
@@ -80,6 +79,19 @@ function createApp() {
|
|
|
80
79
|
trigger(LifecycleEvent.mounted, { app, config, manifest });
|
|
81
80
|
return app;
|
|
82
81
|
}
|
|
82
|
+
function createInternalApp() {
|
|
83
|
+
const fastifyOptions = {
|
|
84
|
+
logger: !!config.dev,
|
|
85
|
+
};
|
|
86
|
+
trigger(LifecycleEvent.beforeInternalAppCreate, { fastifyOptions });
|
|
87
|
+
internalApp = fastify(fastifyOptions);
|
|
88
|
+
internalApp.addContentTypeParser('application/json', { parseAs: 'string' }, parseJsonRequest);
|
|
89
|
+
internalEndpoints.forEach((routeOptions) => {
|
|
90
|
+
internalApp.route(routeOptions);
|
|
91
|
+
});
|
|
92
|
+
trigger(LifecycleEvent.internalAppMounted, { app: internalApp });
|
|
93
|
+
return internalApp;
|
|
94
|
+
}
|
|
83
95
|
function playManifest() {
|
|
84
96
|
getApp().route({
|
|
85
97
|
method: 'GET',
|
|
@@ -144,4 +156,14 @@ function getHttps() {
|
|
|
144
156
|
}
|
|
145
157
|
return null;
|
|
146
158
|
}
|
|
159
|
+
function parseJsonRequest(req, body, done) {
|
|
160
|
+
try {
|
|
161
|
+
const bodyStr = body.toString();
|
|
162
|
+
done(null, bodyStr ? JSON.parse(bodyStr) : {});
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
err.statusCode = 400;
|
|
166
|
+
done(err, undefined);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
147
169
|
//# sourceMappingURL=app.js.map
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,YAAY,EAAC,MAAM,IAAI,CAAC;AAC5C,OAAO,EAAC,IAAI,EAAC,MAAM,MAAM,CAAC;AAC1B,OAAO,OAA0B,MAAM,SAAS,CAAC;AAGjD,OAAO,MAAM,MAAM,iBAAiB,CAAA;AACpC,OAAO,EAAC,QAAQ,EAAkB,MAAM,YAAY,CAAC;AACrD,OAAO,MAAM,EAAE,EAAgB,SAAS,EAAC,MAAM,UAAU,CAAC;AAC1D,OAAO,EACL,gBAAgB,EAChB,6BAA6B,EAC7B,+BAA+B,EAC/B,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
package/dist/config.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { join } from 'path';
|
|
2
|
+
const port = Number(process.env.PORT || 1086);
|
|
3
|
+
const host = process.env.HOST || '0.0.0.0';
|
|
2
4
|
const config = {
|
|
3
|
-
port:
|
|
4
|
-
|
|
5
|
+
port: port,
|
|
6
|
+
internalPort: Number(process.env.INTERNAL_PORT || port + 1),
|
|
7
|
+
host: host,
|
|
8
|
+
internalHost: process.env.INTERNAL_HOST || host,
|
|
5
9
|
dev: process.env.NODE_ENV !== 'production',
|
|
6
10
|
refreshTokenSecret: process.env.REFRESH_TOKEN_SECRET,
|
|
7
11
|
accessTokenSecret: process.env.ACCESS_TOKEN_SECRET,
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC;AAC3C,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,IAAI;IACV,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,GAAG,CAAC,CAAC;IAC3D,IAAI,EAAE,IAAI;IACV,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI;IAC/C,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;IAC1C,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;IACpD,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;IAClD,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;IAClD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS;IAC/B,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;IACzC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;IACzC,cAAc,EAAE;QACd,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,QAAQ,CAAC;QAC9D,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG;KACzC;CACF,CAAC;AAIF,MAAM,UAAU,SAAS,CAAC,SAAwB;IAChD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC;AAED,eAAe,MAAM,CAAC"}
|
package/dist/endpoints.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import { RouteOptions } from 'fastify/types/route';
|
|
2
3
|
export interface QelosRouteParams extends RouteOptions {
|
|
3
4
|
verifyToken: boolean;
|
|
4
5
|
}
|
|
5
6
|
export declare const endpoints: Map<string, QelosRouteParams>;
|
|
7
|
+
export declare const internalEndpoints: Map<string, RouteOptions<import("fastify").RawServerDefault, import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>, import("fastify/types/route").RouteGenericInterface, unknown, import("fastify").FastifySchema, import("fastify").FastifyTypeProviderDefault, import("fastify").FastifyBaseLogger>>;
|
|
6
8
|
export declare function addProxyEndpoint(path: string, options: Partial<QelosRouteParams>): void;
|
|
7
9
|
export declare function addEndpoint(path: string, options: Partial<QelosRouteParams>): void;
|
|
10
|
+
export declare function addInternalEndpoint(path: string, options: Partial<RouteOptions>): void;
|
package/dist/endpoints.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { join } from 'path';
|
|
2
2
|
import manifest from './manifest';
|
|
3
3
|
export const endpoints = new Map();
|
|
4
|
+
export const internalEndpoints = new Map();
|
|
4
5
|
export function addProxyEndpoint(path, options) {
|
|
5
6
|
endpoints.set(join(manifest.apiPath, path), {
|
|
6
7
|
...options,
|
|
@@ -20,4 +21,13 @@ export function addEndpoint(path, options) {
|
|
|
20
21
|
verifyToken: 'verifyToken' in options ? options.verifyToken : true,
|
|
21
22
|
});
|
|
22
23
|
}
|
|
24
|
+
export function addInternalEndpoint(path, options) {
|
|
25
|
+
const method = options.method || 'GET';
|
|
26
|
+
internalEndpoints.set(method + '::' + path, {
|
|
27
|
+
...options,
|
|
28
|
+
url: path,
|
|
29
|
+
method,
|
|
30
|
+
handler: options.handler,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
23
33
|
//# sourceMappingURL=endpoints.js.map
|
package/dist/endpoints.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,MAAM,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAMlC,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,MAAM,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAMlC,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAA;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAwB,CAAA;AAEhE,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,OAAkC;IAC/E,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;QAC1C,GAAG,OAAO;QACV,GAAG,EAAE,IAAI;QACT,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,IAAI;KAClB,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAAkC;IAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,EAAE;QAClC,GAAG,OAAO;QACV,GAAG,EAAE,IAAI;QACT,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,aAAa,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;KACnE,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,OAA8B;IAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,iBAAiB,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,EAAE;QAC1C,GAAG,OAAO;QACV,GAAG,EAAE,IAAI;QACT,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export { ResponseError } from './response-error';
|
|
|
4
4
|
export { start, configure, registerToHook } from './app';
|
|
5
5
|
export { on, LifecycleEvent, BeforeConfigurePayload, BeforeMountPayload, ConfiguredPayload, MountedPayload, BeforeCreatePayload } from './lifecycle';
|
|
6
6
|
export { onRefreshToken, onManifest, onStoreUser, onNewTenant, onCallback } from './handlers';
|
|
7
|
-
export { addEndpoint, addProxyEndpoint } from './endpoints';
|
|
7
|
+
export { addEndpoint, addProxyEndpoint, addInternalEndpoint } from './endpoints';
|
|
8
8
|
export { getSdkForTenant, getSdk, getSdkForUrl } from './sdk';
|
|
9
9
|
export { addGroupedMicroFrontends, addMicroFrontend, MicroFrontend } from './micro-frontends';
|
|
10
10
|
export { addInjectable, Injectable } from './injectables';
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ export { ResponseError } from './response-error';
|
|
|
4
4
|
export { start, configure, registerToHook } from './app';
|
|
5
5
|
export { on, LifecycleEvent } from './lifecycle';
|
|
6
6
|
export { onRefreshToken, onManifest, onStoreUser, onNewTenant, onCallback } from './handlers';
|
|
7
|
-
export { addEndpoint, addProxyEndpoint } from './endpoints';
|
|
7
|
+
export { addEndpoint, addProxyEndpoint, addInternalEndpoint } from './endpoints';
|
|
8
8
|
export { getSdkForTenant, getSdk, getSdkForUrl } from './sdk';
|
|
9
9
|
export { addGroupedMicroFrontends, addMicroFrontend } from './micro-frontends';
|
|
10
10
|
export { addInjectable } from './injectables';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAC;AAEzB,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAC,KAAK,EAAE,SAAS,EAAE,cAAc,EAAC,MAAM,OAAO,CAAC;AACvD,OAAO,EACL,EAAE,EAAE,cAAc,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAC,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAC,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAC,WAAW,EAAE,gBAAgB,EAAC,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAC;AAEzB,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAC,KAAK,EAAE,SAAS,EAAE,cAAc,EAAC,MAAM,OAAO,CAAC;AACvD,OAAO,EACL,EAAE,EAAE,cAAc,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAC,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAC,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAC,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAC,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAC,eAAe,EAAE,MAAM,EAAE,YAAY,EAAC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAC,wBAAwB,EAAE,gBAAgB,EAAgB,MAAM,mBAAmB,CAAC;AAE5F,OAAO,EAAC,aAAa,EAAa,MAAM,eAAe,CAAC;AACxD,OAAO,EACL,MAAM,EACP,CAAA"}
|
package/dist/lifecycle.d.ts
CHANGED
|
@@ -6,7 +6,9 @@ export declare enum LifecycleEvent {
|
|
|
6
6
|
beforeMount = 1,
|
|
7
7
|
mounted = 2,
|
|
8
8
|
beforeConfigure = 3,
|
|
9
|
-
configured = 4
|
|
9
|
+
configured = 4,
|
|
10
|
+
beforeInternalAppCreate = 5,
|
|
11
|
+
internalAppMounted = 6
|
|
10
12
|
}
|
|
11
13
|
export interface BeforeCreatePayload {
|
|
12
14
|
fastifyOptions: {
|
|
@@ -40,13 +42,26 @@ export interface ConfiguredPayload {
|
|
|
40
42
|
config: ConfigOptions;
|
|
41
43
|
manifest: ManifestOptions;
|
|
42
44
|
}
|
|
45
|
+
export interface BeforeInternalAppCreatePayload {
|
|
46
|
+
fastifyOptions: {
|
|
47
|
+
logger: boolean;
|
|
48
|
+
https: string | null;
|
|
49
|
+
} & any;
|
|
50
|
+
}
|
|
51
|
+
export interface InternalAppMountedPayload {
|
|
52
|
+
app: FastifyInstance;
|
|
53
|
+
}
|
|
43
54
|
export declare function on(eventName: LifecycleEvent.beforeCreate, callback: (payload: BeforeCreatePayload) => unknown): void;
|
|
44
55
|
export declare function on(eventName: LifecycleEvent.beforeConfigure, callback: (payload: BeforeConfigurePayload) => unknown): void;
|
|
45
56
|
export declare function on(eventName: LifecycleEvent.beforeMount, callback: (payload: BeforeMountPayload) => unknown): void;
|
|
46
57
|
export declare function on(eventName: LifecycleEvent.configured, callback: (payload: ConfiguredPayload) => unknown): void;
|
|
47
58
|
export declare function on(eventName: LifecycleEvent.mounted, callback: (payload: MountedPayload) => unknown): void;
|
|
59
|
+
export declare function on(eventName: LifecycleEvent.beforeInternalAppCreate, callback: (payload: BeforeInternalAppCreatePayload) => unknown): void;
|
|
60
|
+
export declare function on(eventName: LifecycleEvent.internalAppMounted, callback: (payload: InternalAppMountedPayload) => unknown): void;
|
|
48
61
|
export declare function trigger(eventName: LifecycleEvent.beforeCreate, payload: BeforeCreatePayload): void;
|
|
49
62
|
export declare function trigger(eventName: LifecycleEvent.beforeConfigure, payload: BeforeConfigurePayload): void;
|
|
50
63
|
export declare function trigger(eventName: LifecycleEvent.beforeMount, payload: BeforeMountPayload): void;
|
|
51
64
|
export declare function trigger(eventName: LifecycleEvent.configured, payload: ConfiguredPayload): void;
|
|
52
65
|
export declare function trigger(eventName: LifecycleEvent.mounted, payload: MountedPayload): void;
|
|
66
|
+
export declare function trigger(eventName: LifecycleEvent.beforeInternalAppCreate, payload: BeforeInternalAppCreatePayload): void;
|
|
67
|
+
export declare function trigger(eventName: LifecycleEvent.internalAppMounted, payload: InternalAppMountedPayload): void;
|
package/dist/lifecycle.js
CHANGED
|
@@ -5,6 +5,8 @@ export var LifecycleEvent;
|
|
|
5
5
|
LifecycleEvent[LifecycleEvent["mounted"] = 2] = "mounted";
|
|
6
6
|
LifecycleEvent[LifecycleEvent["beforeConfigure"] = 3] = "beforeConfigure";
|
|
7
7
|
LifecycleEvent[LifecycleEvent["configured"] = 4] = "configured";
|
|
8
|
+
LifecycleEvent[LifecycleEvent["beforeInternalAppCreate"] = 5] = "beforeInternalAppCreate";
|
|
9
|
+
LifecycleEvent[LifecycleEvent["internalAppMounted"] = 6] = "internalAppMounted";
|
|
8
10
|
})(LifecycleEvent || (LifecycleEvent = {}));
|
|
9
11
|
const callbacks = {
|
|
10
12
|
[LifecycleEvent.beforeCreate]: new Set(),
|
|
@@ -12,13 +14,17 @@ const callbacks = {
|
|
|
12
14
|
[LifecycleEvent.mounted]: new Set(),
|
|
13
15
|
[LifecycleEvent.beforeConfigure]: new Set(),
|
|
14
16
|
[LifecycleEvent.configured]: new Set(),
|
|
17
|
+
[LifecycleEvent.beforeInternalAppCreate]: new Set(),
|
|
18
|
+
[LifecycleEvent.internalAppMounted]: new Set(),
|
|
15
19
|
};
|
|
16
20
|
export function on(eventName, callback) {
|
|
17
21
|
callbacks[eventName].add(callback);
|
|
18
22
|
}
|
|
19
23
|
export function trigger(eventName, payload) {
|
|
20
|
-
callbacks[eventName]
|
|
24
|
+
const set = callbacks[eventName];
|
|
25
|
+
set?.forEach(callback => {
|
|
21
26
|
callback(payload);
|
|
27
|
+
set.delete(callback);
|
|
22
28
|
});
|
|
23
29
|
}
|
|
24
30
|
//# sourceMappingURL=lifecycle.js.map
|
package/dist/lifecycle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,cAQX;AARD,WAAY,cAAc;IACxB,mEAAY,CAAA;IACZ,iEAAW,CAAA;IACX,yDAAO,CAAA;IACP,yEAAe,CAAA;IACf,+DAAU,CAAA;IACV,yFAAuB,CAAA;IACvB,+EAAkB,CAAA;AACpB,CAAC,EARW,cAAc,KAAd,cAAc,QAQzB;AA2CD,MAAM,SAAS,GAAG;IAChB,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,IAAI,GAAG,EAA0B;IAChE,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,IAAI,GAAG,EAA0B;IAC/D,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,EAA0B;IAC3D,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,IAAI,GAAG,EAA0B;IACnE,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,IAAI,GAAG,EAA0B;IAC9D,CAAC,cAAc,CAAC,uBAAuB,CAAC,EAAE,IAAI,GAAG,EAA0B;IAC3E,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,IAAI,GAAG,EAA0B;CACvE,CAAC;AASF,MAAM,UAAU,EAAE,CAAC,SAAyB,EAAE,QAAQ;IACpD,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AASD,MAAM,UAAU,OAAO,CAAC,SAAyB,EAAE,OAAO;IACxD,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE;QACtB,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qelos/plugin-play",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.30",
|
|
4
4
|
"description": "Play a plugin for Qelos!",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"@fastify/cookie": "^8.3.0",
|
|
20
20
|
"@fastify/static": "^6.5.0",
|
|
21
21
|
"@qelos/sdk": "^3.1.24",
|
|
22
|
-
"@qelos/web-sdk": "^3.1.
|
|
22
|
+
"@qelos/web-sdk": "^3.1.30",
|
|
23
23
|
"fastify": "^4.3.0",
|
|
24
24
|
"jsonwebtoken": "^9.0.0",
|
|
25
25
|
"undici": "^5.8.0"
|
package/src/app.ts
CHANGED
|
@@ -16,20 +16,30 @@ import {
|
|
|
16
16
|
verifyCookieToken
|
|
17
17
|
} from './authentication';
|
|
18
18
|
import handlers from './handlers';
|
|
19
|
-
import {endpoints} from './endpoints';
|
|
19
|
+
import {endpoints, internalEndpoints} from './endpoints';
|
|
20
20
|
import {LifecycleEvent, trigger} from './lifecycle';
|
|
21
21
|
|
|
22
22
|
const hooks = new Set<{ subscribedEvent, path, handler }>();
|
|
23
23
|
|
|
24
24
|
let app: FastifyInstance;
|
|
25
|
+
let internalApp: FastifyInstance;
|
|
25
26
|
|
|
26
27
|
export async function start(options?: { manifest?: ManifestOptions, config?: ConfigOptions }) {
|
|
27
28
|
configure(options?.manifest || {}, options?.config || {});
|
|
28
29
|
|
|
29
30
|
const app = getApp();
|
|
31
|
+
if (internalEndpoints.size) {
|
|
32
|
+
createInternalApp();
|
|
33
|
+
}
|
|
30
34
|
try {
|
|
31
35
|
console.log('start application for environment: ', config.dev ? 'development' : 'production');
|
|
32
|
-
await app.listen({port: Number(config.port), host: config.host})
|
|
36
|
+
await app.listen({port: Number(config.port), host: config.host});
|
|
37
|
+
|
|
38
|
+
if (internalApp) {
|
|
39
|
+
console.log(`Internal Application listening on: ${config.internalHost}:${config.internalPort}`);
|
|
40
|
+
await internalApp.listen({port: Number(config.internalPort), host: config.internalHost});
|
|
41
|
+
}
|
|
42
|
+
|
|
33
43
|
} catch (err) {
|
|
34
44
|
app.log.error(err);
|
|
35
45
|
process.exit(1);
|
|
@@ -78,15 +88,7 @@ function createApp(): FastifyInstance {
|
|
|
78
88
|
app = fastify(fastifyOptions);
|
|
79
89
|
trigger(LifecycleEvent.beforeMount, {app, fastifyOptions, config, manifest});
|
|
80
90
|
|
|
81
|
-
app.addContentTypeParser('application/json', {parseAs: 'string'},
|
|
82
|
-
try {
|
|
83
|
-
const bodyStr = body.toString() as string;
|
|
84
|
-
done(null, bodyStr ? JSON.parse(bodyStr) : {})
|
|
85
|
-
} catch (err) {
|
|
86
|
-
err.statusCode = 400
|
|
87
|
-
done(err, undefined)
|
|
88
|
-
}
|
|
89
|
-
});
|
|
91
|
+
app.addContentTypeParser('application/json', {parseAs: 'string'}, parseJsonRequest);
|
|
90
92
|
|
|
91
93
|
app.route(getRefreshTokenRoute());
|
|
92
94
|
app.route(getRegisterRoute());
|
|
@@ -105,6 +107,24 @@ function createApp(): FastifyInstance {
|
|
|
105
107
|
return app;
|
|
106
108
|
}
|
|
107
109
|
|
|
110
|
+
function createInternalApp() {
|
|
111
|
+
const fastifyOptions = {
|
|
112
|
+
logger: !!config.dev,
|
|
113
|
+
};
|
|
114
|
+
trigger(LifecycleEvent.beforeInternalAppCreate, {fastifyOptions})
|
|
115
|
+
|
|
116
|
+
internalApp = fastify(fastifyOptions);
|
|
117
|
+
internalApp.addContentTypeParser('application/json', {parseAs: 'string'}, parseJsonRequest);
|
|
118
|
+
|
|
119
|
+
internalEndpoints.forEach((routeOptions) => {
|
|
120
|
+
internalApp.route(routeOptions);
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
trigger(LifecycleEvent.internalAppMounted, {app: internalApp})
|
|
124
|
+
|
|
125
|
+
return internalApp;
|
|
126
|
+
}
|
|
127
|
+
|
|
108
128
|
function playManifest() {
|
|
109
129
|
getApp().route({
|
|
110
130
|
method: 'GET',
|
|
@@ -172,4 +192,14 @@ function getHttps() {
|
|
|
172
192
|
}
|
|
173
193
|
}
|
|
174
194
|
return null;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
function parseJsonRequest(req, body, done) {
|
|
198
|
+
try {
|
|
199
|
+
const bodyStr = body.toString() as string;
|
|
200
|
+
done(null, bodyStr ? JSON.parse(bodyStr) : {})
|
|
201
|
+
} catch (err) {
|
|
202
|
+
err.statusCode = 400
|
|
203
|
+
done(err, undefined)
|
|
204
|
+
}
|
|
175
205
|
}
|
package/src/config.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { join } from 'path';
|
|
2
2
|
|
|
3
|
+
const port = Number(process.env.PORT || 1086);
|
|
4
|
+
const host = process.env.HOST || '0.0.0.0';
|
|
3
5
|
const config = {
|
|
4
|
-
port:
|
|
5
|
-
|
|
6
|
+
port: port,
|
|
7
|
+
internalPort: Number(process.env.INTERNAL_PORT || port + 1),
|
|
8
|
+
host: host,
|
|
9
|
+
internalHost: process.env.INTERNAL_HOST || host,
|
|
6
10
|
dev: process.env.NODE_ENV !== 'production',
|
|
7
11
|
refreshTokenSecret: process.env.REFRESH_TOKEN_SECRET,
|
|
8
12
|
accessTokenSecret: process.env.ACCESS_TOKEN_SECRET,
|
package/src/endpoints.ts
CHANGED
|
@@ -7,6 +7,7 @@ export interface QelosRouteParams extends RouteOptions {
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
export const endpoints = new Map<string, QelosRouteParams>()
|
|
10
|
+
export const internalEndpoints = new Map<string, RouteOptions>()
|
|
10
11
|
|
|
11
12
|
export function addProxyEndpoint(path: string, options: Partial<QelosRouteParams>) {
|
|
12
13
|
endpoints.set(join(manifest.apiPath, path), {
|
|
@@ -28,3 +29,13 @@ export function addEndpoint(path: string, options: Partial<QelosRouteParams>) {
|
|
|
28
29
|
verifyToken: 'verifyToken' in options ? options.verifyToken : true,
|
|
29
30
|
})
|
|
30
31
|
}
|
|
32
|
+
|
|
33
|
+
export function addInternalEndpoint(path: string, options: Partial<RouteOptions>) {
|
|
34
|
+
const method = options.method || 'GET';
|
|
35
|
+
internalEndpoints.set(method + '::' + path, {
|
|
36
|
+
...options,
|
|
37
|
+
url: path,
|
|
38
|
+
method,
|
|
39
|
+
handler: options.handler,
|
|
40
|
+
})
|
|
41
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -10,7 +10,7 @@ export {
|
|
|
10
10
|
BeforeCreatePayload
|
|
11
11
|
} from './lifecycle';
|
|
12
12
|
export {onRefreshToken, onManifest, onStoreUser, onNewTenant, onCallback} from './handlers';
|
|
13
|
-
export {addEndpoint, addProxyEndpoint} from './endpoints'
|
|
13
|
+
export {addEndpoint, addProxyEndpoint, addInternalEndpoint} from './endpoints'
|
|
14
14
|
export {getSdkForTenant, getSdk, getSdkForUrl} from './sdk';
|
|
15
15
|
export {addGroupedMicroFrontends, addMicroFrontend, MicroFrontend} from './micro-frontends';
|
|
16
16
|
|
package/src/lifecycle.ts
CHANGED
|
@@ -8,6 +8,8 @@ export enum LifecycleEvent {
|
|
|
8
8
|
mounted,
|
|
9
9
|
beforeConfigure,
|
|
10
10
|
configured,
|
|
11
|
+
beforeInternalAppCreate,
|
|
12
|
+
internalAppMounted
|
|
11
13
|
}
|
|
12
14
|
|
|
13
15
|
|
|
@@ -42,6 +44,14 @@ export interface ConfiguredPayload {
|
|
|
42
44
|
manifest: ManifestOptions,
|
|
43
45
|
}
|
|
44
46
|
|
|
47
|
+
export interface BeforeInternalAppCreatePayload {
|
|
48
|
+
fastifyOptions: {logger: boolean, https: string | null} & any,
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface InternalAppMountedPayload {
|
|
52
|
+
app: FastifyInstance,
|
|
53
|
+
}
|
|
54
|
+
|
|
45
55
|
|
|
46
56
|
const callbacks = {
|
|
47
57
|
[LifecycleEvent.beforeCreate]: new Set<((payload) => unknown)>(),
|
|
@@ -49,6 +59,8 @@ const callbacks = {
|
|
|
49
59
|
[LifecycleEvent.mounted]: new Set<((payload) => unknown)>(),
|
|
50
60
|
[LifecycleEvent.beforeConfigure]: new Set<((payload) => unknown)>(),
|
|
51
61
|
[LifecycleEvent.configured]: new Set<((payload) => unknown)>(),
|
|
62
|
+
[LifecycleEvent.beforeInternalAppCreate]: new Set<((payload) => unknown)>(),
|
|
63
|
+
[LifecycleEvent.internalAppMounted]: new Set<((payload) => unknown)>(),
|
|
52
64
|
};
|
|
53
65
|
|
|
54
66
|
export function on(eventName: LifecycleEvent.beforeCreate, callback: (payload: BeforeCreatePayload) => unknown): void;
|
|
@@ -56,6 +68,8 @@ export function on(eventName: LifecycleEvent.beforeConfigure, callback: (payload
|
|
|
56
68
|
export function on(eventName: LifecycleEvent.beforeMount, callback: (payload: BeforeMountPayload) => unknown): void;
|
|
57
69
|
export function on(eventName: LifecycleEvent.configured, callback: (payload: ConfiguredPayload) => unknown): void;
|
|
58
70
|
export function on(eventName: LifecycleEvent.mounted, callback: (payload: MountedPayload) => unknown): void;
|
|
71
|
+
export function on(eventName: LifecycleEvent.beforeInternalAppCreate, callback: (payload: BeforeInternalAppCreatePayload) => unknown): void;
|
|
72
|
+
export function on(eventName: LifecycleEvent.internalAppMounted, callback: (payload: InternalAppMountedPayload) => unknown): void;
|
|
59
73
|
export function on(eventName: LifecycleEvent, callback) {
|
|
60
74
|
callbacks[eventName].add(callback);
|
|
61
75
|
}
|
|
@@ -65,8 +79,12 @@ export function trigger(eventName: LifecycleEvent.beforeConfigure, payload: Befo
|
|
|
65
79
|
export function trigger(eventName: LifecycleEvent.beforeMount, payload: BeforeMountPayload): void;
|
|
66
80
|
export function trigger(eventName: LifecycleEvent.configured, payload: ConfiguredPayload): void;
|
|
67
81
|
export function trigger(eventName: LifecycleEvent.mounted, payload: MountedPayload): void;
|
|
82
|
+
export function trigger(eventName: LifecycleEvent.beforeInternalAppCreate, payload: BeforeInternalAppCreatePayload): void;
|
|
83
|
+
export function trigger(eventName: LifecycleEvent.internalAppMounted, payload: InternalAppMountedPayload): void;
|
|
68
84
|
export function trigger(eventName: LifecycleEvent, payload) {
|
|
69
|
-
callbacks[eventName]
|
|
70
|
-
|
|
85
|
+
const set = callbacks[eventName];
|
|
86
|
+
set?.forEach(callback => {
|
|
87
|
+
callback(payload);
|
|
88
|
+
set.delete(callback);
|
|
71
89
|
})
|
|
72
90
|
}
|