@mondart/nestjs-common-module-core 3.2.7 → 3.2.8
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/README.md +3 -0
- package/dist/decorators/validations/index.d.ts +1 -0
- package/dist/decorators/validations/index.d.ts.map +1 -1
- package/dist/decorators/validations/index.js +1 -0
- package/dist/decorators/validations/index.js.map +1 -1
- package/dist/decorators/validations/sanitize-html.decorator.d.ts +3 -0
- package/dist/decorators/validations/sanitize-html.decorator.d.ts.map +1 -0
- package/dist/decorators/validations/sanitize-html.decorator.js +11 -0
- package/dist/decorators/validations/sanitize-html.decorator.js.map +1 -0
- package/dist/helpers/graceful-shutdown.helper.d.ts +15 -0
- package/dist/helpers/graceful-shutdown.helper.d.ts.map +1 -1
- package/dist/helpers/graceful-shutdown.helper.js +165 -3
- package/dist/helpers/graceful-shutdown.helper.js.map +1 -1
- package/dist/helpers/html-sanitizer.helper.d.ts +3 -0
- package/dist/helpers/html-sanitizer.helper.d.ts.map +1 -0
- package/dist/helpers/html-sanitizer.helper.js +31 -0
- package/dist/helpers/html-sanitizer.helper.js.map +1 -0
- package/dist/helpers/index.d.ts +1 -0
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +1 -0
- package/dist/helpers/index.js.map +1 -1
- package/package.json +12 -8
package/README.md
CHANGED
|
@@ -231,6 +231,9 @@ On `SIGTERM` or `SIGINT`, the helper rejects new requests with `503` and a
|
|
|
231
231
|
Kafka, queue, and database shutdown hooks run. Configure the container stop
|
|
232
232
|
grace period above that deadline (the Swarm deployment uses two minutes).
|
|
233
233
|
Do not register Nest's default shutdown signal handlers alongside this helper.
|
|
234
|
+
During `app.close()`, the helper suppresses only ioredis's known
|
|
235
|
+
`Connection is closed.` rejection caused by an already-closing Bull connection;
|
|
236
|
+
any other unhandled shutdown rejection is logged and produces a failed exit.
|
|
234
237
|
|
|
235
238
|
## Kafka-related exports
|
|
236
239
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/decorators/validations/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/decorators/validations/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC"}
|
|
@@ -19,4 +19,5 @@ __exportStar(require("./is-id.decorator"), exports);
|
|
|
19
19
|
__exportStar(require("./is-not-empty-string.decorator"), exports);
|
|
20
20
|
__exportStar(require("./is-one-of-property.decorator"), exports);
|
|
21
21
|
__exportStar(require("./depend-on-property.decorator"), exports);
|
|
22
|
+
__exportStar(require("./sanitize-html.decorator"), exports);
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/validations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,oDAAkC;AAClC,kEAAgD;AAChD,iEAA+C;AAC/C,iEAA+C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/validations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,oDAAkC;AAClC,kEAAgD;AAChD,iEAA+C;AAC/C,iEAA+C;AAC/C,4DAA0C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-html.decorator.d.ts","sourceRoot":"","sources":["../../../src/decorators/validations/sanitize-html.decorator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,iBAAiB,CAIlE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SanitizeHtml = SanitizeHtml;
|
|
4
|
+
const class_transformer_1 = require("class-transformer");
|
|
5
|
+
const helpers_1 = require("../../helpers");
|
|
6
|
+
function SanitizeHtml(options) {
|
|
7
|
+
return (0, class_transformer_1.Transform)(({ value }) => (0, helpers_1.sanitizeHtml)(value, options), {
|
|
8
|
+
toClassOnly: true,
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=sanitize-html.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-html.decorator.js","sourceRoot":"","sources":["../../../src/decorators/validations/sanitize-html.decorator.ts"],"names":[],"mappings":";;AAIA,oCAIC;AARD,yDAA8C;AAE9C,2CAA6C;AAE7C,SAAgB,YAAY,CAAC,OAAkB;IAC7C,OAAO,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,IAAA,sBAAY,EAAC,KAAK,EAAE,OAAO,CAAC,EAAE;QAC5D,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -3,13 +3,28 @@ export interface GracefulShutdownOptions {
|
|
|
3
3
|
timeoutMs?: number;
|
|
4
4
|
signals?: NodeJS.Signals[];
|
|
5
5
|
logger?: Pick<Logger, 'log' | 'warn' | 'error'>;
|
|
6
|
+
autoDiscoverParticipants?: boolean;
|
|
7
|
+
participants?: GracefulShutdownParticipant[];
|
|
8
|
+
}
|
|
9
|
+
export interface GracefulShutdownParticipant {
|
|
10
|
+
readonly name: string;
|
|
11
|
+
stopAccepting(): void | Promise<void>;
|
|
12
|
+
waitForIdle?(): void | Promise<void>;
|
|
6
13
|
}
|
|
7
14
|
export interface GracefulShutdownController {
|
|
8
15
|
readonly isDraining: () => boolean;
|
|
9
16
|
readonly activeRequests: () => number;
|
|
17
|
+
readonly activeHandlers: () => number;
|
|
10
18
|
shutdown(signal?: NodeJS.Signals): Promise<void>;
|
|
11
19
|
}
|
|
12
20
|
export declare class GracefulShutdownHelper {
|
|
21
|
+
private static isExpectedRedisShutdownError;
|
|
13
22
|
static enable(app: INestApplication, options?: GracefulShutdownOptions): GracefulShutdownController;
|
|
23
|
+
private static discoverParticipants;
|
|
24
|
+
private static getProviderInstances;
|
|
25
|
+
private static isClosable;
|
|
26
|
+
private static isSchedulerRegistry;
|
|
27
|
+
private static uniqueParticipants;
|
|
28
|
+
private static waitUntil;
|
|
14
29
|
}
|
|
15
30
|
//# sourceMappingURL=graceful-shutdown.helper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graceful-shutdown.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/graceful-shutdown.helper.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"graceful-shutdown.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/graceful-shutdown.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,gBAAgB,EAChB,MAAM,EAGP,MAAM,gBAAgB,CAAC;AAYxB,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IAChD,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,YAAY,CAAC,EAAE,2BAA2B,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,aAAa,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,WAAW,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAgED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAS3C,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,gBAAgB,EACrB,OAAO,GAAE,uBAA4B,GACpC,0BAA0B;IA8J7B,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAkFnC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAenC,OAAO,CAAC,MAAM,CAAC,UAAU;IAQzB,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAclC,OAAO,CAAC,MAAM,CAAC,kBAAkB;mBAWZ,SAAS;CAO/B"}
|
|
@@ -2,8 +2,37 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GracefulShutdownHelper = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
|
+
const core_1 = require("@nestjs/core");
|
|
6
|
+
const rxjs_1 = require("rxjs");
|
|
5
7
|
const DEFAULT_TIMEOUT_MS = 110_000;
|
|
8
|
+
const PARTICIPANT_POLL_INTERVAL_MS = 50;
|
|
9
|
+
class TransportActivityInterceptor {
|
|
10
|
+
constructor(isDraining) {
|
|
11
|
+
this.isDraining = isDraining;
|
|
12
|
+
this.active = 0;
|
|
13
|
+
}
|
|
14
|
+
intercept(context, next) {
|
|
15
|
+
if (context.getType() === 'http')
|
|
16
|
+
return next.handle();
|
|
17
|
+
if (this.isDraining()) {
|
|
18
|
+
return (0, rxjs_1.throwError)(() => new common_1.ServiceUnavailableException('Service is shutting down'));
|
|
19
|
+
}
|
|
20
|
+
this.active += 1;
|
|
21
|
+
return next.handle().pipe((0, rxjs_1.finalize)(() => {
|
|
22
|
+
this.active = Math.max(0, this.active - 1);
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
count() {
|
|
26
|
+
return this.active;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
6
29
|
class GracefulShutdownHelper {
|
|
30
|
+
static isExpectedRedisShutdownError(reason) {
|
|
31
|
+
if (!(reason instanceof Error))
|
|
32
|
+
return false;
|
|
33
|
+
return (reason.message === 'Connection is closed.' &&
|
|
34
|
+
(reason.stack?.includes('/ioredis/') ?? false));
|
|
35
|
+
}
|
|
7
36
|
static enable(app, options = {}) {
|
|
8
37
|
const server = app.getHttpServer();
|
|
9
38
|
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
@@ -12,6 +41,8 @@ class GracefulShutdownHelper {
|
|
|
12
41
|
let draining = false;
|
|
13
42
|
let activeRequests = 0;
|
|
14
43
|
let shutdownPromise;
|
|
44
|
+
const transportActivity = new TransportActivityInterceptor(() => draining);
|
|
45
|
+
app.useGlobalInterceptors(transportActivity);
|
|
15
46
|
app.use((_request, response, next) => {
|
|
16
47
|
if (draining) {
|
|
17
48
|
response.statusCode = 503;
|
|
@@ -41,6 +72,13 @@ class GracefulShutdownHelper {
|
|
|
41
72
|
shutdownPromise = (async () => {
|
|
42
73
|
draining = true;
|
|
43
74
|
logger.log(`${signal ?? 'Shutdown'} received; draining ${activeRequests} active request(s)`);
|
|
75
|
+
const participants = [
|
|
76
|
+
...(options.autoDiscoverParticipants === false
|
|
77
|
+
? []
|
|
78
|
+
: GracefulShutdownHelper.discoverParticipants(app, logger)),
|
|
79
|
+
...(options.participants ?? []),
|
|
80
|
+
];
|
|
81
|
+
const uniqueParticipants = GracefulShutdownHelper.uniqueParticipants(participants);
|
|
44
82
|
let closeServer = () => undefined;
|
|
45
83
|
const serverClosed = new Promise((resolve, reject) => {
|
|
46
84
|
closeServer = (error) => {
|
|
@@ -54,18 +92,46 @@ class GracefulShutdownHelper {
|
|
|
54
92
|
server.closeIdleConnections?.();
|
|
55
93
|
let timeout;
|
|
56
94
|
try {
|
|
95
|
+
const participantsDrained = Promise.all(uniqueParticipants.map(async (participant) => {
|
|
96
|
+
logger.log(`Stopping ${participant.name} intake`);
|
|
97
|
+
await participant.stopAccepting();
|
|
98
|
+
await participant.waitForIdle?.();
|
|
99
|
+
})).then(() => undefined);
|
|
57
100
|
await Promise.race([
|
|
58
|
-
|
|
101
|
+
Promise.all([
|
|
102
|
+
serverClosed,
|
|
103
|
+
GracefulShutdownHelper.waitUntil(() => transportActivity.count() === 0),
|
|
104
|
+
participantsDrained,
|
|
105
|
+
]).then(() => undefined),
|
|
59
106
|
new Promise((resolve) => {
|
|
60
107
|
timeout = setTimeout(() => {
|
|
61
|
-
logger.warn(`Graceful shutdown timed out with ${activeRequests} active request(s)`);
|
|
108
|
+
logger.warn(`Graceful shutdown timed out with ${activeRequests} active HTTP request(s) and ${transportActivity.count()} active transport handler(s)`);
|
|
62
109
|
server.closeAllConnections?.();
|
|
63
110
|
resolve();
|
|
64
111
|
}, timeoutMs);
|
|
65
112
|
timeout.unref();
|
|
66
113
|
}),
|
|
67
114
|
]);
|
|
68
|
-
|
|
115
|
+
let unexpectedShutdownRejection = false;
|
|
116
|
+
const handleShutdownRejection = (reason) => {
|
|
117
|
+
if (GracefulShutdownHelper.isExpectedRedisShutdownError(reason)) {
|
|
118
|
+
logger.warn('Ignored an expected ioredis connection-closed rejection during shutdown');
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
unexpectedShutdownRejection = true;
|
|
122
|
+
process.exitCode = 1;
|
|
123
|
+
logger.error('Unhandled rejection occurred during graceful shutdown', reason instanceof Error ? reason.stack : String(reason));
|
|
124
|
+
};
|
|
125
|
+
process.on('unhandledRejection', handleShutdownRejection);
|
|
126
|
+
try {
|
|
127
|
+
await app.close();
|
|
128
|
+
}
|
|
129
|
+
finally {
|
|
130
|
+
process.off('unhandledRejection', handleShutdownRejection);
|
|
131
|
+
}
|
|
132
|
+
if (unexpectedShutdownRejection) {
|
|
133
|
+
throw new Error('Graceful shutdown encountered an unexpected asynchronous error');
|
|
134
|
+
}
|
|
69
135
|
logger.log('Graceful shutdown completed');
|
|
70
136
|
}
|
|
71
137
|
catch (error) {
|
|
@@ -88,9 +154,105 @@ class GracefulShutdownHelper {
|
|
|
88
154
|
return {
|
|
89
155
|
isDraining: () => draining,
|
|
90
156
|
activeRequests: () => activeRequests,
|
|
157
|
+
activeHandlers: () => transportActivity.count(),
|
|
91
158
|
shutdown,
|
|
92
159
|
};
|
|
93
160
|
}
|
|
161
|
+
static discoverParticipants(app, logger) {
|
|
162
|
+
const providers = GracefulShutdownHelper.getProviderInstances(app);
|
|
163
|
+
const participants = [];
|
|
164
|
+
const microserviceServers = app
|
|
165
|
+
.getMicroservices()
|
|
166
|
+
.map((microservice) => microservice.serverInstance)
|
|
167
|
+
.filter((server) => GracefulShutdownHelper.isClosable(server));
|
|
168
|
+
if (microserviceServers.length > 0) {
|
|
169
|
+
participants.push({
|
|
170
|
+
name: 'Kafka/microservice',
|
|
171
|
+
stopAccepting: () => Promise.all(microserviceServers.map((server) => server.close())).then(() => undefined),
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
const queueResources = new Set();
|
|
175
|
+
for (const [token, instance] of providers) {
|
|
176
|
+
if (typeof token === 'string' &&
|
|
177
|
+
token.startsWith('BullQueue_') &&
|
|
178
|
+
GracefulShutdownHelper.isClosable(instance)) {
|
|
179
|
+
queueResources.add(instance);
|
|
180
|
+
}
|
|
181
|
+
const worker = instance?.worker;
|
|
182
|
+
if (GracefulShutdownHelper.isClosable(worker))
|
|
183
|
+
queueResources.add(worker);
|
|
184
|
+
}
|
|
185
|
+
if (queueResources.size > 0) {
|
|
186
|
+
participants.push({
|
|
187
|
+
name: 'Bull/BullMQ',
|
|
188
|
+
stopAccepting: () => Promise.all([...queueResources].map((resource) => resource.close(false))).then(() => undefined),
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
const scheduler = providers
|
|
192
|
+
.map(([, instance]) => instance)
|
|
193
|
+
.find(GracefulShutdownHelper.isSchedulerRegistry);
|
|
194
|
+
if (scheduler) {
|
|
195
|
+
const cronJobs = [...scheduler.getCronJobs().values()];
|
|
196
|
+
participants.push({
|
|
197
|
+
name: 'scheduler',
|
|
198
|
+
stopAccepting: () => {
|
|
199
|
+
for (const cronJob of cronJobs)
|
|
200
|
+
cronJob.stop();
|
|
201
|
+
for (const interval of scheduler.getIntervals()) {
|
|
202
|
+
scheduler.deleteInterval(interval);
|
|
203
|
+
}
|
|
204
|
+
for (const timeoutName of scheduler.getTimeouts()) {
|
|
205
|
+
scheduler.deleteTimeout(timeoutName);
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
waitForIdle: () => GracefulShutdownHelper.waitUntil(() => cronJobs.every((cronJob) => !cronJob.isCallbackRunning)),
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
logger.log(participants.length === 0
|
|
212
|
+
? 'No background shutdown participants discovered'
|
|
213
|
+
: `Discovered shutdown participants: ${participants
|
|
214
|
+
.map((participant) => participant.name)
|
|
215
|
+
.join(', ')}`);
|
|
216
|
+
return participants;
|
|
217
|
+
}
|
|
218
|
+
static getProviderInstances(app) {
|
|
219
|
+
try {
|
|
220
|
+
const modules = app.get(core_1.ModulesContainer, { strict: false });
|
|
221
|
+
return [...modules.values()].flatMap((moduleRef) => [...moduleRef.providers.entries()].map(([token, wrapper]) => [token, wrapper.instance]));
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
return [];
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
static isClosable(value) {
|
|
228
|
+
return (typeof value === 'object' &&
|
|
229
|
+
value !== null &&
|
|
230
|
+
typeof value.close === 'function');
|
|
231
|
+
}
|
|
232
|
+
static isSchedulerRegistry(value) {
|
|
233
|
+
if (typeof value !== 'object' || value === null)
|
|
234
|
+
return false;
|
|
235
|
+
const registry = value;
|
|
236
|
+
return (typeof registry.getCronJobs === 'function' &&
|
|
237
|
+
typeof registry.getIntervals === 'function' &&
|
|
238
|
+
typeof registry.getTimeouts === 'function' &&
|
|
239
|
+
typeof registry.deleteInterval === 'function' &&
|
|
240
|
+
typeof registry.deleteTimeout === 'function');
|
|
241
|
+
}
|
|
242
|
+
static uniqueParticipants(participants) {
|
|
243
|
+
const names = new Set();
|
|
244
|
+
return participants.filter((participant) => {
|
|
245
|
+
if (names.has(participant.name))
|
|
246
|
+
return false;
|
|
247
|
+
names.add(participant.name);
|
|
248
|
+
return true;
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
static async waitUntil(predicate) {
|
|
252
|
+
while (!predicate()) {
|
|
253
|
+
await new Promise((resolve) => setTimeout(resolve, PARTICIPANT_POLL_INTERVAL_MS));
|
|
254
|
+
}
|
|
255
|
+
}
|
|
94
256
|
}
|
|
95
257
|
exports.GracefulShutdownHelper = GracefulShutdownHelper;
|
|
96
258
|
//# sourceMappingURL=graceful-shutdown.helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graceful-shutdown.helper.js","sourceRoot":"","sources":["../../src/helpers/graceful-shutdown.helper.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"graceful-shutdown.helper.js","sourceRoot":"","sources":["../../src/helpers/graceful-shutdown.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-sanitizer.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/html-sanitizer.helper.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,eAAe,CAAC;AAE5C,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,eAAe,CAAC,QAAQ,GACjC,OAAO,CAsBT"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.sanitizeHtml = sanitizeHtml;
|
|
7
|
+
const sanitize_html_1 = __importDefault(require("sanitize-html"));
|
|
8
|
+
function sanitizeHtml(value, options) {
|
|
9
|
+
if (typeof value !== 'string')
|
|
10
|
+
return value;
|
|
11
|
+
return (0, sanitize_html_1.default)(value, {
|
|
12
|
+
allowedTags: ['p', 'br', 'strong', 'em', 'u', 's', 'ul', 'ol', 'li', 'a'],
|
|
13
|
+
allowedAttributes: {
|
|
14
|
+
a: ['href', 'title', 'target', 'rel'],
|
|
15
|
+
},
|
|
16
|
+
allowedSchemes: ['http', 'https', 'mailto'],
|
|
17
|
+
allowProtocolRelative: false,
|
|
18
|
+
enforceHtmlBoundary: true,
|
|
19
|
+
transformTags: {
|
|
20
|
+
a: (_tagName, attribs) => ({
|
|
21
|
+
tagName: 'a',
|
|
22
|
+
attribs: {
|
|
23
|
+
...attribs,
|
|
24
|
+
rel: 'noopener noreferrer nofollow',
|
|
25
|
+
},
|
|
26
|
+
}),
|
|
27
|
+
},
|
|
28
|
+
...options,
|
|
29
|
+
}).trim();
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=html-sanitizer.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-sanitizer.helper.js","sourceRoot":"","sources":["../../src/helpers/html-sanitizer.helper.ts"],"names":[],"mappings":";;;;;AAEA,oCAyBC;AA3BD,kEAA4C;AAE5C,SAAgB,YAAY,CAC1B,KAAc,EACd,OAAkC;IAElC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5C,OAAO,IAAA,uBAAe,EAAC,KAAK,EAAE;QAC5B,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;QACzE,iBAAiB,EAAE;YACjB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;SACtC;QACD,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;QAC3C,qBAAqB,EAAE,KAAK;QAC5B,mBAAmB,EAAE,IAAI;QACzB,aAAa,EAAE;YACb,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;gBACzB,OAAO,EAAE,GAAG;gBACZ,OAAO,EAAE;oBACP,GAAG,OAAO;oBACV,GAAG,EAAE,8BAA8B;iBACpC;aACF,CAAC;SACH;QACD,GAAG,OAAO;KACX,CAAC,CAAC,IAAI,EAAE,CAAC;AACZ,CAAC"}
|
package/dist/helpers/index.d.ts
CHANGED
|
@@ -15,4 +15,5 @@ export * from './rxjs-catch-error.helper';
|
|
|
15
15
|
export * from './rxjs-timeout-custom-callback.helper';
|
|
16
16
|
export * from './success-response-translation.helper';
|
|
17
17
|
export * from './yup.helper';
|
|
18
|
+
export * from './html-sanitizer.helper';
|
|
18
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC"}
|
package/dist/helpers/index.js
CHANGED
|
@@ -31,4 +31,5 @@ __exportStar(require("./rxjs-catch-error.helper"), exports);
|
|
|
31
31
|
__exportStar(require("./rxjs-timeout-custom-callback.helper"), exports);
|
|
32
32
|
__exportStar(require("./success-response-translation.helper"), exports);
|
|
33
33
|
__exportStar(require("./yup.helper"), exports);
|
|
34
|
+
__exportStar(require("./html-sanitizer.helper"), exports);
|
|
34
35
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,uDAAqC;AACrC,+DAA6C;AAC7C,yDAAuC;AACvC,mDAAiC;AACjC,6DAA2C;AAC3C,gDAA8B;AAC9B,wDAAsC;AACtC,6DAA2C;AAC3C,kDAAgC;AAChC,6DAA2C;AAC3C,iDAA+B;AAC/B,qDAAmC;AACnC,4DAA0C;AAC1C,wEAAsD;AACtD,wEAAsD;AACtD,+CAA6B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,uDAAqC;AACrC,+DAA6C;AAC7C,yDAAuC;AACvC,mDAAiC;AACjC,6DAA2C;AAC3C,gDAA8B;AAC9B,wDAAsC;AACtC,6DAA2C;AAC3C,kDAAgC;AAChC,6DAA2C;AAC3C,iDAA+B;AAC/B,qDAAmC;AACnC,4DAA0C;AAC1C,wEAAsD;AACtD,wEAAsD;AACtD,+CAA6B;AAC7B,0DAAwC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mondart/nestjs-common-module-core",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.8",
|
|
4
4
|
"description": "Core utilities, DTOs, decorators, entities, filters, validators and helpers for NestJS.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Mondart"
|
|
@@ -17,25 +17,29 @@
|
|
|
17
17
|
"build": "tsc -p tsconfig.json"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@nestjs/microservices": "^11.1.10",
|
|
21
|
-
"@nestjs/throttler": "^6.5.0",
|
|
22
|
-
"@sentry/nestjs": "^10.32.1",
|
|
23
|
-
"moment-timezone": "^0.6.0",
|
|
24
20
|
"@nestjs/common": "^11.1.10",
|
|
25
21
|
"@nestjs/core": "^11.1.10",
|
|
22
|
+
"@nestjs/microservices": "^11.1.10",
|
|
26
23
|
"@nestjs/swagger": "^11.0.3",
|
|
24
|
+
"@nestjs/throttler": "^6.5.0",
|
|
27
25
|
"@nestjs/typeorm": "^11.0.0",
|
|
26
|
+
"@sentry/nestjs": "^10.32.1",
|
|
28
27
|
"class-transformer": "^0.5.1",
|
|
29
28
|
"class-validator": "^0.14.3",
|
|
29
|
+
"inquirer": "^13.2.2",
|
|
30
|
+
"moment-timezone": "^0.6.0",
|
|
30
31
|
"nestjs-i18n": "10.6.1",
|
|
31
32
|
"nestjs-paginate": "^12.8.3",
|
|
32
33
|
"reflect-metadata": "^0.2.0",
|
|
33
|
-
"inquirer": "^13.2.2",
|
|
34
|
-
"yup": "^1.7.1",
|
|
35
34
|
"rxjs": "^7.8.2",
|
|
36
|
-
"
|
|
35
|
+
"sanitize-html": "2.17.4",
|
|
36
|
+
"typeorm": "^0.3.28",
|
|
37
|
+
"yup": "^1.7.1"
|
|
37
38
|
},
|
|
38
39
|
"publishConfig": {
|
|
39
40
|
"access": "public"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@types/sanitize-html": "^2.16.1"
|
|
40
44
|
}
|
|
41
45
|
}
|