@routier/core 0.0.1-alpha.3 → 0.0.1

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/index.js CHANGED
@@ -21,7 +21,13 @@ function assertDate(data) {
21
21
  }
22
22
  function assertIsNotNull(data, message) {
23
23
  if (data == null) {
24
- throw new TypeError(message ?? 'Assertion failed, data is null');
24
+ if (message == null) {
25
+ throw new TypeError('Assertion failed, data is null');
26
+ }
27
+ if (typeof message === "string") {
28
+ throw new TypeError(message);
29
+ }
30
+ throw new TypeError(message());
25
31
  }
26
32
  }
27
33
  function assertIsArray(data, message) {
@@ -541,15 +547,19 @@ __webpack_require__.r(__webpack_exports__);
541
547
  __webpack_require__.d(__webpack_exports__, {
542
548
  CloneHandlerBuilder: () => (CloneHandlerBuilder)
543
549
  });
550
+ /* ESM import */var _clone_CloneArrayHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./clone/CloneArrayHandler */ "./src/codegen/handlers/clone/CloneArrayHandler.ts");
544
551
  /* ESM import */var _clone_CloneObjectHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./clone/CloneObjectHandler */ "./src/codegen/handlers/clone/CloneObjectHandler.ts");
545
552
  /* ESM import */var _clone_CloneValueHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./clone/CloneValueHandler */ "./src/codegen/handlers/clone/CloneValueHandler.ts");
546
553
 
547
554
 
555
+
548
556
  /// Purpose:
549
557
  class CloneHandlerBuilder {
550
558
  build() {
551
559
  const handler = new _clone_CloneObjectHandler__WEBPACK_IMPORTED_MODULE_0__.CloneObjectHandler();
552
- handler.setNext(new _clone_CloneValueHandler__WEBPACK_IMPORTED_MODULE_1__.CloneValueHandler());
560
+ handler
561
+ .setNext(new _clone_CloneValueHandler__WEBPACK_IMPORTED_MODULE_1__.CloneValueHandler())
562
+ .setNext(new _clone_CloneArrayHandler__WEBPACK_IMPORTED_MODULE_2__.CloneArrayHandler());
553
563
  return handler;
554
564
  }
555
565
  }
@@ -590,10 +600,12 @@ __webpack_require__.d(__webpack_exports__, {
590
600
  DeserializeHandlerBuilder: () => (DeserializeHandlerBuilder)
591
601
  });
592
602
  /* ESM import */var _deserialize_DeserializeObjectHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./deserialize/DeserializeObjectHandler */ "./src/codegen/handlers/deserialize/DeserializeObjectHandler.ts");
593
- /* ESM import */var _deserialize_DeserializeValueHandler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./deserialize/DeserializeValueHandler */ "./src/codegen/handlers/deserialize/DeserializeValueHandler.ts");
594
- /* ESM import */var _deserialize_DeserializeDateHandler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./deserialize/DeserializeDateHandler */ "./src/codegen/handlers/deserialize/DeserializeDateHandler.ts");
595
- /* ESM import */var _deserialize_DeserializeComputedValueHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./deserialize/DeserializeComputedValueHandler */ "./src/codegen/handlers/deserialize/DeserializeComputedValueHandler.ts");
596
- /* ESM import */var _deserialize_DeserializeFunctionHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./deserialize/DeserializeFunctionHandler */ "./src/codegen/handlers/deserialize/DeserializeFunctionHandler.ts");
603
+ /* ESM import */var _deserialize_DeserializeValueHandler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./deserialize/DeserializeValueHandler */ "./src/codegen/handlers/deserialize/DeserializeValueHandler.ts");
604
+ /* ESM import */var _deserialize_DeserializeDateHandler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./deserialize/DeserializeDateHandler */ "./src/codegen/handlers/deserialize/DeserializeDateHandler.ts");
605
+ /* ESM import */var _deserialize_DeserializeComputedValueHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./deserialize/DeserializeComputedValueHandler */ "./src/codegen/handlers/deserialize/DeserializeComputedValueHandler.ts");
606
+ /* ESM import */var _deserialize_DeserializeFunctionHandler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./deserialize/DeserializeFunctionHandler */ "./src/codegen/handlers/deserialize/DeserializeFunctionHandler.ts");
607
+ /* ESM import */var _deserialize_DeserializeDeserializerHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./deserialize/DeserializeDeserializerHandler */ "./src/codegen/handlers/deserialize/DeserializeDeserializerHandler.ts");
608
+
597
609
 
598
610
 
599
611
 
@@ -604,10 +616,11 @@ class DeserializeHandlerBuilder {
604
616
  build() {
605
617
  const handler = new _deserialize_DeserializeObjectHandler__WEBPACK_IMPORTED_MODULE_0__.DeserializeObjectHandler();
606
618
  handler
607
- .setNext(new _deserialize_DeserializeComputedValueHandler__WEBPACK_IMPORTED_MODULE_1__.DeserializeComputedValueHandler())
608
- .setNext(new _deserialize_DeserializeFunctionHandler__WEBPACK_IMPORTED_MODULE_2__.DeserializeFunctionHandler())
609
- .setNext(new _deserialize_DeserializeValueHandler__WEBPACK_IMPORTED_MODULE_3__.DeserializeValueHandler())
610
- .setNext(new _deserialize_DeserializeDateHandler__WEBPACK_IMPORTED_MODULE_4__.DeserializeDateHandler());
619
+ .setNext(new _deserialize_DeserializeDeserializerHandler__WEBPACK_IMPORTED_MODULE_1__.DeserializeDeserializerHandler())
620
+ .setNext(new _deserialize_DeserializeComputedValueHandler__WEBPACK_IMPORTED_MODULE_2__.DeserializeComputedValueHandler())
621
+ .setNext(new _deserialize_DeserializeFunctionHandler__WEBPACK_IMPORTED_MODULE_3__.DeserializeFunctionHandler())
622
+ .setNext(new _deserialize_DeserializeValueHandler__WEBPACK_IMPORTED_MODULE_4__.DeserializeValueHandler())
623
+ .setNext(new _deserialize_DeserializeDateHandler__WEBPACK_IMPORTED_MODULE_5__.DeserializeDateHandler());
611
624
  return handler;
612
625
  }
613
626
  }
