@routier/core 0.0.1-alpha.3 → 0.0.2

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.
@@ -5,10 +5,11 @@ export declare class SqlTranslator<TRoot extends {}, TShape> extends DataTransla
5
5
  min<TResult extends string | number | Date>(data: unknown, _: QueryOption<TShape, "min">): TResult;
6
6
  max<TResult extends string | number | Date>(data: unknown, _: QueryOption<TShape, "max">): TResult;
7
7
  sum<TResult extends number>(data: unknown, _: QueryOption<TShape, "sum">): TResult;
8
+ private shapeResult;
8
9
  distinct<TResult>(data: unknown, _: QueryOption<TShape, "distinct">): TResult;
9
10
  filter<TResult>(data: unknown, _: QueryOption<TShape, "filter">): TResult;
10
11
  skip(data: unknown, _: QueryOption<TShape, "skip">): TShape;
11
12
  take(data: unknown, _: QueryOption<TShape, "take">): TShape;
12
13
  sort(data: unknown, _: QueryOption<TShape, "sort">): TShape;
13
- map(data: unknown, _: QueryOption<TShape, "map">): TShape;
14
+ map(data: unknown, option: QueryOption<TShape, "map">): TShape;
14
15
  }
@@ -494,15 +494,19 @@ __webpack_require__.r(__webpack_exports__);
494
494
  __webpack_require__.d(__webpack_exports__, {
495
495
  CloneHandlerBuilder: () => (CloneHandlerBuilder)
496
496
  });
497
+ /* ESM import */var _clone_CloneArrayHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./clone/CloneArrayHandler */ "./src/codegen/handlers/clone/CloneArrayHandler.ts");
497
498
  /* ESM import */var _clone_CloneObjectHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./clone/CloneObjectHandler */ "./src/codegen/handlers/clone/CloneObjectHandler.ts");
498
499
  /* ESM import */var _clone_CloneValueHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./clone/CloneValueHandler */ "./src/codegen/handlers/clone/CloneValueHandler.ts");
499
500
 
500
501
 
502
+
501
503
  /// Purpose:
502
504
  class CloneHandlerBuilder {
503
505
  build() {
504
506
  const handler = new _clone_CloneObjectHandler__WEBPACK_IMPORTED_MODULE_0__.CloneObjectHandler();
505
- handler.setNext(new _clone_CloneValueHandler__WEBPACK_IMPORTED_MODULE_1__.CloneValueHandler());
507
+ handler
508
+ .setNext(new _clone_CloneValueHandler__WEBPACK_IMPORTED_MODULE_1__.CloneValueHandler())
509
+ .setNext(new _clone_CloneArrayHandler__WEBPACK_IMPORTED_MODULE_2__.CloneArrayHandler());
506
510
  return handler;
507
511
  }
508
512
  }
@@ -543,10 +547,12 @@ __webpack_require__.d(__webpack_exports__, {
543
547
  DeserializeHandlerBuilder: () => (DeserializeHandlerBuilder)
544
548
  });
545
549
  /* ESM import */var _deserialize_DeserializeObjectHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./deserialize/DeserializeObjectHandler */ "./src/codegen/handlers/deserialize/DeserializeObjectHandler.ts");
546
- /* ESM import */var _deserialize_DeserializeValueHandler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./deserialize/DeserializeValueHandler */ "./src/codegen/handlers/deserialize/DeserializeValueHandler.ts");
547
- /* ESM import */var _deserialize_DeserializeDateHandler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./deserialize/DeserializeDateHandler */ "./src/codegen/handlers/deserialize/DeserializeDateHandler.ts");
548
- /* ESM import */var _deserialize_DeserializeComputedValueHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./deserialize/DeserializeComputedValueHandler */ "./src/codegen/handlers/deserialize/DeserializeComputedValueHandler.ts");
549
- /* ESM import */var _deserialize_DeserializeFunctionHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./deserialize/DeserializeFunctionHandler */ "./src/codegen/handlers/deserialize/DeserializeFunctionHandler.ts");
550
+ /* ESM import */var _deserialize_DeserializeValueHandler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./deserialize/DeserializeValueHandler */ "./src/codegen/handlers/deserialize/DeserializeValueHandler.ts");
551
+ /* ESM import */var _deserialize_DeserializeDateHandler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./deserialize/DeserializeDateHandler */ "./src/codegen/handlers/deserialize/DeserializeDateHandler.ts");
552
+ /* ESM import */var _deserialize_DeserializeComputedValueHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./deserialize/DeserializeComputedValueHandler */ "./src/codegen/handlers/deserialize/DeserializeComputedValueHandler.ts");
553
+ /* ESM import */var _deserialize_DeserializeFunctionHandler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./deserialize/DeserializeFunctionHandler */ "./src/codegen/handlers/deserialize/DeserializeFunctionHandler.ts");
554
+ /* ESM import */var _deserialize_DeserializeDeserializerHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./deserialize/DeserializeDeserializerHandler */ "./src/codegen/handlers/deserialize/DeserializeDeserializerHandler.ts");
555
+
550
556
 
