@routier/core 0.0.1-alpha.2 → 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/ReadonlySchemaCollection.d.ts +17 -0
- package/dist/collections/SchemaCollection.d.ts +5 -3
- package/dist/collections/index.d.ts +1 -0
- package/dist/collections/index.js +67 -9
- 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/expressions/parser.d.ts +1 -1
- package/dist/index.js +598 -223
- package/dist/index.js.map +1 -1
- package/dist/plugins/index.js +58 -9
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/translators/SqlTranslator.d.ts +2 -1
- package/dist/plugins/types.d.ts +2 -0
- package/dist/schema/communication/broadcast.d.ts +11 -0
- package/dist/schema/index.js +420 -182
- 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 +7 -4
- package/dist/utilities/dbPluginEventUtils.d.ts +1 -1
- package/dist/utilities/functions.d.ts +1 -0
- package/dist/utilities/index.d.ts +1 -0
- package/dist/utilities/index.js +18 -1
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/types.d.ts +3 -0
- package/package.json +3 -4
- package/readme.md +0 -6
- /package/dist/{pipeline/TrampolinePipeline.test.d.ts → schema/schemaGeneration.test.d.ts} +0 -0
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;
|
|
@@ -2601,6 +2727,39 @@ class SchemaError extends Error {
|
|
|
2601
2727
|
}
|
|
2602
2728
|
|
|
2603
2729
|
|
|
2730
|
+
}),
|
|
2731
|
+
"./src/performance/index.ts":
|
|
2732
|
+
/*!**********************************!*\
|
|
2733
|
+
!*** ./src/performance/index.ts ***!
|
|
2734
|
+
\**********************************/
|
|
2735
|
+
(function (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
2736
|
+
__webpack_require__.r(__webpack_exports__);
|
|
2737
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
2738
|
+
measure: () => (measure),
|
|
2739
|
+
now: () => (now)
|
|
2740
|
+
});
|
|
2741
|
+
const measurements = {};
|
|
2742
|
+
const now = () => {
|
|
2743
|
+
if (typeof performance !== 'undefined' && performance.now) {
|
|
2744
|
+
// Browser or modern Node.js
|
|
2745
|
+
return performance.now();
|
|
2746
|
+
}
|
|
2747
|
+
// Fallback for older environments
|
|
2748
|
+
return Date.now();
|
|
2749
|
+
};
|
|
2750
|
+
const measure = {
|
|
2751
|
+
start: (name) => {
|
|
2752
|
+
measurements[name] = now();
|
|
2753
|
+
},
|
|
2754
|
+
end: (name) => {
|
|
2755
|
+
const start = measurements[name];
|
|
2756
|
+
delete measurements[name];
|
|
2757
|
+
const delta = now() - start;
|
|
2758
|
+
console.log(`[ROUTIER] - Performance: ${name} took ${delta}`);
|
|
2759
|
+
}
|
|
2760
|
+
};
|
|
2761
|
+
|
|
2762
|
+
|
|
2604
2763
|
}),
|
|
2605
2764
|
"./src/schema/PropertyInfo.ts":
|
|
2606
2765
|
/*!************************************!*\
|
|
@@ -2942,28 +3101,28 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2942
3101
|
__webpack_require__.d(__webpack_exports__, {
|
|
2943
3102
|
SchemaDefinition: () => (SchemaDefinition)
|
|
2944
3103
|
});
|
|
2945
|
-
/* ESM import */var
|
|
2946
|
-
/* ESM import */var
|
|
2947
|
-
/* ESM import */var
|
|
2948
|
-
/* ESM import */var
|
|
2949
|
-
/* ESM import */var
|
|
2950
|
-
/* ESM import */var
|
|
2951
|
-
/* ESM import */var
|
|
2952
|
-
/* ESM import */var
|
|
2953
|
-
/* ESM import */var
|
|
2954
|
-
/* ESM import */var
|
|
2955
|
-
/* ESM import */var
|
|
2956
|
-
/* ESM import */var
|
|
2957
|
-
/* ESM import */var
|
|
2958
|
-
/* ESM import */var
|
|
2959
|
-
/* ESM import */var
|
|
2960
|
-
/* ESM import */var
|
|
2961
|
-
/* ESM import */var
|
|
3104
|
+
/* ESM import */var _table_SchemaFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./table/SchemaFunction */ "./src/schema/table/SchemaFunction.ts");
|
|
3105
|
+
/* ESM import */var _table_SchemaComputed__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./table/SchemaComputed */ "./src/schema/table/SchemaComputed.ts");
|
|
3106
|
+
/* ESM import */var _property_base_SchemaBase__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./property/base/SchemaBase */ "./src/schema/property/base/SchemaBase.ts");
|
|
3107
|
+
/* ESM import */var _PropertyInfo__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./PropertyInfo */ "./src/schema/PropertyInfo.ts");
|
|
3108
|
+
/* ESM import */var _codegen__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../codegen */ "./src/codegen/blocks.ts");
|
|
3109
|
+
/* ESM import */var _codegen_handlers_EnrichmentHandlerBuilder__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../codegen/handlers/EnrichmentHandlerBuilder */ "./src/codegen/handlers/EnrichmentHandlerBuilder.ts");
|
|
3110
|
+
/* ESM import */var _codegen_handlers_MergeHandlerBuilder__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../codegen/handlers/MergeHandlerBuilder */ "./src/codegen/handlers/MergeHandlerBuilder.ts");
|
|
3111
|
+
/* ESM import */var _codegen_handlers_PrepareHandlerBuilder__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../codegen/handlers/PrepareHandlerBuilder */ "./src/codegen/handlers/PrepareHandlerBuilder.ts");
|
|
3112
|
+
/* ESM import */var _codegen_handlers_StripHandlerBuilder__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../codegen/handlers/StripHandlerBuilder */ "./src/codegen/handlers/StripHandlerBuilder.ts");
|
|
3113
|
+
/* ESM import */var _codegen_handlers_CloneHandlerBuilder__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../codegen/handlers/CloneHandlerBuilder */ "./src/codegen/handlers/CloneHandlerBuilder.ts");
|
|
3114
|
+
/* ESM import */var _codegen_handlers_CompareHandlerBuilder__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../codegen/handlers/CompareHandlerBuilder */ "./src/codegen/handlers/CompareHandlerBuilder.ts");
|
|
3115
|
+
/* ESM import */var _codegen_handlers_DeserializeHandlerBuilder__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../codegen/handlers/DeserializeHandlerBuilder */ "./src/codegen/handlers/DeserializeHandlerBuilder.ts");
|
|
3116
|
+
/* ESM import */var _codegen_handlers_HashTypeHandlerBuilder__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../codegen/handlers/HashTypeHandlerBuilder */ "./src/codegen/handlers/HashTypeHandlerBuilder.ts");
|
|
3117
|
+
/* ESM import */var _codegen_handlers_IdSelectorHandlerBuilder__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../codegen/handlers/IdSelectorHandlerBuilder */ "./src/codegen/handlers/IdSelectorHandlerBuilder.ts");
|
|
3118
|
+
/* ESM import */var _codegen_handlers_HashHandlerBuilder__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../codegen/handlers/HashHandlerBuilder */ "./src/codegen/handlers/HashHandlerBuilder.ts");
|
|
3119
|
+
/* ESM import */var _codegen_handlers_EnableChangeTrackingHandlerBuilder__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../codegen/handlers/EnableChangeTrackingHandlerBuilder */ "./src/codegen/handlers/EnableChangeTrackingHandlerBuilder.ts");
|
|
3120
|
+
/* ESM import */var _codegen_handlers_FreezeHandlerBuilder__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../codegen/handlers/FreezeHandlerBuilder */ "./src/codegen/handlers/FreezeHandlerBuilder.ts");
|
|
2962
3121
|
/* ESM import */var _errors_SchemaError__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../errors/SchemaError */ "./src/errors/SchemaError.ts");
|
|
2963
|
-
/* ESM import */var
|
|
2964
|
-
/* ESM import */var
|
|
2965
|
-
/* ESM import */var
|
|
2966
|
-
/* ESM import */var
|
|
3122
|
+
/* ESM import */var _codegen_handlers_SerializeHandlerBuilder__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../codegen/handlers/SerializeHandlerBuilder */ "./src/codegen/handlers/SerializeHandlerBuilder.ts");
|
|
3123
|
+
/* ESM import */var _utilities__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../utilities */ "./src/utilities/strings.ts");
|
|
3124
|
+
/* ESM import */var _types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types */ "./src/schema/types.ts");
|
|
3125
|
+
/* ESM import */var _communication_broadcast__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./communication/broadcast */ "./src/schema/communication/broadcast.ts");
|
|
2967
3126
|
|
|
2968
3127
|
|
|
2969
3128
|
|
|
@@ -2985,54 +3144,10 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
2985
3144
|
|
|
2986
3145
|
|
|
2987
3146
|
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
// many db sets
|
|
2991
|
-
class CollectionSubscription {
|
|
2992
|
-
_channel;
|
|
2993
|
-
_id = (0,_utilities__WEBPACK_IMPORTED_MODULE_0__.uuid)();
|
|
2994
|
-
_callback = null;
|
|
2995
|
-
constructor(id, signal) {
|
|
2996
|
-
// The id is the computed id from the collection. We need a static id so we can communicate across different
|
|
2997
|
-
// instances of a data store
|
|
2998
|
-
this._channel = new BroadcastChannel(`__routier-unidirectional-subscription-channel-${id}`);
|
|
2999
|
-
this._channel.onmessage = (event) => {
|
|
3000
|
-
const message = event.data;
|
|
3001
|
-
if (message.id === this._id) {
|
|
3002
|
-
return;
|
|
3003
|
-
}
|
|
3004
|
-
if (this._callback != null) {
|
|
3005
|
-
this._callback(message.changes);
|
|
3006
|
-
}
|
|
3007
|
-
};
|
|
3008
|
-
if (signal) {
|
|
3009
|
-
signal.addEventListener("abort", () => {
|
|
3010
|
-
this[Symbol.dispose]();
|
|
3011
|
-
}, { once: true });
|
|
3012
|
-
}
|
|
3013
|
-
}
|
|
3014
|
-
send(changes) {
|
|
3015
|
-
const message = {
|
|
3016
|
-
id: this._id,
|
|
3017
|
-
changes
|
|
3018
|
-
};
|
|
3019
|
-
this._channel.postMessage(message);
|
|
3020
|
-
}
|
|
3021
|
-
onMessage(callback) {
|
|
3022
|
-
this._callback = callback;
|
|
3023
|
-
}
|
|
3024
|
-
dispose() {
|
|
3025
|
-
this[Symbol.dispose]();
|
|
3026
|
-
}
|
|
3027
|
-
[Symbol.dispose]() {
|
|
3028
|
-
this._channel.onmessage = null;
|
|
3029
|
-
this._channel.close();
|
|
3030
|
-
this._channel = null;
|
|
3031
|
-
}
|
|
3032
|
-
}
|
|
3033
|
-
class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODULE_1__.SchemaBase {
|
|
3147
|
+
|
|
3148
|
+
class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODULE_0__.SchemaBase {
|
|
3034
3149
|
instance;
|
|
3035
|
-
type =
|
|
3150
|
+
type = _types__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Definition;
|
|
3036
3151
|
collectionName;
|
|
3037
3152
|
constructor(collectionName, schema) {
|
|
3038
3153
|
super();
|
|
@@ -3043,8 +3158,8 @@ class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODUL
|
|
|
3043
3158
|
}
|
|
3044
3159
|
modify(builder) {
|
|
3045
3160
|
const b = {
|
|
3046
|
-
function: (fn, injected) => new
|
|
3047
|
-
computed: (fn, injected) => new
|
|
3161
|
+
function: (fn, injected) => new _table_SchemaFunction__WEBPACK_IMPORTED_MODULE_2__.SchemaFunction(fn, injected),
|
|
3162
|
+
computed: (fn, injected) => new _table_SchemaComputed__WEBPACK_IMPORTED_MODULE_3__.SchemaComputed(fn, injected)
|
|
3048
3163
|
};
|
|
3049
3164
|
const r = builder(b);
|
|
3050
3165
|
return new SchemaDefinition(this.collectionName, { ...this.instance, ...r });
|
|
@@ -3056,7 +3171,7 @@ class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODUL
|
|
|
3056
3171
|
const properties = [];
|
|
3057
3172
|
for (let i = 0; i < explore.length; i++) {
|
|
3058
3173
|
const item = explore[i];
|
|
3059
|
-
if (item.instance.type ===
|
|
3174
|
+
if (item.instance.type === _types__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Definition) {
|
|
3060
3175
|
explore.push({
|
|
3061
3176
|
path: null,
|
|
3062
3177
|
instance: item.instance.instance,
|
|
@@ -3071,8 +3186,8 @@ class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODUL
|
|
|
3071
3186
|
const previousParent = item.parents.length === 0
|
|
3072
3187
|
? null
|
|
3073
3188
|
: item.parents[item.parents.length - 1].propertyInfo;
|
|
3074
|
-
if (propertyInstance.type ===
|
|
3075
|
-
const propertyInfo = new
|
|
3189
|
+
if (propertyInstance.type === _types__WEBPACK_IMPORTED_MODULE_1__.SchemaTypes.Object) {
|
|
3190
|
+
const propertyInfo = new _PropertyInfo__WEBPACK_IMPORTED_MODULE_4__.PropertyInfo(propertyInstance, key, previousParent);
|
|
3076
3191
|
explore.push({
|
|
3077
3192
|
path: [item.path, key].filter((w) => w != null).join("."),
|
|
3078
3193
|
instance: propertyInstance.instance,
|
|
@@ -3089,7 +3204,7 @@ class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODUL
|
|
|
3089
3204
|
previousParent.children.push(propertyInfo);
|
|
3090
3205
|
continue;
|
|
3091
3206
|
}
|
|
3092
|
-
const childPrimitivePropertyInfo = new
|
|
3207
|
+
const childPrimitivePropertyInfo = new _PropertyInfo__WEBPACK_IMPORTED_MODULE_4__.PropertyInfo(item.instance[key], key, previousParent);
|
|
3093
3208
|
if (previousParent === null) {
|
|
3094
3209
|
properties.push(childPrimitivePropertyInfo);
|
|
3095
3210
|
continue;
|
|
@@ -3179,19 +3294,19 @@ class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODUL
|
|
|
3179
3294
|
const schema = this;
|
|
3180
3295
|
const properties = [];
|
|
3181
3296
|
const propertyMap = new Map();
|
|
3182
|
-
const enrichmentHandlerBuilder = new
|
|
3183
|
-
const mergeHandlerFactory = new
|
|
3184
|
-
const prepareHandlerBuilder = new
|
|
3185
|
-
const stripHandlerBuilder = new
|
|
3186
|
-
const cloneHandlerBuilder = new
|
|
3187
|
-
const compareHandlerBuilder = new
|
|
3188
|
-
const deserializeHandlerBuilder = new
|
|
3189
|
-
const hashTypeHandlerBuilder = new
|
|
3190
|
-
const idSelectorHandlerBuilder = new
|
|
3191
|
-
const hashHandlerBuilder = new
|
|
3192
|
-
const enableChangeTrackingHandlerBuilder = new
|
|
3193
|
-
const freezeHandlerBuilder = new
|
|
3194
|
-
const serializeHandlerBuilder = new
|
|
3297
|
+
const enrichmentHandlerBuilder = new _codegen_handlers_EnrichmentHandlerBuilder__WEBPACK_IMPORTED_MODULE_5__.EnrichmentHandlerBuilder();
|
|
3298
|
+
const mergeHandlerFactory = new _codegen_handlers_MergeHandlerBuilder__WEBPACK_IMPORTED_MODULE_6__.MergeHandlerBuilder();
|
|
3299
|
+
const prepareHandlerBuilder = new _codegen_handlers_PrepareHandlerBuilder__WEBPACK_IMPORTED_MODULE_7__.PrepareHandlerBuilder();
|
|
3300
|
+
const stripHandlerBuilder = new _codegen_handlers_StripHandlerBuilder__WEBPACK_IMPORTED_MODULE_8__.StripHandlerBuilder();
|
|
3301
|
+
const cloneHandlerBuilder = new _codegen_handlers_CloneHandlerBuilder__WEBPACK_IMPORTED_MODULE_9__.CloneHandlerBuilder();
|
|
3302
|
+
const compareHandlerBuilder = new _codegen_handlers_CompareHandlerBuilder__WEBPACK_IMPORTED_MODULE_10__.CompareHandlerBuilder();
|
|
3303
|
+
const deserializeHandlerBuilder = new _codegen_handlers_DeserializeHandlerBuilder__WEBPACK_IMPORTED_MODULE_11__.DeserializeHandlerBuilder();
|
|
3304
|
+
const hashTypeHandlerBuilder = new _codegen_handlers_HashTypeHandlerBuilder__WEBPACK_IMPORTED_MODULE_12__.HashTypeHandlerBuilder();
|
|
3305
|
+
const idSelectorHandlerBuilder = new _codegen_handlers_IdSelectorHandlerBuilder__WEBPACK_IMPORTED_MODULE_13__.IdSelectorHandlerBuilder();
|
|
3306
|
+
const hashHandlerBuilder = new _codegen_handlers_HashHandlerBuilder__WEBPACK_IMPORTED_MODULE_14__.HashHandlerBuilder();
|
|
3307
|
+
const enableChangeTrackingHandlerBuilder = new _codegen_handlers_EnableChangeTrackingHandlerBuilder__WEBPACK_IMPORTED_MODULE_15__.EnableChangeTrackingHandlerBuilder();
|
|
3308
|
+
const freezeHandlerBuilder = new _codegen_handlers_FreezeHandlerBuilder__WEBPACK_IMPORTED_MODULE_16__.FreezeHandlerBuilder();
|
|
3309
|
+
const serializeHandlerBuilder = new _codegen_handlers_SerializeHandlerBuilder__WEBPACK_IMPORTED_MODULE_17__.SerializeHandlerBuilder();
|
|
3195
3310
|
const enricher = enrichmentHandlerBuilder.build();
|
|
3196
3311
|
const merge = mergeHandlerFactory.build();
|
|
3197
3312
|
const prepare = prepareHandlerBuilder.build();
|
|
@@ -3205,15 +3320,15 @@ class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODUL
|
|
|
3205
3320
|
const enableChangeTrackingHandler = enableChangeTrackingHandlerBuilder.build();
|
|
3206
3321
|
const freezeHandler = freezeHandlerBuilder.build();
|
|
3207
3322
|
const serializeHandler = serializeHandlerBuilder.build();
|
|
3208
|
-
const changeTrackingCodeBuilder = new
|
|
3323
|
+
const changeTrackingCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
|
|
3209
3324
|
changeTrackingCodeBuilder.raw(`function ${this.createChangeTracker.toString()}`);
|
|
3210
3325
|
changeTrackingCodeBuilder.slot("declarations").variable("enableChangeTracking").value('createChangeTracker()');
|
|
3211
3326
|
changeTrackingCodeBuilder.slot("assignment");
|
|
3212
3327
|
changeTrackingCodeBuilder.slot("return").raw('\treturn enableChangeTracking(entity);');
|
|
3213
|
-
const freezeCodeBuilder = new
|
|
3328
|
+
const freezeCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
|
|
3214
3329
|
freezeCodeBuilder.slot("assignment");
|
|
3215
3330
|
freezeCodeBuilder.slot("return").raw('\treturn Object.freeze(entity);');
|
|
3216
|
-
const enricherCodeBuilder = new
|
|
3331
|
+
const enricherCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
|
|
3217
3332
|
const enricherFunctionRoot = enricherCodeBuilder.factory("factory", { name: "factory" }).parameters({ name: "collectionName", value: this.collectionName });
|
|
3218
3333
|
const enricherFunctionBody = enricherFunctionRoot.function(undefined, { name: "function" }).parameters("entity", "changeTrackingType").return();
|
|
3219
3334
|
enricherFunctionBody.raw(`function ${this.createChangeTracker.toString()}`);
|
|
@@ -3224,7 +3339,7 @@ class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODUL
|
|
|
3224
3339
|
enricherFunctionBody.slot("ifs");
|
|
3225
3340
|
enricherFunctionBody.slot("tracking").if('changeTrackingType === "immutable"', { name: "freeze" });
|
|
3226
3341
|
enricherFunctionBody.raw('\treturn enableChangeTracking(enriched);');
|
|
3227
|
-
const mergeCodeBuilder = new
|
|
3342
|
+
const mergeCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
|
|
3228
3343
|
const mergeFunctionRoot = mergeCodeBuilder.factory("factory", { name: "factory" }).parameters({ name: "collectionName", value: this.collectionName });
|
|
3229
3344
|
const mergeFunctionBody = mergeFunctionRoot.function(undefined, { name: "function" }).parameters("destination", "source").return();
|
|
3230
3345
|
const pauseFunctionBody = mergeFunctionBody.function("pause")
|
|
@@ -3243,34 +3358,40 @@ class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODUL
|
|
|
3243
3358
|
unpause();
|
|
3244
3359
|
|
|
3245
3360
|
return destination;`);
|
|
3246
|
-
const prepareCodeBuilder = new
|
|
3361
|
+
const prepareCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
|
|
3247
3362
|
prepareCodeBuilder.slot("result");
|
|
3248
3363
|
prepareCodeBuilder.slot("assignments");
|
|
3249
3364
|
prepareCodeBuilder.slot("return").raw(` return result;`);
|
|
3250
|
-
const stripCodeBuilder = new
|
|
3365
|
+
const stripCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
|
|
3251
3366
|
stripCodeBuilder.slot("result");
|
|
3252
3367
|
stripCodeBuilder.slot("return").raw(` return result;`);
|
|
3253
|
-
const cloneCodeBuilder = new
|
|
3254
|
-
cloneCodeBuilder.slot("result");
|
|
3368
|
+
const cloneCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
|
|
3369
|
+
cloneCodeBuilder.slot("result").raw("const result = {};");
|
|
3370
|
+
;
|
|
3371
|
+
cloneCodeBuilder.slot("assignments");
|
|
3372
|
+
cloneCodeBuilder.slot("if");
|
|
3255
3373
|
cloneCodeBuilder.slot("return").raw(` return result;`);
|
|
3256
|
-
const compareCodeBuilder = new
|
|
3374
|
+
const compareCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
|
|
3257
3375
|
compareCodeBuilder.slot("result");
|
|
3258
3376
|
compareCodeBuilder.slot("return").raw(` return result;`);
|
|
3259
|
-
const deserializeCodeBuilder = new
|
|
3377
|
+
const deserializeCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
|
|
3378
|
+
deserializeCodeBuilder.slot("functions");
|
|
3260
3379
|
deserializeCodeBuilder.slot("result");
|
|
3261
3380
|
deserializeCodeBuilder.slot("if");
|
|
3262
3381
|
deserializeCodeBuilder.slot("return").raw(` return result;`);
|
|
3263
|
-
const serializeCodeBuilder = new
|
|
3264
|
-
serializeCodeBuilder.slot("result");
|
|
3382
|
+
const serializeCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
|
|
3383
|
+
serializeCodeBuilder.slot("result").raw("const result = {};");
|
|
3384
|
+
serializeCodeBuilder.slot("assignments");
|
|
3385
|
+
serializeCodeBuilder.slot("functions");
|
|
3265
3386
|
serializeCodeBuilder.slot("if");
|
|
3266
3387
|
serializeCodeBuilder.slot("return").raw(` return result;`);
|
|
3267
|
-
const idSelectorCodeBuilder = new
|
|
3388
|
+
const idSelectorCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
|
|
3268
3389
|
idSelectorCodeBuilder.slot("result");
|
|
3269
3390
|
idSelectorCodeBuilder.slot("return").raw(` return result;`);
|
|
3270
|
-
const hashTypeCodeBuilder = new
|
|
3391
|
+
const hashTypeCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
|
|
3271
3392
|
hashTypeCodeBuilder.slot("ifs");
|
|
3272
3393
|
hashTypeCodeBuilder.slot("return").raw(` return "Ids";`);
|
|
3273
|
-
const hashCodeBuilder = new
|
|
3394
|
+
const hashCodeBuilder = new _codegen__WEBPACK_IMPORTED_MODULE_18__.CodeBuilder();
|
|
3274
3395
|
hashCodeBuilder.slot("functions").raw(`
|
|
3275
3396
|
function stringifyDate(d) {
|
|
3276
3397
|
|
|
@@ -3296,7 +3417,7 @@ class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODUL
|
|
|
3296
3417
|
hashCodeBuilder.raw(` return result;`);
|
|
3297
3418
|
const idProperties = [];
|
|
3298
3419
|
const allPropertyNamesAndPaths = [];
|
|
3299
|
-
let hashType =
|
|
3420
|
+
let hashType = _types__WEBPACK_IMPORTED_MODULE_1__.HashType.Ids;
|
|
3300
3421
|
let hasIdentities = false;
|
|
3301
3422
|
let hasIdentityKeys = false;
|
|
3302
3423
|
this._iterate(schema, (property) => {
|
|
@@ -3352,13 +3473,12 @@ class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODUL
|
|
|
3352
3473
|
const idPropertyNames = idProperties.map(w => w.name);
|
|
3353
3474
|
const getId = (entity) => {
|
|
3354
3475
|
if (idPropertyNames.length > 1) {
|
|
3355
|
-
return hashFunction(entity,
|
|
3476
|
+
return hashFunction(entity, _types__WEBPACK_IMPORTED_MODULE_1__.HashType.Ids);
|
|
3356
3477
|
}
|
|
3357
3478
|
return getIdsFunction(entity)[0];
|
|
3358
3479
|
};
|
|
3359
3480
|
const getProperty = (id) => propertyMap.get(id);
|
|
3360
|
-
const id = (0,
|
|
3361
|
-
const paths = new Set(properties.map(x => x.getAssignmentPath()));
|
|
3481
|
+
const id = (0,_utilities__WEBPACK_IMPORTED_MODULE_19__.hash)([...allPropertyNamesAndPaths, this.collectionName].join(","));
|
|
3362
3482
|
// memoize this by the validProperties
|
|
3363
3483
|
// TODO: See if we can generate a function to do this and eliminate loops
|
|
3364
3484
|
const deserializePartial = (item, properties) => {
|
|
@@ -3374,7 +3494,7 @@ class SchemaDefinition extends _property_base_SchemaBase__WEBPACK_IMPORTED_MODUL
|
|
|
3374
3494
|
return item;
|
|
3375
3495
|
};
|
|
3376
3496
|
return {
|
|
3377
|
-
createSubscription: (signal) => new
|
|
3497
|
+
createSubscription: (signal) => new _communication_broadcast__WEBPACK_IMPORTED_MODULE_20__.SchemaSubscription(id, signal),
|
|
3378
3498
|
getId,
|
|
3379
3499
|
getProperty,
|
|
3380
3500
|
properties,
|
|
@@ -3493,6 +3613,124 @@ const s = {
|
|
|
3493
3613
|
};
|
|
3494
3614
|
|
|
3495
3615
|
|
|
3616
|
+
}),
|
|
3617
|
+
"./src/schema/communication/broadcast.ts":
|
|
3618
|
+
/*!***********************************************!*\
|
|
3619
|
+
!*** ./src/schema/communication/broadcast.ts ***!
|
|
3620
|
+
\***********************************************/
|
|
3621
|
+
(function (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
3622
|
+
__webpack_require__.r(__webpack_exports__);
|
|
3623
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
3624
|
+
SchemaSubscription: () => (SchemaSubscription)
|
|
3625
|
+
});
|
|
3626
|
+
/* ESM import */var _performance__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../performance */ "./src/performance/index.ts");
|
|
3627
|
+
/* ESM import */var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utilities */ "./src/utilities/uuid.ts");
|
|
3628
|
+
|
|
3629
|
+
|
|
3630
|
+
const registry = {};
|
|
3631
|
+
const getChannelRegistry = (schemaId) => {
|
|
3632
|
+
if (registry[schemaId]) {
|
|
3633
|
+
return registry[schemaId];
|
|
3634
|
+
}
|
|
3635
|
+
const channel = new SchemaChannel(schemaId);
|
|
3636
|
+
registry[schemaId] = channel;
|
|
3637
|
+
return channel;
|
|
3638
|
+
};
|
|
3639
|
+
// Must have a sender and receiver. Sender cannot listen for it's own message
|
|
3640
|
+
class SchemaChannel {
|
|
3641
|
+
sender;
|
|
3642
|
+
receiver;
|
|
3643
|
+
constructor(schemaId) {
|
|
3644
|
+
this.sender = new SchemaChannelSender(schemaId);
|
|
3645
|
+
this.receiver = new SchemaChannelReceiver(schemaId);
|
|
3646
|
+
}
|
|
3647
|
+
}
|
|
3648
|
+
class SchemaChannelSender {
|
|
3649
|
+
broadcastChannel;
|
|
3650
|
+
constructor(schemaId) {
|
|
3651
|
+
this.broadcastChannel = new BroadcastChannel(`__routier-schema-subscription-channel:${schemaId}`);
|
|
3652
|
+
}
|
|
3653
|
+
send(changes) {
|
|
3654
|
+
this.broadcastChannel.postMessage(changes);
|
|
3655
|
+
}
|
|
3656
|
+
}
|
|
3657
|
+
class SchemaChannelReceiver {
|
|
3658
|
+
broadcastChannel;
|
|
3659
|
+
subscriptions = [];
|
|
3660
|
+
constructor(schemaId) {
|
|
3661
|
+
this.broadcastChannel = new BroadcastChannel(`__routier-schema-subscription-channel:${schemaId}`);
|
|
3662
|
+
this.broadcastChannel.onmessage = (e) => {
|
|
3663
|
+
// We can't send to the same instance it is not possbile
|
|
3664
|
+
const stampedChanges = e.data;
|
|
3665
|
+
for (let i = 0, length = this.subscriptions.length; i < length; i++) {
|
|
3666
|
+
const subscription = this.subscriptions[i];
|
|
3667
|
+
subscription.action(stampedChanges);
|
|
3668
|
+
}
|
|
3669
|
+
};
|
|
3670
|
+
}
|
|
3671
|
+
addListener(id, listener) {
|
|
3672
|
+
this.subscriptions.push(new SubscriptionListener(id, listener));
|
|
3673
|
+
}
|
|
3674
|
+
removeListeners(id) {
|
|
3675
|
+
this.subscriptions = this.subscriptions.filter(w => w.id !== id);
|
|
3676
|
+
}
|
|
3677
|
+
}
|
|
3678
|
+
class SubscriptionListener {
|
|
3679
|
+
id;
|
|
3680
|
+
listener;
|
|
3681
|
+
constructor(id, listener) {
|
|
3682
|
+
this.id = id;
|
|
3683
|
+
this.listener = listener;
|
|
3684
|
+
}
|
|
3685
|
+
action(changes) {
|
|
3686
|
+
this.listener(changes);
|
|
3687
|
+
}
|
|
3688
|
+
}
|
|
3689
|
+
class SchemaSubscription {
|
|
3690
|
+
id;
|
|
3691
|
+
schemaId;
|
|
3692
|
+
createdAt;
|
|
3693
|
+
constructor(schemaId, signal) {
|
|
3694
|
+
this.createdAt = (0,_performance__WEBPACK_IMPORTED_MODULE_0__.now)();
|
|
3695
|
+
this.id = (0,_utilities__WEBPACK_IMPORTED_MODULE_1__.uuid)(8);
|
|
3696
|
+
this.schemaId = schemaId;
|
|
3697
|
+
signal?.addEventListener("abort", () => {
|
|
3698
|
+
this.dispose();
|
|
3699
|
+
}, { once: true });
|
|
3700
|
+
}
|
|
3701
|
+
send(changes) {
|
|
3702
|
+
const regisry = getChannelRegistry(this.schemaId);
|
|
3703
|
+
// Send message to all listeners.
|
|
3704
|
+
// Since we create a new listener when we do onMessage,
|
|
3705
|
+
// we don't need to worry about sending to ourselves, it
|
|
3706
|
+
// can't happen
|
|
3707
|
+
regisry.sender.send({
|
|
3708
|
+
data: changes,
|
|
3709
|
+
timestamp: (0,_performance__WEBPACK_IMPORTED_MODULE_0__.now)()
|
|
3710
|
+
});
|
|
3711
|
+
}
|
|
3712
|
+
onMessage(callback) {
|
|
3713
|
+
const regisry = getChannelRegistry(this.schemaId);
|
|
3714
|
+
// Link the callback to an instance
|
|
3715
|
+
regisry.receiver.addListener(this.id, ({ data, timestamp }) => {
|
|
3716
|
+
if (timestamp < this.createdAt) {
|
|
3717
|
+
// Sent before the receiver was even created
|
|
3718
|
+
return;
|
|
3719
|
+
}
|
|
3720
|
+
callback(data);
|
|
3721
|
+
});
|
|
3722
|
+
}
|
|
3723
|
+
dispose() {
|
|
3724
|
+
this[Symbol.dispose]();
|
|
3725
|
+
}
|
|
3726
|
+
[Symbol.dispose]() {
|
|
3727
|
+
const regisry = getChannelRegistry(this.schemaId);
|
|
3728
|
+
// Remove listeners for this instance only
|
|
3729
|
+
regisry.receiver.removeListeners(this.id);
|
|
3730
|
+
}
|
|
3731
|
+
}
|
|
3732
|
+
|
|
3733
|
+
|
|
3496
3734
|
}),
|
|
3497
3735
|
"./src/schema/property/base/SchemaBase.ts":
|
|
3498
3736
|
/*!************************************************!*\
|
|
@@ -3967,7 +4205,7 @@ class SchemaSerialize extends _base_SchemaBase__WEBPACK_IMPORTED_MODULE_0__.Sche
|
|
|
3967
4205
|
this.instance = current.instance;
|
|
3968
4206
|
this.valueSerializer = serializer;
|
|
3969
4207
|
}
|
|
3970
|
-
|
|
4208
|
+
deserialize(deserializer) {
|
|
3971
4209
|
return new _SchemaDeserialize__WEBPACK_IMPORTED_MODULE_1__.SchemaDeserialize(deserializer, this);
|
|
3972
4210
|
}
|
|
3973
4211
|
}
|