@@ -868,18 +881,22 @@ __webpack_require__.r(__webpack_exports__);
868
881
  __webpack_require__.d(__webpack_exports__, {
869
882
  SerializeHandlerBuilder: () => (SerializeHandlerBuilder)
870
883
  });
871
- /* ESM import */var _serialize_SerializeDateHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./serialize/SerializeDateHandler */ "./src/codegen/handlers/serialize/SerializeDateHandler.ts");
872
- /* ESM import */var _serialize_SerializeObjectHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./serialize/SerializeObjectHandler */ "./src/codegen/handlers/serialize/SerializeObjectHandler.ts");
873
- /* ESM import */var _serialize_SerializeValueHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./serialize/SerializeValueHandler */ "./src/codegen/handlers/serialize/SerializeValueHandler.ts");
884
+ /* ESM import */var _serialize_SerializeDateHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./serialize/SerializeDateHandler */ "./src/codegen/handlers/serialize/SerializeDateHandler.ts");
885
+ /* ESM import */var _serialize_SerializeObjectHandler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./serialize/SerializeObjectHandler */ "./src/codegen/handlers/serialize/SerializeObjectHandler.ts");
886
+ /* ESM import */var _serialize_SerializeValueHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./serialize/SerializeValueHandler */ "./src/codegen/handlers/serialize/SerializeValueHandler.ts");
887
+ /* ESM import */var _serialize_SerializeSerializerHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./serialize/SerializeSerializerHandler */ "./src/codegen/handlers/serialize/SerializeSerializerHandler.ts");
888
+
874
889
 
875
890
 
876
891
 
877
892
  /// Purpose:
878
893
  class SerializeHandlerBuilder {
879
894
  build() {
880
- const handler = new _serialize_SerializeDateHandler__WEBPACK_IMPORTED_MODULE_0__.SerializeDateHandler();
881
- handler.setNext(new _serialize_SerializeValueHandler__WEBPACK_IMPORTED_MODULE_1__.SerializeValueHandler())
882
- .setNext(new _serialize_SerializeObjectHandler__WEBPACK_IMPORTED_MODULE_2__.SerializeObjectHandler());
895
+ const handler = new _serialize_SerializeSerializerHandler__WEBPACK_IMPORTED_MODULE_0__.SerializeSerializerHandler();
896
+ handler
897
+ .setNext(new _serialize_SerializeDateHandler__WEBPACK_IMPORTED_MODULE_1__.SerializeDateHandler())
898
+ .setNext(new _serialize_SerializeValueHandler__WEBPACK_IMPORTED_MODULE_2__.SerializeValueHandler())
899
+ .setNext(new _serialize_SerializeObjectHandler__WEBPACK_IMPORTED_MODULE_3__.SerializeObjectHandler());
883
900
  return handler;
884
901
  }
885
902
  }
@@ -915,6 +932,43 @@ class StripHandlerBuilder {
915
932
  }
916
933
 
917
934
 
935
+ }),
936
+ "./src/codegen/handlers/clone/CloneArrayHandler.ts":
937
+ /*!*********************************************************!*\
938
+ !*** ./src/codegen/handlers/clone/CloneArrayHandler.ts ***!
939
+ \*********************************************************/
940
+ (function (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
941
+ __webpack_require__.r(__webpack_exports__);
942
+ __webpack_require__.d(__webpack_exports__, {
943
+ CloneArrayHandler: () => (CloneArrayHandler)
944
+ });
945
+ /* ESM import */var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ "./src/codegen/handlers/types.ts");
946
+ /* ESM import */var _schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../schema */ "./src/schema/types.ts");
947
+
948
+
949
+ class CloneArrayHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
950
+ handle(property, builder) {
951
+ if (property.type === _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Array) {
952
+ if (property.isNullable || property.isOptional) {
953
+ // Child properties will take care of this
954
+ return builder;
955
+ }
956
+ const slot = builder.get("assignments");
957
+ const resultAssignmentPath = property.getAssignmentPath({ parent: "result" });
958
+ if (property.parent == null) {
959
+ slot.assign(`${resultAssignmentPath}`).value("{}");
960
+ return builder;
961
+ }
962
+ // slotPath.push(...property.getParentPathArray());
963
+ // const nestedObjectBuilder = builder.get<ObjectBuilder>(slotPath.get());
964
+ // nestedObjectBuilder.nested(property.name, property.name)
965
+ return builder;
966
+ }
967
+ return super.handle(property, builder);
968
+ }
969
+ }
970
+
971
+
918
972
  }),
919
973
  "./src/codegen/handlers/clone/CloneObjectHandler.ts":
920
974
  /*!**********************************************************!*\
@@ -925,24 +979,14 @@ __webpack_require__.r(__webpack_exports__);
925
979
  __webpack_require__.d(__webpack_exports__, {
926
980
  CloneObjectHandler: () => (CloneObjectHandler)
927
981
  });
928
- /* ESM import */var _SlotPath__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../SlotPath */ "./src/codegen/SlotPath.ts");
929
982
  /* ESM import */var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ "./src/codegen/handlers/types.ts");
930
983
  /* ESM import */var _schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../schema */ "./src/schema/types.ts");
931
984
 
932
985
 
933
-
934
986
  class CloneObjectHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
