jsf.js_next_gen 4.0.0-RC.24 → 4.0.0-RC.27
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 +130 -33
- 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 +130 -33
- 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 +4 -4
- package/src/main/typescript/impl/AjaxImpl.ts +31 -3
- package/src/main/typescript/impl/core/Const.ts +1 -1
- package/src/main/typescript/impl/xhrCore/RequestDataResolver.ts +49 -2
- package/src/main/typescript/impl/xhrCore/Response.ts +3 -2
- package/src/main/typescript/impl/xhrCore/ResponseProcessor.ts +4 -4
- package/src/main/typescript/impl/xhrCore/XhrFormData.ts +44 -25
- package/src/main/typescript/impl/xhrCore/XhrRequest.ts +29 -9
- package/src/main/typescript/test/xhrCore/FileUploadTest.spec.ts +2 -0
- package/src/main/typescript/test/xhrCore/NamespacesRequestTest.spec.ts +8 -8
- package/src/main/typescript/test/xhrCore/ResponseTest.spec.ts +6 -5
- package/src/main/typescript/test/xhrCore/ResponseTest23.spec.ts +2 -2
- package/src/main/typescript/test/xhrCore/XhrFormDataTest.spec.ts +1 -0
- package/target/impl/AjaxImpl.js +19 -1
- package/target/impl/AjaxImpl.js.map +1 -1
- package/target/impl/core/Const.js +2 -2
- package/target/impl/core/Const.js.map +1 -1
- package/target/impl/xhrCore/RequestDataResolver.js +48 -1
- package/target/impl/xhrCore/RequestDataResolver.js.map +1 -1
- package/target/impl/xhrCore/Response.js +1 -1
- package/target/impl/xhrCore/Response.js.map +1 -1
- package/target/impl/xhrCore/ResponseProcessor.js +3 -3
- package/target/impl/xhrCore/ResponseProcessor.js.map +1 -1
- package/target/impl/xhrCore/XhrFormData.js +36 -19
- package/target/impl/xhrCore/XhrFormData.js.map +1 -1
- package/target/impl/xhrCore/XhrRequest.js +11 -2
- package/target/impl/xhrCore/XhrRequest.js.map +1 -1
- package/target/test/xhrCore/FileUploadTest.spec.js +1 -0
- package/target/test/xhrCore/FileUploadTest.spec.js.map +1 -1
- package/target/test/xhrCore/NamespacesRequestTest.spec.js +8 -7
- package/target/test/xhrCore/NamespacesRequestTest.spec.js.map +1 -1
- package/target/test/xhrCore/ResponseTest.spec.js +6 -3
- package/target/test/xhrCore/ResponseTest.spec.js.map +1 -1
- package/target/test/xhrCore/ResponseTest23.spec.js +2 -2
- package/target/test/xhrCore/ResponseTest23.spec.js.map +1 -1
- package/target/test/xhrCore/XhrFormDataTest.spec.js +1 -0
- package/target/test/xhrCore/XhrFormDataTest.spec.js.map +1 -1
|
@@ -520,10 +520,10 @@ class DomQuery {
|
|
|
520
520
|
const doc = document.implementation.createHTMLDocument("");
|
|
521
521
|
markup = trim(markup);
|
|
522
522
|
let lowerMarkup = markup.toLowerCase();
|
|
523
|
-
if (lowerMarkup.
|
|
524
|
-
lowerMarkup.
|
|
525
|
-
lowerMarkup.
|
|
526
|
-
lowerMarkup.
|
|
523
|
+
if (lowerMarkup.search(/\<\!doctypeW+/gi) != -1 ||
|
|
524
|
+
lowerMarkup.search(/\<html\w+/gi) != -1 ||
|
|
525
|
+
lowerMarkup.search(/\<head\W+/gi) != -1 ||
|
|
526
|
+
lowerMarkup.search(/\<body\W+/gi) != -1) {
|
|
527
527
|
doc.documentElement.innerHTML = markup;
|
|
528
528
|
return new DomQuery(doc.documentElement);
|
|
529
529
|
}
|
|
@@ -2760,6 +2760,12 @@ class Config extends Optional {
|
|
|
2760
2760
|
toJson() {
|
|
2761
2761
|
return JSON.stringify(this.value);
|
|
2762
2762
|
}
|
|
2763
|
+
/**
|
|
2764
|
+
* returns the first config level as streeam
|
|
2765
|
+
*/
|
|
2766
|
+
get stream() {
|
|
2767
|
+
return Stream_1.Stream.of(...Object.keys(this.value)).map(key => [key, this.value[key]]);
|
|
2768
|
+
}
|
|
2763
2769
|
getClass() {
|
|
2764
2770
|
return Config;
|
|
2765
2771
|
}
|
|
@@ -4478,6 +4484,7 @@ var Implementation;
|
|
|
4478
4484
|
assignClientWindowId(form, requestCtx);
|
|
4479
4485
|
assignExecute(options, requestCtx, form, elementId);
|
|
4480
4486
|
assignRender(options, requestCtx, form, elementId);
|
|
4487
|
+
assignNamingContainerData(internalCtx, form);
|
|
4481
4488
|
//now we enqueue the request as asynchronous runnable into our request
|
|
4482
4489
|
//queue and let the queue take over the rest
|
|
4483
4490
|
Implementation.queueHandler.addRequestToQueue(elem, form, requestCtx, internalCtx, delay, timeout);
|
|
@@ -4650,7 +4657,9 @@ var Implementation;
|
|
|
4650
4657
|
if (!element.isTag(Const_1.HTML_TAG_FORM)) {
|
|
4651
4658
|
throw new Error(getMessage("ERR_VIEWSTATE"));
|
|
4652
4659
|
}
|
|
4653
|
-
|
|
4660
|
+
const dummyContext = new mona_dish_1.Config({});
|
|
4661
|
+
assignNamingContainerData(dummyContext, mona_dish_1.DQ.byId(form));
|
|
4662
|
+
let formData = new XhrFormData_1.XhrFormData(element, (0, RequestDataResolver_1.resoveNamingContainerMapper)(dummyContext));
|
|
4654
4663
|
return formData.toString();
|
|
4655
4664
|
}
|
|
4656
4665
|
Implementation.getViewState = getViewState;
|
|
@@ -4725,6 +4734,21 @@ var Implementation;
|
|
|
4725
4734
|
targetContext.assign(Const_1.CTX_PARAM_REQ_PASS_THR, Const_1.P_CLIENT_WINDOW).value = clientWindow;
|
|
4726
4735
|
}
|
|
4727
4736
|
}
|
|
4737
|
+
/**
|
|
4738
|
+
* determines the current naming container
|
|
4739
|
+
* and assigns it internally
|
|
4740
|
+
*
|
|
4741
|
+
* @param internalContext
|
|
4742
|
+
* @param formElement
|
|
4743
|
+
* @private
|
|
4744
|
+
*/
|
|
4745
|
+
function assignNamingContainerData(internalContext, formElement) {
|
|
4746
|
+
const viewRootId = (0, RequestDataResolver_1.resolveViewRootId)(formElement);
|
|
4747
|
+
if (!!viewRootId) {
|
|
4748
|
+
internalContext.assign(Const_1.NAMED_VIEWROOT).value = true;
|
|
4749
|
+
internalContext.assign(Const_1.NAMING_CONTAINER_ID).value = viewRootId;
|
|
4750
|
+
}
|
|
4751
|
+
}
|
|
4728
4752
|
/**
|
|
4729
4753
|
* transforms the user values to the expected one
|
|
4730
4754
|
* with the proper none all form and this handling
|
|
@@ -5175,7 +5199,7 @@ var PushImpl;
|
|
|
5175
5199
|
* limitations under the License.
|
|
5176
5200
|
*/
|
|
5177
5201
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
5178
|
-
exports.CTX_OPTIONS_PARAMS = exports.TIMEOUT_EVENT = exports.CLIENT_ERROR = exports.SERVER_ERROR = exports.MALFORMEDXML = exports.EMPTY_RESPONSE = exports.HTTPERROR = exports.RESPONSE_XML = exports.RESPONSE_TEXT = exports.ERROR_MESSAGE = exports.ERROR_NAME = exports.STATUS = exports.SOURCE = exports.SUCCESS = exports.COMPLETE = exports.BEGIN = exports.ON_EVENT = exports.ON_ERROR = exports.EVENT = exports.ERROR = exports.WINDOW_ID = exports.CTX_PARAM_RENDER = exports.P_BEHAVIOR_EVENT = exports.P_WINDOW_ID = exports.P_RESET_VALUES = exports.P_EVT = exports.P_RENDER_OVERRIDE = exports.P_RENDER = exports.P_EXECUTE = exports.P_AJAX = exports.IDENT_FORM = exports.IDENT_THIS = exports.IDENT_NONE = exports.IDENT_ALL = exports.HTML_CLIENT_WINDOW = exports.HTML_VIEWSTATE = exports.EMPTY_MAP = exports.EMPTY_STR = exports.EMPTY_FUNC = exports.P_RESOURCE = exports.P_VIEWBODY = exports.P_VIEWHEAD = exports.P_VIEWROOT = exports.P_CLIENT_WINDOW = exports.P_VIEWSTATE = exports.VIEW_ID = exports.
|
|
5202
|
+
exports.CTX_OPTIONS_PARAMS = exports.TIMEOUT_EVENT = exports.CLIENT_ERROR = exports.SERVER_ERROR = exports.MALFORMEDXML = exports.EMPTY_RESPONSE = exports.HTTPERROR = exports.RESPONSE_XML = exports.RESPONSE_TEXT = exports.ERROR_MESSAGE = exports.ERROR_NAME = exports.STATUS = exports.SOURCE = exports.SUCCESS = exports.COMPLETE = exports.BEGIN = exports.ON_EVENT = exports.ON_ERROR = exports.EVENT = exports.ERROR = exports.WINDOW_ID = exports.CTX_PARAM_RENDER = exports.P_BEHAVIOR_EVENT = exports.P_WINDOW_ID = exports.P_RESET_VALUES = exports.P_EVT = exports.P_RENDER_OVERRIDE = exports.P_RENDER = exports.P_EXECUTE = exports.P_AJAX = exports.IDENT_FORM = exports.IDENT_THIS = exports.IDENT_NONE = exports.IDENT_ALL = exports.HTML_CLIENT_WINDOW = exports.HTML_VIEWSTATE = exports.EMPTY_MAP = exports.EMPTY_STR = exports.EMPTY_FUNC = exports.P_RESOURCE = exports.P_VIEWBODY = exports.P_VIEWHEAD = exports.P_VIEWROOT = exports.P_CLIENT_WINDOW = exports.P_VIEWSTATE = exports.VIEW_ID = exports.NAMING_CONTAINER_ID = exports.P_PARTIAL_SOURCE = exports.NAMED_VIEWROOT = exports.XML_ATTR_NAMED_VIEWROOT = void 0;
|
|
5179
5203
|
exports.XML_TAG_AFTER = exports.XML_TAG_BEFORE = exports.XML_TAG_REDIRECT = exports.XML_TAG_EXTENSION = exports.XML_TAG_ATTRIBUTES = exports.XML_TAG_ERROR = exports.XML_TAG_EVAL = exports.XML_TAG_INSERT = exports.XML_TAG_DELETE = exports.XML_TAG_UPDATE = exports.XML_TAG_CHANGES = exports.XML_TAG_PARTIAL_RESP = exports.ATTR_ID = exports.ATTR_VALUE = exports.ATTR_NAME = exports.ATTR_URL = exports.ERR_NO_PARTIAL_RESPONSE = exports.PHASE_PROCESS_RESPONSE = exports.SEL_RESPONSE_XML = exports.SEL_CLIENT_WINDOW_ELEM = exports.SEL_VIEWSTATE_ELEM = exports.HTML_TAG_STYLE = exports.HTML_TAG_SCRIPT = exports.HTML_TAG_LINK = exports.HTML_TAG_BODY = exports.HTML_TAG_FORM = exports.HTML_TAG_HEAD = exports.STD_ACCEPT = exports.NO_TIMEOUT = exports.MULTIPART = exports.URL_ENCODED = exports.STATE_EVT_COMPLETE = exports.STATE_EVT_TIMEOUT = exports.STATE_EVT_BEGIN = exports.REQ_TYPE_POST = exports.REQ_TYPE_GET = exports.ENCODED_URL = exports.VAL_AJAX = exports.REQ_ACCEPT = exports.HEAD_FACES_REQ = exports.CONTENT_TYPE = exports.CTX_PARAM_REQ_PASS_THR = exports.CTX_PARAM_SRC_CTL_ID = exports.CTX_PARAM_SRC_FRM_ID = exports.CTX_PARAM_MF_INTERNAL = exports.CTX_OPTIONS_EXECUTE = exports.CTX_OPTIONS_RESET = exports.CTX_OPTIONS_TIMEOUT = exports.DELAY_NONE = exports.CTX_OPTIONS_DELAY = void 0;
|
|
5180
5204
|
exports.$nsp = exports.$faces = exports.UNKNOWN = exports.MAX_RECONNECT_ATTEMPTS = exports.RECONNECT_INTERVAL = exports.APPLIED_CLIENT_WINDOW = exports.APPLIED_VST = exports.REASON_EXPIRED = exports.MF_NONE = exports.MYFACES = exports.DEFERRED_HEAD_INSERTS = exports.UPDATE_ELEMS = exports.UPDATE_FORMS = exports.XML_TAG_ATTR = void 0;
|
|
5181
5205
|
/*
|
|
@@ -5184,7 +5208,7 @@ exports.$nsp = exports.$faces = exports.UNKNOWN = exports.MAX_RECONNECT_ATTEMPTS
|
|
|
5184
5208
|
exports.XML_ATTR_NAMED_VIEWROOT = "namedViewRoot";
|
|
5185
5209
|
exports.NAMED_VIEWROOT = "namedViewRoot";
|
|
5186
5210
|
exports.P_PARTIAL_SOURCE = "jakarta.faces.source";
|
|
5187
|
-
exports.
|
|
5211
|
+
exports.NAMING_CONTAINER_ID = "myfaces.partialId";
|
|
5188
5212
|
exports.VIEW_ID = "myfaces.viewId";
|
|
5189
5213
|
exports.P_VIEWSTATE = "jakarta.faces.ViewState";
|
|
5190
5214
|
exports.P_CLIENT_WINDOW = "jakarta.faces.ClientWindow";
|
|
@@ -6507,7 +6531,7 @@ exports.EventData = EventData;
|
|
|
6507
6531
|
* limitations under the License.
|
|
6508
6532
|
*/
|
|
6509
6533
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
6510
|
-
exports.resolveDefaults = exports.getEventTarget = exports.resolveWindowId = exports.resolveDelay = exports.resolveTimeout = exports.resolveViewId = exports.resolveForm = exports.resolveFinalUrl = exports.resolveTargetUrl = exports.resolveHandlerFunc = void 0;
|
|
6534
|
+
exports.resolveDefaults = exports.getEventTarget = exports.resolveWindowId = exports.resolveDelay = exports.resolveTimeout = exports.resoveConfigNamingContainerMapper = exports.resoveNamingContainerMapper = exports.resolveViewRootId = exports.resolveViewId = exports.resolveForm = exports.resolveFinalUrl = exports.resolveTargetUrl = exports.resolveHandlerFunc = void 0;
|
|
6511
6535
|
const mona_dish_1 = __webpack_require__(/*! mona-dish */ "./node_modules/mona-dish/src/main/typescript/index_core.ts");
|
|
6512
6536
|
const Const_1 = __webpack_require__(/*! ../core/Const */ "./src/main/typescript/impl/core/Const.ts");
|
|
6513
6537
|
const Lang_1 = __webpack_require__(/*! ../util/Lang */ "./src/main/typescript/impl/util/Lang.ts");
|
|
@@ -6528,6 +6552,7 @@ const Assertions_1 = __webpack_require__(/*! ../util/Assertions */ "./src/main/t
|
|
|
6528
6552
|
* @param funcName
|
|
6529
6553
|
*/
|
|
6530
6554
|
function resolveHandlerFunc(requestContext, responseContext, funcName) {
|
|
6555
|
+
responseContext = responseContext || new mona_dish_1.Config({});
|
|
6531
6556
|
return responseContext.getIf(funcName)
|
|
6532
6557
|
.orElseLazy(() => requestContext.getIf(funcName).value)
|
|
6533
6558
|
.orElse(Const_1.EMPTY_FUNC).value;
|
|
@@ -6566,6 +6591,52 @@ function resolveViewId(form) {
|
|
|
6566
6591
|
return form.id.value.indexOf(viewStateViewId) === 0 ? viewStateViewId : "";
|
|
6567
6592
|
}
|
|
6568
6593
|
exports.resolveViewId = resolveViewId;
|
|
6594
|
+
function resolveViewRootId(form) {
|
|
6595
|
+
const viewState = form.querySelectorAll(`input[type='hidden'][name*='${(0, Const_1.$nsp)(Const_1.P_VIEWSTATE)}']`).attr("name").orElse("").value;
|
|
6596
|
+
const divider = (0, Const_1.$faces)().separatorchar;
|
|
6597
|
+
const viewId = viewState.split(divider, 2)[0];
|
|
6598
|
+
//different to the identifier the form id is never prepended to the viewstate
|
|
6599
|
+
return viewId.indexOf((0, Const_1.$nsp)(Const_1.P_VIEWSTATE)) === -1 ? viewId : "";
|
|
6600
|
+
}
|
|
6601
|
+
exports.resolveViewRootId = resolveViewRootId;
|
|
6602
|
+
/**
|
|
6603
|
+
* as per jsdoc before the request it must be ensured that every post argument
|
|
6604
|
+
* is prefixed with the naming container id (there is an exception in mojarra with
|
|
6605
|
+
* the element=element param, which we have to follow here as well.
|
|
6606
|
+
* (inputs are prefixed by name anyway normally this only affects our standard parameters)
|
|
6607
|
+
* @private
|
|
6608
|
+
*/
|
|
6609
|
+
function resoveNamingContainerMapper(internalContext) {
|
|
6610
|
+
const isNamedViewRoot = internalContext.getIf(Const_1.NAMED_VIEWROOT).isPresent();
|
|
6611
|
+
if (!isNamedViewRoot) {
|
|
6612
|
+
return;
|
|
6613
|
+
}
|
|
6614
|
+
const partialId = internalContext.getIf(Const_1.NAMING_CONTAINER_ID).value;
|
|
6615
|
+
const SEP = (0, Const_1.$faces)().separatorchar;
|
|
6616
|
+
const prefix = partialId + SEP;
|
|
6617
|
+
return (key, value) => (key.indexOf(prefix) == 0) ? [key, value] : [prefix + key, value];
|
|
6618
|
+
}
|
|
6619
|
+
exports.resoveNamingContainerMapper = resoveNamingContainerMapper;
|
|
6620
|
+
/**
|
|
6621
|
+
* we provide the same for configs
|
|
6622
|
+
* @param internalContext
|
|
6623
|
+
*/
|
|
6624
|
+
function resoveConfigNamingContainerMapper(internalContext) {
|
|
6625
|
+
const isNamedViewRoot = internalContext.getIf(Const_1.NAMED_VIEWROOT).isPresent();
|
|
6626
|
+
if (!isNamedViewRoot) {
|
|
6627
|
+
return;
|
|
6628
|
+
}
|
|
6629
|
+
const partialId = internalContext.getIf(Const_1.NAMING_CONTAINER_ID).value;
|
|
6630
|
+
const SEP = (0, Const_1.$faces)().separatorchar;
|
|
6631
|
+
const prefix = partialId + SEP;
|
|
6632
|
+
return (config) => {
|
|
6633
|
+
let assoc = config.stream
|
|
6634
|
+
.map(([key, data]) => (key.indexOf(prefix) == 0) ? [key, data] : [prefix + key, data])
|
|
6635
|
+
.collect(new mona_dish_1.AssocArrayCollector());
|
|
6636
|
+
return new ExtDomQuery_1.ExtConfig(assoc);
|
|
6637
|
+
};
|
|
6638
|
+
}
|
|
6639
|
+
exports.resoveConfigNamingContainerMapper = resoveConfigNamingContainerMapper;
|
|
6569
6640
|
function resolveTimeout(options) {
|
|
6570
6641
|
var _a;
|
|
6571
6642
|
let getCfg = Lang_1.ExtLang.getLocalOrGlobalConfig;
|
|
@@ -6846,7 +6917,7 @@ var Response;
|
|
|
6846
6917
|
// under or in body as identifier
|
|
6847
6918
|
var _a;
|
|
6848
6919
|
let partialId = (_a = node === null || node === void 0 ? void 0 : node.id) === null || _a === void 0 ? void 0 : _a.value;
|
|
6849
|
-
internalContext.assignIf(!!partialId, Const_1.
|
|
6920
|
+
internalContext.assignIf(!!partialId, Const_1.NAMING_CONTAINER_ID).value = partialId; // second case mojarra
|
|
6850
6921
|
// there must be at least one container viewstate element resembling the viewroot that we know
|
|
6851
6922
|
// this is named
|
|
6852
6923
|
responseProcessor.updateNamedViewRootState();
|
|
@@ -7243,7 +7314,7 @@ class ResponseProcessor {
|
|
|
7243
7314
|
fixViewStates() {
|
|
7244
7315
|
mona_dish_1.Stream.ofAssoc(this.internalContext.getIf(Const_1.APPLIED_VST).orElse({}).value)
|
|
7245
7316
|
.each(([, value]) => {
|
|
7246
|
-
const namingContainerId = this.internalContext.getIf(Const_1.
|
|
7317
|
+
const namingContainerId = this.internalContext.getIf(Const_1.NAMING_CONTAINER_ID);
|
|
7247
7318
|
const namedViewRoot = !!this.internalContext.getIf(Const_1.NAMED_VIEWROOT).value;
|
|
7248
7319
|
const affectedForms = this.getContainerForms(namingContainerId)
|
|
7249
7320
|
.filter(affectedForm => this.isInExecuteOrRender(affectedForm));
|
|
@@ -7257,7 +7328,7 @@ class ResponseProcessor {
|
|
|
7257
7328
|
fixClientWindow() {
|
|
7258
7329
|
mona_dish_1.Stream.ofAssoc(this.internalContext.getIf(Const_1.APPLIED_CLIENT_WINDOW).orElse({}).value)
|
|
7259
7330
|
.each(([, value]) => {
|
|
7260
|
-
const namingContainerId = this.internalContext.getIf(Const_1.
|
|
7331
|
+
const namingContainerId = this.internalContext.getIf(Const_1.NAMING_CONTAINER_ID);
|
|
7261
7332
|
const namedViewRoot = !!this.internalContext.getIf(Const_1.NAMED_VIEWROOT).value;
|
|
7262
7333
|
const affectedForms = this.getContainerForms(namingContainerId)
|
|
7263
7334
|
.filter(affectedForm => this.isInExecuteOrRender(affectedForm));
|
|
@@ -7265,7 +7336,7 @@ class ResponseProcessor {
|
|
|
7265
7336
|
});
|
|
7266
7337
|
}
|
|
7267
7338
|
updateNamedViewRootState() {
|
|
7268
|
-
let partialId = this.internalContext.getIf(Const_1.
|
|
7339
|
+
let partialId = this.internalContext.getIf(Const_1.NAMING_CONTAINER_ID);
|
|
7269
7340
|
let namedViewRoot = this.internalContext.getIf(Const_1.NAMED_VIEWROOT);
|
|
7270
7341
|
if (partialId.isPresent() &&
|
|
7271
7342
|
(namedViewRoot.isAbsent() ||
|
|
@@ -7465,6 +7536,7 @@ const mona_dish_1 = __webpack_require__(/*! mona-dish */ "./node_modules/mona-di
|
|
|
7465
7536
|
const Const_1 = __webpack_require__(/*! ../core/Const */ "./src/main/typescript/impl/core/Const.ts");
|
|
7466
7537
|
var isString = mona_dish_1.Lang.isString;
|
|
7467
7538
|
const ExtDomQuery_1 = __webpack_require__(/*! ../util/ExtDomQuery */ "./src/main/typescript/impl/util/ExtDomQuery.ts");
|
|
7539
|
+
const defaultParamsMapper = (key, item) => [key, item];
|
|
7468
7540
|
/**
|
|
7469
7541
|
* A unified form data class
|
|
7470
7542
|
* which builds upon our configuration.
|
|
@@ -7486,9 +7558,10 @@ class XhrFormData extends mona_dish_1.Config {
|
|
|
7486
7558
|
* @param executes the executes id list for the elements to being processed
|
|
7487
7559
|
* @param partialIds partial ids to collect, to reduce the data sent down
|
|
7488
7560
|
*/
|
|
7489
|
-
constructor(dataSource, viewState, executes, partialIds) {
|
|
7561
|
+
constructor(dataSource, paramsMapper = defaultParamsMapper, viewState, executes, partialIds) {
|
|
7490
7562
|
super({});
|
|
7491
7563
|
this.dataSource = dataSource;
|
|
7564
|
+
this.paramsMapper = paramsMapper;
|
|
7492
7565
|
this.partialIds = partialIds;
|
|
7493
7566
|
/**
|
|
7494
7567
|
* Checks if the given datasource is a multipart request source
|
|
@@ -7502,9 +7575,9 @@ class XhrFormData extends mona_dish_1.Config {
|
|
|
7502
7575
|
//a call from getViewState passes the form element as datasource,
|
|
7503
7576
|
//so we have two call points
|
|
7504
7577
|
// atm we basically encode twice, to keep the code leaner
|
|
7505
|
-
// this will be later
|
|
7506
|
-
// which are already covered by an external
|
|
7507
|
-
// the encoding a second time, because they are overwritten by the
|
|
7578
|
+
// this will be later optimized, practically elements
|
|
7579
|
+
// which are already covered by an external ViewState do not need
|
|
7580
|
+
// the encoding a second time, because they are overwritten by the ViewState again
|
|
7508
7581
|
if (isString(dataSource)) {
|
|
7509
7582
|
this.assignEncodedString(this.dataSource);
|
|
7510
7583
|
}
|
|
@@ -7554,17 +7627,17 @@ class XhrFormData extends mona_dish_1.Config {
|
|
|
7554
7627
|
* @param form the form holding the view state value
|
|
7555
7628
|
*/
|
|
7556
7629
|
applyViewState(form) {
|
|
7557
|
-
let viewStateElement = form.querySelectorAllDeep(`[name*='${Const_1.P_VIEWSTATE}'`);
|
|
7630
|
+
let viewStateElement = form.querySelectorAllDeep(`[name*='${(0, Const_1.$nsp)(Const_1.P_VIEWSTATE)}'`);
|
|
7558
7631
|
let viewState = viewStateElement.inputValue;
|
|
7559
|
-
|
|
7560
|
-
this.
|
|
7632
|
+
let viewStateName = viewStateElement.name.value;
|
|
7633
|
+
this.assignIf(viewState.isPresent(), viewStateName).value = [viewState.value];
|
|
7561
7634
|
}
|
|
7562
7635
|
/**
|
|
7563
7636
|
* assigns an url encoded string to this xhrFormData object
|
|
7564
7637
|
* as key value entry
|
|
7565
7638
|
* @param encoded
|
|
7566
7639
|
*/
|
|
7567
|
-
assignEncodedString(encoded) {
|
|
7640
|
+
assignEncodedString(encoded, overwrite = true) {
|
|
7568
7641
|
// this code filters out empty strings as key value pairs
|
|
7569
7642
|
let keyValueEntries = decodeURIComponent(encoded).split(/&/gi)
|
|
7570
7643
|
.filter(item => !!(item || '')
|
|
@@ -7575,7 +7648,7 @@ class XhrFormData extends mona_dish_1.Config {
|
|
|
7575
7648
|
* assign a set of key value pairs passed as array ['key=val1', 'key2=val2']
|
|
7576
7649
|
* @param keyValueEntries
|
|
7577
7650
|
*/
|
|
7578
|
-
assignString(keyValueEntries) {
|
|
7651
|
+
assignString(keyValueEntries, overwrite = true) {
|
|
7579
7652
|
let toMerge = new ExtDomQuery_1.ExtConfig({});
|
|
7580
7653
|
function splitToKeyVal(line) {
|
|
7581
7654
|
return line.split(/=(.*)/gi);
|
|
@@ -7584,19 +7657,20 @@ class XhrFormData extends mona_dish_1.Config {
|
|
|
7584
7657
|
var _a, _b;
|
|
7585
7658
|
return keyVal.length < 3 ? [(_a = keyVal === null || keyVal === void 0 ? void 0 : keyVal[0]) !== null && _a !== void 0 ? _a : [], (_b = keyVal === null || keyVal === void 0 ? void 0 : keyVal[1]) !== null && _b !== void 0 ? _b : []] : keyVal;
|
|
7586
7659
|
}
|
|
7587
|
-
//TODO fix files...
|
|
7588
7660
|
mona_dish_1.Stream.of(...keyValueEntries)
|
|
7589
7661
|
.map(line => splitToKeyVal(line))
|
|
7590
7662
|
//special case of having keys without values
|
|
7591
7663
|
.map(keyVal => fixKeyWithoutVal(keyVal))
|
|
7664
|
+
.map(keyVal => this.paramsMapper(keyVal[0], keyVal[1]))
|
|
7592
7665
|
.each(keyVal => {
|
|
7593
7666
|
var _a, _b;
|
|
7594
7667
|
toMerge.append(keyVal[0]).value = (_b = (_a = keyVal === null || keyVal === void 0 ? void 0 : keyVal.splice(1)) === null || _a === void 0 ? void 0 : _a.join("")) !== null && _b !== void 0 ? _b : "";
|
|
7595
7668
|
});
|
|
7596
7669
|
//merge with overwrite but no append! (aka no double entries are allowed)
|
|
7597
|
-
this.shallowMerge(toMerge);
|
|
7670
|
+
this.shallowMerge(toMerge, overwrite);
|
|
7598
7671
|
}
|
|
7599
7672
|
/**
|
|
7673
|
+
* @param paramsMapper ... pre encode the params if needed, default is to map them 1:1
|
|
7600
7674
|
* @returns a Form data representation, this is needed for file submits
|
|
7601
7675
|
*/
|
|
7602
7676
|
toFormData() {
|
|
@@ -7621,10 +7695,12 @@ class XhrFormData extends mona_dish_1.Config {
|
|
|
7621
7695
|
}
|
|
7622
7696
|
let entries = mona_dish_1.LazyStream.of(...Object.keys(this.value))
|
|
7623
7697
|
.filter(key => this.value.hasOwnProperty(key))
|
|
7624
|
-
.flatMap(key => mona_dish_1.Stream.of(...this.value[key])
|
|
7698
|
+
.flatMap(key => mona_dish_1.Stream.of(...this.value[key])
|
|
7699
|
+
.map(val => {
|
|
7700
|
+
return this.paramsMapper(key, val);
|
|
7701
|
+
}))
|
|
7625
7702
|
//we cannot encode file elements that is handled by multipart requests anyway
|
|
7626
7703
|
.filter(([, value]) => !(value instanceof ExtDomQuery_1.ExtDomQuery.global().File))
|
|
7627
|
-
.collect(new mona_dish_1.ArrayCollector()))
|
|
7628
7704
|
.map(keyVal => {
|
|
7629
7705
|
return `${encodeURIComponent(keyVal[0])}=${encodeURIComponent(keyVal[1])}`;
|
|
7630
7706
|
})
|
|
@@ -7657,7 +7733,7 @@ class XhrFormData extends mona_dish_1.Config {
|
|
|
7657
7733
|
*
|
|
7658
7734
|
*/
|
|
7659
7735
|
this.encodeSubmittableFields(this, this.dataSource, this.partialIds);
|
|
7660
|
-
if (this.getIf(Const_1.P_VIEWSTATE).isPresent()) {
|
|
7736
|
+
if (this.getIf((0, Const_1.$nsp)(Const_1.P_VIEWSTATE)).isPresent()) {
|
|
7661
7737
|
return;
|
|
7662
7738
|
}
|
|
7663
7739
|
this.applyViewState(this.dataSource);
|
|
@@ -7682,13 +7758,25 @@ class XhrFormData extends mona_dish_1.Config {
|
|
|
7682
7758
|
toEncode = parentItem;
|
|
7683
7759
|
}
|
|
7684
7760
|
//lets encode the form elements
|
|
7685
|
-
|
|
7761
|
+
let formElements = toEncode.deepElements.encodeFormElement();
|
|
7762
|
+
const mapped = this.remapKeysForNamingContainer(formElements);
|
|
7763
|
+
this.shallowMerge(mapped);
|
|
7764
|
+
}
|
|
7765
|
+
remapKeysForNamingContainer(formElements) {
|
|
7766
|
+
let ret = new mona_dish_1.Config({});
|
|
7767
|
+
formElements.stream
|
|
7768
|
+
.map(([key, item]) => this.paramsMapper(key, item))
|
|
7769
|
+
.each(([key, item]) => {
|
|
7770
|
+
ret.assign(key).value = item;
|
|
7771
|
+
});
|
|
7772
|
+
return ret;
|
|
7686
7773
|
}
|
|
7687
7774
|
appendInputs(ret) {
|
|
7688
|
-
mona_dish_1.Stream.
|
|
7689
|
-
.
|
|
7690
|
-
|
|
7691
|
-
})
|
|
7775
|
+
mona_dish_1.Stream.ofAssoc(this.value)
|
|
7776
|
+
.flatMap(([key, item]) => mona_dish_1.Stream.of(...item).map(item => {
|
|
7777
|
+
return { key, item };
|
|
7778
|
+
}))
|
|
7779
|
+
.each(({ key, item }) => ret.append(key, item));
|
|
7692
7780
|
}
|
|
7693
7781
|
}
|
|
7694
7782
|
exports.XhrFormData = XhrFormData;
|
|
@@ -7788,6 +7876,8 @@ class XhrRequest {
|
|
|
7788
7876
|
};
|
|
7789
7877
|
try {
|
|
7790
7878
|
let formElement = this.sourceForm.getAsElem(0).value;
|
|
7879
|
+
// by spec the viewstate must be called to provide
|
|
7880
|
+
// decorated encoding capabilities
|
|
7791
7881
|
let viewState = (0, Const_1.$faces)().getViewState(formElement);
|
|
7792
7882
|
// encoded we need to decode
|
|
7793
7883
|
// We generated a base representation of the current form
|
|
@@ -7797,8 +7887,11 @@ class XhrRequest {
|
|
|
7797
7887
|
// whatever the formData object delivers
|
|
7798
7888
|
// the partialIdsArray arr is almost deprecated legacy code where we allowed to send a separate list of partial
|
|
7799
7889
|
// ids for reduced load and server processing, this will be removed soon, we can handle the same via execute
|
|
7800
|
-
// anyway
|
|
7801
|
-
|
|
7890
|
+
// anyway
|
|
7891
|
+
// per spec every parameter sent into the request must be naming container
|
|
7892
|
+
// prefixed
|
|
7893
|
+
const namingContainerMapper = (0, RequestDataResolver_1.resoveNamingContainerMapper)(this.internalContext);
|
|
7894
|
+
let formData = new XhrFormData_1.XhrFormData(this.sourceForm, namingContainerMapper, viewState, executesArr(), this.partialIdsArray);
|
|
7802
7895
|
this.contentType = formData.isMultipartRequest ? "undefined" : this.contentType;
|
|
7803
7896
|
// next step the pass through parameters are merged in for post params
|
|
7804
7897
|
this.requestContext.$nspEnabled = false;
|
|
@@ -7809,6 +7902,10 @@ class XhrRequest {
|
|
|
7809
7902
|
// this can be used and is used in the impl to enrich the post request parameters with additional
|
|
7810
7903
|
// information
|
|
7811
7904
|
try {
|
|
7905
|
+
// per spec every param sent down needs to be remapped
|
|
7906
|
+
// and prefixed by the naming container id
|
|
7907
|
+
let configNamingContainerMapper = (0, RequestDataResolver_1.resoveConfigNamingContainerMapper)(this.internalContext);
|
|
7908
|
+
// requestPassThroughParams = configNamingContainerMapper(requestPassThroughParams);
|
|
7812
7909
|
formData.shallowMerge(requestPassThroughParams, true, true);
|
|
7813
7910
|
}
|
|
7814
7911
|
finally {
|
|
Binary file
|
|
Binary file
|