@qelos/plugin-play 3.1.28 → 3.1.29
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 +30 -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 +1 -1
- package/src/app.ts +37 -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,16 @@ 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
|
+
trigger(LifecycleEvent.internalAppMounted, { app: internalApp });
|
|
90
|
+
return internalApp;
|
|
91
|
+
}
|
|
83
92
|
function playManifest() {
|
|
84
93
|
getApp().route({
|
|
85
94
|
method: 'GET',
|
|
@@ -144,4 +153,14 @@ function getHttps() {
|
|
|
144
153
|
}
|
|
145
154
|
return null;
|
|
146
155
|
}
|
|
156
|
+
function parseJsonRequest(req, body, done) {
|
|
157
|
+
try {
|
|
158
|
+
const bodyStr = body.toString();
|
|
159
|
+
done(null, bodyStr ? JSON.parse(bodyStr) : {});
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
err.statusCode = 400;
|
|
163
|
+
done(err, undefined);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
147
166
|
//# 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":"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,EAAE,iBAAiB,EAAC,MAAM,aAAa,CAAC;AACzD,OAAO,EAAC,cAAc,EAAE,OAAO,EAAC,MAAM,aAAa,CAAC;AAEpD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsC,CAAC;AAE5D,IAAI,GAAoB,CAAC;AACzB,IAAI,WAA4B,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAgE;IAC1F,SAAS,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;IAE1D,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,IAAI,iBAAiB,CAAC,IAAI,EAAE;QAC1B,iBAAiB,EAAE,CAAC;KACrB;IACD,IAAI;QACF,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC9F,MAAM,GAAG,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAC,CAAC,CAAC;QAEjE,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,GAAG,CAAC,sCAAsC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAChG,MAAM,WAAW,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,YAAY,EAAC,CAAC,CAAC;SAC1F;KAEF;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,eAAgC,EAAE,SAAwB;IAClF,OAAO,CAAC,cAAc,CAAC,eAAe,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAC,CAAC,CAAC;IAEvG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACzC,SAAS,CAAC,SAAS,CAAC,CAAC;IAErB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;QAClC,QAAQ,CAAC,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;KAChE;IACD,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;IAEtE,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,OAAO,GAAG,IAAI,SAAS,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAA2E,EAAE,OAA2B;IACrI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,MAAM,eAAe,GAAG;QACtB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG;QAC1B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG;QACtB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,GAAG;KACjC,CAAC;IACF,KAAK,CAAC,GAAG,CAAC;QACR,eAAe;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO;KACR,CAAC,CAAC;IACH,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,cAAc,GAAG;QACrB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG;QACpB,KAAK,EAAE,QAAQ,EAAE;KAClB,CAAC;IACF,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,EAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC;IACzE,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC9B,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,EAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC;IAE7E,GAAG,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,EAAC,OAAO,EAAE,QAAQ,EAAC,EAAE,gBAAgB,CAAC,CAAC;IAEpF,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAClC,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC9B,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC9B,YAAY,EAAE,CAAC;IACf,SAAS,EAAE,CAAC;IACZ,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IAEf,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QACtD,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;KACrG;IAED,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,EAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAA;IAExD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,cAAc,GAAG;QACrB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG;KACrB,CAAC;IACF,OAAO,CAAC,cAAc,CAAC,uBAAuB,EAAE,EAAC,cAAc,EAAC,CAAC,CAAA;IAEjE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACtC,WAAW,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,EAAC,OAAO,EAAE,QAAQ,EAAC,EAAE,gBAAgB,CAAC,CAAC;IAE5F,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,EAAC,GAAG,EAAE,WAAW,EAAC,CAAC,CAAA;IAE9D,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,EAAE,CAAC,KAAK,CAAC;QACb,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,QAAQ,CAAC,WAAW;QACzB,OAAO,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,EAAE,GAAG;YAC1B,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC;YACzE,GAAG,CAAC,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAC/C,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC,CAAA;IACF,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAA;AACrF,CAAC;AAED,SAAS,SAAS;IAChB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;QACxE,MAAM,EAAE,CAAC,KAAK,CAAC;YACb,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,SAAS;YACd,UAAU,EAAE,iBAAiB;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAChF,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;QAC1C,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;KACtE;AACH,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QACnB,OAAO;KACR;IACD,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE;QACxB,YAAY,EAAE;YACZ,MAAM,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE;YACtB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC;SACxE;KACsB,CAAC,CAAC;IAC3B,MAAM,EAAE,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,KAAK,CAAC,+BAA+B,EAAE,CAAC,CAAC;IAClD,SAAS,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE;QACvC,MAAM,KAAK,GAAG;YACZ,GAAG,YAAY;SAChB,CAAC;QACF,IAAI,YAAY,CAAC,WAAW,EAAE;YAC5B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAA;SAC7F;QACD,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,QAAQ;IACf,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;IACtD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;QACxB,OAAO;YACL,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE;YACnE,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE;SAClE,CAAA;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI;IACvC,IAAI;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAY,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;KAC/C;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,UAAU,GAAG,GAAG,CAAA;QACpB,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;KACrB;AACH,CAAC"}
|
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
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,20 @@ 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
|
+
trigger(LifecycleEvent.internalAppMounted, {app: internalApp})
|
|
120
|
+
|
|
121
|
+
return internalApp;
|
|
122
|
+
}
|
|
123
|
+
|
|
108
124
|
function playManifest() {
|
|
109
125
|
getApp().route({
|
|
110
126
|
method: 'GET',
|
|
@@ -172,4 +188,14 @@ function getHttps() {
|
|
|
172
188
|
}
|
|
173
189
|
}
|
|
174
190
|
return null;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function parseJsonRequest(req, body, done) {
|
|
194
|
+
try {
|
|
195
|
+
const bodyStr = body.toString() as string;
|
|
196
|
+
done(null, bodyStr ? JSON.parse(bodyStr) : {})
|
|
197
|
+
} catch (err) {
|
|
198
|
+
err.statusCode = 400
|
|
199
|
+
done(err, undefined)
|
|
200
|
+
}
|
|
175
201
|
}
|
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
|
}
|