@solidxai/core 0.1.10-beta.15 → 0.1.10-beta.21
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/commands/test-data.command.d.ts +2 -0
- package/dist/commands/test-data.command.d.ts.map +1 -1
- package/dist/commands/test-data.command.js +32 -6
- package/dist/commands/test-data.command.js.map +1 -1
- package/dist/controllers/chatter-message.controller.d.ts +2 -0
- package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
- package/dist/controllers/chatter-message.controller.js +17 -0
- package/dist/controllers/chatter-message.controller.js.map +1 -1
- package/dist/controllers/gupshup-webhook.controller.d.ts +11 -0
- package/dist/controllers/gupshup-webhook.controller.d.ts.map +1 -0
- package/dist/controllers/gupshup-webhook.controller.js +87 -0
- package/dist/controllers/gupshup-webhook.controller.js.map +1 -0
- package/dist/controllers/meta-cloud-whatsapp-webhook.controller.d.ts +16 -0
- package/dist/controllers/meta-cloud-whatsapp-webhook.controller.d.ts.map +1 -0
- package/dist/controllers/meta-cloud-whatsapp-webhook.controller.js +133 -0
- package/dist/controllers/meta-cloud-whatsapp-webhook.controller.js.map +1 -0
- package/dist/dtos/update-chatter-note-message.dto.d.ts +5 -0
- package/dist/dtos/update-chatter-note-message.dto.d.ts.map +1 -0
- package/dist/dtos/update-chatter-note-message.dto.js +34 -0
- package/dist/dtos/update-chatter-note-message.dto.js.map +1 -0
- package/dist/factories/whatsapp.factory.d.ts.map +1 -1
- package/dist/factories/whatsapp.factory.js +13 -11
- package/dist/factories/whatsapp.factory.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +1 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/listeners/user-registration.listener.d.ts +5 -2
- package/dist/listeners/user-registration.listener.d.ts.map +1 -1
- package/dist/listeners/user-registration.listener.js +37 -4
- package/dist/listeners/user-registration.listener.js.map +1 -1
- package/dist/seeders/module-test-data.service.d.ts +2 -0
- package/dist/seeders/module-test-data.service.d.ts.map +1 -1
- package/dist/seeders/module-test-data.service.js +61 -0
- package/dist/seeders/module-test-data.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +1 -0
- package/dist/services/authentication.service.d.ts +6 -1
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +144 -14
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/chatter-message.service.d.ts +7 -1
- package/dist/services/chatter-message.service.d.ts.map +1 -1
- package/dist/services/chatter-message.service.js +94 -2
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +1 -0
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +11 -0
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +1 -0
- package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.js +6 -0
- package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
- package/dist/services/settings/default-settings-provider.service.d.ts +174 -0
- package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
- package/dist/services/settings/default-settings-provider.service.js +98 -0
- package/dist/services/settings/default-settings-provider.service.js.map +1 -1
- package/dist/services/user.service.js +1 -1
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/whatsapp/GupshupOtpWhatsappService.d.ts +11 -0
- package/dist/services/whatsapp/GupshupOtpWhatsappService.d.ts.map +1 -0
- package/dist/services/whatsapp/GupshupOtpWhatsappService.js +127 -0
- package/dist/services/whatsapp/GupshupOtpWhatsappService.js.map +1 -0
- package/dist/services/whatsapp/MetaCloudWhatsappService.d.ts +17 -0
- package/dist/services/whatsapp/MetaCloudWhatsappService.d.ts.map +1 -0
- package/dist/services/whatsapp/MetaCloudWhatsappService.js +209 -0
- package/dist/services/whatsapp/MetaCloudWhatsappService.js.map +1 -0
- package/dist/solid-core.module.d.ts +2 -2
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +14 -6
- package/dist/solid-core.module.js.map +1 -1
- package/dist-tests/api/authenticate.spec.js +119 -0
- package/dist-tests/api/authenticate.spec.js.map +1 -0
- package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +97 -0
- package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +1 -0
- package/dist-tests/api/ping.spec.js +21 -0
- package/dist-tests/api/ping.spec.js.map +1 -0
- package/dist-tests/helpers/auth.js +41 -0
- package/dist-tests/helpers/auth.js.map +1 -0
- package/dist-tests/helpers/env.js +11 -0
- package/dist-tests/helpers/env.js.map +1 -0
- package/docs/grouping-enhancements.md +89 -0
- package/docs/java-spring/README.md +3 -0
- package/docs/java-spring/solid-core-module-deep-dive-report.md +1317 -0
- package/docs/seed-changes.md +65 -0
- package/docs/test-data-workflow.md +200 -0
- package/docs/type-declaration-import-issue.md +24 -0
- package/package.json +1 -1
- package/src/commands/test-data.command.ts +29 -6
- package/src/controllers/chatter-message.controller.ts +12 -0
- package/src/controllers/gupshup-webhook.controller.ts +91 -0
- package/src/controllers/meta-cloud-whatsapp-webhook.controller.ts +155 -0
- package/src/dtos/update-chatter-note-message.dto.ts +14 -0
- package/src/factories/whatsapp.factory.ts +33 -32
- package/src/helpers/field-crud-managers/field-quality-check-fixes.md +178 -0
- package/src/index.ts +2 -0
- package/src/interfaces.ts +1 -1
- package/src/listeners/user-registration.listener.ts +49 -6
- package/src/seeders/module-test-data.service.ts +79 -2
- package/src/seeders/seed-data/solid-core-metadata.json +1 -0
- package/src/services/authentication.service.ts +281 -46
- package/src/services/chatter-message.service.ts +112 -2
- package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +12 -0
- package/src/services/mediaStorageProviders/file-storage-provider.ts +8 -1
- package/src/services/settings/default-settings-provider.service.ts +98 -0
- package/src/services/user.service.ts +1 -1
- package/src/services/whatsapp/GupshupOtpWhatsappService.ts +174 -0
- package/src/services/whatsapp/MetaCloudWhatsappService.ts +253 -0
- package/src/solid-core.module.ts +205 -196
- package/src/testing/README.md +15 -0
- package/.claude/settings.local.json +0 -15
- package/CLAUDE.md +0 -18
- package/CURRENT_PROMPT +0 -6
- package/src/services/1.js +0 -6
|
@@ -5,6 +5,7 @@ interface TestDataCommandOptions {
|
|
|
5
5
|
modulesToTest?: string;
|
|
6
6
|
setup?: boolean;
|
|
7
7
|
teardown?: boolean;
|
|
8
|
+
unlink?: boolean;
|
|
8
9
|
}
|
|
9
10
|
export declare class TestDataCommand extends CommandRunner {
|
|
10
11
|
private readonly testDataService;
|
|
@@ -15,6 +16,7 @@ export declare class TestDataCommand extends CommandRunner {
|
|
|
15
16
|
parseSetup(): boolean;
|
|
16
17
|
parseTeardown(): boolean;
|
|
17
18
|
parseModulesToTest(val: string): string;
|
|
19
|
+
parseUnlink(): boolean;
|
|
18
20
|
}
|
|
19
21
|
export {};
|
|
20
22
|
//# sourceMappingURL=test-data.command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-data.command.d.ts","sourceRoot":"","sources":["../../src/commands/test-data.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,aAAa,EAAU,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,UAAU,sBAAsB;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"test-data.command.d.ts","sourceRoot":"","sources":["../../src/commands/test-data.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,aAAa,EAAU,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,UAAU,sBAAsB;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAIa,eAAgB,SAAQ,aAAa;IAGpC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAF5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;gBAE9B,eAAe,EAAE,qBAAqB;IAI7D,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0ElF,SAAS,IAAI,OAAO;IAQpB,UAAU,IAAI,OAAO;IAQrB,aAAa,IAAI,OAAO;IASxB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQvC,WAAW,IAAI,OAAO;CAIvB"}
|
|
@@ -25,15 +25,16 @@ let TestDataCommand = TestDataCommand_1 = class TestDataCommand extends nest_com
|
|
|
25
25
|
const load = Boolean(options?.load);
|
|
26
26
|
const setup = Boolean(options?.setup);
|
|
27
27
|
const teardown = Boolean(options?.teardown);
|
|
28
|
-
const
|
|
28
|
+
const unlink = Boolean(options?.unlink);
|
|
29
|
+
const selectedModes = [load, setup, teardown, unlink].filter(Boolean).length;
|
|
29
30
|
if (selectedModes > 1) {
|
|
30
|
-
this.logger.error('Please specify only one of --load, --setup, or --
|
|
31
|
-
console.log('Please specify only one of --load, --setup, or --
|
|
31
|
+
this.logger.error('Please specify only one of --load, --setup, --teardown, or --unlink.');
|
|
32
|
+
console.log('Please specify only one of --load, --setup, --teardown, or --unlink.');
|
|
32
33
|
return;
|
|
33
34
|
}
|
|
34
|
-
if (!load && !setup && !teardown) {
|
|
35
|
-
this.logger.error('Please specify one of --load, --setup, or --
|
|
36
|
-
console.log('Please specify one of --load, --setup, or --
|
|
35
|
+
if (!load && !setup && !teardown && !unlink) {
|
|
36
|
+
this.logger.error('Please specify one of --load, --setup, --teardown, or --unlink.');
|
|
37
|
+
console.log('Please specify one of --load, --setup, --teardown, or --unlink.');
|
|
37
38
|
return;
|
|
38
39
|
}
|
|
39
40
|
if (teardown) {
|
|
@@ -61,6 +62,19 @@ let TestDataCommand = TestDataCommand_1 = class TestDataCommand extends nest_com
|
|
|
61
62
|
await this.testDataService.setupTestData(modulesToTest ?? undefined);
|
|
62
63
|
return;
|
|
63
64
|
}
|
|
65
|
+
if (unlink) {
|
|
66
|
+
const modulesToTest = options?.modulesToTest ? options.modulesToTest.split(',').map((m) => m.trim()).filter(Boolean) : null;
|
|
67
|
+
if (modulesToTest?.length) {
|
|
68
|
+
this.logger.log(`Test data unlink for modules: ${modulesToTest.join(', ')}`);
|
|
69
|
+
console.log(`Test data unlink for modules: ${modulesToTest.join(', ')}`);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this.logger.log('Test data unlink for all modules.');
|
|
73
|
+
console.log('Test data unlink for all modules.');
|
|
74
|
+
}
|
|
75
|
+
await this.testDataService.removeTestData(modulesToTest ?? undefined);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
64
78
|
}
|
|
65
79
|
catch (err) {
|
|
66
80
|
const message = err?.message ?? String(err);
|
|
@@ -84,6 +98,9 @@ let TestDataCommand = TestDataCommand_1 = class TestDataCommand extends nest_com
|
|
|
84
98
|
parseModulesToTest(val) {
|
|
85
99
|
return val;
|
|
86
100
|
}
|
|
101
|
+
parseUnlink() {
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
87
104
|
};
|
|
88
105
|
exports.TestDataCommand = TestDataCommand;
|
|
89
106
|
__decorate([
|
|
@@ -123,6 +140,15 @@ __decorate([
|
|
|
123
140
|
__metadata("design:paramtypes", [String]),
|
|
124
141
|
__metadata("design:returntype", String)
|
|
125
142
|
], TestDataCommand.prototype, "parseModulesToTest", null);
|
|
143
|
+
__decorate([
|
|
144
|
+
(0, nest_commander_1.Option)({
|
|
145
|
+
flags: '--unlink',
|
|
146
|
+
description: 'Delete test data from testing.data sections in reverse order',
|
|
147
|
+
}),
|
|
148
|
+
__metadata("design:type", Function),
|
|
149
|
+
__metadata("design:paramtypes", []),
|
|
150
|
+
__metadata("design:returntype", Boolean)
|
|
151
|
+
], TestDataCommand.prototype, "parseUnlink", null);
|
|
126
152
|
exports.TestDataCommand = TestDataCommand = TestDataCommand_1 = __decorate([
|
|
127
153
|
(0, nest_commander_1.SubCommand)({
|
|
128
154
|
name: 'data',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-data.command.js","sourceRoot":"","sources":["../../src/commands/test-data.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAwC;AACxC,mDAAmE;AACnE,kFAA6E;
|
|
1
|
+
{"version":3,"file":"test-data.command.js","sourceRoot":"","sources":["../../src/commands/test-data.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAwC;AACxC,mDAAmE;AACnE,kFAA6E;AActE,IAAM,eAAe,uBAArB,MAAM,eAAgB,SAAQ,8BAAa;IAGhD,YAA6B,eAAsC;QACjE,KAAK,EAAE,CAAC;QADmB,oBAAe,GAAf,eAAe,CAAuB;QAFlD,WAAM,GAAG,IAAI,eAAM,CAAC,iBAAe,CAAC,IAAI,CAAC,CAAC;IAI3D,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,YAAsB,EAAE,OAAgC;QAChE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACpC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAExC,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;YAC7E,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;gBAC1F,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;gBACpF,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;gBACrF,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;gBAC/E,OAAO;YACT,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;gBACvE,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;gBACnE,MAAM,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;gBACnD,OAAO;YACT,CAAC;YAED,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;gBAC3E,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;gBACvE,MAAM,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;gBACnD,OAAO;YACT,CAAC;YAED,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC5H,IAAI,aAAa,EAAE,MAAM,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gCAAgC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC5E,OAAO,CAAC,GAAG,CAAC,gCAAgC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1E,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;oBACpD,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;gBAClD,CAAC;gBACD,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC;gBACrE,OAAO;YACT,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC5H,IAAI,aAAa,EAAE,MAAM,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iCAAiC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC7E,OAAO,CAAC,GAAG,CAAC,iCAAiC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC3E,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;oBACrD,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;gBACnD,CAAC;gBACD,MAAM,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC;gBACtE,OAAO;YACT,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;YACtD,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAMD,SAAS;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAMD,aAAa;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAOD,kBAAkB,CAAC,GAAW;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC;IAMD,WAAW;QACT,OAAO,IAAI,CAAC;IACd,CAAC;CAEF,CAAA;AAtHY,0CAAe;AAiF1B;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,2CAA2C;KACzD,CAAC;;;;gDAGD;AAMD;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,4DAA4D;KAC1E,CAAC;;;;iDAGD;AAMD;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,6DAA6D;KAC3E,CAAC;;;;oDAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,kCAAkC;QACzC,WAAW,EAAE,yEAAyE;QACtF,QAAQ,EAAE,KAAK;KAChB,CAAC;;;;yDAGD;AAMD;IAJC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,8DAA8D;KAC5E,CAAC;;;;kDAGD;0BApHU,eAAe;IAJ3B,IAAA,2BAAU,EAAC;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,2CAA2C;KACzD,CAAC;qCAI8C,gDAAqB;GAHxD,eAAe,CAsH3B","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { SubCommand, CommandRunner, Option } from 'nest-commander';\nimport { ModuleTestDataService } from 'src/seeders/module-test-data.service';\n\ninterface TestDataCommandOptions {\n load?: boolean;\n modulesToTest?: string;\n setup?: boolean;\n teardown?: boolean;\n unlink?: boolean;\n}\n\n@SubCommand({\n name: 'data',\n description: 'Seed test data from testing.data sections',\n})\nexport class TestDataCommand extends CommandRunner {\n private readonly logger = new Logger(TestDataCommand.name);\n\n constructor(private readonly testDataService: ModuleTestDataService) {\n super();\n }\n\n async run(_passedParam: string[], options?: TestDataCommandOptions): Promise<void> {\n try {\n const load = Boolean(options?.load);\n const setup = Boolean(options?.setup);\n const teardown = Boolean(options?.teardown);\n const unlink = Boolean(options?.unlink);\n\n const selectedModes = [load, setup, teardown, unlink].filter(Boolean).length;\n if (selectedModes > 1) {\n this.logger.error('Please specify only one of --load, --setup, --teardown, or --unlink.');\n console.log('Please specify only one of --load, --setup, --teardown, or --unlink.');\n return;\n }\n\n if (!load && !setup && !teardown && !unlink) {\n this.logger.error('Please specify one of --load, --setup, --teardown, or --unlink.');\n console.log('Please specify one of --load, --setup, --teardown, or --unlink.');\n return;\n }\n\n if (teardown) {\n this.logger.log('Deleting test datasource environment and databases.');\n console.log('Deleting test datasource environment and databases.');\n await this.testDataService.deleteTestDatasources();\n return;\n }\n\n if (setup) {\n this.logger.log('Creating test datasource environment file and manifest.');\n console.log('Creating test datasource environment file and manifest.');\n await this.testDataService.createTestDatasources();\n return;\n }\n\n if (load) {\n const modulesToTest = options?.modulesToTest ? options.modulesToTest.split(',').map((m) => m.trim()).filter(Boolean) : null;\n if (modulesToTest?.length) {\n this.logger.log(`Test data setup for modules: ${modulesToTest.join(', ')}`);\n console.log(`Test data setup for modules: ${modulesToTest.join(', ')}`);\n } else {\n this.logger.log('Test data setup for all modules.');\n console.log('Test data setup for all modules.');\n }\n await this.testDataService.setupTestData(modulesToTest ?? undefined);\n return;\n }\n\n if (unlink) {\n const modulesToTest = options?.modulesToTest ? options.modulesToTest.split(',').map((m) => m.trim()).filter(Boolean) : null;\n if (modulesToTest?.length) {\n this.logger.log(`Test data unlink for modules: ${modulesToTest.join(', ')}`);\n console.log(`Test data unlink for modules: ${modulesToTest.join(', ')}`);\n } else {\n this.logger.log('Test data unlink for all modules.');\n console.log('Test data unlink for all modules.');\n }\n await this.testDataService.removeTestData(modulesToTest ?? undefined);\n return;\n }\n } catch (err: any) {\n const message = err?.message ?? String(err);\n this.logger.error(message);\n console.error(`Test data command failed: ${message}`);\n if (err?.stack) {\n console.error(err.stack);\n }\n throw err;\n }\n }\n\n @Option({\n flags: '--load',\n description: 'Seed test data from testing.data sections',\n })\n parseLoad(): boolean {\n return true;\n }\n\n @Option({\n flags: '--setup',\n description: 'Create a new .env.<dbRunName> and test datasource manifest',\n })\n parseSetup(): boolean {\n return true;\n }\n\n @Option({\n flags: '--teardown',\n description: 'Delete test datasource env/manifest and drop test databases',\n })\n parseTeardown(): boolean {\n return true;\n }\n\n @Option({\n flags: '--modules-to-test [module names]',\n description: 'Comma-separated list of module names to test (defaults to all modules).',\n required: false,\n })\n parseModulesToTest(val: string): string {\n return val;\n }\n\n @Option({\n flags: '--unlink',\n description: 'Delete test data from testing.data sections in reverse order',\n })\n parseUnlink(): boolean {\n return true;\n }\n\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ChatterMessageService } from '../services/chatter-message.service';
|
|
2
2
|
import { CreateChatterMessageDto } from '../dtos/create-chatter-message.dto';
|
|
3
3
|
import { PostChatterMessageDto } from '../dtos/post-chatter-message.dto';
|
|
4
|
+
import { UpdateChatterNoteMessageDto } from '../dtos/update-chatter-note-message.dto';
|
|
4
5
|
export declare class ChatterMessageController {
|
|
5
6
|
private readonly service;
|
|
6
7
|
constructor(service: ChatterMessageService);
|
|
@@ -39,5 +40,6 @@ export declare class ChatterMessageController {
|
|
|
39
40
|
findOne(id: string, query: any): Promise<import("..").ChatterMessage>;
|
|
40
41
|
postMessage(postDto: PostChatterMessageDto, files: Array<Express.Multer.File>): Promise<import("..").ChatterMessage>;
|
|
41
42
|
markCompleted(id: string): Promise<import("..").ChatterMessage>;
|
|
43
|
+
updateCustomNoteMessage(id: string, updateDto: UpdateChatterNoteMessageDto, files: Array<Express.Multer.File>): Promise<import("..").ChatterMessage>;
|
|
42
44
|
}
|
|
43
45
|
//# sourceMappingURL=chatter-message.controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatter-message.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/chatter-message.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"chatter-message.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/chatter-message.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAUtF,qBAEa,wBAAwB;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,qBAAqB;IAK3D,MAAM,CAAS,SAAS,EAAE,uBAAuB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAiD/F,kBAAkB,CACH,QAAQ,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAC9B,KAAK,EAAE,GAAG;;;;;;;;;;;IAgBf,QAAQ,CAAU,KAAK,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;IAM5B,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAmBpD,WAAW,CACP,OAAO,EAAE,qBAAqB,EACrB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAO9C,aAAa,CAAc,EAAE,EAAE,MAAM;IAOrC,uBAAuB,CACd,EAAE,EAAE,MAAM,EACf,SAAS,EAAE,2BAA2B,EAC7B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;CAIrD"}
|
|
@@ -20,6 +20,7 @@ const swagger_1 = require("@nestjs/swagger");
|
|
|
20
20
|
const chatter_message_service_1 = require("../services/chatter-message.service");
|
|
21
21
|
const create_chatter_message_dto_1 = require("../dtos/create-chatter-message.dto");
|
|
22
22
|
const post_chatter_message_dto_1 = require("../dtos/post-chatter-message.dto");
|
|
23
|
+
const update_chatter_note_message_dto_1 = require("../dtos/update-chatter-note-message.dto");
|
|
23
24
|
const public_decorator_1 = require("../decorators/public.decorator");
|
|
24
25
|
var ShowSoftDeleted;
|
|
25
26
|
(function (ShowSoftDeleted) {
|
|
@@ -48,6 +49,9 @@ let ChatterMessageController = class ChatterMessageController {
|
|
|
48
49
|
async markCompleted(id) {
|
|
49
50
|
return this.service.markCompleted(+id);
|
|
50
51
|
}
|
|
52
|
+
async updateCustomNoteMessage(id, updateDto, files) {
|
|
53
|
+
return this.service.updateCustomNoteMessage(+id, updateDto, files);
|
|
54
|
+
}
|
|
51
55
|
};
|
|
52
56
|
exports.ChatterMessageController = ChatterMessageController;
|
|
53
57
|
__decorate([
|
|
@@ -130,6 +134,19 @@ __decorate([
|
|
|
130
134
|
__metadata("design:paramtypes", [String]),
|
|
131
135
|
__metadata("design:returntype", Promise)
|
|
132
136
|
], ChatterMessageController.prototype, "markCompleted", null);
|
|
137
|
+
__decorate([
|
|
138
|
+
(0, swagger_1.ApiBearerAuth)("jwt"),
|
|
139
|
+
(0, common_1.Patch)(':id/note'),
|
|
140
|
+
(0, common_1.UseInterceptors)((0, platform_express_1.AnyFilesInterceptor)()),
|
|
141
|
+
openapi.ApiResponse({ status: 200, type: require("../entities/chatter-message.entity").ChatterMessage }),
|
|
142
|
+
__param(0, (0, common_1.Param)('id')),
|
|
143
|
+
__param(1, (0, common_1.Body)()),
|
|
144
|
+
__param(2, (0, common_1.UploadedFiles)()),
|
|
145
|
+
__metadata("design:type", Function),
|
|
146
|
+
__metadata("design:paramtypes", [String, update_chatter_note_message_dto_1.UpdateChatterNoteMessageDto,
|
|
147
|
+
Array]),
|
|
148
|
+
__metadata("design:returntype", Promise)
|
|
149
|
+
], ChatterMessageController.prototype, "updateCustomNoteMessage", null);
|
|
133
150
|
exports.ChatterMessageController = ChatterMessageController = __decorate([
|
|
134
151
|
(0, swagger_1.ApiTags)('Solid Core'),
|
|
135
152
|
(0, common_1.Controller)('chatter-message'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatter-message.controller.js","sourceRoot":"","sources":["../../src/controllers/chatter-message.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA+H;AAC/H,+DAA+D;AAC/D,6CAAmE;AACnE,iFAA4E;AAC5E,mFAA6E;AAE7E,+EAAyE;
|
|
1
|
+
{"version":3,"file":"chatter-message.controller.js","sourceRoot":"","sources":["../../src/controllers/chatter-message.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Controller, Post, Body, Param, UploadedFiles, UseInterceptors, Put, Get, Query, Delete, Patch } from '@nestjs/common';\nimport { AnyFilesInterceptor } from \"@nestjs/platform-express\";\nimport { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { ChatterMessageService } from '../services/chatter-message.service';\nimport { CreateChatterMessageDto } from '../dtos/create-chatter-message.dto';\nimport { UpdateChatterMessageDto } from '../dtos/update-chatter-message.dto';\nimport { PostChatterMessageDto } from '../dtos/post-chatter-message.dto';\nimport { UpdateChatterNoteMessageDto } from '../dtos/update-chatter-note-message.dto';\nimport { SolidRequestContextDecorator } from 'src/decorators/solid-request-context.decorator';\nimport { SolidRequestContextDto } from 'src/dtos/solid-request-context.dto';\nimport { Public } from 'src/decorators/public.decorator';\n\nenum ShowSoftDeleted {\n INCLUSIVE = \"inclusive\",\n EXCLUSIVE = \"exclusive\",\n}\n\n@ApiTags('Solid Core')\n@Controller('chatter-message')\nexport class ChatterMessageController {\n constructor(private readonly service: ChatterMessageService) {}\n\n @ApiBearerAuth(\"jwt\")\n @Post()\n @UseInterceptors(AnyFilesInterceptor())\n create(@Body() createDto: CreateChatterMessageDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.create(createDto, files);\n }\n\n // @ApiBearerAuth(\"jwt\")\n // @Post('/bulk')\n // @UseInterceptors(AnyFilesInterceptor())\n // insertMany(@Body() createDtos: CreateChatterMessageDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {\n // return this.service.insertMany(createDtos, filesArray);\n // }\n\n\n // @ApiBearerAuth(\"jwt\")\n // @Put(':id')\n // @UseInterceptors(AnyFilesInterceptor())\n // update(@Param('id') id: number, @Body() updateDto: UpdateChatterMessageDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n // return this.service.update(id, updateDto, files);\n // }\n\n // @ApiBearerAuth(\"jwt\")\n // @Patch(':id')\n // @UseInterceptors(AnyFilesInterceptor())\n // partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateChatterMessageDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n // return this.service.update(id, updateDto, files, true);\n // }\n\n // @ApiBearerAuth(\"jwt\")\n // @Post('/bulk-recover')\n // async recoverMany(@Body() ids: number[]) {\n // return this.service.recoverMany(ids);\n // }\n\n // @ApiBearerAuth(\"jwt\")\n // @Get('/recover/:id')\n // async recover(@Param('id') id: number) {\n // return this.service.recover(id);\n // }\n\n @Public()\n @Get('/getChatterMessages/:entityId/:entityName')\n @ApiQuery({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array })\n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n async getChatterMessages(\n @Param('entityId') entityId: number,\n @Param('entityName') entityName: string,\n @Query() query: any\n ) {\n return this.service.getChatterMessages(entityId, entityName, query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @ApiQuery({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array }) \n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n @Get()\n async findMany(@Query() query: any) { \n return this.service.find(query); \n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id')\n async findOne(@Param('id') id: string, @Query() query: any) {\n return this.service.findOne(+id, query);\n }\n\n // @ApiBearerAuth(\"jwt\")\n // @Delete('/bulk')\n // async deleteMany(@Body() ids: number[]) {\n // return this.service.deleteMany(ids);\n // }\n\n // @ApiBearerAuth(\"jwt\")\n // @Delete(':id')\n // async delete(@Param('id') id: number) {\n // return this.service.delete(id);\n // }\n\n @ApiBearerAuth(\"jwt\")\n @Post('post')\n @UseInterceptors(AnyFilesInterceptor())\n async postMessage(\n @Body() postDto: PostChatterMessageDto,\n @UploadedFiles() files: Array<Express.Multer.File>,\n ) {\n return this.service.postMessage(postDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Patch(':id/complete')\n async markCompleted(@Param('id') id: string) {\n return this.service.markCompleted(+id);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Patch(':id/note')\n @UseInterceptors(AnyFilesInterceptor())\n async updateCustomNoteMessage(\n @Param('id') id: string,\n @Body() updateDto: UpdateChatterNoteMessageDto,\n @UploadedFiles() files: Array<Express.Multer.File>,\n ) {\n return this.service.updateCustomNoteMessage(+id, updateDto, files);\n }\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Request } from "express";
|
|
2
|
+
export declare class GupshupWebhookController {
|
|
3
|
+
private readonly logger;
|
|
4
|
+
receiveWebhook(req: Request, body: unknown): Promise<{
|
|
5
|
+
success: boolean;
|
|
6
|
+
message: string;
|
|
7
|
+
}>;
|
|
8
|
+
private extractStatusInfo;
|
|
9
|
+
private asString;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=gupshup-webhook.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gupshup-webhook.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/gupshup-webhook.controller.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKlC,qBAGa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;IAK9D,cAAc,CAAQ,GAAG,EAAE,OAAO,EAAU,IAAI,EAAE,OAAO;;;;IAoB/D,OAAO,CAAC,iBAAiB;IA2CzB,OAAO,CAAC,QAAQ;CAGjB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var GupshupWebhookController_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.GupshupWebhookController = void 0;
|
|
17
|
+
const openapi = require("@nestjs/swagger");
|
|
18
|
+
const common_1 = require("@nestjs/common");
|
|
19
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
20
|
+
const auth_decorator_1 = require("../decorators/auth.decorator");
|
|
21
|
+
const public_decorator_1 = require("../decorators/public.decorator");
|
|
22
|
+
const auth_type_enum_1 = require("../enums/auth-type.enum");
|
|
23
|
+
let GupshupWebhookController = GupshupWebhookController_1 = class GupshupWebhookController {
|
|
24
|
+
constructor() {
|
|
25
|
+
this.logger = new common_1.Logger(GupshupWebhookController_1.name);
|
|
26
|
+
}
|
|
27
|
+
async receiveWebhook(req, body) {
|
|
28
|
+
const userAgent = req.headers["user-agent"] ?? null;
|
|
29
|
+
this.logger.log(`Received Gupshup WhatsApp webhook${userAgent ? ` from ${userAgent}` : ""}`);
|
|
30
|
+
this.logger.debug(`Gupshup webhook payload: ${JSON.stringify(body)}`);
|
|
31
|
+
const statusInfo = this.extractStatusInfo(body);
|
|
32
|
+
if (statusInfo) {
|
|
33
|
+
this.logger.log(`Gupshup delivery update: status=${statusInfo.status ?? "unknown"}, messageId=${statusInfo.messageId ?? "n/a"}, destination=${statusInfo.destination ?? "n/a"}, reason=${statusInfo.reason ?? "n/a"}`);
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
success: true,
|
|
37
|
+
message: "Webhook received",
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
extractStatusInfo(body) {
|
|
41
|
+
if (!body || typeof body !== "object") {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
const payload = body;
|
|
45
|
+
const status = this.asString(payload.status) ||
|
|
46
|
+
this.asString(payload.messageStatus) ||
|
|
47
|
+
this.asString(payload.payload?.status) ||
|
|
48
|
+
this.asString(payload.payload?.type);
|
|
49
|
+
const messageId = this.asString(payload.messageId) ||
|
|
50
|
+
this.asString(payload.id) ||
|
|
51
|
+
this.asString(payload.payload?.id) ||
|
|
52
|
+
this.asString(payload.payload?.messageId);
|
|
53
|
+
const destination = this.asString(payload.destination) ||
|
|
54
|
+
this.asString(payload.phone) ||
|
|
55
|
+
this.asString(payload.payload?.destination) ||
|
|
56
|
+
this.asString(payload.payload?.phone);
|
|
57
|
+
const reason = this.asString(payload.reason) ||
|
|
58
|
+
this.asString(payload.error) ||
|
|
59
|
+
this.asString(payload.payload?.reason) ||
|
|
60
|
+
this.asString(payload.payload?.error);
|
|
61
|
+
if (!status && !messageId && !destination && !reason) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
return { status, messageId, destination, reason };
|
|
65
|
+
}
|
|
66
|
+
asString(value) {
|
|
67
|
+
return typeof value === "string" && value.trim() ? value.trim() : undefined;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
exports.GupshupWebhookController = GupshupWebhookController;
|
|
71
|
+
__decorate([
|
|
72
|
+
(0, public_decorator_1.Public)(),
|
|
73
|
+
(0, common_1.Post)(),
|
|
74
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
75
|
+
openapi.ApiResponse({ status: common_1.HttpStatus.OK }),
|
|
76
|
+
__param(0, (0, common_1.Req)()),
|
|
77
|
+
__param(1, (0, common_1.Body)()),
|
|
78
|
+
__metadata("design:type", Function),
|
|
79
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
80
|
+
__metadata("design:returntype", Promise)
|
|
81
|
+
], GupshupWebhookController.prototype, "receiveWebhook", null);
|
|
82
|
+
exports.GupshupWebhookController = GupshupWebhookController = GupshupWebhookController_1 = __decorate([
|
|
83
|
+
(0, auth_decorator_1.Auth)(auth_type_enum_1.AuthType.None),
|
|
84
|
+
(0, common_1.Controller)("webhook/whatsapp/gupshup"),
|
|
85
|
+
(0, swagger_1.ApiTags)("Solid Core")
|
|
86
|
+
], GupshupWebhookController);
|
|
87
|
+
//# sourceMappingURL=gupshup-webhook.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gupshup-webhook.controller.js","sourceRoot":"","sources":["../../src/controllers/gupshup-webhook.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Body,\n Controller,\n HttpCode,\n HttpStatus,\n Logger,\n Post,\n Req,\n} from \"@nestjs/common\";\nimport { ApiTags } from \"@nestjs/swagger\";\nimport { Request } from \"express\";\nimport { Auth } from \"src/decorators/auth.decorator\";\nimport { Public } from \"src/decorators/public.decorator\";\nimport { AuthType } from \"src/enums/auth-type.enum\";\n\n@Auth(AuthType.None)\n@Controller(\"webhook/whatsapp/gupshup\")\n@ApiTags(\"Solid Core\")\nexport class GupshupWebhookController {\n private readonly logger = new Logger(GupshupWebhookController.name);\n\n @Public()\n @Post()\n @HttpCode(HttpStatus.OK)\n async receiveWebhook(@Req() req: Request, @Body() body: unknown) {\n const userAgent = req.headers[\"user-agent\"] ?? null;\n this.logger.log(\n `Received Gupshup WhatsApp webhook${userAgent ? ` from ${userAgent}` : \"\"}`,\n );\n this.logger.debug(`Gupshup webhook payload: ${JSON.stringify(body)}`);\n\n const statusInfo = this.extractStatusInfo(body);\n if (statusInfo) {\n this.logger.log(\n `Gupshup delivery update: status=${statusInfo.status ?? \"unknown\"}, messageId=${statusInfo.messageId ?? \"n/a\"}, destination=${statusInfo.destination ?? \"n/a\"}, reason=${statusInfo.reason ?? \"n/a\"}`,\n );\n }\n\n return {\n success: true,\n message: \"Webhook received\",\n };\n }\n\n private extractStatusInfo(body: unknown): {\n status?: string;\n messageId?: string;\n destination?: string;\n reason?: string;\n } | null {\n if (!body || typeof body !== \"object\") {\n return null;\n }\n\n const payload = body as Record<string, unknown>;\n\n const status =\n this.asString(payload.status) ||\n this.asString(payload.messageStatus) ||\n this.asString((payload.payload as Record<string, unknown>)?.status) ||\n this.asString((payload.payload as Record<string, unknown>)?.type);\n\n const messageId =\n this.asString(payload.messageId) ||\n this.asString(payload.id) ||\n this.asString((payload.payload as Record<string, unknown>)?.id) ||\n this.asString((payload.payload as Record<string, unknown>)?.messageId);\n\n const destination =\n this.asString(payload.destination) ||\n this.asString(payload.phone) ||\n this.asString((payload.payload as Record<string, unknown>)?.destination) ||\n this.asString((payload.payload as Record<string, unknown>)?.phone);\n\n const reason =\n this.asString(payload.reason) ||\n this.asString(payload.error) ||\n this.asString((payload.payload as Record<string, unknown>)?.reason) ||\n this.asString((payload.payload as Record<string, unknown>)?.error);\n\n if (!status && !messageId && !destination && !reason) {\n return null;\n }\n\n return { status, messageId, destination, reason };\n }\n\n private asString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n }\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Response } from "express";
|
|
2
|
+
import { SettingService } from "../services/setting.service";
|
|
3
|
+
export declare class MetaCloudWhatsappWebhookController {
|
|
4
|
+
private readonly settingService;
|
|
5
|
+
private readonly logger;
|
|
6
|
+
constructor(settingService: SettingService);
|
|
7
|
+
verifyWebhook(query: Record<string, unknown>, res: Response): Response<any, Record<string, any>>;
|
|
8
|
+
receiveWebhook(body: unknown): Promise<{
|
|
9
|
+
success: boolean;
|
|
10
|
+
message: string;
|
|
11
|
+
}>;
|
|
12
|
+
private extractStatusInfo;
|
|
13
|
+
private asString;
|
|
14
|
+
private resolveQueryValue;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=meta-cloud-whatsapp-webhook.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-cloud-whatsapp-webhook.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/meta-cloud-whatsapp-webhook.controller.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAInC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,qBAGa,kCAAkC;IAGjC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAF3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuD;gBAEjD,cAAc,EAAE,cAAc;IAI3D,aAAa,CAAU,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAS,GAAG,EAAE,QAAQ;IA6CrE,cAAc,CAAS,IAAI,EAAE,OAAO;;;;IAiB1C,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,iBAAiB;CA2B1B"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var MetaCloudWhatsappWebhookController_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.MetaCloudWhatsappWebhookController = void 0;
|
|
17
|
+
const openapi = require("@nestjs/swagger");
|
|
18
|
+
const common_1 = require("@nestjs/common");
|
|
19
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
20
|
+
const auth_decorator_1 = require("../decorators/auth.decorator");
|
|
21
|
+
const public_decorator_1 = require("../decorators/public.decorator");
|
|
22
|
+
const auth_type_enum_1 = require("../enums/auth-type.enum");
|
|
23
|
+
const setting_service_1 = require("../services/setting.service");
|
|
24
|
+
let MetaCloudWhatsappWebhookController = MetaCloudWhatsappWebhookController_1 = class MetaCloudWhatsappWebhookController {
|
|
25
|
+
constructor(settingService) {
|
|
26
|
+
this.settingService = settingService;
|
|
27
|
+
this.logger = new common_1.Logger(MetaCloudWhatsappWebhookController_1.name);
|
|
28
|
+
}
|
|
29
|
+
verifyWebhook(query, res) {
|
|
30
|
+
const mode = this.resolveQueryValue(query, "hub.mode", "hub_mode", "mode");
|
|
31
|
+
const verifyToken = this.resolveQueryValue(query, "hub.verify_token", "hub_verify_token", "verify_token");
|
|
32
|
+
const challenge = this.resolveQueryValue(query, "hub.challenge", "hub_challenge", "challenge");
|
|
33
|
+
const configuredVerifyToken = this.settingService.getConfigValue("metaWhatsappWebhookVerifyToken") || process.env.COMMON_META_WHATSAPP_WEBHOOK_VERIFY_TOKEN;
|
|
34
|
+
const isVerificationCall = mode === "subscribe";
|
|
35
|
+
const tokenMatches = !!configuredVerifyToken && verifyToken === configuredVerifyToken;
|
|
36
|
+
if (isVerificationCall && tokenMatches && challenge) {
|
|
37
|
+
this.logger.log("Meta Cloud WhatsApp webhook verified successfully.");
|
|
38
|
+
res.writeHead(common_1.HttpStatus.OK, {
|
|
39
|
+
"Content-Type": "text/plain",
|
|
40
|
+
"Content-Length": Buffer.byteLength(String(challenge)),
|
|
41
|
+
});
|
|
42
|
+
res.write(String(challenge));
|
|
43
|
+
return res.end();
|
|
44
|
+
}
|
|
45
|
+
this.logger.warn(`Meta Cloud webhook verification failed. mode=${mode ?? "n/a"}, tokenMatch=${tokenMatches}`);
|
|
46
|
+
res.writeHead(common_1.HttpStatus.FORBIDDEN, { "Content-Type": "text/plain" });
|
|
47
|
+
return res.end("Webhook verification failed");
|
|
48
|
+
}
|
|
49
|
+
async receiveWebhook(body) {
|
|
50
|
+
this.logger.log("Received Meta Cloud WhatsApp webhook");
|
|
51
|
+
this.logger.debug(`Meta Cloud webhook payload: ${JSON.stringify(body)}`);
|
|
52
|
+
const statusInfo = this.extractStatusInfo(body);
|
|
53
|
+
if (statusInfo) {
|
|
54
|
+
this.logger.log(`Meta Cloud delivery update: status=${statusInfo.status ?? "unknown"}, messageId=${statusInfo.messageId ?? "n/a"}, destination=${statusInfo.destination ?? "n/a"}, reason=${statusInfo.reason ?? "n/a"}`);
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
success: true,
|
|
58
|
+
message: "Webhook received",
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
extractStatusInfo(body) {
|
|
62
|
+
if (!body || typeof body !== "object") {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
const payload = body;
|
|
66
|
+
const entries = payload.entry;
|
|
67
|
+
const changes = entries?.[0]?.changes;
|
|
68
|
+
const value = changes?.[0]?.value;
|
|
69
|
+
const statuses = value?.statuses;
|
|
70
|
+
const status = statuses?.[0];
|
|
71
|
+
if (!status) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
const errors = status.errors;
|
|
75
|
+
return {
|
|
76
|
+
status: this.asString(status.status),
|
|
77
|
+
messageId: this.asString(status.id),
|
|
78
|
+
destination: this.asString(status.recipient_id),
|
|
79
|
+
reason: this.asString(errors?.[0]?.title) || this.asString(errors?.[0]?.message),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
asString(value) {
|
|
83
|
+
return typeof value === "string" && value.trim() ? value.trim() : undefined;
|
|
84
|
+
}
|
|
85
|
+
resolveQueryValue(query, ...keys) {
|
|
86
|
+
for (const key of keys) {
|
|
87
|
+
const directValue = this.asString(query[key]);
|
|
88
|
+
if (directValue) {
|
|
89
|
+
return directValue;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
const hubRaw = query.hub;
|
|
93
|
+
if (hubRaw && typeof hubRaw === "object" && !Array.isArray(hubRaw)) {
|
|
94
|
+
const hub = hubRaw;
|
|
95
|
+
for (const key of ["mode", "verify_token", "challenge"]) {
|
|
96
|
+
const value = this.asString(hub[key]);
|
|
97
|
+
if (value &&
|
|
98
|
+
keys.some((candidate) => candidate.endsWith(key) || candidate === key)) {
|
|
99
|
+
return value;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
exports.MetaCloudWhatsappWebhookController = MetaCloudWhatsappWebhookController;
|
|
107
|
+
__decorate([
|
|
108
|
+
(0, public_decorator_1.Public)(),
|
|
109
|
+
(0, common_1.Get)(),
|
|
110
|
+
openapi.ApiResponse({ status: 200 }),
|
|
111
|
+
__param(0, (0, common_1.Query)()),
|
|
112
|
+
__param(1, (0, common_1.Res)()),
|
|
113
|
+
__metadata("design:type", Function),
|
|
114
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
115
|
+
__metadata("design:returntype", void 0)
|
|
116
|
+
], MetaCloudWhatsappWebhookController.prototype, "verifyWebhook", null);
|
|
117
|
+
__decorate([
|
|
118
|
+
(0, public_decorator_1.Public)(),
|
|
119
|
+
(0, common_1.Post)(),
|
|
120
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
121
|
+
openapi.ApiResponse({ status: common_1.HttpStatus.OK }),
|
|
122
|
+
__param(0, (0, common_1.Body)()),
|
|
123
|
+
__metadata("design:type", Function),
|
|
124
|
+
__metadata("design:paramtypes", [Object]),
|
|
125
|
+
__metadata("design:returntype", Promise)
|
|
126
|
+
], MetaCloudWhatsappWebhookController.prototype, "receiveWebhook", null);
|
|
127
|
+
exports.MetaCloudWhatsappWebhookController = MetaCloudWhatsappWebhookController = MetaCloudWhatsappWebhookController_1 = __decorate([
|
|
128
|
+
(0, auth_decorator_1.Auth)(auth_type_enum_1.AuthType.None),
|
|
129
|
+
(0, common_1.Controller)("webhook/whatsapp/meta-cloud"),
|
|
130
|
+
(0, swagger_1.ApiTags)("Solid Core"),
|
|
131
|
+
__metadata("design:paramtypes", [setting_service_1.SettingService])
|
|
132
|
+
], MetaCloudWhatsappWebhookController);
|
|
133
|
+
//# sourceMappingURL=meta-cloud-whatsapp-webhook.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-cloud-whatsapp-webhook.controller.js","sourceRoot":"","sources":["../../src/controllers/meta-cloud-whatsapp-webhook.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Body,\n Controller,\n Get,\n HttpCode,\n HttpStatus,\n Logger,\n Post,\n Query,\n Res,\n} from \"@nestjs/common\";\nimport { ApiTags } from \"@nestjs/swagger\";\nimport { Response } from \"express\";\nimport { Auth } from \"src/decorators/auth.decorator\";\nimport { Public } from \"src/decorators/public.decorator\";\nimport { AuthType } from \"src/enums/auth-type.enum\";\nimport { SettingService } from \"src/services/setting.service\";\nimport type { SolidCoreSetting } from \"src/services/settings/default-settings-provider.service\";\n\n@Auth(AuthType.None)\n@Controller(\"webhook/whatsapp/meta-cloud\")\n@ApiTags(\"Solid Core\")\nexport class MetaCloudWhatsappWebhookController {\n private readonly logger = new Logger(MetaCloudWhatsappWebhookController.name);\n\n constructor(private readonly settingService: SettingService) {}\n\n @Public()\n @Get()\n verifyWebhook(@Query() query: Record<string, unknown>, @Res() res: Response) {\n const mode = this.resolveQueryValue(query, \"hub.mode\", \"hub_mode\", \"mode\");\n const verifyToken = this.resolveQueryValue(\n query,\n \"hub.verify_token\",\n \"hub_verify_token\",\n \"verify_token\",\n );\n const challenge = this.resolveQueryValue(\n query,\n \"hub.challenge\",\n \"hub_challenge\",\n \"challenge\",\n );\n\n const configuredVerifyToken =\n this.settingService.getConfigValue<SolidCoreSetting>(\n \"metaWhatsappWebhookVerifyToken\",\n ) || process.env.COMMON_META_WHATSAPP_WEBHOOK_VERIFY_TOKEN;\n\n const isVerificationCall = mode === \"subscribe\";\n const tokenMatches =\n !!configuredVerifyToken && verifyToken === configuredVerifyToken;\n\n if (isVerificationCall && tokenMatches && challenge) {\n this.logger.log(\"Meta Cloud WhatsApp webhook verified successfully.\");\n res.writeHead(HttpStatus.OK, {\n \"Content-Type\": \"text/plain\",\n \"Content-Length\": Buffer.byteLength(String(challenge)),\n });\n res.write(String(challenge));\n return res.end();\n }\n\n this.logger.warn(\n `Meta Cloud webhook verification failed. mode=${mode ?? \"n/a\"}, tokenMatch=${tokenMatches}`,\n );\n\n res.writeHead(HttpStatus.FORBIDDEN, { \"Content-Type\": \"text/plain\" });\n return res.end(\"Webhook verification failed\");\n }\n\n @Public()\n @Post()\n @HttpCode(HttpStatus.OK)\n async receiveWebhook(@Body() body: unknown) {\n this.logger.log(\"Received Meta Cloud WhatsApp webhook\");\n this.logger.debug(`Meta Cloud webhook payload: ${JSON.stringify(body)}`);\n\n const statusInfo = this.extractStatusInfo(body);\n if (statusInfo) {\n this.logger.log(\n `Meta Cloud delivery update: status=${statusInfo.status ?? \"unknown\"}, messageId=${statusInfo.messageId ?? \"n/a\"}, destination=${statusInfo.destination ?? \"n/a\"}, reason=${statusInfo.reason ?? \"n/a\"}`,\n );\n }\n\n return {\n success: true,\n message: \"Webhook received\",\n };\n }\n\n private extractStatusInfo(body: unknown): {\n status?: string;\n messageId?: string;\n destination?: string;\n reason?: string;\n } | null {\n if (!body || typeof body !== \"object\") {\n return null;\n }\n\n const payload = body as Record<string, unknown>;\n const entries = payload.entry as Array<Record<string, unknown>> | undefined;\n const changes = entries?.[0]?.changes as Array<Record<string, unknown>> | undefined;\n const value = changes?.[0]?.value as Record<string, unknown> | undefined;\n const statuses = value?.statuses as Array<Record<string, unknown>> | undefined;\n const status = statuses?.[0];\n\n if (!status) {\n return null;\n }\n\n const errors = status.errors as Array<Record<string, unknown>> | undefined;\n\n return {\n status: this.asString(status.status),\n messageId: this.asString(status.id),\n destination: this.asString(status.recipient_id),\n reason:\n this.asString(errors?.[0]?.title) || this.asString(errors?.[0]?.message),\n };\n }\n\n private asString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n }\n\n private resolveQueryValue(\n query: Record<string, unknown>,\n ...keys: string[]\n ): string | undefined {\n for (const key of keys) {\n const directValue = this.asString(query[key]);\n if (directValue) {\n return directValue;\n }\n }\n\n const hubRaw = query.hub;\n if (hubRaw && typeof hubRaw === \"object\" && !Array.isArray(hubRaw)) {\n const hub = hubRaw as Record<string, unknown>;\n for (const key of [\"mode\", \"verify_token\", \"challenge\"]) {\n const value = this.asString(hub[key]);\n if (\n value &&\n keys.some((candidate) => candidate.endsWith(key) || candidate === key)\n ) {\n return value;\n }\n }\n }\n\n return undefined;\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-chatter-note-message.dto.d.ts","sourceRoot":"","sources":["../../src/dtos/update-chatter-note-message.dto.ts"],"names":[],"mappings":"AAGA,qBAAa,2BAA2B;IAIpC,WAAW,EAAE,MAAM,CAAC;IAKpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.UpdateChatterNoteMessageDto = void 0;
|
|
13
|
+
const openapi = require("@nestjs/swagger");
|
|
14
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
15
|
+
const class_validator_1 = require("class-validator");
|
|
16
|
+
class UpdateChatterNoteMessageDto {
|
|
17
|
+
static _OPENAPI_METADATA_FACTORY() {
|
|
18
|
+
return { messageBody: { required: true, type: () => String }, removeAttachmentIds: { required: false, type: () => String } };
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.UpdateChatterNoteMessageDto = UpdateChatterNoteMessageDto;
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, class_validator_1.IsString)(),
|
|
24
|
+
(0, class_validator_1.IsOptional)(),
|
|
25
|
+
(0, swagger_1.ApiProperty)(),
|
|
26
|
+
__metadata("design:type", String)
|
|
27
|
+
], UpdateChatterNoteMessageDto.prototype, "messageBody", void 0);
|
|
28
|
+
__decorate([
|
|
29
|
+
(0, class_validator_1.IsString)(),
|
|
30
|
+
(0, class_validator_1.IsOptional)(),
|
|
31
|
+
(0, swagger_1.ApiProperty)({ required: false, description: 'Comma-separated media IDs to remove from this note.' }),
|
|
32
|
+
__metadata("design:type", String)
|
|
33
|
+
], UpdateChatterNoteMessageDto.prototype, "removeAttachmentIds", void 0);
|
|
34
|
+
//# sourceMappingURL=update-chatter-note-message.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-chatter-note-message.dto.js","sourceRoot":"","sources":["../../src/dtos/update-chatter-note-message.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAAmE;AAEnE,MAAa,2BAA2B;;;;CAUvC;AAVD,kEAUC;AANG;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,GAAE;;gEACM;AAKpB;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,qDAAqD,EAAE,CAAC;;wEACxE","sourcesContent":["import { ApiProperty } from '@nestjs/swagger';\nimport { IsNotEmpty, IsOptional, IsString } from 'class-validator';\n\nexport class UpdateChatterNoteMessageDto {\n @IsString()\n @IsOptional()\n @ApiProperty()\n messageBody: string;\n\n @IsString()\n @IsOptional()\n @ApiProperty({ required: false, description: 'Comma-separated media IDs to remove from this note.' })\n removeAttachmentIds?: string;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whatsapp.factory.d.ts","sourceRoot":"","sources":["../../src/factories/whatsapp.factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"whatsapp.factory.d.ts","sourceRoot":"","sources":["../../src/factories/whatsapp.factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,qBACa,eAAe;IAIxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IALjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;gBAGxC,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc;IAGjD,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,kBAAkB;CAyBtD"}
|