@unyt/datex 0.0.9 → 0.0.11

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 (56) hide show
  1. package/esm/datex-core/datex_core_js.internal.d.ts +248 -264
  2. package/esm/datex-core/datex_core_js.internal.d.ts.map +1 -1
  3. package/esm/datex-core/datex_core_js.internal.js +584 -547
  4. package/esm/datex-core/datex_core_js.js +7 -3
  5. package/esm/datex-core/datex_core_js.wasm +0 -0
  6. package/esm/datex-core/wasm_url.node.js +1 -1
  7. package/esm/default.d.ts +8 -0
  8. package/esm/default.d.ts.map +1 -1
  9. package/esm/default.js +8 -0
  10. package/esm/deno.json +5 -3
  11. package/esm/dif/core.d.ts +5 -3
  12. package/esm/dif/core.d.ts.map +1 -1
  13. package/esm/dif/core.js +7 -5
  14. package/esm/dif/definitions.d.ts +45 -34
  15. package/esm/dif/definitions.d.ts.map +1 -1
  16. package/esm/dif/definitions.js +14 -9
  17. package/esm/dif/dif-handler.d.ts +125 -34
  18. package/esm/dif/dif-handler.d.ts.map +1 -1
  19. package/esm/dif/dif-handler.js +366 -159
  20. package/esm/dif/display.d.ts +3 -3
  21. package/esm/dif/display.d.ts.map +1 -1
  22. package/esm/dif/display.js +5 -5
  23. package/esm/dif/js-lib.d.ts +8 -0
  24. package/esm/dif/js-lib.d.ts.map +1 -0
  25. package/esm/dif/js-lib.js +3 -0
  26. package/esm/dif/mod.d.ts +5 -1
  27. package/esm/dif/mod.d.ts.map +1 -1
  28. package/esm/dif/mod.js +5 -1
  29. package/esm/dif/type-registry.d.ts +80 -0
  30. package/esm/dif/type-registry.d.ts.map +1 -0
  31. package/esm/dif/type-registry.js +166 -0
  32. package/esm/global.d.ts +2 -0
  33. package/esm/global.d.ts.map +1 -0
  34. package/esm/global.js +1 -0
  35. package/esm/{runtime/special-core-types.d.ts → lib/special-core-types/endpoint.d.ts} +1 -1
  36. package/esm/lib/special-core-types/endpoint.d.ts.map +1 -0
  37. package/esm/mod.d.ts +16 -10
  38. package/esm/mod.d.ts.map +1 -1
  39. package/esm/mod.js +16 -10
  40. package/esm/network/interface-impls/base.d.ts +9 -1
  41. package/esm/network/interface-impls/base.d.ts.map +1 -1
  42. package/esm/refs/ref.d.ts.map +1 -1
  43. package/esm/refs/ref.js +1 -2
  44. package/esm/runtime/runtime.d.ts +19 -49
  45. package/esm/runtime/runtime.d.ts.map +1 -1
  46. package/esm/runtime/runtime.js +32 -7
  47. package/esm/utils/exceptions.d.ts +4 -0
  48. package/esm/utils/exceptions.d.ts.map +1 -0
  49. package/esm/utils/exceptions.js +9 -0
  50. package/esm/utils/js-runtime-compat/js-runtime.d.ts.map +1 -1
  51. package/package.json +1 -1
  52. package/esm/dif/builders.d.ts +0 -16
  53. package/esm/dif/builders.d.ts.map +0 -1
  54. package/esm/dif/builders.js +0 -28
  55. package/esm/runtime/special-core-types.d.ts.map +0 -1
  56. /package/esm/{runtime/special-core-types.js → lib/special-core-types/endpoint.js} +0 -0
