@nlabs/reaktor 0.1.0 → 0.1.2

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 (112) hide show
  1. package/package.json +13 -13
  2. package/src/config.ts +8 -2
  3. package/src/data/conversations.ts +2 -4
  4. package/src/data/email.ts +3 -4
  5. package/src/data/files.ts +2 -2
  6. package/src/data/images.ts +5 -5
  7. package/src/data/posts.ts +239 -167
  8. package/src/data/users.ts +0 -2
  9. package/src/types/apps.ts +0 -1
  10. package/src/types/auth.ts +1 -0
  11. package/src/types/files.ts +0 -2
  12. package/src/types/groups.ts +0 -1
  13. package/src/types/images.ts +0 -1
  14. package/src/types/locations.ts +0 -1
  15. package/src/types/payments.ts +0 -5
  16. package/src/types/posts.ts +13 -4
  17. package/src/types/tags.ts +0 -1
  18. package/src/utils/auth.ts +35 -2
  19. package/src/utils/graphql.ts +7 -0
  20. package/src/utils/index.ts +1 -0
  21. package/lib/config.d.ts +0 -21
  22. package/lib/config.js +0 -127
  23. package/lib/data/conversations.d.ts +0 -6
  24. package/lib/data/conversations.js +0 -201
  25. package/lib/data/dynamodb.d.ts +0 -8
  26. package/lib/data/dynamodb.js +0 -139
  27. package/lib/data/email.d.ts +0 -7
  28. package/lib/data/email.js +0 -164
  29. package/lib/data/files.d.ts +0 -16
  30. package/lib/data/files.js +0 -407
  31. package/lib/data/groups.d.ts +0 -13
  32. package/lib/data/groups.js +0 -354
  33. package/lib/data/images.d.ts +0 -12
  34. package/lib/data/images.js +0 -668
  35. package/lib/data/index.d.ts +0 -19
  36. package/lib/data/index.js +0 -24
  37. package/lib/data/ios.d.ts +0 -6
  38. package/lib/data/ios.js +0 -302
  39. package/lib/data/locations.d.ts +0 -3
  40. package/lib/data/locations.js +0 -132
  41. package/lib/data/messages.d.ts +0 -9
  42. package/lib/data/messages.js +0 -248
  43. package/lib/data/notifications.d.ts +0 -5
  44. package/lib/data/notifications.js +0 -42
  45. package/lib/data/payments.d.ts +0 -11
  46. package/lib/data/payments.js +0 -748
  47. package/lib/data/posts.d.ts +0 -14
  48. package/lib/data/posts.js +0 -458
  49. package/lib/data/reactions.d.ts +0 -6
  50. package/lib/data/reactions.js +0 -218
  51. package/lib/data/s3.d.ts +0 -6
  52. package/lib/data/s3.js +0 -103
  53. package/lib/data/search.d.ts +0 -3
  54. package/lib/data/search.js +0 -98
  55. package/lib/data/sms.d.ts +0 -3
  56. package/lib/data/sms.js +0 -59
  57. package/lib/data/subscription.d.ts +0 -7
  58. package/lib/data/subscription.js +0 -284
  59. package/lib/data/tags.d.ts +0 -14
  60. package/lib/data/tags.js +0 -304
  61. package/lib/data/users.d.ts +0 -12
  62. package/lib/data/users.js +0 -312
  63. package/lib/index.d.ts +0 -3
  64. package/lib/index.js +0 -8
  65. package/lib/types/apps.d.ts +0 -44
  66. package/lib/types/apps.js +0 -2
  67. package/lib/types/arangodb.d.ts +0 -17
  68. package/lib/types/arangodb.js +0 -2
  69. package/lib/types/auth.d.ts +0 -9
  70. package/lib/types/auth.js +0 -2
  71. package/lib/types/conversations.d.ts +0 -6
  72. package/lib/types/conversations.js +0 -2
  73. package/lib/types/email.d.ts +0 -12
  74. package/lib/types/email.js +0 -2
  75. package/lib/types/files.d.ts +0 -28
  76. package/lib/types/files.js +0 -2
  77. package/lib/types/google.d.ts +0 -27
  78. package/lib/types/google.js +0 -2
  79. package/lib/types/groups.d.ts +0 -22
  80. package/lib/types/groups.js +0 -2
  81. package/lib/types/images.d.ts +0 -25
  82. package/lib/types/images.js +0 -2
  83. package/lib/types/index.d.ts +0 -17
  84. package/lib/types/index.js +0 -22
  85. package/lib/types/locations.d.ts +0 -21
  86. package/lib/types/locations.js +0 -2
  87. package/lib/types/messages.d.ts +0 -12
  88. package/lib/types/messages.js +0 -2
  89. package/lib/types/notifications.d.ts +0 -19
  90. package/lib/types/notifications.js +0 -2
  91. package/lib/types/payments.d.ts +0 -119
  92. package/lib/types/payments.js +0 -2
  93. package/lib/types/posts.d.ts +0 -20
  94. package/lib/types/posts.js +0 -2
  95. package/lib/types/reactions.d.ts +0 -4
  96. package/lib/types/reactions.js +0 -2
  97. package/lib/types/tags.d.ts +0 -10
  98. package/lib/types/tags.js +0 -2
  99. package/lib/types/users.d.ts +0 -78
  100. package/lib/types/users.js +0 -2
  101. package/lib/utils/analytics.d.ts +0 -3
  102. package/lib/utils/analytics.js +0 -47
  103. package/lib/utils/arangodb.d.ts +0 -9
  104. package/lib/utils/arangodb.js +0 -98
  105. package/lib/utils/auth.d.ts +0 -2
  106. package/lib/utils/auth.js +0 -43
  107. package/lib/utils/index.d.ts +0 -5
  108. package/lib/utils/index.js +0 -10
  109. package/lib/utils/objects.d.ts +0 -3
  110. package/lib/utils/objects.js +0 -34
  111. package/lib/utils/redis.d.ts +0 -1
  112. package/lib/utils/redis.js +0 -15