551
557
 
552
558
 
@@ -557,10 +563,11 @@ class DeserializeHandlerBuilder {
557
563
  build() {
558
564
  const handler = new _deserialize_DeserializeObjectHandler__WEBPACK_IMPORTED_MODULE_0__.DeserializeObjectHandler();
559
565
  handler
560
- .setNext(new _deserialize_DeserializeComputedValueHandler__WEBPACK_IMPORTED_MODULE_1__.DeserializeComputedValueHandler())
561
- .setNext(new _deserialize_DeserializeFunctionHandler__WEBPACK_IMPORTED_MODULE_2__.DeserializeFunctionHandler())
562
- .setNext(new _deserialize_DeserializeValueHandler__WEBPACK_IMPORTED_MODULE_3__.DeserializeValueHandler())
563
- .setNext(new _deserialize_DeserializeDateHandler__WEBPACK_IMPORTED_MODULE_4__.DeserializeDateHandler());
566
+ .setNext(new _deserialize_DeserializeDeserializerHandler__WEBPACK_IMPORTED_MODULE_1__.DeserializeDeserializerHandler())
567
+ .setNext(new _deserialize_DeserializeComputedValueHandler__WEBPACK_IMPORTED_MODULE_2__.DeserializeComputedValueHandler())
568
+ .setNext(new _deserialize_DeserializeFunctionHandler__WEBPACK_IMPORTED_MODULE_3__.DeserializeFunctionHandler())
569
+ .setNext(new _deserialize_DeserializeValueHandler__WEBPACK_IMPORTED_MODULE_4__.DeserializeValueHandler())
570
+ .setNext(new _deserialize_DeserializeDateHandler__WEBPACK_IMPORTED_MODULE_5__.DeserializeDateHandler());
564
571
  return handler;
565
572
  }
566
573
  }
@@ -821,18 +828,22 @@ __webpack_require__.r(__webpack_exports__);
821
828
  __webpack_require__.d(__webpack_exports__, {
822
829
  SerializeHandlerBuilder: () => (SerializeHandlerBuilder)
823
830
  });
824
- /* ESM import */var _serialize_SerializeDateHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./serialize/SerializeDateHandler */ "./src/codegen/handlers/serialize/SerializeDateHandler.ts");
825
- /* ESM import */var _serialize_SerializeObjectHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./serialize/SerializeObjectHandler */ "./src/codegen/handlers/serialize/SerializeObjectHandler.ts");
826
- /* ESM import */var _serialize_SerializeValueHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./serialize/SerializeValueHandler */ "./src/codegen/handlers/serialize/SerializeValueHandler.ts");
831
+ /* ESM import */var _serialize_SerializeDateHandler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./serialize/SerializeDateHandler */ "./src/codegen/handlers/serialize/SerializeDateHandler.ts");
832
+ /* ESM import */var _serialize_SerializeObjectHandler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./serialize/SerializeObjectHandler */ "./src/codegen/handlers/serialize/SerializeObjectHandler.ts");
833
+ /* ESM import */var _serialize_SerializeValueHandler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./serialize/SerializeValueHandler */ "./src/codegen/handlers/serialize/SerializeValueHandler.ts");
834
+ /* ESM import */var _serialize_SerializeSerializerHandler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./serialize/SerializeSerializerHandler */ "./src/codegen/handlers/serialize/SerializeSerializerHandler.ts");
835
+
827
836
 
828
837
 
