vsn 0.1.115 → 0.1.117

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.
@@ -8,12 +8,14 @@
8
8
 
9
9
  <div id="test"></div>
10
10
 
11
- <form method="post" action="./xhr-response.html" vsn-xhr="#submit.@value = response">
11
+ <form method="get" action="./xhr-response.html?testing=1" vsn-xhr vsn-on:xhr-success="#submit.@value = response">
12
12
  <input type="hidden" name="csrf_token" value="1234567890" />
13
13
  <input type="submit" value="Submit" id="submit" />
14
14
  </form>
15
15
 
16
- <a href="./xhr-response.html" vsn-xhr="#link.@text = response" id="link">Link</a>
16
+ <a href="./xhr-response.html" vsn-xhr="@text = response" id="link">Link</a>
17
+
18
+ <a href="./xhr-response.html" vsn-xhr:put="@text = response" vsn-on:xhr-error="@text='error';wait(3);@text='Try Again'" id="link-put">Link</a>
17
19
 
18
20
  <script type="text/javascript" src="vsn.js"></script>
19
21
  </body>
@@ -3,10 +3,12 @@ import { Tree } from "../AST";
3
3
  export declare class XHRAttribute extends Attribute {
4
4
  static readonly canDefer: boolean;
5
5
  protected tree: Tree;
6
+ protected request: XMLHttpRequest;
6
7
  get code(): any;
7
8
  compile(): Promise<void>;
8
9
  connect(): Promise<void>;
9
10
  get isForm(): boolean;
10
11
  get isAnchor(): boolean;
11
12
  handleEvent(e: any): Promise<void>;
13
+ handleXHREvent(e: any): Promise<void>;
12
14
  }
@@ -61,6 +61,7 @@ exports.XHRAttribute = void 0;
61
61
  var Registry_1 = require("../Registry");
62
62
  var Attribute_1 = require("../Attribute");
63
63
  var AST_1 = require("../AST");
