@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 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 || (valueIsNum && !valueContainsWhitespace && !valueHasLeadingZero && !valueEndsWithDot)) {
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) ? `${ET_ARR_PREFIX}${JSON.stringify(value)}` : value;
6338
- return this._getDefaultValue(key) === normalizedValue;
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(() => {