@unyt/datex 0.0.10 → 0.0.12

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.
Files changed (91) hide show
  1. package/README.md +10 -14
  2. package/esm/datex-web/datex_web.d.ts +2 -0
  3. package/esm/datex-web/datex_web.d.ts.map +1 -0
  4. package/esm/datex-web/datex_web.internal.d.ts +383 -0
  5. package/esm/datex-web/datex_web.internal.d.ts.map +1 -0
  6. package/esm/{datex-core/datex_core_js.internal.js → datex-web/datex_web.internal.js} +794 -1141
  7. package/esm/datex-web/datex_web.js +18 -0
  8. package/esm/datex-web/datex_web.wasm +0 -0
  9. package/esm/datex-web/wasm_url.node.js +1 -0
  10. package/esm/{datex-core.d.ts → datex.d.ts} +3 -3
  11. package/esm/datex.d.ts.map +1 -0
  12. package/esm/{datex-core.js → datex.js} +3 -3
  13. package/esm/default.d.ts.map +1 -1
  14. package/esm/default.js +2 -3
  15. package/esm/deno.json +28 -20
  16. package/esm/dif/core.d.ts +5 -3
  17. package/esm/dif/core.d.ts.map +1 -1
  18. package/esm/dif/core.js +7 -5
  19. package/esm/dif/definitions.d.ts +45 -34
  20. package/esm/dif/definitions.d.ts.map +1 -1
  21. package/esm/dif/definitions.js +14 -9
  22. package/esm/dif/dif-handler.d.ts +135 -35
  23. package/esm/dif/dif-handler.d.ts.map +1 -1
  24. package/esm/dif/dif-handler.js +378 -159
  25. package/esm/dif/display.d.ts +3 -3
  26. package/esm/dif/display.d.ts.map +1 -1
  27. package/esm/dif/display.js +5 -7
  28. package/esm/dif/js-lib.d.ts +8 -0
  29. package/esm/dif/js-lib.d.ts.map +1 -0
  30. package/esm/dif/js-lib.js +3 -0
  31. package/esm/dif/mod.d.ts +0 -1
  32. package/esm/dif/mod.d.ts.map +1 -1
  33. package/esm/dif/mod.js +0 -1
  34. package/esm/dif/type-registry.d.ts +80 -0
  35. package/esm/dif/type-registry.d.ts.map +1 -0
  36. package/esm/dif/type-registry.js +166 -0
  37. package/esm/global.d.ts +2 -0
  38. package/esm/global.d.ts.map +1 -0
  39. package/esm/global.js +1 -0
  40. package/esm/{runtime/special-core-types.d.ts → lib/special-core-types/endpoint.d.ts} +3 -1
  41. package/esm/lib/special-core-types/endpoint.d.ts.map +1 -0
  42. package/esm/{runtime/special-core-types.js → lib/special-core-types/endpoint.js} +6 -1
  43. package/esm/mod.d.ts +3 -1
  44. package/esm/mod.d.ts.map +1 -1
  45. package/esm/mod.js +3 -1
  46. package/esm/network/com-hub.d.ts +20 -22
  47. package/esm/network/com-hub.d.ts.map +1 -1
  48. package/esm/network/com-hub.js +30 -49
  49. package/esm/network/interfaces/websocket-server-base.d.ts +8 -0
  50. package/esm/network/interfaces/websocket-server-base.d.ts.map +1 -0
  51. package/esm/network/interfaces/websocket-server-base.js +93 -0
  52. package/esm/network/interfaces/websocket-server-deno.d.ts +4 -0
  53. package/esm/network/interfaces/websocket-server-deno.d.ts.map +1 -0
  54. package/esm/network/interfaces/websocket-server-deno.js +22 -0
  55. package/esm/network/mod.d.ts +0 -1
  56. package/esm/network/mod.d.ts.map +1 -1
  57. package/esm/network/mod.js +0 -1
  58. package/esm/refs/ref.d.ts.map +1 -1
  59. package/esm/refs/ref.js +1 -2
  60. package/esm/runtime/runtime.d.ts +25 -62
  61. package/esm/runtime/runtime.d.ts.map +1 -1
  62. package/esm/runtime/runtime.js +42 -26
  63. package/esm/utils/devtools-formatter.d.ts +2 -0
  64. package/esm/utils/devtools-formatter.d.ts.map +1 -0
  65. package/esm/utils/devtools-formatter.js +40 -0
  66. package/esm/utils/exceptions.d.ts +4 -0
  67. package/esm/utils/exceptions.d.ts.map +1 -0
  68. package/esm/utils/exceptions.js +9 -0
  69. package/esm/utils/js-runtime-compat/js-runtime.d.ts.map +1 -1
  70. package/package.json +7 -7
  71. package/esm/datex-core/datex_core_js.d.ts +0 -2
  72. package/esm/datex-core/datex_core_js.d.ts.map +0 -1
  73. package/esm/datex-core/datex_core_js.internal.d.ts +0 -512
  74. package/esm/datex-core/datex_core_js.internal.d.ts.map +0 -1
  75. package/esm/datex-core/datex_core_js.js +0 -21
  76. package/esm/datex-core/datex_core_js.wasm +0 -0
  77. package/esm/datex-core/wasm_url.node.js +0 -1
  78. package/esm/datex-core.d.ts.map +0 -1
  79. package/esm/dif/builders.d.ts +0 -16
  80. package/esm/dif/builders.d.ts.map +0 -1
  81. package/esm/dif/builders.js +0 -28
  82. package/esm/network/com-interface.d.ts +0 -35
  83. package/esm/network/com-interface.d.ts.map +0 -1
  84. package/esm/network/com-interface.js +0 -75
  85. package/esm/network/interface-impls/base.d.ts +0 -46
  86. package/esm/network/interface-impls/base.d.ts.map +0 -1
  87. package/esm/network/interface-impls/base.js +0 -47
  88. package/esm/network/interface-impls/websocket-client.d.ts +0 -8
  89. package/esm/network/interface-impls/websocket-client.d.ts.map +0 -1
  90. package/esm/network/interface-impls/websocket-client.js +0 -8
  91. package/esm/runtime/special-core-types.d.ts.map +0 -1
