@j2inn/resolvable-ui-elements 0.0.1-beta.0

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 (134) hide show
  1. package/README.md +2 -0
  2. package/dist/index.d.ts +5 -0
  3. package/dist/index.js +31 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/resolvableElements/Resolver.d.ts +20 -0
  6. package/dist/resolvableElements/Resolver.jsx +28 -0
  7. package/dist/resolvableElements/Resolver.jsx.map +1 -0
  8. package/dist/resolvableElements/elements/ResolvableElement.d.ts +11 -0
  9. package/dist/resolvableElements/elements/ResolvableElement.js +24 -0
  10. package/dist/resolvableElements/elements/ResolvableElement.js.map +1 -0
  11. package/dist/resolvableElements/elements/ResolvableValueElement.d.ts +11 -0
  12. package/dist/resolvableElements/elements/ResolvableValueElement.js +20 -0
  13. package/dist/resolvableElements/elements/ResolvableValueElement.js.map +1 -0
  14. package/dist/resolvableElements/elements/UiElement.d.ts +37 -0
  15. package/dist/resolvableElements/elements/UiElement.js +48 -0
  16. package/dist/resolvableElements/elements/UiElement.js.map +1 -0
  17. package/dist/resolvableElements/elements/expr/ResolvableExprElement.d.ts +11 -0
  18. package/dist/resolvableElements/elements/expr/ResolvableExprElement.js +57 -0
  19. package/dist/resolvableElements/elements/expr/ResolvableExprElement.js.map +1 -0
  20. package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +9 -0
  21. package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.js +12 -0
  22. package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.js.map +1 -0
  23. package/dist/resolvableElements/elements/function/FunctionElement.d.ts +9 -0
  24. package/dist/resolvableElements/elements/function/FunctionElement.js +31 -0
  25. package/dist/resolvableElements/elements/function/FunctionElement.js.map +1 -0
  26. package/dist/resolvableElements/elements/function/FunctionElementMeta.d.ts +8 -0
  27. package/dist/resolvableElements/elements/function/FunctionElementMeta.js +12 -0
  28. package/dist/resolvableElements/elements/function/FunctionElementMeta.js.map +1 -0
  29. package/dist/resolvableElements/elements/list/ListElementMeta.d.ts +11 -0
  30. package/dist/resolvableElements/elements/list/ListElementMeta.js +12 -0
  31. package/dist/resolvableElements/elements/list/ListElementMeta.js.map +1 -0
  32. package/dist/resolvableElements/elements/list/ResolvableListElement.d.ts +13 -0
  33. package/dist/resolvableElements/elements/list/ResolvableListElement.js +93 -0
  34. package/dist/resolvableElements/elements/list/ResolvableListElement.js.map +1 -0
  35. package/dist/resolvableElements/elements/makeElement.d.ts +7 -0
  36. package/dist/resolvableElements/elements/makeElement.js +39 -0
  37. package/dist/resolvableElements/elements/makeElement.js.map +1 -0
  38. package/dist/resolvableElements/elements/section/ResolvableSectionElement.d.ts +18 -0
  39. package/dist/resolvableElements/elements/section/ResolvableSectionElement.js +100 -0
  40. package/dist/resolvableElements/elements/section/ResolvableSectionElement.js.map +1 -0
  41. package/dist/resolvableElements/elements/section/SectionElementMeta.d.ts +9 -0
  42. package/dist/resolvableElements/elements/section/SectionElementMeta.js +9 -0
  43. package/dist/resolvableElements/elements/section/SectionElementMeta.js.map +1 -0
  44. package/dist/resolvableElements/elements/tag/ResolvableTagElement.d.ts +13 -0
  45. package/dist/resolvableElements/elements/tag/ResolvableTagElement.js +101 -0
  46. package/dist/resolvableElements/elements/tag/ResolvableTagElement.js.map +1 -0
  47. package/dist/resolvableElements/elements/tag/TagElementMeta.d.ts +12 -0
  48. package/dist/resolvableElements/elements/tag/TagElementMeta.js +12 -0
  49. package/dist/resolvableElements/elements/tag/TagElementMeta.js.map +1 -0
  50. package/dist/resolvableElements/interfacesGeneration/generateInterfaces.d.ts +3 -0
  51. package/dist/resolvableElements/interfacesGeneration/generateInterfaces.js +131 -0
  52. package/dist/resolvableElements/interfacesGeneration/generateInterfaces.js.map +1 -0
  53. package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.d.ts +4 -0
  54. package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js +39 -0
  55. package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js.map +1 -0
  56. package/dist/resolvableElements/react/useResolveSection.d.ts +18 -0
  57. package/dist/resolvableElements/react/useResolveSection.js +59 -0
  58. package/dist/resolvableElements/react/useResolveSection.js.map +1 -0
  59. package/dist/resolvableElements/react/useResolverContext.d.ts +4 -0
  60. package/dist/resolvableElements/react/useResolverContext.jsx +54 -0
  61. package/dist/resolvableElements/react/useResolverContext.jsx.map +1 -0
  62. package/dist/resolvableElements/resolveTemplatedExpression.d.ts +19 -0
  63. package/dist/resolvableElements/resolveTemplatedExpression.js +33 -0
  64. package/dist/resolvableElements/resolveTemplatedExpression.js.map +1 -0
  65. package/dist/useCurrentUser.d.ts +4 -0
  66. package/dist/useCurrentUser.jsx +42 -0
  67. package/dist/useCurrentUser.jsx.map +1 -0
  68. package/dist_es/index.d.ts +5 -0
  69. package/dist_es/index.js +15 -0
  70. package/dist_es/index.js.map +1 -0
  71. package/dist_es/resolvableElements/Resolver.d.ts +20 -0
  72. package/dist_es/resolvableElements/Resolver.jsx +24 -0
  73. package/dist_es/resolvableElements/Resolver.jsx.map +1 -0
  74. package/dist_es/resolvableElements/elements/ResolvableElement.d.ts +11 -0
  75. package/dist_es/resolvableElements/elements/ResolvableElement.js +20 -0
  76. package/dist_es/resolvableElements/elements/ResolvableElement.js.map +1 -0
  77. package/dist_es/resolvableElements/elements/ResolvableValueElement.d.ts +11 -0
  78. package/dist_es/resolvableElements/elements/ResolvableValueElement.js +14 -0
  79. package/dist_es/resolvableElements/elements/ResolvableValueElement.js.map +1 -0
  80. package/dist_es/resolvableElements/elements/UiElement.d.ts +37 -0
  81. package/dist_es/resolvableElements/elements/UiElement.js +43 -0
  82. package/dist_es/resolvableElements/elements/UiElement.js.map +1 -0
  83. package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.d.ts +11 -0
  84. package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.js +53 -0
  85. package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.js.map +1 -0
  86. package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +9 -0
  87. package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.js +7 -0
  88. package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.js.map +1 -0
  89. package/dist_es/resolvableElements/elements/function/FunctionElement.d.ts +9 -0
  90. package/dist_es/resolvableElements/elements/function/FunctionElement.js +26 -0
  91. package/dist_es/resolvableElements/elements/function/FunctionElement.js.map +1 -0
  92. package/dist_es/resolvableElements/elements/function/FunctionElementMeta.d.ts +8 -0
  93. package/dist_es/resolvableElements/elements/function/FunctionElementMeta.js +7 -0
  94. package/dist_es/resolvableElements/elements/function/FunctionElementMeta.js.map +1 -0
  95. package/dist_es/resolvableElements/elements/list/ListElementMeta.d.ts +11 -0
  96. package/dist_es/resolvableElements/elements/list/ListElementMeta.js +7 -0
  97. package/dist_es/resolvableElements/elements/list/ListElementMeta.js.map +1 -0
  98. package/dist_es/resolvableElements/elements/list/ResolvableListElement.d.ts +13 -0
  99. package/dist_es/resolvableElements/elements/list/ResolvableListElement.js +89 -0
  100. package/dist_es/resolvableElements/elements/list/ResolvableListElement.js.map +1 -0
  101. package/dist_es/resolvableElements/elements/makeElement.d.ts +7 -0
  102. package/dist_es/resolvableElements/elements/makeElement.js +35 -0
  103. package/dist_es/resolvableElements/elements/makeElement.js.map +1 -0
  104. package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.d.ts +18 -0
  105. package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js +95 -0
  106. package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js.map +1 -0
  107. package/dist_es/resolvableElements/elements/section/SectionElementMeta.d.ts +9 -0
  108. package/dist_es/resolvableElements/elements/section/SectionElementMeta.js +4 -0
  109. package/dist_es/resolvableElements/elements/section/SectionElementMeta.js.map +1 -0
  110. package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.d.ts +13 -0
  111. package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js +97 -0
  112. package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js.map +1 -0
  113. package/dist_es/resolvableElements/elements/tag/TagElementMeta.d.ts +12 -0
  114. package/dist_es/resolvableElements/elements/tag/TagElementMeta.js +7 -0
  115. package/dist_es/resolvableElements/elements/tag/TagElementMeta.js.map +1 -0
  116. package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.d.ts +3 -0
  117. package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.js +127 -0
  118. package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.js.map +1 -0
  119. package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.d.ts +4 -0
  120. package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js +13 -0
  121. package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js.map +1 -0
  122. package/dist_es/resolvableElements/react/useResolveSection.d.ts +18 -0
  123. package/dist_es/resolvableElements/react/useResolveSection.js +55 -0
  124. package/dist_es/resolvableElements/react/useResolveSection.js.map +1 -0
  125. package/dist_es/resolvableElements/react/useResolverContext.d.ts +4 -0
  126. package/dist_es/resolvableElements/react/useResolverContext.jsx +26 -0
  127. package/dist_es/resolvableElements/react/useResolverContext.jsx.map +1 -0
  128. package/dist_es/resolvableElements/resolveTemplatedExpression.d.ts +19 -0
  129. package/dist_es/resolvableElements/resolveTemplatedExpression.js +28 -0
  130. package/dist_es/resolvableElements/resolveTemplatedExpression.js.map +1 -0
  131. package/dist_es/useCurrentUser.d.ts +4 -0
  132. package/dist_es/useCurrentUser.jsx +14 -0
  133. package/dist_es/useCurrentUser.jsx.map +1 -0
  134. package/package.json +52 -0
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeElement = void 0;
4
+ const ResolvableExprElement_1 = require("./expr/ResolvableExprElement");
5
+ const ResolvableExprElementMeta_1 = require("./expr/ResolvableExprElementMeta");
6
+ const FunctionElement_1 = require("./function/FunctionElement");
7
+ const FunctionElementMeta_1 = require("./function/FunctionElementMeta");
8
+ const ListElementMeta_1 = require("./list/ListElementMeta");
9
+ const ResolvableListElement_1 = require("./list/ResolvableListElement");
10
+ const ResolvableSectionElement_1 = require("./section/ResolvableSectionElement");
11
+ const SectionElementMeta_1 = require("./section/SectionElementMeta");
12
+ const ResolvableTagElement_1 = require("./tag/ResolvableTagElement");
13
+ const TagElementMeta_1 = require("./tag/TagElementMeta");
14
+ // Factory function for the elements
15
+ /**
16
+ * Factory function used to build an element.
17
+ * @param data
18
+ * @returns
19
+ */
20
+ const makeElement = (data) => {
21
+ if ((0, SectionElementMeta_1.isSectionData)(data.element)) {
22
+ return new ResolvableSectionElement_1.ResolvableSectionElement(data);
23
+ }
24
+ if ((0, TagElementMeta_1.isResolvableTagElementData)(data.element)) {
25
+ return new ResolvableTagElement_1.ResolvableTagElement(data);
26
+ }
27
+ if ((0, ListElementMeta_1.isResolvableListElementData)(data.element)) {
28
+ return new ResolvableListElement_1.ResolvableListElement(data);
29
+ }
30
+ if ((0, ResolvableExprElementMeta_1.isResolvableExprElementData)(data.element)) {
31
+ return new ResolvableExprElement_1.ResolvableExprElement(data);
32
+ }
33
+ if ((0, FunctionElementMeta_1.isFunctionElementData)(data.element)) {
34
+ return new FunctionElement_1.FunctionElement(data);
35
+ }
36
+ throw new Error(`Element cannot be deserialized: \n${JSON.stringify(data.element)}`);
37
+ };
38
+ exports.makeElement = makeElement;
39
+ //# sourceMappingURL=makeElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeElement.js","sourceRoot":"","sources":["../../../src/resolvableElements/elements/makeElement.ts"],"names":[],"mappings":";;;AAAA,wEAAoE;AACpE,gFAA8E;AAC9E,gEAA4D;AAC5D,wEAAsE;AACtE,4DAAoE;AACpE,wEAAoE;AACpE,iFAA6E;AAC7E,qEAA4D;AAC5D,qEAAiE;AACjE,yDAAiE;AAGjE,oCAAoC;AAEpC;;;;GAIG;AACI,MAAM,WAAW,GAAG,CAC1B,IAAiC,EAClB,EAAE;IACjB,IAAI,IAAA,kCAAa,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAChC,OAAO,IAAI,mDAAwB,CAAC,IAAI,CAAC,CAAA;KACzC;IACD,IAAI,IAAA,2CAA0B,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAC7C,OAAO,IAAI,2CAAoB,CAAC,IAAI,CAAC,CAAA;KACrC;IACD,IAAI,IAAA,6CAA2B,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAC9C,OAAO,IAAI,6CAAqB,CAAC,IAAI,CAAC,CAAA;KACtC;IACD,IAAI,IAAA,uDAA2B,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAC9C,OAAO,IAAI,6CAAqB,CAAC,IAAI,CAAC,CAAA;KACtC;IACD,IAAI,IAAA,2CAAqB,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACxC,OAAO,IAAI,iCAAe,CAAC,IAAI,CAAC,CAAA;KAChC;IAED,MAAM,IAAI,KAAK,CACd,qCAAqC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CACnE,CAAA;AACF,CAAC,CAAA;AAtBY,QAAA,WAAW,eAsBvB"}
@@ -0,0 +1,18 @@
1
+ import { HDict } from 'haystack-core';
2
+ import { ResolvableElement } from '../ResolvableElement';
3
+ import { UiElement, UiElementConstructorData, UiElementData } from '../UiElement';
4
+ import { UiElementSectionMeta } from './SectionElementMeta';
5
+ export declare class ResolvableSectionElement<T extends UiElementData> extends ResolvableElement<T> {
6
+ #private;
7
+ constructor(data: UiElementConstructorData<T>);
8
+ children: (UiElement<UiElementData> | ChildUnresolvedSection)[];
9
+ toJSON(): Record<string, unknown>;
10
+ protected doInitialize: (parameters: HDict) => Promise<void>;
11
+ protected doClose: () => Promise<void>;
12
+ getParameterList: () => string[];
13
+ }
14
+ export declare const isChildUnresolvedSection: (value: unknown) => value is ChildUnresolvedSection;
15
+ export declare type ChildUnresolvedSection = [
16
+ string | undefined,
17
+ UiElementData<UiElementSectionMeta>
18
+ ];
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isChildUnresolvedSection = exports.ResolvableSectionElement = void 0;
4
+ const makeElement_1 = require("../makeElement");
5
+ const ResolvableElement_1 = require("../ResolvableElement");
6
+ const ResolvableValueElement_1 = require("../ResolvableValueElement");
7
+ const SectionElementMeta_1 = require("./SectionElementMeta");
8
+ class ResolvableSectionElement extends ResolvableElement_1.ResolvableElement {
9
+ constructor(data) {
10
+ super(data);
11
+ this.value = this.#getInitialValue(data);
12
+ this.children = this.#deserializeChildren(data);
13
+ }
14
+ #getInitialValue = (data) => {
15
+ const result = {};
16
+ for (const [name, child] of Object.entries(data.element)) {
17
+ if (!name.startsWith('_') && (0, SectionElementMeta_1.isSectionData)(child)) {
18
+ result[name] = child;
19
+ }
20
+ }
21
+ return result;
22
+ };
23
+ #deserializeChildren = (data) => {
24
+ return Object.entries(data.element)
25
+ .filter(([name]) => !name.startsWith('_'))
26
+ .map(([name, element]) => {
27
+ return this.#deserializeChild({
28
+ ...data,
29
+ element,
30
+ name,
31
+ onUpdate: (childVal) => {
32
+ ;
33
+ this.value[name] = childVal;
34
+ this.onUpdate(this.value);
35
+ },
36
+ });
37
+ })
38
+ .filter((element) => !!element);
39
+ };
40
+ #deserializeChild = (data, deepDeserialize = false) => {
41
+ if (!deepDeserialize && (0, SectionElementMeta_1.isSectionData)(data.element)) {
42
+ return [data.name, data.element];
43
+ }
44
+ else {
45
+ try {
46
+ return (0, makeElement_1.makeElement)(data);
47
+ }
48
+ catch (e) {
49
+ return [data.name, data.element];
50
+ }
51
+ }
52
+ };
53
+ children = [];
54
+ toJSON() {
55
+ const props = { _meta: this._meta };
56
+ this.children?.forEach((child) => {
57
+ let name, val;
58
+ if ((0, exports.isChildUnresolvedSection)(child)) {
59
+ name = child[0];
60
+ val = child[1];
61
+ }
62
+ else {
63
+ name = child.name;
64
+ val = child.toJSON();
65
+ }
66
+ if (name) {
67
+ props[name] = val;
68
+ }
69
+ });
70
+ return props;
71
+ }
72
+ doInitialize = async (parameters) => {
73
+ for (const child of this.children) {
74
+ if (child instanceof ResolvableElement_1.ResolvableElement) {
75
+ await child.initialize(parameters);
76
+ }
77
+ }
78
+ };
79
+ doClose = async () => {
80
+ for (const child of this.children) {
81
+ if (child instanceof ResolvableElement_1.ResolvableElement) {
82
+ await child.close();
83
+ }
84
+ }
85
+ };
86
+ getParameterList = () => {
87
+ const parameters = [];
88
+ this.children.forEach((element) => {
89
+ if (!(0, exports.isChildUnresolvedSection)(element) &&
90
+ element instanceof ResolvableValueElement_1.ResolvableValueElement) {
91
+ parameters.push(...element.getParameterList());
92
+ }
93
+ });
94
+ return [...new Set(parameters)]; // Retrieve unique values
95
+ };
96
+ }
97
+ exports.ResolvableSectionElement = ResolvableSectionElement;
98
+ const isChildUnresolvedSection = (value) => value instanceof Array && value.length === 2 && (0, SectionElementMeta_1.isSectionData)(value[1]);
99
+ exports.isChildUnresolvedSection = isChildUnresolvedSection;
100
+ //# sourceMappingURL=ResolvableSectionElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvableSectionElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/section/ResolvableSectionElement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { UiElementData, UiElementMeta } from '../UiElement';
2
+ export interface UiElementSectionMeta extends UiElementMeta {
3
+ resolutionType?: never;
4
+ }
5
+ export declare type ResolvedSectionResult<T extends UiElementData<UiElementSectionMeta>> = T extends {
6
+ _resolved?: Record<string, unknown>;
7
+ } ? Required<T>['_resolved'] : Record<string, unknown>;
8
+ export declare const isSectionData: (element: UiElementData) => element is UiElementData<UiElementSectionMeta>;
9
+ export declare const isSectionMeta: (meta: UiElementMeta | undefined) => meta is UiElementSectionMeta;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSectionMeta = exports.isSectionData = void 0;
4
+ const ResolvableValueElement_1 = require("../ResolvableValueElement");
5
+ const isSectionData = (element) => (0, exports.isSectionMeta)(element._meta);
6
+ exports.isSectionData = isSectionData;
7
+ const isSectionMeta = (meta) => meta == null || !(0, ResolvableValueElement_1.isResolvableValueElementMeta)(meta);
8
+ exports.isSectionMeta = isSectionMeta;
9
+ //# sourceMappingURL=SectionElementMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SectionElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/section/SectionElementMeta.ts"],"names":[],"mappings":";;;AAAA,sEAAwE;AAejE,MAAM,aAAa,GAAG,CAC5B,OAAsB,EAC2B,EAAE,CACnD,IAAA,qBAAa,EAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAHhB,QAAA,aAAa,iBAGG;AAEtB,MAAM,aAAa,GAAG,CAC5B,IAA+B,EACA,EAAE,CACjC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAA,qDAA4B,EAAC,IAAI,CAAC,CAAA;AAHvC,QAAA,aAAa,iBAG0B"}
@@ -0,0 +1,13 @@
1
+ import { HDict } from 'haystack-core';
2
+ import { Watch } from 'haystack-nclient';
3
+ import { ResolvableValueElement } from '../ResolvableValueElement';
4
+ import { UiElementConstructorData, UiElementData } from '../UiElement';
5
+ export declare class ResolvableTagElement<T extends UiElementData> extends ResolvableValueElement<T> {
6
+ #private;
7
+ constructor(data: UiElementConstructorData<T>);
8
+ filter?: string;
9
+ watch?: Watch;
10
+ protected doInitialize: (parameters: HDict) => Promise<void>;
11
+ protected doClose: () => Promise<void>;
12
+ getParameterList: () => string[];
13
+ }
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResolvableTagElement = void 0;
4
+ const haystack_core_1 = require("haystack-core");
5
+ const haystack_nclient_1 = require("haystack-nclient");
6
+ const resolveTemplatedExpression_1 = require("../../resolveTemplatedExpression");
7
+ const ResolvableValueElement_1 = require("../ResolvableValueElement");
8
+ const UiElement_1 = require("../UiElement");
9
+ class ResolvableTagElement extends ResolvableValueElement_1.ResolvableValueElement {
10
+ constructor(data) {
11
+ super(data);
12
+ }
13
+ filter;
14
+ watch;
15
+ doInitialize = async (parameters) => {
16
+ const { subscribe, entityBinding, parentBinding } = this
17
+ ._meta;
18
+ const filter = (0, resolveTemplatedExpression_1.resolveTemplateExpression)((0, UiElement_1.joinFilters)(entityBinding, parentBinding), parameters);
19
+ if (!this.#isValidFilter(filter)) {
20
+ throw Error('Invalid filter');
21
+ }
22
+ this.filter = filter;
23
+ const grid = await this.resolver.read(this.filter);
24
+ if (!this.#isValidReadGrid(grid)) {
25
+ return;
26
+ }
27
+ this.#updateValue(grid);
28
+ if (subscribe) {
29
+ await this.#setupWatch(grid);
30
+ }
31
+ };
32
+ doClose = async () => {
33
+ return this.watch?.close();
34
+ };
35
+ getParameterList = () => {
36
+ const { entityBinding, parentBinding } = this
37
+ ._meta;
38
+ const parameters = [];
39
+ if (entityBinding) {
40
+ (0, resolveTemplatedExpression_1.replaceTemplateVariables)(entityBinding, (_, match) => {
41
+ parameters.push(match);
42
+ return '';
43
+ });
44
+ }
45
+ if (parentBinding) {
46
+ (0, resolveTemplatedExpression_1.replaceTemplateVariables)(parentBinding, (_, match) => {
47
+ parameters.push(match);
48
+ return '';
49
+ });
50
+ }
51
+ return parameters;
52
+ };
53
+ #isValidFilter = (filter) => {
54
+ try {
55
+ haystack_core_1.HFilter.parse(filter);
56
+ }
57
+ catch (e) {
58
+ console.error('Invalid filter: \n', this.filter, e);
59
+ return false;
60
+ }
61
+ return true;
62
+ };
63
+ #isValidReadGrid = (grid) => {
64
+ if (grid.isEmpty()) {
65
+ console.error('Empty grid result for query: \n', this.filter);
66
+ return false;
67
+ }
68
+ if (grid.length > 1) {
69
+ console.warn('More than 1 result for query: \n', this.filter);
70
+ }
71
+ return true;
72
+ };
73
+ #setupWatch = async (grid) => {
74
+ const { readTag, subscribePollRate, subscribe } = this
75
+ ._meta;
76
+ if (subscribe) {
77
+ this.watch = await this.resolver.makeWatch(this.#getWatchDisplayName(), grid);
78
+ const updateValue = () => this.#updateValue(this.watch?.grid);
79
+ // Update with the value received when opening the watch
80
+ updateValue();
81
+ // Configure polling options
82
+ this.watch.pollRate = subscribePollRate ?? haystack_nclient_1.DEFAULT_POLL_RATE_SECS;
83
+ this.watch.changed({
84
+ interests: [readTag],
85
+ callback: updateValue,
86
+ });
87
+ }
88
+ };
89
+ #updateValue = (grid) => {
90
+ const { readTag } = this._meta;
91
+ // TODO improve error handling
92
+ if (grid) {
93
+ this.value = grid[0]?.get(readTag);
94
+ }
95
+ };
96
+ #getWatchDisplayName = () => {
97
+ return `ResolvableElement Watch for ${this.name ?? this.filter}`;
98
+ };
99
+ }
100
+ exports.ResolvableTagElement = ResolvableTagElement;
101
+ //# sourceMappingURL=ResolvableTagElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvableTagElement.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/tag/ResolvableTagElement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { ResolvableValueElementMeta } from '../ResolvableValueElement';
2
+ import { UiElementData, UiElementMeta } from '../UiElement';
3
+ export interface UiElementTagMetaBase extends ResolvableValueElementMeta {
4
+ resolutionType: 'tag';
5
+ readTag: string;
6
+ parentBinding?: string;
7
+ entityBinding?: string;
8
+ subscribe?: boolean;
9
+ subscribePollRate?: number;
10
+ }
11
+ export declare const isResolvableTagElementData: (element: UiElementData) => element is UiElementData<UiElementTagMetaBase>;
12
+ export declare const isResolvableTagMeta: (meta: UiElementMeta) => meta is UiElementTagMetaBase;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isResolvableTagMeta = exports.isResolvableTagElementData = void 0;
4
+ const isResolvableTagElementData = (element) => {
5
+ return !!element?._meta && (0, exports.isResolvableTagMeta)(element._meta);
6
+ };
7
+ exports.isResolvableTagElementData = isResolvableTagElementData;
8
+ const isResolvableTagMeta = (meta) => {
9
+ return meta.resolutionType === 'tag';
10
+ };
11
+ exports.isResolvableTagMeta = isResolvableTagMeta;
12
+ //# sourceMappingURL=TagElementMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagElementMeta.js","sourceRoot":"","sources":["../../../../src/resolvableElements/elements/tag/TagElementMeta.ts"],"names":[],"mappings":";;;AAYO,MAAM,0BAA0B,GAAG,CACzC,OAAsB,EAC2B,EAAE;IACnD,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,IAAA,2BAAmB,EAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC9D,CAAC,CAAA;AAJY,QAAA,0BAA0B,8BAItC;AAEM,MAAM,mBAAmB,GAAG,CAClC,IAAmB,EACY,EAAE;IACjC,OAAQ,IAA6B,CAAC,cAAc,KAAK,KAAK,CAAA;AAC/D,CAAC,CAAA;AAJY,QAAA,mBAAmB,uBAI/B"}
@@ -0,0 +1,3 @@
1
+ import { UiElementSectionMeta } from '../elements/section/SectionElementMeta';
2
+ import { UiElementData } from '../elements/UiElement';
3
+ export declare const generateInterfaces: (section: UiElementData<UiElementSectionMeta>) => string;
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateInterfaces = void 0;
4
+ const haystack_nclient_1 = require("haystack-nclient");
5
+ const ResolvableValueElement_1 = require("../elements/ResolvableValueElement");
6
+ const ResolvableSectionElement_1 = require("../elements/section/ResolvableSectionElement");
7
+ const Resolver_1 = require("../Resolver");
8
+ const ROOT_NAME = 'UiElementRoot';
9
+ const ELEMENT_INTERFACE_NAME = 'UiElementData';
10
+ const generateInterfaces = (section) => {
11
+ return new SectionInterfacesGenerator(section).generate();
12
+ };
13
+ exports.generateInterfaces = generateInterfaces;
14
+ class SectionInterfacesGenerator {
15
+ constructor(section) {
16
+ this.section = section;
17
+ }
18
+ section;
19
+ #output = '';
20
+ #out = (str, indentation = 0) => {
21
+ this.#output += this.#indent(indentation) + str + '\n';
22
+ };
23
+ #indent(indentation = 0) {
24
+ return '\t'.repeat(indentation);
25
+ }
26
+ generate = () => {
27
+ this.#generateImports();
28
+ this.#generateSectionDefinition(this.section);
29
+ return this.#output;
30
+ };
31
+ #generateImports() {
32
+ this.#out(`/* eslint-disable @typescript-eslint/no-namespace */
33
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
34
+
35
+ //////////////////////////////////////////////////////////////////////////
36
+ // Generated File
37
+ //////////////////////////////////////////////////////////////////////////
38
+
39
+ import json from './elements.json'
40
+ import { FunctionResult } from './resolvable/elements/function/FunctionElement'
41
+ import { UiElementData } from './resolvable/elements/UiElement'
42
+ import HCore from 'haystack-core'
43
+
44
+ export const UI_ELEMENTS = json as UiElementRoot
45
+
46
+ //////////////////////////////////////////////////////////////////////////
47
+ // Interfaces
48
+ //////////////////////////////////////////////////////////////////////////
49
+ `);
50
+ }
51
+ #generateSectionDefinition(sectionData, name, indentation = 0) {
52
+ const section = new ResolvableSectionElement_1.ResolvableSectionElement({
53
+ name,
54
+ element: sectionData,
55
+ onUpdate: () => {
56
+ return;
57
+ },
58
+ resolver: new Resolver_1.Resolver({ client: makeMockedClient() }),
59
+ });
60
+ this.#generateInterface(section, indentation);
61
+ if (countSectionChildrenSections(section) > 0) {
62
+ this.#generateNamespace(section, indentation);
63
+ }
64
+ }
65
+ #generateInterface(section, indentation) {
66
+ const name = section.name ?? ROOT_NAME;
67
+ this.#out(`export interface ${capitalize(name)} extends UiElementData {`, indentation);
68
+ const parameters = section.getParameterList();
69
+ if (parameters.length > 0) {
70
+ this.#generateParametersProperty(parameters, indentation + 1);
71
+ }
72
+ this.#generateResolvedProperty(section, indentation + 1);
73
+ section.children.forEach((child) => this.#out((0, ResolvableSectionElement_1.isChildUnresolvedSection)(child)
74
+ ? `${child[0]}: ${capitalize(name)}.${capitalize(child[0] ?? '')}`
75
+ : `${child.name}: ${ELEMENT_INTERFACE_NAME}`, indentation + 1));
76
+ this.#out(`}`, indentation);
77
+ }
78
+ #generateParametersProperty(parameters, indentation) {
79
+ this.#out(`_parameters?: {`, indentation);
80
+ parameters.forEach((param) => this.#out(`${param}: HCore.HVal`, indentation + 1));
81
+ this.#out(`}`, indentation);
82
+ }
83
+ #generateResolvedProperty(section, indentation) {
84
+ const name = section.name ?? ROOT_NAME;
85
+ if (section.children.length > 0) {
86
+ this.#out('_resolved?: {', indentation);
87
+ section.children.forEach((child) => this.#out((0, ResolvableSectionElement_1.isChildUnresolvedSection)(child)
88
+ ? `${child[0]}: ${capitalize(name)}.${capitalize(child[0] ?? '')}`
89
+ : `${child.name}?: ${getResolvedType(child)}`, indentation + 1));
90
+ this.#out('}', indentation);
91
+ }
92
+ else {
93
+ this.#out(`_resolved?: Record<string, unknown>`, indentation);
94
+ }
95
+ }
96
+ #generateNamespace(section, indentation) {
97
+ const name = section.name ?? ROOT_NAME;
98
+ this.#out(`export namespace ${capitalize(name)} {`, indentation);
99
+ section.children
100
+ .filter((child) => (0, ResolvableSectionElement_1.isChildUnresolvedSection)(child))
101
+ .forEach((child) => {
102
+ if ((0, ResolvableSectionElement_1.isChildUnresolvedSection)(child)) {
103
+ this.#generateSectionDefinition(child[1], child[0], indentation + 1);
104
+ }
105
+ });
106
+ this.#out(`}`, indentation);
107
+ }
108
+ }
109
+ const makeMockedClient = () => {
110
+ return new haystack_nclient_1.Client({
111
+ base: new URL('http://localhost:8080'),
112
+ fetch: () => new Promise(() => {
113
+ return new Response();
114
+ }),
115
+ });
116
+ };
117
+ function capitalize(str) {
118
+ return str.at(0)?.toUpperCase() + str.substring(1);
119
+ }
120
+ function getResolvedType(child) {
121
+ if (child._meta && (0, ResolvableValueElement_1.isResolvableValueElementMeta)(child._meta)) {
122
+ return child._meta.resolvedType.startsWith('H')
123
+ ? 'HCore.' + child._meta.resolvedType
124
+ : child._meta.resolvedType;
125
+ }
126
+ else {
127
+ return 'unknown';
128
+ }
129
+ }
130
+ const countSectionChildrenSections = (section) => section.children.filter((child) => (0, ResolvableSectionElement_1.isChildUnresolvedSection)(child)).length;
131
+ //# sourceMappingURL=generateInterfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateInterfaces.js","sourceRoot":"","sources":["../../../src/resolvableElements/interfacesGeneration/generateInterfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Converts props file to json file.
3
+ */
4
+ export default function generateTypescriptInterfacesFile(inputPath?: string, outputPath?: string): Promise<void>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const fs = __importStar(require("fs"));
27
+ const generateInterfaces_1 = require("./generateInterfaces");
28
+ /**
29
+ * Converts props file to json file.
30
+ */
31
+ async function generateTypescriptInterfacesFile(inputPath = '../elements.json', outputPath = '../__generatedInterfaces.ts') {
32
+ console.log(`Generating interfaces from ${inputPath} \n...`);
33
+ const json = fs.readFileSync(inputPath, { encoding: 'utf-8' }); //(await import(inputPath)).default
34
+ const result = await (0, generateInterfaces_1.generateInterfaces)(JSON.parse(json));
35
+ fs.writeFileSync(outputPath, result);
36
+ console.log(`File successfully generated at: ${outputPath}`);
37
+ }
38
+ exports.default = generateTypescriptInterfacesFile;
39
+ //# sourceMappingURL=generateTypescriptInterfacesFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateTypescriptInterfacesFile.js","sourceRoot":"","sources":["../../../src/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwB;AACxB,6DAAyD;AAEzD;;GAEG;AACY,KAAK,UAAU,gCAAgC,CAC7D,SAAS,GAAG,kBAAkB,EAC9B,UAAU,GAAG,6BAA6B;IAE1C,OAAO,CAAC,GAAG,CAAC,8BAA8B,SAAS,QAAQ,CAAC,CAAA;IAE5D,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA,CAAC,mCAAmC;IAElG,MAAM,MAAM,GAAG,MAAM,IAAA,uCAAkB,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAEzD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAEpC,OAAO,CAAC,GAAG,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAAA;AAC7D,CAAC;AAbD,mDAaC"}
@@ -0,0 +1,18 @@
1
+ import { ResolvableSectionElement } from '../elements/section/ResolvableSectionElement';
2
+ import { ResolvedSectionResult } from '../elements/section/SectionElementMeta';
3
+ import { ParametersOfSection, UiElementData } from '../elements/UiElement';
4
+ /**
5
+ * Resolves a section UI element.
6
+ * @param sectionData section data object
7
+ * @param parameters parameters for the resolution
8
+ * @returns the resolved result of the section that will be updated and force rendering when a subvalue changes.
9
+ */
10
+ export declare function useResolveSection<T extends UiElementData>(sectionData: T, parameters?: ParametersOfSection<T>): UseResolveSectionResult<T>;
11
+ export declare type UseResolveSectionResult<T extends UiElementData> = [
12
+ ResolvedSectionResult<T>,
13
+ UseResolveSectionExtra<T>
14
+ ];
15
+ export interface UseResolveSectionExtra<T extends UiElementData> {
16
+ refresh: () => void;
17
+ element?: ResolvableSectionElement<T>;
18
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useResolveSection = void 0;
4
+ const react_1 = require("react");
5
+ const FunctionElement_1 = require("../elements/function/FunctionElement");
6
+ const ResolvableSectionElement_1 = require("../elements/section/ResolvableSectionElement");
7
+ const useResolverContext_1 = require("./useResolverContext");
8
+ /**
9
+ * Resolves a section UI element.
10
+ * @param sectionData section data object
11
+ * @param parameters parameters for the resolution
12
+ * @returns the resolved result of the section that will be updated and force rendering when a subvalue changes.
13
+ */
14
+ function useResolveSection(sectionData, parameters) {
15
+ const [, update] = (0, react_1.useReducer)((count) => count + 1, 0);
16
+ const resolver = (0, useResolverContext_1.useResolverContext)();
17
+ const [refreshes, refresh] = (0, react_1.useReducer)((count) => count + 1, 0);
18
+ const [initialResolvable] = (0, react_1.useState)(() => new ResolvableSectionElement_1.ResolvableSectionElement({
19
+ element: sectionData,
20
+ resolver,
21
+ onUpdate: () => {
22
+ update();
23
+ },
24
+ }));
25
+ const ref = (0, react_1.useRef)(initialResolvable);
26
+ const parametersDict = (0, FunctionElement_1.makeParametersDict)(parameters);
27
+ (0, react_1.useEffect)(() => {
28
+ if (areParametersValid(parameters)) {
29
+ ref.current = new ResolvableSectionElement_1.ResolvableSectionElement({
30
+ element: sectionData,
31
+ resolver,
32
+ onUpdate: () => {
33
+ update();
34
+ },
35
+ });
36
+ ref.current.initialize(parametersDict);
37
+ return () => {
38
+ ref.current?.close();
39
+ };
40
+ }
41
+ return;
42
+ }, [sectionData, resolver, refreshes, parametersDict.toAxon()]);
43
+ return [
44
+ (ref.current?.value ?? {}),
45
+ {
46
+ refresh: refresh,
47
+ element: ref.current,
48
+ },
49
+ ];
50
+ }
51
+ exports.useResolveSection = useResolveSection;
52
+ const areParametersValid = (parameters) => {
53
+ if (parameters &&
54
+ Object.entries(parameters).some(([, value]) => value == null)) {
55
+ return false;
56
+ }
57
+ return true;
58
+ };
59
+ //# sourceMappingURL=useResolveSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResolveSection.js","sourceRoot":"","sources":["../../../src/resolvableElements/react/useResolveSection.ts"],"names":[],"mappings":";;;AAAA,iCAA+D;AAC/D,0EAAyE;AACzE,2FAAuF;AAGvF,6DAAyD;AAEzD;;;;;GAKG;AACH,SAAgB,iBAAiB,CAChC,WAAc,EACd,UAAmC;IAEnC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,IAAA,kBAAU,EAAC,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9D,MAAM,QAAQ,GAAG,IAAA,uCAAkB,GAAE,CAAA;IACrC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,IAAA,kBAAU,EAAC,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IACxE,MAAM,CAAC,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EACnC,GAAG,EAAE,CACJ,IAAI,mDAAwB,CAAC;QAC5B,OAAO,EAAE,WAAW;QACpB,QAAQ;QACR,QAAQ,EAAE,GAAG,EAAE;YACd,MAAM,EAAE,CAAA;QACT,CAAC;KACD,CAAC,CACH,CAAA;IACD,MAAM,GAAG,GAAG,IAAA,cAAM,EAA8B,iBAAiB,CAAC,CAAA;IAClE,MAAM,cAAc,GAAG,IAAA,oCAAkB,EAAC,UAAU,CAAC,CAAA;IAErD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,IAAI,kBAAkB,CAAC,UAAU,CAAC,EAAE;YACnC,GAAG,CAAC,OAAO,GAAG,IAAI,mDAAwB,CAAC;gBAC1C,OAAO,EAAE,WAAW;gBACpB,QAAQ;gBACR,QAAQ,EAAE,GAAG,EAAE;oBACd,MAAM,EAAE,CAAA;gBACT,CAAC;aACD,CAAC,CAAA;YAEF,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;YAEtC,OAAO,GAAG,EAAE;gBACX,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;YACrB,CAAC,CAAA;SACD;QACD,OAAM;IACP,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAE/D,OAAO;QACN,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAA6B;QACtD;YACC,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,GAAG,CAAC,OAAO;SACpB;KACD,CAAA;AACF,CAAC;AA9CD,8CA8CC;AAED,MAAM,kBAAkB,GAAG,CAC1B,UAAkC,EACjC,EAAE;IACH,IACC,UAAU;QACV,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,EAC5D;QACD,OAAO,KAAK,CAAA;KACZ;IACD,OAAO,IAAI,CAAA;AACZ,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { Resolver } from '../Resolver';
3
+ export declare function useResolverContext(): Resolver;
4
+ export declare const ResolverProvider: React.FC;