@como/como-client 0.1.8 → 0.1.9-1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/index.js +3 -0
- package/lib/como.js +2119 -492
- package/lib/config/env.js +19 -5
- package/lib/constants/resourceNames.js +3 -0
- package/lib/interceptors/refresh.js +92 -36
- package/lib/interceptors/response.js +46 -0
- package/lib/services/auth.service.js +212 -46
- package/lib/services/form.service.js +96 -0
- package/lib/services/index.js +25 -12
- package/lib/services/log.service.js +332 -0
- package/lib/services/loyalty.service.js +769 -14
- package/lib/services/ssr.service.js +75 -0
- package/lib/utils/comoExternalUrlTranslator.js +242 -0
- package/lib/utils/urls.js +27 -0
- package/package.json +16 -7
- package/src/como.js +930 -0
- package/.babelrc +0 -15
- package/.eslintignore +0 -1
- package/.eslintrc +0 -46
- package/.vscode/launch.json +0 -14
- package/como.js +0 -413
- package/webpack.config.js +0 -13
- package/yarn.lock +0 -5026
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _regenerator = require("babel-runtime/regenerator");
|
|
4
|
+
|
|
5
|
+
var _regenerator2 = _interopRequireDefault(_regenerator);
|
|
6
|
+
|
|
7
|
+
var _asyncToGenerator2 = require("babel-runtime/helpers/asyncToGenerator");
|
|
8
|
+
|
|
9
|
+
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
|
|
10
|
+
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
|
|
13
|
+
exports.getPurchaseHistory = function (service) {
|
|
14
|
+
return function () {
|
|
15
|
+
var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(locationId, membershipKey, limit, offset) {
|
|
16
|
+
var url, _ref2, data;
|
|
17
|
+
|
|
18
|
+
return _regenerator2.default.wrap(function _callee$(_context) {
|
|
19
|
+
while (1) {
|
|
20
|
+
switch (_context.prev = _context.next) {
|
|
21
|
+
case 0:
|
|
22
|
+
url = "/ssr-modules/api/purchases/" + locationId + "?membershipKey=" + membershipKey + "&limit=" + limit + "&offset=" + offset;
|
|
23
|
+
_context.next = 3;
|
|
24
|
+
return service.get(url);
|
|
25
|
+
|
|
26
|
+
case 3:
|
|
27
|
+
_ref2 = _context.sent;
|
|
28
|
+
data = _ref2.data;
|
|
29
|
+
return _context.abrupt("return", data);
|
|
30
|
+
|
|
31
|
+
case 6:
|
|
32
|
+
case "end":
|
|
33
|
+
return _context.stop();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}, _callee, undefined);
|
|
37
|
+
}));
|
|
38
|
+
|
|
39
|
+
return function (_x, _x2, _x3, _x4) {
|
|
40
|
+
return _ref.apply(this, arguments);
|
|
41
|
+
};
|
|
42
|
+
}();
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
exports.getLanguages = function (service) {
|
|
46
|
+
return function () {
|
|
47
|
+
var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(locationId) {
|
|
48
|
+
var url, _ref4, data;
|
|
49
|
+
|
|
50
|
+
return _regenerator2.default.wrap(function _callee2$(_context2) {
|
|
51
|
+
while (1) {
|
|
52
|
+
switch (_context2.prev = _context2.next) {
|
|
53
|
+
case 0:
|
|
54
|
+
url = "/ssr-modules/api/languages/" + locationId;
|
|
55
|
+
_context2.next = 3;
|
|
56
|
+
return service.get(url);
|
|
57
|
+
|
|
58
|
+
case 3:
|
|
59
|
+
_ref4 = _context2.sent;
|
|
60
|
+
data = _ref4.data;
|
|
61
|
+
return _context2.abrupt("return", data);
|
|
62
|
+
|
|
63
|
+
case 6:
|
|
64
|
+
case "end":
|
|
65
|
+
return _context2.stop();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}, _callee2, undefined);
|
|
69
|
+
}));
|
|
70
|
+
|
|
71
|
+
return function (_x5) {
|
|
72
|
+
return _ref3.apply(this, arguments);
|
|
73
|
+
};
|
|
74
|
+
}();
|
|
75
|
+
};
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _keys = require('babel-runtime/core-js/object/keys');
|
|
4
|
+
|
|
5
|
+
var _keys2 = _interopRequireDefault(_keys);
|
|
6
|
+
|
|
7
|
+
var _regenerator = require('babel-runtime/regenerator');
|
|
8
|
+
|
|
9
|
+
var _regenerator2 = _interopRequireDefault(_regenerator);
|
|
10
|
+
|
|
11
|
+
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
|
|
12
|
+
|
|
13
|
+
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
|
|
14
|
+
|
|
15
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
|
+
|
|
17
|
+
exports.translateUrl = function () {
|
|
18
|
+
var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(url, apiObjects, dataToUse) {
|
|
19
|
+
var elementsToTranslate, toReturn;
|
|
20
|
+
return _regenerator2.default.wrap(function _callee$(_context) {
|
|
21
|
+
while (1) {
|
|
22
|
+
switch (_context.prev = _context.next) {
|
|
23
|
+
case 0:
|
|
24
|
+
elementsToTranslate = getElementsToTranslate(url);
|
|
25
|
+
_context.next = 3;
|
|
26
|
+
return translateElements(elementsToTranslate, apiObjects, dataToUse);
|
|
27
|
+
|
|
28
|
+
case 3:
|
|
29
|
+
toReturn = url;
|
|
30
|
+
|
|
31
|
+
elementsToTranslate.forEach(function (item) {
|
|
32
|
+
var replaceWith = item.replaceWith && encodeURIComponent(item.replaceWith) || '';
|
|
33
|
+
toReturn = toReturn.replace(item.toReplace, replaceWith);
|
|
34
|
+
});
|
|
35
|
+
return _context.abrupt('return', toReturn);
|
|
36
|
+
|
|
37
|
+
case 6:
|
|
38
|
+
case 'end':
|
|
39
|
+
return _context.stop();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}, _callee, undefined);
|
|
43
|
+
}));
|
|
44
|
+
|
|
45
|
+
return function (_x, _x2, _x3) {
|
|
46
|
+
return _ref.apply(this, arguments);
|
|
47
|
+
};
|
|
48
|
+
}();
|
|
49
|
+
|
|
50
|
+
var getValueFromObjectForUrl = function getValueFromObjectForUrl(obj, keyName) {
|
|
51
|
+
if (!obj || !keyName) {
|
|
52
|
+
return '';
|
|
53
|
+
}
|
|
54
|
+
var keyToFind = keyName.toLowerCase();
|
|
55
|
+
var foundKey = (0, _keys2.default)(obj).filter(function (item) {
|
|
56
|
+
return item.toLowerCase() === keyToFind;
|
|
57
|
+
});
|
|
58
|
+
return foundKey && foundKey.length > 0 ? obj[foundKey[0]] || '' : '';
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
var getElementsToTranslate = function getElementsToTranslate(url) {
|
|
62
|
+
var items = [];
|
|
63
|
+
if (url) {
|
|
64
|
+
var matches = url.match(new RegExp(/_#.*?#_/g));
|
|
65
|
+
if (matches) {
|
|
66
|
+
items = matches.filter(function (f) {
|
|
67
|
+
return f && f.length > 0;
|
|
68
|
+
}).map(function (element) {
|
|
69
|
+
var parentKeyRegex = new RegExp(/_#(.*?)#/g).exec(element);
|
|
70
|
+
var childKeyRegex = new RegExp(/_#.*?#(.*?)#_/g).exec(element);
|
|
71
|
+
var parentKey = parentKeyRegex && parentKeyRegex[1];
|
|
72
|
+
var childKey = childKeyRegex && childKeyRegex[1];
|
|
73
|
+
return parentKey && childKey && parentKey.length > 0 && childKey.length > 0 && {
|
|
74
|
+
parentKey: parentKey,
|
|
75
|
+
childKey: childKey.toLowerCase(),
|
|
76
|
+
toReplace: element,
|
|
77
|
+
replaceWith: ''
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return items;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
/* eslint-disable no-param-reassign */
|
|
86
|
+
var translateElements = function () {
|
|
87
|
+
var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(elementsToTranslate, apiObjects, dataToUse) {
|
|
88
|
+
var locationId, token, membership, locationData, assets, gpsData, assetID, accessibilityData, asset, i, item, api, servicesRoot, tempToken;
|
|
89
|
+
return _regenerator2.default.wrap(function _callee2$(_context2) {
|
|
90
|
+
while (1) {
|
|
91
|
+
switch (_context2.prev = _context2.next) {
|
|
92
|
+
case 0:
|
|
93
|
+
if (!elementsToTranslate) {
|
|
94
|
+
_context2.next = 54;
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
locationId = dataToUse.locationId, token = dataToUse.token, membership = dataToUse.membership, locationData = dataToUse.locationData, assets = dataToUse.assets, gpsData = dataToUse.gpsData, assetID = dataToUse.assetID, accessibilityData = dataToUse.accessibilityData;
|
|
99
|
+
asset = assetID && assets && assets.filter(function (a) {
|
|
100
|
+
return a.Key === assetID;
|
|
101
|
+
})[0];
|
|
102
|
+
i = 0;
|
|
103
|
+
|
|
104
|
+
case 4:
|
|
105
|
+
if (!(i < elementsToTranslate.length)) {
|
|
106
|
+
_context2.next = 54;
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
item = elementsToTranslate[i];
|
|
111
|
+
_context2.t0 = item.parentKey.toLowerCase();
|
|
112
|
+
_context2.next = _context2.t0 === 'temporarytoken' ? 9 : _context2.t0 === 'local' ? 15 : _context2.t0 === 'useratlocation' ? 24 : _context2.t0 === 'locationdata' ? 26 : _context2.t0 === 'getlatlong' ? 28 : _context2.t0 === 'asset' ? 38 : _context2.t0 === 'accessibility' ? 40 : _context2.t0 === 'sessions' ? 42 : 50;
|
|
113
|
+
break;
|
|
114
|
+
|
|
115
|
+
case 9:
|
|
116
|
+
api = apiObjects.api, servicesRoot = apiObjects.servicesRoot;
|
|
117
|
+
_context2.next = 12;
|
|
118
|
+
return api.generateTemporaryToken(servicesRoot, locationId, token, item.childKey);
|
|
119
|
+
|
|
120
|
+
case 12:
|
|
121
|
+
tempToken = _context2.sent;
|
|
122
|
+
|
|
123
|
+
item.replaceWith = tempToken && tempToken.TemporaryToken || '';
|
|
124
|
+
return _context2.abrupt('break', 51);
|
|
125
|
+
|
|
126
|
+
case 15:
|
|
127
|
+
_context2.t1 = item.childKey;
|
|
128
|
+
_context2.next = _context2.t1 === 'signedin' ? 18 : _context2.t1 === 'locationid' ? 20 : 22;
|
|
129
|
+
break;
|
|
130
|
+
|
|
131
|
+
case 18:
|
|
132
|
+
item.replaceWith = !membership || membership.Error || membership.MembershipStatus !== 'registered' ? 'N' : 'Y';
|
|
133
|
+
return _context2.abrupt('break', 23);
|
|
134
|
+
|
|
135
|
+
case 20:
|
|
136
|
+
item.replaceWith = locationId;
|
|
137
|
+
return _context2.abrupt('break', 23);
|
|
138
|
+
|
|
139
|
+
case 22:
|
|
140
|
+
return _context2.abrupt('break', 23);
|
|
141
|
+
|
|
142
|
+
case 23:
|
|
143
|
+
return _context2.abrupt('break', 51);
|
|
144
|
+
|
|
145
|
+
case 24:
|
|
146
|
+
if (membership) {
|
|
147
|
+
item.replaceWith = getValueFromObjectForUrl(membership, item.childKey);
|
|
148
|
+
}
|
|
149
|
+
return _context2.abrupt('break', 51);
|
|
150
|
+
|
|
151
|
+
case 26:
|
|
152
|
+
if (item.childKey === 'tag') {
|
|
153
|
+
(function () {
|
|
154
|
+
var tagsString = '';
|
|
155
|
+
if (membership && membership.Tag) {
|
|
156
|
+
membership.Tag.forEach(function (tag) {
|
|
157
|
+
tagsString += (tagsString ? ',' : '') + tag;
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
item.replaceWith = tagsString;
|
|
161
|
+
})();
|
|
162
|
+
} else {
|
|
163
|
+
item.replaceWith = locationData && getValueFromObjectForUrl(locationData, item.childKey) || '';
|
|
164
|
+
}
|
|
165
|
+
return _context2.abrupt('break', 51);
|
|
166
|
+
|
|
167
|
+
case 28:
|
|
168
|
+
if (!gpsData) {
|
|
169
|
+
_context2.next = 37;
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
_context2.t2 = item.childKey;
|
|
174
|
+
_context2.next = _context2.t2 === 'lat' ? 32 : _context2.t2 === 'long' ? 34 : 36;
|
|
175
|
+
break;
|
|
176
|
+
|
|
177
|
+
case 32:
|
|
178
|
+
item.replaceWith = gpsData.latitude;
|
|
179
|
+
return _context2.abrupt('break', 37);
|
|
180
|
+
|
|
181
|
+
case 34:
|
|
182
|
+
item.replaceWith = gpsData.longitude;
|
|
183
|
+
return _context2.abrupt('break', 37);
|
|
184
|
+
|
|
185
|
+
case 36:
|
|
186
|
+
return _context2.abrupt('break', 37);
|
|
187
|
+
|
|
188
|
+
case 37:
|
|
189
|
+
return _context2.abrupt('break', 51);
|
|
190
|
+
|
|
191
|
+
case 38:
|
|
192
|
+
if (asset) {
|
|
193
|
+
item.replaceWith = getValueFromObjectForUrl(asset, item.childKey);
|
|
194
|
+
}
|
|
195
|
+
return _context2.abrupt('break', 51);
|
|
196
|
+
|
|
197
|
+
case 40:
|
|
198
|
+
if (accessibilityData) {
|
|
199
|
+
item.replaceWith = getValueFromObjectForUrl(accessibilityData, item.childKey);
|
|
200
|
+
}
|
|
201
|
+
return _context2.abrupt('break', 51);
|
|
202
|
+
|
|
203
|
+
case 42:
|
|
204
|
+
if (!token) {
|
|
205
|
+
_context2.next = 49;
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
_context2.t3 = item.childKey;
|
|
210
|
+
_context2.next = _context2.t3 === 'appsessiontoken' ? 46 : 48;
|
|
211
|
+
break;
|
|
212
|
+
|
|
213
|
+
case 46:
|
|
214
|
+
item.replaceWith = token;
|
|
215
|
+
return _context2.abrupt('break', 49);
|
|
216
|
+
|
|
217
|
+
case 48:
|
|
218
|
+
return _context2.abrupt('break', 49);
|
|
219
|
+
|
|
220
|
+
case 49:
|
|
221
|
+
return _context2.abrupt('break', 51);
|
|
222
|
+
|
|
223
|
+
case 50:
|
|
224
|
+
return _context2.abrupt('break', 51);
|
|
225
|
+
|
|
226
|
+
case 51:
|
|
227
|
+
i += 1;
|
|
228
|
+
_context2.next = 4;
|
|
229
|
+
break;
|
|
230
|
+
|
|
231
|
+
case 54:
|
|
232
|
+
case 'end':
|
|
233
|
+
return _context2.stop();
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}, _callee2, undefined);
|
|
237
|
+
}));
|
|
238
|
+
|
|
239
|
+
return function translateElements(_x4, _x5, _x6) {
|
|
240
|
+
return _ref2.apply(this, arguments);
|
|
241
|
+
};
|
|
242
|
+
}();
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _keys = require('babel-runtime/core-js/object/keys');
|
|
4
|
+
|
|
5
|
+
var _keys2 = _interopRequireDefault(_keys);
|
|
6
|
+
|
|
7
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
8
|
+
|
|
9
|
+
exports.appendQuery = function (url, query) {
|
|
10
|
+
return (0, _keys2.default)(query || {}).reduce(function (modifiedURL, key) {
|
|
11
|
+
return updateQueryStringParameter(modifiedURL, key, query[key]);
|
|
12
|
+
}, url);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
var updateQueryStringParameter = function updateQueryStringParameter(uri, key, value) {
|
|
16
|
+
if (!value) {
|
|
17
|
+
return uri;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
var re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');
|
|
21
|
+
var separator = uri.indexOf('?') !== -1 ? '&' : '?';
|
|
22
|
+
if (uri.match(re)) {
|
|
23
|
+
return uri.replace(re, '$1' + key + '=' + value + '$2');
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return uri + separator + key + '=' + value;
|
|
27
|
+
};
|
package/package.json
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@como/como-client",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.91.1",
|
|
4
4
|
"description": "Client module for Como's loaylty API",
|
|
5
|
-
"main": "
|
|
5
|
+
"main": "src/como.js",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"test": "
|
|
8
|
-
"build": "node_modules/babel-cli/bin/babel.js src --out-dir lib",
|
|
7
|
+
"test": "mocha",
|
|
9
8
|
"prepublishOnly": "node_modules/babel-cli/bin/babel.js src --out-dir lib"
|
|
10
9
|
},
|
|
10
|
+
"files": [
|
|
11
|
+
"/lib",
|
|
12
|
+
"/index.js",
|
|
13
|
+
"/README.md"
|
|
14
|
+
],
|
|
11
15
|
"repository": {
|
|
12
16
|
"type": "git",
|
|
13
17
|
"url": "git+https://giliteho@github.com/ConduitMobileRND/como-client-lib.git"
|
|
@@ -23,20 +27,25 @@
|
|
|
23
27
|
"homepage": "https://github.com/ConduitMobileRND/como-client-lib#readme",
|
|
24
28
|
"dependencies": {
|
|
25
29
|
"axios": "^0.18.0",
|
|
26
|
-
"
|
|
30
|
+
"chai": "^4.1.2",
|
|
31
|
+
"mocha": "^5.2.0",
|
|
27
32
|
"moment-timezone": "^0.5.17",
|
|
28
33
|
"ramda": "^0.25.0"
|
|
29
34
|
},
|
|
30
35
|
"devDependencies": {
|
|
31
36
|
"babel-cli": "^6.26.0",
|
|
32
|
-
"babel-polyfill": "^6.26.0",
|
|
33
37
|
"babel-plugin-transform-runtime": "^6.23.0",
|
|
38
|
+
"babel-polyfill": "^6.26.0",
|
|
34
39
|
"babel-preset-env": "^1.7.0",
|
|
35
40
|
"babel-preset-es2015": "^6.24.1",
|
|
41
|
+
"babel-preset-stage-2": "^6.24.1",
|
|
42
|
+
"chai": "^4.1.2",
|
|
36
43
|
"eslint": "^4.19.1",
|
|
37
44
|
"eslint-config-airbnb-base": "^12.1.0",
|
|
38
45
|
"eslint-plugin-import": "^2.12.0",
|
|
46
|
+
"mocha": "^5.2.0",
|
|
47
|
+
"supertest": "^3.1.0",
|
|
39
48
|
"webpack": "^4.8.3",
|
|
40
49
|
"webpack-cli": "^2.1.4"
|
|
41
50
|
}
|
|
42
|
-
}
|
|
51
|
+
}
|