modelence 0.8.0 → 0.9.0-dev.0
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/authConfig.d.ts +68 -0
- package/dist/app/authConfig.d.ts.map +1 -0
- package/dist/app/authConfig.js +8 -0
- package/dist/app/authConfig.js.map +1 -0
- package/dist/app/backendApi.d.ts +29 -0
- package/dist/app/backendApi.d.ts.map +1 -0
- package/dist/app/backendApi.js +69 -0
- package/dist/app/backendApi.js.map +1 -0
- package/dist/app/email.d.ts +3 -0
- package/dist/app/email.d.ts.map +1 -0
- package/dist/app/email.js +8 -0
- package/dist/app/email.js.map +1 -0
- package/dist/app/emailConfig.d.ts +27 -0
- package/dist/app/emailConfig.d.ts.map +1 -0
- package/dist/app/emailConfig.js +8 -0
- package/dist/app/emailConfig.js.map +1 -0
- package/dist/app/index.d.ts +20 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/index.js +258 -0
- package/dist/app/index.js.map +1 -0
- package/dist/app/loggerProcess.d.ts +5 -0
- package/dist/app/loggerProcess.d.ts.map +1 -0
- package/dist/app/loggerProcess.js +90 -0
- package/dist/app/loggerProcess.js.map +1 -0
- package/dist/app/metrics.d.ts +6 -0
- package/dist/app/metrics.d.ts.map +1 -0
- package/dist/app/metrics.js +92 -0
- package/dist/app/metrics.js.map +1 -0
- package/dist/app/module.d.ts +77 -0
- package/dist/app/module.d.ts.map +1 -0
- package/dist/app/module.js +46 -0
- package/dist/app/module.js.map +1 -0
- package/dist/app/server.d.ts +37 -0
- package/dist/app/server.d.ts.map +1 -0
- package/dist/app/server.js +198 -0
- package/dist/app/server.js.map +1 -0
- package/dist/app/state.d.ts +19 -0
- package/dist/app/state.d.ts.map +1 -0
- package/dist/app/state.js +27 -0
- package/dist/app/state.js.map +1 -0
- package/dist/app/websocketConfig.d.ts +7 -0
- package/dist/app/websocketConfig.d.ts.map +1 -0
- package/dist/app/websocketConfig.js +8 -0
- package/dist/app/websocketConfig.js.map +1 -0
- package/dist/auth/client/index.d.ts +69 -0
- package/dist/auth/client/index.d.ts.map +1 -0
- package/dist/auth/client/index.js +79 -0
- package/dist/auth/client/index.js.map +1 -0
- package/dist/auth/db.d.ts +176 -0
- package/dist/auth/db.d.ts.map +1 -0
- package/dist/auth/db.js +117 -0
- package/dist/auth/db.js.map +1 -0
- package/dist/auth/deleteUser.d.ts +5 -0
- package/dist/auth/deleteUser.d.ts.map +1 -0
- package/dist/auth/deleteUser.js +34 -0
- package/dist/auth/deleteUser.js.map +1 -0
- package/dist/auth/disposableEmails.d.ts +6 -0
- package/dist/auth/disposableEmails.d.ts.map +1 -0
- package/dist/auth/disposableEmails.js +47 -0
- package/dist/auth/disposableEmails.js.map +1 -0
- package/dist/auth/index.d.ts +7 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +33 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/login.d.ts +9 -0
- package/dist/auth/login.d.ts.map +1 -0
- package/dist/auth/login.js +100 -0
- package/dist/auth/login.js.map +1 -0
- package/dist/auth/password.d.ts +14 -0
- package/dist/auth/password.d.ts.map +1 -0
- package/dist/auth/password.js +26 -0
- package/dist/auth/password.js.map +1 -0
- package/dist/auth/profile.d.ts +10 -0
- package/dist/auth/profile.d.ts.map +1 -0
- package/dist/auth/profile.js +13 -0
- package/dist/auth/profile.js.map +1 -0
- package/dist/auth/providers/github.d.ts +3 -0
- package/dist/auth/providers/github.d.ts.map +1 -0
- package/dist/auth/providers/github.js +122 -0
- package/dist/auth/providers/github.js.map +1 -0
- package/dist/auth/providers/google.d.ts +3 -0
- package/dist/auth/providers/google.d.ts.map +1 -0
- package/dist/auth/providers/google.js +108 -0
- package/dist/auth/providers/google.js.map +1 -0
- package/dist/auth/providers/oauth-common.d.ts +13 -0
- package/dist/auth/providers/oauth-common.d.ts.map +1 -0
- package/dist/auth/providers/oauth-common.js +109 -0
- package/dist/auth/providers/oauth-common.js.map +1 -0
- package/dist/auth/resetPassword.d.ts +10 -0
- package/dist/auth/resetPassword.d.ts.map +1 -0
- package/dist/auth/resetPassword.js +108 -0
- package/dist/auth/resetPassword.js.map +1 -0
- package/dist/auth/role.d.ts +8 -0
- package/dist/auth/role.d.ts.map +1 -0
- package/dist/auth/role.js +37 -0
- package/dist/auth/role.js.map +1 -0
- package/dist/auth/session.d.ts +24 -0
- package/dist/auth/session.d.ts.map +1 -0
- package/dist/auth/session.js +84 -0
- package/dist/auth/session.js.map +1 -0
- package/dist/auth/signup.d.ts +3 -0
- package/dist/auth/signup.d.ts.map +1 -0
- package/dist/auth/signup.js +89 -0
- package/dist/auth/signup.js.map +1 -0
- package/dist/auth/templates/emailVerficationTemplate.d.ts +6 -0
- package/dist/auth/templates/emailVerficationTemplate.d.ts.map +1 -0
- package/dist/auth/templates/emailVerficationTemplate.js +9 -0
- package/dist/auth/templates/emailVerficationTemplate.js.map +1 -0
- package/dist/auth/types.d.ts +22 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +2 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/auth/user.d.ts +5 -0
- package/dist/auth/user.d.ts.map +1 -0
- package/dist/auth/user.js +152 -0
- package/dist/auth/user.js.map +1 -0
- package/dist/auth/validators.d.ts +3 -0
- package/dist/auth/validators.d.ts.map +1 -0
- package/dist/auth/validators.js +8 -0
- package/dist/auth/validators.js.map +1 -0
- package/dist/auth/verification.d.ts +8 -0
- package/dist/auth/verification.d.ts.map +1 -0
- package/dist/auth/verification.js +94 -0
- package/dist/auth/verification.js.map +1 -0
- package/dist/bin/auth.d.ts +4 -0
- package/dist/bin/auth.d.ts.map +1 -0
- package/dist/bin/auth.js +48 -0
- package/dist/bin/auth.js.map +1 -0
- package/dist/bin/build.d.ts +2 -0
- package/dist/bin/build.d.ts.map +1 -0
- package/dist/bin/build.js +78 -0
- package/dist/bin/build.js.map +1 -0
- package/dist/bin/config.d.ts +11 -0
- package/dist/bin/config.d.ts.map +1 -0
- package/dist/bin/config.js +91 -0
- package/dist/bin/config.js.map +1 -0
- package/dist/bin/deploy.d.ts +6 -0
- package/dist/bin/deploy.d.ts.map +1 -0
- package/dist/bin/deploy.js +129 -0
- package/dist/bin/deploy.js.map +1 -0
- package/dist/bin/dev.d.ts +2 -0
- package/dist/bin/dev.d.ts.map +1 -0
- package/dist/bin/dev.js +14 -0
- package/dist/bin/dev.js.map +1 -0
- package/dist/bin/modelence.d.ts +3 -0
- package/dist/bin/modelence.d.ts.map +1 -0
- package/dist/bin/modelence.js +57 -3
- package/dist/bin/modelence.js.map +1 -1
- package/dist/bin/setup.d.ts +5 -0
- package/dist/bin/setup.d.ts.map +1 -0
- package/dist/bin/setup.js +91 -0
- package/dist/bin/setup.js.map +1 -0
- package/dist/bin/start.d.ts +2 -0
- package/dist/bin/start.d.ts.map +1 -0
- package/dist/bin/start.js +15 -0
- package/dist/bin/start.js.map +1 -0
- package/dist/client/AppProvider.d.ts +8 -0
- package/dist/client/AppProvider.d.ts.map +1 -0
- package/dist/client/AppProvider.js +31 -0
- package/dist/client/AppProvider.js.map +1 -0
- package/dist/client/errorHandler.d.ts +4 -0
- package/dist/client/errorHandler.d.ts.map +1 -0
- package/dist/client/errorHandler.js +10 -0
- package/dist/client/errorHandler.js.map +1 -0
- package/dist/client/localStorage.d.ts +3 -0
- package/dist/client/localStorage.d.ts.map +1 -0
- package/dist/client/localStorage.js +14 -0
- package/dist/client/localStorage.js.map +1 -0
- package/dist/client/method.d.ts +6 -0
- package/dist/client/method.d.ts.map +1 -0
- package/dist/client/method.js +52 -0
- package/dist/client/method.js.map +1 -0
- package/dist/client/renderApp.d.ts +9 -0
- package/dist/client/renderApp.d.ts.map +1 -0
- package/dist/client/renderApp.js +28 -0
- package/dist/client/renderApp.js.map +1 -0
- package/dist/client/session.d.ts +34 -0
- package/dist/client/session.d.ts.map +1 -0
- package/dist/client/session.js +83 -0
- package/dist/client/session.js.map +1 -0
- package/dist/client.d.ts +10 -133
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +14 -1
- package/dist/client.js.map +1 -1
- package/dist/config/client.d.ts +10 -0
- package/dist/config/client.d.ts.map +1 -0
- package/dist/config/client.js +14 -0
- package/dist/config/client.js.map +1 -0
- package/dist/config/server.d.ts +48 -0
- package/dist/config/server.d.ts.map +1 -0
- package/dist/config/server.js +85 -0
- package/dist/config/server.js.map +1 -0
- package/dist/config/sync.d.ts +2 -0
- package/dist/config/sync.d.ts.map +1 -0
- package/dist/config/sync.js +32 -0
- package/dist/config/sync.js.map +1 -0
- package/dist/config/types.d.ts +19 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/cron/jobs.d.ts +13 -0
- package/dist/cron/jobs.d.ts.map +1 -0
- package/dist/cron/jobs.js +155 -0
- package/dist/cron/jobs.js.map +1 -0
- package/dist/cron/types.d.ts +29 -0
- package/dist/cron/types.d.ts.map +1 -0
- package/dist/cron/types.js +2 -0
- package/dist/cron/types.js.map +1 -0
- package/dist/data/schemaSerializer.d.ts +37 -0
- package/dist/data/schemaSerializer.d.ts.map +1 -0
- package/dist/data/schemaSerializer.js +104 -0
- package/dist/data/schemaSerializer.js.map +1 -0
- package/dist/{types-WgRbQ-tj.d.ts → data/store.d.ts} +13 -231
- package/dist/data/store.d.ts.map +1 -0
- package/dist/data/store.js +501 -0
- package/dist/data/store.js.map +1 -0
- package/dist/data/types.d.ts +47 -0
- package/dist/data/types.d.ts.map +1 -0
- package/dist/data/types.js +35 -0
- package/dist/data/types.js.map +1 -0
- package/dist/db/client.d.ts +5 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +41 -0
- package/dist/db/client.js.map +1 -0
- package/dist/error.d.ts +16 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +24 -0
- package/dist/error.js.map +1 -0
- package/dist/index.d.ts +6 -31
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lock/db.d.ts +19 -0
- package/dist/lock/db.d.ts.map +1 -0
- package/dist/lock/db.js +28 -0
- package/dist/lock/db.js.map +1 -0
- package/dist/lock/helpers.d.ts +28 -0
- package/dist/lock/helpers.d.ts.map +1 -0
- package/dist/lock/helpers.js +107 -0
- package/dist/lock/helpers.js.map +1 -0
- package/dist/lock/index.d.ts +4 -0
- package/dist/lock/index.d.ts.map +1 -0
- package/dist/lock/index.js +4 -0
- package/dist/lock/index.js.map +1 -0
- package/dist/lock/module.d.ts +7 -0
- package/dist/lock/module.d.ts.map +1 -0
- package/dist/lock/module.js +9 -0
- package/dist/lock/module.js.map +1 -0
- package/dist/methods/index.d.ts +7 -0
- package/dist/methods/index.d.ts.map +1 -0
- package/dist/methods/index.js +65 -0
- package/dist/methods/index.js.map +1 -0
- package/dist/methods/serialize.d.ts +15 -0
- package/dist/methods/serialize.d.ts.map +1 -0
- package/dist/methods/serialize.js +56 -0
- package/dist/methods/serialize.js.map +1 -0
- package/dist/methods/types.d.ts +37 -0
- package/dist/methods/types.d.ts.map +1 -0
- package/dist/methods/types.js +2 -0
- package/dist/methods/types.js.map +1 -0
- package/dist/migration/db.d.ts +17 -0
- package/dist/migration/db.d.ts.map +1 -0
- package/dist/migration/db.js +13 -0
- package/dist/migration/db.js.map +1 -0
- package/dist/migration/index.d.ts +11 -0
- package/dist/migration/index.d.ts.map +1 -0
- package/dist/migration/index.js +85 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/mongo.d.ts +2 -3
- package/dist/mongo.d.ts.map +1 -0
- package/dist/mongo.js +2 -1
- package/dist/mongo.js.map +1 -1
- package/dist/rate-limit/db.d.ts +29 -0
- package/dist/rate-limit/db.d.ts.map +1 -0
- package/dist/rate-limit/db.js +25 -0
- package/dist/rate-limit/db.js.map +1 -0
- package/dist/rate-limit/index.d.ts +4 -0
- package/dist/rate-limit/index.d.ts.map +1 -0
- package/dist/rate-limit/index.js +6 -0
- package/dist/rate-limit/index.js.map +1 -0
- package/dist/rate-limit/rules.d.ts +22 -0
- package/dist/rate-limit/rules.d.ts.map +1 -0
- package/dist/rate-limit/rules.js +112 -0
- package/dist/rate-limit/rules.js.map +1 -0
- package/dist/rate-limit/types.d.ts +12 -0
- package/dist/rate-limit/types.d.ts.map +1 -0
- package/dist/rate-limit/types.js +2 -0
- package/dist/rate-limit/types.js.map +1 -0
- package/dist/routes/handler.d.ts +4 -0
- package/dist/routes/handler.d.ts.map +1 -0
- package/dist/routes/handler.js +66 -0
- package/dist/routes/handler.js.map +1 -0
- package/dist/routes/types.d.ts +45 -0
- package/dist/routes/types.d.ts.map +1 -0
- package/dist/routes/types.js +2 -0
- package/dist/routes/types.js.map +1 -0
- package/dist/server.d.ts +19 -551
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +15 -18
- package/dist/server.js.map +1 -1
- package/dist/system/index.d.ts +4 -0
- package/dist/system/index.d.ts.map +1 -0
- package/dist/system/index.js +21 -0
- package/dist/system/index.js.map +1 -0
- package/dist/telemetry/index.d.ts +11 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +79 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry.d.ts +2 -11
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +1 -1
- package/dist/telemetry.js.map +1 -1
- package/dist/time.d.ts +8 -0
- package/dist/time.d.ts.map +1 -0
- package/dist/time.js +13 -0
- package/dist/time.js.map +1 -0
- package/dist/types/email.d.ts +25 -0
- package/dist/types/email.d.ts.map +1 -0
- package/dist/types/email.js +2 -0
- package/dist/types/email.js.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types.d.ts +10 -7
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +15 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/viteServer.d.ts +13 -0
- package/dist/viteServer.d.ts.map +1 -0
- package/dist/viteServer.js +132 -0
- package/dist/viteServer.js.map +1 -0
- package/dist/websocket/client.d.ts +9 -0
- package/dist/websocket/client.d.ts.map +1 -0
- package/dist/websocket/client.js +16 -0
- package/dist/websocket/client.js.map +1 -0
- package/dist/websocket/clientChannel.d.ts +9 -0
- package/dist/websocket/clientChannel.d.ts.map +1 -0
- package/dist/websocket/clientChannel.js +26 -0
- package/dist/websocket/clientChannel.js.map +1 -0
- package/dist/websocket/serverChannel.d.ts +14 -0
- package/dist/websocket/serverChannel.d.ts.map +1 -0
- package/dist/websocket/serverChannel.js +21 -0
- package/dist/websocket/serverChannel.js.map +1 -0
- package/dist/websocket/socketio/client.d.ts +4 -0
- package/dist/websocket/socketio/client.d.ts.map +1 -0
- package/dist/websocket/socketio/client.js +48 -0
- package/dist/websocket/socketio/client.js.map +1 -0
- package/dist/websocket/socketio/server.d.ts +10 -0
- package/dist/websocket/socketio/server.d.ts.map +1 -0
- package/dist/websocket/socketio/server.js +80 -0
- package/dist/websocket/socketio/server.js.map +1 -0
- package/dist/websocket/types.d.ts +45 -0
- package/dist/websocket/types.d.ts.map +1 -0
- package/dist/websocket/types.js +2 -0
- package/dist/websocket/types.js.map +1 -0
- package/package.json +5 -6
- package/dist/chunk-3S2FFBNS.js +0 -2
- package/dist/chunk-3S2FFBNS.js.map +0 -1
- package/dist/chunk-3YAV3UUU.js +0 -3
- package/dist/chunk-3YAV3UUU.js.map +0 -1
- package/dist/chunk-55J6XMHW.js +0 -2
- package/dist/chunk-55J6XMHW.js.map +0 -1
- package/dist/chunk-C3UESBRX.js +0 -2
- package/dist/chunk-C3UESBRX.js.map +0 -1
- package/dist/chunk-DO5TZLF5.js +0 -2
- package/dist/chunk-DO5TZLF5.js.map +0 -1
- package/dist/chunk-PB6WQQ4L.js +0 -3
- package/dist/chunk-PB6WQQ4L.js.map +0 -1
- package/dist/index-CwdohC5n.d.ts +0 -15
- package/dist/package-3YQBVIVQ.js +0 -2
- package/dist/package-3YQBVIVQ.js.map +0 -1
- package/dist/types-Ds1ESQSs.d.ts +0 -106
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import io from 'socket.io-client';
|
|
2
|
+
import { getLocalStorageSession } from '../../client/localStorage';
|
|
3
|
+
let socketClient;
|
|
4
|
+
function init(props) {
|
|
5
|
+
socketClient = io('/', {
|
|
6
|
+
auth: {
|
|
7
|
+
token: getLocalStorageSession()?.authToken,
|
|
8
|
+
},
|
|
9
|
+
});
|
|
10
|
+
props.channels?.forEach((channel) => channel.init());
|
|
11
|
+
}
|
|
12
|
+
function on({ category, listener, }) {
|
|
13
|
+
socketClient.on(category, listener);
|
|
14
|
+
}
|
|
15
|
+
function once({ category, listener, }) {
|
|
16
|
+
socketClient.once(category, listener);
|
|
17
|
+
}
|
|
18
|
+
function off({ category, listener, }) {
|
|
19
|
+
socketClient.off(category, listener);
|
|
20
|
+
}
|
|
21
|
+
function emit({ eventName, category, id }) {
|
|
22
|
+
socketClient.emit(eventName, `${category}:${id}`);
|
|
23
|
+
}
|
|
24
|
+
function joinChannel({ category, id }) {
|
|
25
|
+
emit({
|
|
26
|
+
eventName: 'joinChannel',
|
|
27
|
+
category,
|
|
28
|
+
id,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function leaveChannel({ category, id }) {
|
|
32
|
+
emit({
|
|
33
|
+
eventName: 'leaveChannel',
|
|
34
|
+
category,
|
|
35
|
+
id,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
const websocketProvider = {
|
|
39
|
+
init,
|
|
40
|
+
on,
|
|
41
|
+
once,
|
|
42
|
+
off,
|
|
43
|
+
emit,
|
|
44
|
+
joinChannel,
|
|
45
|
+
leaveChannel,
|
|
46
|
+
};
|
|
47
|
+
export default websocketProvider;
|
|
48
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/websocket/socketio/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,IAAI,YAAoB,CAAC;AAEzB,SAAS,IAAI,CAAC,KAA8C;IAC1D,YAAY,GAAG,EAAE,CAAC,GAAG,EAAE;QACrB,IAAI,EAAE;YACJ,KAAK,EAAE,sBAAsB,EAAE,EAAE,SAAS;SAC3C;KACF,CAAC,CAAC;IAEH,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,EAAE,CAAc,EACvB,QAAQ,EACR,QAAQ,GAIT;IACC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,IAAI,CAAc,EACzB,QAAQ,EACR,QAAQ,GAIT;IACC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,GAAG,CAAc,EACxB,QAAQ,EACR,QAAQ,GAIT;IACC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAuD;IAC5F,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAoC;IACrE,IAAI,CAAC;QACH,SAAS,EAAE,aAAa;QACxB,QAAQ;QACR,EAAE;KACH,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAoC;IACtE,IAAI,CAAC;QACH,SAAS,EAAE,cAAc;QACzB,QAAQ;QACR,EAAE;KACH,CAAC,CAAC;AACL,CAAC;AAED,MAAM,iBAAiB,GAA4B;IACjD,IAAI;IACJ,EAAE;IACF,IAAI;IACJ,GAAG;IACH,IAAI;IACJ,WAAW;IACX,YAAY;CACb,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Server } from 'http';
|
|
2
|
+
import { WebsocketServerProvider } from '../types';
|
|
3
|
+
import { ServerChannel } from '../serverChannel';
|
|
4
|
+
export declare function init({ httpServer, channels, }: {
|
|
5
|
+
httpServer: Server;
|
|
6
|
+
channels: ServerChannel[];
|
|
7
|
+
}): Promise<void>;
|
|
8
|
+
declare const _default: WebsocketServerProvider;
|
|
9
|
+
export default _default;
|
|
10
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/websocket/socketio/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAK9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOjD,wBAAsB,IAAI,CAAC,EACzB,UAAU,EACV,QAAQ,GACT,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B,iBAiFA;wBASI,uBAAuB;AAH5B,wBAG6B"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Server as SocketServer } from 'socket.io';
|
|
2
|
+
import { createAdapter } from '@socket.io/mongo-adapter';
|
|
3
|
+
import { authenticate } from '../../auth';
|
|
4
|
+
import { getClient } from '../../db/client';
|
|
5
|
+
let socketServer = null;
|
|
6
|
+
const COLLECTION = '_modelenceSocketio';
|
|
7
|
+
export async function init({ httpServer, channels, }) {
|
|
8
|
+
const mongodbClient = getClient();
|
|
9
|
+
console.log('Initializing Socket.IO server...');
|
|
10
|
+
let mongoCollection = null;
|
|
11
|
+
if (mongodbClient) {
|
|
12
|
+
mongoCollection = mongodbClient.db().collection(COLLECTION);
|
|
13
|
+
try {
|
|
14
|
+
await mongoCollection.createIndex({ createdAt: 1 }, { expireAfterSeconds: 3600, background: true });
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
console.error('Failed to create index on MongoDB collection for Socket.IO:', error);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
socketServer = new SocketServer(httpServer, {
|
|
21
|
+
cors: {
|
|
22
|
+
origin: '*',
|
|
23
|
+
methods: ['GET', 'POST'],
|
|
24
|
+
},
|
|
25
|
+
adapter: mongoCollection ? createAdapter(mongoCollection) : undefined,
|
|
26
|
+
transports: ['polling', 'websocket'],
|
|
27
|
+
allowUpgrades: true,
|
|
28
|
+
perMessageDeflate: false,
|
|
29
|
+
});
|
|
30
|
+
socketServer.on('error', (error) => {
|
|
31
|
+
console.error('Socket.IO error:', error);
|
|
32
|
+
});
|
|
33
|
+
socketServer.use(async (socket, next) => {
|
|
34
|
+
const token = socket.handshake.auth.token;
|
|
35
|
+
try {
|
|
36
|
+
socket.data = await authenticate(token);
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
next();
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
socketServer.on('connection', (socket) => {
|
|
43
|
+
console.log(`Socket.IO client connected`);
|
|
44
|
+
socket.on('disconnect', () => {
|
|
45
|
+
console.log(`Socket.IO client disconnected`);
|
|
46
|
+
});
|
|
47
|
+
socket.on('joinChannel', async (channelName) => {
|
|
48
|
+
const [category] = channelName.split(':');
|
|
49
|
+
let authorized = false;
|
|
50
|
+
for (const channel of channels) {
|
|
51
|
+
if (channel.category === category) {
|
|
52
|
+
if (!channel.canAccessChannel || (await channel.canAccessChannel(socket.data))) {
|
|
53
|
+
socket.join(channelName);
|
|
54
|
+
authorized = true;
|
|
55
|
+
console.log(`User ${socket.id} joined channel ${channelName}`);
|
|
56
|
+
socket.emit('joinedChannel', channelName);
|
|
57
|
+
}
|
|
58
|
+
break; // Found matching channel, stop searching
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (!authorized) {
|
|
62
|
+
socket.emit('joinError', { channel: channelName, error: 'Access denied' });
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
socket.on('leaveChannel', (channelName) => {
|
|
66
|
+
socket.leave(channelName);
|
|
67
|
+
console.log(`User ${socket.id} left channel ${channelName}`);
|
|
68
|
+
socket.emit('leftChannel', channelName);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
console.log('Socket.IO server initialized');
|
|
72
|
+
}
|
|
73
|
+
function broadcast({ category, id, data }) {
|
|
74
|
+
socketServer?.to(`${category}:${id}`).emit(category, data);
|
|
75
|
+
}
|
|
76
|
+
export default {
|
|
77
|
+
init,
|
|
78
|
+
broadcast,
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/websocket/socketio/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Server } from 'http';
|
|
2
|
+
import { ServerChannel } from './serverChannel';
|
|
3
|
+
import { ClientChannel } from './clientChannel';
|
|
4
|
+
export interface WebsocketServerProvider {
|
|
5
|
+
init(props: {
|
|
6
|
+
httpServer: Server;
|
|
7
|
+
channels: ServerChannel[];
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
broadcast<T>(props: {
|
|
10
|
+
category: string;
|
|
11
|
+
id: string;
|
|
12
|
+
data: T;
|
|
13
|
+
}): void;
|
|
14
|
+
}
|
|
15
|
+
export interface WebsocketClientProvider {
|
|
16
|
+
init(props: {
|
|
17
|
+
channels?: ClientChannel[];
|
|
18
|
+
}): void;
|
|
19
|
+
on<T>(props: {
|
|
20
|
+
category: string;
|
|
21
|
+
listener: (data: T) => void;
|
|
22
|
+
}): void;
|
|
23
|
+
once<T>(props: {
|
|
24
|
+
category: string;
|
|
25
|
+
listener: (data: T) => void;
|
|
26
|
+
}): void;
|
|
27
|
+
off<T>(props: {
|
|
28
|
+
category: string;
|
|
29
|
+
listener: (data: T) => void;
|
|
30
|
+
}): void;
|
|
31
|
+
emit(props: {
|
|
32
|
+
eventName: string;
|
|
33
|
+
category: string;
|
|
34
|
+
id: string;
|
|
35
|
+
}): void;
|
|
36
|
+
joinChannel(props: {
|
|
37
|
+
category: string;
|
|
38
|
+
id: string;
|
|
39
|
+
}): void;
|
|
40
|
+
leaveChannel(props: {
|
|
41
|
+
category: string;
|
|
42
|
+
id: string;
|
|
43
|
+
}): void;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/websocket/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;CACtE;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAClD,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACtE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACxE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACvE,IAAI,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACvE,WAAW,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3D,YAAY,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/websocket/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "modelence",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.9.0-dev.0",
|
|
5
5
|
"description": "The Node.js Framework for Real-Time MongoDB Apps",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/global.d.ts",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"modelence": "./dist/bin/modelence.js"
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
|
27
|
-
"build": "
|
|
28
|
-
"dev": "
|
|
27
|
+
"build": "rm -rf dist && tsc && tsc-alias",
|
|
28
|
+
"dev": "tsc --watch",
|
|
29
29
|
"format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json,css,md}\"",
|
|
30
30
|
"format:check": "prettier --check \"src/**/*.{ts,tsx,js,jsx,json,css,md}\"",
|
|
31
31
|
"lint": "eslint src --ext .ts,.tsx --fix",
|
|
@@ -48,7 +48,6 @@
|
|
|
48
48
|
"homepage": "https://modelence.com",
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/archiver": "^6.0.3",
|
|
51
|
-
"@types/bcrypt": "^5.0.2",
|
|
52
51
|
"@types/cookie-parser": "^1.4.9",
|
|
53
52
|
"@types/express": "^5.0.0",
|
|
54
53
|
"@types/fs-extra": "^11.0.4",
|
|
@@ -65,13 +64,13 @@
|
|
|
65
64
|
"react": "^19.0.0",
|
|
66
65
|
"react-dom": "^19.0.0",
|
|
67
66
|
"ts-jest": "^29.4.5",
|
|
68
|
-
"ts-node": "^10.9.2"
|
|
67
|
+
"ts-node": "^10.9.2",
|
|
68
|
+
"tsc-alias": "^1.8.16"
|
|
69
69
|
},
|
|
70
70
|
"dependencies": {
|
|
71
71
|
"@socket.io/mongo-adapter": "^0.4.0",
|
|
72
72
|
"@vitejs/plugin-react": "^4.3.4",
|
|
73
73
|
"archiver": "^7.0.1",
|
|
74
|
-
"bcrypt": "^5.1.1",
|
|
75
74
|
"commander": "^12.0.0",
|
|
76
75
|
"cookie-parser": "^1.4.7",
|
|
77
76
|
"dotenv": "^16.4.5",
|
package/dist/chunk-3S2FFBNS.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
function s(e){if(e instanceof Date)return {type:"date"};if(Array.isArray(e)){let n={};for(let r=0;r<e.length;r++){let t=e[r],o=s(t);o&&(n[r]=o);}return Object.keys(n).length>0?{type:"array",elements:n}:null}if(typeof e=="object"&&e!==null){let n={};for(let[r,t]of Object.entries(e)){let o=s(t);o&&(n[r]=o);}return Object.keys(n).length>0?{type:"object",props:n}:null}return null}function i(e,n){return n?n.type==="date"?new Date(e):n.type==="array"?e.map((r,t)=>i(r,n.elements[t])):n.type==="object"?Object.fromEntries(Object.entries(e).map(([r,t])=>[r,i(t,n.props[r])])):e:e}export{s as a,i as b};//# sourceMappingURL=chunk-3S2FFBNS.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-3S2FFBNS.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/methods/serialize.ts"],"names":["getResponseTypeMap","result","elements","i","item","subTypeMap","props","key","value","reviveResponseTypes","data","typeMap","index"],"mappings":"AAAO,SAASA,EAAmBC,CAAAA,CAAiB,CAClD,GAAIA,CAAAA,YAAkB,KACpB,OAAO,CAAE,IAAA,CAAM,MAAO,EAGxB,GAAI,KAAA,CAAM,QAAQA,CAAM,CAAA,CAAG,CACzB,IAAMC,CAAAA,CAAoC,EAAC,CAC3C,QAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIF,CAAAA,CAAO,OAAQE,CAAAA,EAAAA,CAAK,CACtC,IAAMC,CAAAA,CAAOH,EAAOE,CAAC,CAAA,CACfE,EAAaL,CAAAA,CAAmBI,CAAI,EACtCC,CAAAA,GACFH,CAAAA,CAASC,CAAC,CAAA,CAAIE,GAElB,CACA,OAAO,MAAA,CAAO,IAAA,CAAKH,CAAQ,CAAA,CAAE,MAAA,CAAS,CAAA,CAClC,CACE,KAAM,OAAA,CACN,QAAA,CAAAA,CACF,CAAA,CACA,IACN,CAEA,GAAI,OAAOD,CAAAA,EAAW,QAAA,EAAYA,IAAW,IAAA,CAAM,CACjD,IAAMK,CAAAA,CAAiC,GACvC,IAAA,GAAW,CAACC,CAAAA,CAAKC,CAAK,IAAK,MAAA,CAAO,OAAA,CAAQP,CAAM,CAAA,CAAG,CACjD,IAAMI,CAAAA,CAAaL,CAAAA,CAAmBQ,CAAK,CAAA,CACvCH,IACFC,CAAAA,CAAMC,CAAG,CAAA,CAAIF,CAAAA,EAEjB,CACA,OAAO,MAAA,CAAO,IAAA,CAAKC,CAAK,EAAE,MAAA,CAAS,CAAA,CAC/B,CACE,IAAA,CAAM,QAAA,CACN,MAAAA,CACF,CAAA,CACA,IACN,CAEA,OAAO,IACT,CAEO,SAASG,CAAAA,CAAiCC,CAAAA,CAASC,EAAsC,CAC9F,OAAKA,CAAAA,CAIDA,CAAAA,CAAQ,OAAS,MAAA,CACZ,IAAI,KAAKD,CAAc,CAAA,CAG5BC,EAAQ,IAAA,GAAS,OAAA,CACXD,CAAAA,CAAmB,GAAA,CAAI,CAACN,CAAAA,CAAeQ,CAAAA,GAC7CH,CAAAA,CAAoBL,CAAAA,CAAOO,EAAQ,QAAA,CAAuCC,CAAK,CAAC,CAClF,EAGED,CAAAA,CAAQ,IAAA,GAAS,SACZ,MAAA,CAAO,WAAA,CACZ,OAAO,OAAA,CAAQD,CAA+B,CAAA,CAAE,GAAA,CAAI,CAAC,CAACH,CAAAA,CAAKC,CAAK,CAAA,GAAM,CACpED,EACAE,CAAAA,CACED,CAAAA,CACCG,CAAAA,CAAQ,KAAA,CAAkCJ,CAAG,CAChD,CACF,CAAC,CACH,CAAA,CAGKG,EAzBEA,CA0BX","file":"chunk-3S2FFBNS.js","sourcesContent":["export function getResponseTypeMap(result: unknown) {\n if (result instanceof Date) {\n return { type: 'date' };\n }\n\n if (Array.isArray(result)) {\n const elements: Record<string, unknown> = {};\n for (let i = 0; i < result.length; i++) {\n const item = result[i];\n const subTypeMap = getResponseTypeMap(item);\n if (subTypeMap) {\n elements[i] = subTypeMap;\n }\n }\n return Object.keys(elements).length > 0\n ? {\n type: 'array',\n elements,\n }\n : null;\n }\n\n if (typeof result === 'object' && result !== null) {\n const props: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(result)) {\n const subTypeMap = getResponseTypeMap(value);\n if (subTypeMap) {\n props[key] = subTypeMap;\n }\n }\n return Object.keys(props).length > 0\n ? {\n type: 'object',\n props,\n }\n : null;\n }\n\n return null;\n}\n\nexport function reviveResponseTypes<T = unknown>(data: T, typeMap?: Record<string, unknown>): T {\n if (!typeMap) {\n return data;\n }\n\n if (typeMap.type === 'date') {\n return new Date(data as string) as T;\n }\n\n if (typeMap.type === 'array') {\n return (data as unknown[]).map((item: unknown, index: number) =>\n reviveResponseTypes(item, (typeMap.elements as Record<string, unknown>[])[index])\n ) as T;\n }\n\n if (typeMap.type === 'object') {\n return Object.fromEntries(\n Object.entries(data as Record<string, unknown>).map(([key, value]) => [\n key,\n reviveResponseTypes(\n value,\n (typeMap.props as Record<string, unknown>)[key] as Record<string, unknown>\n ),\n ])\n ) as T;\n }\n\n return data;\n}\n"]}
|
package/dist/chunk-3YAV3UUU.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var s="module",i="modelence",o="0.8.0",r="The Node.js Framework for Real-Time MongoDB Apps",n="dist/index.js",p="dist/global.d.ts",c={".":"./dist/index.js","./client":"./dist/client.js","./server":"./dist/server.js","./telemetry":"./dist/telemetry.js","./mongodb":"./dist/mongo.js","./types":{types:"./dist/types.d.ts",default:"./dist/types.js"}},d=["dist","dist/bin"],l={modelence:"./dist/bin/modelence.js"},m={build:"tsup",dev:"tsup --watch",format:'prettier --write "src/**/*.{ts,tsx,js,jsx,json,css,md}"',"format:check":'prettier --check "src/**/*.{ts,tsx,js,jsx,json,css,md}"',lint:"eslint src --ext .ts,.tsx --fix","lint:check":"eslint src --ext .ts,.tsx",prepublishOnly:"npm run build",test:"NODE_OPTIONS=--experimental-vm-modules jest","test:watch":"NODE_OPTIONS=--experimental-vm-modules jest --watch","test:coverage":"NODE_OPTIONS=--experimental-vm-modules jest --coverage",postversion:"git push && git push --tags"},a={type:"git",url:"git+https://github.com/modelence/modelence.git"},y="Modelence",u="SEE LICENSE IN LICENSE",j={url:"https://github.com/modelence/modelence/issues"},g="https://modelence.com",h={"@types/archiver":"^6.0.3","@types/bcrypt":"^5.0.2","@types/cookie-parser":"^1.4.9","@types/express":"^5.0.0","@types/fs-extra":"^11.0.4","@types/jest":"^30.0.0","@types/node":"^22.5.1","@types/react":"^19.0.0","@types/react-dom":"^19.0.1","@types/socket.io":"^3.0.1","@typescript-eslint/eslint-plugin":"^8.17.0","@typescript-eslint/parser":"^8.17.0",eslint:"^9.37.0",jest:"^30.2.0",prettier:"^3.6.2",react:"^19.0.0","react-dom":"^19.0.0","ts-jest":"^29.4.5","ts-node":"^10.9.2"},x={"@socket.io/mongo-adapter":"^0.4.0","@vitejs/plugin-react":"^4.3.4",archiver:"^7.0.1",bcrypt:"^5.1.1",commander:"^12.0.0","cookie-parser":"^1.4.7",dotenv:"^16.4.5","elastic-apm-node":"^4.8.0",express:"^4.21.0","fs-extra":"^11.2.0",jiti:"^2.4.2",mongodb:"^6.8.1",open:"^10.1.0","socket.io":"^4.8.1","socket.io-client":"^4.8.1",tsup:"^8.3.6",tsx:"^4.19.3",typescript:"^5.7.2",vite:"^6.0.3","vite-plugin-eslint":"^1.8.1",winston:"^3.15.0","winston-elasticsearch":"^0.19.0",zod:"^3.23.8",zustand:"^5.0.2"},v={react:">=18.0.0","react-dom":">=18.0.0"},b={type:s,name:i,version:o,description:r,main:n,types:p,exports:c,files:d,bin:l,scripts:m,repository:a,author:y,license:u,bugs:j,homepage:g,devDependencies:h,dependencies:x,peerDependencies:v};
|
|
2
|
-
export{s as a,i as b,o as c,r as d,n as e,p as f,c as g,d as h,l as i,m as j,a as k,y as l,u as m,j as n,g as o,h as p,x as q,v as r,b as s};//# sourceMappingURL=chunk-3YAV3UUU.js.map
|
|
3
|
-
//# sourceMappingURL=chunk-3YAV3UUU.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../package.json"],"names":["type","name","version","description","main","types","exports","files","bin","scripts","repository","author","license","bugs","homepage","devDependencies","dependencies","peerDependencies","package_default"],"mappings":"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","file":"chunk-3YAV3UUU.js","sourcesContent":["{\n \"type\": \"module\",\n \"name\": \"modelence\",\n \"version\": \"0.8.0\",\n \"description\": \"The Node.js Framework for Real-Time MongoDB Apps\",\n \"main\": \"dist/index.js\",\n \"types\": \"dist/global.d.ts\",\n \"exports\": {\n \".\": \"./dist/index.js\",\n \"./client\": \"./dist/client.js\",\n \"./server\": \"./dist/server.js\",\n \"./telemetry\": \"./dist/telemetry.js\",\n \"./mongodb\": \"./dist/mongo.js\",\n \"./types\": {\n \"types\": \"./dist/types.d.ts\",\n \"default\": \"./dist/types.js\"\n }\n },\n \"files\": [\n \"dist\",\n \"dist/bin\"\n ],\n \"bin\": {\n \"modelence\": \"./dist/bin/modelence.js\"\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev\": \"tsup --watch\",\n \"format\": \"prettier --write \\\"src/**/*.{ts,tsx,js,jsx,json,css,md}\\\"\",\n \"format:check\": \"prettier --check \\\"src/**/*.{ts,tsx,js,jsx,json,css,md}\\\"\",\n \"lint\": \"eslint src --ext .ts,.tsx --fix\",\n \"lint:check\": \"eslint src --ext .ts,.tsx\",\n \"prepublishOnly\": \"npm run build\",\n \"test\": \"NODE_OPTIONS=--experimental-vm-modules jest\",\n \"test:watch\": \"NODE_OPTIONS=--experimental-vm-modules jest --watch\",\n \"test:coverage\": \"NODE_OPTIONS=--experimental-vm-modules jest --coverage\",\n \"postversion\": \"git push && git push --tags\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/modelence/modelence.git\"\n },\n \"author\": \"Modelence\",\n \"license\": \"SEE LICENSE IN LICENSE\",\n \"bugs\": {\n \"url\": \"https://github.com/modelence/modelence/issues\"\n },\n \"homepage\": \"https://modelence.com\",\n \"devDependencies\": {\n \"@types/archiver\": \"^6.0.3\",\n \"@types/bcrypt\": \"^5.0.2\",\n \"@types/cookie-parser\": \"^1.4.9\",\n \"@types/express\": \"^5.0.0\",\n \"@types/fs-extra\": \"^11.0.4\",\n \"@types/jest\": \"^30.0.0\",\n \"@types/node\": \"^22.5.1\",\n \"@types/react\": \"^19.0.0\",\n \"@types/react-dom\": \"^19.0.1\",\n \"@types/socket.io\": \"^3.0.1\",\n \"@typescript-eslint/eslint-plugin\": \"^8.17.0\",\n \"@typescript-eslint/parser\": \"^8.17.0\",\n \"eslint\": \"^9.37.0\",\n \"jest\": \"^30.2.0\",\n \"prettier\": \"^3.6.2\",\n \"react\": \"^19.0.0\",\n \"react-dom\": \"^19.0.0\",\n \"ts-jest\": \"^29.4.5\",\n \"ts-node\": \"^10.9.2\"\n },\n \"dependencies\": {\n \"@socket.io/mongo-adapter\": \"^0.4.0\",\n \"@vitejs/plugin-react\": \"^4.3.4\",\n \"archiver\": \"^7.0.1\",\n \"bcrypt\": \"^5.1.1\",\n \"commander\": \"^12.0.0\",\n \"cookie-parser\": \"^1.4.7\",\n \"dotenv\": \"^16.4.5\",\n \"elastic-apm-node\": \"^4.8.0\",\n \"express\": \"^4.21.0\",\n \"fs-extra\": \"^11.2.0\",\n \"jiti\": \"^2.4.2\",\n \"mongodb\": \"^6.8.1\",\n \"open\": \"^10.1.0\",\n \"socket.io\": \"^4.8.1\",\n \"socket.io-client\": \"^4.8.1\",\n \"tsup\": \"^8.3.6\",\n \"tsx\": \"^4.19.3\",\n \"typescript\": \"^5.7.2\",\n \"vite\": \"^6.0.3\",\n \"vite-plugin-eslint\": \"^1.8.1\",\n \"winston\": \"^3.15.0\",\n \"winston-elasticsearch\": \"^0.19.0\",\n \"zod\": \"^3.23.8\",\n \"zustand\": \"^5.0.2\"\n },\n \"peerDependencies\": {\n \"react\": \">=18.0.0\",\n \"react-dom\": \">=18.0.0\"\n }\n}\n"]}
|
package/dist/chunk-55J6XMHW.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-55J6XMHW.js"}
|
package/dist/chunk-C3UESBRX.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var t=class extends Error{},a=class extends t{constructor(s){super(s);this.status=401;this.name="AuthError";}},n=class extends t{constructor(s){super(s);this.status=400;this.name="ValidationError";}},c=class extends t{constructor(s){super(s);this.status=429;this.name="RateLimitError";}};export{t as a,a as b,n as c,c as d};//# sourceMappingURL=chunk-C3UESBRX.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-C3UESBRX.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/error.ts"],"names":["ModelenceError","AuthError","message","ValidationError","RateLimitError"],"mappings":"AAAO,IAAeA,CAAAA,CAAf,cAAsC,KAAM,EAEnD,CAEaC,EAAN,cAAwBD,CAAe,CAG5C,WAAA,CAAYE,CAAAA,CAAiB,CAC3B,MAAMA,CAAO,CAAA,CAHf,IAAA,CAAA,MAAA,CAAS,GAAA,CAIP,IAAA,CAAK,IAAA,CAAO,YACd,CACF,CAAA,CAEaC,CAAAA,CAAN,cAA8BH,CAAe,CAGlD,WAAA,CAAYE,EAAiB,CAC3B,KAAA,CAAMA,CAAO,CAAA,CAHf,IAAA,CAAA,MAAA,CAAS,GAAA,CAIP,KAAK,IAAA,CAAO,kBACd,CACF,CAAA,CAEaE,CAAAA,CAAN,cAA6BJ,CAAe,CAGjD,WAAA,CAAYE,CAAAA,CAAiB,CAC3B,KAAA,CAAMA,CAAO,CAAA,CAHf,IAAA,CAAA,MAAA,CAAS,GAAA,CAIP,IAAA,CAAK,IAAA,CAAO,iBACd,CACF","file":"chunk-C3UESBRX.js","sourcesContent":["export abstract class ModelenceError extends Error {\n abstract status: number;\n}\n\nexport class AuthError extends ModelenceError {\n status = 401;\n\n constructor(message: string) {\n super(message);\n this.name = 'AuthError';\n }\n}\n\nexport class ValidationError extends ModelenceError {\n status = 400;\n\n constructor(message: string) {\n super(message);\n this.name = 'ValidationError';\n }\n}\n\nexport class RateLimitError extends ModelenceError {\n status = 429;\n\n constructor(message: string) {\n super(message);\n this.name = 'RateLimitError';\n }\n}\n"]}
|
package/dist/chunk-DO5TZLF5.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/time.ts"],"names":["time","x"],"mappings":"AAMO,IAAMA,CAAAA,CAAO,CAClB,OAAA,CAAUC,CAAAA,EAAcA,EAAI,GAAA,CAC5B,OAAA,CAAUA,GAAcA,CAAAA,CAAI,GAAA,CAC5B,MAAQA,CAAAA,EAAcA,CAAAA,CAAI,KAC1B,IAAA,CAAOA,CAAAA,EAAcA,EAAI,KAAA,CACzB,KAAA,CAAQA,CAAAA,EAAcA,CAAAA,CAAI,MAC5B","file":"chunk-DO5TZLF5.js","sourcesContent":["const secondMs = 1000;\nconst minuteMs = 60 * secondMs;\nconst hourMs = 60 * minuteMs;\nconst dayMs = 24 * hourMs;\nconst weekMs = 7 * dayMs;\n\nexport const time = {\n seconds: (x: number) => x * secondMs,\n minutes: (x: number) => x * minuteMs,\n hours: (x: number) => x * hourMs,\n days: (x: number) => x * dayMs,\n weeks: (x: number) => x * weekMs,\n};\n"]}
|
package/dist/chunk-PB6WQQ4L.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import B from'elastic-apm-node';import v from'winston';import {ElasticsearchTransport}from'winston-elasticsearch';import c from'process';var g={},E={},w=false;function p(t){return E[t]?.value??g[t]?.default}function U(){if(!w)throw new Error("Config is not initialized: an attempt was made to access configs before they were loaded");return Object.fromEntries(Object.entries(g).filter(([t,e])=>e.isPublic).map(([t,e])=>[t,{key:t,type:e.type,value:E[t]?.value??e.default}]))}function G(t){t.forEach(({key:e,type:o,value:r})=>{!e.toLowerCase().startsWith("_system.")&&!g[e]||(E[e]={key:e,type:o,value:r});}),w=true;}function V(t){Object.entries(t).forEach(([e,o])=>{let{type:r,isPublic:n}=o;if(r==="secret"&&n)throw new Error(`Config ${e} with type "secret" cannot be public`)}),g=t;}var i={stdout:[{log:"",timestamp:null}],stderr:[{log:"",timestamp:null}]},z=1;function h({elasticCloudId:t,elasticApiKey:e}){let o=c.stdout.write,r=c.stderr.write;c.stdout.write=function(n,...s){return x(n.toString(),i.stdout),o.call(c.stdout,n,...s)},c.stderr.write=function(n,...s){return x(n.toString(),i.stderr),r.call(c.stderr,n,...s)},I();}function x(t,e){if(t.length===0)return;let o=new Date;for(let r=0;r<t.length;r++){let n=e[e.length-1];n.timestamp||(n.timestamp=o,n.sequenceId=z++),t[r]===`
|
|
2
|
-
`?e.push({log:"",timestamp:null}):n.log+=t[r];}}async function O(){let t=i.stdout.slice(0,-1);i.stdout=[i.stdout[i.stdout.length-1]];let e=i.stderr.slice(0,-1);i.stderr=[i.stderr[i.stderr.length-1]],t.forEach(({log:o,timestamp:r,sequenceId:n})=>{y(o,{timestamp:r,source:"console",sequenceId:n});}),e.forEach(({log:o,timestamp:r,sequenceId:n})=>{L(o,{timestamp:r,source:"console",sequenceId:n});});}function I(){setTimeout(()=>{O(),I();},1e3);}var l=null;function Q(){}function X(t){l=Object.assign({},l,t);}function S(){return l?.environmentId}function T(){return l?.appAlias}function K(){return l?.environmentAlias}function M(){return l?.telemetry?.serviceName}function a(){return !!l?.telemetry?.isEnabled}var j=false,d=null,b=null,ot=async()=>{if(j)throw new Error('Metrics are already initialized, duplicate "initMetrics" call received');j=true,a()&&await P();};async function P(){let t=p("_system.elastic.apmEndpoint"),e=p("_system.elastic.cloudId"),o=p("_system.elastic.apiKey"),r=T()??"unknown",n=K()??"unknown",s=S()??"unknown",f=M();d=B.start({serviceName:f,apiKey:o,serverUrl:t,transactionSampleRate:1,centralConfig:false,globalLabels:{modelenceEnv:"dev",appEnv:"dev",environmentId:s,appAlias:r,environmentAlias:n}});let u=new ElasticsearchTransport({apm:d,level:"debug",clientOpts:{cloud:{id:e},auth:{apiKey:o},requestTimeout:1e4,tls:{rejectUnauthorized:false}},bufferLimit:1e3,silent:false});u.on("error",_=>{console.error("Elasticsearch Transport Error:",_);}),b=v.createLogger({level:"debug",defaultMeta:{serviceName:f},format:v.format.combine(v.format.json()),transports:[u]}),h({elasticCloudId:e,elasticApiKey:o});}function A(){if(!d)throw new Error("APM is not initialized");return d}function m(){if(!b)throw new Error("Logger is not initialized");return b}function C(){let t="";return a()||(t="info"),process.env.MODELENCE_LOG_LEVEL||t}function D(t,e){a()&&m().debug(t,e),C()==="debug"&&console.debug(t,e);}function y(t,e){a()&&m().info(t,e),["debug","info"].includes(C())&&console.info(t,e);}function L(t,e){a()&&m().error(t,e),["debug","info","error"].includes(C())&&console.error(t,e);}function W(t,e,o){if(!a())return {end:()=>{},setContext:()=>{}};let r=A(),n=r.startTransaction(e,t);return o&&r.setCustomContext(o),{end:(s,{endTime:f,context:u}={})=>{u&&r.setCustomContext(u),n.end(s,f);},setContext:s=>{r.setCustomContext(s);}}}function q(t){if(!a()){console.error(t);return}A().captureError(t);}export{p as a,U as b,G as c,V as d,Q as e,X as f,ot as g,D as h,y as i,L as j,W as k,q as l};//# sourceMappingURL=chunk-PB6WQQ4L.js.map
|
|
3
|
-
//# sourceMappingURL=chunk-PB6WQQ4L.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config/server.ts","../src/app/loggerProcess.ts","../src/app/state.ts","../src/app/metrics.ts","../src/telemetry/index.ts"],"names":["configSchema","config","isInitialized","getConfig","key","getPublicConfigs","_","schema","loadConfigs","configs","type","value","setSchema","isPublic","buffer","sequenceId","startLoggerProcess","_elasticCloudId","_elasticApiKey","originalStdoutWrite","process","originalStderrWrite","chunk","args","addToBuffer","loopSendLogs","timestamp","i","current","sendLogs","stdoutLogs","stderrLogs","log","logInfo","logError","metadata","markAppStarted","setMetadata","_metadata","getEnvironmentId","getAppAlias","getEnvironmentAlias","getTelemetryServiceName","isTelemetryEnabled","apm","logger","initMetrics","initElasticApm","elasticApmEndpoint","elasticCloudId","elasticApiKey","appAlias","environmentAlias","environmentId","serviceName","elasticApm","esTransport","ElasticsearchTransport","error","winston","getApm","getLogger","getLogLevel","defaultLoglevel","logDebug","message","startTransaction","name","context","transaction","result","endTime","captureError"],"mappings":"yIAEA,IAAIA,CAAAA,CAA6B,EAAC,CAC9BC,CAAAA,CAAuC,EAAC,CACxCC,CAAAA,CAAgB,KAAA,CAsCb,SAASC,CAAAA,CAAUC,CAAAA,CAAgB,CACxC,OAAOH,EAAOG,CAAG,CAAA,EAAG,KAAA,EAASJ,CAAAA,CAAaI,CAAG,CAAA,EAAG,OAClD,CAEO,SAASC,GAAmB,CACjC,GAAI,CAACH,CAAAA,CACH,MAAM,IAAI,KAAA,CACR,0FACF,EAGF,OAAO,MAAA,CAAO,WAAA,CACZ,MAAA,CAAO,QAAQF,CAAY,CAAA,CACxB,MAAA,CAAO,CAAC,CAACM,CAAAA,CAAGC,CAAM,CAAA,GAAMA,CAAAA,CAAO,QAAQ,CAAA,CACvC,GAAA,CAAI,CAAC,CAACH,CAAAA,CAAKG,CAAM,CAAA,GACT,CACLH,EACA,CACE,GAAA,CAAAA,CAAAA,CACA,IAAA,CAAMG,EAAO,IAAA,CACb,KAAA,CAAON,CAAAA,CAAOG,CAAG,CAAA,EAAG,KAAA,EAASG,CAAAA,CAAO,OACtC,CACF,CACD,CACL,CACF,CAEO,SAASC,CAAAA,CAAYC,CAAAA,CAAsB,CAChDA,CAAAA,CAAQ,QAAQ,CAAC,CAAE,GAAA,CAAAL,CAAAA,CAAK,IAAA,CAAAM,CAAAA,CAAM,KAAA,CAAAC,CAAM,IAAM,CAGpC,CAFmBP,CAAAA,CAAI,WAAA,GAAc,UAAA,CAAW,UAAU,CAAA,EAEvC,CAACJ,EAAaI,CAAG,CAAA,GAKxCH,CAAAA,CAAOG,CAAG,CAAA,CAAI,CACZ,GAAA,CAAAA,CAAAA,CACA,KAAAM,CAAAA,CACA,KAAA,CAAAC,CACF,CAAA,EACF,CAAC,CAAA,CAEDT,CAAAA,CAAgB,KAClB,CAEO,SAASU,CAAAA,CAAUL,CAAAA,CAAsB,CAE9C,MAAA,CAAO,QAAQA,CAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAACH,CAAAA,CAAKO,CAAK,CAAA,GAAM,CAC/C,GAAM,CAAE,IAAA,CAAAD,CAAAA,CAAM,QAAA,CAAAG,CAAS,CAAA,CAAIF,CAAAA,CAE3B,GAAID,CAAAA,GAAS,QAAA,EAAYG,CAAAA,CACvB,MAAM,IAAI,MAAM,CAAA,OAAA,EAAUT,CAAG,CAAA,oCAAA,CAAsC,CAEvE,CAAC,CAAA,CAEDJ,CAAAA,CAAeO,EACjB,CC1FA,IAAMO,CAAAA,CAAmD,CACvD,MAAA,CAAQ,CAAC,CAAE,IAAK,EAAA,CAAI,SAAA,CAAW,IAAK,CAAC,EACrC,MAAA,CAAQ,CAAC,CAAE,GAAA,CAAK,GAAI,SAAA,CAAW,IAAK,CAAC,CACvC,CAAA,CAEIC,CAAAA,CAAa,CAAA,CAEV,SAASC,EAAmB,CACjC,cAAA,CAAgBC,CAAAA,CAChB,aAAA,CAAeC,CACjB,CAAA,CAGG,CACD,IAAMC,CAAAA,CAAsBC,EAAQ,MAAA,CAAO,KAAA,CACrCC,CAAAA,CAAsBD,CAAAA,CAAQ,MAAA,CAAO,KAAA,CAG3CA,CAAAA,CAAQ,MAAA,CAAO,MAAQ,SAAUE,CAAAA,CAAAA,GAA+BC,CAAAA,CAAa,CAC3E,OAAAC,CAAAA,CAAYF,CAAAA,CAAM,QAAA,EAAS,CAAGR,EAAO,MAAM,CAAA,CACpCK,CAAAA,CAAoB,IAAA,CAAKC,CAAAA,CAAQ,MAAA,CAAQE,CAAAA,CAAO,GAAGC,CAAI,CAChE,CAAA,CAGAH,CAAAA,CAAQ,MAAA,CAAO,MAAQ,SAAUE,CAAAA,CAAAA,GAA+BC,CAAAA,CAAa,CAC3E,OAAAC,CAAAA,CAAYF,CAAAA,CAAM,QAAA,EAAS,CAAGR,CAAAA,CAAO,MAAM,CAAA,CACpCO,CAAAA,CAAoB,KAAKD,CAAAA,CAAQ,MAAA,CAAQE,CAAAA,CAAO,GAAGC,CAAI,CAChE,CAAA,CAEAE,CAAAA,GAkCF,CAEA,SAASD,CAAAA,CAAYF,CAAAA,CAAeR,CAAAA,CAAmB,CACrD,GAAIQ,CAAAA,CAAM,MAAA,GAAW,EACnB,OAGF,IAAMI,CAAAA,CAAY,IAAI,KAEtB,IAAA,IAASC,CAAAA,CAAI,CAAA,CAAGA,CAAAA,CAAIL,EAAM,MAAA,CAAQK,CAAAA,EAAAA,CAAK,CACrC,IAAMC,EAAUd,CAAAA,CAAOA,CAAAA,CAAO,MAAA,CAAS,CAAC,EACnCc,CAAAA,CAAQ,SAAA,GACXA,CAAAA,CAAQ,SAAA,CAAYF,EACpBE,CAAAA,CAAQ,UAAA,CAAab,CAAAA,EAAAA,CAAAA,CAGnBO,CAAAA,CAAMK,CAAC,CAAA,GAAM;AAAA,CAAA,CACfb,CAAAA,CAAO,IAAA,CAAK,CAAE,GAAA,CAAK,EAAA,CAAI,SAAA,CAAW,IAAK,CAAC,CAAA,CAExCc,CAAAA,CAAQ,GAAA,EAAON,CAAAA,CAAMK,CAAC,EAE1B,CACF,CAEA,eAAeE,CAAAA,EAAW,CACxB,IAAMC,CAAAA,CAAahB,EAAO,MAAA,CAAO,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,CAC5CA,CAAAA,CAAO,MAAA,CAAS,CAACA,EAAO,MAAA,CAAOA,CAAAA,CAAO,MAAA,CAAO,MAAA,CAAS,CAAC,CAAC,CAAA,CAExD,IAAMiB,CAAAA,CAAajB,CAAAA,CAAO,MAAA,CAAO,KAAA,CAAM,CAAA,CAAG,EAAE,CAAA,CAC5CA,CAAAA,CAAO,OAAS,CAACA,CAAAA,CAAO,MAAA,CAAOA,CAAAA,CAAO,MAAA,CAAO,MAAA,CAAS,CAAC,CAAC,EAExDgB,CAAAA,CAAW,OAAA,CAAQ,CAAC,CAAE,GAAA,CAAAE,CAAAA,CAAK,SAAA,CAAAN,CAAAA,CAAW,WAAAX,CAAW,CAAA,GAAgB,CAC/DkB,CAAAA,CAAQD,CAAAA,CAAK,CAAE,SAAA,CAAAN,CAAAA,CAAW,MAAA,CAAQ,SAAA,CAAW,UAAA,CAAAX,CAAW,CAAC,EAC3D,CAAC,CAAA,CACDgB,EAAW,OAAA,CAAQ,CAAC,CAAE,GAAA,CAAAC,CAAAA,CAAK,SAAA,CAAAN,CAAAA,CAAW,UAAA,CAAAX,CAAW,CAAA,GAAgB,CAC/DmB,CAAAA,CAASF,CAAAA,CAAK,CAAE,SAAA,CAAAN,CAAAA,CAAW,MAAA,CAAQ,UAAW,UAAA,CAAAX,CAAW,CAAC,EAC5D,CAAC,EACH,CAEA,SAASU,GAAe,CACtB,UAAA,CAAW,IAAM,CACfI,CAAAA,EAAS,CACTJ,CAAAA,GACF,EAAG,GAAI,EACT,CC1GA,IACIU,CAAAA,CAA+B,KAE5B,SAASC,CAAAA,EAAiB,CAEjC,CAMO,SAASC,CAAAA,CAAYC,CAAAA,CAAwB,CAClDH,CAAAA,CAAW,MAAA,CAAO,MAAA,CAAO,EAAC,CAAGA,CAAAA,CAAUG,CAAS,EAClD,CAEO,SAASC,CAAAA,EAAmB,CACjC,OAAOJ,CAAAA,EAAU,aACnB,CAEO,SAASK,CAAAA,EAAc,CAC5B,OAAOL,CAAAA,EAAU,QACnB,CAEO,SAASM,CAAAA,EAAsB,CACpC,OAAON,CAAAA,EAAU,gBACnB,CAEO,SAASO,CAAAA,EAA0B,CACxC,OAAOP,GAAU,SAAA,EAAW,WAC9B,CAEO,SAASQ,CAAAA,EAAqB,CACnC,OAAO,CAAA,CAAQR,GAAU,SAAA,EAAW,SACtC,CC7BA,IAAIjC,CAAAA,CAAgB,KAAA,CAChB0C,CAAAA,CAAgC,IAAA,CAChCC,EAAgC,IAAA,CAEvBC,EAAAA,CAAc,SAAY,CACrC,GAAI5C,CAAAA,CACF,MAAM,IAAI,MAAM,wEAAwE,CAAA,CAG1FA,CAAAA,CAAgB,IAAA,CAEZyC,CAAAA,EAAmB,EACrB,MAAMI,CAAAA,GAEV,EAEA,eAAeA,CAAAA,EAAiB,CAC9B,IAAMC,CAAAA,CAAqB7C,CAAAA,CAAU,6BAA6B,CAAA,CAC5D8C,CAAAA,CAAiB9C,CAAAA,CAAU,yBAAyB,CAAA,CACpD+C,CAAAA,CAAgB/C,CAAAA,CAAU,wBAAwB,EAElDgD,CAAAA,CAAWX,CAAAA,EAAY,EAAK,SAAA,CAC5BY,CAAAA,CAAmBX,CAAAA,EAAoB,EAAK,SAAA,CAC5CY,EAAgBd,CAAAA,EAAiB,EAAK,SAAA,CACtCe,CAAAA,CAAcZ,CAAAA,EAAwB,CAE5CE,CAAAA,CAAMW,CAAAA,CAAW,MAAM,CACrB,WAAA,CAAAD,CAAAA,CACA,MAAA,CAAQJ,CAAAA,CACR,SAAA,CAAWF,CAAAA,CAEX,qBAAA,CAAuB,EACvB,aAAA,CAAe,KAAA,CACf,YAAA,CAAc,CACZ,YAAA,CAAc,KAAA,CACd,MAAA,CAAQ,KAAA,CACR,cAAAK,CAAAA,CACA,QAAA,CAAAF,CAAAA,CACA,gBAAA,CAAAC,CACF,CAEF,CAAC,CAAA,CAED,IAAMI,CAAAA,CAAc,IAAIC,sBAAAA,CAAuB,CAC7C,GAAA,CAAAb,CAAAA,CACA,KAAA,CAAO,OAAA,CACP,WAAY,CACV,KAAA,CAAO,CACL,EAAA,CAAIK,CACN,CAAA,CACA,IAAA,CAAM,CACJ,MAAA,CAAQC,CACV,CAAA,CACA,cAAA,CAAgB,GAAA,CAChB,GAAA,CAAK,CACH,kBAAA,CAAoB,KACtB,CACF,CAAA,CACA,WAAA,CAAa,GAAA,CACb,MAAA,CAAQ,KACV,CAAC,CAAA,CAEDM,EAAY,EAAA,CAAG,OAAA,CAAUE,CAAAA,EAAU,CACjC,OAAA,CAAQ,KAAA,CAAM,gCAAA,CAAkCA,CAAK,EACvD,CAAC,CAAA,CAEDb,CAAAA,CAASc,CAAAA,CAAQ,YAAA,CAAa,CAC5B,KAAA,CAAO,OAAA,CACP,WAAA,CAAa,CACX,WAAA,CAAAL,CACF,CAAA,CACA,MAAA,CAAQK,CAAAA,CAAQ,MAAA,CAAO,QAAQA,CAAAA,CAAQ,MAAA,CAAO,IAAA,EAAM,CAAA,CACpD,UAAA,CAAY,CAEVH,CACF,CACF,CAAC,CAAA,CAEDxC,CAAAA,CAAmB,CACjB,cAAA,CAAAiC,CAAAA,CACA,aAAA,CAAAC,CACF,CAAC,EACH,CAEO,SAASU,CAAAA,EAAS,CACvB,GAAI,CAAChB,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,wBAAwB,CAAA,CAE1C,OAAOA,CACT,CAEO,SAASiB,CAAAA,EAAY,CAC1B,GAAI,CAAChB,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,2BAA2B,CAAA,CAE7C,OAAOA,CACT,CC/FA,SAASiB,CAAAA,EAAwB,CAC/B,IAAIC,EAA4B,EAAA,CAChC,OAAKpB,CAAAA,EAAmB,GACtBoB,CAAAA,CAAkB,MAAA,CAAA,CAGZ,OAAA,CAAQ,GAAA,CAAI,qBAAoCA,CAC1D,CAEO,SAASC,CAAAA,CAASC,CAAAA,CAAiB1C,CAAAA,CAAc,CAClDoB,CAAAA,IACFkB,CAAAA,EAAU,CAAE,KAAA,CAAMI,CAAAA,CAAS1C,CAAI,CAAA,CAE7BuC,CAAAA,EAAY,GAAM,SACpB,OAAA,CAAQ,KAAA,CAAMG,CAAAA,CAAS1C,CAAI,EAE/B,CAEO,SAASU,CAAAA,CAAQgC,EAAiB1C,CAAAA,CAAc,CACjDoB,CAAAA,EAAmB,EACrBkB,CAAAA,EAAU,CAAE,IAAA,CAAKI,CAAAA,CAAS1C,CAAI,CAAA,CAE5B,CAAC,OAAA,CAAS,MAAM,CAAA,CAAE,QAAA,CAASuC,CAAAA,EAAa,CAAA,EAC1C,OAAA,CAAQ,IAAA,CAAKG,CAAAA,CAAS1C,CAAI,EAE9B,CAEO,SAASW,EAAS+B,CAAAA,CAAiB1C,CAAAA,CAAc,CAClDoB,CAAAA,EAAmB,EACrBkB,CAAAA,EAAU,CAAE,KAAA,CAAMI,EAAS1C,CAAI,CAAA,CAE7B,CAAC,OAAA,CAAS,MAAA,CAAQ,OAAO,CAAA,CAAE,QAAA,CAASuC,GAAa,CAAA,EACnD,OAAA,CAAQ,KAAA,CAAMG,CAAAA,CAAS1C,CAAI,EAE/B,CAOO,SAAS2C,CAAAA,CACdxD,CAAAA,CACAyD,CAAAA,CACAC,CAAAA,CACoB,CACpB,GAAI,CAACzB,CAAAA,GACH,OAAO,CACL,GAAA,CAAK,IAAM,EAEX,CACA,UAAA,CAAY,IAAM,EAGpB,CAAA,CAGF,IAAMC,CAAAA,CAAMgB,CAAAA,EAAO,CACbS,CAAAA,CAAczB,CAAAA,CAAI,gBAAA,CAAiBuB,CAAAA,CAAMzD,CAAI,CAAA,CACnD,OAAI0D,CAAAA,EACFxB,CAAAA,CAAI,gBAAA,CAAiBwB,CAAO,CAAA,CAGvB,CACL,GAAA,CAAK,CACHE,CAAAA,CACA,CAAE,OAAA,CAAAC,CAAAA,CAAS,QAAAH,CAAQ,CAAA,CAA6D,EAAC,GAC9E,CACCA,CAAAA,EACFxB,CAAAA,CAAI,gBAAA,CAAiBwB,CAAO,CAAA,CAE9BC,CAAAA,CAAY,GAAA,CAAIC,CAAAA,CAAQC,CAAO,EACjC,CAAA,CACA,UAAA,CAAaH,GAAqC,CAChDxB,CAAAA,CAAI,gBAAA,CAAiBwB,CAAO,EAC9B,CACF,CACF,CAEO,SAASI,CAAAA,CAAad,CAAAA,CAAc,CACzC,GAAI,CAACf,CAAAA,EAAmB,CAAG,CACzB,QAAQ,KAAA,CAAMe,CAAK,CAAA,CACnB,MACF,CAEAE,CAAAA,EAAO,CAAE,YAAA,CAAaF,CAAK,EAC7B","file":"chunk-PB6WQQ4L.js","sourcesContent":["import { AppConfig, ConfigKey, ConfigSchema } from './types';\n\nlet configSchema: ConfigSchema = {};\nlet config: Record<ConfigKey, AppConfig> = {};\nlet isInitialized = false;\n\n/**\n * @sidebarTitle getConfig (server)\n *\n * @param key - The configuration key to retrieve\n * @returns The configuration value (string, number, or boolean)\n *\n * @example\n * ```ts\n * import { getConfig } from 'modelence/server';\n *\n * // Get the site URL\n * const siteUrl = getConfig('_system.site.url');\n * ```\n *\n * Set via environment variable:\n * ```bash\n * MODELENCE_SITE_URL=https://myapp.com\n * ```\n *\n * @example\n * ```ts\n * import { getConfig } from 'modelence/server';\n *\n * // Get the current environment (e.g., 'development', 'staging', 'production')\n * const env = getConfig('_system.env');\n *\n * if (env === 'production') {\n * // Enable production features\n * }\n * ```\n *\n * Set via environment variable:\n * ```bash\n * MODELENCE_SITE_ENV=production\n * ```\n */\nexport function getConfig(key: ConfigKey) {\n return config[key]?.value ?? configSchema[key]?.default;\n}\n\nexport function getPublicConfigs() {\n if (!isInitialized) {\n throw new Error(\n 'Config is not initialized: an attempt was made to access configs before they were loaded'\n );\n }\n\n return Object.fromEntries(\n Object.entries(configSchema)\n .filter(([_, schema]) => schema.isPublic)\n .map(([key, schema]) => {\n return [\n key,\n {\n key,\n type: schema.type,\n value: config[key]?.value ?? schema.default,\n },\n ];\n })\n );\n}\n\nexport function loadConfigs(configs: AppConfig[]) {\n configs.forEach(({ key, type, value }) => {\n const isSystemConfig = key.toLowerCase().startsWith('_system.');\n\n if (!isSystemConfig && !configSchema[key]) {\n // Ignore unknown configs\n return;\n }\n\n config[key] = {\n key,\n type,\n value,\n };\n });\n\n isInitialized = true;\n}\n\nexport function setSchema(schema: ConfigSchema) {\n // TODO: more validation on the schema structure\n Object.entries(schema).forEach(([key, value]) => {\n const { type, isPublic } = value;\n\n if (type === 'secret' && isPublic) {\n throw new Error(`Config ${key} with type \"secret\" cannot be public`);\n }\n });\n\n configSchema = schema;\n}\n","// import { spawn } from 'child_process';\n// import { fileURLToPath } from 'url';\n// import { dirname, join } from 'path';\nimport { logInfo, logError } from '@/telemetry';\nimport process from 'process';\n\ntype LogEntry = { log: string; timestamp: Date | null; sequenceId?: number };\ntype LogBuffer = LogEntry[];\n\nconst buffer: { stdout: LogBuffer; stderr: LogBuffer } = {\n stdout: [{ log: '', timestamp: null }],\n stderr: [{ log: '', timestamp: null }],\n};\n\nlet sequenceId = 1;\n\nexport function startLoggerProcess({\n elasticCloudId: _elasticCloudId,\n elasticApiKey: _elasticApiKey,\n}: {\n elasticCloudId: string;\n elasticApiKey: string;\n}) {\n const originalStdoutWrite = process.stdout.write;\n const originalStderrWrite = process.stderr.write;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n process.stdout.write = function (chunk: string | Uint8Array, ...args: any[]) {\n addToBuffer(chunk.toString(), buffer.stdout);\n return originalStdoutWrite.call(process.stdout, chunk, ...args);\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n process.stderr.write = function (chunk: string | Uint8Array, ...args: any[]) {\n addToBuffer(chunk.toString(), buffer.stderr);\n return originalStderrWrite.call(process.stderr, chunk, ...args);\n };\n\n loopSendLogs();\n\n // const currentFilePath = fileURLToPath(import.meta.url);\n // const projectRoot = dirname(dirname(currentFilePath));\n // const loggerPath = join(projectRoot, 'bin', 'modelence-logger', 'index.js');\n // const logger = spawn(process.execPath, [loggerPath], {\n // env: {\n // NODE_ENV: process.env.NODE_ENV,\n // ELASTIC_CLOUD_ID: elasticCloudId,\n // ELASTIC_API_KEY: elasticApiKey\n // },\n // stdio: ['pipe', 'inherit', 'inherit'],\n // detached: true\n // });\n\n // const originalStdoutWrite = process.stdout.write;\n // const originalStderrWrite = process.stderr.write;\n\n // process.stdout.write = function(chunk: any, ...args: any[]) {\n // logger.stdin.write(chunk);\n // return originalStdoutWrite.apply(process.stdout, [chunk, ...args]);\n // };\n\n // process.stderr.write = function(chunk: any, ...args: any[]) {\n // logger.stdin.write(chunk);\n // return originalStderrWrite.apply(process.stderr, [chunk, ...args]);\n // };\n\n // process.on('exit', () => {\n // process.stdout.write = originalStdoutWrite;\n // process.stderr.write = originalStderrWrite;\n // });\n\n // logger.unref();\n}\n\nfunction addToBuffer(chunk: string, buffer: LogBuffer) {\n if (chunk.length === 0) {\n return;\n }\n\n const timestamp = new Date();\n\n for (let i = 0; i < chunk.length; i++) {\n const current = buffer[buffer.length - 1];\n if (!current.timestamp) {\n current.timestamp = timestamp;\n current.sequenceId = sequenceId++;\n }\n\n if (chunk[i] === '\\n') {\n buffer.push({ log: '', timestamp: null });\n } else {\n current.log += chunk[i];\n }\n }\n}\n\nasync function sendLogs() {\n const stdoutLogs = buffer.stdout.slice(0, -1);\n buffer.stdout = [buffer.stdout[buffer.stdout.length - 1]];\n\n const stderrLogs = buffer.stderr.slice(0, -1);\n buffer.stderr = [buffer.stderr[buffer.stderr.length - 1]];\n\n stdoutLogs.forEach(({ log, timestamp, sequenceId }: LogEntry) => {\n logInfo(log, { timestamp, source: 'console', sequenceId });\n });\n stderrLogs.forEach(({ log, timestamp, sequenceId }: LogEntry) => {\n logError(log, { timestamp, source: 'console', sequenceId });\n });\n}\n\nfunction loopSendLogs() {\n setTimeout(() => {\n sendLogs();\n loopSendLogs();\n }, 1000);\n}\n","type AppMetadata = {\n environmentId: string;\n appAlias: string;\n environmentAlias: string;\n telemetry: {\n isEnabled: boolean;\n serviceName: string;\n };\n};\n\nlet appStarted = false;\nlet metadata: AppMetadata | null = null;\n\nexport function markAppStarted() {\n appStarted = true;\n}\n\nexport function isAppStarted() {\n return appStarted;\n}\n\nexport function setMetadata(_metadata: AppMetadata) {\n metadata = Object.assign({}, metadata, _metadata);\n}\n\nexport function getEnvironmentId() {\n return metadata?.environmentId;\n}\n\nexport function getAppAlias() {\n return metadata?.appAlias;\n}\n\nexport function getEnvironmentAlias() {\n return metadata?.environmentAlias;\n}\n\nexport function getTelemetryServiceName() {\n return metadata?.telemetry?.serviceName;\n}\n\nexport function isTelemetryEnabled() {\n return Boolean(metadata?.telemetry?.isEnabled);\n}\n","import elasticApm from 'elastic-apm-node';\nimport winston from 'winston';\nimport { ElasticsearchTransport } from 'winston-elasticsearch';\n\nimport { getConfig } from '../config/server';\nimport { startLoggerProcess } from './loggerProcess';\nimport {\n getAppAlias,\n getEnvironmentAlias,\n getEnvironmentId,\n getTelemetryServiceName,\n isTelemetryEnabled,\n} from './state';\n\nlet isInitialized = false;\nlet apm: typeof elasticApm | null = null;\nlet logger: winston.Logger | null = null;\n\nexport const initMetrics = async () => {\n if (isInitialized) {\n throw new Error('Metrics are already initialized, duplicate \"initMetrics\" call received');\n }\n\n isInitialized = true;\n\n if (isTelemetryEnabled()) {\n await initElasticApm();\n }\n};\n\nasync function initElasticApm() {\n const elasticApmEndpoint = getConfig('_system.elastic.apmEndpoint') as string;\n const elasticCloudId = getConfig('_system.elastic.cloudId') as string;\n const elasticApiKey = getConfig('_system.elastic.apiKey') as string;\n\n const appAlias = getAppAlias() ?? 'unknown';\n const environmentAlias = getEnvironmentAlias() ?? 'unknown';\n const environmentId = getEnvironmentId() ?? 'unknown';\n const serviceName = getTelemetryServiceName();\n\n apm = elasticApm.start({\n serviceName,\n apiKey: elasticApiKey,\n serverUrl: elasticApmEndpoint,\n // environment: 'dev',\n transactionSampleRate: 1.0,\n centralConfig: false,\n globalLabels: {\n modelenceEnv: 'dev',\n appEnv: 'dev',\n environmentId,\n appAlias,\n environmentAlias,\n },\n // logLevel: 'debug'\n });\n\n const esTransport = new ElasticsearchTransport({\n apm,\n level: 'debug',\n clientOpts: {\n cloud: {\n id: elasticCloudId,\n },\n auth: {\n apiKey: elasticApiKey,\n },\n requestTimeout: 10000,\n tls: {\n rejectUnauthorized: false,\n },\n },\n bufferLimit: 1000,\n silent: false,\n });\n\n esTransport.on('error', (error) => {\n console.error('Elasticsearch Transport Error:', error);\n });\n\n logger = winston.createLogger({\n level: 'debug',\n defaultMeta: {\n serviceName,\n },\n format: winston.format.combine(winston.format.json()),\n transports: [\n // new winston.transports.Console(), // TODO: remove, just for debugging\n esTransport,\n ],\n });\n\n startLoggerProcess({\n elasticCloudId,\n elasticApiKey,\n });\n}\n\nexport function getApm() {\n if (!apm) {\n throw new Error('APM is not initialized');\n }\n return apm;\n}\n\nexport function getLogger() {\n if (!logger) {\n throw new Error('Logger is not initialized');\n }\n return logger;\n}\n","import { getLogger, getApm } from '@/app/metrics';\nimport { isTelemetryEnabled } from '@/app/state';\n\ntype LogLevel = 'error' | 'info' | 'debug' | '';\n\n/**\n * Gets the logging level for console logs based on the MODELENCE_LOG_LEVEL environment variable.\n *\n * @returns The log level ('error' | 'info' | 'debug' | '')\n *\n * Behavior:\n * - If MODELENCE_LOG_LEVEL is set, returns that value\n * - If telemetry is disabled and MODELENCE_LOG_LEVEL is not set, defaults to 'info'\n * - If telemetry is enabled and MODELENCE_LOG_LEVEL is not set, returns '' (no console logging)\n */\nfunction getLogLevel(): LogLevel {\n let defaultLoglevel: LogLevel = '';\n if (!isTelemetryEnabled()) {\n defaultLoglevel = 'info';\n }\n\n return (process.env.MODELENCE_LOG_LEVEL as LogLevel) || defaultLoglevel;\n}\n\nexport function logDebug(message: string, args: object) {\n if (isTelemetryEnabled()) {\n getLogger().debug(message, args);\n }\n if (getLogLevel() === 'debug') {\n console.debug(message, args);\n }\n}\n\nexport function logInfo(message: string, args: object) {\n if (isTelemetryEnabled()) {\n getLogger().info(message, args);\n }\n if (['debug', 'info'].includes(getLogLevel())) {\n console.info(message, args);\n }\n}\n\nexport function logError(message: string, args: object) {\n if (isTelemetryEnabled()) {\n getLogger().error(message, args);\n }\n if (['debug', 'info', 'error'].includes(getLogLevel())) {\n console.error(message, args);\n }\n}\n\ninterface WrappedTransaction {\n end(result?: string, context?: Record<string, unknown>): void;\n setContext(context: Record<string, unknown>): void;\n}\n\nexport function startTransaction(\n type: 'method' | 'cron' | 'ai' | 'custom' | 'route',\n name: string,\n context?: Record<string, unknown>\n): WrappedTransaction {\n if (!isTelemetryEnabled()) {\n return {\n end: () => {\n // do nothing\n },\n setContext: () => {\n // do nothing\n },\n };\n }\n\n const apm = getApm();\n const transaction = apm.startTransaction(name, type);\n if (context) {\n apm.setCustomContext(context);\n }\n\n return {\n end: (\n result?: string,\n { endTime, context }: { endTime?: number; context?: Record<string, unknown> } = {}\n ) => {\n if (context) {\n apm.setCustomContext(context);\n }\n transaction.end(result, endTime);\n },\n setContext: (context: Record<string, unknown>) => {\n apm.setCustomContext(context);\n },\n };\n}\n\nexport function captureError(error: Error) {\n if (!isTelemetryEnabled()) {\n console.error(error);\n return;\n }\n\n getApm().captureError(error);\n}\n"]}
|
package/dist/index-CwdohC5n.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Request, Response, NextFunction } from 'express';
|
|
2
|
-
|
|
3
|
-
interface ModelenceConfig {
|
|
4
|
-
serverDir: string;
|
|
5
|
-
serverEntry: string;
|
|
6
|
-
postBuildCommand?: string;
|
|
7
|
-
}
|
|
8
|
-
type ExpressMiddleware = (req: Request, res: Response, next: NextFunction) => void | Promise<void>;
|
|
9
|
-
interface AppServer {
|
|
10
|
-
init: () => Promise<void>;
|
|
11
|
-
handler: (req: Request, res: Response) => void;
|
|
12
|
-
middlewares?: () => ExpressMiddleware[];
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export type { AppServer as A, ExpressMiddleware as E, ModelenceConfig as M };
|
package/dist/package-3YQBVIVQ.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export{l as author,i as bin,n as bugs,s as default,q as dependencies,d as description,p as devDependencies,g as exports,h as files,o as homepage,m as license,e as main,b as name,r as peerDependencies,k as repository,j as scripts,a as type,f as types,c as version}from'./chunk-3YAV3UUU.js';//# sourceMappingURL=package-3YQBVIVQ.js.map
|
|
2
|
-
//# sourceMappingURL=package-3YQBVIVQ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"package-3YQBVIVQ.js"}
|
package/dist/types-Ds1ESQSs.d.ts
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { Server } from 'http';
|
|
2
|
-
import { Document, ObjectId } from 'mongodb';
|
|
3
|
-
|
|
4
|
-
type ConfigType = 'text' | 'string' | 'number' | 'boolean' | 'secret';
|
|
5
|
-
type ConfigKey = string;
|
|
6
|
-
type ConfigParams = {
|
|
7
|
-
type: ConfigType;
|
|
8
|
-
default: ValueType<ConfigType>;
|
|
9
|
-
isPublic: boolean;
|
|
10
|
-
};
|
|
11
|
-
type AppConfig = {
|
|
12
|
-
key: ConfigKey;
|
|
13
|
-
value: ValueType<ConfigType>;
|
|
14
|
-
type: ConfigType;
|
|
15
|
-
};
|
|
16
|
-
type ConfigSchema = {
|
|
17
|
-
[key: string]: ConfigParams;
|
|
18
|
-
};
|
|
19
|
-
type Configs = Record<ConfigKey, AppConfig>;
|
|
20
|
-
type ValueType<T> = T extends 'number' ? number : T extends 'string' ? string : T extends 'text' ? string : T extends 'boolean' ? boolean : T extends 'secret' ? string : never;
|
|
21
|
-
|
|
22
|
-
type User = Document;
|
|
23
|
-
type UserInfo = {
|
|
24
|
-
id: string;
|
|
25
|
-
handle: string;
|
|
26
|
-
roles: string[];
|
|
27
|
-
hasRole: (role: string) => boolean;
|
|
28
|
-
requireRole: (role: string) => void;
|
|
29
|
-
};
|
|
30
|
-
type Role = string;
|
|
31
|
-
type DefaultRoles = Record<'authenticated' | 'unauthenticated', Role | null>;
|
|
32
|
-
type Session = {
|
|
33
|
-
authToken: string;
|
|
34
|
-
expiresAt: Date;
|
|
35
|
-
userId: ObjectId | null;
|
|
36
|
-
};
|
|
37
|
-
type Permission = string;
|
|
38
|
-
type RoleDefinition = {
|
|
39
|
-
description?: string;
|
|
40
|
-
permissions: Permission[];
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
type canAccessChannel = (props: {
|
|
44
|
-
user: User | null;
|
|
45
|
-
session: Session | null;
|
|
46
|
-
roles: string[];
|
|
47
|
-
}) => Promise<boolean>;
|
|
48
|
-
declare class ServerChannel<T = unknown> {
|
|
49
|
-
readonly category: string;
|
|
50
|
-
readonly canAccessChannel: canAccessChannel | null;
|
|
51
|
-
constructor(category: string, canAccessChannel?: canAccessChannel);
|
|
52
|
-
broadcast(id: string, data: T): void;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
declare class ClientChannel<T = unknown> {
|
|
56
|
-
readonly category: string;
|
|
57
|
-
private readonly onMessage;
|
|
58
|
-
constructor(category: string, onMessage: (data: T) => void);
|
|
59
|
-
init(): void;
|
|
60
|
-
joinChannel(id: string): void;
|
|
61
|
-
leaveChannel(id: string): void;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
interface WebsocketServerProvider {
|
|
65
|
-
init(props: {
|
|
66
|
-
httpServer: Server;
|
|
67
|
-
channels: ServerChannel[];
|
|
68
|
-
}): Promise<void>;
|
|
69
|
-
broadcast<T>(props: {
|
|
70
|
-
category: string;
|
|
71
|
-
id: string;
|
|
72
|
-
data: T;
|
|
73
|
-
}): void;
|
|
74
|
-
}
|
|
75
|
-
interface WebsocketClientProvider {
|
|
76
|
-
init(props: {
|
|
77
|
-
channels?: ClientChannel[];
|
|
78
|
-
}): void;
|
|
79
|
-
on<T>(props: {
|
|
80
|
-
category: string;
|
|
81
|
-
listener: (data: T) => void;
|
|
82
|
-
}): void;
|
|
83
|
-
once<T>(props: {
|
|
84
|
-
category: string;
|
|
85
|
-
listener: (data: T) => void;
|
|
86
|
-
}): void;
|
|
87
|
-
off<T>(props: {
|
|
88
|
-
category: string;
|
|
89
|
-
listener: (data: T) => void;
|
|
90
|
-
}): void;
|
|
91
|
-
emit(props: {
|
|
92
|
-
eventName: string;
|
|
93
|
-
category: string;
|
|
94
|
-
id: string;
|
|
95
|
-
}): void;
|
|
96
|
-
joinChannel(props: {
|
|
97
|
-
category: string;
|
|
98
|
-
id: string;
|
|
99
|
-
}): void;
|
|
100
|
-
leaveChannel(props: {
|
|
101
|
-
category: string;
|
|
102
|
-
id: string;
|
|
103
|
-
}): void;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export { type AppConfig as A, type ConfigSchema as C, type DefaultRoles as D, type Permission as P, type RoleDefinition as R, ServerChannel as S, type User as U, type WebsocketServerProvider as W, type WebsocketClientProvider as a, type ConfigKey as b, ClientChannel as c, type Session as d, type UserInfo as e, type Role as f, type ConfigType as g, type Configs as h };
|