935
987
  handle(property, builder) {
936
988
  if (property.type === _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Object) {
937
- const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_2__.SlotPath("result.variable.object");
938
- let objectBuilder = builder.get(slotPath.get());
939
- if (property.parent == null) {
940
- objectBuilder.nested(property.name, property.name);
941
- return builder;
942
- }
943
- slotPath.push(...property.getParentPathArray());
944
- const nestedObjectBuilder = builder.get(slotPath.get());
945
- nestedObjectBuilder.nested(property.name, property.name);
989
+ // Child properties will take care of this
946
990
  return builder;
947
991
  }
948
992
  return super.handle(property, builder);
@@ -960,7 +1004,7 @@ __webpack_require__.r(__webpack_exports__);
960
1004
  __webpack_require__.d(__webpack_exports__, {
961
1005
  CloneValueHandler: () => (CloneValueHandler)
962
1006
  });
963
- /* ESM import */var _SlotPath__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../SlotPath */ "./src/codegen/SlotPath.ts");
1007
+ /* ESM import */var _blocks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../blocks */ "./src/codegen/blocks.ts");
964
1008
  /* ESM import */var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ "./src/codegen/handlers/types.ts");
965
1009
  /* ESM import */var _schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../schema */ "./src/schema/types.ts");
966
1010
 
@@ -968,21 +1012,20 @@ __webpack_require__.d(__webpack_exports__, {
968
1012
 
969
1013
  class CloneValueHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
970
1014
  handle(property, builder) {
971
- if (property.type != _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Object) {
972
- let objectBuilder = builder.getOrDefault("result.variable.object");
973
- const entitySelectorPath = property.getAssignmentPath({ parent: "entity" });
974
- if (objectBuilder == null) {
975
- objectBuilder = builder.get("result")
976
- .assign("const result", { name: "variable" })
977
- .object({ name: "object" });
978
- }
1015
+ if (property.type != _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Object && property.type != _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Array) {
1016
+ const slot = builder.get("if");
1017
+ const entitySelectorPath = property.getSelectrorPath({ parent: "entity" });
1018
+ const resultAssignmentPath = property.getAssignmentPath({ parent: "result" });
979
1019
  if (property.parent == null) {
980
- objectBuilder.property(`${property.name}: ${entitySelectorPath}`);
1020
+ // we are a first level property
1021
+ slot.if(`${entitySelectorPath} != null`).appendBody(`${resultAssignmentPath} = ${entitySelectorPath}`);
981
1022
  return builder;
982
1023
  }
983
- const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_2__.SlotPath(...property.getParentPathArray());
984
- objectBuilder = objectBuilder.get(slotPath.get());
985
- objectBuilder.property(`${property.name}: ${entitySelectorPath}`);
1024
+ // Second level or more property
1025
+ // Need to ensure parent is assigned
1026
+ const propertyParentPath = ["result", ...property.getParentPathArray()];
1027
+ const ifBuilder = new _blocks__WEBPACK_IMPORTED_MODULE_2__.IfBuilder(`${propertyParentPath.join("?.")} == null`).appendBody(`${propertyParentPath.join(".")} = {};`);
1028
+ slot.if(`${entitySelectorPath} != null`).appendBody(ifBuilder.toString()).appendBody(`${resultAssignmentPath} = ${entitySelectorPath}`);
986
1029
  return builder;
987
1030
  }
988
1031
  return super.handle(property, builder);
@@ -1123,6 +1166,47 @@ class DeserializeDateHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.Propert
1123
1166
  }
1124
1167
 
1125
1168
 
1169
+ }),
1170
+ "./src/codegen/handlers/deserialize/DeserializeDeserializerHandler.ts":
1171
+ /*!****************************************************************************!*\
1172
+ !*** ./src/codegen/handlers/deserialize/DeserializeDeserializerHandler.ts ***!
1173
+ \****************************************************************************/
1174
+ (function (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1175
+ __webpack_require__.r(__webpack_exports__);
1176
+ __webpack_require__.d(__webpack_exports__, {
1177
+ DeserializeDeserializerHandler: () => (DeserializeDeserializerHandler)
1178
+ });
1179
+ /* ESM import */var _SlotPath__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../SlotPath */ "./src/codegen/SlotPath.ts");
1180
+ /* ESM import */var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ "./src/codegen/handlers/types.ts");
1181
+
1182
+
1183
+ class DeserializeDeserializerHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
1184
+ handle(property, builder) {
1185
+ if (property.valueDeserializer != null) {
1186
+ let objectBuilder = builder.getOrDefault("result.variable.object");
1187
+ const assignmentBuilder = builder.getOrDefault("functions");
1188
+ const entitySelectorPath = property.getSelectrorPath({ parent: "entity" });
1189
+ if (objectBuilder == null) {
1190
+ objectBuilder = builder.get("result")
1191
+ .assign("const result", { name: "variable" })
1192
+ .object({ name: "object" });
1193
+ }
1194
+ const defaultFunctionWithParameters = this.toNamedFunction(property.valueDeserializer.toString(), assignmentBuilder);
1195
+ defaultFunctionWithParameters.builder.parameters(...defaultFunctionWithParameters.parameters.map((_, i) => ({ name: defaultFunctionWithParameters.parameters[i], callName: entitySelectorPath })));
1196
+ if (property.parent == null) {
1197
+ objectBuilder.property(`${property.name}: ${defaultFunctionWithParameters.builder.toCallable()}`);
1198
+ return builder;
1199
+ }
1200
+ const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_1__.SlotPath(...property.getParentPathArray());
1201
+ objectBuilder = objectBuilder.get(slotPath.get());
1202
+ objectBuilder.property(`${property.name}: ${defaultFunctionWithParameters.builder.toCallable()}`);
1203
+ return builder;
1204
+ }
1205
+ return super.handle(property, builder);
1206
+ }
1207
+ }
1208
+
1209
+
1126
1210
  }),
1127
1211
  "./src/codegen/handlers/deserialize/DeserializeFunctionHandler.ts":
