@nlabs/reaktor 0.10.0 → 0.10.1

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 (314) hide show
  1. package/.env +1 -0
  2. package/.env.example +1 -0
  3. package/DATABASE_I18N_GUIDE.md +434 -0
  4. package/TEST_UTILITIES_GUIDE.md +360 -0
  5. package/coverage/index.html +46 -76
  6. package/index.js +1 -1
  7. package/jest.config.js +17 -0
  8. package/jest.setup.js +36 -0
  9. package/lex.config.cjs +2 -2
  10. package/lib/actions/apps.js +17 -239
  11. package/lib/actions/connections.js +6 -89
  12. package/lib/actions/content.js +17 -0
  13. package/lib/actions/conversations.js +19 -336
  14. package/lib/actions/dynamodb.js +2 -150
  15. package/lib/actions/email.js +2 -152
  16. package/lib/actions/files.js +5 -283
  17. package/lib/actions/groups.js +19 -259
  18. package/lib/actions/images.js +31 -700
  19. package/lib/actions/index.js +2 -66
  20. package/lib/actions/ios.js +9 -162
  21. package/lib/actions/locations.js +7 -122
  22. package/lib/actions/messages.js +21 -196
  23. package/lib/actions/notifications.js +2 -59
  24. package/lib/actions/payments.js +11 -464
  25. package/lib/actions/posts.js +75 -527
  26. package/lib/actions/profiles.js +8 -0
  27. package/lib/actions/reactions.js +25 -312
  28. package/lib/actions/s3.js +2 -133
  29. package/lib/actions/search.js +5 -90
  30. package/lib/actions/sms.js +2 -108
  31. package/lib/actions/statistics.js +6 -60
  32. package/lib/actions/subscriptions.js +12 -0
  33. package/lib/actions/tags.js +19 -287
  34. package/lib/actions/users.js +64 -764
  35. package/lib/actions/websockets.js +14 -158
  36. package/lib/adapters/arangoAdapter.js +2 -46
  37. package/lib/adapters/contentAdapter.js +2 -0
  38. package/lib/adapters/fileAdapter.js +2 -76
  39. package/lib/adapters/imageAdapter.js +2 -40
  40. package/lib/adapters/messageAdapter.js +2 -49
  41. package/lib/adapters/postAdapter.js +2 -70
  42. package/lib/adapters/reaktorAdapter.js +2 -44
  43. package/lib/adapters/tagAdapter.js +2 -50
  44. package/lib/adapters/userAdapter.js +2 -115
  45. package/lib/config.js +2 -125
  46. package/lib/handlers/graphqlHandler.js +2 -0
  47. package/lib/index.js +2 -66
  48. package/lib/lambdas/actions/websockets.js +14 -116
  49. package/lib/lambdas/authorizer.js +2 -67
  50. package/lib/lambdas/connection.js +2 -91
  51. package/lib/lambdas/utils/message.js +2 -42
  52. package/lib/lambdas/utils/websocket.js +2 -105
  53. package/lib/mocks/conversation.js +2 -35
  54. package/lib/mocks/file.js +2 -38
  55. package/lib/mocks/group.js +2 -47
  56. package/lib/mocks/image.js +2 -44
  57. package/lib/mocks/post.js +2 -55
  58. package/lib/mocks/tag.js +2 -37
  59. package/lib/mocks/user.js +2 -88
  60. package/lib/mutations/index.js +2 -26
  61. package/lib/mutations/locations.integration.js +2 -0
  62. package/lib/mutations/locations.js +2 -44
  63. package/lib/mutations/messages.integration.js +2 -0
  64. package/lib/mutations/messages.js +2 -86
  65. package/lib/mutations/posts.integration.js +2 -0
  66. package/lib/mutations/posts.js +2 -53
  67. package/lib/mutations/profiles.integration.js +2 -0
  68. package/lib/mutations/profiles.js +2 -0
  69. package/lib/mutations/reactions.integration.js +2 -0
  70. package/lib/mutations/reactions.js +2 -51
  71. package/lib/mutations/statistics.integration.js +2 -0
  72. package/lib/mutations/statistics.js +2 -39
  73. package/lib/mutations/subscriptions.integration.js +2 -0
  74. package/lib/mutations/subscriptions.js +2 -56
  75. package/lib/mutations/tags.integration.js +2 -0
  76. package/lib/mutations/tags.js +2 -120
  77. package/lib/mutations/users.integration.js +2 -0
  78. package/lib/mutations/users.js +2 -116
  79. package/lib/objectTypes/app.js +2 -173
  80. package/lib/objectTypes/bankAccount.js +2 -76
  81. package/lib/objectTypes/connection.js +2 -48
  82. package/lib/objectTypes/conversation.js +2 -77
  83. package/lib/objectTypes/creditCard.js +2 -86
  84. package/lib/objectTypes/document.js +2 -46
  85. package/lib/objectTypes/error.js +2 -46
  86. package/lib/objectTypes/external.js +2 -74
  87. package/lib/objectTypes/file.js +2 -100
  88. package/lib/objectTypes/filter.js +2 -43
  89. package/lib/objectTypes/group.js +2 -123
  90. package/lib/objectTypes/iapSubscription.js +2 -40
  91. package/lib/objectTypes/image.js +2 -129
  92. package/lib/objectTypes/index.js +2 -68
  93. package/lib/objectTypes/location.js +2 -109
  94. package/lib/objectTypes/message.js +2 -96
  95. package/lib/objectTypes/passcode.js +2 -42
  96. package/lib/objectTypes/plan.js +2 -95
  97. package/lib/objectTypes/post.js +2 -125
  98. package/lib/objectTypes/profile.js +2 -0
  99. package/lib/objectTypes/reaction.js +2 -61
  100. package/lib/objectTypes/relation.js +2 -49
  101. package/lib/objectTypes/search.js +2 -72
  102. package/lib/objectTypes/statistics.js +2 -39
  103. package/lib/objectTypes/subscription.js +2 -117
  104. package/lib/objectTypes/tag.js +2 -65
  105. package/lib/objectTypes/user.js +2 -144
  106. package/lib/queries/index.js +2 -33
  107. package/lib/queries/locations.integration.js +2 -0
  108. package/lib/queries/locations.js +2 -45
  109. package/lib/queries/messages.integration.js +2 -0
  110. package/lib/queries/messages.js +2 -52
  111. package/lib/queries/posts.integration.js +2 -0
  112. package/lib/queries/posts.js +2 -154
  113. package/lib/queries/reactions.integration.js +2 -0
  114. package/lib/queries/reactions.js +2 -56
  115. package/lib/queries/statistics.js +2 -39
  116. package/lib/queries/subscriptions.js +2 -44
  117. package/lib/queries/tags.integration.js +2 -0
  118. package/lib/queries/tags.js +2 -75
  119. package/lib/queries/users.integration.js +2 -0
  120. package/lib/queries/users.js +2 -64
  121. package/lib/templates/email/layout.js +3 -25
  122. package/lib/templates/email/passwordForgot.js +3 -25
  123. package/lib/templates/email/passwordRecovery.js +3 -25
  124. package/lib/templates/email/verifyEmail.js +3 -25
  125. package/lib/templates/email/welcome.js +3 -25
  126. package/lib/templates/sms/passwordForgot.js +2 -24
  127. package/lib/templates/sms/passwordRecovery.js +2 -24
  128. package/lib/templates/sms/verifyEmail.js +2 -24
  129. package/lib/templates/sms/verifyPhone.js +2 -24
  130. package/lib/templates/sms/welcome.js +2 -24
  131. package/lib/types/apps.types.js +2 -32
  132. package/lib/types/arangodb.types.js +1 -16
  133. package/lib/types/auth.types.js +1 -16
  134. package/lib/types/connections.types.js +1 -16
  135. package/lib/types/content.types.js +1 -0
  136. package/lib/types/conversations.types.js +1 -16
  137. package/lib/types/email.types.js +1 -16
  138. package/lib/types/error.types.js +2 -44
  139. package/lib/types/files.types.js +1 -16
  140. package/lib/types/google.types.js +1 -16
  141. package/lib/types/groups.types.js +1 -16
  142. package/lib/types/images.types.js +1 -16
  143. package/lib/types/index.js +2 -60
  144. package/lib/types/locations.types.js +1 -16
  145. package/lib/types/messages.types.js +1 -16
  146. package/lib/types/notifications.types.js +1 -16
  147. package/lib/types/payments.types.js +1 -16
  148. package/lib/types/posts.types.js +1 -16
  149. package/lib/types/profiles.types.js +1 -0
  150. package/lib/types/statistics.types.js +1 -16
  151. package/lib/types/tags.types.js +1 -16
  152. package/lib/types/users.types.js +1 -16
  153. package/lib/types/websockets.types.js +1 -16
  154. package/lib/utils/adapterUtils.js +2 -45
  155. package/lib/utils/analyticsUtils.js +2 -72
  156. package/lib/utils/arangodbUtils.js +5 -163
  157. package/lib/utils/authUtils.js +2 -0
  158. package/lib/utils/contextUtils.js +2 -0
  159. package/lib/utils/dbI18n.example.js +6 -0
  160. package/lib/utils/dbI18n.js +2 -0
  161. package/lib/utils/googleTranslate.js +2 -0
  162. package/lib/utils/graphqlUtils.js +2 -0
  163. package/lib/utils/index.js +2 -30
  164. package/lib/utils/languageDetection.js +2 -0
  165. package/lib/utils/localeUtils.example.js +2 -0
  166. package/lib/utils/localeUtils.js +2 -0
  167. package/lib/utils/middlewareUtils.js +2 -0
  168. package/lib/utils/sessionUtils.js +2 -0
  169. package/lib/utils/stripeUtils.js +2 -43
  170. package/lib/utils/templateUtils.js +2 -0
  171. package/lib/utils/testUtils.js +2 -0
  172. package/lib/utils/translationQueue.example.js +2 -0
  173. package/lib/utils/translationQueue.js +2 -0
  174. package/package.json +27 -24
  175. package/.prettierrc.js +0 -4
  176. package/lib/actions/apps.d.ts +0 -25
  177. package/lib/actions/connections.d.ts +0 -4
  178. package/lib/actions/conversations.d.ts +0 -14
  179. package/lib/actions/dynamodb.d.ts +0 -8
  180. package/lib/actions/email.d.ts +0 -5
  181. package/lib/actions/files.d.ts +0 -19
  182. package/lib/actions/groups.d.ts +0 -14
  183. package/lib/actions/images.d.ts +0 -26
  184. package/lib/actions/index.d.ts +0 -23
  185. package/lib/actions/ios.d.ts +0 -7
  186. package/lib/actions/locations.d.ts +0 -6
  187. package/lib/actions/messages.d.ts +0 -14
  188. package/lib/actions/notifications.d.ts +0 -5
  189. package/lib/actions/payments.d.ts +0 -10
  190. package/lib/actions/personas.d.ts +0 -3
  191. package/lib/actions/personas.js +0 -110
  192. package/lib/actions/posts.d.ts +0 -22
  193. package/lib/actions/reactions.d.ts +0 -30
  194. package/lib/actions/s3.d.ts +0 -7
  195. package/lib/actions/search.d.ts +0 -3
  196. package/lib/actions/sms.d.ts +0 -9
  197. package/lib/actions/statistics.d.ts +0 -3
  198. package/lib/actions/subscription.d.ts +0 -7
  199. package/lib/actions/subscription.js +0 -208
  200. package/lib/actions/tags.d.ts +0 -34
  201. package/lib/actions/users.d.ts +0 -72
  202. package/lib/actions/websockets.d.ts +0 -20
  203. package/lib/adapters/arangoAdapter.d.ts +0 -2
  204. package/lib/adapters/fileAdapter.d.ts +0 -3
  205. package/lib/adapters/imageAdapter.d.ts +0 -2
  206. package/lib/adapters/messageAdapter.d.ts +0 -2
  207. package/lib/adapters/postAdapter.d.ts +0 -2
  208. package/lib/adapters/reaktorAdapter.d.ts +0 -6
  209. package/lib/adapters/tagAdapter.d.ts +0 -2
  210. package/lib/adapters/userAdapter.d.ts +0 -2
  211. package/lib/config.d.ts +0 -20
  212. package/lib/index.d.ts +0 -12
  213. package/lib/lambdas/actions/websockets.d.ts +0 -7
  214. package/lib/lambdas/authorizer.d.ts +0 -20
  215. package/lib/lambdas/connection.d.ts +0 -12
  216. package/lib/lambdas/utils/message.d.ts +0 -1
  217. package/lib/lambdas/utils/websocket.d.ts +0 -7
  218. package/lib/mocks/conversation.d.ts +0 -8
  219. package/lib/mocks/file.d.ts +0 -11
  220. package/lib/mocks/group.d.ts +0 -17
  221. package/lib/mocks/image.d.ts +0 -3
  222. package/lib/mocks/post.d.ts +0 -38
  223. package/lib/mocks/tag.d.ts +0 -2
  224. package/lib/mocks/user.d.ts +0 -4
  225. package/lib/mutations/index.d.ts +0 -3
  226. package/lib/mutations/locations.d.ts +0 -2
  227. package/lib/mutations/messages.d.ts +0 -2
  228. package/lib/mutations/personas.d.ts +0 -2
  229. package/lib/mutations/personas.js +0 -100
  230. package/lib/mutations/posts.d.ts +0 -2
  231. package/lib/mutations/reactions.d.ts +0 -2
  232. package/lib/mutations/statistics.d.ts +0 -2
  233. package/lib/mutations/subscriptions.d.ts +0 -2
  234. package/lib/mutations/tags.d.ts +0 -2
  235. package/lib/mutations/users.d.ts +0 -1
  236. package/lib/objectTypes/app.d.ts +0 -3
  237. package/lib/objectTypes/bankAccount.d.ts +0 -1
  238. package/lib/objectTypes/connection.d.ts +0 -1
  239. package/lib/objectTypes/conversation.d.ts +0 -2
  240. package/lib/objectTypes/creditCard.d.ts +0 -1
  241. package/lib/objectTypes/document.d.ts +0 -1
  242. package/lib/objectTypes/error.d.ts +0 -1
  243. package/lib/objectTypes/external.d.ts +0 -1
  244. package/lib/objectTypes/file.d.ts +0 -2
  245. package/lib/objectTypes/filter.d.ts +0 -1
  246. package/lib/objectTypes/group.d.ts +0 -3
  247. package/lib/objectTypes/iapSubscription.d.ts +0 -1
  248. package/lib/objectTypes/image.d.ts +0 -2
  249. package/lib/objectTypes/index.d.ts +0 -24
  250. package/lib/objectTypes/location.d.ts +0 -2
  251. package/lib/objectTypes/message.d.ts +0 -2
  252. package/lib/objectTypes/passcode.d.ts +0 -1
  253. package/lib/objectTypes/persona.d.ts +0 -3
  254. package/lib/objectTypes/persona.js +0 -87
  255. package/lib/objectTypes/plan.d.ts +0 -2
  256. package/lib/objectTypes/post.d.ts +0 -2
  257. package/lib/objectTypes/reaction.d.ts +0 -2
  258. package/lib/objectTypes/relation.d.ts +0 -1
  259. package/lib/objectTypes/search.d.ts +0 -1
  260. package/lib/objectTypes/statistics.d.ts +0 -1
  261. package/lib/objectTypes/subscription.d.ts +0 -2
  262. package/lib/objectTypes/tag.d.ts +0 -2
  263. package/lib/objectTypes/user.d.ts +0 -4
  264. package/lib/queries/index.d.ts +0 -3
  265. package/lib/queries/locations.d.ts +0 -2
  266. package/lib/queries/messages.d.ts +0 -2
  267. package/lib/queries/posts.d.ts +0 -2
  268. package/lib/queries/reactions.d.ts +0 -2
  269. package/lib/queries/statistics.d.ts +0 -2
  270. package/lib/queries/subscriptions.d.ts +0 -2
  271. package/lib/queries/tags.d.ts +0 -2
  272. package/lib/queries/users.d.ts +0 -1
  273. package/lib/templates/email/layout.d.ts +0 -2
  274. package/lib/templates/email/passwordForgot.d.ts +0 -2
  275. package/lib/templates/email/passwordRecovery.d.ts +0 -2
  276. package/lib/templates/email/verifyEmail.d.ts +0 -2
  277. package/lib/templates/email/welcome.d.ts +0 -2
  278. package/lib/templates/sms/passwordForgot.d.ts +0 -2
  279. package/lib/templates/sms/passwordRecovery.d.ts +0 -2
  280. package/lib/templates/sms/verifyEmail.d.ts +0 -2
  281. package/lib/templates/sms/verifyPhone.d.ts +0 -2
  282. package/lib/templates/sms/welcome.d.ts +0 -2
  283. package/lib/types/apps.types.d.ts +0 -46
  284. package/lib/types/arangodb.types.d.ts +0 -34
  285. package/lib/types/auth.types.d.ts +0 -9
  286. package/lib/types/connections.types.d.ts +0 -5
  287. package/lib/types/conversations.types.d.ts +0 -27
  288. package/lib/types/email.types.d.ts +0 -13
  289. package/lib/types/error.types.d.ts +0 -20
  290. package/lib/types/files.types.d.ts +0 -23
  291. package/lib/types/google.types.d.ts +0 -29
  292. package/lib/types/groups.types.d.ts +0 -18
  293. package/lib/types/images.types.d.ts +0 -52
  294. package/lib/types/index.d.ts +0 -20
  295. package/lib/types/locations.types.d.ts +0 -18
  296. package/lib/types/messages.types.d.ts +0 -16
  297. package/lib/types/notifications.types.d.ts +0 -19
  298. package/lib/types/payments.types.d.ts +0 -109
  299. package/lib/types/personas.types.d.ts +0 -32
  300. package/lib/types/personas.types.js +0 -16
  301. package/lib/types/posts.types.d.ts +0 -28
  302. package/lib/types/statistics.types.d.ts +0 -3
  303. package/lib/types/tags.types.d.ts +0 -15
  304. package/lib/types/users.types.d.ts +0 -79
  305. package/lib/types/websockets.types.d.ts +0 -18
  306. package/lib/utils/adapterUtils.d.ts +0 -1
  307. package/lib/utils/analyticsUtils.d.ts +0 -21
  308. package/lib/utils/arangodbUtils.d.ts +0 -66
  309. package/lib/utils/auth.d.ts +0 -21
  310. package/lib/utils/auth.js +0 -57
  311. package/lib/utils/index.d.ts +0 -5
  312. package/lib/utils/session.d.ts +0 -18
  313. package/lib/utils/session.js +0 -60
  314. package/lib/utils/stripeUtils.d.ts +0 -3
