@adaptivestone/framework 5.0.0-beta.40 → 5.0.0-beta.41
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/CHANGELOG.md +12 -2
- package/dist/helpers/redis/redisConnection.d.ts +6 -0
- package/dist/helpers/redis/redisConnection.js +48 -0
- package/dist/helpers/redis/redisConnection.js.map +1 -0
- package/dist/modules/AbstractController.d.ts +2 -1
- package/dist/services/cache/Cache.js +4 -15
- package/dist/services/cache/Cache.js.map +1 -1
- package/dist/services/http/middleware/AbstractMiddleware.d.ts +2 -1
- package/dist/services/http/middleware/AbstractMiddleware.js.map +1 -1
- package/dist/services/http/middleware/GetUserByToken.d.ts +9 -2
- package/dist/services/http/middleware/GetUserByToken.js +8 -0
- package/dist/services/http/middleware/GetUserByToken.js.map +1 -1
- package/dist/services/http/middleware/RateLimiter.js +2 -18
- package/dist/services/http/middleware/RateLimiter.js.map +1 -1
- package/dist/services/logging/SentryTransport.d.ts +1 -2
- package/dist/services/logging/SentryTransport.js +82 -18
- package/dist/services/logging/SentryTransport.js.map +1 -1
- package/package.json +11 -4
package/CHANGELOG.md
CHANGED
|
@@ -50,11 +50,21 @@ Main feature of that release is full TypeScript support insluding mongoose model
|
|
|
50
50
|
- **[BREAKING]** Mongoose v8. <https://mongoosejs.com/docs/migrating_to_8.html>.
|
|
51
51
|
- **[BREAKING]** Vitest v4 <https://vitest.dev/guide/migration.html#vitest-4>
|
|
52
52
|
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
## [5.0.0-beta.41]
|
|
56
|
+
|
|
57
|
+
- **[UPDATE]** Update deps
|
|
58
|
+
- **[NEW]** Bearer scheme support
|
|
59
|
+
- **[NEW]** redisConnection helper
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
53
63
|
---
|
|
54
64
|
## [5.0.0-beta.40]
|
|
55
65
|
|
|
56
66
|
- **[UPDATE]** Update `rate-limiter-flexible` to v9.
|
|
57
|
-
- **[UPDATE]** Remove 'winston-transport-sentry' and implementcustom logic based on 'sentry' itself (from v9.14 sentry have
|
|
67
|
+
- **[UPDATE]** Remove 'winston-transport-sentry' and implementcustom logic based on 'sentry' itself (from v9.14 sentry have native winston support)
|
|
58
68
|
|
|
59
69
|
|
|
60
70
|
## [5.0.0-beta.39]
|
|
@@ -533,7 +543,7 @@ Main feature of that release is full TypeScript support insluding mongoose model
|
|
|
533
543
|
|
|
534
544
|
## [4.9.0]
|
|
535
545
|
|
|
536
|
-
- **[BREAKING]** We are separated testsing to setyp and global setup. Global setup now care of mongo to make sure that only on mongodb
|
|
546
|
+
- **[BREAKING]** We are separated testsing to setyp and global setup. Global setup now care of mongo to make sure that only on mongodb memory server is spinned up. If you are using `vitest` please add `"globalSetup": "node_modules/@adaptivestone/framework/tests/globalSetupVitest"` to your vitest config.
|
|
537
547
|
|
|
538
548
|
---
|
|
539
549
|
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { RedisClientType } from '@redis/client';
|
|
2
|
+
export declare const getRedisClient: () => Promise<RedisClientType>;
|
|
3
|
+
/**
|
|
4
|
+
* Synchronous way to get redis client. Make sure to call connect on it before usage
|
|
5
|
+
*/
|
|
6
|
+
export declare const getRedisClientSync: () => RedisClientType;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { createClient } from '@redis/client';
|
|
2
|
+
import { appInstance } from "../appInstance.js";
|
|
3
|
+
let redisClient = null;
|
|
4
|
+
export const getRedisClient = async () => {
|
|
5
|
+
if (redisClient) {
|
|
6
|
+
return redisClient;
|
|
7
|
+
}
|
|
8
|
+
const redisClientLocal = createNewRedisClient();
|
|
9
|
+
await redisClientLocal.connect();
|
|
10
|
+
return redisClientLocal;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Synchronous way to get redis client. Make sure to call connect on it before usage
|
|
14
|
+
*/
|
|
15
|
+
export const getRedisClientSync = () => {
|
|
16
|
+
if (redisClient) {
|
|
17
|
+
return redisClient;
|
|
18
|
+
}
|
|
19
|
+
const redisClientLocal = createNewRedisClient();
|
|
20
|
+
// to make sure connection is established
|
|
21
|
+
(async () => {
|
|
22
|
+
await redisClientLocal.connect();
|
|
23
|
+
})();
|
|
24
|
+
return redisClientLocal;
|
|
25
|
+
};
|
|
26
|
+
const createNewRedisClient = () => {
|
|
27
|
+
if (redisClient) {
|
|
28
|
+
return redisClient;
|
|
29
|
+
}
|
|
30
|
+
const redisConfig = appInstance.getConfig('redis');
|
|
31
|
+
redisClient = createClient({
|
|
32
|
+
url: redisConfig.url,
|
|
33
|
+
});
|
|
34
|
+
redisClient.on('error', (error, b, c) => {
|
|
35
|
+
appInstance.logger?.error('Redis Client Error', error, b, c);
|
|
36
|
+
});
|
|
37
|
+
redisClient.on('connect', () => {
|
|
38
|
+
appInstance.logger?.info('Redis connection established');
|
|
39
|
+
});
|
|
40
|
+
appInstance.events.on('shutdown', async () => {
|
|
41
|
+
if (redisClient) {
|
|
42
|
+
await redisClient.quit();
|
|
43
|
+
redisClient = null;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
return redisClient;
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=redisConnection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redisConnection.js","sourceRoot":"","sources":["../../../src/helpers/redis/redisConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,IAAI,WAAW,GAA2B,IAAI,CAAC;AAE/C,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,IAA8B,EAAE;IACjE,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,gBAAgB,GAAG,oBAAoB,EAAE,CAAC;IAChD,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;IAEjC,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAoB,EAAE;IACtD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,gBAAgB,GAAG,oBAAoB,EAAE,CAAC;IAChD,yCAAyC;IACzC,CAAC,KAAK,IAAI,EAAE;QACV,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,GAAoB,EAAE;IACjD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,OAAO,CAEhD,CAAC;IAEF,WAAW,GAAG,YAAY,CAAC;QACzB,GAAG,EAAE,WAAW,CAAC,GAAG;KACrB,CAAC,CAAC;IAEH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QACtC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QAC7B,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;QAC3C,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;YACzB,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getRedisClient } from "../../helpers/redis/redisConnection.js";
|
|
1
2
|
import Base from "../../modules/Base.js";
|
|
2
3
|
class Cache extends Base {
|
|
3
4
|
whenReady;
|
|
@@ -13,21 +14,9 @@ class Cache extends Base {
|
|
|
13
14
|
// at least memory and redis drivers should be presented
|
|
14
15
|
// memory drives should works on master process level
|
|
15
16
|
// we should support multiple cashe same time
|
|
16
|
-
const {
|
|
17
|
-
|
|
18
|
-
this.
|
|
19
|
-
url: conf.url,
|
|
20
|
-
});
|
|
21
|
-
this.redisNamespace = conf.namespace;
|
|
22
|
-
this.redisClient.on('error', (error, b, c) => {
|
|
23
|
-
this.logger?.error(error, b, c);
|
|
24
|
-
});
|
|
25
|
-
this.redisClient.on('connect', () => {
|
|
26
|
-
this.logger?.info('Redis connection success');
|
|
27
|
-
});
|
|
28
|
-
this.app.events.on('shutdown', () => {
|
|
29
|
-
this.redisClient.quit();
|
|
30
|
-
});
|
|
17
|
+
const { namespace } = this.app.getConfig('redis');
|
|
18
|
+
this.redisClient = await getRedisClient();
|
|
19
|
+
this.redisNamespace = namespace;
|
|
31
20
|
}
|
|
32
21
|
/**
|
|
33
22
|
* As framework support namespaces all key for cache go through this function
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../src/services/cache/Cache.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,uBAAuB,CAAC;AAGzC,MAAM,KAAM,SAAQ,IAAI;IACtB,SAAS,CAAgB;IAEzB,WAAW,CAAmB;IAE9B,cAAc,GAAW,EAAE,CAAC;IAE5B,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;IAE3B,YAAY,GAAS;QACnB,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,iEAAiE;QACjE,wDAAwD;QACxD,qDAAqD;QACrD,6CAA6C;QAC7C,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../src/services/cache/Cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,8 @@ declare class AbstractMiddleware extends Base {
|
|
|
9
9
|
get usedAuthParameters(): Array<{
|
|
10
10
|
name: string;
|
|
11
11
|
type: string;
|
|
12
|
-
in
|
|
12
|
+
in?: string;
|
|
13
|
+
scheme?: string;
|
|
13
14
|
description: string;
|
|
14
15
|
}>;
|
|
15
16
|
get relatedQueryParameters(): import("yup").ObjectSchema<{}, import("yup").AnyObject, {}, "">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractMiddleware.js","sourceRoot":"","sources":["../../../../src/services/http/middleware/AbstractMiddleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,IAAI,MAAM,0BAA0B,CAAC;AAI5C,MAAM,kBAAmB,SAAQ,IAAI;IACnC,MAAM,CAA2B;IAEjC,YAAY,GAAS,EAAE,MAAgC;QACrD,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,KAAK,WAAW;QACpB,OAAO,4CAA4C,CAAC;IACtD,CAAC;IAED,IAAI,kBAAkB;
|
|
1
|
+
{"version":3,"file":"AbstractMiddleware.js","sourceRoot":"","sources":["../../../../src/services/http/middleware/AbstractMiddleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,IAAI,MAAM,0BAA0B,CAAC;AAI5C,MAAM,kBAAmB,SAAQ,IAAI;IACnC,MAAM,CAA2B;IAEjC,YAAY,GAAS,EAAE,MAAgC;QACrD,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,KAAK,WAAW;QACpB,OAAO,4CAA4C,CAAC;IACtD,CAAC;IAED,IAAI,kBAAkB;QAOpB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,sBAAsB;QACxB,uFAAuF;QACvF,OAAO,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,wBAAwB;QAC1B,uFAAuF;QACvF,OAAO,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,oBAAoB;QACtB,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,wBAAwB;YACtC,KAAK,EAAE,IAAI,CAAC,sBAAsB;SACnC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CACd,IAAsB,EACtB,IAAc,EACd,IAAkB;QAElB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,+BAA+B,CAAC,CAAC;QACnD,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,KAAK,WAAW;QACpB,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -9,12 +9,19 @@ export interface GetUserByTokenAppInfo {
|
|
|
9
9
|
}
|
|
10
10
|
declare class GetUserByToken extends AbstractMiddleware {
|
|
11
11
|
static get description(): string;
|
|
12
|
-
get usedAuthParameters(): {
|
|
12
|
+
get usedAuthParameters(): ({
|
|
13
13
|
name: string;
|
|
14
14
|
type: string;
|
|
15
15
|
in: string;
|
|
16
16
|
description: string;
|
|
17
|
-
|
|
17
|
+
scheme?: undefined;
|
|
18
|
+
} | {
|
|
19
|
+
name: string;
|
|
20
|
+
type: string;
|
|
21
|
+
scheme: string;
|
|
22
|
+
description: string;
|
|
23
|
+
in?: undefined;
|
|
24
|
+
})[];
|
|
18
25
|
middleware(req: FrameworkRequest & GetUserByTokenAppInfo, _res: Response, next: NextFunction): Promise<void>;
|
|
19
26
|
}
|
|
20
27
|
export default GetUserByToken;
|
|
@@ -11,6 +11,12 @@ class GetUserByToken extends AbstractMiddleware {
|
|
|
11
11
|
in: 'header',
|
|
12
12
|
description: GetUserByToken.description,
|
|
13
13
|
},
|
|
14
|
+
{
|
|
15
|
+
name: 'bearerAuth',
|
|
16
|
+
type: 'http',
|
|
17
|
+
scheme: 'bearer',
|
|
18
|
+
description: GetUserByToken.description,
|
|
19
|
+
},
|
|
14
20
|
];
|
|
15
21
|
}
|
|
16
22
|
async middleware(req, _res, next) {
|
|
@@ -27,6 +33,8 @@ class GetUserByToken extends AbstractMiddleware {
|
|
|
27
33
|
return next();
|
|
28
34
|
}
|
|
29
35
|
}
|
|
36
|
+
// token cleanup
|
|
37
|
+
token = token.replace(/^Bearer\s+/i, '').trim();
|
|
30
38
|
const User = this.app.getModel('User');
|
|
31
39
|
const user = (await User.getUserByToken(token));
|
|
32
40
|
if (user) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetUserByToken.js","sourceRoot":"","sources":["../../../../src/services/http/middleware/GetUserByToken.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAQzD,MAAM,cAAe,SAAQ,kBAAkB;IAC7C,MAAM,KAAK,WAAW;QACpB,OAAO,kGAAkG,CAAC;IAC5G,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO;YACL;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,QAAQ;gBACd,EAAE,EAAE,QAAQ;gBACZ,WAAW,EAAE,cAAc,CAAC,WAAW;aACxC;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CACd,GAA6C,EAC7C,IAAc,EACd,IAAkB;QAElB,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,wCAAwC,CAAC,CAAC;YAC5D,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,EAAE,OAAO,CAClB,gCAAgC,KAAK,mCAAmC,GAAG,CAAC,GAAG,CAC7E,eAAe,CAChB,EAAE,CACJ,CAAC;QACF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBAC/B,uBAAuB;gBACvB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAqB,CAAC;QAC3D,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CACrC,KAAK,CACN,CAAmC,CAAC;QACrC,IAAI,IAAI,EAAE,CAAC;YACT,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;CACF;AAED,eAAe,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"GetUserByToken.js","sourceRoot":"","sources":["../../../../src/services/http/middleware/GetUserByToken.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAQzD,MAAM,cAAe,SAAQ,kBAAkB;IAC7C,MAAM,KAAK,WAAW;QACpB,OAAO,kGAAkG,CAAC;IAC5G,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO;YACL;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,QAAQ;gBACd,EAAE,EAAE,QAAQ;gBACZ,WAAW,EAAE,cAAc,CAAC,WAAW;aACxC;YACD;gBACE,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,QAAQ;gBAChB,WAAW,EAAE,cAAc,CAAC,WAAW;aACxC;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CACd,GAA6C,EAC7C,IAAc,EACd,IAAkB;QAElB,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,wCAAwC,CAAC,CAAC;YAC5D,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,EAAE,OAAO,CAClB,gCAAgC,KAAK,mCAAmC,GAAG,CAAC,GAAG,CAC7E,eAAe,CAChB,EAAE,CACJ,CAAC;QACF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YACjC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBAC/B,uBAAuB;gBACvB,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QACD,gBAAgB;QAChB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAqB,CAAC;QAC3D,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CACrC,KAAK,CACN,CAAmC,CAAC;QACrC,IAAI,IAAI,EAAE,CAAC;YACT,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;CACF;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { createClient } from '@redis/client';
|
|
2
1
|
import merge from 'deepmerge';
|
|
3
2
|
import mongoose from 'mongoose';
|
|
4
3
|
import { RateLimiterMemory, RateLimiterMongo, RateLimiterRedis, } from 'rate-limiter-flexible';
|
|
4
|
+
import { getRedisClientSync } from "../../../helpers/redis/redisConnection.js";
|
|
5
5
|
import AbstractMiddleware from "./AbstractMiddleware.js";
|
|
6
6
|
class RateLimiter extends AbstractMiddleware {
|
|
7
7
|
static get description() {
|
|
@@ -33,23 +33,7 @@ class RateLimiter extends AbstractMiddleware {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
initRedisLimiter() {
|
|
36
|
-
const
|
|
37
|
-
const redisClient = createClient({
|
|
38
|
-
url: redisConfig.url,
|
|
39
|
-
});
|
|
40
|
-
// TODO: change it
|
|
41
|
-
(async () => {
|
|
42
|
-
await redisClient.connect();
|
|
43
|
-
})();
|
|
44
|
-
redisClient.on('error', (error, b, c) => {
|
|
45
|
-
this.logger?.error(error, b, c);
|
|
46
|
-
});
|
|
47
|
-
redisClient.on('connect', () => {
|
|
48
|
-
this.logger?.info('Redis connection success');
|
|
49
|
-
});
|
|
50
|
-
this.app.events.on('shutdown', async () => {
|
|
51
|
-
await redisClient.disconnect();
|
|
52
|
-
});
|
|
36
|
+
const redisClient = getRedisClientSync();
|
|
53
37
|
return new RateLimiterRedis({
|
|
54
38
|
storeClient: redisClient,
|
|
55
39
|
useRedisPackage: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../../../src/services/http/middleware/RateLimiter.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"RateLimiter.js","sourceRoot":"","sources":["../../../../src/services/http/middleware/RateLimiter.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,7 @@ import Transport from 'winston-transport';
|
|
|
5
5
|
* Only loads the Winston transport if @sentry/node is installed
|
|
6
6
|
*/
|
|
7
7
|
declare class SentryTransport extends Transport {
|
|
8
|
-
private
|
|
9
|
-
private initializationAttempted;
|
|
8
|
+
#private;
|
|
10
9
|
constructor(opts?: Transport.TransportStreamOptions);
|
|
11
10
|
private loadSentryTransport;
|
|
12
11
|
log(info: unknown, callback: () => void): void;
|
|
@@ -7,32 +7,46 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
7
7
|
return path;
|
|
8
8
|
};
|
|
9
9
|
import Transport from 'winston-transport';
|
|
10
|
+
// See: https://github.com/winstonjs/triple-beam
|
|
11
|
+
const LEVEL_SYMBOL = Symbol.for('level');
|
|
12
|
+
const MESSAGE_SYMBOL = Symbol.for('message');
|
|
13
|
+
const SPLAT_SYMBOL = Symbol.for('splat');
|
|
14
|
+
class ExtendedError extends Error {
|
|
15
|
+
constructor(info) {
|
|
16
|
+
super(info.message || 'Unknown error');
|
|
17
|
+
this.name = info.name || 'Error';
|
|
18
|
+
if (info.stack && typeof info.stack === 'string') {
|
|
19
|
+
this.stack = info.stack;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function isObject(anything) {
|
|
24
|
+
return typeof anything === 'object' && anything != null;
|
|
25
|
+
}
|
|
10
26
|
/**
|
|
11
27
|
* Winston transport wrapper for Sentry that conditionally loads @sentry/node
|
|
12
28
|
* Assumes Sentry is already initialized in the consuming application
|
|
13
29
|
* Only loads the Winston transport if @sentry/node is installed
|
|
14
30
|
*/
|
|
15
31
|
class SentryTransport extends Transport {
|
|
16
|
-
|
|
17
|
-
initializationAttempted = false;
|
|
32
|
+
#sentry = null;
|
|
33
|
+
#initializationAttempted = false;
|
|
18
34
|
constructor(opts = {}) {
|
|
19
35
|
super(opts);
|
|
20
36
|
// Try to load Sentry Winston transport asynchronously
|
|
21
37
|
this.loadSentryTransport(opts);
|
|
22
38
|
}
|
|
23
39
|
async loadSentryTransport(opts) {
|
|
24
|
-
if (this
|
|
40
|
+
if (this.#initializationAttempted) {
|
|
25
41
|
return;
|
|
26
42
|
}
|
|
27
|
-
this
|
|
43
|
+
this.#initializationAttempted = true;
|
|
28
44
|
try {
|
|
29
|
-
// Dynamically import @sentry/node
|
|
45
|
+
// Dynamically import @sentry/node - will fail if not installed
|
|
30
46
|
// Using dynamic import to avoid TypeScript errors when package is not installed
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
// Assuming Sentry SDK is already initialized by the consuming application
|
|
35
|
-
this.sentryTransport = new SentryWinstonTransport(opts);
|
|
47
|
+
const SentryNode = await import(__rewriteRelativeImportExtension('@sentry/node'));
|
|
48
|
+
const sentry = SentryNode.default || SentryNode;
|
|
49
|
+
this.#sentry = sentry;
|
|
36
50
|
console.log('[Framework] Sentry Winston transport loaded successfully');
|
|
37
51
|
}
|
|
38
52
|
catch (error) {
|
|
@@ -41,17 +55,67 @@ class SentryTransport extends Transport {
|
|
|
41
55
|
}
|
|
42
56
|
}
|
|
43
57
|
log(info, callback) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
58
|
+
setImmediate(() => {
|
|
59
|
+
this.emit('logged', info);
|
|
60
|
+
});
|
|
61
|
+
if (!this.#sentry || !isObject(info)) {
|
|
62
|
+
return callback();
|
|
63
|
+
}
|
|
64
|
+
const levelFromSymbol = info[LEVEL_SYMBOL];
|
|
65
|
+
// See: https://github.com/winstonjs/winston?tab=readme-ov-file#streams-objectmode-and-info-objects
|
|
66
|
+
const { message, tags, user, ...attributes } = info;
|
|
67
|
+
// Remove all symbols from the remaining attributes
|
|
68
|
+
attributes[LEVEL_SYMBOL] = undefined;
|
|
69
|
+
attributes[MESSAGE_SYMBOL] = undefined;
|
|
70
|
+
attributes[SPLAT_SYMBOL] = undefined;
|
|
71
|
+
const logSeverityLevel = WINSTON_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP[levelFromSymbol] ??
|
|
72
|
+
'info';
|
|
73
|
+
// Setup Sentry scope with tags, user, and extras
|
|
74
|
+
const scope = this.#sentry.getCurrentScope();
|
|
75
|
+
scope.clear();
|
|
76
|
+
if (tags !== undefined && isObject(tags)) {
|
|
77
|
+
scope.setTags(tags);
|
|
49
78
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
setImmediate(callback);
|
|
79
|
+
if (user !== undefined && isObject(user)) {
|
|
80
|
+
scope.setUser(user);
|
|
53
81
|
}
|
|
82
|
+
// Filter out undefined values and set extras
|
|
83
|
+
const extras = Object.fromEntries(Object.entries(attributes).filter(([_, value]) => value !== undefined));
|
|
84
|
+
scope.setExtras(extras);
|
|
85
|
+
const error = Object.values(info).find((value) => value instanceof Error) ??
|
|
86
|
+
new ExtendedError(info);
|
|
87
|
+
this.#sentry.captureException(error, {
|
|
88
|
+
tags: tags,
|
|
89
|
+
level: logSeverityLevel,
|
|
90
|
+
});
|
|
91
|
+
return callback();
|
|
54
92
|
}
|
|
55
93
|
}
|
|
94
|
+
const WINSTON_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP = {
|
|
95
|
+
// npm
|
|
96
|
+
silly: 'trace',
|
|
97
|
+
// npm and syslog
|
|
98
|
+
debug: 'debug',
|
|
99
|
+
// npm
|
|
100
|
+
verbose: 'debug',
|
|
101
|
+
// npm
|
|
102
|
+
http: 'debug',
|
|
103
|
+
// npm and syslog
|
|
104
|
+
info: 'info',
|
|
105
|
+
// syslog
|
|
106
|
+
notice: 'info',
|
|
107
|
+
// npm
|
|
108
|
+
warn: 'warn',
|
|
109
|
+
// syslog
|
|
110
|
+
warning: 'warn',
|
|
111
|
+
// npm and syslog
|
|
112
|
+
error: 'error',
|
|
113
|
+
// syslog
|
|
114
|
+
emerg: 'fatal',
|
|
115
|
+
// syslog
|
|
116
|
+
alert: 'fatal',
|
|
117
|
+
// syslog
|
|
118
|
+
crit: 'fatal',
|
|
119
|
+
};
|
|
56
120
|
export default SentryTransport;
|
|
57
121
|
//# sourceMappingURL=SentryTransport.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SentryTransport.js","sourceRoot":"","sources":["../../../src/services/logging/SentryTransport.ts"],"names":[],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"SentryTransport.js","sourceRoot":"","sources":["../../../src/services/logging/SentryTransport.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adaptivestone/framework",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.41",
|
|
4
4
|
"description": "Adaptive stone node js framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
7
|
-
"node": ">=
|
|
7
|
+
"node": ">=24.0.0"
|
|
8
8
|
},
|
|
9
9
|
"exports": {
|
|
10
10
|
"./package.json": "./package.json",
|
|
@@ -53,22 +53,29 @@
|
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@biomejs/biome": "^2.0.6",
|
|
56
|
+
"@sentry/core": "^10.34.0",
|
|
57
|
+
"@sentry/node": "^10.34.0",
|
|
56
58
|
"@types/express": "^5.0.1",
|
|
57
59
|
"@types/formidable": "^3.4.5",
|
|
58
60
|
"@types/node": "^25.0.0",
|
|
59
61
|
"@vitest/coverage-v8": "^4.0.0",
|
|
60
62
|
"lefthook": "^2.0.0",
|
|
61
|
-
"mongodb-memory-server": "^
|
|
63
|
+
"mongodb-memory-server": "^11.0.0",
|
|
62
64
|
"typescript": "^5.8.3",
|
|
63
65
|
"vitest": "^4.0.0"
|
|
64
66
|
},
|
|
65
67
|
"peerDependencies": {
|
|
66
|
-
"@adaptivestone/framework-module-email": "^1.0.0"
|
|
68
|
+
"@adaptivestone/framework-module-email": "^1.0.0",
|
|
69
|
+
"@sentry/core": "^10.34..0",
|
|
70
|
+
"@sentry/node": "^10.34.0"
|
|
67
71
|
},
|
|
68
72
|
"peerDependenciesMeta": {
|
|
69
73
|
"@adaptivestone/framework-module-email": {
|
|
70
74
|
"optional": true
|
|
71
75
|
},
|
|
76
|
+
"@sentry/core": {
|
|
77
|
+
"optional": true
|
|
78
|
+
},
|
|
72
79
|
"@sentry/node": {
|
|
73
80
|
"optional": true
|
|
74
81
|
}
|