@@ -3,7 +3,7 @@
3
3
  * @description
4
4
  * This module contains helper functions to convert DIF structures to display strings.
5
5
  */
6
- import { type DIFReference, DIFReferenceMutability, type DIFRepresentationValue, type DIFTypeContainer, type DIFValueContainer } from "./definitions.js";
6
+ import { type DIFReference, DIFReferenceMutability, type DIFRepresentationValue, type DIFTypeDefinition, type DIFValueContainer } from "./definitions.js";
7
7
  /**
8
8
  * Converts a DIF reference mutability to a display string.
9
9
  */
@@ -21,9 +21,9 @@ export declare function difValueContainerToDisplayString(container: DIFValueCont
21
21
  */
22
22
  export declare function difRepresentationValueToDisplayString(difRepValue: DIFRepresentationValue): string;
23
23
  /**
24
- * Converts a DIF type container to a display string.
24
+ * Converts a DIF type definition to a display string.
25
25
  */
26
- export declare function difTypeContainerToDisplayString(difType: DIFTypeContainer): string;
26
+ export declare function difTypeDefinitionToDisplayString(difType: DIFTypeDefinition): string;
27
27
  /**
28
28
  * Converts a core type address to a display string.
29
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/dif/display.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACH,KAAK,YAAY,EACjB,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACzB,MAAM,kBAAkB,CAAC;AAG1B;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,sBAAsB,GAAG,MAAM,CAO7E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACvC,SAAS,EAAE,YAAY,GACxB,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC5C,SAAS,EAAE,iBAAiB,GAC7B,MAAM,CAgBR;AAED;;GAEG;AACH,wBAAgB,qCAAqC,CACjD,WAAW,EAAE,sBAAsB,GACpC,MAAM,CAyBR;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC3C,OAAO,EAAE,gBAAgB,GAC1B,MAAM,CAQR;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAS9D"}
1
+ {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/dif/display.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACH,KAAK,YAAY,EACjB,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACzB,MAAM,kBAAkB,CAAC;AAG1B;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,sBAAsB,GAAG,MAAM,CAO7E;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACvC,SAAS,EAAE,YAAY,GACxB,MAAM,CAKR;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC5C,SAAS,EAAE,iBAAiB,GAC7B,MAAM,CAcR;AAED;;GAEG;AACH,wBAAgB,qCAAqC,CACjD,WAAW,EAAE,sBAAsB,GACpC,MAAM,CAuBR;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC5C,OAAO,EAAE,iBAAiB,GAC3B,MAAM,CAMR;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAS9D"}
@@ -21,7 +21,7 @@ export function mutabilityToDisplayString(mut) {
21
21
  * Converts a DIF reference to a display string.
22
22
  */
23
23
  export function difReferenceToDisplayString(reference) {
24
- const typeString = difTypeContainerToDisplayString(reference.allowed_type);
24
+ const typeString = difTypeDefinitionToDisplayString(reference.allowed_type);
25
25
  const valueString = difValueContainerToDisplayString(reference.value);
26
26
  const mutString = mutabilityToDisplayString(reference.mut);
27
27
  return `${mutString}${valueString} (allowed: ${typeString})`;
@@ -34,9 +34,7 @@ export function difValueContainerToDisplayString(container) {
34
34
  return addressToDisplayString(container);
35
35
  }
36
36
  else {
37
- const typeString = container.type
38
- ? difTypeContainerToDisplayString(container.type)
39
- : null;
37
+ const typeString = container.type ? difTypeDefinitionToDisplayString(container.type) : null;
40
38
  const valueString = difRepresentationValueToDisplayString(container.value);
41
39
  if (typeString) {
42
40
  return `{ type: ${typeString}, value: ${valueString} }`;
@@ -69,14 +67,14 @@ export function difRepresentationValueToDisplayString(difRepValue) {
69
67
  }
70
68
  }
71
69
  /**
72
- * Converts a DIF type container to a display string.
70
+ * Converts a DIF type definition to a display string.
73
71
  */
74
- export function difTypeContainerToDisplayString(difType) {
72
+ export function difTypeDefinitionToDisplayString(difType) {
75
73
  if (typeof difType === "string") {
76
74
  return addressToDisplayString(difType);
77
75
  }
78
76
  else {
79
- return `{ name: ${difType.name}, kind: ${difType.kind}, def: ${JSON.stringify(difType.def)}, mut: ${difType.mut} }`;
77
+ return `{ kind: ${difType.kind}, def: ${JSON.stringify(difType.def)} }`;
80
78
  }
81
79
  }
82
80
  /**
@@ -0,0 +1,8 @@
1
+ export declare const JsLibTypeAddress: {
2
+ readonly undefined: "111111";
3
+ };
4
+ /**
5
+ * Type representing the unique pointer addresses of js lib types.
6
+ */
7
+ export type JsLibTypeAddress = typeof JsLibTypeAddress[keyof typeof JsLibTypeAddress];
8
+ //# sourceMappingURL=js-lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-lib.d.ts","sourceRoot":"","sources":["../../src/dif/js-lib.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB;;CAEnB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const JsLibTypeAddress = {
2
+ undefined: "111111",
3
+ };
package/esm/dif/mod.d.ts CHANGED
@@ -4,7 +4,6 @@
4
4
  * This namespace contains all modules related to the DIF (DATEX Interchange Format) interfaces of the DATEX runtime.
5
5
  */
6
6
  export * as Definitions from "./definitions.js";
7
- export * as Builders from "./builders.js";
8
7
  export * as Display from "./display.js";
9
8
  export { CoreTypeAddress } from "./core.js";
10
9
  //# sourceMappingURL=mod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/dif/mod.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/dif/mod.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
package/esm/dif/mod.js CHANGED
@@ -4,6 +4,5 @@
4
4
  * This namespace contains all modules related to the DIF (DATEX Interchange Format) interfaces of the DATEX runtime.
5
5
  */
6
6
  export * as Definitions from "./definitions.js";
7
- export * as Builders from "./builders.js";
8
7
  export * as Display from "./display.js";
9
8
  export { CoreTypeAddress } from "./core.js";
@@ -0,0 +1,80 @@
1
+ import { type DIFTypeDefinition, type DIFUpdateData, DIFUpdateKind } from "./definitions.js";
2
+ import { type CustomReferenceMetadata, type DIFHandler } from "./dif-handler.js";
3
+ type ImplMethod = {
4
+ name: string;
5
+ implementation: (...args: unknown[]) => unknown;
6
+ };
7
+ type OwnImpl = {
8
+ methods: ImplMethod[];
9
+ };
10
+ type InterfaceImpl = {
11
+ interfaceName: string;
12
+ methods: ImplMethod[];
13
+ };
14
+ export type TypeDefinition = {
15
+ name: string;
16
+ structuralDefinition: DIFTypeDefinition;
17
+ ownImpls?: OwnImpl[];
18
+ interfaceImpls: InterfaceImpl[];
19
+ };
20
+ export type TypeBindingContext<M extends CustomReferenceMetadata> = {
21
+ readonly difHandler: DIFHandler;
22
+ getCustomReferenceMetadata(value: WeakKey): M;
23
+ allowOriginalValueAccess<R>(target: WeakKey, callback: () => R): R;
24
+ };
25
+ export type BindResult<T, M extends CustomReferenceMetadata> = {
26
+ value: T;
27
+ metadata: M;
28
+ };
29
+ export type TypeBindingDefinition<T, M extends CustomReferenceMetadata = CustomReferenceMetadata> = {
30
+ typeAddress: string;
31
+ bind(this: TypeBindingContext<M>, value: T, pointerAddress: string): BindResult<T, M>;
32
+ handleSet?(this: TypeBindingContext<M>, target: T, key: unknown, value: unknown): void;
33
+ handleAppend?(this: TypeBindingContext<M>, target: T, value: unknown): void;
34
+ handleReplace?(this: TypeBindingContext<M>, parent: T, newValue: unknown): void;
35
+ handleDelete?(this: TypeBindingContext<M>, target: T, key: unknown): void;
36
+ handleClear?(this: TypeBindingContext<M>, target: T): void;
37
+ handleListSplice?(this: TypeBindingContext<M>, target: T, start: number, deleteCount: number, items: unknown[]): void;
38
+ };
39
+ export declare class TypeRegistry {
40
+ #private;
41
+ constructor(difHandler: DIFHandler);
42
+ /**
43
+ * Defines a completely new nominal type with optional implementations that can be bound to JS native functions.
44
+ * @param definition
45
+ */
46
+ registerTypeDefinition(_definition: TypeDefinition): void;
47
+ /**
48
+ * Binds an existing nominal type to a JS mirror implementation.
49
+ * @param typePointerAddress The address of the type pointer in the Datex runtime.
50
+ */
51
+ registerTypeBinding<T>(typeBindingDefinition: TypeBindingDefinition<T>): void;
52
+ /**
53
+ * @private
54
+ * Gets the type binding for a given type pointer address.
55
+ */
56
+ _getTypeBinding(typePointerAddress: string): TypeBinding | null;
57
+ /**
58
+ * Gets the type binding for a given type pointer address.
59
+ */
60
+ getTypeBinding(typePointerAddress: string): TypeBinding | null;
61
+ }
62
+ export declare class TypeBinding<T extends WeakKey = WeakKey, M extends CustomReferenceMetadata = CustomReferenceMetadata> {
63
+ #private;
64
+ get difHandler(): DIFHandler;
65
+ getCustomReferenceMetadata(value: T): M;
66
+ constructor(definition: TypeBindingDefinition<T, M>, difHandler: DIFHandler);
67
+ /**
68
+ * Binds a new JS value to this type binding.
69
+ * @returns
70
+ */
71
+ bindValue(value: T, pointerAddress: string): BindResult<T, M>;
72
+ /**
73
+ * Sets up observers for the given value and pointer address if there are update handlers defined for this type binding.
74
+ */
75
+ handleDifUpdate(value: T, pointerAddress: string, difUpdateData: DIFUpdateData): void;
76
+ getUpdateHandlerTypes(): Set<DIFUpdateKind>;
77
+ allowOriginalValueAccess<R>(target: T, callback: () => R): R;
78
+ }
79
+ export {};
80
+ //# sourceMappingURL=type-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-registry.d.ts","sourceRoot":"","sources":["../../src/dif/type-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _TypeRegistry_difHandler, _TypeRegistry_typeBindings, _TypeBinding_difHandler, _TypeBinding_definition;
13
+ import { DEBUG_MODE } from "../global.js";
14
+ import { DIFUpdateKind } from "./definitions.js";
15
+ import { IS_PROXY_ACCESS } from "./dif-handler.js";
16
+ // interface GetProperty<K,V> = {
17
+ // function getProperty<K>(self: Type, key: K) -> X;
18
+ // }
19
+ // type = {x: fn()->y),}
20
+ // impl Type {
21
+ // fn autoSelectFamily() -> Family {
22
+ // }
23
+ // impl Type {
24
+ // fn autoSelectFamily(self) -> Family {
25
+ // }
26
+ // }
27
+ // Type.self(x);
28
+ // x->autoSelectFamily();
29
+ // MyTrait.autoSelectFamily(x);
30
+ // Type.autoSelectFamily(x);
31
+ // object->contains()
32
+ // obj.hasOwnPropety()
33
+ export class TypeRegistry {
34
+ constructor(difHandler) {
35
+ _TypeRegistry_difHandler.set(this, void 0);
36
+ _TypeRegistry_typeBindings.set(this, new Map());
37
+ __classPrivateFieldSet(this, _TypeRegistry_difHandler, difHandler, "f");
38
+ }
39
+ /**
40
+ * Defines a completely new nominal type with optional implementations that can be bound to JS native functions.
41
+ * @param definition
42
+ */
43
+ registerTypeDefinition(_definition) {
44
+ // TODO
45
+ }
46
+ /**
47
+ * Binds an existing nominal type to a JS mirror implementation.
48
+ * @param typePointerAddress The address of the type pointer in the Datex runtime.
49
+ */
50
+ registerTypeBinding(typeBindingDefinition) {
51
+ __classPrivateFieldGet(this, _TypeRegistry_typeBindings, "f").set(typeBindingDefinition.typeAddress, new TypeBinding(typeBindingDefinition, __classPrivateFieldGet(this, _TypeRegistry_difHandler, "f")));
52
+ }
53
+ /**
54
+ * @private
55
+ * Gets the type binding for a given type pointer address.
56
+ */
57
+ _getTypeBinding(typePointerAddress) {
58
+ return __classPrivateFieldGet(this, _TypeRegistry_typeBindings, "f").get(typePointerAddress) || null;
59
+ }
60
+ /**
61
+ * Gets the type binding for a given type pointer address.
62
+ */
63
+ getTypeBinding(typePointerAddress) {
64
+ const typeBinding = __classPrivateFieldGet(this, _TypeRegistry_typeBindings, "f").get(typePointerAddress);
65
+ if (typeBinding) {
66
+ return typeBinding;
67
+ }
68
+ else {
69
+ return null;
70
+ }
71
+ }
72
+ }
73
+ _TypeRegistry_difHandler = new WeakMap(), _TypeRegistry_typeBindings = new WeakMap();
74
+ export class TypeBinding {
75
+ get difHandler() {
76
+ return __classPrivateFieldGet(this, _TypeBinding_difHandler, "f");
77
+ }
78
+ getCustomReferenceMetadata(value) {
79
+ return __classPrivateFieldGet(this, _TypeBinding_difHandler, "f").getReferenceMetadataUnsafe(value)
80
+ .customMetadata;
81
+ }
82
+ constructor(definition, difHandler) {
83
+ _TypeBinding_difHandler.set(this, void 0);
84
+ _TypeBinding_definition.set(this, void 0);
85
+ __classPrivateFieldSet(this, _TypeBinding_definition, definition, "f");
86
+ __classPrivateFieldSet(this, _TypeBinding_difHandler, difHandler, "f");
87
+ }
88
+ /**
89
+ * Binds a new JS value to this type binding.
90
+ * @returns
91
+ */
92
+ bindValue(value, pointerAddress) {
93
+ const newValue = __classPrivateFieldGet(this, _TypeBinding_definition, "f").bind.call(this, value, pointerAddress);
94
+ return newValue;
95
+ }
96
+ /**
97
+ * Sets up observers for the given value and pointer address if there are update handlers defined for this type binding.
98
+ */
99
+ handleDifUpdate(value, pointerAddress, difUpdateData) {
100
+ const updateHandlerTypes = this.getUpdateHandlerTypes();
101
+ // add observer if there are update handlers
102
+ if (updateHandlerTypes.size > 0) {
103
+ console.log("got update for pointer:", pointerAddress, difUpdateData);
104
+ this.allowOriginalValueAccess(value, () => {
105
+ // call appropriate handler based on update kind
106
+ if (difUpdateData.kind === DIFUpdateKind.Set &&
107
+ __classPrivateFieldGet(this, _TypeBinding_definition, "f").handleSet) {
108
+ __classPrivateFieldGet(this, _TypeBinding_definition, "f").handleSet.call(this, value, __classPrivateFieldGet(this, _TypeBinding_difHandler, "f").resolveDIFPropertySync(difUpdateData.key), __classPrivateFieldGet(this, _TypeBinding_difHandler, "f").resolveDIFValueContainerSync(difUpdateData.value));
109
+ }
110
+ else if (difUpdateData.kind === DIFUpdateKind.Append &&
111
+ __classPrivateFieldGet(this, _TypeBinding_definition, "f").handleAppend) {
112
+ __classPrivateFieldGet(this, _TypeBinding_definition, "f").handleAppend.call(this, value, __classPrivateFieldGet(this, _TypeBinding_difHandler, "f").resolveDIFValueContainerSync(difUpdateData.value));
113
+ }
114
+ else if (difUpdateData.kind === DIFUpdateKind.Replace &&
115
+ __classPrivateFieldGet(this, _TypeBinding_definition, "f").handleReplace) {
116
+ __classPrivateFieldGet(this, _TypeBinding_definition, "f").handleReplace.call(this, value, __classPrivateFieldGet(this, _TypeBinding_difHandler, "f").resolveDIFValueContainerSync(difUpdateData.value));
117
+ }
118
+ else if (difUpdateData.kind === DIFUpdateKind.Delete &&
119
+ __classPrivateFieldGet(this, _TypeBinding_definition, "f").handleDelete) {
120
+ __classPrivateFieldGet(this, _TypeBinding_definition, "f").handleDelete.call(this, value, __classPrivateFieldGet(this, _TypeBinding_difHandler, "f").resolveDIFPropertySync(difUpdateData.key));
121
+ }
122
+ else if (difUpdateData.kind === DIFUpdateKind.Clear &&
123
+ __classPrivateFieldGet(this, _TypeBinding_definition, "f").handleClear) {
124
+ __classPrivateFieldGet(this, _TypeBinding_definition, "f").handleClear.call(this, value);
125
+ }
126
+ else if (difUpdateData.kind === DIFUpdateKind.ListSplice &&
127
+ __classPrivateFieldGet(this, _TypeBinding_definition, "f").handleListSplice) {
128
+ __classPrivateFieldGet(this, _TypeBinding_definition, "f").handleListSplice.call(this, value, difUpdateData.start, difUpdateData.delete_count, difUpdateData.items.map((item) => __classPrivateFieldGet(this, _TypeBinding_difHandler, "f").resolveDIFValueContainerSync(item)));
129
+ }
130
+ });
131
+ }
132
+ }
133
+ getUpdateHandlerTypes() {
134
+ const updateHandlerTypes = new Set();
135
+ if (__classPrivateFieldGet(this, _TypeBinding_definition, "f").handleSet) {
136
+ updateHandlerTypes.add(DIFUpdateKind.Set);
137
+ }
138
+ if (__classPrivateFieldGet(this, _TypeBinding_definition, "f").handleAppend) {
139
+ updateHandlerTypes.add(DIFUpdateKind.Append);
140
+ }
141
+ if (__classPrivateFieldGet(this, _TypeBinding_definition, "f").handleReplace) {
142
+ updateHandlerTypes.add(DIFUpdateKind.Replace);
143
+ }
144
+ if (__classPrivateFieldGet(this, _TypeBinding_definition, "f").handleDelete) {
145
+ updateHandlerTypes.add(DIFUpdateKind.Delete);
146
+ }
147
+ if (__classPrivateFieldGet(this, _TypeBinding_definition, "f").handleClear) {
148
+ updateHandlerTypes.add(DIFUpdateKind.Clear);
149
+ }
150
+ return updateHandlerTypes;
151
+ }
152
+ allowOriginalValueAccess(target, callback) {
153
+ if (!DEBUG_MODE) {
154
+ return callback();
155
+ }
156
+ const metadata = this.getCustomReferenceMetadata(target);
157
+ metadata[IS_PROXY_ACCESS] = true;
158
+ try {
159
+ return callback();
160
+ }
161
+ finally {
162
+ metadata[IS_PROXY_ACCESS] = false;
163
+ }
164
+ }
165
+ }
166
+ _TypeBinding_difHandler = new WeakMap(), _TypeBinding_definition = new WeakMap();
@@ -0,0 +1,2 @@
1
+ export declare const DEBUG_MODE = true;
2
+ //# sourceMappingURL=global.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,OAAO,CAAC"}
package/esm/global.js ADDED
@@ -0,0 +1 @@
1
+ export const DEBUG_MODE = true;
@@ -22,5 +22,7 @@ export declare class Endpoint {
22
22
  * @returns The string representation of the endpoint.
23
23
  */
24
24
  toString(): string;
25
+ get [Symbol.toStringTag](): string;
26
+ get [Symbol.toPrimitive](): string;
25
27
  }
26
- //# sourceMappingURL=special-core-types.d.ts.map
28
+ //# sourceMappingURL=endpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../../../src/lib/special-core-types/endpoint.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,QAAQ;;IAIjB,oFAAoF;IACpF,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAa;IAE7D,OAAO;IAKP;;;OAGG;WACW,gBAAgB,CAAC,QAAQ,EAAE,QAAQ;IASjD;;;;OAIG;WACW,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAa7C;;;OAGG;IACI,QAAQ,IAAI,MAAM;IAIzB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAEvB;CACJ"}
@@ -56,8 +56,13 @@ export class Endpoint {
56
56
  toString() {
57
57
  return __classPrivateFieldGet(this, _Endpoint_endpoint, "f");
58
58
  }
59
+ get [(_Endpoint_endpoint = new WeakMap(), Symbol.toStringTag)]() {
60
+ return __classPrivateFieldGet(this, _Endpoint_endpoint, "f");
61
+ }
62
+ get [Symbol.toPrimitive]() {
63
+ return __classPrivateFieldGet(this, _Endpoint_endpoint, "f");
64
+ }
59
65
  }
60
- _Endpoint_endpoint = new WeakMap();
61
66
  /** map with weak values that keeps track of all currently instantiated endpoints */
62
67
  Object.defineProperty(Endpoint, "endpoints", {
63
68
  enumerable: true,
package/esm/mod.d.ts CHANGED
@@ -11,7 +11,7 @@
11
11
  * export const runtime: Runtime = await Runtime.create({
12
12
  * interfaces: [{
13
13
  * type: "websocket-client",
14
- * config: { address: "wss://example.unyt.land" },
14
+ * config: { url: "wss://example.unyt.land" },
15
15
  * }],
16
16
  * });
17
17
  *
@@ -22,4 +22,6 @@
22
22
  export * from "./runtime/runtime.js";
23
23
  export * as DIF from "./dif/mod.js";
24
24
  export * as Network from "./network/mod.js";
25
+ export * from "./refs/ref.js";
26
+ import "./utils/devtools-formatter.js";
25
27
  //# sourceMappingURL=mod.d.ts.map
package/esm/mod.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,qBAAqB,CAAC;AAG7B,cAAc,sBAAsB,CAAC;AACrC,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,qBAAqB,CAAC;AAG7B,cAAc,sBAAsB,CAAC;AACrC,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,cAAc,eAAe,CAAC;AAC9B,OAAO,+BAA+B,CAAC"}
package/esm/mod.js CHANGED
@@ -11,7 +11,7 @@
11
11
  * export const runtime: Runtime = await Runtime.create({
12
12
  * interfaces: [{
13
13
  * type: "websocket-client",
14
- * config: { address: "wss://example.unyt.land" },
14
+ * config: { url: "wss://example.unyt.land" },
15
15
  * }],
16
16
  * });
17
17
  *
@@ -22,3 +22,5 @@
22
22
  export * from "./runtime/runtime.js";
23
23
  export * as DIF from "./dif/mod.js";
24
24
  export * as Network from "./network/mod.js";
25
+ export * from "./refs/ref.js";
26
+ import "./utils/devtools-formatter.js";
@@ -1,43 +1,41 @@
1
- import type { JSComHub } from "../datex-core/datex_core_js";
2
- import { ComInterface, type ComInterfaceImpl } from "./com-interface.js";
1
+ import type { ComHubMetadata, ComInterfaceConfiguration, JSComHub, NetworkTraceResult } from "../datex-web/datex_web";
2
+ import type { Runtime } from "../runtime/runtime.js";
3
+ export type ComInterfaceFactory<SetupData = unknown> = {
4
+ interfaceType: string;
5
+ factory: ComInterfaceFactoryFn<SetupData>;
6
+ };
7
+ export type ComInterfaceFactoryFn<SetupData = unknown> = (setup_data: SetupData) => ComInterfaceConfiguration | Promise<ComInterfaceConfiguration>;
8
+ export type ComInterfaceUUID = `com_interface::${string}`;
9
+ export type ComInterfaceSocketUUID = `socket::${string}`;
3
10
  /**
4
11
  * Communication hub for managing communication interfaces.
5
12
  */
6
13
  export declare class ComHub {
7
14
  #private;
8
- constructor(jsComHub: JSComHub);
9
- /**
10
- * Registers a communication interface implementation.
11
- * @param interfaceType The type of the interface.
12
- * @param impl The implementation class of the interface.
13
- */
14
- static registerInterfaceImpl<N extends string>(interfaceType: N, impl: typeof ComInterfaceImpl<unknown>): void;
15
+ constructor(jsComHub: JSComHub, runtime: Runtime);
16
+ registerInterfaceFactory<SetupData>(factoryDefinition: ComInterfaceFactory<SetupData>): void;
15
17
  /**
16
18
  * Creates a new communication interface.
17
- * @param interfaceType The type of the interface to create.
19
+ * @param type The type of the interface to create.
18
20
  * @param setupData The setup data for the interface.
21
+ * @param priority The priority of the interface (optional).
22
+ * @returns A promise that resolves to the UUID of the created interface.
19
23
  */
20
- createInterface<T extends typeof ComInterfaceImpl<unknown>>(interfaceType: T, setupData: T extends typeof ComInterfaceImpl<infer P> ? P : never): Promise<ComInterface<InstanceType<T>>>;
21
- createInterface<T extends ComInterfaceImpl<unknown>>(interfaceType: string, setupData: T extends ComInterfaceImpl<infer P> ? P : never): Promise<ComInterface<T>>;
22
- _update(): Promise<void>;
23
- _drain_incoming_blocks(): Uint8Array<ArrayBufferLike>[];
24
+ createInterface<SetupData>(type: string, setupData: SetupData, priority?: number): Promise<ComInterfaceUUID>;
25
+ removeInterface(interface_uuid: ComInterfaceUUID): Promise<void>;
26
+ removeSocket(socket_uuid: ComInterfaceSocketUUID): Promise<void>;
24
27
  /**
25
28
  * Prints the metadata of the ComHub. Only available in debug builds.
29
+ * Only exists in debug builds
26
30
  */
27
31
  printMetadata(): void;
32
+ getMetadata(): ComHubMetadata;
28
33
  /**
29
34
  * Prints the trace for a specific endpoint. Only available in debug builds.
30
35
  * @param endpoint The endpoint for which to print the trace.
31
36
  */
32
37
  printTrace(endpoint: string): Promise<void>;
33
- /**
34
- * Sends a block of data to a specific interface and socket.
35
- * @param block The data block to send.
36
- * @param interface_uuid The UUID of the interface to send the block to.
37
- * @param socket_uuid The UUID of the socket to send the block to.
38
- * @returns A promise that resolves to true if the block was sent successfully, false otherwise.
39
- */
40
- sendBlock(block: Uint8Array, interface_uuid: string, socket_uuid: string): Promise<boolean>;
38
+ getTrace(endpoint: string): Promise<NetworkTraceResult | undefined>;
41
39
  /**
42
40
  * Registers a callback to intercept incoming blocks.
43
41
  * @param callback The callback to be invoked for each incoming block.
@@ -1 +1 @@
1
- {"version":3,"file":"com-hub.d.ts","sourceRoot":"","sources":["../../src/network/com-hub.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEzE;;GAEG;AACH,qBAAa,MAAM;;gBAgBH,QAAQ,EAAE,QAAQ;IAI9B;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,CAAC,CAAC,SAAS,MAAM,EACzC,aAAa,EAAE,CAAC,EAChB,IAAI,EAAE,OAAO,gBAAgB,CAAC,OAAO,CAAC;IAW1C;;;;OAIG;IACG,eAAe,CAAC,CAAC,SAAS,OAAO,gBAAgB,CAAC,OAAO,CAAC,EAC5D,aAAa,EAAE,CAAC,EAChB,SAAS,EAAE,CAAC,SAAS,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAClE,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,eAAe,CACjB,CAAC,SAAS,gBAAgB,CAAC,OAAO,CAAC,EAEnC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,CAAC,SAAS,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAC3D,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAkCpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,sBAAsB,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE;IAI9D;;OAEG;IACI,aAAa,IAAI,IAAI;IAO5B;;;OAGG;IACU,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxD;;;;;;OAMG;IACI,SAAS,CACZ,KAAK,EAAE,UAAU,EACjB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC;IAInB;;;OAGG;IACI,gCAAgC,CACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,GAC3D,IAAI;IAIP;;;OAGG;IACI,gCAAgC,CACnC,QAAQ,EAAE,CACN,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EAAE,KAClB,IAAI,GACV,IAAI;CAGV"}
1
+ {"version":3,"file":"com-hub.d.ts","sourceRoot":"","sources":["../../src/network/com-hub.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,cAAc,EACd,yBAAyB,EACzB,QAAQ,EACR,kBAAkB,EACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,MAAM,mBAAmB,CAAC,SAAS,GAAG,OAAO,IAAI;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,SAAS,GAAG,OAAO,IAAI,CACrD,UAAU,EAAE,SAAS,KACpB,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAEpE,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,MAAM,EAAE,CAAC;AAC1D,MAAM,MAAM,sBAAsB,GAAG,WAAW,MAAM,EAAE,CAAC;AAEzD;;GAEG;AACH,qBAAa,MAAM;;gBAKH,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;IAKzC,wBAAwB,CAAC,SAAS,EACrC,iBAAiB,EAAE,mBAAmB,CAAC,SAAS,CAAC;IAWrD;;;;;;OAMG;IACU,eAAe,CAAC,SAAS,EAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,EACpB,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,CAAC;IAQrB,eAAe,CAClB,cAAc,EAAE,gBAAgB,GACjC,OAAO,CAAC,IAAI,CAAC;IAIT,YAAY,CACf,WAAW,EAAE,sBAAsB,GACpC,OAAO,CAAC,IAAI,CAAC;IAIhB;;;OAGG;IACI,aAAa,IAAI,IAAI;IAKrB,WAAW,IAAI,cAAc;IAKpC;;;OAGG;IACU,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAK1E;;;OAGG;IACI,gCAAgC,CACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,GAC3D,IAAI;IAIP;;;OAGG;IACI,gCAAgC,CACnC,QAAQ,EAAE,CACN,KAAK,EAAE,UAAU,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EAAE,KAClB,IAAI,GACV,IAAI;CAGV"}