64
+ var VisionHelper_1 = require("../helpers/VisionHelper");
64
65
  var XHRAttribute = /** @class */ (function (_super) {
65
66
  __extends(XHRAttribute, _super);
66
67
  function XHRAttribute() {
@@ -125,46 +126,69 @@ var XHRAttribute = /** @class */ (function (_super) {
125
126
  });
126
127
  XHRAttribute.prototype.handleEvent = function (e) {
127
128
  return __awaiter(this, void 0, void 0, function () {
128
- var request, method, url, data;
129
- var _this = this;
129
+ var method, url, formData, data, formKeys, _i, formKeys_1, key;
130
+ return __generator(this, function (_a) {
131
+ e.preventDefault();
132
+ if (this.request)
133
+ return [2 /*return*/];
134
+ this.request = new XMLHttpRequest();
135
+ if (this.isForm) {
136
+ url = this.tag.element.getAttribute('action');
137
+ method = this.getAttributeBinding(this.tag.element.getAttribute('method'));
138
+ method = method.toUpperCase();
139
+ formData = new FormData(this.tag.element);
140
+ if (method == 'GET') {
141
+ data = {};
142
+ formKeys = Array.from(formData.keys());
143
+ for (_i = 0, formKeys_1 = formKeys; _i < formKeys_1.length; _i++) {
144
+ key = formKeys_1[_i];
145
+ data[key] = formData.get(key);
146
+ }
147
+ url = VisionHelper_1.VisionHelper.getUriWithParams(url, data);
148
+ formData = null;
149
+ }
150
+ }
151
+ else if (this.isAnchor) {
152
+ url = this.tag.element.getAttribute('href');
153
+ method = this.getAttributeBinding('GET');
154
+ }
155
+ this.request.addEventListener('loadend', this.handleXHREvent.bind(this));
156
+ this.request.addEventListener('error', this.handleXHREvent.bind(this));
157
+ this.request.open(method, url);
158
+ this.request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
159
+ this.request.send(formData);
160
+ return [2 /*return*/];
161
+ });
162
+ });
163
+ };
164
+ XHRAttribute.prototype.handleXHREvent = function (e) {
165
+ return __awaiter(this, void 0, void 0, function () {
130
166
  return __generator(this, function (_a) {
131
167
  switch (_a.label) {
132
168
  case 0:
133
- e.preventDefault();
134
- request = new XMLHttpRequest();
135
- if (this.isForm) {
136
- url = this.tag.element.getAttribute('action');
137
- method = this.getAttributeBinding(this.tag.element.getAttribute('method'));
138
- data = new FormData(this.tag.element);
139
- }
140
- else if (this.isAnchor) {
141
- url = this.tag.element.getAttribute('href');
142
- method = this.getAttributeBinding('GET');
143
- }
144
- request.onload = function () { return __awaiter(_this, void 0, void 0, function () {
145
- return __generator(this, function (_a) {
146
- switch (_a.label) {
147
- case 0:
148
- this.tag.scope.set('status', request.status);
149
- if (!(request.status >= 200 && request.status < 300)) return [3 /*break*/, 2];
150
- this.tag.scope.set('response', request.response);
151
- return [4 /*yield*/, this.tree.evaluate(this.tag.scope, this.tag.dom, this.tag)];
152
- case 1:
153
- _a.sent();
154
- return [3 /*break*/, 3];
155
- case 2:
156
- console.error(request.statusText);
157
- _a.label = 3;
158
- case 3: return [2 /*return*/];
159
- }
160
- });
161
- }); };
162
- request.open(method, url);
163
- request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
164
- request.send(data);
169
+ this.tag.scope.set('status', this.request.status);
170
+ this.tag.scope.set('response', this.request.response);
171
+ if (!(this.request.status >= 200 && this.request.status < 300)) return [3 /*break*/, 2];
165
172
  return [4 /*yield*/, this.tree.evaluate(this.tag.scope, this.tag.dom, this.tag)];
166
173
  case 1:
167
174
  _a.sent();
175
+ this.tag.element.dispatchEvent(new Event('xhr-success'));
176
+ return [3 /*break*/, 3];
177
+ case 2:
178
+ if (this.request.status >= 300 && this.request.status < 400) {
179
+ this.tag.element.dispatchEvent(new Event('xhr-redirect'));
180
+ }
181
+ else if (this.request.status >= 400 && this.request.status < 500) {
182
+ this.tag.element.dispatchEvent(new Event('xhr-client-error'));
183
+ this.tag.element.dispatchEvent(new Event('xhr-error'));
184
+ }
185
+ else {
186
+ this.tag.element.dispatchEvent(new Event('xhr-server-error'));
187
+ this.tag.element.dispatchEvent(new Event('xhr-error'));
188
+ }
189
+ _a.label = 3;
190
+ case 3:
191
+ this.request = null;
168
192
  return [2 /*return*/];
169
193
  }
170
194
  });
@@ -1 +1 @@
1
- {"version":3,"file":"XHRAttribute.js","sourceRoot":"","sources":["../../src/attributes/XHRAttribute.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wCAAqC;AACrC,0CAAuC;AACvC,8BAA4B;AAG5B;IAAkC,gCAAS;IAA3C;;IA6DA,CAAC;IAzDG,sBAAW,8BAAI;aAAf;YACI,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACpC,CAAC;;;OAAA;IAEY,8BAAO,GAApB;;;;;wBACI,IAAI,CAAC,IAAI,GAAG,IAAI,UAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAChC,qBAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAA;;wBAA/D,SAA+D,CAAC;wBAChE,qBAAM,iBAAM,OAAO,WAAE,EAAA;;wBAArB,SAAqB,CAAC;;;;;KACzB;IAEY,8BAAO,GAApB;;;;;wBACI,IAAI,IAAI,CAAC,MAAM,EAAE;4BACb,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;yBAC5F;6BAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;4BACtB,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;yBAC3F;wBACD,qBAAM,iBAAM,OAAO,WAAE,EAAA;;wBAArB,SAAqB,CAAC;;;;;KACzB;IAED,sBAAW,gCAAM;aAAjB;YACI,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC;QAC/C,CAAC;;;OAAA;IAED,sBAAW,kCAAQ;aAAnB;YACI,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,GAAG,CAAC;QAC5C,CAAC;;;OAAA;IAEY,kCAAW,GAAxB,UAAyB,CAAC;;;;;;;wBACtB,CAAC,CAAC,cAAc,EAAE,CAAC;wBACb,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;wBAIrC,IAAI,IAAI,CAAC,MAAM,EAAE;4BACb,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;4BAC9C,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;4BAC3E,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAA0B,CAAC,CAAC;yBAC5D;6BAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;4BACtB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;4BAC5C,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;yBAC5C;wBAED,OAAO,CAAC,MAAM,GAAG;;;;wCACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;6CACzC,CAAA,OAAO,CAAC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA,EAA7C,wBAA6C;wCAC7C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;wCACjD,qBAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAA;;wCAAhE,SAAgE,CAAC;;;wCAEjE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;;;;;6BAEzC,CAAA;wBACD,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;wBAC1B,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;wBAC/D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAEnB,qBAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAA;;wBAAhE,SAAgE,CAAC;;;;;KACpE;IA3DsB,qBAAQ,GAAY,KAAK,CAAC;IADxC,YAAY;QADxB,mBAAQ,CAAC,SAAS,CAAC,SAAS,CAAC;OACjB,YAAY,CA6DxB;IAAD,mBAAC;CAAA,AA7DD,CAAkC,qBAAS,GA6D1C;AA7DY,oCAAY"}
1
+ {"version":3,"file":"XHRAttribute.js","sourceRoot":"","sources":["../../src/attributes/XHRAttribute.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "0.1.115";
1
+ export declare const VERSION = "0.1.117";
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '0.1.115';
4
+ exports.VERSION = '0.1.117';
5
5
  //# sourceMappingURL=version.js.map
package/dist/vsn.js CHANGED
@@ -90,6 +90,13 @@ var Vision = /** @class */ (function (_super) {
90
90
  _this.registry.functions.register('warn', console.warn);
91
91
  _this.registry.functions.register('error', console.error);
92
92
  _this.registry.functions.register('info', console.info);
93
+ _this.registry.functions.register('wait', function (seconds) { return __awaiter(_this, void 0, void 0, function () {
94
+ return __generator(this, function (_a) {
95
+ return [2 /*return*/, new Promise(function (resolve) {
96
+ setTimeout(resolve, seconds * 1000);
97
+ })];
98
+ });
99
+ }); });
93
100
  _this.registry.models.register('Object', Object);
94
101
  _this.registry.controllers.register('WrappedArray', WrappedArray_1.WrappedArray);
95
102
  _this.registry.controllers.register('Data', DynamicScopeData_1.DynamicScopeData);
package/dist/vsn.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"vsn.js","sourceRoot":"","sources":["../src/vsn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vsn.js","sourceRoot":"","sources":["../src/vsn.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vsn",
3
- "version": "0.1.115",
3
+ "version": "0.1.117",
4
4
  "description": "SEO Friendly Javascript/Typescript Framework",
5
5
  "keywords": [
6
6
  "framework",
@@ -1,11 +1,13 @@
1
1
  import {Registry} from "../Registry";
2
2
  import {Attribute} from "../Attribute";
3
3
  import {Tree} from "../AST";
4
+ import {VisionHelper} from "../helpers/VisionHelper";
4
5
 
5
6
  @Registry.attribute('vsn-xhr')
6
7
  export class XHRAttribute extends Attribute {
7
8
  public static readonly canDefer: boolean = false;
8
9
  protected tree: Tree;
10
+ protected request: XMLHttpRequest;
9
11
 
10
12
  public get code() {
11
13
  return this.getAttributeValue();
@@ -36,32 +38,53 @@ export class XHRAttribute extends Attribute {
36
38
 
37
39
  public async handleEvent(e) {
38
40
  e.preventDefault();
39
- const request = new XMLHttpRequest();
41
+ if (this.request) return;
42
+
43
+ this.request = new XMLHttpRequest();
40
44
  let method;
41
45
  let url;
42
- let data;
46
+ let formData;
43
47
  if (this.isForm) {
44
48
  url = this.tag.element.getAttribute('action');
45
49
  method = this.getAttributeBinding(this.tag.element.getAttribute('method'));
46
- data = new FormData(this.tag.element as HTMLFormElement);
50
+ method = method.toUpperCase();
51
+ formData = new FormData(this.tag.element as HTMLFormElement);
52
+ if (method == 'GET') {
53
+ const data = {};
54
+ const formKeys: string[] = Array.from(formData.keys());
55
+ for (const key of formKeys) {
56
+ data[key] = formData.get(key);
57
+ }
58
+ url = VisionHelper.getUriWithParams(url, data);
59
+ formData = null;
60
+ }
47
61
  } else if (this.isAnchor) {
48
62
  url = this.tag.element.getAttribute('href');
49
63
  method = this.getAttributeBinding('GET');
50
64
  }
51
65
 
52
- request.onload = async () => {
53
- this.tag.scope.set('status', request.status);
54
- if (request.status >= 200 && request.status < 300) {
55
- this.tag.scope.set('response', request.response);
56
- await this.tree.evaluate(this.tag.scope, this.tag.dom, this.tag);
57
- } else {
58
- console.error(request.statusText);
59
- }
60
- }
61
- request.open(method, url);
62
- request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
63
- request.send(data);
66
+ this.request.addEventListener('loadend', this.handleXHREvent.bind(this));
67
+ this.request.addEventListener('error', this.handleXHREvent.bind(this));
68
+ this.request.open(method, url);
69
+ this.request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
70
+ this.request.send(formData);
71
+ }
64
72
 
65
- await this.tree.evaluate(this.tag.scope, this.tag.dom, this.tag);
73
+ public async handleXHREvent(e) {
74
+ this.tag.scope.set('status', this.request.status);
75
+ this.tag.scope.set('response', this.request.response);
76
+ if (this.request.status >= 200 && this.request.status < 300) {
77
+ await this.tree.evaluate(this.tag.scope, this.tag.dom, this.tag);
78
+ this.tag.element.dispatchEvent(new Event('xhr-success'));
79
+ } else if (this.request.status >= 300 && this.request.status < 400) {
80
+ this.tag.element.dispatchEvent(new Event('xhr-redirect'));
81
+ } else if (this.request.status >= 400 && this.request.status < 500) {
82
+ this.tag.element.dispatchEvent(new Event('xhr-client-error'));
83
+ this.tag.element.dispatchEvent(new Event('xhr-error'));
84
+ } else {
85
+ this.tag.element.dispatchEvent(new Event('xhr-server-error'));
86
+ this.tag.element.dispatchEvent(new Event('xhr-error'));
87
+ }
88
+ this.request = null;
66
89
  }
67
90
  }
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = '0.1.115';
1
+ export const VERSION = '0.1.117';
2
2
 
package/src/vsn.ts CHANGED
@@ -32,6 +32,11 @@ export class Vision extends EventDispatcher {
32
32
  this.registry.functions.register('warn', console.warn);
33
33
  this.registry.functions.register('error', console.error);
34
34
  this.registry.functions.register('info', console.info);
35
+ this.registry.functions.register('wait', async (seconds) => {
36
+ return new Promise((resolve) => {
37
+ setTimeout(resolve, seconds * 1000);
38
+ });
39
+ });
35
40
  this.registry.models.register('Object', Object);
36
41
  this.registry.controllers.register('WrappedArray', WrappedArray);
37
42
  this.registry.controllers.register('Data', DynamicScopeData);