@webiny/api-aco 5.37.8 → 5.38.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/apps/AcoApp.d.ts +4 -0
  2. package/apps/AcoApp.js +44 -5
  3. package/apps/AcoApp.js.map +1 -1
  4. package/apps/AcoApps.js +3 -1
  5. package/apps/app.gql.js +6 -4
  6. package/apps/app.gql.js.map +1 -1
  7. package/apps/index.js +3 -1
  8. package/createAcoContext.js +98 -15
  9. package/createAcoContext.js.map +1 -1
  10. package/createAcoGraphQL.js +5 -2
  11. package/createAcoGraphQL.js.map +1 -1
  12. package/createAcoHooks.js +9 -3
  13. package/createAcoHooks.js.map +1 -1
  14. package/createAcoModels.js +5 -2
  15. package/createAcoModels.js.map +1 -1
  16. package/createAcoStorageOperations.js +5 -2
  17. package/createAcoStorageOperations.js.map +1 -1
  18. package/fields/index.js +3 -1
  19. package/fields/location.js +3 -1
  20. package/filter/filter.crud.d.ts +3 -0
  21. package/filter/filter.crud.js +94 -0
  22. package/filter/filter.crud.js.map +1 -0
  23. package/filter/filter.gql.d.ts +3 -0
  24. package/filter/filter.gql.js +150 -0
  25. package/filter/filter.gql.js.map +1 -0
  26. package/filter/filter.model.d.ts +4 -0
  27. package/filter/filter.model.js +127 -0
  28. package/filter/filter.model.js.map +1 -0
  29. package/filter/filter.so.d.ts +3 -0
  30. package/filter/filter.so.js +96 -0
  31. package/filter/filter.so.js.map +1 -0
  32. package/filter/filter.types.d.ts +95 -0
  33. package/filter/filter.types.js +14 -0
  34. package/filter/filter.types.js.map +1 -0
  35. package/folder/folder.crud.d.ts +8 -1
  36. package/folder/folder.crud.js +197 -15
  37. package/folder/folder.crud.js.map +1 -1
  38. package/folder/folder.gql.js +75 -7
  39. package/folder/folder.gql.js.map +1 -1
  40. package/folder/folder.model.js +52 -3
  41. package/folder/folder.model.js.map +1 -1
  42. package/folder/folder.so.js +12 -4
  43. package/folder/folder.so.js.map +1 -1
  44. package/folder/folder.types.d.ts +23 -0
  45. package/folder/folder.types.js +3 -1
  46. package/folder/folder.types.js.map +1 -1
  47. package/folder/onFolderBeforeDeleteAco.hook.d.ts +2 -0
  48. package/folder/{onFolderBeforeDelete.hook.js → onFolderBeforeDeleteAco.hook.js} +8 -6
  49. package/folder/onFolderBeforeDeleteAco.hook.js.map +1 -0
  50. package/folder/onFolderBeforeDeleteFm.hook.d.ts +2 -0
  51. package/folder/onFolderBeforeDeleteFm.hook.js +49 -0
  52. package/folder/onFolderBeforeDeleteFm.hook.js.map +1 -0
  53. package/folder/onFolderBeforeDeleteHcms.hook.d.ts +2 -0
  54. package/folder/onFolderBeforeDeleteHcms.hook.js +56 -0
  55. package/folder/onFolderBeforeDeleteHcms.hook.js.map +1 -0
  56. package/index.d.ts +1 -0
  57. package/index.js +12 -2
  58. package/index.js.map +1 -1
  59. package/package.json +25 -20
  60. package/plugins/AcoAppModifierPlugin.js +3 -1
  61. package/plugins/AcoAppRegisterPlugin.js +3 -1
  62. package/plugins/index.js +3 -1
  63. package/record/graphql/createAppResolvers.js +11 -9
  64. package/record/graphql/createAppResolvers.js.map +1 -1
  65. package/record/graphql/createAppSchema.js +3 -1
  66. package/record/record.crud.js +3 -1
  67. package/record/record.gql.js +3 -1
  68. package/record/record.model.js +3 -1
  69. package/record/record.so.js +3 -1
  70. package/record/record.types.d.ts +2 -1
  71. package/record/record.types.js +3 -1
  72. package/record/record.types.js.map +1 -1
  73. package/types.d.ts +19 -5
  74. package/types.js +16 -1
  75. package/types.js.map +1 -1
  76. package/utils/FolderLevelPermissions.d.ts +68 -0
  77. package/utils/FolderLevelPermissions.js +370 -0
  78. package/utils/FolderLevelPermissions.js.map +1 -0
  79. package/utils/acoRecordId.js +3 -1
  80. package/utils/createListSort.js +3 -1
  81. package/utils/createModelField.js +3 -1
  82. package/utils/createOperationsWrapper.js +3 -1
  83. package/utils/decorators/CmsEntriesCrudDecorators.d.ts +11 -0
  84. package/utils/decorators/CmsEntriesCrudDecorators.js +244 -0
  85. package/utils/decorators/CmsEntriesCrudDecorators.js.map +1 -0
  86. package/utils/decorators/constants.d.ts +1 -0
  87. package/utils/decorators/constants.js +10 -0
  88. package/utils/decorators/constants.js.map +1 -0
  89. package/utils/decorators/where.d.ts +14 -0
  90. package/utils/decorators/where.js +45 -0
  91. package/utils/decorators/where.js.map +1 -0
  92. package/utils/ensureAuthentication.d.ts +2 -0
  93. package/utils/{checkPermissions.js → ensureAuthentication.js} +5 -3
  94. package/utils/ensureAuthentication.js.map +1 -0
  95. package/utils/fieldResolver.js +3 -1
  96. package/utils/getFieldValues.d.ts +2 -0
  97. package/utils/getFieldValues.js +9 -1
  98. package/utils/getFieldValues.js.map +1 -1
  99. package/utils/getFolderAndItsAncestors.d.ts +2 -2
  100. package/utils/getFolderAndItsAncestors.js +16 -11
  101. package/utils/getFolderAndItsAncestors.js.map +1 -1
  102. package/utils/isInstallationPending.js +3 -1
  103. package/utils/modelFactory.js +3 -1
  104. package/utils/resolve.js +3 -1
  105. package/folder/onFolderBeforeDelete.hook.d.ts +0 -2
  106. package/folder/onFolderBeforeDelete.hook.js.map +0 -1
  107. package/utils/checkPermissions.d.ts +0 -2
  108. package/utils/checkPermissions.js.map +0 -1