@@ -1,68 +1,10 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
- var messages_exports = {};
29
- __export(messages_exports, {
30
- addMessage: () => addMessage,
31
- cleanMessages: () => cleanMessages,
32
- deleteMessage: () => deleteMessage,
33
- getMessage: () => getMessage,
34
- getMessages: () => getMessages,
35
- saveMessage: () => saveMessage,
36
- unsaveMessage: () => unsaveMessage,
37
- updateMessage: () => updateMessage
38
- });
39
- module.exports = __toCommonJS(messages_exports);
40
- var import_utils = require("@nlabs/utils");
41
- var import_arangojs = require("arangojs");
42
- var import_cloneDeep = __toESM(require("lodash/cloneDeep"), 1);
43
- var import_conversations = require("./conversations");
44
- var import_messageAdapter = require("../adapters/messageAdapter");
45
- var import_analyticsUtils = require("../utils/analyticsUtils");
46
- var import_arangodbUtils = require("../utils/arangodbUtils");
47
- const eventCategory = "messages";
48
- const getMessages = (context, conversationId, { from, to }) => {
49
- const { database, session: { userId: sessionId } } = context;
50
- const formatConversationId = (0, import_utils.parseId)(conversationId);
51
- const sessionDocId = `users/${sessionId}`;
52
- const conversationDocId = `conversations/${formatConversationId}`;
53
- const conversationQry = import_arangojs.aql`FOR e IN hasConversation
54
- FILTER e._from == ${sessionDocId} && e._to == ${conversationDocId}
1
+ import{createHash as N,parseId as y,parseString as M}from"@nlabs/utils";import{aql as p}from"arangojs";import h from"lodash/cloneDeep";import{getConversation as R}from"./conversations";import{parseMessage as l}from"../adapters/messageAdapter";import{logError as f}from"../utils/analyticsUtils";import{getLimit as v,useDb as c}from"../utils/arangodbUtils";const A="messages",_=(s,o,{from:t,to:n})=>{const{databaseName:a,session:{userId:r}}=s,m=y(o),g=`users/${r}`,i=`conversations/${m}`,e=p`FOR e IN hasConversation
2
+ FILTER e._from == ${g} && e._to == ${i}
55
3
  LIMIT 1
56
- RETURN e`;
57
- return database.query(conversationQry).then((cursor) => cursor.all()).then((conversations) => {
58
- if (!conversations.length) {
59
- return [];
60
- }
61
- const limit = (0, import_arangodbUtils.getLimit)(from, to);
62
- const aqlQry = `FOR m IN messages
63
- FILTER m.conversationId == "${formatConversationId}"
4
+ RETURN e`;return c(a).query(e).then(d=>d.all()).then(d=>{if(!d.length)return[];const T=v(t,n),u=`FOR m IN messages
5
+ FILTER m.conversationId == "${m}"
64
6
  SORT m.added DESC
65
- ${limit.aql}
7
+ ${T.aql}
66
8
  SORT m.added ASC
67
9
  LET user = FIRST(
68
10
  FOR u IN users
@@ -70,139 +12,22 @@ const getMessages = (context, conversationId, { from, to }) => {
70
12
  LIMIT 1
71
13
  RETURN u
72
14
  )
73
- RETURN MERGE(m, {user: user})`;
74
- return database.query(aqlQry).then((cursor) => cursor.all()).catch((error) => {
75
- throw error;
76
- });
77
- });
78
- };
79
- const updateMessage = (context, message) => {
80
- const { database, session: { userId: sessionId } } = context;
81
- const {
82
- conversationId,
83
- files,
84
- images,
85
- messageId = (0, import_utils.createHash)(`message-${sessionId}`)
86
- } = message;
87
- const formatConversationId = (0, import_utils.parseId)(conversationId);
88
- if (formatConversationId === "") {
89
- throw new Error("required_conversationId");
90
- }
91
- const now = Date.now();
92
- const update = {
93
- content: (0, import_utils.parseString)(message.content, 640),
94
- files: files || [],
95
- images: images || [],
96
- modified: now
97
- };
98
- const formatMsgId = (0, import_utils.parseId)(messageId);
99
- const insert = {
100
- ...(0, import_cloneDeep.default)(update),
101
- _key: formatMsgId,
102
- added: now,
103
- conversationId: formatConversationId,
104
- userId: sessionId
105
- };
106
- const aqlQry = import_arangojs.aql`UPSERT {_key: ${formatMsgId}, conversationId: ${formatConversationId}, userId: ${sessionId}}
107
- INSERT ${insert}
108
- UPDATE ${update} IN messages
109
- RETURN NEW`;
110
- return database.query(aqlQry).then((cursor) => cursor.next()).catch((error) => {
111
- throw error;
112
- });
113
- };
114
- const addMessage = (context, message) => {
115
- const { database } = context;
116
- const newMessage = (0, import_messageAdapter.parseMessage)(message);
117
- const aqlQry = import_arangojs.aql`INSERT ${newMessage} IN messages RETURN NEW`;
118
- return database.query(aqlQry).then((cursor) => cursor.next()).catch((error) => (0, import_analyticsUtils.logError)({
119
- action: "addMessage",
120
- category: eventCategory,
121
- label: "addMessage"
122
- }, error, context));
123
- };
124
- const saveMessage = (context, messageId, conversationId) => {
125
- const { database, session: { userId: sessionId } } = context;
126
- const formatId = (0, import_utils.parseId)(messageId);
127
- return (0, import_conversations.getConversation)(context, conversationId).then((conversation) => {
128
- const { _key: conversationKey } = conversation;
129
- const aqlQry = import_arangojs.aql`FOR m IN messages
130
- FILTER m._key == ${formatId} && m.to == ${conversationKey}
131
- UPDATE m WITH {saved: APPEND(m.saved, ${sessionId}, true)} IN messages
132
- RETURN NEW`;
133
- return database.query(aqlQry).then((cursor) => cursor.next()).then((message) => {
134
- if (message) {
135
- }
136
- return message;
137
- }).catch((error) => {
138
- throw error;
139
- });
140
- });
141
- };
142
- const unsaveMessage = (context, messageId, conversationId) => {
143
- const { database, session: { userId: sessionId } } = context;
144
- const formatId = (0, import_utils.parseId)(messageId);
145
- return (0, import_conversations.getConversation)(context, conversationId).then((conversation) => {
146
- const { _key: conversationKey } = conversation;
147
- const aqlQry = import_arangojs.aql`FOR m IN messages
148
- FILTER m._key == ${formatId} && m.to == ${conversationKey}
149
- UPDATE m WITH {saved: REMOVE_VALUE(m.saved, ${sessionId})} IN messages
150
- RETURN NEW`;
151
- return database.query(aqlQry).then((cursor) => cursor.next()).then((message) => {
152
- if (message) {
153
- }
154
- return message;
155
- }).catch((error) => {
156
- throw error;
157
- });
158
- });
159
- };
160
- const deleteMessage = (context, messageId, conversationId) => {
161
- const { database, session: { userId: sessionId } } = context;
162
- const formatId = (0, import_utils.parseId)(messageId);
163
- return (0, import_conversations.getConversation)(context, conversationId).then((conversation) => {
164
- const { _key: conversationKey } = conversation;
165
- const aqlQry = import_arangojs.aql`FOR m IN messages
166
- FILTER m._key == ${formatId} && m.to == ${conversationKey} && m.from == ${sessionId}
15
+ RETURN MERGE(m, {user: user})`;return c(a).query(u).then(I=>I.all()).catch(I=>{throw I})})},O=(s,o)=>{const{databaseName:t,session:{userId:n}}=s,{conversationId:a,files:r,images:m,messageId:g=N(`message-${n}`)}=o,i=y(a);if(i==="")throw new Error("required_conversationId");const e=Date.now(),d={content:M(o.content,640),files:r||[],images:m||[],modified:e},T=y(g),u={...h(d),_key:T,added:e,conversationId:i,userId:n},I=p`UPSERT {_key: ${T}, conversationId: ${i}, userId: ${n}}
16
+ INSERT ${u}
17
+ UPDATE ${d} IN messages
18
+ RETURN NEW`;return c(t).query(I).then(E=>E.next()).catch(E=>{throw E})},U=(s,o)=>{const{databaseName:t}=s,n=l(o),a=p`INSERT ${n} IN messages RETURN NEW`;return c(t).query(a).then(r=>r.next()).catch(r=>f({action:"addMessage",category:A,label:"addMessage"},r,s))},P=(s,o,t)=>{const{databaseName:n,session:{userId:a}}=s,r=y(o);return R(s,t).then(m=>{const{_key:g}=m,i=p`FOR m IN messages
19
+ FILTER m._key == ${r} && m.to == ${g}
20
+ UPDATE m WITH {saved: APPEND(m.saved, ${a}, true)} IN messages
21
+ RETURN NEW`;return c(n).query(i).then(e=>e.next()).then(e=>e).catch(e=>{throw e})})},b=(s,o,t)=>{const{databaseName:n,session:{userId:a}}=s,r=y(o);return R(s,t).then(m=>{const{_key:g}=m,i=p`FOR m IN messages
22
+ FILTER m._key == ${r} && m.to == ${g}
23
+ UPDATE m WITH {saved: REMOVE_VALUE(m.saved, ${a})} IN messages
24
+ RETURN NEW`;return c(n).query(i).then(e=>e.next()).then(e=>e).catch(e=>{throw e})})},w=(s,o,t)=>{const{databaseName:n,session:{userId:a}}=s,r=y(o);return R(s,t).then(m=>{const{_key:g}=m,i=p`FOR m IN messages
25
+ FILTER m._key == ${r} && m.to == ${g} && m.from == ${a}
167
26
  REMOVE m IN messages
168
- RETURN OLD`;
169
- return database.query(aqlQry).then((cursor) => cursor.next()).then((message) => {
170
- if (message) {
171
- }
172
- return message;
173
- }).catch((error) => {
174
- throw error;
175
- });
176
- });
177
- };
178
- const getMessage = (context, messageId) => {
179
- const { database } = context;
180
- const formatId = (0, import_utils.parseId)(messageId);
181
- const aqlQry = import_arangojs.aql`FOR m IN messages
182
- FILTER m._key == ${formatId}
183
- RETURN m`;
184
- return database.query(aqlQry).then((cursor) => cursor.next()).catch((error) => {
185
- throw error;
186
- });
187
- };
188
- const cleanMessages = (database) => {
189
- const aqlQry = import_arangojs.aql`FOR m IN messages
27
+ RETURN OLD`;return c(n).query(i).then(e=>e.next()).then(e=>e).catch(e=>{throw e})})},Q=(s,o)=>{const{databaseName:t}=s,n=y(o),a=p`FOR m IN messages
28
+ FILTER m._key == ${n}
29
+ RETURN m`;return c(t).query(a).then(r=>r.next()).catch(r=>{throw r})},S=s=>{const o=p`FOR m IN messages
190
30
  FILTER m.added < DATE_TIMESTAMP(DATE_SUBTRACT(DATE_NOW(), 60, 'day')) && LENGTH(m.saved) > 0
191
31
  REMOVE m IN messages
192
- RETURN OLD`;
193
- return database.query(aqlQry).then((cursor) => cursor.all()).then((list) => list.length).catch((error) => {
194
- throw error;
195
- });
196
- };
197
- // Annotate the CommonJS export names for ESM import in node:
198
- 0 && (module.exports = {
199
- addMessage,
200
- cleanMessages,
201
- deleteMessage,
202
- getMessage,
203
- getMessages,
204
- saveMessage,
205
- unsaveMessage,
206
- updateMessage
207
- });
208
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvbWVzc2FnZXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlSWQsIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWwsIERhdGFiYXNlfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcblxuaW1wb3J0IHtnZXRDb252ZXJzYXRpb259IGZyb20gJy4vY29udmVyc2F0aW9ucyc7XG5pbXBvcnQge3BhcnNlTWVzc2FnZX0gZnJvbSAnLi4vYWRhcHRlcnMvbWVzc2FnZUFkYXB0ZXInO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMnO1xuaW1wb3J0IHtnZXRMaW1pdH0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscyc7XG5cbmltcG9ydCB0eXBlIHtBcmFuZ29EYkxpbWl0fSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYi50eXBlcyc7XG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcyc7XG5pbXBvcnQgdHlwZSB7Q29udmVyc2F0aW9uVHlwZX0gZnJvbSAnLi4vdHlwZXMvY29udmVyc2F0aW9ucy50eXBlcyc7XG5pbXBvcnQgdHlwZSB7TWVzc2FnZUlucHV0VHlwZSwgTWVzc2FnZVR5cGV9IGZyb20gJy4uL3R5cGVzL21lc3NhZ2VzLnR5cGVzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ21lc3NhZ2VzJztcblxuZXhwb3J0IGNvbnN0IGdldE1lc3NhZ2VzID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcsIHtmcm9tLCB0b30pOiBQcm9taXNlPE1lc3NhZ2VUeXBlW10+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdENvbnZlcnNhdGlvbklkOiBzdHJpbmcgPSBwYXJzZUlkKGNvbnZlcnNhdGlvbklkKTtcbiAgY29uc3Qgc2Vzc2lvbkRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtzZXNzaW9uSWR9YDtcbiAgY29uc3QgY29udmVyc2F0aW9uRG9jSWQ6IHN0cmluZyA9IGBjb252ZXJzYXRpb25zLyR7Zm9ybWF0Q29udmVyc2F0aW9uSWR9YDtcblxuICBjb25zdCBjb252ZXJzYXRpb25RcnkgPSBhcWxgRk9SIGUgSU4gaGFzQ29udmVyc2F0aW9uXG4gICAgRklMVEVSIGUuX2Zyb20gPT0gJHtzZXNzaW9uRG9jSWR9ICYmIGUuX3RvID09ICR7Y29udmVyc2F0aW9uRG9jSWR9XG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBlYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoY29udmVyc2F0aW9uUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAudGhlbigoY29udmVyc2F0aW9ucykgPT4ge1xuICAgICAgaWYoIWNvbnZlcnNhdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGltaXQ6IEFyYW5nb0RiTGltaXQgPSBnZXRMaW1pdChmcm9tLCB0byk7XG4gICAgICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgICAgICAgIEZJTFRFUiBtLmNvbnZlcnNhdGlvbklkID09IFwiJHtmb3JtYXRDb252ZXJzYXRpb25JZH1cIlxuICAgICAgICAgIFNPUlQgbS5hZGRlZCBERVNDXG4gICAgICAgICAgJHtsaW1pdC5hcWx9XG4gICAgICAgICAgU09SVCBtLmFkZGVkIEFTQ1xuICAgICAgICAgIExFVCB1c2VyID0gRklSU1QoXG4gICAgICAgICAgICBGT1IgdSBJTiB1c2Vyc1xuICAgICAgICAgICAgRklMVEVSIHUuX2tleSA9PSBtLnVzZXJJZFxuICAgICAgICAgICAgTElNSVQgMVxuICAgICAgICAgICAgUkVUVVJOIHVcbiAgICAgICAgICApXG4gICAgICAgICAgUkVUVVJOIE1FUkdFKG0sIHt1c2VyOiB1c2VyfSlgO1xuXG4gICAgICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZU1lc3NhZ2UgPSAoY29udGV4dDogQXBpQ29udGV4dCwgbWVzc2FnZTogTWVzc2FnZUlucHV0VHlwZSk6IFByb21pc2U8TWVzc2FnZVR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtcbiAgICBjb252ZXJzYXRpb25JZCxcbiAgICBmaWxlcyxcbiAgICBpbWFnZXMsXG4gICAgbWVzc2FnZUlkID0gY3JlYXRlSGFzaChgbWVzc2FnZS0ke3Nlc3Npb25JZH1gKVxuICB9ID0gbWVzc2FnZTtcbiAgY29uc3QgZm9ybWF0Q29udmVyc2F0aW9uSWQ6IHN0cmluZyA9IHBhcnNlSWQoY29udmVyc2F0aW9uSWQpO1xuXG4gIGlmKGZvcm1hdENvbnZlcnNhdGlvbklkID09PSAnJykge1xuICAgIHRocm93IG5ldyBFcnJvcigncmVxdWlyZWRfY29udmVyc2F0aW9uSWQnKTtcbiAgfVxuXG4gIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgdXBkYXRlOiBNZXNzYWdlVHlwZSA9IHtcbiAgICBjb250ZW50OiBwYXJzZVN0cmluZyhtZXNzYWdlLmNvbnRlbnQsIDY0MCksXG4gICAgZmlsZXM6IGZpbGVzIHx8IFtdLFxuICAgIGltYWdlczogaW1hZ2VzIHx8IFtdLFxuICAgIG1vZGlmaWVkOiBub3dcbiAgfTtcbiAgY29uc3QgZm9ybWF0TXNnSWQ6IHN0cmluZyA9IHBhcnNlSWQobWVzc2FnZUlkKTtcbiAgY29uc3QgaW5zZXJ0OiBNZXNzYWdlVHlwZSA9IHtcbiAgICAuLi5jbG9uZURlZXAodXBkYXRlKSxcbiAgICBfa2V5OiBmb3JtYXRNc2dJZCxcbiAgICBhZGRlZDogbm93LFxuICAgIGNvbnZlcnNhdGlvbklkOiBmb3JtYXRDb252ZXJzYXRpb25JZCxcbiAgICB1c2VySWQ6IHNlc3Npb25JZFxuICB9O1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7X2tleTogJHtmb3JtYXRNc2dJZH0sIGNvbnZlcnNhdGlvbklkOiAke2Zvcm1hdENvbnZlcnNhdGlvbklkfSwgdXNlcklkOiAke3Nlc3Npb25JZH19XG4gICAgSU5TRVJUICR7aW5zZXJ0fVxuICAgIFVQREFURSAke3VwZGF0ZX0gSU4gbWVzc2FnZXNcbiAgICBSRVRVUk4gTkVXYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZE1lc3NhZ2UgPSAoY29udGV4dDogQXBpQ29udGV4dCwgbWVzc2FnZTogTWVzc2FnZUlucHV0VHlwZSk6IFByb21pc2U8TWVzc2FnZVR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IG5ld01lc3NhZ2U6IE1lc3NhZ2VUeXBlID0gcGFyc2VNZXNzYWdlKG1lc3NhZ2UpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgSU5TRVJUICR7bmV3TWVzc2FnZX0gSU4gbWVzc2FnZXMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb246ICdhZGRNZXNzYWdlJyxcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdhZGRNZXNzYWdlJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2F2ZU1lc3NhZ2UgPSAoY29udGV4dDogQXBpQ29udGV4dCwgbWVzc2FnZUlkOiBzdHJpbmcsIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChtZXNzYWdlSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgY29udmVyc2F0aW9uSWQpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4ge1xuICAgICAgY29uc3Qge19rZXk6IGNvbnZlcnNhdGlvbktleX0gPSBjb252ZXJzYXRpb247XG4gICAgICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIG0gSU4gbWVzc2FnZXNcbiAgICAgICAgRklMVEVSIG0uX2tleSA9PSAke2Zvcm1hdElkfSAmJiBtLnRvID09ICR7Y29udmVyc2F0aW9uS2V5fVxuICAgICAgICBVUERBVEUgbSBXSVRIIHtzYXZlZDogQVBQRU5EKG0uc2F2ZWQsICR7c2Vzc2lvbklkfSwgdHJ1ZSl9IElOIG1lc3NhZ2VzXG4gICAgICAgIFJFVFVSTiBORVdgO1xuXG4gICAgICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgICAudGhlbigobWVzc2FnZTogTWVzc2FnZVR5cGUpID0+IHtcbiAgICAgICAgICBpZihtZXNzYWdlKSB7XG4gICAgICAgICAgICAvLyBCcm9hZGNhc3QgdG8gbWVzc2FnZSBib3hcbiAgICAgICAgICAgIC8vIGNvbnN0IG1lc3NhZ2U6IE1lc3NhZ2VUeXBlID0gTWVzc2FnZXMuZ2V0TWVzc2FnZU9iamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIGlvLnRvKG1lc3NhZ2UudG9JZCkuZW1pdCgnbWVzc2FnZV9zYXZlJywgbWVzc2FnZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVuc2F2ZU1lc3NhZ2UgPSAoY29udGV4dDogQXBpQ29udGV4dCwgbWVzc2FnZUlkOiBzdHJpbmcsIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChtZXNzYWdlSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgY29udmVyc2F0aW9uSWQpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4ge1xuICAgICAgY29uc3Qge19rZXk6IGNvbnZlcnNhdGlvbktleX0gPSBjb252ZXJzYXRpb247XG4gICAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBtIElOIG1lc3NhZ2VzXG4gICAgICAgICAgRklMVEVSIG0uX2tleSA9PSAke2Zvcm1hdElkfSAmJiBtLnRvID09ICR7Y29udmVyc2F0aW9uS2V5fVxuICAgICAgICAgIFVQREFURSBtIFdJVEgge3NhdmVkOiBSRU1PVkVfVkFMVUUobS5zYXZlZCwgJHtzZXNzaW9uSWR9KX0gSU4gbWVzc2FnZXNcbiAgICAgICAgICBSRVRVUk4gTkVXYDtcblxuICAgICAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgLnRoZW4oKG1lc3NhZ2U6IE1lc3NhZ2VUeXBlKSA9PiB7XG4gICAgICAgICAgaWYobWVzc2FnZSkge1xuICAgICAgICAgICAgLy8gQnJvYWRjYXN0IHRvIG1lc3NhZ2UgYm94XG4gICAgICAgICAgICAvLyBjb25zdCBtZXNzYWdlOiBNZXNzYWdlVHlwZSA9IE1lc3NhZ2VzLmdldE1lc3NhZ2VPYmplY3QobWVzc2FnZSk7XG4gICAgICAgICAgICAvLyBpby50byhtZXNzYWdlLmlkKS5lbWl0KCdtZXNzYWdlX3Vuc2F2ZScsIG1lc3NhZ2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVNZXNzYWdlID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG1lc3NhZ2VJZDogc3RyaW5nLCBjb252ZXJzYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxNZXNzYWdlVHlwZT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlSWQobWVzc2FnZUlkKTtcblxuICByZXR1cm4gZ2V0Q29udmVyc2F0aW9uKGNvbnRleHQsIGNvbnZlcnNhdGlvbklkKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHtfa2V5OiBjb252ZXJzYXRpb25LZXl9ID0gY29udmVyc2F0aW9uO1xuICAgICAgY29uc3QgYXFsUXJ5ID0gYXFsYEZPUiBtIElOIG1lc3NhZ2VzXG4gICAgICAgIEZJTFRFUiBtLl9rZXkgPT0gJHtmb3JtYXRJZH0gJiYgbS50byA9PSAke2NvbnZlcnNhdGlvbktleX0gJiYgbS5mcm9tID09ICR7c2Vzc2lvbklkfVxuICAgICAgICBSRU1PVkUgbSBJTiBtZXNzYWdlc1xuICAgICAgICBSRVRVUk4gT0xEYDtcblxuICAgICAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgLnRoZW4oKG1lc3NhZ2U6IE1lc3NhZ2VUeXBlKSA9PiB7XG4gICAgICAgICAgaWYobWVzc2FnZSkge1xuICAgICAgICAgICAgLy8gQnJvYWRjYXN0IHRvIG1lc3NhZ2UgYm94XG4gICAgICAgICAgICAvLyBjb25zdCBtZXNzYWdlOiBNZXNzYWdlVHlwZSA9IE1lc3NhZ2VzLmdldE1lc3NhZ2VPYmplY3QobWVzc2FnZSk7XG4gICAgICAgICAgICAvLyBpby50byhtZXNzYWdlLnRvSWQpLmVtaXQoJ21lc3NhZ2VfZGVsZXRlJywgbWVzc2FnZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1lc3NhZ2UgPSAoY29udGV4dDogQXBpQ29udGV4dCwgbWVzc2FnZUlkOiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChtZXNzYWdlSWQpO1xuXG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgIEZJTFRFUiBtLl9rZXkgPT0gJHtmb3JtYXRJZH1cbiAgICBSRVRVUk4gbWA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjbGVhbk1lc3NhZ2VzID0gKGRhdGFiYXNlOiBEYXRhYmFzZSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIC8vIFJlbW92ZSBhbGwgbWVzc2FnZXMgdGhhdCBhcmUgb3ZlciA2MCBkYXlzIGFuZCBub3Qgc2F2ZWRcbiAgY29uc3QgYXFsUXJ5ID0gYXFsYEZPUiBtIElOIG1lc3NhZ2VzXG4gICAgICBGSUxURVIgbS5hZGRlZCA8IERBVEVfVElNRVNUQU1QKERBVEVfU1VCVFJBQ1QoREFURV9OT1coKSwgNjAsICdkYXknKSkgJiYgTEVOR1RIKG0uc2F2ZWQpID4gMFxuICAgICAgUkVNT1ZFIG0gSU4gbWVzc2FnZXNcbiAgICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC50aGVuKChsaXN0OiBNZXNzYWdlVHlwZVtdKSA9PiBsaXN0Lmxlbmd0aClcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAg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QUFPLFNBQVMsTUFBTSxNQUFNLEVBQ3pCLEtBQUssQ0FBQyxXQUFXLE9BQU8sS0FBSyxDQUFDLEVBQzlCLEtBQUssQ0FBQyxZQUF5QjtBQUM5QixVQUFHLFNBQVM7QUFBQSxNQUlaO0FBRUEsYUFBTztBQUFBLElBQ1QsQ0FBQyxFQUNBLE1BQU0sQ0FBQyxVQUFpQjtBQUN2QixZQUFNO0FBQUEsSUFDUixDQUFDO0FBQUEsRUFDTCxDQUFDO0FBQ0w7QUFFTyxNQUFNLGdCQUFnQixDQUFDLFNBQXFCLFdBQW1CLG1CQUFpRDtBQUNySCxRQUFNLEVBQUMsVUFBVSxTQUFTLEVBQUMsUUFBUSxVQUFTLEVBQUMsSUFBSTtBQUNqRCxRQUFNLGVBQW1CLHNCQUFRLFNBQVM7QUFFMUMsYUFBTyxzQ0FBZ0IsU0FBUyxjQUFjLEVBQzNDLEtBQUssQ0FBQyxpQkFBbUM7QUFDeEMsVUFBTSxFQUFDLE1BQU0sZ0JBQWUsSUFBSTtBQUNoQyxVQUFNLFNBQVM7QUFBQSwyQkFDTSxRQUFRLGVBQWUsZUFBZSxpQkFBaUIsU0FBUztBQUFBO0FBQUE7QUFJckYsV0FBTyxTQUFTLE1BQU0sTUFBTSxFQUN6QixLQUFLLENBQUMsV0FBVyxPQUFPLEtBQUssQ0FBQyxFQUM5QixLQUFLLENBQUMsWUFBeUI7QUFDOUIsVUFBRyxTQUFTO0FBQUEsTUFJWjtBQUVBLGFBQU87QUFBQSxJQUNULENBQUMsRUFDQSxNQUFNLENBQUMsVUFBaUI7QUFDdkIsWUFBTTtBQUFBLElBQ1IsQ0FBQztBQUFBLEVBQ0wsQ0FBQztBQUNMO0FBRU8sTUFBTSxhQUFhLENBQUMsU0FBcUIsY0FBNEM7QUFDMUYsUUFBTSxFQUFDLFNBQVEsSUFBSTtBQUNuQixRQUFNLGVBQW1CLHNCQUFRLFNBQVM7QUFFMUMsUUFBTSxTQUFTO0FBQUEsdUJBQ00sUUFBUTtBQUFBO0FBRzdCLFNBQU8sU0FBUyxNQUFNLE1BQU0sRUFDekIsS0FBSyxDQUFDLFdBQVcsT0FBTyxLQUFLLENBQUMsRUFDOUIsTUFBTSxDQUFDLFVBQWlCO0FBQ3ZCLFVBQU07QUFBQSxFQUNSLENBQUM7QUFDTDtBQUVPLE1BQU0sZ0JBQWdCLENBQUMsYUFBd0M7QUFFcEUsUUFBTSxTQUFTO0FBQUE7QUFBQTtBQUFBO0FBS2YsU0FBTyxTQUFTLE1BQU0sTUFBTSxFQUN6QixLQUFLLENBQUMsV0FBVyxPQUFPLElBQUksQ0FBQyxFQUM3QixLQUFLLENBQUMsU0FBd0IsS0FBSyxNQUFNLEVBQ3pDLE1BQU0sQ0FBQyxVQUFpQjtBQUN2QixVQUFNO0FBQUEsRUFDUixDQUFDO0FBQ0w7IiwKICAibmFtZXMiOiBbImNsb25lRGVlcCJdCn0K
32
+ RETURN OLD`;return c(s).query(o).then(t=>t.all()).then(t=>t.length).catch(t=>{throw t})};export{U as addMessage,S as cleanMessages,w as deleteMessage,Q as getMessage,_ as getMessages,P as saveMessage,b as unsaveMessage,O as updateMessage};
33
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvbWVzc2FnZXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlSWQsIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuXG5pbXBvcnQge2dldENvbnZlcnNhdGlvbn0gZnJvbSAnLi9jb252ZXJzYXRpb25zJztcbmltcG9ydCB7cGFyc2VNZXNzYWdlfSBmcm9tICcuLi9hZGFwdGVycy9tZXNzYWdlQWRhcHRlcic7XG5pbXBvcnQge2xvZ0Vycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscyc7XG5pbXBvcnQge2dldExpbWl0LCB1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscyc7XG5cbmltcG9ydCB0eXBlIHtBcmFuZ29EYkxpbWl0fSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYi50eXBlcyc7XG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcyc7XG5pbXBvcnQgdHlwZSB7Q29udmVyc2F0aW9uVHlwZX0gZnJvbSAnLi4vdHlwZXMvY29udmVyc2F0aW9ucy50eXBlcyc7XG5pbXBvcnQgdHlwZSB7TWVzc2FnZUlucHV0VHlwZSwgTWVzc2FnZVR5cGV9IGZyb20gJy4uL3R5cGVzL21lc3NhZ2VzLnR5cGVzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ21lc3NhZ2VzJztcblxuZXhwb3J0IGNvbnN0IGdldE1lc3NhZ2VzID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcsIHtmcm9tLCB0b30pOiBQcm9taXNlPE1lc3NhZ2VUeXBlW10+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRDb252ZXJzYXRpb25JZDogc3RyaW5nID0gcGFyc2VJZChjb252ZXJzYXRpb25JZCk7XG4gIGNvbnN0IHNlc3Npb25Eb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG4gIGNvbnN0IGNvbnZlcnNhdGlvbkRvY0lkOiBzdHJpbmcgPSBgY29udmVyc2F0aW9ucy8ke2Zvcm1hdENvbnZlcnNhdGlvbklkfWA7XG5cbiAgY29uc3QgY29udmVyc2F0aW9uUXJ5ID0gYXFsYEZPUiBlIElOIGhhc0NvbnZlcnNhdGlvblxuICAgIEZJTFRFUiBlLl9mcm9tID09ICR7c2Vzc2lvbkRvY0lkfSAmJiBlLl90byA9PSAke2NvbnZlcnNhdGlvbkRvY0lkfVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gZWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoY29udmVyc2F0aW9uUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAudGhlbigoY29udmVyc2F0aW9ucykgPT4ge1xuICAgICAgaWYoIWNvbnZlcnNhdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGltaXQ6IEFyYW5nb0RiTGltaXQgPSBnZXRMaW1pdChmcm9tLCB0byk7XG4gICAgICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgICAgICAgIEZJTFRFUiBtLmNvbnZlcnNhdGlvbklkID09IFwiJHtmb3JtYXRDb252ZXJzYXRpb25JZH1cIlxuICAgICAgICAgIFNPUlQgbS5hZGRlZCBERVNDXG4gICAgICAgICAgJHtsaW1pdC5hcWx9XG4gICAgICAgICAgU09SVCBtLmFkZGVkIEFTQ1xuICAgICAgICAgIExFVCB1c2VyID0gRklSU1QoXG4gICAgICAgICAgICBGT1IgdSBJTiB1c2Vyc1xuICAgICAgICAgICAgRklMVEVSIHUuX2tleSA9PSBtLnVzZXJJZFxuICAgICAgICAgICAgTElNSVQgMVxuICAgICAgICAgICAgUkVUVVJOIHVcbiAgICAgICAgICApXG4gICAgICAgICAgUkVUVVJOIE1FUkdFKG0sIHt1c2VyOiB1c2VyfSlgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtZXNzYWdlOiBNZXNzYWdlSW5wdXRUeXBlKTogUHJvbWlzZTxNZXNzYWdlVHlwZT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtcbiAgICBjb252ZXJzYXRpb25JZCxcbiAgICBmaWxlcyxcbiAgICBpbWFnZXMsXG4gICAgbWVzc2FnZUlkID0gY3JlYXRlSGFzaChgbWVzc2FnZS0ke3Nlc3Npb25JZH1gKVxuICB9ID0gbWVzc2FnZTtcbiAgY29uc3QgZm9ybWF0Q29udmVyc2F0aW9uSWQ6IHN0cmluZyA9IHBhcnNlSWQoY29udmVyc2F0aW9uSWQpO1xuXG4gIGlmKGZvcm1hdENvbnZlcnNhdGlvbklkID09PSAnJykge1xuICAgIHRocm93IG5ldyBFcnJvcigncmVxdWlyZWRfY29udmVyc2F0aW9uSWQnKTtcbiAgfVxuXG4gIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgdXBkYXRlOiBNZXNzYWdlVHlwZSA9IHtcbiAgICBjb250ZW50OiBwYXJzZVN0cmluZyhtZXNzYWdlLmNvbnRlbnQsIDY0MCksXG4gICAgZmlsZXM6IGZpbGVzIHx8IFtdLFxuICAgIGltYWdlczogaW1hZ2VzIHx8IFtdLFxuICAgIG1vZGlmaWVkOiBub3dcbiAgfTtcbiAgY29uc3QgZm9ybWF0TXNnSWQ6IHN0cmluZyA9IHBhcnNlSWQobWVzc2FnZUlkKTtcbiAgY29uc3QgaW5zZXJ0OiBNZXNzYWdlVHlwZSA9IHtcbiAgICAuLi5jbG9uZURlZXAodXBkYXRlKSxcbiAgICBfa2V5OiBmb3JtYXRNc2dJZCxcbiAgICBhZGRlZDogbm93LFxuICAgIGNvbnZlcnNhdGlvbklkOiBmb3JtYXRDb252ZXJzYXRpb25JZCxcbiAgICB1c2VySWQ6IHNlc3Npb25JZFxuICB9O1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7X2tleTogJHtmb3JtYXRNc2dJZH0sIGNvbnZlcnNhdGlvbklkOiAke2Zvcm1hdENvbnZlcnNhdGlvbklkfSwgdXNlcklkOiAke3Nlc3Npb25JZH19XG4gICAgSU5TRVJUICR7aW5zZXJ0fVxuICAgIFVQREFURSAke3VwZGF0ZX0gSU4gbWVzc2FnZXNcbiAgICBSRVRVUk4gTkVXYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtZXNzYWdlOiBNZXNzYWdlSW5wdXRUeXBlKTogUHJvbWlzZTxNZXNzYWdlVHlwZT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IG5ld01lc3NhZ2U6IE1lc3NhZ2VUeXBlID0gcGFyc2VNZXNzYWdlKG1lc3NhZ2UpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgSU5TRVJUICR7bmV3TWVzc2FnZX0gSU4gbWVzc2FnZXMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbjogJ2FkZE1lc3NhZ2UnLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2FkZE1lc3NhZ2UnXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzYXZlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtZXNzYWdlSWQ6IHN0cmluZywgY29udmVyc2F0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8TWVzc2FnZVR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChtZXNzYWdlSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgY29udmVyc2F0aW9uSWQpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4ge1xuICAgICAgY29uc3Qge19rZXk6IGNvbnZlcnNhdGlvbktleX0gPSBjb252ZXJzYXRpb247XG4gICAgICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIG0gSU4gbWVzc2FnZXNcbiAgICAgICAgRklMVEVSIG0uX2tleSA9PSAke2Zvcm1hdElkfSAmJiBtLnRvID09ICR7Y29udmVyc2F0aW9uS2V5fVxuICAgICAgICBVUERBVEUgbSBXSVRIIHtzYXZlZDogQVBQRU5EKG0uc2F2ZWQsICR7c2Vzc2lvbklkfSwgdHJ1ZSl9IElOIG1lc3NhZ2VzXG4gICAgICAgIFJFVFVSTiBORVdgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgIC50aGVuKChtZXNzYWdlOiBNZXNzYWdlVHlwZSkgPT4ge1xuICAgICAgICAgIGlmKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgIC8vIEJyb2FkY2FzdCB0byBtZXNzYWdlIGJveFxuICAgICAgICAgICAgLy8gY29uc3QgbWVzc2FnZTogTWVzc2FnZVR5cGUgPSBNZXNzYWdlcy5nZXRNZXNzYWdlT2JqZWN0KG1lc3NhZ2UpO1xuICAgICAgICAgICAgLy8gaW8udG8obWVzc2FnZS50b0lkKS5lbWl0KCdtZXNzYWdlX3NhdmUnLCBtZXNzYWdlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdW5zYXZlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtZXNzYWdlSWQ6IHN0cmluZywgY29udmVyc2F0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8TWVzc2FnZVR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChtZXNzYWdlSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgY29udmVyc2F0aW9uSWQpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4ge1xuICAgICAgY29uc3Qge19rZXk6IGNvbnZlcnNhdGlvbktleX0gPSBjb252ZXJzYXRpb247XG4gICAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBtIElOIG1lc3NhZ2VzXG4gICAgICAgICAgRklMVEVSIG0uX2tleSA9PSAke2Zvcm1hdElkfSAmJiBtLnRvID09ICR7Y29udmVyc2F0aW9uS2V5fVxuICAgICAgICAgIFVQREFURSBtIFdJVEgge3NhdmVkOiBSRU1PVkVfVkFMVUUobS5zYXZlZCwgJHtzZXNzaW9uSWR9KX0gSU4gbWVzc2FnZXNcbiAgICAgICAgICBSRVRVUk4gTkVXYDtcblxuICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgICAudGhlbigobWVzc2FnZTogTWVzc2FnZVR5cGUpID0+IHtcbiAgICAgICAgICBpZihtZXNzYWdlKSB7XG4gICAgICAgICAgICAvLyBCcm9hZGNhc3QgdG8gbWVzc2FnZSBib3hcbiAgICAgICAgICAgIC8vIGNvbnN0IG1lc3NhZ2U6IE1lc3NhZ2VUeXBlID0gTWVzc2FnZXMuZ2V0TWVzc2FnZU9iamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIGlvLnRvKG1lc3NhZ2UuaWQpLmVtaXQoJ21lc3NhZ2VfdW5zYXZlJywgbWVzc2FnZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZU1lc3NhZ2UgPSAoY29udGV4dDogQXBpQ29udGV4dCwgbWVzc2FnZUlkOiBzdHJpbmcsIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlSWQobWVzc2FnZUlkKTtcblxuICByZXR1cm4gZ2V0Q29udmVyc2F0aW9uKGNvbnRleHQsIGNvbnZlcnNhdGlvbklkKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHtfa2V5OiBjb252ZXJzYXRpb25LZXl9ID0gY29udmVyc2F0aW9uO1xuICAgICAgY29uc3QgYXFsUXJ5ID0gYXFsYEZPUiBtIElOIG1lc3NhZ2VzXG4gICAgICAgIEZJTFRFUiBtLl9rZXkgPT0gJHtmb3JtYXRJZH0gJiYgbS50byA9PSAke2NvbnZlcnNhdGlvbktleX0gJiYgbS5mcm9tID09ICR7c2Vzc2lvbklkfVxuICAgICAgICBSRU1PVkUgbSBJTiBtZXNzYWdlc1xuICAgICAgICBSRVRVUk4gT0xEYDtcblxuICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgICAudGhlbigobWVzc2FnZTogTWVzc2FnZVR5cGUpID0+IHtcbiAgICAgICAgICBpZihtZXNzYWdlKSB7XG4gICAgICAgICAgICAvLyBCcm9hZGNhc3QgdG8gbWVzc2FnZSBib3hcbiAgICAgICAgICAgIC8vIGNvbnN0IG1lc3NhZ2U6IE1lc3NhZ2VUeXBlID0gTWVzc2FnZXMuZ2V0TWVzc2FnZU9iamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIGlvLnRvKG1lc3NhZ2UudG9JZCkuZW1pdCgnbWVzc2FnZV9kZWxldGUnLCBtZXNzYWdlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8TWVzc2FnZVR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChtZXNzYWdlSWQpO1xuXG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgIEZJTFRFUiBtLl9rZXkgPT0gJHtmb3JtYXRJZH1cbiAgICBSRVRVUk4gbWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFuTWVzc2FnZXMgPSAoZGF0YWJhc2VOYW1lOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICAvLyBSZW1vdmUgYWxsIG1lc3NhZ2VzIHRoYXQgYXJlIG92ZXIgNjAgZGF5cyBhbmQgbm90IHNhdmVkXG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgICAgRklMVEVSIG0uYWRkZWQgPCBEQVRFX1RJTUVTVEFNUChEQVRFX1NVQlRSQUNUKERBVEVfTk9XKCksIDYwLCAnZGF5JykpICYmIExFTkdUSChtLnNhdmVkKSA+IDBcbiAgICAgIFJFTU9WRSBtIElOIG1lc3NhZ2VzXG4gICAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC50aGVuKChsaXN0OiBNZXNzYWdlVHlwZVtdKSA9PiBsaXN0Lmxlbmd0aClcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBUSxjQUFBQSxFQUFZLFdBQUFDLEVBQVMsZUFBQUMsTUFBa0IsZUFDL0MsT0FBUSxPQUFBQyxNQUFVLFdBRWxCLE9BQU9DLE1BQWUsbUJBRXRCLE9BQVEsbUJBQUFDLE1BQXNCLGtCQUM5QixPQUFRLGdCQUFBQyxNQUFtQiw2QkFDM0IsT0FBUSxZQUFBQyxNQUFlLDBCQUN2QixPQUFRLFlBQUFDLEVBQVUsU0FBQUMsTUFBWSx5QkFPOUIsTUFBTUMsRUFBd0IsV0FFakJDLEVBQWMsQ0FBQ0MsRUFBcUJDLEVBQXdCLENBQUMsS0FBQUMsRUFBTSxHQUFBQyxDQUFFLElBQThCLENBQzlHLEtBQU0sQ0FBQyxhQUFBQyxFQUFjLFFBQVMsQ0FBQyxPQUFRQyxDQUFTLENBQUMsRUFBSUwsRUFDL0NNLEVBQStCakIsRUFBUVksQ0FBYyxFQUNyRE0sRUFBdUIsU0FBU0YsQ0FBUyxHQUN6Q0csRUFBNEIsaUJBQWlCRixDQUFvQixHQUVqRUcsRUFBa0JsQjtBQUFBLHdCQUNGZ0IsQ0FBWSxnQkFBZ0JDLENBQWlCO0FBQUE7QUFBQSxjQUluRSxPQUFPWCxFQUFNTyxDQUFZLEVBQUUsTUFBTUssQ0FBZSxFQUM3QyxLQUFNQyxHQUFXQSxFQUFPLElBQUksQ0FBQyxFQUM3QixLQUFNQyxHQUFrQixDQUN2QixHQUFHLENBQUNBLEVBQWMsT0FDaEIsTUFBTyxDQUFDLEVBR1YsTUFBTUMsRUFBdUJoQixFQUFTTSxFQUFNQyxDQUFFLEVBQ3hDVSxFQUFpQjtBQUFBLHdDQUNXUCxDQUFvQjtBQUFBO0FBQUEsWUFFaERNLEVBQU0sR0FBRztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEs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U3RCO0FBQUE7QUFBQTtBQUFBLGtCQUtmLE9BQU9NLEVBQU1PLENBQVksRUFBRSxNQUFNUyxDQUFNLEVBQ3BDLEtBQU1ILEdBQVdBLEVBQU8sSUFBSSxDQUFDLEVBQzdCLEtBQU13QixHQUF3QkEsRUFBSyxNQUFNLEVBQ3pDLE1BQU9wQixHQUFpQixDQUN2QixNQUFNQSxDQUNSLENBQUMsQ0FDTCIsCiAgIm5hbWVzIjogWyJjcmVhdGVIYXNoIiwgInBhcnNlSWQiLCAicGFyc2VTdHJpbmciLCAiYXFsIiwgImNsb25lRGVlcCIsICJnZXRDb252ZXJzYXRpb24iLCAicGFyc2VNZXNzYWdlIiwgImxvZ0Vycm9yIiwgImdldExpbWl0IiwgInVzZURiIiwgImV2ZW50Q2F0ZWdvcnkiLCAiZ2V0TWVzc2FnZXMiLCAiY29udGV4dCIsICJjb252ZXJzYXRpb25JZCIsICJmcm9tIiwgInRvIiwgImRhdGFiYXNlTmFtZSIsICJzZXNzaW9uSWQiLCAiZm9ybWF0Q29udmVyc2F0aW9uSWQiLCAic2Vzc2lvbkRvY0lkIiwgImNvbnZlcnNhdGlvbkRvY0lkIiwgImNvbnZlcnNhdGlvblFyeSIsICJjdXJzb3IiLCAiY29udmVyc2F0aW9ucyIsICJsaW1pdCIsICJhcWxRcnkiLCAiZXJyb3IiLCAidXBkYXRlTWVzc2FnZSIsICJtZXNzYWdlIiwgImZpbGVzIiwgImltYWdlcyIsICJtZXNzYWdlSWQiLCAibm93IiwgInVwZGF0ZSIsICJmb3JtYXRNc2dJZCIsICJpbnNlcnQiLCAiYWRkTWVzc2FnZSIsICJuZXdNZXNzYWdlIiwgInNhdmVNZXNzYWdlIiwgImZvcm1hdElkIiwgImNvbnZlcnNhdGlvbiIsICJjb252ZXJzYXRpb25LZXkiLCAidW5zYXZlTWVzc2FnZSIsICJkZWxldGVNZXNzYWdlIiwgImdldE1lc3NhZ2UiLCAiY2xlYW5NZXNzYWdlcyIsICJsaXN0Il0KfQo=
@@ -1,59 +1,2 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
- var notifications_exports = {};
19
- __export(notifications_exports, {
20
- clearBadges: () => clearBadges,
21
- getApnProvider: () => getApnProvider,
22
- pushNotification: () => pushNotification
23
- });
24
- module.exports = __toCommonJS(notifications_exports);
25
- var import_apn = require("apn");
26
- var import_config = require("../config");
27
- const getApnProvider = () => new import_apn.Provider({
28
- ca: import_config.Config.get("app.apn.ca"),
29
- cert: import_config.Config.get("app.apn.cert"),
30
- key: import_config.Config.get("app.apn.key"),
31
- production: import_config.Config.get("environment") === "prod"
32
- });
33
- const pushNotification = (deviceTokens, note) => {
34
- const provider = getApnProvider();
35
- const notification = new import_apn.Notification();
36
- notification.topic = import_config.Config.get("app.apn.id");
37
- notification.alert = note.message;
38
- if (note.data) {
39
- notification.mutableContent = true;
40
- notification.payload = note.data;
41
- }
42
- if (note.badge !== void 0) {
43
- notification.badge = note.badge;
44
- }
45
- return provider.send(notification, deviceTokens);
46
- };
47
- const clearBadges = (deviceTokens) => {
48
- const provider = getApnProvider();
49
- const notification = new import_apn.Notification();
50
- notification.badge = 0;
51
- return provider.send(notification, deviceTokens);
52
- };
53
- // Annotate the CommonJS export names for ESM import in node:
54
- 0 && (module.exports = {
55
- clearBadges,
56
- getApnProvider,
57
- pushNotification
58
- });
59
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvbm90aWZpY2F0aW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdub3RpZmljYXRpb25zJztcbi8vIFB1c2ggTm90aWZpY2F0aW9uc1xuaW1wb3J0IHtOb3RpZmljYXRpb24gYXMgQVBOTm90aWZpY2F0aW9uLCBQcm92aWRlciwgUmVzcG9uc2VzfSBmcm9tICdhcG4nO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcblxuaW1wb3J0IHR5cGUge05vdGlmaWNhdGlvblR5cGV9IGZyb20gJy4uL3R5cGVzL25vdGlmaWNhdGlvbnMudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZ2V0QXBuUHJvdmlkZXIgPSAoKSA9PiBuZXcgUHJvdmlkZXIoe1xuICBjYTogQ29uZmlnLmdldCgnYXBwLmFwbi5jYScpLFxuICBjZXJ0OiBDb25maWcuZ2V0KCdhcHAuYXBuLmNlcnQnKSxcbiAga2V5OiBDb25maWcuZ2V0KCdhcHAuYXBuLmtleScpLFxuICBwcm9kdWN0aW9uOiBDb25maWcuZ2V0KCdlbnZpcm9ubWVudCcpID09PSAncHJvZCdcbn0pO1xuXG5leHBvcnQgY29uc3QgcHVzaE5vdGlmaWNhdGlvbiA9IChkZXZpY2VUb2tlbnM6IHN0cmluZ1tdLCBub3RlOiBOb3RpZmljYXRpb25UeXBlKTogUHJvbWlzZTxSZXNwb25zZXM+ID0+IHtcbiAgLy8gUHVzaCBub3RpZmljYXRpb24gdG8gZGV2aWNlXG4gIGNvbnN0IHByb3ZpZGVyOiBQcm92aWRlciA9IGdldEFwblByb3ZpZGVyKCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbjogQVBOTm90aWZpY2F0aW9uID0gbmV3IEFQTk5vdGlmaWNhdGlvbigpO1xuICBub3RpZmljYXRpb24udG9waWMgPSBDb25maWcuZ2V0KCdhcHAuYXBuLmlkJyk7XG4gIG5vdGlmaWNhdGlvbi5hbGVydCA9IG5vdGUubWVzc2FnZTtcblxuICBpZihub3RlLmRhdGEpIHtcbiAgICBub3RpZmljYXRpb24ubXV0YWJsZUNvbnRlbnQgPSB0cnVlO1xuICAgIG5vdGlmaWNhdGlvbi5wYXlsb2FkID0gbm90ZS5kYXRhO1xuICB9XG5cbiAgaWYobm90ZS5iYWRnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbm90aWZpY2F0aW9uLmJhZGdlID0gbm90ZS5iYWRnZTtcbiAgfVxuXG4gIHJldHVybiBwcm92aWRlci5zZW5kKG5vdGlmaWNhdGlvbiwgZGV2aWNlVG9rZW5zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjbGVhckJhZGdlcyA9IChkZXZpY2VUb2tlbnM6IHN0cmluZ1tdKTogUHJvbWlzZTxSZXNwb25zZXM+ID0+IHtcbiAgLy8gUHVzaCBub3RpZmljYXRpb24gdG8gZGV2aWNlXG4gIGNvbnN0IHByb3ZpZGVyID0gZ2V0QXBuUHJvdmlkZXIoKTtcbiAgY29uc3Qgbm90aWZpY2F0aW9uID0gbmV3IEFQTk5vdGlmaWNhdGlvbigpO1xuICBub3RpZmljYXRpb24uYmFkZ2UgPSAwO1xuXG4gIHJldHVybiBwcm92aWRlci5zZW5kKG5vdGlmaWNhdGlvbiwgZGV2aWNlVG9rZW5zKTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsaUJBQW1FO0FBRW5FLG9CQUFxQjtBQUlkLE1BQU0saUJBQWlCLE1BQU0sSUFBSSxvQkFBUztBQUFBLEVBQy9DLElBQUkscUJBQU8sSUFBSSxZQUFZO0FBQUEsRUFDM0IsTUFBTSxxQkFBTyxJQUFJLGNBQWM7QUFBQSxFQUMvQixLQUFLLHFCQUFPLElBQUksYUFBYTtBQUFBLEVBQzdCLFlBQVkscUJBQU8sSUFBSSxhQUFhLE1BQU07QUFDNUMsQ0FBQztBQUVNLE1BQU0sbUJBQW1CLENBQUMsY0FBd0IsU0FBK0M7QUFFdEcsUUFBTSxXQUFxQixlQUFlO0FBQzFDLFFBQU0sZUFBZ0MsSUFBSSxXQUFBQSxhQUFnQjtBQUMxRCxlQUFhLFFBQVEscUJBQU8sSUFBSSxZQUFZO0FBQzVDLGVBQWEsUUFBUSxLQUFLO0FBRTFCLE1BQUcsS0FBSyxNQUFNO0FBQ1osaUJBQWEsaUJBQWlCO0FBQzlCLGlCQUFhLFVBQVUsS0FBSztBQUFBLEVBQzlCO0FBRUEsTUFBRyxLQUFLLFVBQVUsUUFBVztBQUMzQixpQkFBYSxRQUFRLEtBQUs7QUFBQSxFQUM1QjtBQUVBLFNBQU8sU0FBUyxLQUFLLGNBQWMsWUFBWTtBQUNqRDtBQUVPLE1BQU0sY0FBYyxDQUFDLGlCQUErQztBQUV6RSxRQUFNLFdBQVcsZUFBZTtBQUNoQyxRQUFNLGVBQWUsSUFBSSxXQUFBQSxhQUFnQjtBQUN6QyxlQUFhLFFBQVE7QUFFckIsU0FBTyxTQUFTLEtBQUssY0FBYyxZQUFZO0FBQ2pEOyIsCiAgIm5hbWVzIjogWyJBUE5Ob3RpZmljYXRpb24iXQp9Cg==
1
+ import{Notification as a,Provider as p}from"apn";import{Config as o}from"../config";const r=()=>new p({ca:o.get("app.apn.ca"),cert:o.get("app.apn.cert"),key:o.get("app.apn.key"),production:o.get("environment")==="prod"}),f=(n,t)=>{const i=r(),e=new a;return e.topic=o.get("app.apn.id"),e.alert=t.message,t.data&&(e.mutableContent=!0,e.payload=t.data),t.badge!==void 0&&(e.badge=t.badge),i.send(e,n)},g=n=>{const t=r(),i=new a;return i.badge=0,t.send(i,n)};export{g as clearBadges,r as getApnProvider,f as pushNotification};
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvbm90aWZpY2F0aW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdub3RpZmljYXRpb25zJztcbi8vIFB1c2ggTm90aWZpY2F0aW9uc1xuaW1wb3J0IHtOb3RpZmljYXRpb24gYXMgQVBOTm90aWZpY2F0aW9uLCBQcm92aWRlciwgUmVzcG9uc2VzfSBmcm9tICdhcG4nO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcblxuaW1wb3J0IHR5cGUge05vdGlmaWNhdGlvblR5cGV9IGZyb20gJy4uL3R5cGVzL25vdGlmaWNhdGlvbnMudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZ2V0QXBuUHJvdmlkZXIgPSAoKSA9PiBuZXcgUHJvdmlkZXIoe1xuICBjYTogQ29uZmlnLmdldCgnYXBwLmFwbi5jYScpLFxuICBjZXJ0OiBDb25maWcuZ2V0KCdhcHAuYXBuLmNlcnQnKSxcbiAga2V5OiBDb25maWcuZ2V0KCdhcHAuYXBuLmtleScpLFxuICBwcm9kdWN0aW9uOiBDb25maWcuZ2V0KCdlbnZpcm9ubWVudCcpID09PSAncHJvZCdcbn0pO1xuXG5leHBvcnQgY29uc3QgcHVzaE5vdGlmaWNhdGlvbiA9IChkZXZpY2VUb2tlbnM6IHN0cmluZ1tdLCBub3RlOiBOb3RpZmljYXRpb25UeXBlKTogUHJvbWlzZTxSZXNwb25zZXM+ID0+IHtcbiAgLy8gUHVzaCBub3RpZmljYXRpb24gdG8gZGV2aWNlXG4gIGNvbnN0IHByb3ZpZGVyOiBQcm92aWRlciA9IGdldEFwblByb3ZpZGVyKCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbjogQVBOTm90aWZpY2F0aW9uID0gbmV3IEFQTk5vdGlmaWNhdGlvbigpO1xuICBub3RpZmljYXRpb24udG9waWMgPSBDb25maWcuZ2V0KCdhcHAuYXBuLmlkJyk7XG4gIG5vdGlmaWNhdGlvbi5hbGVydCA9IG5vdGUubWVzc2FnZTtcblxuICBpZihub3RlLmRhdGEpIHtcbiAgICBub3RpZmljYXRpb24ubXV0YWJsZUNvbnRlbnQgPSB0cnVlO1xuICAgIG5vdGlmaWNhdGlvbi5wYXlsb2FkID0gbm90ZS5kYXRhO1xuICB9XG5cbiAgaWYobm90ZS5iYWRnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbm90aWZpY2F0aW9uLmJhZGdlID0gbm90ZS5iYWRnZTtcbiAgfVxuXG4gIHJldHVybiBwcm92aWRlci5zZW5kKG5vdGlmaWNhdGlvbiwgZGV2aWNlVG9rZW5zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjbGVhckJhZGdlcyA9IChkZXZpY2VUb2tlbnM6IHN0cmluZ1tdKTogUHJvbWlzZTxSZXNwb25zZXM+ID0+IHtcbiAgLy8gUHVzaCBub3RpZmljYXRpb24gdG8gZGV2aWNlXG4gIGNvbnN0IHByb3ZpZGVyID0gZ2V0QXBuUHJvdmlkZXIoKTtcbiAgY29uc3Qgbm90aWZpY2F0aW9uID0gbmV3IEFQTk5vdGlmaWNhdGlvbigpO1xuICBub3RpZmljYXRpb24uYmFkZ2UgPSAwO1xuXG4gIHJldHVybiBwcm92aWRlci5zZW5kKG5vdGlmaWNhdGlvbiwgZGV2aWNlVG9rZW5zKTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFNQSxPQUFRLGdCQUFnQkEsRUFBaUIsWUFBQUMsTUFBMEIsTUFFbkUsT0FBUSxVQUFBQyxNQUFhLFlBSWQsTUFBTUMsRUFBaUIsSUFBTSxJQUFJRixFQUFTLENBQy9DLEdBQUlDLEVBQU8sSUFBSSxZQUFZLEVBQzNCLEtBQU1BLEVBQU8sSUFBSSxjQUFjLEVBQy9CLElBQUtBLEVBQU8sSUFBSSxhQUFhLEVBQzdCLFdBQVlBLEVBQU8sSUFBSSxhQUFhLElBQU0sTUFDNUMsQ0FBQyxFQUVZRSxFQUFtQixDQUFDQyxFQUF3QkMsSUFBK0MsQ0FFdEcsTUFBTUMsRUFBcUJKLEVBQWUsRUFDcENLLEVBQWdDLElBQUlSLEVBQzFDLE9BQUFRLEVBQWEsTUFBUU4sRUFBTyxJQUFJLFlBQVksRUFDNUNNLEVBQWEsTUFBUUYsRUFBSyxRQUV2QkEsRUFBSyxPQUNORSxFQUFhLGVBQWlCLEdBQzlCQSxFQUFhLFFBQVVGLEVBQUssTUFHM0JBLEVBQUssUUFBVSxTQUNoQkUsRUFBYSxNQUFRRixFQUFLLE9BR3JCQyxFQUFTLEtBQUtDLEVBQWNILENBQVksQ0FDakQsRUFFYUksRUFBZUosR0FBK0MsQ0FFekUsTUFBTUUsRUFBV0osRUFBZSxFQUMxQkssRUFBZSxJQUFJUixFQUN6QixPQUFBUSxFQUFhLE1BQVEsRUFFZEQsRUFBUyxLQUFLQyxFQUFjSCxDQUFZLENBQ2pEIiwKICAibmFtZXMiOiBbIkFQTk5vdGlmaWNhdGlvbiIsICJQcm92aWRlciIsICJDb25maWciLCAiZ2V0QXBuUHJvdmlkZXIiLCAicHVzaE5vdGlmaWNhdGlvbiIsICJkZXZpY2VUb2tlbnMiLCAibm90ZSIsICJwcm92aWRlciIsICJub3RpZmljYXRpb24iLCAiY2xlYXJCYWRnZXMiXQp9Cg==