@@ -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,CAgBR;AAED;;GAEG;AACH,wBAAgB,qCAAqC,CACjD,WAAW,EAAE,sBAAsB,GACpC,MAAM,CAyBR;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})`;
@@ -35,7 +35,7 @@ export function difValueContainerToDisplayString(container) {
35
35
  }
36
36
  else {
37
37
  const typeString = container.type
38
- ? difTypeContainerToDisplayString(container.type)
38
+ ? difTypeDefinitionToDisplayString(container.type)
39
39
  : null;
40
40
  const valueString = difRepresentationValueToDisplayString(container.value);
41
41
  if (typeString) {
@@ -69,14 +69,14 @@ export function difRepresentationValueToDisplayString(difRepValue) {
69
69
  }
70
70
  }
71
71
  /**
72
- * Converts a DIF type container to a display string.
72
+ * Converts a DIF type definition to a display string.
73
73
  */
74
- export function difTypeContainerToDisplayString(difType) {
74
+ export function difTypeDefinitionToDisplayString(difType) {
75
75
  if (typeof difType === "string") {
76
76
  return addressToDisplayString(difType);
77
77
  }
78
78
  else {
79
- return `{ name: ${difType.name}, kind: ${difType.kind}, def: ${JSON.stringify(difType.def)}, mut: ${difType.mut} }`;
79
+ return `{ kind: ${difType.kind}, def: ${JSON.stringify(difType.def)} }`;
80
80
  }
81
81
  }
82
82
  /**
@@ -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,GACxB,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
@@ -1,5 +1,9 @@
1
+ /**
2
+ * @module dif/mod.ts
3
+ * @description
4
+ * This namespace contains all modules related to the DIF (DATEX Interchange Format) interfaces of the DATEX runtime.
5
+ */
1
6
  export * as Definitions from "./definitions.js";
2
- export * as Builders from "./builders.js";
3
7
  export * as Display from "./display.js";
4
8
  export { CoreTypeAddress } from "./core.js";
5
9
  //# sourceMappingURL=mod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/dif/mod.ts"],"names":[],"mappings":"AAAA,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
@@ -1,4 +1,8 @@
1
+ /**
2
+ * @module dif/mod.ts
3
+ * @description
4
+ * This namespace contains all modules related to the DIF (DATEX Interchange Format) interfaces of the DATEX runtime.
5
+ */
1
6
  export * as Definitions from "./definitions.js";
2
- export * as Builders from "./builders.js";
3
7
  export * as Display from "./display.js";
4
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;
@@ -23,4 +23,4 @@ export declare class Endpoint {
23
23
  */
24
24
  toString(): string;
25
25
  }
26
- //# sourceMappingURL=special-core-types.d.ts.map
26
+ //# 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;CAG5B"}
package/esm/mod.d.ts CHANGED
@@ -2,18 +2,24 @@
2
2
  * @module mod.ts
3
3
  * @description
4
4
  * This module exports all public APIs of the DATEX runtime.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * import { Runtime } from "@unyt/datex";
9
+ *
10
+ * // Create a runtime instance
11
+ * export const runtime: Runtime = await Runtime.create({
12
+ * interfaces: [{
13
+ * type: "websocket-client",
14
+ * config: { address: "wss://example.unyt.land" },
15
+ * }],
16
+ * });
17
+ *
18
+ * // Use the runtime instance
19
+ * const result = await runtime.execute("@example :: 1 + 2");
20
+ * ```
5
21
  */
6
22
  export * from "./runtime/runtime.js";
7
- /**
8
- * @namespace DIF
9
- * @description
10
- * This namespace contains all modules related to the DIF (DATEX Interchange Format) interfaces of the DATEX runtime.
11
- */
12
23
  export * as DIF from "./dif/mod.js";
13
- /**
14
- * @namespace Network
15
- * @description
16
- * This namespace contains all modules related to the network interfaces of the DATEX runtime.
17
- */
18
24
  export * as Network from "./network/mod.js";
19
25
  //# 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;;;;GAIG;AACH,OAAO,qBAAqB,CAAC;AAG7B,cAAc,sBAAsB,CAAC;AACrC;;;;GAIG;AACH,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC;;;;GAIG;AACH,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"}
