ajax-best-promise 0.3.7 → 0.4.0

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 CHANGED
@@ -56,6 +56,26 @@ AjaxBestPromise.get({
56
56
  });
57
57
  ```
58
58
 
59
+ ## haders
60
+
61
+ You can send headers in the header property and recieve it with the `onHeader` function.
62
+
63
+ ```js
64
+ AjaxBestPromise.put({
65
+ url:'http://example.com:3333/service/',
66
+ data:{ alfa: 1, betha: 2},
67
+ headers:{
68
+ Authorization: 'Bearer ' + token
69
+ }
70
+ }).onHeaders(function(headers){
71
+ newId = headers.Location;
72
+ }).then(function(){
73
+ console.log('data inserted', newId);
74
+ }).catch(function(err){
75
+ console.log('error inserting data', err);
76
+ });
77
+ ```
78
+
59
79
 
60
80
  ## Error handler
61
81
 
@@ -74,8 +94,27 @@ AjaxBestPromise.get({
74
94
  });
75
95
  ```
76
96
 
77
- ## Tests with real devices
97
+ ## Modern JS
98
+
99
+ ```ts
100
+ try{
101
+ var newId: string
102
+ await AjaxBestPromise.put({
103
+ url:'http://example.com:3333/service/',
104
+ data:{ alfa: 1, betha: 2},
105
+ headers:{
106
+ Authorization: 'Bearer ' + token
107
+ }
108
+ }).onHeaders(function(headers){
109
+ newId = headers.Location;
110
+ });
111
+ console.log('data inserted', newId);
112
+ }catch(err){
113
+ console.log('error inserting data', err);
114
+ }
115
+ ```
78
116
 
117
+ ## Tests with real devices
79
118
 
80
119
  NPM version |Device |OS |nav |obs
81
120
  ------------|-----------------------|---------------|-------------------------|----
