exodus-framework 2.0.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/build/@types/app.d.ts +5 -0
- package/build/@types/app.d.ts.map +1 -0
- package/build/@types/app.js +5 -0
- package/build/@types/console.d.ts +2 -0
- package/build/@types/console.d.ts.map +1 -0
- package/build/@types/console.js +5 -0
- package/build/@types/entity.d.ts +42 -0
- package/build/@types/entity.d.ts.map +1 -0
- package/build/@types/entity.js +5 -0
- package/build/@types/express.d.js +5 -0
- package/build/@types/http.d.ts +62 -0
- package/build/@types/http.d.ts.map +1 -0
- package/build/@types/http.js +50 -0
- package/build/@types/index.d.ts +10 -0
- package/build/@types/index.d.ts.map +1 -0
- package/build/@types/index.js +93 -0
- package/build/@types/messaging.d.ts +22 -0
- package/build/@types/messaging.d.ts.map +1 -0
- package/build/@types/messaging.js +13 -0
- package/build/@types/service.d.ts +4 -0
- package/build/@types/service.d.ts.map +1 -0
- package/build/@types/service.js +5 -0
- package/build/@types/session.d.ts +9 -0
- package/build/@types/session.d.ts.map +1 -0
- package/build/@types/session.js +5 -0
- package/build/@types/singleton.d.ts +10 -0
- package/build/@types/singleton.d.ts.map +1 -0
- package/build/@types/singleton.js +5 -0
- package/build/@types/socket.d.ts +20 -0
- package/build/@types/socket.d.ts.map +1 -0
- package/build/@types/socket.js +11 -0
- package/build/app/app.d.ts +16 -0
- package/build/app/app.d.ts.map +1 -0
- package/build/app/app.js +68 -0
- package/build/app/controller.d.ts +28 -0
- package/build/app/controller.d.ts.map +1 -0
- package/build/app/controller.js +94 -0
- package/build/app/core.d.ts +7 -0
- package/build/app/core.d.ts.map +1 -0
- package/build/app/core.js +61 -0
- package/build/app/index.d.ts +8 -0
- package/build/app/index.d.ts.map +1 -0
- package/build/app/index.js +70 -0
- package/build/app/service.d.ts +6 -0
- package/build/app/service.d.ts.map +1 -0
- package/build/app/service.js +24 -0
- package/build/app/singleton.d.ts +9 -0
- package/build/app/singleton.d.ts.map +1 -0
- package/build/app/singleton.js +29 -0
- package/build/config/app.d.ts +16 -0
- package/build/config/app.d.ts.map +1 -0
- package/build/config/app.js +25 -0
- package/build/config/auth.d.ts +5 -0
- package/build/config/auth.d.ts.map +1 -0
- package/build/config/auth.js +11 -0
- package/build/config/cache.d.ts +7 -0
- package/build/config/cache.d.ts.map +1 -0
- package/build/config/cache.js +12 -0
- package/build/config/db.d.ts +13 -0
- package/build/config/db.d.ts.map +1 -0
- package/build/config/db.js +17 -0
- package/build/config/http.d.ts +5 -0
- package/build/config/http.d.ts.map +1 -0
- package/build/config/http.js +10 -0
- package/build/config/index.d.ts +9 -0
- package/build/config/index.d.ts.map +1 -0
- package/build/config/index.js +93 -0
- package/build/config/logger.d.ts +7 -0
- package/build/config/logger.d.ts.map +1 -0
- package/build/config/logger.js +33 -0
- package/build/config/messaging.d.ts +7 -0
- package/build/config/messaging.d.ts.map +1 -0
- package/build/config/messaging.js +12 -0
- package/build/config/task.d.ts +6 -0
- package/build/config/task.d.ts.map +1 -0
- package/build/config/task.js +13 -0
- package/build/controllers/api/file.d.ts +8 -0
- package/build/controllers/api/file.d.ts.map +1 -0
- package/build/controllers/api/file.js +24 -0
- package/build/controllers/api/index.d.ts +2 -0
- package/build/controllers/api/index.d.ts.map +1 -0
- package/build/controllers/api/index.js +16 -0
- package/build/controllers/index.d.ts +2 -0
- package/build/controllers/index.d.ts.map +1 -0
- package/build/controllers/index.js +16 -0
- package/build/index.d.ts +8 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +82 -0
- package/build/middlewares/access.d.ts +8 -0
- package/build/middlewares/access.d.ts.map +1 -0
- package/build/middlewares/access.js +21 -0
- package/build/middlewares/authentication.d.ts +7 -0
- package/build/middlewares/authentication.d.ts.map +1 -0
- package/build/middlewares/authentication.js +22 -0
- package/build/middlewares/file.d.ts +10 -0
- package/build/middlewares/file.d.ts.map +1 -0
- package/build/middlewares/file.js +41 -0
- package/build/middlewares/index.d.ts +4 -0
- package/build/middlewares/index.d.ts.map +1 -0
- package/build/middlewares/index.js +38 -0
- package/build/models/Connection.d.ts +11 -0
- package/build/models/Connection.d.ts.map +1 -0
- package/build/models/Connection.js +50 -0
- package/build/models/index.d.ts +5 -0
- package/build/models/index.d.ts.map +1 -0
- package/build/models/index.js +14 -0
- package/build/server.d.ts +2 -0
- package/build/server.d.ts.map +1 -0
- package/build/server.js +33 -0
- package/build/services/error.d.ts +21 -0
- package/build/services/error.d.ts.map +1 -0
- package/build/services/error.js +55 -0
- package/build/services/express.d.ts +21 -0
- package/build/services/express.d.ts.map +1 -0
- package/build/services/express.js +142 -0
- package/build/services/file.d.ts +12 -0
- package/build/services/file.d.ts.map +1 -0
- package/build/services/file.js +54 -0
- package/build/services/index.d.ts +9 -0
- package/build/services/index.d.ts.map +1 -0
- package/build/services/index.js +93 -0
- package/build/services/rabitmq.d.ts +19 -0
- package/build/services/rabitmq.d.ts.map +1 -0
- package/build/services/rabitmq.js +87 -0
- package/build/services/redis.d.ts +14 -0
- package/build/services/redis.d.ts.map +1 -0
- package/build/services/redis.js +60 -0
- package/build/services/sequelize.d.ts +20 -0
- package/build/services/sequelize.d.ts.map +1 -0
- package/build/services/sequelize.js +193 -0
- package/build/services/socket.d.ts +18 -0
- package/build/services/socket.d.ts.map +1 -0
- package/build/services/socket.js +56 -0
- package/build/services/task.d.ts +53 -0
- package/build/services/task.d.ts.map +1 -0
- package/build/services/task.js +160 -0
- package/build/utils/api.d.ts +15 -0
- package/build/utils/api.d.ts.map +1 -0
- package/build/utils/api.js +50 -0
- package/build/utils/database.d.ts +4 -0
- package/build/utils/database.d.ts.map +1 -0
- package/build/utils/database.js +36 -0
- package/build/utils/date.d.ts +2 -0
- package/build/utils/date.d.ts.map +1 -0
- package/build/utils/date.js +28 -0
- package/build/utils/index.d.ts +6 -0
- package/build/utils/index.d.ts.map +1 -0
- package/build/utils/index.js +60 -0
- package/build/utils/logger.d.ts +3 -0
- package/build/utils/logger.d.ts.map +1 -0
- package/build/utils/logger.js +45 -0
- package/build/utils/session.d.ts +10 -0
- package/build/utils/session.d.ts.map +1 -0
- package/build/utils/session.js +21 -0
- package/package.json +80 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/@types/app.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/@types/console.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,QAAQ,GACR,SAAS,GACT,SAAS,GACT,UAAU,GACV,SAAS,GACT,QAAQ,CAAC"}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import { FindOptions, InferAttributes, InferCreationAttributes, Model, WhereOptions } from 'sequelize';
|
2
|
+
import { MakeNullishOptional } from 'sequelize/types/utils';
|
3
|
+
export type TPaginationAttributes = {
|
4
|
+
limit: number;
|
5
|
+
offset: number;
|
6
|
+
};
|
7
|
+
export type TFindParams<M extends Model> = FindOptions<InferAttributes<M, {
|
8
|
+
omit: never;
|
9
|
+
}>>;
|
10
|
+
export type TWhereParams<M extends Model> = WhereOptions<InferAttributes<M, {
|
11
|
+
omit: never;
|
12
|
+
}>>;
|
13
|
+
export type TCreateParams<M extends Model> = Omit<MakeNullishOptional<InferCreationAttributes<M>>, 'uuid'>;
|
14
|
+
export interface IAccount {
|
15
|
+
blockWithVenc: boolean;
|
16
|
+
blocked: boolean;
|
17
|
+
dateVenc: string | null;
|
18
|
+
envUuid: string | null;
|
19
|
+
lastAuthToken: string;
|
20
|
+
logedAt: string;
|
21
|
+
name: string;
|
22
|
+
params?: Record<string, any> | null;
|
23
|
+
picture: string | null;
|
24
|
+
type: string;
|
25
|
+
username: string;
|
26
|
+
uuid: string;
|
27
|
+
comments: string;
|
28
|
+
}
|
29
|
+
export interface IEnvironment {
|
30
|
+
uuid: string;
|
31
|
+
name: string;
|
32
|
+
email: string;
|
33
|
+
isotipo: string;
|
34
|
+
logotipo: string;
|
35
|
+
envToken: string;
|
36
|
+
blocked: string;
|
37
|
+
blockWithVenc: string;
|
38
|
+
dateVenc: Date;
|
39
|
+
database: string;
|
40
|
+
params: Record<string, any> | null;
|
41
|
+
}
|
42
|
+
//# sourceMappingURL=entity.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/@types/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,eAAe,EACf,uBAAuB,EACvB,KAAK,EACL,YAAY,EACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AACF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,KAAK,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC,CAAC;AAC5F,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,KAAK,IAAI,YAAY,CAAC,eAAe,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC,CAAC;AAC9F,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,CAC/C,mBAAmB,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAC/C,MAAM,CACP,CAAC;AAGF,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,IAAI,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;CACpC"}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
import { RequestHandler } from 'express';
|
2
|
+
export declare type TApplicationResponse = 'error' | 'success' | 'warning';
|
3
|
+
export declare type THttpResponse<D = unknown> = {
|
4
|
+
status: boolean;
|
5
|
+
message: string;
|
6
|
+
type: TApplicationResponse;
|
7
|
+
code?: number;
|
8
|
+
location?: string;
|
9
|
+
timestamp?: number;
|
10
|
+
data?: D;
|
11
|
+
};
|
12
|
+
export declare interface IHttpResponseError<D = unknown> {
|
13
|
+
message: string;
|
14
|
+
code: number;
|
15
|
+
data?: D;
|
16
|
+
}
|
17
|
+
export interface IApiResponse<D> {
|
18
|
+
req?: any;
|
19
|
+
message: string;
|
20
|
+
status: boolean;
|
21
|
+
type: TApplicationResponse;
|
22
|
+
data?: D;
|
23
|
+
code: number;
|
24
|
+
timestamp: number;
|
25
|
+
}
|
26
|
+
export declare enum EHttpResponseCode {
|
27
|
+
continue = 100,
|
28
|
+
accepted = 202,
|
29
|
+
created = 201,
|
30
|
+
successfullyProcessedInformation = 200,
|
31
|
+
partiallyCompletedProcess = 206,
|
32
|
+
redirectingForResponse = 303,
|
33
|
+
incompleteRequest = 400,
|
34
|
+
informationNotFound = 404,
|
35
|
+
informationAlreadyExists = 409,
|
36
|
+
preconditionRequired = 428,
|
37
|
+
iternalErro = 500,
|
38
|
+
methodNotAllowed = 405,
|
39
|
+
informationNotTrue = 406,
|
40
|
+
preProcessNotInitialized = 424,
|
41
|
+
requestTimeOut = 408,
|
42
|
+
informationUnauthorized = 401,
|
43
|
+
informationBlocked = 403
|
44
|
+
}
|
45
|
+
export declare enum EApiRequestMethod {
|
46
|
+
POST = "post",
|
47
|
+
GET = "get",
|
48
|
+
PUT = "put",
|
49
|
+
DELETE = "delete",
|
50
|
+
PATCH = "patch"
|
51
|
+
}
|
52
|
+
export interface IResponseListData<D> {
|
53
|
+
total: number;
|
54
|
+
pages: number;
|
55
|
+
hasMore: boolean;
|
56
|
+
nextCursor: string;
|
57
|
+
data: D[];
|
58
|
+
}
|
59
|
+
export interface IController {
|
60
|
+
}
|
61
|
+
export type THttpRequest<Body = any, Query = any> = RequestHandler<any, any, Body, Query>;
|
62
|
+
//# sourceMappingURL=http.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/@types/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAOzC,MAAM,CAAC,OAAO,MAAM,oBAAoB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAO3E,MAAM,CAAC,OAAO,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI;IAC/C,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,CAAC,CAAC;CACV,CAAC;AAEF,MAAM,CAAC,OAAO,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,CAAC,CAAC;CACV;AAED,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD,oBAAY,iBAAiB;IAE3B,QAAQ,MAAM;IACd,QAAQ,MAAM;IACd,OAAO,MAAM;IACb,gCAAgC,MAAM;IAEtC,yBAAyB,MAAM;IAC/B,sBAAsB,MAAM;IAG5B,iBAAiB,MAAM;IACvB,mBAAmB,MAAM;IACzB,wBAAwB,MAAM;IAC9B,oBAAoB,MAAM;IAG1B,WAAW,MAAM;IACjB,gBAAgB,MAAM;IACtB,kBAAkB,MAAM;IACxB,wBAAwB,MAAM;IAC9B,cAAc,MAAM;IACpB,uBAAuB,MAAM;IAC7B,kBAAkB,MAAM;CACzB;AACD,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AACD,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,EAAE,CAAC;CACX;AAED,MAAM,WAAW,WAAW;CAAG;AAE/B,MAAM,MAAM,YAAY,CAAC,IAAI,GAAG,GAAG,EAAE,KAAK,GAAG,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC"}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.EHttpResponseCode = exports.EApiRequestMethod = void 0;
|
7
|
+
/**
|
8
|
+
* Tipo de respostas
|
9
|
+
* @date 26/03/2023 - 21:45:23
|
10
|
+
*
|
11
|
+
*/
|
12
|
+
/**
|
13
|
+
* Objeto de response padronizado
|
14
|
+
* @date 26/03/2023 - 21:45:23
|
15
|
+
*
|
16
|
+
*/
|
17
|
+
/**
|
18
|
+
* Tipos de Status-Code para responses do Express
|
19
|
+
*
|
20
|
+
* @export
|
21
|
+
* @enum {number}
|
22
|
+
*/
|
23
|
+
let EHttpResponseCode = exports.EHttpResponseCode = /*#__PURE__*/function (EHttpResponseCode) {
|
24
|
+
EHttpResponseCode[EHttpResponseCode["continue"] = 100] = "continue";
|
25
|
+
EHttpResponseCode[EHttpResponseCode["accepted"] = 202] = "accepted";
|
26
|
+
EHttpResponseCode[EHttpResponseCode["created"] = 201] = "created";
|
27
|
+
EHttpResponseCode[EHttpResponseCode["successfullyProcessedInformation"] = 200] = "successfullyProcessedInformation";
|
28
|
+
EHttpResponseCode[EHttpResponseCode["partiallyCompletedProcess"] = 206] = "partiallyCompletedProcess";
|
29
|
+
EHttpResponseCode[EHttpResponseCode["redirectingForResponse"] = 303] = "redirectingForResponse";
|
30
|
+
EHttpResponseCode[EHttpResponseCode["incompleteRequest"] = 400] = "incompleteRequest";
|
31
|
+
EHttpResponseCode[EHttpResponseCode["informationNotFound"] = 404] = "informationNotFound";
|
32
|
+
EHttpResponseCode[EHttpResponseCode["informationAlreadyExists"] = 409] = "informationAlreadyExists";
|
33
|
+
EHttpResponseCode[EHttpResponseCode["preconditionRequired"] = 428] = "preconditionRequired";
|
34
|
+
EHttpResponseCode[EHttpResponseCode["iternalErro"] = 500] = "iternalErro";
|
35
|
+
EHttpResponseCode[EHttpResponseCode["methodNotAllowed"] = 405] = "methodNotAllowed";
|
36
|
+
EHttpResponseCode[EHttpResponseCode["informationNotTrue"] = 406] = "informationNotTrue";
|
37
|
+
EHttpResponseCode[EHttpResponseCode["preProcessNotInitialized"] = 424] = "preProcessNotInitialized";
|
38
|
+
EHttpResponseCode[EHttpResponseCode["requestTimeOut"] = 408] = "requestTimeOut";
|
39
|
+
EHttpResponseCode[EHttpResponseCode["informationUnauthorized"] = 401] = "informationUnauthorized";
|
40
|
+
EHttpResponseCode[EHttpResponseCode["informationBlocked"] = 403] = "informationBlocked";
|
41
|
+
return EHttpResponseCode;
|
42
|
+
}({});
|
43
|
+
let EApiRequestMethod = exports.EApiRequestMethod = /*#__PURE__*/function (EApiRequestMethod) {
|
44
|
+
EApiRequestMethod["POST"] = "post";
|
45
|
+
EApiRequestMethod["GET"] = "get";
|
46
|
+
EApiRequestMethod["PUT"] = "put";
|
47
|
+
EApiRequestMethod["DELETE"] = "delete";
|
48
|
+
EApiRequestMethod["PATCH"] = "patch";
|
49
|
+
return EApiRequestMethod;
|
50
|
+
}({});
|
@@ -0,0 +1,10 @@
|
|
1
|
+
export * from './app';
|
2
|
+
export * from './console';
|
3
|
+
export * from './entity';
|
4
|
+
export * from './http';
|
5
|
+
export * from './messaging';
|
6
|
+
export * from './service';
|
7
|
+
export * from './session';
|
8
|
+
export * from './session';
|
9
|
+
export * from './socket';
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/@types/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
|
@@ -0,0 +1,93 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
var _app = require("./app");
|
7
|
+
Object.keys(_app).forEach(function (key) {
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
9
|
+
if (key in exports && exports[key] === _app[key]) return;
|
10
|
+
Object.defineProperty(exports, key, {
|
11
|
+
enumerable: true,
|
12
|
+
get: function () {
|
13
|
+
return _app[key];
|
14
|
+
}
|
15
|
+
});
|
16
|
+
});
|
17
|
+
var _console = require("./console");
|
18
|
+
Object.keys(_console).forEach(function (key) {
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
20
|
+
if (key in exports && exports[key] === _console[key]) return;
|
21
|
+
Object.defineProperty(exports, key, {
|
22
|
+
enumerable: true,
|
23
|
+
get: function () {
|
24
|
+
return _console[key];
|
25
|
+
}
|
26
|
+
});
|
27
|
+
});
|
28
|
+
var _entity = require("./entity");
|
29
|
+
Object.keys(_entity).forEach(function (key) {
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
31
|
+
if (key in exports && exports[key] === _entity[key]) return;
|
32
|
+
Object.defineProperty(exports, key, {
|
33
|
+
enumerable: true,
|
34
|
+
get: function () {
|
35
|
+
return _entity[key];
|
36
|
+
}
|
37
|
+
});
|
38
|
+
});
|
39
|
+
var _http = require("./http");
|
40
|
+
Object.keys(_http).forEach(function (key) {
|
41
|
+
if (key === "default" || key === "__esModule") return;
|
42
|
+
if (key in exports && exports[key] === _http[key]) return;
|
43
|
+
Object.defineProperty(exports, key, {
|
44
|
+
enumerable: true,
|
45
|
+
get: function () {
|
46
|
+
return _http[key];
|
47
|
+
}
|
48
|
+
});
|
49
|
+
});
|
50
|
+
var _messaging = require("./messaging");
|
51
|
+
Object.keys(_messaging).forEach(function (key) {
|
52
|
+
if (key === "default" || key === "__esModule") return;
|
53
|
+
if (key in exports && exports[key] === _messaging[key]) return;
|
54
|
+
Object.defineProperty(exports, key, {
|
55
|
+
enumerable: true,
|
56
|
+
get: function () {
|
57
|
+
return _messaging[key];
|
58
|
+
}
|
59
|
+
});
|
60
|
+
});
|
61
|
+
var _service = require("./service");
|
62
|
+
Object.keys(_service).forEach(function (key) {
|
63
|
+
if (key === "default" || key === "__esModule") return;
|
64
|
+
if (key in exports && exports[key] === _service[key]) return;
|
65
|
+
Object.defineProperty(exports, key, {
|
66
|
+
enumerable: true,
|
67
|
+
get: function () {
|
68
|
+
return _service[key];
|
69
|
+
}
|
70
|
+
});
|
71
|
+
});
|
72
|
+
var _session = require("./session");
|
73
|
+
Object.keys(_session).forEach(function (key) {
|
74
|
+
if (key === "default" || key === "__esModule") return;
|
75
|
+
if (key in exports && exports[key] === _session[key]) return;
|
76
|
+
Object.defineProperty(exports, key, {
|
77
|
+
enumerable: true,
|
78
|
+
get: function () {
|
79
|
+
return _session[key];
|
80
|
+
}
|
81
|
+
});
|
82
|
+
});
|
83
|
+
var _socket = require("./socket");
|
84
|
+
Object.keys(_socket).forEach(function (key) {
|
85
|
+
if (key === "default" || key === "__esModule") return;
|
86
|
+
if (key in exports && exports[key] === _socket[key]) return;
|
87
|
+
Object.defineProperty(exports, key, {
|
88
|
+
enumerable: true,
|
89
|
+
get: function () {
|
90
|
+
return _socket[key];
|
91
|
+
}
|
92
|
+
});
|
93
|
+
});
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { IAccount, IEnvironment } from './entity';
|
2
|
+
export declare enum EMessagingQueue {
|
3
|
+
test = "exodus.queue.test",
|
4
|
+
accountCreated = "exodus.account.created",
|
5
|
+
environmentCreated = "exodus.environment.created",
|
6
|
+
environmentUpdatedToken = "exodus.environment.updated.token"
|
7
|
+
}
|
8
|
+
export type TMessageQueueDataMap = {
|
9
|
+
[EMessagingQueue.test]: {
|
10
|
+
data: any;
|
11
|
+
};
|
12
|
+
[EMessagingQueue.accountCreated]: IAccount;
|
13
|
+
[EMessagingQueue.environmentCreated]: IEnvironment;
|
14
|
+
[EMessagingQueue.environmentUpdatedToken]: {
|
15
|
+
uuid: string;
|
16
|
+
oldToken: string;
|
17
|
+
newToken: string;
|
18
|
+
};
|
19
|
+
};
|
20
|
+
export type TMessagingQueueHandler<K extends keyof TMessageQueueDataMap = any> = (data: TMessageQueueDataMap[K], ack: () => void) => void;
|
21
|
+
export type TMessagingQueueEventList = Partial<Record<keyof TMessageQueueDataMap, TMessagingQueueHandler>>;
|
22
|
+
//# sourceMappingURL=messaging.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../src/@types/messaging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAElD,oBAAY,eAAe;IACzB,IAAI,sBAAsB;IAG1B,cAAc,2BAA2B;IAGzC,kBAAkB,+BAA+B;IACjD,uBAAuB,qCAAqC;CAC7D;AAGD,MAAM,MAAM,oBAAoB,GAAG;IACjC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;QACtB,IAAI,EAAE,GAAG,CAAC;KACX,CAAC;IACF,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC3C,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,YAAY,CAAC;IACnD,CAAC,eAAe,CAAC,uBAAuB,CAAC,EAAE;QACzC,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,MAAM,oBAAoB,GAAG,GAAG,IAAI,CAC/E,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAC7B,GAAG,EAAE,MAAM,IAAI,KACZ,IAAI,CAAC;AAEV,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC5C,MAAM,CAAC,MAAM,oBAAoB,EAAE,sBAAsB,CAAC,CAC3D,CAAC"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.EMessagingQueue = void 0;
|
7
|
+
let EMessagingQueue = exports.EMessagingQueue = /*#__PURE__*/function (EMessagingQueue) {
|
8
|
+
EMessagingQueue["test"] = "exodus.queue.test";
|
9
|
+
EMessagingQueue["accountCreated"] = "exodus.account.created";
|
10
|
+
EMessagingQueue["environmentCreated"] = "exodus.environment.created";
|
11
|
+
EMessagingQueue["environmentUpdatedToken"] = "exodus.environment.updated.token";
|
12
|
+
return EMessagingQueue;
|
13
|
+
}({}); // Mapeamento de tópicos para tipos
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/@types/service.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { IAccount } from './entity';
|
2
|
+
export interface ISession {
|
3
|
+
token: string;
|
4
|
+
edc: string;
|
5
|
+
ekm: string;
|
6
|
+
account: IAccount;
|
7
|
+
}
|
8
|
+
export type TAccountType = 'ADMINISTRATOR' | 'BUSINESS' | 'SUPORT' | 'AGENT' | 'SUPERVISOR';
|
9
|
+
//# sourceMappingURL=session.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/@types/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,QAAQ,CAAC;CACnB;AACD,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,CAAC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import Singleton from '@app/singleton';
|
2
|
+
type NonConstructorKeys<T> = {
|
3
|
+
[P in keyof T]: T[P] extends new () => any ? never : P;
|
4
|
+
}[keyof T];
|
5
|
+
type NonConstructor<T> = Pick<T, NonConstructorKeys<T>>;
|
6
|
+
export type StaticSingleton<S extends Singleton> = NonConstructor<typeof Singleton> & {
|
7
|
+
new (): S;
|
8
|
+
};
|
9
|
+
export {};
|
10
|
+
//# sourceMappingURL=singleton.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../src/@types/singleton.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAEvC,KAAK,kBAAkB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,GAAG,GAAG,KAAK,GAAG,CAAC;CAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACjG,KAAK,cAAc,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,SAAS,IAAI,cAAc,CAAC,OAAO,SAAS,CAAC,GAAG;IAAE,QAAQ,CAAC,CAAA;CAAE,CAAC"}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { SocketRequest } from '@app/controller';
|
2
|
+
import { Socket } from 'socket.io';
|
3
|
+
import { DefaultEventsMap } from 'socket.io/dist/typed-events';
|
4
|
+
export declare enum ESocketEvent {
|
5
|
+
test = "exodus.socket.event.test",
|
6
|
+
test2 = "exodus.socket.event.test2"
|
7
|
+
}
|
8
|
+
type TSocketDataEvent_1 = [string, number];
|
9
|
+
type TSocketDataEvent_2 = [string];
|
10
|
+
export type TSocketEventDataMap = {
|
11
|
+
[ESocketEvent.test]: TSocketDataEvent_1;
|
12
|
+
[ESocketEvent.test2]: TSocketDataEvent_2;
|
13
|
+
};
|
14
|
+
export type TSocket = Socket<DefaultEventsMap, DefaultEventsMap, DefaultEventsMap, any>;
|
15
|
+
export type TSocketEventFunction<K extends keyof TSocketEventDataMap> = (socket: TSocket, event: string) => TSocketEventHandle<K>;
|
16
|
+
export type TSocketEventHandle<K extends keyof TSocketEventDataMap> = (request: SocketRequest, ...args: TSocketEventDataMap[K]) => void;
|
17
|
+
export type TSocketEventList = Partial<Record<keyof TSocketEventDataMap, TSocketEventHandle<keyof TSocketEventDataMap>>>;
|
18
|
+
export type TSocketControllerEventHandler<K extends keyof TSocketEventDataMap = any> = (socket: TSocket, event: string, data: TSocketEventDataMap[K]) => void;
|
19
|
+
export {};
|
20
|
+
//# sourceMappingURL=socket.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/@types/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,oBAAY,YAAY;IACtB,IAAI,6BAA6B;IACjC,KAAK,8BAA8B;CACpC;AAED,KAAK,kBAAkB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3C,KAAK,kBAAkB,GAAG,CAAC,MAAM,CAAC,CAAC;AAGnC,MAAM,MAAM,mBAAmB,GAAG;IAChC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IACxC,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC1C,CAAC;AACF,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC;AAExF,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,mBAAmB,IAAI,CACtE,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,KACV,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAE3B,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,mBAAmB,IAAI,CAEpE,OAAO,EAAE,aAAa,EACtB,GAAG,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAC5B,IAAI,CAAC;AAEV,MAAM,MAAM,gBAAgB,GAAG,OAAO,CACpC,MAAM,CAAC,MAAM,mBAAmB,EAAE,kBAAkB,CAAC,MAAM,mBAAmB,CAAC,CAAC,CACjF,CAAC;AAEF,MAAM,MAAM,6BAA6B,CAAC,CAAC,SAAS,MAAM,mBAAmB,GAAG,GAAG,IAAI,CACrF,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,KACzB,IAAI,CAAC"}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.ESocketEvent = void 0;
|
7
|
+
let ESocketEvent = exports.ESocketEvent = /*#__PURE__*/function (ESocketEvent) {
|
8
|
+
ESocketEvent["test"] = "exodus.socket.event.test";
|
9
|
+
ESocketEvent["test2"] = "exodus.socket.event.test2";
|
10
|
+
return ESocketEvent;
|
11
|
+
}({}); // Mapeamento de tópicos para tipos
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { TApplicationCreationProps } from '../@types/app';
|
2
|
+
import { IService } from '../@types/service';
|
3
|
+
import Core from './core';
|
4
|
+
declare class Exodus extends Core {
|
5
|
+
private services;
|
6
|
+
private props;
|
7
|
+
constructor(props: TApplicationCreationProps);
|
8
|
+
start(): Promise<void>;
|
9
|
+
initMaster(): Promise<void>;
|
10
|
+
initCluster(): Promise<void>;
|
11
|
+
createClusters(): Promise<void>;
|
12
|
+
registerSingletonService(service: IService): void;
|
13
|
+
initServices(): Promise<void>;
|
14
|
+
}
|
15
|
+
export default Exodus;
|
16
|
+
//# sourceMappingURL=app.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/app/app.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,IAAI,MAAM,QAAQ,CAAC;AAS1B,cAAM,MAAO,SAAQ,IAAI;IACvB,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,KAAK,CAA4B;gBAG7B,KAAK,EAAE,yBAAyB;IAKtC,KAAK;IASL,UAAU;IAIV,WAAW;IAIX,cAAc;IAgBpB,wBAAwB,CAAC,OAAO,EAAE,QAAQ;IAGpC,YAAY;CAKnB;AACD,eAAe,MAAM,CAAC"}
|
package/build/app/app.js
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
var _app = require("../config/app");
|
8
|
+
var _cluster = _interopRequireDefault(require("cluster"));
|
9
|
+
var _core = _interopRequireDefault(require("./core"));
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
11
|
+
/**
|
12
|
+
* Classe da aplicação principal
|
13
|
+
* Responsável por inicializar todos os recursos usados por este micro-serviço
|
14
|
+
*
|
15
|
+
* @class Application
|
16
|
+
* @extends {Core}
|
17
|
+
*/
|
18
|
+
class Exodus extends _core.default {
|
19
|
+
services;
|
20
|
+
props;
|
21
|
+
|
22
|
+
//* Initialization
|
23
|
+
constructor(props) {
|
24
|
+
super();
|
25
|
+
this.props = props;
|
26
|
+
this.services = [];
|
27
|
+
}
|
28
|
+
async start() {
|
29
|
+
if (_cluster.default.isPrimary) {
|
30
|
+
this.initMaster();
|
31
|
+
} else {
|
32
|
+
await this.initCluster();
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
//* Cluster Managment
|
37
|
+
async initMaster() {
|
38
|
+
this.log(`✨ Starting ${_app.AppConfig.description} · Clusters: ${_app.AppConfig.clusters}`);
|
39
|
+
this.createClusters();
|
40
|
+
}
|
41
|
+
async initCluster() {
|
42
|
+
this.log(`📊 Cluster ${_cluster.default.worker.id} started · PID ${_cluster.default.worker.process.pid}`);
|
43
|
+
this.initServices();
|
44
|
+
}
|
45
|
+
async createClusters() {
|
46
|
+
for (let i = 0; i < this.props.maxClusters; i++) {
|
47
|
+
_cluster.default.fork();
|
48
|
+
}
|
49
|
+
_cluster.default.on('exit', (worker, _code, _signal) => {
|
50
|
+
this.log(`Cluester ${worker.process.pid} foi encerrado`, 'warning');
|
51
|
+
if (this.props.clustersRestarts) {
|
52
|
+
this.log(`Reiniciando cluster`, 'warning');
|
53
|
+
_cluster.default.fork();
|
54
|
+
}
|
55
|
+
});
|
56
|
+
}
|
57
|
+
|
58
|
+
//* Service Managment
|
59
|
+
registerSingletonService(service) {
|
60
|
+
this.services.push(service);
|
61
|
+
}
|
62
|
+
async initServices() {
|
63
|
+
for (const service of this.services) {
|
64
|
+
await service.init();
|
65
|
+
}
|
66
|
+
}
|
67
|
+
}
|
68
|
+
var _default = exports.default = Exodus;
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import { NextFunction, Response } from 'express';
|
2
|
+
import { THttpResponse, TSocket, TSocketEventDataMap, TSocketEventHandle } from '../@types';
|
3
|
+
import Core from './core';
|
4
|
+
declare abstract class HttpController extends Core {
|
5
|
+
constructor();
|
6
|
+
protected send<D = any>(objResponse: THttpResponse<D>, res: Response, next?: NextFunction): void;
|
7
|
+
protected validate(data: Record<string, any>): Promise<void>;
|
8
|
+
}
|
9
|
+
export declare abstract class SocketController extends Core {
|
10
|
+
constructor();
|
11
|
+
protected handlerEventBind<K extends keyof TSocketEventDataMap>(cb: TSocketEventHandle<K>): (req: SocketRequest, data: TSocketEventDataMap[K]) => void;
|
12
|
+
protected bufferToData(data: Buffer): number[];
|
13
|
+
}
|
14
|
+
export declare class SocketRequest extends Core {
|
15
|
+
protected socket: TSocket;
|
16
|
+
protected event: keyof TSocketEventDataMap;
|
17
|
+
constructor(socket: TSocket, event: keyof TSocketEventDataMap);
|
18
|
+
send<K extends keyof TSocketEventDataMap>(event: K, ...data: TSocketEventDataMap[K]): void;
|
19
|
+
getEvent(): keyof TSocketEventDataMap;
|
20
|
+
getSocket(): TSocket;
|
21
|
+
protected dataToBuffer(data: any): Buffer;
|
22
|
+
}
|
23
|
+
export declare abstract class MessagingController extends Core {
|
24
|
+
constructor();
|
25
|
+
protected bufferToData(data: Buffer): number[];
|
26
|
+
}
|
27
|
+
export default HttpController;
|
28
|
+
//# sourceMappingURL=controller.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/app/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC5F,OAAO,IAAI,MAAM,QAAQ,CAAC;AAS1B,uBAAe,cAAe,SAAQ,IAAI;;IAexC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI;IAIhG,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAG7C;AAUD,8BAAsB,gBAAiB,SAAQ,IAAI;;IAKjD,SAAS,CAAC,gBAAgB,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAAE,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC,SAC1E,aAAa,QAAQ,mBAAmB,CAAC,CAAC,CAAC;IAM1D,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM;CAGpC;AACD,qBAAa,aAAc,SAAQ,IAAI;IACrC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,KAAK,EAAE,MAAM,mBAAmB,CAAC;gBAE/B,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB;IAM7D,IAAI,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAInF,QAAQ;IAGR,SAAS;IAIT,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG;CAGjC;AAED,8BAAsB,mBAAoB,SAAQ,IAAI;;IAKpD,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM;CAGpC;AAED,eAAe,cAAc,CAAC"}
|