@forestadmin/datasource-customizer 1.0.0-alpha.1 → 1.0.0-alpha.3

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.
@@ -55,7 +55,7 @@ export default class CollectionCustomizer<S extends TSchema = TSchema, N extends
55
55
  * .addAction('is live', {
56
56
  * scope: 'Single',
57
57
  * execute: async (context, resultBuilder) => {
58
- * return resultBuilder.success(`Is live!`);
58
+ * return resultBuilder.success('Is live!');
59
59
  * },
60
60
  * })
61
61
  */
@@ -68,7 +68,7 @@ export default class CollectionCustomizer<S extends TSchema = TSchema, N extends
68
68
  * .addField('fullName', {
69
69
  * columnType: 'String',
70
70
  * dependencies: ['firstName', 'lastName'],
71
- * getValues: (records) => records.map(record => `${record.lastName} ${record.firstName}`),
71
+ * getValues: (records) => records.map(record => \`${record.lastName} ${record.firstName}\`),
72
72
  * });
73
73
  */
74
74
  addField(name: string, definition: FieldDefinition<S, N>): this;
@@ -91,7 +91,7 @@ class CollectionCustomizer {
91
91
  * .addAction('is live', {
92
92
  * scope: 'Single',
93
93
  * execute: async (context, resultBuilder) => {
94
- * return resultBuilder.success(`Is live!`);
94
+ * return resultBuilder.success('Is live!');
95
95
  * },
96
96
  * })
97
97
  */
@@ -110,7 +110,7 @@ class CollectionCustomizer {
110
110
  * .addField('fullName', {
111
111
  * columnType: 'String',
112
112
  * dependencies: ['firstName', 'lastName'],
113
- * getValues: (records) => records.map(record => `${record.lastName} ${record.firstName}`),
113
+ * getValues: (records) => records.map(record => \`${record.lastName} ${record.firstName}\`),
114
114
  * });
115
115
  */
116
116
  addField(name, definition) {
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const collection_customizer_1 = __importDefault(require("./collection-customizer"));
7
7
  const composite_datasource_1 = __importDefault(require("./decorators/composite-datasource"));
8
8
  const decorators_stack_1 = __importDefault(require("./decorators/decorators-stack"));
9
- const datasource_1 = __importDefault(require("./decorators/rename-collection/datasource"));
9
+ const datasource_1 = __importDefault(require("./decorators/publication-collection/datasource"));
10
+ const datasource_2 = __importDefault(require("./decorators/rename-collection/datasource"));
10
11
  const typing_generator_1 = __importDefault(require("./typing-generator"));
11
12
  /**
12
13
  * Allow to create a new Forest Admin agent from scratch.
@@ -31,10 +32,18 @@ class DataSourceCustomizer {
31
32
  */
32
33
  addDataSource(factory, options) {
33
34
  this.customizations.push(async (logger) => {
34
- const dataSource = await factory(logger);
35
- const renamedDecorator = new datasource_1.default(dataSource);
36
- renamedDecorator.renameCollections(options?.rename);
37
- this.compositeDataSource.addDataSource(renamedDecorator);
35
+ let dataSource = await factory(logger);
36
+ if (options?.include || options?.exclude) {
37
+ const publicationDecorator = new datasource_1.default(dataSource);
38
+ publicationDecorator.keepCollectionsMatching(options.include, options.exclude);
39
+ dataSource = publicationDecorator;
40
+ }
41
+ if (options?.rename) {
42
+ const renamedDecorator = new datasource_2.default(dataSource);
43
+ renamedDecorator.renameCollections(options?.rename);
44
+ dataSource = renamedDecorator;
45
+ }
46
+ this.compositeDataSource.addDataSource(dataSource);
38
47
  });
39
48
  return this;
40
49
  }
@@ -86,4 +95,4 @@ class DataSourceCustomizer {
86
95
  }
87
96
  }
88
97
  exports.default = DataSourceCustomizer;
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS1jdXN0b21pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RhdGFzb3VyY2UtY3VzdG9taXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUtBLG9GQUEyRDtBQUMzRCw2RkFBb0U7QUFDcEUscUZBQTREO0FBQzVELDJGQUE0RjtBQUM1RiwwRUFBaUQ7QUFFakQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBcUIsb0JBQW9CO0lBS3ZDO1FBRlEsbUJBQWMsR0FBMEMsRUFBRSxDQUFDO1FBR2pFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLDhCQUFtQixFQUFjLENBQUM7UUFDakUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLDBCQUFlLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsT0FBMEIsRUFBRSxPQUEyQjtRQUNuRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUMsTUFBTSxFQUFDLEVBQUU7WUFDdEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLG9CQUFtQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdFLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUVwRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILFFBQVEsQ0FBQyxJQUFZLEVBQUUsVUFBOEI7UUFDbkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxtQkFBbUIsQ0FDakIsSUFBTyxFQUNQLE1BQTJEO1FBRTNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2xDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLENBQUMsSUFBSSwrQkFBb0IsQ0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDMUQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBYztRQUNoQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFO1lBQ2pDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLHVDQUF1QztTQUNuRjtRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLEtBQUssRUFBRSxNQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxXQUFtQixFQUFFLGVBQXVCO1FBQ3hFLE9BQU8sMEJBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDaEcsQ0FBQztDQUNGO0FBbkZELHVDQW1GQyJ9
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS1jdXN0b21pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RhdGFzb3VyY2UtY3VzdG9taXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUtBLG9GQUEyRDtBQUMzRCw2RkFBb0U7QUFDcEUscUZBQTREO0FBQzVELGdHQUFzRztBQUN0RywyRkFBNEY7QUFDNUYsMEVBQWlEO0FBRWpEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQXFCLG9CQUFvQjtJQUt2QztRQUZRLG1CQUFjLEdBQTBDLEVBQUUsQ0FBQztRQUdqRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSw4QkFBbUIsRUFBYyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSwwQkFBZSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYSxDQUFDLE9BQTBCLEVBQUUsT0FBMkI7UUFDbkUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxFQUFFO1lBQ3RDLElBQUksVUFBVSxHQUFHLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXZDLElBQUksT0FBTyxFQUFFLE9BQU8sSUFBSSxPQUFPLEVBQUUsT0FBTyxFQUFFO2dCQUN4QyxNQUFNLG9CQUFvQixHQUFHLElBQUksb0JBQXdDLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3RGLG9CQUFvQixDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMvRSxVQUFVLEdBQUcsb0JBQW9CLENBQUM7YUFDbkM7WUFFRCxJQUFJLE9BQU8sRUFBRSxNQUFNLEVBQUU7Z0JBQ25CLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxvQkFBbUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDN0UsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNwRCxVQUFVLEdBQUcsZ0JBQWdCLENBQUM7YUFDL0I7WUFFRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxRQUFRLENBQUMsSUFBWSxFQUFFLFVBQThCO1FBQ25ELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsbUJBQW1CLENBQ2pCLElBQU8sRUFDUCxNQUEyRDtRQUUzRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNsQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxDQUFDLElBQUksK0JBQW9CLENBQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQzFEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQWM7UUFDaEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRTtZQUNqQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyx1Q0FBdUM7U0FDbkY7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxLQUFLLEVBQUUsTUFBYyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCLENBQUMsV0FBbUIsRUFBRSxlQUF1QjtRQUN4RSxPQUFPLDBCQUFlLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7Q0FDRjtBQTdGRCx1Q0E2RkMifQ==
@@ -4,7 +4,8 @@ import { TCollectionName, TSchema } from '../../../templates';
4
4
  import ActionContext from '../context/base';
5
5
  import ActionContextSingle from '../context/single';
6
6
  import ResultBuilder from '../result-builder';
7
- interface BaseAction<S extends TSchema, N extends TCollectionName<S>, Scope extends ActionScope, Context extends ActionContext<S, N>> {
7
+ export { ActionContext, ActionContextSingle };
8
+ export interface BaseAction<S extends TSchema, N extends TCollectionName<S>, Scope extends ActionScope, Context extends ActionContext<S, N>> {
8
9
  generateFile?: boolean;
9
10
  scope: Scope;
10
11
  form?: DynamicField<Context>[];
@@ -14,5 +15,4 @@ export declare type ActionGlobal<S extends TSchema = TSchema, N extends TCollect
14
15
  export declare type ActionBulk<S extends TSchema = TSchema, N extends TCollectionName<S> = TCollectionName<S>> = BaseAction<S, N, 'Bulk', ActionContext<S, N>>;
15
16
  export declare type ActionSingle<S extends TSchema = TSchema, N extends TCollectionName<S> = TCollectionName<S>> = BaseAction<S, N, 'Single', ActionContextSingle<S, N>>;
16
17
  export declare type ActionDefinition<S extends TSchema = TSchema, N extends TCollectionName<S> = TCollectionName<S>> = ActionSingle<S, N> | ActionBulk<S, N> | ActionGlobal<S, N>;
17
- export {};
18
18
  //# sourceMappingURL=actions.d.ts.map
@@ -1,3 +1,11 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZWNvcmF0b3JzL2FjdGlvbnMvdHlwZXMvYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
6
+ exports.ActionContextSingle = exports.ActionContext = void 0;
7
+ const base_1 = __importDefault(require("../context/base"));
8
+ exports.ActionContext = base_1.default;
9
+ const single_1 = __importDefault(require("../context/single"));
10
+ exports.ActionContextSingle = single_1.default;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZWNvcmF0b3JzL2FjdGlvbnMvdHlwZXMvYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFJQSwyREFBNEM7QUFJbkMsd0JBSkYsY0FBYSxDQUlFO0FBSHRCLCtEQUFvRDtBQUc1Qiw4QkFIakIsZ0JBQW1CLENBR2lCIn0=
@@ -7,7 +7,7 @@ import EmptyCollectionDecorator from './empty/collection';
7
7
  import HookCollectionDecorator from './hook/collection';
8
8
  import OperatorsEmulateCollectionDecorator from './operators-emulate/collection';
9
9
  import OperatorsReplaceCollectionDecorator from './operators-replace/collection';
10
- import PublicationCollectionDecorator from './publication/collection';
10
+ import PublicationFieldCollectionDecorator from './publication-field/collection';
11
11
  import RelationCollectionDecorator from './relation/collection';
12
12
  import RenameFieldCollectionDecorator from './rename-field/collection';
13
13
  import SchemaCollectionDecorator from './schema/collection';
@@ -27,7 +27,7 @@ export default class DecoratorsStack {
27
27
  lateComputed: DataSourceDecorator<ComputedCollectionDecorator>;
28
28
  lateOpEmulate: DataSourceDecorator<OperatorsEmulateCollectionDecorator>;
29
29
  lateOpReplace: DataSourceDecorator<OperatorsReplaceCollectionDecorator>;
30
- publication: DataSourceDecorator<PublicationCollectionDecorator>;
30
+ publication: DataSourceDecorator<PublicationFieldCollectionDecorator>;
31
31
  renameField: DataSourceDecorator<RenameFieldCollectionDecorator>;
32
32
  schema: DataSourceDecorator<SchemaCollectionDecorator>;
33
33
  search: DataSourceDecorator<SearchCollectionDecorator>;
@@ -11,7 +11,7 @@ const collection_3 = __importDefault(require("./empty/collection"));
11
11
  const collection_4 = __importDefault(require("./hook/collection"));
12
12
  const collection_5 = __importDefault(require("./operators-emulate/collection"));
13
13
  const collection_6 = __importDefault(require("./operators-replace/collection"));
14
- const collection_7 = __importDefault(require("./publication/collection"));
14
+ const collection_7 = __importDefault(require("./publication-field/collection"));
15
15
  const collection_8 = __importDefault(require("./relation/collection"));
16
16
  const collection_9 = __importDefault(require("./rename-field/collection"));
17
17
  const collection_10 = __importDefault(require("./schema/collection"));
@@ -56,4 +56,4 @@ class DecoratorsStack {
56
56
  }
57
57
  }
58
58
  exports.default = DecoratorsStack;
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzL2RlY29yYXRvcnMtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxzRUFBNkQ7QUFDN0Qsb0VBQTBEO0FBQzFELHVFQUFnRTtBQUNoRSxrRkFBeUQ7QUFDekQsb0VBQTBEO0FBQzFELG1FQUF3RDtBQUN4RCxnRkFBaUY7QUFDakYsZ0ZBQWlGO0FBQ2pGLDBFQUFzRTtBQUN0RSx1RUFBZ0U7QUFDaEUsMkVBQXVFO0FBQ3ZFLHNFQUE0RDtBQUM1RCxzRUFBNEQ7QUFDNUQsdUVBQThEO0FBQzlELDRFQUF1RTtBQUN2RSwwRUFBb0U7QUFDcEUscUVBQTBEO0FBRTFELE1BQXFCLGVBQWU7SUFzQmxDLFlBQVksVUFBc0I7UUFDaEMsSUFBSSxJQUFJLEdBQWUsVUFBVSxDQUFDO1FBRWxDLG9DQUFvQztRQUNwQyxtRkFBbUY7UUFDbkYsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSw4QkFBbUIsQ0FBQyxJQUFJLEVBQUUsb0JBQXdCLENBQUMsQ0FBQztRQUU1RSw2RkFBNkY7UUFDN0Ysc0VBQXNFO1FBQ3RFLDJGQUEyRjtRQUMzRixJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxvQkFBMkIsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksOEJBQW1CLENBQUMsSUFBSSxFQUFFLG9CQUFtQyxDQUFDLENBQUM7UUFDaEcsSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSw4QkFBbUIsQ0FBQyxJQUFJLEVBQUUsb0JBQW1DLENBQUMsQ0FBQztRQUNoRyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxvQkFBMkIsQ0FBQyxDQUFDO1FBQ2xGLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksOEJBQW1CLENBQUMsSUFBSSxFQUFFLG9CQUEyQixDQUFDLENBQUM7UUFDdEYsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSw4QkFBbUIsQ0FBQyxJQUFJLEVBQUUsb0JBQW1DLENBQUMsQ0FBQztRQUMvRixJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxvQkFBbUMsQ0FBQyxDQUFDO1FBRS9GLDRFQUE0RTtRQUM1RSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxxQkFBeUIsQ0FBQyxDQUFDO1FBQzlFLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksOEJBQW1CLENBQUMsSUFBSSxFQUFFLHFCQUEwQixDQUFDLENBQUM7UUFDaEYsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSw4QkFBbUIsQ0FBQyxJQUFJLEVBQUUscUJBQThCLENBQUMsQ0FBQztRQUN4RixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxxQkFBd0IsQ0FBQyxDQUFDO1FBRTVFLHlEQUF5RDtRQUN6RCxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxxQkFBNkIsQ0FBQyxDQUFDO1FBQ3RGLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksb0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSw4QkFBbUIsQ0FBQyxJQUFJLEVBQUUsb0JBQXlCLENBQUMsQ0FBQztRQUM5RSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxxQkFBeUIsQ0FBQyxDQUFDO1FBQzlFLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksOEJBQW1CLENBQUMsSUFBSSxFQUFFLG9CQUF1QixDQUFDLENBQUM7UUFFMUUsOEZBQThGO1FBQzlGLGlCQUFpQjtRQUNqQixJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxvQkFBOEIsQ0FBQyxDQUFDO1FBQ3hGLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksOEJBQW1CLENBQUMsSUFBSSxFQUFFLG9CQUE4QixDQUFDLENBQUM7UUFDeEYsbUNBQW1DO1FBRW5DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQTdERCxrQ0E2REMifQ==
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzL2RlY29yYXRvcnMtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxzRUFBNkQ7QUFDN0Qsb0VBQTBEO0FBQzFELHVFQUFnRTtBQUNoRSxrRkFBeUQ7QUFDekQsb0VBQTBEO0FBQzFELG1FQUF3RDtBQUN4RCxnRkFBaUY7QUFDakYsZ0ZBQWlGO0FBQ2pGLGdGQUFpRjtBQUNqRix1RUFBZ0U7QUFDaEUsMkVBQXVFO0FBQ3ZFLHNFQUE0RDtBQUM1RCxzRUFBNEQ7QUFDNUQsdUVBQThEO0FBQzlELDRFQUF1RTtBQUN2RSwwRUFBb0U7QUFDcEUscUVBQTBEO0FBRTFELE1BQXFCLGVBQWU7SUFzQmxDLFlBQVksVUFBc0I7UUFDaEMsSUFBSSxJQUFJLEdBQWUsVUFBVSxDQUFDO1FBRWxDLG9DQUFvQztRQUNwQyxtRkFBbUY7UUFDbkYsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSw4QkFBbUIsQ0FBQyxJQUFJLEVBQUUsb0JBQXdCLENBQUMsQ0FBQztRQUU1RSw2RkFBNkY7UUFDN0Ysc0VBQXNFO1FBQ3RFLDJGQUEyRjtRQUMzRixJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxvQkFBMkIsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksOEJBQW1CLENBQUMsSUFBSSxFQUFFLG9CQUFtQyxDQUFDLENBQUM7UUFDaEcsSUFBSSxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSw4QkFBbUIsQ0FBQyxJQUFJLEVBQUUsb0JBQW1DLENBQUMsQ0FBQztRQUNoRyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxvQkFBMkIsQ0FBQyxDQUFDO1FBQ2xGLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksOEJBQW1CLENBQUMsSUFBSSxFQUFFLG9CQUEyQixDQUFDLENBQUM7UUFDdEYsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSw4QkFBbUIsQ0FBQyxJQUFJLEVBQUUsb0JBQW1DLENBQUMsQ0FBQztRQUMvRixJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxvQkFBbUMsQ0FBQyxDQUFDO1FBRS9GLDRFQUE0RTtRQUM1RSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxxQkFBeUIsQ0FBQyxDQUFDO1FBQzlFLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksOEJBQW1CLENBQUMsSUFBSSxFQUFFLHFCQUEwQixDQUFDLENBQUM7UUFDaEYsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSw4QkFBbUIsQ0FBQyxJQUFJLEVBQUUscUJBQThCLENBQUMsQ0FBQztRQUN4RixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxxQkFBd0IsQ0FBQyxDQUFDO1FBRTVFLHlEQUF5RDtRQUN6RCxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxxQkFBNkIsQ0FBQyxDQUFDO1FBQ3RGLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksb0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSw4QkFBbUIsQ0FBQyxJQUFJLEVBQUUsb0JBQXlCLENBQUMsQ0FBQztRQUM5RSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxxQkFBeUIsQ0FBQyxDQUFDO1FBQzlFLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksOEJBQW1CLENBQUMsSUFBSSxFQUFFLG9CQUF1QixDQUFDLENBQUM7UUFFMUUsOEZBQThGO1FBQzlGLGlCQUFpQjtRQUNqQixJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLDhCQUFtQixDQUFDLElBQUksRUFBRSxvQkFBbUMsQ0FBQyxDQUFDO1FBQzdGLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksOEJBQW1CLENBQUMsSUFBSSxFQUFFLG9CQUE4QixDQUFDLENBQUM7UUFDeEYsbUNBQW1DO1FBRW5DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQTdERCxrQ0E2REMifQ==
@@ -5,6 +5,7 @@ import { HookAfterListContext, HookBeforeListContext } from './context/list';
5
5
  import { HookAfterUpdateContext, HookBeforeUpdateContext } from './context/update';
6
6
  import { TCollectionName, TSchema } from '../../templates';
7
7
  import HookContext from './context/hook';
8
+ export { HookContext, HookAfterAggregateContext, HookBeforeAggregateContext, HookAfterCreateContext, HookBeforeCreateContext, HookAfterDeleteContext, HookBeforeDeleteContext, HookAfterListContext, HookBeforeListContext, HookAfterUpdateContext, HookBeforeUpdateContext, };
8
9
  export declare type HookHandler<C extends HookContext<S, N>, R = void, S extends TSchema = TSchema, N extends TCollectionName<S> = TCollectionName<S>> = (context: C) => Promise<R> | R;
9
10
  export declare type HookType<P extends HookPosition = HookPosition> = Extract<keyof HooksContext[P], string>;
10
11
  export declare type HookPosition = Extract<keyof HooksContext, string>;
@@ -1,3 +1,24 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVjb3JhdG9ycy9ob29rL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
6
+ exports.HookBeforeUpdateContext = exports.HookAfterUpdateContext = exports.HookBeforeListContext = exports.HookAfterListContext = exports.HookBeforeDeleteContext = exports.HookAfterDeleteContext = exports.HookBeforeCreateContext = exports.HookAfterCreateContext = exports.HookBeforeAggregateContext = exports.HookAfterAggregateContext = exports.HookContext = void 0;
7
+ const aggregate_1 = require("./context/aggregate");
8
+ Object.defineProperty(exports, "HookAfterAggregateContext", { enumerable: true, get: function () { return aggregate_1.HookAfterAggregateContext; } });
9
+ Object.defineProperty(exports, "HookBeforeAggregateContext", { enumerable: true, get: function () { return aggregate_1.HookBeforeAggregateContext; } });
10
+ const create_1 = require("./context/create");
11
+ Object.defineProperty(exports, "HookAfterCreateContext", { enumerable: true, get: function () { return create_1.HookAfterCreateContext; } });
12
+ Object.defineProperty(exports, "HookBeforeCreateContext", { enumerable: true, get: function () { return create_1.HookBeforeCreateContext; } });
13
+ const delete_1 = require("./context/delete");
14
+ Object.defineProperty(exports, "HookAfterDeleteContext", { enumerable: true, get: function () { return delete_1.HookAfterDeleteContext; } });
15
+ Object.defineProperty(exports, "HookBeforeDeleteContext", { enumerable: true, get: function () { return delete_1.HookBeforeDeleteContext; } });
16
+ const list_1 = require("./context/list");
17
+ Object.defineProperty(exports, "HookAfterListContext", { enumerable: true, get: function () { return list_1.HookAfterListContext; } });
18
+ Object.defineProperty(exports, "HookBeforeListContext", { enumerable: true, get: function () { return list_1.HookBeforeListContext; } });
19
+ const update_1 = require("./context/update");
20
+ Object.defineProperty(exports, "HookAfterUpdateContext", { enumerable: true, get: function () { return update_1.HookAfterUpdateContext; } });
21
+ Object.defineProperty(exports, "HookBeforeUpdateContext", { enumerable: true, get: function () { return update_1.HookBeforeUpdateContext; } });
22
+ const hook_1 = __importDefault(require("./context/hook"));
23
+ exports.HookContext = hook_1.default;
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVjb3JhdG9ycy9ob29rL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUE0RjtBQVUxRiwwR0FWTyxxQ0FBeUIsT0FVUDtBQUN6QiwyR0FYa0Msc0NBQTBCLE9BV2xDO0FBVjVCLDZDQUFtRjtBQVdqRix1R0FYTywrQkFBc0IsT0FXUDtBQUN0Qix3R0FaK0IsZ0NBQXVCLE9BWS9CO0FBWHpCLDZDQUFtRjtBQVlqRix1R0FaTywrQkFBc0IsT0FZUDtBQUN0Qix3R0FiK0IsZ0NBQXVCLE9BYS9CO0FBWnpCLHlDQUE2RTtBQWEzRSxxR0FiTywyQkFBb0IsT0FhUDtBQUNwQixzR0FkNkIsNEJBQXFCLE9BYzdCO0FBYnZCLDZDQUFtRjtBQWNqRix1R0FkTywrQkFBc0IsT0FjUDtBQUN0Qix3R0FmK0IsZ0NBQXVCLE9BZS9CO0FBYnpCLDBEQUF5QztBQUd2QyxzQkFISyxjQUFXLENBR0wifQ==
@@ -0,0 +1,9 @@
1
+ import { DataSource } from '@forestadmin/datasource-toolkit';
2
+ import DataSourceDecorator from '../datasource-decorator';
3
+ import PublicationFieldCollectionDecorator from '../publication-field/collection';
4
+ export default class PublicationCollectionDataSourceDecorator extends DataSourceDecorator<PublicationFieldCollectionDecorator> {
5
+ constructor(childDataSource: DataSource);
6
+ keepCollectionsMatching(include?: string[], exclude?: string[]): void;
7
+ private validateCollectionNames;
8
+ }
9
+ //# sourceMappingURL=datasource.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 datasource_decorator_1 = __importDefault(require("../datasource-decorator"));
7
+ const collection_1 = __importDefault(require("../publication-field/collection"));
8
+ class PublicationCollectionDataSourceDecorator extends datasource_decorator_1.default {
9
+ constructor(childDataSource) {
10
+ super(childDataSource, collection_1.default);
11
+ }
12
+ keepCollectionsMatching(include, exclude) {
13
+ this.validateCollectionNames([...(include ?? []), ...(exclude ?? [])]);
14
+ const deleted = new Set();
15
+ // List collection we're keeping from the white/black list.
16
+ for (const name of Object.keys(this._collections)) {
17
+ if ((include && !include.includes(name)) || exclude?.includes(name)) {
18
+ deleted.add(name);
19
+ }
20
+ }
21
+ // Delete the relations to the collections we're not keeping.
22
+ for (const collection of Object.values(this._collections)) {
23
+ for (const [fieldName, field] of Object.entries(collection.schema.fields)) {
24
+ if ((field.type !== 'Column' && deleted.has(field.foreignCollection)) ||
25
+ (field.type === 'ManyToMany' && deleted.has(field.throughCollection)))
26
+ collection.changeFieldVisibility(fieldName, false);
27
+ }
28
+ }
29
+ // Delete the collections themselves.
30
+ for (const name of deleted.values()) {
31
+ delete this._collections[name];
32
+ }
33
+ }
34
+ validateCollectionNames(names) {
35
+ for (const name of names) {
36
+ if (!this._collections[name]) {
37
+ throw new Error(`Unknown collection name: "${name}"`);
38
+ }
39
+ }
40
+ }
41
+ }
42
+ exports.default = PublicationCollectionDataSourceDecorator;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNvcmF0b3JzL3B1YmxpY2F0aW9uLWNvbGxlY3Rpb24vZGF0YXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLG1GQUEwRDtBQUMxRCxpRkFBa0Y7QUFFbEYsTUFBcUIsd0NBQXlDLFNBQVEsOEJBQXdEO0lBQzVILFlBQVksZUFBMkI7UUFDckMsS0FBSyxDQUFDLGVBQWUsRUFBRSxvQkFBbUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxPQUFrQixFQUFFLE9BQWtCO1FBQzVELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUVsQywyREFBMkQ7UUFDM0QsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNqRCxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLE9BQU8sRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ25FLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkI7U0FDRjtRQUVELDZEQUE2RDtRQUM3RCxLQUFLLE1BQU0sVUFBVSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3pELEtBQUssTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3pFLElBQ0UsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUNqRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssWUFBWSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBRXJFLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDdEQ7U0FDRjtRQUVELHFDQUFxQztRQUNyQyxLQUFLLE1BQU0sSUFBSSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNuQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRU8sdUJBQXVCLENBQUMsS0FBZTtRQUM3QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsSUFBSSxHQUFHLENBQUMsQ0FBQzthQUN2RDtTQUNGO0lBQ0gsQ0FBQztDQUNGO0FBekNELDJEQXlDQyJ9
@@ -2,8 +2,8 @@ import { Caller, CollectionSchema, RecordData } from '@forestadmin/datasource-to
2
2
  import CollectionDecorator from '../collection-decorator';
3
3
  import DataSourceDecorator from '../datasource-decorator';
4
4
  /** This decorator allows hiding fields */
5
- export default class PublicationCollectionDecorator extends CollectionDecorator {
6
- readonly dataSource: DataSourceDecorator<PublicationCollectionDecorator>;
5
+ export default class PublicationFieldCollectionDecorator extends CollectionDecorator {
6
+ readonly dataSource: DataSourceDecorator<PublicationFieldCollectionDecorator>;
7
7
  private readonly unpublished;
8
8
  /** Show/hide fields from the schema */
9
9
  changeFieldVisibility(name: string, visible: boolean): void;
@@ -0,0 +1,63 @@
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 collection_decorator_1 = __importDefault(require("../collection-decorator"));
7
+ /** This decorator allows hiding fields */
8
+ class PublicationFieldCollectionDecorator extends collection_decorator_1.default {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.unpublished = new Set();
12
+ }
13
+ /** Show/hide fields from the schema */
14
+ changeFieldVisibility(name, visible) {
15
+ const field = this.childCollection.schema.fields[name];
16
+ if (!field) {
17
+ throw new Error(`No such field '${name}'`);
18
+ }
19
+ if (field.type === 'Column' && field.isPrimaryKey) {
20
+ throw new Error(`Cannot hide primary key`);
21
+ }
22
+ if (!visible)
23
+ this.unpublished.add(name);
24
+ else
25
+ this.unpublished.delete(name);
26
+ this.markSchemaAsDirty();
27
+ }
28
+ async create(caller, data) {
29
+ const records = await super.create(caller, data);
30
+ return records.map(childRecord => {
31
+ const record = {};
32
+ for (const key of Object.keys(childRecord))
33
+ if (!this.unpublished.has(key))
34
+ record[key] = childRecord[key];
35
+ return record;
36
+ });
37
+ }
38
+ refineSchema(childSchema) {
39
+ const fields = {};
40
+ for (const [name, field] of Object.entries(childSchema.fields)) {
41
+ if (this.isPublished(name)) {
42
+ fields[name] = field;
43
+ }
44
+ }
45
+ return { ...childSchema, fields };
46
+ }
47
+ isPublished(name) {
48
+ const field = this.childCollection.schema.fields[name];
49
+ return (!this.unpublished.has(name) &&
50
+ // Columns have no special requirements
51
+ (field.type === 'Column' ||
52
+ // Many to one, one to one and one to many need the foreign key to be published
53
+ (field.type === 'ManyToOne' && this.isPublished(field.foreignKey)) ||
54
+ ((field.type === 'OneToOne' || field.type === 'OneToMany') &&
55
+ this.dataSource.getCollection(field.foreignCollection).isPublished(field.originKey)) ||
56
+ // Many to many relations depend on both foreignKey and originKey to be published
57
+ (field.type === 'ManyToMany' &&
58
+ this.dataSource.getCollection(field.throughCollection).isPublished(field.foreignKey) &&
59
+ this.dataSource.getCollection(field.throughCollection).isPublished(field.originKey))));
60
+ }
61
+ }
62
+ exports.default = PublicationFieldCollectionDecorator;
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNvcmF0b3JzL3B1YmxpY2F0aW9uLWZpZWxkL2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxtRkFBMEQ7QUFHMUQsMENBQTBDO0FBQzFDLE1BQXFCLG1DQUFvQyxTQUFRLDhCQUFtQjtJQUFwRjs7UUFFbUIsZ0JBQVcsR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQTREeEQsQ0FBQztJQTFEQyx1Q0FBdUM7SUFDdkMscUJBQXFCLENBQUMsSUFBWSxFQUFFLE9BQWdCO1FBQ2xELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2RCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUM1QztRQUVELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRTtZQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDNUM7UUFFRCxJQUFJLENBQUMsT0FBTztZQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDOztZQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRVEsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFjLEVBQUUsSUFBa0I7UUFDdEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVqRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDL0IsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7b0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVqRSxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFa0IsWUFBWSxDQUFDLFdBQTZCO1FBQzNELE1BQU0sTUFBTSxHQUFnQyxFQUFFLENBQUM7UUFFL0MsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQzthQUN0QjtTQUNGO1FBRUQsT0FBTyxFQUFFLEdBQUcsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTyxXQUFXLENBQUMsSUFBWTtRQUM5QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkQsT0FBTyxDQUNMLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQzNCLHVDQUF1QztZQUN2QyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUTtnQkFDdEIsK0VBQStFO2dCQUMvRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNsRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUM7b0JBQ3hELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3RGLGlGQUFpRjtnQkFDakYsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVk7b0JBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO29CQUNwRixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FDMUYsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTlERCxzREE4REMifQ==
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { default as CollectionCustomizer } from './collection-customizer';
2
2
  export { default as DataSourceCustomizer } from './datasource-customizer';
3
3
  export * from './templates';
4
4
  export * from './types';
5
- export { ActionDefinition } from './decorators/actions/types/actions';
5
+ export * from './decorators/actions/types/actions';
6
6
  export { ChartDefinition } from './decorators/chart/types';
7
7
  export { ComputedDefinition } from './decorators/computed/types';
8
8
  export { OperatorDefinition } from './decorators/operators-emulate/types';
@@ -10,5 +10,6 @@ export { RelationDefinition } from './decorators/relation/types';
10
10
  export { SearchDefinition } from './decorators/search/types';
11
11
  export { SegmentDefinition } from './decorators/segment/types';
12
12
  export { WriteDefinition } from './decorators/write/types';
13
- export { HookHandler, HookType, HookPosition, HooksContext } from './decorators/hook/types';
13
+ export * from './decorators/hook/types';
14
+ export { default as CollectionCustomizationContext } from './context/collection-context';
14
15
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -17,11 +17,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.DataSourceCustomizer = exports.CollectionCustomizer = void 0;
20
+ exports.CollectionCustomizationContext = exports.DataSourceCustomizer = exports.CollectionCustomizer = void 0;
21
21
  var collection_customizer_1 = require("./collection-customizer");
22
22
  Object.defineProperty(exports, "CollectionCustomizer", { enumerable: true, get: function () { return __importDefault(collection_customizer_1).default; } });
23
23
  var datasource_customizer_1 = require("./datasource-customizer");
24
24
  Object.defineProperty(exports, "DataSourceCustomizer", { enumerable: true, get: function () { return __importDefault(datasource_customizer_1).default; } });
25
25
  __exportStar(require("./templates"), exports);
26
26
  __exportStar(require("./types"), exports);
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpRUFBMEU7QUFBakUsOElBQUEsT0FBTyxPQUF3QjtBQUN4QyxpRUFBMEU7QUFBakUsOElBQUEsT0FBTyxPQUF3QjtBQUV4Qyw4Q0FBNEI7QUFDNUIsMENBQXdCIn0=
27
+ // Decorators (helpers)
28
+ __exportStar(require("./decorators/actions/types/actions"), exports);
29
+ __exportStar(require("./decorators/hook/types"), exports);
30
+ // Context
31
+ var collection_context_1 = require("./context/collection-context");
32
+ Object.defineProperty(exports, "CollectionCustomizationContext", { enumerable: true, get: function () { return __importDefault(collection_context_1).default; } });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpRUFBMEU7QUFBakUsOElBQUEsT0FBTyxPQUF3QjtBQUN4QyxpRUFBMEU7QUFBakUsOElBQUEsT0FBTyxPQUF3QjtBQUV4Qyw4Q0FBNEI7QUFDNUIsMENBQXdCO0FBRXhCLHVCQUF1QjtBQUN2QixxRUFBbUQ7QUFRbkQsMERBQXdDO0FBRXhDLFVBQVU7QUFDVixtRUFBeUY7QUFBaEYscUpBQUEsT0FBTyxPQUFrQyJ9
package/dist/types.d.ts CHANGED
@@ -14,5 +14,7 @@ export declare type DataSourceOptions = {
14
14
  rename?: {
15
15
  [oldName: string]: string;
16
16
  };
17
+ include?: string[];
18
+ exclude?: string[];
17
19
  };
18
20
  //# sourceMappingURL=types.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forestadmin/datasource-customizer",
3
- "version": "1.0.0-alpha.1",
3
+ "version": "1.0.0-alpha.3",
4
4
  "main": "dist/index.js",
5
5
  "license": "GPL-3.0",
6
6
  "publishConfig": {
@@ -29,7 +29,7 @@
29
29
  "fishery": "^2.1.0"
30
30
  },
31
31
  "dependencies": {
32
- "@forestadmin/datasource-toolkit": "1.0.0-alpha.1",
32
+ "@forestadmin/datasource-toolkit": "1.0.0-alpha.3",
33
33
  "luxon": "^2.3.0",
34
34
  "object-hash": "^3.0.0",
35
35
  "uuid": "^8.3.2"
@@ -1,63 +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 collection_decorator_1 = __importDefault(require("../collection-decorator"));
7
- /** This decorator allows hiding fields */
8
- class PublicationCollectionDecorator extends collection_decorator_1.default {
9
- constructor() {
10
- super(...arguments);
11
- this.unpublished = new Set();
12
- }
13
- /** Show/hide fields from the schema */
14
- changeFieldVisibility(name, visible) {
15
- const field = this.childCollection.schema.fields[name];
16
- if (!field) {
17
- throw new Error(`No such field '${name}'`);
18
- }
19
- if (field.type === 'Column' && field.isPrimaryKey) {
20
- throw new Error(`Cannot hide primary key`);
21
- }
22
- if (!visible)
23
- this.unpublished.add(name);
24
- else
25
- this.unpublished.delete(name);
26
- this.markSchemaAsDirty();
27
- }
28
- async create(caller, data) {
29
- const records = await super.create(caller, data);
30
- return records.map(childRecord => {
31
- const record = {};
32
- for (const key of Object.keys(childRecord))
33
- if (!this.unpublished.has(key))
34
- record[key] = childRecord[key];
35
- return record;
36
- });
37
- }
38
- refineSchema(childSchema) {
39
- const fields = {};
40
- for (const [name, field] of Object.entries(childSchema.fields)) {
41
- if (this.isPublished(name)) {
42
- fields[name] = field;
43
- }
44
- }
45
- return { ...childSchema, fields };
46
- }
47
- isPublished(name) {
48
- const field = this.childCollection.schema.fields[name];
49
- return (!this.unpublished.has(name) &&
50
- // Columns have no special requirements
51
- (field.type === 'Column' ||
52
- // Many to one, one to one and one to many need the foreign key to be published
53
- (field.type === 'ManyToOne' && this.isPublished(field.foreignKey)) ||
54
- ((field.type === 'OneToOne' || field.type === 'OneToMany') &&
55
- this.dataSource.getCollection(field.foreignCollection).isPublished(field.originKey)) ||
56
- // Many to many relations depend on both foreignKey and originKey to be published
57
- (field.type === 'ManyToMany' &&
58
- this.dataSource.getCollection(field.throughCollection).isPublished(field.foreignKey) &&
59
- this.dataSource.getCollection(field.throughCollection).isPublished(field.originKey))));
60
- }
61
- }
62
- exports.default = PublicationCollectionDecorator;
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNvcmF0b3JzL3B1YmxpY2F0aW9uL2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxtRkFBMEQ7QUFHMUQsMENBQTBDO0FBQzFDLE1BQXFCLDhCQUErQixTQUFRLDhCQUFtQjtJQUEvRTs7UUFFbUIsZ0JBQVcsR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQTREeEQsQ0FBQztJQTFEQyx1Q0FBdUM7SUFDdkMscUJBQXFCLENBQUMsSUFBWSxFQUFFLE9BQWdCO1FBQ2xELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV2RCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUM1QztRQUVELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRTtZQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDNUM7UUFFRCxJQUFJLENBQUMsT0FBTztZQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDOztZQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRVEsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFjLEVBQUUsSUFBa0I7UUFDdEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVqRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDL0IsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7b0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVqRSxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFa0IsWUFBWSxDQUFDLFdBQTZCO1FBQzNELE1BQU0sTUFBTSxHQUFnQyxFQUFFLENBQUM7UUFFL0MsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQzthQUN0QjtTQUNGO1FBRUQsT0FBTyxFQUFFLEdBQUcsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTyxXQUFXLENBQUMsSUFBWTtRQUM5QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkQsT0FBTyxDQUNMLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQzNCLHVDQUF1QztZQUN2QyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUTtnQkFDdEIsK0VBQStFO2dCQUMvRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNsRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUM7b0JBQ3hELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3RGLGlGQUFpRjtnQkFDakYsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVk7b0JBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO29CQUNwRixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FDMUYsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTlERCxpREE4REMifQ==