@forestadmin/datasource-mongoose 1.7.3 → 1.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mongoose/schema.js +6 -3
- package/dist/utils/options.d.ts +1 -0
- package/dist/utils/options.js +19 -4
- package/package.json +1 -1
package/dist/mongoose/schema.js
CHANGED
|
@@ -26,14 +26,17 @@ class MongooseSchema {
|
|
|
26
26
|
listPathsMatching(handle, prefix) {
|
|
27
27
|
if (this.isLeaf)
|
|
28
28
|
return [];
|
|
29
|
-
return Object.keys(this.fields)
|
|
29
|
+
return (Object.keys(this.fields)
|
|
30
|
+
// Empty property names are allowed in mongoose, but cannot be supported
|
|
31
|
+
.filter(Boolean)
|
|
32
|
+
.flatMap(field => {
|
|
30
33
|
const schema = this.getSubSchema(field);
|
|
31
34
|
const subPrefix = `${prefix ? `${prefix}.` : ''}${field}`;
|
|
32
35
|
const subFields = schema
|
|
33
36
|
.listPathsMatching(handle, subPrefix)
|
|
34
37
|
.map(subField => `${field}.${subField}`);
|
|
35
38
|
return handle(subPrefix, schema) ? [field, ...subFields] : subFields;
|
|
36
|
-
});
|
|
39
|
+
}));
|
|
37
40
|
}
|
|
38
41
|
/**
|
|
39
42
|
* List leafs and arrays up to a certain level
|
|
@@ -157,4 +160,4 @@ class MongooseSchema {
|
|
|
157
160
|
}
|
|
158
161
|
}
|
|
159
162
|
exports.default = MongooseSchema;
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vbmdvb3NlL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUF5QztBQUN6Qyx1REFBdUQ7QUFDdkQsdUNBQXFEO0FBR3JELDhDQUFpRTtBQUtqRSxNQUFxQixjQUFjO0lBT2pDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBcUI7UUFDcEMsT0FBTyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFxQixDQUFDO1NBQzFDO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxZQUNFLE1BQXNDLEVBQ3RDLE1BQW9CLEVBQ3BCLE9BQWdCLEVBQ2hCLE1BQWU7UUFFZixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsaUJBQWlCLENBQ2YsTUFBMEQsRUFDMUQsTUFBZTtRQUVmLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLEVB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
|
package/dist/utils/options.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { FlattenOptions, MongooseOptions } from '../types';
|
|
|
3
3
|
export default class OptionsParser {
|
|
4
4
|
static parseOptions(model: Model<unknown>, options: MongooseOptions): FlattenOptions;
|
|
5
5
|
private static getAutoFlattenOptions;
|
|
6
|
+
private static canBeFlattened;
|
|
6
7
|
private static getManualFlattenOptions;
|
|
7
8
|
private static getLegacyFlattenOptions;
|
|
8
9
|
}
|
package/dist/utils/options.js
CHANGED
|
@@ -19,9 +19,12 @@ class OptionsParser {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
static getAutoFlattenOptions(schema) {
|
|
22
|
+
const forbiddenPaths = schema.listPathsMatching((_, s) => !this.canBeFlattened(s));
|
|
22
23
|
// Split on all arrays of objects and arrays of references.
|
|
23
24
|
const asModels = schema
|
|
24
|
-
.listPathsMatching((
|
|
25
|
+
.listPathsMatching((field, s) => s.isArray &&
|
|
26
|
+
(!s.isLeaf || s.schemaNode?.options?.ref) &&
|
|
27
|
+
!forbiddenPaths.some(p => field === p || field.startsWith(`${p}.`)))
|
|
25
28
|
.sort();
|
|
26
29
|
// flatten all fields which are nested
|
|
27
30
|
const asFields = schema.listPathsMatching((field, pathSchema) => {
|
|
@@ -31,9 +34,21 @@ class OptionsParser {
|
|
|
31
34
|
? Math.min(acc, field.split('.').length - asModel.split('.').length)
|
|
32
35
|
: acc;
|
|
33
36
|
}, field.split('.').length);
|
|
34
|
-
return !asModels.includes(field) &&
|
|
37
|
+
return (!asModels.includes(field) &&
|
|
38
|
+
pathSchema.isLeaf &&
|
|
39
|
+
minDistance > 1 &&
|
|
40
|
+
!forbiddenPaths.some(p => field.startsWith(`${p}.`)));
|
|
35
41
|
});
|
|
36
|
-
return {
|
|
42
|
+
return {
|
|
43
|
+
asFields,
|
|
44
|
+
asModels,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
static canBeFlattened(schema) {
|
|
48
|
+
if (schema.isLeaf)
|
|
49
|
+
return true;
|
|
50
|
+
const subFields = Object.keys(schema.fields);
|
|
51
|
+
return !subFields.includes('');
|
|
37
52
|
}
|
|
38
53
|
static getManualFlattenOptions(schema, options, modelName) {
|
|
39
54
|
// If the user specified either asModels or asFields for this model, we apply it.
|
|
@@ -77,4 +92,4 @@ class OptionsParser {
|
|
|
77
92
|
}
|
|
78
93
|
}
|
|
79
94
|
exports.default = OptionsParser;
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsZ0VBQWdEO0FBUWhELE1BQXFCLGFBQWE7SUFDaEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFxQixFQUFFLE9BQXdCO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLGdCQUFjLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9DLFFBQVEsT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUMzQixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUMsS0FBSyxRQUFRO2dCQUNYLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hFLEtBQUssTUFBTTtnQkFDVCxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDeEM7Z0JBQ0UsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDekU7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLHFCQUFxQixDQUFDLE1BQXNCO1FBQ3pELE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRW5GLDJEQUEyRDtRQUMzRCxNQUFNLFFBQVEsR0FBRyxNQUFNO2FBQ3BCLGlCQUFpQixDQUNoQixDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNYLENBQUMsQ0FBQyxPQUFPO1lBQ1QsQ0FBQyxDQUFDLENBQUMsQ0FB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
|