@webiny/api-aco 0.0.0-unstable.7f63ea0744 → 0.0.0-unstable.99666aeb00

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 (107) hide show
  1. package/README.md +6 -6
  2. package/apps/AcoApp.d.ts +16 -0
  3. package/apps/AcoApp.js +108 -0
  4. package/apps/AcoApp.js.map +1 -0
  5. package/apps/AcoApps.d.ts +10 -0
  6. package/apps/AcoApps.js +76 -0
  7. package/apps/AcoApps.js.map +1 -0
  8. package/apps/app.gql.d.ts +3 -0
  9. package/apps/app.gql.js +58 -0
  10. package/apps/app.gql.js.map +1 -0
  11. package/apps/index.d.ts +2 -0
  12. package/apps/index.js +27 -0
  13. package/apps/index.js.map +1 -0
  14. package/createAcoContext.js +50 -13
  15. package/createAcoContext.js.map +1 -1
  16. package/createAcoGraphQL.d.ts +2 -2
  17. package/createAcoGraphQL.js +44 -14
  18. package/createAcoGraphQL.js.map +1 -1
  19. package/createAcoModels.js +0 -25
  20. package/createAcoModels.js.map +1 -1
  21. package/{createAcoFields.d.ts → fields/index.d.ts} +1 -1
  22. package/fields/index.js +12 -0
  23. package/fields/index.js.map +1 -0
  24. package/fields/location.d.ts +2 -0
  25. package/fields/location.js +44 -0
  26. package/fields/location.js.map +1 -0
  27. package/folder/folder.crud.js +18 -0
  28. package/folder/folder.crud.js.map +1 -1
  29. package/folder/folder.gql.js +20 -5
  30. package/folder/folder.gql.js.map +1 -1
  31. package/folder/folder.model.d.ts +3 -3
  32. package/folder/folder.model.js +3 -25
  33. package/folder/folder.model.js.map +1 -1
  34. package/folder/folder.so.d.ts +1 -6
  35. package/folder/folder.so.js +103 -108
  36. package/folder/folder.so.js.map +1 -1
  37. package/folder/folder.types.d.ts +9 -3
  38. package/folder/folder.types.js.map +1 -1
  39. package/folder/onFolderBeforeDelete.hook.js +40 -27
  40. package/folder/onFolderBeforeDelete.hook.js.map +1 -1
  41. package/index.d.ts +5 -1
  42. package/index.js +48 -6
  43. package/index.js.map +1 -1
  44. package/package.json +34 -31
  45. package/plugins/AcoAppModifierPlugin.d.ts +43 -0
  46. package/plugins/AcoAppModifierPlugin.js +59 -0
  47. package/plugins/AcoAppModifierPlugin.js.map +1 -0
  48. package/plugins/AcoAppRegisterPlugin.d.ts +8 -0
  49. package/plugins/AcoAppRegisterPlugin.js +22 -0
  50. package/plugins/AcoAppRegisterPlugin.js.map +1 -0
  51. package/plugins/index.d.ts +2 -0
  52. package/plugins/index.js +27 -0
  53. package/plugins/index.js.map +1 -0
  54. package/record/graphql/createAppResolvers.d.ts +14 -0
  55. package/record/graphql/createAppResolvers.js +108 -0
  56. package/record/graphql/createAppResolvers.js.map +1 -0
  57. package/record/graphql/createAppSchema.d.ts +9 -0
  58. package/record/graphql/createAppSchema.js +142 -0
  59. package/record/graphql/createAppSchema.js.map +1 -0
  60. package/record/record.crud.js +46 -12
  61. package/record/record.crud.js.map +1 -1
  62. package/record/record.gql.d.ts +8 -3
  63. package/record/record.gql.js +36 -113
  64. package/record/record.gql.js.map +1 -1
  65. package/record/record.model.d.ts +10 -4
  66. package/record/record.model.js +39 -28
  67. package/record/record.model.js.map +1 -1
  68. package/record/record.so.d.ts +1 -6
  69. package/record/record.so.js +112 -62
  70. package/record/record.so.js.map +1 -1
  71. package/record/record.types.d.ts +66 -15
  72. package/record/record.types.js.map +1 -1
  73. package/types.d.ts +56 -3
  74. package/types.js +35 -1
  75. package/types.js.map +1 -1
  76. package/utils/acoRecordId.d.ts +6 -0
  77. package/utils/acoRecordId.js +33 -0
  78. package/utils/acoRecordId.js.map +1 -0
  79. package/utils/checkPermissions.d.ts +2 -0
  80. package/utils/checkPermissions.js +14 -0
  81. package/utils/checkPermissions.js.map +1 -0
  82. package/utils/createListSort.d.ts +2 -0
  83. package/utils/createListSort.js +13 -0
  84. package/utils/createListSort.js.map +1 -0
  85. package/utils/createModelField.d.ts +0 -1
  86. package/utils/createModelField.js +2 -4
  87. package/utils/createModelField.js.map +1 -1
  88. package/utils/createOperationsWrapper.d.ts +9 -0
  89. package/utils/createOperationsWrapper.js +29 -0
  90. package/utils/createOperationsWrapper.js.map +1 -0
  91. package/utils/getFieldValues.d.ts +4 -1
  92. package/utils/getFieldValues.js +6 -2
  93. package/utils/getFieldValues.js.map +1 -1
  94. package/utils/getFolderAndItsAncestors.d.ts +7 -0
  95. package/utils/getFolderAndItsAncestors.js +48 -0
  96. package/utils/getFolderAndItsAncestors.js.map +1 -0
  97. package/utils/modelFactory.d.ts +3 -3
  98. package/utils/modelFactory.js +4 -2
  99. package/utils/modelFactory.js.map +1 -1
  100. package/utils/resolve.d.ts +2 -1
  101. package/utils/resolve.js +11 -2
  102. package/utils/resolve.js.map +1 -1
  103. package/createAcoCrud.d.ts +0 -2
  104. package/createAcoCrud.js +0 -17
  105. package/createAcoCrud.js.map +0 -1
  106. package/createAcoFields.js +0 -40
  107. package/createAcoFields.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["createSearchRecordOperations","params","cms","security","getRecordModel","disableAuthorization","model","getModel","SEARCH_RECORD_MODEL_ID","enableAuthorization","WebinyError","getRecord","id","entry","getEntry","where","originalId","latest","getFieldValues","baseFields","listRecords","entries","meta","listLatestEntries","map","createRecord","data","createEntry","updateRecord","original","input","updateEntry","deleteRecord","deleteEntry"],"sources":["record.so.ts"],"sourcesContent":["import { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport WebinyError from \"@webiny/error\";\n\nimport { SEARCH_RECORD_MODEL_ID } from \"./record.model\";\nimport { baseFields, CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { getFieldValues } from \"~/utils/getFieldValues\";\n\nimport { AcoSearchRecordStorageOperations as BaseAcoSearchRecordStorageOperations } from \"./record.types\";\n\ninterface AcoSearchRecordStorageOperations extends BaseAcoSearchRecordStorageOperations {\n getRecordModel(): Promise<CmsModel>;\n}\n\nexport const createSearchRecordOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoSearchRecordStorageOperations => {\n const { cms, security } = params;\n const getRecordModel = async () => {\n security.disableAuthorization();\n const model = await cms.getModel(SEARCH_RECORD_MODEL_ID);\n security.enableAuthorization();\n if (!model) {\n throw new WebinyError(\n `Could not find \"${SEARCH_RECORD_MODEL_ID}\" model.`,\n \"MODEL_NOT_FOUND_ERROR\"\n );\n }\n return model;\n };\n\n const getRecord: AcoSearchRecordStorageOperations[\"getRecord\"] = async ({ id }) => {\n const model = await getRecordModel();\n security.disableAuthorization();\n\n /**\n * The record \"id\" is generated on creation.\n * Still, we need to get/update/delete records by the original entry id.\n */\n const entry = await cms.getEntry(model, { where: { originalId: id, latest: true } });\n\n if (!entry) {\n throw new WebinyError(\"Could not load record.\", \"GET_ENTRY_ERROR\", {\n id\n });\n }\n\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n };\n\n return {\n getRecordModel,\n getRecord,\n async listRecords(params) {\n const model = await getRecordModel();\n security.disableAuthorization();\n\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n where: {\n ...(params.where || {})\n }\n });\n\n security.enableAuthorization();\n return [entries.map(entry => getFieldValues(entry, baseFields)), meta];\n },\n async createRecord({ data }) {\n const model = await getRecordModel();\n security.disableAuthorization();\n\n const entry = await cms.createEntry(model, data);\n\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n },\n async updateRecord({ id, data }) {\n const model = await getRecordModel();\n security.disableAuthorization();\n\n const original = await getRecord({ id });\n\n const input = {\n ...original,\n ...data\n };\n\n const entry = await cms.updateEntry(model, original.id, input);\n security.enableAuthorization();\n return getFieldValues(entry, baseFields);\n },\n async deleteRecord({ id }) {\n const model = await getRecordModel();\n security.disableAuthorization();\n\n const entry = await getRecord({ id });\n\n await cms.deleteEntry(model, entry.id);\n\n security.enableAuthorization();\n return true;\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createSearchRecordOperations","params","cms","security","getRecord","model","id","revisions","storageOperations","entries","getLatestByIds","ids","attachAcoRecordPrefix","length","WebinyError","withoutAuthorization","record","getRecordFieldValues","listRecords","sort","where","meta","listLatestEntries","map","entry","listTags","items","getUniqueFieldValues","latest","fieldId","hasMoreItems","totalCount","cursor","tags","item","tag","value","count","createRecord","data","SearchRecordData","rest","createEntry","updateRecord","original","input","updateEntry","moveRecord","folderId","wbyAco_location","lookFor","SEARCH_RECORD_MODEL_ID","modelId","substring","location","deleteRecord","deleteEntry"],"sources":["record.so.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { getRecordFieldValues } from \"~/utils/getFieldValues\";\nimport { AcoSearchRecordStorageOperations } from \"./record.types\";\nimport { CmsModel, UpdateCmsEntryInput } from \"@webiny/api-headless-cms/types\";\nimport { attachAcoRecordPrefix } from \"~/utils/acoRecordId\";\nimport { SEARCH_RECORD_MODEL_ID } from \"~/record/record.model\";\n\nexport const createSearchRecordOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoSearchRecordStorageOperations => {\n const { cms, security } = params;\n\n const getRecord = async (model: CmsModel, id: string) => {\n /**\n * The record \"id\" has been passed by the original entry.\n * We need to retrieve it via `cms.storageOperations.entries.getLatestByIds()` method and return the first one.\n */\n const revisions = await cms.storageOperations.entries.getLatestByIds(model, {\n ids: [attachAcoRecordPrefix(id)]\n });\n\n if (revisions.length === 0) {\n throw new WebinyError(\"Record not found.\", \"NOT_FOUND\", {\n id\n });\n }\n\n return revisions[0];\n };\n\n return {\n async getRecord(model, { id }) {\n return security.withoutAuthorization(async () => {\n const record = await getRecord(model, id);\n return getRecordFieldValues(record);\n });\n },\n listRecords(model, params) {\n return security.withoutAuthorization(async () => {\n const { sort, where } = params;\n\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n sort,\n where: {\n ...(where || {})\n }\n });\n\n return [entries.map(entry => getRecordFieldValues(entry)), meta];\n });\n },\n listTags(model, params) {\n return security.withoutAuthorization(async () => {\n const { where } = params;\n\n const items = await cms.getUniqueFieldValues(model, {\n where: {\n ...(where || {}),\n latest: true\n },\n fieldId: \"tags\"\n });\n\n const meta = {\n hasMoreItems: false,\n totalCount: items.length,\n cursor: null\n };\n\n const tags = items.map(item => {\n return {\n tag: item.value,\n count: item.count\n };\n });\n\n return [tags, meta];\n });\n },\n createRecord(model, { data: SearchRecordData }) {\n return security.withoutAuthorization(async () => {\n const { tags = [], data = {}, ...rest } = SearchRecordData;\n const entry = await cms.createEntry(model, {\n tags,\n data,\n ...rest,\n id: attachAcoRecordPrefix(rest.id)\n });\n\n return getRecordFieldValues(entry);\n });\n },\n updateRecord(this: AcoSearchRecordStorageOperations, model, { id, data }) {\n return security.withoutAuthorization(async () => {\n const original = await this.getRecord(model, { id });\n\n const input = {\n ...original,\n ...data\n };\n\n const entry = await cms.updateEntry(\n model,\n attachAcoRecordPrefix(original.id),\n input\n );\n\n return getRecordFieldValues(entry);\n });\n },\n moveRecord(this: AcoSearchRecordStorageOperations, model, params) {\n const { id, folderId } = params;\n return security.withoutAuthorization(async () => {\n const original = await this.getRecord(model, { id });\n\n const input: UpdateCmsEntryInput = {\n wbyAco_location: {\n folderId\n }\n };\n /**\n * We only apply the location to the search record model as we do not want to override the users data.\n */\n const lookFor = `${SEARCH_RECORD_MODEL_ID}-`;\n if (model.modelId.substring(0, lookFor.length) === lookFor) {\n input.location = {\n folderId\n };\n }\n\n await cms.updateEntry(model, attachAcoRecordPrefix(original.id), input);\n\n return true;\n });\n },\n deleteRecord(model, { id }) {\n return security.withoutAuthorization(async () => {\n await cms.deleteEntry(model, attachAcoRecordPrefix(id));\n return true;\n });\n }\n };\n};\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { AcoBaseFields, ListMeta } from "../types";
2
2
  import { Topic } from "@webiny/pubsub/types";
3
+ import { CmsModel } from "@webiny/api-headless-cms/types";
3
4
  export declare type GenericSearchData = {
4
5
  [key: string]: any;
5
6
  };
@@ -7,18 +8,25 @@ export interface Location {
7
8
  folderId: string;
8
9
  }
9
10
  export interface SearchRecord<TData extends GenericSearchData = GenericSearchData> extends AcoBaseFields {
10
- originalId: string;
11
11
  type: string;
12
- title?: string;
12
+ title: string;
13
13
  content?: string;
14
- location?: Location;
15
- data?: TData;
14
+ location: Location;
15
+ data: TData;
16
+ tags: string[];
17
+ }
18
+ export interface SearchRecordTag {
19
+ tag: string;
20
+ count: number;
16
21
  }
17
22
  export interface ListSearchRecordsWhere {
18
23
  type: string;
19
24
  location?: {
20
25
  folderId: string;
21
26
  };
27
+ tags_in?: string[];
28
+ tags_startsWith?: string;
29
+ tags_not_startsWith?: string;
22
30
  }
23
31
  export interface ListSearchRecordsParams {
24
32
  where?: ListSearchRecordsWhere;
@@ -27,20 +35,28 @@ export interface ListSearchRecordsParams {
27
35
  limit?: number;
28
36
  after?: string | null;
29
37
  }
30
- export declare type CreateSearchRecordParams<TData> = Pick<SearchRecord<TData>, "originalId" | "title" | "content" | "type" | "location" | "data">;
38
+ export declare type CreateSearchRecordParams<TData> = Pick<SearchRecord<TData>, "id" | "title" | "content" | "type" | "location" | "data" | "tags">;
31
39
  export interface UpdateSearchRecordParams<TData extends GenericSearchData> {
32
40
  title?: string;
33
41
  content?: string;
34
42
  location?: Location;
35
43
  data?: TData;
44
+ tags?: string[];
36
45
  }
37
46
  export interface DeleteSearchRecordParams {
38
47
  id: string;
39
48
  }
49
+ export interface ListSearchRecordTagsWhere {
50
+ type: string;
51
+ }
52
+ export interface ListSearchRecordTagsParams {
53
+ where?: ListSearchRecordTagsWhere;
54
+ }
40
55
  export interface StorageOperationsGetSearchRecordParams {
41
56
  id: string;
42
57
  }
43
58
  export declare type StorageOperationsListSearchRecordsParams = ListSearchRecordsParams;
59
+ export declare type StorageOperationsListSearchRecordTagsParams = ListSearchRecordTagsParams;
44
60
  export interface StorageOperationsCreateSearchRecordParams<TData extends GenericSearchData = GenericSearchData> {
45
61
  data: CreateSearchRecordParams<TData>;
46
62
  }
@@ -48,45 +64,80 @@ export interface StorageOperationsUpdateSearchRecordParams<TData extends Generic
48
64
  id: string;
49
65
  data: UpdateSearchRecordParams<TData>;
50
66
  }
67
+ export interface StorageOperationsMoveSearchRecordParams {
68
+ id: string;
69
+ folderId?: string | null;
70
+ }
51
71
  export declare type StorageOperationsDeleteSearchRecordParams = DeleteSearchRecordParams;
52
72
  export interface OnSearchRecordBeforeCreateTopicParams<TData extends GenericSearchData = GenericSearchData> {
73
+ model: CmsModel;
53
74
  input: CreateSearchRecordParams<TData>;
54
75
  }
55
76
  export interface OnSearchRecordAfterCreateTopicParams<TData extends GenericSearchData = GenericSearchData> {
77
+ model: CmsModel;
56
78
  record: SearchRecord<TData>;
57
79
  }
58
80
  export interface OnSearchRecordBeforeUpdateTopicParams<TData extends GenericSearchData = GenericSearchData> {
81
+ model: CmsModel;
59
82
  original: SearchRecord<TData>;
60
83
  input: Record<string, any>;
61
84
  }
85
+ export interface OnSearchRecordBeforeMoveTopicParams<TData extends GenericSearchData = GenericSearchData> {
86
+ model: CmsModel;
87
+ original: SearchRecord<TData>;
88
+ folderId?: string | null;
89
+ }
90
+ export interface OnSearchRecordAfterMoveTopicParams<TData extends GenericSearchData = GenericSearchData> {
91
+ model: CmsModel;
92
+ original: SearchRecord<TData>;
93
+ folderId?: string | null;
94
+ }
62
95
  export interface OnSearchRecordAfterUpdateTopicParams<TData extends GenericSearchData = GenericSearchData> {
96
+ model: CmsModel;
63
97
  original: SearchRecord<TData>;
64
98
  record: SearchRecord<TData>;
65
99
  input: Record<string, any>;
66
100
  }
67
101
  export interface OnSearchRecordBeforeDeleteTopicParams<TData extends GenericSearchData = GenericSearchData> {
102
+ model: CmsModel;
68
103
  record: SearchRecord<TData>;
69
104
  }
70
105
  export interface OnSearchRecordAfterDeleteTopicParams<TData extends GenericSearchData = GenericSearchData> {
106
+ model: CmsModel;
71
107
  record: SearchRecord<TData>;
72
108
  }
73
- export interface AcoSearchRecordCrud {
74
- get<TData>(id: string): Promise<SearchRecord<TData>>;
75
- list<TData>(params: ListSearchRecordsParams): Promise<[SearchRecord<TData>[], ListMeta]>;
76
- create<TData>(data: CreateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
77
- update<TData>(id: string, data: UpdateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
109
+ export interface AcoSearchRecordCrudBase {
110
+ get<TData extends GenericSearchData = GenericSearchData>(id: string): Promise<SearchRecord<TData>>;
111
+ list<TData extends GenericSearchData = GenericSearchData>(params: ListSearchRecordsParams): Promise<[SearchRecord<TData>[], ListMeta]>;
112
+ listTags(params: ListSearchRecordTagsParams): Promise<[SearchRecordTag[], ListMeta]>;
113
+ create<TData extends GenericSearchData = GenericSearchData>(data: CreateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
114
+ update<TData extends GenericSearchData = GenericSearchData>(id: string, data: UpdateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
115
+ move(id: string, folderId?: string | null): Promise<boolean>;
78
116
  delete(id: string): Promise<Boolean>;
117
+ }
118
+ export interface AcoSearchRecordCrud extends Omit<AcoSearchRecordCrudBase, "get" | "list" | "create" | "update" | "delete" | "listTags" | "move"> {
119
+ get<TData>(model: CmsModel, id: string): Promise<SearchRecord<TData>>;
120
+ list<TData>(model: CmsModel, params: ListSearchRecordsParams): Promise<[SearchRecord<TData>[], ListMeta]>;
121
+ listTags(model: CmsModel, params: ListSearchRecordTagsParams): Promise<[SearchRecordTag[], ListMeta]>;
122
+ create<TData>(model: CmsModel, data: CreateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
123
+ update<TData>(model: CmsModel, id: string, data: UpdateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
124
+ move(model: CmsModel, id: string, folderId?: string | null): Promise<boolean>;
125
+ delete(model: CmsModel, id: string): Promise<Boolean>;
79
126
  onSearchRecordBeforeCreate: Topic<OnSearchRecordBeforeCreateTopicParams>;
80
127
  onSearchRecordAfterCreate: Topic<OnSearchRecordAfterCreateTopicParams>;
81
128
  onSearchRecordBeforeUpdate: Topic<OnSearchRecordBeforeUpdateTopicParams>;
82
129
  onSearchRecordAfterUpdate: Topic<OnSearchRecordAfterUpdateTopicParams>;
130
+ onSearchRecordBeforeMove: Topic<OnSearchRecordBeforeMoveTopicParams>;
131
+ onSearchRecordAfterMove: Topic<OnSearchRecordAfterMoveTopicParams>;
83
132
  onSearchRecordBeforeDelete: Topic<OnSearchRecordBeforeDeleteTopicParams>;
84
133
  onSearchRecordAfterDelete: Topic<OnSearchRecordAfterDeleteTopicParams>;
85
134
  }
86
135
  export interface AcoSearchRecordStorageOperations {
87
- getRecord<TData extends GenericSearchData = GenericSearchData>(params: StorageOperationsGetSearchRecordParams): Promise<SearchRecord<TData>>;
88
- listRecords<TData extends GenericSearchData = GenericSearchData>(params: StorageOperationsListSearchRecordsParams): Promise<[SearchRecord<TData>[], ListMeta]>;
89
- createRecord<TData extends GenericSearchData = GenericSearchData>(params: StorageOperationsCreateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
90
- updateRecord<TData extends GenericSearchData = GenericSearchData>(params: StorageOperationsUpdateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
91
- deleteRecord(params: StorageOperationsDeleteSearchRecordParams): Promise<boolean>;
136
+ getRecord<TData extends GenericSearchData = GenericSearchData>(model: CmsModel, params: StorageOperationsGetSearchRecordParams): Promise<SearchRecord<TData>>;
137
+ listRecords<TData extends GenericSearchData = GenericSearchData>(model: CmsModel, params: StorageOperationsListSearchRecordsParams): Promise<[SearchRecord<TData>[], ListMeta]>;
138
+ listTags(model: CmsModel, params: StorageOperationsListSearchRecordTagsParams): Promise<[SearchRecordTag[], ListMeta]>;
139
+ createRecord<TData extends GenericSearchData = GenericSearchData>(model: CmsModel, params: StorageOperationsCreateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
140
+ updateRecord<TData extends GenericSearchData = GenericSearchData>(model: CmsModel, params: StorageOperationsUpdateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;
141
+ moveRecord(model: CmsModel, params: StorageOperationsMoveSearchRecordParams): Promise<boolean>;
142
+ deleteRecord(model: CmsModel, params: StorageOperationsDeleteSearchRecordParams): Promise<boolean>;
92
143
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["record.types.ts"],"sourcesContent":["import { AcoBaseFields, ListMeta } from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/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 originalId: string;\n type: string;\n title?: string;\n content?: string;\n location?: Location;\n data?: TData;\n}\n\nexport interface ListSearchRecordsWhere {\n type: string;\n location?: {\n folderId: string;\n };\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 \"originalId\" | \"title\" | \"content\" | \"type\" | \"location\" | \"data\"\n>;\n\nexport interface UpdateSearchRecordParams<TData extends GenericSearchData> {\n title?: string;\n content?: string;\n location?: Location;\n data?: TData;\n}\n\nexport interface DeleteSearchRecordParams {\n id: string;\n}\n\nexport interface StorageOperationsGetSearchRecordParams {\n id: string;\n}\n\nexport type StorageOperationsListSearchRecordsParams = ListSearchRecordsParams;\n\nexport interface StorageOperationsCreateSearchRecordParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n data: CreateSearchRecordParams<TData>;\n}\nexport interface StorageOperationsUpdateSearchRecordParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n id: string;\n data: UpdateSearchRecordParams<TData>;\n}\nexport type StorageOperationsDeleteSearchRecordParams = DeleteSearchRecordParams;\n\nexport interface OnSearchRecordBeforeCreateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n input: CreateSearchRecordParams<TData>;\n}\n\nexport interface OnSearchRecordAfterCreateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n record: SearchRecord<TData>;\n}\n\nexport interface OnSearchRecordBeforeUpdateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n original: SearchRecord<TData>;\n input: Record<string, any>;\n}\n\nexport interface OnSearchRecordAfterUpdateTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\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 record: SearchRecord<TData>;\n}\n\nexport interface OnSearchRecordAfterDeleteTopicParams<\n TData extends GenericSearchData = GenericSearchData\n> {\n record: SearchRecord<TData>;\n}\n\nexport interface AcoSearchRecordCrud {\n get<TData>(id: string): Promise<SearchRecord<TData>>;\n list<TData>(params: ListSearchRecordsParams): Promise<[SearchRecord<TData>[], ListMeta]>;\n create<TData>(data: CreateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;\n update<TData>(id: string, data: UpdateSearchRecordParams<TData>): Promise<SearchRecord<TData>>;\n delete(id: string): Promise<Boolean>;\n onSearchRecordBeforeCreate: Topic<OnSearchRecordBeforeCreateTopicParams>;\n onSearchRecordAfterCreate: Topic<OnSearchRecordAfterCreateTopicParams>;\n onSearchRecordBeforeUpdate: Topic<OnSearchRecordBeforeUpdateTopicParams>;\n onSearchRecordAfterUpdate: Topic<OnSearchRecordAfterUpdateTopicParams>;\n onSearchRecordBeforeDelete: Topic<OnSearchRecordBeforeDeleteTopicParams>;\n onSearchRecordAfterDelete: Topic<OnSearchRecordAfterDeleteTopicParams>;\n}\nexport interface AcoSearchRecordStorageOperations {\n getRecord<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsGetSearchRecordParams\n ): Promise<SearchRecord<TData>>;\n listRecords<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsListSearchRecordsParams\n ): Promise<[SearchRecord<TData>[], ListMeta]>;\n createRecord<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsCreateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n updateRecord<TData extends GenericSearchData = GenericSearchData>(\n params: StorageOperationsUpdateSearchRecordParams<TData>\n ): Promise<SearchRecord<TData>>;\n deleteRecord(params: StorageOperationsDeleteSearchRecordParams): 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 {\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":""}
package/types.d.ts CHANGED
@@ -1,10 +1,12 @@
1
- import { Tenant, TenancyContext } from "@webiny/api-tenancy/types";
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
4
  import { SecurityContext, SecurityIdentity } from "@webiny/api-security/types";
5
- import { CmsContext } from "@webiny/api-headless-cms/types";
6
- import { AcoSearchRecordCrud, AcoSearchRecordStorageOperations } from "./record/record.types";
5
+ import { CmsContext, CmsModel, CmsModelField } from "@webiny/api-headless-cms/types";
6
+ import { AcoSearchRecordCrud, AcoSearchRecordCrudBase, AcoSearchRecordStorageOperations } from "./record/record.types";
7
7
  import { AcoFolderCrud, AcoFolderStorageOperations } from "./folder/folder.types";
8
+ export * from "./folder/folder.types";
9
+ export * from "./record/record.types";
8
10
  export interface User {
9
11
  id: string;
10
12
  type: string;
@@ -15,6 +17,11 @@ export interface ListMeta {
15
17
  totalCount: number;
16
18
  hasMoreItems: boolean;
17
19
  }
20
+ export declare enum ListSortDirection {
21
+ ASC = 0,
22
+ DESC = 1
23
+ }
24
+ export declare type ListSort = Record<string, ListSortDirection>;
18
25
  export interface AcoBaseFields {
19
26
  id: string;
20
27
  entryId: string;
@@ -25,6 +32,10 @@ export interface AcoBaseFields {
25
32
  export interface AdvancedContentOrganisation {
26
33
  folder: AcoFolderCrud;
27
34
  search: AcoSearchRecordCrud;
35
+ apps: IAcoApps;
36
+ registerApp: (params: IAcoAppRegisterParams) => Promise<IAcoApp>;
37
+ getApp: (name: string) => IAcoApp;
38
+ listApps: () => IAcoApp[];
28
39
  }
29
40
  export interface CreateAcoParams {
30
41
  getIdentity: () => SecurityIdentity;
@@ -36,3 +47,45 @@ export declare type AcoStorageOperations = AcoFolderStorageOperations & AcoSearc
36
47
  export interface AcoContext extends BaseContext, I18NContext, TenancyContext, SecurityContext, CmsContext {
37
48
  aco: AdvancedContentOrganisation;
38
49
  }
50
+ /**
51
+ * @deprecated Use AcoContext instead
52
+ */
53
+ export declare type ACOContext = AcoContext;
54
+ /**
55
+ * Apps
56
+ */
57
+ export interface IAcoAppAddFieldCallable {
58
+ (field: CmsModelField): void;
59
+ }
60
+ export interface IAcoAppRemoveFieldCallable {
61
+ (id: string): void;
62
+ }
63
+ export interface IAcoAppModifyFieldCallableCallback {
64
+ (field: CmsModelField): CmsModelField;
65
+ }
66
+ export interface IAcoAppModifyFieldCallable {
67
+ (id: string, cb: IAcoAppModifyFieldCallableCallback): void;
68
+ }
69
+ export interface IAcoApp {
70
+ context: AcoContext;
71
+ search: AcoSearchRecordCrudBase;
72
+ folder: AcoFolderCrud;
73
+ name: string;
74
+ model: CmsModel;
75
+ getFields: () => CmsModelField[];
76
+ addField: IAcoAppAddFieldCallable;
77
+ removeField: IAcoAppRemoveFieldCallable;
78
+ modifyField: IAcoAppModifyFieldCallable;
79
+ }
80
+ export interface IAcoAppParams {
81
+ name: string;
82
+ apiName: string;
83
+ model: CmsModel;
84
+ fields: CmsModelField[];
85
+ }
86
+ export declare type IAcoAppsOptions = CreateAcoParams;
87
+ export interface IAcoApps {
88
+ list: () => IAcoApp[];
89
+ register: (app: IAcoAppParams) => Promise<IAcoApp>;
90
+ }
91
+ export declare type IAcoAppRegisterParams = Omit<IAcoAppParams, "model">;
package/types.js CHANGED
@@ -2,4 +2,38 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
- });
5
+ });
6
+ var _exportNames = {
7
+ ListSortDirection: true
8
+ };
9
+ exports.ListSortDirection = void 0;
10
+ var _folder = require("./folder/folder.types");
11
+ Object.keys(_folder).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] === _folder[key]) return;
15
+ Object.defineProperty(exports, key, {
16
+ enumerable: true,
17
+ get: function () {
18
+ return _folder[key];
19
+ }
20
+ });
21
+ });
22
+ var _record = require("./record/record.types");
23
+ Object.keys(_record).forEach(function (key) {
24
+ if (key === "default" || key === "__esModule") return;
25
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
26
+ if (key in exports && exports[key] === _record[key]) return;
27
+ Object.defineProperty(exports, key, {
28
+ enumerable: true,
29
+ get: function () {
30
+ return _record[key];
31
+ }
32
+ });
33
+ });
34
+ let ListSortDirection;
35
+ exports.ListSortDirection = ListSortDirection;
36
+ (function (ListSortDirection) {
37
+ ListSortDirection[ListSortDirection["ASC"] = 0] = "ASC";
38
+ ListSortDirection[ListSortDirection["DESC"] = 1] = "DESC";
39
+ })(ListSortDirection || (exports.ListSortDirection = ListSortDirection = {}));
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { Tenant, TenancyContext } 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 } from \"@webiny/api-headless-cms/types\";\nimport { AcoSearchRecordCrud, AcoSearchRecordStorageOperations } from \"~/record/record.types\";\nimport { AcoFolderCrud, AcoFolderStorageOperations } from \"~/folder/folder.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 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}\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"],"mappings":""}
1
+ {"version":3,"names":["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;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAAsC,IAc1BA,iBAAiB;AAAA;AAAA,WAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;AAAA,GAAjBA,iBAAiB,iCAAjBA,iBAAiB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 006
3
+ * PageDataMigration in ddb-es and ddb
4
+ */
5
+ export declare const attachAcoRecordPrefix: (id: string) => string;
6
+ export declare const removeAcoRecordPrefix: (id: string) => string;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.removeAcoRecordPrefix = exports.attachAcoRecordPrefix = void 0;
7
+ /**
8
+ * !!! DO NOT CHANGE THIS !!!
9
+ * If this is changed, you will need to create new migration which changes the IDs for the users.
10
+ *
11
+ * packages/migrations/src/migrations/5.35.0/006/ddb/PageDataMigration.ts:236
12
+ * packages/migrations/src/migrations/5.35.0/006/ddb-es/PageDataMigration.ts:419
13
+ */
14
+ const WBY_ACO_PREFIX = "wby-aco-";
15
+ /**
16
+ * 006
17
+ * PageDataMigration in ddb-es and ddb
18
+ */
19
+
20
+ const attachAcoRecordPrefix = id => {
21
+ if (id.startsWith(WBY_ACO_PREFIX)) {
22
+ return id;
23
+ }
24
+ return `${WBY_ACO_PREFIX}${id}`;
25
+ };
26
+ exports.attachAcoRecordPrefix = attachAcoRecordPrefix;
27
+ const removeAcoRecordPrefix = id => {
28
+ if (id.startsWith(WBY_ACO_PREFIX) === false) {
29
+ return id;
30
+ }
31
+ return id.substring(WBY_ACO_PREFIX.length);
32
+ };
33
+ exports.removeAcoRecordPrefix = removeAcoRecordPrefix;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["WBY_ACO_PREFIX","attachAcoRecordPrefix","id","startsWith","removeAcoRecordPrefix","substring","length"],"sources":["acoRecordId.ts"],"sourcesContent":["/**\n * !!! DO NOT CHANGE THIS !!!\n * If this is changed, you will need to create new migration which changes the IDs for the users.\n *\n * packages/migrations/src/migrations/5.35.0/006/ddb/PageDataMigration.ts:236\n * packages/migrations/src/migrations/5.35.0/006/ddb-es/PageDataMigration.ts:419\n */\nconst WBY_ACO_PREFIX = \"wby-aco-\";\n/**\n * 006\n * PageDataMigration in ddb-es and ddb\n */\n\nexport const attachAcoRecordPrefix = (id: string) => {\n if (id.startsWith(WBY_ACO_PREFIX)) {\n return id;\n }\n return `${WBY_ACO_PREFIX}${id}`;\n};\n\nexport const removeAcoRecordPrefix = (id: string) => {\n if (id.startsWith(WBY_ACO_PREFIX) === false) {\n return id;\n }\n return id.substring(WBY_ACO_PREFIX.length);\n};\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,cAAc,GAAG,UAAU;AACjC;AACA;AACA;AACA;;AAEO,MAAMC,qBAAqB,GAAIC,EAAU,IAAK;EACjD,IAAIA,EAAE,CAACC,UAAU,CAACH,cAAc,CAAC,EAAE;IAC/B,OAAOE,EAAE;EACb;EACA,OAAQ,GAAEF,cAAe,GAAEE,EAAG,EAAC;AACnC,CAAC;AAAC;AAEK,MAAME,qBAAqB,GAAIF,EAAU,IAAK;EACjD,IAAIA,EAAE,CAACC,UAAU,CAACH,cAAc,CAAC,KAAK,KAAK,EAAE;IACzC,OAAOE,EAAE;EACb;EACA,OAAOA,EAAE,CAACG,SAAS,CAACL,cAAc,CAACM,MAAM,CAAC;AAC9C,CAAC;AAAC"}
@@ -0,0 +1,2 @@
1
+ import { AcoContext } from "../types";
2
+ export declare const checkPermissions: (context: AcoContext) => void;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.checkPermissions = void 0;
7
+ var _apiSecurity = require("@webiny/api-security");
8
+ const checkPermissions = context => {
9
+ const identity = context.security.getIdentity();
10
+ if (!identity) {
11
+ throw new _apiSecurity.NotAuthorizedError();
12
+ }
13
+ };
14
+ exports.checkPermissions = checkPermissions;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["checkPermissions","context","identity","security","getIdentity","NotAuthorizedError"],"sources":["checkPermissions.ts"],"sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport { AcoContext } from \"~/types\";\n\nexport const checkPermissions = (context: AcoContext) => {\n const identity = context.security.getIdentity();\n if (!identity) {\n throw new NotAuthorizedError();\n }\n};\n"],"mappings":";;;;;;AAAA;AAGO,MAAMA,gBAAgB,GAAIC,OAAmB,IAAK;EACrD,MAAMC,QAAQ,GAAGD,OAAO,CAACE,QAAQ,CAACC,WAAW,EAAE;EAC/C,IAAI,CAACF,QAAQ,EAAE;IACX,MAAM,IAAIG,+BAAkB,EAAE;EAClC;AACJ,CAAC;AAAC"}
@@ -0,0 +1,2 @@
1
+ import { ListSort } from "../types";
2
+ export declare const createListSort: (sort?: ListSort) => string[] | undefined;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createListSort = void 0;
7
+ const createListSort = sort => {
8
+ if (!sort) {
9
+ return;
10
+ }
11
+ return Object.keys(sort).map(key => `${key}_${sort[key]}`);
12
+ };
13
+ exports.createListSort = createListSort;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createListSort","sort","Object","keys","map","key"],"sources":["createListSort.ts"],"sourcesContent":["import { ListSort } from \"~/types\";\n\nexport const createListSort = (sort?: ListSort): string[] | undefined => {\n if (!sort) {\n return;\n }\n\n return Object.keys(sort).map(key => `${key}_${sort[key]}`);\n};\n"],"mappings":";;;;;;AAEO,MAAMA,cAAc,GAAIC,IAAe,IAA2B;EACrE,IAAI,CAACA,IAAI,EAAE;IACP;EACJ;EAEA,OAAOC,MAAM,CAACC,IAAI,CAACF,IAAI,CAAC,CAACG,GAAG,CAACC,GAAG,IAAK,GAAEA,GAAI,IAAGJ,IAAI,CAACI,GAAG,CAAE,EAAC,CAAC;AAC9D,CAAC;AAAC"}
@@ -1,6 +1,5 @@
1
1
  import { CmsModelField } from "@webiny/api-headless-cms/types";
2
2
  export interface CreateModelFieldParams extends Omit<CmsModelField, "id" | "storageId" | "fieldId"> {
3
3
  fieldId?: string;
4
- parent: string;
5
4
  }
6
5
  export declare const createModelField: (params: CreateModelFieldParams) => CmsModelField;
@@ -11,7 +11,6 @@ const createModelField = params => {
11
11
  label,
12
12
  fieldId: initialFieldId,
13
13
  type,
14
- parent,
15
14
  settings = {},
16
15
  listValidation = [],
17
16
  validation = [],
@@ -22,10 +21,9 @@ const createModelField = params => {
22
21
  }
23
22
  } = params;
24
23
  const fieldId = initialFieldId ? (0, _camelCase.default)(initialFieldId) : (0, _camelCase.default)(label);
25
- const id = `${(0, _camelCase.default)(parent)}_${fieldId}`;
26
24
  return {
27
- id,
28
- storageId: fieldId,
25
+ id: fieldId,
26
+ storageId: `${type}@${fieldId}`,
29
27
  fieldId,
30
28
  label,
31
29
  type,
@@ -1 +1 @@
1
- {"version":3,"names":["createModelField","params","label","fieldId","initialFieldId","type","parent","settings","listValidation","validation","multipleValues","predefinedValues","values","enabled","camelCase","id","storageId"],"sources":["createModelField.ts"],"sourcesContent":["import { CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport camelCase from \"lodash/camelCase\";\n\nexport interface CreateModelFieldParams\n extends Omit<CmsModelField, \"id\" | \"storageId\" | \"fieldId\"> {\n fieldId?: string;\n parent: string;\n}\n\nexport const createModelField = (params: CreateModelFieldParams): CmsModelField => {\n const {\n label,\n fieldId: initialFieldId,\n type,\n parent,\n settings = {},\n listValidation = [],\n validation = [],\n multipleValues = false,\n predefinedValues = {\n values: [],\n enabled: false\n }\n } = params;\n\n const fieldId = initialFieldId ? camelCase(initialFieldId) : camelCase(label);\n const id = `${camelCase(parent)}_${fieldId}`;\n\n return {\n id,\n storageId: fieldId,\n fieldId,\n label,\n type,\n settings,\n listValidation,\n validation,\n multipleValues,\n predefinedValues\n };\n};\n"],"mappings":";;;;;;;AACA;AAQO,MAAMA,gBAAgB,GAAIC,MAA8B,IAAoB;EAC/E,MAAM;IACFC,KAAK;IACLC,OAAO,EAAEC,cAAc;IACvBC,IAAI;IACJC,MAAM;IACNC,QAAQ,GAAG,CAAC,CAAC;IACbC,cAAc,GAAG,EAAE;IACnBC,UAAU,GAAG,EAAE;IACfC,cAAc,GAAG,KAAK;IACtBC,gBAAgB,GAAG;MACfC,MAAM,EAAE,EAAE;MACVC,OAAO,EAAE;IACb;EACJ,CAAC,GAAGZ,MAAM;EAEV,MAAME,OAAO,GAAGC,cAAc,GAAG,IAAAU,kBAAS,EAACV,cAAc,CAAC,GAAG,IAAAU,kBAAS,EAACZ,KAAK,CAAC;EAC7E,MAAMa,EAAE,GAAI,GAAE,IAAAD,kBAAS,EAACR,MAAM,CAAE,IAAGH,OAAQ,EAAC;EAE5C,OAAO;IACHY,EAAE;IACFC,SAAS,EAAEb,OAAO;IAClBA,OAAO;IACPD,KAAK;IACLG,IAAI;IACJE,QAAQ;IACRC,cAAc;IACdC,UAAU;IACVC,cAAc;IACdC;EACJ,CAAC;AACL,CAAC;AAAC"}
1
+ {"version":3,"names":["createModelField","params","label","fieldId","initialFieldId","type","settings","listValidation","validation","multipleValues","predefinedValues","values","enabled","camelCase","id","storageId"],"sources":["createModelField.ts"],"sourcesContent":["import { CmsModelField } from \"@webiny/api-headless-cms/types\";\nimport camelCase from \"lodash/camelCase\";\n\nexport interface CreateModelFieldParams\n extends Omit<CmsModelField, \"id\" | \"storageId\" | \"fieldId\"> {\n fieldId?: string;\n}\n\nexport const createModelField = (params: CreateModelFieldParams): CmsModelField => {\n const {\n label,\n fieldId: initialFieldId,\n type,\n settings = {},\n listValidation = [],\n validation = [],\n multipleValues = false,\n predefinedValues = {\n values: [],\n enabled: false\n }\n } = params;\n\n const fieldId = initialFieldId ? camelCase(initialFieldId) : camelCase(label);\n\n return {\n id: fieldId,\n storageId: `${type}@${fieldId}`,\n fieldId,\n label,\n type,\n settings,\n listValidation,\n validation,\n multipleValues,\n predefinedValues\n };\n};\n"],"mappings":";;;;;;;AACA;AAOO,MAAMA,gBAAgB,GAAIC,MAA8B,IAAoB;EAC/E,MAAM;IACFC,KAAK;IACLC,OAAO,EAAEC,cAAc;IACvBC,IAAI;IACJC,QAAQ,GAAG,CAAC,CAAC;IACbC,cAAc,GAAG,EAAE;IACnBC,UAAU,GAAG,EAAE;IACfC,cAAc,GAAG,KAAK;IACtBC,gBAAgB,GAAG;MACfC,MAAM,EAAE,EAAE;MACVC,OAAO,EAAE;IACb;EACJ,CAAC,GAAGX,MAAM;EAEV,MAAME,OAAO,GAAGC,cAAc,GAAG,IAAAS,kBAAS,EAACT,cAAc,CAAC,GAAG,IAAAS,kBAAS,EAACX,KAAK,CAAC;EAE7E,OAAO;IACHY,EAAE,EAAEX,OAAO;IACXY,SAAS,EAAG,GAAEV,IAAK,IAAGF,OAAQ,EAAC;IAC/BA,OAAO;IACPD,KAAK;IACLG,IAAI;IACJC,QAAQ;IACRC,cAAc;IACdC,UAAU;IACVC,cAAc;IACdC;EACJ,CAAC;AACL,CAAC;AAAC"}
@@ -0,0 +1,9 @@
1
+ import { CreateAcoStorageOperationsParams } from "../createAcoStorageOperations";
2
+ import { CmsModel } from "@webiny/api-headless-cms/types";
3
+ interface CreateOperationsWrapperParams extends CreateAcoStorageOperationsParams {
4
+ modelName: string;
5
+ }
6
+ export declare const createOperationsWrapper: (params: CreateOperationsWrapperParams) => {
7
+ withModel: <TResult>(cb: (model: CmsModel) => Promise<TResult>) => Promise<TResult>;
8
+ };
9
+ export {};
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createOperationsWrapper = void 0;
8
+ var _error = _interopRequireDefault(require("@webiny/error"));
9
+ const createOperationsWrapper = params => {
10
+ const {
11
+ cms,
12
+ security,
13
+ modelName
14
+ } = params;
15
+ const withModel = async cb => {
16
+ return security.withoutAuthorization(async () => {
17
+ const model = await cms.getModel(modelName);
18
+ if (!model) {
19
+ throw new _error.default(`Could not find "${modelName}" model.`, "MODEL_NOT_FOUND_ERROR");
20
+ }
21
+ const result = await cb(model);
22
+ return result;
23
+ });
24
+ };
25
+ return {
26
+ withModel
27
+ };
28
+ };
29
+ exports.createOperationsWrapper = createOperationsWrapper;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createOperationsWrapper","params","cms","security","modelName","withModel","cb","withoutAuthorization","model","getModel","WebinyError","result"],"sources":["createOperationsWrapper.ts"],"sourcesContent":["import { CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types\";\nimport WebinyError from \"@webiny/error\";\n\ninterface CreateOperationsWrapperParams extends CreateAcoStorageOperationsParams {\n modelName: string;\n}\n\nexport const createOperationsWrapper = (params: CreateOperationsWrapperParams) => {\n const { cms, security, modelName } = params;\n\n const withModel = async <TResult>(\n cb: (model: CmsModel) => Promise<TResult>\n ): Promise<TResult> => {\n return security.withoutAuthorization(async () => {\n const model = await cms.getModel(modelName);\n\n if (!model) {\n throw new WebinyError(\n `Could not find \"${modelName}\" model.`,\n \"MODEL_NOT_FOUND_ERROR\"\n );\n }\n\n const result = await cb(model);\n\n return result;\n });\n };\n\n return {\n withModel\n };\n};\n"],"mappings":";;;;;;;AAEA;AAMO,MAAMA,uBAAuB,GAAIC,MAAqC,IAAK;EAC9E,MAAM;IAAEC,GAAG;IAAEC,QAAQ;IAAEC;EAAU,CAAC,GAAGH,MAAM;EAE3C,MAAMI,SAAS,GAAG,MACdC,EAAyC,IACtB;IACnB,OAAOH,QAAQ,CAACI,oBAAoB,CAAC,YAAY;MAC7C,MAAMC,KAAK,GAAG,MAAMN,GAAG,CAACO,QAAQ,CAACL,SAAS,CAAC;MAE3C,IAAI,CAACI,KAAK,EAAE;QACR,MAAM,IAAIE,cAAW,CAChB,mBAAkBN,SAAU,UAAS,EACtC,uBAAuB,CAC1B;MACL;MAEA,MAAMO,MAAM,GAAG,MAAML,EAAE,CAACE,KAAK,CAAC;MAE9B,OAAOG,MAAM;IACjB,CAAC,CAAC;EACN,CAAC;EAED,OAAO;IACHN;EACJ,CAAC;AACL,CAAC;AAAC"}
@@ -1,2 +1,5 @@
1
1
  import { CmsEntry } from "@webiny/api-headless-cms/types";
2
- export declare function getFieldValues(entry: CmsEntry, fields: string[]): any;
2
+ import { Folder } from "../folder/folder.types";
3
+ import { SearchRecord } from "../record/record.types";
4
+ export declare function getRecordFieldValues(entry: CmsEntry<any>, fields?: string[]): SearchRecord<any>;
5
+ export declare function getFolderFieldValues(entry: CmsEntry, fields: string[]): Folder;
@@ -4,9 +4,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.getFieldValues = getFieldValues;
7
+ exports.getFolderFieldValues = getFolderFieldValues;
8
+ exports.getRecordFieldValues = getRecordFieldValues;
8
9
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
10
  var _pick = _interopRequireDefault(require("lodash/pick"));
10
- function getFieldValues(entry, fields) {
11
+ function getRecordFieldValues(entry, fields) {
12
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, fields ? (0, _pick.default)(entry, fields) : entry), entry.values);
13
+ }
14
+ function getFolderFieldValues(entry, fields) {
11
15
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _pick.default)(entry, fields)), entry.values);
12
16
  }