1128
1212
  /*!************************************************************************!*\
@@ -1452,7 +1536,7 @@ class EnrichmentNullableObjectHandler extends _types__WEBPACK_IMPORTED_MODULE_0_
1452
1536
  if (enrichedSlot == null) {
1453
1537
  throw new Error(`Error building enricher, could not find slot for ${slotPath.get()}`);
1454
1538
  }
1455
- enriched = enrichedSlot.nested(property.name, property.name);
1539
+ enriched = enrichedSlot.nested(property.name, `[${enrichedPath}]`);
1456
1540
  }
1457
1541
  return builder;
1458
1542
  }
@@ -1471,22 +1555,29 @@ __webpack_require__.r(__webpack_exports__);
1471
1555
  __webpack_require__.d(__webpack_exports__, {
1472
1556
  EnrichmentObjectHandler: () => (EnrichmentObjectHandler)
1473
1557
  });
1558
+ /* ESM import */var _SlotPath__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../SlotPath */ "./src/codegen/SlotPath.ts");
1474
1559
  /* ESM import */var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ "./src/codegen/handlers/types.ts");
1475
1560
  /* ESM import */var _schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../schema */ "./src/schema/types.ts");
1476
1561
 
1477
1562
 
1563
+
1478
1564
  class EnrichmentObjectHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
