@forestadmin/agent-client 0.1.0 → 1.0.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 (69) hide show
  1. package/dist/action-fields/action-field-checkbox-group.d.ts +8 -0
  2. package/dist/action-fields/action-field-checkbox-group.js +23 -0
  3. package/dist/action-fields/action-field-checkbox.d.ts +6 -0
  4. package/dist/action-fields/action-field-checkbox.js +16 -0
  5. package/dist/action-fields/action-field-color-picker.d.ts +7 -0
  6. package/dist/action-fields/action-field-color-picker.js +19 -0
  7. package/dist/action-fields/action-field-date.d.ts +5 -0
  8. package/dist/action-fields/action-field-date.js +13 -0
  9. package/dist/action-fields/action-field-dropdown.d.ts +7 -0
  10. package/dist/action-fields/action-field-dropdown.js +16 -0
  11. package/dist/action-fields/action-field-enum.d.ts +6 -0
  12. package/dist/action-fields/action-field-enum.js +18 -0
  13. package/dist/action-fields/action-field-json.d.ts +5 -0
  14. package/dist/action-fields/action-field-json.js +13 -0
  15. package/dist/action-fields/action-field-multiple-choice.d.ts +7 -0
  16. package/dist/action-fields/action-field-multiple-choice.js +19 -0
  17. package/dist/action-fields/action-field-number-list.d.ts +6 -0
  18. package/dist/action-fields/action-field-number-list.js +20 -0
  19. package/dist/action-fields/action-field-number.d.ts +5 -0
  20. package/dist/action-fields/action-field-number.js +13 -0
  21. package/dist/action-fields/action-field-radio-group.d.ts +7 -0
  22. package/dist/action-fields/action-field-radio-group.js +16 -0
  23. package/dist/action-fields/action-field-string-list.d.ts +6 -0
  24. package/dist/action-fields/action-field-string-list.js +20 -0
  25. package/dist/action-fields/action-field-string.d.ts +5 -0
  26. package/dist/action-fields/action-field-string.js +13 -0
  27. package/dist/action-fields/action-field.d.ts +15 -0
  28. package/dist/action-fields/action-field.js +34 -0
  29. package/dist/action-fields/field-form-states.d.ts +25 -0
  30. package/dist/action-fields/field-form-states.js +94 -0
  31. package/dist/action-fields/field-getter.d.ts +10 -0
  32. package/dist/action-fields/field-getter.js +21 -0
  33. package/dist/action-fields/types.d.ts +28 -0
  34. package/dist/action-fields/types.js +3 -0
  35. package/dist/action-layout/action-layout-container.d.ts +9 -0
  36. package/dist/action-layout/action-layout-container.js +24 -0
  37. package/dist/action-layout/action-layout-element.d.ts +14 -0
  38. package/dist/action-layout/action-layout-element.js +47 -0
  39. package/dist/action-layout/action-layout-input.d.ts +7 -0
  40. package/dist/action-layout/action-layout-input.js +12 -0
  41. package/dist/action-layout/action-layout-page.d.ts +8 -0
  42. package/dist/action-layout/action-layout-page.js +18 -0
  43. package/dist/action-layout/action-layout-root.d.ts +6 -0
  44. package/dist/action-layout/action-layout-root.js +19 -0
  45. package/dist/action-layout/errors.d.ts +8 -0
  46. package/dist/action-layout/errors.js +16 -0
  47. package/dist/domains/action.d.ts +58 -0
  48. package/dist/domains/action.js +125 -0
  49. package/dist/domains/chart.d.ts +21 -0
  50. package/dist/domains/chart.js +39 -0
  51. package/dist/domains/collection-chart.d.ts +19 -0
  52. package/dist/domains/collection-chart.js +40 -0
  53. package/dist/domains/collection.d.ts +25 -0
  54. package/dist/domains/collection.js +109 -0
  55. package/dist/domains/relation.d.ts +11 -0
  56. package/dist/domains/relation.js +23 -0
  57. package/dist/domains/remote-agent-client.d.ts +42 -0
  58. package/dist/domains/remote-agent-client.js +43 -0
  59. package/dist/domains/segment.d.ts +14 -0
  60. package/dist/domains/segment.js +49 -0
  61. package/dist/http-requester.d.ts +28 -0
  62. package/dist/http-requester.js +66 -0
  63. package/dist/index.d.ts +10 -0
  64. package/dist/index.js +18 -0
  65. package/dist/query-serializer.d.ts +8 -0
  66. package/dist/query-serializer.js +77 -0
  67. package/dist/types.d.ts +26 -0
  68. package/dist/types.js +3 -0
  69. package/package.json +2 -14
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxheW91dC1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9uLWxheW91dC9hY3Rpb24tbGF5b3V0LWNvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLG9GQUEwRDtBQUMxRCxxQ0FBc0U7QUFFdEUsTUFBOEIsNkJBQTZCO0lBR3pELFlBQVksTUFBNkM7UUFDdkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELE9BQU8sQ0FBQyxDQUFTO1FBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFBRSxNQUFNLElBQUksNkJBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUFFLE1BQU0sSUFBSSw2QkFBb0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWpGLE9BQU8sSUFBSSwrQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU0sQ0FBQyxDQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsS0FBSyxNQUFNLENBQUM7SUFDOUMsQ0FBQztDQUNGO0FBakJELGdEQWlCQyJ9
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxheW91dC1lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjdGlvbi1sYXlvdXQvYWN0aW9uLWxheW91dC1lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBS0EsZ0ZBQXNEO0FBQ3RELHFDQUFzRTtBQUV0RSxNQUFxQixtQkFBbUI7SUFHdEMsWUFBWSxVQUErQztRQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksNkJBQW9CLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBRUQsT0FBUSxJQUFJLENBQUMsVUFBa0MsQ0FBQyxPQUFPLENBQUM7SUFDMUQsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLDZCQUFvQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELE9BQU8sSUFBSSw2QkFBaUIsQ0FDMUIsSUFBSSxDQUFDLFVBQXlELENBQy9ELENBQUMsVUFBVSxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFVBQVUsQ0FBQyxDQUFTO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLDZCQUFvQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBdUUsQ0FBQztRQUNoRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNO1lBQUUsTUFBTSxJQUFJLDZCQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRW5FLE9BQU8sSUFBSSw2QkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLEtBQUssS0FBSyxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsS0FBSyxPQUFPLENBQUM7SUFDaEQsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxLQUFLLFdBQVcsQ0FBQztJQUNwRCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLEtBQUssV0FBVyxDQUFDO0lBQ3BELENBQUM7Q0FDRjtBQW5ERCxzQ0FtREMifQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxheW91dC1pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb24tbGF5b3V0L2FjdGlvbi1sYXlvdXQtaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxNQUFxQixpQkFBaUI7SUFHcEMsWUFBWSxVQUF1RDtRQUNqRSxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBVkQsb0NBVUMifQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxheW91dC1wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjdGlvbi1sYXlvdXQvYWN0aW9uLWxheW91dC1wYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsd0ZBQXNFO0FBQ3RFLHFDQUFnRDtBQUVoRCxNQUFxQixnQkFBaUIsU0FBUSxpQ0FBNkI7SUFJekUsWUFBWSxNQUEyQztRQUNyRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssTUFBTTtZQUFFLE1BQU0sSUFBSSw2QkFBb0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFbEYsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDOUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztJQUN4RCxDQUFDO0NBQ0Y7QUFYRCxtQ0FXQyJ9
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxheW91dC1yb290LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjdGlvbi1sYXlvdXQvYWN0aW9uLWxheW91dC1yb290LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsd0ZBQXNFO0FBQ3RFLDhFQUFvRDtBQUNwRCxxQ0FBc0U7QUFFdEUsTUFBcUIsZ0JBQWlCLFNBQVEsaUNBQTZCO0lBQ3pFLElBQUksQ0FBQyxDQUFTO1FBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFBRSxNQUFNLElBQUksNkJBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQUUsTUFBTSxJQUFJLDZCQUFvQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFOUUsT0FBTyxJQUFJLDRCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUFQRCxtQ0FPQyJ9
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjdGlvbi1sYXlvdXQvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLE1BQWEsb0JBQXFCLFNBQVEsS0FBSztJQUM3QyxZQUFZLFdBQW1CLEVBQUUsT0FBNEM7UUFDM0UsS0FBSyxDQUFDLGVBQWUsV0FBVyxZQUFZLE9BQU8sQ0FBQyxTQUFTLFVBQVUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7Q0FDRjtBQUpELG9EQUlDO0FBRUQsTUFBYSxvQkFBcUIsU0FBUSxLQUFLO0lBQzdDLFlBQVksQ0FBUztRQUNuQixLQUFLLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Q0FDRjtBQUpELG9EQUlDIn0=
@@ -0,0 +1,58 @@
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: string, httpRequester: HttpRequester, actionPath: string, fieldsFormStates: FieldFormStates<TypingsSchema>, ids?: (string | number)[]);
36
+ execute(signedApprovalRequest?: Record<string, unknown>): Promise<{
37
+ success: string;
38
+ html?: string;
39
+ }>;
40
+ setFields(fields: Record<string, unknown>): Promise<void>;
41
+ getFields(): ActionField<TypingsSchema>[];
42
+ getField(fieldName: string): ActionField<TypingsSchema>;
43
+ getFieldNumber(fieldName: string): ActionFieldNumber<TypingsSchema>;
44
+ getFieldJson(fieldName: string): ActionFieldJson<TypingsSchema>;
45
+ getFieldNumberList(fieldName: string): ActionFieldNumberList<TypingsSchema>;
46
+ getFieldString(fieldName: string): ActionFieldString<TypingsSchema>;
47
+ getFieldStringList(fieldName: string): ActionFieldStringList<TypingsSchema>;
48
+ getDropdownField(fieldName: string): ActionFieldDropdown<TypingsSchema>;
49
+ getCheckboxField(fieldName: string): ActionFieldCheckbox<TypingsSchema>;
50
+ getCheckboxGroupField(fieldName: string): ActionFieldCheckboxGroup<TypingsSchema>;
51
+ getColorPickerField(fieldName: string): ActionFieldColorPicker<TypingsSchema>;
52
+ getDateField(fieldName: string): ActionFieldDate<TypingsSchema>;
53
+ getEnumField(fieldName: string): ActionFieldEnum<TypingsSchema>;
54
+ getRadioGroupField(fieldName: string): ActionFieldRadioGroup<TypingsSchema>;
55
+ getLayout(): ActionLayoutRoot;
56
+ doesFieldExist(fieldName: string): boolean;
57
+ }
58
+ //# sourceMappingURL=action.d.ts.map
@@ -0,0 +1,125 @@
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_checkbox_1 = __importDefault(require("../action-fields/action-field-checkbox"));
7
+ const action_field_checkbox_group_1 = __importDefault(require("../action-fields/action-field-checkbox-group"));
8
+ const action_field_color_picker_1 = __importDefault(require("../action-fields/action-field-color-picker"));
9
+ const action_field_date_1 = __importDefault(require("../action-fields/action-field-date"));
10
+ const action_field_dropdown_1 = __importDefault(require("../action-fields/action-field-dropdown"));
11
+ const action_field_enum_1 = __importDefault(require("../action-fields/action-field-enum"));
12
+ const action_field_json_1 = __importDefault(require("../action-fields/action-field-json"));
13
+ const action_field_number_1 = __importDefault(require("../action-fields/action-field-number"));
14
+ const action_field_number_list_1 = __importDefault(require("../action-fields/action-field-number-list"));
15
+ const action_field_radio_group_1 = __importDefault(require("../action-fields/action-field-radio-group"));
16
+ const action_field_string_1 = __importDefault(require("../action-fields/action-field-string"));
17
+ const action_field_string_list_1 = __importDefault(require("../action-fields/action-field-string-list"));
18
+ const action_layout_root_1 = __importDefault(require("../action-layout/action-layout-root"));
19
+ class Action {
20
+ constructor(collectionName, httpRequester, actionPath, fieldsFormStates, ids) {
21
+ this.collectionName = collectionName;
22
+ this.httpRequester = httpRequester;
23
+ this.ids = ids ?? undefined;
24
+ this.actionPath = actionPath;
25
+ this.fieldsFormStates = fieldsFormStates;
26
+ }
27
+ async execute(signedApprovalRequest) {
28
+ const requestBody = {
29
+ data: {
30
+ attributes: {
31
+ collection_name: this.collectionName,
32
+ ids: this.ids,
33
+ values: this.fieldsFormStates.getFieldValues(),
34
+ signed_approval_request: signedApprovalRequest,
35
+ },
36
+ type: 'custom-action-requests',
37
+ },
38
+ };
39
+ return this.httpRequester.query({
40
+ method: 'post',
41
+ path: this.actionPath,
42
+ body: requestBody,
43
+ });
44
+ }
45
+ async setFields(fields) {
46
+ for (const [fieldName, value] of Object.entries(fields)) {
47
+ // eslint-disable-next-line no-await-in-loop
48
+ await this.fieldsFormStates.setFieldValue(fieldName, value);
49
+ }
50
+ }
51
+ getFields() {
52
+ return this.fieldsFormStates.getFields().map(f => {
53
+ return this.getField(f.getName());
54
+ });
55
+ }
56
+ getField(fieldName) {
57
+ const field = this.fieldsFormStates.getField(fieldName);
58
+ const type = typeof field.getType() === 'string' ? field.getType() : JSON.stringify(field.getType());
59
+ switch (type) {
60
+ case 'Number':
61
+ return this.getFieldNumber(fieldName);
62
+ case 'Json':
63
+ return this.getFieldJson(fieldName);
64
+ case 'NumberList':
65
+ case '["Number"]':
66
+ return this.getFieldNumberList(fieldName);
67
+ case 'StringList':
68
+ case '["String"]':
69
+ return this.getFieldStringList(fieldName);
70
+ case 'Boolean':
71
+ return this.getCheckboxField(fieldName);
72
+ case 'Date':
73
+ return this.getDateField(fieldName);
74
+ case 'Enum':
75
+ return this.getEnumField(fieldName);
76
+ case 'String':
77
+ default:
78
+ return this.getFieldString(fieldName);
79
+ }
80
+ }
81
+ getFieldNumber(fieldName) {
82
+ return new action_field_number_1.default(fieldName, this.fieldsFormStates);
83
+ }
84
+ getFieldJson(fieldName) {
85
+ return new action_field_json_1.default(fieldName, this.fieldsFormStates);
86
+ }
87
+ getFieldNumberList(fieldName) {
88
+ return new action_field_number_list_1.default(fieldName, this.fieldsFormStates);
89
+ }
90
+ getFieldString(fieldName) {
91
+ return new action_field_string_1.default(fieldName, this.fieldsFormStates);
92
+ }
93
+ getFieldStringList(fieldName) {
94
+ return new action_field_string_list_1.default(fieldName, this.fieldsFormStates);
95
+ }
96
+ getDropdownField(fieldName) {
97
+ return new action_field_dropdown_1.default(fieldName, this.fieldsFormStates);
98
+ }
99
+ getCheckboxField(fieldName) {
100
+ return new action_field_checkbox_1.default(fieldName, this.fieldsFormStates);
101
+ }
102
+ getCheckboxGroupField(fieldName) {
103
+ return new action_field_checkbox_group_1.default(fieldName, this.fieldsFormStates);
104
+ }
105
+ getColorPickerField(fieldName) {
106
+ return new action_field_color_picker_1.default(fieldName, this.fieldsFormStates);
107
+ }
108
+ getDateField(fieldName) {
109
+ return new action_field_date_1.default(fieldName, this.fieldsFormStates);
110
+ }
111
+ getEnumField(fieldName) {
112
+ return new action_field_enum_1.default(fieldName, this.fieldsFormStates);
113
+ }
114
+ getRadioGroupField(fieldName) {
115
+ return new action_field_radio_group_1.default(fieldName, this.fieldsFormStates);
116
+ }
117
+ getLayout() {
118
+ return new action_layout_root_1.default(this.fieldsFormStates.getLayout());
119
+ }
120
+ doesFieldExist(fieldName) {
121
+ return Boolean(this.fieldsFormStates.getField(fieldName));
122
+ }
123
+ }
124
+ exports.default = Action;
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RvbWFpbnMvYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsbUdBQXlFO0FBQ3pFLCtHQUFvRjtBQUNwRiwyR0FBZ0Y7QUFDaEYsMkZBQWlFO0FBQ2pFLG1HQUF5RTtBQUN6RSwyRkFBaUU7QUFDakUsMkZBQWlFO0FBQ2pFLCtGQUFxRTtBQUNyRSx5R0FBOEU7QUFDOUUseUdBQThFO0FBQzlFLCtGQUFxRTtBQUNyRSx5R0FBOEU7QUFFOUUsNkZBQW1FO0FBWW5FLE1BQXFCLE1BQU07SUFRekIsWUFDRSxjQUFzQixFQUN0QixhQUE0QixFQUM1QixVQUFrQixFQUNsQixnQkFBZ0QsRUFDaEQsR0FBeUI7UUFFekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUMzQyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FDWCxxQkFBK0M7UUFFL0MsTUFBTSxXQUFXLEdBQUc7WUFDbEIsSUFBSSxFQUFFO2dCQUNKLFVBQVUsRUFBRTtvQkFDVixlQUFlLEVBQUUsSUFBSSxDQUFDLGNBQWM7b0JBQ3BDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztvQkFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRTtvQkFDOUMsdUJBQXVCLEVBQUUscUJBQXFCO2lCQUMvQztnQkFDRCxJQUFJLEVBQUUsd0JBQXdCO2FBQy9CO1NBQ0YsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQXNCO1lBQ25ELE1BQU0sRUFBRSxN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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
@@ -0,0 +1,39 @@
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 http_requester_1 = __importDefault(require("../http-requester"));
7
+ class Chart {
8
+ async valueChart(chartName) {
9
+ return this.loadChart(chartName);
10
+ }
11
+ async distributionChart(chartName) {
12
+ return this.loadChart(chartName);
13
+ }
14
+ async percentageChart(chartName) {
15
+ return this.loadChart(chartName);
16
+ }
17
+ async objectiveChart(chartName) {
18
+ return this.loadChart(chartName);
19
+ }
20
+ async leaderboardChart(chartName) {
21
+ return this.loadChart(chartName);
22
+ }
23
+ async timeBasedChart(chartName) {
24
+ return this.loadChart(chartName);
25
+ }
26
+ async loadChart(chartName, body) {
27
+ if (!this.httpRequester) {
28
+ throw new Error('HttpRequester is not initialized. Please ensure it is set before calling chart methods.');
29
+ }
30
+ const result = await this.httpRequester.query({
31
+ method: 'post',
32
+ path: `${http_requester_1.default.escapeUrlSlug(`/forest/_charts/${chartName}`)}`,
33
+ body,
34
+ });
35
+ return result.value;
36
+ }
37
+ }
38
+ exports.default = Chart;
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZG9tYWlucy9jaGFydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVNBLHVFQUE4QztBQVc5QyxNQUE4QixLQUFLO0lBR2pDLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBaUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsU0FBaUI7UUFDdkMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLFNBQWlCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFpQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFpQjtRQUN0QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjLENBQUMsU0FBaUI7UUFDcEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFUyxLQUFLLENBQUMsU0FBUyxDQUN2QixTQUFpQixFQUNqQixJQUE4QjtRQUU5QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQ2IseUZBQXlGLENBQzFGLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBa0I7WUFDN0QsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsR0FBRyx3QkFBYSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsU0FBUyxFQUFFLENBQUMsRUFBRTtZQUN0RSxJQUFJO1NBQ0wsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQTdDRCx3QkE2Q0MifQ==
@@ -0,0 +1,19 @@
1
+ import { DistributionChart, LeaderboardChart, ObjectiveChart, PercentageChart, TimeBasedChart, ValueChart } from '@forestadmin/datasource-toolkit';
2
+ import { ChartInterface } from './chart';
3
+ import HttpRequester from '../http-requester';
4
+ export type ChartContext = {
5
+ recordId: string | number;
6
+ };
7
+ export default abstract class CollectionChart implements ChartInterface {
8
+ protected httpRequester: HttpRequester;
9
+ private collectionName;
10
+ constructor(collectionName: string, httpRequester: HttpRequester);
11
+ valueChart(chartName: string, { recordId }: ChartContext): Promise<ValueChart>;
12
+ distributionChart(chartName: string, { recordId }: ChartContext): Promise<DistributionChart>;
13
+ percentageChart(chartName: string, { recordId }: ChartContext): Promise<PercentageChart>;
14
+ objectiveChart(chartName: string, { recordId }: ChartContext): Promise<ObjectiveChart>;
15
+ leaderboardChart(chartName: string, { recordId }: ChartContext): Promise<LeaderboardChart>;
16
+ timeBasedChart(chartName: string, { recordId }: ChartContext): Promise<TimeBasedChart>;
17
+ protected loadChart<Type>(chartName: string, body?: Record<string, unknown>): Promise<Type>;
18
+ }
19
+ //# sourceMappingURL=collection-chart.d.ts.map
@@ -0,0 +1,40 @@
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 http_requester_1 = __importDefault(require("../http-requester"));
7
+ class CollectionChart {
8
+ constructor(collectionName, httpRequester) {
9
+ this.httpRequester = httpRequester;
10
+ this.collectionName = collectionName;
11
+ }
12
+ async valueChart(chartName, { recordId }) {
13
+ return this.loadChart(chartName, { record_id: recordId });
14
+ }
15
+ async distributionChart(chartName, { recordId }) {
16
+ return this.loadChart(chartName, { record_id: recordId });
17
+ }
18
+ async percentageChart(chartName, { recordId }) {
19
+ return this.loadChart(chartName, { record_id: recordId });
20
+ }
21
+ async objectiveChart(chartName, { recordId }) {
22
+ return this.loadChart(chartName, { record_id: recordId });
23
+ }
24
+ async leaderboardChart(chartName, { recordId }) {
25
+ return this.loadChart(chartName, { record_id: recordId });
26
+ }
27
+ async timeBasedChart(chartName, { recordId }) {
28
+ return this.loadChart(chartName, { record_id: recordId });
29
+ }
30
+ async loadChart(chartName, body) {
31
+ const result = await this.httpRequester.query({
32
+ method: 'post',
33
+ path: `${http_requester_1.default.escapeUrlSlug(`/forest/_charts/${this.collectionName}/${chartName}`)}`,
34
+ body,
35
+ });
36
+ return result.value;
37
+ }
38
+ }
39
+ exports.default = CollectionChart;
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi1jaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb21haW5zL2NvbGxlY3Rpb24tY2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFVQSx1RUFBOEM7QUFNOUMsTUFBOEIsZUFBZTtJQUkzQyxZQUFZLGNBQXNCLEVBQUUsYUFBNEI7UUFDOUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBaUIsRUFBRSxFQUFFLFFBQVEsRUFBZ0I7UUFDNUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQ3JCLFNBQWlCLEVBQ2pCLEVBQUUsUUFBUSxFQUFnQjtRQUUxQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlLENBQUMsU0FBaUIsRUFBRSxFQUFFLFFBQVEsRUFBZ0I7UUFDakUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQWlCLEVBQUUsRUFBRSxRQUFRLEVBQWdCO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFNBQWlCLEVBQUUsRUFBRSxRQUFRLEVBQWdCO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFpQixFQUFFLEVBQUUsUUFBUSxFQUFnQjtRQUNoRSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVTLEtBQUssQ0FBQyxTQUFTLENBQ3ZCLFNBQWlCLEVBQ2pCLElBQThCO1FBRTlCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQWtCO1lBQzdELE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLEdBQUcsd0JBQWEsQ0FBQyxhQUFhLENBQ2xDLG1CQUFtQixJQUFJLENBQUMsY0FBd0IsSUFBSSxTQUFTLEVBQUUsQ0FDaEUsRUFBRTtZQUNILElBQUk7U0FDTCxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBbERELGtDQWtEQyJ9
@@ -0,0 +1,25 @@
1
+ import type { ExportOptions, LiveQueryOptions, SelectOptions } from '../types';
2
+ import { WriteStream } from 'fs';
3
+ import Action, { ActionEndpointsByCollection, BaseActionContext } from './action';
4
+ import CollectionChart from './collection-chart';
5
+ import Relation from './relation';
6
+ import Segment from './segment';
7
+ import HttpRequester from '../http-requester';
8
+ export default class Collection<TypingsSchema> extends CollectionChart {
9
+ protected readonly name: string;
10
+ protected readonly actionEndpoints?: ActionEndpointsByCollection;
11
+ constructor(name: string, httpRequester: HttpRequester, actionEndpoints: ActionEndpointsByCollection);
12
+ action(actionName: string, actionContext?: BaseActionContext): Promise<Action<TypingsSchema>>;
13
+ segment(name: string): Segment<TypingsSchema>;
14
+ liveQuerySegment(options: LiveQueryOptions): Segment<TypingsSchema>;
15
+ relation(name: string, parentId: string | number): Relation<TypingsSchema>;
16
+ search<Data = any>(content: string): Promise<Data[]>;
17
+ list<Data = any>(options?: SelectOptions): Promise<Data[]>;
18
+ exportCsv(stream: WriteStream, options?: ExportOptions): Promise<void>;
19
+ count(options?: SelectOptions): Promise<number>;
20
+ delete<Data = any>(ids: string[] | number[]): Promise<Data>;
21
+ create<Data = any>(attributes: Record<string, unknown>): Promise<Data>;
22
+ update<Data = any>(id: string | number, attributes: Record<string, unknown>): Promise<Data>;
23
+ private getActionPath;
24
+ }
25
+ //# sourceMappingURL=collection.d.ts.map