@@ -44,6 +44,7 @@ function newXMLHttpRequest_OrSomethingLikeThis(){
44
44
  /* global Promise */
45
45
  AjaxBestPromise.createMethodFunction=function(method){
46
46
  return function(params){
47
+ var registeredHeadersConsumer = false;
47
48
  var promiseForReturn = function(chunkConsumer, progressHooks){
48
49
  return new Promise(function(resolve,reject){
49
50
  var ajax = newXMLHttpRequest_OrSomethingLikeThis();
@@ -54,6 +55,17 @@ AjaxBestPromise.createMethodFunction=function(method){
54
55
  if(params.uploading){
55
56
  ajax.upload.addEventListener('progress',params.uploading);
56
57
  }
58
+ var headerFun = function(){
59
+ if (ajax.readyState == 2 && registeredHeadersConsumer) {
60
+ var headers = {}
61
+ ajax.getAllResponseHeaders().split(/\r?\n/).forEach(function(line){
62
+ var list = line.split(':');
63
+ headers[list[0].toLowerCase()] = list.slice(1).join(':').trimLeft();
64
+ })
65
+ registeredHeadersConsumer(headers);
66
+ registeredHeadersConsumer = false;
67
+ }
68
+ }
57
69
  if(chunkConsumer){
58
70
  var initialPos=0;
59
71
  var endPos=0;
@@ -80,6 +92,7 @@ AjaxBestPromise.createMethodFunction=function(method){
80
92
  if(ajax.readyState != 2 && ajax.readyState != 3 && ajax.readyState != 4){
81
93
  return;
82
94
  }
95
+ headerFun();
83
96
  /* istanbul ignore next */
84
97
  if(!('status' in ajax) || ajax.status != 200){
85
98
  return;
@@ -129,6 +142,7 @@ AjaxBestPromise.createMethodFunction=function(method){
129
142
  if(err instanceof Error){
130
143
  reject(err);
131
144
  }else if(err instanceof ProgressEvent /* || err instanceof XMLHttpRequestProgressEvent*/){
145
+ console.log('******************** err *********************', err)
132
146
  var newError=new Error('404 Cannot '+method+' '+params.url+' (ProgressEvent)');
133
147
  newError.originalError=err;
134
148
  newError.status=404;
@@ -143,8 +157,10 @@ AjaxBestPromise.createMethodFunction=function(method){
143
157
  if('onload' in ajax){
144
158
  ajax.onload=okFun;
145
159
  ajax.onerror=errFun;
160
+ ajax.onreadystatechange=headerFun
146
161
  }else{
147
162
  ajax.onreadystatechange=function(e){
163
+ headerFun();
148
164
  if(ajax.readyState == 4){
149
165
  return okFun(e);
150
166
  }
@@ -164,13 +180,18 @@ AjaxBestPromise.createMethodFunction=function(method){
164
180
  }
165
181
  });
166
182
  }else{
167
- paqueteAEnviar=Object.keys(params.data).map(function(key){
183
+ paqueteAEnviar=Object.keys(params.data || {}).map(function(key){
168
184
  return key+'='+encodeURIComponent(params.data[key]);
169
185
  }).join('&');
170
186
  }
171
187
  var url=params.url+((paqueteAEnviar && method!=='POST')?'?'+paqueteAEnviar:'');
172
188
  ajax.open(method,url,true);
173
189
  ajax.setRequestHeader('X-Requested-With','XMLHttpRequest');
190
+ if (params.headers) {
191
+ for (var key in params.headers) {
192
+ ajax.setRequestHeader(key, params.headers[key]);
193
+ }
194
+ }
174
195
  if(method==='POST'){
175
196
  if(!params.multipart){
176
197
  ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
@@ -208,6 +229,11 @@ AjaxBestPromise.createMethodFunction=function(method){
208
229
  onChunk:function(chunkConsumer){
209
230
  return promiseForReturn(chunkConsumer,this.progressHooks);
210
231
  },
232
+ onHeaders:function(headersConsumer){
233
+ registeredHeadersConsumer = headersConsumer;
234
+ delete intermediateObject.onHeaders;
235
+ return intermediateObject;
236
+ },
211
237
  then:function(resolve,reject){
212
238
  return promiseForReturn(null,this.progressHooks).then(resolve,reject);
213
239
  },
@@ -221,6 +247,13 @@ AjaxBestPromise.createMethodFunction=function(method){
221
247
 
222
248
  AjaxBestPromise.post=AjaxBestPromise.createMethodFunction('POST');
223
249
  AjaxBestPromise.get=AjaxBestPromise.createMethodFunction('GET');
250
+ AjaxBestPromise.put=AjaxBestPromise.createMethodFunction('PUT');
251
+ AjaxBestPromise.patch=AjaxBestPromise.createMethodFunction('PATCH');
252
+ AjaxBestPromise.delete=AjaxBestPromise.createMethodFunction('DELETE');
253
+ AjaxBestPromise.options=AjaxBestPromise.createMethodFunction('OPTIONS');
254
+ AjaxBestPromise.head=AjaxBestPromise.createMethodFunction('HEAD');
255
+ AjaxBestPromise.connect=AjaxBestPromise.createMethodFunction('CONNECT');
256
+ AjaxBestPromise.trace=AjaxBestPromise.createMethodFunction('TRACE');
224
257
 
225
258
  AjaxBestPromise.fromElements=function fromElements(listOfElementsOrIds,addParam,base){
226
259
  var actual=base;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ajax-best-promise",
3
3
  "description": "Ajax with best promise - Ajax with stream data",
4
- "version": "0.3.7",
4
+ "version": "0.4.0",
5
5
  "author": "Codenautas <codenautas@googlegroups.com>",
6
6
  "license": "MIT",
7
7
  "files": [
@@ -21,33 +21,31 @@
21
21
  "main": "bin/ajax-best-promise.js",
22
22
  "dependencies": {},
23
23
  "devDependencies": {
24
- "body-parser": "~1.18.3",
25
- "cookie-parser": "~1.4.3",
26
- "es6-promise": "~4.2.5",
24
+ "body-parser": "~1.20.2",
25
+ "cookie-parser": "~1.4.6",
26
+ "es6-promise": "~4.2.8",
27
27
  "expect.js": "~0.3.1",
28
- "express": "~4.16.4",
29
- "express-session": "~1.15.6",
30
- "express-useragent": "~1.0.12",
28
+ "express": "~4.18.2",
29
+ "express-session": "~1.17.3",
30
+ "express-useragent": "~1.0.15",
31
31
  "fs-promise": "~2.0.3",
32
32
  "istanbul": "~0.4.5",
33
- "karma": "~3.1.3",
34
- "karma-chrome-launcher": "~2.2.0",
35
- "karma-coverage": "~1.1.2",
33
+ "karma": "~6.4.2",
34
+ "karma-chrome-launcher": "~3.2.0",
35
+ "karma-coverage": "~2.2.0",
36
36
  "karma-es3-preprocessor": "~0.1.1",
37
37
  "karma-expect": "~1.1.3",
38
+ "karma-firefox-launcher": "~2.1.2",
38
39
  "karma-ie-launcher": "~1.0.0",
39
- "karma-firefox-launcher": "~1.1.0",
40
- "karma-mocha": "~1.3.0",
41
- "karma-phantomjs-launcher": "~1.0.4",
42
- "karma-safari-launcher": "~1.0.0",
43
- "mocha": "~5.2.0",
44
- "moment": "~2.23.0",
45
- "multiparty": "~4.2.1",
46
- "pug": "~2.0.3",
40
+ "karma-mocha": "~2.0.1",
41
+ "mocha": "~10.2.0",
42
+ "moment": "~2.29.4",
43
+ "multiparty": "~4.2.3",
44
+ "pug": "~3.0.2",
47
45
  "read-yaml-promise": "~1.0.2",
48
- "mini-tools": "~1.0.4",
49
- "require-bro": "~0.1.13",
50
- "serve-content": "~0.3.10"
46
+ "mini-tools": "~1.12.0",
47
+ "require-bro": "~0.3.1",
48
+ "serve-content": "~0.3.18"
51
49
  },
52
50
  "engines": {
53
51
  "node": ">= 8"