1479
1565
  handle(property, builder) {
1480
1566
  if (property.type === _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Object && (property.isNullable || property.isOptional) === false) {
1481
- const assignmentSlot = builder.get("factory.function.assignment");
1482
- const childPath = property.getAssignmentPath({ parent: "enriched" });
1483
- if (assignmentSlot == null) {
1484
- throw new Error("Error building enricher, could not find slot for factory.function.assignment");
1567
+ const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_2__.SlotPath("factory", "function", "enriched", "object", "enriched");
1568
+ const nestedSlotPath = this.buildSlotPath(property, slotPath);
1569
+ // Generate null check for current level using parent relationships
1570
+ const enrichedPath = property.getAssignmentPath({ parent: "enriched" });
1571
+ const slot = builder.get("factory.function.assignment");
1572
+ slot.assign(enrichedPath).value(`enableChangeTracking(${enrichedPath} || {}, "${property.name}")`);
1573
+ let enriched = builder.getOrDefault(nestedSlotPath.get());
1574
+ if (enriched == null) {
1575
+ const enrichedSlot = builder.get(slotPath.get());
1576
+ if (enrichedSlot == null) {
1577
+ throw new Error(`Error building enricher, could not find slot for ${slotPath.get()}`);
1578
+ }
1579
+ enriched = enrichedSlot.nested(property.name, `[${enrichedPath}]`);
1485
1580
  }
1486
- assignmentSlot.assign(childPath, { name: `[${childPath}]` }).call("enableChangeTracking", { name: "builder" });
1487
- const changeTrackingSlot = builder.get("factory.function.tracking.freeze");
1488
- const selectorPath = property.getSelectrorPath({ parent: "enriched" });
1489
- changeTrackingSlot.if(`${selectorPath} != null`, { unshift: true }).unshiftBody(`${selectorPath} = Object.freeze(${selectorPath})`);
1490
1581
  return builder;
1491
1582
  }
1492
1583
  return super.handle(property, builder);
@@ -2217,8 +2308,7 @@ __webpack_require__.d(__webpack_exports__, {
2217
2308
  class SerializeDateHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
2218
2309
  handle(property, builder) {
2219
2310
  if (property.type === _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Date) {
2220
- const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_2__.SlotPath("result.variable.object");
2221
- let objectBuilder = builder.get(slotPath.get());
2311
+ let objectBuilder = builder.get("if");
2222
2312
  const entitySelectorPath = property.getSelectrorPath({ parent: "entity" });
2223
2313
  const entityAssignmentPath = property.getAssignmentPath({ parent: "result" });
2224
2314
  const assignment = `${property.name}: ${entitySelectorPath} instanceof Date ? ${entitySelectorPath}.toISOString() : ${entitySelectorPath}`;
@@ -2232,12 +2322,14 @@ class SerializeDateHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyI
2232
2322
  }
2233
2323
  // A date cannot be a nested object, just do the assignment
2234
2324
  if (property.parent == null) {
2235
- objectBuilder.property(assignment);
2325
+ objectBuilder.if(`Object.hasOwn(entity, "${property.name}")`).appendBody(`${entityAssignmentPath} = ${entitySelectorPath}`);
2236
2326
  return builder;
2237
2327
  }
2238
- slotPath.push(...property.getParentPathArray());
2239
- const nestedObjectBuilder = builder.get(slotPath.get());
2240
- nestedObjectBuilder.property(assignment);
2328
+ // TODO: SOLVE THIS, IT IS CLOSE
2329
+ //const slotPath = new SlotPath(...property.getParentPathArray());
2330
+ // slotPath.push(...property.getParentPathArray());
2331
+ // const nestedObjectBuilder = builder.get<ObjectBuilder>(slotPath.get());
2332
+ // nestedObjectBuilder.property(assignment)
2241
2333
  return builder;
2242
2334
  }
2243
2335
  return super.handle(property, builder);
@@ -2264,15 +2356,52 @@ __webpack_require__.d(__webpack_exports__, {
2264
2356
  class SerializeObjectHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
2265
2357
  handle(property, builder) {
2266
2358
  if (property.type === _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Object) {
2267
- const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_2__.SlotPath("result.variable.object");
2268
- let objectBuilder = builder.get(slotPath.get());
2359
+ const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_2__.SlotPath("assignments");
2360
+ const childPath = property.getAssignmentPath({ parent: "result" });
2361
+ if (property.isNullable || property.isOptional) {
2362
+ // Do nothing if it's nullable or optional as property assignments will check
2363
+ // and create if it does not exist. This way we can handle null/optional
2364
+ return builder;
2365
+ }
2366
+ const slot = builder.get(slotPath.get());
2367
+ slot.assign(`${childPath}`, { name: `[${childPath}]` }).value("{}");
2368
+ return builder;
2369
+ }
2370
+ return super.handle(property, builder);
2371
+ }
2372
+ }
2373
+
2374
+
2375
+ }),
2376
+ "./src/codegen/handlers/serialize/SerializeSerializerHandler.ts":
2377
+ /*!**********************************************************************!*\
2378
+ !*** ./src/codegen/handlers/serialize/SerializeSerializerHandler.ts ***!
2379
+ \**********************************************************************/
2380
+ (function (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2381
+ __webpack_require__.r(__webpack_exports__);
2382
+ __webpack_require__.d(__webpack_exports__, {
2383
+ SerializeSerializerHandler: () => (SerializeSerializerHandler)
2384
+ });
2385
+ /* ESM import */var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ "./src/codegen/handlers/types.ts");
2386
+
2387
+ class SerializeSerializerHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
2388
+ handle(property, builder) {
2389
+ if (property.valueSerializer != null) {
2390
+ const objectBuilder = builder.getOrDefault("if");
2391
+ const assignmentBuilder = builder.getOrDefault("functions");
2392
+ const entitySelectorPath = property.getAssignmentPath({ parent: "entity" });
2393
+ const resultSelectorPath = property.getAssignmentPath({ parent: "result" });
2394
+ const defaultFunctionWithParameters = this.toNamedFunction(property.valueSerializer.toString(), assignmentBuilder);
2395
+ defaultFunctionWithParameters.builder.parameters(...defaultFunctionWithParameters.parameters.map((_, i) => ({ name: defaultFunctionWithParameters.parameters[i], callName: entitySelectorPath })));
2269
2396
  if (property.parent == null) {
2270
- objectBuilder.nested(property.name, property.name);
2397
+ objectBuilder.if(`Object.hasOwn(entity, "${property.name}")`).appendBody(`${resultSelectorPath} = ${defaultFunctionWithParameters.builder.toCallable()}`);
2271
2398
  return builder;
2272
2399
  }
2273
- slotPath.push(...property.getParentPathArray());
2274
- const nestedObjectBuilder = builder.get(slotPath.get());
2275
- nestedObjectBuilder.nested(property.name, property.name);
2400
+ // TODO: SOLVE THIS
2401
+ //const slotPath = new SlotPath(...property.getParentPathArray());
2402
+ // const slotPath = new SlotPath(...property.getParentPathArray());
2403
+ // objectBuilder = objectBuilder.get<ObjectBuilder>(slotPath.get());
2404
+ // objectBuilder.property(`${property.name}: ${defaultFunctionWithParameters.builder.toCallable()}`);
2276
2405
  return builder;
2277
2406
  }
2278
2407
  return super.handle(property, builder);
@@ -2290,7 +2419,7 @@ __webpack_require__.r(__webpack_exports__);
2290
2419
  __webpack_require__.d(__webpack_exports__, {
2291
2420
  SerializeValueHandler: () => (SerializeValueHandler)
2292
2421
  });
2293
- /* ESM import */var _SlotPath__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../SlotPath */ "./src/codegen/SlotPath.ts");
2422
+ /* ESM import */var _blocks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../blocks */ "./src/codegen/blocks.ts");
2294
2423
  /* ESM import */var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ "./src/codegen/handlers/types.ts");
2295
2424
  /* ESM import */var _schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../schema */ "./src/schema/types.ts");
2296
2425
 
@@ -2299,20 +2428,24 @@ __webpack_require__.d(__webpack_exports__, {
2299
2428
  class SerializeValueHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
2300
2429
  handle(property, builder) {
2301
2430
  if (property.type != _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Object && property.type != _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Date) {
2302
- let objectBuilder = builder.getOrDefault("result.variable.object");
2431
+ const slot = builder.getOrDefault("if");
2303
2432
  const entitySelectorPath = property.getAssignmentPath({ parent: "entity" });
2304
- if (objectBuilder == null) {
2305
- objectBuilder = builder.get("result")
2306
- .assign("const result", { name: "variable" })
2307
- .object({ name: "object" });
2308
- }
2433
+ const resultSelectorPath = property.getAssignmentPath({ parent: "result" });
2309
2434
  if (property.parent == null) {
2310
- objectBuilder.property(`${property.name}: ${entitySelectorPath}`);
2435
+ // Only assign if the incoming entity has the property, this allows partial serialization
2436
+ // Basically only serialize what is there
2437
+ slot.if(`Object.hasOwn(entity, "${property.name}")`).appendBody(`${resultSelectorPath} = ${entitySelectorPath}`);
2311
2438
  return builder;
2312
2439
  }
2313
- const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_2__.SlotPath(...property.getParentPathArray());
2314
- objectBuilder = objectBuilder.get(slotPath.get());
2315
- objectBuilder.property(`${property.name}: ${entitySelectorPath}`);
2440
+ const parentSelectPath = ["entity", ...property.getParentPathArray()].join(".");
2441
+ const parentAssignPath = ["result", ...property.getParentPathArray()].join(".");
2442
+ const ifSlot = slot.if(`Object.hasOwn(${parentSelectPath}, "${property.name}")`);
2443
+ if (property.parent.isNullable || property.parent.isOptional) {
2444
+ // Do this for nullable/optional parents. Parent will be null if its nullable/optional
2445
+ const conditionallyCreateParent = new _blocks__WEBPACK_IMPORTED_MODULE_2__.IfBuilder(`${parentAssignPath} == null`).appendBody(`${parentAssignPath} = {}`);
2446
+ ifSlot.appendBody(conditionallyCreateParent.toString());
2447
+ }
2448
+ ifSlot.appendBody(`${resultSelectorPath} = ${entitySelectorPath}`);
2316
2449
  return builder;
2317
2450
  }
2318
2451
  return super.handle(property, builder);
@@ -2498,11 +2631,10 @@ class PropertyInfoHandler {
2498
2631
  const useFromPropertyName = property.from != null;
2499
2632
  const entitySelectorPath = property.getAssignmentPath({ parent: "entity", useFromPropertyName });
2500
2633
  if (property.parent != null) {
2501
- const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_1__.SlotPath("factory", "function", "assignment");
2634
+ const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_1__.SlotPath("factory", "function", "enriched", "object", "enriched");
2502
2635
  const path = property.parent.getAssignmentPath({ parent: "enriched" });
2503
2636
  slotPath.push(`[${path}]`);
2504
- const builder = root.get(slotPath.get());
2505
- const objectBuilder = builder.getValue;
2637
+ const objectBuilder = root.get(slotPath.get());
2506
2638
  const childEntityPathSelector = property.getSelectrorPath({ parent: "entity", useFromPropertyName });
2507
2639
  objectBuilder.property(`${property.name}: ${childEntityPathSelector}`);
2508
2640
  return;
@@ -3289,6 +3421,7 @@ const ERROR_MESSAGES = {
3289
3421
  PROPERTY_NOT_FOUND: (path) => `Error parsing query, could not find PropertyInfo for path: ${path}`,
3290
3422
  PARAM_PATH_NOT_FOUND: (value, params) => `Cannot find path in params for .where(). Make sure parameters are not used inline.\r\nPath: ${value}, Params: ${JSON.stringify(params)}`
3291
3423
  };
3424
+ const STRINGIFIED_COMPARE_OPERATORS = ["true", "false"];
3292
3425
  const combineExpressions = (...expressions) => {
3293
3426
  if (expressions.length === 0) {
3294
3427
  throw new Error("combineExpressions requires at least 1 expression");
@@ -3490,8 +3623,11 @@ const parseCondition = (schema, expression, params) => {
3490
3623
  // This is a parameter path on the left side (e.g., params.distinctPlayers.includes(entity.playerId))
3491
3624
  // For includes method, we need to swap left and right sides
3492
3625
  if (methodMatch[2] === 'includes') {
3493
- comparator.left = getValue(leftSide, params);
3494
- comparator.right = getProperty(schema, rightSide);
3626
+ const property = getProperty(schema, rightSide);
3627
+ const value = getValue(leftSide, params); // retrieve the original value
3628
+ const serializer = property.property.valueSerializer;
3629
+ comparator.left = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value)))) : value;
3630
+ comparator.right = property;
3495
3631
  }
3496
3632
  else {
3497
3633
  // For other methods, return NOT_PARSABLE for now
@@ -3500,8 +3636,11 @@ const parseCondition = (schema, expression, params) => {
3500
3636
  }
3501
3637
  else {
3502
3638
  // Normal case: property on left, value on right
3503
- comparator.left = getProperty(schema, leftSide);
3504
- comparator.right = getValue(rightSide, params);
3639
+ const property = getProperty(schema, leftSide);
3640
+ const serializer = property.property.valueSerializer;
3641
+ const value = getValue(rightSide, params); // retrieve the original value
3642
+ comparator.left = property;
3643
+ comparator.right = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value)))) : value;
3505
3644
  }
3506
3645
  // If the comparison is explicitly to false, mark it as negated
3507
3646
  if (methodMatch[6] === "false") {
@@ -3516,10 +3655,13 @@ const parseCondition = (schema, expression, params) => {
3516
3655
  if (isNegation) {
3517
3656
  comparator.negated = isNegation;
3518
3657
  }
3658
+ const property = getProperty(schema, valueTransformMatch[1].trim());
3659
+ const serializer = property.property.valueSerializer;
3660
+ const value = getValue(valueTransformMatch[3], params); // retrieve the original value
3519
3661
  // Create the property expression for the left side (no transformer)
3520
- const propertyExpression = getProperty(schema, valueTransformMatch[1].trim());
3662
+ const propertyExpression = property;
3521
3663
  // Create a ValueExpression for the right side with transformer
3522
- const valueExpression = getValue(valueTransformMatch[3], params);
3664
+ const valueExpression = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value)))) : value;
3523
3665
  // Set transformer and locale based on the method
