@roadmanjs/chat 0.0.3

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.
Files changed (80) hide show
  1. package/README.md +41 -0
  2. package/dist/chat/index.d.ts +3 -0
  3. package/dist/chat/index.js +16 -0
  4. package/dist/chat/index.js.map +1 -0
  5. package/dist/chat/methods/ChatConvo.methods.d.ts +4 -0
  6. package/dist/chat/methods/ChatConvo.methods.js +118 -0
  7. package/dist/chat/methods/ChatConvo.methods.js.map +1 -0
  8. package/dist/chat/methods/ChatConvo.test.d.ts +1 -0
  9. package/dist/chat/methods/ChatConvo.test.js +24 -0
  10. package/dist/chat/methods/ChatConvo.test.js.map +1 -0
  11. package/dist/chat/methods/index.d.ts +1 -0
  12. package/dist/chat/methods/index.js +14 -0
  13. package/dist/chat/methods/index.js.map +1 -0
  14. package/dist/chat/models/ChatAttachment.model.d.ts +18 -0
  15. package/dist/chat/models/ChatAttachment.model.js +51 -0
  16. package/dist/chat/models/ChatAttachment.model.js.map +1 -0
  17. package/dist/chat/models/ChatConvo.model.d.ts +36 -0
  18. package/dist/chat/models/ChatConvo.model.js +111 -0
  19. package/dist/chat/models/ChatConvo.model.js.map +1 -0
  20. package/dist/chat/models/ChatMessage.model.d.ts +30 -0
  21. package/dist/chat/models/ChatMessage.model.js +90 -0
  22. package/dist/chat/models/ChatMessage.model.js.map +1 -0
  23. package/dist/chat/models/index.d.ts +3 -0
  24. package/dist/chat/models/index.js +16 -0
  25. package/dist/chat/models/index.js.map +1 -0
  26. package/dist/chat/resolvers/ChatConvo.resolver.d.ts +17 -0
  27. package/dist/chat/resolvers/ChatConvo.resolver.js +233 -0
  28. package/dist/chat/resolvers/ChatConvo.resolver.js.map +1 -0
  29. package/dist/chat/resolvers/ChatMessage.resolver.d.ts +11 -0
  30. package/dist/chat/resolvers/ChatMessage.resolver.js +142 -0
  31. package/dist/chat/resolvers/ChatMessage.resolver.js.map +1 -0
  32. package/dist/chat/resolvers/index.d.ts +2 -0
  33. package/dist/chat/resolvers/index.js +15 -0
  34. package/dist/chat/resolvers/index.js.map +1 -0
  35. package/dist/index.d.ts +2 -0
  36. package/dist/index.js +15 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/middlewares/firebaseToken.d.ts +2 -0
  39. package/dist/middlewares/firebaseToken.js +67 -0
  40. package/dist/middlewares/firebaseToken.js.map +1 -0
  41. package/dist/middlewares/index.d.ts +2 -0
  42. package/dist/middlewares/index.js +15 -0
  43. package/dist/middlewares/index.js.map +1 -0
  44. package/dist/middlewares/isAuth.d.ts +2 -0
  45. package/dist/middlewares/isAuth.js +32 -0
  46. package/dist/middlewares/isAuth.js.map +1 -0
  47. package/dist/roadman.d.ts +10 -0
  48. package/dist/roadman.js +19 -0
  49. package/dist/roadman.js.map +1 -0
  50. package/dist/shared/ContextType.d.ts +19 -0
  51. package/dist/shared/ContextType.js +7 -0
  52. package/dist/shared/ContextType.js.map +1 -0
  53. package/dist/shared/pubsub.utils.d.ts +9 -0
  54. package/dist/shared/pubsub.utils.js +19 -0
  55. package/dist/shared/pubsub.utils.js.map +1 -0
  56. package/dist/user/User.methods.d.ts +12 -0
  57. package/dist/user/User.methods.js +101 -0
  58. package/dist/user/User.methods.js.map +1 -0
  59. package/dist/user/User.model.d.ts +43 -0
  60. package/dist/user/User.model.js +143 -0
  61. package/dist/user/User.model.js.map +1 -0
  62. package/dist/user/User.resolver.auth.d.ts +6 -0
  63. package/dist/user/User.resolver.auth.js +82 -0
  64. package/dist/user/User.resolver.auth.js.map +1 -0
  65. package/dist/user/User.resolver.d.ts +9 -0
  66. package/dist/user/User.resolver.js +103 -0
  67. package/dist/user/User.resolver.js.map +1 -0
  68. package/dist/user/User.resolver.public.d.ts +5 -0
  69. package/dist/user/User.resolver.public.js +50 -0
  70. package/dist/user/User.resolver.public.js.map +1 -0
  71. package/dist/user/auth.d.ts +5 -0
  72. package/dist/user/auth.js +24 -0
  73. package/dist/user/auth.js.map +1 -0
  74. package/dist/user/index.d.ts +6 -0
  75. package/dist/user/index.js +19 -0
  76. package/dist/user/index.js.map +1 -0
  77. package/package.json +81 -0
  78. package/register/index.js +1 -0
  79. package/register/transpile-only.js +3 -0
  80. package/register/type-check.js +3 -0
