@forestadmin/agent 1.0.0-beta.6 → 1.0.0-beta.61
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/agent.d.ts +76 -0
- package/dist/agent.js +133 -0
- package/dist/framework-mounter.d.ts +43 -0
- package/dist/framework-mounter.js +157 -0
- package/dist/index.d.ts +7 -4
- package/dist/index.js +10 -17
- package/dist/routes/access/api-chart.d.ts +16 -0
- package/dist/routes/access/api-chart.js +47 -0
- package/dist/{agent/routes → routes}/access/chart.d.ts +1 -0
- package/dist/routes/access/chart.js +162 -0
- package/dist/{agent/routes → routes}/access/count-related.d.ts +0 -0
- package/dist/routes/access/count-related.js +31 -0
- package/dist/{agent/routes → routes}/access/count.d.ts +0 -0
- package/dist/routes/access/count.js +31 -0
- package/dist/{agent/routes → routes}/access/csv-related.d.ts +0 -0
- package/dist/routes/access/csv-related.js +33 -0
- package/dist/{agent/routes → routes}/access/csv.d.ts +0 -0
- package/dist/routes/access/csv.js +31 -0
- package/dist/{agent/routes → routes}/access/get.d.ts +0 -0
- package/dist/routes/access/get.js +29 -0
- package/dist/{agent/routes → routes}/access/list-related.d.ts +0 -0
- package/dist/routes/access/list-related.js +25 -0
- package/dist/{agent/routes → routes}/access/list.d.ts +0 -0
- package/dist/routes/access/list.js +22 -0
- package/dist/{agent/routes → routes}/base-route.d.ts +0 -1
- package/dist/routes/base-route.js +13 -0
- package/dist/{agent/routes → routes}/collection-route.d.ts +0 -0
- package/dist/{agent/routes → routes}/collection-route.js +1 -1
- package/dist/{agent/routes → routes}/index.d.ts +0 -0
- package/dist/routes/index.js +108 -0
- package/dist/{agent/routes → routes}/modification/action.d.ts +0 -1
- package/dist/routes/modification/action.js +104 -0
- package/dist/routes/modification/associate-related.d.ts +12 -0
- package/dist/routes/modification/associate-related.js +51 -0
- package/dist/{agent/routes → routes}/modification/create.d.ts +0 -0
- package/dist/routes/modification/create.js +83 -0
- package/dist/{agent/routes → routes}/modification/delete.d.ts +0 -0
- package/dist/routes/modification/delete.js +41 -0
- package/dist/{agent/routes → routes}/modification/dissociate-delete-related.d.ts +0 -0
- package/dist/routes/modification/dissociate-delete-related.js +89 -0
- package/dist/routes/modification/update-field.d.ts +9 -0
- package/dist/routes/modification/update-field.js +39 -0
- package/dist/{agent/routes → routes}/modification/update-relation.d.ts +0 -0
- package/dist/routes/modification/update-relation.js +59 -0
- package/dist/{agent/routes → routes}/modification/update.d.ts +0 -0
- package/dist/routes/modification/update.js +31 -0
- package/dist/{agent/routes → routes}/relation-route.d.ts +0 -0
- package/dist/{agent/routes → routes}/relation-route.js +1 -1
- package/dist/{agent/routes → routes}/security/authentication.d.ts +1 -3
- package/dist/routes/security/authentication.js +74 -0
- package/dist/{agent/routes → routes}/security/ip-whitelist.d.ts +0 -0
- package/dist/{agent/routes → routes}/security/ip-whitelist.js +1 -1
- package/dist/{agent/routes → routes}/security/scope-invalidation.d.ts +0 -0
- package/dist/{agent/routes → routes}/security/scope-invalidation.js +1 -1
- package/dist/{agent/routes → routes}/system/error-handling.d.ts +2 -0
- package/dist/routes/system/error-handling.js +75 -0
- package/dist/{agent/routes → routes}/system/healthcheck.d.ts +0 -0
- package/dist/{agent/routes → routes}/system/healthcheck.js +1 -1
- package/dist/{agent/routes → routes}/system/logger.d.ts +0 -0
- package/dist/routes/system/logger.js +35 -0
- package/dist/{agent/services → services}/index.d.ts +0 -0
- package/dist/{agent/services → services}/index.js +2 -2
- package/dist/{agent/services → services}/permissions.d.ts +0 -0
- package/dist/services/permissions.js +85 -0
- package/dist/{agent/services → services}/serializer.d.ts +0 -5
- package/dist/services/serializer.js +120 -0
- package/dist/types.d.ts +29 -10
- package/dist/types.js +21 -9
- package/dist/{agent/utils → utils}/body-parser.d.ts +0 -0
- package/dist/{agent/utils → utils}/body-parser.js +1 -1
- package/dist/utils/condition-tree-parser.d.ts +11 -0
- package/dist/utils/condition-tree-parser.js +53 -0
- package/dist/{agent/utils → utils}/context-filter-factory.d.ts +0 -0
- package/dist/{agent/utils → utils}/context-filter-factory.js +1 -2
- package/dist/{agent/utils → utils}/csv-generator.d.ts +2 -2
- package/dist/utils/csv-generator.js +39 -0
- package/dist/{agent/utils → utils}/csv-route-context.d.ts +0 -0
- package/dist/utils/csv-route-context.js +14 -0
- package/dist/{agent/utils → utils}/forest-http-api.d.ts +5 -3
- package/dist/utils/forest-http-api.js +180 -0
- package/dist/{agent/utils → utils}/forest-schema/action-values.d.ts +2 -2
- package/dist/utils/forest-schema/action-values.js +144 -0
- package/dist/{agent/utils → utils}/forest-schema/emitter.d.ts +2 -2
- package/dist/utils/forest-schema/emitter.js +70 -0
- package/dist/{agent/utils → utils}/forest-schema/filterable.d.ts +0 -0
- package/dist/{agent/utils → utils}/forest-schema/filterable.js +1 -1
- package/dist/{agent/utils → utils}/forest-schema/generator-actions.d.ts +1 -1
- package/dist/utils/forest-schema/generator-actions.js +99 -0
- package/dist/{agent/utils → utils}/forest-schema/generator-collection.d.ts +1 -1
- package/dist/utils/forest-schema/generator-collection.js +36 -0
- package/dist/{agent/utils → utils}/forest-schema/generator-fields.d.ts +1 -0
- package/dist/utils/forest-schema/generator-fields.js +160 -0
- package/dist/{agent/utils → utils}/forest-schema/generator-segments.d.ts +0 -0
- package/dist/{agent/utils → utils}/forest-schema/generator-segments.js +1 -1
- package/dist/{agent/utils → utils}/forest-schema/types.d.ts +10 -4
- package/dist/{agent/utils → utils}/forest-schema/types.js +1 -1
- package/dist/{agent/utils → utils}/forest-schema/validation.d.ts +1 -1
- package/dist/utils/forest-schema/validation.js +28 -0
- package/dist/{agent/utils → utils}/id.d.ts +0 -0
- package/dist/utils/id.js +43 -0
- package/dist/{agent/utils/http-driver-options.d.ts → utils/options-validator.d.ts} +4 -5
- package/dist/utils/options-validator.js +92 -0
- package/dist/{agent/utils → utils}/query-string.d.ts +2 -2
- package/dist/utils/query-string.js +134 -0
- package/package.json +16 -5
- package/CHANGELOG.md +0 -435
- package/dist/agent/forestadmin-http-driver.d.ts +0 -34
- package/dist/agent/forestadmin-http-driver.js +0 -73
- package/dist/agent/routes/access/chart.js +0 -147
- package/dist/agent/routes/access/count-related.js +0 -24
- package/dist/agent/routes/access/count.js +0 -24
- package/dist/agent/routes/access/csv-related.js +0 -33
- package/dist/agent/routes/access/csv.js +0 -30
- package/dist/agent/routes/access/get.js +0 -28
- package/dist/agent/routes/access/list-related.js +0 -26
- package/dist/agent/routes/access/list.js +0 -23
- package/dist/agent/routes/base-route.js +0 -16
- package/dist/agent/routes/index.js +0 -90
- package/dist/agent/routes/modification/action.js +0 -103
- package/dist/agent/routes/modification/associate-related.d.ts +0 -12
- package/dist/agent/routes/modification/associate-related.js +0 -49
- package/dist/agent/routes/modification/create.js +0 -81
- package/dist/agent/routes/modification/delete.js +0 -40
- package/dist/agent/routes/modification/dissociate-delete-related.js +0 -88
- package/dist/agent/routes/modification/update-relation.js +0 -53
- package/dist/agent/routes/modification/update.js +0 -29
- package/dist/agent/routes/security/authentication.js +0 -86
- package/dist/agent/routes/system/error-handling.js +0 -56
- package/dist/agent/routes/system/logger.js +0 -36
- package/dist/agent/services/permissions.js +0 -79
- package/dist/agent/services/serializer.js +0 -120
- package/dist/agent/types.d.ts +0 -23
- package/dist/agent/types.js +0 -22
- package/dist/agent/utils/csv-generator.js +0 -39
- package/dist/agent/utils/csv-route-context.js +0 -14
- package/dist/agent/utils/forest-http-api.js +0 -173
- package/dist/agent/utils/forest-schema/action-values.js +0 -144
- package/dist/agent/utils/forest-schema/emitter.js +0 -70
- package/dist/agent/utils/forest-schema/generator-actions.js +0 -99
- package/dist/agent/utils/forest-schema/generator-collection.js +0 -31
- package/dist/agent/utils/forest-schema/generator-fields.js +0 -131
- package/dist/agent/utils/forest-schema/validation.js +0 -26
- package/dist/agent/utils/http-driver-options.js +0 -86
- package/dist/agent/utils/id.js +0 -43
- package/dist/agent/utils/query-string.js +0 -130
- package/dist/builder/agent.d.ts +0 -81
- package/dist/builder/agent.js +0 -113
- package/dist/builder/collection.d.ts +0 -148
- package/dist/builder/collection.js +0 -226
- package/dist/builder/types.d.ts +0 -5
- package/dist/builder/types.js +0 -3
|
@@ -1,144 +0,0 @@
|
|
|
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 id_1 = __importDefault(require("../id"));
|
|
7
|
-
const generator_actions_1 = __importDefault(require("./generator-actions"));
|
|
8
|
-
/**
|
|
9
|
-
* This utility class converts form values from our internal format to the format that is
|
|
10
|
-
* used in the frontend for smart action forms.
|
|
11
|
-
*/
|
|
12
|
-
class ForestValueConverter {
|
|
13
|
-
/**
|
|
14
|
-
* Proper form data parser which converts data from a smart action form result to the format
|
|
15
|
-
* that is internally used in datasources.
|
|
16
|
-
*/
|
|
17
|
-
static makeFormData(dataSource, rawData, fields) {
|
|
18
|
-
const data = {};
|
|
19
|
-
for (const [key, value] of Object.entries(rawData)) {
|
|
20
|
-
const field = fields.find(f => f.label === key);
|
|
21
|
-
// Skip fields from the default form
|
|
22
|
-
if (!generator_actions_1.default.defaultFields.map(f => f.field).includes(key)) {
|
|
23
|
-
if (field?.type === 'Collection' && value) {
|
|
24
|
-
const collection = dataSource.getCollection(field.collectionName);
|
|
25
|
-
data[key] = id_1.default.unpackId(collection.schema, value);
|
|
26
|
-
}
|
|
27
|
-
else if (field?.type === 'File') {
|
|
28
|
-
data[key] = this.parseDataUri(value);
|
|
29
|
-
}
|
|
30
|
-
else if (field?.type === 'FileList') {
|
|
31
|
-
data[key] = value?.map(v => this.parseDataUri(v));
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
data[key] = value;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return data;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Form data parser which extracts the data from what is provided by the frontend when
|
|
42
|
-
* change hooks are called.
|
|
43
|
-
*/
|
|
44
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
45
|
-
static makeFormDataFromFields(dataSource, fields) {
|
|
46
|
-
const data = {};
|
|
47
|
-
for (const field of fields) {
|
|
48
|
-
// Skip fields from the default form
|
|
49
|
-
if (!generator_actions_1.default.defaultFields.map(f => f.field).includes(field.field)) {
|
|
50
|
-
if (field.reference && field.value) {
|
|
51
|
-
const [collectionName] = field.reference.split('.');
|
|
52
|
-
const collection = dataSource.getCollection(collectionName);
|
|
53
|
-
data[field.field] = id_1.default.unpackId(collection.schema, field.value);
|
|
54
|
-
}
|
|
55
|
-
else if (field.type === 'File') {
|
|
56
|
-
data[field.field] = this.parseDataUri(field.value);
|
|
57
|
-
}
|
|
58
|
-
else if (Array.isArray(field.type) && field.type[0] === 'File') {
|
|
59
|
-
data[field.field] = field.value?.map(v => this.parseDataUri(v));
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
data[field.field] = field.value;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return data;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* This last form data parser tries to guess the types from the data itself.
|
|
70
|
-
*
|
|
71
|
-
* - Fields with type "Collection" which target collections where the pk is not a string or
|
|
72
|
-
* derivative (mongoid, uuid, ...) won't be parser correctly, as we don't have enough information
|
|
73
|
-
* to properly guess the type
|
|
74
|
-
* - Fields of type "String" but where the final user entered a data-uri manually in the frontend
|
|
75
|
-
* will be wrongfully parsed.
|
|
76
|
-
*/
|
|
77
|
-
static makeFormDataUnsafe(rawData) {
|
|
78
|
-
const data = {};
|
|
79
|
-
for (const [key, value] of Object.entries(rawData)) {
|
|
80
|
-
// Skip fields from the default form
|
|
81
|
-
if (!generator_actions_1.default.defaultFields.map(f => f.field).includes(key)) {
|
|
82
|
-
if (Array.isArray(value) && value.every(v => this.isDataUri(v))) {
|
|
83
|
-
data[key] = value.map(uri => this.parseDataUri(uri));
|
|
84
|
-
}
|
|
85
|
-
else if (this.isDataUri(value)) {
|
|
86
|
-
data[key] = this.parseDataUri(value);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
data[key] = value;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return data;
|
|
94
|
-
}
|
|
95
|
-
static valueToForest(field, value) {
|
|
96
|
-
if (field.type === 'Enum') {
|
|
97
|
-
return field.enumValues.includes(value) ? value : null;
|
|
98
|
-
}
|
|
99
|
-
if (field.type === 'EnumList') {
|
|
100
|
-
return value?.filter(v => field.enumValues.includes(v));
|
|
101
|
-
}
|
|
102
|
-
if (field.type === 'Collection') {
|
|
103
|
-
return value?.join('|');
|
|
104
|
-
}
|
|
105
|
-
if (field.type === 'File') {
|
|
106
|
-
return this.makeDataUri(value);
|
|
107
|
-
}
|
|
108
|
-
if (field.type === 'FileList') {
|
|
109
|
-
return value?.map(f => this.makeDataUri(f));
|
|
110
|
-
}
|
|
111
|
-
return value;
|
|
112
|
-
}
|
|
113
|
-
static parseDataUri(dataUri) {
|
|
114
|
-
if (!dataUri)
|
|
115
|
-
return null;
|
|
116
|
-
// Poor man's data uri parser (spec compliants one don't get the filename).
|
|
117
|
-
// Hopefully this does not break.
|
|
118
|
-
const [header, data] = dataUri.substring(5).split(',');
|
|
119
|
-
const [mimeType, ...mediaTypes] = header.split(';');
|
|
120
|
-
const result = { mimeType, buffer: Buffer.from(data, 'base64') };
|
|
121
|
-
for (const mediaType of mediaTypes) {
|
|
122
|
-
const index = mediaType.indexOf('=');
|
|
123
|
-
if (index !== -1)
|
|
124
|
-
result[mediaType.substring(0, index)] = decodeURIComponent(mediaType.substring(index + 1));
|
|
125
|
-
}
|
|
126
|
-
return result;
|
|
127
|
-
}
|
|
128
|
-
static makeDataUri(file) {
|
|
129
|
-
if (!file)
|
|
130
|
-
return null;
|
|
131
|
-
const { mimeType, buffer, ...rest } = file;
|
|
132
|
-
const mediaTypes = Object.entries(rest)
|
|
133
|
-
.map(([key, value]) => `${key}=${encodeURIComponent(value)}`)
|
|
134
|
-
.join(';');
|
|
135
|
-
return mediaTypes.length
|
|
136
|
-
? `data:${file.mimeType};${mediaTypes};base64,${buffer.toString('base64')}`
|
|
137
|
-
: `data:${file.mimeType};base64,${buffer.toString('base64')}`;
|
|
138
|
-
}
|
|
139
|
-
static isDataUri(value) {
|
|
140
|
-
return typeof value === 'string' && value.startsWith('data:');
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
exports.default = ForestValueConverter;
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXZhbHVlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZ2VudC91dGlscy9mb3Jlc3Qtc2NoZW1hL2FjdGlvbi12YWx1ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSwrQ0FBNEI7QUFDNUIsNEVBQXlEO0FBSXpEOzs7R0FHRztBQUNILE1BQXFCLG9CQUFvQjtJQUN2Qzs7O09BR0c7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQXNCLEVBQUUsT0FBaUIsRUFBRSxNQUFxQjtRQUNsRixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFFaEIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDLENBQUM7WUFFaEQsb0NBQW9DO1lBQ3BDLElBQUksQ0FBQywyQkFBc0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDekUsSUFBSSxLQUFLLEVBQUUsSUFBSSxLQUFLLFlBQVksSUFBSSxLQUFLLEVBQUU7b0JBQ3pDLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUVsRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsWUFBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQWUsQ0FBQyxDQUFDO2lCQUNsRTtxQkFBTSxJQUFJLEtBQUssRUFBRSxJQUFJLEtBQUssTUFBTSxFQUFFO29CQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdB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
|
|
@@ -1,70 +0,0 @@
|
|
|
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 promises_1 = require("fs/promises");
|
|
7
|
-
const json_api_serializer_1 = __importDefault(require("json-api-serializer"));
|
|
8
|
-
const crypto_1 = __importDefault(require("crypto"));
|
|
9
|
-
const json_stringify_pretty_compact_1 = __importDefault(require("json-stringify-pretty-compact"));
|
|
10
|
-
const generator_collection_1 = __importDefault(require("./generator-collection"));
|
|
11
|
-
// Load version from package.json at startup
|
|
12
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
13
|
-
const { version } = require('../../../../package.json');
|
|
14
|
-
/**
|
|
15
|
-
* Generate and dispatch dataSource schema on agent start.
|
|
16
|
-
*/
|
|
17
|
-
class SchemaEmitter {
|
|
18
|
-
static async getSerializedSchema(options, dataSource) {
|
|
19
|
-
const schema = options.isProduction
|
|
20
|
-
? await SchemaEmitter.loadFromDisk(options.schemaPath)
|
|
21
|
-
: await SchemaEmitter.generate(options.prefix, dataSource);
|
|
22
|
-
if (!options.isProduction) {
|
|
23
|
-
const pretty = (0, json_stringify_pretty_compact_1.default)(schema, { maxLength: 80 });
|
|
24
|
-
await (0, promises_1.writeFile)(options.schemaPath, pretty, { encoding: 'utf-8' });
|
|
25
|
-
}
|
|
26
|
-
const hash = crypto_1.default.createHash('sha1').update(JSON.stringify(schema)).digest('hex');
|
|
27
|
-
return SchemaEmitter.serialize(schema, hash);
|
|
28
|
-
}
|
|
29
|
-
static async loadFromDisk(schemaPath) {
|
|
30
|
-
try {
|
|
31
|
-
const fileContent = await (0, promises_1.readFile)(schemaPath, { encoding: 'utf-8' });
|
|
32
|
-
return JSON.parse(fileContent);
|
|
33
|
-
}
|
|
34
|
-
catch (e) {
|
|
35
|
-
throw new Error(`Cannot load ${schemaPath}. Providing a schema is mandatory in production mode.`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
static async generate(prefix, dataSource) {
|
|
39
|
-
const allCollectionSchemas = [];
|
|
40
|
-
const dataSourceCollectionSchemas = dataSource.collections.map(collection => generator_collection_1.default.buildSchema(prefix, collection));
|
|
41
|
-
allCollectionSchemas.push(...dataSourceCollectionSchemas);
|
|
42
|
-
return Promise.all(allCollectionSchemas);
|
|
43
|
-
}
|
|
44
|
-
static serialize(schema, hash) {
|
|
45
|
-
// Build serializer
|
|
46
|
-
const serializer = new json_api_serializer_1.default();
|
|
47
|
-
serializer.register('collections', {
|
|
48
|
-
// Pass the metadata provided to the serialization fn
|
|
49
|
-
topLevelMeta: (extraData) => extraData,
|
|
50
|
-
relationships: {
|
|
51
|
-
segments: { type: 'segments' },
|
|
52
|
-
actions: { type: 'actions' },
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
|
-
serializer.register('segments', {});
|
|
56
|
-
serializer.register('actions', {});
|
|
57
|
-
// Serialize
|
|
58
|
-
return serializer.serialize('collections', schema.map(c => ({ id: c.name, ...c })), { ...SchemaEmitter.meta, schemaFileHash: hash });
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
exports.default = SchemaEmitter;
|
|
62
|
-
SchemaEmitter.meta = {
|
|
63
|
-
liana: 'forest-nodejs-agent',
|
|
64
|
-
liana_version: version,
|
|
65
|
-
stack: {
|
|
66
|
-
engine: 'nodejs',
|
|
67
|
-
engine_version: process.versions && process.versions.node,
|
|
68
|
-
},
|
|
69
|
-
};
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZ2VudC91dGlscy9mb3Jlc3Qtc2NoZW1hL2VtaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSwwQ0FBa0Q7QUFDbEQsOEVBQW9EO0FBQ3BELG9EQUE0QjtBQUM1QixrR0FBc0Q7QUFJdEQsa0ZBQStEO0FBTS9ELDRDQUE0QztBQUM1Qyw4REFBOEQ7QUFDOUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0FBRXhEOztHQUVHO0FBQ0gsTUFBcUIsYUFBYTtJQVVoQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUM5QixPQUFnQixFQUNoQixVQUFzQjtRQUV0QixNQUFNLE1BQU0sR0FBYyxPQUFPLENBQUMsWUFBWTtZQUM1QyxDQUFDLENBQUMsTUFBTSxhQUFhLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDdEQsQ0FBQyxDQUFDLE1BQU0sYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ3pCLE1BQU0sTUFBTSxHQUFHLElBQUEsdUNBQVMsRUFBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwRCxNQUFNLElBQUEsb0JBQVMsRUFBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ3BFO1FBRUQsTUFBTSxJQUFJLEdBQUcsZ0JBQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFF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
|
|
@@ -1,99 +0,0 @@
|
|
|
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 datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const action_values_1 = __importDefault(require("./action-values"));
|
|
9
|
-
class SchemaGeneratorActions {
|
|
10
|
-
static async buildSchema(prefix, collection, name) {
|
|
11
|
-
const schema = collection.schema.actions[name];
|
|
12
|
-
const actionIndex = Object.keys(collection.schema.actions).indexOf(name);
|
|
13
|
-
// Generate url-safe friendly name (which won't be unique, but that's OK).
|
|
14
|
-
const slug = name.toLocaleLowerCase().replace(/[^a-z0-9-]+/g, '-');
|
|
15
|
-
const fields = await SchemaGeneratorActions.buildFields(collection, name, schema);
|
|
16
|
-
return {
|
|
17
|
-
id: `${collection.name}-${actionIndex}-${slug}`,
|
|
18
|
-
name,
|
|
19
|
-
type: schema.scope.toLowerCase(),
|
|
20
|
-
baseUrl: null,
|
|
21
|
-
endpoint: path_1.default.join('/', prefix, '_actions', collection.name, String(actionIndex), slug),
|
|
22
|
-
httpMethod: 'POST',
|
|
23
|
-
redirect: null,
|
|
24
|
-
download: Boolean(schema.generateFile),
|
|
25
|
-
fields,
|
|
26
|
-
hooks: {
|
|
27
|
-
load: !schema.staticForm,
|
|
28
|
-
// Always registering the change hook has no consequences, even if we don't use it.
|
|
29
|
-
change: ['changeHook'],
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
/** Build schema for given field */
|
|
34
|
-
static buildFieldSchema(dataSource, field) {
|
|
35
|
-
const { label, description, isRequired, isReadOnly, watchChanges, type } = field;
|
|
36
|
-
const output = { description, isRequired, isReadOnly };
|
|
37
|
-
output.field = label;
|
|
38
|
-
output.value = action_values_1.default.valueToForest(field, field.value);
|
|
39
|
-
if (watchChanges)
|
|
40
|
-
output.hook = 'changeHook';
|
|
41
|
-
if (type === 'Collection') {
|
|
42
|
-
const collection = dataSource.getCollection(field.collectionName);
|
|
43
|
-
const [pk] = datasource_toolkit_1.SchemaUtils.getPrimaryKeys(collection.schema);
|
|
44
|
-
const pkSchema = collection.schema.fields[pk];
|
|
45
|
-
output.type = pkSchema.columnType;
|
|
46
|
-
output.reference = `${collection.name}.${pk}`;
|
|
47
|
-
}
|
|
48
|
-
else if (type.endsWith('List')) {
|
|
49
|
-
output.type = [type.substring(0, type.length - 4)];
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
output.type = type;
|
|
53
|
-
}
|
|
54
|
-
if (type === 'Enum' || type === 'EnumList') {
|
|
55
|
-
output.enums = field.enumValues;
|
|
56
|
-
}
|
|
57
|
-
return output;
|
|
58
|
-
}
|
|
59
|
-
static async buildFields(collection, name, schema) {
|
|
60
|
-
// We want the schema to be generated on usage => send dummy schema
|
|
61
|
-
if (!schema.staticForm) {
|
|
62
|
-
return SchemaGeneratorActions.defaultFields;
|
|
63
|
-
}
|
|
64
|
-
// Ask the action to generate a form
|
|
65
|
-
const fields = await collection.getForm(name);
|
|
66
|
-
if (fields) {
|
|
67
|
-
// When sending to server, we need to rename 'value' into 'defaultValue'
|
|
68
|
-
// otherwise, it does not gets applied 🤷♂️
|
|
69
|
-
return fields.map(field => {
|
|
70
|
-
const newField = SchemaGeneratorActions.buildFieldSchema(collection.dataSource, field);
|
|
71
|
-
newField.defaultValue = newField.value;
|
|
72
|
-
delete newField.value;
|
|
73
|
-
return newField;
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
return [];
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
exports.default = SchemaGeneratorActions;
|
|
80
|
-
/**
|
|
81
|
-
* 'fields' sent to forestadmin-server when we want to generate the form on demand.
|
|
82
|
-
* This works around a bug in frontend which won't call the server if no fields are defined.
|
|
83
|
-
*/
|
|
84
|
-
SchemaGeneratorActions.defaultFields = [
|
|
85
|
-
{
|
|
86
|
-
field: 'Loading...',
|
|
87
|
-
type: 'String',
|
|
88
|
-
isReadOnly: true,
|
|
89
|
-
defaultValue: 'Form is loading',
|
|
90
|
-
value: undefined,
|
|
91
|
-
description: '',
|
|
92
|
-
enums: null,
|
|
93
|
-
hook: null,
|
|
94
|
-
isRequired: false,
|
|
95
|
-
reference: null,
|
|
96
|
-
widget: null,
|
|
97
|
-
},
|
|
98
|
-
];
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLWFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWdlbnQvdXRpbHMvZm9yZXN0LXNjaGVtYS9nZW5lcmF0b3ItYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdFQVF5QztBQUN6QyxnREFBd0I7QUFHeEIsb0VBQW1EO0FBRW5ELE1BQXFCLHNCQUFzQjtJQXFCekMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQ3RCLE1BQWMsRUFDZCxVQUFzQixFQUN0QixJQUFZO1FBRVosTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6RSwwRUFBMEU7UUFDMUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNuRSxNQUFNLE1BQU0sR0FBRyxNQUFNLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRWxGLE9BQU87WUFDTCxFQUFFLEVBQUUsR0FBRyxVQUFVLENBQUMsSUFBSSxJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUU7WUFDL0MsSUFBSTtZQUNKLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBa0M7WUFDaEUsT0FBTyxFQUFFLElBQUk7WUFDYixRQUFRLEVBQUUsY0FBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLENBQUM7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
|
|
@@ -1,31 +0,0 @@
|
|
|
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 datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
|
|
7
|
-
const generator_actions_1 = __importDefault(require("./generator-actions"));
|
|
8
|
-
const generator_fields_1 = __importDefault(require("./generator-fields"));
|
|
9
|
-
const generator_segments_1 = __importDefault(require("./generator-segments"));
|
|
10
|
-
class SchemaGeneratorCollection {
|
|
11
|
-
/** Build forest-server schema for a collection */
|
|
12
|
-
static async buildSchema(prefix, collection) {
|
|
13
|
-
return {
|
|
14
|
-
actions: await Promise.all(Object.keys(collection.schema.actions).map(name => generator_actions_1.default.buildSchema(prefix, collection, name))),
|
|
15
|
-
fields: Object.keys(collection.schema.fields)
|
|
16
|
-
.filter(name => !datasource_toolkit_1.SchemaUtils.isForeignKey(collection.schema, name))
|
|
17
|
-
.map(name => generator_fields_1.default.buildSchema(collection, name)),
|
|
18
|
-
icon: null,
|
|
19
|
-
integration: null,
|
|
20
|
-
isReadOnly: Object.values(collection.schema.fields).every(field => field.type === 'Column' && field.isReadOnly),
|
|
21
|
-
isSearchable: collection.schema.searchable,
|
|
22
|
-
isVirtual: false,
|
|
23
|
-
name: collection.name,
|
|
24
|
-
onlyForRelationships: false,
|
|
25
|
-
paginationType: 'page',
|
|
26
|
-
segments: collection.schema.segments.map(name => generator_segments_1.default.buildSchema(collection, name)),
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.default = SchemaGeneratorCollection;
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLWNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWdlbnQvdXRpbHMvZm9yZXN0LXNjaGVtYS9nZW5lcmF0b3ItY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdFQUEwRTtBQUUxRSw0RUFBeUQ7QUFDekQsMEVBQXVEO0FBQ3ZELDhFQUEyRDtBQUUzRCxNQUFxQix5QkFBeUI7SUFDNUMsa0RBQWtEO0lBQ2xELE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUN0QixNQUFjLEVBQ2QsVUFBc0I7UUFFdEIsT0FBTztZQUNMLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDaEQsMkJBQXNCLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQzdELENBQ0Y7WUFDRCxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztpQkFDMUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxnQ0FBVyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUNsRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQywwQkFBcUIsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ25FLElBQUksRUFBRSxJQUFJO1lBQ1YsV0FBVyxFQUFFLElBQUk7WUFDakIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQ3ZELEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FDckQ7WUFDRCxZQUFZLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVO1lBQzFDLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtZQUNyQixvQkFBb0IsRUFBRSxLQUFLO1lBQzNCLGNBQWMsRUFBRSxNQUFNO1lBQ3RCLFFBQVEsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDOUMsNEJBQXVCLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FDdEQ7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBOUJELDRDQThCQyJ9
|
|
@@ -1,131 +0,0 @@
|
|
|
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 datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
|
|
7
|
-
const filterable_1 = __importDefault(require("./filterable"));
|
|
8
|
-
const validation_1 = __importDefault(require("./validation"));
|
|
9
|
-
class SchemaGeneratorFields {
|
|
10
|
-
static buildSchema(collection, name) {
|
|
11
|
-
const { type } = collection.schema.fields[name];
|
|
12
|
-
let schema;
|
|
13
|
-
switch (type) {
|
|
14
|
-
case 'Column':
|
|
15
|
-
schema = SchemaGeneratorFields.buildColumnSchema(collection, name);
|
|
16
|
-
break;
|
|
17
|
-
case 'ManyToOne':
|
|
18
|
-
case 'OneToMany':
|
|
19
|
-
case 'ManyToMany':
|
|
20
|
-
case 'OneToOne':
|
|
21
|
-
schema = SchemaGeneratorFields.buildRelationSchema(collection, name);
|
|
22
|
-
break;
|
|
23
|
-
default:
|
|
24
|
-
throw new Error('Invalid field type');
|
|
25
|
-
}
|
|
26
|
-
return Object.entries(schema)
|
|
27
|
-
.sort()
|
|
28
|
-
.reduce((sortedSchema, [key, value]) => {
|
|
29
|
-
sortedSchema[key] = value;
|
|
30
|
-
return sortedSchema;
|
|
31
|
-
}, {});
|
|
32
|
-
}
|
|
33
|
-
static buildColumnSchema(collection, name) {
|
|
34
|
-
const column = collection.schema.fields[name];
|
|
35
|
-
return {
|
|
36
|
-
defaultValue: column.defaultValue ?? null,
|
|
37
|
-
enums: column.enumValues ?? null,
|
|
38
|
-
field: name,
|
|
39
|
-
integration: null,
|
|
40
|
-
inverseOf: null,
|
|
41
|
-
isFilterable: filterable_1.default.isFilterable(column.columnType, column.filterOperators),
|
|
42
|
-
isPrimaryKey: Boolean(column.isPrimaryKey),
|
|
43
|
-
isReadOnly: Boolean(column.isReadOnly),
|
|
44
|
-
isRequired: column.validation?.some(v => v.operator === 'Present') ?? false,
|
|
45
|
-
isSortable: Boolean(column.isSortable),
|
|
46
|
-
isVirtual: false,
|
|
47
|
-
reference: null,
|
|
48
|
-
type: column.columnType,
|
|
49
|
-
validations: validation_1.default.convertValidationList(column.validation),
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
static buildToManyRelationSchema(relation, foreignCollection, baseSchema) {
|
|
53
|
-
const key = relation.type === 'OneToMany' ? relation.originKeyTarget : relation.foreignKeyTarget;
|
|
54
|
-
const keySchema = foreignCollection.schema.fields[key];
|
|
55
|
-
return {
|
|
56
|
-
type: [keySchema.columnType],
|
|
57
|
-
defaultValue: null,
|
|
58
|
-
isFilterable: false,
|
|
59
|
-
isPrimaryKey: false,
|
|
60
|
-
isRequired: false,
|
|
61
|
-
isSortable: false,
|
|
62
|
-
validations: [],
|
|
63
|
-
reference: `${foreignCollection.name}.${key}`,
|
|
64
|
-
...baseSchema,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
static isForeignCollectionFilterable(foreignCollection) {
|
|
68
|
-
return Object.values(foreignCollection.schema.fields).some(field => field.type === 'Column' &&
|
|
69
|
-
filterable_1.default.isFilterable(field.columnType, field.filterOperators));
|
|
70
|
-
}
|
|
71
|
-
static buildOneToOneSchema(relation, foreignCollection, baseSchema) {
|
|
72
|
-
const key = relation.originKeyTarget;
|
|
73
|
-
const keySchema = foreignCollection.schema.fields[key];
|
|
74
|
-
return {
|
|
75
|
-
type: keySchema.columnType,
|
|
76
|
-
defaultValue: null,
|
|
77
|
-
isFilterable: SchemaGeneratorFields.isForeignCollectionFilterable(foreignCollection),
|
|
78
|
-
isPrimaryKey: false,
|
|
79
|
-
isRequired: false,
|
|
80
|
-
isSortable: Boolean(keySchema.isSortable),
|
|
81
|
-
validations: [],
|
|
82
|
-
reference: `${foreignCollection.name}.${key}`,
|
|
83
|
-
...baseSchema,
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
static buildManyToOneSchema(relation, collection, foreignCollection, baseSchema) {
|
|
87
|
-
const key = relation.foreignKey;
|
|
88
|
-
const keySchema = collection.schema.fields[key];
|
|
89
|
-
return {
|
|
90
|
-
type: keySchema.columnType,
|
|
91
|
-
defaultValue: keySchema.defaultValue ?? null,
|
|
92
|
-
isFilterable: SchemaGeneratorFields.isForeignCollectionFilterable(foreignCollection),
|
|
93
|
-
isPrimaryKey: Boolean(keySchema.isPrimaryKey),
|
|
94
|
-
isRequired: keySchema.validation?.some(v => v.operator === 'Present') ?? false,
|
|
95
|
-
isSortable: Boolean(keySchema.isSortable),
|
|
96
|
-
validations: validation_1.default.convertValidationList(keySchema.validation),
|
|
97
|
-
reference: `${foreignCollection.name}.${relation.foreignKeyTarget}`,
|
|
98
|
-
...baseSchema,
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
static buildRelationSchema(collection, name) {
|
|
102
|
-
const relation = collection.schema.fields[name];
|
|
103
|
-
const foreignCollection = collection.dataSource.getCollection(relation.foreignCollection);
|
|
104
|
-
const relationSchema = {
|
|
105
|
-
field: name,
|
|
106
|
-
enums: null,
|
|
107
|
-
integration: null,
|
|
108
|
-
isReadOnly: false,
|
|
109
|
-
isVirtual: false,
|
|
110
|
-
inverseOf: datasource_toolkit_1.CollectionUtils.getInverseRelation(collection, name),
|
|
111
|
-
relationship: SchemaGeneratorFields.relationMap[relation.type],
|
|
112
|
-
};
|
|
113
|
-
switch (relation.type) {
|
|
114
|
-
case 'ManyToMany':
|
|
115
|
-
case 'OneToMany':
|
|
116
|
-
return SchemaGeneratorFields.buildToManyRelationSchema(relation, foreignCollection, relationSchema);
|
|
117
|
-
case 'OneToOne':
|
|
118
|
-
return SchemaGeneratorFields.buildOneToOneSchema(relation, foreignCollection, relationSchema);
|
|
119
|
-
default:
|
|
120
|
-
return SchemaGeneratorFields.buildManyToOneSchema(relation, collection, foreignCollection, relationSchema);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
exports.default = SchemaGeneratorFields;
|
|
125
|
-
SchemaGeneratorFields.relationMap = {
|
|
126
|
-
ManyToMany: 'BelongsToMany',
|
|
127
|
-
ManyToOne: 'BelongsTo',
|
|
128
|
-
OneToMany: 'HasMany',
|
|
129
|
-
OneToOne: 'HasOne',
|
|
130
|
-
};
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLWZpZWxkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZ2VudC91dGlscy9mb3Jlc3Qtc2NoZW1hL2dlbmVyYXRvci1maWVsZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3RUFVeUM7QUFFekMsOERBQW1EO0FBQ25ELDhEQUFtRDtBQUVuRCxNQUFxQixxQkFBcUI7SUFReEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFzQixFQUFFLElBQVk7UUFDckQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhELElBQUksTUFBeUIsQ0FBQztRQUU5QixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssUUFBUTtnQkFDWCxNQUFNLEdBQUcscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNuRSxNQUFNO1lBRVIsS0FBSyxXQUFXLENBQUM7WUFDakIsS0FBSyxXQUFXLENBQUM7WUFDakIsS0FBSyxZQUFZLENBQUM7WUFDbEIsS0FBSyxVQUFVO2dCQUNiLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JFLE1BQU07WUFFUjtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2FBQzFCLElBQUksRUFBRTthQUNOLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3JDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFFMUIsT0FBTyxZQUFZLENBQUM7UUFDdEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1gs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
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const types_1 = require("./types");
|
|
4
|
-
class FrontendValidationUtils {
|
|
5
|
-
static convertValidationList(predicates) {
|
|
6
|
-
if (!predicates)
|
|
7
|
-
return [];
|
|
8
|
-
return predicates
|
|
9
|
-
.map(p => {
|
|
10
|
-
const type = FrontendValidationUtils.operatorValidationTypeMap[p.operator];
|
|
11
|
-
return type ? { type, value: p.value, message: null } : null;
|
|
12
|
-
})
|
|
13
|
-
.filter(Boolean);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
exports.default = FrontendValidationUtils;
|
|
17
|
-
FrontendValidationUtils.operatorValidationTypeMap = {
|
|
18
|
-
Present: types_1.ValidationType.Present,
|
|
19
|
-
GreaterThan: types_1.ValidationType.GreaterThan,
|
|
20
|
-
LessThan: types_1.ValidationType.LessThan,
|
|
21
|
-
LongerThan: types_1.ValidationType.LongerThan,
|
|
22
|
-
ShorterThan: types_1.ValidationType.ShorterThan,
|
|
23
|
-
Contains: types_1.ValidationType.Contains,
|
|
24
|
-
Like: types_1.ValidationType.Like,
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hZ2VudC91dGlscy9mb3Jlc3Qtc2NoZW1hL3ZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxtQ0FBNEQ7QUFLNUQsTUFBcUIsdUJBQXVCO0lBVzFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxVQUF5QjtRQUNwRCxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTNCLE9BQU8sVUFBVTthQUNkLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNQLE1BQU0sSUFBSSxHQUFHLHVCQUF1QixDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUzRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDL0QsQ0FBQyxDQUFDO2FBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLENBQUM7O0FBckJILDBDQXNCQztBQXJCZ0IsaURBQXlCLEdBQThDO0lBQ3BGLE9BQU8sRUFBRSxzQkFBYyxDQUFDLE9BQU87SUFDL0IsV0FBVyxFQUFFLHNCQUFjLENBQUMsV0FBVztJQUN2QyxRQUFRLEVBQUUsc0JBQWMsQ0FBQyxRQUFRO0lBQ2pDLFVBQVUsRUFBRSxzQkFBYyxDQUFDLFVBQVU7SUFDckMsV0FBVyxFQUFFLHNCQUFjLENBQUMsV0FBVztJQUN2QyxRQUFRLEVBQUUsc0JBQWMsQ0FBQyxRQUFRO0lBQ2pDLElBQUksRUFBRSxzQkFBYyxDQUFDLElBQUk7Q0FDMUIsQ0FBQyJ9
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const fs_1 = require("fs");
|
|
4
|
-
const path_1 = require("path");
|
|
5
|
-
const types_1 = require("../../types");
|
|
6
|
-
class OptionsUtils {
|
|
7
|
-
static withDefaults(options) {
|
|
8
|
-
return Object.freeze({
|
|
9
|
-
clientId: null,
|
|
10
|
-
forestServerUrl: 'https://api.forestadmin.com',
|
|
11
|
-
logger: (level, data) => console.error(OptionsUtils.loggerPrefix[level], data),
|
|
12
|
-
prefix: '/forest',
|
|
13
|
-
schemaPath: '.forestadmin-schema.json',
|
|
14
|
-
permissionsCacheDurationInSeconds: 15 * 60,
|
|
15
|
-
...options,
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
static validate(options) {
|
|
19
|
-
OptionsUtils.checkForestServerOptions(options);
|
|
20
|
-
OptionsUtils.checkAuthOptions(options);
|
|
21
|
-
OptionsUtils.checkOtherOptions(options);
|
|
22
|
-
}
|
|
23
|
-
static checkForestServerOptions(options) {
|
|
24
|
-
if (typeof options.envSecret !== 'string' || !/^[0-9a-f]{64}$/.test(options.envSecret)) {
|
|
25
|
-
throw new Error('options.envSecret is invalid. You can retrieve its value from ' +
|
|
26
|
-
'https://www.forestadmin.com');
|
|
27
|
-
}
|
|
28
|
-
if (!OptionsUtils.isUrl(options.forestServerUrl)) {
|
|
29
|
-
throw new Error('options.forestServerUrl is invalid. It should contain an URL ' +
|
|
30
|
-
'(i.e. "https://api.forestadmin.com")');
|
|
31
|
-
}
|
|
32
|
-
if (!OptionsUtils.isExistingPath(options.schemaPath)) {
|
|
33
|
-
throw new Error('options.schemaPath is invalid. It should contain a relative filepath ' +
|
|
34
|
-
'where the schema should be loaded/updated (i.e. "./.forestadmin-schema.json")');
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
static checkAuthOptions(options) {
|
|
38
|
-
if (!OptionsUtils.isUrl(options.agentUrl)) {
|
|
39
|
-
throw new Error('options.agentUrl is invalid. It should contain an url where your agent is reachable ' +
|
|
40
|
-
'(i.e. "https://api-forestadmin.mycompany.com")');
|
|
41
|
-
}
|
|
42
|
-
if (typeof options.authSecret !== 'string') {
|
|
43
|
-
throw new Error('options.authSecret is invalid. Any long random string should work ' +
|
|
44
|
-
'(i.e. "OfpssLrbgF3P4vHJTTpb"');
|
|
45
|
-
}
|
|
46
|
-
if (options.clientId === null) {
|
|
47
|
-
options.logger?.(types_1.LoggerLevel.Warn, 'options.clientId was not provided. Using NodeJS cluster mode, ' +
|
|
48
|
-
'or multiple instances of the agent will break authentication');
|
|
49
|
-
}
|
|
50
|
-
else if (typeof options.clientId !== 'string') {
|
|
51
|
-
throw new Error('options.clientId is invalid.');
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
static checkOtherOptions(options) {
|
|
55
|
-
if (typeof options.prefix !== 'string' || !/[-/a-z+]/.test(options.prefix)) {
|
|
56
|
-
throw new Error('options.prefix is invalid. It should contain the prefix on which ' +
|
|
57
|
-
'forest admin routes should be mounted (i.e. "/forest")');
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
static isExistingPath(string) {
|
|
61
|
-
if (typeof string !== 'string') {
|
|
62
|
-
return false;
|
|
63
|
-
}
|
|
64
|
-
const parsed = (0, path_1.parse)(string);
|
|
65
|
-
return parsed.dir.length ? (0, fs_1.existsSync)(parsed.dir) : true;
|
|
66
|
-
}
|
|
67
|
-
static isUrl(string) {
|
|
68
|
-
if (typeof string !== 'string') {
|
|
69
|
-
return false;
|
|
70
|
-
}
|
|
71
|
-
try {
|
|
72
|
-
const url = new URL(string);
|
|
73
|
-
return url.protocol === 'http:' || url.protocol === 'https:';
|
|
74
|
-
}
|
|
75
|
-
catch (_) {
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
exports.default = OptionsUtils;
|
|
81
|
-
OptionsUtils.loggerPrefix = {
|
|
82
|
-
[types_1.LoggerLevel.Info]: '\x1b[34minfo:\x1b[0m',
|
|
83
|
-
[types_1.LoggerLevel.Warn]: '\x1b[33mwarning:\x1b[0m',
|
|
84
|
-
[types_1.LoggerLevel.Error]: '\x1b[31merror:\x1b[0m',
|
|
85
|
-
};
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1kcml2ZXItb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZ2VudC91dGlscy9odHRwLWRyaXZlci1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkJBQWdDO0FBQ2hDLCtCQUEwQztBQUUxQyx1Q0FBd0Q7QUFHeEQsTUFBcUIsWUFBWTtJQU8vQixNQUFNLENBQUMsWUFBWSxDQUFDLE9BQXFCO1FBQ3ZDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNuQixRQUFRLEVBQUUsSUFBSTtZQUNkLGVBQWUsRUFBRSw2QkFBNkI7WUFDOUMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQztZQUM5RSxNQUFNLEVBQUUsU0FBUztZQUNqQixVQUFVLEVBQUUsMEJBQTBCO1lBQ3RDLGlDQUFpQyxFQUFFLEVBQUUsR0FBRyxFQUFFO1lBQzFDLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQWlDO1FBQy9DLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTyxNQUFNLENBQUMsd0JBQXdCLENBQUMsT0FBaUM7UUFDdkUsSUFBSSxPQUFPLE9BQU8sQ0FBQyxTQUFTLEtBQUssUUFBUSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN0RixNQUFNLElBQUksS0FBSyxDQUNiLGdFQUFnRTtnQkFDOUQsNkJBQTZCLENBQ2hDLENB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
|