@ethlete/query 5.41.1 → 5.41.3
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/CHANGELOG.md +12 -0
- package/fesm2022/ethlete-query.mjs +31 -5
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @ethlete/query
|
|
2
2
|
|
|
3
|
+
## 5.41.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`b55b919`](https://github.com/ethlete-io/ethdk/commit/b55b919b019ba53bf801ba3d63721452f83c444d) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix handling of number query fields that have a default value other than null
|
|
8
|
+
|
|
9
|
+
## 5.41.2
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`22c97df`](https://github.com/ethlete-io/ethdk/commit/22c97df87907136adf06686347d7161085e3b33a) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix handling of objects as query form values
|
|
14
|
+
|
|
3
15
|
## 5.41.1
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -5926,6 +5926,8 @@ const transformToSortQueryParam = (value) => {
|
|
|
5926
5926
|
};
|
|
5927
5927
|
|
|
5928
5928
|
const ET_ARR_PREFIX = 'ET_ARR__';
|
|
5929
|
+
const ET_OBJ_PREFIX = 'ET_OBJ__';
|
|
5930
|
+
const ET_PROP_NULL_VALUE = 'ET_NULL__';
|
|
5929
5931
|
class QueryField {
|
|
5930
5932
|
get control() {
|
|
5931
5933
|
return this.data.control;
|
|
@@ -6252,14 +6254,18 @@ class QueryForm {
|
|
|
6252
6254
|
deserializedValue = field.data.queryParamToValueTransformFn(value);
|
|
6253
6255
|
}
|
|
6254
6256
|
else if (!field.data.skipAutoTransform) {
|
|
6255
|
-
const defaultIsNum = this._getDefaultValue(key) === 'number';
|
|
6257
|
+
const defaultIsNum = typeof this._getDefaultValue(key) === 'number';
|
|
6256
6258
|
const valueIsNum = !isNaN(Number(value));
|
|
6257
6259
|
const valueContainsWhitespace = typeof value === 'string' && value.trim() !== value;
|
|
6258
6260
|
const valueHasLeadingZero = typeof value === 'string' && value.startsWith('0');
|
|
6259
6261
|
const valueEndsWithDot = typeof value === 'string' && value.endsWith('.');
|
|
6260
6262
|
const defaultIsBool = this._getDefaultValue(key) === 'boolean';
|
|
6261
6263
|
const valueIsBool = value === 'true' || value === 'false';
|
|
6262
|
-
if (defaultIsNum
|
|
6264
|
+
if (defaultIsNum && value === ET_PROP_NULL_VALUE) {
|
|
6265
|
+
deserializedValue = null;
|
|
6266
|
+
}
|
|
6267
|
+
else if (defaultIsNum ||
|
|
6268
|
+
(valueIsNum && !valueContainsWhitespace && !valueHasLeadingZero && !valueEndsWithDot)) {
|
|
6263
6269
|
deserializedValue = transformToNumber(value);
|
|
6264
6270
|
}
|
|
6265
6271
|
else if (defaultIsBool || valueIsBool) {
|
|
@@ -6320,9 +6326,15 @@ class QueryForm {
|
|
|
6320
6326
|
if (typeof val === 'string' && val.startsWith(ET_ARR_PREFIX)) {
|
|
6321
6327
|
return JSON.parse(val.slice(ET_ARR_PREFIX.length));
|
|
6322
6328
|
}
|
|
6329
|
+
else if (typeof val === 'string' && val.startsWith(ET_OBJ_PREFIX)) {
|
|
6330
|
+
return JSON.parse(val.slice(ET_OBJ_PREFIX.length));
|
|
6331
|
+
}
|
|
6323
6332
|
else if (typeof val === 'function') {
|
|
6324
6333
|
return val();
|
|
6325
6334
|
}
|
|
6335
|
+
else if (val === ET_PROP_NULL_VALUE) {
|
|
6336
|
+
return null;
|
|
6337
|
+
}
|
|
6326
6338
|
return val ?? null;
|
|
6327
6339
|
}
|
|
6328
6340
|
_transformKeyToQueryParam(key) {
|
|
@@ -6334,8 +6346,14 @@ class QueryForm {
|
|
|
6334
6346
|
return `${prefix}-${key}`;
|
|
6335
6347
|
}
|
|
6336
6348
|
_isDefaultValue(key, value) {
|
|
6337
|
-
const normalizedValue = Array.isArray(value)
|
|
6338
|
-
|
|
6349
|
+
const normalizedValue = Array.isArray(value)
|
|
6350
|
+
? `${ET_ARR_PREFIX}${JSON.stringify(value)}`
|
|
6351
|
+
: typeof value === 'object' && value !== null
|
|
6352
|
+
? `${ET_OBJ_PREFIX}${JSON.stringify(value)}`
|
|
6353
|
+
: value === null
|
|
6354
|
+
? ET_PROP_NULL_VALUE
|
|
6355
|
+
: value;
|
|
6356
|
+
return this._defaultValues[key] === normalizedValue;
|
|
6339
6357
|
}
|
|
6340
6358
|
_setupFormGroup() {
|
|
6341
6359
|
const group = new FormGroup({});
|
|
@@ -6355,6 +6373,12 @@ class QueryForm {
|
|
|
6355
6373
|
if (Array.isArray(value)) {
|
|
6356
6374
|
defaultValues[key] = `${ET_ARR_PREFIX}${JSON.stringify(value)}`;
|
|
6357
6375
|
}
|
|
6376
|
+
else if (typeof value === 'object' && value !== null) {
|
|
6377
|
+
defaultValues[key] = `${ET_OBJ_PREFIX}${JSON.stringify(value)}`;
|
|
6378
|
+
}
|
|
6379
|
+
else if (value === null) {
|
|
6380
|
+
defaultValues[key] = ET_PROP_NULL_VALUE;
|
|
6381
|
+
}
|
|
6358
6382
|
else {
|
|
6359
6383
|
defaultValues[key] = value;
|
|
6360
6384
|
}
|
|
@@ -6378,7 +6402,9 @@ class QueryForm {
|
|
|
6378
6402
|
else {
|
|
6379
6403
|
queryParams[queryParamKey] = field.data.valueToQueryParamTransformFn
|
|
6380
6404
|
? field.data.valueToQueryParamTransformFn?.(value)
|
|
6381
|
-
: value
|
|
6405
|
+
: value === null
|
|
6406
|
+
? ET_PROP_NULL_VALUE
|
|
6407
|
+
: value;
|
|
6382
6408
|
}
|
|
6383
6409
|
}
|
|
6384
6410
|
this._zone.run(() => {
|