jsf.js_next_gen 4.0.0-RC.30 → 4.0.0-RC.31
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 +223 -134
- 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 +223 -134
- 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 +1 -1
- package/src/main/typescript/impl/util/{URLCodec.ts → FileUtils.ts} +27 -32
- package/src/main/typescript/impl/xhrCore/XhrFormData.ts +64 -47
- package/src/main/typescript/impl/xhrCore/XhrRequest.ts +4 -3
- package/src/main/typescript/test/frameworkBase/_ext/shared/StandardInits.ts +1 -1
- package/src/main/typescript/test/xhrCore/FileUploadTest.spec.ts +3 -2
- package/src/main/typescript/test/xhrCore/RequestParamsTest.spec.ts +34 -6
- package/target/impl/AjaxImpl.js +2 -2
- package/target/impl/AjaxImpl.js.map +1 -1
- package/target/impl/util/FileUtils.js +64 -0
- package/target/impl/util/FileUtils.js.map +1 -0
- package/target/impl/util/URLCodec.js +9 -1
- package/target/impl/util/URLCodec.js.map +1 -1
- package/target/impl/xhrCore/XhrFormData.js +50 -44
- package/target/impl/xhrCore/XhrFormData.js.map +1 -1
- package/target/impl/xhrCore/XhrRequest.js +3 -2
- package/target/impl/xhrCore/XhrRequest.js.map +1 -1
- package/target/test/frameworkBase/_ext/shared/StandardInits.js +1 -1
- package/target/test/xhrCore/FileUploadTest.spec.js +1 -1
- package/target/test/xhrCore/FileUploadTest.spec.js.map +1 -1
- package/target/test/xhrCore/RequestParamsTest.spec.js +33 -3
- package/target/test/xhrCore/RequestParamsTest.spec.js.map +1 -1
- package/target/test-classes/jsf-development.js +1 -1
|
@@ -456,7 +456,7 @@ class DomQuery {
|
|
|
456
456
|
.reduce((accumulate, incoming) => accumulate + incoming, 0).value;
|
|
457
457
|
}
|
|
458
458
|
get asNodeArray() {
|
|
459
|
-
return [].concat(Stream_1.Stream.of(this.rootNode).filter(item => item != null).collect(new SourcesCollectors_1.ArrayCollector()));
|
|
459
|
+
return [].concat(Stream_1.Stream.of(...this.rootNode).filter(item => item != null).collect(new SourcesCollectors_1.ArrayCollector()));
|
|
460
460
|
}
|
|
461
461
|
static querySelectorAllDeep(selector) {
|
|
462
462
|
return new DomQuery(document).querySelectorAllDeep(selector);
|
|
@@ -1311,7 +1311,7 @@ class DomQuery {
|
|
|
1311
1311
|
let scriptElements = new DomQuery(this.filterSelector("script"), this.querySelectorAll("script"));
|
|
1312
1312
|
// script execution order by relative pos in their dom tree
|
|
1313
1313
|
scriptElements.stream
|
|
1314
|
-
.flatMap(item => Stream_1.Stream.of(item.values))
|
|
1314
|
+
.flatMap(item => Stream_1.Stream.of(...item.values))
|
|
1315
1315
|
.sort((node1, node2) => node1.compareDocumentPosition(node2) - 3) // preceding 2, following == 4)
|
|
1316
1316
|
.each(item => execScript(item));
|
|
1317
1317
|
evalCollectedScripts(finalScripts);
|
|
@@ -1366,7 +1366,7 @@ class DomQuery {
|
|
|
1366
1366
|
};
|
|
1367
1367
|
const scriptElements = new DomQuery(this.filterSelector("link, style"), this.querySelectorAll("link, style"));
|
|
1368
1368
|
scriptElements.stream
|
|
1369
|
-
.flatMap(item => Stream_1.Stream.of(item.values))
|
|
1369
|
+
.flatMap(item => Stream_1.Stream.of(...item.values))
|
|
1370
1370
|
.sort((node1, node2) => node1.compareDocumentPosition(node2) - 3)
|
|
1371
1371
|
.each(item => execCss(item));
|
|
1372
1372
|
return this;
|
|
@@ -2917,7 +2917,7 @@ exports.Config = Config;
|
|
|
2917
2917
|
* limitations under the License.
|
|
2918
2918
|
*/
|
|
2919
2919
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
2920
|
-
exports.QueryFormStringCollector = exports.QueryFormDataCollector = exports.FormDataCollector = exports.AssocArrayCollector = exports.Run = exports.ArrayAssocArrayCollector = exports.InverseArrayCollector = exports.ArrayCollector = exports.FlatMapStreamDataSource = exports.MappedStreamDataSource = exports.FilteredStreamDatasource = exports.ArrayStreamDataSource = exports.SequenceDataSource = exports.ITERATION_STATUS = void 0;
|
|
2920
|
+
exports.QueryFormStringCollector = exports.QueryFormDataCollector = exports.FormDataCollector = exports.AssocArrayCollector = exports.Run = exports.ArrayAssocArrayCollector = exports.InverseArrayCollector = exports.ArrayCollector = exports.FlatMapStreamDataSource = exports.MappedStreamDataSource = exports.FilteredStreamDatasource = exports.ArrayStreamDataSource = exports.SequenceDataSource = exports.MultiStreamDatasource = exports.ITERATION_STATUS = void 0;
|
|
2921
2921
|
const Stream_1 = __webpack_require__(/*! ./Stream */ "./node_modules/mona-dish/src/main/typescript/Stream.ts");
|
|
2922
2922
|
/**
|
|
2923
2923
|
* special status of the datasource location pointer
|
|
@@ -2935,6 +2935,84 @@ var ITERATION_STATUS;
|
|
|
2935
2935
|
ITERATION_STATUS["EO_STRM"] = "__EO_STRM__";
|
|
2936
2936
|
ITERATION_STATUS["BEF_STRM"] = "___BEF_STRM__";
|
|
2937
2937
|
})(ITERATION_STATUS = exports.ITERATION_STATUS || (exports.ITERATION_STATUS = {}));
|
|
2938
|
+
class MultiStreamDatasource {
|
|
2939
|
+
constructor(first, ...strms) {
|
|
2940
|
+
this.first = first;
|
|
2941
|
+
this.selectedPos = 0;
|
|
2942
|
+
this.strms = [first].concat(...strms);
|
|
2943
|
+
this.activeStrm = this.strms[this.selectedPos];
|
|
2944
|
+
}
|
|
2945
|
+
current() {
|
|
2946
|
+
return this.activeStrm.current();
|
|
2947
|
+
}
|
|
2948
|
+
hasNext() {
|
|
2949
|
+
if (this.activeStrm.hasNext()) {
|
|
2950
|
+
return true;
|
|
2951
|
+
}
|
|
2952
|
+
if (this.selectedPos >= this.strms.length) {
|
|
2953
|
+
return false;
|
|
2954
|
+
}
|
|
2955
|
+
return this.findNextStrm() != -1;
|
|
2956
|
+
}
|
|
2957
|
+
findNextStrm() {
|
|
2958
|
+
let hasNext = false;
|
|
2959
|
+
let cnt = this.selectedPos;
|
|
2960
|
+
while (!hasNext && cnt < this.strms.length) {
|
|
2961
|
+
hasNext = this.strms[cnt].hasNext();
|
|
2962
|
+
if (!hasNext) {
|
|
2963
|
+
cnt++;
|
|
2964
|
+
}
|
|
2965
|
+
}
|
|
2966
|
+
return hasNext ? cnt : -1;
|
|
2967
|
+
}
|
|
2968
|
+
lookAhead(cnt) {
|
|
2969
|
+
let posPtr = 1;
|
|
2970
|
+
let strmPos = this.selectedPos;
|
|
2971
|
+
let valueFound = null;
|
|
2972
|
+
if (this.strms[strmPos].lookAhead(cnt) != ITERATION_STATUS.EO_STRM) {
|
|
2973
|
+
//speedup
|
|
2974
|
+
return this.strms[strmPos].lookAhead(cnt);
|
|
2975
|
+
}
|
|
2976
|
+
for (let loop = posPtr; loop <= cnt; loop++) {
|
|
2977
|
+
if (!this.strms[strmPos]) {
|
|
2978
|
+
return ITERATION_STATUS.EO_STRM;
|
|
2979
|
+
}
|
|
2980
|
+
let val = (posPtr > 0) ? this.strms[strmPos].lookAhead(posPtr) : this.strms[strmPos].current();
|
|
2981
|
+
valueFound = val;
|
|
2982
|
+
if (val != ITERATION_STATUS.EO_STRM) {
|
|
2983
|
+
posPtr++;
|
|
2984
|
+
}
|
|
2985
|
+
else {
|
|
2986
|
+
if (strmPos >= this.strms.length) {
|
|
2987
|
+
return ITERATION_STATUS.EO_STRM;
|
|
2988
|
+
}
|
|
2989
|
+
strmPos++;
|
|
2990
|
+
posPtr = 1;
|
|
2991
|
+
loop--; //empty iteration
|
|
2992
|
+
}
|
|
2993
|
+
}
|
|
2994
|
+
return valueFound;
|
|
2995
|
+
}
|
|
2996
|
+
next() {
|
|
2997
|
+
if (this.activeStrm.hasNext()) {
|
|
2998
|
+
return this.activeStrm.next();
|
|
2999
|
+
}
|
|
3000
|
+
this.selectedPos = this.findNextStrm();
|
|
3001
|
+
if (this.selectedPos == -1) {
|
|
3002
|
+
return ITERATION_STATUS.EO_STRM;
|
|
3003
|
+
}
|
|
3004
|
+
this.activeStrm = this.strms[this.selectedPos];
|
|
3005
|
+
return this.activeStrm.next();
|
|
3006
|
+
}
|
|
3007
|
+
reset() {
|
|
3008
|
+
this.activeStrm = this.strms[0];
|
|
3009
|
+
this.selectedPos = 0;
|
|
3010
|
+
for (let cnt = 0; cnt < this.strms.length; cnt++) {
|
|
3011
|
+
this.strms[cnt].reset();
|
|
3012
|
+
}
|
|
3013
|
+
}
|
|
3014
|
+
}
|
|
3015
|
+
exports.MultiStreamDatasource = MultiStreamDatasource;
|
|
2938
3016
|
/**
|
|
2939
3017
|
* defines a sequence of numbers for our stream input
|
|
2940
3018
|
*/
|
|
@@ -3390,6 +3468,15 @@ class Stream {
|
|
|
3390
3468
|
}
|
|
3391
3469
|
return new Stream(...value);
|
|
3392
3470
|
}
|
|
3471
|
+
current() {
|
|
3472
|
+
if (this.pos == -1) {
|
|
3473
|
+
return SourcesCollectors_1.ITERATION_STATUS.BEF_STRM;
|
|
3474
|
+
}
|
|
3475
|
+
if (this.pos >= this.value.length) {
|
|
3476
|
+
return SourcesCollectors_1.ITERATION_STATUS.EO_STRM;
|
|
3477
|
+
}
|
|
3478
|
+
return this.value[this.pos];
|
|
3479
|
+
}
|
|
3393
3480
|
limits(end) {
|
|
3394
3481
|
this._limits = end;
|
|
3395
3482
|
return this;
|
|
@@ -3399,9 +3486,8 @@ class Stream {
|
|
|
3399
3486
|
* @param toAppend
|
|
3400
3487
|
*/
|
|
3401
3488
|
concat(...toAppend) {
|
|
3402
|
-
|
|
3403
|
-
|
|
3404
|
-
return Stream.of(this, ...toAppend).flatMap(item => item);
|
|
3489
|
+
let toConcat = [this].concat(toAppend);
|
|
3490
|
+
return Stream.of(...toConcat).flatMap(item => item);
|
|
3405
3491
|
}
|
|
3406
3492
|
onElem(fn) {
|
|
3407
3493
|
for (let cnt = 0; cnt < this.value.length && (this._limits == -1 || cnt < this._limits); cnt++) {
|
|
@@ -3433,7 +3519,7 @@ class Stream {
|
|
|
3433
3519
|
let ret = [];
|
|
3434
3520
|
this.each(item => {
|
|
3435
3521
|
let strmR = fn(item);
|
|
3436
|
-
ret = Array.isArray(strmR) ? ret.concat(strmR) : ret.concat(
|
|
3522
|
+
ret = Array.isArray(strmR) ? ret.concat(strmR) : ret.concat(strmR.value);
|
|
3437
3523
|
});
|
|
3438
3524
|
return Stream.of(...ret);
|
|
3439
3525
|
}
|
|
@@ -3623,7 +3709,8 @@ class LazyStream {
|
|
|
3623
3709
|
concat(...toAppend) {
|
|
3624
3710
|
//this.dataSource = new MultiStreamDatasource<T>(this, ... toAppend);
|
|
3625
3711
|
//return this;
|
|
3626
|
-
return LazyStream.
|
|
3712
|
+
return LazyStream.ofStreamDataSource(new SourcesCollectors_1.MultiStreamDatasource(this, toAppend));
|
|
3713
|
+
//return LazyStream.of(<IStream<T>>this, ...toAppend).flatMap(item => item);
|
|
3627
3714
|
}
|
|
3628
3715
|
nextFilter(fn) {
|
|
3629
3716
|
if (this.hasNext()) {
|
|
@@ -4231,7 +4318,7 @@ const ErrorData_1 = __webpack_require__(/*! ./xhrCore/ErrorData */ "./src/main/t
|
|
|
4231
4318
|
const Lang_1 = __webpack_require__(/*! ./util/Lang */ "./src/main/typescript/impl/util/Lang.ts");
|
|
4232
4319
|
const Const_1 = __webpack_require__(/*! ./core/Const */ "./src/main/typescript/impl/core/Const.ts");
|
|
4233
4320
|
const RequestDataResolver_1 = __webpack_require__(/*! ./xhrCore/RequestDataResolver */ "./src/main/typescript/impl/xhrCore/RequestDataResolver.ts");
|
|
4234
|
-
const
|
|
4321
|
+
const FileUtils_1 = __webpack_require__(/*! ./util/FileUtils */ "./src/main/typescript/impl/util/FileUtils.ts");
|
|
4235
4322
|
/*
|
|
4236
4323
|
* allowed project stages
|
|
4237
4324
|
*/
|
|
@@ -4663,7 +4750,7 @@ var Implementation;
|
|
|
4663
4750
|
// fetch all non file input form elements
|
|
4664
4751
|
let formElements = element.deepElements.encodeFormElement();
|
|
4665
4752
|
// encode them! (file inputs are handled differently and are not part of the viewstate)
|
|
4666
|
-
return (0,
|
|
4753
|
+
return (0, FileUtils_1.encodeFormData)(formElements, (0, RequestDataResolver_1.resoveNamingContainerMapper)(dummyContext));
|
|
4667
4754
|
}
|
|
4668
4755
|
Implementation.getViewState = getViewState;
|
|
4669
4756
|
/**
|
|
@@ -6062,6 +6149,79 @@ class ExtConfig extends mona_dish_1.Config {
|
|
|
6062
6149
|
exports.ExtConfig = ExtConfig;
|
|
6063
6150
|
|
|
6064
6151
|
|
|
6152
|
+
/***/ }),
|
|
6153
|
+
|
|
6154
|
+
/***/ "./src/main/typescript/impl/util/FileUtils.ts":
|
|
6155
|
+
/*!****************************************************!*\
|
|
6156
|
+
!*** ./src/main/typescript/impl/util/FileUtils.ts ***!
|
|
6157
|
+
\****************************************************/
|
|
6158
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
6159
|
+
|
|
6160
|
+
|
|
6161
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
6162
|
+
exports.fixKeyWithoutVal = exports.resolveFiles = exports.decodeEncodedValues = exports.encodeFormData = void 0;
|
|
6163
|
+
const mona_dish_1 = __webpack_require__(/*! mona-dish */ "./node_modules/mona-dish/src/main/typescript/index_core.ts");
|
|
6164
|
+
const ExtDomQuery_1 = __webpack_require__(/*! ./ExtDomQuery */ "./src/main/typescript/impl/util/ExtDomQuery.ts");
|
|
6165
|
+
const Const_1 = __webpack_require__(/*! ../core/Const */ "./src/main/typescript/impl/core/Const.ts");
|
|
6166
|
+
/*
|
|
6167
|
+
* various routines for encoding and decoding url parameters
|
|
6168
|
+
* into configs and vice versa
|
|
6169
|
+
*/
|
|
6170
|
+
/**
|
|
6171
|
+
* encodes a given form data into a url encoded string
|
|
6172
|
+
* @param formData the form data config object
|
|
6173
|
+
* @param paramsMapper the params mapper
|
|
6174
|
+
* @param defaultStr a default string if nothing comes out of it
|
|
6175
|
+
*/
|
|
6176
|
+
function encodeFormData(formData, paramsMapper = (inStr, inVal) => [inStr, inVal], defaultStr = Const_1.EMPTY_STR) {
|
|
6177
|
+
if (formData.isAbsent()) {
|
|
6178
|
+
return defaultStr;
|
|
6179
|
+
}
|
|
6180
|
+
let assocValues = formData.value;
|
|
6181
|
+
let entries = mona_dish_1.LazyStream.of(...Object.keys(assocValues))
|
|
6182
|
+
.filter(key => assocValues.hasOwnProperty(key))
|
|
6183
|
+
.flatMap(key => mona_dish_1.Stream.of(...assocValues[key]).map(val => paramsMapper(key, val)))
|
|
6184
|
+
//we cannot encode file elements that is handled by multipart requests anyway
|
|
6185
|
+
.filter(([, value]) => !(value instanceof ExtDomQuery_1.ExtDomQuery.global().File))
|
|
6186
|
+
.map(keyVal => `${encodeURIComponent(keyVal[0])}=${encodeURIComponent(keyVal[1])}`)
|
|
6187
|
+
.collect(new mona_dish_1.ArrayCollector());
|
|
6188
|
+
return entries.join("&");
|
|
6189
|
+
}
|
|
6190
|
+
exports.encodeFormData = encodeFormData;
|
|
6191
|
+
/**
|
|
6192
|
+
* splits and decodes encoded values into strings containing of key=value
|
|
6193
|
+
* @param encoded encoded string
|
|
6194
|
+
*/
|
|
6195
|
+
function decodeEncodedValues(encoded) {
|
|
6196
|
+
return mona_dish_1.Stream.of(...decodeURIComponent(encoded).split(/&/gi))
|
|
6197
|
+
.filter(item => !!(item || '')
|
|
6198
|
+
.replace(/\s+/g, ''))
|
|
6199
|
+
.map(line => {
|
|
6200
|
+
let index = line.indexOf("=");
|
|
6201
|
+
if (index == -1) {
|
|
6202
|
+
return [line];
|
|
6203
|
+
}
|
|
6204
|
+
return [line.substring(0, index), line.substring(index + 1)];
|
|
6205
|
+
});
|
|
6206
|
+
}
|
|
6207
|
+
exports.decodeEncodedValues = decodeEncodedValues;
|
|
6208
|
+
function resolveFiles(dataSource) {
|
|
6209
|
+
return dataSource
|
|
6210
|
+
.querySelectorAllDeep("input[type='file']")
|
|
6211
|
+
.stream
|
|
6212
|
+
.map(fileInput => [fileInput.name.value || fileInput.id.value, fileInput.filesFromElem(0)])
|
|
6213
|
+
.flatMap(([key, files]) => {
|
|
6214
|
+
return mona_dish_1.Stream.of(...files).map(file => [key, file]);
|
|
6215
|
+
});
|
|
6216
|
+
}
|
|
6217
|
+
exports.resolveFiles = resolveFiles;
|
|
6218
|
+
function fixKeyWithoutVal(keyVal) {
|
|
6219
|
+
var _a, _b;
|
|
6220
|
+
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;
|
|
6221
|
+
}
|
|
6222
|
+
exports.fixKeyWithoutVal = fixKeyWithoutVal;
|
|
6223
|
+
|
|
6224
|
+
|
|
6065
6225
|
/***/ }),
|
|
6066
6226
|
|
|
6067
6227
|
/***/ "./src/main/typescript/impl/util/HiddenInputBuilder.ts":
|
|
@@ -6365,84 +6525,6 @@ var ExtLang;
|
|
|
6365
6525
|
})(ExtLang = exports.ExtLang || (exports.ExtLang = {}));
|
|
6366
6526
|
|
|
6367
6527
|
|
|
6368
|
-
/***/ }),
|
|
6369
|
-
|
|
6370
|
-
/***/ "./src/main/typescript/impl/util/URLCodec.ts":
|
|
6371
|
-
/*!***************************************************!*\
|
|
6372
|
-
!*** ./src/main/typescript/impl/util/URLCodec.ts ***!
|
|
6373
|
-
\***************************************************/
|
|
6374
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
6375
|
-
|
|
6376
|
-
|
|
6377
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
6378
|
-
exports.decodeEncodedValues = exports.encodeFormData = exports.mergeKeyValueEntries = void 0;
|
|
6379
|
-
const mona_dish_1 = __webpack_require__(/*! mona-dish */ "./node_modules/mona-dish/src/main/typescript/index_core.ts");
|
|
6380
|
-
const ExtDomQuery_1 = __webpack_require__(/*! ./ExtDomQuery */ "./src/main/typescript/impl/util/ExtDomQuery.ts");
|
|
6381
|
-
const Const_1 = __webpack_require__(/*! ../core/Const */ "./src/main/typescript/impl/core/Const.ts");
|
|
6382
|
-
/*
|
|
6383
|
-
* various routines for encoding and decoding url parameters
|
|
6384
|
-
* into configs and vice versa
|
|
6385
|
-
*/
|
|
6386
|
-
/**
|
|
6387
|
-
* merges a list of key value entries into a target config
|
|
6388
|
-
* @param target the target receiving the key value entries
|
|
6389
|
-
* @param keyValueEntries a list of key value entries divided by =
|
|
6390
|
-
* @param paramsMapper a key value remapper
|
|
6391
|
-
*/
|
|
6392
|
-
function mergeKeyValueEntries(target, keyValueEntries, paramsMapper = (key, value) => [key, value]) {
|
|
6393
|
-
function splitToKeyVal(line) {
|
|
6394
|
-
return line.split(/=(.*)/gi);
|
|
6395
|
-
}
|
|
6396
|
-
function fixKeyWithoutVal(keyVal) {
|
|
6397
|
-
var _a, _b;
|
|
6398
|
-
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;
|
|
6399
|
-
}
|
|
6400
|
-
let toMerge = new ExtDomQuery_1.ExtConfig({});
|
|
6401
|
-
mona_dish_1.Stream.of(...keyValueEntries)
|
|
6402
|
-
.map(line => splitToKeyVal(line))
|
|
6403
|
-
//special case of having keys without values
|
|
6404
|
-
.map(keyVal => fixKeyWithoutVal(keyVal))
|
|
6405
|
-
.map(keyVal => paramsMapper(keyVal[0], keyVal[1]))
|
|
6406
|
-
.each(keyVal => {
|
|
6407
|
-
var _a, _b;
|
|
6408
|
-
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 : "";
|
|
6409
|
-
});
|
|
6410
|
-
target.shallowMerge(toMerge);
|
|
6411
|
-
}
|
|
6412
|
-
exports.mergeKeyValueEntries = mergeKeyValueEntries;
|
|
6413
|
-
/**
|
|
6414
|
-
* encodes a given form data into a url encoded string
|
|
6415
|
-
* @param formData the form data config object
|
|
6416
|
-
* @param paramsMapper the params mapper
|
|
6417
|
-
* @param defaultStr a default string if nothing comes out of it
|
|
6418
|
-
*/
|
|
6419
|
-
function encodeFormData(formData, paramsMapper = (inStr, inVal) => [inStr, inVal], defaultStr = Const_1.EMPTY_STR) {
|
|
6420
|
-
if (formData.isAbsent()) {
|
|
6421
|
-
return defaultStr;
|
|
6422
|
-
}
|
|
6423
|
-
let assocValues = formData.value;
|
|
6424
|
-
let entries = mona_dish_1.LazyStream.of(...Object.keys(assocValues))
|
|
6425
|
-
.filter(key => assocValues.hasOwnProperty(key))
|
|
6426
|
-
.flatMap(key => mona_dish_1.Stream.of(...assocValues[key]).map(val => paramsMapper(key, val)))
|
|
6427
|
-
//we cannot encode file elements that is handled by multipart requests anyway
|
|
6428
|
-
.filter(([, value]) => !(value instanceof ExtDomQuery_1.ExtDomQuery.global().File))
|
|
6429
|
-
.map(keyVal => `${encodeURIComponent(keyVal[0])}=${encodeURIComponent(keyVal[1])}`)
|
|
6430
|
-
.collect(new mona_dish_1.ArrayCollector());
|
|
6431
|
-
return entries.join("&");
|
|
6432
|
-
}
|
|
6433
|
-
exports.encodeFormData = encodeFormData;
|
|
6434
|
-
/**
|
|
6435
|
-
* splits and decodes encoded values into strings containing of key=value
|
|
6436
|
-
* @param encoded
|
|
6437
|
-
*/
|
|
6438
|
-
function decodeEncodedValues(encoded) {
|
|
6439
|
-
return decodeURIComponent(encoded).split(/&/gi)
|
|
6440
|
-
.filter(item => !!(item || '')
|
|
6441
|
-
.replace(/\s+/g, ''));
|
|
6442
|
-
}
|
|
6443
|
-
exports.decodeEncodedValues = decodeEncodedValues;
|
|
6444
|
-
|
|
6445
|
-
|
|
6446
6528
|
/***/ }),
|
|
6447
6529
|
|
|
6448
6530
|
/***/ "./src/main/typescript/impl/xhrCore/ErrorData.ts":
|
|
@@ -7596,7 +7678,7 @@ exports.XhrFormData = void 0;
|
|
|
7596
7678
|
const mona_dish_1 = __webpack_require__(/*! mona-dish */ "./node_modules/mona-dish/src/main/typescript/index_core.ts");
|
|
7597
7679
|
const Const_1 = __webpack_require__(/*! ../core/Const */ "./src/main/typescript/impl/core/Const.ts");
|
|
7598
7680
|
const ExtDomQuery_1 = __webpack_require__(/*! ../util/ExtDomQuery */ "./src/main/typescript/impl/util/ExtDomQuery.ts");
|
|
7599
|
-
const
|
|
7681
|
+
const FileUtils_1 = __webpack_require__(/*! ../util/FileUtils */ "./src/main/typescript/impl/util/FileUtils.ts");
|
|
7600
7682
|
const defaultParamsMapper = (key, item) => [key, item];
|
|
7601
7683
|
/**
|
|
7602
7684
|
* A unified form data class
|
|
@@ -7608,7 +7690,11 @@ const defaultParamsMapper = (key, item) => [key, item];
|
|
|
7608
7690
|
*
|
|
7609
7691
|
* probably only one needed and one overlay!
|
|
7610
7692
|
* the entire file input storing probably is redundant now
|
|
7611
|
-
* that dom query has been fixed
|
|
7693
|
+
* that dom query has been fixed
|
|
7694
|
+
*
|
|
7695
|
+
* internal storage format
|
|
7696
|
+
* every value is stored as an array
|
|
7697
|
+
* even scalar ones!
|
|
7612
7698
|
*/
|
|
7613
7699
|
class XhrFormData extends mona_dish_1.Config {
|
|
7614
7700
|
/**
|
|
@@ -7639,39 +7725,20 @@ class XhrFormData extends mona_dish_1.Config {
|
|
|
7639
7725
|
* Additionally the hidden element jakarta.faces.ViewState
|
|
7640
7726
|
* Enhancement partial page submit
|
|
7641
7727
|
*/
|
|
7642
|
-
this.
|
|
7728
|
+
this.resolveRequestType(this.dataSource, executes);
|
|
7729
|
+
this.encodeSubmittableFields(this.dataSource, this.partialIds);
|
|
7643
7730
|
this.applyViewState(this.dataSource);
|
|
7644
|
-
this.resolveRequestType(executes);
|
|
7645
7731
|
}
|
|
7646
7732
|
/**
|
|
7647
7733
|
* generic post init code, for now, this performs some post assign data post-processing
|
|
7648
7734
|
* @param executes the executable dom nodes which need to be processed into the form data, which we can send
|
|
7649
7735
|
* in our ajax request
|
|
7650
7736
|
*/
|
|
7651
|
-
resolveRequestType(executes) {
|
|
7652
|
-
if (!executes) {
|
|
7737
|
+
resolveRequestType(rootElement, executes) {
|
|
7738
|
+
if (!executes || executes.indexOf(Const_1.IDENT_NONE) != -1) {
|
|
7653
7739
|
return;
|
|
7654
7740
|
}
|
|
7655
|
-
|
|
7656
|
-
if (id == Const_1.IDENT_ALL) {
|
|
7657
|
-
let namingContainer = this.remapKeyForNamingContainer("");
|
|
7658
|
-
if (namingContainer.length) {
|
|
7659
|
-
namingContainer = namingContainer.substring(0, namingContainer.length - 1);
|
|
7660
|
-
return mona_dish_1.DQ.byId(namingContainer).isMultipartCandidate();
|
|
7661
|
-
}
|
|
7662
|
-
return mona_dish_1.DQ.byId(document.body).isMultipartCandidate();
|
|
7663
|
-
}
|
|
7664
|
-
else if (id == Const_1.IDENT_FORM) {
|
|
7665
|
-
return this.dataSource.isMultipartCandidate(true);
|
|
7666
|
-
}
|
|
7667
|
-
else {
|
|
7668
|
-
const element = mona_dish_1.DQ.byId(id, true);
|
|
7669
|
-
return element.isMultipartCandidate();
|
|
7670
|
-
}
|
|
7671
|
-
};
|
|
7672
|
-
this.isMultipartRequest = mona_dish_1.LazyStream.of(...executes)
|
|
7673
|
-
.filter(isMultiPartContainer)
|
|
7674
|
-
.first().isPresent();
|
|
7741
|
+
this.isMultipartRequest = rootElement.isMultipartCandidate(true);
|
|
7675
7742
|
}
|
|
7676
7743
|
/**
|
|
7677
7744
|
* special case view state handling
|
|
@@ -7691,7 +7758,31 @@ class XhrFormData extends mona_dish_1.Config {
|
|
|
7691
7758
|
*/
|
|
7692
7759
|
toFormData() {
|
|
7693
7760
|
let ret = new FormData();
|
|
7694
|
-
|
|
7761
|
+
/*
|
|
7762
|
+
* expands key: [item1, item2]
|
|
7763
|
+
* to: [{key: item1}, {key, item2}]
|
|
7764
|
+
*/
|
|
7765
|
+
let expandArrayedData = ([key, item]) => mona_dish_1.Stream.of(...item).map(item => {
|
|
7766
|
+
return { key, item };
|
|
7767
|
+
});
|
|
7768
|
+
/*
|
|
7769
|
+
* remaps the incoming {key, value} tuples
|
|
7770
|
+
* to naming container prefixed keys and values
|
|
7771
|
+
*/
|
|
7772
|
+
let remapForNamingContainer = ({ key, item }) => {
|
|
7773
|
+
key = this.remapKeyForNamingContainer(key);
|
|
7774
|
+
return { key, item };
|
|
7775
|
+
};
|
|
7776
|
+
/*
|
|
7777
|
+
* collects everything into a FormData object
|
|
7778
|
+
*/
|
|
7779
|
+
let collectFormData = ({ key, item }) => {
|
|
7780
|
+
ret.append(key, item);
|
|
7781
|
+
};
|
|
7782
|
+
mona_dish_1.Stream.ofAssoc(this.value)
|
|
7783
|
+
.flatMap(expandArrayedData)
|
|
7784
|
+
.map(remapForNamingContainer)
|
|
7785
|
+
.each(collectFormData);
|
|
7695
7786
|
return ret;
|
|
7696
7787
|
}
|
|
7697
7788
|
/**
|
|
@@ -7700,7 +7791,7 @@ class XhrFormData extends mona_dish_1.Config {
|
|
|
7700
7791
|
* @param defaultStr optional default value if nothing is there to encode
|
|
7701
7792
|
*/
|
|
7702
7793
|
toString(defaultStr = Const_1.EMPTY_STR) {
|
|
7703
|
-
return (0,
|
|
7794
|
+
return (0, FileUtils_1.encodeFormData)(this, this.paramsMapper, defaultStr);
|
|
7704
7795
|
}
|
|
7705
7796
|
/**
|
|
7706
7797
|
* determines fields to submit
|
|
@@ -7708,30 +7799,27 @@ class XhrFormData extends mona_dish_1.Config {
|
|
|
7708
7799
|
* @param {Node} parentItem - form element item is nested in
|
|
7709
7800
|
* @param {Array} partialIds - ids fo PPS
|
|
7710
7801
|
*/
|
|
7711
|
-
encodeSubmittableFields(
|
|
7802
|
+
encodeSubmittableFields(parentItem, partialIds) {
|
|
7712
7803
|
//encoded String
|
|
7713
7804
|
let viewStateStr = (0, Const_1.$faces)().getViewState(parentItem.getAsElem(0).value);
|
|
7714
7805
|
// we now need to decode it and then merge it into the target buf
|
|
7715
7806
|
// which hosts already our overrides (aka do not override what is already there(
|
|
7716
7807
|
// after that we need to deal with form elements on a separate level
|
|
7717
|
-
|
|
7718
|
-
|
|
7719
|
-
|
|
7808
|
+
const keyValueEntries = (0, FileUtils_1.decodeEncodedValues)(viewStateStr);
|
|
7809
|
+
const fileEntries = (0, FileUtils_1.resolveFiles)(parentItem);
|
|
7810
|
+
const concatted = keyValueEntries.concat(fileEntries);
|
|
7811
|
+
const formData = new ExtDomQuery_1.ExtConfig({});
|
|
7812
|
+
concatted
|
|
7813
|
+
.map(FileUtils_1.fixKeyWithoutVal)
|
|
7814
|
+
.map(keyVal => this.paramsMapper(keyVal[0], keyVal[1]))
|
|
7815
|
+
.each((entry) => {
|
|
7816
|
+
formData.append(entry[0]).value = entry[1];
|
|
7817
|
+
});
|
|
7818
|
+
this.shallowMerge(formData, true, true);
|
|
7720
7819
|
}
|
|
7721
7820
|
remapKeyForNamingContainer(key) {
|
|
7722
7821
|
return this.paramsMapper(key, "")[0];
|
|
7723
7822
|
}
|
|
7724
|
-
appendInputs(ret) {
|
|
7725
|
-
mona_dish_1.Stream.ofAssoc(this.value)
|
|
7726
|
-
.flatMap(([key, item]) => mona_dish_1.Stream.of(...item).map(item => {
|
|
7727
|
-
return { key, item };
|
|
7728
|
-
}))
|
|
7729
|
-
.map(({ key, item }) => {
|
|
7730
|
-
key = this.remapKeyForNamingContainer(key);
|
|
7731
|
-
return { key, item };
|
|
7732
|
-
})
|
|
7733
|
-
.each(({ key, item }) => ret.append(key, item));
|
|
7734
|
-
}
|
|
7735
7823
|
}
|
|
7736
7824
|
exports.XhrFormData = XhrFormData;
|
|
7737
7825
|
|
|
@@ -7779,6 +7867,7 @@ var failSaveExecute = Lang_1.ExtLang.failSaveExecute;
|
|
|
7779
7867
|
* a single ajax request into our queue
|
|
7780
7868
|
* and let the queue do the processing.
|
|
7781
7869
|
*
|
|
7870
|
+
*
|
|
7782
7871
|
*/
|
|
7783
7872
|
class XhrRequest {
|
|
7784
7873
|
/**
|
|
@@ -7826,7 +7915,7 @@ class XhrRequest {
|
|
|
7826
7915
|
let ignoreErr = failSaveExecute;
|
|
7827
7916
|
let xhrObject = this.xhrObject;
|
|
7828
7917
|
let executesArr = () => {
|
|
7829
|
-
return this.requestContext.getIf(Const_1.CTX_PARAM_REQ_PASS_THR, Const_1.P_EXECUTE).get(
|
|
7918
|
+
return this.requestContext.getIf(Const_1.CTX_PARAM_REQ_PASS_THR, Const_1.P_EXECUTE).get(Const_1.IDENT_NONE).value.split(/\s+/gi);
|
|
7830
7919
|
};
|
|
7831
7920
|
try {
|
|
7832
7921
|
// encoded we need to decode
|
|
@@ -7837,7 +7926,7 @@ class XhrRequest {
|
|
|
7837
7926
|
// whatever the formData object delivers
|
|
7838
7927
|
// the partialIdsArray arr is almost deprecated legacy code where we allowed to send a separate list of partial
|
|
7839
7928
|
// ids for reduced load and server processing, this will be removed soon, we can handle the same via execute
|
|
7840
|
-
// anyway TODO
|
|
7929
|
+
// anyway TODO reimplement the partial ids array, we still do not have it in jsf the way we need it
|
|
7841
7930
|
let formData = new XhrFormData_1.XhrFormData(this.sourceForm, (0, RequestDataResolver_1.resoveNamingContainerMapper)(this.internalContext), executesArr(), this.partialIdsArray);
|
|
7842
7931
|
this.contentType = formData.isMultipartRequest ? "undefined" : this.contentType;
|
|
7843
7932
|
// next step the pass through parameters are merged in for post params
|
|
Binary file
|
|
Binary file
|