jsf.js_next_gen 4.0.0-beta-11 → 4.0.0-beta-12
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/dist/window/faces-development.js +164 -49
- package/dist/window/faces-development.js.br +0 -0
- package/dist/window/faces-development.js.gz +0 -0
- package/dist/window/faces-development.js.map +1 -1
- package/dist/window/faces.js +1 -1
- package/dist/window/faces.js.br +0 -0
- package/dist/window/faces.js.gz +0 -0
- package/dist/window/faces.js.map +1 -1
- package/dist/window/jsf-development.js +164 -49
- package/dist/window/jsf-development.js.br +0 -0
- package/dist/window/jsf-development.js.gz +0 -0
- package/dist/window/jsf-development.js.map +1 -1
- package/dist/window/jsf.js +1 -1
- package/dist/window/jsf.js.br +0 -0
- package/dist/window/jsf.js.gz +0 -0
- package/dist/window/jsf.js.map +1 -1
- package/package.json +3 -3
- package/pom.xml +14 -0
- package/src/main/java/com/example/jsfs_js_ts/DecoratedFacesJS.java +80 -0
- package/src/main/java/com/example/jsfs_js_ts/DecoratingResourceHandlerWrapper.java +54 -0
- package/src/main/typescript/impl/util/ExtDomQuery.ts +10 -6
- package/src/main/typescript/test/frameworkBase/_ext/shared/StandardInits.ts +0 -2
- package/target/api/{Jsf.js → jsf.js} +0 -0
- package/target/api/{Jsf.js.map → jsf.js.map} +0 -0
- package/target/impl/util/ExtDomQuery.js +10 -6
- package/target/impl/util/ExtDomQuery.js.map +1 -1
- package/target/test/frameworkBase/_ext/shared/StandardInits.js +0 -2
- package/target/test/frameworkBase/_ext/shared/StandardInits.js.map +1 -1
- package/src/main/java/com/example/jsfs_js_ts/JsfsJsTsApplication.java +0 -12
- package/target/api/_faces.js +0 -251
- package/target/api/_faces.js.map +0 -1
- package/target/classes/com/example/jsfs_js_ts/JsfsJsTsApplication.class +0 -0
- package/target/impl/util/ListenerQueue.js +0 -3
- package/target/impl/util/ListenerQueue.js.map +0 -1
- package/target/main/typescript/api/Jsf.js +0 -258
- package/target/main/typescript/api/Jsf.js.map +0 -1
- package/target/main/typescript/impl/AjaxImpl.js +0 -569
- package/target/main/typescript/impl/AjaxImpl.js.map +0 -1
- package/target/main/typescript/impl/PushImpl.js +0 -215
- package/target/main/typescript/impl/PushImpl.js.map +0 -1
- package/target/main/typescript/impl/core/Const.js +0 -135
- package/target/main/typescript/impl/core/Const.js.map +0 -1
- package/target/main/typescript/impl/core/ImplTypes.js +0 -43
- package/target/main/typescript/impl/core/ImplTypes.js.map +0 -1
- package/target/main/typescript/impl/i18n/Messages.js +0 -114
- package/target/main/typescript/impl/i18n/Messages.js.map +0 -1
- package/target/main/typescript/impl/util/Assertions.js +0 -90
- package/target/main/typescript/impl/util/Assertions.js.map +0 -1
- package/target/main/typescript/impl/util/AsyncQueue.js +0 -104
- package/target/main/typescript/impl/util/AsyncQueue.js.map +0 -1
- package/target/main/typescript/impl/util/AsyncRunnable.js +0 -18
- package/target/main/typescript/impl/util/AsyncRunnable.js.map +0 -1
- package/target/main/typescript/impl/util/ExtDomQuery.js +0 -129
- package/target/main/typescript/impl/util/ExtDomQuery.js.map +0 -1
- package/target/main/typescript/impl/util/Lang.js +0 -215
- package/target/main/typescript/impl/util/Lang.js.map +0 -1
- package/target/main/typescript/impl/util/ListenerQueue.js +0 -3
- package/target/main/typescript/impl/util/ListenerQueue.js.map +0 -1
- package/target/main/typescript/impl/xhrCore/ErrorData.js +0 -89
- package/target/main/typescript/impl/xhrCore/ErrorData.js.map +0 -1
- package/target/main/typescript/impl/xhrCore/EventData.js +0 -30
- package/target/main/typescript/impl/xhrCore/EventData.js.map +0 -1
- package/target/main/typescript/impl/xhrCore/IResponseProcessor.js +0 -3
- package/target/main/typescript/impl/xhrCore/IResponseProcessor.js.map +0 -1
- package/target/main/typescript/impl/xhrCore/RequestDataResolver.js +0 -143
- package/target/main/typescript/impl/xhrCore/RequestDataResolver.js.map +0 -1
- package/target/main/typescript/impl/xhrCore/ResonseDataResolver.js +0 -103
- package/target/main/typescript/impl/xhrCore/ResonseDataResolver.js.map +0 -1
- package/target/main/typescript/impl/xhrCore/Response.js +0 -167
- package/target/main/typescript/impl/xhrCore/Response.js.map +0 -1
- package/target/main/typescript/impl/xhrCore/ResponseProcessor.js +0 -368
- package/target/main/typescript/impl/xhrCore/ResponseProcessor.js.map +0 -1
- package/target/main/typescript/impl/xhrCore/XhrFormData.js +0 -272
- package/target/main/typescript/impl/xhrCore/XhrFormData.js.map +0 -1
- package/target/main/typescript/impl/xhrCore/XhrRequest.js +0 -281
- package/target/main/typescript/impl/xhrCore/XhrRequest.js.map +0 -1
- package/target/test/frameworkBase/_ext/monadish/DomQueryTest.js +0 -293
- package/target/test/frameworkBase/_ext/monadish/DomQueryTest.js.map +0 -1
- package/target/test/frameworkBase/_ext/monadish/LangTest.js +0 -89
- package/target/test/frameworkBase/_ext/monadish/LangTest.js.map +0 -1
- package/target/test/frameworkBase/_ext/monadish/MappingTest.js +0 -39
- package/target/test/frameworkBase/_ext/monadish/MappingTest.js.map +0 -1
- package/target/test/frameworkBase/_ext/monadish/MonadTest.js +0 -155
- package/target/test/frameworkBase/_ext/monadish/MonadTest.js.map +0 -1
- package/target/test/frameworkBase/_ext/monadish/StreamTest.js +0 -176
- package/target/test/frameworkBase/_ext/monadish/StreamTest.js.map +0 -1
- package/target/test/frameworkBase/_ext/monadish/XmlQueryTest.js +0 -1
- package/target/test/frameworkBase/_ext/monadish/XmlQueryTest.js.map +0 -1
- package/target/test/impl/ImplTest_23.spec_.js +0 -165
- package/target/test/impl/ImplTest_23.spec_.js.map +0 -1
- package/target/test/typescript/frameworkBase/LangTest.js +0 -112
- package/target/test/typescript/frameworkBase/LangTest.js.map +0 -1
- package/target/test/typescript/frameworkBase/_ext/monadish/DomQueryTest.js +0 -293
- package/target/test/typescript/frameworkBase/_ext/monadish/DomQueryTest.js.map +0 -1
- package/target/test/typescript/frameworkBase/_ext/monadish/LangTest.js +0 -89
- package/target/test/typescript/frameworkBase/_ext/monadish/LangTest.js.map +0 -1
- package/target/test/typescript/frameworkBase/_ext/monadish/MappingProbes.js +0 -115
- package/target/test/typescript/frameworkBase/_ext/monadish/MappingProbes.js.map +0 -1
- package/target/test/typescript/frameworkBase/_ext/monadish/MappingTest.js +0 -39
- package/target/test/typescript/frameworkBase/_ext/monadish/MappingTest.js.map +0 -1
- package/target/test/typescript/frameworkBase/_ext/monadish/MonadTest.js +0 -155
- package/target/test/typescript/frameworkBase/_ext/monadish/MonadTest.js.map +0 -1
- package/target/test/typescript/frameworkBase/_ext/monadish/StreamTest.js +0 -176
- package/target/test/typescript/frameworkBase/_ext/monadish/StreamTest.js.map +0 -1
- package/target/test/typescript/frameworkBase/_ext/monadish/XmlQueryTest.js +0 -1
- package/target/test/typescript/frameworkBase/_ext/monadish/XmlQueryTest.js.map +0 -1
- package/target/test/typescript/frameworkBase/_ext/shared/StandardInits.js +0 -264
- package/target/test/typescript/frameworkBase/_ext/shared/StandardInits.js.map +0 -1
- package/target/test/typescript/frameworkBase/_ext/shared/XmlResponses.js +0 -23
- package/target/test/typescript/frameworkBase/_ext/shared/XmlResponses.js.map +0 -1
- package/target/test/typescript/impl/ImplTest.js +0 -98
- package/target/test/typescript/impl/ImplTest.js.map +0 -1
- package/target/test/typescript/impl/SeparatorCharsTest.js +0 -72
- package/target/test/typescript/impl/SeparatorCharsTest.js.map +0 -1
- package/target/test/typescript/queue/AsynchronousProbe.js +0 -99
- package/target/test/typescript/queue/AsynchronousProbe.js.map +0 -1
- package/target/test/typescript/queue/AsynchronousQueueTest.js +0 -130
- package/target/test/typescript/queue/AsynchronousQueueTest.js.map +0 -1
- package/target/test/typescript/xhrCore/EventTests.js +0 -155
- package/target/test/typescript/xhrCore/EventTests.js.map +0 -1
- package/target/test/typescript/xhrCore/FakeWebsocket.js +0 -25
- package/target/test/typescript/xhrCore/FakeWebsocket.js.map +0 -1
- package/target/test/typescript/xhrCore/FileUploadTest.js +0 -166
- package/target/test/typescript/xhrCore/FileUploadTest.js.map +0 -1
- package/target/test/typescript/xhrCore/RequestParamsTest.js +0 -151
- package/target/test/typescript/xhrCore/RequestParamsTest.js.map +0 -1
- package/target/test/typescript/xhrCore/RequestTest.js +0 -318
- package/target/test/typescript/xhrCore/RequestTest.js.map +0 -1
- package/target/test/typescript/xhrCore/ResponseTest.js +0 -257
- package/target/test/typescript/xhrCore/ResponseTest.js.map +0 -1
- package/target/test/typescript/xhrCore/ShadowDomTest.js +0 -122
- package/target/test/typescript/xhrCore/ShadowDomTest.js.map +0 -1
- package/target/test/typescript/xhrCore/WebsocketTest.js +0 -182
- package/target/test/typescript/xhrCore/WebsocketTest.js.map +0 -1
- package/target/test/typescript/xhrCore/XhrFormDataTest.js +0 -58
- package/target/test/typescript/xhrCore/XhrFormDataTest.js.map +0 -1
- package/target/test-classes/.gz +0 -0
- package/target/test-classes/com/example/jsfs_js_ts/JsfsJsTsApplicationTests.class +0 -0
- package/target/test-classes/fileuploadtest.html +0 -24
- package/target/test-classes/jsf-development.js +0 -6781
- package/target/test-classes/jsf-development.js.br +0 -0
- package/target/test-classes/jsf-development.js.gz +0 -0
- package/target/test-classes/jsf-development.js.map +0 -1
- package/target/test-classes/jsf.js +0 -3
- package/target/test-classes/jsf.js.br +0 -0
- package/target/test-classes/jsf.js.gz +0 -0
|
@@ -1,569 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
3
|
-
* contributor license agreements. See the NOTICE file distributed with
|
|
4
|
-
* this work for additional information regarding copyright ownership.
|
|
5
|
-
* The ASF licenses this file to you under the Apache License, Version 2.0
|
|
6
|
-
* (the "License"); you may not use this file except in compliance with
|
|
7
|
-
* the License. You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.Implementation = void 0;
|
|
19
|
-
var Response_1 = require("./xhrCore/Response");
|
|
20
|
-
var XhrRequest_1 = require("./xhrCore/XhrRequest");
|
|
21
|
-
var AsyncQueue_1 = require("./util/AsyncQueue");
|
|
22
|
-
var mona_dish_1 = require("mona-dish");
|
|
23
|
-
var Assertions_1 = require("./util/Assertions");
|
|
24
|
-
var XhrFormData_1 = require("./xhrCore/XhrFormData");
|
|
25
|
-
var ExtDomQuery_1 = require("./util/ExtDomQuery");
|
|
26
|
-
var ErrorData_1 = require("./xhrCore/ErrorData");
|
|
27
|
-
var Lang_1 = require("./util/Lang");
|
|
28
|
-
var Const_1 = require("./core/Const");
|
|
29
|
-
var RequestDataResolver_1 = require("./xhrCore/RequestDataResolver");
|
|
30
|
-
/*
|
|
31
|
-
* allowed project stages
|
|
32
|
-
*/
|
|
33
|
-
var ProjectStages;
|
|
34
|
-
(function (ProjectStages) {
|
|
35
|
-
ProjectStages["Production"] = "Production";
|
|
36
|
-
ProjectStages["Development"] = "Development";
|
|
37
|
-
ProjectStages["SystemTest"] = "SystemTest";
|
|
38
|
-
ProjectStages["UnitTest"] = "UnitTest";
|
|
39
|
-
})(ProjectStages || (ProjectStages = {}));
|
|
40
|
-
/*
|
|
41
|
-
* blockfilter for the passthrough filtering; the attributes given here
|
|
42
|
-
* will not be transmitted from the options into the passthrough
|
|
43
|
-
*/
|
|
44
|
-
var BlockFilter;
|
|
45
|
-
(function (BlockFilter) {
|
|
46
|
-
BlockFilter["onerror"] = "onerror";
|
|
47
|
-
BlockFilter["onevent"] = "onevent";
|
|
48
|
-
BlockFilter["render"] = "render";
|
|
49
|
-
BlockFilter["execute"] = "execute";
|
|
50
|
-
BlockFilter["myfaces"] = "myfaces";
|
|
51
|
-
BlockFilter["delay"] = "delay";
|
|
52
|
-
BlockFilter["timeout"] = "timeout";
|
|
53
|
-
BlockFilter["windowId"] = "windowId";
|
|
54
|
-
})(BlockFilter || (BlockFilter = {}));
|
|
55
|
-
/**
|
|
56
|
-
* Core Implementation
|
|
57
|
-
* to distinct between api and impl
|
|
58
|
-
*
|
|
59
|
-
* The original idea was to make the implementation pluggable
|
|
60
|
-
* but this is pointless, you always can overwrite the thin api layer
|
|
61
|
-
* however a dedicated api makes sense for readability reasons
|
|
62
|
-
*/
|
|
63
|
-
var Implementation;
|
|
64
|
-
(function (Implementation) {
|
|
65
|
-
var trim = mona_dish_1.Lang.trim;
|
|
66
|
-
var getMessage = Lang_1.ExtLang.getMessage;
|
|
67
|
-
var getGlobalConfig = Lang_1.ExtLang.getGlobalConfig;
|
|
68
|
-
var assert = Assertions_1.Assertions.assert;
|
|
69
|
-
var projectStage = null;
|
|
70
|
-
var separator = null;
|
|
71
|
-
var eventQueue = [];
|
|
72
|
-
var errorQueue = [];
|
|
73
|
-
Implementation.requestQueue = null;
|
|
74
|
-
/*error reporting threshold*/
|
|
75
|
-
var threshold = "ERROR";
|
|
76
|
-
/**
|
|
77
|
-
* fetches the separator char from the given script tags
|
|
78
|
-
*
|
|
79
|
-
* @return {char} the separator char for the given script tags
|
|
80
|
-
*/
|
|
81
|
-
function getSeparatorChar() {
|
|
82
|
-
var _a, _b, _c;
|
|
83
|
-
return (_c = (_b = (_a = resolveGlobalConfig()) === null || _a === void 0 ? void 0 : _a.separator) !== null && _b !== void 0 ? _b : this === null || this === void 0 ? void 0 : this.separator) !== null && _c !== void 0 ? _c : (separator = ExtDomQuery_1.ExtDomquery.searchJsfJsFor(/separator=([^&;]*)/).orElse(":").value);
|
|
84
|
-
}
|
|
85
|
-
Implementation.getSeparatorChar = getSeparatorChar;
|
|
86
|
-
/**
|
|
87
|
-
* this is for testing purposes only, since AjaxImpl is a module
|
|
88
|
-
* we need to reset for every unit test its internal states
|
|
89
|
-
*/
|
|
90
|
-
function reset() {
|
|
91
|
-
projectStage = null;
|
|
92
|
-
separator = null;
|
|
93
|
-
eventQueue = [];
|
|
94
|
-
errorQueue = [];
|
|
95
|
-
Implementation.requestQueue = null;
|
|
96
|
-
}
|
|
97
|
-
Implementation.reset = reset;
|
|
98
|
-
/**
|
|
99
|
-
* @return the project stage also emitted by the server:
|
|
100
|
-
* it cannot be cached and must be delivered over the server
|
|
101
|
-
* The value for it comes from the requestInternal parameter of the jsf.js script called "stage".
|
|
102
|
-
*/
|
|
103
|
-
function getProjectStage() {
|
|
104
|
-
var _a, _b, _c;
|
|
105
|
-
return (_c = (_b = (_a = resolveGlobalConfig()) === null || _a === void 0 ? void 0 : _a.projectStage) !== null && _b !== void 0 ? _b : this === null || this === void 0 ? void 0 : this.projectStage) !== null && _c !== void 0 ? _c : (projectStage = resolveProjectStateFromURL());
|
|
106
|
-
}
|
|
107
|
-
Implementation.getProjectStage = getProjectStage;
|
|
108
|
-
/**
|
|
109
|
-
* resolves the project stage as url parameter
|
|
110
|
-
* @return the project stage or null
|
|
111
|
-
*/
|
|
112
|
-
function resolveProjectStateFromURL() {
|
|
113
|
-
/* run through all script tags and try to find the one that includes jsf.js */
|
|
114
|
-
var foundStage = ExtDomQuery_1.ExtDomquery.searchJsfJsFor(/stage=([^&;]*)/).value;
|
|
115
|
-
return (foundStage in ProjectStages) ? foundStage : null;
|
|
116
|
-
}
|
|
117
|
-
Implementation.resolveProjectStateFromURL = resolveProjectStateFromURL;
|
|
118
|
-
/**
|
|
119
|
-
* implementation of the jsf.util.chain functionality
|
|
120
|
-
*
|
|
121
|
-
* @param source
|
|
122
|
-
* @param event
|
|
123
|
-
* @param funcs
|
|
124
|
-
*/
|
|
125
|
-
function chain(source, event) {
|
|
126
|
-
var funcs = [];
|
|
127
|
-
for (var _i = 2; _i < arguments.length; _i++) {
|
|
128
|
-
funcs[_i - 2] = arguments[_i];
|
|
129
|
-
}
|
|
130
|
-
var ret = true;
|
|
131
|
-
var resolveAndExecute = function (func) {
|
|
132
|
-
if ("string" != typeof func) {
|
|
133
|
-
//function is passed down as chain parameter, can be executed as is
|
|
134
|
-
return (ret = ret && (func.call(source, event) !== false));
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
//either a function or a string can be passed in case of a string we have to wrap it into another function
|
|
138
|
-
//it it is not a plain executable code but a definition
|
|
139
|
-
var sourceCode = trim(func);
|
|
140
|
-
if (sourceCode.indexOf("function ") == 0) {
|
|
141
|
-
sourceCode = "return ".concat(sourceCode, " (event)");
|
|
142
|
-
}
|
|
143
|
-
return (ret = ret && (new Function("event", sourceCode).call(source, event) !== false));
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
//we can use our stream each functionality to run our chain here..
|
|
147
|
-
//the no return value == false stop stream functionality is handled by our resolveAndExecute
|
|
148
|
-
mona_dish_1.Stream.of.apply(mona_dish_1.Stream, funcs).each(function (func) { return resolveAndExecute(func); });
|
|
149
|
-
return ret;
|
|
150
|
-
}
|
|
151
|
-
Implementation.chain = chain;
|
|
152
|
-
/**
|
|
153
|
-
* this function has to send the ajax requests
|
|
154
|
-
*
|
|
155
|
-
* following request conditions must be met:
|
|
156
|
-
* <ul>
|
|
157
|
-
* <li> the request must be sent asynchronously! </li>
|
|
158
|
-
* <li> the request must be a POST!!! request </li>
|
|
159
|
-
* <li> the request url must be the form action attribute </li>
|
|
160
|
-
* <li> all requests must be queued with a client side request queue to ensure the request ordering!</li>
|
|
161
|
-
* </ul>
|
|
162
|
-
*
|
|
163
|
-
* @param el any dom element no matter being it html or jsf, from which the event is emitted
|
|
164
|
-
* @param event any javascript event supported by that object
|
|
165
|
-
* @param opts map of options being pushed into the ajax cycle
|
|
166
|
-
*
|
|
167
|
-
* a) transformArguments out of the function
|
|
168
|
-
* b) passThrough handling with a map copy with a filter map block map
|
|
169
|
-
*/
|
|
170
|
-
function request(el, event, opts) {
|
|
171
|
-
var _a, _b, _c;
|
|
172
|
-
var _d = (0, RequestDataResolver_1.resolveDefaults)(event, opts, el), resolvedEvent = _d.resolvedEvent, options = _d.options, elem = _d.elem, elementId = _d.elementId, requestCtx = _d.requestCtx, internalCtx = _d.internalCtx, windowId = _d.windowId, isResetValues = _d.isResetValues;
|
|
173
|
-
Assertions_1.Assertions.assertRequestIntegrity(options, elem);
|
|
174
|
-
requestCtx.assignIf(!!windowId, Const_1.P_WINDOW_ID).value = windowId;
|
|
175
|
-
requestCtx.assign(Const_1.CTX_PARAM_PASS_THR).value = filterPassthroughValues(options.value);
|
|
176
|
-
requestCtx.assignIf(!!resolvedEvent, Const_1.CTX_PARAM_PASS_THR, Const_1.P_EVT).value = resolvedEvent === null || resolvedEvent === void 0 ? void 0 : resolvedEvent.type;
|
|
177
|
-
/**
|
|
178
|
-
* ajax pass through context with the source
|
|
179
|
-
* onresolvedEvent and onerror
|
|
180
|
-
*/
|
|
181
|
-
requestCtx.assign(Const_1.SOURCE).value = elementId.value;
|
|
182
|
-
/**
|
|
183
|
-
* on resolvedEvent and onError...
|
|
184
|
-
* those values will be traversed later on
|
|
185
|
-
* also into the response context
|
|
186
|
-
*/
|
|
187
|
-
requestCtx.assign(Const_1.ON_EVENT).value = (_a = options.value) === null || _a === void 0 ? void 0 : _a.onevent;
|
|
188
|
-
requestCtx.assign(Const_1.ON_ERROR).value = (_b = options.value) === null || _b === void 0 ? void 0 : _b.onerror;
|
|
189
|
-
/**
|
|
190
|
-
* lets drag the myfaces config params also in
|
|
191
|
-
*/
|
|
192
|
-
requestCtx.assign(Const_1.MYFACES).value = (_c = options.value) === null || _c === void 0 ? void 0 : _c.myfaces;
|
|
193
|
-
/**
|
|
194
|
-
* fetch the parent form
|
|
195
|
-
*
|
|
196
|
-
* note we also add an override possibility here
|
|
197
|
-
* so that people can use dummy forms and work
|
|
198
|
-
* with detached objects
|
|
199
|
-
*/
|
|
200
|
-
var form = (0, RequestDataResolver_1.resolveForm)(requestCtx, elem, resolvedEvent);
|
|
201
|
-
/**
|
|
202
|
-
* binding contract the javax.faces.source must be set
|
|
203
|
-
*/
|
|
204
|
-
requestCtx.assign(Const_1.CTX_PARAM_PASS_THR, Const_1.P_PARTIAL_SOURCE).value = elementId.value;
|
|
205
|
-
/**
|
|
206
|
-
* javax.faces.partial.ajax must be set to true
|
|
207
|
-
*/
|
|
208
|
-
requestCtx.assign(Const_1.CTX_PARAM_PASS_THR, Const_1.P_AJAX).value = true;
|
|
209
|
-
/**
|
|
210
|
-
* binding contract the javax.faces.source must be set
|
|
211
|
-
*/
|
|
212
|
-
requestCtx.assign(Const_1.CTX_PARAM_PASS_THR, Const_1.P_PARTIAL_SOURCE).value = elementId.value;
|
|
213
|
-
/**
|
|
214
|
-
* if resetValues is set to true
|
|
215
|
-
* then we have to set javax.faces.resetValues as well
|
|
216
|
-
* as pass through parameter
|
|
217
|
-
* the value has to be explicitly true, according to
|
|
218
|
-
* the specs jsdoc
|
|
219
|
-
*/
|
|
220
|
-
requestCtx.assignIf(isResetValues, Const_1.CTX_PARAM_PASS_THR, Const_1.P_RESET_VALUES).value = true;
|
|
221
|
-
//additional meta information to speed things up, note internal non jsf
|
|
222
|
-
//pass through options are stored under _mfInternal in the context
|
|
223
|
-
internalCtx.assign(Const_1.CTX_PARAM_SRC_FRM_ID).value = form.id.value;
|
|
224
|
-
internalCtx.assign(Const_1.CTX_PARAM_SRC_CTL_ID).value = elementId.value;
|
|
225
|
-
internalCtx.assign(Const_1.CTX_PARAM_TR_TYPE).value = Const_1.REQ_TYPE_POST;
|
|
226
|
-
//mojarra compatibility, mojarra is sending the form id as well
|
|
227
|
-
//this is not documented behavior but can be determined by running
|
|
228
|
-
//mojarra under blackbox conditions
|
|
229
|
-
//i assume it does the same as our formId_submit=1 so leaving it out
|
|
230
|
-
//wont hurt but for the sake of compatibility we are going to add it
|
|
231
|
-
requestCtx.assign(Const_1.CTX_PARAM_PASS_THR, form.id.value).value = form.id.value;
|
|
232
|
-
assignClientWindowId(form, requestCtx);
|
|
233
|
-
assignExecute(options, requestCtx, form, elementId.value);
|
|
234
|
-
assignRender(options, requestCtx, form, elementId.value);
|
|
235
|
-
var delay = (0, RequestDataResolver_1.resolveDelay)(options);
|
|
236
|
-
var timeout = (0, RequestDataResolver_1.resolveTimeout)(options);
|
|
237
|
-
//now we enqueue the request as asynchronous runnable into our request
|
|
238
|
-
//queue and let the queue take over the rest
|
|
239
|
-
Implementation.queueHandler.addRequestToQueue(elem, form, requestCtx, internalCtx, delay, timeout);
|
|
240
|
-
}
|
|
241
|
-
Implementation.request = request;
|
|
242
|
-
/**
|
|
243
|
-
* Spec. 13.3.3
|
|
244
|
-
* Examining the response markup and updating the DOM tree
|
|
245
|
-
* @param {XMLHttpRequest} request - the ajax request
|
|
246
|
-
* @param {Object} context - the ajax context
|
|
247
|
-
*/
|
|
248
|
-
function response(request, context) {
|
|
249
|
-
Response_1.Response.processResponse(request, context);
|
|
250
|
-
}
|
|
251
|
-
Implementation.response = response;
|
|
252
|
-
/**
|
|
253
|
-
* adds an error handler to the error queue
|
|
254
|
-
*
|
|
255
|
-
* @param errorListener the error listener handler
|
|
256
|
-
*/
|
|
257
|
-
function addOnError(errorListener) {
|
|
258
|
-
/*error handling already done in the assert of the queue*/
|
|
259
|
-
errorQueue.push(errorListener);
|
|
260
|
-
}
|
|
261
|
-
Implementation.addOnError = addOnError;
|
|
262
|
-
/**
|
|
263
|
-
* adds an event handler to the event queue
|
|
264
|
-
*
|
|
265
|
-
* @param eventListener the event listener handler
|
|
266
|
-
*/
|
|
267
|
-
function addOnEvent(eventListener) {
|
|
268
|
-
/*error handling already done in the assert of the queue*/
|
|
269
|
-
eventQueue.push(eventListener);
|
|
270
|
-
}
|
|
271
|
-
Implementation.addOnEvent = addOnEvent;
|
|
272
|
-
// noinspection JSUnusedLocalSymbols
|
|
273
|
-
/**
|
|
274
|
-
* sends an event to the event handlers
|
|
275
|
-
*
|
|
276
|
-
* @param data the event data object hosting the event data according to the spec @see EventData for what is reachable
|
|
277
|
-
* @param localHandler an optional event handler, which is processed before the event handler chain
|
|
278
|
-
*/
|
|
279
|
-
function sendEvent(data, localHandler) {
|
|
280
|
-
if (localHandler === void 0) { localHandler = function (data) {
|
|
281
|
-
}; }
|
|
282
|
-
/*now we serve the queue as well*/
|
|
283
|
-
localHandler(data);
|
|
284
|
-
eventQueue.forEach(function (fn) { return fn(data); });
|
|
285
|
-
}
|
|
286
|
-
Implementation.sendEvent = sendEvent;
|
|
287
|
-
/**
|
|
288
|
-
* error handler behavior called internally
|
|
289
|
-
* and only into the impl it takes care of the
|
|
290
|
-
* internal message transformation to a myfaces internal error
|
|
291
|
-
* and then uses the standard send error mechanisms
|
|
292
|
-
* also a double error logging prevention is done as well
|
|
293
|
-
*
|
|
294
|
-
* @param request the request currently being processed
|
|
295
|
-
* @param context the context affected by this error
|
|
296
|
-
* @param exception the exception being thrown
|
|
297
|
-
* @param clearRequestQueue if set to true, clears the request queue of all pending requests
|
|
298
|
-
*/
|
|
299
|
-
function stdErrorHandler(request, context, exception, clearRequestQueue) {
|
|
300
|
-
if (clearRequestQueue === void 0) { clearRequestQueue = false; }
|
|
301
|
-
//newer browsers do not allow to hold additional values on native objects like exceptions
|
|
302
|
-
//we hence capsule it into the request, which is gced automatically
|
|
303
|
-
//on ie as well, since the stdErrorHandler usually is called between requests
|
|
304
|
-
//this is a valid approach
|
|
305
|
-
try {
|
|
306
|
-
if (threshold == "ERROR") {
|
|
307
|
-
var errorData = ErrorData_1.ErrorData.fromClient(exception);
|
|
308
|
-
sendError(errorData);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
finally {
|
|
312
|
-
if (clearRequestQueue) {
|
|
313
|
-
Implementation.requestQueue.cleanup();
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
Implementation.stdErrorHandler = stdErrorHandler;
|
|
318
|
-
// noinspection JSUnusedLocalSymbols
|
|
319
|
-
/**
|
|
320
|
-
* implementation triggering the error chain
|
|
321
|
-
*
|
|
322
|
-
*
|
|
323
|
-
*
|
|
324
|
-
* handles the errors, in case of an onError exists within the context the onError is called as local error handler
|
|
325
|
-
* the registered error handlers in the queue receiv an error message to be dealt with
|
|
326
|
-
* and if the projectStage is at development an alert box is displayed
|
|
327
|
-
*
|
|
328
|
-
* note: we have additional functionality here, via the global config myfaces.config.defaultErrorOutput a function can be provided
|
|
329
|
-
* which changes the default output behavior from alert to something else
|
|
330
|
-
*
|
|
331
|
-
* @param errorData the error data to be displayed
|
|
332
|
-
* @param localHandler an optional local error handler which has to be processed before the error handler queue
|
|
333
|
-
*/
|
|
334
|
-
function sendError(errorData, localHandler) {
|
|
335
|
-
if (localHandler === void 0) { localHandler = function (data) {
|
|
336
|
-
}; }
|
|
337
|
-
localHandler(errorData);
|
|
338
|
-
errorQueue.forEach(function (errorCallback) {
|
|
339
|
-
errorCallback(errorData);
|
|
340
|
-
});
|
|
341
|
-
var displayError = getGlobalConfig("defaultErrorOutput", (console ? console.error : alert));
|
|
342
|
-
displayError(errorData);
|
|
343
|
-
}
|
|
344
|
-
Implementation.sendError = sendError;
|
|
345
|
-
/**
|
|
346
|
-
* @node optional element or id defining a rootnode where an element with the id "javax.faces.windowId" is hosted
|
|
347
|
-
* @return the client window id of the current window, if one is given if none is found, null is returned
|
|
348
|
-
*/
|
|
349
|
-
function getClientWindow(node) {
|
|
350
|
-
var ALTERED = "___mf_id_altered__";
|
|
351
|
-
var INIT = "___init____";
|
|
352
|
-
/**
|
|
353
|
-
* the search root for the dom element search
|
|
354
|
-
*/
|
|
355
|
-
var searchRoot = new mona_dish_1.DQ(node || document.body).querySelectorAll("form input [name='".concat(Const_1.P_CLIENT_WINDOW, "']"));
|
|
356
|
-
/**
|
|
357
|
-
* lazy helper to fetch the window id from the window url
|
|
358
|
-
*/
|
|
359
|
-
var fetchWindowIdFromUrl = function () { return ExtDomQuery_1.ExtDomquery.searchJsfJsFor(/jfwid=([^&;]*)/).orElse(null).value; };
|
|
360
|
-
/**
|
|
361
|
-
* functional double check based on stream reduction
|
|
362
|
-
* the values should be identical or on INIT value which is a premise to
|
|
363
|
-
* skip the first check
|
|
364
|
-
*
|
|
365
|
-
* @param value1
|
|
366
|
-
* @param value2
|
|
367
|
-
*/
|
|
368
|
-
var differenceCheck = function (value1, value2) {
|
|
369
|
-
if (value1 == INIT) {
|
|
370
|
-
return value2;
|
|
371
|
-
}
|
|
372
|
-
else if (value1 == ALTERED || value1 != value2) {
|
|
373
|
-
return ALTERED;
|
|
374
|
-
}
|
|
375
|
-
return value2;
|
|
376
|
-
};
|
|
377
|
-
/**
|
|
378
|
-
* helper for cleaner code, maps the value from an item
|
|
379
|
-
*
|
|
380
|
-
* @param item
|
|
381
|
-
*/
|
|
382
|
-
var getValue = function (item) { return item.attr("value").value; };
|
|
383
|
-
/**
|
|
384
|
-
* fetch the window id from the forms
|
|
385
|
-
* window ids must be present in all forms
|
|
386
|
-
* or non existent. If they exist all of them must be the same
|
|
387
|
-
*/
|
|
388
|
-
var formWindowId = searchRoot.stream.map(getValue).reduce(differenceCheck, INIT);
|
|
389
|
-
//if the resulting window id is set on altered then we have an unresolvable problem
|
|
390
|
-
assert(ALTERED != formWindowId.value, "Multiple different windowIds found in document");
|
|
391
|
-
/**
|
|
392
|
-
* return the window id or null
|
|
393
|
-
* prio, forms under node/document and if not given then from the url
|
|
394
|
-
*/
|
|
395
|
-
return formWindowId.value != INIT ? formWindowId.value : fetchWindowIdFromUrl();
|
|
396
|
-
}
|
|
397
|
-
Implementation.getClientWindow = getClientWindow;
|
|
398
|
-
/**
|
|
399
|
-
* collect and encode data for a given form element (must be of type form)
|
|
400
|
-
* find the javax.faces.ViewState element and encode its value as well!
|
|
401
|
-
* @return a concatenated string of the encoded values!
|
|
402
|
-
*
|
|
403
|
-
* @throws Error in case of the given element not being of type form!
|
|
404
|
-
* https://issues.apache.org/jira/browse/MYFACES-2110
|
|
405
|
-
*/
|
|
406
|
-
function getViewState(form) {
|
|
407
|
-
/**
|
|
408
|
-
* typecheck assert!, we opt for strong typing here
|
|
409
|
-
* because it makes it easier to detect bugs
|
|
410
|
-
*/
|
|
411
|
-
var element = mona_dish_1.DQ.byId(form, true);
|
|
412
|
-
if (!element.isTag(Const_1.TAG_FORM)) {
|
|
413
|
-
throw new Error(getMessage("ERR_VIEWSTATE"));
|
|
414
|
-
}
|
|
415
|
-
var formData = new XhrFormData_1.XhrFormData(element);
|
|
416
|
-
return formData.toString();
|
|
417
|
-
}
|
|
418
|
-
Implementation.getViewState = getViewState;
|
|
419
|
-
/**
|
|
420
|
-
* this at the first sight looks like a weird construct, but we need to do it this way
|
|
421
|
-
* for testing, we cannot proxy addRequestToQueue from the testing frameworks directly
|
|
422
|
-
* but we need to keep it under unit tests.
|
|
423
|
-
*/
|
|
424
|
-
Implementation.queueHandler = {
|
|
425
|
-
/**
|
|
426
|
-
* public to make it shimmable for tests
|
|
427
|
-
*
|
|
428
|
-
* adds a new request to our queue for further processing
|
|
429
|
-
*/
|
|
430
|
-
addRequestToQueue: function (elem, form, reqCtx, respPassThr, delay, timeout) {
|
|
431
|
-
if (delay === void 0) { delay = 0; }
|
|
432
|
-
if (timeout === void 0) { timeout = 0; }
|
|
433
|
-
Implementation.requestQueue = Implementation.requestQueue !== null && Implementation.requestQueue !== void 0 ? Implementation.requestQueue : new AsyncQueue_1.AsynchronouseQueue();
|
|
434
|
-
Implementation.requestQueue.enqueue(new XhrRequest_1.XhrRequest(elem, form, reqCtx, respPassThr, [], timeout), delay);
|
|
435
|
-
}
|
|
436
|
-
};
|
|
437
|
-
//----------------------------------------------- Methods ---------------------------------------------------------------------
|
|
438
|
-
/**
|
|
439
|
-
* the idea is to replace some placeholder parameters with their respective values
|
|
440
|
-
* placeholder params like @all, @none, @form, @this need to be replaced by
|
|
441
|
-
* the values defined by the specification
|
|
442
|
-
*
|
|
443
|
-
* This function does it for the render parameters
|
|
444
|
-
*
|
|
445
|
-
* @param requestOptions the source options coming in as options object from jsf.ajax.request (options parameter)
|
|
446
|
-
* @param targetContext the receiving target context
|
|
447
|
-
* @param issuingForm the issuing form
|
|
448
|
-
* @param sourceElementId the executing element triggering the jsf.ajax.request (id of it)
|
|
449
|
-
*/
|
|
450
|
-
function assignRender(requestOptions, targetContext, issuingForm, sourceElementId) {
|
|
451
|
-
if (requestOptions.getIf(Const_1.RENDER).isPresent()) {
|
|
452
|
-
remapDefaultConstants(targetContext.getIf(Const_1.CTX_PARAM_PASS_THR).get({}), Const_1.P_RENDER, requestOptions.getIf(Const_1.RENDER).value, issuingForm, sourceElementId);
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
/**
|
|
456
|
-
* the idea is to replace some placeholder parameters with their respective values
|
|
457
|
-
* placeholder params like @all, @none, @form, @this need to be replaced by
|
|
458
|
-
* the values defined by the specification
|
|
459
|
-
*
|
|
460
|
-
* This function does it for the execute parameters
|
|
461
|
-
*
|
|
462
|
-
* @param requestOptions the source options coming in as options object from jsf.ajax.request (options parameter)
|
|
463
|
-
* @param targetContext the receiving target context
|
|
464
|
-
* @param issuingForm the issuing form
|
|
465
|
-
* @param sourceElementId the executing element triggering the jsf.ajax.request (id of it)
|
|
466
|
-
*/
|
|
467
|
-
function assignExecute(requestOptions, targetContext, issuingForm, sourceElementId) {
|
|
468
|
-
if (requestOptions.getIf(Const_1.CTX_PARAM_EXECUTE).isPresent()) {
|
|
469
|
-
/*the options must be a blank delimited list of strings*/
|
|
470
|
-
/*compliance with Mojarra which automatically adds @this to an execute
|
|
471
|
-
* the spec rev 2.0a however states, if none is issued nothing at all should be sent down
|
|
472
|
-
*/
|
|
473
|
-
requestOptions.assign(Const_1.CTX_PARAM_EXECUTE).value = [requestOptions.getIf(Const_1.CTX_PARAM_EXECUTE).value, Const_1.IDENT_THIS].join(" ");
|
|
474
|
-
remapDefaultConstants(targetContext.getIf(Const_1.CTX_PARAM_PASS_THR).get({}), Const_1.P_EXECUTE, requestOptions.getIf(Const_1.CTX_PARAM_EXECUTE).value, issuingForm, sourceElementId);
|
|
475
|
-
}
|
|
476
|
-
else {
|
|
477
|
-
targetContext.assign(Const_1.CTX_PARAM_PASS_THR, Const_1.P_EXECUTE).value = sourceElementId;
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
/**
|
|
481
|
-
* apply the browser tab where the request was originating from
|
|
482
|
-
*
|
|
483
|
-
* @param form the form hosting the client window id
|
|
484
|
-
* @param targetContext the target context receiving the value
|
|
485
|
-
*/
|
|
486
|
-
function assignClientWindowId(form, targetContext) {
|
|
487
|
-
var clientWindow = jsf.getClientWindow(form.getAsElem(0).value);
|
|
488
|
-
if (clientWindow) {
|
|
489
|
-
targetContext.assign(Const_1.CTX_PARAM_PASS_THR, Const_1.P_CLIENT_WINDOW).value = clientWindow;
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
/**
|
|
493
|
-
* transforms the user values to the expected one
|
|
494
|
-
* with the proper none all form and this handling
|
|
495
|
-
* (note we also could use a simple string replace but then
|
|
496
|
-
* we would have had double entries under some circumstances)
|
|
497
|
-
*
|
|
498
|
-
* there are several standardized constants which need a special treatment
|
|
499
|
-
* like @all, @none, @form, @this
|
|
500
|
-
*
|
|
501
|
-
* @param targetConfig the target configuration receiving the final values
|
|
502
|
-
* @param targetKey the target key
|
|
503
|
-
* @param userValues the passed user values (aka input string which needs to be transformed)
|
|
504
|
-
* @param issuingForm the form where the issuing element originates
|
|
505
|
-
* @param issuingElementId the issuing element
|
|
506
|
-
*/
|
|
507
|
-
function remapDefaultConstants(targetConfig, targetKey, userValues, issuingForm, issuingElementId) {
|
|
508
|
-
//a cleaner implementation of the transform list method
|
|
509
|
-
var iterValues = (userValues) ? trim(userValues).split(/\s+/gi) : [];
|
|
510
|
-
var ret = [];
|
|
511
|
-
var processed = {};
|
|
512
|
-
//the idea is simply to loop over all values and then replace
|
|
513
|
-
//their generic values and filter out doubles
|
|
514
|
-
//this is more readable than the old indexed based solution
|
|
515
|
-
//and not really slower because we had to build up the index in our old solution
|
|
516
|
-
//anyway
|
|
517
|
-
for (var cnt = 0; cnt < iterValues.length; cnt++) {
|
|
518
|
-
//avoid doubles
|
|
519
|
-
if (iterValues[cnt] in processed) {
|
|
520
|
-
continue;
|
|
521
|
-
}
|
|
522
|
-
switch (iterValues[cnt]) {
|
|
523
|
-
//@none no values should be sent
|
|
524
|
-
case Const_1.IDENT_NONE:
|
|
525
|
-
return targetConfig.delete(targetKey);
|
|
526
|
-
//@all is a pass through case according to the spec
|
|
527
|
-
case Const_1.IDENT_ALL:
|
|
528
|
-
targetConfig.assign(targetKey).value = Const_1.IDENT_ALL;
|
|
529
|
-
return targetConfig;
|
|
530
|
-
//@form pushes the issuing form id into our list
|
|
531
|
-
case Const_1.IDENT_FORM:
|
|
532
|
-
ret.push(issuingForm.id.value);
|
|
533
|
-
processed[issuingForm.id.value] = true;
|
|
534
|
-
break;
|
|
535
|
-
//@this is replaced with the current issuing element id
|
|
536
|
-
case Const_1.IDENT_THIS:
|
|
537
|
-
if (!(issuingElementId in processed)) {
|
|
538
|
-
ret.push(issuingElementId);
|
|
539
|
-
processed[issuingElementId] = true;
|
|
540
|
-
}
|
|
541
|
-
break;
|
|
542
|
-
default:
|
|
543
|
-
ret.push(iterValues[cnt]);
|
|
544
|
-
processed[iterValues[cnt]] = true;
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
//We now add the target as joined list
|
|
548
|
-
targetConfig.assign(targetKey).value = ret.join(" ");
|
|
549
|
-
return targetConfig;
|
|
550
|
-
}
|
|
551
|
-
/**
|
|
552
|
-
* filter the options given with a blacklist so that only
|
|
553
|
-
* the values required for passthough land in the ajax request
|
|
554
|
-
*
|
|
555
|
-
* @param {Context} mappedOpts the options to be filtered
|
|
556
|
-
*/
|
|
557
|
-
function filterPassthroughValues(mappedOpts) {
|
|
558
|
-
//we now can use the full code reduction given by our stream api
|
|
559
|
-
//to filter
|
|
560
|
-
return mona_dish_1.Stream.ofAssoc(mappedOpts)
|
|
561
|
-
.filter(function (item) { return !(item[0] in BlockFilter); })
|
|
562
|
-
.collect(new mona_dish_1.AssocArrayCollector());
|
|
563
|
-
}
|
|
564
|
-
function resolveGlobalConfig() {
|
|
565
|
-
var _a, _b;
|
|
566
|
-
return (_b = (_a = window === null || window === void 0 ? void 0 : window[Const_1.MYFACES]) === null || _a === void 0 ? void 0 : _a.config) !== null && _b !== void 0 ? _b : {};
|
|
567
|
-
}
|
|
568
|
-
})(Implementation = exports.Implementation || (exports.Implementation = {}));
|
|
569
|
-
//# sourceMappingURL=AjaxImpl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AjaxImpl.js","sourceRoot":"","sources":["../../../../src/main/typescript/impl/AjaxImpl.ts"],"names":[],"mappings":"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"}
|