@@ -0,0 +1,17 @@
1
+ import { ChatConvo, ChatConvoType } from '../models/ChatConvo.model';
2
+ import { ResType } from '../../shared/ContextType';
3
+ export declare class ChatConvoResolver {
4
+ onChatConvo(data: {
5
+ convoId: string;
6
+ message: string;
7
+ }): String[];
8
+ chatConvoById(id: string): Promise<ChatConvo | null>;
9
+ chatConvo(owner: string, before: Date, after: Date, limit?: number): Promise<{
10
+ items: ChatConvo[];
11
+ hasNext: boolean;
12
+ params: any;
13
+ }>;
14
+ createChatConvo(args: ChatConvoType): Promise<ResType>;
15
+ startConvo(args: ChatConvoType): Promise<ResType>;
16
+ }
17
+ export default ChatConvoResolver;
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
15
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17
+ 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;
18
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
19
+ };
20
+ var __importStar = (this && this.__importStar) || function (mod) {
21
+ if (mod && mod.__esModule) return mod;
22
+ var result = {};
23
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
24
+ __setModuleDefault(result, mod);
25
+ return result;
26
+ };
27
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
28
+ return function (target, key) { decorator(target, key, paramIndex); }
29
+ };
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.ChatConvoResolver = void 0;
32
+ const type_graphql_1 = require("type-graphql");
33
+ const client_graphql_1 = require("@stoqey/client-graphql");
34
+ const couchset_1 = require("@roadmanjs/couchset");
35
+ const lodash_1 = require("lodash");
36
+ const ChatConvo_model_1 = __importStar(require("../models/ChatConvo.model"));
37
+ const ChatConvo_methods_1 = require("../methods/ChatConvo.methods");
38
+ const logs_1 = require("@roadmanjs/logs");
39
+ const auth_1 = require("@roadmanjs/auth");
40
+ const ContextType_1 = require("../../shared/ContextType");
41
+ const ConvoPagination = (0, couchset_1.getPagination)(ChatConvo_model_1.ChatConvo);
42
+ let ChatConvoResolver = class ChatConvoResolver {
43
+ // Only admins
44
+ onChatConvo(data
45
+ // @Arg('convoId') convoId: string
46
+ ) {
47
+ return [data.message];
48
+ }
49
+ async chatConvoById(id) {
50
+ try {
51
+ const chatConvo = await (0, ChatConvo_methods_1.getChatConvoById)(id);
52
+ if (chatConvo) {
53
+ return chatConvo;
54
+ }
55
+ throw new Error('error getting chatconvo');
56
+ }
57
+ catch (error) {
58
+ (0, logs_1.log)('error getting chat messages', error);
59
+ return null;
60
+ }
61
+ }
62
+ async chatConvo(owner, before, after, limit = 10) {
63
+ const copyParams = (0, lodash_1.pickBy)({
64
+ owner,
65
+ before,
66
+ after,
67
+ limit,
68
+ }, lodash_1.identity);
69
+ try {
70
+ const bucket = couchset_1.connectionOptions.bucketName;
71
+ const sign = before ? '<=' : '>=';
72
+ const time = before || after;
73
+ const query = `
74
+ SELECT *
75
+ FROM \`${bucket}\` convo
76
+ JOIN \`${bucket}\` owner
77
+ ON KEYS convo.owner
78
+ NEST \`${bucket}\` members
79
+ ON KEYS convo.members
80
+ LEFT JOIN \`${bucket}\` lastMessage
81
+ ON KEYS convo.lastMessage
82
+
83
+ WHERE convo._type = "${ChatConvo_model_1.ChatConvoModelName}"
84
+ AND convo.owner = "${owner}"
85
+ AND convo.updatedAt ${sign} "${time.toISOString()}"
86
+ ORDER BY convo.updatedAt DESC
87
+ LIMIT ${limit};
88
+ `;
89
+ const [errorFetching, data = []] = await (0, client_graphql_1.awaitTo)(ChatConvo_model_1.default.customQuery({
90
+ limit,
91
+ query,
92
+ params: copyParams,
93
+ }));
94
+ if (errorFetching) {
95
+ throw errorFetching;
96
+ }
97
+ const [rows = [], options = { hasNext: false, params: copyParams }] = data;
98
+ const dataToSend = rows.map((d) => {
99
+ const { convo, lastMessage, members, owner } = d;
100
+ return ChatConvo_model_1.default.parse(Object.assign(Object.assign({}, convo), { members,
101
+ lastMessage,
102
+ owner }));
103
+ });
104
+ return Object.assign({ items: dataToSend }, options);
105
+ }
106
+ catch (error) {
107
+ (0, logs_1.log)('error getting chat messages', error);
108
+ return { items: [], hasNext: false, params: copyParams };
109
+ }
110
+ }
111
+ async createChatConvo(args) {
112
+ try {
113
+ // If updating
114
+ const { members = [], group = false, owner } = args;
115
+ const [errorCreatingConvo, createdChatConvo = []] = await (0, client_graphql_1.awaitTo)((0, ChatConvo_methods_1.createChatConvoType)({
116
+ members,
117
+ group,
118
+ }));
119
+ if (errorCreatingConvo) {
120
+ throw errorCreatingConvo;
121
+ }
122
+ let convo = createdChatConvo[0];
123
+ if (owner) {
124
+ const selected = createdChatConvo.find((chat) => chat.owner === owner);
125
+ if (selected) {
126
+ convo = selected;
127
+ }
128
+ }
129
+ return { success: true, data: convo };
130
+ }
131
+ catch (err) {
132
+ console.error(err && err.message, err);
133
+ return { success: false, message: err && err.message };
134
+ }
135
+ }
136
+ async startConvo(args) {
137
+ try {
138
+ // If updating
139
+ const { members = [], owner } = args;
140
+ const limit = 1;
141
+ const bucket = couchset_1.connectionOptions.bucketName;
142
+ const queryExisting = `
143
+ SELECT * FROM \`${bucket}\` convo
144
+
145
+ JOIN \`${bucket}\` owner
146
+ ON KEYS convo.owner
147
+ NEST \`${bucket}\` members
148
+ ON KEYS convo.members
149
+ LEFT JOIN \`${bucket}\` lastMessage
150
+ ON KEYS convo.lastMessage
151
+
152
+ WHERE ANY v IN convo.members SATISFIES v = "${members[0]}" END
153
+ AND ANY v IN convo.members SATISFIES v = "${members[1]}" END
154
+ AND convo.owner = "${owner}"
155
+ LIMIT 1;
156
+ `;
157
+ const [errorGettingExisting, existingConvos = []] = await (0, client_graphql_1.awaitTo)(ChatConvo_model_1.default.customQuery({
158
+ query: queryExisting,
159
+ limit,
160
+ params: {
161
+ limit,
162
+ members,
163
+ },
164
+ }));
165
+ if (errorGettingExisting) {
166
+ throw errorGettingExisting;
167
+ }
168
+ const [convos = []] = existingConvos;
169
+ if (!(0, lodash_1.isEmpty)(convos)) {
170
+ const dataToSend = convos.map((d) => {
171
+ const { convo, lastMessage, members, owner } = d;
172
+ return ChatConvo_model_1.default.parse(Object.assign(Object.assign({}, convo), { members,
173
+ lastMessage,
174
+ owner }));
175
+ });
176
+ return { success: true, data: dataToSend[0] };
177
+ }
178
+ else {
179
+ // create a new convo and send it to user
180
+ const [errorCreatingConvo, createdConvo] = await (0, client_graphql_1.awaitTo)((0, ChatConvo_methods_1.createAConvoAndReturnIt)(args));
181
+ if (errorCreatingConvo) {
182
+ throw errorCreatingConvo;
183
+ }
184
+ const createdId = createdConvo && createdConvo.id;
185
+ const chatConvo = await (0, ChatConvo_methods_1.getChatConvoById)(createdId);
186
+ if (chatConvo) {
187
+ return { success: true, data: chatConvo };
188
+ }
189
+ return { success: true, data: createdConvo };
190
+ }
191
+ }
192
+ catch (err) {
193
+ console.error(err && err.message, err);
194
+ return { success: false, message: err && err.message };
195
+ }
196
+ }
197
+ };
198
+ __decorate([
199
+ (0, type_graphql_1.Subscription)(() => [String], {
200
+ topics: ChatConvo_model_1.ChatConvo.name,
201
+ filter: ({ payload, args }) => args.convoId === payload.convoId,
202
+ }),
203
+ __param(0, (0, type_graphql_1.Root)())
204
+ ], ChatConvoResolver.prototype, "onChatConvo", null);
205
+ __decorate([
206
+ (0, type_graphql_1.Query)(() => ChatConvo_model_1.ChatConvo),
207
+ (0, type_graphql_1.UseMiddleware)(auth_1.isAuth),
208
+ __param(0, (0, type_graphql_1.Arg)('id'))
209
+ ], ChatConvoResolver.prototype, "chatConvoById", null);
210
+ __decorate([
211
+ (0, type_graphql_1.Query)(() => ConvoPagination),
212
+ (0, type_graphql_1.UseMiddleware)(auth_1.isAuth),
213
+ __param(0, (0, type_graphql_1.Arg)('owner')),
214
+ __param(1, (0, type_graphql_1.Arg)('before', { nullable: true })),
215
+ __param(2, (0, type_graphql_1.Arg)('after', { nullable: true })),
216
+ __param(3, (0, type_graphql_1.Arg)('limit', { nullable: true }))
217
+ ], ChatConvoResolver.prototype, "chatConvo", null);
218
+ __decorate([
219
+ (0, type_graphql_1.Mutation)(() => ContextType_1.ResType),
220
+ (0, type_graphql_1.UseMiddleware)(auth_1.isAuth),
221
+ __param(0, (0, type_graphql_1.Arg)('args'))
222
+ ], ChatConvoResolver.prototype, "createChatConvo", null);
223
+ __decorate([
224
+ (0, type_graphql_1.Mutation)(() => ContextType_1.ResType),
225
+ (0, type_graphql_1.UseMiddleware)(auth_1.isAuth),
226
+ __param(0, (0, type_graphql_1.Arg)('args'))
227
+ ], ChatConvoResolver.prototype, "startConvo", null);
228
+ ChatConvoResolver = __decorate([
229
+ (0, type_graphql_1.Resolver)()
230
+ ], ChatConvoResolver);
231
+ exports.ChatConvoResolver = ChatConvoResolver;
232
+ exports.default = ChatConvoResolver;
233
+ //# sourceMappingURL=ChatConvo.resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatConvo.resolver.js","sourceRoot":"","sources":["../../../src/chat/resolvers/ChatConvo.resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ContextType, ResType } from '../../shared/ContextType';
2
+ import { ChatMessage, ChatMessageType } from '../models/ChatMessage.model';
3
+ export declare class ChatMessageResolver {
4
+ chatMessage(convoId: string, before: Date, after: Date, limit?: number): Promise<{
5
+ items: ChatMessage[];
6
+ hasNext: boolean;
7
+ params: any;
8
+ }>;
9
+ createChatMessage(ctx: ContextType, args: ChatMessageType): Promise<ResType>;
10
+ }
11
+ export default ChatMessageResolver;
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
15
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17
+ 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;
18
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
19
+ };
20
+ var __importStar = (this && this.__importStar) || function (mod) {
21
+ if (mod && mod.__esModule) return mod;
22
+ var result = {};
23
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
24
+ __setModuleDefault(result, mod);
25
+ return result;
26
+ };
27
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
28
+ return function (target, key) { decorator(target, key, paramIndex); }
29
+ };
30
+ var __importDefault = (this && this.__importDefault) || function (mod) {
31
+ return (mod && mod.__esModule) ? mod : { "default": mod };
32
+ };
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.ChatMessageResolver = void 0;
35
+ const couchset_1 = require("couchset");
36
+ const client_graphql_1 = require("@stoqey/client-graphql");
37
+ const ContextType_1 = require("../../shared/ContextType");
38
+ const identity_1 = __importDefault(require("lodash/identity"));
39
+ const pickBy_1 = __importDefault(require("lodash/pickBy"));
40
+ const logs_1 = require("@roadmanjs/logs");
41
+ const middlewares_1 = require("../../middlewares");
42
+ const ChatMessage_model_1 = __importStar(require("../models/ChatMessage.model"));
43
+ const pubsub_utils_1 = require("../../shared/pubsub.utils");
44
+ const ChatConvo_model_1 = require("../models/ChatConvo.model");
45
+ const couchset_2 = require("@roadmanjs/couchset");
46
+ const ChatPagination = (0, couchset_1.getPagination)(ChatMessage_model_1.ChatMessage);
47
+ let ChatMessageResolver = class ChatMessageResolver {
48
+ async chatMessage(convoId, before, after, limit = 10) {
49
+ const copyParams = (0, pickBy_1.default)({
50
+ convoId,
51
+ before,
52
+ after,
53
+ limit,
54
+ }, identity_1.default);
55
+ try {
56
+ const bucket = couchset_2.connectionOptions.bucketName;
57
+ const sign = before ? '<' : '>';
58
+ const time = before || after;
59
+ const query = `
60
+ SELECT *
61
+ FROM \`${bucket}\` chat
62
+ LET owner = (SELECT o.* FROM \`${bucket}\` AS o USE KEYS chat.owner),
63
+ attachments = (SELECT m.* FROM \`${bucket}\` AS m USE KEYS chat.attachments)
64
+ WHERE chat._type = "${ChatMessage_model_1.ChatMessageModelName}"
65
+ AND chat.convoId = "${convoId}"
66
+ AND chat.createdAt ${sign} "${time.toISOString()}"
67
+ ORDER BY chat.createdAt DESC
68
+ LIMIT ${limit};
69
+ `;
70
+ // const query = `
71
+ // SELECT *
72
+ // FROM \`${bucket}\` chat
73
+ // JOIN \`${bucket}\` owner
74
+ // ON KEYS chat.owner
75
+ // LEFT NEST \`${bucket}\` attachments
76
+ // ON KEYS chat.attachments
77
+ // WHERE chat._type = "${ChatMessageModelName}"
78
+ // AND chat.convoId = "${convoId}"
79
+ // AND chat.updatedAt ${sign} "${time}"
80
+ // LIMIT ${limit};
81
+ // `;
82
+ const [errorFetching, data = []] = await (0, client_graphql_1.awaitTo)(ChatMessage_model_1.default.customQuery({
83
+ limit,
84
+ query,
85
+ params: copyParams,
86
+ }));
87
+ if (errorFetching) {
88
+ throw errorFetching;
89
+ }
90
+ const [rows = [], options = { hasNext: false, params: copyParams }] = data;
91
+ const dataToSend = rows.map((d) => {
92
+ const { chat, attachments, owner } = d;
93
+ return ChatMessage_model_1.default.parse(Object.assign(Object.assign({}, chat), { attachments, owner: owner[0] || null }));
94
+ });
95
+ return Object.assign({ items: dataToSend }, options);
96
+ }
97
+ catch (error) {
98
+ (0, logs_1.log)('error getting chat messages', error);
99
+ return { items: [], hasNext: false, params: copyParams };
100
+ }
101
+ }
102
+ async createChatMessage(ctx, args) {
103
+ try {
104
+ // If updating
105
+ const createdOrUpdate = await (0, couchset_2.createUpdate)(Object.assign({ model: ChatMessage_model_1.default, data: Object.assign({}, args) }, args));
106
+ // Error when creating message
107
+ // update conversation with new lastMessage
108
+ if (createdOrUpdate) {
109
+ const topicId = ChatConvo_model_1.ChatConvo.name;
110
+ const message = createdOrUpdate.id;
111
+ const convoId = createdOrUpdate.convoId;
112
+ await (0, pubsub_utils_1.publishMessageToTopic)(ctx, topicId, { convoId, message });
113
+ return { success: true, data: createdOrUpdate };
114
+ }
115
+ throw new Error('error creating chat message method ');
116
+ }
117
+ catch (err) {
118
+ console.error(err && err.message, err);
119
+ return { success: false, message: err && err.message };
120
+ }
121
+ }
122
+ };
123
+ __decorate([
124
+ (0, couchset_1.Query)(() => ChatPagination),
125
+ (0, couchset_1.UseMiddleware)(middlewares_1.isAuth),
126
+ __param(0, (0, couchset_1.Arg)('convoId')),
127
+ __param(1, (0, couchset_1.Arg)('before', { nullable: true })),
128
+ __param(2, (0, couchset_1.Arg)('after', { nullable: true })),
129
+ __param(3, (0, couchset_1.Arg)('limit', { nullable: true }))
130
+ ], ChatMessageResolver.prototype, "chatMessage", null);
131
+ __decorate([
132
+ (0, couchset_1.Mutation)(() => ContextType_1.ResType),
133
+ (0, couchset_1.UseMiddleware)(middlewares_1.isAuth),
134
+ __param(0, (0, couchset_1.Ctx)()),
135
+ __param(1, (0, couchset_1.Arg)('args'))
136
+ ], ChatMessageResolver.prototype, "createChatMessage", null);
137
+ ChatMessageResolver = __decorate([
138
+ (0, couchset_1.Resolver)()
139
+ ], ChatMessageResolver);
140
+ exports.ChatMessageResolver = ChatMessageResolver;
141
+ exports.default = ChatMessageResolver;
142
+ //# sourceMappingURL=ChatMessage.resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatMessage.resolver.js","sourceRoot":"","sources":["../../../src/chat/resolvers/ChatMessage.resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './ChatConvo.resolver';
2
+ export * from './ChatMessage.resolver';
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./ChatConvo.resolver"), exports);
14
+ __exportStar(require("./ChatMessage.resolver"), exports);
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chat/resolvers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uDAAqC;AACrC,yDAAuC"}
@@ -0,0 +1,2 @@
1
+ export * from './chat';
2
+ export * from './roadman';
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./chat"), exports);
14
+ __exportStar(require("./roadman"), exports);
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuB;AACvB,4CAA0B"}
@@ -0,0 +1,2 @@
1
+ import { MiddlewareFn } from 'couchset';
2
+ export declare const FirebaseTokenVerify: MiddlewareFn;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.FirebaseTokenVerify = void 0;
26
+ const firebase = __importStar(require("firebase-admin"));
27
+ const firebase_admin_1 = require("@roadmanjs/firebase-admin");
28
+ const get_1 = __importDefault(require("lodash/get"));
29
+ const isEmpty_1 = __importDefault(require("lodash/isEmpty"));
30
+ const logs_1 = require("@roadmanjs/logs");
31
+ const FirebaseTokenVerify = async ({ args }, next) => {
32
+ await (0, firebase_admin_1.configureFirebase)();
33
+ const token = (args && args.firebaseToken) || (0, get_1.default)(args, 'user.firebaseToken', ''); // args.user.firebaseToken;
34
+ if ((0, isEmpty_1.default)(token)) {
35
+ throw new Error('Token No authorization');
36
+ }
37
+ const verifyToken = (idToken) => {
38
+ // idToken comes from the client app
39
+ return new Promise((res) => {
40
+ firebase
41
+ .auth()
42
+ .verifyIdToken(idToken)
43
+ .then((decodedToken) => {
44
+ const uid = decodedToken.uid;
45
+ res(uid);
46
+ })
47
+ .catch((error) => {
48
+ // Handle error
49
+ (0, logs_1.log)(`Error verifying token ${error && error.token}`);
50
+ res(null);
51
+ });
52
+ });
53
+ };
54
+ try {
55
+ const verified = await verifyToken(token);
56
+ if (!verified) {
57
+ throw new Error('No authorization, please try again');
58
+ }
59
+ }
60
+ catch (err) {
61
+ console.log(err);
62
+ return null;
63
+ }
64
+ return next();
65
+ };
66
+ exports.FirebaseTokenVerify = FirebaseTokenVerify;
67
+ //# sourceMappingURL=firebaseToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firebaseToken.js","sourceRoot":"","sources":["../../src/middlewares/firebaseToken.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA2C;AAG3C,8DAA4D;AAC5D,qDAA6B;AAC7B,6DAAqC;AACrC,0CAAoC;AAE7B,MAAM,mBAAmB,GAAiB,KAAK,EAAE,EAAC,IAAI,EAAM,EAAE,IAAI,EAAE,EAAE;IACzE,MAAM,IAAA,kCAAiB,GAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,IAAA,aAAG,EAAC,IAAI,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,2BAA2B;IAE9G,IAAI,IAAA,iBAAO,EAAC,KAAK,CAAC,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC7C;IAED,MAAM,WAAW,GAAG,CAAC,OAAe,EAA0B,EAAE;QAC5D,oCAAoC;QACpC,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACvB,QAAQ;iBACH,IAAI,EAAE;iBACN,aAAa,CAAC,OAAO,CAAC;iBACtB,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;gBACnB,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;gBAC7B,GAAG,CAAC,GAAG,CAAC,CAAC;YACb,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,eAAe;gBACf,IAAA,UAAG,EAAC,yBAAyB,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC,IAAI,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,IAAI;QACA,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,CAAC,QAAQ,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACzD;KACJ;IAAC,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;KACf;IACD,OAAO,IAAI,EAAE,CAAC;AAClB,CAAC,CAAC;AArCW,QAAA,mBAAmB,uBAqC9B"}
@@ -0,0 +1,2 @@
1
+ export * from './firebaseToken';
2
+ export * from './isAuth';
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./firebaseToken"), exports);
14
+ __exportStar(require("./isAuth"), exports);
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middlewares/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAAgC;AAChC,2CAAyB"}
@@ -0,0 +1,2 @@
1
+ import { ContextType, MiddlewareFn } from 'couchset';
2
+ export declare const isAuth: MiddlewareFn<ContextType>;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAuth = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const jsonwebtoken_1 = require("jsonwebtoken");
6
+ const isAuth = ({ context }, next) => {
7
+ const authorization = (0, lodash_1.get)(context, 'req.headers.authorization', '');
8
+ if ((0, lodash_1.isEmpty)(authorization)) {
9
+ throw new Error('Not Authenticated');
10
+ }
11
+ try {
12
+ const token = authorization.split(' ')[1];
13
+ const verified = (0, jsonwebtoken_1.verify)(token, process.env.ACCESS_TOKEN_SECRET);
14
+ // verbose('user is auth', verified);
15
+ /**
16
+ {
17
+ userId: 'xxxxxxx04453',
18
+ iat: 1616303858,
19
+ exp: 1616307458
20
+ }
21
+ */
22
+ context.payload = verified;
23
+ // TODO set user object to request
24
+ }
25
+ catch (err) {
26
+ console.log('not authenticated');
27
+ throw new Error('not authenticated');
28
+ }
29
+ return next();
30
+ };
31
+ exports.isAuth = isAuth;
32
+ //# sourceMappingURL=isAuth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isAuth.js","sourceRoot":"","sources":["../../src/middlewares/isAuth.ts"],"names":[],"mappings":";;;AACA,mCAA4C;AAE5C,+CAAoC;AAE7B,MAAM,MAAM,GAA8B,CAAC,EAAC,OAAO,EAAC,EAAE,IAAI,EAAE,EAAE;IACjE,MAAM,aAAa,GAAG,IAAA,YAAI,EAAC,OAAO,EAAE,2BAA2B,EAAE,EAAE,CAAC,CAAC;IAErE,IAAI,IAAA,gBAAO,EAAC,aAAa,CAAC,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;KACxC;IAED,IAAI;QACA,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAA,qBAAM,EAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAoB,CAAC,CAAC;QAEjE,qCAAqC;QACrC;;;;;;OAMD;QACC,OAAO,CAAC,OAAO,GAAG,QAAe,CAAC;QAElC,kCAAkC;KACrC;IAAC,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;KACxC;IAED,OAAO,IAAI,EAAE,CAAC;AAClB,CAAC,CAAC;AA5BW,QAAA,MAAM,UA4BjB"}
@@ -0,0 +1,10 @@
1
+ import 'dotenv/config';
2
+ import { ChatConvoResolver, ChatMessageResolver } from './chat/resolvers';
3
+ import { RoadMan } from '@roadmanjs/core';
4
+ /**
5
+ * A roadman for chat and groups, using UserType from 'auth'
6
+ * @param RoadmanBuild
7
+ */
8
+ export declare const chatRoadman: RoadMan;
9
+ export declare const getChatResolvers: () => (typeof ChatConvoResolver | typeof ChatMessageResolver)[];
10
+ export default chatRoadman;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getChatResolvers = exports.chatRoadman = void 0;
4
+ require("dotenv/config");
5
+ const resolvers_1 = require("./chat/resolvers");
6
+ const firebase_admin_1 = require("@roadmanjs/firebase-admin");
7
+ /**
8
+ * A roadman for chat and groups, using UserType from 'auth'
9
+ * @param RoadmanBuild
10
+ */
11
+ const chatRoadman = async (args) => {
12
+ await (0, firebase_admin_1.configureFirebase)();
13
+ return args;
14
+ };
15
+ exports.chatRoadman = chatRoadman;
16
+ const getChatResolvers = () => [resolvers_1.ChatConvoResolver, resolvers_1.ChatMessageResolver];
17
+ exports.getChatResolvers = getChatResolvers;
18
+ exports.default = exports.chatRoadman;
19
+ //# sourceMappingURL=roadman.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roadman.js","sourceRoot":"","sources":["../src/roadman.ts"],"names":[],"mappings":";;;AAAA,yBAAuB;AAEvB,gDAAwE;AAGxE,8DAA4D;AAE5D;;;GAGG;AACI,MAAM,WAAW,GAAY,KAAK,EAAE,IAAkB,EAAyB,EAAE;IACpF,MAAM,IAAA,kCAAiB,GAAE,CAAC;IAC1B,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAHW,QAAA,WAAW,eAGtB;AAEK,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,CAAC,6BAAiB,EAAE,+BAAmB,CAAC,CAAC;AAAlE,QAAA,gBAAgB,oBAAkD;AAE/E,kBAAe,mBAAW,CAAC"}