3524
3666
  const method = valueTransformMatch[4];
3525
3667
  if (method === 'toLowerCase' || method === 'toLocaleLowerCase') {
@@ -3545,47 +3687,48 @@ const parseCondition = (schema, expression, params) => {
3545
3687
  comparator.negated = isNegation;
3546
3688
  }
3547
3689
  // Create the property expression for the left side with transformer
3548
- const propertyExpression = getProperty(schema, transformMethodMatch[1]);
3690
+ const property = getProperty(schema, transformMethodMatch[1]);
3549
3691
  // Set transformer and locale based on the method
3550
3692
  const method = transformMethodMatch[2];
3551
3693
  if (method === 'toLowerCase' || method === 'toLocaleLowerCase') {
3552
- propertyExpression.transformer = 'to-lower-case';
3694
+ property.transformer = 'to-lower-case';
3553
3695
  if (method === 'toLocaleLowerCase') {
3554
- propertyExpression.locale = 'en-US'; // Default locale, could be extracted from method call
3696
+ property.locale = 'en-US'; // Default locale, could be extracted from method call
3555
3697
  }
3556
3698
  }
3557
3699
  else {
3558
- propertyExpression.transformer = 'to-upper-case';
3700
+ property.transformer = 'to-upper-case';
3559
3701
  if (method === 'toLocaleUpperCase') {
3560
- propertyExpression.locale = 'en-US'; // Default locale, could be extracted from method call
3702
+ property.locale = 'en-US'; // Default locale, could be extracted from method call
3561
3703
  }
3562
3704
  }
3563
3705
  // Create a ValueExpression for the right side
3564
- let valueExpression = getValue(transformMethodMatch[4], params);
3706
+ let value = getValue(transformMethodMatch[4], params);
3565
3707
  // Check if the value also has a transformation (but only if it's not already handled by value-side check)
3566
3708
  const valueTransformMatch = transformMethodMatch[4].match(/^([^)]+)\.(toLowerCase|toUpperCase|toLocaleLowerCase|toLocaleUpperCase)\(\)$/);
