@shopgate/pwa-core 7.30.0-alpha.7 → 7.30.0-alpha.9

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 (85) hide show
  1. package/classes/AppCommand/index.js +115 -11
  2. package/classes/AppCommand/spec.js +260 -6
  3. package/classes/AppCommandRequest/index.js +129 -20
  4. package/classes/AppPermissionsRequest/AppPermissionsRequest.js +45 -7
  5. package/classes/AppPermissionsRequest/GetAppPermissionsRequest.js +48 -9
  6. package/classes/AppPermissionsRequest/RequestAppPermissionsRequest.js +54 -9
  7. package/classes/Bridge/index.js +34 -4
  8. package/classes/Bridge/spec.js +24 -1
  9. package/classes/BrightnessRequest/index.js +59 -10
  10. package/classes/BrightnessRequest/spec.js +111 -6
  11. package/classes/BrowserConnector/index.js +180 -26
  12. package/classes/Conditioner/index.js +74 -8
  13. package/classes/Conditioner/spec.js +75 -1
  14. package/classes/DataRequest/index.js +116 -13
  15. package/classes/DevServerBridge/index.js +85 -9
  16. package/classes/DevServerBridge/spec.js +230 -14
  17. package/classes/ErrorManager/index.js +144 -20
  18. package/classes/ErrorManager/spec.js +244 -2
  19. package/classes/Event/index.js +101 -15
  20. package/classes/HttpRequest/index.js +182 -21
  21. package/classes/PipelineDependencies/index.js +42 -6
  22. package/classes/PipelineDependencies/spec.js +46 -3
  23. package/classes/PipelineManager/index.js +517 -71
  24. package/classes/PipelineManager/spec.js +733 -15
  25. package/classes/PipelineRequest/index.js +167 -19
  26. package/classes/PipelineRequest/mock.js +118 -21
  27. package/classes/PipelineRequest/spec.js +333 -2
  28. package/classes/PipelineSequence/index.js +34 -6
  29. package/classes/Request/index.js +61 -13
  30. package/classes/RequestBuffer/index.js +43 -6
  31. package/classes/RequestManager/index.js +216 -33
  32. package/classes/RequestManager/spec.js +188 -1
  33. package/classes/Scanner/index.js +246 -67
  34. package/classes/ScannerEvent/index.js +23 -9
  35. package/classes/ScannerEventHandler/index.js +39 -16
  36. package/classes/ScannerEventListener/index.js +84 -24
  37. package/classes/ScannerManager/ScanProcessingError.js +11 -3
  38. package/classes/ScannerManager/index.js +133 -21
  39. package/classes/WebStorageRequest/index.js +76 -9
  40. package/commands/analyticsSetCustomValues.js +8 -2
  41. package/commands/appPermissions.js +10 -3
  42. package/commands/brightness.js +33 -5
  43. package/commands/broadcastEvent.js +8 -2
  44. package/commands/cleanTab.js +11 -3
  45. package/commands/closeInAppBrowser.js +22 -2
  46. package/commands/flushTab.js +8 -2
  47. package/commands/getWebStorageEntry.js +11 -2
  48. package/commands/hideMenuBar.js +8 -2
  49. package/commands/hideNavigationBar.js +8 -2
  50. package/commands/hideSplashScreen.js +8 -2
  51. package/commands/onload.js +13 -3
  52. package/commands/openAppSettings.js +8 -2
  53. package/commands/openPage.js +8 -2
  54. package/commands/openPageExtern.js +8 -2
  55. package/commands/performCommandsAfterDelay.js +11 -3
  56. package/commands/plotProjects.js +65 -7
  57. package/commands/popTabToRoot.js +11 -3
  58. package/commands/registerEvents.js +10 -2
  59. package/commands/scanner.js +76 -7
  60. package/commands/setCookie.js +8 -2
  61. package/commands/setDebugLoggingEnabled.js +8 -2
  62. package/commands/setScrollingEnabled.js +7 -2
  63. package/commands/setWebStorageEntry.js +8 -2
  64. package/commands/shareItem.js +18 -2
  65. package/commands/showNavigationBar.js +8 -2
  66. package/commands/showTab.js +13 -2
  67. package/commands/unifiedTracking.js +128 -30
  68. package/constants/AppCommands.js +6 -1
  69. package/constants/AppEvents.js +9 -1
  70. package/constants/AppPermissions.js +57 -13
  71. package/constants/Command.js +1 -1
  72. package/constants/ErrorHandleTypes.js +2 -1
  73. package/constants/ErrorManager.js +15 -1
  74. package/constants/Pipeline.js +52 -17
  75. package/constants/ProcessTypes.js +3 -1
  76. package/constants/RequestManagerModes.js +19 -7
  77. package/constants/RequestTypes.js +2 -1
  78. package/constants/Scanner.js +39 -10
  79. package/constants/Trilean.js +6 -1
  80. package/emitters/ui.js +2 -1
  81. package/helpers/index.js +66 -8
  82. package/helpers/logGroup.js +56 -8
  83. package/helpers/version.js +216 -22
  84. package/index.js +60 -5
  85. package/package.json +1 -2
