@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.
- package/dist/action-fields/action-field-checkbox-group.d.ts +8 -0
- package/dist/action-fields/action-field-checkbox-group.js +23 -0
- package/dist/action-fields/action-field-checkbox.d.ts +6 -0
- package/dist/action-fields/action-field-checkbox.js +16 -0
- package/dist/action-fields/action-field-color-picker.d.ts +7 -0
- package/dist/action-fields/action-field-color-picker.js +19 -0
- package/dist/action-fields/action-field-date.d.ts +5 -0
- package/dist/action-fields/action-field-date.js +13 -0
- package/dist/action-fields/action-field-dropdown.d.ts +7 -0
- package/dist/action-fields/action-field-dropdown.js +16 -0
- package/dist/action-fields/action-field-enum.d.ts +6 -0
- package/dist/action-fields/action-field-enum.js +18 -0
- package/dist/action-fields/action-field-json.d.ts +5 -0
- package/dist/action-fields/action-field-json.js +13 -0
- package/dist/action-fields/action-field-multiple-choice.d.ts +7 -0
- package/dist/action-fields/action-field-multiple-choice.js +19 -0
- package/dist/action-fields/action-field-number-list.d.ts +6 -0
- package/dist/action-fields/action-field-number-list.js +20 -0
- package/dist/action-fields/action-field-number.d.ts +5 -0
- package/dist/action-fields/action-field-number.js +13 -0
- package/dist/action-fields/action-field-radio-group.d.ts +7 -0
- package/dist/action-fields/action-field-radio-group.js +16 -0
- package/dist/action-fields/action-field-string-list.d.ts +6 -0
- package/dist/action-fields/action-field-string-list.js +20 -0
- package/dist/action-fields/action-field-string.d.ts +5 -0
- package/dist/action-fields/action-field-string.js +13 -0
- package/dist/action-fields/action-field.d.ts +15 -0
- package/dist/action-fields/action-field.js +34 -0
- package/dist/action-fields/field-form-states.d.ts +25 -0
- package/dist/action-fields/field-form-states.js +94 -0
- package/dist/action-fields/field-getter.d.ts +10 -0
- package/dist/action-fields/field-getter.js +21 -0
- package/dist/action-fields/types.d.ts +28 -0
- package/dist/action-fields/types.js +3 -0
- package/dist/action-layout/action-layout-container.d.ts +9 -0
- package/dist/action-layout/action-layout-container.js +24 -0
- package/dist/action-layout/action-layout-element.d.ts +14 -0
- package/dist/action-layout/action-layout-element.js +47 -0
- package/dist/action-layout/action-layout-input.d.ts +7 -0
- package/dist/action-layout/action-layout-input.js +12 -0
- package/dist/action-layout/action-layout-page.d.ts +8 -0
- package/dist/action-layout/action-layout-page.js +18 -0
- package/dist/action-layout/action-layout-root.d.ts +6 -0
- package/dist/action-layout/action-layout-root.js +19 -0
- package/dist/action-layout/errors.d.ts +8 -0
- package/dist/action-layout/errors.js +16 -0
- package/dist/domains/action.d.ts +58 -0
- package/dist/domains/action.js +125 -0
- package/dist/domains/chart.d.ts +21 -0
- package/dist/domains/chart.js +39 -0
- package/dist/domains/collection-chart.d.ts +19 -0
- package/dist/domains/collection-chart.js +40 -0
- package/dist/domains/collection.d.ts +25 -0
- package/dist/domains/collection.js +109 -0
- package/dist/domains/relation.d.ts +11 -0
- package/dist/domains/relation.js +23 -0
- package/dist/domains/remote-agent-client.d.ts +42 -0
- package/dist/domains/remote-agent-client.js +43 -0
- package/dist/domains/segment.d.ts +14 -0
- package/dist/domains/segment.js +49 -0
- package/dist/http-requester.d.ts +28 -0
- package/dist/http-requester.js +66 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +18 -0
- package/dist/query-serializer.d.ts +8 -0
- package/dist/query-serializer.js +77 -0
- package/dist/types.d.ts +26 -0
- package/dist/types.js +3 -0
- package/package.json +2 -14
|
@@ -0,0 +1,109 @@
|
|
|
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_1 = __importDefault(require("./action"));
|
|
7
|
+
const collection_chart_1 = __importDefault(require("./collection-chart"));
|
|
8
|
+
const relation_1 = __importDefault(require("./relation"));
|
|
9
|
+
const segment_1 = __importDefault(require("./segment"));
|
|
10
|
+
const field_form_states_1 = __importDefault(require("../action-fields/field-form-states"));
|
|
11
|
+
const query_serializer_1 = __importDefault(require("../query-serializer"));
|
|
12
|
+
class Collection extends collection_chart_1.default {
|
|
13
|
+
constructor(name, httpRequester, actionEndpoints) {
|
|
14
|
+
super(name, httpRequester);
|
|
15
|
+
this.name = name;
|
|
16
|
+
this.actionEndpoints = actionEndpoints;
|
|
17
|
+
}
|
|
18
|
+
async action(actionName, actionContext) {
|
|
19
|
+
const actionPath = this.getActionPath(this.actionEndpoints, this.name, actionName);
|
|
20
|
+
const ids = (actionContext?.recordIds ?? [actionContext?.recordId]).filter(Boolean).map(String);
|
|
21
|
+
const fieldsFormStates = new field_form_states_1.default(actionName, actionPath, this.name, this.httpRequester, ids);
|
|
22
|
+
const action = new action_1.default(this.name, this.httpRequester, actionPath, fieldsFormStates, ids);
|
|
23
|
+
await fieldsFormStates.loadInitialState();
|
|
24
|
+
return action;
|
|
25
|
+
}
|
|
26
|
+
segment(name) {
|
|
27
|
+
return new segment_1.default(name, this.name, this.httpRequester);
|
|
28
|
+
}
|
|
29
|
+
liveQuerySegment(options) {
|
|
30
|
+
// there is no name for live query
|
|
31
|
+
return new segment_1.default(undefined, this.name, this.httpRequester, options);
|
|
32
|
+
}
|
|
33
|
+
relation(name, parentId) {
|
|
34
|
+
return new relation_1.default(name, this.name, parentId, this.httpRequester);
|
|
35
|
+
}
|
|
36
|
+
async search(content) {
|
|
37
|
+
return this.list({ search: content });
|
|
38
|
+
}
|
|
39
|
+
async list(options) {
|
|
40
|
+
return this.httpRequester.query({
|
|
41
|
+
method: 'get',
|
|
42
|
+
path: `/forest/${this.name}`,
|
|
43
|
+
query: query_serializer_1.default.serialize(options, this.name),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
async exportCsv(stream, options) {
|
|
47
|
+
await this.httpRequester.stream({
|
|
48
|
+
path: `/forest/${this.name}.csv`,
|
|
49
|
+
contentType: 'text/csv',
|
|
50
|
+
query: {
|
|
51
|
+
...query_serializer_1.default.serialize(options, this.name),
|
|
52
|
+
...{ header: JSON.stringify(options?.fields) },
|
|
53
|
+
},
|
|
54
|
+
stream,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
async count(options) {
|
|
58
|
+
return Number((await this.httpRequester.query({
|
|
59
|
+
method: 'get',
|
|
60
|
+
path: `/forest/${this.name}/count`,
|
|
61
|
+
query: query_serializer_1.default.serialize(options, this.name),
|
|
62
|
+
})).count);
|
|
63
|
+
}
|
|
64
|
+
async delete(ids) {
|
|
65
|
+
const serializedIds = ids.map((id) => id.toString());
|
|
66
|
+
const requestBody = {
|
|
67
|
+
data: {
|
|
68
|
+
attributes: { collection_name: this.name, ids: serializedIds },
|
|
69
|
+
type: 'action-requests',
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
return this.httpRequester.query({
|
|
73
|
+
method: 'delete',
|
|
74
|
+
path: `/forest/${this.name}`,
|
|
75
|
+
body: requestBody,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
async create(attributes) {
|
|
79
|
+
const requestBody = { data: { attributes, type: this.name } };
|
|
80
|
+
return this.httpRequester.query({
|
|
81
|
+
method: 'post',
|
|
82
|
+
path: `/forest/${this.name}`,
|
|
83
|
+
body: requestBody,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
async update(id, attributes) {
|
|
87
|
+
const requestBody = { data: { attributes, type: this.name, id: id.toString() } };
|
|
88
|
+
return this.httpRequester.query({
|
|
89
|
+
method: 'put',
|
|
90
|
+
path: `/forest/${this.name}/${id.toString()}`,
|
|
91
|
+
body: requestBody,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
getActionPath(actionEndpoints, collectionName, actionName) {
|
|
95
|
+
const collection = actionEndpoints[collectionName];
|
|
96
|
+
if (!collection)
|
|
97
|
+
throw new Error(`Collection ${collectionName} not found in schema`);
|
|
98
|
+
const action = collection[actionName];
|
|
99
|
+
if (!action) {
|
|
100
|
+
throw new Error(`Action ${actionName} not found in collection ${collectionName}`);
|
|
101
|
+
}
|
|
102
|
+
if (!action.endpoint) {
|
|
103
|
+
throw new Error(`Action ${actionName} not found in collection ${collectionName}`);
|
|
104
|
+
}
|
|
105
|
+
return action.endpoint;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.default = Collection;
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb21haW5zL2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQSxzREFBa0Y7QUFDbEYsMEVBQWlEO0FBQ2pELDBEQUFrQztBQUNsQyx3REFBZ0M7QUFDaEMsMkZBQWlFO0FBRWpFLDJFQUFrRDtBQUVsRCxNQUFxQixVQUEwQixTQUFRLDBCQUFlO0lBSXBFLFlBQ0UsSUFBWSxFQUNaLGFBQTRCLEVBQzVCLGVBQTRDO1FBRTVDLEtBQUssQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQ1YsVUFBa0IsRUFDbEIsYUFBaUM7UUFFakMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbkYsTUFBTSxHQUFHLEdBQUcsQ0FBQyxhQUFhLEVBQUUsU0FBUyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVoRyxNQUFNLGdCQUFnQixHQUFHLElBQUksMkJBQWUsQ0FDMUMsVUFBVSxFQUNWLFVBQVUsRUFDVixJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxhQUFhLEVBQ2xCLEdBQUcsQ0FDSixDQUFDO1FBRUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxnQkFBTSxDQUN2QixJQUFJLENBQUMsSUFBSSxFQUNULElBQUksQ0FBQyxhQUFhLEVBQ2xCLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsR0FBRyxDQUNKLENBQUM7UUFF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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type HttpRequester from '../http-requester';
|
|
2
|
+
import type { SelectOptions } from '../types';
|
|
3
|
+
export default class Relation<TypingsSchema> {
|
|
4
|
+
private readonly name;
|
|
5
|
+
private readonly collectionName;
|
|
6
|
+
private readonly parentId;
|
|
7
|
+
private readonly httpRequester;
|
|
8
|
+
constructor(name: string, collectionName: string, parentId: string | number, httpRequester: HttpRequester);
|
|
9
|
+
list<Data = unknown>(options?: SelectOptions): Promise<Data[]>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=relation.d.ts.map
|
|
@@ -0,0 +1,23 @@
|
|
|
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 query_serializer_1 = __importDefault(require("../query-serializer"));
|
|
7
|
+
class Relation {
|
|
8
|
+
constructor(name, collectionName, parentId, httpRequester) {
|
|
9
|
+
this.name = name;
|
|
10
|
+
this.collectionName = collectionName;
|
|
11
|
+
this.httpRequester = httpRequester;
|
|
12
|
+
this.parentId = parentId;
|
|
13
|
+
}
|
|
14
|
+
list(options) {
|
|
15
|
+
return this.httpRequester.query({
|
|
16
|
+
method: 'get',
|
|
17
|
+
path: `/forest/${this.collectionName}/${this.parentId}/relationships/${this.name}`,
|
|
18
|
+
query: query_serializer_1.default.serialize(options, this.collectionName),
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.default = Relation;
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZG9tYWlucy9yZWxhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLDJFQUFrRDtBQUVsRCxNQUFxQixRQUFRO0lBTTNCLFlBQ0UsSUFBWSxFQUNaLGNBQXNCLEVBQ3RCLFFBQXlCLEVBQ3pCLGFBQTRCO1FBRTVCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLENBQWlCLE9BQXVCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQVM7WUFDdEMsTUFBTSxFQUFFLEtBQUs7WUFDYixJQUFJLEVBQUUsV0FBVyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxRQUFRLGtCQUFrQixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2xGLEtBQUssRUFBRSwwQkFBZSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUMvRCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF6QkQsMkJBeUJDIn0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { RawTreeWithSources } from '@forestadmin/forestadmin-client';
|
|
2
|
+
import { ActionEndpointsByCollection } from './action';
|
|
3
|
+
import Chart from './chart';
|
|
4
|
+
import Collection from './collection';
|
|
5
|
+
import HttpRequester from '../http-requester';
|
|
6
|
+
export type SmartActionPermissionsOverride = Partial<{
|
|
7
|
+
triggerEnabled: boolean;
|
|
8
|
+
triggerConditions: RawTreeWithSources;
|
|
9
|
+
approvalRequired: boolean;
|
|
10
|
+
approvalRequiredConditions: RawTreeWithSources;
|
|
11
|
+
userApprovalEnabled: boolean;
|
|
12
|
+
userApprovalConditions: RawTreeWithSources;
|
|
13
|
+
selfApprovalEnabled: boolean;
|
|
14
|
+
}>;
|
|
15
|
+
export type CollectionPermissionsOverride = Partial<{
|
|
16
|
+
browseEnabled: boolean;
|
|
17
|
+
deleteEnabled: boolean;
|
|
18
|
+
editEnabled: boolean;
|
|
19
|
+
exportEnabled: boolean;
|
|
20
|
+
addEnabled: boolean;
|
|
21
|
+
readEnabled: boolean;
|
|
22
|
+
}>;
|
|
23
|
+
export type PermissionsOverride = Record<string, {
|
|
24
|
+
collection: CollectionPermissionsOverride;
|
|
25
|
+
actions: Record<string, SmartActionPermissionsOverride>;
|
|
26
|
+
}>;
|
|
27
|
+
type CollectionName<T> = keyof T & string;
|
|
28
|
+
export default class RemoteAgentClient<TypingsSchema extends Record<string, unknown> = Record<string, unknown>> extends Chart {
|
|
29
|
+
protected actionEndpoints?: ActionEndpointsByCollection;
|
|
30
|
+
private overridePermissions?;
|
|
31
|
+
constructor(params?: {
|
|
32
|
+
actionEndpoints?: ActionEndpointsByCollection;
|
|
33
|
+
httpRequester: HttpRequester;
|
|
34
|
+
overridePermissions?: (permissions: PermissionsOverride) => Promise<void>;
|
|
35
|
+
});
|
|
36
|
+
overrideCollectionPermission(collectionName: CollectionName<TypingsSchema>, permissions: CollectionPermissionsOverride): Promise<void>;
|
|
37
|
+
overrideActionPermission(collectionName: CollectionName<TypingsSchema>, actionName: string, permissions: SmartActionPermissionsOverride): Promise<void>;
|
|
38
|
+
clearPermissionOverride(): Promise<void>;
|
|
39
|
+
collection(name: CollectionName<TypingsSchema>): Collection<TypingsSchema>;
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=remote-agent-client.d.ts.map
|
|
@@ -0,0 +1,43 @@
|
|
|
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 chart_1 = __importDefault(require("./chart"));
|
|
7
|
+
const collection_1 = __importDefault(require("./collection"));
|
|
8
|
+
class RemoteAgentClient extends chart_1.default {
|
|
9
|
+
constructor(params) {
|
|
10
|
+
super();
|
|
11
|
+
if (!params)
|
|
12
|
+
return;
|
|
13
|
+
this.httpRequester = params.httpRequester;
|
|
14
|
+
this.actionEndpoints = params.actionEndpoints;
|
|
15
|
+
this.overridePermissions = params.overridePermissions;
|
|
16
|
+
}
|
|
17
|
+
async overrideCollectionPermission(collectionName, permissions) {
|
|
18
|
+
await this.overridePermissions?.({
|
|
19
|
+
[collectionName]: {
|
|
20
|
+
collection: permissions,
|
|
21
|
+
actions: {},
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
async overrideActionPermission(collectionName, actionName, permissions) {
|
|
26
|
+
await this.overridePermissions?.({
|
|
27
|
+
[collectionName]: {
|
|
28
|
+
collection: {},
|
|
29
|
+
actions: {
|
|
30
|
+
[actionName]: permissions,
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
async clearPermissionOverride() {
|
|
36
|
+
await this.overridePermissions?.({});
|
|
37
|
+
}
|
|
38
|
+
collection(name) {
|
|
39
|
+
return new collection_1.default(name, this.httpRequester, this.actionEndpoints);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.default = RemoteAgentClient;
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWFnZW50LWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb21haW5zL3JlbW90ZS1hZ2VudC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSxvREFBNEI7QUFDNUIsOERBQXNDO0FBZ0N0QyxNQUFxQixpQkFFbkIsU0FBUSxlQUFLO0lBS2IsWUFBWSxNQUlYO1FBQ0MsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQzFDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUM5QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDO0lBQ3hELENBQUM7SUFFRCxLQUFLLENBQUMsNEJBQTRCLENBQ2hDLGNBQTZDLEVBQzdDLFdBQTBDO1FBRTFDLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDL0IsQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDaEIsVUFBVSxFQUFFLFdBQVc7Z0JBQ3ZCLE9BQU8sRUFBRSxFQUFFO2FBQ1o7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLHdCQUF3QixDQUM1QixjQUE2QyxFQUM3QyxVQUFrQixFQUNsQixXQUEyQztRQUUzQyxNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQy9CLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQ2hCLFVBQVUsRUFBRSxFQUFFO2dCQUNkLE9BQU8sRUFBRTtvQkFDUCxDQUFDLFVBQVUsQ0FBQyxFQUFFLFdBQVc7aUJBQzFCO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QjtRQUMzQixNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBbUM7UUFDNUMsT0FBTyxJQUFJLG9CQUFVLENBQWdCLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN2RixDQUFDO0NBQ0Y7QUFyREQsb0NBcURDIn0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type HttpRequester from '../http-requester';
|
|
2
|
+
import type { ExportOptions, LiveQueryOptions, SelectOptions } from '../types';
|
|
3
|
+
import { WriteStream } from 'node:fs';
|
|
4
|
+
export default class Segment<TypingsSchema> {
|
|
5
|
+
private readonly name?;
|
|
6
|
+
private readonly collectionName;
|
|
7
|
+
private readonly httpRequester;
|
|
8
|
+
private readonly liveQuerySegment?;
|
|
9
|
+
constructor(name: string | undefined, collectionName: string, httpRequester: HttpRequester, liveQuerySegment?: LiveQueryOptions);
|
|
10
|
+
list<Data = unknown>(options?: SelectOptions): Promise<Data[]>;
|
|
11
|
+
exportCsv(stream: WriteStream, options?: ExportOptions): Promise<void>;
|
|
12
|
+
private serializeQuery;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=segment.d.ts.map
|
|
@@ -0,0 +1,49 @@
|
|
|
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 query_serializer_1 = __importDefault(require("../query-serializer"));
|
|
7
|
+
class Segment {
|
|
8
|
+
constructor(name, collectionName, httpRequester, liveQuerySegment) {
|
|
9
|
+
this.name = name;
|
|
10
|
+
this.collectionName = collectionName;
|
|
11
|
+
this.httpRequester = httpRequester;
|
|
12
|
+
this.liveQuerySegment = liveQuerySegment;
|
|
13
|
+
}
|
|
14
|
+
async list(options) {
|
|
15
|
+
return this.httpRequester.query({
|
|
16
|
+
method: 'get',
|
|
17
|
+
path: `/forest/${this.collectionName}`,
|
|
18
|
+
query: this.serializeQuery(options),
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
async exportCsv(stream, options) {
|
|
22
|
+
await this.httpRequester.stream({
|
|
23
|
+
path: `/forest/${this.collectionName}.csv`,
|
|
24
|
+
contentType: 'text/csv',
|
|
25
|
+
query: {
|
|
26
|
+
...this.serializeQuery(options),
|
|
27
|
+
...{ header: JSON.stringify(options?.fields) },
|
|
28
|
+
},
|
|
29
|
+
stream,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
serializeQuery(options) {
|
|
33
|
+
if (this.liveQuerySegment) {
|
|
34
|
+
return query_serializer_1.default.serialize({
|
|
35
|
+
...(options ?? {}),
|
|
36
|
+
...{
|
|
37
|
+
segmentQuery: this.liveQuerySegment.query,
|
|
38
|
+
connectionName: this.liveQuerySegment.connectionName,
|
|
39
|
+
},
|
|
40
|
+
}, this.collectionName);
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
...query_serializer_1.default.serialize(options, this.collectionName),
|
|
44
|
+
segment: this.name,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.default = Segment;
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kb21haW5zL3NlZ21lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFLQSwyRUFBa0Q7QUFFbEQsTUFBcUIsT0FBTztJQU0xQixZQUNFLElBQXdCLEVBQ3hCLGNBQXNCLEVBQ3RCLGFBQTRCLEVBQzVCLGdCQUFtQztRQUVuQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7SUFDM0MsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQWlCLE9BQXVCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQVM7WUFDdEMsTUFBTSxFQUFFLEtBQUs7WUFDYixJQUFJLEVBQUUsV0FBVyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3RDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztTQUNwQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFtQixFQUFFLE9BQXVCO1FBQzFELE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDOUIsSUFBSSxFQUFFLFdBQVcsSUFBSSxDQUFDLGNBQWMsTUFBTTtZQUMxQyxXQUFXLEVBQUUsVUFBVTtZQUN2QixLQUFLLEVBQUU7Z0JBQ0wsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztnQkFDL0IsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRTthQUMvQztZQUNELE1BQU07U0FDUCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sY0FBYyxDQUFDLE9BQXVCO1FBQzVDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsT0FBTywwQkFBZSxDQUFDLFNBQVMsQ0FDOUI7Z0JBQ0UsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQ2xCLEdBQUc7b0JBQ0QsWUFBWSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLO29CQUN6QyxjQUFjLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWM7aUJBQ3JEO2FBQ0YsRUFDRCxJQUFJLENBQUMsY0FBYyxDQUNwQixDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU87WUFDTCxHQUFHLDBCQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzFELE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNuQixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBekRELDBCQXlEQyJ9
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { WriteStream } from 'fs';
|
|
2
|
+
export default class HttpRequester {
|
|
3
|
+
private readonly token;
|
|
4
|
+
private readonly options;
|
|
5
|
+
private readonly deserializer;
|
|
6
|
+
private get baseUrl();
|
|
7
|
+
constructor(token: string, options: {
|
|
8
|
+
prefix?: string;
|
|
9
|
+
url: string;
|
|
10
|
+
});
|
|
11
|
+
query<Data = unknown>({ method, path, body, query, maxTimeAllowed, contentType, }: {
|
|
12
|
+
method: 'get' | 'post' | 'put' | 'delete';
|
|
13
|
+
path: string;
|
|
14
|
+
body?: Record<string, unknown>;
|
|
15
|
+
query?: Record<string, unknown>;
|
|
16
|
+
maxTimeAllowed?: number;
|
|
17
|
+
contentType?: 'application/json' | 'text/csv';
|
|
18
|
+
}): Promise<Data>;
|
|
19
|
+
stream({ path: reqPath, query, contentType, maxTimeAllowed, stream, }: {
|
|
20
|
+
path: string;
|
|
21
|
+
query?: Record<string, unknown>;
|
|
22
|
+
contentType: 'text/csv';
|
|
23
|
+
maxTimeAllowed?: number;
|
|
24
|
+
stream: WriteStream;
|
|
25
|
+
}): Promise<void>;
|
|
26
|
+
static escapeUrlSlug(name: string): string;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=http-requester.d.ts.map
|
|
@@ -0,0 +1,66 @@
|
|
|
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 jsonapi_serializer_1 = require("jsonapi-serializer");
|
|
7
|
+
const superagent_1 = __importDefault(require("superagent"));
|
|
8
|
+
class HttpRequester {
|
|
9
|
+
get baseUrl() {
|
|
10
|
+
const prefix = this.options.prefix ? `/${this.options.prefix}` : '';
|
|
11
|
+
return `${this.options.url}${prefix}`;
|
|
12
|
+
}
|
|
13
|
+
constructor(token, options) {
|
|
14
|
+
this.token = token;
|
|
15
|
+
this.options = options;
|
|
16
|
+
this.deserializer = new jsonapi_serializer_1.Deserializer({ keyForAttribute: 'camelCase' });
|
|
17
|
+
}
|
|
18
|
+
async query({ method, path, body, query, maxTimeAllowed, contentType, }) {
|
|
19
|
+
try {
|
|
20
|
+
const url = new URL(`${this.baseUrl}${HttpRequester.escapeUrlSlug(path)}`).toString();
|
|
21
|
+
const req = superagent_1.default[method](url)
|
|
22
|
+
.timeout(maxTimeAllowed ?? 10000)
|
|
23
|
+
.set('Authorization', `Bearer ${this.token}`)
|
|
24
|
+
.set('Content-Type', contentType ?? 'application/json')
|
|
25
|
+
.query({ timezone: 'Europe/Paris', ...query });
|
|
26
|
+
if (body)
|
|
27
|
+
req.send(body);
|
|
28
|
+
const response = await req;
|
|
29
|
+
try {
|
|
30
|
+
return (await this.deserializer.deserialize(response.body));
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return (response.body ?? response.text);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
if (!error.response)
|
|
38
|
+
throw error;
|
|
39
|
+
throw new Error(JSON.stringify({ error: error.response.error, body }, null, 4));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async stream({ path: reqPath, query, contentType = 'text/csv', maxTimeAllowed, stream, }) {
|
|
43
|
+
const url = new URL(`${this.baseUrl}${HttpRequester.escapeUrlSlug(reqPath)}`).toString();
|
|
44
|
+
return new Promise((resolve, reject) => {
|
|
45
|
+
superagent_1.default
|
|
46
|
+
.get(url)
|
|
47
|
+
.timeout(maxTimeAllowed ?? 10000)
|
|
48
|
+
.set('Authorization', `Bearer ${this.token}`)
|
|
49
|
+
.set('Accept', contentType)
|
|
50
|
+
.query({ timezone: 'Europe/Paris', ...query })
|
|
51
|
+
.pipe(stream)
|
|
52
|
+
.on('finish', () => {
|
|
53
|
+
resolve();
|
|
54
|
+
})
|
|
55
|
+
.on('error', err => {
|
|
56
|
+
console.error('Error occurred while streaming response:', err);
|
|
57
|
+
reject(err);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
static escapeUrlSlug(name) {
|
|
62
|
+
return encodeURI(name).replace(/([+?*])/g, '\\$1');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.default = HttpRequester;
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaHR0cC1yZXF1ZXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSwyREFBa0Q7QUFDbEQsNERBQW9DO0FBRXBDLE1BQXFCLGFBQWE7SUFHaEMsSUFBWSxPQUFPO1FBQ2pCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVwRSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELFlBQ21CLEtBQWEsRUFDYixPQUF5QztRQUR6QyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBa0M7UUFFMUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGlDQUFZLENBQUMsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBaUIsRUFDMUIsTUFBTSxFQUNOLElBQUksRUFDSixJQUFJLEVBQ0osS0FBSyxFQUNMLGNBQWMsRUFDZCxXQUFXLEdBUVo7UUFDQyxJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFdEYsTUFBTSxHQUFHLEdBQUcsb0JBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUM7aUJBQ2hDLE9BQU8sQ0FBQyxjQUFjLElBQUksS0FBTSxDQUFDO2lCQUNqQyxHQUFHLENBQUMsZUFBZSxFQUFFLFVBQVUsSUFBSSxD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
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ActionEndpointsByCollection } from './domains/action';
|
|
2
|
+
import RemoteAgentClient, { PermissionsOverride } from './domains/remote-agent-client';
|
|
3
|
+
export declare function createRemoteAgentClient(params: {
|
|
4
|
+
overridePermissions?: (permissions: PermissionsOverride) => Promise<void>;
|
|
5
|
+
actionEndpoints?: ActionEndpointsByCollection;
|
|
6
|
+
token?: string;
|
|
7
|
+
url: string;
|
|
8
|
+
}): RemoteAgentClient<Record<string, unknown>>;
|
|
9
|
+
export type { SelectOptions } from './types';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
ADDED
|
@@ -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
|
+
exports.createRemoteAgentClient = createRemoteAgentClient;
|
|
7
|
+
const remote_agent_client_1 = __importDefault(require("./domains/remote-agent-client"));
|
|
8
|
+
const http_requester_1 = __importDefault(require("./http-requester"));
|
|
9
|
+
// eslint-disable-next-line import/prefer-default-export
|
|
10
|
+
function createRemoteAgentClient(params) {
|
|
11
|
+
const httpRequester = new http_requester_1.default(params.token, { url: params.url });
|
|
12
|
+
return new remote_agent_client_1.default({
|
|
13
|
+
actionEndpoints: params.actionEndpoints,
|
|
14
|
+
httpRequester,
|
|
15
|
+
overridePermissions: params.overridePermissions,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFLQSwwREFhQztBQWpCRCx3RkFBdUY7QUFDdkYsc0VBQTZDO0FBRTdDLHdEQUF3RDtBQUN4RCxTQUFnQix1QkFBdUIsQ0FBQyxNQUt2QztJQUNDLE1BQU0sYUFBYSxHQUFHLElBQUksd0JBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBRTNFLE9BQU8sSUFBSSw2QkFBaUIsQ0FBQztRQUMzQixlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWU7UUFDdkMsYUFBYTtRQUNiLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxtQkFBbUI7S0FDaEQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SelectOptions } from './types';
|
|
2
|
+
export default class QuerySerializer {
|
|
3
|
+
static serialize(query: SelectOptions, collectionName: string): Record<string, unknown>;
|
|
4
|
+
private static formatSort;
|
|
5
|
+
private static formatFilters;
|
|
6
|
+
private static formatFields;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=query-serializer.d.ts.map
|
|
@@ -0,0 +1,77 @@
|
|
|
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 QuerySerializer {
|
|
8
|
+
static serialize(query, collectionName) {
|
|
9
|
+
if (!query)
|
|
10
|
+
return {};
|
|
11
|
+
return {
|
|
12
|
+
...query,
|
|
13
|
+
...query.filters,
|
|
14
|
+
sort: QuerySerializer.formatSort(query.sort),
|
|
15
|
+
filters: QuerySerializer.formatFilters(query.filters),
|
|
16
|
+
searchExtended: !!query.shouldSearchInRelation,
|
|
17
|
+
'page[size]': query.pagination?.size,
|
|
18
|
+
'page[number]': query.pagination?.number,
|
|
19
|
+
...(query.fields?.length ? QuerySerializer.formatFields(collectionName, query.fields) : {}),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
static formatSort(sort) {
|
|
23
|
+
if (!sort)
|
|
24
|
+
return undefined;
|
|
25
|
+
return sort.ascending ? sort.field : `-${sort.field}`;
|
|
26
|
+
}
|
|
27
|
+
static formatFilters(filters) {
|
|
28
|
+
if (!filters)
|
|
29
|
+
return undefined;
|
|
30
|
+
return JSON.stringify(filters);
|
|
31
|
+
}
|
|
32
|
+
static formatFields(collectionName, fields) {
|
|
33
|
+
if (!fields)
|
|
34
|
+
return {};
|
|
35
|
+
const projectionName = `fields[${http_requester_1.default.escapeUrlSlug(collectionName)}]`;
|
|
36
|
+
const projection = {
|
|
37
|
+
[projectionName]: [],
|
|
38
|
+
};
|
|
39
|
+
fields.forEach(field => {
|
|
40
|
+
// Skip empty or whitespace-only field names
|
|
41
|
+
const trimmedField = field.trim();
|
|
42
|
+
if (!trimmedField)
|
|
43
|
+
return;
|
|
44
|
+
if (trimmedField.includes('@@@')) {
|
|
45
|
+
const separatorIndex = trimmedField.indexOf('@@@');
|
|
46
|
+
const relatedCollection = trimmedField.substring(0, separatorIndex);
|
|
47
|
+
const relatedField = trimmedField.substring(separatorIndex + 3);
|
|
48
|
+
const trimmedRelation = relatedCollection.trim();
|
|
49
|
+
const trimmedRelatedField = relatedField?.trim();
|
|
50
|
+
// Validate: both relation name and field must be non-empty
|
|
51
|
+
if (!trimmedRelation || !trimmedRelatedField) {
|
|
52
|
+
// Skip malformed separators like "@@@field", "relation@@@", or "@@@"
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
// Avoid duplicate relation names in the projection array
|
|
56
|
+
if (!projection[projectionName].includes(trimmedRelation)) {
|
|
57
|
+
projection[projectionName].push(trimmedRelation);
|
|
58
|
+
}
|
|
59
|
+
// Add related field to its collection projection
|
|
60
|
+
const relatedProjectionName = `fields[${http_requester_1.default.escapeUrlSlug(trimmedRelation)}]`;
|
|
61
|
+
if (!projection[relatedProjectionName]) {
|
|
62
|
+
projection[relatedProjectionName] = [];
|
|
63
|
+
}
|
|
64
|
+
if (!projection[relatedProjectionName].includes(trimmedRelatedField)) {
|
|
65
|
+
projection[relatedProjectionName].push(trimmedRelatedField);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else if (!projection[projectionName].includes(trimmedField)) {
|
|
69
|
+
// Avoid duplicate field names
|
|
70
|
+
projection[projectionName].push(trimmedField);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
return projection;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.default = QuerySerializer;
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc2VyaWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9xdWVyeS1zZXJpYWxpemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0Esc0VBQTZDO0FBRTdDLE1BQXFCLGVBQWU7SUFDbEMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFvQixFQUFFLGNBQXNCO1FBQzNELElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFdEIsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLEdBQUcsS0FBSyxDQUFDLE9BQU87WUFDaEIsSUFBSSxFQUFFLGVBQWUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUM1QyxPQUFPLEVBQUUsZUFBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ3JELGNBQWMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLHNCQUFzQjtZQUM5QyxZQUFZLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJO1lBQ3BDLGNBQWMsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLE1BQU07WUFDeEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUM1RixDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBcUI7UUFDN0MsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUU1QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFTyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQXFDO1FBQ2hF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
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { PlainFilter, PlainSortClause } from '@forestadmin/datasource-toolkit';
|
|
2
|
+
export type BaseOptions = {
|
|
3
|
+
filters?: PlainFilter['conditionTree'];
|
|
4
|
+
sort?: PlainSortClause;
|
|
5
|
+
search?: string;
|
|
6
|
+
fields?: string[];
|
|
7
|
+
shouldSearchInRelation?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export type ExportOptions = BaseOptions;
|
|
10
|
+
export type LiveQueryOptions = {
|
|
11
|
+
connectionName: string;
|
|
12
|
+
query: string;
|
|
13
|
+
};
|
|
14
|
+
export type SegmentOptions = BaseOptions & {
|
|
15
|
+
liveQuerySegment?: {
|
|
16
|
+
connectionName: string;
|
|
17
|
+
query: string;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export type SelectOptions = BaseOptions & {
|
|
21
|
+
pagination?: {
|
|
22
|
+
size?: number;
|
|
23
|
+
number?: number;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.js
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/agent-client",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -12,21 +12,11 @@
|
|
|
12
12
|
"directory": "packages/agent-client"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@forestadmin/datasource-customizer": "1.67.1",
|
|
16
15
|
"@forestadmin/datasource-toolkit": "1.50.0",
|
|
17
|
-
"@forestadmin/forestadmin-client": "1.
|
|
16
|
+
"@forestadmin/forestadmin-client": "1.37.0",
|
|
18
17
|
"jsonapi-serializer": "^3.6.9",
|
|
19
|
-
"jsonwebtoken": "^9.0.0",
|
|
20
18
|
"superagent": "^10.2.3"
|
|
21
19
|
},
|
|
22
|
-
"peerDependencies": {
|
|
23
|
-
"@forestadmin/agent": "^1.0.0"
|
|
24
|
-
},
|
|
25
|
-
"peerDependenciesMeta": {
|
|
26
|
-
"@forestadmin/agent": {
|
|
27
|
-
"optional": true
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
20
|
"files": [
|
|
31
21
|
"dist/**/*.js",
|
|
32
22
|
"dist/**/*.d.ts"
|
|
@@ -39,8 +29,6 @@
|
|
|
39
29
|
"test": "jest"
|
|
40
30
|
},
|
|
41
31
|
"devDependencies": {
|
|
42
|
-
"@forestadmin/agent": "1.66.2",
|
|
43
|
-
"@types/jsonwebtoken": "^9.0.1",
|
|
44
32
|
"@types/superagent": "^8.1.9"
|
|
45
33
|
}
|
|
46
34
|
}
|