package/apps/AcoApp.d.ts CHANGED
@@ -5,6 +5,9 @@ export declare class AcoApp implements IAcoApp {
5
5
  readonly context: AcoContext;
6
6
  readonly model: CmsModel;
7
7
  private readonly fields;
8
+ private readonly onEntry?;
9
+ private readonly onEntryList?;
10
+ private readonly onAnyRequest?;
8
11
  get search(): AcoSearchRecordCrudBase;
9
12
  get folder(): import("../types").AcoFolderCrud;
10
13
  private getModel;
@@ -14,4 +17,5 @@ export declare class AcoApp implements IAcoApp {
14
17
  addField(field: CmsModelField): void;
15
18
  removeField(id: string): void;
16
19
  modifyField(id: string, cb: IAcoAppModifyFieldCallableCallback): void;
20
+ private execOnAnyRequest;
17
21
  }
package/apps/AcoApp.js CHANGED
@@ -19,27 +19,53 @@ class AcoApp {
19
19
  get search() {
20
20
  return {
21
21
  create: async data => {
22
- return this.context.aco.search.create(this.getModel(), data);
22
+ await this.execOnAnyRequest("create");
23
+ const result = await this.context.aco.search.create(this.getModel(), data);
24
+ if (!this.onEntry) {
25
+ return result;
26
+ }
27
+ return this.onEntry(result);
23
28
  },
24
29
  update: async (id, data) => {
30
+ await this.execOnAnyRequest("update");
25
31
  /**
26
32
  * Required to have as any atm as TS is breaking on the return type.
27
33
  */
28
- return await this.context.aco.search.update(this.getModel(), id, data);
34
+ const result = await this.context.aco.search.update(this.getModel(), id, data);
35
+ if (!this.onEntry) {
36
+ return result;
37
+ }
38
+ return this.onEntry(result);
29
39
  },
30
40
  move: async (id, folderId) => {
41
+ await this.execOnAnyRequest("move");
31
42
  return this.context.aco.search.move(this.getModel(), id, folderId);
32
43
  },
33
44
  get: async id => {
34
- return this.context.aco.search.get(this.getModel(), id);
45
+ await this.execOnAnyRequest("fetch");
46
+ const result = await this.context.aco.search.get(this.getModel(), id);
47
+ if (!result || !this.onEntry) {
48
+ return result;
49
+ }
50
+ return this.onEntry(result);
35
51
  },
36
52
  list: async params => {
37
- return this.context.aco.search.list(this.getModel(), params);
53
+ await this.execOnAnyRequest("fetch");
54
+ const result = await this.context.aco.search.list(this.getModel(), params);
55
+ const onEntryList = this.onEntryList;
56
+ if (!onEntryList) {
57
+ return result;
58
+ }
59
+ const [entries, meta] = result;
60
+ const items = await onEntryList(entries);
61
+ return [items, meta];
38
62
  },
39
63
  delete: async id => {
64
+ await this.execOnAnyRequest("delete");
40
65
  return this.context.aco.search.delete(this.getModel(), id);
41
66
  },
42
67
  listTags: async params => {
68
+ await this.execOnAnyRequest("fetch");
43
69
  return this.context.aco.search.listTags(this.getModel(), params);
44
70
  }
45
71
  };
@@ -61,8 +87,13 @@ class AcoApp {
61
87
  (0, _defineProperty2.default)(this, "context", void 0);
62
88
  (0, _defineProperty2.default)(this, "model", void 0);
63
89
  (0, _defineProperty2.default)(this, "fields", void 0);
90
+ (0, _defineProperty2.default)(this, "onEntry", void 0);
91
+ (0, _defineProperty2.default)(this, "onEntryList", void 0);
92
+ (0, _defineProperty2.default)(this, "onAnyRequest", void 0);
64
93
  this.context = context;
65
94
  this.name = params.name;
95
+ this.onEntry = params.onEntry;
96
+ this.onEntryList = params.onEntryList;
66
97
  this.model = (0, _structuredClone.default)(params.model);
67
98
  /**
68
99
  * We can safely define the api name of the model as we control everything here.
@@ -113,5 +144,13 @@ class AcoApp {
113
144
  }
114
145
  this.fields[index] = cb((0, _structuredClone.default)(this.fields[index]));
115
146
  }
147
+ async execOnAnyRequest(action) {
148
+ if (!this.onAnyRequest) {
149
+ return;
150
+ }
151
+ await this.onAnyRequest(this.context, action);
152
+ }
116
153
  }
117
- exports.AcoApp = AcoApp;
154
+ exports.AcoApp = AcoApp;
155
+
156
+ //# sourceMappingURL=AcoApp.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_structuredClone","_upperFirst","_camelCase","_record","createApiName","name","lodashUpperFirst","lodashCamelCase","AcoApp","search","create","data","context","aco","getModel","update","id","move","folderId","get","list","params","delete","listTags","folder","tenant","tenancy","getCurrentTenant","locale","i18n","getContentLocale","code","_objectSpread2","default","model","constructor","_this$model$fields$in","_defineProperty2","structuredClone","modelId","toLowerCase","apiName","singularApiName","pluralApiName","index","fields","findIndex","f","fieldId","WebinyError","settings","push","getFields","addField","field","removeField","DEFAULT_FIELDS","includes","splice","modifyField","cb","exports"],"sources":["AcoApp.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport structuredClone from \"@ungap/structured-clone\";\nimport {\n AcoContext,\n AcoSearchRecordCrudBase,\n CreateSearchRecordParams,\n IAcoApp,\n IAcoAppModifyFieldCallableCallback,\n IAcoAppParams,\n ListSearchRecordsParams,\n ListSearchRecordTagsParams,\n SearchRecord\n} from \"~/types\";\nimport { CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport lodashUpperFirst from \"lodash/upperFirst\";\nimport lodashCamelCase from \"lodash/camelCase\";\nimport { DEFAULT_FIELDS } from \"~/record/record.model\";\n\nconst createApiName = (name: string) => {\n return lodashUpperFirst(lodashCamelCase(name));\n};\n\nexport class AcoApp implements IAcoApp {\n public readonly name: string;\n public readonly context: AcoContext;\n public readonly model: CmsModel;\n private readonly fields: CmsModelField[];\n\n public get search(): AcoSearchRecordCrudBase {\n return {\n create: async <TData>(data: CreateSearchRecordParams<TData>) => {\n return this.context.aco.search.create<TData>(this.getModel(), data);\n },\n update: async <TData>(id: string, data: SearchRecord<TData>) => {\n /**\n * Required to have as any atm as TS is breaking on the return type.\n */\n return (await this.context.aco.search.update<TData>(\n this.getModel(),\n id,\n data\n )) as any;\n },\n move: async (id: string, folderId?: string) => {\n return this.context.aco.search.move(this.getModel(), id, folderId);\n },\n get: async <TData>(id: string) => {\n return this.context.aco.search.get<TData>(this.getModel(), id);\n },\n list: async <TData>(params: ListSearchRecordsParams) => {\n return this.context.aco.search.list<TData>(this.getModel(), params);\n },\n delete: async (id: string): Promise<Boolean> => {\n return this.context.aco.search.delete(this.getModel(), id);\n },\n listTags: async (params: ListSearchRecordTagsParams) => {\n return this.context.aco.search.listTags(this.getModel(), params);\n }\n };\n }\n\n public get folder() {\n return this.context.aco.folder;\n }\n\n private getModel() {\n const tenant = this.context.tenancy.getCurrentTenant().id;\n const locale = this.context.i18n.getContentLocale()!.code;\n\n return { ...this.model, tenant, locale };\n }\n\n private constructor(context: AcoContext, params: IAcoAppParams) {\n this.context = context;\n this.name = params.name;\n this.model = structuredClone(params.model);\n /**\n * We can safely define the api name of the model as we control everything here.\n */\n this.model.name = `${this.model.name} ${this.name}`;\n this.model.modelId = `${this.model.modelId}-${this.name.toLowerCase()}`;\n const apiName = `AcoSearchRecord${createApiName(params.apiName)}`;\n this.model.singularApiName = apiName;\n this.model.pluralApiName = apiName;\n\n const index = this.model.fields.findIndex(f => f.fieldId === \"data\");\n if (index === -1) {\n throw new WebinyError(\n `The \"data\" field does not exist in model \"${this.model.modelId}\".`,\n \"MODEL_DATA_FIELD_ERROR\",\n {\n modelId: this.model.modelId\n }\n );\n } else if (!this.model.fields[index].settings?.fields) {\n this.model.fields[index].settings!.fields = [];\n }\n this.fields = this.model.fields[index].settings!.fields as CmsModelField[];\n this.fields.push(...params.fields);\n }\n\n public static create(context: AcoContext, params: IAcoAppParams) {\n return new AcoApp(context, params);\n }\n\n public getFields(): CmsModelField[] {\n return this.fields;\n }\n\n public addField(field: CmsModelField): void {\n this.fields.push(field);\n }\n\n public removeField(id: string): void {\n if (DEFAULT_FIELDS.includes(id)) {\n throw new WebinyError(\n `Cannot remove the default field from the ACO App.`,\n \"REMOVE_DEFAULT_FIELD_ERROR\",\n {\n fieldId: id\n }\n );\n }\n const index = this.fields.findIndex(field => field.id === id);\n if (index === -1) {\n return;\n }\n this.fields.splice(index, 1);\n }\n\n public modifyField(id: string, cb: IAcoAppModifyFieldCallableCallback): void {\n const index = this.fields.findIndex(field => field.id === id);\n if (index === -1) {\n throw new WebinyError(\n `There is no field \"${id}\" in app \"${this.name}\".`,\n \"FIELD_NOT_FOUND_ERROR\",\n {\n id\n }\n );\n }\n this.fields[index] = cb(structuredClone(this.fields[index]));\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_structuredClone","_upperFirst","_camelCase","_record","createApiName","name","lodashUpperFirst","lodashCamelCase","AcoApp","search","create","data","execOnAnyRequest","result","context","aco","getModel","onEntry","update","id","move","folderId","get","list","params","onEntryList","entries","meta","items","delete","listTags","folder","tenant","tenancy","getCurrentTenant","locale","i18n","getContentLocale","code","_objectSpread2","default","model","constructor","_this$model$fields$in","_defineProperty2","structuredClone","modelId","toLowerCase","apiName","singularApiName","pluralApiName","index","fields","findIndex","f","fieldId","WebinyError","settings","push","getFields","addField","field","removeField","DEFAULT_FIELDS","includes","splice","modifyField","cb","action","onAnyRequest","exports"],"sources":["AcoApp.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport structuredClone from \"@ungap/structured-clone\";\nimport {\n AcoContext,\n AcoRequestAction,\n AcoSearchRecordCrudBase,\n CreateSearchRecordParams,\n IAcoApp,\n IAcoAppModifyFieldCallableCallback,\n IAcoAppOnAnyRequest,\n IAcoAppOnEntry,\n IAcoAppOnEntryList,\n IAcoAppParams,\n ListSearchRecordsParams,\n ListSearchRecordTagsParams,\n SearchRecord\n} from \"~/types\";\nimport { CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport lodashUpperFirst from \"lodash/upperFirst\";\nimport lodashCamelCase from \"lodash/camelCase\";\nimport { DEFAULT_FIELDS } from \"~/record/record.model\";\n\nconst createApiName = (name: string) => {\n return lodashUpperFirst(lodashCamelCase(name));\n};\n\nexport class AcoApp implements IAcoApp {\n public readonly name: string;\n public readonly context: AcoContext;\n public readonly model: CmsModel;\n private readonly fields: CmsModelField[];\n private readonly onEntry?: IAcoAppOnEntry;\n private readonly onEntryList?: IAcoAppOnEntryList;\n private readonly onAnyRequest?: IAcoAppOnAnyRequest;\n\n public get search(): AcoSearchRecordCrudBase {\n return {\n create: async <TData>(data: CreateSearchRecordParams<TData>) => {\n await this.execOnAnyRequest(\"create\");\n const result = await this.context.aco.search.create<TData>(this.getModel(), data);\n if (!this.onEntry) {\n return result;\n }\n return this.onEntry(result);\n },\n update: async <TData>(id: string, data: SearchRecord<TData>) => {\n await this.execOnAnyRequest(\"update\");\n /**\n * Required to have as any atm as TS is breaking on the return type.\n */\n const result = await this.context.aco.search.update<TData>(\n this.getModel(),\n id,\n data\n );\n if (!this.onEntry) {\n return result;\n }\n return this.onEntry(result);\n },\n move: async (id: string, folderId?: string) => {\n await this.execOnAnyRequest(\"move\");\n return this.context.aco.search.move(this.getModel(), id, folderId);\n },\n get: async <TData>(id: string) => {\n await this.execOnAnyRequest(\"fetch\");\n const result = await this.context.aco.search.get<TData>(this.getModel(), id);\n if (!result || !this.onEntry) {\n return result;\n }\n return this.onEntry(result);\n },\n list: async <TData>(params: ListSearchRecordsParams) => {\n await this.execOnAnyRequest(\"fetch\");\n const result = await this.context.aco.search.list<TData>(this.getModel(), params);\n const onEntryList = this.onEntryList;\n if (!onEntryList) {\n return result;\n }\n const [entries, meta] = result;\n const items = await onEntryList(entries);\n return [items, meta];\n },\n delete: async (id: string): Promise<Boolean> => {\n await this.execOnAnyRequest(\"delete\");\n return this.context.aco.search.delete(this.getModel(), id);\n },\n listTags: async (params: ListSearchRecordTagsParams) => {\n await this.execOnAnyRequest(\"fetch\");\n return this.context.aco.search.listTags(this.getModel(), params);\n }\n };\n }\n\n public get folder() {\n return this.context.aco.folder;\n }\n\n private getModel() {\n const tenant = this.context.tenancy.getCurrentTenant().id;\n const locale = this.context.i18n.getContentLocale()!.code;\n\n return { ...this.model, tenant, locale };\n }\n\n private constructor(context: AcoContext, params: IAcoAppParams) {\n this.context = context;\n this.name = params.name;\n this.onEntry = params.onEntry;\n this.onEntryList = params.onEntryList;\n this.model = structuredClone(params.model);\n /**\n * We can safely define the api name of the model as we control everything here.\n */\n this.model.name = `${this.model.name} ${this.name}`;\n this.model.modelId = `${this.model.modelId}-${this.name.toLowerCase()}`;\n const apiName = `AcoSearchRecord${createApiName(params.apiName)}`;\n this.model.singularApiName = apiName;\n this.model.pluralApiName = apiName;\n\n const index = this.model.fields.findIndex(f => f.fieldId === \"data\");\n if (index === -1) {\n throw new WebinyError(\n `The \"data\" field does not exist in model \"${this.model.modelId}\".`,\n \"MODEL_DATA_FIELD_ERROR\",\n {\n modelId: this.model.modelId\n }\n );\n } else if (!this.model.fields[index].settings?.fields) {\n this.model.fields[index].settings!.fields = [];\n }\n this.fields = this.model.fields[index].settings!.fields as CmsModelField[];\n this.fields.push(...params.fields);\n }\n\n public static create(context: AcoContext, params: IAcoAppParams) {\n return new AcoApp(context, params);\n }\n\n public getFields(): CmsModelField[] {\n return this.fields;\n }\n\n public addField(field: CmsModelField): void {\n this.fields.push(field);\n }\n\n public removeField(id: string): void {\n if (DEFAULT_FIELDS.includes(id)) {\n throw new WebinyError(\n `Cannot remove the default field from the ACO App.`,\n \"REMOVE_DEFAULT_FIELD_ERROR\",\n {\n fieldId: id\n }\n );\n }\n const index = this.fields.findIndex(field => field.id === id);\n if (index === -1) {\n return;\n }\n this.fields.splice(index, 1);\n }\n\n public modifyField(id: string, cb: IAcoAppModifyFieldCallableCallback): void {\n const index = this.fields.findIndex(field => field.id === id);\n if (index === -1) {\n throw new WebinyError(\n `There is no field \"${id}\" in app \"${this.name}\".`,\n \"FIELD_NOT_FOUND_ERROR\",\n {\n id\n }\n );\n }\n this.fields[index] = cb(structuredClone(this.fields[index]));\n }\n\n private async execOnAnyRequest(action: AcoRequestAction): Promise<void> {\n if (!this.onAnyRequest) {\n return;\n }\n await this.onAnyRequest(this.context, action);\n }\n}\n"],"mappings":"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"}
package/apps/AcoApps.js CHANGED
@@ -73,4 +73,6 @@ class AcoApps {
73
73
  return app;
74
74
  }
75
75
  }
