@j2inn/resolvable-ui-elements 2.0.0 → 2.1.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.
- package/dist/index.d.ts +12 -12
- package/dist/index.js +39 -39
- package/dist/resolvableElements/Resolver.d.ts +47 -47
- package/dist/resolvableElements/Resolver.js +57 -57
- package/dist/resolvableElements/elements/ResolvableElement.d.ts +14 -14
- package/dist/resolvableElements/elements/ResolvableElement.js +29 -29
- package/dist/resolvableElements/elements/ResolvableValueElement.d.ts +16 -16
- package/dist/resolvableElements/elements/ResolvableValueElement.js +38 -38
- package/dist/resolvableElements/elements/UiElement.d.ts +31 -31
- package/dist/resolvableElements/elements/UiElement.js +56 -56
- package/dist/resolvableElements/elements/expr/ResolvableExprElement.d.ts +26 -26
- package/dist/resolvableElements/elements/expr/ResolvableExprElement.js +105 -105
- package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +10 -10
- package/dist/resolvableElements/elements/expr/ResolvableExprElementMeta.js +14 -14
- package/dist/resolvableElements/elements/function/FunctionElement.d.ts +12 -12
- package/dist/resolvableElements/elements/function/FunctionElement.js +41 -41
- package/dist/resolvableElements/elements/function/FunctionElementMeta.d.ts +9 -9
- package/dist/resolvableElements/elements/function/FunctionElementMeta.js +14 -14
- package/dist/resolvableElements/elements/list/ListElementMeta.d.ts +12 -12
- package/dist/resolvableElements/elements/list/ListElementMeta.js +14 -14
- package/dist/resolvableElements/elements/list/ResolvableListElement.d.ts +16 -16
- package/dist/resolvableElements/elements/list/ResolvableListElement.js +102 -102
- package/dist/resolvableElements/elements/makeElement.d.ts +7 -7
- package/dist/resolvableElements/elements/makeElement.js +40 -40
- package/dist/resolvableElements/elements/section/ResolvableSectionElement.d.ts +24 -24
- package/dist/resolvableElements/elements/section/ResolvableSectionElement.js +133 -122
- package/dist/resolvableElements/elements/section/ResolvableSectionElement.js.map +1 -1
- package/dist/resolvableElements/elements/section/SectionElementMeta.d.ts +16 -16
- package/dist/resolvableElements/elements/section/SectionElementMeta.js +11 -11
- package/dist/resolvableElements/elements/section/resolveSection.d.ts +12 -12
- package/dist/resolvableElements/elements/section/resolveSection.js +50 -41
- package/dist/resolvableElements/elements/section/resolveSection.js.map +1 -1
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.d.ts +18 -16
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.js +113 -105
- package/dist/resolvableElements/elements/tag/ResolvableTagElement.js.map +1 -1
- package/dist/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.d.ts +25 -0
- package/dist/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.js +68 -0
- package/dist/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.js.map +1 -0
- package/dist/resolvableElements/elements/tag/TagElementMeta.d.ts +12 -12
- package/dist/resolvableElements/elements/tag/TagElementMeta.js +14 -14
- package/dist/resolvableElements/interfacesGeneration/generateInterfaces.d.ts +17 -17
- package/dist/resolvableElements/interfacesGeneration/generateInterfaces.js +134 -134
- package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.d.ts +4 -4
- package/dist/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js +41 -41
- package/dist/resolvableElements/react/SectionChecker.d.ts +24 -24
- package/dist/resolvableElements/react/SectionChecker.jsx +27 -27
- package/dist/resolvableElements/react/useResolveSection.d.ts +21 -21
- package/dist/resolvableElements/react/useResolveSection.js +65 -65
- package/dist/resolvableElements/react/useResolverContext.d.ts +9 -9
- package/dist/resolvableElements/react/useResolverContext.jsx +64 -64
- package/dist/resolvableElements/resolveTemplatedExpression.d.ts +22 -22
- package/dist/resolvableElements/resolveTemplatedExpression.js +43 -43
- package/dist/useCurrentUser.d.ts +10 -10
- package/dist/useCurrentUser.jsx +48 -48
- package/dist_es/index.d.ts +12 -12
- package/dist_es/index.js +20 -20
- package/dist_es/resolvableElements/Resolver.d.ts +47 -47
- package/dist_es/resolvableElements/Resolver.js +53 -53
- package/dist_es/resolvableElements/elements/ResolvableElement.d.ts +14 -14
- package/dist_es/resolvableElements/elements/ResolvableElement.js +25 -25
- package/dist_es/resolvableElements/elements/ResolvableValueElement.d.ts +16 -16
- package/dist_es/resolvableElements/elements/ResolvableValueElement.js +32 -32
- package/dist_es/resolvableElements/elements/UiElement.d.ts +31 -31
- package/dist_es/resolvableElements/elements/UiElement.js +52 -52
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.d.ts +26 -26
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElement.js +101 -101
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.d.ts +10 -10
- package/dist_es/resolvableElements/elements/expr/ResolvableExprElementMeta.js +9 -9
- package/dist_es/resolvableElements/elements/function/FunctionElement.d.ts +12 -12
- package/dist_es/resolvableElements/elements/function/FunctionElement.js +36 -36
- package/dist_es/resolvableElements/elements/function/FunctionElementMeta.d.ts +9 -9
- package/dist_es/resolvableElements/elements/function/FunctionElementMeta.js +9 -9
- package/dist_es/resolvableElements/elements/list/ListElementMeta.d.ts +12 -12
- package/dist_es/resolvableElements/elements/list/ListElementMeta.js +9 -9
- package/dist_es/resolvableElements/elements/list/ResolvableListElement.d.ts +16 -16
- package/dist_es/resolvableElements/elements/list/ResolvableListElement.js +98 -98
- package/dist_es/resolvableElements/elements/makeElement.d.ts +7 -7
- package/dist_es/resolvableElements/elements/makeElement.js +36 -36
- package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.d.ts +24 -24
- package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js +128 -117
- package/dist_es/resolvableElements/elements/section/ResolvableSectionElement.js.map +1 -1
- package/dist_es/resolvableElements/elements/section/SectionElementMeta.d.ts +16 -16
- package/dist_es/resolvableElements/elements/section/SectionElementMeta.js +6 -6
- package/dist_es/resolvableElements/elements/section/resolveSection.d.ts +12 -12
- package/dist_es/resolvableElements/elements/section/resolveSection.js +45 -36
- package/dist_es/resolvableElements/elements/section/resolveSection.js.map +1 -1
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.d.ts +18 -16
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js +109 -101
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElement.js.map +1 -1
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.d.ts +25 -0
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.js +64 -0
- package/dist_es/resolvableElements/elements/tag/ResolvableTagElementBatchProcessor.js.map +1 -0
- package/dist_es/resolvableElements/elements/tag/TagElementMeta.d.ts +12 -12
- package/dist_es/resolvableElements/elements/tag/TagElementMeta.js +9 -9
- package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.d.ts +17 -17
- package/dist_es/resolvableElements/interfacesGeneration/generateInterfaces.js +128 -128
- package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.d.ts +4 -4
- package/dist_es/resolvableElements/interfacesGeneration/generateTypescriptInterfacesFile.js +15 -15
- package/dist_es/resolvableElements/react/SectionChecker.d.ts +24 -24
- package/dist_es/resolvableElements/react/SectionChecker.jsx +20 -20
- package/dist_es/resolvableElements/react/useResolveSection.d.ts +21 -21
- package/dist_es/resolvableElements/react/useResolveSection.js +61 -61
- package/dist_es/resolvableElements/react/useResolverContext.d.ts +9 -9
- package/dist_es/resolvableElements/react/useResolverContext.jsx +36 -36
- package/dist_es/resolvableElements/resolveTemplatedExpression.d.ts +22 -22
- package/dist_es/resolvableElements/resolveTemplatedExpression.js +38 -38
- package/dist_es/useCurrentUser.d.ts +10 -10
- package/dist_es/useCurrentUser.jsx +20 -20
- package/package.json +2 -2
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.isResolvableTagMeta = exports.isResolvableTagElementData = void 0;
|
|
7
|
-
const isResolvableTagElementData = (element) => {
|
|
8
|
-
return !!element?._meta && (0, exports.isResolvableTagMeta)(element._meta);
|
|
9
|
-
};
|
|
10
|
-
exports.isResolvableTagElementData = isResolvableTagElementData;
|
|
11
|
-
const isResolvableTagMeta = (meta) => {
|
|
12
|
-
return meta.resolutionType === 'tag';
|
|
13
|
-
};
|
|
14
|
-
exports.isResolvableTagMeta = isResolvableTagMeta;
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isResolvableTagMeta = exports.isResolvableTagElementData = void 0;
|
|
7
|
+
const isResolvableTagElementData = (element) => {
|
|
8
|
+
return !!element?._meta && (0, exports.isResolvableTagMeta)(element._meta);
|
|
9
|
+
};
|
|
10
|
+
exports.isResolvableTagElementData = isResolvableTagElementData;
|
|
11
|
+
const isResolvableTagMeta = (meta) => {
|
|
12
|
+
return meta.resolutionType === 'tag';
|
|
13
|
+
};
|
|
14
|
+
exports.isResolvableTagMeta = isResolvableTagMeta;
|
|
15
15
|
//# sourceMappingURL=TagElementMeta.js.map
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { ResolvableSectionElement } from '../elements/section/ResolvableSectionElement';
|
|
2
|
-
import { UiElementSectionMeta } from '../elements/section/SectionElementMeta';
|
|
3
|
-
import { UiElementData } from '../elements/UiElement';
|
|
4
|
-
export declare const generateInterfaces: (section: UiElementData<UiElementSectionMeta>) => string;
|
|
5
|
-
/**
|
|
6
|
-
* Class for generating typescript interfaces from a section data.
|
|
7
|
-
*/
|
|
8
|
-
export declare class SectionInterfacesGenerator {
|
|
9
|
-
#private;
|
|
10
|
-
constructor(section: UiElementData<UiElementSectionMeta>);
|
|
11
|
-
sectionData: UiElementData<UiElementSectionMeta>;
|
|
12
|
-
output: string;
|
|
13
|
-
generate: () => string;
|
|
14
|
-
generateInterface(section: ResolvableSectionElement, indentation: number): void;
|
|
15
|
-
generateNamespace(section: ResolvableSectionElement<UiElementData<UiElementSectionMeta>>, indentation: number): void;
|
|
16
|
-
}
|
|
17
|
-
export declare function makeResolvableSectionElementMock(sectionData: UiElementData<UiElementSectionMeta>, name?: string): ResolvableSectionElement<UiElementData<UiElementSectionMeta>>;
|
|
1
|
+
import { ResolvableSectionElement } from '../elements/section/ResolvableSectionElement';
|
|
2
|
+
import { UiElementSectionMeta } from '../elements/section/SectionElementMeta';
|
|
3
|
+
import { UiElementData } from '../elements/UiElement';
|
|
4
|
+
export declare const generateInterfaces: (section: UiElementData<UiElementSectionMeta>) => string;
|
|
5
|
+
/**
|
|
6
|
+
* Class for generating typescript interfaces from a section data.
|
|
7
|
+
*/
|
|
8
|
+
export declare class SectionInterfacesGenerator {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(section: UiElementData<UiElementSectionMeta>);
|
|
11
|
+
sectionData: UiElementData<UiElementSectionMeta>;
|
|
12
|
+
output: string;
|
|
13
|
+
generate: () => string;
|
|
14
|
+
generateInterface(section: ResolvableSectionElement, indentation: number): void;
|
|
15
|
+
generateNamespace(section: ResolvableSectionElement<UiElementData<UiElementSectionMeta>>, indentation: number): void;
|
|
16
|
+
}
|
|
17
|
+
export declare function makeResolvableSectionElementMock(sectionData: UiElementData<UiElementSectionMeta>, name?: string): ResolvableSectionElement<UiElementData<UiElementSectionMeta>>;
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.makeResolvableSectionElementMock = exports.SectionInterfacesGenerator = exports.generateInterfaces = void 0;
|
|
7
|
-
const haystack_core_1 = require("haystack-core");
|
|
8
|
-
const haystack_nclient_1 = require("haystack-nclient");
|
|
9
|
-
const ResolvableValueElement_1 = require("../elements/ResolvableValueElement");
|
|
10
|
-
const ResolvableSectionElement_1 = require("../elements/section/ResolvableSectionElement");
|
|
11
|
-
const Resolver_1 = require("../Resolver");
|
|
12
|
-
const ROOT_NAME = 'UiElementRoot';
|
|
13
|
-
const ELEMENT_INTERFACE_NAME = 'UiElementData';
|
|
14
|
-
const generateInterfaces = (section) => {
|
|
15
|
-
return new SectionInterfacesGenerator(section).generate();
|
|
16
|
-
};
|
|
17
|
-
exports.generateInterfaces = generateInterfaces;
|
|
18
|
-
/**
|
|
19
|
-
* Class for generating typescript interfaces from a section data.
|
|
20
|
-
*/
|
|
21
|
-
class SectionInterfacesGenerator {
|
|
22
|
-
constructor(section) {
|
|
23
|
-
this.sectionData = section;
|
|
24
|
-
}
|
|
25
|
-
sectionData;
|
|
26
|
-
output = '';
|
|
27
|
-
#out = (str, indentation = 0) => {
|
|
28
|
-
this.output += this.#indent(indentation) + str + '\n';
|
|
29
|
-
};
|
|
30
|
-
#indent(indentation = 0) {
|
|
31
|
-
return '\t'.repeat(indentation);
|
|
32
|
-
}
|
|
33
|
-
generate = () => {
|
|
34
|
-
this.#generateImports();
|
|
35
|
-
const section = makeResolvableSectionElementMock(this.sectionData);
|
|
36
|
-
this.#generateSectionDefinition(section);
|
|
37
|
-
const result = this.output;
|
|
38
|
-
this.output = '';
|
|
39
|
-
return result;
|
|
40
|
-
};
|
|
41
|
-
#generateImports() {
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.makeResolvableSectionElementMock = exports.SectionInterfacesGenerator = exports.generateInterfaces = void 0;
|
|
7
|
+
const haystack_core_1 = require("haystack-core");
|
|
8
|
+
const haystack_nclient_1 = require("haystack-nclient");
|
|
9
|
+
const ResolvableValueElement_1 = require("../elements/ResolvableValueElement");
|
|
10
|
+
const ResolvableSectionElement_1 = require("../elements/section/ResolvableSectionElement");
|
|
11
|
+
const Resolver_1 = require("../Resolver");
|
|
12
|
+
const ROOT_NAME = 'UiElementRoot';
|
|
13
|
+
const ELEMENT_INTERFACE_NAME = 'UiElementData';
|
|
14
|
+
const generateInterfaces = (section) => {
|
|
15
|
+
return new SectionInterfacesGenerator(section).generate();
|
|
16
|
+
};
|
|
17
|
+
exports.generateInterfaces = generateInterfaces;
|
|
18
|
+
/**
|
|
19
|
+
* Class for generating typescript interfaces from a section data.
|
|
20
|
+
*/
|
|
21
|
+
class SectionInterfacesGenerator {
|
|
22
|
+
constructor(section) {
|
|
23
|
+
this.sectionData = section;
|
|
24
|
+
}
|
|
25
|
+
sectionData;
|
|
26
|
+
output = '';
|
|
27
|
+
#out = (str, indentation = 0) => {
|
|
28
|
+
this.output += this.#indent(indentation) + str + '\n';
|
|
29
|
+
};
|
|
30
|
+
#indent(indentation = 0) {
|
|
31
|
+
return '\t'.repeat(indentation);
|
|
32
|
+
}
|
|
33
|
+
generate = () => {
|
|
34
|
+
this.#generateImports();
|
|
35
|
+
const section = makeResolvableSectionElementMock(this.sectionData);
|
|
36
|
+
this.#generateSectionDefinition(section);
|
|
37
|
+
const result = this.output;
|
|
38
|
+
this.output = '';
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
#generateImports() {
|
|
42
42
|
this.#out(`/* eslint-disable @typescript-eslint/no-namespace */
|
|
43
43
|
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
44
44
|
|
|
@@ -57,97 +57,97 @@ export const UI_ELEMENTS = json as UiElementRoot
|
|
|
57
57
|
//////////////////////////////////////////////////////////////////////////
|
|
58
58
|
// Interfaces
|
|
59
59
|
//////////////////////////////////////////////////////////////////////////
|
|
60
|
-
`);
|
|
61
|
-
}
|
|
62
|
-
#generateSectionDefinition(section, indentation = 0) {
|
|
63
|
-
this.generateInterface(section, indentation);
|
|
64
|
-
if (hasChildrenSections(section)) {
|
|
65
|
-
this.generateNamespace(section, indentation);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
generateInterface(section, indentation) {
|
|
69
|
-
const name = section.name ?? ROOT_NAME;
|
|
70
|
-
this.#out(`export interface ${capitalize(name)} extends UiElementData {`, indentation);
|
|
71
|
-
const parameters = section.getParameterList();
|
|
72
|
-
if (parameters.length > 0) {
|
|
73
|
-
this.#generateParametersProperty(parameters, indentation + 1);
|
|
74
|
-
}
|
|
75
|
-
this.#generateResolvedProperty(section, indentation + 1);
|
|
76
|
-
section.children.forEach((child) => this.#out((0, ResolvableSectionElement_1.isChildUnresolvedSection)(child)
|
|
77
|
-
? `${child[0]}: ${capitalize(name)}.${capitalize(child[0] ?? '')}`
|
|
78
|
-
: `${child.name}: ${ELEMENT_INTERFACE_NAME}`, indentation + 1));
|
|
79
|
-
this.#out(`}`, indentation);
|
|
80
|
-
}
|
|
81
|
-
#generateParametersProperty(parameters, indentation) {
|
|
82
|
-
this.#out(`_parameters?: {`, indentation);
|
|
83
|
-
parameters.forEach((param) => this.#out(`${param}: HCore.HVal`, indentation + 1));
|
|
84
|
-
this.#out(`}`, indentation);
|
|
85
|
-
}
|
|
86
|
-
#generateResolvedProperty(section, indentation) {
|
|
87
|
-
const name = section.name ?? ROOT_NAME;
|
|
88
|
-
if (section.children.length > 0) {
|
|
89
|
-
this.#out('_resolved?: {', indentation);
|
|
90
|
-
section.children.forEach((child) => this.#out((0, ResolvableSectionElement_1.isChildUnresolvedSection)(child)
|
|
91
|
-
? `${child[0]}?: ${capitalize(name)}.${capitalize(child[0] ?? '')}`
|
|
92
|
-
: `${child.name}?: ${getResolvedType(child)}`, indentation + 1));
|
|
93
|
-
this.#out('}', indentation);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
this.#out(`_resolved?: Record<string, unknown>`, indentation);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
generateNamespace(section, indentation) {
|
|
100
|
-
const name = section.name ?? ROOT_NAME;
|
|
101
|
-
this.#out(`export namespace ${capitalize(name)} {`, indentation);
|
|
102
|
-
section.children
|
|
103
|
-
.filter((child) => (0, ResolvableSectionElement_1.isChildUnresolvedSection)(child))
|
|
104
|
-
.forEach((child) => {
|
|
105
|
-
if ((0, ResolvableSectionElement_1.isChildUnresolvedSection)(child)) {
|
|
106
|
-
const section = makeResolvableSectionElementMock(child[1], child[0]);
|
|
107
|
-
this.#generateSectionDefinition(section, indentation + 1);
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
this.#out(`}`, indentation);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
exports.SectionInterfacesGenerator = SectionInterfacesGenerator;
|
|
114
|
-
function makeResolvableSectionElementMock(sectionData, name) {
|
|
115
|
-
return new ResolvableSectionElement_1.ResolvableSectionElement({
|
|
116
|
-
name,
|
|
117
|
-
element: sectionData,
|
|
118
|
-
onUpdate: () => {
|
|
119
|
-
return;
|
|
120
|
-
},
|
|
121
|
-
resolver: new Resolver_1.Resolver({
|
|
122
|
-
client: makeMockedClient(),
|
|
123
|
-
user: haystack_core_1.HDict.make({ userRole: 'su' }),
|
|
124
|
-
}),
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
exports.makeResolvableSectionElementMock = makeResolvableSectionElementMock;
|
|
128
|
-
function makeMockedClient() {
|
|
129
|
-
return new haystack_nclient_1.Client({
|
|
130
|
-
base: new URL('http://localhost:8080'),
|
|
131
|
-
fetch: () => new Promise(() => {
|
|
132
|
-
return new Response();
|
|
133
|
-
}),
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
function capitalize(str) {
|
|
137
|
-
return str.charAt(0)?.toUpperCase() + str.substring(1);
|
|
138
|
-
}
|
|
139
|
-
function getResolvedType(child) {
|
|
140
|
-
if (child._meta && (0, ResolvableValueElement_1.isResolvableValueElementMeta)(child._meta)) {
|
|
141
|
-
return child._meta.resolvedType.startsWith('H')
|
|
142
|
-
? 'HCore.' + child._meta.resolvedType
|
|
143
|
-
: child._meta.resolvedType;
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
return 'unknown';
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
function hasChildrenSections(section) {
|
|
150
|
-
return (section.children.filter((child) => (0, ResolvableSectionElement_1.isChildUnresolvedSection)(child))
|
|
151
|
-
.length > 0);
|
|
152
|
-
}
|
|
60
|
+
`);
|
|
61
|
+
}
|
|
62
|
+
#generateSectionDefinition(section, indentation = 0) {
|
|
63
|
+
this.generateInterface(section, indentation);
|
|
64
|
+
if (hasChildrenSections(section)) {
|
|
65
|
+
this.generateNamespace(section, indentation);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
generateInterface(section, indentation) {
|
|
69
|
+
const name = section.name ?? ROOT_NAME;
|
|
70
|
+
this.#out(`export interface ${capitalize(name)} extends UiElementData {`, indentation);
|
|
71
|
+
const parameters = section.getParameterList();
|
|
72
|
+
if (parameters.length > 0) {
|
|
73
|
+
this.#generateParametersProperty(parameters, indentation + 1);
|
|
74
|
+
}
|
|
75
|
+
this.#generateResolvedProperty(section, indentation + 1);
|
|
76
|
+
section.children.forEach((child) => this.#out((0, ResolvableSectionElement_1.isChildUnresolvedSection)(child)
|
|
77
|
+
? `${child[0]}: ${capitalize(name)}.${capitalize(child[0] ?? '')}`
|
|
78
|
+
: `${child.name}: ${ELEMENT_INTERFACE_NAME}`, indentation + 1));
|
|
79
|
+
this.#out(`}`, indentation);
|
|
80
|
+
}
|
|
81
|
+
#generateParametersProperty(parameters, indentation) {
|
|
82
|
+
this.#out(`_parameters?: {`, indentation);
|
|
83
|
+
parameters.forEach((param) => this.#out(`${param}: HCore.HVal`, indentation + 1));
|
|
84
|
+
this.#out(`}`, indentation);
|
|
85
|
+
}
|
|
86
|
+
#generateResolvedProperty(section, indentation) {
|
|
87
|
+
const name = section.name ?? ROOT_NAME;
|
|
88
|
+
if (section.children.length > 0) {
|
|
89
|
+
this.#out('_resolved?: {', indentation);
|
|
90
|
+
section.children.forEach((child) => this.#out((0, ResolvableSectionElement_1.isChildUnresolvedSection)(child)
|
|
91
|
+
? `${child[0]}?: ${capitalize(name)}.${capitalize(child[0] ?? '')}`
|
|
92
|
+
: `${child.name}?: ${getResolvedType(child)}`, indentation + 1));
|
|
93
|
+
this.#out('}', indentation);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
this.#out(`_resolved?: Record<string, unknown>`, indentation);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
generateNamespace(section, indentation) {
|
|
100
|
+
const name = section.name ?? ROOT_NAME;
|
|
101
|
+
this.#out(`export namespace ${capitalize(name)} {`, indentation);
|
|
102
|
+
section.children
|
|
103
|
+
.filter((child) => (0, ResolvableSectionElement_1.isChildUnresolvedSection)(child))
|
|
104
|
+
.forEach((child) => {
|
|
105
|
+
if ((0, ResolvableSectionElement_1.isChildUnresolvedSection)(child)) {
|
|
106
|
+
const section = makeResolvableSectionElementMock(child[1], child[0]);
|
|
107
|
+
this.#generateSectionDefinition(section, indentation + 1);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
this.#out(`}`, indentation);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
exports.SectionInterfacesGenerator = SectionInterfacesGenerator;
|
|
114
|
+
function makeResolvableSectionElementMock(sectionData, name) {
|
|
115
|
+
return new ResolvableSectionElement_1.ResolvableSectionElement({
|
|
116
|
+
name,
|
|
117
|
+
element: sectionData,
|
|
118
|
+
onUpdate: () => {
|
|
119
|
+
return;
|
|
120
|
+
},
|
|
121
|
+
resolver: new Resolver_1.Resolver({
|
|
122
|
+
client: makeMockedClient(),
|
|
123
|
+
user: haystack_core_1.HDict.make({ userRole: 'su' }),
|
|
124
|
+
}),
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
exports.makeResolvableSectionElementMock = makeResolvableSectionElementMock;
|
|
128
|
+
function makeMockedClient() {
|
|
129
|
+
return new haystack_nclient_1.Client({
|
|
130
|
+
base: new URL('http://localhost:8080'),
|
|
131
|
+
fetch: () => new Promise(() => {
|
|
132
|
+
return new Response();
|
|
133
|
+
}),
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
function capitalize(str) {
|
|
137
|
+
return str.charAt(0)?.toUpperCase() + str.substring(1);
|
|
138
|
+
}
|
|
139
|
+
function getResolvedType(child) {
|
|
140
|
+
if (child._meta && (0, ResolvableValueElement_1.isResolvableValueElementMeta)(child._meta)) {
|
|
141
|
+
return child._meta.resolvedType.startsWith('H')
|
|
142
|
+
? 'HCore.' + child._meta.resolvedType
|
|
143
|
+
: child._meta.resolvedType;
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
return 'unknown';
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function hasChildrenSections(section) {
|
|
150
|
+
return (section.children.filter((child) => (0, ResolvableSectionElement_1.isChildUnresolvedSection)(child))
|
|
151
|
+
.length > 0);
|
|
152
|
+
}
|
|
153
153
|
//# sourceMappingURL=generateInterfaces.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generate typescript interfaces file from json ui-elements data
|
|
3
|
-
*/
|
|
4
|
-
export default function generateTypescriptInterfacesFile(inputPath?: string, outputPath?: string): Promise<void>;
|
|
1
|
+
/**
|
|
2
|
+
* Generate typescript interfaces file from json ui-elements data
|
|
3
|
+
*/
|
|
4
|
+
export default function generateTypescriptInterfacesFile(inputPath?: string, outputPath?: string): Promise<void>;
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
-
*/
|
|
5
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
-
}
|
|
11
|
-
Object.defineProperty(o, k2, desc);
|
|
12
|
-
}) : (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
o[k2] = m[k];
|
|
15
|
-
}));
|
|
16
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
-
}) : function(o, v) {
|
|
19
|
-
o["default"] = v;
|
|
20
|
-
});
|
|
21
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
22
|
-
if (mod && mod.__esModule) return mod;
|
|
23
|
-
var result = {};
|
|
24
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
25
|
-
__setModuleDefault(result, mod);
|
|
26
|
-
return result;
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const fs = __importStar(require("fs"));
|
|
30
|
-
const generateInterfaces_1 = require("./generateInterfaces");
|
|
31
|
-
/**
|
|
32
|
-
* Generate typescript interfaces file from json ui-elements data
|
|
33
|
-
*/
|
|
34
|
-
async function generateTypescriptInterfacesFile(inputPath = '../elements.json', outputPath = '../elements.ts') {
|
|
35
|
-
console.log(`Generating interfaces from ${inputPath} \n...`);
|
|
36
|
-
const json = fs.readFileSync(inputPath, { encoding: 'utf-8' });
|
|
37
|
-
const result = (0, generateInterfaces_1.generateInterfaces)(JSON.parse(json));
|
|
38
|
-
fs.writeFileSync(outputPath, result);
|
|
39
|
-
console.log(`File successfully generated at: ${outputPath}`);
|
|
40
|
-
}
|
|
41
|
-
exports.default = generateTypescriptInterfacesFile;
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
22
|
+
if (mod && mod.__esModule) return mod;
|
|
23
|
+
var result = {};
|
|
24
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
25
|
+
__setModuleDefault(result, mod);
|
|
26
|
+
return result;
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const fs = __importStar(require("fs"));
|
|
30
|
+
const generateInterfaces_1 = require("./generateInterfaces");
|
|
31
|
+
/**
|
|
32
|
+
* Generate typescript interfaces file from json ui-elements data
|
|
33
|
+
*/
|
|
34
|
+
async function generateTypescriptInterfacesFile(inputPath = '../elements.json', outputPath = '../elements.ts') {
|
|
35
|
+
console.log(`Generating interfaces from ${inputPath} \n...`);
|
|
36
|
+
const json = fs.readFileSync(inputPath, { encoding: 'utf-8' });
|
|
37
|
+
const result = (0, generateInterfaces_1.generateInterfaces)(JSON.parse(json));
|
|
38
|
+
fs.writeFileSync(outputPath, result);
|
|
39
|
+
console.log(`File successfully generated at: ${outputPath}`);
|
|
40
|
+
}
|
|
41
|
+
exports.default = generateTypescriptInterfacesFile;
|
|
42
42
|
//# sourceMappingURL=generateTypescriptInterfacesFile.js.map
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { UiElementData } from 'resolvableElements/elements/UiElement';
|
|
3
|
-
/**
|
|
4
|
-
* An utility type that allows a component to accept props with or without a 'section' property.
|
|
5
|
-
*/
|
|
6
|
-
export type OptionalSection<P> = P | (Omit<P, 'section'> & {
|
|
7
|
-
section?: undefined;
|
|
8
|
-
});
|
|
9
|
-
/**
|
|
10
|
-
* Higher-Order Component that takes a section based component as an argument and returns a new component
|
|
11
|
-
* that checks if the 'section' prop is defined before rendering the SectionComponent.
|
|
12
|
-
* If the 'section' prop is undefined, it returns an empty element.
|
|
13
|
-
*
|
|
14
|
-
* @template P - Props of the original SectionComponent
|
|
15
|
-
* @param {React.FC<P>} SectionComponent - The original component that will be wrapped
|
|
16
|
-
* @returns {React.FC<P | (Omit<P, 'section'> & { section?: undefined })>} - The wrapped component
|
|
17
|
-
* @example
|
|
18
|
-
* const CheckedComponent = SectionChecker(({section, ...props}) => {
|
|
19
|
-
* return <div>{section.title}</div>
|
|
20
|
-
* })
|
|
21
|
-
*/
|
|
22
|
-
export declare const SectionChecker: <P extends {
|
|
23
|
-
section: UiElementData;
|
|
24
|
-
}>(SectionComponent: React.FC<P>) => (props: OptionalSection<P>) => JSX.Element;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { UiElementData } from 'resolvableElements/elements/UiElement';
|
|
3
|
+
/**
|
|
4
|
+
* An utility type that allows a component to accept props with or without a 'section' property.
|
|
5
|
+
*/
|
|
6
|
+
export type OptionalSection<P> = P | (Omit<P, 'section'> & {
|
|
7
|
+
section?: undefined;
|
|
8
|
+
});
|
|
9
|
+
/**
|
|
10
|
+
* Higher-Order Component that takes a section based component as an argument and returns a new component
|
|
11
|
+
* that checks if the 'section' prop is defined before rendering the SectionComponent.
|
|
12
|
+
* If the 'section' prop is undefined, it returns an empty element.
|
|
13
|
+
*
|
|
14
|
+
* @template P - Props of the original SectionComponent
|
|
15
|
+
* @param {React.FC<P>} SectionComponent - The original component that will be wrapped
|
|
16
|
+
* @returns {React.FC<P | (Omit<P, 'section'> & { section?: undefined })>} - The wrapped component
|
|
17
|
+
* @example
|
|
18
|
+
* const CheckedComponent = SectionChecker(({section, ...props}) => {
|
|
19
|
+
* return <div>{section.title}</div>
|
|
20
|
+
* })
|
|
21
|
+
*/
|
|
22
|
+
export declare const SectionChecker: <P extends {
|
|
23
|
+
section: UiElementData;
|
|
24
|
+
}>(SectionComponent: React.FC<P>) => (props: OptionalSection<P>) => JSX.Element;
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.SectionChecker = void 0;
|
|
7
|
-
const react_1 = __importDefault(require("react"));
|
|
8
|
-
/**
|
|
9
|
-
* Higher-Order Component that takes a section based component as an argument and returns a new component
|
|
10
|
-
* that checks if the 'section' prop is defined before rendering the SectionComponent.
|
|
11
|
-
* If the 'section' prop is undefined, it returns an empty element.
|
|
12
|
-
*
|
|
13
|
-
* @template P - Props of the original SectionComponent
|
|
14
|
-
* @param {React.FC<P>} SectionComponent - The original component that will be wrapped
|
|
15
|
-
* @returns {React.FC<P | (Omit<P, 'section'> & { section?: undefined })>} - The wrapped component
|
|
16
|
-
* @example
|
|
17
|
-
* const CheckedComponent = SectionChecker(({section, ...props}) => {
|
|
18
|
-
* return <div>{section.title}</div>
|
|
19
|
-
* })
|
|
20
|
-
*/
|
|
21
|
-
const SectionChecker = (SectionComponent) => {
|
|
22
|
-
const CheckedSectionComponent = (props) => {
|
|
23
|
-
return !props.section ? <></> : <SectionComponent {...props}/>;
|
|
24
|
-
};
|
|
25
|
-
return CheckedSectionComponent;
|
|
26
|
-
};
|
|
27
|
-
exports.SectionChecker = SectionChecker;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SectionChecker = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
/**
|
|
9
|
+
* Higher-Order Component that takes a section based component as an argument and returns a new component
|
|
10
|
+
* that checks if the 'section' prop is defined before rendering the SectionComponent.
|
|
11
|
+
* If the 'section' prop is undefined, it returns an empty element.
|
|
12
|
+
*
|
|
13
|
+
* @template P - Props of the original SectionComponent
|
|
14
|
+
* @param {React.FC<P>} SectionComponent - The original component that will be wrapped
|
|
15
|
+
* @returns {React.FC<P | (Omit<P, 'section'> & { section?: undefined })>} - The wrapped component
|
|
16
|
+
* @example
|
|
17
|
+
* const CheckedComponent = SectionChecker(({section, ...props}) => {
|
|
18
|
+
* return <div>{section.title}</div>
|
|
19
|
+
* })
|
|
20
|
+
*/
|
|
21
|
+
const SectionChecker = (SectionComponent) => {
|
|
22
|
+
const CheckedSectionComponent = (props) => {
|
|
23
|
+
return !props.section ? <></> : <SectionComponent {...props}/>;
|
|
24
|
+
};
|
|
25
|
+
return CheckedSectionComponent;
|
|
26
|
+
};
|
|
27
|
+
exports.SectionChecker = SectionChecker;
|
|
28
28
|
//# sourceMappingURL=SectionChecker.jsx.map
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { UiElementData } from '../elements/UiElement';
|
|
2
|
-
import { ResolvableSectionElement } from '../elements/section/ResolvableSectionElement';
|
|
3
|
-
import { ParametersOfSection, ResolvedSection } from '../elements/section/SectionElementMeta';
|
|
4
|
-
/**
|
|
5
|
-
* Resolves a section UI element.
|
|
6
|
-
* IMPORTANT: This hook requires a resolver react context defined. @See `ResolverProvider`.
|
|
7
|
-
* @param sectionData section data object
|
|
8
|
-
* @param parameters parameters for the resolution
|
|
9
|
-
* @returns the resolved result of the section that will be updated and force rendering when a subvalue changes.
|
|
10
|
-
*/
|
|
11
|
-
export declare function useResolveSection<T extends UiElementData>(sectionData: T, parameters?: ParametersOfSection<T>): UseResolveSectionResult<T>;
|
|
12
|
-
export type UseResolveSectionResult<T extends UiElementData> = [
|
|
13
|
-
ResolvedSection<T>,
|
|
14
|
-
UseResolveSectionExtra<T>
|
|
15
|
-
];
|
|
16
|
-
export interface UseResolveSectionExtra<T extends UiElementData> {
|
|
17
|
-
refresh: () => void;
|
|
18
|
-
element?: ResolvableSectionElement<T>;
|
|
19
|
-
loads: number;
|
|
20
|
-
isLoading: boolean;
|
|
21
|
-
}
|
|
1
|
+
import { UiElementData } from '../elements/UiElement';
|
|
2
|
+
import { ResolvableSectionElement } from '../elements/section/ResolvableSectionElement';
|
|
3
|
+
import { ParametersOfSection, ResolvedSection } from '../elements/section/SectionElementMeta';
|
|
4
|
+
/**
|
|
5
|
+
* Resolves a section UI element.
|
|
6
|
+
* IMPORTANT: This hook requires a resolver react context defined. @See `ResolverProvider`.
|
|
7
|
+
* @param sectionData section data object
|
|
8
|
+
* @param parameters parameters for the resolution
|
|
9
|
+
* @returns the resolved result of the section that will be updated and force rendering when a subvalue changes.
|
|
10
|
+
*/
|
|
11
|
+
export declare function useResolveSection<T extends UiElementData>(sectionData: T, parameters?: ParametersOfSection<T>): UseResolveSectionResult<T>;
|
|
12
|
+
export type UseResolveSectionResult<T extends UiElementData> = [
|
|
13
|
+
ResolvedSection<T>,
|
|
14
|
+
UseResolveSectionExtra<T>
|
|
15
|
+
];
|
|
16
|
+
export interface UseResolveSectionExtra<T extends UiElementData> {
|
|
17
|
+
refresh: () => void;
|
|
18
|
+
element?: ResolvableSectionElement<T>;
|
|
19
|
+
loads: number;
|
|
20
|
+
isLoading: boolean;
|
|
21
|
+
}
|