vsn 0.1.115 → 0.1.116
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/demo/vsn.js +2 -2
- package/demo/xhr-test.html +4 -2
- package/dist/attributes/XHRAttribute.d.ts +2 -0
- package/dist/attributes/XHRAttribute.js +46 -34
- package/dist/attributes/XHRAttribute.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/vsn.js +7 -0
- package/dist/vsn.js.map +1 -1
- package/package.json +1 -1
- package/src/attributes/XHRAttribute.ts +26 -14
- package/src/version.ts +1 -1
- package/src/vsn.ts +5 -0
package/demo/xhr-test.html
CHANGED
|
@@ -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="post" action="./xhr-response.html" vsn-xhr vsn-on: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="
|
|
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
|
}
|
|
@@ -125,46 +125,58 @@ var XHRAttribute = /** @class */ (function (_super) {
|
|
|
125
125
|
});
|
|
126
126
|
XHRAttribute.prototype.handleEvent = function (e) {
|
|
127
127
|
return __awaiter(this, void 0, void 0, function () {
|
|
128
|
-
var
|
|
129
|
-
|
|
128
|
+
var method, url, data;
|
|
129
|
+
return __generator(this, function (_a) {
|
|
130
|
+
e.preventDefault();
|
|
131
|
+
if (this.request)
|
|
132
|
+
return [2 /*return*/];
|
|
133
|
+
this.request = new XMLHttpRequest();
|
|
134
|
+
if (this.isForm) {
|
|
135
|
+
url = this.tag.element.getAttribute('action');
|
|
136
|
+
method = this.getAttributeBinding(this.tag.element.getAttribute('method'));
|
|
137
|
+
data = new FormData(this.tag.element);
|
|
138
|
+
}
|
|
139
|
+
else if (this.isAnchor) {
|
|
140
|
+
url = this.tag.element.getAttribute('href');
|
|
141
|
+
method = this.getAttributeBinding('GET');
|
|
142
|
+
}
|
|
143
|
+
this.request.addEventListener('loadend', this.handleXHREvent.bind(this));
|
|
144
|
+
this.request.addEventListener('error', this.handleXHREvent.bind(this));
|
|
145
|
+
this.request.open(method, url);
|
|
146
|
+
this.request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
|
147
|
+
this.request.send(data);
|
|
148
|
+
return [2 /*return*/];
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
XHRAttribute.prototype.handleXHREvent = function (e) {
|
|
153
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
130
154
|
return __generator(this, function (_a) {
|
|
131
155
|
switch (_a.label) {
|
|
132
156
|
case 0:
|
|
133
|
-
|
|
134
|
-
request
|
|
135
|
-
if (this.
|
|
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);
|
|
157
|
+
this.tag.scope.set('status', this.request.status);
|
|
158
|
+
this.tag.scope.set('response', this.request.response);
|
|
159
|
+
if (!(this.request.status >= 200 && this.request.status < 300)) return [3 /*break*/, 2];
|
|
165
160
|
return [4 /*yield*/, this.tree.evaluate(this.tag.scope, this.tag.dom, this.tag)];
|
|
166
161
|
case 1:
|
|
167
162
|
_a.sent();
|
|
163
|
+
this.tag.element.dispatchEvent(new Event('xhr-success'));
|
|
164
|
+
return [3 /*break*/, 3];
|
|
165
|
+
case 2:
|
|
166
|
+
if (this.request.status >= 300 && this.request.status < 400) {
|
|
167
|
+
this.tag.element.dispatchEvent(new Event('xhr-redirect'));
|
|
168
|
+
}
|
|
169
|
+
else if (this.request.status >= 400 && this.request.status < 500) {
|
|
170
|
+
this.tag.element.dispatchEvent(new Event('xhr-client-error'));
|
|
171
|
+
this.tag.element.dispatchEvent(new Event('xhr-error'));
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
this.tag.element.dispatchEvent(new Event('xhr-server-error'));
|
|
175
|
+
this.tag.element.dispatchEvent(new Event('xhr-error'));
|
|
176
|
+
}
|
|
177
|
+
_a.label = 3;
|
|
178
|
+
case 3:
|
|
179
|
+
this.request = null;
|
|
168
180
|
return [2 /*return*/];
|
|
169
181
|
}
|
|
170
182
|
});
|
|
@@ -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;;
|
|
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.
|
|
1
|
+
export declare const VERSION = "0.1.116";
|
package/dist/version.js
CHANGED
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAA0B;AAC1B,qDAAkD;AAClD,uCAAoC;AACpC,iDAA8C;AAC9C,uDAAoD;AACpD,6BAA2B;AAC3B,iCAA8B;AAC9B,qDAAkD;AAClD,6DAA0D;AAE1D,qCAAkC;AAClC,6BAA2B;AAE3B;IAA4B,0BAAe;IAMvC;QAAA,YACI,iBAAO,
|
|
1
|
+
{"version":3,"file":"vsn.js","sourceRoot":"","sources":["../src/vsn.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -6,6 +6,7 @@ import {Tree} from "../AST";
|
|
|
6
6
|
export class XHRAttribute extends Attribute {
|
|
7
7
|
public static readonly canDefer: boolean = false;
|
|
8
8
|
protected tree: Tree;
|
|
9
|
+
protected request: XMLHttpRequest;
|
|
9
10
|
|
|
10
11
|
public get code() {
|
|
11
12
|
return this.getAttributeValue();
|
|
@@ -36,7 +37,9 @@ export class XHRAttribute extends Attribute {
|
|
|
36
37
|
|
|
37
38
|
public async handleEvent(e) {
|
|
38
39
|
e.preventDefault();
|
|
39
|
-
|
|
40
|
+
if (this.request) return;
|
|
41
|
+
|
|
42
|
+
this.request = new XMLHttpRequest();
|
|
40
43
|
let method;
|
|
41
44
|
let url;
|
|
42
45
|
let data;
|
|
@@ -49,19 +52,28 @@ export class XHRAttribute extends Attribute {
|
|
|
49
52
|
method = this.getAttributeBinding('GET');
|
|
50
53
|
}
|
|
51
54
|
|
|
52
|
-
request.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
console.error(request.statusText);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
request.open(method, url);
|
|
62
|
-
request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
|
63
|
-
request.send(data);
|
|
55
|
+
this.request.addEventListener('loadend', this.handleXHREvent.bind(this));
|
|
56
|
+
this.request.addEventListener('error', this.handleXHREvent.bind(this));
|
|
57
|
+
this.request.open(method, url);
|
|
58
|
+
this.request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
|
59
|
+
this.request.send(data);
|
|
60
|
+
}
|
|
64
61
|
|
|
65
|
-
|
|
62
|
+
public async handleXHREvent(e) {
|
|
63
|
+
this.tag.scope.set('status', this.request.status);
|
|
64
|
+
this.tag.scope.set('response', this.request.response);
|
|
65
|
+
if (this.request.status >= 200 && this.request.status < 300) {
|
|
66
|
+
await this.tree.evaluate(this.tag.scope, this.tag.dom, this.tag);
|
|
67
|
+
this.tag.element.dispatchEvent(new Event('xhr-success'));
|
|
68
|
+
} else if (this.request.status >= 300 && this.request.status < 400) {
|
|
69
|
+
this.tag.element.dispatchEvent(new Event('xhr-redirect'));
|
|
70
|
+
} else if (this.request.status >= 400 && this.request.status < 500) {
|
|
71
|
+
this.tag.element.dispatchEvent(new Event('xhr-client-error'));
|
|
72
|
+
this.tag.element.dispatchEvent(new Event('xhr-error'));
|
|
73
|
+
} else {
|
|
74
|
+
this.tag.element.dispatchEvent(new Event('xhr-server-error'));
|
|
75
|
+
this.tag.element.dispatchEvent(new Event('xhr-error'));
|
|
76
|
+
}
|
|
77
|
+
this.request = null;
|
|
66
78
|
}
|
|
67
79
|
}
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = '0.1.
|
|
1
|
+
export const VERSION = '0.1.116';
|
|
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);
|