@@ -1,2 +1,244 @@
1
- import _regeneratorRuntime from"@babel/runtime/regenerator";function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value;}catch(error){reject(error);return;}if(info.done){resolve(value);}else{Promise.resolve(value).then(_next,_throw);}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value);}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err);}_next(undefined);});};}import errorManager,{emitter}from'.';import{DEFAULT_CONTEXT,DEFAULT_SEVERITY}from"../../constants/ErrorManager";describe('ErrorManager',function(){beforeEach(function(){errorManager.constructor();});describe('errorManager.validate',function(){it('should accept a valid error object',function(){var code='EUNKNOWN';var message='Something went horribly wrong!';var source='pipeline';var response=errorManager.validate({code:code,message:message,source:source});expect(response).toEqual(true);});it('should accept a valid error object with cb message',function(){var code='EUNKNOWN';var message=jest.fn();var source='pipeline';var response=errorManager.validate({code:code,message:message,source:source});expect(response).toEqual(true);});it('should reject an error object with missing mandatory fields',function(){var response=errorManager.validate();expect(response).toEqual(false);});it('should reject an error object with fields that are not a string',function(){var code=404;var message='Something went horribly wrong!';var source='pipeline';var response=errorManager.validate({code:code,message:message,source:source});expect(response).toEqual(false);});});describe('errorManager.getMessage',function(){var code='EUNKNOWN';var source='pipeline';var context='shopgate.catalog.getFoo';var message='Test Message';it('should return the null when no override message is found',function(){var errorMessage=errorManager.getMessage({code:code,context:context,source:source});expect(errorMessage).toBeNull();});it('should return the message',function(){errorManager.setMessage({code:code,context:context,message:message});var errorMessage=errorManager.getMessage({code:code,context:context,source:source,message:message});expect(errorMessage).toBe(message);});it('should use callback for error message',function(){var overrideMessage=jest.fn().mockReturnValue('CB Error');errorManager.setMessage({code:code,context:context,message:overrideMessage});var error={code:code,context:context,source:source,message:message};expect(errorManager.getMessage(error)).toBe('CB Error');expect(overrideMessage).toBeCalledWith(error);});});describe('errorManager.setMessage',function(){it('should add an override message',function(){var code='EUNKNOWN';var context='shopgate.catalog.getUser';var message='Something went horribly wrong!';var source='pipeline';errorManager.setMessage({code:code,context:context,message:message,source:source});expect(errorManager.messages["".concat(source,"-").concat(context,"-").concat(code)]).toEqual(message);});it('should add an override message with no set context',function(){var code='EUNKNOWN';var message='Something went horribly wrong!';var source='pipeline';errorManager.setMessage({code:code,message:message,source:source});expect(errorManager.messages["".concat(source,"-").concat(DEFAULT_CONTEXT,"-").concat(code)]).toEqual(message);});it('should ignore setting a message with missing error object',function(){var code='EUNKNOWN';var source='pipeline';errorManager.setMessage();expect(errorManager.messages["".concat(source,"-").concat(DEFAULT_CONTEXT,"-").concat(code)]).toBeUndefined();});it('should ignore setting a message with missing mandatory fields',function(){var code='EUNKNOWN';var message='Something went horribly wrong!';var source='pipeline';errorManager.setMessage({message:message,source:source});expect(errorManager.messages["".concat(source,"-").concat(DEFAULT_CONTEXT,"-").concat(code)]).toBeUndefined();});it('should ignore setting a message with invalid input',function(){var code=404;var message='Something went horribly wrong!';var source='pipeline';errorManager.setMessage({code:code,message:message,source:source});expect(errorManager.messages["".concat(source,"-").concat(DEFAULT_CONTEXT,"-").concat(code)]).toBeUndefined();});});describe('errorManager.queue',function(){it('should not queue a missing error',function(){var code='EUNKNOWN';var source='pipeline';errorManager.queue();expect(errorManager.messages["".concat(source,"-").concat(DEFAULT_CONTEXT,"-").concat(code)]).toBeUndefined();});it('should not queue an invalid error',function(){var code=404;var message='Something went horribly wrong!';var source='pipeline';errorManager.queue({code:code,message:message,source:source});expect(errorManager.errorQueue.has("".concat(source,"-").concat(DEFAULT_CONTEXT,"-").concat(code))).toEqual(false);});it('should queue errors only once',function(){var code='EUNKNOWN';var message='Something went horribly wrong!';var source='pipeline';var callback=jest.fn();emitter.addListener('pipeline',callback);errorManager.queue({code:code,message:message,source:source});errorManager.queue({code:code,message:message,source:source});expect(errorManager.errorQueue.has("".concat(source,"-").concat(DEFAULT_CONTEXT,"-").concat(code))).toEqual(true);expect(errorManager.errorQueue.size).toEqual(1);});});it('should not dispatch when there are no errors',/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var callback,dispatch;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:callback=jest.fn();emitter.addListener('pipeline',callback);dispatch=errorManager.dispatch();expect(dispatch).toEqual(false);case 4:case"end":return _context.stop();}},_callee);})));it('should dispatch the errors through events',/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(){var code,message,source,callback,callback2;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:code='EUNKNOWN';message='Something went horribly wrong!';source='pipeline';callback=jest.fn();callback2=jest.fn();emitter.addListener('pipeline',callback);emitter.addListener('pipeline',callback2);_context2.next=9;return errorManager.queue({code:code,message:message,source:source});case 9:_context2.next=11;return errorManager.queue({code:'EUNKNOWN2',message:message,source:source});case 11:expect(errorManager.errorQueue.size).toEqual(2);errorManager.dispatch();expect(callback).toBeCalled();expect(callback2).toBeCalled();expect(errorManager.errorQueue.size).toEqual(0);case 16:case"end":return _context2.stop();}},_callee2);})));it('should set a queue entry with meta data',function(){var code='EUNKNOWN';var replacementMessage='Replacement Message';var message='Original Message';var source='pipeline';// Setup a replacement message for the error code.
2
- errorManager.setMessage({code:code,source:source,message:replacementMessage});var callback=jest.fn();emitter.addListener('pipeline',callback);errorManager.queue({message:message,code:code,source:source});errorManager.dispatch();expect(callback).toBeCalledWith({id:"".concat(source,"-").concat(DEFAULT_CONTEXT,"-").concat(code),context:DEFAULT_CONTEXT,message:replacementMessage,code:code,source:source,meta:{message:message},severity:DEFAULT_SEVERITY});});});
1
+ import errorManager, { emitter } from '.';
2
+ import { DEFAULT_CONTEXT, DEFAULT_SEVERITY } from "../../constants/ErrorManager";
3
+ describe('ErrorManager', () => {
4
+ beforeEach(() => {
5
+ errorManager.errorQueue.clear();
6
+ errorManager.messages = {};
7
+ });
8
+ describe('errorManager.validate', () => {
9
+ it('should accept a valid error object', () => {
10
+ const code = 'EUNKNOWN';
11
+ const message = 'Something went horribly wrong!';
12
+ const source = 'pipeline';
13
+ const response = errorManager.validate({
14
+ code,
15
+ message,
16
+ source
17
+ });
18
+ expect(response).toEqual(true);
19
+ });
20
+ it('should accept a valid error object with cb message', () => {
21
+ const code = 'EUNKNOWN';
22
+ const message = jest.fn();
23
+ const source = 'pipeline';
24
+ const response = errorManager.validate({
25
+ code,
26
+ message,
27
+ source
28
+ });
29
+ expect(response).toEqual(true);
30
+ });
31
+ it('should reject an error object with missing mandatory fields', () => {
32
+ const response = errorManager.validate();
33
+ expect(response).toEqual(false);
34
+ });
35
+ it('should reject an error object with fields that are not a string', () => {
36
+ const code = 404;
37
+ const message = 'Something went horribly wrong!';
38
+ const source = 'pipeline';
39
+ const response = errorManager.validate({
40
+ code,
41
+ message,
42
+ source
43
+ });
44
+ expect(response).toEqual(false);
45
+ });
46
+ });
47
+ describe('errorManager.getMessage', () => {
48
+ const code = 'EUNKNOWN';
49
+ const source = 'pipeline';
50
+ const context = 'shopgate.catalog.getFoo';
51
+ const message = 'Test Message';
52
+ it('should return the null when no override message is found', () => {
53
+ const errorMessage = errorManager.getMessage({
54
+ code,
55
+ context,
56
+ source
57
+ });
58
+ expect(errorMessage).toBeNull();
59
+ });
60
+ it('should return the message', () => {
61
+ errorManager.setMessage({
62
+ code,
63
+ context,
64
+ message
65
+ });
66
+ const errorMessage = errorManager.getMessage({
67
+ code,
68
+ context,
69
+ source,
70
+ message
71
+ });
72
+ expect(errorMessage).toBe(message);
73
+ });
74
+ it('should use callback for error message', () => {
75
+ const overrideMessage = jest.fn().mockReturnValue('CB Error');
76
+ errorManager.setMessage({
77
+ code,
78
+ context,
79
+ message: overrideMessage
80
+ });
81
+ const error = {
82
+ code,
83
+ context,
84
+ source,
85
+ message
86
+ };
87
+ expect(errorManager.getMessage(error)).toBe('CB Error');
88
+ expect(overrideMessage).toBeCalledWith(error);
89
+ });
90
+ });
91
+ describe('errorManager.setMessage', () => {
92
+ it('should add an override message', () => {
93
+ const code = 'EUNKNOWN';
94
+ const context = 'shopgate.catalog.getUser';
95
+ const message = 'Something went horribly wrong!';
96
+ const source = 'pipeline';
97
+ errorManager.setMessage({
98
+ code,
99
+ context,
100
+ message,
101
+ source
102
+ });
103
+ expect(errorManager.messages[`${source}-${context}-${code}`]).toEqual(message);
104
+ });
105
+ it('should add an override message with no set context', () => {
106
+ const code = 'EUNKNOWN';
107
+ const message = 'Something went horribly wrong!';
108
+ const source = 'pipeline';
109
+ errorManager.setMessage({
110
+ code,
111
+ message,
112
+ source
113
+ });
114
+ expect(errorManager.messages[`${source}-${DEFAULT_CONTEXT}-${code}`]).toEqual(message);
115
+ });
116
+ it('should ignore setting a message with missing error object', () => {
117
+ const code = 'EUNKNOWN';
118
+ const source = 'pipeline';
119
+ errorManager.setMessage();
120
+ expect(errorManager.messages[`${source}-${DEFAULT_CONTEXT}-${code}`]).toBeUndefined();
121
+ });
122
+ it('should ignore setting a message with missing mandatory fields', () => {
123
+ const code = 'EUNKNOWN';
124
+ const message = 'Something went horribly wrong!';
125
+ const source = 'pipeline';
126
+ errorManager.setMessage({
127
+ message,
128
+ source
129
+ });
130
+ expect(errorManager.messages[`${source}-${DEFAULT_CONTEXT}-${code}`]).toBeUndefined();
131
+ });
132
+ it('should ignore setting a message with invalid input', () => {
133
+ const code = 404;
134
+ const message = 'Something went horribly wrong!';
135
+ const source = 'pipeline';
136
+ errorManager.setMessage({
137
+ code,
138
+ message,
139
+ source
140
+ });
141
+ expect(errorManager.messages[`${source}-${DEFAULT_CONTEXT}-${code}`]).toBeUndefined();
142
+ });
143
+ });
144
+ describe('errorManager.queue', () => {
145
+ it('should not queue a missing error', () => {
146
+ const code = 'EUNKNOWN';
147
+ const source = 'pipeline';
148
+ errorManager.queue();
149
+ expect(errorManager.messages[`${source}-${DEFAULT_CONTEXT}-${code}`]).toBeUndefined();
150
+ });
151
+ it('should not queue an invalid error', () => {
152
+ const code = 404;
153
+ const message = 'Something went horribly wrong!';
154
+ const source = 'pipeline';
155
+ errorManager.queue({
156
+ code,
157
+ message,
158
+ source
159
+ });
160
+ expect(errorManager.errorQueue.has(`${source}-${DEFAULT_CONTEXT}-${code}`)).toEqual(false);
161
+ });
162
+ it('should queue errors only once', () => {
163
+ const code = 'EUNKNOWN';
164
+ const message = 'Something went horribly wrong!';
165
+ const source = 'pipeline';
166
+ const callback = jest.fn();
167
+ emitter.addListener('pipeline', callback);
168
+ errorManager.queue({
169
+ code,
170
+ message,
171
+ source
172
+ });
173
+ errorManager.queue({
174
+ code,
175
+ message,
176
+ source
177
+ });
178
+ expect(errorManager.errorQueue.has(`${source}-${DEFAULT_CONTEXT}-${code}`)).toEqual(true);
179
+ expect(errorManager.errorQueue.size).toEqual(1);
180
+ });
181
+ });
182
+ it('should not dispatch when there are no errors', async () => {
183
+ const callback = jest.fn();
184
+ emitter.addListener('pipeline', callback);
185
+ const dispatch = errorManager.dispatch();
186
+ expect(dispatch).toEqual(false);
187
+ });
188
+ it('should dispatch the errors through events', async () => {
189
+ const code = 'EUNKNOWN';
190
+ const message = 'Something went horribly wrong!';
191
+ const source = 'pipeline';
192
+ const callback = jest.fn();
193
+ const callback2 = jest.fn();
194
+ emitter.addListener('pipeline', callback);
195
+ emitter.addListener('pipeline', callback2);
196
+ await errorManager.queue({
197
+ code,
198
+ message,
199
+ source
200
+ });
201
+ await errorManager.queue({
202
+ code: 'EUNKNOWN2',
203
+ message,
204
+ source
205
+ });
206
+ expect(errorManager.errorQueue.size).toEqual(2);
207
+ errorManager.dispatch();
208
+ expect(callback).toBeCalled();
209
+ expect(callback2).toBeCalled();
210
+ expect(errorManager.errorQueue.size).toEqual(0);
211
+ });
212
+ it('should set a queue entry with meta data', () => {
213
+ const code = 'EUNKNOWN';
214
+ const replacementMessage = 'Replacement Message';
215
+ const message = 'Original Message';
216
+ const source = 'pipeline';
217
+
218
+ // Setup a replacement message for the error code.
219
+ errorManager.setMessage({
220
+ code,
221
+ source,
222
+ message: replacementMessage
223
+ });
224
+ const callback = jest.fn();
225
+ emitter.addListener('pipeline', callback);
226
+ errorManager.queue({
227
+ message,
228
+ code,
229
+ source
230
+ });
231
+ errorManager.dispatch();
232
+ expect(callback).toBeCalledWith({
233
+ id: `${source}-${DEFAULT_CONTEXT}-${code}`,
234
+ context: DEFAULT_CONTEXT,
235
+ message: replacementMessage,
236
+ code,
237
+ source,
238
+ meta: {
239
+ message
240
+ },
241
+ severity: DEFAULT_SEVERITY
242
+ });
243
+ });
244
+ });
@@ -1,44 +1,130 @@
1
- function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj;};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};}return _typeof(obj);}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}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);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}function _callSuper(_this,derived,args){function isNativeReflectConstruct(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{return!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(e){return false;}}derived=_getPrototypeOf(derived);return _possibleConstructorReturn(_this,isNativeReflectConstruct()?Reflect.construct(derived,args||[],_getPrototypeOf(_this).constructor):derived.apply(_this,args));}function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)==="object"||typeof call==="function")){return call;}return _assertThisInitialized(self);}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return self;}function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_setPrototypeOf(subClass,superClass);}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}import EventEmitter from'events';import{logger}from"../../helpers";var HANDLER_ADD='add';var HANDLER_REMOVE='remove';/* eslint-disable extra-rules/potential-point-free */ /**
1
+ import EventEmitter from 'events';
2
+ import { logger } from "../../helpers";
3
+ const HANDLER_ADD = 'add';
4
+ const HANDLER_REMOVE = 'remove';
5
+
6
+ /* eslint-disable extra-rules/potential-point-free */
7
+
8
+ /**
2
9
  * Event class.
3
- */var Event=/*#__PURE__*/function(_EventEmitter){/**
10
+ */
11
+ class Event extends EventEmitter {
12
+ /**
4
13
  * Constructor.
5
- */function Event(){var _this2;_classCallCheck(this,Event);_this2=_callSuper(this,Event);_this2.events=new Set();_this2.setMaxListeners(20);/**
14
+ */
15
+ constructor() {
16
+ super();
17
+ this.events = new Set();
18
+ this.setMaxListeners(20);
19
+
20
+ /**
6
21
  * A global implementation of the call function to make it accessible to the app.
7
22
  *
8
23
  * We have to check here if there is already a __call from the cake2 project present.
9
24
  * This could happen because we use the tracking-core in the cake2 project.
10
- */ // eslint-disable-next-line no-underscore-dangle
11
- var legacy=window.SGEvent.__call;if(typeof legacy!=='function'){// eslint-disable-next-line no-underscore-dangle
12
- window.SGEvent.__call=_this2.call.bind(_this2);}else{// eslint-disable-next-line no-underscore-dangle
13
- window.SGEvent.__call=function(){var _this3;legacy.apply(void 0,arguments);(_this3=_this2).call.apply(_this3,arguments);};}return _this2;}/**
25
+ */
26
+ // eslint-disable-next-line no-underscore-dangle
27
+ const legacy = window.SGEvent.__call;
28
+ if (typeof legacy !== 'function') {
29
+ // eslint-disable-next-line no-underscore-dangle
30
+ window.SGEvent.__call = this.call.bind(this);
31
+ } else {
32
+ // eslint-disable-next-line no-underscore-dangle
33
+ window.SGEvent.__call = (...args) => {
34
+ legacy(...args);
35
+ this.call(...args);
36
+ };
37
+ }
38
+ }
39
+
40
+ /**
14
41
  * Registers a new event
15
42
  * @param {string} eventName The new event name
16
- */_inherits(Event,_EventEmitter);return _createClass(Event,[{key:"registerEvent",value:function registerEvent(eventName){this.events.add(eventName);}/**
43
+ */
44
+ registerEvent(eventName) {
45
+ this.events.add(eventName);
46
+ }
47
+
48
+ /**
17
49
  * Registers a callback function for one or multiple events.
18
50
  * @param {string} events A single event or multiple events separated by comma.
19
51
  * @param {Function} callback The callback function.
20
- */},{key:"addCallback",value:function addCallback(events,callback){this.handleCallbacks(HANDLER_ADD,events,callback);}/**
52
+ */
53
+ addCallback(events, callback) {
54
+ this.handleCallbacks(HANDLER_ADD, events, callback);
55
+ }
56
+
57
+ /**
21
58
  * De-registers a callback function for one or multiple events.
22
59
  * @param {string} events A single event or multiple events separated by comma.
23
60
  * @param {Function} callback The callback function.
24
- */},{key:"removeCallback",value:function removeCallback(events,callback){this.handleCallbacks(HANDLER_REMOVE,events,callback);}/**
61
+ */
62
+ removeCallback(events, callback) {
63
+ this.handleCallbacks(HANDLER_REMOVE, events, callback);
64
+ }
65
+
66
+ /**
25
67
  * Handles the register and de-register of a callback.
26
68
  * @param {string} type What type of action should be performed.
27
69
  * @param {string} events A single event or multiple events separated by comma.
28
70
  * @param {Function} callback The callback function.
29
- */},{key:"handleCallbacks",value:function handleCallbacks(type,events,callback){var _this4=this;var eventNames=events.split(',');eventNames.forEach(function(event){switch(type){case HANDLER_ADD:_this4.addListener(event,callback);break;case HANDLER_REMOVE:_this4.removeListener(event,callback);break;default:break;}});}/**
71
+ */
72
+ handleCallbacks(type, events, callback) {
73
+ const eventNames = events.split(',');
74
+ eventNames.forEach(event => {
75
+ switch (type) {
76
+ case HANDLER_ADD:
77
+ this.addListener(event, callback);
78
+ break;
79
+ case HANDLER_REMOVE:
80
+ this.removeListener(event, callback);
81
+ break;
82
+ default:
83
+ break;
84
+ }
85
+ });
86
+ }
87
+
88
+ /**
30
89
  * Triggers an event.
31
90
  * @param {string} event The event name.
32
91
  * @param {Object} params Custom parameters for the event.
33
- */},{key:"trigger",value:function trigger(event){var _this5=this;var params=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;setTimeout(function(){return _this5.emit(event,params);},0);}/**
92
+ */
93
+ trigger(event, params = null) {
94
+ setTimeout(() => this.emit(event, params), 0);
95
+ }
96
+
97
+ /**
34
98
  * This function will be called by the app to trigger events.
35
99
  * @param {string} event The event name.
36
100
  * @param {Array} [parameters=[]] The event parameters.
37
- */},{key:"call",value:function call(event){var parameters=arguments.length>1&&arguments[1]!==undefined?arguments[1]:[];var eventName=event;/**
101
+ */
102
+ call(event, parameters = []) {
103
+ let eventName = event;
104
+
105
+ /**
38
106
  * Some system events relate to request commands.
39
107
  * When these commands were fired, a serial was created in order
40
108
  * to identify an appropriate callback event.
41
109
  * To identify these callbacks, the serial has to be decoded from the parameter list.
42
- */if(['pipelineResponse','httpResponse'].includes(event)){eventName+=":".concat(parameters[1]);}else if(['dataResponse','webStorageResponse'].includes(event)||Array.from(this.events).includes(event)){eventName+=":".concat(parameters[0]);}var calledEvent=this.emit.apply(this,[eventName].concat(parameters));if(!calledEvent){logger.warn("Attempt to call unknown event: ".concat(eventName));}}}]);}(EventEmitter);/* eslint-enable extra-rules/potential-point-free */ // TODO:
110
+ */
111
+ if (['pipelineResponse', 'httpResponse'].includes(event)) {
112
+ eventName += `:${parameters[1]}`;
113
+ } else if (['dataResponse', 'webStorageResponse'].includes(event) || Array.from(this.events).includes(event)) {
114
+ eventName += `:${parameters[0]}`;
115
+ }
116
+ const calledEvent = this.emit(eventName, ...parameters);
117
+ if (!calledEvent) {
118
+ logger.warn(`Attempt to call unknown event: ${eventName}`);
119
+ }
120
+ }
121
+ }
122
+
123
+ /* eslint-enable extra-rules/potential-point-free */
124
+
125
+ // TODO:
43
126
  // We need this as a temporary solution because of double node_modules form extensions and theme.