829
838
 
830
839
  /// Purpose:
831
840
  class SerializeHandlerBuilder {
832
841
  build() {
833
- const handler = new _serialize_SerializeDateHandler__WEBPACK_IMPORTED_MODULE_0__.SerializeDateHandler();
834
- handler.setNext(new _serialize_SerializeValueHandler__WEBPACK_IMPORTED_MODULE_1__.SerializeValueHandler())
835
- .setNext(new _serialize_SerializeObjectHandler__WEBPACK_IMPORTED_MODULE_2__.SerializeObjectHandler());
842
+ const handler = new _serialize_SerializeSerializerHandler__WEBPACK_IMPORTED_MODULE_0__.SerializeSerializerHandler();
843
+ handler
844
+ .setNext(new _serialize_SerializeDateHandler__WEBPACK_IMPORTED_MODULE_1__.SerializeDateHandler())
845
+ .setNext(new _serialize_SerializeValueHandler__WEBPACK_IMPORTED_MODULE_2__.SerializeValueHandler())
846
+ .setNext(new _serialize_SerializeObjectHandler__WEBPACK_IMPORTED_MODULE_3__.SerializeObjectHandler());
836
847
  return handler;
837
848
  }
838
849
  }
@@ -868,6 +879,43 @@ class StripHandlerBuilder {
868
879
  }
869
880
 
870
881
 
882
+ }),
883
+ "./src/codegen/handlers/clone/CloneArrayHandler.ts":
884
+ /*!*********************************************************!*\
885
+ !*** ./src/codegen/handlers/clone/CloneArrayHandler.ts ***!
886
+ \*********************************************************/
887
+ (function (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
888
+ __webpack_require__.r(__webpack_exports__);
889
+ __webpack_require__.d(__webpack_exports__, {
890
+ CloneArrayHandler: () => (CloneArrayHandler)
891
+ });
892
+ /* ESM import */var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ "./src/codegen/handlers/types.ts");
893
+ /* ESM import */var _schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../schema */ "./src/schema/types.ts");
894
+
895
+
896
+ class CloneArrayHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
897
+ handle(property, builder) {
898
+ if (property.type === _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Array) {
899
+ if (property.isNullable || property.isOptional) {
900
+ // Child properties will take care of this
901
+ return builder;
902
+ }
903
+ const slot = builder.get("assignments");
904
+ const resultAssignmentPath = property.getAssignmentPath({ parent: "result" });
905
+ if (property.parent == null) {
906
+ slot.assign(`${resultAssignmentPath}`).value("{}");
907
+ return builder;
908
+ }
909
+ // slotPath.push(...property.getParentPathArray());
910
+ // const nestedObjectBuilder = builder.get<ObjectBuilder>(slotPath.get());
911
+ // nestedObjectBuilder.nested(property.name, property.name)
912
+ return builder;
913
+ }
914
+ return super.handle(property, builder);
915
+ }
916
+ }
917
+
918
+
871
919
  }),
872
920
  "./src/codegen/handlers/clone/CloneObjectHandler.ts":
873
921
  /*!**********************************************************!*\
@@ -878,24 +926,14 @@ __webpack_require__.r(__webpack_exports__);
878
926
  __webpack_require__.d(__webpack_exports__, {
879
927
  CloneObjectHandler: () => (CloneObjectHandler)
880
928
  });
881
- /* ESM import */var _SlotPath__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../SlotPath */ "./src/codegen/SlotPath.ts");
882
929
  /* ESM import */var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ "./src/codegen/handlers/types.ts");
883
930
  /* ESM import */var _schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../schema */ "./src/schema/types.ts");
884
931
 
885
932
 
886
-
887
933
  class CloneObjectHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
