modelence 0.7.2 → 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-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-KUL6YKKP.js +0 -3
- package/dist/chunk-KUL6YKKP.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-IIELPLTY.js +0 -2
- package/dist/package-IIELPLTY.js.map +0 -1
- package/dist/types-Ds1ESQSs.d.ts +0 -106
package/dist/error.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare abstract class ModelenceError extends Error {
|
|
2
|
+
abstract status: number;
|
|
3
|
+
}
|
|
4
|
+
export declare class AuthError extends ModelenceError {
|
|
5
|
+
status: number;
|
|
6
|
+
constructor(message: string);
|
|
7
|
+
}
|
|
8
|
+
export declare class ValidationError extends ModelenceError {
|
|
9
|
+
status: number;
|
|
10
|
+
constructor(message: string);
|
|
11
|
+
}
|
|
12
|
+
export declare class RateLimitError extends ModelenceError {
|
|
13
|
+
status: number;
|
|
14
|
+
constructor(message: string);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,8BAAsB,cAAe,SAAQ,KAAK;IAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,SAAU,SAAQ,cAAc;IAC3C,MAAM,SAAO;gBAED,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAgB,SAAQ,cAAc;IACjD,MAAM,SAAO;gBAED,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,cAAe,SAAQ,cAAc;IAChD,MAAM,SAAO;gBAED,OAAO,EAAE,MAAM;CAI5B"}
|
package/dist/error.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export class ModelenceError extends Error {
|
|
2
|
+
}
|
|
3
|
+
export class AuthError extends ModelenceError {
|
|
4
|
+
constructor(message) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.status = 401;
|
|
7
|
+
this.name = 'AuthError';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export class ValidationError extends ModelenceError {
|
|
11
|
+
constructor(message) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.status = 400;
|
|
14
|
+
this.name = 'ValidationError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class RateLimitError extends ModelenceError {
|
|
18
|
+
constructor(message) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.status = 429;
|
|
21
|
+
this.name = 'RateLimitError';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,cAAe,SAAQ,KAAK;CAEjD;AAED,MAAM,OAAO,SAAU,SAAQ,cAAc;IAG3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,WAAM,GAAG,GAAG,CAAC;QAIX,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,cAAc;IAGjD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,WAAM,GAAG,GAAG,CAAC;QAIX,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,cAAc;IAGhD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,WAAM,GAAG,GAAG,CAAC;QAIX,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,31 +1,6 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
declare const time: {
|
|
8
|
-
seconds: (x: number) => number;
|
|
9
|
-
minutes: (x: number) => number;
|
|
10
|
-
hours: (x: number) => number;
|
|
11
|
-
days: (x: number) => number;
|
|
12
|
-
weeks: (x: number) => number;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
declare abstract class ModelenceError extends Error {
|
|
16
|
-
abstract status: number;
|
|
17
|
-
}
|
|
18
|
-
declare class AuthError extends ModelenceError {
|
|
19
|
-
status: number;
|
|
20
|
-
constructor(message: string);
|
|
21
|
-
}
|
|
22
|
-
declare class ValidationError extends ModelenceError {
|
|
23
|
-
status: number;
|
|
24
|
-
constructor(message: string);
|
|
25
|
-
}
|
|
26
|
-
declare class RateLimitError extends ModelenceError {
|
|
27
|
-
status: number;
|
|
28
|
-
constructor(message: string);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export { AuthError, RateLimitError, ValidationError, time };
|
|
1
|
+
export { ConfigSchema } from './config/types';
|
|
2
|
+
export { time } from './time';
|
|
3
|
+
export { AuthError, ValidationError, RateLimitError } from './error';
|
|
4
|
+
export { ModelenceConfig } from './types';
|
|
5
|
+
export type { WebsocketServerProvider, WebsocketClientProvider } from './websocket/types';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,YAAY,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export{
|
|
1
|
+
export { time } from './time';
|
|
2
|
+
export { AuthError, ValidationError, RateLimitError } from './error';
|
|
2
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Store } from '../data/store';
|
|
2
|
+
/**
|
|
3
|
+
* Database collection for storing distributed locks.
|
|
4
|
+
*
|
|
5
|
+
* Locks are used to ensure that only one instance of the application can perform
|
|
6
|
+
* a specific action at a time, such as running cron jobs or migrations
|
|
7
|
+
*/
|
|
8
|
+
export declare const locksCollection: Store<{
|
|
9
|
+
resource: import("zod").ZodString;
|
|
10
|
+
instanceId: import("zod").ZodString;
|
|
11
|
+
acquiredAt: import("zod").ZodDate;
|
|
12
|
+
}, Record<string, (this: Pick<import("../types").InferDocumentType<{
|
|
13
|
+
resource: import("zod").ZodString;
|
|
14
|
+
instanceId: import("zod").ZodString;
|
|
15
|
+
acquiredAt: import("zod").ZodDate;
|
|
16
|
+
}>, "resource" | "instanceId" | "acquiredAt"> & {
|
|
17
|
+
_id: import("bson").ObjectId;
|
|
18
|
+
}, ...args: any[]) => any>>;
|
|
19
|
+
//# sourceMappingURL=db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/lock/db.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;2BAkB1B,CAAC"}
|
package/dist/lock/db.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { schema } from '../data/types';
|
|
2
|
+
import { Store } from '../data/store';
|
|
3
|
+
/**
|
|
4
|
+
* Database collection for storing distributed locks.
|
|
5
|
+
*
|
|
6
|
+
* Locks are used to ensure that only one instance of the application can perform
|
|
7
|
+
* a specific action at a time, such as running cron jobs or migrations
|
|
8
|
+
*/
|
|
9
|
+
export const locksCollection = new Store('_modelenceLocks', {
|
|
10
|
+
schema: {
|
|
11
|
+
resource: schema.string(),
|
|
12
|
+
instanceId: schema.string(),
|
|
13
|
+
acquiredAt: schema.date(),
|
|
14
|
+
},
|
|
15
|
+
indexes: [
|
|
16
|
+
{
|
|
17
|
+
key: { resource: 1 },
|
|
18
|
+
unique: true,
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
key: { resource: 1, instanceId: 1 },
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
key: { resource: 1, acquiredAt: 1 },
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/lock/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,KAAK,CAAC,iBAAiB,EAAE;IAC1D,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAC3B,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE;KAC1B;IACD,OAAO,EAAE;QACP;YACE,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YACpB,MAAM,EAAE,IAAI;SACb;QACD;YACE,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;SACpC;QACD;YACE,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;SACpC;KACF;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Acquires a lock of the specified resource.
|
|
3
|
+
* If the lock already exists and is owned by another container, this will fail.
|
|
4
|
+
* If the lock is expired (no recent heartbeat), it will be taken over.
|
|
5
|
+
*
|
|
6
|
+
* @param resource - The type of lock to acquire
|
|
7
|
+
* @param options.lockDuration - Time in ms after which a lock is considered expired (default: 30s)
|
|
8
|
+
* @param options.lockCacheDuration - Time in ms to cache successful lock acquisition (default: 10s)
|
|
9
|
+
* @param options.instanceId - The unique identifier for this application instance
|
|
10
|
+
* @returns true if lock was acquired, false otherwise
|
|
11
|
+
*/
|
|
12
|
+
export declare function acquireLock(resource: string, { lockDuration, successfulLockCacheDuration, failedLockCacheDuration, instanceId, }?: {
|
|
13
|
+
lockDuration?: number;
|
|
14
|
+
successfulLockCacheDuration?: number;
|
|
15
|
+
failedLockCacheDuration?: number;
|
|
16
|
+
instanceId?: string;
|
|
17
|
+
}): Promise<boolean>;
|
|
18
|
+
/**
|
|
19
|
+
* Releases a lock of the specified resource owned by this container.
|
|
20
|
+
*
|
|
21
|
+
* @param resource - The resource to release the lock for
|
|
22
|
+
* @param options.instanceId - The unique identifier for this application instance
|
|
23
|
+
* @returns true if lock was released, false if lock wasn't owned by this container
|
|
24
|
+
*/
|
|
25
|
+
export declare function releaseLock(resource: string, { instanceId, }?: {
|
|
26
|
+
instanceId?: string;
|
|
27
|
+
}): Promise<boolean>;
|
|
28
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/lock/helpers.ts"],"names":[],"mappings":"AAiCA;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,EACE,YAAoC,EACpC,2BAAoD,EACpD,uBAAgD,EAChD,UAAwB,GACzB,GAAE;IACD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB,GACL,OAAO,CAAC,OAAO,CAAC,CAiElB;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,EACE,UAAwB,GACzB,GAAE;IACD,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB,GACL,OAAO,CAAC,OAAO,CAAC,CASlB"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { randomBytes } from 'crypto';
|
|
2
|
+
import { locksCollection } from './db';
|
|
3
|
+
import { logDebug } from '../telemetry';
|
|
4
|
+
import { time } from '../time';
|
|
5
|
+
/**
|
|
6
|
+
* In-memory cache to avoid frequent lock acquisition attempts
|
|
7
|
+
* for the same resource within a short time frame.
|
|
8
|
+
*/
|
|
9
|
+
const lockCache = {};
|
|
10
|
+
/**
|
|
11
|
+
* Time duration to consider a cached lock acquisition valid
|
|
12
|
+
*/
|
|
13
|
+
const DEFAULT_CACHE_DURATION = time.seconds(10);
|
|
14
|
+
/**
|
|
15
|
+
* Unique identifier for this application instance.
|
|
16
|
+
* Generated once per application instance to track which container owns which locks.
|
|
17
|
+
*/
|
|
18
|
+
const INSTANCE_ID = randomBytes(32).toString('base64url');
|
|
19
|
+
/**
|
|
20
|
+
* Time after which a lock is expired
|
|
21
|
+
*/
|
|
22
|
+
const DEFAULT_LOCK_DURATION = time.seconds(30);
|
|
23
|
+
/**
|
|
24
|
+
* Acquires a lock of the specified resource.
|
|
25
|
+
* If the lock already exists and is owned by another container, this will fail.
|
|
26
|
+
* If the lock is expired (no recent heartbeat), it will be taken over.
|
|
27
|
+
*
|
|
28
|
+
* @param resource - The type of lock to acquire
|
|
29
|
+
* @param options.lockDuration - Time in ms after which a lock is considered expired (default: 30s)
|
|
30
|
+
* @param options.lockCacheDuration - Time in ms to cache successful lock acquisition (default: 10s)
|
|
31
|
+
* @param options.instanceId - The unique identifier for this application instance
|
|
32
|
+
* @returns true if lock was acquired, false otherwise
|
|
33
|
+
*/
|
|
34
|
+
export async function acquireLock(resource, { lockDuration = DEFAULT_LOCK_DURATION, successfulLockCacheDuration = DEFAULT_CACHE_DURATION, failedLockCacheDuration = DEFAULT_CACHE_DURATION, instanceId = INSTANCE_ID, } = {}) {
|
|
35
|
+
const now = Date.now();
|
|
36
|
+
if (lockCache[resource] && now < lockCache[resource].expiresAt) {
|
|
37
|
+
return lockCache[resource].value;
|
|
38
|
+
}
|
|
39
|
+
const staleThresholdDate = new Date(now - lockDuration);
|
|
40
|
+
logDebug(`Attempting to acquire lock: ${resource}`, {
|
|
41
|
+
source: 'lock',
|
|
42
|
+
resource,
|
|
43
|
+
instanceId,
|
|
44
|
+
});
|
|
45
|
+
try {
|
|
46
|
+
const result = await locksCollection.upsertOne({
|
|
47
|
+
$or: [
|
|
48
|
+
{ resource, instanceId },
|
|
49
|
+
{ resource, acquiredAt: { $lt: staleThresholdDate } },
|
|
50
|
+
],
|
|
51
|
+
}, {
|
|
52
|
+
$set: {
|
|
53
|
+
resource,
|
|
54
|
+
instanceId,
|
|
55
|
+
acquiredAt: new Date(),
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
const isLockAcquired = result.upsertedCount > 0 || result.modifiedCount > 0;
|
|
59
|
+
lockCache[resource] = {
|
|
60
|
+
value: isLockAcquired,
|
|
61
|
+
expiresAt: now + (isLockAcquired ? successfulLockCacheDuration : failedLockCacheDuration),
|
|
62
|
+
};
|
|
63
|
+
if (isLockAcquired) {
|
|
64
|
+
logDebug(`Lock acquired: ${resource}`, {
|
|
65
|
+
source: 'lock',
|
|
66
|
+
resource,
|
|
67
|
+
instanceId,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
logDebug(`Failed to acquire lock (already held): ${resource}`, {
|
|
72
|
+
source: 'lock',
|
|
73
|
+
resource,
|
|
74
|
+
instanceId,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return isLockAcquired;
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
lockCache[resource] = {
|
|
81
|
+
value: false,
|
|
82
|
+
expiresAt: now + failedLockCacheDuration,
|
|
83
|
+
};
|
|
84
|
+
logDebug(`Failed to acquire lock (already held): ${resource}`, {
|
|
85
|
+
source: 'lock',
|
|
86
|
+
resource,
|
|
87
|
+
instanceId,
|
|
88
|
+
});
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Releases a lock of the specified resource owned by this container.
|
|
94
|
+
*
|
|
95
|
+
* @param resource - The resource to release the lock for
|
|
96
|
+
* @param options.instanceId - The unique identifier for this application instance
|
|
97
|
+
* @returns true if lock was released, false if lock wasn't owned by this container
|
|
98
|
+
*/
|
|
99
|
+
export async function releaseLock(resource, { instanceId = INSTANCE_ID, } = {}) {
|
|
100
|
+
const result = await locksCollection.deleteOne({
|
|
101
|
+
resource,
|
|
102
|
+
instanceId,
|
|
103
|
+
});
|
|
104
|
+
delete lockCache[resource];
|
|
105
|
+
return result.deletedCount > 0;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/lock/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;;;GAGG;AACH,MAAM,SAAS,GAMX,EAAE,CAAC;AAEP;;GAEG;AACH,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAEhD;;;GAGG;AACH,MAAM,WAAW,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAgB,EAChB,EACE,YAAY,GAAG,qBAAqB,EACpC,2BAA2B,GAAG,sBAAsB,EACpD,uBAAuB,GAAG,sBAAsB,EAChD,UAAU,GAAG,WAAW,MAMtB,EAAE;IAEN,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;QAC/D,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;IACnC,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC;IAExD,QAAQ,CAAC,+BAA+B,QAAQ,EAAE,EAAE;QAClD,MAAM,EAAE,MAAM;QACd,QAAQ;QACR,UAAU;KACX,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,CAC5C;YACE,GAAG,EAAE;gBACH,EAAE,QAAQ,EAAE,UAAU,EAAE;gBACxB,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,EAAE;aACtD;SACF,EACD;YACE,IAAI,EAAE;gBACJ,QAAQ;gBACR,UAAU;gBACV,UAAU,EAAE,IAAI,IAAI,EAAE;aACvB;SACF,CACF,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,CAAC,aAAa,GAAG,CAAC,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;QAE5E,SAAS,CAAC,QAAQ,CAAC,GAAG;YACpB,KAAK,EAAE,cAAc;YACrB,SAAS,EAAE,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,uBAAuB,CAAC;SAC1F,CAAC;QAEF,IAAI,cAAc,EAAE,CAAC;YACnB,QAAQ,CAAC,kBAAkB,QAAQ,EAAE,EAAE;gBACrC,MAAM,EAAE,MAAM;gBACd,QAAQ;gBACR,UAAU;aACX,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,0CAA0C,QAAQ,EAAE,EAAE;gBAC7D,MAAM,EAAE,MAAM;gBACd,QAAQ;gBACR,UAAU;aACX,CAAC,CAAC;QACL,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,SAAS,CAAC,QAAQ,CAAC,GAAG;YACpB,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,GAAG,GAAG,uBAAuB;SACzC,CAAC;QACF,QAAQ,CAAC,0CAA0C,QAAQ,EAAE,EAAE;YAC7D,MAAM,EAAE,MAAM;YACd,QAAQ;YACR,UAAU;SACX,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAgB,EAChB,EACE,UAAU,GAAG,WAAW,MAGtB,EAAE;IAEN,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC;QAC7C,QAAQ;QACR,UAAU;KACX,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE3B,OAAO,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lock/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lock/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/lock/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC;;GAEG;;AACH,wBAEG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Module } from '../app/module';
|
|
2
|
+
import { locksCollection } from './db';
|
|
3
|
+
/**
|
|
4
|
+
* Lock module for distributed locking across multiple instances.
|
|
5
|
+
*/
|
|
6
|
+
export default new Module('_system.lock', {
|
|
7
|
+
stores: [locksCollection],
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/lock/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAEvC;;GAEG;AACH,eAAe,IAAI,MAAM,CAAC,cAAc,EAAE;IACxC,MAAM,EAAE,CAAC,eAAe,CAAC;CAC1B,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { MethodDefinition, Args, Context } from './types';
|
|
2
|
+
export declare function createQuery<T extends unknown[]>(name: string, methodDef: MethodDefinition<T>): void;
|
|
3
|
+
export declare function createMutation<T extends unknown[]>(name: string, methodDef: MethodDefinition<T>): void;
|
|
4
|
+
export declare function _createSystemQuery<T extends unknown[]>(name: string, methodDef: MethodDefinition<T>): void;
|
|
5
|
+
export declare function _createSystemMutation<T extends unknown[]>(name: string, methodDef: MethodDefinition<T>): void;
|
|
6
|
+
export declare function runMethod(name: string, args: Args, context: Context): Promise<unknown>;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/methods/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAU,gBAAgB,EAAc,IAAI,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAI9E,wBAAgB,WAAW,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAI5F;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAI/F;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,OAAO,EAAE,EACpD,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAK/B;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,OAAO,EAAE,EACvD,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAK/B;AA8BD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,oBAwBzE"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { requireServer } from '../utils';
|
|
2
|
+
import { startTransaction } from '../telemetry';
|
|
3
|
+
import { requireAccess } from '../auth/role';
|
|
4
|
+
const methods = {};
|
|
5
|
+
export function createQuery(name, methodDef) {
|
|
6
|
+
requireServer();
|
|
7
|
+
validateMethodName(name);
|
|
8
|
+
return _createMethodInternal('query', name, methodDef);
|
|
9
|
+
}
|
|
10
|
+
export function createMutation(name, methodDef) {
|
|
11
|
+
requireServer();
|
|
12
|
+
validateMethodName(name);
|
|
13
|
+
return _createMethodInternal('mutation', name, methodDef);
|
|
14
|
+
}
|
|
15
|
+
export function _createSystemQuery(name, methodDef) {
|
|
16
|
+
requireServer();
|
|
17
|
+
validateSystemMethodName(name);
|
|
18
|
+
return _createMethodInternal('query', name, methodDef);
|
|
19
|
+
}
|
|
20
|
+
export function _createSystemMutation(name, methodDef) {
|
|
21
|
+
requireServer();
|
|
22
|
+
validateSystemMethodName(name);
|
|
23
|
+
return _createMethodInternal('mutation', name, methodDef);
|
|
24
|
+
}
|
|
25
|
+
function validateMethodName(name) {
|
|
26
|
+
if (name.toLowerCase().startsWith('_system.')) {
|
|
27
|
+
throw new Error(`Method name cannot start with a reserved prefix: '_system.' (${name})`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function validateSystemMethodName(name) {
|
|
31
|
+
if (!name.toLowerCase().startsWith('_system.')) {
|
|
32
|
+
throw new Error(`System method name must start with a prefix: '_system.' (${name})`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function _createMethodInternal(type, name, methodDef) {
|
|
36
|
+
requireServer();
|
|
37
|
+
if (methods[name]) {
|
|
38
|
+
throw new Error(`Method with name '${name}' is already defined.`);
|
|
39
|
+
}
|
|
40
|
+
const handler = typeof methodDef === 'function' ? methodDef : methodDef.handler;
|
|
41
|
+
const permissions = typeof methodDef === 'function' ? [] : (methodDef.permissions ?? []);
|
|
42
|
+
methods[name] = { type, name, handler, permissions };
|
|
43
|
+
}
|
|
44
|
+
export async function runMethod(name, args, context) {
|
|
45
|
+
requireServer();
|
|
46
|
+
const method = methods[name];
|
|
47
|
+
if (!method) {
|
|
48
|
+
throw new Error(`Method with name '${name}' is not defined.`);
|
|
49
|
+
}
|
|
50
|
+
const { type, handler } = method;
|
|
51
|
+
const transaction = startTransaction('method', `method:${name}`, { type, args });
|
|
52
|
+
let response;
|
|
53
|
+
try {
|
|
54
|
+
requireAccess(context.roles, method.permissions);
|
|
55
|
+
response = await handler(args, context);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
// TODO: log error and associate it with the transaction
|
|
59
|
+
transaction.end('error');
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
transaction.end();
|
|
63
|
+
return response;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/methods/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare function getResponseTypeMap(result: unknown): {
|
|
2
|
+
type: string;
|
|
3
|
+
elements?: undefined;
|
|
4
|
+
props?: undefined;
|
|
5
|
+
} | {
|
|
6
|
+
type: string;
|
|
7
|
+
elements: Record<string, unknown>;
|
|
8
|
+
props?: undefined;
|
|
9
|
+
} | {
|
|
10
|
+
type: string;
|
|
11
|
+
props: Record<string, unknown>;
|
|
12
|
+
elements?: undefined;
|
|
13
|
+
} | null;
|
|
14
|
+
export declare function reviveResponseTypes<T = unknown>(data: T, typeMap?: Record<string, unknown>): T;
|
|
15
|
+
//# sourceMappingURL=serialize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../src/methods/serialize.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO;;;;;;;;;;;;SAuCjD;AAED,wBAAgB,mBAAmB,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CA4B9F"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export function getResponseTypeMap(result) {
|
|
2
|
+
if (result instanceof Date) {
|
|
3
|
+
return { type: 'date' };
|
|
4
|
+
}
|
|
5
|
+
if (Array.isArray(result)) {
|
|
6
|
+
const elements = {};
|
|
7
|
+
for (let i = 0; i < result.length; i++) {
|
|
8
|
+
const item = result[i];
|
|
9
|
+
const subTypeMap = getResponseTypeMap(item);
|
|
10
|
+
if (subTypeMap) {
|
|
11
|
+
elements[i] = subTypeMap;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return Object.keys(elements).length > 0
|
|
15
|
+
? {
|
|
16
|
+
type: 'array',
|
|
17
|
+
elements,
|
|
18
|
+
}
|
|
19
|
+
: null;
|
|
20
|
+
}
|
|
21
|
+
if (typeof result === 'object' && result !== null) {
|
|
22
|
+
const props = {};
|
|
23
|
+
for (const [key, value] of Object.entries(result)) {
|
|
24
|
+
const subTypeMap = getResponseTypeMap(value);
|
|
25
|
+
if (subTypeMap) {
|
|
26
|
+
props[key] = subTypeMap;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return Object.keys(props).length > 0
|
|
30
|
+
? {
|
|
31
|
+
type: 'object',
|
|
32
|
+
props,
|
|
33
|
+
}
|
|
34
|
+
: null;
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
export function reviveResponseTypes(data, typeMap) {
|
|
39
|
+
if (!typeMap) {
|
|
40
|
+
return data;
|
|
41
|
+
}
|
|
42
|
+
if (typeMap.type === 'date') {
|
|
43
|
+
return new Date(data);
|
|
44
|
+
}
|
|
45
|
+
if (typeMap.type === 'array') {
|
|
46
|
+
return data.map((item, index) => reviveResponseTypes(item, typeMap.elements[index]));
|
|
47
|
+
}
|
|
48
|
+
if (typeMap.type === 'object') {
|
|
49
|
+
return Object.fromEntries(Object.entries(data).map(([key, value]) => [
|
|
50
|
+
key,
|
|
51
|
+
reviveResponseTypes(value, typeMap.props[key]),
|
|
52
|
+
]));
|
|
53
|
+
}
|
|
54
|
+
return data;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=serialize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/methods/serialize.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,IAAI,MAAM,YAAY,IAAI,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,UAAU,EAAE,CAAC;gBACf,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;YACrC,CAAC,CAAC;gBACE,IAAI,EAAE,OAAO;gBACb,QAAQ;aACT;YACH,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;YAClC,CAAC,CAAC;gBACE,IAAI,EAAE,QAAQ;gBACd,KAAK;aACN;YACH,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAc,IAAO,EAAE,OAAiC;IACzF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,IAAI,IAAI,CAAC,IAAc,CAAM,CAAC;IACvC,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAQ,IAAkB,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,KAAa,EAAE,EAAE,CAC9D,mBAAmB,CAAC,IAAI,EAAG,OAAO,CAAC,QAAsC,CAAC,KAAK,CAAC,CAAC,CAC7E,CAAC;IACT,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,IAA+B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YACpE,GAAG;YACH,mBAAmB,CACjB,KAAK,EACJ,OAAO,CAAC,KAAiC,CAAC,GAAG,CAA4B,CAC3E;SACF,CAAC,CACE,CAAC;IACT,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Session, UserInfo, Permission } from '../auth/types';
|
|
2
|
+
export type ClientInfo = {
|
|
3
|
+
screenWidth: number;
|
|
4
|
+
screenHeight: number;
|
|
5
|
+
windowWidth: number;
|
|
6
|
+
windowHeight: number;
|
|
7
|
+
pixelRatio: number;
|
|
8
|
+
orientation: string | null;
|
|
9
|
+
};
|
|
10
|
+
export type ConnectionInfo = {
|
|
11
|
+
ip?: string;
|
|
12
|
+
userAgent?: string;
|
|
13
|
+
acceptLanguage?: string;
|
|
14
|
+
referrer?: string;
|
|
15
|
+
baseUrl?: string;
|
|
16
|
+
};
|
|
17
|
+
export type Context = {
|
|
18
|
+
session: Session | null;
|
|
19
|
+
user: UserInfo | null;
|
|
20
|
+
roles: string[];
|
|
21
|
+
clientInfo: ClientInfo;
|
|
22
|
+
connectionInfo: ConnectionInfo;
|
|
23
|
+
};
|
|
24
|
+
export type Args = Record<string, unknown>;
|
|
25
|
+
export type Handler<T = unknown> = (args: Args, context: Context) => Promise<T> | T;
|
|
26
|
+
export type MethodType = 'query' | 'mutation';
|
|
27
|
+
export type MethodDefinition<T = unknown> = {
|
|
28
|
+
permissions?: Permission[];
|
|
29
|
+
handler: Handler<T>;
|
|
30
|
+
} | Handler<T>;
|
|
31
|
+
export type Method<T = unknown> = {
|
|
32
|
+
type: MethodType;
|
|
33
|
+
name: string;
|
|
34
|
+
permissions: Permission[];
|
|
35
|
+
handler: Handler<T>;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/methods/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEpF,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;AAE9C,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,IACpC;IACE,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CACrB,GACD,OAAO,CAAC,CAAC,CAAC,CAAC;AAEf,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,OAAO,IAAI;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/methods/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Store } from '../data/store';
|
|
2
|
+
export declare const dbMigrations: Store<{
|
|
3
|
+
version: import("zod").ZodNumber;
|
|
4
|
+
status: import("zod").ZodEnum<["completed", "failed"]>;
|
|
5
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
6
|
+
output: import("zod").ZodOptional<import("zod").ZodString>;
|
|
7
|
+
appliedAt: import("zod").ZodDate;
|
|
8
|
+
}, Record<string, (this: Pick<import("../types").InferDocumentType<{
|
|
9
|
+
version: import("zod").ZodNumber;
|
|
10
|
+
status: import("zod").ZodEnum<["completed", "failed"]>;
|
|
11
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
12
|
+
output: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13
|
+
appliedAt: import("zod").ZodDate;
|
|
14
|
+
}>, "status" | "output" | "version" | "description" | "appliedAt"> & {
|
|
15
|
+
_id: import("bson").ObjectId;
|
|
16
|
+
}, ...args: any[]) => any>>;
|
|
17
|
+
//# sourceMappingURL=db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/migration/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;2BASvB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Store } from '../data/store';
|
|
2
|
+
import { schema } from '../data/types';
|
|
3
|
+
export const dbMigrations = new Store('_modelenceMigrations', {
|
|
4
|
+
schema: {
|
|
5
|
+
version: schema.number(),
|
|
6
|
+
status: schema.enum(['completed', 'failed']),
|
|
7
|
+
description: schema.string().optional(),
|
|
8
|
+
output: schema.string().optional(),
|
|
9
|
+
appliedAt: schema.date(),
|
|
10
|
+
},
|
|
11
|
+
indexes: [{ key: { version: 1 }, unique: true }, { key: { version: 1, status: 1 } }],
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/migration/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,KAAK,CAAC,sBAAsB,EAAE;IAC5D,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QACxB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC5C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE;KACzB;IACD,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;CACrF,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Module } from '../app/module';
|
|
2
|
+
export type MigrationScript = {
|
|
3
|
+
version: number;
|
|
4
|
+
description: string;
|
|
5
|
+
handler: () => Promise<string | void>;
|
|
6
|
+
};
|
|
7
|
+
export declare function runMigrations(migrations: MigrationScript[]): Promise<void>;
|
|
8
|
+
export declare function startMigrations(migrations: MigrationScript[]): void;
|
|
9
|
+
declare const _default: Module;
|
|
10
|
+
export default _default;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migration/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAIvC,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACvC,CAAC;AAEF,wBAAsB,aAAa,CAAC,UAAU,EAAE,eAAe,EAAE,iBAkFhE;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,eAAe,EAAE,QAM5D;;AAED,wBAEG"}
|