3567
3709
  if (valueTransformMatch) {
3568
3710
  // Create a new ValueExpression with the base value and transformer
3569
- valueExpression = new _types__WEBPACK_IMPORTED_MODULE_0__.ValueExpression({
3711
+ value = new _types__WEBPACK_IMPORTED_MODULE_0__.ValueExpression({
3570
3712
  value: valueTransformMatch[1].replace(/^["']|["']$/g, '') // Remove quotes
3571
3713
  });
3572
3714
  // Set transformer and locale based on the method
3573
3715
  const valueMethod = valueTransformMatch[2];
3574
3716
  if (valueMethod === 'toLowerCase' || valueMethod === 'toLocaleLowerCase') {
3575
- valueExpression.transformer = 'to-lower-case';
3717
+ value.transformer = 'to-lower-case';
3576
3718
  if (valueMethod === 'toLocaleLowerCase') {
3577
- valueExpression.locale = 'en-US'; // Default locale
3719
+ value.locale = 'en-US'; // Default locale
3578
3720
  }
3579
3721
  }
3580
3722
  else {
3581
- valueExpression.transformer = 'to-upper-case';
3723
+ value.transformer = 'to-upper-case';
3582
3724
  if (valueMethod === 'toLocaleUpperCase') {
3583
- valueExpression.locale = 'en-US'; // Default locale
3725
+ value.locale = 'en-US'; // Default locale
3584
3726
  }
3585
3727
  }
3586
3728
  }
3587
- comparator.left = propertyExpression;
3588
- comparator.right = valueExpression;
3729
+ const serializer = property.property.valueSerializer;
3730
+ comparator.left = property;
3731
+ comparator.right = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value)))) : value;
3589
3732
  // If the comparison is explicitly to false, mark it as negated
3590
3733
  if (transformMethodMatch[7] === "false") {
3591
3734
  comparator.negated = true;
@@ -3622,8 +3765,11 @@ const parseCondition = (schema, expression, params) => {
3622
3765
  if (isNegation) {
3623
3766
  comparator.negated = isNegation;
3624
3767
  }
3625
- comparator.left = getProperty(schema, propertySide);
3626
- comparator.right = getValue(valueSide, params);
3768
+ const property = getProperty(schema, propertySide);
3769
+ const value = getValue(valueSide, params);
3770
+ const serializer = property.property.valueSerializer;
3771
+ comparator.left = property;
3772
+ comparator.right = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value)))) : value;
3627
3773
  convertAndAssignValue(comparator.right, comparator.left);
3628
3774
  return comparator;
3629
3775
  }
@@ -3657,11 +3803,30 @@ const parseCondition = (schema, expression, params) => {
3657
3803
  if (isNegation) {
3658
3804
  comparator.negated = isNegation;
3659
3805
  }
3660
- comparator.left = getProperty(schema, propertySide);
3661
- comparator.right = getValue(valueSide, params);
3806
+ const property = getProperty(schema, propertySide);
3807
+ const value = getValue(valueSide, params);
3808
+ const serializer = property.property.valueSerializer;
3809
+ comparator.left = property;
3810
+ comparator.right = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value)))) : value;
3662
3811
  convertAndAssignValue(comparator.right, comparator.left);
3663
3812
  return comparator;
3664
3813
  }
3814
+ // Check for standalone property reference (truthy comparison)
3815
+ // Pattern: property name only (e.g., "w.inStock" -> w.inStock === true)
3816
+ const standalonePropertyMatch = finalExpression.match(/^[a-zA-Z_$][a-zA-Z0-9_$]*(\.[a-zA-Z_$][a-zA-Z0-9_$]*)*$/);
3817
+ if (standalonePropertyMatch && isPropertyPath(finalExpression)) {
3818
+ const comparator = getComparator('===');
3819
+ if (isNegation) {
3820
+ comparator.negated = isNegation;
3821
+ }
3822
+ const property = getProperty(schema, finalExpression);
3823
+ const value = getValue('true', params);
3824
+ const serializer = property.property.valueSerializer;
3825
+ comparator.left = property;
3826
+ // need to parse the value so it matches what the serializer expects
3827
+ comparator.right = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value)))) : value;
3828
+ return comparator;
3829
+ }
3665
3830
  // If we get here, the expression is too complex for the current parser
3666
3831
  // This is expected for complex real-world expressions
3667
3832
  throw new Error(`Unsupported expression format: ${finalExpression}`);
@@ -3721,6 +3886,17 @@ const getValue = (value, params) => {
3721
3886
  }
3722
3887
  }
3723
3888
  }
3889
+ if (STRINGIFIED_COMPARE_OPERATORS.includes(value)) {
3890
+ return new _types__WEBPACK_IMPORTED_MODULE_0__.ValueExpression({ value });
3891
+ }
3892
+ if (isNaN(numValue)) {
3893
+ // value is a variable passed in by the dev, we cannot evaluate it's value
3894
+ // need to fallback to select all by throwing an error
3895
+ throw new Error(`Cannot derive value from variable, please pass parameters into the expression.
3896
+
3897
+ Example: .where(([x, params]) => x.id === params.id, { id: someVar.id })
3898
+ Issue At: ${value}`);
3899
+ }
3724
3900
  // Default case: return as-is
3725
3901
  return new _types__WEBPACK_IMPORTED_MODULE_0__.ValueExpression({ value });
3726
3902
  };
@@ -4511,7 +4687,11 @@ class EphemeralDataPlugin {
4511
4687
  done(_results__WEBPACK_IMPORTED_MODULE_1__.PluginEventResult.error(event.id, r.error));
4512
4688
  return;
4513
4689
  }
4514
- const translated = translator.translate(collection.records);
4690
+ const cloned = [];
4691
+ for (let i = 0, length = collection.records.length; i < length; i++) {
4692
+ cloned.push(event.operation.schema.clone(collection.records[i]));
4693
+ }
4694
+ const translated = translator.translate(cloned);
4515
4695
  done(_results__WEBPACK_IMPORTED_MODULE_1__.PluginEventResult.success(event.id, translated));
