@thinkwise/testwise 0.2.0-beta.22 → 0.2.4
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/Testwise.ts +1 -3
- package/artifact-builder/InterfaceGenerator.ts +9 -1
- package/artifact-builder/ModelDataBuilder.ts +31 -60
- package/artifact-builder/ModelDataRefiner.ts +9 -5
- package/artifact-builder/SelectorBuilder.ts +8 -1
- package/artifact-builder/SubjectComponentGenerator.ts +77 -7
- package/artifact-builder/SubjectGenerator.ts +1 -1
- package/artifact-builder/SubjectRegistration.ts +68 -55
- package/artifact-builder/helpers/DataRetriever.ts +5 -2
- package/artifact-builder/helpers/NamingHandler.ts +25 -19
- package/components/BaseComponentObjects.ts +4 -1
- package/components/action-bar/ActionBar.ts +3 -3
- package/components/grid/Grid.ts +18 -21
- package/components/tab/BaseTab.ts +2 -2
- package/components/tab/BaseTabObjects.ts +1 -1
- package/components/tab/DetailTabPage.ts +2 -2
- package/components/tab/Tab.ts +4 -4
- package/controls/LookupDropdown.ts +7 -2
- package/dist/Testwise.js +1 -3
- package/dist/Testwise.js.map +1 -1
- package/dist/artifact-builder/InterfaceGenerator.d.ts +1 -0
- package/dist/artifact-builder/InterfaceGenerator.js +6 -1
- package/dist/artifact-builder/InterfaceGenerator.js.map +1 -1
- package/dist/artifact-builder/ModelDataBuilder.js +26 -50
- package/dist/artifact-builder/ModelDataBuilder.js.map +1 -1
- package/dist/artifact-builder/ModelDataRefiner.js +9 -5
- package/dist/artifact-builder/ModelDataRefiner.js.map +1 -1
- package/dist/artifact-builder/SelectorBuilder.js +3 -1
- package/dist/artifact-builder/SelectorBuilder.js.map +1 -1
- package/dist/artifact-builder/SubjectComponentGenerator.d.ts +4 -0
- package/dist/artifact-builder/SubjectComponentGenerator.js +61 -5
- package/dist/artifact-builder/SubjectComponentGenerator.js.map +1 -1
- package/dist/artifact-builder/SubjectGenerator.js +1 -1
- package/dist/artifact-builder/SubjectGenerator.js.map +1 -1
- package/dist/artifact-builder/SubjectRegistration.d.ts +9 -9
- package/dist/artifact-builder/SubjectRegistration.js +51 -42
- package/dist/artifact-builder/SubjectRegistration.js.map +1 -1
- package/dist/artifact-builder/helpers/DataRetriever.js +3 -2
- package/dist/artifact-builder/helpers/DataRetriever.js.map +1 -1
- package/dist/artifact-builder/helpers/NamingHandler.d.ts +2 -1
- package/dist/artifact-builder/helpers/NamingHandler.js +20 -15
- package/dist/artifact-builder/helpers/NamingHandler.js.map +1 -1
- package/dist/components/BaseComponentObjects.d.ts +1 -0
- package/dist/components/BaseComponentObjects.js +3 -1
- package/dist/components/BaseComponentObjects.js.map +1 -1
- package/dist/components/action-bar/ActionBar.d.ts +1 -1
- package/dist/components/action-bar/ActionBar.js +3 -3
- package/dist/components/grid/Grid.d.ts +5 -4
- package/dist/components/grid/Grid.js +13 -19
- package/dist/components/grid/Grid.js.map +1 -1
- package/dist/components/tab/BaseTab.d.ts +2 -2
- package/dist/components/tab/BaseTab.js +2 -2
- package/dist/components/tab/BaseTab.js.map +1 -1
- package/dist/components/tab/BaseTabObjects.js +1 -1
- package/dist/components/tab/BaseTabObjects.js.map +1 -1
- package/dist/components/tab/DetailTabPage.d.ts +2 -2
- package/dist/components/tab/DetailTabPage.js +2 -2
- package/dist/components/tab/DetailTabPage.js.map +1 -1
- package/dist/components/tab/Tab.d.ts +3 -3
- package/dist/components/tab/Tab.js +4 -4
- package/dist/components/tab/Tab.js.map +1 -1
- package/dist/controls/LookupDropdown.d.ts +3 -7
- package/dist/controls/LookupDropdown.js.map +1 -1
- package/dist/enums/ElementTypes.d.ts +1 -1
- package/dist/enums/ElementTypes.js +1 -1
- package/dist/enums/ElementTypes.js.map +1 -1
- package/dist/helpers/ConfigChecker.d.ts +3 -0
- package/dist/helpers/ConfigChecker.js +7 -0
- package/dist/helpers/ConfigChecker.js.map +1 -0
- package/dist/helpers/LoginHelper.js +1 -1
- package/dist/helpers/LoginHelper.js.map +1 -1
- package/dist/interfaces/IComponentObjects.d.ts +1 -0
- package/dist/page-extensions/SubjectRegistry.d.ts +0 -8
- package/dist/page-extensions/SubjectRegistry.js +2 -6
- package/dist/page-extensions/SubjectRegistry.js.map +1 -1
- package/dist/page-extensions/index.d.ts +0 -1
- package/dist/page-extensions/index.js +0 -1
- package/dist/page-extensions/index.js.map +1 -1
- package/dist/services/IndiciumApi.service.d.ts +27 -0
- package/dist/services/IndiciumApi.service.js +135 -0
- package/dist/services/IndiciumApi.service.js.map +1 -0
- package/dist/templates/test-artifacts/SubjectPageBase.d.ts +5 -0
- package/dist/templates/test-artifacts/SubjectPageBase.js +6 -0
- package/dist/templates/test-artifacts/SubjectPageBase.js.map +1 -0
- package/dist/templates/test-artifacts/screens/index.d.ts +1 -0
- package/dist/templates/test-artifacts/screens/index.js +2 -0
- package/dist/templates/test-artifacts/screens/index.js.map +1 -0
- package/dist/templates/test-artifacts/subjects/index.d.ts +1 -0
- package/dist/templates/test-artifacts/subjects/index.js +2 -0
- package/dist/templates/test-artifacts/subjects/index.js.map +1 -0
- package/enums/ElementTypes.ts +1 -1
- package/helpers/ConfigChecker.ts +7 -0
- package/helpers/LoginHelper.ts +1 -1
- package/interfaces/IComponentObjects.ts +1 -0
- package/package.json +3 -2
- package/page-extensions/SubjectRegistry.ts +2 -19
- package/page-extensions/index.ts +0 -1
- package/scripts/main.js +48 -69
- package/scripts/postinstall.js +40 -39
- package/scripts/sync.js +756 -102
- package/services/IndiciumApi.service.ts +159 -0
- package/templates/SubjectRegistry.template.ts +73 -0
- package/templates/test-artifacts/SubjectPageBase.ts +9 -0
- package/templates/test-artifacts/screens/index.ts +0 -0
- package/templates/test-artifacts/subjects/index.ts +0 -0
- package/tsconfig.json +2 -3
- package/dist/config.json +0 -10
- package/dist/page-extensions/SubjectProvider.d.ts +0 -11
- package/dist/page-extensions/SubjectProvider.js +0 -24
- package/dist/page-extensions/SubjectProvider.js.map +0 -1
- package/dist/test-artifacts/index.d.ts +0 -3
- package/dist/test-artifacts/index.js +0 -4
- package/dist/test-artifacts/index.js.map +0 -1
- package/page-extensions/SubjectProvider.ts +0 -41
- package/test-artifacts/index.ts +0 -3
|
@@ -48,17 +48,16 @@ export class NamingHandler {
|
|
|
48
48
|
).toLowerCase();
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
public getIdFromElementName(elementName: string): string {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
);
|
|
51
|
+
public getIdFromElementName(elementName: string, componentType: SubjectComponents, controlType: string): string {
|
|
52
|
+
const elementSuffixToRemove = this.getElementSuffixFromControlTypeAndComponentType(controlType, componentType);
|
|
53
|
+
const snakeCaseElementName = this.pascalToSnakeCase(elementName);
|
|
54
|
+
|
|
55
|
+
return snakeCaseElementName
|
|
56
|
+
.replace(new RegExp(`${elementSuffixToRemove}$`, 'i'), '')
|
|
57
|
+
.replace(/([a-z])([A-Z])/g, '$1-$2')
|
|
58
|
+
.toLowerCase()
|
|
59
|
+
.replace(/_/g, '-')
|
|
60
|
+
.replace(/-+$/g, '');
|
|
62
61
|
}
|
|
63
62
|
|
|
64
63
|
public getComponentTypeFromFileName(fileName: string): SubjectComponents {
|
|
@@ -73,18 +72,18 @@ export class NamingHandler {
|
|
|
73
72
|
}
|
|
74
73
|
|
|
75
74
|
public getElementTypeFromElementName(elementName: string): string {
|
|
76
|
-
|
|
77
|
-
const
|
|
75
|
+
const snakeCaseElementName = this.pascalToSnakeCase(elementName);
|
|
76
|
+
const parts = snakeCaseElementName.split('_');
|
|
78
77
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (Object.values(KnownElementTypes).includes(
|
|
83
|
-
return
|
|
78
|
+
for (let i = parts.length - 1; i > 0; i--) {
|
|
79
|
+
const candidate = parts.slice(i).join('_');
|
|
80
|
+
|
|
81
|
+
if (Object.values(KnownElementTypes).includes(candidate as KnownElementTypes)) {
|
|
82
|
+
return candidate;
|
|
84
83
|
}
|
|
85
84
|
}
|
|
86
85
|
|
|
87
|
-
throw new Error(`
|
|
86
|
+
throw new Error(`No KnownElementType match found for a partial suffix of "${elementName}"`);
|
|
88
87
|
}
|
|
89
88
|
|
|
90
89
|
public getSubjectFromFileName(fileName: string): string {
|
|
@@ -138,6 +137,13 @@ export class NamingHandler {
|
|
|
138
137
|
.join('');
|
|
139
138
|
}
|
|
140
139
|
|
|
140
|
+
public pascalToSnakeCase(value: string): string {
|
|
141
|
+
return value
|
|
142
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')
|
|
143
|
+
.replace(/([a-z\d])([A-Z])/g, '$1_$2')
|
|
144
|
+
.toLowerCase();
|
|
145
|
+
}
|
|
146
|
+
|
|
141
147
|
public getComponentIdFromName(componentName: string, componentType: ScreenComponents): string {
|
|
142
148
|
if (componentType === 'ActionBar' || componentType === 'CustomActionBar') {
|
|
143
149
|
const capitalizedComponentName = this.capitalizeFirstLetter(componentName);
|
|
@@ -3,8 +3,11 @@ import type { IComponentObjects } from '../interfaces/IComponentObjects.js';
|
|
|
3
3
|
|
|
4
4
|
export abstract class BaseComponentObjects implements IComponentObjects {
|
|
5
5
|
context: Locator;
|
|
6
|
+
mainHeader: Locator;
|
|
6
7
|
|
|
7
8
|
constructor(page: Page, context: Locator | null = null) {
|
|
8
|
-
this.
|
|
9
|
+
this.mainHeader = page.locator('main header');
|
|
10
|
+
const body = page.locator('body');
|
|
11
|
+
this.context = context ? context : body;
|
|
9
12
|
}
|
|
10
13
|
}
|
|
@@ -90,9 +90,9 @@ export class ActionBar extends ActionBarActions {
|
|
|
90
90
|
private _actionBarObjects: ActionBarObjects;
|
|
91
91
|
private _overflowMenu: ActionBarOverflow;
|
|
92
92
|
|
|
93
|
-
constructor(page: Page,
|
|
94
|
-
super(page,
|
|
95
|
-
this._actionBarObjects = new ActionBarObjects(page,
|
|
93
|
+
constructor(page: Page, actionBarContext: Locator | null = null) {
|
|
94
|
+
super(page, actionBarContext);
|
|
95
|
+
this._actionBarObjects = new ActionBarObjects(page, actionBarContext);
|
|
96
96
|
this._overflowMenu = new ActionBarOverflow(page);
|
|
97
97
|
}
|
|
98
98
|
|
package/components/grid/Grid.ts
CHANGED
|
@@ -12,6 +12,10 @@ export class Grid {
|
|
|
12
12
|
this._page = page;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
protected get page() {
|
|
16
|
+
return this._page;
|
|
17
|
+
}
|
|
18
|
+
|
|
15
19
|
/**
|
|
16
20
|
* Retrieves a column header element by its text content.
|
|
17
21
|
* @param text
|
|
@@ -253,7 +257,7 @@ export class Grid {
|
|
|
253
257
|
const optionButton = this._gridObjects.excelStyleFilterPopupOptionByText(columnId, valueRegex);
|
|
254
258
|
await optionButton.locator('input[type="checkbox"]').check();
|
|
255
259
|
|
|
256
|
-
await this._gridObjects.
|
|
260
|
+
await this._gridObjects.mainHeader.click(); // Click outside to close the popup
|
|
257
261
|
await popup.waitFor({ state: 'detached' });
|
|
258
262
|
}
|
|
259
263
|
|
|
@@ -281,11 +285,11 @@ export class Grid {
|
|
|
281
285
|
}
|
|
282
286
|
|
|
283
287
|
/**
|
|
284
|
-
* Verifies the number of
|
|
285
|
-
* @param
|
|
288
|
+
* Verifies the number of records in the grid and checks for "No result" overlay if zero.
|
|
289
|
+
* @param expectedRecordCount The expected number of records.
|
|
286
290
|
*/
|
|
287
|
-
public async
|
|
288
|
-
if (
|
|
291
|
+
public async verifyGridRecordCount(expectedRecordCount: number): Promise<void> {
|
|
292
|
+
if (expectedRecordCount === 0) {
|
|
289
293
|
if (await this.hasNoRowsOverlay()) {
|
|
290
294
|
return;
|
|
291
295
|
} else {
|
|
@@ -294,29 +298,22 @@ export class Grid {
|
|
|
294
298
|
}
|
|
295
299
|
|
|
296
300
|
await pollUntil(() => this.rows().count(), {
|
|
297
|
-
predicate: (n: number) => n ===
|
|
301
|
+
predicate: (n: number) => n === expectedRecordCount + 1 // +1 to account for header row
|
|
298
302
|
});
|
|
299
303
|
}
|
|
300
304
|
|
|
301
305
|
/**
|
|
302
306
|
* Verifies if the "No result" overlay is visible in the grid.
|
|
303
|
-
* @returns A promise that resolves to true if the overlay is visible, otherwise false.
|
|
307
|
+
* @returns A promise that resolves to true if the overlay is visible and , otherwise false.
|
|
304
308
|
*/
|
|
305
309
|
public async hasNoRowsOverlay(): Promise<boolean> {
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
},
|
|
313
|
-
{ predicate: Boolean }
|
|
314
|
-
);
|
|
315
|
-
} catch {
|
|
316
|
-
console.error('The "No result" overlay is not displaying the expected text.');
|
|
317
|
-
return false;
|
|
318
|
-
}
|
|
310
|
+
const overlay = this._gridObjects.noRowsOverlay();
|
|
311
|
+
|
|
312
|
+
const hasCorrectWording = await pollUntil(
|
|
313
|
+
async () => (await overlay.textContent())?.trim().includes('No result') ?? false,
|
|
314
|
+
{ predicate: Boolean }
|
|
315
|
+
);
|
|
319
316
|
|
|
320
|
-
return await
|
|
317
|
+
return hasCorrectWording && (await overlay.isVisible());
|
|
321
318
|
}
|
|
322
319
|
}
|
|
@@ -22,11 +22,11 @@ export class BaseTab {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
// --- Useful getters ---
|
|
25
|
-
public
|
|
25
|
+
public getTabById(name: string): Locator {
|
|
26
26
|
return this._objects.tabByTestId(name);
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
public
|
|
29
|
+
public getTabByIndex(index: number): Locator {
|
|
30
30
|
return this._objects.tabByIndex(index);
|
|
31
31
|
}
|
|
32
32
|
|
|
@@ -12,7 +12,7 @@ export class BaseTabObjects extends BaseComponentObjects {
|
|
|
12
12
|
public tabList = (): Locator => this.context.getByRole('tablist');
|
|
13
13
|
|
|
14
14
|
public tabByTestId = (name: string): Locator =>
|
|
15
|
-
this.tabList().locator(`[role="tab"][data-testid^="tabstrip__tab__${name.toLowerCase()}
|
|
15
|
+
this.tabList().locator(`[role="tab"][data-testid^="tabstrip__tab__${name.toLowerCase()}"]`);
|
|
16
16
|
|
|
17
17
|
// use role for generic index-based selection
|
|
18
18
|
public tabByIndex = (index: number): Locator => this.tabList().getByRole('tab').nth(index);
|
|
@@ -10,11 +10,11 @@ export class DetailTabPage extends BaseTab {
|
|
|
10
10
|
this._objects = new DetailTabPageObjects(page, context);
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
public
|
|
13
|
+
public getDetailTabPageById(name: string): Locator {
|
|
14
14
|
return this._objects.detailTab(name);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
public
|
|
17
|
+
public getDetailTabPageByIndex(index: number): Locator {
|
|
18
18
|
return this._objects.tabByIndex(index);
|
|
19
19
|
}
|
|
20
20
|
}
|
package/components/tab/Tab.ts
CHANGED
|
@@ -19,7 +19,7 @@ export class Tab extends BaseTab {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
// Returns the “List” tab locator (scoped).
|
|
22
|
-
public
|
|
22
|
+
public getListTab(tabindex: string = '-1'): Locator {
|
|
23
23
|
return this._objects.listTab(tabindex);
|
|
24
24
|
}
|
|
25
25
|
|
|
@@ -29,12 +29,12 @@ export class Tab extends BaseTab {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
// Returns the “Form” tab locator (scoped).
|
|
32
|
-
public
|
|
32
|
+
public getFormTab(): Locator {
|
|
33
33
|
return this._objects.formTab();
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
// Opens a component tab by its ID in this tabstrip (scoped).
|
|
37
|
-
public async
|
|
38
|
-
await this._objects.tab(
|
|
37
|
+
public async openTabById(tabId: string): Promise<void> {
|
|
38
|
+
await this._objects.tab(tabId).click();
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -3,6 +3,11 @@
|
|
|
3
3
|
import type { Locator } from '@playwright/test';
|
|
4
4
|
import { escapeRegex } from '../helpers/RegexHelper.js';
|
|
5
5
|
|
|
6
|
+
export type ILookupDropdown = Locator & {
|
|
7
|
+
lookupSelect(optionToSelect: string): Promise<void>;
|
|
8
|
+
selectOption(optionText: string): Promise<void>;
|
|
9
|
+
};
|
|
10
|
+
|
|
6
11
|
class LookupDropdown {
|
|
7
12
|
private _locator: Locator;
|
|
8
13
|
|
|
@@ -34,7 +39,7 @@ class LookupDropdown {
|
|
|
34
39
|
}
|
|
35
40
|
}
|
|
36
41
|
|
|
37
|
-
export function createLookupDropdown(locator: Locator):
|
|
42
|
+
export function createLookupDropdown(locator: Locator): ILookupDropdown {
|
|
38
43
|
const dropdown = new LookupDropdown(locator);
|
|
39
44
|
|
|
40
45
|
return new Proxy(dropdown, {
|
|
@@ -50,5 +55,5 @@ export function createLookupDropdown(locator: Locator): LookupDropdown & Locator
|
|
|
50
55
|
}
|
|
51
56
|
return value;
|
|
52
57
|
}
|
|
53
|
-
}) as
|
|
58
|
+
}) as unknown as ILookupDropdown;
|
|
54
59
|
}
|
package/dist/Testwise.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { test as base } from '@playwright/test';
|
|
2
2
|
import { test as bddBase } from 'playwright-bdd';
|
|
3
3
|
import { Components, GoToDeepLink, LoginFeatures, UserSimulation } from './page-extensions/index.js';
|
|
4
|
-
import { SubjectProvider } from './page-extensions/SubjectProvider.js';
|
|
5
4
|
import { SubjectRegistry } from './page-extensions/SubjectRegistry.js';
|
|
6
5
|
import { WaitEventHandler } from './page-extensions/WaitEventHandler.js';
|
|
7
6
|
import { ClickOverride } from './page-overrides/ClickOverride.js';
|
|
@@ -19,8 +18,7 @@ const extensions = [
|
|
|
19
18
|
LoginFeatures,
|
|
20
19
|
UserSimulation,
|
|
21
20
|
WaitEventHandler,
|
|
22
|
-
SubjectRegistry
|
|
23
|
-
SubjectProvider
|
|
21
|
+
SubjectRegistry
|
|
24
22
|
];
|
|
25
23
|
export const test = combineExtensions(base, ...extensions);
|
|
26
24
|
export const bddTest = combineExtensions(bddBase, ...extensions);
|
package/dist/Testwise.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Testwise.js","sourceRoot":"","sources":["../Testwise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Testwise.js","sourceRoot":"","sources":["../Testwise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGhE,SAAS,iBAAiB,CAAC,QAAc,EAAE,GAAG,UAAkD;IAC9F,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,GAAG;IACjB,mBAAmB;IACnB,aAAa;IACb,YAAY;IAEZ,iBAAiB;IACjB,UAAU;IACV,YAAY;IACZ,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,eAAe;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAS,iBAAiB,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC;AAEjE,MAAM,CAAC,MAAM,OAAO,GAAS,iBAAiB,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC"}
|
|
@@ -2,6 +2,7 @@ export declare class InterfaceGenerator {
|
|
|
2
2
|
private readonly _namingHandler;
|
|
3
3
|
private _filename;
|
|
4
4
|
private _dirname;
|
|
5
|
+
private _screensToBuild;
|
|
5
6
|
constructor();
|
|
6
7
|
generateScreenInterfacesFromSchemas(): Promise<void>;
|
|
7
8
|
generateSubjectInterfacesFromSchemas(): Promise<void>;
|
|
@@ -4,12 +4,13 @@ import { fileURLToPath } from 'node:url';
|
|
|
4
4
|
import * as prettier from 'prettier';
|
|
5
5
|
import { FetchingJSONSchemaStore, InputData, JSONSchemaInput, quicktype } from 'quicktype-core';
|
|
6
6
|
import { PathResolver } from '../helpers/PathResolver.js';
|
|
7
|
-
import { NamingHandler } from '../index.js';
|
|
7
|
+
import { DataRetriever, NamingHandler } from '../index.js';
|
|
8
8
|
export class InterfaceGenerator {
|
|
9
9
|
constructor() {
|
|
10
10
|
this._namingHandler = new NamingHandler();
|
|
11
11
|
this._filename = fileURLToPath(import.meta.url);
|
|
12
12
|
this._dirname = path.dirname(this._filename);
|
|
13
|
+
this._screensToBuild = new DataRetriever().getScreensToBuild();
|
|
13
14
|
}
|
|
14
15
|
async generateScreenInterfacesFromSchemas() {
|
|
15
16
|
const screenOutputDirectory = path.resolve(this._dirname, '..', '..', 'test-artifacts/screens/');
|
|
@@ -98,6 +99,10 @@ export class InterfaceGenerator {
|
|
|
98
99
|
return this.createInterfaceFromSchema(schemasDirectory, perFileOutputPath, file);
|
|
99
100
|
}
|
|
100
101
|
if (schemaType === SchemaType.Screen) {
|
|
102
|
+
const fileNameSnakeCase = this._namingHandler.pascalToSnakeCase(fileName);
|
|
103
|
+
if (this._screensToBuild.length > 0 && !this._screensToBuild.includes(fileNameSnakeCase)) {
|
|
104
|
+
return Promise.resolve(true);
|
|
105
|
+
}
|
|
101
106
|
const perFileOutputPath = path.join(outputPath, `I${fileName}.ts`);
|
|
102
107
|
return this.createInterfaceFromSchema(schemasDirectory, perFileOutputPath, file, true);
|
|
103
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterfaceGenerator.js","sourceRoot":"","sources":["../../artifact-builder/InterfaceGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"InterfaceGenerator.js","sourceRoot":"","sources":["../../artifact-builder/InterfaceGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,28 +3,15 @@
|
|
|
3
3
|
/** biome-ignore-all lint/suspicious/noExplicitAny: Because I can */
|
|
4
4
|
import * as fs from 'node:fs/promises';
|
|
5
5
|
import * as path from 'node:path';
|
|
6
|
-
import
|
|
7
|
-
import { testwiseConfig } from '../services/ConfigBuilder.js';
|
|
6
|
+
import { indiciumApi } from '../services/IndiciumApi.service.js';
|
|
8
7
|
import { DataRetriever } from './helpers/DataRetriever.js';
|
|
9
|
-
const serviceUrl = testwiseConfig().get('environmentSettings.serviceUrl').replace(/\/$/, '');
|
|
10
|
-
const metaEndpoint = testwiseConfig()
|
|
11
|
-
.get('environmentSettings.metaEndpoint')
|
|
12
|
-
.replace(/^\//, '')
|
|
13
|
-
.replace(/\/$/, '');
|
|
14
|
-
const authUser = testwiseConfig().get('environmentSettings.authUser');
|
|
15
|
-
const authUserPassword = testwiseConfig().get('environmentSettings.authUserPassword');
|
|
16
|
-
const axiosInstance = axios.create({
|
|
17
|
-
baseURL: serviceUrl,
|
|
18
|
-
headers: {
|
|
19
|
-
Authorization: `Basic ${Buffer.from(`${authUser}:${authUserPassword}`).toString('base64')}`,
|
|
20
|
-
accept: '*/*'
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
const guiApplId = await getGuiApplId();
|
|
24
8
|
export async function buildSubjects() {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
9
|
+
if (!(await indiciumApi.canConnectToProject())) {
|
|
10
|
+
console.log('Cannot connect to Indicium API. Aborting subject build.');
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const rawTables = await indiciumApi.getAllTables();
|
|
14
|
+
const subjects = rawTables
|
|
28
15
|
.flatMap((tab) => {
|
|
29
16
|
const base = {
|
|
30
17
|
subject: tab.tab_id,
|
|
@@ -33,13 +20,18 @@ export async function buildSubjects() {
|
|
|
33
20
|
return [
|
|
34
21
|
{ ...base, screentype_id: tab.main_screen_type_id, screentype_context: 'main' },
|
|
35
22
|
{ ...base, screentype_id: tab.detail_screen_type_id, screentype_context: 'detail' },
|
|
36
|
-
{ ...base, screentype_id: tab.
|
|
37
|
-
{ ...base, screentype_id: tab.
|
|
23
|
+
{ ...base, screentype_id: tab.popup_screen_type_id, screentype_context: 'popup' },
|
|
24
|
+
{ ...base, screentype_id: tab.zoom_screen_type_id, screentype_context: 'zoom' }
|
|
38
25
|
];
|
|
39
26
|
})
|
|
40
27
|
.filter((item) => item.screentype_id !== 'not_visible_in_gui');
|
|
41
|
-
const
|
|
42
|
-
|
|
28
|
+
const screentypeOrder = ['main', 'detail', 'popup', 'zoom'];
|
|
29
|
+
subjects.sort((a, b) => {
|
|
30
|
+
return (a.subject.localeCompare(b.subject) ||
|
|
31
|
+
a.variant.localeCompare(b.variant) ||
|
|
32
|
+
screentypeOrder.indexOf(a.screentype_context) - screentypeOrder.indexOf(b.screentype_context));
|
|
33
|
+
});
|
|
34
|
+
const allProperties = (await indiciumApi.getAllColumns()).map((col) => ({
|
|
43
35
|
subject: col.tab_id,
|
|
44
36
|
variant: col.tab_variant_id,
|
|
45
37
|
col: col.col_id,
|
|
@@ -47,8 +39,10 @@ export async function buildSubjects() {
|
|
|
47
39
|
}));
|
|
48
40
|
for (const subject of subjects) {
|
|
49
41
|
const matchingProperties = allProperties.filter((prop) => prop.subject === subject.subject && prop.variant === subject.variant);
|
|
50
|
-
|
|
51
|
-
|
|
42
|
+
subject.properties = matchingProperties
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
44
|
+
.map(({ subject, variant, ...rest }) => rest)
|
|
45
|
+
.sort((a, b) => a.col.localeCompare(b.col));
|
|
52
46
|
}
|
|
53
47
|
const subjectsWithLookupsSet = await setLookupDropdowns(subjects);
|
|
54
48
|
const seedDataDirectory = new DataRetriever().getSeedDataDirectory();
|
|
@@ -57,8 +51,7 @@ export async function buildSubjects() {
|
|
|
57
51
|
console.log(`Seed data written to ${seedDataPath}`);
|
|
58
52
|
}
|
|
59
53
|
async function setLookupDropdowns(subjects) {
|
|
60
|
-
const
|
|
61
|
-
const lookupMappings = response.data?.value || [];
|
|
54
|
+
const lookupMappings = await indiciumApi.getLookups();
|
|
62
55
|
for (const mapping of lookupMappings) {
|
|
63
56
|
const targetSubject = subjects.find((subj) => subj.subject === mapping.tab_id && subj.variant === mapping.tab_variant_id);
|
|
64
57
|
const targetProperty = targetSubject?.properties?.find((prop) => prop.col === mapping.col_id);
|
|
@@ -69,8 +62,11 @@ async function setLookupDropdowns(subjects) {
|
|
|
69
62
|
return subjects;
|
|
70
63
|
}
|
|
71
64
|
export async function buildScreens() {
|
|
72
|
-
|
|
73
|
-
|
|
65
|
+
if (!(await indiciumApi.canConnectToProject())) {
|
|
66
|
+
console.log('Cannot connect to Indicium API. Aborting screen build.');
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const rawComponents = await indiciumApi.getScreenComponents();
|
|
74
70
|
const screenMap = new Map();
|
|
75
71
|
for (const item of rawComponents) {
|
|
76
72
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
@@ -118,24 +114,4 @@ export async function buildScreens() {
|
|
|
118
114
|
}
|
|
119
115
|
console.log('Screen schemas generated successfully.');
|
|
120
116
|
}
|
|
121
|
-
async function getGuiApplId() {
|
|
122
|
-
const guiApplAlias = testwiseConfig().get('environmentSettings.guiApplAlias');
|
|
123
|
-
if (guiApplAlias) {
|
|
124
|
-
const response = await axiosInstance.get(`/iam/${metaEndpoint}/i_ui_gui_appl`);
|
|
125
|
-
const guiAppl = response.data?.value.find((appl) => {
|
|
126
|
-
const currentAlias = appl?.gui_appl_alias?.toString();
|
|
127
|
-
const targetAlias = guiApplAlias?.toString();
|
|
128
|
-
return currentAlias === targetAlias;
|
|
129
|
-
});
|
|
130
|
-
if (guiAppl) {
|
|
131
|
-
return guiAppl.gui_appl_id;
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
throw new Error(`No GUI Application found for GUI Application Alias: ${guiApplAlias}`);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
throw new Error('GUI Application Alias is not defined in the configuration.');
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
117
|
//# sourceMappingURL=ModelDataBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelDataBuilder.js","sourceRoot":"","sources":["../../artifact-builder/ModelDataBuilder.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,oEAAoE;AACpE,oEAAoE;AACpE,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"ModelDataBuilder.js","sourceRoot":"","sources":["../../artifact-builder/ModelDataBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,22 +7,26 @@ export class ModelDataRefiner {
|
|
|
7
7
|
}
|
|
8
8
|
run() {
|
|
9
9
|
const seedDataDir = this._dataRetriever.getSeedDataDirectory();
|
|
10
|
+
const subjectsToBuildPath = path.resolve(seedDataDir, 'subjectsToBuild.json');
|
|
11
|
+
const screensToBuildPath = path.resolve(seedDataDir, 'screensToBuild.json');
|
|
10
12
|
const registeredSubjects = this._dataRetriever.getRegisteredSubjects();
|
|
11
13
|
if (!registeredSubjects || registeredSubjects.length === 0) {
|
|
12
14
|
console.info('No registered subjects found.');
|
|
15
|
+
if (fs.existsSync(screensToBuildPath))
|
|
16
|
+
fs.unlinkSync(screensToBuildPath);
|
|
17
|
+
if (fs.existsSync(subjectsToBuildPath))
|
|
18
|
+
fs.unlinkSync(subjectsToBuildPath);
|
|
13
19
|
return;
|
|
14
20
|
}
|
|
15
21
|
const subjects = this._dataRetriever.getSubjectsSeedData();
|
|
16
22
|
const subjectsToBuild = subjects.filter((subject) => registeredSubjects.some((registered) => registered.subject === subject.subject &&
|
|
17
23
|
(registered.variant != null ? registered.variant === subject.variant : subject.variant === '') &&
|
|
18
24
|
registered.screen_type === subject.screentype_context));
|
|
19
|
-
const subjectsToBuildPath = path.resolve(seedDataDir, 'subjectsToBuild.json');
|
|
20
25
|
fs.writeFileSync(subjectsToBuildPath, JSON.stringify(subjectsToBuild, null, 2));
|
|
21
26
|
console.log(`Created subjectsToBuild.json with ${subjectsToBuild.length} subjects.`);
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
console.log(`Created screensToBuild.json with ${screensToBuild.length} screens.`);
|
|
27
|
+
const screensToBuildList = Array.from(new Set(subjectsToBuild.map((subject) => subject.screentype_id)));
|
|
28
|
+
fs.writeFileSync(screensToBuildPath, JSON.stringify(screensToBuildList, null, 2));
|
|
29
|
+
console.log(`Created screensToBuild.json with ${screensToBuildList.length} screens.`);
|
|
26
30
|
}
|
|
27
31
|
}
|
|
28
32
|
//# sourceMappingURL=ModelDataRefiner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelDataRefiner.js","sourceRoot":"","sources":["../../artifact-builder/ModelDataRefiner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,OAAO,gBAAgB;IAA7B;QACU,mBAAc,GAAG,IAAI,aAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ModelDataRefiner.js","sourceRoot":"","sources":["../../artifact-builder/ModelDataRefiner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,OAAO,gBAAgB;IAA7B;QACU,mBAAc,GAAG,IAAI,aAAa,EAAE,CAAC;IAoC/C,CAAC;IAlCQ,GAAG;QACR,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;QAC/D,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;QAC9E,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;QAC5E,MAAM,kBAAkB,GAAiC,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,CAAC;QAErG,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAE9C,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC;gBAAE,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;YACzE,IAAI,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC;gBAAE,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;YAE3E,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC;QAE3D,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAClD,kBAAkB,CAAC,IAAI,CACrB,CAAC,UAAU,EAAE,EAAE,CACb,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;YACtC,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,KAAK,EAAE,CAAC;YAC9F,UAAU,CAAC,WAAW,KAAK,OAAO,CAAC,kBAAkB,CACxD,CACF,CAAC;QAEF,EAAE,CAAC,aAAa,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,qCAAqC,eAAe,CAAC,MAAM,YAAY,CAAC,CAAC;QAErF,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAExG,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,oCAAoC,kBAAkB,CAAC,MAAM,WAAW,CAAC,CAAC;IACxF,CAAC;CACF"}
|
|
@@ -43,7 +43,9 @@ export class SelectorBuilder {
|
|
|
43
43
|
return suffix;
|
|
44
44
|
}
|
|
45
45
|
getPageLocatorString(property, componentName) {
|
|
46
|
-
|
|
46
|
+
let elementId = this._namingHandler.getIdFromElementName(property, componentName, this._namingHandler.getElementTypeFromElementName(property));
|
|
47
|
+
if (componentName === 'Grid')
|
|
48
|
+
elementId = elementId.replace(/-/g, '_');
|
|
47
49
|
const selectorPrefix = this.getDefaultPrefix(componentName);
|
|
48
50
|
const defaultSuffix = this.getDefaultSuffix(componentName);
|
|
49
51
|
const selectorSuffix = this.determineSelectorSuffix(property, componentName) || defaultSuffix;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectorBuilder.js","sourceRoot":"","sources":["../../artifact-builder/SelectorBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,OAAO,eAAe;IAG1B;QACE,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,EAAE,CAAC;IAC5C,CAAC;IAEO,uBAAuB,CAAC,QAAgB,EAAE,aAAgC;QAChF,IAAI,cAAc,GAAG,IAAI,CAAC;QAE1B,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,cAAc,CAAC,6BAA6B,CAAC,QAAQ,CAAC,KAAK,iBAAiB,CAAC,MAAM,EAAE,CAAC;gBAC7F,cAAc,GAAG,kBAAkB,CAAC;YACtC,CAAC;iBAAM,IAAI,IAAI,CAAC,cAAc,CAAC,6BAA6B,CAAC,QAAQ,CAAC,KAAK,iBAAiB,CAAC,QAAQ,EAAE,CAAC;gBACtG,cAAc,GAAG,iBAAiB,CAAC;YACrC,CAAC;QACH,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,gBAAgB,CAAC,aAAgC;QACvD,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,GAAG,WAAW,CAAC;QACvB,CAAC;aAAM,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YACpC,MAAM,GAAG,cAAc,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,+BAA+B,aAAa,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,gBAAgB,CAAC,aAAgC;QACvD,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;YACpC,MAAM,GAAG,SAAS,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,+BAA+B,aAAa,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,oBAAoB,CAAC,QAAgB,EAAE,aAAgC;QAC5E,
|
|
1
|
+
{"version":3,"file":"SelectorBuilder.js","sourceRoot":"","sources":["../../artifact-builder/SelectorBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,10 +11,14 @@ export declare class SubjectComponentGenerator {
|
|
|
11
11
|
private refineSubjectComponents;
|
|
12
12
|
private getComponentNameFromFile;
|
|
13
13
|
private refine;
|
|
14
|
+
private transformGridInterface;
|
|
15
|
+
private generateGridGetters;
|
|
14
16
|
private getSubjectFolderPath;
|
|
15
17
|
private verifyDirectoryExists;
|
|
16
18
|
private getPropertyInitializations;
|
|
19
|
+
private addLookupImportIfRequired;
|
|
17
20
|
private generatePropertyDeclarations;
|
|
21
|
+
private transformLookupTypes;
|
|
18
22
|
private convertStringsToArray;
|
|
19
23
|
private getPropertyNamesFromInterface;
|
|
20
24
|
private setSubjectExtendsComponent;
|