package/esm/mod.js CHANGED
@@ -2,17 +2,23 @@
2
2
  * @module mod.ts
3
3
  * @description
4
4
  * This module exports all public APIs of the DATEX runtime.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * import { Runtime } from "@unyt/datex";
9
+ *
10
+ * // Create a runtime instance
11
+ * export const runtime: Runtime = await Runtime.create({
12
+ * interfaces: [{
13
+ * type: "websocket-client",
14
+ * config: { address: "wss://example.unyt.land" },
15
+ * }],
16
+ * });
17
+ *
18
+ * // Use the runtime instance
19
+ * const result = await runtime.execute("@example :: 1 + 2");
20
+ * ```
5
21
  */
6
22
  export * from "./runtime/runtime.js";
7
- /**
8
- * @namespace DIF
9
- * @description
10
- * This namespace contains all modules related to the DIF (DATEX Interchange Format) interfaces of the DATEX runtime.
11
- */
12
23
  export * as DIF from "./dif/mod.js";
13
- /**
14
- * @namespace Network
15
- * @description
16
- * This namespace contains all modules related to the network interfaces of the DATEX runtime.
17
- */
18
24
  export * as Network from "./network/mod.js";
@@ -1,6 +1,14 @@
1
1
  import { ComInterfaceImpl } from "../com-interface.js";
2
2
  import type { BaseInterfaceSetupData, InterfaceDirection } from "../../datex-core/datex_core_js";
3
- export type { BaseInterfaceSetupData, InterfaceDirection };
3
+ export type {
4
+ /**
5
+ * Setup data for the base communication interface.
6
+ */
7
+ BaseInterfaceSetupData,
8
+ /**
9
+ * Direction of the communication interface (In/Out/InOut).
10
+ */
11
+ InterfaceDirection, };
4
12
  /**
5
13
  * Implementation of the base communication interface.
6
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/network/interface-impls/base.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EACR,sBAAsB,EACtB,kBAAkB,EACrB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,CAAC;AAE3D;;GAEG;AACH,qBAAa,iBACT,SAAQ,gBAAgB,CAAC,sBAAsB,CAAC;IAChD;;;;OAIG;IACI,cAAc,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,MAAM;IAOrE;;;OAGG;IACI,aAAa,CAAC,UAAU,EAAE,MAAM;IAOvC;;;;OAIG;IACI,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU;IAQnD;;;;;OAKG;IACI,aAAa,CAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,UAAU,GACjB,OAAO,CAAC,OAAO,CAAC;IAQnB;;;OAGG;IACI,MAAM,CACT,QAAQ,EAAE,CACN,IAAI,EAAE,UAAU,EAChB,oBAAoB,EAAE,MAAM,KAC3B,OAAO,CAAC,OAAO,CAAC;CAI5B"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/network/interface-impls/base.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EACR,sBAAsB,EACtB,kBAAkB,EACrB,MAAM,gCAAgC,CAAC;AAExC,YAAY;AACR;;GAEG;AACH,sBAAsB;AACtB;;GAEG;AACH,kBAAkB,GACrB,CAAC;AAEF;;GAEG;AACH,qBAAa,iBACT,SAAQ,gBAAgB,CAAC,sBAAsB,CAAC;IAChD;;;;OAIG;IACI,cAAc,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,MAAM;IAOrE;;;OAGG;IACI,aAAa,CAAC,UAAU,EAAE,MAAM;IAOvC;;;;OAIG;IACI,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU;IAQnD;;;;;OAKG;IACI,aAAa,CAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,UAAU,GACjB,OAAO,CAAC,OAAO,CAAC;IAQnB;;;OAGG;IACI,MAAM,CACT,QAAQ,EAAE,CACN,IAAI,EAAE,UAAU,EAChB,oBAAoB,EAAE,MAAM,KAC3B,OAAO,CAAC,OAAO,CAAC;CAI5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../../src/refs/ref.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD;;;GAGG;AACH,qBAAa,GAAG,CAAC,CAAC;;gBAKF,KAAK,EAAE,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;IAMpE;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,CAAC;IAI/B;;OAEG;IACH,IAAI,KAAK,IAAI,CAAC,CAEb;IAED;;;;OAIG;IACH,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,EAUpB;CACJ"}
1
+ {"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../../src/refs/ref.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD;;;GAGG;AACH,qBAAa,GAAG,CAAC,CAAC;;gBAKF,KAAK,EAAE,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;IAMpE;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,CAAC;IAI/B;;OAEG;IACH,IAAI,KAAK,IAAI,CAAC,CAEb;IAED;;;;OAIG;IACH,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,EAOpB;CACJ"}
package/esm/refs/ref.js CHANGED
@@ -10,7 +10,6 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _Ref_value, _Ref_pointerAddress, _Ref_difHandler;
13
- import { DIF_Replace } from "../dif/builders.js";
14
13
  /**
15
14
  * The Ref class is a wrapper around a value that is stored in a pointer.
16
15
  * Primitive values (string, number, boolean, null) are always wrapped in a Ref when stored in a pointer.
@@ -54,7 +53,7 @@ export class Ref {
54
53
  if (oldValue === newValue)
55
54
  return;
56
55
  // Try to update the pointer
57
- __classPrivateFieldGet(this, _Ref_difHandler, "f").updatePointer(__classPrivateFieldGet(this, _Ref_pointerAddress, "f"), DIF_Replace(__classPrivateFieldGet(this, _Ref_difHandler, "f"), newValue));
56
+ __classPrivateFieldGet(this, _Ref_difHandler, "f").triggerReplace(__classPrivateFieldGet(this, _Ref_pointerAddress, "f"), newValue);
58
57
  __classPrivateFieldSet(this, _Ref_value, newValue, "f");
59
58
  }
60
59
  }
@@ -1,7 +1,7 @@
1
- import { type JSRuntime } from "../datex-core.js";
1
+ import { type DecompileOptions, type JSRuntime } from "../datex-core.js";
2
2
  import { ComHub } from "../network/com-hub.js";
3
- import { DIFHandler } from "../dif/dif-handler.js";
4
- import type { DIFReferenceMutability, DIFTypeContainer } from "../dif/definitions.js";
3
+ import { DIFHandler, type PointerOut } from "../dif/dif-handler.js";
4
+ import type { DIFReferenceMutability, DIFTypeDefinition } from "../dif/definitions.js";
5
5
  import type { Ref } from "../refs/ref.js";
6
6
  /** debug flags for the runtime */
7
7
  interface DebugFlags {
@@ -17,13 +17,6 @@ export type RuntimeConfig = {
17
17
  }[];
18
18
  debug?: boolean;
19
19
  };
20
- /** options for decompiling values to strings */
21
- export type DecompileOptions = {
22
- formatted?: boolean;
23
- colorized?: boolean;
24
- resolve_slots?: boolean;
25
- json_compat?: boolean;
26
- };
27
20
  /**
28
21
  * The main Runtime class for executing Datex scripts and managing communication interfaces.
29
22
  */
@@ -131,50 +124,27 @@ export declare class Runtime {
131
124
  valueToString(value: unknown, decompileOptions?: DecompileOptions | null): string;
132
125
  _execute_internal(datexScript: string): boolean;
133
126
  /**
134
- * Creates a new pointer containg the given JS value.
135
- * The returned value is a proxy object that behaves like the original object,
136
- * but also propagates changes between JS and the DATEX runtime.
127
+ * Creates a new reference containg the given JS value.
128
+ * For primitive values, a Ref wrapper is returned.
129
+ * For other values (objects, arrays, maps), the returned value is a proxy object that behaves like the original object.
130
+ *
137
131
  * @param value The JS value to store in the pointer.
138
132
  * @param allowedType Optional DIF type container to restrict the type of the pointer.
139
133
  * @param mutability Optional mutability of the reference (default is Mutable).
140
134
  * @returns A proxy object representing the pointer in JS.
141
135
  */
142
- createPointer<V, M extends DIFReferenceMutability = typeof DIFReferenceMutability.Mutable>(value: V & {}, allowedType?: DIFTypeContainer | null, mutability?: M): PointerOut<V, M>;
143
- }
144
- type WidenLiteral<T> = T extends string ? string : T extends number ? number : T extends boolean ? boolean : T extends bigint ? bigint : T extends symbol ? symbol : T;
145
- type IsRef<T> = T extends Ref<unknown> ? true : false;
146
- type ContainsRef<T> = IsRef<T> extends true ? true : T extends object ? {
147
- [K in keyof T]: ContainsRef<T[K]>;
148
- }[keyof T] extends true ? true : false : false;
149
- /** A type representing an assignable reference or a plain value **/
150
- export type AssignableRef<T> = Ref<T> | T & {
151
- value?: T;
152
- };
153
- type Builtins = ((...args: unknown[]) => unknown) | Date | RegExp | Map<unknown, unknown> | Set<unknown> | WeakMap<WeakKey, unknown> | WeakSet<WeakKey> | Array<unknown>;
154
- type IsPlainObject<T> = T extends Builtins ? false : T extends object ? true : false;
155
- type ObjectFieldOut<T, M extends DIFReferenceMutability> = T extends Ref<infer U> ? M extends typeof DIFReferenceMutability.Immutable ? Ref<U> : AssignableRef<U> : IsPlainObject<T> extends true ? (ContainsRef<T> extends true ? M extends typeof DIFReferenceMutability.Immutable ? {
156
- readonly [K in keyof T]: ObjectFieldOut<T[K], M>;
157
- } : {
158
- [K in keyof T]: ObjectFieldOut<T[K], M>;
159
- } : {
160
- readonly [K in keyof T]: ObjectFieldOut<T[K], M>;
161
- }) : T;
162
- type PointerOut<V, M extends DIFReferenceMutability> = V extends Ref<infer U> ? M extends typeof DIFReferenceMutability.Immutable ? Ref<U> : AssignableRef<U> : IsPlainObject<V> extends true ? (ContainsRef<V> extends true ? M extends typeof DIFReferenceMutability.Immutable ? {
163
- readonly [K in keyof V]: ObjectFieldOut<V[K], M>;
164
- } : {
165
- [K in keyof V]: ObjectFieldOut<V[K], M>;
166
- } : {
167
- readonly [K in keyof V]: ObjectFieldOut<V[K], M>;
168
- }) : V extends Builtins ? Pointer<V> : M extends typeof DIFReferenceMutability.Immutable ? Ref<V> : Ref<WidenLiteral<V>>;
169
- type CollectionProps<T> = {
170
- [K in keyof T as K extends "value" ? never : K]: T[K];
171
- };
172
- interface MapRef<K, V> extends Ref<Map<K, V>>, CollectionProps<Map<K, V>> {
173
- }
174
- interface SetRef<T> extends Ref<Set<T>>, CollectionProps<Set<T>> {
175
- }
176
- interface ArrayRef<T> extends Ref<T[]>, CollectionProps<T[]> {
136
+ createTransparentReference<V, M extends DIFReferenceMutability = typeof DIFReferenceMutability.Mutable>(value: V & {}, allowedType?: DIFTypeDefinition | null, mutability?: M): PointerOut<V, M>;
137
+ /**
138
+ * Creates or retrieves a wrapped reference for the given value.
139
+ * If the value is already a reference, it returns the existing reference.
140
+ *
141
+ * @param value
142
+ * @param allowedType
143
+ * @param mutability
144
+ * @returns
145
+ */
146
+ createOrGetWrappedReference<V, M extends DIFReferenceMutability = typeof DIFReferenceMutability.Mutable>(_value: V, _allowedType?: DIFTypeDefinition | null, _mutability?: M): Ref<V>;
147
+ startLSP(callback: (data: string) => void): (data: string) => void;
177
148
  }
178
- type Pointer<T> = T extends Map<infer K, infer V> ? MapRef<K, V> : T extends Set<infer U> ? SetRef<U> : T extends Array<infer U> ? ArrayRef<U> : Ref<T>;
179
149
  export {};
180
150
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,gBAAgB,EAErB,KAAK,SAAS,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EACR,sBAAsB,EACtB,iBAAiB,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAO1C,kCAAkC;AAClC,UAAU,UAAU;IAChB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,6BAA6B,CAAC,EAAE,OAAO,CAAC;CAC3C;AAED,qCAAqC;AACrC,MAAM,MAAM,aAAa,GAAG;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,qBAAa,OAAO;;IAChB,SAAgB,UAAU,SAAW;gBAMzB,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,UAAU;IAM3D;;;;;OAKG;WACiB,MAAM,CACtB,MAAM,EAAE,aAAa,EACrB,WAAW,CAAC,EAAE,UAAU,GACzB,OAAO,CAAC,OAAO,CAAC;IAMnB;;;OAGG;IACI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;OAEG;IACH,IAAI,GAAG,IAAI,UAAU,CAEpB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,SAAS,CAExB;IAED;;;;;;OAMG;IACI,uBAAuB,CAC1B,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,OAAO,EAAE,GAAG,IAAS,EAC7B,gBAAgB,GAAE,gBAAgB,GAAG,IAAW,GACjD,OAAO,CAAC,MAAM,CAAC;IAQlB;;;;;;OAMG;IACI,2BAA2B,CAC9B,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,OAAO,EAAE,GAAG,IAAS,EAC7B,gBAAgB,GAAE,gBAAgB,GAAG,IAAW,GACjD,MAAM;IAQT;;;;;;;;;OASG;IACI,OAAO,CAAC,CAAC,GAAG,OAAO,EACtB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,OAAO,EAAE,GACnB,OAAO,CAAC,CAAC,CAAC;IAEb;;;;;;;;OAQG;IACI,OAAO,CAAC,CAAC,GAAG,OAAO,EACtB,eAAe,EAAE,oBAAoB,EACrC,GAAG,MAAM,EAAE,OAAO,EAAE,GACrB,OAAO,CAAC,CAAC,CAAC;IA0Bb;;;;;;;;;OASG;IACI,WAAW,CAAC,CAAC,GAAG,OAAO,EAC1B,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,OAAO,EAAE,GACnB,CAAC;IAEJ;;;;;;;;OAQG;IACI,WAAW,CAAC,CAAC,GAAG,OAAO,EAC1B,eAAe,EAAE,oBAAoB,EACrC,GAAG,MAAM,EAAE,OAAO,EAAE,GACrB,CAAC;IA8BJ;;;;;OAKG;IACI,aAAa,CAChB,KAAK,EAAE,OAAO,EACd,gBAAgB,GAAE,gBAAgB,GAAG,IAAW,GACjD,MAAM;IA8BF,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAItD;;;;;;;;;OASG;IACI,0BAA0B,CAC7B,CAAC,EACD,CAAC,SAAS,sBAAsB,GAC5B,OAAO,sBAAsB,CAAC,OAAO,EAGzC,KAAK,EAAE,CAAC,GAAG,EAAE,EACb,WAAW,CAAC,EAAE,iBAAiB,GAAG,IAAI,EACtC,UAAU,CAAC,EAAE,CAAC,GACf,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;IAQnB;;;;;;;;OAQG;IACI,2BAA2B,CAC9B,CAAC,EACD,CAAC,SAAS,sBAAsB,GAC5B,OAAO,sBAAsB,CAAC,OAAO,EAEzC,MAAM,EAAE,CAAC,EACT,YAAY,CAAC,EAAE,iBAAiB,GAAG,IAAI,EACvC,WAAW,CAAC,EAAE,CAAC,GAChB,GAAG,CAAC,CAAC,CAAC;IAIF,QAAQ,CACX,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACjC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;CAY5B"}