@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
@@ -1 +1 @@
1
- {"version":3,"names":["_createFieldResolvers","require","_resolve","_utils","_acoRecordId","_checkPermissions","createAppResolvers","params","app","models","plugins","model","apiName","singularApiName","createFieldResolvers","createFieldResolversFactory","endpointType","fieldTypePlugins","fieldResolvers","graphQLType","fields","isRoot","extraResolvers","id","entry","parseIdentifier","removeAcoRecordPrefix","resolvers","SearchQuery","_","args","context","resolve","checkPermissions","search","get","resolveList","list","listTags","SearchMutation","_args$data","data","create","_objectSpread2","default","update","move","folderId","delete","Object","assign","entryId","exports"],"sources":["createAppResolvers.ts"],"sourcesContent":["import { CmsEntry, CmsFieldTypePlugins, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { createFieldResolversFactory } from \"@webiny/api-headless-cms/graphql/schema/createFieldResolvers\";\nimport { AcoContext, IAcoApp } from \"~/types\";\nimport { resolve, resolveList } from \"~/utils/resolve\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { removeAcoRecordPrefix } from \"~/utils/acoRecordId\";\nimport { checkPermissions } from \"~/utils/checkPermissions\";\n\ninterface Params {\n app: IAcoApp;\n models: CmsModel[];\n plugins: CmsFieldTypePlugins;\n}\n\ninterface Resolvers {\n SearchQuery: Record<string, any>;\n SearchMutation: Record<string, any>;\n [key: string]: Record<string, any>;\n}\n\nexport const createAppResolvers = (params: Params): Resolvers => {\n const { app, models, plugins } = params;\n\n const model = app.model;\n const apiName = model.singularApiName;\n\n const createFieldResolvers = createFieldResolversFactory({\n endpointType: \"manage\",\n models,\n model,\n fieldTypePlugins: plugins\n });\n\n const fieldResolvers = createFieldResolvers({\n graphQLType: apiName,\n fields: app.model.fields,\n isRoot: true,\n extraResolvers: {\n id: (entry: CmsEntry) => {\n const { id } = parseIdentifier(entry.id);\n return removeAcoRecordPrefix(id);\n }\n }\n });\n\n const resolvers: Resolvers = {\n SearchQuery: {\n [`get${apiName}`]: async (_: unknown, args: any, context: AcoContext) => {\n return resolve(() => {\n checkPermissions(context);\n return app.search.get(args.id);\n });\n },\n [`list${apiName}`]: async (_: unknown, args: any, context: AcoContext) => {\n return resolveList(() => {\n checkPermissions(context);\n return app.search.list(args);\n });\n },\n [`list${apiName}Tags`]: async (_: unknown, args: any, context: AcoContext) => {\n return resolveList(() => {\n checkPermissions(context);\n return app.search.listTags(args);\n });\n }\n },\n SearchMutation: {\n [`create${apiName}`]: async (_: unknown, args: any, context: AcoContext) => {\n return resolve(() => {\n checkPermissions(context);\n const { id } = parseIdentifier(args.data?.id);\n return app.search.create({\n ...args.data,\n id\n });\n });\n },\n [`update${apiName}`]: async (_: unknown, args: any, context: AcoContext) => {\n return resolve(() => {\n checkPermissions(context);\n const { id } = parseIdentifier(args.id);\n return app.search.update(id, args.data || {});\n });\n },\n [`move${apiName}`]: async (_: unknown, args: any, context: AcoContext) => {\n return resolve(() => {\n checkPermissions(context);\n const { id } = parseIdentifier(args.id);\n return app.search.move(id, args.folderId);\n });\n },\n [`delete${apiName}`]: async (_: unknown, args: any, context: AcoContext) => {\n return resolve(() => {\n checkPermissions(context);\n const { id } = parseIdentifier(args.id);\n return app.search.delete(id);\n });\n }\n }\n };\n\n Object.assign(resolvers, fieldResolvers);\n delete resolvers[apiName].entryId;\n\n return resolvers;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_createFieldResolvers","require","_resolve","_utils","_acoRecordId","_ensureAuthentication","createAppResolvers","params","app","models","plugins","model","apiName","singularApiName","createFieldResolvers","createFieldResolversFactory","endpointType","fieldTypePlugins","fieldResolvers","graphQLType","fields","isRoot","extraResolvers","id","entry","parseIdentifier","removeAcoRecordPrefix","resolvers","SearchQuery","_","args","context","resolve","ensureAuthentication","search","get","resolveList","list","listTags","SearchMutation","_args$data","data","create","_objectSpread2","default","update","move","folderId","delete","Object","assign","entryId","exports"],"sources":["createAppResolvers.ts"],"sourcesContent":["import { CmsEntry, CmsFieldTypePlugins, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { createFieldResolversFactory } from \"@webiny/api-headless-cms/graphql/schema/createFieldResolvers\";\nimport { AcoContext, IAcoApp } from \"~/types\";\nimport { resolve, resolveList } from \"~/utils/resolve\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { removeAcoRecordPrefix } from \"~/utils/acoRecordId\";\nimport { ensureAuthentication } from \"~/utils/ensureAuthentication\";\n\ninterface Params {\n app: IAcoApp;\n models: CmsModel[];\n plugins: CmsFieldTypePlugins;\n}\n\ninterface Resolvers {\n SearchQuery: Record<string, any>;\n SearchMutation: Record<string, any>;\n [key: string]: Record<string, any>;\n}\n\nexport const createAppResolvers = (params: Params): Resolvers => {\n const { app, models, plugins } = params;\n\n const model = app.model;\n const apiName = model.singularApiName;\n\n const createFieldResolvers = createFieldResolversFactory({\n endpointType: \"manage\",\n models,\n model,\n fieldTypePlugins: plugins\n });\n\n const fieldResolvers = createFieldResolvers({\n graphQLType: apiName,\n fields: app.model.fields,\n isRoot: true,\n extraResolvers: {\n id: (entry: CmsEntry) => {\n const { id } = parseIdentifier(entry.id);\n return removeAcoRecordPrefix(id);\n }\n }\n });\n\n const resolvers: Resolvers = {\n SearchQuery: {\n [`get${apiName}`]: async (_: unknown, args: any, context: AcoContext) => {\n return resolve(() => {\n ensureAuthentication(context);\n return app.search.get(args.id);\n });\n },\n [`list${apiName}`]: async (_: unknown, args: any, context: AcoContext) => {\n return resolveList(() => {\n ensureAuthentication(context);\n return app.search.list(args);\n });\n },\n [`list${apiName}Tags`]: async (_: unknown, args: any, context: AcoContext) => {\n return resolveList(() => {\n ensureAuthentication(context);\n return app.search.listTags(args);\n });\n }\n },\n SearchMutation: {\n [`create${apiName}`]: async (_: unknown, args: any, context: AcoContext) => {\n return resolve(() => {\n ensureAuthentication(context);\n const { id } = parseIdentifier(args.data?.id);\n return app.search.create({\n ...args.data,\n id\n });\n });\n },\n [`update${apiName}`]: async (_: unknown, args: any, context: AcoContext) => {\n return resolve(() => {\n ensureAuthentication(context);\n const { id } = parseIdentifier(args.id);\n return app.search.update(id, args.data || {});\n });\n },\n [`move${apiName}`]: async (_: unknown, args: any, context: AcoContext) => {\n return resolve(() => {\n ensureAuthentication(context);\n const { id } = parseIdentifier(args.id);\n return app.search.move(id, args.folderId);\n });\n },\n [`delete${apiName}`]: async (_: unknown, args: any, context: AcoContext) => {\n return resolve(() => {\n ensureAuthentication(context);\n const { id } = parseIdentifier(args.id);\n return app.search.delete(id);\n });\n }\n }\n };\n\n Object.assign(resolvers, fieldResolvers);\n delete resolvers[apiName].entryId;\n\n return resolvers;\n};\n"],"mappings":"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"}
@@ -139,4 +139,6 @@ const createAppSchema = params => {
139
139
  `
140
140
  );
141
141
  };
142
- exports.createAppSchema = createAppSchema;
142
+ exports.createAppSchema = createAppSchema;
143
+
144
+ //# sourceMappingURL=createAppSchema.js.map
@@ -123,4 +123,6 @@ const createSearchRecordCrudMethods = ({
123
123
  }
124
124
  };
125
125
  };
126
- exports.createSearchRecordCrudMethods = createSearchRecordCrudMethods;
126
+ exports.createSearchRecordCrudMethods = createSearchRecordCrudMethods;
127
+
128
+ //# sourceMappingURL=record.crud.js.map
@@ -38,4 +38,6 @@ const createSchema = async params => {
38
38
  return plugin;
39
39
  });
40
40
  };
41
- exports.createSchema = createSchema;
41
+ exports.createSchema = createSchema;
42
+
43
+ //# sourceMappingURL=record.gql.js.map
@@ -83,4 +83,6 @@ const createSearchModelDefinition = params => {
83
83
  isPrivate: true
84
84
  };
85
85
  };
86
- exports.createSearchModelDefinition = createSearchModelDefinition;
86
+ exports.createSearchModelDefinition = createSearchModelDefinition;
87
+
88
+ //# sourceMappingURL=record.model.js.map
@@ -147,4 +147,6 @@ const createSearchRecordOperations = params => {
147
147
  }
148
148
  };
149
149
  };
150
- exports.createSearchRecordOperations = createSearchRecordOperations;
150
+ exports.createSearchRecordOperations = createSearchRecordOperations;
151
+
152
+ //# sourceMappingURL=record.so.js.map
@@ -19,7 +19,7 @@ export interface SearchRecordTag {
19
19
  tag: string;
20
20
  count: number;
21
21
  }
22
- export interface ListSearchRecordsWhere {
22
+ export interface ListSearchRecordsWhere<TData extends GenericSearchData = GenericSearchData> {
23
23
  type: string;
24
24
  location?: {
25
25
  folderId: string;
@@ -27,6 +27,7 @@ export interface ListSearchRecordsWhere {
27
27
  tags_in?: string[];
28
28
  tags_startsWith?: string;
29
29
  tags_not_startsWith?: string;
30
+ data?: TData;
30
31
  }
31
32
  export interface ListSearchRecordsParams {
32
33
  where?: ListSearchRecordsWhere;
@@ -2,4 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
- });
5
+ });
6
+
7
+ //# sourceMappingURL=record.types.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["record.types.ts"],"sourcesContent":["import { AcoBaseFields, ListMeta } from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\n\nexport type GenericSearchData = {\n [key: string]: any;\n};\n\nexport interface Location {\n folderId: string;\n}\n\nexport interface SearchRecord<TData extends GenericSearchData = GenericSearchData>\n extends AcoBaseFields {\n type: string;\n title: string;\n content?: string;\n location: Location;\n data: TData;\n tags: string[];\n}\n\nexport interface SearchRecordTag {\n tag: string;\n count: number;\n}\n\nexport interface ListSearchRecordsWhere {\n type: string;\n location?: {\n folderId: string;\n };\n tags_in?: string[];\n tags_startsWith?: string;\n tags_not_startsWith?: string;\n}\n\nexport interface ListSearchRecordsParams {\n where?: ListSearchRecordsWhere;\n search?: string;\n sort?: string[];\n limit?: number;\n after?: string | null;\n}\n\nexport type CreateSearchRecordParams<TData> = Pick<\n SearchRecord<TData>,\n \"id\" | \"title\" | \"content\" | \"type\" | \"location\" | \"data\" | \"tags\"\n>;\n\nexport interface UpdateSearchRecordParams<TData extends GenericSearchData> {\n title?: string;\n content?: string;\n location?: Location;\n data?: TData;\n tags?: string[];\n}\n\nexport interface DeleteSearchRecordParams {\n id: string;\n}\n\nexport interface ListSearchRecordTagsWhere {\n type: string;\n}\n\nexport interface ListSearchRecordTagsParams {\n where?: ListSearchRecordTagsWhere;\n}\n\nexport interface StorageOperationsGetSearchRecordParams {\n id: string;\n}\n\nexport type StorageOperationsListSearchRecordsParams = ListSearchRecordsParams;\nexport type StorageOperationsListSearchRecordTagsParams = ListSearchRecordTagsParams;\n\nexport interface StorageOperationsCreateSearchRecordParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n data: CreateSearchRecordParams<TData>;\n}\n\nexport interface StorageOperationsUpdateSearchRecordParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n id: string;\n data: UpdateSearchRecordParams<TData>;\n}\n\nexport interface StorageOperationsMoveSearchRecordParams {\n id: string;\n folderId?: string | null;\n}\n\nexport type StorageOperationsDeleteSearchRecordParams = DeleteSearchRecordParams;\n\nexport interface OnSearchRecordBeforeCreateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n input: CreateSearchRecordParams<TData>;\n}\n\nexport interface OnSearchRecordAfterCreateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n record: SearchRecord<TData>;\n}\n\nexport interface OnSearchRecordBeforeUpdateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n original: SearchRecord<TData>;\n input: Record<string, any>;\n}\n\nexport interface OnSearchRecordBeforeMoveTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n original: SearchRecord<TData>;\n folderId?: string | null;\n}\n\nexport interface OnSearchRecordAfterMoveTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n original: SearchRecord<TData>;\n folderId?: string | null;\n}\n\nexport interface OnSearchRecordAfterUpdateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n original: SearchRecord<TData>;\n record: SearchRecord<TData>;\n input: Record<string, any>;\n}\n\nexport interface OnSearchRecordBeforeDeleteTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n record: SearchRecord<TData>;\n}\n\nexport interface OnSearchRecordAfterDeleteTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n record: SearchRecord<TData>;\n}\n\nexport interface AcoSearchRecordCrudBase {\n get<TData extends GenericSearchData = GenericSearchData>(\n id: string\n ): Promise<SearchRecord<TData>>;\n list<TData extends GenericSearchData = GenericSearchData>(\n params: ListSearchRecordsParams\n ): Promise<[SearchRecord<TData>[], ListMeta]>;\n listTags(params: ListSearchRecordTagsParams): Promise<[SearchRecordTag[], ListMeta]>;\n create<TData extends GenericSearchData = GenericSearchData>(\n data: CreateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n update<TData extends GenericSearchData = GenericSearchData>(\n id: string,\n data: UpdateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n move(id: string, folderId?: string | null): Promise<boolean>;\n delete(id: string): Promise<Boolean>;\n}\n\nexport interface AcoSearchRecordCrud\n extends Omit<\n AcoSearchRecordCrudBase,\n \"get\" | \"list\" | \"create\" | \"update\" | \"delete\" | \"listTags\" | \"move\"\n > {\n get<TData>(model: CmsModel, id: string): Promise<SearchRecord<TData>>;\n list<TData>(\n model: CmsModel,\n params: ListSearchRecordsParams\n ): Promise<[SearchRecord<TData>[], ListMeta]>;\n listTags(\n model: CmsModel,\n params: ListSearchRecordTagsParams\n ): Promise<[SearchRecordTag[], ListMeta]>;\n create<TData>(\n model: CmsModel,\n data: CreateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n update<TData>(\n model: CmsModel,\n id: string,\n data: UpdateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n move(model: CmsModel, id: string, folderId?: string | null): Promise<boolean>;\n delete(model: CmsModel, id: string): Promise<Boolean>;\n onSearchRecordBeforeCreate: Topic<OnSearchRecordBeforeCreateTopicParams>;\n onSearchRecordAfterCreate: Topic<OnSearchRecordAfterCreateTopicParams>;\n onSearchRecordBeforeUpdate: Topic<OnSearchRecordBeforeUpdateTopicParams>;\n onSearchRecordAfterUpdate: Topic<OnSearchRecordAfterUpdateTopicParams>;\n onSearchRecordBeforeMove: Topic<OnSearchRecordBeforeMoveTopicParams>;\n onSearchRecordAfterMove: Topic<OnSearchRecordAfterMoveTopicParams>;\n onSearchRecordBeforeDelete: Topic<OnSearchRecordBeforeDeleteTopicParams>;\n onSearchRecordAfterDelete: Topic<OnSearchRecordAfterDeleteTopicParams>;\n}\n\nexport interface AcoSearchRecordStorageOperations {\n getRecord<TData extends GenericSearchData = GenericSearchData>(\n model: CmsModel,\n params: StorageOperationsGetSearchRecordParams\n ): Promise<SearchRecord<TData>>;\n listRecords<TData extends GenericSearchData = GenericSearchData>(\n model: CmsModel,\n params: StorageOperationsListSearchRecordsParams\n ): Promise<[SearchRecord<TData>[], ListMeta]>;\n listTags(\n model: CmsModel,\n params: StorageOperationsListSearchRecordTagsParams\n ): Promise<[SearchRecordTag[], ListMeta]>;\n createRecord<TData extends GenericSearchData = GenericSearchData>(\n model: CmsModel,\n params: StorageOperationsCreateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n updateRecord<TData extends GenericSearchData = GenericSearchData>(\n model: CmsModel,\n params: StorageOperationsUpdateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n moveRecord(model: CmsModel, params: StorageOperationsMoveSearchRecordParams): Promise<boolean>;\n deleteRecord(\n model: CmsModel,\n params: StorageOperationsDeleteSearchRecordParams\n ): Promise<boolean>;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["record.types.ts"],"sourcesContent":["import { AcoBaseFields, ListMeta } from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\n\nexport type GenericSearchData = {\n [key: string]: any;\n};\n\nexport interface Location {\n folderId: string;\n}\n\nexport interface SearchRecord<TData extends GenericSearchData = GenericSearchData>\n extends AcoBaseFields {\n type: string;\n title: string;\n content?: string;\n location: Location;\n data: TData;\n tags: string[];\n}\n\nexport interface SearchRecordTag {\n tag: string;\n count: number;\n}\n\nexport interface ListSearchRecordsWhere<TData extends GenericSearchData = GenericSearchData> {\n type: string;\n location?: {\n folderId: string;\n };\n tags_in?: string[];\n tags_startsWith?: string;\n tags_not_startsWith?: string;\n data?: TData;\n}\n\nexport interface ListSearchRecordsParams {\n where?: ListSearchRecordsWhere;\n search?: string;\n sort?: string[];\n limit?: number;\n after?: string | null;\n}\n\nexport type CreateSearchRecordParams<TData> = Pick<\n SearchRecord<TData>,\n \"id\" | \"title\" | \"content\" | \"type\" | \"location\" | \"data\" | \"tags\"\n>;\n\nexport interface UpdateSearchRecordParams<TData extends GenericSearchData> {\n title?: string;\n content?: string;\n location?: Location;\n data?: TData;\n tags?: string[];\n}\n\nexport interface DeleteSearchRecordParams {\n id: string;\n}\n\nexport interface ListSearchRecordTagsWhere {\n type: string;\n}\n\nexport interface ListSearchRecordTagsParams {\n where?: ListSearchRecordTagsWhere;\n}\n\nexport interface StorageOperationsGetSearchRecordParams {\n id: string;\n}\n\nexport type StorageOperationsListSearchRecordsParams = ListSearchRecordsParams;\nexport type StorageOperationsListSearchRecordTagsParams = ListSearchRecordTagsParams;\n\nexport interface StorageOperationsCreateSearchRecordParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n data: CreateSearchRecordParams<TData>;\n}\n\nexport interface StorageOperationsUpdateSearchRecordParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n id: string;\n data: UpdateSearchRecordParams<TData>;\n}\n\nexport interface StorageOperationsMoveSearchRecordParams {\n id: string;\n folderId?: string | null;\n}\n\nexport type StorageOperationsDeleteSearchRecordParams = DeleteSearchRecordParams;\n\nexport interface OnSearchRecordBeforeCreateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n input: CreateSearchRecordParams<TData>;\n}\n\nexport interface OnSearchRecordAfterCreateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n record: SearchRecord<TData>;\n}\n\nexport interface OnSearchRecordBeforeUpdateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n original: SearchRecord<TData>;\n input: Record<string, any>;\n}\n\nexport interface OnSearchRecordBeforeMoveTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n original: SearchRecord<TData>;\n folderId?: string | null;\n}\n\nexport interface OnSearchRecordAfterMoveTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n original: SearchRecord<TData>;\n folderId?: string | null;\n}\n\nexport interface OnSearchRecordAfterUpdateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n original: SearchRecord<TData>;\n record: SearchRecord<TData>;\n input: Record<string, any>;\n}\n\nexport interface OnSearchRecordBeforeDeleteTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n record: SearchRecord<TData>;\n}\n\nexport interface OnSearchRecordAfterDeleteTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n model: CmsModel;\n record: SearchRecord<TData>;\n}\n\nexport interface AcoSearchRecordCrudBase {\n get<TData extends GenericSearchData = GenericSearchData>(\n id: string\n ): Promise<SearchRecord<TData>>;\n list<TData extends GenericSearchData = GenericSearchData>(\n params: ListSearchRecordsParams\n ): Promise<[SearchRecord<TData>[], ListMeta]>;\n listTags(params: ListSearchRecordTagsParams): Promise<[SearchRecordTag[], ListMeta]>;\n create<TData extends GenericSearchData = GenericSearchData>(\n data: CreateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n update<TData extends GenericSearchData = GenericSearchData>(\n id: string,\n data: UpdateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n move(id: string, folderId?: string | null): Promise<boolean>;\n delete(id: string): Promise<Boolean>;\n}\n\nexport interface AcoSearchRecordCrud\n extends Omit<\n AcoSearchRecordCrudBase,\n \"get\" | \"list\" | \"create\" | \"update\" | \"delete\" | \"listTags\" | \"move\"\n > {\n get<TData>(model: CmsModel, id: string): Promise<SearchRecord<TData>>;\n list<TData>(\n model: CmsModel,\n params: ListSearchRecordsParams\n ): Promise<[SearchRecord<TData>[], ListMeta]>;\n listTags(\n model: CmsModel,\n params: ListSearchRecordTagsParams\n ): Promise<[SearchRecordTag[], ListMeta]>;\n create<TData>(\n model: CmsModel,\n data: CreateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n update<TData>(\n model: CmsModel,\n id: string,\n data: UpdateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n move(model: CmsModel, id: string, folderId?: string | null): Promise<boolean>;\n delete(model: CmsModel, id: string): Promise<Boolean>;\n onSearchRecordBeforeCreate: Topic<OnSearchRecordBeforeCreateTopicParams>;\n onSearchRecordAfterCreate: Topic<OnSearchRecordAfterCreateTopicParams>;\n onSearchRecordBeforeUpdate: Topic<OnSearchRecordBeforeUpdateTopicParams>;\n onSearchRecordAfterUpdate: Topic<OnSearchRecordAfterUpdateTopicParams>;\n onSearchRecordBeforeMove: Topic<OnSearchRecordBeforeMoveTopicParams>;\n onSearchRecordAfterMove: Topic<OnSearchRecordAfterMoveTopicParams>;\n onSearchRecordBeforeDelete: Topic<OnSearchRecordBeforeDeleteTopicParams>;\n onSearchRecordAfterDelete: Topic<OnSearchRecordAfterDeleteTopicParams>;\n}\n\nexport interface AcoSearchRecordStorageOperations {\n getRecord<TData extends GenericSearchData = GenericSearchData>(\n model: CmsModel,\n params: StorageOperationsGetSearchRecordParams\n ): Promise<SearchRecord<TData>>;\n listRecords<TData extends GenericSearchData = GenericSearchData>(\n model: CmsModel,\n params: StorageOperationsListSearchRecordsParams\n ): Promise<[SearchRecord<TData>[], ListMeta]>;\n listTags(\n model: CmsModel,\n params: StorageOperationsListSearchRecordTagsParams\n ): Promise<[SearchRecordTag[], ListMeta]>;\n createRecord<TData extends GenericSearchData = GenericSearchData>(\n model: CmsModel,\n params: StorageOperationsCreateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n updateRecord<TData extends GenericSearchData = GenericSearchData>(\n model: CmsModel,\n params: StorageOperationsUpdateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n moveRecord(model: CmsModel, params: StorageOperationsMoveSearchRecordParams): Promise<boolean>;\n deleteRecord(\n model: CmsModel,\n params: StorageOperationsDeleteSearchRecordParams\n ): Promise<boolean>;\n}\n"],"mappings":""}
package/types.d.ts CHANGED
@@ -1,10 +1,15 @@
1
1
  import { TenancyContext, Tenant } from "@webiny/api-tenancy/types";
2
2
  import { Context as BaseContext } from "@webiny/handler/types";
3
3
  import { I18NContext, I18NLocale } from "@webiny/api-i18n/types";
4
- import { SecurityContext, SecurityIdentity } from "@webiny/api-security/types";
4
+ import { SecurityContext } from "@webiny/api-security/types";
5
+ import { AdminUsersContext } from "@webiny/api-admin-users/types";
6
+ import { FileManagerContext } from "@webiny/api-file-manager/types";
5
7
  import { CmsContext, CmsModel, CmsModelField } from "@webiny/api-headless-cms/types";
6
- import { AcoSearchRecordCrud, AcoSearchRecordCrudBase, AcoSearchRecordStorageOperations } from "./record/record.types";
8
+ import { AcoSearchRecordCrud, AcoSearchRecordCrudBase, AcoSearchRecordStorageOperations, SearchRecord } from "./record/record.types";
7
9
  import { AcoFolderCrud, AcoFolderStorageOperations } from "./folder/folder.types";
10
+ import { AcoFilterCrud, AcoFilterStorageOperations } from "./filter/filter.types";
11
+ import { FolderLevelPermissions } from "./utils/FolderLevelPermissions";
12
+ export * from "./filter/filter.types";
8
13
  export * from "./folder/folder.types";
9
14
  export * from "./record/record.types";
10
15
  export interface User {
@@ -32,19 +37,21 @@ export interface AcoBaseFields {
32
37
  export interface AdvancedContentOrganisation {
33
38
  folder: AcoFolderCrud;
34
39
  search: AcoSearchRecordCrud;
40
+ filter: AcoFilterCrud;
41
+ folderLevelPermissions: FolderLevelPermissions;
35
42
  apps: IAcoApps;
36
43
  registerApp: (params: IAcoAppRegisterParams) => Promise<IAcoApp>;
37
44
  getApp: (name: string) => IAcoApp;
38
45
  listApps: () => IAcoApp[];
39
46
  }
40
47
  export interface CreateAcoParams {
41
- getIdentity: () => SecurityIdentity;
42
48
  getLocale: () => I18NLocale;
43
49
  getTenant: () => Tenant;
44
50
  storageOperations: AcoStorageOperations;
51
+ folderLevelPermissions: FolderLevelPermissions;
45
52
  }
46
- export declare type AcoStorageOperations = AcoFolderStorageOperations & AcoSearchRecordStorageOperations;
47
- export interface AcoContext extends BaseContext, I18NContext, TenancyContext, SecurityContext, CmsContext {
53
+ export declare type AcoStorageOperations = AcoFolderStorageOperations & AcoSearchRecordStorageOperations & AcoFilterStorageOperations;
54
+ export interface AcoContext extends BaseContext, I18NContext, TenancyContext, SecurityContext, AdminUsersContext, CmsContext, FileManagerContext {
48
55
  aco: AdvancedContentOrganisation;
49
56
  }
50
57
  /**
@@ -77,11 +84,18 @@ export interface IAcoApp {
77
84
  removeField: IAcoAppRemoveFieldCallable;
78
85
  modifyField: IAcoAppModifyFieldCallable;
79
86
  }
87
+ export declare type IAcoAppOnEntry<T = any> = (entry: SearchRecord<T>) => Promise<SearchRecord<T>>;
88
+ export declare type IAcoAppOnEntryList<T = any> = (entry: SearchRecord<T>[]) => Promise<SearchRecord<T>[]>;
89
+ export declare type AcoRequestAction = "create" | "update" | "delete" | "move" | "fetch";
90
+ export declare type IAcoAppOnAnyRequest = (context: AcoContext, action: AcoRequestAction) => Promise<void>;
80
91
  export interface IAcoAppParams {
81
92
  name: string;
82
93
  apiName: string;
83
94
  model: CmsModel;
84
95
  fields: CmsModelField[];
96
+ onEntry?: IAcoAppOnEntry;
97
+ onEntryList?: IAcoAppOnEntryList;
98
+ onAnyRequest?: IAcoAppOnAnyRequest;
85
99
  }
86
100
  export declare type IAcoAppsOptions = CreateAcoParams;
87
101
  export interface IAcoApps {
package/types.js CHANGED
@@ -7,6 +7,18 @@ var _exportNames = {
7
7
  ListSortDirection: true
8
8
  };
9
9
  exports.ListSortDirection = void 0;
10
+ var _filter = require("./filter/filter.types");
11
+ Object.keys(_filter).forEach(function (key) {
12
+ if (key === "default" || key === "__esModule") return;
13
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
14
+ if (key in exports && exports[key] === _filter[key]) return;
15
+ Object.defineProperty(exports, key, {
16
+ enumerable: true,
17
+ get: function () {
18
+ return _filter[key];
19
+ }
20
+ });
21
+ });
10
22
  var _folder = require("./folder/folder.types");
11
23
  Object.keys(_folder).forEach(function (key) {
12
24
  if (key === "default" || key === "__esModule") return;
@@ -42,4 +54,7 @@ let ListSortDirection = /*#__PURE__*/function (ListSortDirection) {
42
54
  /**
43
55
  * Apps
44
56
  */
45
- exports.ListSortDirection = ListSortDirection;
57
+ // TODO: determine correct type
58
+ exports.ListSortDirection = ListSortDirection;
59
+
60
+ //# sourceMappingURL=types.js.map
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_folder","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_record","ListSortDirection"],"sources":["types.ts"],"sourcesContent":["import { TenancyContext, Tenant } from \"@webiny/api-tenancy/types\";\nimport { Context as BaseContext } from \"@webiny/handler/types\";\nimport { I18NContext, I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityContext, SecurityIdentity } from \"@webiny/api-security/types\";\nimport { CmsContext, CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport {\n AcoSearchRecordCrud,\n AcoSearchRecordCrudBase,\n AcoSearchRecordStorageOperations\n} from \"~/record/record.types\";\nimport { AcoFolderCrud, AcoFolderStorageOperations } from \"~/folder/folder.types\";\n\nexport * from \"./folder/folder.types\";\nexport * from \"./record/record.types\";\n\nexport interface User {\n id: string;\n type: string;\n displayName: string | null;\n}\n\nexport interface ListMeta {\n cursor: string | null;\n totalCount: number;\n hasMoreItems: boolean;\n}\n\nexport enum ListSortDirection {\n ASC,\n DESC\n}\n\nexport type ListSort = Record<string, ListSortDirection>;\n\nexport interface AcoBaseFields {\n id: string;\n entryId: string;\n createdOn: string;\n createdBy: User;\n savedOn: string;\n}\n\nexport interface AdvancedContentOrganisation {\n folder: AcoFolderCrud;\n search: AcoSearchRecordCrud;\n apps: IAcoApps;\n registerApp: (params: IAcoAppRegisterParams) => Promise<IAcoApp>;\n getApp: (name: string) => IAcoApp;\n listApps: () => IAcoApp[];\n}\n\nexport interface CreateAcoParams {\n getIdentity: () => SecurityIdentity;\n getLocale: () => I18NLocale;\n getTenant: () => Tenant;\n storageOperations: AcoStorageOperations;\n}\n\nexport type AcoStorageOperations = AcoFolderStorageOperations & AcoSearchRecordStorageOperations;\n\nexport interface AcoContext\n extends BaseContext,\n I18NContext,\n TenancyContext,\n SecurityContext,\n CmsContext {\n aco: AdvancedContentOrganisation;\n}\n\n/**\n * @deprecated Use AcoContext instead\n */\nexport type ACOContext = AcoContext;\n\n/**\n * Apps\n */\nexport interface IAcoAppAddFieldCallable {\n (field: CmsModelField): void;\n}\n\nexport interface IAcoAppRemoveFieldCallable {\n (id: string): void;\n}\n\nexport interface IAcoAppModifyFieldCallableCallback {\n (field: CmsModelField): CmsModelField;\n}\n\nexport interface IAcoAppModifyFieldCallable {\n (id: string, cb: IAcoAppModifyFieldCallableCallback): void;\n}\n\nexport interface IAcoApp {\n context: AcoContext;\n search: AcoSearchRecordCrudBase;\n folder: AcoFolderCrud;\n name: string;\n model: CmsModel;\n getFields: () => CmsModelField[];\n addField: IAcoAppAddFieldCallable;\n removeField: IAcoAppRemoveFieldCallable;\n modifyField: IAcoAppModifyFieldCallable;\n}\n\nexport interface IAcoAppParams {\n name: string;\n apiName: string;\n model: CmsModel;\n fields: CmsModelField[];\n}\n\nexport type IAcoAppsOptions = CreateAcoParams;\n\nexport interface IAcoApps {\n list: () => IAcoApp[];\n register: (app: IAcoAppParams) => Promise<IAcoApp>;\n}\n\nexport type IAcoAppRegisterParams = Omit<IAcoAppParams, \"model\">;\n"],"mappings":";;;;;;;;;AAYA,IAAAA,OAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,OAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,OAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,OAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,OAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,OAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,OAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,OAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AAAsC,IAc1BU,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AA0C7B;AACA;AACA;AAGA;AACA;AACA;AAFAL,OAAA,CAAAK,iBAAA,GAAAA,iBAAA"}
1
+ {"version":3,"names":["_filter","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_folder","_record","ListSortDirection"],"sources":["types.ts"],"sourcesContent":["import { TenancyContext, Tenant } from \"@webiny/api-tenancy/types\";\nimport { Context as BaseContext } from \"@webiny/handler/types\";\nimport { I18NContext, I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityContext } from \"@webiny/api-security/types\";\nimport { AdminUsersContext } from \"@webiny/api-admin-users/types\";\nimport { FileManagerContext } from \"@webiny/api-file-manager/types\";\nimport { CmsContext, CmsModel, CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport {\n AcoSearchRecordCrud,\n AcoSearchRecordCrudBase,\n AcoSearchRecordStorageOperations,\n SearchRecord\n} from \"~/record/record.types\";\nimport { AcoFolderCrud, AcoFolderStorageOperations } from \"~/folder/folder.types\";\nimport { AcoFilterCrud, AcoFilterStorageOperations } from \"~/filter/filter.types\";\nimport { FolderLevelPermissions } from \"~/utils/FolderLevelPermissions\";\n\nexport * from \"./filter/filter.types\";\nexport * from \"./folder/folder.types\";\nexport * from \"./record/record.types\";\n\nexport interface User {\n id: string;\n type: string;\n displayName: string | null;\n}\n\nexport interface ListMeta {\n cursor: string | null;\n totalCount: number;\n hasMoreItems: boolean;\n}\n\nexport enum ListSortDirection {\n ASC,\n DESC\n}\n\nexport type ListSort = Record<string, ListSortDirection>;\n\nexport interface AcoBaseFields {\n id: string;\n entryId: string;\n createdOn: string;\n createdBy: User;\n savedOn: string;\n}\n\nexport interface AdvancedContentOrganisation {\n folder: AcoFolderCrud;\n search: AcoSearchRecordCrud;\n filter: AcoFilterCrud;\n folderLevelPermissions: FolderLevelPermissions;\n apps: IAcoApps;\n registerApp: (params: IAcoAppRegisterParams) => Promise<IAcoApp>;\n getApp: (name: string) => IAcoApp;\n listApps: () => IAcoApp[];\n}\n\nexport interface CreateAcoParams {\n getLocale: () => I18NLocale;\n getTenant: () => Tenant;\n storageOperations: AcoStorageOperations;\n folderLevelPermissions: FolderLevelPermissions;\n}\n\nexport type AcoStorageOperations = AcoFolderStorageOperations &\n AcoSearchRecordStorageOperations &\n AcoFilterStorageOperations;\n\nexport interface AcoContext\n extends BaseContext,\n I18NContext,\n TenancyContext,\n SecurityContext,\n AdminUsersContext,\n CmsContext,\n FileManagerContext {\n aco: AdvancedContentOrganisation;\n}\n\n/**\n * @deprecated Use AcoContext instead\n */\nexport type ACOContext = AcoContext;\n\n/**\n * Apps\n */\nexport interface IAcoAppAddFieldCallable {\n (field: CmsModelField): void;\n}\n\nexport interface IAcoAppRemoveFieldCallable {\n (id: string): void;\n}\n\nexport interface IAcoAppModifyFieldCallableCallback {\n (field: CmsModelField): CmsModelField;\n}\n\nexport interface IAcoAppModifyFieldCallable {\n (id: string, cb: IAcoAppModifyFieldCallableCallback): void;\n}\n\nexport interface IAcoApp {\n context: AcoContext;\n search: AcoSearchRecordCrudBase;\n folder: AcoFolderCrud;\n name: string;\n model: CmsModel;\n getFields: () => CmsModelField[];\n addField: IAcoAppAddFieldCallable;\n removeField: IAcoAppRemoveFieldCallable;\n modifyField: IAcoAppModifyFieldCallable;\n}\n// TODO: determine correct type\nexport type IAcoAppOnEntry<T = any> = (entry: SearchRecord<T>) => Promise<SearchRecord<T>>;\nexport type IAcoAppOnEntryList<T = any> = (entry: SearchRecord<T>[]) => Promise<SearchRecord<T>[]>;\nexport type AcoRequestAction = \"create\" | \"update\" | \"delete\" | \"move\" | \"fetch\";\nexport type IAcoAppOnAnyRequest = (context: AcoContext, action: AcoRequestAction) => Promise<void>;\n\nexport interface IAcoAppParams {\n name: string;\n apiName: string;\n model: CmsModel;\n fields: CmsModelField[];\n onEntry?: IAcoAppOnEntry;\n onEntryList?: IAcoAppOnEntryList;\n onAnyRequest?: IAcoAppOnAnyRequest;\n}\n\nexport type IAcoAppsOptions = CreateAcoParams;\n\nexport interface IAcoApps {\n list: () => IAcoApp[];\n register: (app: IAcoAppParams) => Promise<IAcoApp>;\n}\n\nexport type IAcoAppRegisterParams = Omit<IAcoAppParams, \"model\">;\n"],"mappings":";;;;;;;;;AAiBA,IAAAA,OAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,OAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,OAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,OAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,OAAA,GAAAb,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAW,OAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,OAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,OAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,OAAA,GAAAd,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAY,OAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,OAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,OAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AAAsC,IAc1BW,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAgD7B;AACA;AACA;AAGA;AACA;AACA;AA4BA;AAAAN,OAAA,CAAAM,iBAAA,GAAAA,iBAAA"}
@@ -0,0 +1,68 @@
1
+ import { Authentication } from "@webiny/api-authentication/types";
2
+ import { SecurityPermission, Team } from "@webiny/api-security/types";
3
+ import { Folder } from "../folder/folder.types";
4
+ export declare type FolderAccessLevel = "owner" | "viewer" | "editor" | "public";
5
+ export interface FolderPermission {
6
+ target: string;
7
+ level: FolderAccessLevel;
8
+ inheritedFrom?: string;
9
+ }
10
+ export interface FolderPermissionsListItem {
11
+ folderId: string;
12
+ permissions: FolderPermission[];
13
+ }
14
+ export declare type FolderPermissionsList = FolderPermissionsListItem[];
15
+ export interface CanAccessFolderContentParams {
16
+ folder: Pick<Folder, "id" | "type" | "parentId">;
17
+ rwd?: "r" | "w" | "d";
18
+ foldersList?: Folder[];
19
+ }
20
+ export interface CanAccessFolderParams extends CanAccessFolderContentParams {
21
+ managePermissions?: boolean;
22
+ }
23
+ interface FilterFoldersParams {
24
+ folders: Array<Folder>;
25
+ rwd?: "r" | "w" | "d";
26
+ }
27
+ interface GetFolderPermissionsParams {
28
+ folder: Pick<Folder, "id" | "type">;
29
+ foldersList?: Folder[];
30
+ }
31
+ interface ListFolderPermissionsParams {
32
+ folderType: string;
33
+ foldersList?: Folder[];
34
+ }
35
+ export interface FolderLevelPermissionsParams {
36
+ getIdentity: Authentication["getIdentity"];
37
+ getIdentityTeam: () => Promise<Team | null>;
38
+ listPermissions: () => Promise<SecurityPermission[]>;
39
+ listAllFolders: (folderType: string) => Promise<Folder[]>;
40
+ canUseTeams: () => boolean;
41
+ canUseFolderLevelPermissions: () => boolean;
42
+ }
43
+ export declare class FolderLevelPermissions {
44
+ private readonly getIdentity;
45
+ private readonly getIdentityTeam;
46
+ private readonly listPermissions;
47
+ private readonly listAllFoldersCallback;
48
+ private readonly canUseTeams;
49
+ private readonly canUseFolderLevelPermissions;
50
+ private allFolders;
51
+ constructor(params: FolderLevelPermissionsParams);
52
+ listAllFolders(folderType: string): Promise<Folder[]>;
53
+ listAllFoldersWithPermissions(folderType: string): Promise<Folder[]>;
54
+ invalidateCache(folderType?: string): void;
55
+ listFoldersPermissions(params: ListFolderPermissionsParams): Promise<FolderPermissionsList>;
56
+ getFolderPermissions(params: GetFolderPermissionsParams): Promise<FolderPermissionsListItem | undefined>;
57
+ canAccessFolder(params: CanAccessFolderParams): Promise<boolean>;
58
+ ensureCanAccessFolder(params: CanAccessFolderParams): Promise<void>;
59
+ canManageFolderPermissions(folder: Folder): false | Promise<boolean>;
60
+ canManageFolderStructure(folder: Folder): true | Promise<boolean>;
61
+ canAccessFolderContent(params: CanAccessFolderContentParams): Promise<boolean>;
62
+ ensureCanAccessFolderContent(params: CanAccessFolderContentParams): Promise<void>;
63
+ canCreateFolderInRoot(): Promise<boolean>;
64
+ filterFolders(params: FilterFoldersParams): Promise<Folder[]>;
65
+ assignFolderPermissions(folder: Folder | Folder[]): Promise<void>;
66
+ permissionsIncludeNonInheritedPermissions(folderPermissionsList?: FolderPermission[]): boolean | undefined;
67
+ }
68
+ export {};