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.
Files changed (40) hide show
  1. package/dist/window/faces-development.js +223 -134
  2. package/dist/window/faces-development.js.br +0 -0
  3. package/dist/window/faces-development.js.gz +0 -0
  4. package/dist/window/faces-development.js.map +1 -1
  5. package/dist/window/faces.js +1 -1
  6. package/dist/window/faces.js.br +0 -0
  7. package/dist/window/faces.js.gz +0 -0
  8. package/dist/window/faces.js.map +1 -1
  9. package/dist/window/jsf-development.js +223 -134
  10. package/dist/window/jsf-development.js.br +0 -0
  11. package/dist/window/jsf-development.js.gz +0 -0
  12. package/dist/window/jsf-development.js.map +1 -1
  13. package/dist/window/jsf.js +1 -1
  14. package/dist/window/jsf.js.br +0 -0
  15. package/dist/window/jsf.js.gz +0 -0
  16. package/dist/window/jsf.js.map +1 -1
  17. package/package.json +4 -4
  18. package/src/main/typescript/impl/AjaxImpl.ts +1 -1
  19. package/src/main/typescript/impl/util/{URLCodec.ts → FileUtils.ts} +27 -32
  20. package/src/main/typescript/impl/xhrCore/XhrFormData.ts +64 -47
  21. package/src/main/typescript/impl/xhrCore/XhrRequest.ts +4 -3
  22. package/src/main/typescript/test/frameworkBase/_ext/shared/StandardInits.ts +1 -1
  23. package/src/main/typescript/test/xhrCore/FileUploadTest.spec.ts +3 -2
  24. package/src/main/typescript/test/xhrCore/RequestParamsTest.spec.ts +34 -6
  25. package/target/impl/AjaxImpl.js +2 -2
  26. package/target/impl/AjaxImpl.js.map +1 -1
  27. package/target/impl/util/FileUtils.js +64 -0
  28. package/target/impl/util/FileUtils.js.map +1 -0
  29. package/target/impl/util/URLCodec.js +9 -1
  30. package/target/impl/util/URLCodec.js.map +1 -1
  31. package/target/impl/xhrCore/XhrFormData.js +50 -44
  32. package/target/impl/xhrCore/XhrFormData.js.map +1 -1
  33. package/target/impl/xhrCore/XhrRequest.js +3 -2
  34. package/target/impl/xhrCore/XhrRequest.js.map +1 -1
  35. package/target/test/frameworkBase/_ext/shared/StandardInits.js +1 -1
  36. package/target/test/xhrCore/FileUploadTest.spec.js +1 -1
  37. package/target/test/xhrCore/FileUploadTest.spec.js.map +1 -1
  38. package/target/test/xhrCore/RequestParamsTest.spec.js +33 -3
  39. package/target/test/xhrCore/RequestParamsTest.spec.js.map +1 -1
  40. 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
- //let dataSource = new MultiStreamDatasource<T>(this, ...toAppend);
3403
- //return Stream.ofDataSource<T>(dataSource);
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(...strmR.value);
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.of(this, ...toAppend).flatMap(item => item);
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 URLCodec_1 = __webpack_require__(/*! ./util/URLCodec */ "./src/main/typescript/impl/util/URLCodec.ts");
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, URLCodec_1.encodeFormData)(formElements, (0, RequestDataResolver_1.resoveNamingContainerMapper)(dummyContext));
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 URLCodec_1 = __webpack_require__(/*! ../util/URLCodec */ "./src/main/typescript/impl/util/URLCodec.ts");
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 //TODO check this
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.encodeSubmittableFields(this, this.dataSource, this.partialIds);
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
- let isMultiPartContainer = (id) => {
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
- this.appendInputs(ret);
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, URLCodec_1.encodeFormData)(this, this.paramsMapper, defaultStr);
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(targetBuf, parentItem, partialIds) {
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
- let target = new ExtDomQuery_1.ExtConfig({});
7718
- (0, URLCodec_1.mergeKeyValueEntries)(target, (0, URLCodec_1.decodeEncodedValues)(viewStateStr), this.paramsMapper);
7719
- this.shallowMerge(target);
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("none").value.split(/\s+/gi);
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 remove the partial ids array
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