@nlabs/reaktor 0.1.12 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/config.js +138 -0
- package/lib/data/conversations.js +228 -0
- package/lib/data/dynamodb.js +172 -0
- package/lib/data/email.js +194 -0
- package/lib/data/files.js +463 -0
- package/lib/data/groups.js +401 -0
- package/lib/data/images.js +841 -0
- package/lib/data/index.js +234 -0
- package/lib/data/ios.js +327 -0
- package/lib/data/locations.js +148 -0
- package/lib/data/messages.js +281 -0
- package/lib/data/notifications.js +59 -0
- package/lib/data/payments.js +798 -0
- package/lib/data/posts.js +637 -0
- package/lib/data/reactions.js +243 -0
- package/lib/data/s3.js +133 -0
- package/lib/data/search.js +111 -0
- package/lib/data/sms.js +79 -0
- package/lib/data/subscription.js +311 -0
- package/lib/data/tags.js +343 -0
- package/lib/data/users.js +415 -0
- package/lib/index.js +42 -0
- package/lib/types/apps.js +2 -0
- package/lib/types/arangodb.js +2 -0
- package/lib/types/auth.js +2 -0
- package/lib/types/conversations.js +2 -0
- package/lib/types/email.js +2 -0
- package/lib/types/files.js +2 -0
- package/lib/types/google.js +2 -0
- package/lib/types/groups.js +2 -0
- package/lib/types/images.js +2 -0
- package/lib/types/index.js +210 -0
- package/lib/types/locations.js +2 -0
- package/lib/types/messages.js +2 -0
- package/lib/types/notifications.js +2 -0
- package/lib/types/payments.js +2 -0
- package/lib/types/posts.js +2 -0
- package/lib/types/reactions.js +2 -0
- package/lib/types/tags.js +2 -0
- package/lib/types/users.js +2 -0
- package/lib/utils/analytics.js +59 -0
- package/lib/utils/arangodb.d.ts +0 -1
- package/lib/utils/arangodb.js +122 -0
- package/lib/utils/auth.d.ts +0 -2
- package/lib/utils/auth.js +55 -0
- package/lib/utils/graphql.js +19 -0
- package/lib/utils/index.js +78 -0
- package/lib/utils/objects.js +54 -0
- package/lib/utils/redis.js +28 -0
- package/package.json +1 -1
package/lib/config.js
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Config = void 0;
|
|
7
|
+
|
|
8
|
+
var _get2 = _interopRequireDefault(require("lodash/get"));
|
|
9
|
+
|
|
10
|
+
var _merge = _interopRequireDefault(require("lodash/merge"));
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
13
|
+
|
|
14
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
15
|
+
|
|
16
|
+
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); } }
|
|
17
|
+
|
|
18
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
22
|
+
var appPackage = require('../package.json');
|
|
23
|
+
|
|
24
|
+
var _process$env = process.env,
|
|
25
|
+
_process$env$arangodb = _process$env.arangodbDatabase,
|
|
26
|
+
arangodbDatabase = _process$env$arangodb === void 0 ? 'reaktor' : _process$env$arangodb,
|
|
27
|
+
arangodbPassword = _process$env.arangodbPassword,
|
|
28
|
+
_process$env$arangodb2 = _process$env.arangodbPort,
|
|
29
|
+
arangodbPort = _process$env$arangodb2 === void 0 ? '8529' : _process$env$arangodb2,
|
|
30
|
+
_process$env$arangodb3 = _process$env.arangodbUrl,
|
|
31
|
+
arangodbUrl = _process$env$arangodb3 === void 0 ? 'db.reaktor.io' : _process$env$arangodb3,
|
|
32
|
+
_process$env$arangodb4 = _process$env.arangodbUsername,
|
|
33
|
+
arangodbUsername = _process$env$arangodb4 === void 0 ? 'reaktor' : _process$env$arangodb4;
|
|
34
|
+
|
|
35
|
+
var Config =
|
|
36
|
+
/*#__PURE__*/
|
|
37
|
+
function () {
|
|
38
|
+
function Config() {
|
|
39
|
+
_classCallCheck(this, Config);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
_createClass(Config, null, [{
|
|
43
|
+
key: "get",
|
|
44
|
+
value: function get(path) {
|
|
45
|
+
var environment = process.env.stage || 'dev';
|
|
46
|
+
var configValues = (0, _merge["default"])(this.values["default"], this.values[environment], {
|
|
47
|
+
environment: environment
|
|
48
|
+
});
|
|
49
|
+
return (0, _get2["default"])(configValues, path);
|
|
50
|
+
}
|
|
51
|
+
}]);
|
|
52
|
+
|
|
53
|
+
return Config;
|
|
54
|
+
}();
|
|
55
|
+
|
|
56
|
+
exports.Config = Config;
|
|
57
|
+
|
|
58
|
+
_defineProperty(Config, "values", {
|
|
59
|
+
"default": {
|
|
60
|
+
app: {
|
|
61
|
+
name: 'reaktor',
|
|
62
|
+
url: 'reaktor.io',
|
|
63
|
+
version: appPackage.version
|
|
64
|
+
},
|
|
65
|
+
arangodb: {
|
|
66
|
+
database: arangodbDatabase,
|
|
67
|
+
dump: '/Applications/ArangoDB-CLI.app/Contents/MacOS/arangodump',
|
|
68
|
+
password: arangodbPassword,
|
|
69
|
+
port: arangodbPort,
|
|
70
|
+
restore: '/Applications/ArangoDB-CLI.app/Contents/MacOS/arangorestore',
|
|
71
|
+
url: "".concat(arangodbUrl, ":").concat(arangodbPort),
|
|
72
|
+
username: arangodbUsername
|
|
73
|
+
},
|
|
74
|
+
aws: {
|
|
75
|
+
Bucket: 'dev.reaktor.io',
|
|
76
|
+
accessKeyId: 'AKIAJIYDT3EA2ZFMTJNA',
|
|
77
|
+
maxRetries: 3,
|
|
78
|
+
region: 'us-east-1',
|
|
79
|
+
secretAccessKey: 'bUssQRtJTZC7geF9RDH5KCn8CalVnf2VT34yqS+9',
|
|
80
|
+
signatureVersion: 'v4'
|
|
81
|
+
},
|
|
82
|
+
giphy: {
|
|
83
|
+
key: 'dc6zaTOxFJmzC'
|
|
84
|
+
},
|
|
85
|
+
google: {
|
|
86
|
+
analytics: {
|
|
87
|
+
accountId: '78158717',
|
|
88
|
+
trackingId: 'UA-78158717-1'
|
|
89
|
+
},
|
|
90
|
+
geocode: {
|
|
91
|
+
key: 'AIzaSyBwjmpBjWhiJoBCZiYzRurM9m4WnCxslv0',
|
|
92
|
+
url: 'https://maps.googleapis.com/maps/api/geocode/json'
|
|
93
|
+
},
|
|
94
|
+
key: 'AIzaSyC3_f2Us3y0qjbyMJ-4t5ObtCzfq_FHIgQ'
|
|
95
|
+
},
|
|
96
|
+
image: {
|
|
97
|
+
imgQuality: 90,
|
|
98
|
+
imgSize: 1500,
|
|
99
|
+
thmQuality: 80,
|
|
100
|
+
thmSize: 150
|
|
101
|
+
},
|
|
102
|
+
redis: {
|
|
103
|
+
host: '127.0.0.1',
|
|
104
|
+
port: 6379
|
|
105
|
+
},
|
|
106
|
+
stripe: {
|
|
107
|
+
token: 'sk_test_LS956be57YUXTB5a4sLGb5BQ'
|
|
108
|
+
},
|
|
109
|
+
twilio: {
|
|
110
|
+
number: '+15005550006',
|
|
111
|
+
sid: 'AC6bd7f513cbed2e5134c650be06cc732e',
|
|
112
|
+
token: '520ae739e761bab759b147f1ad28278f'
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
dev: {},
|
|
116
|
+
prod: {
|
|
117
|
+
arangodb: {
|
|
118
|
+
dump: '/usr/bin/arangodump',
|
|
119
|
+
restore: '/usr/bin/arangorestore'
|
|
120
|
+
},
|
|
121
|
+
aws: {
|
|
122
|
+
Bucket: 'box.reaktor.io'
|
|
123
|
+
},
|
|
124
|
+
redis: {
|
|
125
|
+
host: 'reaktor-redis.ehcvnt.0001.use1.cache.amazonaws.com'
|
|
126
|
+
},
|
|
127
|
+
stripe: {
|
|
128
|
+
token: 'sk_live_bElZl8RLhMCJy33KG4lyLD4o'
|
|
129
|
+
},
|
|
130
|
+
twilio: {
|
|
131
|
+
number: '+18554165227',
|
|
132
|
+
sid: 'AC90b0528a911e652d643329a4d7b4d2c7',
|
|
133
|
+
token: 'a7941d173bd4846d0966a186e9865b72'
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
test: {}
|
|
137
|
+
});
|
|
138
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25maWcudHMiXSwibmFtZXMiOlsiYXBwUGFja2FnZSIsInJlcXVpcmUiLCJwcm9jZXNzIiwiZW52IiwiYXJhbmdvZGJEYXRhYmFzZSIsImFyYW5nb2RiUGFzc3dvcmQiLCJhcmFuZ29kYlBvcnQiLCJhcmFuZ29kYlVybCIsImFyYW5nb2RiVXNlcm5hbWUiLCJDb25maWciLCJwYXRoIiwiZW52aXJvbm1lbnQiLCJzdGFnZSIsImNvbmZpZ1ZhbHVlcyIsInZhbHVlcyIsImFwcCIsIm5hbWUiLCJ1cmwiLCJ2ZXJzaW9uIiwiYXJhbmdvZGIiLCJkYXRhYmFzZSIsImR1bXAiLCJwYXNzd29yZCIsInBvcnQiLCJyZXN0b3JlIiwidXNlcm5hbWUiLCJhd3MiLCJCdWNrZXQiLCJhY2Nlc3NLZXlJZCIsIm1heFJldHJpZXMiLCJyZWdpb24iLCJzZWNyZXRBY2Nlc3NLZXkiLCJzaWduYXR1cmVWZXJzaW9uIiwiZ2lwaHkiLCJrZXkiLCJnb29nbGUiLCJhbmFseXRpY3MiLCJhY2NvdW50SWQiLCJ0cmFja2luZ0lkIiwiZ2VvY29kZSIsImltYWdlIiwiaW1nUXVhbGl0eSIsImltZ1NpemUiLCJ0aG1RdWFsaXR5IiwidGhtU2l6ZSIsInJlZGlzIiwiaG9zdCIsInN0cmlwZSIsInRva2VuIiwidHdpbGlvIiwibnVtYmVyIiwic2lkIiwiZGV2IiwicHJvZCIsInRlc3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQTs7QUFDQTs7Ozs7Ozs7Ozs7O0FBcUJBLElBQU1BLFVBQWUsR0FBR0MsT0FBTyxDQUFDLGlCQUFELENBQS9COzttQkFRSUMsT0FBTyxDQUFDQyxHO3lDQUxWQyxnQjtJQUFBQSxnQixzQ0FBbUIsUztJQUNuQkMsZ0IsZ0JBQUFBLGdCOzBDQUNBQyxZO0lBQUFBLFksdUNBQWUsTTswQ0FDZkMsVztJQUFBQSxXLHVDQUFjLGU7MENBQ2RDLGdCO0lBQUFBLGdCLHVDQUFtQixTOztJQUdSQyxNOzs7Ozs7Ozs7d0JBb0ZBQyxJLEVBQThCO0FBQ3ZDLFVB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QUFjSkMsSUFBQUEsTUFBTSxFQUFFO0FBQ05DLE1BQUFBLE1BQU0sRUFBRSxjQURGO0FBRU5DLE1BQUFBLEdBQUcsRUFBRSxvQ0FGQztBQUdOSCxNQUFBQSxLQUFLLEVBQUU7QUFIRDtBQWRKLEdBM0RtQjtBQStFekJNLEVBQUFBLElBQUksRUFBRTtBQS9FbUIsQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IG1lcmdlIGZyb20gJ2xvZGFzaC9tZXJnZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQ29uZmlnIHtcbiAgcmVhZG9ubHkgYXBwPzogb2JqZWN0O1xuICByZWFkb25seSBhcmFuZ29kYj86IG9iamVjdDtcbiAgcmVhZG9ubHkgYXdzPzogb2JqZWN0O1xuICByZWFkb25seSBnaXBoeT86IG9iamVjdDtcbiAgcmVhZG9ubHkgZ29vZ2xlPzogb2JqZWN0O1xuICByZWFkb25seSBpbWFnZT86IG9iamVjdDtcbiAgcmVhZG9ubHkgcmVkaXM/OiBvYmplY3Q7XG4gIHJlYWRvbmx5IHN0cmlwZT86IG9iamVjdDtcbiAgcmVhZG9ubHkgdHdpbGlvPzogb2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudkNvbmZpZyB7XG4gIHJlYWRvbmx5IGRlZmF1bHQ6IEFwcENvbmZpZztcbiAgcmVhZG9ubHkgZGV2OiBBcHBDb25maWc7XG4gIHJlYWRvbmx5IHByb2Q6IEFwcENvbmZpZztcbiAgcmVhZG9ubHkgdGVzdDogQXBwQ29uZmlnO1xufVxuXG5jb25zdCBhcHBQYWNrYWdlOiBhbnkgPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKTtcblxuY29uc3Qge1xuICBhcmFuZ29kYkRhdGFiYXNlID0gJ3JlYWt0b3InLFxuICBhcmFuZ29kYlBhc3N3b3JkLFxuICBhcmFuZ29kYlBvcnQgPSAnODUyOScsXG4gIGFyYW5nb2RiVXJsID0gJ2RiLnJlYWt0b3IuaW8nLFxuICBhcmFuZ29kYlVzZXJuYW1lID0gJ3JlYWt0b3InXG59ID0gcHJvY2Vzcy5lbnY7XG5cbmV4cG9ydCBjbGFzcyBDb25maWcge1xuICBzdGF0aWMgdmFsdWVzOiBFbnZDb25maWcgPSB7XG4gICAgZGVmYXVsdDoge1xuICAgICAgYXBwOiB7XG4gICAgICAgIG5hbWU6ICdyZWFrdG9yJyxcbiAgICAgICAgdXJsOiAncmVha3Rvci5pbycsXG4gICAgICAgIHZlcnNpb246IGFwcFBhY2thZ2UudmVyc2lvblxuICAgICAgfSxcbiAgICAgIGFyYW5nb2RiOiB7XG4gICAgICAgIGRhdGFiYXNlOiBhcmFuZ29kYkRhdGFiYXNlLFxuICAgICAgICBkdW1wOiAnL0FwcGxpY2F0aW9ucy9BcmFuZ29EQi1DTEkuYXBwL0NvbnRlbnRzL01hY09TL2FyYW5nb2R1bXAnLFxuICAgICAgICBwYXNzd29yZDogYXJhbmdvZGJQYXNzd29yZCxcbiAgICAgICAgcG9ydDogYXJhbmdvZGJQb3J0LFxuICAgICAgICByZXN0b3JlOiAnL0FwcGxpY2F0aW9ucy9BcmFuZ29EQi1DTEkuYXBwL0NvbnRlbnRzL01hY09TL2FyYW5nb3Jlc3RvcmUnLFxuICAgICAgICB1cmw6IGAke2FyYW5nb2RiVXJsfToke2FyYW5nb2RiUG9ydH1gLFxuICAgICAgICB1c2VybmFtZTogYXJhbmdvZGJVc2VybmFtZVxuICAgICAgfSxcbiAgICAgIGF3czoge1xuICAgICAgICBCdWNrZXQ6ICdkZXYucmVha3Rvci5pbycsXG4gICAgICAgIGFjY2Vzc0tleUlkOiAnQUtJQUpJWURUM0VBMlpGTVRKTkEnLFxuICAgICAgICBtYXhSZXRyaWVzOiAzLFxuICAgICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgICBzZWNyZXRBY2Nlc3NLZXk6ICdiVXNzUVJ0SlRaQzdnZUY5UkRINUtDbjhDYWxWbmYyVlQzNHlxUys5JyxcbiAgICAgICAgc2lnbmF0dXJlVmVyc2lvbjogJ3Y0J1xuICAgICAgfSxcbiAgICAgIGdpcGh5OiB7XG4gICAgICAgIGtleTogJ2RjNnphVE94RkptekMnXG4gICAgICB9LFxuICAgICAgZ29vZ2xlOiB7XG4gICAgICAgIGFuYWx5dGljczoge1xuICAgICAgICAgIGFjY291bnRJZDogJzc4MTU4NzE3JyxcbiAgICAgICAgICB0cmFja2luZ0lkOiAnVUEtNzgxNTg3MTctMSdcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvY29kZToge1xuICAgICAgICAgIGtleTogJ0FJemFTeUJ3am1wQmpXaGlKb0JDWmlZelJ1ck05bTRXbkN4c2x2MCcsXG4gICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL2dlb2NvZGUvanNvbidcbiAgICAgICAgfSxcbiAgICAgICAga2V5OiAnQUl6YVN5QzNfZjJVczN5MHFqYnlNSi00dDVPYnRDemZxX0ZISWdRJ1xuICAgICAgfSxcbiAgICAgIGltYWdlOiB7XG4gICAgICAgIGltZ1F1YWxpdHk6IDkwLFxuICAgICAgICBpbWdTaXplOiAxNTAwLFxuICAgICAgICB0aG1RdWFsaXR5OiA4MCxcbiAgICAgICAgdGhtU2l6ZTogMTUwXG4gICAgICB9LFxuICAgICAgcmVkaXM6IHtcbiAgICAgICAgaG9zdDogJzEyNy4wLjAuMScsXG4gICAgICAgIHBvcnQ6IDYzNzlcbiAgICAgIH0sXG4gICAgICBzdHJpcGU6IHtcbiAgICAgICAgdG9rZW46ICdza190ZXN0X0xTOTU2YmU1N1lVWFRCNWE0c0xHYjVCUSdcbiAgICAgIH0sXG4gICAgICB0d2lsaW86IHtcbiAgICAgICAgbnVtYmVyOiAnKzE1MDA1NTUwMDA2JyxcbiAgICAgICAgc2lkOiAnQUM2YmQ3ZjUxM2NiZWQyZTUxMzRjNjUwYmUwNmNjNzMyZScsXG4gICAgICAgIHRva2VuOiAnNTIwYWU3MzllNzYxYmFiNzU5YjE0N2YxYWQyODI3OGYnXG4gICAgICB9XG4gICAgfSxcbiAgICBkZXY6IHtcbiAgICB9LFxuICAgIHByb2Q6IHtcbiAgICAgIGFyYW5nb2RiOiB7XG4gICAgICAgIGR1bXA6ICcvdXNyL2Jpbi9hcmFuZ29kdW1wJyxcbiAgICAgICAgcmVzdG9yZTogJy91c3IvYmluL2FyYW5nb3Jlc3RvcmUnXG4gICAgICB9LFxuICAgICAgYXdzOiB7XG4gICAgICAgIEJ1Y2tldDogJ2JveC5yZWFrdG9yLmlvJ1xuICAgICAgfSxcbiAgICAgIHJlZGlzOiB7XG4gICAgICAgIGhvc3Q6ICdyZWFrdG9yLXJlZGlzLmVoY3ZudC4wMDAxLnVzZTEuY2FjaGUuYW1hem9uYXdzLmNvbSdcbiAgICAgIH0sXG4gICAgICBzdHJpcGU6IHtcbiAgICAgICAgdG9rZW46ICdza19saXZlX2JFbFpsOFJMaE1DSnkzM0tHNGx5TEQ0bydcbiAgICAgIH0sXG4gICAgICB0d2lsaW86IHtcbiAgICAgICAgbnVtYmVyOiAnKzE4NTU0MTY1MjI3JyxcbiAgICAgICAgc2lkOiAnQUM5MGIwNTI4YTkxMWU2NTJkNjQzMzI5YTRkN2I0ZDJjNycsXG4gICAgICAgIHRva2VuOiAnYTc5NDFkMTczYmQ0ODQ2ZDA5NjZhMTg2ZTk4NjViNzInXG4gICAgICB9XG4gICAgfSxcbiAgICB0ZXN0OiB7XG4gICAgfVxuICB9O1xuXG4gIHN0YXRpYyBnZXQocGF0aDogc3RyaW5nIHwgc3RyaW5nW10pOiBhbnkge1xuICAgIGNvbnN0IGVudmlyb25tZW50OiBzdHJpbmcgPSBwcm9jZXNzLmVudi5zdGFnZSB8fCAnZGV2JztcbiAgICBjb25zdCBjb25maWdWYWx1ZXM6IG9iamVjdCA9IG1lcmdlKHRoaXMudmFsdWVzLmRlZmF1bHQsIHRoaXMudmFsdWVzW2Vudmlyb25tZW50XSwge2Vudmlyb25tZW50fSk7XG4gICAgcmV0dXJuIGdldChjb25maWdWYWx1ZXMsIHBhdGgpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.updateConversation = exports.getConversation = exports.getDirectConversation = exports.getConversationList = void 0;
|
|
7
|
+
|
|
8
|
+
var _utils = require("@nlabs/utils");
|
|
9
|
+
|
|
10
|
+
var _arangojs = require("arangojs");
|
|
11
|
+
|
|
12
|
+
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
13
|
+
|
|
14
|
+
var _identity = _interopRequireDefault(require("lodash/identity"));
|
|
15
|
+
|
|
16
|
+
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
17
|
+
|
|
18
|
+
var _pick2 = _interopRequireDefault(require("lodash/pick"));
|
|
19
|
+
|
|
20
|
+
var _utils2 = require("../utils");
|
|
21
|
+
|
|
22
|
+
var _analytics = require("../utils/analytics");
|
|
23
|
+
|
|
24
|
+
var _images = require("./images");
|
|
25
|
+
|
|
26
|
+
var _users = require("./users");
|
|
27
|
+
|
|
28
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
29
|
+
|
|
30
|
+
function _templateObject3() {
|
|
31
|
+
var data = _taggedTemplateLiteral(["UPSERT {_key: ", "}\n INSERT ", "\n UPDATE ", "\n IN conversations RETURN NEW"]);
|
|
32
|
+
|
|
33
|
+
_templateObject3 = function _templateObject3() {
|
|
34
|
+
return data;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
return data;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function _templateObject2() {
|
|
41
|
+
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})"]);
|
|
42
|
+
|
|
43
|
+
_templateObject2 = function _templateObject2() {
|
|
44
|
+
return data;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
return data;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
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; }
|
|
51
|
+
|
|
52
|
+
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; }
|
|
53
|
+
|
|
54
|
+
function _templateObject() {
|
|
55
|
+
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})"]);
|
|
56
|
+
|
|
57
|
+
_templateObject = function _templateObject() {
|
|
58
|
+
return data;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
return data;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Copyright (c) 2019-Present, Nitrogen Labs, Inc.
|
|
68
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
69
|
+
*/
|
|
70
|
+
var eventCategory = 'conversations';
|
|
71
|
+
|
|
72
|
+
var getConversationList = function getConversationList(context, from, to) {
|
|
73
|
+
var action = 'getList';
|
|
74
|
+
var database = context.database,
|
|
75
|
+
sessionId = context.userId;
|
|
76
|
+
var limit = (0, _utils2.getLimit)(from, to);
|
|
77
|
+
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}");
|
|
78
|
+
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
79
|
+
return cursor.all();
|
|
80
|
+
})["catch"](function (error) {
|
|
81
|
+
return (0, _analytics.logError)({
|
|
82
|
+
action: action,
|
|
83
|
+
category: eventCategory,
|
|
84
|
+
label: 'db_error'
|
|
85
|
+
}, error, context).then(function () {
|
|
86
|
+
return null;
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
exports.getConversationList = getConversationList;
|
|
92
|
+
|
|
93
|
+
var getDirectConversation = function getDirectConversation(context, userId) {
|
|
94
|
+
var action = 'getDirect';
|
|
95
|
+
var database = context.database,
|
|
96
|
+
sessionId = context.userId;
|
|
97
|
+
var formatUserId = (0, _utils.parseId)(userId);
|
|
98
|
+
var aqlQry = (0, _arangojs.aql)(_templateObject(), sessionId, formatUserId);
|
|
99
|
+
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
100
|
+
return cursor.next();
|
|
101
|
+
}).then(function () {
|
|
102
|
+
var conversation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
103
|
+
var _conversation$users = conversation.users,
|
|
104
|
+
users = _conversation$users === void 0 ? [] : _conversation$users;
|
|
105
|
+
|
|
106
|
+
if (users.length) {
|
|
107
|
+
conversation.users = users.map(function (user) {
|
|
108
|
+
var userKey = user._key,
|
|
109
|
+
imgId = user.imgId;
|
|
110
|
+
var thumbUrlData = {
|
|
111
|
+
directory: 'images',
|
|
112
|
+
imgId: imgId,
|
|
113
|
+
isThumb: true,
|
|
114
|
+
type: 'users',
|
|
115
|
+
typeId: userKey
|
|
116
|
+
};
|
|
117
|
+
return _objectSpread({}, user, {
|
|
118
|
+
name: (0, _users.getDisplayName)(user),
|
|
119
|
+
thumb: (0, _images.getUrlImages)(thumbUrlData)
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return conversation;
|
|
125
|
+
})["catch"](function (error) {
|
|
126
|
+
return (0, _analytics.logError)({
|
|
127
|
+
action: action,
|
|
128
|
+
category: eventCategory,
|
|
129
|
+
label: 'db_error'
|
|
130
|
+
}, error, context).then(function () {
|
|
131
|
+
return null;
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
exports.getDirectConversation = getDirectConversation;
|
|
137
|
+
|
|
138
|
+
var getConversation = function getConversation(context, convoId) {
|
|
139
|
+
var action = 'getItem';
|
|
140
|
+
var database = context.database,
|
|
141
|
+
sessionId = context.userId;
|
|
142
|
+
var formatConvoId = (0, _utils.parseId)(convoId);
|
|
143
|
+
var aqlQry = (0, _arangojs.aql)(_templateObject2(), formatConvoId, sessionId);
|
|
144
|
+
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
145
|
+
return cursor.next();
|
|
146
|
+
}).then(function () {
|
|
147
|
+
var conversation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
148
|
+
|
|
149
|
+
if (!(0, _isEmpty["default"])(conversation)) {
|
|
150
|
+
conversation.users = conversation.users.map(function (user) {
|
|
151
|
+
var userKey = user._key,
|
|
152
|
+
imgId = user.imgId;
|
|
153
|
+
var thumbUrlData = {
|
|
154
|
+
directory: 'images',
|
|
155
|
+
imgId: imgId,
|
|
156
|
+
isThumb: true,
|
|
157
|
+
type: 'users',
|
|
158
|
+
typeId: userKey
|
|
159
|
+
};
|
|
160
|
+
return _objectSpread({}, user, {
|
|
161
|
+
name: (0, _users.getDisplayName)(user),
|
|
162
|
+
thumb: (0, _images.getUrlImages)(thumbUrlData)
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
return conversation;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
return {};
|
|
169
|
+
})["catch"](function (error) {
|
|
170
|
+
return (0, _analytics.logError)({
|
|
171
|
+
action: action,
|
|
172
|
+
category: eventCategory,
|
|
173
|
+
label: 'db_error'
|
|
174
|
+
}, error, context).then(function () {
|
|
175
|
+
return null;
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
exports.getConversation = getConversation;
|
|
181
|
+
|
|
182
|
+
var updateConversation = function updateConversation(context, item) {
|
|
183
|
+
var action = 'update';
|
|
184
|
+
var database = context.database,
|
|
185
|
+
sessionId = context.userId;
|
|
186
|
+
|
|
187
|
+
var _pick = (0, _pick2["default"])(item, _identity["default"]),
|
|
188
|
+
direct = _pick.direct,
|
|
189
|
+
id = _pick.id,
|
|
190
|
+
name = _pick.name,
|
|
191
|
+
users = _pick.users;
|
|
192
|
+
|
|
193
|
+
var rcpt = users || [];
|
|
194
|
+
var formatId = item.id || (0, _utils.createHash)("convo-".concat(sessionId, "-").concat(rcpt.join('')));
|
|
195
|
+
var now = Date.now();
|
|
196
|
+
var update = {
|
|
197
|
+
// Direct message
|
|
198
|
+
direct: !!direct ? direct : undefined,
|
|
199
|
+
modified: now,
|
|
200
|
+
name: !!name ? name : undefined,
|
|
201
|
+
// Users
|
|
202
|
+
users: !!users ? users : undefined
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
var insert = _objectSpread({}, (0, _cloneDeep["default"])(update), {
|
|
206
|
+
_key: formatId,
|
|
207
|
+
added: now
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
var aqlQry = (0, _arangojs.aql)(_templateObject3(), id, insert, update);
|
|
211
|
+
return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
|
|
212
|
+
return cursor.next();
|
|
213
|
+
}).then(function () {
|
|
214
|
+
var conversation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
215
|
+
return conversation;
|
|
216
|
+
})["catch"](function (error) {
|
|
217
|
+
return (0, _analytics.logError)({
|
|
218
|
+
action: action,
|
|
219
|
+
category: eventCategory,
|
|
220
|
+
label: 'db_error'
|
|
221
|
+
}, error, context).then(function () {
|
|
222
|
+
return null;
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
exports.updateConversation = updateConversation;
|
|
228
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2NvbnZlcnNhdGlvbnMudHMiXSwibmFtZXMiOlsiZXZlbnRDYXRlZ29yeSIsImdldENvbnZlcnNhdGlvbkxpc3QiLCJjb250ZXh0IiwiZnJvbSIsInRvIiwiYWN0aW9uIiwiZGF0YWJhc2UiLCJzZXNzaW9uSWQiLCJ1c2VySWQiLCJsaW1pdCIsImFxbFFyeSIsImFxbCIsInF1ZXJ5IiwidGhlbiIsImN1cnNvciIsImFsbCIsImVycm9yIiwiY2F0ZWdvcnkiLCJsYWJlbCIsImdldERpcmVjdENvbnZlcnNhdGlvbiIsImZvcm1hdFVzZXJJZCIsIm5leHQiLCJjb252ZXJzYXRpb24iLCJ1c2VycyIsImxlbmd0aCIsIm1hcCIsInVzZXIiLCJ1c2VyS2V5IiwiX2tleSIsImltZ0lkIiwidGh1bWJVcmxEYXRhIiwiZGlyZWN0b3J5IiwiaXNUaHVtYiIsInR5cGUiLCJ0eXBlSWQiLCJuYW1lIiwidGh1bWIiLCJnZXRDb252ZXJzYXRpb24iLCJjb252b0lkIiwiZm9ybWF0Q29udm9JZCIsInVwZGF0ZUNvbnZlcnNhdGlvbiIsIml0ZW0iLCJpZGVudGl0eSIsImRpcmVjdCIsImlkIiwicmNwdCIsImZvcm1hdElkIiwiam9pbiIsIm5vdyIsIkRhdGUiLCJ1cGRhdGUiLCJ1bmRlZmluZWQiLCJtb2RpZmllZCIsImluc2VydCIsImFkZGVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7OztBQUlBLElBQU1BLGFBQXFCLEdBQUcsZUFBOUI7O0FBRU8sSUFBTUMsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFzQixDQUFDQyxPQUFELEVBQXNCQyxJQUF0QixFQUFvQ0MsRUFBcEMsRUFBZ0Y7QUFDakgsTUFBTUMsTUFBYyxHQUFHLFNBQXZCO0FBRGlILE1BRTFHQyxRQUYwRyxHQUUzRUosT0FGMkUsQ0FFMUdJLFFBRjBHO0FBQUEsTUFFeEZDLFNBRndGLEdBRTNFTCxPQUYyRSxDQUVoR00sTUFGZ0c7QUFHakgsTUFBTUMsS0FBb0IsR0FBRyxzQkFBU04sSUFBVCxFQUFlQyxFQUFmLENBQTdCO0FBQ0EsTUFBTU0sTUFBYyxvRUFDVUgsU0FEViw4UUFTaEJFLEtBQUssQ0FBQ0UsR0FUVSx5RUFBcEI7QUFZQSxTQUFPLG1CQUFNTCxRQUFOLEVBQWdCTSxLQUFoQixDQUFzQkYsTUFBdEIsRUFDSkcsSUFESSxDQUNDLFVBQUNDLE1BQUQ7QUFBQSxXQUF5QkEsTUFBTSxDQUFDQyxHQUFQLEVBQXpCO0FBQUEsR0FERCxXQUVFLFVBQUNDLEtBQUQ7QUFBQSxXQUFrQix5QkFBUztBQUNoQ1gsTUFBQUEsTUFBTSxFQUFOQSxNQURnQztBQUVoQ1ksTUFBQUEsUUFBUSxFQUFFakIsYUFGc0I7QUFHaENrQixNQUFBQSxLQUFLLEVBQUU7QUFIeUIsS0FBVCxFQUl0QkYsS0FKc0IsRUFJZmQsT0FKZSxFQUlOVyxJQUpNLENBSUQ7QUFBQSxhQUFNLElBQU47QUFBQSxLQUpDLENBQWxCO0FBQUEsR0FGRixDQUFQO0FBT0QsQ0F2Qk07Ozs7QUF5QkEsSUFBTU0scUJBQXFCLEdBQUcsU0FBeEJBLHFCQUF3QixDQUFDakIsT0FBRCxFQUFzQk0sTUFBdEIsRUFBb0U7QUFDdkcsTUFBTUgsTUFBYyxHQUFHLFdBQXZCO0FBRHVHLE1BRWhHQyxRQUZnRyxHQUVqRUosT0FGaUUsQ0FFaEdJLFFBRmdHO0FBQUEsTUFFOUVDLFNBRjhFLEdBRWpFTCxPQUZpRSxDQUV0Rk0sTUFGc0Y7QUFHdkcsTUFBTVksWUFBb0IsR0FBRyxvQkFBUVosTUFBUixDQUE3QjtBQUVBLE1BQU1FLE1BQWdCLE9BQUdDLGFBQUgscUJBRUFKLFNBRkEsRUFHQWEsWUFIQSxDQUF0QjtBQWFBLFNBQU8sbUJBQU1kLFFBQU4sRUFBZ0JNLEtBQWhCLENBQXNCRixNQUF0QixFQUNKRyxJQURJLENBQ0MsVUFBQ0MsTUFBRDtBQUFBLFdBQXlCQSxNQUFNLENBQUNPLElBQVAsRUFBekI7QUFBQSxHQURELEVBRUpSLElBRkksQ0FFQyxZQUF5QztBQUFBLFFBQXhDUyxZQUF3Qyx1RUFBUCxFQUFPO0FBQUEsOEJBQ3hCQSxZQUR3QixDQUN0Q0MsS0FEc0M7QUFBQSxRQUN0Q0EsS0FEc0Msb0NBQzlCLEVBRDhCOztBQUc3QyxRQUFHQSxLQUFLLENBQUNDLE1BQVQsRUFBaUI7QUFDZkYsTUFBQUEsWUFBWSxDQUFDQyxLQUFiLEdBQXFCQSxLQUFLLENBQUNFLEdBQU4sQ0FBVSxVQUFDQyxJQUFELEVBQW9CO0FBQUEsWUFDcENDLE9BRG9DLEdBQ2xCRCxJQURrQixDQUMxQ0UsSUFEMEM7QUFBQSxZQUMzQkMsS0FEMkIsR0FDbEJILElBRGtCLENBQzNCRyxLQUQyQjtBQUVqRCxZQUFNQyxZQUEwQixHQUFHO0FBQ2pDQyxVQUFBQSxTQUFTLEVBQUUsUUFEc0I7QUFFakNGLFVBQUFBLEtBQUssRUFBTEEsS0FGaUM7QUFHakNHLFVBQUFBLE9BQU8sRUFBRSxJQUh3QjtBQUlqQ0MsVUFBQUEsSUFBSSxFQUFFLE9BSjJCO0FBS2pDQyxVQUFBQSxNQUFNLEVBQUVQO0FBTHlCLFNBQW5DO0FBT0EsaUNBQ0tELElBREw7QUFFRVMsVUFBQUEsSUFBSSxFQUFFLDJCQUFlVCxJQUFmLENBRlI7QUFHRVUsVUFBQUEsS0FBSyxFQUFFLDBCQUFhTixZQUFiO0FBSFQ7QUFLRCxPQWRvQixDQUFyQjtBQWVEOztBQUVELFdBQU9SLFlBQVA7QUFDRCxHQXhCSSxXQXlCRSxVQUFDTixLQUFEO0FBQUEsV0FBa0IseUJBQVM7QUFDaENYLE1BQUFBLE1BQU0sRUFBTkEsTUFEZ0M7QUFFaENZLE1BQUFBLFFBQVEsRUFBRWpCLGFBRnNCO0FBR2hDa0IsTUFBQUEsS0FBSyxFQUFFO0FBSHlCLEtBQVQsRUFJdEJGLEtBSnNCLEVBSWZkLE9BSmUsRUFJTlcsSUFKTSxDQUlEO0FBQUEsYUFBTSxJQUFOO0FBQUEsS0FKQyxDQUFsQjtBQUFBLEdBekJGLENBQVA7QUE4QkQsQ0FoRE07Ozs7QUFrREEsSUFBTXdCLGVBQWUsR0FBRyxTQUFsQkEsZUFBa0IsQ0FBQ25DLE9BQUQsRUFBc0JvQyxPQUF0QixFQUFxRTtBQUNsRyxNQUFNakMsTUFBYyxHQUFHLFNBQXZCO0FBRGtHLE1BRTNGQyxRQUYyRixHQUU1REosT0FGNEQsQ0FFM0ZJLFFBRjJGO0FBQUEsTUFFekVDLFNBRnlFLEdBRTVETCxPQUY0RCxDQUVqRk0sTUFGaUY7QUFHbEcsTUFBTStCLGFBQXFCLEdBQUcsb0JBQVFELE9BQVIsQ0FBOUI7QUFFQSxNQUFNNUIsTUFBZ0IsT0FBR0MsYUFBSCxzQkFDRDRCLGFBREMsRUFDeURoQyxTQUR6RCxDQUF0QjtBQVlBLFNBQU8sbUJBQU1ELFFBQU4sRUFBZ0JNLEtBQWhCLENBQXNCRixNQUF0QixFQUNKRyxJQURJLENBQ0MsVUFBQ0MsTUFBRDtBQUFBLFdBQXlCQSxNQUFNLENBQUNPLElBQVAsRUFBekI7QUFBQSxHQURELEVBRUpSLElBRkksQ0FFQyxZQUF5QztBQUFBLFFBQXhDUyxZQUF3Qyx1RUFBUCxFQUFPOztBQUM3QyxRQUFHLENBQUMseUJBQVFBLFlBQVIsQ0FBSixFQUEyQjtBQUN6QkEsTUFBQUEsWUFBWSxDQUFDQyxLQUFiLEdBQXFCRCxZQUFZLENBQUNDLEtBQWIsQ0FBbUJFLEdBQW5CLENBQXVCLFVBQUNDLElBQUQsRUFBb0I7QUFBQSxZQUNqREMsT0FEaUQsR0FDL0JELElBRCtCLENBQ3ZERSxJQUR1RDtBQUFBLFlBQ3hDQyxLQUR3QyxHQUMvQkgsSUFEK0IsQ0FDeENHLEtBRHdDO0FBRTlELFlBQU1DLFlBQTBCLEdBQUc7QUFDakNDLFVBQUFBLFNBQVMsRUFBRSxRQURzQjtBQUVqQ0YsVUFBQUEsS0FBSyxFQUFMQSxLQUZpQztBQUdqQ0csVUFBQUEsT0FBTyxFQUFFLElBSHdCO0FBSWpDQyxVQUFBQSxJQUFJLEVBQUUsT0FKMkI7QUFLakNDLFVBQUFBLE1BQU0sRUFBRVA7QUFMeUIsU0FBbkM7QUFPQSxpQ0FDS0QsSUFETDtBQUVFUyxVQUFBQSxJQUFJLEVBQUUsMkJBQWVULElBQWYsQ0FGUjtBQUdFVSxVQUFBQSxLQUFLLEVBQUUsMEJBQWFOLFlBQWI7QUFIVDtBQUtELE9BZG9CLENBQXJCO0FBZ0JBLGFBQU9SLFlBQVA7QUFDRDs7QUFDRCxXQUFPLEVBQVA7QUFDRCxHQXZCSSxXQXdCRSxVQUFDTixLQUFEO0FBQUEsV0FBa0IseUJBQVM7QUFDaENYLE1BQUFBLE1BQU0sRUFBTkEsTUFEZ0M7QUFFaENZLE1BQUFBLFFBQVEsRUFBRWpCLGFBRnNCO0FBR2hDa0IsTUFBQUEsS0FBSyxFQUFFO0FBSHlCLEtBQVQsRUFJdEJGLEtBSnNCLEVBSWZkLE9BSmUsRUFJTlcsSUFKTSxDQUlEO0FBQUEsYUFBTSxJQUFOO0FBQUEsS0FKQyxDQUFsQjtBQUFBLEdBeEJGLENBQVA7QUE2QkQsQ0E5Q007Ozs7QUFnREEsSUFBTTJCLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBcUIsQ0FBQ3RDLE9BQUQsRUFBc0J1QyxJQUF0QixFQUEwRDtBQUMxRixNQUFNcEMsTUFBYyxHQUFHLFFBQXZCO0FBRDBGLE1BRW5GQyxRQUZtRixHQUVwREosT0FGb0QsQ0FFbkZJLFFBRm1GO0FBQUEsTUFFakVDLFNBRmlFLEdBRXBETCxPQUZvRCxDQUV6RU0sTUFGeUU7O0FBQUEsY0FHeEQsdUJBQUtpQyxJQUFMLEVBQVdDLG9CQUFYLENBSHdEO0FBQUEsTUFHbkZDLE1BSG1GLFNBR25GQSxNQUhtRjtBQUFBLE1BRzNFQyxFQUgyRSxTQUczRUEsRUFIMkU7QUFBQSxNQUd2RVQsSUFIdUUsU0FHdkVBLElBSHVFO0FBQUEsTUFHakVaLEtBSGlFLFNBR2pFQSxLQUhpRTs7QUFJMUYsTUFBTXNCLElBQWdCLEdBQUd0QixLQUFLLElBQUksRUFBbEM7QUFDQSxNQUFNdUIsUUFBZ0IsR0FBR0wsSUFBSSxDQUFDRyxFQUFMLElBQVcsdUNBQW9CckMsU0FBcEIsY0FBaUNzQyxJQUFJLENBQUNFLElBQUwsQ0FBVSxFQUFWLENBQWpDLEVBQXBDO0FBQ0EsTUFBTUMsR0FBVyxHQUFHQyxJQUFJLENBQUNELEdBQUwsRUFBcEI7QUFDQSxNQUFNRSxNQUFXLEdBQUc7QUFDbEI7QUFDQVAsSUFBQUEsTUFBTSxFQUFFLENBQUMsQ0FBQ0EsTUFBRixHQUFXQSxNQUFYLEdBQW9CUSxTQUZWO0FBR2xCQyxJQUFBQSxRQUFRLEVBQUVKLEdBSFE7QUFJbEJiLElBQUFBLElBQUksRUFBRSxDQUFDLENBQUNBLElBQUYsR0FBU0EsSUFBVCxHQUFnQmdCLFNBSko7QUFLbEI7QUFDQTVCLElBQUFBLEtBQUssRUFBRSxDQUFDLENBQUNBLEtBQUYsR0FBVUEsS0FBVixHQUFrQjRCO0FBTlAsR0FBcEI7O0FBU0EsTUFBTUUsTUFBVyxxQkFDWiwyQkFBVUgsTUFBVixDQURZO0FBRWZ0QixJQUFBQSxJQUFJLEVBQUVrQixRQUZTO0FBR2ZRLElBQUFBLEtBQUssRUFBRU47QUFIUSxJQUFqQjs7QUFNQSxNQUFNdEMsTUFBZ0IsT0FBR0MsYUFBSCxzQkFBdUJpQyxFQUF2QixFQUNYUyxNQURXLEVBRVhILE1BRlcsQ0FBdEI7QUFLQSxTQUFPLG1CQUFNNUMsUUFBTixFQUFnQk0sS0FBaEIsQ0FBc0JGLE1BQXRCLEVBQ0pHLElBREksQ0FDQyxVQUFDQyxNQUFEO0FBQUEsV0FBeUJBLE1BQU0sQ0FBQ08sSUFBUCxFQUF6QjtBQUFBLEdBREQsRUFFSlIsSUFGSSxDQUVDO0FBQUEsUUFBQ1MsWUFBRCx1RUFBa0MsRUFBbEM7QUFBQSxXQUF5Q0EsWUFBekM7QUFBQSxHQUZELFdBR0UsVUFBQ04sS0FBRDtBQUFBLFdBQWtCLHlCQUFTO0FBQ2hDWCxNQUFBQSxNQUFNLEVBQU5BLE1BRGdDO0FBRWhDWSxNQUFBQSxRQUFRLEVBQUVqQixhQUZzQjtBQUdoQ2tCLE1BQUFBLEtBQUssRUFBRTtBQUh5QixLQUFULEVBSXRCRixLQUpzQixFQUlmZCxPQUplLEVBSU5XLElBSk0sQ0FJRDtBQUFBLGFBQU0sSUFBTjtBQUFBLEtBSkMsQ0FBbEI7QUFBQSxHQUhGLENBQVA7QUFRRCxDQW5DTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VJZH0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2FxbC1xdWVyeSc7XG5pbXBvcnQge0FycmF5Q3Vyc29yfSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2N1cnNvcic7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IGlkZW50aXR5IGZyb20gJ2xvZGFzaC9pZGVudGl0eSc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgcGljayBmcm9tICdsb2Rhc2gvcGljayc7XG5pbXBvcnQge0FwaUNvbnRleHR9IGZyb20gJ3R5cGVzL2F1dGgnO1xuXG5pbXBvcnQge0FyYW5nb0RCTGltaXQsIENvbnZlcnNhdGlvblR5cGUsIEltYWdlVXJsRGF0YSwgVXNlclR5cGV9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7Z2V0TGltaXQsIHVzZURifSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge2xvZ0Vycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3MnO1xuaW1wb3J0IHtnZXRVcmxJbWFnZXN9IGZyb20gJy4vaW1hZ2VzJztcbmltcG9ydCB7Z2V0RGlzcGxheU5hbWV9IGZyb20gJy4vdXNlcnMnO1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2NvbnZlcnNhdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udmVyc2F0aW9uTGlzdCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRMaXN0JztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBsaW1pdDogQXJhbmdvREJMaW1pdCA9IGdldExpbWl0KGZyb20sIHRvKTtcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIGMgSU4gY29udmVyc2F0aW9uc1xuICAgIEZJTFRFUiBQT1NJVElPTihjLnVzZXJzLCBcIiR7c2Vzc2lvbklkfVwiLCBmYWxzZSlcbiAgICBMRVQgdSA9IChcbiAgICAgIEZPUiBnIElOIGMudXNlcnNcbiAgICAgIEZPUiB1IElOIHVzZXJzXG4gICAgICBGSUxURVIgZyA9PSB1Ll9rZXlcbiAgICAgIFJFVFVSTiB7X2tleTp1Ll9rZXksIGZpcnN0OnUuZmlyc3QsIGxhc3Q6dS5sYXN0LCBuYW1lOnUubmFtZSwgZW1haWw6dS5lbWFpbCwgdXNlcm5hbWU6dS51c2VybmFtZSwgcGhvdG86dS5waG90byB9XG4gICAgKVxuICAgIEZJTFRFUiBMRU5HVEgodSkgPiAxXG4gICAgJHtsaW1pdC5hcWx9XG4gICAgUkVUVVJOIHtfa2V5OmMuX2tleSwgbmFtZTogYy5uYW1lLCBkaXJlY3Q6IGMuZGlyZWN0LCB1c2VyczogdX1gO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGlyZWN0Q29udmVyc2F0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldERpcmVjdCc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0VXNlcklkOiBzdHJpbmcgPSBwYXJzZUlkKHVzZXJJZCk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgYyBJTiBjb252ZXJzYXRpb25zXG4gICAgRklMVEVSIExFTkdUSChjLnVzZXJzKSA9PSAyICYmXG4gICAgUE9TSVRJT04oYy51c2VycywgJHtzZXNzaW9uSWR9LCBmYWxzZSkgJiZcbiAgICBQT1NJVElPTihjLnVzZXJzLCAke2Zvcm1hdFVzZXJJZH0sIGZhbHNlKVxuICAgIExFVCB1ID0gKFxuICAgICAgRk9SIGcgSU4gYy51c2Vyc1xuICAgICAgRk9SIHVzZXIgSU4gdXNlcnNcbiAgICAgIEZJTFRFUiB1c2VyLl9rZXkgPT0gZ1xuICAgICAgUkVUVVJOIHVzZXJcbiAgICApXG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBNRVJHRShjLCB7dXNlcnM6IHV9KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCB7dXNlcnMgPSBbXX0gPSBjb252ZXJzYXRpb247XG5cbiAgICAgIGlmKHVzZXJzLmxlbmd0aCkge1xuICAgICAgICBjb252ZXJzYXRpb24udXNlcnMgPSB1c2Vycy5tYXAoKHVzZXI6IFVzZXJUeXBlKSA9PiB7XG4gICAgICAgICAgY29uc3Qge19rZXk6IHVzZXJLZXksIGltZ0lkfSA9IHVzZXI7XG4gICAgICAgICAgY29uc3QgdGh1bWJVcmxEYXRhOiBJbWFnZVVybERhdGEgPSB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6ICdpbWFnZXMnLFxuICAgICAgICAgICAgaW1nSWQsXG4gICAgICAgICAgICBpc1RodW1iOiB0cnVlLFxuICAgICAgICAgICAgdHlwZTogJ3VzZXJzJyxcbiAgICAgICAgICAgIHR5cGVJZDogdXNlcktleVxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnVzZXIsXG4gICAgICAgICAgICBuYW1lOiBnZXREaXNwbGF5TmFtZSh1c2VyKSxcbiAgICAgICAgICAgIHRodW1iOiBnZXRVcmxJbWFnZXModGh1bWJVcmxEYXRhKVxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udmVyc2F0aW9uO1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udmVyc2F0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGNvbnZvSWQ6IHN0cmluZyk6IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRJdGVtJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRDb252b0lkOiBzdHJpbmcgPSBwYXJzZUlkKGNvbnZvSWQpO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGMgSU4gY29udmVyc2F0aW9uc1xuICAgIEZJTFRFUiBjLl9rZXkgPT0gJHtmb3JtYXRDb252b0lkfSAmJiBJU19MSVNUKGMudXNlcnMpICYmIFBPU0lUSU9OKGMudXNlcnMsICR7c2Vzc2lvbklkfSwgZmFsc2UpXG4gICAgTEVUIHUgPSAoXG4gICAgICBGT1IgZyBJTiBjLnVzZXJzXG4gICAgICBGT1IgdSBJTiB1c2Vyc1xuICAgICAgRklMVEVSIGcgPT0gdS5fa2V5XG4gICAgICBSRVRVUk4ge19rZXk6dS5fa2V5LCBmaXJzdDp1LmZpcnN0LCBsYXN0OnUubGFzdCwgbmFtZTp1Lm5hbWUsIGVtYWlsOnUuZW1haWwsIHVzZXJuYW1lOnUudXNlcm5hbWUsIHBob3RvOnUucGhvdG8gfVxuICAgIClcbiAgICBGSUxURVIgTEVOR1RIKHUpID4gMVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gTUVSR0UoYywge3VzZXJzOiB1fSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUgPSB7fSkgPT4ge1xuICAgICAgaWYoIWlzRW1wdHkoY29udmVyc2F0aW9uKSkge1xuICAgICAgICBjb252ZXJzYXRpb24udXNlcnMgPSBjb252ZXJzYXRpb24udXNlcnMubWFwKCh1c2VyOiBVc2VyVHlwZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHtfa2V5OiB1c2VyS2V5LCBpbWdJZH0gPSB1c2VyO1xuICAgICAgICAgIGNvbnN0IHRodW1iVXJsRGF0YTogSW1hZ2VVcmxEYXRhID0ge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiAnaW1hZ2VzJyxcbiAgICAgICAgICAgIGltZ0lkLFxuICAgICAgICAgICAgaXNUaHVtYjogdHJ1ZSxcbiAgICAgICAgICAgIHR5cGU6ICd1c2VycycsXG4gICAgICAgICAgICB0eXBlSWQ6IHVzZXJLZXlcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgICAgbmFtZTogZ2V0RGlzcGxheU5hbWUodXNlciksXG4gICAgICAgICAgICB0aHVtYjogZ2V0VXJsSW1hZ2VzKHRodW1iVXJsRGF0YSlcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY29udmVyc2F0aW9uO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQ29udmVyc2F0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGl0ZW0pOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAndXBkYXRlJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCB7ZGlyZWN0LCBpZCwgbmFtZSwgdXNlcnN9ID0gcGljayhpdGVtLCBpZGVudGl0eSk7XG4gIGNvbnN0IHJjcHQ6IFVzZXJUeXBlW10gPSB1c2VycyB8fCBbXTtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IGl0ZW0uaWQgfHwgY3JlYXRlSGFzaChgY29udm8tJHtzZXNzaW9uSWR9LSR7cmNwdC5qb2luKCcnKX1gKTtcbiAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBjb25zdCB1cGRhdGU6IGFueSA9IHtcbiAgICAvLyBEaXJlY3QgbWVzc2FnZVxuICAgIGRpcmVjdDogISFkaXJlY3QgPyBkaXJlY3QgOiB1bmRlZmluZWQsXG4gICAgbW9kaWZpZWQ6IG5vdyxcbiAgICBuYW1lOiAhIW5hbWUgPyBuYW1lIDogdW5kZWZpbmVkLFxuICAgIC8vIFVzZXJzXG4gICAgdXNlcnM6ICEhdXNlcnMgPyB1c2VycyA6IHVuZGVmaW5lZFxuICB9O1xuXG4gIGNvbnN0IGluc2VydDogYW55ID0ge1xuICAgIC4uLmNsb25lRGVlcCh1cGRhdGUpLFxuICAgIF9rZXk6IGZvcm1hdElkLFxuICAgIGFkZGVkOiBub3dcbiAgfTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7X2tleTogJHtpZH19XG4gICAgSU5TRVJUICR7aW5zZXJ0fVxuICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICBJTiBjb252ZXJzYXRpb25zIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUgPSB7fSkgPT4gY29udmVyc2F0aW9uKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parseDynamo = exports.dynamoDel = exports.dynamoPutList = exports.dynamoUpdate = exports.dynamoPut = exports.dynamoGetList = exports.dynamoGet = void 0;
|
|
7
|
+
|
|
8
|
+
var _awsSdk = _interopRequireWildcard(require("aws-sdk"));
|
|
9
|
+
|
|
10
|
+
var _config = require("../config");
|
|
11
|
+
|
|
12
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } }
|
|
13
|
+
|
|
14
|
+
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; }
|
|
15
|
+
|
|
16
|
+
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; }
|
|
17
|
+
|
|
18
|
+
// const eventCategory: string = 'dynamodb';
|
|
19
|
+
var dynamoGet = function dynamoGet(params) {
|
|
20
|
+
return new Promise(function (resolve, reject) {
|
|
21
|
+
_awsSdk["default"].config.update(_config.Config.get('aws'));
|
|
22
|
+
|
|
23
|
+
var dynamodb = new _awsSdk.DynamoDB();
|
|
24
|
+
params.ConsistentRead = false;
|
|
25
|
+
dynamodb.getItem(params, function (error, results) {
|
|
26
|
+
if (error) {
|
|
27
|
+
return reject(error);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return resolve(results);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
exports.dynamoGet = dynamoGet;
|
|
36
|
+
|
|
37
|
+
var dynamoGetList = function dynamoGetList(params, index) {
|
|
38
|
+
return new Promise(function (resolve, reject) {
|
|
39
|
+
_awsSdk["default"].config.update(_config.Config.get('aws'));
|
|
40
|
+
|
|
41
|
+
var dynamodb = new _awsSdk.DynamoDB();
|
|
42
|
+
var consistentRead = params.ConsistentRead;
|
|
43
|
+
|
|
44
|
+
var updatedParams = _objectSpread({}, params);
|
|
45
|
+
|
|
46
|
+
if (index) {
|
|
47
|
+
updatedParams.ExclusiveStartKey = index;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (!consistentRead) {
|
|
51
|
+
updatedParams.ConsistentRead = false;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
dynamodb.query(updatedParams, function (error, output) {
|
|
55
|
+
if (error) {
|
|
56
|
+
return reject(error);
|
|
57
|
+
} // Save list of items
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
var list = parseDynamo(output);
|
|
61
|
+
var lastKey = output.LastEvaluatedKey;
|
|
62
|
+
|
|
63
|
+
if (lastKey !== undefined) {
|
|
64
|
+
// Save last index before looping
|
|
65
|
+
return dynamoGetList(params, lastKey);
|
|
66
|
+
} // Query complete, return final list
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
return resolve(list);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
exports.dynamoGetList = dynamoGetList;
|
|
75
|
+
|
|
76
|
+
var dynamoPut = function dynamoPut(params) {
|
|
77
|
+
return new Promise(function (resolve, reject) {
|
|
78
|
+
_awsSdk["default"].config.update(_config.Config.get('aws'));
|
|
79
|
+
|
|
80
|
+
var dynamodb = new _awsSdk.DynamoDB();
|
|
81
|
+
dynamodb.putItem(params, function (error, output) {
|
|
82
|
+
if (error) {
|
|
83
|
+
return reject(error);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return resolve(output);
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
exports.dynamoPut = dynamoPut;
|
|
92
|
+
|
|
93
|
+
var dynamoUpdate = function dynamoUpdate(params) {
|
|
94
|
+
return new Promise(function (resolve, reject) {
|
|
95
|
+
_awsSdk["default"].config.update(_config.Config.get('aws'));
|
|
96
|
+
|
|
97
|
+
var dynamodb = new _awsSdk.DynamoDB();
|
|
98
|
+
dynamodb.updateItem(params, function (error, output) {
|
|
99
|
+
if (error) {
|
|
100
|
+
return reject(error);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return resolve(output);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
exports.dynamoUpdate = dynamoUpdate;
|
|
109
|
+
|
|
110
|
+
var dynamoPutList = function dynamoPutList(params) {
|
|
111
|
+
return new Promise(function (resolve, reject) {
|
|
112
|
+
_awsSdk["default"].config.update(_config.Config.get('aws'));
|
|
113
|
+
|
|
114
|
+
var dynamodb = new _awsSdk.DynamoDB();
|
|
115
|
+
dynamodb.batchWriteItem(params, function (error, output) {
|
|
116
|
+
if (error) {
|
|
117
|
+
return reject(error);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return resolve(output);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
exports.dynamoPutList = dynamoPutList;
|
|
126
|
+
|
|
127
|
+
var dynamoDel = function dynamoDel(params) {
|
|
128
|
+
return new Promise(function (resolve, reject) {
|
|
129
|
+
_awsSdk["default"].config.update(_config.Config.get('aws'));
|
|
130
|
+
|
|
131
|
+
var dynamodb = new _awsSdk.DynamoDB();
|
|
132
|
+
dynamodb.deleteItem(params, function (error, output) {
|
|
133
|
+
if (error) {
|
|
134
|
+
return reject(error);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return resolve(output);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
exports.dynamoDel = dynamoDel;
|
|
143
|
+
|
|
144
|
+
var parseDynamo = function parseDynamo(results) {
|
|
145
|
+
var items = results.Items;
|
|
146
|
+
var data = [];
|
|
147
|
+
|
|
148
|
+
for (var idx = 0, len = items.length; idx < len; idx++) {
|
|
149
|
+
var tmp = items[idx];
|
|
150
|
+
var obj = {};
|
|
151
|
+
var key = void 0;
|
|
152
|
+
|
|
153
|
+
for (key in tmp) {
|
|
154
|
+
if (tmp.hasOwnProperty(key)) {
|
|
155
|
+
if (tmp[key].S) {
|
|
156
|
+
obj[key] = tmp[key].S.toString();
|
|
157
|
+
} else if (tmp[key].N) {
|
|
158
|
+
obj[key] = parseFloat(tmp[key].N);
|
|
159
|
+
} else {
|
|
160
|
+
obj[key] = tmp[key].B;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
data.push(obj);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
return data;
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
exports.parseDynamo = parseDynamo;
|
|
172
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2R5bmFtb2RiLnRzIl0sIm5hbWVzIjpbImR5bmFtb0dldCIsInBhcmFtcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiYXdzIiwiY29uZmlnIiwidXBkYXRlIiwiQ29uZmlnIiwiZ2V0IiwiZHluYW1vZGIiLCJEeW5hbW9EQiIsIkNvbnNpc3RlbnRSZWFkIiwiZ2V0SXRlbSIsImVycm9yIiwicmVzdWx0cyIsImR5bmFtb0dldExpc3QiLCJpbmRleCIsImNvbnNpc3RlbnRSZWFkIiwidXBkYXRlZFBhcmFtcyIsIkV4Y2x1c2l2ZVN0YXJ0S2V5IiwicXVlcnkiLCJvdXRwdXQiLCJsaXN0IiwicGFyc2VEeW5hbW8iLCJsYXN0S2V5IiwiTGFzdEV2YWx1YXRlZEtleSIsInVuZGVmaW5lZCIsImR5bmFtb1B1dCIsInB1dEl0ZW0iLCJkeW5hbW9VcGRhdGUiLCJ1cGRhdGVJdGVtIiwiZHluYW1vUHV0TGlzdCIsImJhdGNoV3JpdGVJdGVtIiwiZHluYW1vRGVsIiwiZGVsZXRlSXRlbSIsIml0ZW1zIiwiSXRlbXMiLCJkYXRhIiwiaWR4IiwibGVuIiwibGVuZ3RoIiwidG1wIiwib2JqIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJTIiwidG9TdHJpbmciLCJOIiwicGFyc2VGbG9hdCIsIkIiLCJwdXNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUE7O0FBZ0JBOzs7Ozs7OztBQUVBO0FBRU8sSUFBTUEsU0FBUyxHQUFHLFNBQVpBLFNBQVksQ0FBQ0MsTUFBRCxFQUFrRDtBQUN6RSxTQUFPLElBQUlDLE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFDdENDLHVCQUFJQyxNQUFKLENBQVdDLE1BQVgsQ0FBa0JDLGVBQU9DLEdBQVAsQ0FBVyxLQUFYLENBQWxCOztBQUNBLFFBQU1DLFFBQWtCLEdBQUcsSUFBSUMsZ0JBQUosRUFBM0I7QUFDQVYsSUFBQUEsTUFBTSxDQUFDVyxjQUFQLEdBQXdCLEtBQXhCO0FB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QU9MLElBQVA7QUFDRCxDQXpCTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgYXdzLCB7RHluYW1vREJ9IGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHtcbiAgQmF0Y2hXcml0ZUl0ZW1JbnB1dCxcbiAgQmF0Y2hXcml0ZUl0ZW1PdXRwdXQsXG4gIERlbGV0ZUl0ZW1JbnB1dCxcbiAgRGVsZXRlSXRlbU91dHB1dCxcbiAgR2V0SXRlbUlucHV0LFxuICBHZXRJdGVtT3V0cHV0LFxuICBQdXRJdGVtSW5wdXQsXG4gIFB1dEl0ZW1PdXRwdXQsXG4gIFF1ZXJ5SW5wdXQsXG4gIFF1ZXJ5T3V0cHV0LFxuICBVcGRhdGVJdGVtSW5wdXQsXG4gIFVwZGF0ZUl0ZW1PdXRwdXRcbn0gZnJvbSAnYXdzLXNkay9jbGllbnRzL2R5bmFtb2RiJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZyc7XG5cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdkeW5hbW9kYic7XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9HZXQgPSAocGFyYW1zOiBHZXRJdGVtSW5wdXQpOiBQcm9taXNlPEdldEl0ZW1PdXRwdXQ+ID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBhd3MuY29uZmlnLnVwZGF0ZShDb25maWcuZ2V0KCdhd3MnKSk7XG4gICAgY29uc3QgZHluYW1vZGI6IER5bmFtb0RCID0gbmV3IER5bmFtb0RCKCk7XG4gICAgcGFyYW1zLkNvbnNpc3RlbnRSZWFkID0gZmFsc2U7XG5cbiAgICBkeW5hbW9kYi5nZXRJdGVtKHBhcmFtcywgKGVycm9yOiBFcnJvciwgcmVzdWx0czogR2V0SXRlbU91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNvbHZlKHJlc3VsdHMpO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBkeW5hbW9HZXRMaXN0ID0gKHBhcmFtczogUXVlcnlJbnB1dCwgaW5kZXgpOiBQcm9taXNlPEdldEl0ZW1PdXRwdXRbXT4gPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGF3cy5jb25maWcudXBkYXRlKENvbmZpZy5nZXQoJ2F3cycpKTtcbiAgICBjb25zdCBkeW5hbW9kYjogRHluYW1vREIgPSBuZXcgRHluYW1vREIoKTtcbiAgICBjb25zdCB7Q29uc2lzdGVudFJlYWQ6IGNvbnNpc3RlbnRSZWFkfSA9IHBhcmFtcztcbiAgICBjb25zdCB1cGRhdGVkUGFyYW1zID0gey4uLnBhcmFtc307XG5cbiAgICBpZihpbmRleCkge1xuICAgICAgdXBkYXRlZFBhcmFtcy5FeGNsdXNpdmVTdGFydEtleSA9IGluZGV4O1xuICAgIH1cblxuICAgIGlmKCFjb25zaXN0ZW50UmVhZCkge1xuICAgICAgdXBkYXRlZFBhcmFtcy5Db25zaXN0ZW50UmVhZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGR5bmFtb2RiLnF1ZXJ5KHVwZGF0ZWRQYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogUXVlcnlPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgLy8gU2F2ZSBsaXN0IG9mIGl0ZW1zXG4gICAgICBjb25zdCBsaXN0OiBhbnlbXSA9IHBhcnNlRHluYW1vKG91dHB1dCk7XG4gICAgICBjb25zdCB7TGFzdEV2YWx1YXRlZEtleTogbGFzdEtleX0gPSBvdXRwdXQ7XG5cbiAgICAgIGlmKGxhc3RLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBTYXZlIGxhc3QgaW5kZXggYmVmb3JlIGxvb3BpbmdcbiAgICAgICAgcmV0dXJuIGR5bmFtb0dldExpc3QocGFyYW1zLCBsYXN0S2V5KTtcbiAgICAgIH1cblxuICAgICAgLy8gUXVlcnkgY29tcGxldGUsIHJldHVybiBmaW5hbCBsaXN0XG4gICAgICByZXR1cm4gcmVzb2x2ZShsaXN0KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZHluYW1vUHV0ID0gKHBhcmFtczogUHV0SXRlbUlucHV0KTogUHJvbWlzZTxQdXRJdGVtT3V0cHV0PiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IGR5bmFtb2RiOiBEeW5hbW9EQiA9IG5ldyBEeW5hbW9EQigpO1xuXG4gICAgZHluYW1vZGIucHV0SXRlbShwYXJhbXMsIChlcnJvciwgb3V0cHV0OiBQdXRJdGVtT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb1VwZGF0ZSA9IChwYXJhbXM6IFVwZGF0ZUl0ZW1JbnB1dCk6IFByb21pc2U8VXBkYXRlSXRlbU91dHB1dD4gPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGF3cy5jb25maWcudXBkYXRlKENvbmZpZy5nZXQoJ2F3cycpKTtcbiAgICBjb25zdCBkeW5hbW9kYjogRHluYW1vREIgPSBuZXcgRHluYW1vREIoKTtcblxuICAgIGR5bmFtb2RiLnVwZGF0ZUl0ZW0ocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IFVwZGF0ZUl0ZW1PdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZHluYW1vUHV0TGlzdCA9IChwYXJhbXM6IEJhdGNoV3JpdGVJdGVtSW5wdXQpOiBQcm9taXNlPEJhdGNoV3JpdGVJdGVtT3V0cHV0PiA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgYXdzLmNvbmZpZy51cGRhdGUoQ29uZmlnLmdldCgnYXdzJykpO1xuICAgIGNvbnN0IGR5bmFtb2RiOiBEeW5hbW9EQiA9IG5ldyBEeW5hbW9EQigpO1xuXG4gICAgZHluYW1vZGIuYmF0Y2hXcml0ZUl0ZW0ocGFyYW1zLCAoZXJyb3I6IEVycm9yLCBvdXRwdXQ6IEJhdGNoV3JpdGVJdGVtT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGR5bmFtb0RlbCA9IChwYXJhbXM6IERlbGV0ZUl0ZW1JbnB1dCk6IFByb21pc2U8RGVsZXRlSXRlbU91dHB1dD4gPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGF3cy5jb25maWcudXBkYXRlKENvbmZpZy5nZXQoJ2F3cycpKTtcbiAgICBjb25zdCBkeW5hbW9kYjogRHluYW1vREIgPSBuZXcgRHluYW1vREIoKTtcblxuICAgIGR5bmFtb2RiLmRlbGV0ZUl0ZW0ocGFyYW1zLCAoZXJyb3IsIG91dHB1dDogRGVsZXRlSXRlbU91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUR5bmFtbyA9IChyZXN1bHRzOiBRdWVyeU91dHB1dCk6IGFueVtdID0+IHtcbiAgY29uc3Qge0l0ZW1zOiBpdGVtc30gPSByZXN1bHRzO1xuICBjb25zdCBkYXRhOiBhbnlbXSA9IFtdO1xuXG4gIGZvcihsZXQgaWR4OiBudW1iZXIgPSAwLCBsZW4gPSBpdGVtcy5sZW5ndGg7IGlkeCA8IGxlbjsgaWR4KyspIHtcbiAgICBjb25zdCB0bXAgPSBpdGVtc1tpZHhdO1xuICAgIGNvbnN0IG9iaiA9IHt9O1xuICAgIGxldCBrZXk7XG5cbiAgICBmb3Ioa2V5IGluIHRtcCkge1xuICAgICAgaWYodG1wLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgaWYodG1wW2tleV0uUykge1xuICAgICAgICAgIG9ialtrZXldID0gdG1wW2tleV0uUy50b1N0cmluZygpO1xuICAgICAgICB9IGVsc2UgaWYodG1wW2tleV0uTikge1xuICAgICAgICAgIG9ialtrZXldID0gcGFyc2VGbG9hdCh0bXBba2V5XS5OKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYmpba2V5XSA9IHRtcFtrZXldLkI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBkYXRhLnB1c2gob2JqKTtcbiAgfVxuXG4gIHJldHVybiBkYXRhO1xufTtcblxuIl19
|