888
934
  handle(property, builder) {
889
935
  if (property.type === _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Object) {
890
- const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_2__.SlotPath("result.variable.object");
891
- let objectBuilder = builder.get(slotPath.get());
892
- if (property.parent == null) {
893
- objectBuilder.nested(property.name, property.name);
894
- return builder;
895
- }
896
- slotPath.push(...property.getParentPathArray());
897
- const nestedObjectBuilder = builder.get(slotPath.get());
898
- nestedObjectBuilder.nested(property.name, property.name);
936
+ // Child properties will take care of this
899
937
  return builder;
900
938
  }
901
939
  return super.handle(property, builder);
@@ -913,7 +951,7 @@ __webpack_require__.r(__webpack_exports__);
913
951
  __webpack_require__.d(__webpack_exports__, {
914
952
  CloneValueHandler: () => (CloneValueHandler)
915
953
  });
916
- /* ESM import */var _SlotPath__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../SlotPath */ "./src/codegen/SlotPath.ts");
954
+ /* ESM import */var _blocks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../blocks */ "./src/codegen/blocks.ts");
917
955
  /* ESM import */var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ "./src/codegen/handlers/types.ts");
918
956
  /* ESM import */var _schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../schema */ "./src/schema/types.ts");
919
957
 
@@ -921,21 +959,20 @@ __webpack_require__.d(__webpack_exports__, {
921
959
 
922
960
  class CloneValueHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
923
961
  handle(property, builder) {
924
- if (property.type != _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Object) {
925
- let objectBuilder = builder.getOrDefault("result.variable.object");
926
- const entitySelectorPath = property.getAssignmentPath({ parent: "entity" });
927
- if (objectBuilder == null) {
928
- objectBuilder = builder.get("result")
929
- .assign("const result", { name: "variable" })
930
- .object({ name: "object" });
931
- }
962
+ if (property.type != _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Object && property.type != _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Array) {
963
+ const slot = builder.get("if");
964
+ const entitySelectorPath = property.getSelectrorPath({ parent: "entity" });
965
+ const resultAssignmentPath = property.getAssignmentPath({ parent: "result" });
932
966
  if (property.parent == null) {
933
- objectBuilder.property(`${property.name}: ${entitySelectorPath}`);
967
+ // we are a first level property
968
+ slot.if(`${entitySelectorPath} != null`).appendBody(`${resultAssignmentPath} = ${entitySelectorPath}`);
934
969
  return builder;
935
970
  }
936
- const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_2__.SlotPath(...property.getParentPathArray());
937
- objectBuilder = objectBuilder.get(slotPath.get());
938
- objectBuilder.property(`${property.name}: ${entitySelectorPath}`);
971
+ // Second level or more property
972
+ // Need to ensure parent is assigned
973
+ const propertyParentPath = ["result", ...property.getParentPathArray()];
974
+ const ifBuilder = new _blocks__WEBPACK_IMPORTED_MODULE_2__.IfBuilder(`${propertyParentPath.join("?.")} == null`).appendBody(`${propertyParentPath.join(".")} = {};`);
975
+ slot.if(`${entitySelectorPath} != null`).appendBody(ifBuilder.toString()).appendBody(`${resultAssignmentPath} = ${entitySelectorPath}`);
939
976
  return builder;
940
977
  }
941
978
  return super.handle(property, builder);
@@ -1076,6 +1113,47 @@ class DeserializeDateHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.Propert
1076
1113
  }
1077
1114
 
1078
1115
 
1116
+ }),
1117
+ "./src/codegen/handlers/deserialize/DeserializeDeserializerHandler.ts":
1118
+ /*!****************************************************************************!*\
1119
+ !*** ./src/codegen/handlers/deserialize/DeserializeDeserializerHandler.ts ***!
1120
+ \****************************************************************************/
1121
+ (function (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1122
+ __webpack_require__.r(__webpack_exports__);
1123
+ __webpack_require__.d(__webpack_exports__, {
1124
+ DeserializeDeserializerHandler: () => (DeserializeDeserializerHandler)
1125
+ });
1126
+ /* ESM import */var _SlotPath__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../SlotPath */ "./src/codegen/SlotPath.ts");
1127
+ /* ESM import */var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ "./src/codegen/handlers/types.ts");
1128
+
1129
+
1130
+ class DeserializeDeserializerHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
1131
+ handle(property, builder) {
1132
+ if (property.valueDeserializer != null) {
1133
+ let objectBuilder = builder.getOrDefault("result.variable.object");
1134
+ const assignmentBuilder = builder.getOrDefault("functions");
1135
+ const entitySelectorPath = property.getSelectrorPath({ parent: "entity" });
1136
+ if (objectBuilder == null) {
1137
+ objectBuilder = builder.get("result")
1138
+ .assign("const result", { name: "variable" })
1139
+ .object({ name: "object" });
1140
+ }
1141
+ const defaultFunctionWithParameters = this.toNamedFunction(property.valueDeserializer.toString(), assignmentBuilder);
1142
+ defaultFunctionWithParameters.builder.parameters(...defaultFunctionWithParameters.parameters.map((_, i) => ({ name: defaultFunctionWithParameters.parameters[i], callName: entitySelectorPath })));
1143
+ if (property.parent == null) {
1144
+ objectBuilder.property(`${property.name}: ${defaultFunctionWithParameters.builder.toCallable()}`);
1145
+ return builder;
1146
+ }
1147
+ const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_1__.SlotPath(...property.getParentPathArray());
1148
+ objectBuilder = objectBuilder.get(slotPath.get());
1149
+ objectBuilder.property(`${property.name}: ${defaultFunctionWithParameters.builder.toCallable()}`);
1150
+ return builder;
1151
+ }
1152
+ return super.handle(property, builder);
1153
+ }
1154
+ }
1155
+
1156
+
1079
1157
  }),