76
- exports.AcoApps = AcoApps;
76
+ exports.AcoApps = AcoApps;
77
+
78
+ //# sourceMappingURL=AcoApps.js.map
package/apps/app.gql.js CHANGED
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.appGql = void 0;
8
8
  var _handlerGraphql = require("@webiny/handler-graphql");
9
9
  var _omit = _interopRequireDefault(require("lodash/omit"));
10
- var _checkPermissions = require("../utils/checkPermissions");
10
+ var _ensureAuthentication = require("../utils/ensureAuthentication");
11
11
  var _resolve = require("../utils/resolve");
12
12
  const cleanModel = model => {
13
13
  return (0, _omit.default)(model, ["webinyVersion", "tags", "locale", "tenant", "layout", "group", "description", "isPrivate"]);
@@ -36,7 +36,7 @@ const appGql = new _handlerGraphql.GraphQLSchemaPlugin({
36
36
  AcoQuery: {
37
37
  getApp: async (_, args, context) => {
38
38
  return (0, _resolve.resolve)(async () => {
39
- (0, _checkPermissions.checkPermissions)(context);
39
+ (0, _ensureAuthentication.ensureAuthentication)(context);
40
40
  const app = context.aco.getApp(args.id);
41
41
  return {
42
42
  id: args.id,
@@ -47,7 +47,7 @@ const appGql = new _handlerGraphql.GraphQLSchemaPlugin({
47
47
  },
48
48
  getAppModel: async (_, args, context) => {
49
49
  return (0, _resolve.resolve)(async () => {
50
- (0, _checkPermissions.checkPermissions)(context);
50
+ (0, _ensureAuthentication.ensureAuthentication)(context);
51
51
  const app = context.aco.getApp(args.id);
52
52
  return cleanModel(app.model);
53
53
  });
@@ -55,4 +55,6 @@ const appGql = new _handlerGraphql.GraphQLSchemaPlugin({
55
55
  }
56
56
  }
57
57
  });
58
- exports.appGql = appGql;
58
+ exports.appGql = appGql;
59
+
60
+ //# sourceMappingURL=app.gql.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_handlerGraphql","require","_omit","_interopRequireDefault","_checkPermissions","_resolve","cleanModel","model","lodashOmit","appGql","GraphQLSchemaPlugin","typeDefs","resolvers","AcoQuery","getApp","_","args","context","resolve","checkPermissions","app","aco","id","name","getAppModel","exports"],"sources":["app.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { AcoContext } from \"~/types\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport lodashOmit from \"lodash/omit\";\nimport { checkPermissions } from \"~/utils/checkPermissions\";\nimport { resolve } from \"~/utils/resolve\";\n\nconst cleanModel = (model: CmsModel): Partial<CmsModel> => {\n return lodashOmit(model, [\n \"webinyVersion\",\n \"tags\",\n \"locale\",\n \"tenant\",\n \"layout\",\n \"group\",\n \"description\",\n \"isPrivate\"\n ]);\n};\n\nexport const appGql = new GraphQLSchemaPlugin<AcoContext>({\n typeDefs: /* GraphQL */ `\n type AcoApp {\n id: ID!\n name: String!\n model: JSON!\n }\n type GetAppResponse {\n data: AcoApp\n error: AcoError\n }\n type GetAppModelResponse {\n data: JSON\n error: AcoError\n }\n extend type AcoQuery {\n getApp(id: ID!): GetAppResponse!\n getAppModel(id: ID!): GetAppModelResponse!\n }\n `,\n resolvers: {\n AcoQuery: {\n getApp: async (_, args, context) => {\n return resolve(async () => {\n checkPermissions(context);\n const app = context.aco.getApp(args.id);\n return {\n id: args.id,\n name: app.name,\n model: cleanModel(app.model)\n };\n });\n },\n getAppModel: async (_, args, context) => {\n return resolve(async () => {\n checkPermissions(context);\n const app = context.aco.getApp(args.id);\n return cleanModel(app.model);\n });\n }\n }\n }\n});\n"],"mappings":";;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAGA,IAAAC,KAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAEA,MAAMK,UAAU,GAAIC,KAAe,IAAwB;EACvD,OAAO,IAAAC,aAAU,EAACD,KAAK,EAAE,CACrB,eAAe,EACf,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,aAAa,EACb,WAAW,CACd,CAAC;AACN,CAAC;AAEM,MAAME,MAAM,GAAG,IAAIC,mCAAmB,CAAa;EACtDC,QAAQ,EAAE,aAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;EACDC,SAAS,EAAE;IACPC,QAAQ,EAAE;MACNC,MAAM,EAAE,MAAAA,CAAOC,CAAC,EAAEC,IAAI,EAAEC,OAAO,KAAK;QAChC,OAAO,IAAAC,gBAAO,EAAC,YAAY;UACvB,IAAAC,kCAAgB,EAACF,OAAO,CAAC;UACzB,MAAMG,GAAG,GAAGH,OAAO,CAACI,GAAG,CAACP,MAAM,CAACE,IAAI,CAACM,EAAE,CAAC;UACvC,OAAO;YACHA,EAAE,EAAEN,IAAI,CAACM,EAAE;YACXC,IAAI,EAAEH,GAAG,CAACG,IAAI;YACdhB,KAAK,EAAED,UAAU,CAACc,GAAG,CAACb,KAAK;UAC/B,CAAC;QACL,CAAC,CAAC;MACN,CAAC;MACDiB,WAAW,EAAE,MAAAA,CAAOT,CAAC,EAAEC,IAAI,EAAEC,OAAO,KAAK;QACrC,OAAO,IAAAC,gBAAO,EAAC,YAAY;UACvB,IAAAC,kCAAgB,EAACF,OAAO,CAAC;UACzB,MAAMG,GAAG,GAAGH,OAAO,CAACI,GAAG,CAACP,MAAM,CAACE,IAAI,CAACM,EAAE,CAAC;UACvC,OAAOhB,UAAU,CAACc,GAAG,CAACb,KAAK,CAAC;QAChC,CAAC,CAAC;MACN;IACJ;EACJ;AACJ,CAAC,CAAC;AAACkB,OAAA,CAAAhB,MAAA,GAAAA,MAAA"}
1
+ {"version":3,"names":["_handlerGraphql","require","_omit","_interopRequireDefault","_ensureAuthentication","_resolve","cleanModel","model","lodashOmit","appGql","GraphQLSchemaPlugin","typeDefs","resolvers","AcoQuery","getApp","_","args","context","resolve","ensureAuthentication","app","aco","id","name","getAppModel","exports"],"sources":["app.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { AcoContext } from \"~/types\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport lodashOmit from \"lodash/omit\";\nimport { ensureAuthentication } from \"~/utils/ensureAuthentication\";\nimport { resolve } from \"~/utils/resolve\";\n\nconst cleanModel = (model: CmsModel): Partial<CmsModel> => {\n return lodashOmit(model, [\n \"webinyVersion\",\n \"tags\",\n \"locale\",\n \"tenant\",\n \"layout\",\n \"group\",\n \"description\",\n \"isPrivate\"\n ]);\n};\n\nexport const appGql = new GraphQLSchemaPlugin<AcoContext>({\n typeDefs: /* GraphQL */ `\n type AcoApp {\n id: ID!\n name: String!\n model: JSON!\n }\n type GetAppResponse {\n data: AcoApp\n error: AcoError\n }\n type GetAppModelResponse {\n data: JSON\n error: AcoError\n }\n extend type AcoQuery {\n getApp(id: ID!): GetAppResponse!\n getAppModel(id: ID!): GetAppModelResponse!\n }\n `,\n resolvers: {\n AcoQuery: {\n getApp: async (_, args, context) => {\n return resolve(async () => {\n ensureAuthentication(context);\n const app = context.aco.getApp(args.id);\n return {\n id: args.id,\n name: app.name,\n model: cleanModel(app.model)\n };\n });\n },\n getAppModel: async (_, args, context) => {\n return resolve(async () => {\n ensureAuthentication(context);\n const app = context.aco.getApp(args.id);\n return cleanModel(app.model);\n });\n }\n }\n }\n});\n"],"mappings":";;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAGA,IAAAC,KAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,qBAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAEA,MAAMK,UAAU,GAAIC,KAAe,IAAwB;EACvD,OAAO,IAAAC,aAAU,EAACD,KAAK,EAAE,CACrB,eAAe,EACf,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,aAAa,EACb,WAAW,CACd,CAAC;AACN,CAAC;AAEM,MAAME,MAAM,GAAG,IAAIC,mCAAmB,CAAa;EACtDC,QAAQ,EAAE,aAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;EACDC,SAAS,EAAE;IACPC,QAAQ,EAAE;MACNC,MAAM,EAAE,MAAAA,CAAOC,CAAC,EAAEC,IAAI,EAAEC,OAAO,KAAK;QAChC,OAAO,IAAAC,gBAAO,EAAC,YAAY;UACvB,IAAAC,0CAAoB,EAACF,OAAO,CAAC;UAC7B,MAAMG,GAAG,GAAGH,OAAO,CAACI,GAAG,CAACP,MAAM,CAACE,IAAI,CAACM,EAAE,CAAC;UACvC,OAAO;YACHA,EAAE,EAAEN,IAAI,CAACM,EAAE;YACXC,IAAI,EAAEH,GAAG,CAACG,IAAI;YACdhB,KAAK,EAAED,UAAU,CAACc,GAAG,CAACb,KAAK;UAC/B,CAAC;QACL,CAAC,CAAC;MACN,CAAC;MACDiB,WAAW,EAAE,MAAAA,CAAOT,CAAC,EAAEC,IAAI,EAAEC,OAAO,KAAK;QACrC,OAAO,IAAAC,gBAAO,EAAC,YAAY;UACvB,IAAAC,0CAAoB,EAACF,OAAO,CAAC;UAC7B,MAAMG,GAAG,GAAGH,OAAO,CAACI,GAAG,CAACP,MAAM,CAACE,IAAI,CAACM,EAAE,CAAC;UACvC,OAAOhB,UAAU,CAACc,GAAG,CAACb,KAAK,CAAC;QAChC,CAAC,CAAC;MACN;IACJ;EACJ;AACJ,CAAC,CAAC;AAACkB,OAAA,CAAAhB,MAAA,GAAAA,MAAA"}
package/apps/index.js CHANGED
@@ -24,4 +24,6 @@ Object.keys(_AcoApps).forEach(function (key) {
24
24
  return _AcoApps[key];
25
25
  }
26
26
  });
27
- });
27
+ });
28
+
29
+ //# sourceMappingURL=index.js.map
@@ -16,6 +16,12 @@ var _record = require("./record/record.crud");
16
16
  var _apps = require("./apps");
17
17
  var _record2 = require("./record/record.model");
18
18
  var _plugins = require("./plugins");
19
+ var _FolderLevelPermissions = require("./utils/FolderLevelPermissions");
20
+ var _CmsEntriesCrudDecorators = require("./utils/decorators/CmsEntriesCrudDecorators");
21
+ var _folder2 = require("./folder/folder.model");
22
+ var _createOperationsWrapper = require("./utils/createOperationsWrapper");
23
+ var _getFieldValues = require("./utils/getFieldValues");
24
+ var _filter = require("./filter/filter.crud");
19
25
  const setupAcoContext = async context => {
20
26
  const {
21
27
  tenancy,
@@ -32,22 +38,73 @@ const setupAcoContext = async context => {
32
38
  const getTenant = () => {
33
39
  return tenancy.getCurrentTenant();
34
40
  };
35
- const getIdentity = () => security.getIdentity();
41
+ const storageOperations = (0, _createAcoStorageOperations.createAcoStorageOperations)({
42
+ /**
43
+ * TODO: We need to figure out a way to pass "cms" from outside (e.g. apps/api/graphql)
44
+ */
45
+ cms: context.cms,
46
+ /**
47
+ * TODO: This is required for "entryFieldFromStorageTransform" which access plugins from context.
48
+ */
49
+ getCmsContext: () => context,
50
+ security
51
+ });
52
+ const folderLevelPermissions = new _FolderLevelPermissions.FolderLevelPermissions({
53
+ getIdentity: () => security.getIdentity(),
54
+ getIdentityTeam: async () => {
55
+ return security.withoutAuthorization(async () => {
56
+ const identity = security.getIdentity();
57
+ const adminUser = await context.adminUsers.getUser({
58
+ where: {
59
+ id: identity.id
60
+ }
61
+ });
62
+ if (!adminUser) {
63
+ return null;
64
+ }
65
+ if (!adminUser.team) {
66
+ return null;
67
+ }
68
+ return context.security.getTeam({
69
+ where: {
70
+ id: adminUser.team
71
+ }
72
+ });
73
+ });
74
+ },
75
+ listPermissions: () => security.listPermissions(),
76
+ listAllFolders: type => {
77
+ // When retrieving a list of all folders, we want to do it in the
78
+ // fastest way and that is by directly using CMS's storage operations.
79
+ const {
80
+ withModel
81
+ } = (0, _createOperationsWrapper.createOperationsWrapper)({
82
+ modelName: _folder2.FOLDER_MODEL_ID,
83
+ cms: context.cms,
84
+ getCmsContext: () => context,
85
+ security
86
+ });
87
+ return withModel(async model => {
88
+ const results = await context.cms.storageOperations.entries.list(model, {
89
+ limit: 100_000,
90
+ where: {
91
+ type,
92
+ // Folders always work with latest entries. We never publish them.
93
+ latest: true
94
+ },
95
+ sort: ["title_ASC"]
96
+ });
97
+ return results.items.map(entry => (0, _getFieldValues.getFolderFieldValues)(entry, _createAcoStorageOperations.baseFields));
98
+ });
99
+ },
100
+ canUseTeams: () => context.wcp.canUseTeams(),
101
+ canUseFolderLevelPermissions: () => context.wcp.canUseFolderLevelPermissions()
102
+ });
36
103
  const params = {
37
104
  getLocale,
38
- getIdentity,
39
105
  getTenant,
40
- storageOperations: (0, _createAcoStorageOperations.createAcoStorageOperations)({
41
- /**
42
- * TODO: We need to figure out a way to pass "cms" from outside (e.g. apps/api/graphql)
43
- */
44
- cms: context.cms,
45
- /**
46
- * TODO: This is required for "entryFieldFromStorageTransform" which access plugins from context.
47
- */
48
- getCmsContext: () => context,
49
- security
50
- })
106
+ storageOperations,
107
+ folderLevelPermissions
51
108
  };
52
109
  const defaultRecordModel = await context.security.withoutAuthorization(async () => {
53
110
  return context.cms.getModel(_record2.SEARCH_RECORD_MODEL_ID);
@@ -66,9 +123,24 @@ const setupAcoContext = async context => {
66
123
  model: defaultRecordModel
67
124
  }, plugin.app));
68
125
  }
126
+ const listAdminUsers = () => {
127
+ return security.withoutAuthorization(async () => {
128
+ return context.adminUsers.listUsers();
129
+ });
130
+ };
131
+ const listTeams = () => {
132
+ return security.withoutAuthorization(async () => {
133
+ return context.security.listTeams();
134
+ });
135
+ };
69
136
  context.aco = {
70
- folder: (0, _folder.createFolderCrudMethods)(params),
137
+ folder: (0, _folder.createFolderCrudMethods)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
138
+ listAdminUsers,
139
+ listTeams
140
+ })),
71
141
  search: (0, _record.createSearchRecordCrudMethods)(params),
142
+ folderLevelPermissions,
143
+ filter: (0, _filter.createFilterCrudMethods)(params),
72
144
  apps,
73
145
  getApp: name => apps.get(name),
74
146
  listApps: () => apps.list(),
@@ -78,7 +150,16 @@ const setupAcoContext = async context => {
78
150
  }, params));
79
151
  }