4516
4696
  });
4517
4697
  }
@@ -5589,6 +5769,9 @@ class JsonTranslator extends _DataTranslator__WEBPACK_IMPORTED_MODULE_0__.DataTr
5589
5769
  }
5590
5770
  sum(data, _) {
5591
5771
  (0,_assertions__WEBPACK_IMPORTED_MODULE_1__.assertIsArray)(data, this._formatDataNotArrayError("sum"));
5772
+ if (data.length === 0) {
5773
+ throw new Error("Cannot perform operation on empty array, result query contains no data");
5774
+ }
5592
5775
  const map = this.query.options.getLast("map");
5593
5776
  let sum = 0;
5594
5777
  const field = this._getSelectionField("sum", map);
@@ -5684,15 +5867,26 @@ __webpack_require__.d(__webpack_exports__, {
5684
5867
 
5685
5868
  class SqlTranslator extends _DataTranslator__WEBPACK_IMPORTED_MODULE_0__.DataTranslator {
5686
5869
  count(data, _) {
5870
+ if (Array.isArray(data) && data.length > 0) {
5871
+ // Count should be returned as the property alias on the query
5872
+ return data[0].count;
5873
+ }
5687
5874
  return data;
5688
5875
  }
5689
5876
  min(data, _) {
5690
- return data;
5877
+ return this.shapeResult(data);
5691
5878
  }
5692
5879
  max(data, _) {
5693
- return data;
5880
+ return this.shapeResult(data);
5694
5881
  }
5695
5882
  sum(data, _) {
5883
+ return this.shapeResult(data);
5884
+ }
5885
+ shapeResult(data) {
5886
+ if (Array.isArray(data) && data.length > 0) {
5887
+ // Shape the result
5888
+ return data[0];
5889
+ }
5696
5890
  return data;
5697
5891
  }
5698
5892
  distinct(data, _) {
@@ -5710,8 +5904,29 @@ class SqlTranslator extends _DataTranslator__WEBPACK_IMPORTED_MODULE_0__.DataTra
5710
5904
  sort(data, _) {
5711
5905
  return data;
5712
5906
  }
5713
- map(data, _) {
5714
- return data;
5907
+ map(data, option) {
5908
+ if (Array.isArray(data) == false) {
5909
+ throw new Error("Can only map an array of data");
5910
+ }
5911
+ if (this.query.options.has("count") && data.length === 1) {
5912
+ // data here is the shape of { count: number }[] and will map to nothing.
5913
+ // Return the original data and let count take care of this
5914
+ return data;
5915
+ }
5916
+ const response = [];
5917
+ for (let i = 0, length = data.length; i < length; i++) {
5918
+ for (let j = 0, l = option.value.fields.length; j < l; j++) {
5919
+ const field = option.value.fields[j];
5920
+ if (field.property != null) {
5921
+ const value = field.property.getValue(data[i]);
5922
+ if (value != null) {
5923
+ field.property.setValue(data[i], field.property.deserialize(value));
5924
+ }
5925
+ }
5926
+ }
5927
+ response.push(option.value.selector(data[i]));
5928
+ }
5929
+ return response;
5715
5930
  }
5716
5931
  }
5717
5932
 
@@ -6473,17 +6688,23 @@ class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODUL
6473
6688
  stripCodeBuilder.slot("result");
6474
6689
  stripCodeBuilder.slot("return").raw(` return result;`);
6475
6690
  const cloneCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
6476
- cloneCodeBuilder.slot("result");
6691
+ cloneCodeBuilder.slot("result").raw("const result = {};");
6692
+ ;
6693
+ cloneCodeBuilder.slot("assignments");
6694
+ cloneCodeBuilder.slot("if");
6477
6695
  cloneCodeBuilder.slot("return").raw(` return result;`);
6478
6696
  const compareCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
6479
6697
  compareCodeBuilder.slot("result");
6480
6698
  compareCodeBuilder.slot("return").raw(` return result;`);
6481
6699
  const deserializeCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
6700
+ deserializeCodeBuilder.slot("functions");
6482
6701
  deserializeCodeBuilder.slot("result");
6483
6702
  deserializeCodeBuilder.slot("if");
6484
6703
  deserializeCodeBuilder.slot("return").raw(` return result;`);
6485
6704
  const serializeCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
6486
- serializeCodeBuilder.slot("result");
6705
+ serializeCodeBuilder.slot("result").raw("const result = {};");
6706
+ serializeCodeBuilder.slot("assignments");
6707
+ serializeCodeBuilder.slot("functions");
6487
6708
  serializeCodeBuilder.slot("if");
6488
6709
  serializeCodeBuilder.slot("return").raw(` return result;`);
6489
6710
  const idSelectorCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
@@ -6580,7 +6801,6 @@ class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODUL
6580
6801
  };
6581
6802
  const getProperty = (id) => propertyMap.get(id);
6582
6803
  const id = (0,_utilities__WEBPACK_IMPORTED_MODULE_19__.hash)([...allPropertyNamesAndPaths, this.collectionName].join(","));
6583
- const paths = new Set(properties.map(x => x.getAssignmentPath()));
6584
6804
  // memoize this by the validProperties
6585
6805
  // TODO: See if we can generate a function to do this and eliminate loops
6586
6806
  const deserializePartial = (item, properties) => {
@@ -7357,7 +7577,7 @@ class SchemaSerialize extends _base_SchemaBase__WEBPACK_IMPORTED_MODULE_0__.Sche
7357
7577
  this.instance = current.instance;
7358
7578
  this.valueSerializer = serializer;
7359
7579
  }
7360
- deserializer(deserializer) {
7580
+ deserialize(deserializer) {
7361
7581
  return new _SchemaDeserialize__WEBPACK_IMPORTED_MODULE_1__.SchemaDeserialize(deserializer, this);
7362
7582
  }
7363
7583
  }