1080
1158
  "./src/codegen/handlers/deserialize/DeserializeFunctionHandler.ts":
1081
1159
  /*!************************************************************************!*\
@@ -1405,7 +1483,7 @@ class EnrichmentNullableObjectHandler extends _types__WEBPACK_IMPORTED_MODULE_0_
1405
1483
  if (enrichedSlot == null) {
1406
1484
  throw new Error(`Error building enricher, could not find slot for ${slotPath.get()}`);
1407
1485
  }
1408
- enriched = enrichedSlot.nested(property.name, property.name);
1486
+ enriched = enrichedSlot.nested(property.name, `[${enrichedPath}]`);
1409
1487
  }
1410
1488
  return builder;
1411
1489
  }
@@ -1424,22 +1502,29 @@ __webpack_require__.r(__webpack_exports__);
1424
1502
  __webpack_require__.d(__webpack_exports__, {
1425
1503
  EnrichmentObjectHandler: () => (EnrichmentObjectHandler)
1426
1504
  });
1505
+ /* ESM import */var _SlotPath__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../SlotPath */ "./src/codegen/SlotPath.ts");
1427
1506
  /* ESM import */var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ "./src/codegen/handlers/types.ts");
1428
1507
  /* ESM import */var _schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../schema */ "./src/schema/types.ts");
1429
1508
 
1430
1509
 
1510
+
1431
1511
  class EnrichmentObjectHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
