@forestadmin/agent-testing 0.1.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 (111) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +52 -0
  3. package/dist/index.d.ts +4 -0
  4. package/dist/index.js +20 -0
  5. package/dist/integrations/benchmark.d.ts +13 -0
  6. package/dist/integrations/benchmark.js +36 -0
  7. package/dist/integrations/forest-admin-client-mock.d.ts +28 -0
  8. package/dist/integrations/forest-admin-client-mock.js +76 -0
  9. package/dist/integrations/forest-server-sandbox.d.ts +14 -0
  10. package/dist/integrations/forest-server-sandbox.js +153 -0
  11. package/dist/integrations/http-requester-mock.d.ts +8 -0
  12. package/dist/integrations/http-requester-mock.js +15 -0
  13. package/dist/integrations/index.d.ts +43 -0
  14. package/dist/integrations/index.js +119 -0
  15. package/dist/integrations/schema-converter.d.ts +6 -0
  16. package/dist/integrations/schema-converter.js +16 -0
  17. package/dist/integrations/schema-path-manager.d.ts +6 -0
  18. package/dist/integrations/schema-path-manager.js +25 -0
  19. package/dist/integrations/testable-agent-base.d.ts +7 -0
  20. package/dist/integrations/testable-agent-base.js +14 -0
  21. package/dist/integrations/testable-agent.d.ts +15 -0
  22. package/dist/integrations/testable-agent.js +33 -0
  23. package/dist/integrations/types.d.ts +5 -0
  24. package/dist/integrations/types.js +3 -0
  25. package/dist/remote-agent-client/action-fields/action-field-checkbox-group.d.ts +8 -0
  26. package/dist/remote-agent-client/action-fields/action-field-checkbox-group.js +23 -0
  27. package/dist/remote-agent-client/action-fields/action-field-checkbox.d.ts +6 -0
  28. package/dist/remote-agent-client/action-fields/action-field-checkbox.js +16 -0
  29. package/dist/remote-agent-client/action-fields/action-field-color-picker.d.ts +7 -0
  30. package/dist/remote-agent-client/action-fields/action-field-color-picker.js +19 -0
  31. package/dist/remote-agent-client/action-fields/action-field-date.d.ts +5 -0
  32. package/dist/remote-agent-client/action-fields/action-field-date.js +13 -0
  33. package/dist/remote-agent-client/action-fields/action-field-dropdown.d.ts +7 -0
  34. package/dist/remote-agent-client/action-fields/action-field-dropdown.js +16 -0
  35. package/dist/remote-agent-client/action-fields/action-field-enum.d.ts +6 -0
  36. package/dist/remote-agent-client/action-fields/action-field-enum.js +19 -0
  37. package/dist/remote-agent-client/action-fields/action-field-json.d.ts +5 -0
  38. package/dist/remote-agent-client/action-fields/action-field-json.js +13 -0
  39. package/dist/remote-agent-client/action-fields/action-field-multiple-choice.d.ts +7 -0
  40. package/dist/remote-agent-client/action-fields/action-field-multiple-choice.js +19 -0
  41. package/dist/remote-agent-client/action-fields/action-field-number-list.d.ts +6 -0
  42. package/dist/remote-agent-client/action-fields/action-field-number-list.js +20 -0
  43. package/dist/remote-agent-client/action-fields/action-field-number.d.ts +5 -0
  44. package/dist/remote-agent-client/action-fields/action-field-number.js +13 -0
  45. package/dist/remote-agent-client/action-fields/action-field-radio-group.d.ts +7 -0
  46. package/dist/remote-agent-client/action-fields/action-field-radio-group.js +16 -0
  47. package/dist/remote-agent-client/action-fields/action-field-string-list.d.ts +6 -0
  48. package/dist/remote-agent-client/action-fields/action-field-string-list.js +20 -0
  49. package/dist/remote-agent-client/action-fields/action-field-string.d.ts +5 -0
  50. package/dist/remote-agent-client/action-fields/action-field-string.js +13 -0
  51. package/dist/remote-agent-client/action-fields/action-field.d.ts +15 -0
  52. package/dist/remote-agent-client/action-fields/action-field.js +34 -0
  53. package/dist/remote-agent-client/action-fields/field-form-states.d.ts +25 -0
  54. package/dist/remote-agent-client/action-fields/field-form-states.js +94 -0
  55. package/dist/remote-agent-client/action-fields/field-getter.d.ts +10 -0
  56. package/dist/remote-agent-client/action-fields/field-getter.js +21 -0
  57. package/dist/remote-agent-client/action-fields/types.d.ts +28 -0
  58. package/dist/remote-agent-client/action-fields/types.js +3 -0
  59. package/dist/remote-agent-client/action-layout/action-layout-container.d.ts +9 -0
  60. package/dist/remote-agent-client/action-layout/action-layout-container.js +24 -0
  61. package/dist/remote-agent-client/action-layout/action-layout-element.d.ts +14 -0
  62. package/dist/remote-agent-client/action-layout/action-layout-element.js +47 -0
  63. package/dist/remote-agent-client/action-layout/action-layout-input.d.ts +7 -0
  64. package/dist/remote-agent-client/action-layout/action-layout-input.js +12 -0
  65. package/dist/remote-agent-client/action-layout/action-layout-page.d.ts +8 -0
  66. package/dist/remote-agent-client/action-layout/action-layout-page.js +18 -0
  67. package/dist/remote-agent-client/action-layout/action-layout-root.d.ts +6 -0
  68. package/dist/remote-agent-client/action-layout/action-layout-root.js +19 -0
  69. package/dist/remote-agent-client/action-layout/errors.d.ts +8 -0
  70. package/dist/remote-agent-client/action-layout/errors.js +16 -0
  71. package/dist/remote-agent-client/domains/action.d.ts +59 -0
  72. package/dist/remote-agent-client/domains/action.js +139 -0
  73. package/dist/remote-agent-client/domains/chart.d.ts +21 -0
  74. package/dist/remote-agent-client/domains/chart.js +39 -0
  75. package/dist/remote-agent-client/domains/collection-chart.d.ts +19 -0
  76. package/dist/remote-agent-client/domains/collection-chart.js +40 -0
  77. package/dist/remote-agent-client/domains/collection.d.ts +26 -0
  78. package/dist/remote-agent-client/domains/collection.js +109 -0
  79. package/dist/remote-agent-client/domains/relation.d.ts +11 -0
  80. package/dist/remote-agent-client/domains/relation.js +23 -0
  81. package/dist/remote-agent-client/domains/remote-agent-client.d.ts +41 -0
  82. package/dist/remote-agent-client/domains/remote-agent-client.js +43 -0
  83. package/dist/remote-agent-client/domains/segment.d.ts +14 -0
  84. package/dist/remote-agent-client/domains/segment.js +46 -0
  85. package/dist/remote-agent-client/http-requester.d.ts +30 -0
  86. package/dist/remote-agent-client/http-requester.js +67 -0
  87. package/dist/remote-agent-client/index.d.ts +10 -0
  88. package/dist/remote-agent-client/index.js +18 -0
  89. package/dist/remote-agent-client/query-serializer.d.ts +7 -0
  90. package/dist/remote-agent-client/query-serializer.js +34 -0
  91. package/dist/remote-agent-client/types.d.ts +25 -0
  92. package/dist/remote-agent-client/types.js +3 -0
  93. package/dist/units/add-action.d.ts +16 -0
  94. package/dist/units/add-action.js +70 -0
  95. package/dist/units/add-field.d.ts +3 -0
  96. package/dist/units/add-field.js +18 -0
  97. package/dist/units/add-hook.d.ts +3 -0
  98. package/dist/units/add-hook.js +18 -0
  99. package/dist/units/import-field.d.ts +3 -0
  100. package/dist/units/import-field.js +18 -0
  101. package/dist/units/index.d.ts +9 -0
  102. package/dist/units/index.js +25 -0
  103. package/dist/units/many-to-one-relation.d.ts +3 -0
  104. package/dist/units/many-to-one-relation.js +18 -0
  105. package/dist/units/replace-search.d.ts +3 -0
  106. package/dist/units/replace-search.js +18 -0
  107. package/dist/units/types.d.ts +34 -0
  108. package/dist/units/types.js +3 -0
  109. package/dist/units/use-plugin.d.ts +3 -0
  110. package/dist/units/use-plugin.js +18 -0
  111. package/package.json +55 -0