80
152
  };
153
+ if (context.wcp.canUseFolderLevelPermissions()) {
154
+ new _CmsEntriesCrudDecorators.CmsEntriesCrudDecorators({
155
+ context
156
+ }).decorate();
157
+
158
+ // PB decorators registered here: packages/api-page-builder-aco/src/index.ts
159
+ // new PageBuilderCrudDecorators({ context }).decorate();
160
+ }
81
161
  };
162
+
82
163
  const createAcoContext = () => {
83
164
  const plugin = new _api.ContextPlugin(async context => {
84
165
  /**
@@ -97,4 +178,6 @@ const createAcoContext = () => {
97
178
  plugin.name = "aco.createContext";
98
179
  return plugin;
99
180
  };
100
- exports.createAcoContext = createAcoContext;
181
+ exports.createAcoContext = createAcoContext;
182
+
183
+ //# sourceMappingURL=createAcoContext.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_api","_createAcoHooks","_createAcoStorageOperations","_isInstallationPending","_folder","_record","_apps","_record2","_plugins","setupAcoContext","context","tenancy","security","i18n","getLocale","locale","getContentLocale","WebinyError","getTenant","getCurrentTenant","getIdentity","params","storageOperations","createAcoStorageOperations","cms","getCmsContext","defaultRecordModel","withoutAuthorization","getModel","SEARCH_RECORD_MODEL_ID","apps","AcoApps","plugins","byType","AcoAppRegisterPlugin","type","plugin","register","_objectSpread2","default","model","app","aco","folder","createFolderCrudMethods","search","createSearchRecordCrudMethods","getApp","name","get","listApps","list","registerApp","createAcoContext","ContextPlugin","isInstallationPending","benchmark","measure","createAcoHooks","exports"],"sources":["createAcoContext.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { createAcoHooks } from \"~/createAcoHooks\";\nimport { createAcoStorageOperations } from \"~/createAcoStorageOperations\";\nimport { isInstallationPending } from \"~/utils/isInstallationPending\";\nimport { AcoContext, CreateAcoParams, IAcoAppRegisterParams } from \"~/types\";\nimport { createFolderCrudMethods } from \"~/folder/folder.crud\";\nimport { createSearchRecordCrudMethods } from \"~/record/record.crud\";\nimport { AcoApps } from \"./apps\";\nimport { SEARCH_RECORD_MODEL_ID } from \"~/record/record.model\";\nimport { AcoAppRegisterPlugin } from \"~/plugins\";\n\nconst setupAcoContext = async (context: AcoContext): Promise<void> => {\n const { tenancy, security, i18n } = context;\n\n const getLocale = (): I18NLocale => {\n const locale = i18n.getContentLocale();\n if (!locale) {\n throw new WebinyError(\n \"Missing content locale in api-aco/plugins/context.ts\",\n \"LOCALE_ERROR\"\n );\n }\n\n return locale;\n };\n\n const getTenant = (): Tenant => {\n return tenancy.getCurrentTenant();\n };\n\n const getIdentity = () => security.getIdentity();\n\n const params: CreateAcoParams = {\n getLocale,\n getIdentity,\n getTenant,\n storageOperations: createAcoStorageOperations({\n /**\n * TODO: We need to figure out a way to pass \"cms\" from outside (e.g. apps/api/graphql)\n */\n cms: context.cms,\n /**\n * TODO: This is required for \"entryFieldFromStorageTransform\" which access plugins from context.\n */\n getCmsContext: () => context,\n security\n })\n };\n\n const defaultRecordModel = await context.security.withoutAuthorization(async () => {\n return context.cms.getModel(SEARCH_RECORD_MODEL_ID);\n });\n if (!defaultRecordModel) {\n throw new WebinyError(`There is no default record model in ${SEARCH_RECORD_MODEL_ID}`);\n }\n\n /**\n * First we need to create all the apps.\n */\n const apps = new AcoApps(context, params);\n const plugins = context.plugins.byType<AcoAppRegisterPlugin>(AcoAppRegisterPlugin.type);\n for (const plugin of plugins) {\n await apps.register({\n model: defaultRecordModel,\n ...plugin.app\n });\n }\n\n context.aco = {\n folder: createFolderCrudMethods(params),\n search: createSearchRecordCrudMethods(params),\n apps,\n getApp: (name: string) => apps.get(name),\n listApps: () => apps.list(),\n registerApp: async (params: IAcoAppRegisterParams) => {\n return apps.register({\n model: defaultRecordModel,\n ...params\n });\n }\n };\n};\n\nexport const createAcoContext = () => {\n const plugin = new ContextPlugin<AcoContext>(async context => {\n /**\n * We can skip the ACO initialization if the installation is pending.\n */\n if (isInstallationPending(context)) {\n return;\n }\n await context.benchmark.measure(\"aco.context.setup\", async () => {\n await setupAcoContext(context);\n });\n\n await context.benchmark.measure(\"aco.context.hooks\", async () => {\n await createAcoHooks(context);\n });\n });\n\n plugin.name = \"aco.createContext\";\n\n return plugin;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_api","_createAcoHooks","_createAcoStorageOperations","_isInstallationPending","_folder","_record","_apps","_record2","_plugins","_FolderLevelPermissions","_CmsEntriesCrudDecorators","_folder2","_createOperationsWrapper","_getFieldValues","_filter","setupAcoContext","context","tenancy","security","i18n","getLocale","locale","getContentLocale","WebinyError","getTenant","getCurrentTenant","storageOperations","createAcoStorageOperations","cms","getCmsContext","folderLevelPermissions","FolderLevelPermissions","getIdentity","getIdentityTeam","withoutAuthorization","identity","adminUser","adminUsers","getUser","where","id","team","getTeam","listPermissions","listAllFolders","type","withModel","createOperationsWrapper","modelName","FOLDER_MODEL_ID","model","results","entries","list","limit","latest","sort","items","map","entry","getFolderFieldValues","baseFields","canUseTeams","wcp","canUseFolderLevelPermissions","params","defaultRecordModel","getModel","SEARCH_RECORD_MODEL_ID","apps","AcoApps","plugins","byType","AcoAppRegisterPlugin","plugin","register","_objectSpread2","default","app","listAdminUsers","listUsers","listTeams","aco","folder","createFolderCrudMethods","search","createSearchRecordCrudMethods","filter","createFilterCrudMethods","getApp","name","get","listApps","registerApp","CmsEntriesCrudDecorators","decorate","createAcoContext","ContextPlugin","isInstallationPending","benchmark","measure","createAcoHooks","exports"],"sources":["createAcoContext.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { createAcoHooks } from \"~/createAcoHooks\";\nimport { baseFields, createAcoStorageOperations } from \"~/createAcoStorageOperations\";\nimport { isInstallationPending } from \"~/utils/isInstallationPending\";\nimport { AcoContext, CreateAcoParams, IAcoAppRegisterParams } from \"~/types\";\nimport { createFolderCrudMethods } from \"~/folder/folder.crud\";\nimport { createSearchRecordCrudMethods } from \"~/record/record.crud\";\nimport { AcoApps } from \"./apps\";\nimport { SEARCH_RECORD_MODEL_ID } from \"~/record/record.model\";\nimport { AcoAppRegisterPlugin } from \"~/plugins\";\nimport { FolderLevelPermissions } from \"~/utils/FolderLevelPermissions\";\nimport { CmsEntriesCrudDecorators } from \"~/utils/decorators/CmsEntriesCrudDecorators\";\nimport { FOLDER_MODEL_ID } from \"~/folder/folder.model\";\nimport { createOperationsWrapper } from \"~/utils/createOperationsWrapper\";\nimport { getFolderFieldValues } from \"~/utils/getFieldValues\";\nimport { createFilterCrudMethods } from \"~/filter/filter.crud\";\n\nconst setupAcoContext = async (context: AcoContext): Promise<void> => {\n const { tenancy, security, i18n } = context;\n\n const getLocale = (): I18NLocale => {\n const locale = i18n.getContentLocale();\n if (!locale) {\n throw new WebinyError(\n \"Missing content locale in api-aco/plugins/context.ts\",\n \"LOCALE_ERROR\"\n );\n }\n\n return locale;\n };\n\n const getTenant = (): Tenant => {\n return tenancy.getCurrentTenant();\n };\n\n const storageOperations = createAcoStorageOperations({\n /**\n * TODO: We need to figure out a way to pass \"cms\" from outside (e.g. apps/api/graphql)\n */\n cms: context.cms,\n /**\n * TODO: This is required for \"entryFieldFromStorageTransform\" which access plugins from context.\n */\n getCmsContext: () => context,\n security\n });\n\n const folderLevelPermissions = new FolderLevelPermissions({\n getIdentity: () => security.getIdentity(),\n getIdentityTeam: async () => {\n return security.withoutAuthorization(async () => {\n const identity = security.getIdentity();\n const adminUser = await context.adminUsers.getUser({ where: { id: identity.id } });\n if (!adminUser) {\n return null;\n }\n\n if (!adminUser.team) {\n return null;\n }\n\n return context.security.getTeam({ where: { id: adminUser.team } });\n });\n },\n listPermissions: () => security.listPermissions(),\n listAllFolders: type => {\n // When retrieving a list of all folders, we want to do it in the\n // fastest way and that is by directly using CMS's storage operations.\n const { withModel } = createOperationsWrapper({\n modelName: FOLDER_MODEL_ID,\n cms: context.cms,\n getCmsContext: () => context,\n security\n });\n\n return withModel(async model => {\n const results = await context.cms.storageOperations.entries.list(model, {\n limit: 100_000,\n where: {\n type,\n\n // Folders always work with latest entries. We never publish them.\n latest: true\n },\n sort: [\"title_ASC\"]\n });\n\n return results.items.map(entry => getFolderFieldValues(entry, baseFields));\n });\n },\n canUseTeams: () => context.wcp.canUseTeams(),\n canUseFolderLevelPermissions: () => context.wcp.canUseFolderLevelPermissions()\n });\n\n const params: CreateAcoParams = {\n getLocale,\n getTenant,\n storageOperations,\n folderLevelPermissions\n };\n\n const defaultRecordModel = await context.security.withoutAuthorization(async () => {\n return context.cms.getModel(SEARCH_RECORD_MODEL_ID);\n });\n\n if (!defaultRecordModel) {\n throw new WebinyError(`There is no default record model in ${SEARCH_RECORD_MODEL_ID}`);\n }\n\n /**\n * First we need to create all the apps.\n */\n const apps = new AcoApps(context, params);\n const plugins = context.plugins.byType<AcoAppRegisterPlugin>(AcoAppRegisterPlugin.type);\n for (const plugin of plugins) {\n await apps.register({\n model: defaultRecordModel,\n ...plugin.app\n });\n }\n\n const listAdminUsers = () => {\n return security.withoutAuthorization(async () => {\n return context.adminUsers.listUsers();\n });\n };\n const listTeams = () => {\n return security.withoutAuthorization(async () => {\n return context.security.listTeams();\n });\n };\n\n context.aco = {\n folder: createFolderCrudMethods({\n ...params,\n listAdminUsers,\n listTeams\n }),\n search: createSearchRecordCrudMethods(params),\n folderLevelPermissions,\n filter: createFilterCrudMethods(params),\n apps,\n getApp: (name: string) => apps.get(name),\n listApps: () => apps.list(),\n registerApp: async (params: IAcoAppRegisterParams) => {\n return apps.register({\n model: defaultRecordModel,\n ...params\n });\n }\n };\n\n if (context.wcp.canUseFolderLevelPermissions()) {\n new CmsEntriesCrudDecorators({ context }).decorate();\n\n // PB decorators registered here: packages/api-page-builder-aco/src/index.ts\n // new PageBuilderCrudDecorators({ context }).decorate();\n }\n};\n\nexport const createAcoContext = () => {\n const plugin = new ContextPlugin<AcoContext>(async context => {\n /**\n * We can skip the ACO initialization if the installation is pending.\n */\n if (isInstallationPending(context)) {\n return;\n }\n await context.benchmark.measure(\"aco.context.setup\", async () => {\n await setupAcoContext(context);\n });\n\n await context.benchmark.measure(\"aco.context.hooks\", async () => {\n await createAcoHooks(context);\n });\n });\n\n plugin.name = \"aco.createContext\";\n\n return plugin;\n};\n"],"mappings":"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"}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createAcoGraphQL = void 0;
7
7
  var _handlerGraphql = require("@webiny/handler-graphql");
8
+ var _filter = require("./filter/filter.gql");
8
9
  var _folder = require("./folder/folder.gql");
9
10
  var _app = require("./apps/app.gql");
10
11
  const emptyResolver = () => ({});
@@ -116,6 +117,8 @@ const baseSchema = new _handlerGraphql.GraphQLSchemaPlugin({
116
117
  }
117
118
  });
118
119
  const createAcoGraphQL = () => {
119
- return [baseSchema, _app.appGql, _folder.folderSchema];
120
+ return [baseSchema, _app.appGql, _folder.folderSchema, _filter.filterSchema];
120
121
  };
121
- exports.createAcoGraphQL = createAcoGraphQL;
122
+ exports.createAcoGraphQL = createAcoGraphQL;
123
+
124
+ //# sourceMappingURL=createAcoGraphQL.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_handlerGraphql","require","_folder","_app","emptyResolver","baseSchema","GraphQLSchemaPlugin","typeDefs","resolvers","Query","aco","search","Mutation","createAcoGraphQL","appGql","folderSchema","exports"],"sources":["createAcoGraphQL.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { folderSchema } from \"~/folder/folder.gql\";\nimport { appGql } from \"~/apps/app.gql\";\nimport { AcoContext } from \"~/types\";\n\nconst emptyResolver = () => ({});\n\nconst baseSchema = new GraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n type AcoQuery {\n _empty: String\n }\n\n type AcoMutation {\n _empty: String\n }\n\n type SearchQuery {\n _empty: String\n }\n\n type SearchMutation {\n _empty: String\n }\n\n type AcoMeta {\n hasMoreItems: Boolean\n totalCount: Int\n cursor: String\n }\n\n type AcoUser {\n id: ID\n displayName: String\n type: String\n }\n\n type AcoError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type AcoBooleanResponse {\n data: Boolean\n error: AcoError\n }\n\n enum AcoSortDirection {\n ASC\n DESC\n }\n\n input AcoSort {\n id: AcoSortDirection\n createdOn: AcoSortDirection\n savedOn: AcoSortDirection\n title: AcoSortDirection\n }\n\n input AcoSearchRecordTagListWhereInput {\n tags_in: [String!]\n tags_startsWith: String\n tags_not_startsWith: String\n createdBy: ID\n AND: [AcoSearchRecordTagListWhereInput!]\n OR: [AcoSearchRecordTagListWhereInput!]\n }\n\n type AcoSearchRecordMoveResponse {\n data: Boolean\n error: AcoError\n }\n\n type TagItem {\n tag: String!\n count: Int!\n }\n\n type AcoSearchRecordTagListResponse {\n data: [TagItem!]\n error: AcoError\n meta: AcoMeta\n }\n\n type AcoSearchLocationType {\n folderId: ID!\n }\n input AcoSearchLocationInput {\n folderId: ID!\n }\n\n extend type Query {\n aco: AcoQuery\n search: SearchQuery\n }\n\n extend type Mutation {\n aco: AcoMutation\n search: SearchMutation\n }\n `,\n resolvers: {\n Query: {\n aco: emptyResolver,\n search: emptyResolver\n },\n Mutation: {\n aco: emptyResolver,\n search: emptyResolver\n }\n }\n});\n\nexport const createAcoGraphQL = (): GraphQLSchemaPlugin<AcoContext>[] => {\n return [baseSchema, appGql, folderSchema];\n};\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,IAAA,GAAAF,OAAA;AAGA,MAAMG,aAAa,GAAGA,CAAA,MAAO,CAAC,CAAC,CAAC;AAEhC,MAAMC,UAAU,GAAG,IAAIC,mCAAmB,CAAC;EACvCC,QAAQ,EAAE,aAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;EACDC,SAAS,EAAE;IACPC,KAAK,EAAE;MACHC,GAAG,EAAEN,aAAa;MAClBO,MAAM,EAAEP;IACZ,CAAC;IACDQ,QAAQ,EAAE;MACNF,GAAG,EAAEN,aAAa;MAClBO,MAAM,EAAEP;IACZ;EACJ;AACJ,CAAC,CAAC;AAEK,MAAMS,gBAAgB,GAAGA,CAAA,KAAyC;EACrE,OAAO,CAACR,UAAU,EAAES,WAAM,EAAEC,oBAAY,CAAC;AAC7C,CAAC;AAACC,OAAA,CAAAH,gBAAA,GAAAA,gBAAA"}
1
+ {"version":3,"names":["_handlerGraphql","require","_filter","_folder","_app","emptyResolver","baseSchema","GraphQLSchemaPlugin","typeDefs","resolvers","Query","aco","search","Mutation","createAcoGraphQL","appGql","folderSchema","filterSchema","exports"],"sources":["createAcoGraphQL.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { filterSchema } from \"~/filter/filter.gql\";\nimport { folderSchema } from \"~/folder/folder.gql\";\nimport { appGql } from \"~/apps/app.gql\";\nimport { AcoContext } from \"~/types\";\n\nconst emptyResolver = () => ({});\n\nconst baseSchema = new GraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n type AcoQuery {\n _empty: String\n }\n\n type AcoMutation {\n _empty: String\n }\n\n type SearchQuery {\n _empty: String\n }\n\n type SearchMutation {\n _empty: String\n }\n\n type AcoMeta {\n hasMoreItems: Boolean\n totalCount: Int\n cursor: String\n }\n\n type AcoUser {\n id: ID\n displayName: String\n type: String\n }\n\n type AcoError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type AcoBooleanResponse {\n data: Boolean\n error: AcoError\n }\n\n enum AcoSortDirection {\n ASC\n DESC\n }\n\n input AcoSort {\n id: AcoSortDirection\n createdOn: AcoSortDirection\n savedOn: AcoSortDirection\n title: AcoSortDirection\n }\n\n input AcoSearchRecordTagListWhereInput {\n tags_in: [String!]\n tags_startsWith: String\n tags_not_startsWith: String\n createdBy: ID\n AND: [AcoSearchRecordTagListWhereInput!]\n OR: [AcoSearchRecordTagListWhereInput!]\n }\n\n type AcoSearchRecordMoveResponse {\n data: Boolean\n error: AcoError\n }\n\n type TagItem {\n tag: String!\n count: Int!\n }\n\n type AcoSearchRecordTagListResponse {\n data: [TagItem!]\n error: AcoError\n meta: AcoMeta\n }\n\n type AcoSearchLocationType {\n folderId: ID!\n }\n input AcoSearchLocationInput {\n folderId: ID!\n }\n\n extend type Query {\n aco: AcoQuery\n search: SearchQuery\n }\n\n extend type Mutation {\n aco: AcoMutation\n search: SearchMutation\n }\n `,\n resolvers: {\n Query: {\n aco: emptyResolver,\n search: emptyResolver\n },\n Mutation: {\n aco: emptyResolver,\n search: emptyResolver\n }\n }\n});\n\nexport const createAcoGraphQL = (): GraphQLSchemaPlugin<AcoContext>[] => {\n return [baseSchema, appGql, folderSchema, filterSchema];\n};\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,IAAA,GAAAH,OAAA;AAGA,MAAMI,aAAa,GAAGA,CAAA,MAAO,CAAC,CAAC,CAAC;AAEhC,MAAMC,UAAU,GAAG,IAAIC,mCAAmB,CAAC;EACvCC,QAAQ,EAAE,aAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;EACDC,SAAS,EAAE;IACPC,KAAK,EAAE;MACHC,GAAG,EAAEN,aAAa;MAClBO,MAAM,EAAEP;IACZ,CAAC;IACDQ,QAAQ,EAAE;MACNF,GAAG,EAAEN,aAAa;MAClBO,MAAM,EAAEP;IACZ;EACJ;AACJ,CAAC,CAAC;AAEK,MAAMS,gBAAgB,GAAGA,CAAA,KAAyC;EACrE,OAAO,CAACR,UAAU,EAAES,WAAM,EAAEC,oBAAY,EAAEC,oBAAY,CAAC;AAC3D,CAAC;AAACC,OAAA,CAAAJ,gBAAA,GAAAA,gBAAA"}
package/createAcoHooks.js CHANGED
@@ -4,8 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createAcoHooks = void 0;
7
- var _onFolderBeforeDelete = require("./folder/onFolderBeforeDelete.hook");
7
+ var _onFolderBeforeDeleteAco = require("./folder/onFolderBeforeDeleteAco.hook");
8
+ var _onFolderBeforeDeleteHcms = require("./folder/onFolderBeforeDeleteHcms.hook");
9
+ var _onFolderBeforeDeleteFm = require("./folder/onFolderBeforeDeleteFm.hook");
8
10
  const createAcoHooks = context => {
9
- (0, _onFolderBeforeDelete.onFolderBeforeDeleteHook)(context);
11
+ (0, _onFolderBeforeDeleteAco.onFolderBeforeDeleteAcoHook)(context);
12
+ (0, _onFolderBeforeDeleteHcms.onFolderBeforeDeleteHcmsHook)(context);
13
+ (0, _onFolderBeforeDeleteFm.onFolderBeforeDeleteFmHook)(context);
10
14
  };
11
- exports.createAcoHooks = createAcoHooks;
15
+ exports.createAcoHooks = createAcoHooks;
16
+
17
+ //# sourceMappingURL=createAcoHooks.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_onFolderBeforeDelete","require","createAcoHooks","context","onFolderBeforeDeleteHook","exports"],"sources":["createAcoHooks.ts"],"sourcesContent":["import { onFolderBeforeDeleteHook } from \"~/folder/onFolderBeforeDelete.hook\";\n\nimport { AcoContext } from \"~/types\";\n\nexport const createAcoHooks = (context: AcoContext) => {\n onFolderBeforeDeleteHook(context);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,qBAAA,GAAAC,OAAA;AAIO,MAAMC,cAAc,GAAIC,OAAmB,IAAK;EACnD,IAAAC,8CAAwB,EAACD,OAAO,CAAC;AACrC,CAAC;AAACE,OAAA,CAAAH,cAAA,GAAAA,cAAA"}
1
+ {"version":3,"names":["_onFolderBeforeDeleteAco","require","_onFolderBeforeDeleteHcms","_onFolderBeforeDeleteFm","createAcoHooks","context","onFolderBeforeDeleteAcoHook","onFolderBeforeDeleteHcmsHook","onFolderBeforeDeleteFmHook","exports"],"sources":["createAcoHooks.ts"],"sourcesContent":["import { onFolderBeforeDeleteAcoHook } from \"~/folder/onFolderBeforeDeleteAco.hook\";\nimport { onFolderBeforeDeleteHcmsHook } from \"~/folder/onFolderBeforeDeleteHcms.hook\";\nimport { onFolderBeforeDeleteFmHook } from \"~/folder/onFolderBeforeDeleteFm.hook\";\n\nimport { AcoContext } from \"~/types\";\n\nexport const createAcoHooks = (context: AcoContext) => {\n onFolderBeforeDeleteAcoHook(context);\n onFolderBeforeDeleteHcmsHook(context);\n onFolderBeforeDeleteFmHook(context);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AACA,IAAAC,yBAAA,GAAAD,OAAA;AACA,IAAAE,uBAAA,GAAAF,OAAA;AAIO,MAAMG,cAAc,GAAIC,OAAmB,IAAK;EACnD,IAAAC,oDAA2B,EAACD,OAAO,CAAC;EACpC,IAAAE,sDAA4B,EAACF,OAAO,CAAC;EACrC,IAAAG,kDAA0B,EAACH,OAAO,CAAC;AACvC,CAAC;AAACI,OAAA,CAAAL,cAAA,GAAAA,cAAA"}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createAcoModels = void 0;
7
7
  var _apiHeadlessCms = require("@webiny/api-headless-cms");
8
+ var _filter = require("./filter/filter.model");
8
9
  var _folder = require("./folder/folder.model");
9
10
  var _record = require("./record/record.model");
10
11
  var _modelFactory = require("./utils/modelFactory");
@@ -26,7 +27,7 @@ const createAcoModels = context => {
26
27
  /**
27
28
  * Create CmsModel plugins.
28
29
  */
29
- const modelDefinitions = [(0, _folder.createFolderModelDefinition)(), (0, _record.createSearchModelDefinition)()];
30
+ const modelDefinitions = [(0, _folder.createFolderModelDefinition)(), (0, _record.createSearchModelDefinition)(), (0, _filter.createFilterModelDefinition)()];
30
31
  const cmsModelPlugins = modelDefinitions.map(modelDefinition => {
31
32
  return (0, _modelFactory.modelFactory)({
32
33
  group: cmsGroupPlugin.contentModelGroup,
@@ -39,4 +40,6 @@ const createAcoModels = context => {
39
40
  */
40
41
  context.plugins.register([cmsGroupPlugin, cmsModelPlugins]);
41
42
  };
42
- exports.createAcoModels = createAcoModels;
43
+ exports.createAcoModels = createAcoModels;
44
+
45
+ //# sourceMappingURL=createAcoModels.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_apiHeadlessCms","require","_folder","_record","_modelFactory","createAcoModels","context","groupId","cmsGroupPlugin","CmsGroupPlugin","id","slug","name","description","icon","isPrivate","modelDefinitions","createFolderModelDefinition","createSearchModelDefinition","cmsModelPlugins","map","modelDefinition","modelFactory","group","contentModelGroup","plugins","register","exports"],"sources":["createAcoModels.ts"],"sourcesContent":["import { CmsGroupPlugin } from \"@webiny/api-headless-cms\";\nimport { CmsContext } from \"@webiny/api-headless-cms/types\";\nimport { createFolderModelDefinition } from \"~/folder/folder.model\";\nimport { createSearchModelDefinition } from \"~/record/record.model\";\nimport { modelFactory } from \"~/utils/modelFactory\";\n\nexport const createAcoModels = (context: CmsContext) => {\n const groupId = \"contentModelGroup_aco\";\n\n /**\n * Create a CmsGroup.\n */\n const cmsGroupPlugin = new CmsGroupPlugin({\n id: groupId,\n slug: \"aco\",\n name: \"ACO\",\n description: \"Group for Advanced Content Organisation and Search\",\n icon: \"fas/folder\",\n isPrivate: true\n });\n\n /**\n * Create CmsModel plugins.\n */\n const modelDefinitions = [createFolderModelDefinition(), createSearchModelDefinition()];\n const cmsModelPlugins = modelDefinitions.map(modelDefinition => {\n return modelFactory({\n group: cmsGroupPlugin.contentModelGroup,\n modelDefinition\n });\n });\n\n /**\n * Register them so that they are accessible in cms context\n */\n context.plugins.register([cmsGroupPlugin, cmsModelPlugins]);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AAEO,MAAMI,eAAe,GAAIC,OAAmB,IAAK;EACpD,MAAMC,OAAO,GAAG,uBAAuB;;EAEvC;AACJ;AACA;EACI,MAAMC,cAAc,GAAG,IAAIC,8BAAc,CAAC;IACtCC,EAAE,EAAEH,OAAO;IACXI,IAAI,EAAE,KAAK;IACXC,IAAI,EAAE,KAAK;IACXC,WAAW,EAAE,oDAAoD;IACjEC,IAAI,EAAE,YAAY;IAClBC,SAAS,EAAE;EACf,CAAC,CAAC;;EAEF;AACJ;AACA;EACI,MAAMC,gBAAgB,GAAG,CAAC,IAAAC,mCAA2B,EAAC,CAAC,EAAE,IAAAC,mCAA2B,EAAC,CAAC,CAAC;EACvF,MAAMC,eAAe,GAAGH,gBAAgB,CAACI,GAAG,CAACC,eAAe,IAAI;IAC5D,OAAO,IAAAC,0BAAY,EAAC;MAChBC,KAAK,EAAEf,cAAc,CAACgB,iBAAiB;MACvCH;IACJ,CAAC,CAAC;EACN,CAAC,CAAC;;EAEF;AACJ;AACA;EACIf,OAAO,CAACmB,OAAO,CAACC,QAAQ,CAAC,CAAClB,cAAc,EAAEW,eAAe,CAAC,CAAC;AAC/D,CAAC;AAACQ,OAAA,CAAAtB,eAAA,GAAAA,eAAA"}
1
+ {"version":3,"names":["_apiHeadlessCms","require","_filter","_folder","_record","_modelFactory","createAcoModels","context","groupId","cmsGroupPlugin","CmsGroupPlugin","id","slug","name","description","icon","isPrivate","modelDefinitions","createFolderModelDefinition","createSearchModelDefinition","createFilterModelDefinition","cmsModelPlugins","map","modelDefinition","modelFactory","group","contentModelGroup","plugins","register","exports"],"sources":["createAcoModels.ts"],"sourcesContent":["import { CmsGroupPlugin } from \"@webiny/api-headless-cms\";\nimport { CmsContext } from \"@webiny/api-headless-cms/types\";\nimport { createFilterModelDefinition } from \"~/filter/filter.model\";\nimport { createFolderModelDefinition } from \"~/folder/folder.model\";\nimport { createSearchModelDefinition } from \"~/record/record.model\";\nimport { modelFactory } from \"~/utils/modelFactory\";\n\nexport const createAcoModels = (context: CmsContext) => {\n const groupId = \"contentModelGroup_aco\";\n\n /**\n * Create a CmsGroup.\n */\n const cmsGroupPlugin = new CmsGroupPlugin({\n id: groupId,\n slug: \"aco\",\n name: \"ACO\",\n description: \"Group for Advanced Content Organisation and Search\",\n icon: \"fas/folder\",\n isPrivate: true\n });\n\n /**\n * Create CmsModel plugins.\n */\n const modelDefinitions = [\n createFolderModelDefinition(),\n createSearchModelDefinition(),\n createFilterModelDefinition()\n ];\n const cmsModelPlugins = modelDefinitions.map(modelDefinition => {\n return modelFactory({\n group: cmsGroupPlugin.contentModelGroup,\n modelDefinition\n });\n });\n\n /**\n * Register them so that they are accessible in cms context\n */\n context.plugins.register([cmsGroupPlugin, cmsModelPlugins]);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AAEO,MAAMK,eAAe,GAAIC,OAAmB,IAAK;EACpD,MAAMC,OAAO,GAAG,uBAAuB;;EAEvC;AACJ;AACA;EACI,MAAMC,cAAc,GAAG,IAAIC,8BAAc,CAAC;IACtCC,EAAE,EAAEH,OAAO;IACXI,IAAI,EAAE,KAAK;IACXC,IAAI,EAAE,KAAK;IACXC,WAAW,EAAE,oDAAoD;IACjEC,IAAI,EAAE,YAAY;IAClBC,SAAS,EAAE;EACf,CAAC,CAAC;;EAEF;AACJ;AACA;EACI,MAAMC,gBAAgB,GAAG,CACrB,IAAAC,mCAA2B,EAAC,CAAC,EAC7B,IAAAC,mCAA2B,EAAC,CAAC,EAC7B,IAAAC,mCAA2B,EAAC,CAAC,CAChC;EACD,MAAMC,eAAe,GAAGJ,gBAAgB,CAACK,GAAG,CAACC,eAAe,IAAI;IAC5D,OAAO,IAAAC,0BAAY,EAAC;MAChBC,KAAK,EAAEhB,cAAc,CAACiB,iBAAiB;MACvCH;IACJ,CAAC,CAAC;EACN,CAAC,CAAC;;EAEF;AACJ;AACA;EACIhB,OAAO,CAACoB,OAAO,CAACC,QAAQ,CAAC,CAACnB,cAAc,EAAEY,eAAe,CAAC,CAAC;AAC/D,CAAC;AAACQ,OAAA,CAAAvB,eAAA,GAAAA,eAAA"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.createAcoStorageOperations = exports.baseFields = void 0;
8
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _filter = require("./filter/filter.so");
9
10
  var _folder = require("./folder/folder.so");
10
11
  var _record = require("./record/record.so");
11
12
  var _createAcoModels = require("./createAcoModels");
@@ -14,6 +15,8 @@ exports.baseFields = baseFields;
14
15
  const createAcoStorageOperations = params => {
15
16
  const context = params.getCmsContext();
16
17
  (0, _createAcoModels.createAcoModels)(context);
17
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _folder.createFolderOperations)(params)), (0, _record.createSearchRecordOperations)(params));
18
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _folder.createFolderOperations)(params)), (0, _record.createSearchRecordOperations)(params)), (0, _filter.createFilterOperations)(params));
18
19
  };
19
- exports.createAcoStorageOperations = createAcoStorageOperations;
20
+ exports.createAcoStorageOperations = createAcoStorageOperations;
21
+
22
+ //# sourceMappingURL=createAcoStorageOperations.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_folder","require","_record","_createAcoModels","baseFields","exports","createAcoStorageOperations","params","context","getCmsContext","createAcoModels","_objectSpread2","default","createFolderOperations","createSearchRecordOperations"],"sources":["createAcoStorageOperations.ts"],"sourcesContent":["import { CmsContext, HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport { Security } from \"@webiny/api-security/types\";\n\nimport { createFolderOperations } from \"~/folder/folder.so\";\nimport { createSearchRecordOperations } from \"~/record/record.so\";\nimport { createAcoModels } from \"~/createAcoModels\";\n\nimport { AcoStorageOperations } from \"~/types\";\n\nexport interface CreateAcoStorageOperationsParams {\n cms: HeadlessCms;\n security: Security;\n getCmsContext: () => CmsContext;\n}\n\nexport const baseFields = [\"id\", \"entryId\", \"createdBy\", \"createdOn\", \"savedOn\"];\n\nexport const createAcoStorageOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoStorageOperations => {\n const context = params.getCmsContext();\n\n createAcoModels(context);\n\n return {\n ...createFolderOperations(params),\n ...createSearchRecordOperations(params)\n };\n};\n"],"mappings":";;;;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AAUO,MAAMG,UAAU,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC;AAACC,OAAA,CAAAD,UAAA,GAAAA,UAAA;AAE1E,MAAME,0BAA0B,GACnCC,MAAwC,IACjB;EACvB,MAAMC,OAAO,GAAGD,MAAM,CAACE,aAAa,CAAC,CAAC;EAEtC,IAAAC,gCAAe,EAACF,OAAO,CAAC;EAExB,WAAAG,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MACO,IAAAC,8BAAsB,EAACN,MAAM,CAAC,GAC9B,IAAAO,oCAA4B,EAACP,MAAM,CAAC;AAE/C,CAAC;AAACF,OAAA,CAAAC,0BAAA,GAAAA,0BAAA"}
1
+ {"version":3,"names":["_filter","require","_folder","_record","_createAcoModels","baseFields","exports","createAcoStorageOperations","params","context","getCmsContext","createAcoModels","_objectSpread2","default","createFolderOperations","createSearchRecordOperations","createFilterOperations"],"sources":["createAcoStorageOperations.ts"],"sourcesContent":["import { CmsContext, HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport { Security } from \"@webiny/api-security/types\";\n\nimport { createFilterOperations } from \"~/filter/filter.so\";\nimport { createFolderOperations } from \"~/folder/folder.so\";\nimport { createSearchRecordOperations } from \"~/record/record.so\";\nimport { createAcoModels } from \"~/createAcoModels\";\n\nimport { AcoStorageOperations } from \"~/types\";\n\nexport interface CreateAcoStorageOperationsParams {\n cms: HeadlessCms;\n security: Security;\n getCmsContext: () => CmsContext;\n}\n\nexport const baseFields = [\"id\", \"entryId\", \"createdBy\", \"createdOn\", \"savedOn\"];\n\nexport const createAcoStorageOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoStorageOperations => {\n const context = params.getCmsContext();\n\n createAcoModels(context);\n\n return {\n ...createFolderOperations(params),\n ...createSearchRecordOperations(params),\n ...createFilterOperations(params)\n };\n};\n"],"mappings":";;;;;;;;AAGA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAH,OAAA;AAUO,MAAMI,UAAU,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC;AAACC,OAAA,CAAAD,UAAA,GAAAA,UAAA;AAE1E,MAAME,0BAA0B,GACnCC,MAAwC,IACjB;EACvB,MAAMC,OAAO,GAAGD,MAAM,CAACE,aAAa,CAAC,CAAC;EAEtC,IAAAC,gCAAe,EAACF,OAAO,CAAC;EAExB,WAAAG,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MACO,IAAAC,8BAAsB,EAACN,MAAM,CAAC,GAC9B,IAAAO,oCAA4B,EAACP,MAAM,CAAC,GACpC,IAAAQ,8BAAsB,EAACR,MAAM,CAAC;AAEzC,CAAC;AAACF,OAAA,CAAAC,0BAAA,GAAAA,0BAAA"}
package/fields/index.js CHANGED
@@ -9,4 +9,6 @@ const createFields = () => {
9
9
  // createLocationField()
10
10
  ];
11
11
  };
12
- exports.createFields = createFields;
12
+ exports.createFields = createFields;
13
+
14
+ //# sourceMappingURL=index.js.map
@@ -41,4 +41,6 @@ const createLocationField = () => {
41
41
  }
42
42
  };
43
43
  };
44
- exports.createLocationField = createLocationField;
44
+ exports.createLocationField = createLocationField;
45
+
46
+ //# sourceMappingURL=location.js.map
@@ -0,0 +1,3 @@
1
+ import { CreateAcoParams } from "../types";
2
+ import { AcoFilterCrud } from "./filter.types";
3
+ export declare const createFilterCrudMethods: ({ storageOperations }: CreateAcoParams) => AcoFilterCrud;