1432
1512
  handle(property, builder) {
1433
1513
  if (property.type === _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Object && (property.isNullable || property.isOptional) === false) {
1434
- const assignmentSlot = builder.get("factory.function.assignment");
1435
- const childPath = property.getAssignmentPath({ parent: "enriched" });
1436
- if (assignmentSlot == null) {
1437
- throw new Error("Error building enricher, could not find slot for factory.function.assignment");
1514
+ const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_2__.SlotPath("factory", "function", "enriched", "object", "enriched");
1515
+ const nestedSlotPath = this.buildSlotPath(property, slotPath);
1516
+ // Generate null check for current level using parent relationships
1517
+ const enrichedPath = property.getAssignmentPath({ parent: "enriched" });
1518
+ const slot = builder.get("factory.function.assignment");
1519
+ slot.assign(enrichedPath).value(`enableChangeTracking(${enrichedPath} || {}, "${property.name}")`);
1520
+ let enriched = builder.getOrDefault(nestedSlotPath.get());
1521
+ if (enriched == null) {
1522
+ const enrichedSlot = builder.get(slotPath.get());
1523
+ if (enrichedSlot == null) {
1524
+ throw new Error(`Error building enricher, could not find slot for ${slotPath.get()}`);
1525
+ }
1526
+ enriched = enrichedSlot.nested(property.name, `[${enrichedPath}]`);
1438
1527
  }
1439
- assignmentSlot.assign(childPath, { name: `[${childPath}]` }).call("enableChangeTracking", { name: "builder" });
1440
- const changeTrackingSlot = builder.get("factory.function.tracking.freeze");
1441
- const selectorPath = property.getSelectrorPath({ parent: "enriched" });
1442
- changeTrackingSlot.if(`${selectorPath} != null`, { unshift: true }).unshiftBody(`${selectorPath} = Object.freeze(${selectorPath})`);
1443
1528
  return builder;
1444
1529
  }
1445
1530
  return super.handle(property, builder);
@@ -2170,8 +2255,7 @@ __webpack_require__.d(__webpack_exports__, {
2170
2255
  class SerializeDateHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
2171
2256
  handle(property, builder) {
2172
2257
  if (property.type === _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Date) {
2173
- const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_2__.SlotPath("result.variable.object");
2174
- let objectBuilder = builder.get(slotPath.get());
2258
+ let objectBuilder = builder.get("if");
2175
2259
  const entitySelectorPath = property.getSelectrorPath({ parent: "entity" });
2176
2260
  const entityAssignmentPath = property.getAssignmentPath({ parent: "result" });
2177
2261
  const assignment = `${property.name}: ${entitySelectorPath} instanceof Date ? ${entitySelectorPath}.toISOString() : ${entitySelectorPath}`;
@@ -2185,12 +2269,14 @@ class SerializeDateHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyI
2185
2269
  }
2186
2270
  // A date cannot be a nested object, just do the assignment
2187
2271
  if (property.parent == null) {
2188
- objectBuilder.property(assignment);
2272
+ objectBuilder.if(`Object.hasOwn(entity, "${property.name}")`).appendBody(`${entityAssignmentPath} = ${entitySelectorPath}`);
2189
2273
  return builder;
2190
2274
  }
2191
- slotPath.push(...property.getParentPathArray());
2192
- const nestedObjectBuilder = builder.get(slotPath.get());
2193
- nestedObjectBuilder.property(assignment);
2275
+ // TODO: SOLVE THIS, IT IS CLOSE
2276
+ //const slotPath = new SlotPath(...property.getParentPathArray());
2277
+ // slotPath.push(...property.getParentPathArray());
2278
+ // const nestedObjectBuilder = builder.get<ObjectBuilder>(slotPath.get());
2279
+ // nestedObjectBuilder.property(assignment)
2194
2280
  return builder;
2195
2281
  }
2196
2282
  return super.handle(property, builder);
@@ -2217,15 +2303,52 @@ __webpack_require__.d(__webpack_exports__, {
2217
2303
  class SerializeObjectHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
2218
2304
  handle(property, builder) {
2219
2305
  if (property.type === _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Object) {
2220
- const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_2__.SlotPath("result.variable.object");
2221
- let objectBuilder = builder.get(slotPath.get());
2306
+ const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_2__.SlotPath("assignments");
2307
+ const childPath = property.getAssignmentPath({ parent: "result" });
2308
+ if (property.isNullable || property.isOptional) {
2309
+ // Do nothing if it's nullable or optional as property assignments will check
2310
+ // and create if it does not exist. This way we can handle null/optional
2311
+ return builder;
2312
+ }
2313
+ const slot = builder.get(slotPath.get());
2314
+ slot.assign(`${childPath}`, { name: `[${childPath}]` }).value("{}");
2315
+ return builder;
2316
+ }
2317
+ return super.handle(property, builder);
2318
+ }
2319
+ }
2320
+
2321
+
2322
+ }),
2323
+ "./src/codegen/handlers/serialize/SerializeSerializerHandler.ts":
2324
+ /*!**********************************************************************!*\
2325
+ !*** ./src/codegen/handlers/serialize/SerializeSerializerHandler.ts ***!
2326
+ \**********************************************************************/
2327
+ (function (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
2328
+ __webpack_require__.r(__webpack_exports__);
2329
+ __webpack_require__.d(__webpack_exports__, {
2330
+ SerializeSerializerHandler: () => (SerializeSerializerHandler)
2331
+ });
2332
+ /* ESM import */var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ "./src/codegen/handlers/types.ts");
2333
+
2334
+ class SerializeSerializerHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
2335
+ handle(property, builder) {
2336
+ if (property.valueSerializer != null) {
2337
+ const objectBuilder = builder.getOrDefault("if");
2338
+ const assignmentBuilder = builder.getOrDefault("functions");
2339
+ const entitySelectorPath = property.getAssignmentPath({ parent: "entity" });
2340
+ const resultSelectorPath = property.getAssignmentPath({ parent: "result" });
2341
+ const defaultFunctionWithParameters = this.toNamedFunction(property.valueSerializer.toString(), assignmentBuilder);
2342
+ defaultFunctionWithParameters.builder.parameters(...defaultFunctionWithParameters.parameters.map((_, i) => ({ name: defaultFunctionWithParameters.parameters[i], callName: entitySelectorPath })));
2222
2343
  if (property.parent == null) {
2223
- objectBuilder.nested(property.name, property.name);
2344
+ objectBuilder.if(`Object.hasOwn(entity, "${property.name}")`).appendBody(`${resultSelectorPath} = ${defaultFunctionWithParameters.builder.toCallable()}`);
2224
2345
  return builder;
2225
2346
  }
2226
- slotPath.push(...property.getParentPathArray());
2227
- const nestedObjectBuilder = builder.get(slotPath.get());
2228
- nestedObjectBuilder.nested(property.name, property.name);
2347
+ // TODO: SOLVE THIS
2348
+ //const slotPath = new SlotPath(...property.getParentPathArray());
2349
+ // const slotPath = new SlotPath(...property.getParentPathArray());
2350
+ // objectBuilder = objectBuilder.get<ObjectBuilder>(slotPath.get());
2351
+ // objectBuilder.property(`${property.name}: ${defaultFunctionWithParameters.builder.toCallable()}`);
2229
2352
  return builder;
2230
2353
  }
2231
2354
  return super.handle(property, builder);
@@ -2243,7 +2366,7 @@ __webpack_require__.r(__webpack_exports__);
2243
2366
  __webpack_require__.d(__webpack_exports__, {
2244
2367
  SerializeValueHandler: () => (SerializeValueHandler)
2245
2368
  });
2246
- /* ESM import */var _SlotPath__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../SlotPath */ "./src/codegen/SlotPath.ts");
2369
+ /* ESM import */var _blocks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../blocks */ "./src/codegen/blocks.ts");
2247
2370
  /* ESM import */var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ "./src/codegen/handlers/types.ts");
2248
2371
  /* ESM import */var _schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../schema */ "./src/schema/types.ts");
2249
2372
 
@@ -2252,20 +2375,24 @@ __webpack_require__.d(__webpack_exports__, {
2252
2375
  class SerializeValueHandler extends _types__WEBPACK_IMPORTED_MODULE_0__.PropertyInfoHandler {
2253
2376
  handle(property, builder) {
2254
2377
  if (property.type != _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Object && property.type != _schema__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Date) {
2255
- let objectBuilder = builder.getOrDefault("result.variable.object");
2378
+ const slot = builder.getOrDefault("if");
2256
2379
  const entitySelectorPath = property.getAssignmentPath({ parent: "entity" });
2257
- if (objectBuilder == null) {
2258
- objectBuilder = builder.get("result")
2259
- .assign("const result", { name: "variable" })
2260
- .object({ name: "object" });
2261
- }
2380
+ const resultSelectorPath = property.getAssignmentPath({ parent: "result" });
2262
2381
  if (property.parent == null) {
2263
- objectBuilder.property(`${property.name}: ${entitySelectorPath}`);
2382
+ // Only assign if the incoming entity has the property, this allows partial serialization
2383
+ // Basically only serialize what is there
2384
+ slot.if(`Object.hasOwn(entity, "${property.name}")`).appendBody(`${resultSelectorPath} = ${entitySelectorPath}`);
2264
2385
  return builder;
2265
2386
  }
2266
- const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_2__.SlotPath(...property.getParentPathArray());
2267
- objectBuilder = objectBuilder.get(slotPath.get());
2268
- objectBuilder.property(`${property.name}: ${entitySelectorPath}`);
2387
+ const parentSelectPath = ["entity", ...property.getParentPathArray()].join(".");
2388
+ const parentAssignPath = ["result", ...property.getParentPathArray()].join(".");
2389
+ const ifSlot = slot.if(`Object.hasOwn(${parentSelectPath}, "${property.name}")`);
2390
+ if (property.parent.isNullable || property.parent.isOptional) {
2391
+ // Do this for nullable/optional parents. Parent will be null if its nullable/optional
2392
+ const conditionallyCreateParent = new _blocks__WEBPACK_IMPORTED_MODULE_2__.IfBuilder(`${parentAssignPath} == null`).appendBody(`${parentAssignPath} = {}`);
2393
+ ifSlot.appendBody(conditionallyCreateParent.toString());
2394
+ }
2395
+ ifSlot.appendBody(`${resultSelectorPath} = ${entitySelectorPath}`);
2269
2396
  return builder;
2270
2397
  }
2271
2398
  return super.handle(property, builder);
@@ -2451,11 +2578,10 @@ class PropertyInfoHandler {
2451
2578
  const useFromPropertyName = property.from != null;
2452
2579
  const entitySelectorPath = property.getAssignmentPath({ parent: "entity", useFromPropertyName });
2453
2580
  if (property.parent != null) {
2454
- const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_1__.SlotPath("factory", "function", "assignment");
2581
+ const slotPath = new _SlotPath__WEBPACK_IMPORTED_MODULE_1__.SlotPath("factory", "function", "enriched", "object", "enriched");
2455
2582
  const path = property.parent.getAssignmentPath({ parent: "enriched" });
2456
2583
  slotPath.push(`[${path}]`);
2457
- const builder = root.get(slotPath.get());
2458
- const objectBuilder = builder.getValue;
2584
+ const objectBuilder = root.get(slotPath.get());
2459
2585
  const childEntityPathSelector = property.getSelectrorPath({ parent: "entity", useFromPropertyName });
2460
2586
  objectBuilder.property(`${property.name}: ${childEntityPathSelector}`);
2461
2587
  return;
@@ -3240,17 +3366,23 @@ class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODUL
3240
3366
  stripCodeBuilder.slot("result");
3241
3367
  stripCodeBuilder.slot("return").raw(` return result;`);
3242
3368
  const cloneCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
3243
- cloneCodeBuilder.slot("result");
3369
+ cloneCodeBuilder.slot("result").raw("const result = {};");
3370
+ ;
3371
+ cloneCodeBuilder.slot("assignments");
3372
+ cloneCodeBuilder.slot("if");
3244
3373
  cloneCodeBuilder.slot("return").raw(` return result;`);
3245
3374
  const compareCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
3246
3375
  compareCodeBuilder.slot("result");
3247
3376
  compareCodeBuilder.slot("return").raw(` return result;`);
3248
3377
  const deserializeCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
3378
+ deserializeCodeBuilder.slot("functions");
3249
3379
  deserializeCodeBuilder.slot("result");
3250
3380
  deserializeCodeBuilder.slot("if");
3251
3381
  deserializeCodeBuilder.slot("return").raw(` return result;`);
3252
3382
  const serializeCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
3253
- serializeCodeBuilder.slot("result");
3383
+ serializeCodeBuilder.slot("result").raw("const result = {};");
3384
+ serializeCodeBuilder.slot("assignments");
3385
+ serializeCodeBuilder.slot("functions");
3254
3386
  serializeCodeBuilder.slot("if");
3255
3387
  serializeCodeBuilder.slot("return").raw(` return result;`);
3256
3388
  const idSelectorCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
@@ -3347,7 +3479,6 @@ class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODUL
3347
3479
  };
3348
3480
  const getProperty = (id) => propertyMap.get(id);
3349
3481
  const id = (0,_utilities__WEBPACK_IMPORTED_MODULE_19__.hash)([...allPropertyNamesAndPaths, this.collectionName].join(","));
3350
- const paths = new Set(properties.map(x => x.getAssignmentPath()));
3351
3482
  // memoize this by the validProperties
3352
3483
  // TODO: See if we can generate a function to do this and eliminate loops
3353
3484
  const deserializePartial = (item, properties) => {
@@ -4074,7 +4205,7 @@ class SchemaSerialize extends _base_SchemaBase__WEBPACK_IMPORTED_MODULE_0__.Sche
4074
4205
  this.instance = current.instance;
4075
4206
  this.valueSerializer = serializer;
4076
4207
  }
4077
- deserializer(deserializer) {
4208
+ deserialize(deserializer) {
4078
4209
  return new _SchemaDeserialize__WEBPACK_IMPORTED_MODULE_1__.SchemaDeserialize(deserializer, this);
4079
4210
  }
4080
4211
  }