@@ -9,7 +9,6 @@ export interface PaymentCardType {
9
9
  readonly acceptedTerms?: boolean;
10
10
  readonly accountNumber?: string;
11
11
  readonly added?: number;
12
- readonly appId?: string;
13
12
  readonly brand?: string;
14
13
  city?: string;
15
14
  country?: string;
@@ -35,7 +34,6 @@ export interface PaymentBankAccount {
35
34
  export interface PaymentCharge {
36
35
  readonly added?: number;
37
36
  readonly amount?: number;
38
- readonly appId?: string;
39
37
  readonly capture?: boolean;
40
38
  readonly cardId?: string;
41
39
  readonly chargeFailCode?: string;
@@ -51,7 +49,6 @@ export interface PaymentCharge {
51
49
  export interface PaymentTransfer {
52
50
  readonly added?: number;
53
51
  readonly amount?: number;
54
- readonly appId?: string;
55
52
  readonly currency?: string;
56
53
  readonly description?: string;
57
54
  readonly modified?: number;
@@ -64,7 +61,6 @@ export interface PaymentPlan {
64
61
  readonly _key?: string;
65
62
  readonly added?: number;
66
63
  readonly amount?: number;
67
- readonly appId?: string;
68
64
  readonly currency?: string;
69
65
  readonly description?: string;
70
66
  readonly id?: string;
@@ -77,7 +73,6 @@ export interface PaymentPlan {
77
73
  export interface PaymentSubscription {
78
74
  readonly _key?: string;
79
75
  readonly added?: number;
80
- readonly appId?: string;
81
76
  readonly cancelDate?: number;
82
77
  readonly expires?: number;
83
78
  readonly id?: string;
@@ -9,17 +9,26 @@ export interface PostType {
9
9
  readonly _id?: string;
10
10
  readonly _key?: string;
11
11
  readonly added?: number;
12
- readonly appId?: string;
12
+ content?: string;
13
13
  files?: FileType[];
14
14
  readonly groupId?: string;
15
- readonly id?: string;
15
+ readonly postId?: string;
16
+ readonly latitude?: number;
17
+ readonly location?: string;
18
+ readonly longitude?: number;
16
19
  readonly modified?: number;
17
20
  name?: string;
18
21
  parentId?: string;
19
22
  privacy?: string;
20
23
  tags?: TagType[];
21
- text?: string;
22
- title?: string;
23
24
  type?: string;
24
25
  readonly userId?: string;
25
26
  }
27
+
28
+ export interface PostOptions {
29
+ readonly latitude?: number;
30
+ readonly longitude?: number;
31
+ readonly from?: number;
32
+ readonly to?: number;
33
+ readonly type?: string;
34
+ }
package/src/types/tags.ts CHANGED
@@ -6,7 +6,6 @@ export interface TagType {
6
6
  readonly _id?: string;
7
7
  readonly _key?: string;
8
8
  readonly added?: number;
9
- readonly appId?: string;
10
9
  readonly description?: string;
11
10
  readonly id?: string;
12
11
  readonly modified?: number;
package/src/utils/auth.ts CHANGED
@@ -2,10 +2,43 @@
2
2
  * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */
5
+ import isPlainObject from 'lodash/isPlainObject';
6
+ import isString from 'lodash/isString';
7
+
5
8
  import {ApiContext} from '../types/auth';
6
9
 
7
- export const parseContext = (data: any): ApiContext => {
8
- const {appId, authorizer = {}, identity, isOffline} = data;
10
+ export const parseJsonData = (data): any => {
11
+ try {
12
+ return JSON.parse(data);
13
+ } catch(error) {
14
+ return data;
15
+ }
16
+ };
17
+
18
+ export const getLambdaData = (data: any) => {
19
+ if(isPlainObject(data)) {
20
+ const queryData = data.body || data['body-json'];
21
+ const {requestContext, isOffline} = data;
22
+
23
+ return {
24
+ body: queryData ? parseJsonData(queryData) : data,
25
+ context: requestContext ? {...requestContext, isOffline} : {isOffline}
26
+ };
27
+ } else if(isString(data)) {
28
+ return {
29
+ body: parseJsonData(data),
30
+ context: {}
31
+ };
32
+ }
33
+
34
+ return {
35
+ body: {},
36
+ context: {}
37
+ };
38
+ };
39
+
40
+ export const parseContext = (appId: string, data: any): ApiContext => {
41
+ const {authorizer = {}, identity, isOffline} = data;
9
42
  const {claims} = authorizer;
10
43
 
11
44
  if(claims) {
@@ -0,0 +1,7 @@
1
+ import graphqlFields from 'graphql-fields';
2
+
3
+ export const getGqlFields = (info) => {
4
+ const fields = graphqlFields(info);
5
+ const methodName: string = Object.keys(fields)[0];
6
+ return Object.keys(fields[methodName]);
7
+ };
@@ -5,5 +5,6 @@
5
5
  export * from './analytics';
6
6
  export * from './auth';
7
7
  export * from './arangodb';
8
+ export * from './graphql';
8
9
  export * from './objects';
9
10
  export * from './redis';
package/lib/config.d.ts DELETED
@@ -1,21 +0,0 @@
1
- export interface AppConfig {
2
- readonly app?: object;
3
- readonly arangodb?: object;
4
- readonly aws?: object;
5
- readonly giphy?: object;
6
- readonly google?: object;
7
- readonly image?: object;
8
- readonly redis?: object;
9
- readonly stripe?: object;
10
- readonly twilio?: object;
11
- }
12
- export interface EnvConfig {
13
- readonly default: AppConfig;
14
- readonly development: AppConfig;
15
- readonly production: AppConfig;
16
- readonly test: AppConfig;
17
- }
18
- export declare class Config {
19
- static values: EnvConfig;
20
- static get(path: string | string[]): any;
21
- }
package/lib/config.js DELETED
@@ -1,127 +0,0 @@
1
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
2
-
3
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
4
-
5
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
6
-
7
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
-
9
- /**
10
- * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
11
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
12
- */
13
- import _get from 'lodash/get';
14
- import merge from 'lodash/merge';
15
-
16
- var appPackage = require('../package.json');
17
-
18
- var _process$env = process.env,
19
- arangodbDatabase = _process$env.arangodbDatabase,
20
- arangodbPassword = _process$env.arangodbPassword,
21
- _process$env$arangodb = _process$env.arangodbPort,
22
- arangodbPort = _process$env$arangodb === void 0 ? '8529' : _process$env$arangodb,
23
- arangodbUrl = _process$env.arangodbUrl,
24
- arangodbUsername = _process$env.arangodbUsername;
25
- export var Config =
26
- /*#__PURE__*/
27
- function () {
28
- function Config() {
29
- _classCallCheck(this, Config);
30
- }
31
-
32
- _createClass(Config, null, [{
33
- key: "get",
34
- value: function get(path) {
35
- var environment = process.env.stage || 'development';
36
- var configValues = merge(this.values.default, this.values[environment], {
37
- environment: environment
38
- });
39
- return _get(configValues, path);
40
- }
41
- }]);
42
-
43
- return Config;
44
- }();
45
-
46
- _defineProperty(Config, "values", {
47
- default: {
48
- app: {
49
- name: 'reaktor',
50
- url: 'reaktor.io',
51
- version: appPackage.version
52
- },
53
- arangodb: {
54
- apiUrl: "http://".concat(arangodbUsername, ":").concat(arangodbPassword, "@").concat(arangodbUrl, ":").concat(arangodbPort),
55
- database: arangodbDatabase,
56
- dump: '/Applications/ArangoDB-CLI.app/Contents/MacOS/arangodump',
57
- password: arangodbPassword,
58
- port: arangodbPort,
59
- restore: '/Applications/ArangoDB-CLI.app/Contents/MacOS/arangorestore',
60
- url: arangodbUrl,
61
- username: arangodbUsername
62
- },
63
- aws: {
64
- Bucket: 'dev.reaktor.io',
65
- accessKeyId: 'AKIAJIYDT3EA2ZFMTJNA',
66
- maxRetries: 3,
67
- region: 'us-east-1',
68
- secretAccessKey: 'bUssQRtJTZC7geF9RDH5KCn8CalVnf2VT34yqS+9',
69
- signatureVersion: 'v4'
70
- },
71
- giphy: {
72
- key: 'dc6zaTOxFJmzC'
73
- },
74
- google: {
75
- analytics: {
76
- accountId: '78158717',
77
- trackingId: 'UA-78158717-1'
78
- },
79
- geocode: {
80
- key: 'AIzaSyBwjmpBjWhiJoBCZiYzRurM9m4WnCxslv0',
81
- url: 'https://maps.googleapis.com/maps/api/geocode/json'
82
- },
83
- key: 'AIzaSyC3_f2Us3y0qjbyMJ-4t5ObtCzfq_FHIgQ'
84
- },
85
- image: {
86
- imgQuality: 90,
87
- imgSize: 1500,
88
- thmQuality: 80,
89
- thmSize: 150
90
- },
91
- redis: {
92
- host: '127.0.0.1',
93
- port: 6379
94
- },
95
- stripe: {
96
- token: 'sk_test_LS956be57YUXTB5a4sLGb5BQ'
97
- },
98
- twilio: {
99
- number: '+15005550006',
100
- sid: 'AC6bd7f513cbed2e5134c650be06cc732e',
101
- token: '520ae739e761bab759b147f1ad28278f'
102
- }
103
- },
104
- development: {},
105
- production: {
106
- arangodb: {
107
- dump: '/usr/bin/arangodump',
108
- restore: '/usr/bin/arangorestore'
109
- },
110
- aws: {
111
- Bucket: 'box.reaktor.io'
112
- },
113
- redis: {
114
- host: 'reaktor-redis.ehcvnt.0001.use1.cache.amazonaws.com'
115
- },
116
- stripe: {
117
- token: 'sk_live_bElZl8RLhMCJy33KG4lyLD4o'
118
- },
119
- twilio: {
120
- number: '+18554165227',
121
- sid: 'AC90b0528a911e652d643329a4d7b4d2c7',
122
- token: 'a7941d173bd4846d0966a186e9865b72'
123
- }
124
- },
125
- test: {}
126
- });
127
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25maWcudHMiXSwibmFtZXMiOlsiZ2V0IiwibWVyZ2UiLCJhcHBQYWNrYWdlIiwicmVxdWlyZSIsInByb2Nlc3MiLCJlbnYiLCJhcmFuZ29kYkRhdGFiYXNlIiwiYXJhbmdvZGJQYXNzd29yZCIsImFyYW5nb2RiUG9ydCIsImFyYW5nb2RiVXJsIiwiYXJhbmdvZGJVc2VybmFtZSIsIkNvbmZpZyIsInBhdGgiLCJlbnZpcm9ubWVudCIsInN0YWdlIiwiY29uZmlnVmFsdWVzIiwidmFsdWVzIiwiZGVmYXVsdCIsImFwcCIsIm5hbWUiLCJ1cmwiLCJ2ZXJzaW9uIiwiYXJhbmdvZGIiLCJhcGlVcmwiLCJkYXRhYmFzZSIsImR1bXAiLCJwYXNzd29yZCIsInBvcnQiLCJyZXN0b3JlIiwidXNlcm5hbWUiLCJhd3MiLCJCdWNrZXQiLCJhY2Nlc3NLZXlJZCIsIm1heFJldHJpZXMiLCJyZWdpb24iLCJzZWNyZXRBY2Nlc3NLZXkiLCJzaWduYXR1cmVWZXJzaW9uIiwiZ2lwaHkiLCJrZXkiLCJnb29nbGUiLCJhbmFseXRpY3MiLCJhY2NvdW50SWQiLCJ0cmFja2luZ0lkIiwiZ2VvY29kZSIsImltYWdlIiwiaW1nUXVhbGl0eSIsImltZ1NpemUiLCJ0aG1RdWFsaXR5IiwidGhtU2l6ZSIsInJlZGlzIiwiaG9zdCIsInN0cmlwZSIsInRva2VuIiwidHdpbGlvIiwibnVtYmVyIiwic2lkIiwiZGV2ZWxvcG1lbnQiLCJwcm9kdWN0aW9uIiwidGVzdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7OztBQUlBLE9BQU9BLElBQVAsTUFBZ0IsWUFBaEI7QUFDQSxPQUFPQyxLQUFQLE1BQWtCLGNBQWxCOztBQXFCQSxJQUFNQyxVQUFlLEdBQUdDLE9BQU8sQ0FBQyxpQkFBRCxDQUEvQjs7bUJBRW1HQyxPQUFPLENBQUNDLEc7SUFBcEdDLGdCLGdCQUFBQSxnQjtJQUFrQkMsZ0IsZ0JBQUFBLGdCO3lDQUFrQkMsWTtJQUFBQSxZLHNDQUFlLE07SUFBUUMsVyxn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QUksRUFBRSxxQkFERTtBQUVSRyxNQUFBQSxPQUFPLEVBQUU7QUFGRCxLQURBO0FBS1ZFLElBQUFBLEdBQUcsRUFBRTtBQUNIQyxNQUFBQSxNQUFNLEVBQUU7QUFETCxLQUxLO0FBUVZrQixJQUFBQSxLQUFLLEVBQUU7QUFDTEMsTUFBQUEsSUFBSSxFQUFFO0FBREQsS0FSRztBQVdWQyxJQUFBQSxNQUFNLEVBQUU7QUFDTkMsTUFBQUEsS0FBSyxFQUFFO0FBREQsS0FYRTtBQWNWQyxJQUFBQSxNQUFNLEVBQUU7QUFDTkMsTUFBQUEsTUFBTSxFQUFFLGNBREY7QUFFTkMsTUFBQUEsR0FBRyxFQUFFLG9DQUZDO0FBR05ILE1BQUFBLEtBQUssRUFBRTtBQUhEO0FBZEUsR0E1RGE7QUFnRnpCTSxFQUFBQSxJQUFJLEVBQUU7QUFoRm1CLEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0JztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gvbWVyZ2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcENvbmZpZyB7XG4gIHJlYWRvbmx5IGFwcD86IG9iamVjdDtcbiAgcmVhZG9ubHkgYXJhbmdvZGI/OiBvYmplY3Q7XG4gIHJlYWRvbmx5IGF3cz86IG9iamVjdDtcbiAgcmVhZG9ubHkgZ2lwaHk/OiBvYmplY3Q7XG4gIHJlYWRvbmx5IGdvb2dsZT86IG9iamVjdDtcbiAgcmVhZG9ubHkgaW1hZ2U/OiBvYmplY3Q7XG4gIHJlYWRvbmx5IHJlZGlzPzogb2JqZWN0O1xuICByZWFkb25seSBzdHJpcGU/OiBvYmplY3Q7XG4gIHJlYWRvbmx5IHR3aWxpbz86IG9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnZDb25maWcge1xuICByZWFkb25seSBkZWZhdWx0OiBBcHBDb25maWc7XG4gIHJlYWRvbmx5IGRldmVsb3BtZW50OiBBcHBDb25maWc7XG4gIHJlYWRvbmx5IHByb2R1Y3Rpb246IEFwcENvbmZpZztcbiAgcmVhZG9ubHkgdGVzdDogQXBwQ29uZmlnO1xufVxuXG5jb25zdCBhcHBQYWNrYWdlOiBhbnkgPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKTtcblxuY29uc3Qge2FyYW5nb2RiRGF0YWJhc2UsIGFyYW5nb2RiUGFzc3dvcmQsIGFyYW5nb2RiUG9ydCA9ICc4NTI5JywgYXJhbmdvZGJVcmwsIGFyYW5nb2RiVXNlcm5hbWV9ID0gcHJvY2Vzcy5lbnY7XG5cbmV4cG9ydCBjbGFzcyBDb25maWcge1xuICBzdGF0aWMgdmFsdWVzOiBFbnZDb25maWcgPSB7XG4gICAgZGVmYXVsdDoge1xuICAgICAgYXBwOiB7XG4gICAgICAgIG5hbWU6ICdyZWFrdG9yJyxcbiAgICAgICAgdXJsOiAncmVha3Rvci5pbycsXG4gICAgICAgIHZlcnNpb246IGFwcFBhY2thZ2UudmVyc2lvblxuICAgICAgfSxcbiAgICAgIGFyYW5nb2RiOiB7XG4gICAgICAgIGFwaVVybDogYGh0dHA6Ly8ke2FyYW5nb2RiVXNlcm5hbWV9OiR7YXJhbmdvZGJQYXNzd29yZH1AJHthcmFuZ29kYlVybH06JHthcmFuZ29kYlBvcnR9YCxcbiAgICAgICAgZGF0YWJhc2U6IGFyYW5nb2RiRGF0YWJhc2UsXG4gICAgICAgIGR1bXA6ICcvQXBwbGljYXRpb25zL0FyYW5nb0RCLUNMSS5hcHAvQ29udGVudHMvTWFjT1MvYXJhbmdvZHVtcCcsXG4gICAgICAgIHBhc3N3b3JkOiBhcmFuZ29kYlBhc3N3b3JkLFxuICAgICAgICBwb3J0OiBhcmFuZ29kYlBvcnQsXG4gICAgICAgIHJlc3RvcmU6ICcvQXBwbGljYXRpb25zL0FyYW5nb0RCLUNMSS5hcHAvQ29udGVudHMvTWFjT1MvYXJhbmdvcmVzdG9yZScsXG4gICAgICAgIHVybDogYXJhbmdvZGJVcmwsXG4gICAgICAgIHVzZXJuYW1lOiBhcmFuZ29kYlVzZXJuYW1lXG4gICAgICB9LFxuICAgICAgYXdzOiB7XG4gICAgICAgIEJ1Y2tldDogJ2Rldi5yZWFrdG9yLmlvJyxcbiAgICAgICAgYWNjZXNzS2V5SWQ6ICdBS0lBSklZRFQzRUEyWkZNVEpOQScsXG4gICAgICAgIG1heFJldHJpZXM6IDMsXG4gICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgIHNlY3JldEFjY2Vzc0tleTogJ2JVc3NRUnRKVFpDN2dlRjlSREg1S0NuOENhbFZuZjJWVDM0eXFTKzknLFxuICAgICAgICBzaWduYXR1cmVWZXJzaW9uOiAndjQnXG4gICAgICB9LFxuICAgICAgZ2lwaHk6IHtcbiAgICAgICAga2V5OiAnZGM2emFUT3hGSm16QydcbiAgICAgIH0sXG4gICAgICBnb29nbGU6IHtcbiAgICAgICAgYW5hbHl0aWNzOiB7XG4gICAgICAgICAgYWNjb3VudElkOiAnNzgxNTg3MTcnLFxuICAgICAgICAgIHRyYWNraW5nSWQ6ICdVQS03ODE1ODcxNy0xJ1xuICAgICAgICB9LFxuICAgICAgICBnZW9jb2RlOiB7XG4gICAgICAgICAga2V5OiAnQUl6YVN5QndqbXBCaldoaUpvQkNaaVl6UnVyTTltNFduQ3hzbHYwJyxcbiAgICAgICAgICB1cmw6ICdodHRwczovL21hcHMuZ29vZ2xlYXBpcy5jb20vbWFwcy9hcGkvZ2VvY29kZS9qc29uJ1xuICAgICAgICB9LFxuICAgICAgICBrZXk6ICdBSXphU3lDM19mMlVzM3kwcWpieU1KLTR0NU9idEN6ZnFfRkhJZ1EnXG4gICAgICB9LFxuICAgICAgaW1hZ2U6IHtcbiAgICAgICAgaW1nUXVhbGl0eTogOTAsXG4gICAgICAgIGltZ1NpemU6IDE1MDAsXG4gICAgICAgIHRobVF1YWxpdHk6IDgwLFxuICAgICAgICB0aG1TaXplOiAxNTBcbiAgICAgIH0sXG4gICAgICByZWRpczoge1xuICAgICAgICBob3N0OiAnMTI3LjAuMC4xJyxcbiAgICAgICAgcG9ydDogNjM3OVxuICAgICAgfSxcbiAgICAgIHN0cmlwZToge1xuICAgICAgICB0b2tlbjogJ3NrX3Rlc3RfTFM5NTZiZTU3WVVYVEI1YTRzTEdiNUJRJ1xuICAgICAgfSxcbiAgICAgIHR3aWxpbzoge1xuICAgICAgICBudW1iZXI6ICcrMTUwMDU1NTAwMDYnLFxuICAgICAgICBzaWQ6ICdBQzZiZDdmNTEzY2JlZDJlNTEzNGM2NTBiZTA2Y2M3MzJlJyxcbiAgICAgICAgdG9rZW46ICc1MjBhZTczOWU3NjFiYWI3NTliMTQ3ZjFhZDI4Mjc4ZidcbiAgICAgIH1cbiAgICB9LFxuICAgIGRldmVsb3BtZW50OiB7XG4gICAgfSxcbiAgICBwcm9kdWN0aW9uOiB7XG4gICAgICBhcmFuZ29kYjoge1xuICAgICAgICBkdW1wOiAnL3Vzci9iaW4vYXJhbmdvZHVtcCcsXG4gICAgICAgIHJlc3RvcmU6ICcvdXNyL2Jpbi9hcmFuZ29yZXN0b3JlJyxcbiAgICAgIH0sXG4gICAgICBhd3M6IHtcbiAgICAgICAgQnVja2V0OiAnYm94LnJlYWt0b3IuaW8nXG4gICAgICB9LFxuICAgICAgcmVkaXM6IHtcbiAgICAgICAgaG9zdDogJ3JlYWt0b3ItcmVkaXMuZWhjdm50LjAwMDEudXNlMS5jYWNoZS5hbWF6b25hd3MuY29tJ1xuICAgICAgfSxcbiAgICAgIHN0cmlwZToge1xuICAgICAgICB0b2tlbjogJ3NrX2xpdmVfYkVsWmw4UkxoTUNKeTMzS0c0bHlMRDRvJ1xuICAgICAgfSxcbiAgICAgIHR3aWxpbzoge1xuICAgICAgICBudW1iZXI6ICcrMTg1NTQxNjUyMjcnLFxuICAgICAgICBzaWQ6ICdBQzkwYjA1MjhhOTExZTY1MmQ2NDMzMjlhNGQ3YjRkMmM3JyxcbiAgICAgICAgdG9rZW46ICdhNzk0MWQxNzNiZDQ4NDZkMDk2NmExODZlOTg2NWI3MidcbiAgICAgIH1cbiAgICB9LFxuICAgIHRlc3Q6IHtcbiAgICB9XG4gIH07XG5cbiAgc3RhdGljIGdldChwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSk6IGFueSB7XG4gICAgY29uc3QgZW52aXJvbm1lbnQ6IHN0cmluZyA9IHByb2Nlc3MuZW52LnN0YWdlIHx8ICdkZXZlbG9wbWVudCc7XG4gICAgY29uc3QgY29uZmlnVmFsdWVzOiBvYmplY3QgPSBtZXJnZSh0aGlzLnZhbHVlcy5kZWZhdWx0LCB0aGlzLnZhbHVlc1tlbnZpcm9ubWVudF0sIHtlbnZpcm9ubWVudH0pO1xuICAgIHJldHVybiBnZXQoY29uZmlnVmFsdWVzLCBwYXRoKTtcbiAgfVxufVxuIl19
@@ -1,6 +0,0 @@
1
- import { ApiContext } from 'types/auth';
2
- import { ConversationType } from '../types';
3
- export declare const getConversationList: (context: ApiContext, from: number, to: number) => Promise<ConversationType[]>;
4
- export declare const getDirectConversation: (context: ApiContext, userId: string) => Promise<ConversationType>;
5
- export declare const getConversation: (context: ApiContext, convoId: string) => Promise<ConversationType>;
6
- export declare const updateConversation: (context: ApiContext, item: any) => Promise<ConversationType>;
@@ -1,201 +0,0 @@
1
- function _templateObject3() {
2
- var data = _taggedTemplateLiteral(["UPSERT {_key: ", "}\n INSERT ", "\n UPDATE ", "\n IN conversations RETURN NEW"]);
3
-
4
- _templateObject3 = function _templateObject3() {
5
- return data;
6
- };
7
-
8
- return data;
9
- }
10
-
11
- function _templateObject2() {
12
- var data = _taggedTemplateLiteral(["FOR c IN conversations\n FILTER ", " == c._key && IS_LIST(c.users) && POSITION(c.users, ", ", false)\n LET u = (\n FOR g IN c.users\n FOR u IN users\n FILTER g == u._key\n RETURN {_key:u._key, first:u.first, last:u.last, name:u.name, email:u.email, username:u.username, photo:u.photo }\n )\n FILTER LENGTH(u) > 1\n LIMIT 1\n RETURN MERGE(c, {users: u})"]);
13
-
14
- _templateObject2 = function _templateObject2() {
15
- return data;
16
- };
17
-
18
- return data;
19
- }
20
-
21
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
22
-
23
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
24
-
25
- function _templateObject() {
26
- var data = _taggedTemplateLiteral(["FOR c IN conversations\n FILTER LENGTH(c.users) == 2 &&\n POSITION(c.users, ", ", false) &&\n POSITION(c.users, ", ", false)\n LET u = (\n FOR g IN c.users\n FOR user IN users\n FILTER user._key == g\n RETURN user\n )\n LIMIT 1\n RETURN MERGE(c, {users: u})"]);
27
-
28
- _templateObject = function _templateObject() {
29
- return data;
30
- };
31
-
32
- return data;
33
- }
34
-
35
- function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
36
-
37
- /**
38
- * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
39
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
40
- */
41
- import { createHash, parseId } from '@nlabs/utils';
42
- import { aql } from 'arangojs';
43
- import cloneDeep from 'lodash/cloneDeep';
44
- import identity from 'lodash/identity';
45
- import isEmpty from 'lodash/isEmpty';
46
- import pick from 'lodash/pick';
47
- import { getLimit, useDb } from '../utils';
48
- import { logError } from '../utils/analytics';
49
- import { getUrlImages } from './images';
50
- import { getDisplayName } from './users';
51
- var eventCategory = 'conversations';
52
- export var getConversationList = function getConversationList(context, from, to) {
53
- var action = 'getList';
54
- var database = context.database,
55
- sessionId = context.userId;
56
- var limit = getLimit(from, to);
57
- var aqlQry = "FOR c IN conversations\n FILTER POSITION(c.users, \"".concat(sessionId, "\", false)\n LET u = (\n FOR g IN c.users\n FOR u IN users\n FILTER g == u._key\n RETURN {_key:u._key, first:u.first, last:u.last, name:u.name, email:u.email, username:u.username, photo:u.photo }\n )\n FILTER LENGTH(u) > 1\n ").concat(limit.aql, "\n RETURN {_key:c._key, name: c.name, direct: c.direct, users: u}");
58
- return useDb(database).query(aqlQry).then(function (cursor) {
59
- return cursor.all();
60
- }).catch(function (error) {
61
- return logError({
62
- action: action,
63
- category: eventCategory,
64
- label: 'db_error'
65
- }, error, context).then(function () {
66
- return null;
67
- });
68
- });
69
- };
70
- export var getDirectConversation = function getDirectConversation(context, userId) {
71
- var action = 'getDirect';
72
- var sessionApp = context.appId,
73
- database = context.database,
74
- sessionId = context.userId;
75
- var formatUserId = parseId(userId);
76
- var aqlQry = aql(_templateObject(), sessionId, formatUserId);
77
- return useDb(database).query(aqlQry).then(function (cursor) {
78
- return cursor.next();
79
- }).then(function () {
80
- var conversation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
81
- var _conversation$users = conversation.users,
82
- users = _conversation$users === void 0 ? [] : _conversation$users;
83
-
84
- if (users.length) {
85
- conversation.users = users.map(function (user) {
86
- var userKey = user._key,
87
- imgId = user.imgId;
88
- var thumbUrlData = {
89
- appId: sessionApp,
90
- directory: 'images',
91
- imgId: imgId,
92
- isThumb: true,
93
- type: 'users',
94
- typeId: userKey
95
- };
96
- return _objectSpread({}, user, {
97
- name: getDisplayName(user),
98
- thumb: getUrlImages(thumbUrlData)
99
- });
100
- });
101
- }
102
-
103
- return conversation;
104
- }).catch(function (error) {
105
- return logError({
106
- action: action,
107
- category: eventCategory,
108
- label: 'db_error'
109
- }, error, context).then(function () {
110
- return null;
111
- });
112
- });
113
- };
114
- export var getConversation = function getConversation(context, convoId) {
115
- var action = 'getItem';
116
- var sessionApp = context.appId,
117
- database = context.database,
118
- sessionId = context.userId;
119
- var formatConvoId = parseId(convoId);
120
- var aqlQry = aql(_templateObject2(), formatConvoId, sessionId);
121
- return useDb(database).query(aqlQry).then(function (cursor) {
122
- return cursor.next();
123
- }).then(function () {
124
- var conversation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
125
-
126
- if (!isEmpty(conversation)) {
127
- conversation.users = conversation.users.map(function (user) {
128
- var userKey = user._key,
129
- imgId = user.imgId;
130
- var thumbUrlData = {
131
- appId: sessionApp,
132
- directory: 'images',
133
- imgId: imgId,
134
- isThumb: true,
135
- type: 'users',
136
- typeId: userKey
137
- };
138
- return _objectSpread({}, user, {
139
- name: getDisplayName(user),
140
- thumb: getUrlImages(thumbUrlData)
141
- });
142
- });
143
- return conversation;
144
- }
145
-
146
- return {};
147
- }).catch(function (error) {
148
- return logError({
149
- action: action,
150
- category: eventCategory,
151
- label: 'db_error'
152
- }, error, context).then(function () {
153
- return null;
154
- });
155
- });
156
- };
157
- export var updateConversation = function updateConversation(context, item) {
158
- var action = 'update';
159
- var database = context.database,
160
- sessionId = context.userId;
161
-
162
- var _pick = pick(item, identity),
163
- direct = _pick.direct,
164
- id = _pick.id,
165
- name = _pick.name,
166
- users = _pick.users;
167
-
168
- var rcpt = users || [];
169
- var formatId = item.id || createHash("convo-".concat(sessionId, "-").concat(rcpt.join('')));
170
- var now = Date.now();
171
- var update = {
172
- // Direct message
173
- direct: !!direct ? direct : undefined,
174
- modified: now,
175
- name: !!name ? name : undefined,
176
- // Users
177
- users: !!users ? users : undefined
178
- };
179
-
180
- var insert = _objectSpread({}, cloneDeep(update), {
181
- _key: formatId,
182
- added: now
183
- });
184
-
185
- var aqlQry = aql(_templateObject3(), id, insert, update);
186
- return useDb(database).query(aqlQry).then(function (cursor) {
187
- return cursor.next();
188
- }).then(function () {
189
- var conversation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
190
- return conversation;
191
- }).catch(function (error) {
192
- return logError({
193
- action: action,
194
- category: eventCategory,
195
- label: 'db_error'
196
- }, error, context).then(function () {
197
- return null;
198
- });
199
- });
200
- };
201
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2NvbnZlcnNhdGlvbnMudHMiXSwibmFtZXMiOlsiY3JlYXRlSGFzaCIsInBhcnNlSWQiLCJhcWwiLCJjbG9uZURlZXAiLCJpZGVudGl0eSIsImlzRW1wdHkiLCJwaWNrIiwiZ2V0TGltaXQiLCJ1c2VEYiIsImxvZ0Vycm9yIiwiZ2V0VXJsSW1hZ2VzIiwiZ2V0RGlzcGxheU5hbWUiLCJldmVudENhdGVnb3J5IiwiZ2V0Q29udmVyc2F0aW9uTGlzdCIsImNvbnRleHQiLCJmcm9tIiwidG8iLCJhY3Rpb24iLCJkYXRhYmFzZSIsInNlc3Npb25JZCIsInVzZXJJZCIsImxpbWl0IiwiYXFsUXJ5IiwicXVlcnkiLCJ0aGVuIiwiY3Vyc29yIiwiYWxsIiwiY2F0Y2giLCJlcnJvciIsImNhdGVnb3J5IiwibGFiZWwiLCJnZXREaXJlY3RDb252ZXJzYXRpb24iLCJzZXNzaW9uQXBwIiwiYXBwSWQiLCJmb3JtYXRVc2VySWQiLCJuZXh0IiwiY29udmVyc2F0aW9uIiwidXNlcnMiLCJsZW5ndGgiLCJtYXAiLCJ1c2VyIiwidXNlcktleSIsIl9rZXkiLCJpbWdJZCIsInRodW1iVXJsRGF0YSIsImRpcmVjdG9yeSIsImlzVGh1bWIiLCJ0eXBlIiwidHlwZUlkIiwibmFtZSIsInRodW1iIiwiZ2V0Q29udmVyc2F0aW9uIiwiY29udm9JZCIsImZvcm1hdENvbnZvSWQiLCJ1cGRhdGVDb252ZXJzYXRpb24iLCJpdGVtIiwiZGlyZWN0IiwiaWQiLCJyY3B0IiwiZm9ybWF0SWQiLCJqb2luIiwibm93IiwiRGF0ZSIsInVwZGF0ZSIsInVuZGVmaW5lZCIsIm1vZGlmaWVkIiwiaW5zZXJ0IiwiYWRkZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0FBSUEsU0FBUUEsVUFBUixFQUFvQkMsT0FBcEIsUUFBa0MsY0FBbEM7QUFDQSxTQUFRQyxHQUFSLFFBQWtCLFVBQWxCO0FBR0EsT0FBT0MsU0FB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QUFDQTNCLElBQUFBLEtBQUssRUFBRSxDQUFDLENBQUNBLEtBQUYsR0FBVUEsS0FBVixHQUFrQjJCO0FBTlAsR0FBcEI7O0FBU0EsTUFBTUUsTUFBVyxxQkFDWi9ELFNBQVMsQ0FBQzRELE1BQUQsQ0FERztBQUVmckIsSUFBQUEsSUFBSSxFQUFFaUIsUUFGUztBQUdmUSxJQUFBQSxLQUFLLEVBQUVOO0FBSFEsSUFBakI7O0FBTUEsTUFBTXZDLE1BQWdCLEdBQUdwQixHQUFILHFCQUF1QnVELEVBQXZCLEVBQ1hTLE1BRFcsRUFFWEgsTUFGVyxDQUF0QjtBQUtBLFNBQU92RCxLQUFLLENBQUNVLFFBQUQsQ0FBTCxDQUFnQkssS0FBaEIsQ0FBc0JELE1BQXRCLEVBQ0pFLElBREksQ0FDQyxVQUFDQyxNQUFEO0FBQUEsV0FBeUJBLE1BQU0sQ0FBQ1UsSUFBUCxFQUF6QjtBQUFBLEdBREQsRUFFSlgsSUFGSSxDQUVDO0FBQUEsUUFBQ1ksWUFBRCx1RUFBa0MsRUFBbEM7QUFBQSxXQUF5Q0EsWUFBekM7QUFBQSxHQUZELEVBR0pULEtBSEksQ0FHRSxVQUFDQyxLQUFEO0FBQUEsV0FBa0JuQixRQUFRLENBQUM7QUFDaENRLE1BQUFBLE1BQU0sRUFBTkEsTUFEZ0M7QUFFaENZLE1BQUFBLFFBQVEsRUFBRWpCLGFBRnNCO0FBR2hDa0IsTUFBQUEsS0FBSyxFQUFFO0FBSHlCLEtBQUQsRUFJOUJGLEtBSjhCLEVBSXZCZCxPQUp1QixDQUFSLENBSU5VLElBSk0sQ0FJRDtBQUFBLGFBQU0sSUFBTjtBQUFBLEtBSkMsQ0FBbEI7QUFBQSxHQUhGLENBQVA7QUFRRCxDQW5DTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlSWR9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9hcWwtcXVlcnknO1xuaW1wb3J0IHtBcnJheUN1cnNvcn0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9jdXJzb3InO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcbmltcG9ydCBpZGVudGl0eSBmcm9tICdsb2Rhc2gvaWRlbnRpdHknO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IHBpY2sgZnJvbSAnbG9kYXNoL3BpY2snO1xuaW1wb3J0IHtBcGlDb250ZXh0fSBmcm9tICd0eXBlcy9hdXRoJztcblxuaW1wb3J0IHtBcmFuZ29EQkxpbWl0LCBDb252ZXJzYXRpb25UeXBlLCBJbWFnZVVybERhdGEsIFVzZXJUeXBlfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2dldExpbWl0LCB1c2VEYn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzJztcbmltcG9ydCB7Z2V0VXJsSW1hZ2VzfSBmcm9tICcuL2ltYWdlcyc7XG5pbXBvcnQge2dldERpc3BsYXlOYW1lfSBmcm9tICcuL3VzZXJzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2NvbnZlcnNhdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udmVyc2F0aW9uTGlzdCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRMaXN0JztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBsaW1pdDogQXJhbmdvREJMaW1pdCA9IGdldExpbWl0KGZyb20sIHRvKTtcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIGMgSU4gY29udmVyc2F0aW9uc1xuICAgIEZJTFRFUiBQT1NJVElPTihjLnVzZXJzLCBcIiR7c2Vzc2lvbklkfVwiLCBmYWxzZSlcbiAgICBMRVQgdSA9IChcbiAgICAgIEZPUiBnIElOIGMudXNlcnNcbiAgICAgIEZPUiB1IElOIHVzZXJzXG4gICAgICBGSUxURVIgZyA9PSB1Ll9rZXlcbiAgICAgIFJFVFVSTiB7X2tleTp1Ll9rZXksIGZpcnN0OnUuZmlyc3QsIGxhc3Q6dS5sYXN0LCBuYW1lOnUubmFtZSwgZW1haWw6dS5lbWFpbCwgdXNlcm5hbWU6dS51c2VybmFtZSwgcGhvdG86dS5waG90byB9XG4gICAgKVxuICAgIEZJTFRFUiBMRU5HVEgodSkgPiAxXG4gICAgJHtsaW1pdC5hcWx9XG4gICAgUkVUVVJOIHtfa2V5OmMuX2tleSwgbmFtZTogYy5uYW1lLCBkaXJlY3Q6IGMuZGlyZWN0LCB1c2VyczogdX1gO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGlyZWN0Q29udmVyc2F0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldERpcmVjdCc7XG4gIGNvbnN0IHthcHBJZDogc2Vzc2lvbkFwcCwgZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VJZCh1c2VySWQpO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGMgSU4gY29udmVyc2F0aW9uc1xuICAgIEZJTFRFUiBMRU5HVEgoYy51c2VycykgPT0gMiAmJlxuICAgIFBPU0lUSU9OKGMudXNlcnMsICR7c2Vzc2lvbklkfSwgZmFsc2UpICYmXG4gICAgUE9TSVRJT04oYy51c2VycywgJHtmb3JtYXRVc2VySWR9LCBmYWxzZSlcbiAgICBMRVQgdSA9IChcbiAgICAgIEZPUiBnIElOIGMudXNlcnNcbiAgICAgIEZPUiB1c2VyIElOIHVzZXJzXG4gICAgICBGSUxURVIgdXNlci5fa2V5ID09IGdcbiAgICAgIFJFVFVSTiB1c2VyXG4gICAgKVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gTUVSR0UoYywge3VzZXJzOiB1fSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUgPSB7fSkgPT4ge1xuICAgICAgY29uc3Qge3VzZXJzID0gW119ID0gY29udmVyc2F0aW9uO1xuXG4gICAgICBpZih1c2Vycy5sZW5ndGgpIHtcbiAgICAgICAgY29udmVyc2F0aW9uLnVzZXJzID0gdXNlcnMubWFwKCh1c2VyOiBVc2VyVHlwZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHtfa2V5OiB1c2VyS2V5LCBpbWdJZH0gPSB1c2VyO1xuICAgICAgICAgIGNvbnN0IHRodW1iVXJsRGF0YTogSW1hZ2VVcmxEYXRhID0ge1xuICAgICAgICAgICAgYXBwSWQ6IHNlc3Npb25BcHAsXG4gICAgICAgICAgICBkaXJlY3Rvcnk6ICdpbWFnZXMnLFxuICAgICAgICAgICAgaW1nSWQsXG4gICAgICAgICAgICBpc1RodW1iOiB0cnVlLFxuICAgICAgICAgICAgdHlwZTogJ3VzZXJzJyxcbiAgICAgICAgICAgIHR5cGVJZDogdXNlcktleVxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnVzZXIsXG4gICAgICAgICAgICBuYW1lOiBnZXREaXNwbGF5TmFtZSh1c2VyKSxcbiAgICAgICAgICAgIHRodW1iOiBnZXRVcmxJbWFnZXModGh1bWJVcmxEYXRhKVxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udmVyc2F0aW9uO1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udmVyc2F0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGNvbnZvSWQ6IHN0cmluZyk6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRJdGVtJztcbiAgY29uc3Qge2FwcElkOiBzZXNzaW9uQXBwLCBkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0Q29udm9JZDogc3RyaW5nID0gcGFyc2VJZChjb252b0lkKTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBjIElOIGNvbnZlcnNhdGlvbnNcbiAgICBGSUxURVIgJHtmb3JtYXRDb252b0lkfSA9PSBjLl9rZXkgJiYgSVNfTElTVChjLnVzZXJzKSAmJiBQT1NJVElPTihjLnVzZXJzLCAke3Nlc3Npb25JZH0sIGZhbHNlKVxuICAgIExFVCB1ID0gKFxuICAgICAgRk9SIGcgSU4gYy51c2Vyc1xuICAgICAgRk9SIHUgSU4gdXNlcnNcbiAgICAgIEZJTFRFUiBnID09IHUuX2tleVxuICAgICAgUkVUVVJOIHtfa2V5OnUuX2tleSwgZmlyc3Q6dS5maXJzdCwgbGFzdDp1Lmxhc3QsIG5hbWU6dS5uYW1lLCBlbWFpbDp1LmVtYWlsLCB1c2VybmFtZTp1LnVzZXJuYW1lLCBwaG90bzp1LnBob3RvIH1cbiAgICApXG4gICAgRklMVEVSIExFTkdUSCh1KSA+IDFcbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIE1FUkdFKGMsIHt1c2VyczogdX0pYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlID0ge30pID0+IHtcbiAgICAgIGlmKCFpc0VtcHR5KGNvbnZlcnNhdGlvbikpIHtcbiAgICAgICAgY29udmVyc2F0aW9uLnVzZXJzID0gY29udmVyc2F0aW9uLnVzZXJzLm1hcCgodXNlcjogVXNlclR5cGUpID0+IHtcbiAgICAgICAgICBjb25zdCB7X2tleTogdXNlcktleSwgaW1nSWR9ID0gdXNlcjtcbiAgICAgICAgICBjb25zdCB0aHVtYlVybERhdGE6IEltYWdlVXJsRGF0YSA9IHtcbiAgICAgICAgICAgIGFwcElkOiBzZXNzaW9uQXBwLFxuICAgICAgICAgICAgZGlyZWN0b3J5OiAnaW1hZ2VzJyxcbiAgICAgICAgICAgIGltZ0lkLFxuICAgICAgICAgICAgaXNUaHVtYjogdHJ1ZSxcbiAgICAgICAgICAgIHR5cGU6ICd1c2VycycsXG4gICAgICAgICAgICB0eXBlSWQ6IHVzZXJLZXlcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgICAgbmFtZTogZ2V0RGlzcGxheU5hbWUodXNlciksXG4gICAgICAgICAgICB0aHVtYjogZ2V0VXJsSW1hZ2VzKHRodW1iVXJsRGF0YSlcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY29udmVyc2F0aW9uO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQ29udmVyc2F0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGl0ZW0pOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAndXBkYXRlJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCB7ZGlyZWN0LCBpZCwgbmFtZSwgdXNlcnN9ID0gcGljayhpdGVtLCBpZGVudGl0eSk7XG4gIGNvbnN0IHJjcHQ6IFVzZXJUeXBlW10gPSB1c2VycyB8fCBbXTtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IGl0ZW0uaWQgfHwgY3JlYXRlSGFzaChgY29udm8tJHtzZXNzaW9uSWR9LSR7cmNwdC5qb2luKCcnKX1gKTtcbiAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBjb25zdCB1cGRhdGU6IGFueSA9IHtcbiAgICAvLyBEaXJlY3QgbWVzc2FnZVxuICAgIGRpcmVjdDogISFkaXJlY3QgPyBkaXJlY3QgOiB1bmRlZmluZWQsXG4gICAgbW9kaWZpZWQ6IG5vdyxcbiAgICBuYW1lOiAhIW5hbWUgPyBuYW1lIDogdW5kZWZpbmVkLFxuICAgIC8vIFVzZXJzXG4gICAgdXNlcnM6ICEhdXNlcnMgPyB1c2VycyA6IHVuZGVmaW5lZFxuICB9O1xuXG4gIGNvbnN0IGluc2VydDogYW55ID0ge1xuICAgIC4uLmNsb25lRGVlcCh1cGRhdGUpLFxuICAgIF9rZXk6IGZvcm1hdElkLFxuICAgIGFkZGVkOiBub3dcbiAgfTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7X2tleTogJHtpZH19XG4gICAgSU5TRVJUICR7aW5zZXJ0fVxuICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICBJTiBjb252ZXJzYXRpb25zIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUgPSB7fSkgPT4gY29udmVyc2F0aW9uKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcbiJdfQ==
@@ -1,8 +0,0 @@
1
- import { DynamoDB } from 'aws-sdk';
2
- export declare const dynamoGet: (params: DynamoDB.GetItemInput) => Promise<DynamoDB.GetItemOutput>;
3
- export declare const dynamoGetList: (params: DynamoDB.QueryInput, index: any) => Promise<DynamoDB.GetItemOutput[]>;
4
- export declare const dynamoPut: (params: DynamoDB.PutItemInput) => Promise<DynamoDB.PutItemOutput>;
5
- export declare const dynamoUpdate: (params: DynamoDB.UpdateItemInput) => Promise<DynamoDB.UpdateItemOutput>;
6
- export declare const dynamoPutList: (params: DynamoDB.BatchWriteItemInput) => Promise<DynamoDB.BatchWriteItemOutput>;
7
- export declare const dynamoDel: (params: DynamoDB.DeleteItemInput) => Promise<DynamoDB.DeleteItemOutput>;
8
- export declare const parseDynamo: (results: DynamoDB.QueryOutput) => any[];