@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/assertions/index.d.ts +1 -1
- package/dist/assertions/index.js +7 -1
- package/dist/assertions/index.js.map +1 -1
- package/dist/codegen/handlers/SerializeHandlerBuilder.d.ts +2 -2
- package/dist/codegen/handlers/clone/CloneArrayHandler.d.ts +6 -0
- package/dist/codegen/handlers/deserialize/DeserializeDeserializerHandler.d.ts +6 -0
- package/dist/codegen/handlers/serialize/SerializeSerializerHandler.d.ts +6 -0
- package/dist/collections/index.js.map +1 -1
- package/dist/expressions/index.js +67 -23
- package/dist/expressions/index.js.map +1 -1
- package/dist/index.js +327 -107
- package/dist/index.js.map +1 -1
- package/dist/plugins/index.js +51 -6
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/translators/SqlTranslator.d.ts +2 -1
- package/dist/schema/index.js +209 -78
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/property/modifiers/SchemaSerialize.d.ts +1 -1
- package/dist/schema/testSchemas.test.d.ts +269 -0
- package/dist/schema/types.d.ts +5 -2
- package/dist/utilities/dbPluginEventUtils.d.ts +1 -1
- package/dist/utilities/index.js.map +1 -1
- package/package.json +3 -4
- package/readme.md +0 -6
- /package/dist/{pipeline/TrampolinePipeline.test.d.ts → schema/schemaGeneration.test.d.ts} +0 -0
|
@@ -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,
|
|
14
|
+
map(data: unknown, option: QueryOption<TShape, "map">): TShape;
|
|
14
15
|
}
|
package/dist/schema/index.js
CHANGED
|
@@ -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
|
|
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
|
|
547
|
-
/* ESM import */var
|
|
548
|
-
/* ESM import */var
|
|
549
|
-
/* ESM import */var
|
|
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
|
|
561
|
-
.setNext(new
|
|
562
|
-
.setNext(new
|
|
563
|
-
.setNext(new
|
|
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
|
|
825
|
-
/* ESM import */var
|
|
826
|
-
/* ESM import */var
|
|
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
|
|
834
|
-
handler
|
|
835
|
-
.setNext(new
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
926
|
-
const entitySelectorPath = property.
|
|
927
|
-
|
|
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
|
-
|
|
967
|
+
// we are a first level property
|
|
968
|
+
slot.if(`${entitySelectorPath} != null`).appendBody(`${resultAssignmentPath} = ${entitySelectorPath}`);
|
|
934
969
|
return builder;
|
|
935
970
|
}
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
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,
|
|
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
|
|
1435
|
-
const
|
|
1436
|
-
|
|
1437
|
-
|
|
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
|
-
|
|
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(
|
|
2272
|
+
objectBuilder.if(`Object.hasOwn(entity, "${property.name}")`).appendBody(`${entityAssignmentPath} = ${entitySelectorPath}`);
|
|
2189
2273
|
return builder;
|
|
2190
2274
|
}
|
|
2191
|
-
|
|
2192
|
-
const
|
|
2193
|
-
|
|
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("
|
|
2221
|
-
|
|
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.
|
|
2344
|
+
objectBuilder.if(`Object.hasOwn(entity, "${property.name}")`).appendBody(`${resultSelectorPath} = ${defaultFunctionWithParameters.builder.toCallable()}`);
|
|
2224
2345
|
return builder;
|
|
2225
2346
|
}
|
|
2226
|
-
|
|
2227
|
-
const
|
|
2228
|
-
|
|
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
|
|
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
|
-
|
|
2378
|
+
const slot = builder.getOrDefault("if");
|
|
2256
2379
|
const entitySelectorPath = property.getAssignmentPath({ parent: "entity" });
|
|
2257
|
-
|
|
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
|
-
|
|
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
|
|
2267
|
-
|
|
2268
|
-
|
|
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", "
|
|
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
|
|
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
|
-
|
|
4208
|
+
deserialize(deserializer) {
|
|
4078
4209
|
return new _SchemaDeserialize__WEBPACK_IMPORTED_MODULE_1__.SchemaDeserialize(deserializer, this);
|
|
4079
4210
|
}
|
|
4080
4211
|
}
|