@@ -0,0 +1,94 @@
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
+ const action_field_multiple_choice_1 = __importDefault(require("./action-field-multiple-choice"));
7
+ const field_getter_1 = __importDefault(require("./field-getter"));
8
+ class FieldFormStates {
9
+ constructor(actionName, actionPath, collectionName, httpRequester, ids) {
10
+ this.fields = [];
11
+ this.actionName = actionName;
12
+ this.actionPath = actionPath;
13
+ this.collectionName = collectionName;
14
+ this.httpRequester = httpRequester;
15
+ this.ids = ids;
16
+ this.layout = [];
17
+ }
18
+ getFieldValues() {
19
+ return this.fields.reduce((acc, f) => {
20
+ if (f.getValue() !== undefined)
21
+ acc[f.getName()] = f.getValue();
22
+ return acc;
23
+ }, {});
24
+ }
25
+ getMultipleChoiceField(name) {
26
+ return new action_field_multiple_choice_1.default(this.getField(name)?.getPlainField());
27
+ }
28
+ getField(name) {
29
+ return this.fields.find(f => f.getName() === name);
30
+ }
31
+ getFields() {
32
+ return this.fields;
33
+ }
34
+ getLayout() {
35
+ return this.layout;
36
+ }
37
+ async setFieldValue(name, value) {
38
+ const field = this.getField(name);
39
+ if (!field)
40
+ throw new Error(`Field "${name}" not found in action "${this.actionName}"`);
41
+ field.getPlainField().value = value;
42
+ await this.loadChanges(name);
43
+ }
44
+ async loadInitialState() {
45
+ const requestBody = {
46
+ data: {
47
+ attributes: {
48
+ collection_name: this.collectionName,
49
+ ids: this.ids,
50
+ values: {},
51
+ },
52
+ type: 'action-requests',
53
+ },
54
+ };
55
+ const queryResults = await this.httpRequester.query({
56
+ method: 'post',
57
+ path: `${this.actionPath}/hooks/load`,
58
+ body: requestBody,
59
+ });
60
+ this.clearFieldsAndLayout();
61
+ this.layout.push(...queryResults.layout);
62
+ this.addFields(queryResults.fields);
63
+ }
64
+ addFields(plainFields) {
65
+ plainFields.forEach(f => this.fields.push(new field_getter_1.default(f)));
66
+ }
67
+ clearFieldsAndLayout() {
68
+ this.layout.splice(0, this.layout.length);
69
+ this.fields.splice(0, this.fields.length);
70
+ }
71
+ async loadChanges(fieldName) {
72
+ const requestBody = {
73
+ data: {
74
+ attributes: {
75
+ collection_name: this.collectionName,
76
+ changed_field: fieldName,
77
+ ids: this.ids,
78
+ fields: this.fields.map(f => f.getPlainField()),
79
+ },
80
+ type: 'custom-action-hook-requests',
81
+ },
82
+ };
83
+ const queryResults = await this.httpRequester.query({
84
+ method: 'post',
85
+ path: `${this.actionPath}/hooks/change`,
86
+ body: requestBody,
87
+ });
88
+ this.clearFieldsAndLayout();
89
+ this.addFields(queryResults.fields);
90
+ this.layout.push(...queryResults.layout);
91
+ }
92
+ }
93
+ exports.default = FieldFormStates;
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZm9ybS1zdGF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVtb3RlLWFnZW50LWNsaWVudC9hY3Rpb24tZmllbGRzL2ZpZWxkLWZvcm0tc3RhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsa0dBQXVFO0FBQ3ZFLGtFQUF5QztBQUl6QyxNQUFxQixlQUFlO0lBU2xDLFlBQ0UsVUFBa0IsRUFDbEIsVUFBa0IsRUFDbEIsY0FBbUMsRUFDbkMsYUFBNEIsRUFDNUIsR0FBYTtRQUViLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLFNBQVM7Z0JBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUVoRSxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUFZO1FBQ2pDLE9BQU8sSUFBSSxzQ0FBeUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDN0Us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
@@ -0,0 +1,10 @@
1
+ import { PlainField } from './types';
2
+ export default class FieldGetter {
3
+ private readonly plainField;
4
+ constructor(plainField: PlainField);
5
+ getPlainField(): PlainField;
6
+ getValue(): unknown;
7
+ getName(): string;
8
+ getType(): string;
9
+ }
10
+ //# sourceMappingURL=field-getter.d.ts.map
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class FieldGetter {
4
+ constructor(plainField) {
5
+ this.plainField = plainField;
6
+ }
7
+ getPlainField() {
8
+ return this.plainField;
9
+ }
10
+ getValue() {
11
+ return this.plainField.value;
12
+ }
13
+ getName() {
14
+ return this.plainField.field;
15
+ }
16
+ getType() {
17
+ return this.plainField.type;
18
+ }
19
+ }
20
+ exports.default = FieldGetter;
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZ2V0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlbW90ZS1hZ2VudC1jbGllbnQvYWN0aW9uLWZpZWxkcy9maWVsZC1nZXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxNQUFxQixXQUFXO0lBRzlCLFlBQVksVUFBc0I7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztDQUNGO0FBdEJELDhCQXNCQyJ9
@@ -0,0 +1,28 @@
1
+ import { ForestServerActionFormLayoutElement } from '@forestadmin/forestadmin-client';
2
+ export type ResponseBody = {
3
+ fields: PlainField[];
4
+ layout: ForestServerActionFormLayoutElement[];
5
+ };
6
+ export type PlainFieldOption = {
7
+ label: string;
8
+ value: string;
9
+ };
10
+ export type PlainField = {
11
+ field: string;
12
+ type: string;
13
+ description?: string;
14
+ value?: unknown;
15
+ isRequired: boolean;
16
+ isReadOnly: boolean;
17
+ widgetEdit?: {
18
+ parameters: {
19
+ static: {
20
+ options?: PlainFieldOption[];
21
+ enableOpacity?: boolean;
22
+ quickPalette?: string[];
23
+ };
24
+ };
25
+ };
26
+ enums?: string[];
27
+ };
28
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVtb3RlLWFnZW50LWNsaWVudC9hY3Rpb24tZmllbGRzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,9 @@
1
+ import { ForestServerActionFormLayoutElement } from '@forestadmin/forestadmin-client';
2
+ import ActionLayoutElement from './action-layout-element';
3
+ export default abstract class ActionLayoutElementsContainer {
4
+ protected readonly layout: ForestServerActionFormLayoutElement[];
5
+ constructor(layout: ForestServerActionFormLayoutElement[]);
6
+ element(n: number): ActionLayoutElement;
7
+ isPage(n: number): boolean;
8
+ }
9
+ //# sourceMappingURL=action-layout-container.d.ts.map
@@ -0,0 +1,24 @@
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
+ const action_layout_element_1 = __importDefault(require("./action-layout-element"));
7
+ const errors_1 = require("./errors");
8
+ class ActionLayoutElementsContainer {
9
+ constructor(layout) {
10
+ this.layout = layout;
11
+ }
12
+ element(n) {
13
+ if (n < 0 || n >= this.layout.length)
14
+ throw new errors_1.NotFoundElementError(n);
15
+ if (this.isPage(n))
16
+ throw new errors_1.NotRightElementError('an element', this.layout[n]);
17
+ return new action_layout_element_1.default(this.layout[n]);
18
+ }
19
+ isPage(n) {
20
+ return this.layout[n]?.component === 'page';
21
+ }
22
+ }
23
+ exports.default = ActionLayoutElementsContainer;
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxheW91dC1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVtb3RlLWFnZW50LWNsaWVudC9hY3Rpb24tbGF5b3V0L2FjdGlvbi1sYXlvdXQtY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsb0ZBQTBEO0FBQzFELHFDQUFzRTtBQUV0RSxNQUE4Qiw2QkFBNkI7SUFHekQsWUFBWSxNQUE2QztRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxDQUFDLENBQVM7UUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUFFLE1BQU0sSUFBSSw2QkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQUUsTUFBTSxJQUFJLDZCQUFvQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakYsT0FBTyxJQUFJLCtCQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsTUFBTSxDQUFDLENBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxLQUFLLE1BQU0sQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUFqQkQsZ0RBaUJDIn0=
@@ -0,0 +1,14 @@
1
+ import { ForestServerActionFormLayoutElement } from '@forestadmin/forestadmin-client';
2
+ import ActionLayoutInput from './action-layout-input';
3
+ export default class ActionLayoutElement {
4
+ protected readonly layoutItem: ForestServerActionFormLayoutElement;
5
+ constructor(layoutItem: ForestServerActionFormLayoutElement);
6
+ getHtmlBlockContent(): string;
7
+ getInputId(): string;
8
+ rowElement(n: number): ActionLayoutInput;
9
+ isRow(): boolean;
10
+ isInput(): boolean;
11
+ isHTMLBlock(): boolean;
12
+ isSeparator(): boolean;
13
+ }
14
+ //# sourceMappingURL=action-layout-element.d.ts.map
@@ -0,0 +1,47 @@
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
+ const action_layout_input_1 = __importDefault(require("./action-layout-input"));
7
+ const errors_1 = require("./errors");
8
+ class ActionLayoutElement {
9
+ constructor(layoutItem) {
10
+ this.layoutItem = layoutItem;
11
+ }
12
+ getHtmlBlockContent() {
13
+ if (!this.isHTMLBlock()) {
14
+ throw new errors_1.NotRightElementError('an htmlBlock', this.layoutItem);
15
+ }
16
+ return this.layoutItem.content;
17
+ }
18
+ getInputId() {
19
+ if (!this.isInput()) {
20
+ throw new errors_1.NotRightElementError('an input', this.layoutItem);
21
+ }
22
+ return new action_layout_input_1.default(this.layoutItem).getInputId();
23
+ }
24
+ rowElement(n) {
25
+ if (!this.isRow) {
26
+ throw new errors_1.NotRightElementError('a row', this.layoutItem);
27
+ }
28
+ const { fields } = this.layoutItem;
29
+ if (n < 0 || n >= fields.length)
30
+ throw new errors_1.NotFoundElementError(0);
31
+ return new action_layout_input_1.default(fields[n]);
32
+ }
33
+ isRow() {
34
+ return this.layoutItem?.component === 'row';
35
+ }
36
+ isInput() {
37
+ return this.layoutItem?.component === 'input';
38
+ }
39
+ isHTMLBlock() {
40
+ return this.layoutItem?.component === 'htmlBlock';
41
+ }
42
+ isSeparator() {
43
+ return this.layoutItem?.component === 'separator';
44
+ }
45
+ }
46
+ exports.default = ActionLayoutElement;
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxheW91dC1lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlbW90ZS1hZ2VudC1jbGllbnQvYWN0aW9uLWxheW91dC9hY3Rpb24tbGF5b3V0LWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFLQSxnRkFBc0Q7QUFDdEQscUNBQXNFO0FBRXRFLE1BQXFCLG1CQUFtQjtJQUd0QyxZQUFZLFVBQStDO1FBQ3pELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSw2QkFBb0IsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFFRCxPQUFRLElBQUksQ0FBQyxVQUFrQyxDQUFDLE9BQU8sQ0FBQztJQUMxRCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksNkJBQW9CLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsT0FBTyxJQUFJLDZCQUFpQixDQUMxQixJQUFJLENBQUMsVUFBeUQsQ0FDL0QsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsVUFBVSxDQUFDLENBQVM7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksNkJBQW9CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBRUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxVQUF1RSxDQUFDO1FBQ2hHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU07WUFBRSxNQUFNLElBQUksNkJBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkUsT0FBTyxJQUFJLDZCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsS0FBSyxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxLQUFLLE9BQU8sQ0FBQztJQUNoRCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLEtBQUssV0FBVyxDQUFDO0lBQ3BELENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsS0FBSyxXQUFXLENBQUM7SUFDcEQsQ0FBQztDQUNGO0FBbkRELHNDQW1EQyJ9
@@ -0,0 +1,7 @@
1
+ import { ForestServerActionFormElementFieldReference } from '@forestadmin/forestadmin-client';
2
+ export default class ActionLayoutInput {
3
+ protected readonly layoutItem: ForestServerActionFormElementFieldReference;
4
+ constructor(layoutItem: ForestServerActionFormElementFieldReference);
5
+ getInputId(): string;
6
+ }
7
+ //# sourceMappingURL=action-layout-input.d.ts.map
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class ActionLayoutInput {
4
+ constructor(layoutItem) {
5
+ this.layoutItem = layoutItem;
6
+ }
7
+ getInputId() {
8
+ return this.layoutItem.fieldId;
9
+ }
10
+ }
11
+ exports.default = ActionLayoutInput;
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxheW91dC1pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yZW1vdGUtYWdlbnQtY2xpZW50L2FjdGlvbi1sYXlvdXQvYWN0aW9uLWxheW91dC1pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLE1BQXFCLGlCQUFpQjtJQUdwQyxZQUFZLFVBQXVEO1FBQ2pFLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFWRCxvQ0FVQyJ9
@@ -0,0 +1,8 @@
1
+ import { ForestServerActionFormLayoutElement } from '@forestadmin/forestadmin-client';
2
+ import ActionLayoutElementsContainer from './action-layout-container';
3
+ export default class ActionLayoutPage extends ActionLayoutElementsContainer {
4
+ readonly nextButtonLabel: string;
5
+ readonly previousButtonLabel: string;
6
+ constructor(layout: ForestServerActionFormLayoutElement);
7
+ }
8
+ //# sourceMappingURL=action-layout-page.d.ts.map
@@ -0,0 +1,18 @@
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
+ const action_layout_container_1 = __importDefault(require("./action-layout-container"));
7
+ const errors_1 = require("./errors");
8
+ class ActionLayoutPage extends action_layout_container_1.default {
9
+ constructor(layout) {
10
+ if (layout.component !== 'page')
11
+ throw new errors_1.NotRightElementError('a page', layout);
12
+ super(layout.elements);
13
+ this.nextButtonLabel = layout.nextButtonLabel;
14
+ this.previousButtonLabel = layout.previousButtonLabel;
15
+ }
16
+ }
17
+ exports.default = ActionLayoutPage;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxheW91dC1wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlbW90ZS1hZ2VudC1jbGllbnQvYWN0aW9uLWxheW91dC9hY3Rpb24tbGF5b3V0LXBhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSx3RkFBc0U7QUFDdEUscUNBQWdEO0FBRWhELE1BQXFCLGdCQUFpQixTQUFRLGlDQUE2QjtJQUl6RSxZQUFZLE1BQTJDO1FBQ3JELElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxNQUFNO1lBQUUsTUFBTSxJQUFJLDZCQUFvQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVsRixLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUM5QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDO0lBQ3hELENBQUM7Q0FDRjtBQVhELG1DQVdDIn0=
@@ -0,0 +1,6 @@
1
+ import ActionLayoutElementsContainer from './action-layout-container';
2
+ import ActionLayoutPage from './action-layout-page';
3
+ export default class ActionLayoutRoot extends ActionLayoutElementsContainer {
4
+ page(n: number): ActionLayoutPage;
5
+ }
6
+ //# sourceMappingURL=action-layout-root.d.ts.map
@@ -0,0 +1,19 @@
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
+ const action_layout_container_1 = __importDefault(require("./action-layout-container"));
7
+ const action_layout_page_1 = __importDefault(require("./action-layout-page"));
8
+ const errors_1 = require("./errors");
9
+ class ActionLayoutRoot extends action_layout_container_1.default {
10
+ page(n) {
11
+ if (n < 0 || n >= this.layout.length)
12
+ throw new errors_1.NotFoundElementError(n);
13
+ if (!this.isPage(n))
14
+ throw new errors_1.NotRightElementError('a page', this.layout[n]);
15
+ return new action_layout_page_1.default(this.layout[n]);
16
+ }
17
+ }
18
+ exports.default = ActionLayoutRoot;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxheW91dC1yb290LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlbW90ZS1hZ2VudC1jbGllbnQvYWN0aW9uLWxheW91dC9hY3Rpb24tbGF5b3V0LXJvb3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RkFBc0U7QUFDdEUsOEVBQW9EO0FBQ3BELHFDQUFzRTtBQUV0RSxNQUFxQixnQkFBaUIsU0FBUSxpQ0FBNkI7SUFDekUsSUFBSSxDQUFDLENBQVM7UUFDWixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUFFLE1BQU0sSUFBSSw2QkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFBRSxNQUFNLElBQUksNkJBQW9CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU5RSxPQUFPLElBQUksNEJBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRjtBQVBELG1DQU9DIn0=
@@ -0,0 +1,8 @@
1
+ import { ForestServerActionFormLayoutElement } from '@forestadmin/forestadmin-client';
2
+ export declare class NotRightElementError extends Error {
3
+ constructor(elementName: string, element: ForestServerActionFormLayoutElement);
4
+ }
5
+ export declare class NotFoundElementError extends Error {
6
+ constructor(n: number);
7
+ }
8
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotFoundElementError = exports.NotRightElementError = void 0;
4
+ class NotRightElementError extends Error {
5
+ constructor(elementName, element) {
6
+ super(`This is not ${elementName}, it's a ${element.component} element`);
7
+ }
8
+ }
9
+ exports.NotRightElementError = NotRightElementError;
10
+ class NotFoundElementError extends Error {
11
+ constructor(n) {
12
+ super(`Element ${n} not found`);
13
+ }
14
+ }
15
+ exports.NotFoundElementError = NotFoundElementError;
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlbW90ZS1hZ2VudC1jbGllbnQvYWN0aW9uLWxheW91dC9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsTUFBYSxvQkFBcUIsU0FBUSxLQUFLO0lBQzdDLFlBQVksV0FBbUIsRUFBRSxPQUE0QztRQUMzRSxLQUFLLENBQUMsZUFBZSxXQUFXLFlBQVksT0FBTyxDQUFDLFNBQVMsVUFBVSxDQUFDLENBQUM7SUFDM0UsQ0FBQztDQUNGO0FBSkQsb0RBSUM7QUFFRCxNQUFhLG9CQUFxQixTQUFRLEtBQUs7SUFDN0MsWUFBWSxDQUFTO1FBQ25CLEtBQUssQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBSkQsb0RBSUMifQ==
@@ -0,0 +1,59 @@
1
+ import type HttpRequester from '../http-requester';
2
+ import ActionField from '../action-fields/action-field';
3
+ import ActionFieldCheckbox from '../action-fields/action-field-checkbox';
4
+ import ActionFieldCheckboxGroup from '../action-fields/action-field-checkbox-group';
5
+ import ActionFieldColorPicker from '../action-fields/action-field-color-picker';
6
+ import ActionFieldDate from '../action-fields/action-field-date';
7
+ import ActionFieldDropdown from '../action-fields/action-field-dropdown';
8
+ import ActionFieldEnum from '../action-fields/action-field-enum';
9
+ import ActionFieldJson from '../action-fields/action-field-json';
10
+ import ActionFieldNumber from '../action-fields/action-field-number';
11
+ import ActionFieldNumberList from '../action-fields/action-field-number-list';
12
+ import ActionFieldRadioGroup from '../action-fields/action-field-radio-group';
13
+ import ActionFieldString from '../action-fields/action-field-string';
14
+ import ActionFieldStringList from '../action-fields/action-field-string-list';
15
+ import FieldFormStates from '../action-fields/field-form-states';
16
+ import ActionLayoutRoot from '../action-layout/action-layout-root';
17
+ export type BaseActionContext = {
18
+ recordId?: string | number;
19
+ recordIds?: string[] | number[];
20
+ };
21
+ export type ActionEndpointsByCollection = {
22
+ [collectionName: string]: {
23
+ [actionName: string]: {
24
+ name: string;
25
+ endpoint: string;
26
+ };
27
+ };
28
+ };
29
+ export default class Action<TypingsSchema> {
30
+ private readonly collectionName;
31
+ private readonly httpRequester;
32
+ protected readonly fieldsFormStates: FieldFormStates<TypingsSchema>;
33
+ private readonly ids;
34
+ private actionPath;
35
+ constructor(collectionName: keyof TypingsSchema, httpRequester: HttpRequester, actionPath: string, fieldsFormStates: FieldFormStates<TypingsSchema>, ids?: (string | number)[]);
36
+ execute(validateApproval?: boolean): Promise<{
37
+ success: string;
38
+ html?: string;
39
+ }>;
40
+ private getSignedApprovalRequest;
41
+ setFields(fields: Record<string, unknown>): Promise<void>;
42
+ getFields(): ActionField<TypingsSchema>[];
43
+ getField(fieldName: string): ActionField<TypingsSchema>;
44
+ getFieldNumber(fieldName: string): ActionFieldNumber<TypingsSchema>;
45
+ getFieldJson(fieldName: string): ActionFieldJson<TypingsSchema>;
46
+ getFieldNumberList(fieldName: string): ActionFieldNumberList<TypingsSchema>;
47
+ getFieldString(fieldName: string): ActionFieldString<TypingsSchema>;
48
+ getFieldStringList(fieldName: string): ActionFieldStringList<TypingsSchema>;
49
+ getDropdownField(fieldName: string): ActionFieldDropdown<TypingsSchema>;
50
+ getCheckboxField(fieldName: string): ActionFieldCheckbox<TypingsSchema>;
51
+ getCheckboxGroupField(fieldName: string): ActionFieldCheckboxGroup<TypingsSchema>;
52
+ getColorPickerField(fieldName: string): ActionFieldColorPicker<TypingsSchema>;
53
+ getDateField(fieldName: string): ActionFieldDate<TypingsSchema>;
54
+ getEnumField(fieldName: string): ActionFieldEnum<TypingsSchema>;
55
+ getRadioGroupField(fieldName: string): ActionFieldRadioGroup<TypingsSchema>;
56
+ getLayout(): ActionLayoutRoot;
57
+ doesFieldExist(fieldName: string): boolean;
58
+ }
59
+ //# sourceMappingURL=action.d.ts.map
@@ -0,0 +1,139 @@
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
+ const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
7
+ const action_field_checkbox_1 = __importDefault(require("../action-fields/action-field-checkbox"));
8
+ const action_field_checkbox_group_1 = __importDefault(require("../action-fields/action-field-checkbox-group"));
9
+ const action_field_color_picker_1 = __importDefault(require("../action-fields/action-field-color-picker"));
10
+ const action_field_date_1 = __importDefault(require("../action-fields/action-field-date"));
11
+ const action_field_dropdown_1 = __importDefault(require("../action-fields/action-field-dropdown"));
12
+ const action_field_enum_1 = __importDefault(require("../action-fields/action-field-enum"));
13
+ const action_field_json_1 = __importDefault(require("../action-fields/action-field-json"));
14
+ const action_field_number_1 = __importDefault(require("../action-fields/action-field-number"));
15
+ const action_field_number_list_1 = __importDefault(require("../action-fields/action-field-number-list"));
16
+ const action_field_radio_group_1 = __importDefault(require("../action-fields/action-field-radio-group"));
17
+ const action_field_string_1 = __importDefault(require("../action-fields/action-field-string"));
18
+ const action_field_string_list_1 = __importDefault(require("../action-fields/action-field-string-list"));
19
+ const action_layout_root_1 = __importDefault(require("../action-layout/action-layout-root"));
20
+ class Action {
21
+ constructor(collectionName, httpRequester, actionPath, fieldsFormStates, ids) {
22
+ this.collectionName = collectionName;
23
+ this.httpRequester = httpRequester;
24
+ this.ids = ids ?? undefined;
25
+ this.actionPath = actionPath;
26
+ this.fieldsFormStates = fieldsFormStates;
27
+ }
28
+ async execute(validateApproval) {
29
+ const requestBody = {
30
+ data: {
31
+ attributes: {
32
+ collection_name: this.collectionName,
33
+ ids: this.ids,
34
+ values: this.fieldsFormStates.getFieldValues(),
35
+ signed_approval_request: validateApproval ? this.getSignedApprovalRequest() : undefined,
36
+ },
37
+ type: 'custom-action-requests',
38
+ },
39
+ };
40
+ return this.httpRequester.query({
41
+ method: 'post',
42
+ path: this.actionPath,
43
+ body: requestBody,
44
+ });
45
+ }
46
+ getSignedApprovalRequest() {
47
+ return jsonwebtoken_1.default.sign({
48
+ data: {
49
+ attributes: {
50
+ status: 'in-progress',
51
+ closed_at: null,
52
+ updated_at: new Date().toISOString(),
53
+ error_message: null,
54
+ requester_id: 1,
55
+ },
56
+ },
57
+ }, this.httpRequester.agentOptions.envSecret, { expiresIn: '1 hours' });
58
+ }
59
+ async setFields(fields) {
60
+ for (const [fieldName, value] of Object.entries(fields)) {
61
+ // eslint-disable-next-line no-await-in-loop
62
+ await this.fieldsFormStates.setFieldValue(fieldName, value);
63
+ }
64
+ }
65
+ getFields() {
66
+ return this.fieldsFormStates.getFields().map(f => {
67
+ return this.getField(f.getName());
68
+ });
69
+ }
70
+ getField(fieldName) {
71
+ const field = this.fieldsFormStates.getField(fieldName);
72
+ const type = typeof field.getType() === 'string' ? field.getType() : JSON.stringify(field.getType());
73
+ switch (type) {
74
+ case 'Number':
75
+ return this.getFieldNumber(fieldName);
76
+ case 'Json':
77
+ return this.getFieldJson(fieldName);
78
+ case 'NumberList':
79
+ case '["Number"]':
80
+ return this.getFieldNumberList(fieldName);
81
+ case 'StringList':
82
+ case '["String"]':
83
+ return this.getFieldStringList(fieldName);
84
+ case 'Boolean':
85
+ return this.getCheckboxField(fieldName);
86
+ case 'Date':
87
+ return this.getDateField(fieldName);
88
+ case 'Enum':
89
+ return this.getEnumField(fieldName);
90
+ case 'String':
91
+ default:
92
+ return this.getFieldString(fieldName);
93
+ }
94
+ }
95
+ getFieldNumber(fieldName) {
96
+ return new action_field_number_1.default(fieldName, this.fieldsFormStates);
97
+ }
98
+ getFieldJson(fieldName) {
99
+ return new action_field_json_1.default(fieldName, this.fieldsFormStates);
100
+ }
101
+ getFieldNumberList(fieldName) {
102
+ return new action_field_number_list_1.default(fieldName, this.fieldsFormStates);
103
+ }
104
+ getFieldString(fieldName) {
105
+ return new action_field_string_1.default(fieldName, this.fieldsFormStates);
106
+ }
107
+ getFieldStringList(fieldName) {
108
+ return new action_field_string_list_1.default(fieldName, this.fieldsFormStates);
109
+ }
110
+ getDropdownField(fieldName) {
111
+ return new action_field_dropdown_1.default(fieldName, this.fieldsFormStates);
112
+ }
113
+ getCheckboxField(fieldName) {
114
+ return new action_field_checkbox_1.default(fieldName, this.fieldsFormStates);
115
+ }
116
+ getCheckboxGroupField(fieldName) {
117
+ return new action_field_checkbox_group_1.default(fieldName, this.fieldsFormStates);
118
+ }
119
+ getColorPickerField(fieldName) {
120
+ return new action_field_color_picker_1.default(fieldName, this.fieldsFormStates);
121
+ }
122
+ getDateField(fieldName) {
123
+ return new action_field_date_1.default(fieldName, this.fieldsFormStates);
124
+ }
125
+ getEnumField(fieldName) {
126
+ return new action_field_enum_1.default(fieldName, this.fieldsFormStates);
127
+ }
128
+ getRadioGroupField(fieldName) {
129
+ return new action_field_radio_group_1.default(fieldName, this.fieldsFormStates);
130
+ }
131
+ getLayout() {
132
+ return new action_layout_root_1.default(this.fieldsFormStates.getLayout());
133
+ }
134
+ doesFieldExist(fieldName) {
135
+ return Boolean(this.fieldsFormStates.getField(fieldName));
136
+ }
137
+ }
138
+ exports.default = Action;
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JlbW90ZS1hZ2VudC1jbGllbnQvZG9tYWlucy9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSxnRUFBd0M7QUFHeEMsbUdBQXlFO0FBQ3pFLCtHQUFvRjtBQUNwRiwyR0FBZ0Y7QUFDaEYsMkZBQWlFO0FBQ2pFLG1HQUF5RTtBQUN6RSwyRkFBaUU7QUFDakUsMkZBQWlFO0FBQ2pFLCtGQUFxRTtBQUNyRSx5R0FBOEU7QUFDOUUseUdBQThFO0FBQzlFLCtGQUFxRTtBQUNyRSx5R0FBOEU7QUFFOUUsNkZBQW1FO0FBWW5FLE1BQXFCLE1BQU07SUFRekIsWUFDRSxjQUFtQyxFQUNuQyxhQUE0QixFQUM1QixVQUFrQixFQUNsQixnQkFBZ0QsRUFDaEQsR0FBeUI7UUFFekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUMzQyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBMEI7UUFDdEMsTUFBTSxXQUFXLEdBQUc7WUFDbEIsSUFBSSxFQUFFO2dCQUNKLFVBQVUsRUFBRTtvQkFDVixlQUFlLEVBQUUsSUFBSSxDQUFDLGNBQWM7b0JBQ3BDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztvQkFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRTtvQkFDOUMsdUJBQXVCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO2lCQUN4RjtnQkFD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
@@ -0,0 +1,21 @@
1
+ import { DistributionChart, LeaderboardChart, ObjectiveChart, PercentageChart, TimeBasedChart, ValueChart } from '@forestadmin/datasource-toolkit';
2
+ import HttpRequester from '../http-requester';
3
+ export interface ChartInterface {
4
+ valueChart(...args: unknown[]): Promise<ValueChart>;
5
+ distributionChart(...args: unknown[]): Promise<DistributionChart>;
6
+ percentageChart(...args: unknown[]): Promise<PercentageChart>;
7
+ objectiveChart(...args: unknown[]): Promise<ObjectiveChart>;
8
+ leaderboardChart(...args: unknown[]): Promise<LeaderboardChart>;
9
+ timeBasedChart(...args: unknown[]): Promise<TimeBasedChart>;
10
+ }
11
+ export default abstract class Chart implements ChartInterface {
12
+ protected httpRequester: HttpRequester;
13
+ valueChart(chartName: string): Promise<ValueChart>;
14
+ distributionChart(chartName: string): Promise<DistributionChart>;
15
+ percentageChart(chartName: string): Promise<PercentageChart>;
16
+ objectiveChart(chartName: string): Promise<ObjectiveChart>;
17
+ leaderboardChart(chartName: string): Promise<LeaderboardChart>;
18
+ timeBasedChart(chartName: string): Promise<TimeBasedChart>;
19
+ protected loadChart<Type>(chartName: string, body?: Record<string, unknown>): Promise<Type>;
20
+ }
21
+ //# sourceMappingURL=chart.d.ts.map