44
- if(!window.TmpEventInstance){window.TmpEventInstance=new Event();}export default window.TmpEventInstance;
127
+ if (!window.TmpEventInstance) {
128
+ window.TmpEventInstance = new Event();
129
+ }
130
+ export default window.TmpEventInstance;
@@ -1,64 +1,225 @@
1
- function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj;};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};}return _typeof(obj);}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}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);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}function _callSuper(_this,derived,args){function isNativeReflectConstruct(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{return!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(e){return false;}}derived=_getPrototypeOf(derived);return _possibleConstructorReturn(_this,isNativeReflectConstruct()?Reflect.construct(derived,args||[],_getPrototypeOf(_this).constructor):derived.apply(_this,args));}function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)==="object"||typeof call==="function")){return call;}return _assertThisInitialized(self);}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return self;}function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_setPrototypeOf(subClass,superClass);}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}import{logger}from"../../helpers";import logGroup from"../../helpers/logGroup";import event from"../Event";import AppCommand from"../AppCommand";import Request from"../Request";import requestBuffer from"../RequestBuffer";/**
1
+ import { logger } from "../../helpers";
2
+ import logGroup from "../../helpers/logGroup";
3
+ import event from "../Event";
4
+ import AppCommand from "../AppCommand";
5
+ import Request from "../Request";
6
+ import requestBuffer from "../RequestBuffer";
7
+
8
+ /**
2
9
  * The http request class.
3
10
  * It sends a http request and returns a promise.
4
- */var HttpRequest=/*#__PURE__*/function(_Request){/**
11
+ */
12
+ class HttpRequest extends Request {
13
+ /**
5
14
  * Initializes the HttpRequest object
6
15
  * @param {string} url The url for the request
7
- */function HttpRequest(url){var _this2;_classCallCheck(this,HttpRequest);_this2=_callSuper(this,HttpRequest);_this2.url=url;_this2.method='GET';_this2.followRedirects=false;_this2.timeout=30000;_this2.payload=null;_this2.contentType=null;_this2.headers=null;_this2.createSerial(_this2.url);_this2.createEventCallbackName('httpResponse');return _this2;}/**
16
+ */
17
+ constructor(url) {
18
+ super();
19
+ this.url = url;
20
+ this.method = 'GET';
21
+ this.followRedirects = false;
22
+ this.timeout = 30000;
23
+ this.payload = null;
24
+ this.contentType = null;
25
+ this.headers = null;
26
+ this.createSerial(this.url);
27
+ this.createEventCallbackName('httpResponse');
28
+ }
29
+
30
+ /**
8
31
  * Sets the payload for the HttpRequest
9
32
  * @param {Object|string} [payload={}] The payload to send with the request
10
33
  * @returns {HttpRequest}
11
- */_inherits(HttpRequest,_Request);return _createClass(HttpRequest,[{key:"setPayload",value:function setPayload(){var payload=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};this.payload=payload;return this;}/**
34
+ */
35
+ setPayload(payload = {}) {
36
+ this.payload = payload;
37
+ return this;
38
+ }
39
+
40
+ /**
12
41
  * Sets the contentType for the HttpRequest
13
42
  * @param {string} type The contentType for request
14
43
  * @deprecated Not supported anymore by app version >= 11.0.0
15
44
  * @returns {HttpRequest}
16
- */},{key:"setContentType",value:function setContentType(type){this.contentType=type;return this;}/**
45
+ */
46
+ setContentType(type) {
47
+ this.contentType = type;
48
+ return this;
49
+ }
50
+
51
+ /**
17
52
  * @typedef {Object.<string, string>} HeaderMap
18
- */ /**
53
+ */
54
+
55
+ /**
19
56
  * Sets the headers for the HttpRequest.
20
57
  * @param {HeaderMap} headers - An object mapping header names to values.
21
58
  * @returns {HttpRequest} The current HttpRequest instance (for chaining).
22
- */},{key:"setHeaders",value:function setHeaders(headers){if(_typeof(headers)!=='object'){logger.error('HttpRequest: setHeaders expects an object as parameter');return this;}this.headers=headers;return this;}/**
59
+ */
60
+ setHeaders(headers) {
61
+ if (typeof headers !== 'object') {
62
+ logger.error('HttpRequest: setHeaders expects an object as parameter');
63
+ return this;
64
+ }
65
+ this.headers = headers;
66
+ return this;
67
+ }
68
+
69
+ /**
23
70
  * Sets the request method
24
71
  * @param {string} method The method string
25
72
  * @return {HttpRequest}
26
- */},{key:"setMethod",value:function setMethod(method){if(['GET','POST','PUT','DELETE'].includes(method)){this.method=method;}else{logger.error("Unknown HttpRequest method: ".concat(method));}return this;}/**
73
+ */
74
+ setMethod(method) {
75
+ if (['GET', 'POST', 'PUT', 'DELETE'].includes(method)) {
76
+ this.method = method;
77
+ } else {
78
+ logger.error(`Unknown HttpRequest method: ${method}`);
79
+ }
80
+ return this;
81
+ }
82
+
83
+ /**
27
84
  * Tells if the redirects will be followed
28
85
  * @param {boolean} value The value
29
86
  * @return {HttpRequest}
30
- */},{key:"setFollowRedirects",value:function setFollowRedirects(value){this.followRedirects=value;return this;}/**
87
+ */
88
+ setFollowRedirects(value) {
89
+ this.followRedirects = value;
90
+ return this;
91
+ }
92
+
93
+ /**
31
94
  * Sets the timeout for the request
32
95
  * @param {number} timeout The timeout
33
96
  * @return {HttpRequest}
34
- */},{key:"setTimeout",value:function setTimeout(timeout){this.timeout=timeout;return this;}/**
97
+ */
98
+ setTimeout(timeout) {
99
+ this.timeout = timeout;
100
+ return this;
101
+ }
102
+
103
+ /**
35
104
  * Determines the right content type for the request payload
36
105
  * @private
37
106
  * @return {string} The content type
38
- */},{key:"getContentType",value:function getContentType(){var contentType='text/plain';if(_typeof(this.payload)==='object'){contentType='application/x-www-form-urlencoded; charset=UTF-8';}return contentType;}/**
107
+ */
108
+ getContentType() {
109
+ let contentType = 'text/plain';
110
+ if (typeof this.payload === 'object') {
111
+ contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
112
+ }
113
+ return contentType;
114
+ }
115
+
116
+ /**
39
117
  * Determines the headers for the request
40
118
  * @returns {Object} The headers
41
- */},{key:"getHeaders",value:function getHeaders(){if(!this.headers){return{};}return this.headers;}/**
119
+ */
120
+ getHeaders() {
121
+ if (!this.headers) {
122
+ return {};
123
+ }
124
+ return this.headers;
125
+ }
126
+
127
+ /**
42
128
  * Creates the data request body from the payload
43
129
  * @private
44
130
  * @return {string} The request body
45
- */},{key:"getRequestBody",value:function getRequestBody(){/**
131
+ */
132
+ getRequestBody() {
133
+ /**
46
134
  * Serializes a javascript object for a data request body
47
135
  * @param {Object} obj The object that shall be serialized
48
136
  * @param {string} [prefix] An optional prefix for the object keys
49
137
  * @return {string} The serialized object
50
- */var serializeObject=function serializeObject(obj,prefix){var result=[];Object.keys(obj).forEach(function(propName){var key=prefix?"".concat(prefix,"[").concat(propName,"]"):propName;var value=obj[propName];var tmp;if(_typeof(value)==='object'&&value!==null){tmp=serializeObject(value,key);}else{tmp="".concat(window.encodeURIComponent(key),"=").concat(window.encodeURIComponent(value));}result.push(tmp);});return result.join('&');};var body='';if(this.payload){if(_typeof(this.payload)==='object'){if(this.contentType==='application/json'){body=JSON.stringify(this.payload);}else{body=serializeObject(this.payload);}}else if(typeof this.payload==='string'){body=this.payload;}}return body;}/**
138
+ */
139
+ const serializeObject = (obj, prefix) => {
140
+ const result = [];
141
+ Object.keys(obj).forEach(propName => {
142
+ const key = prefix ? `${prefix}[${propName}]` : propName;
143
+ const value = obj[propName];
144
+ let tmp;
145
+ if (typeof value === 'object' && value !== null) {
146
+ tmp = serializeObject(value, key);
147
+ } else {
148
+ tmp = `${window.encodeURIComponent(key)}=${window.encodeURIComponent(value)}`;
149
+ }
150
+ result.push(tmp);
151
+ });
152
+ return result.join('&');
153
+ };
154
+ let body = '';
155
+ if (this.payload) {
156
+ if (typeof this.payload === 'object') {
157
+ if (this.contentType === 'application/json') {
158
+ body = JSON.stringify(this.payload);
159
+ } else {
160
+ body = serializeObject(this.payload);
161
+ }
162
+ } else if (typeof this.payload === 'string') {
163
+ body = this.payload;
164
+ }
165
+ }
166
+ return body;
167
+ }
168
+
169
+ /**
51
170
  * Sends the HttpRequest and returns a promise.
52
171
  * @returns {Promise}
53
- */},{key:"dispatch",value:function dispatch(){var _this3=this;return new Promise(function(resolve,reject){var requestCallbackName=_this3.getEventCallbackName();requestBuffer.add(_this3,_this3.serial);// Prepare the options for the request
54
- var options={url:_this3.url,serial:_this3.serial,method:_this3.method,timeout:_this3.timeout,followRedirects:_this3.followRedirects,body:_this3.getRequestBody(),// the iOS Cloud Flight app will use this over any content type passed in
55
- // the headers and breaks if it's not set:
56
- contentType:_this3.contentType?_this3.contentType:_this3.getContentType(),headers:_this3.getHeaders()};/**
172
+ */
173
+ dispatch() {
174
+ return new Promise((resolve, reject) => {
175
+ const requestCallbackName = this.getEventCallbackName();
176
+ requestBuffer.add(this, this.serial);
177
+
178
+ // Prepare the options for the request
179
+ const options = {
180
+ url: this.url,
181
+ serial: this.serial,
182
+ method: this.method,
183
+ timeout: this.timeout,
184
+ followRedirects: this.followRedirects,
185
+ body: this.getRequestBody(),
186
+ // the iOS Cloud Flight app will use this over any content type passed in
187
+ // the headers and breaks if it's not set:
188
+ contentType: this.contentType ? this.contentType : this.getContentType(),
189
+ headers: this.getHeaders()
190
+ };
191
+
192
+ /**
57
193
  * The request event callback for the response call.
58
194
  * @param {Object|null} error The error object if an error happened.
59
195
  * @param {string} serial The serial that was used to identify the HttpRequest callback
60
196
  * @param {Object} response The response for the HttpRequest
61
197
  * @return {Object}
62
- */var requestCallback=function requestCallback(error,serial,response){event.removeCallback(requestCallbackName,requestCallback);requestBuffer.remove(serial);logGroup("HttpResponse %c".concat(_this3.url),{options:options,error:error,response:response});if(error){return reject(error);}return resolve(response);};// Apply the event callback.
63
- event.addCallback(requestCallbackName,requestCallback);logGroup("HttpRequest %c".concat(_this3.url),{payload:_this3.payload});// Send the HttpRequest.
64
- var command=new AppCommand();command.setCommandName('sendHttpRequest').setLibVersion('13.0').dispatch(options);});}}]);}(Request);export default HttpRequest;
198
+ */
199
+ const requestCallback = (error, serial, response) => {
200
+ event.removeCallback(requestCallbackName, requestCallback);
201
+ requestBuffer.remove(serial);
202
+ logGroup(`HttpResponse %c${this.url}`, {
203
+ options,
204
+ error,
205
+ response
206
+ });
207
+ if (error) {
208
+ return reject(error);
209
+ }
210
+ return resolve(response);
211
+ };
212
+
213
+ // Apply the event callback.
214
+ event.addCallback(requestCallbackName, requestCallback);
215
+ logGroup(`HttpRequest %c${this.url}`, {
216
+ payload: this.payload
217
+ });
218
+
219
+ // Send the HttpRequest.
220
+ const command = new AppCommand();
221
+ command.setCommandName('sendHttpRequest').setLibVersion('13.0').dispatch(options);
222
+ });
223
+ }
224
+ }
225
+ export default HttpRequest;