@@ -1 +1 @@
1
- {"version":3,"names":["getFieldValues","entry","fields","pick","values"],"sources":["getFieldValues.ts"],"sourcesContent":["import pick from \"lodash/pick\";\n\nimport { CmsEntry } from \"@webiny/api-headless-cms/types\";\n\nexport function getFieldValues(entry: CmsEntry, fields: string[]): any {\n return { ...pick(entry, fields), ...entry.values };\n}\n"],"mappings":";;;;;;;;AAAA;AAIO,SAASA,cAAc,CAACC,KAAe,EAAEC,MAAgB,EAAO;EACnE,mEAAY,IAAAC,aAAI,EAACF,KAAK,EAAEC,MAAM,CAAC,GAAKD,KAAK,CAACG,MAAM;AACpD"}
1
+ {"version":3,"names":["getRecordFieldValues","entry","fields","pick","values","getFolderFieldValues"],"sources":["getFieldValues.ts"],"sourcesContent":["import pick from \"lodash/pick\";\nimport { CmsEntry } from \"@webiny/api-headless-cms/types\";\nimport { Folder } from \"~/folder/folder.types\";\nimport { SearchRecord } from \"~/record/record.types\";\n\nexport function getRecordFieldValues(entry: CmsEntry<any>, fields?: string[]) {\n return {\n ...(fields ? pick(entry, fields) : entry),\n ...entry.values\n } as SearchRecord<any>;\n}\n\nexport function getFolderFieldValues(entry: CmsEntry, fields: string[]) {\n return { ...pick(entry, fields), ...entry.values } as Folder;\n}\n"],"mappings":";;;;;;;;;AAAA;AAKO,SAASA,oBAAoB,CAACC,KAAoB,EAAEC,MAAiB,EAAE;EAC1E,mEACQA,MAAM,GAAG,IAAAC,aAAI,EAACF,KAAK,EAAEC,MAAM,CAAC,GAAGD,KAAK,GACrCA,KAAK,CAACG,MAAM;AAEvB;AAEO,SAASC,oBAAoB,CAACJ,KAAe,EAAEC,MAAgB,EAAE;EACpE,mEAAY,IAAAC,aAAI,EAACF,KAAK,EAAEC,MAAM,CAAC,GAAKD,KAAK,CAACG,MAAM;AACpD"}
@@ -0,0 +1,7 @@
1
+ import { Folder } from "../folder/folder.types";
2
+ interface GetFolderAndItsAncestorsParams {
3
+ id: string;
4
+ folders: Folder[];
5
+ }
6
+ export declare const getFolderAndItsAncestors: ({ id, folders }: GetFolderAndItsAncestorsParams) => Folder[];
7
+ export {};