@webiny/api-aco 0.0.0-unstable.99666aeb00 → 0.0.0-unstable.a9593f74dd
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/AcoApp.d.ts +5 -0
- package/apps/AcoApp.js +56 -21
- package/apps/AcoApp.js.map +1 -1
- package/apps/AcoApps.js +7 -8
- package/apps/AcoApps.js.map +1 -1
- package/apps/app.gql.js +6 -4
- package/apps/app.gql.js.map +1 -1
- package/apps/index.js +3 -1
- package/apps/index.js.map +1 -1
- package/createAcoContext.d.ts +5 -1
- package/createAcoContext.js +119 -25
- package/createAcoContext.js.map +1 -1
- package/createAcoGraphQL.js +6 -2
- package/createAcoGraphQL.js.map +1 -1
- package/createAcoHooks.js +9 -3
- package/createAcoHooks.js.map +1 -1
- package/createAcoModels.js +6 -19
- package/createAcoModels.js.map +1 -1
- package/createAcoStorageOperations.d.ts +0 -1
- package/createAcoStorageOperations.js +10 -7
- package/createAcoStorageOperations.js.map +1 -1
- package/fields/index.js +3 -1
- package/fields/index.js.map +1 -1
- package/fields/location.js +3 -1
- package/fields/location.js.map +1 -1
- package/filter/filter.crud.d.ts +3 -0
- package/filter/filter.crud.js +94 -0
- package/filter/filter.crud.js.map +1 -0
- package/filter/filter.gql.d.ts +3 -0
- package/filter/filter.gql.js +153 -0
- package/filter/filter.gql.js.map +1 -0
- package/filter/filter.model.d.ts +2 -0
- package/filter/filter.model.js +125 -0
- package/filter/filter.model.js.map +1 -0
- package/filter/filter.so.d.ts +3 -0
- package/filter/filter.so.js +98 -0
- package/filter/filter.so.js.map +1 -0
- package/filter/filter.types.d.ts +95 -0
- package/filter/filter.types.js +14 -0
- package/filter/filter.types.js.map +1 -0
- package/folder/folder.crud.d.ts +8 -1
- package/folder/folder.crud.js +194 -15
- package/folder/folder.crud.js.map +1 -1
- package/folder/folder.gql.js +85 -8
- package/folder/folder.gql.js.map +1 -1
- package/folder/folder.model.d.ts +1 -3
- package/folder/folder.model.js +54 -7
- package/folder/folder.model.js.map +1 -1
- package/folder/folder.so.js +38 -18
- package/folder/folder.so.js.map +1 -1
- package/folder/folder.types.d.ts +28 -2
- package/folder/folder.types.js +3 -1
- package/folder/folder.types.js.map +1 -1
- package/folder/onFolderBeforeDeleteAco.hook.d.ts +2 -0
- package/folder/onFolderBeforeDeleteAco.hook.js +67 -0
- package/folder/onFolderBeforeDeleteAco.hook.js.map +1 -0
- package/folder/onFolderBeforeDeleteFm.hook.d.ts +2 -0
- package/folder/onFolderBeforeDeleteFm.hook.js +49 -0
- package/folder/onFolderBeforeDeleteFm.hook.js.map +1 -0
- package/folder/onFolderBeforeDeleteHcms.hook.d.ts +2 -0
- package/folder/onFolderBeforeDeleteHcms.hook.js +56 -0
- package/folder/onFolderBeforeDeleteHcms.hook.js.map +1 -0
- package/index.d.ts +5 -1
- package/index.js +14 -4
- package/index.js.map +1 -1
- package/package.json +31 -27
- package/plugins/AcoAppModifierPlugin.js +4 -5
- package/plugins/AcoAppModifierPlugin.js.map +1 -1
- package/plugins/AcoAppRegisterPlugin.js +4 -5
- package/plugins/AcoAppRegisterPlugin.js.map +1 -1
- package/plugins/index.js +3 -1
- package/plugins/index.js.map +1 -1
- package/record/graphql/createAppResolvers.js +26 -19
- package/record/graphql/createAppResolvers.js.map +1 -1
- package/record/graphql/createAppSchema.js +10 -5
- package/record/graphql/createAppSchema.js.map +1 -1
- package/record/record.crud.js +3 -1
- package/record/record.crud.js.map +1 -1
- package/record/record.gql.js +3 -1
- package/record/record.gql.js.map +1 -1
- package/record/record.model.d.ts +1 -3
- package/record/record.model.js +7 -7
- package/record/record.model.js.map +1 -1
- package/record/record.so.js +35 -23
- package/record/record.so.js.map +1 -1
- package/record/record.types.d.ts +4 -3
- package/record/record.types.js +3 -1
- package/record/record.types.js.map +1 -1
- package/types.d.ts +23 -6
- package/types.js +25 -4
- package/types.js.map +1 -1
- package/utils/FolderLevelPermissions.d.ts +71 -0
- package/utils/FolderLevelPermissions.js +353 -0
- package/utils/FolderLevelPermissions.js.map +1 -0
- package/utils/acoRecordId.js +3 -1
- package/utils/acoRecordId.js.map +1 -1
- package/utils/createListSort.js +3 -1
- package/utils/createListSort.js.map +1 -1
- package/utils/createModelField.js +3 -1
- package/utils/createModelField.js.map +1 -1
- package/utils/createOperationsWrapper.js +3 -1
- package/utils/createOperationsWrapper.js.map +1 -1
- package/utils/decorators/CmsEntriesCrudDecorators.d.ts +11 -0
- package/utils/decorators/CmsEntriesCrudDecorators.js +232 -0
- package/utils/decorators/CmsEntriesCrudDecorators.js.map +1 -0
- package/utils/decorators/constants.d.ts +1 -0
- package/utils/decorators/constants.js +10 -0
- package/utils/decorators/constants.js.map +1 -0
- package/utils/decorators/where.d.ts +14 -0
- package/utils/decorators/where.js +52 -0
- package/utils/decorators/where.js.map +1 -0
- package/utils/ensureAuthentication.d.ts +2 -0
- package/utils/{checkPermissions.js → ensureAuthentication.js} +5 -3
- package/utils/ensureAuthentication.js.map +1 -0
- package/utils/getFolderAndItsAncestors.d.ts +2 -2
- package/utils/getFolderAndItsAncestors.js +16 -11
- package/utils/getFolderAndItsAncestors.js.map +1 -1
- package/utils/isInstallationPending.js +3 -1
- package/utils/isInstallationPending.js.map +1 -1
- package/utils/modelFactory.d.ts +1 -3
- package/utils/modelFactory.js +7 -10
- package/utils/modelFactory.js.map +1 -1
- package/utils/pickEntryFieldValues.d.ts +3 -0
- package/utils/pickEntryFieldValues.js +31 -0
- package/utils/pickEntryFieldValues.js.map +1 -0
- package/utils/resolve.js +3 -1
- package/utils/resolve.js.map +1 -1
- package/folder/onFolderBeforeDelete.hook.d.ts +0 -2
- package/folder/onFolderBeforeDelete.hook.js +0 -66
- package/folder/onFolderBeforeDelete.hook.js.map +0 -1
- package/utils/checkPermissions.d.ts +0 -2
- package/utils/checkPermissions.js.map +0 -1
- package/utils/fieldResolver.d.ts +0 -16
- package/utils/fieldResolver.js +0 -44
- package/utils/fieldResolver.js.map +0 -1
- package/utils/getFieldValues.d.ts +0 -5
- package/utils/getFieldValues.js +0 -16
- package/utils/getFieldValues.js.map +0 -1
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.CmsEntriesCrudDecorators = void 0;
|
|
7
|
+
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
8
|
+
var _where = require("./where");
|
|
9
|
+
var _constants = require("./constants");
|
|
10
|
+
/**
|
|
11
|
+
* Keep this until we figure out how to fetch the folders.
|
|
12
|
+
*/
|
|
13
|
+
const isPageModel = model => {
|
|
14
|
+
if (model.modelId === "pbPage") {
|
|
15
|
+
return true;
|
|
16
|
+
} else if (model.modelId === "acoSearchRecord-pbpage") {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
return false;
|
|
20
|
+
};
|
|
21
|
+
const createFolderType = model => {
|
|
22
|
+
if (model.modelId === "fmFile") {
|
|
23
|
+
return "FmFile";
|
|
24
|
+
} else if (isPageModel(model)) {
|
|
25
|
+
return "PbPage";
|
|
26
|
+
}
|
|
27
|
+
return `cms:${model.modelId}`;
|
|
28
|
+
};
|
|
29
|
+
const filterEntriesByFolderFactory = (context, permissions) => {
|
|
30
|
+
return async (model, entries) => {
|
|
31
|
+
const [folders] = await context.aco.folder.listAll({
|
|
32
|
+
where: {
|
|
33
|
+
type: createFolderType(model)
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
const results = await Promise.all(entries.map(async entry => {
|
|
37
|
+
const folderId = entry.location?.folderId;
|
|
38
|
+
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
39
|
+
return entry;
|
|
40
|
+
}
|
|
41
|
+
const folder = folders.find(folder => folder.id === folderId);
|
|
42
|
+
if (!folder) {
|
|
43
|
+
throw new _handlerGraphql.NotFoundError(`Folder "${folderId}" not found.`);
|
|
44
|
+
}
|
|
45
|
+
const result = await permissions.canAccessFolderContent({
|
|
46
|
+
folder,
|
|
47
|
+
rwd: "r"
|
|
48
|
+
});
|
|
49
|
+
return result ? entry : null;
|
|
50
|
+
}));
|
|
51
|
+
return results.filter(entry => !!entry);
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
class CmsEntriesCrudDecorators {
|
|
55
|
+
constructor({
|
|
56
|
+
context
|
|
57
|
+
}) {
|
|
58
|
+
this.context = context;
|
|
59
|
+
}
|
|
60
|
+
decorate() {
|
|
61
|
+
const context = this.context;
|
|
62
|
+
const folderLevelPermissions = context.aco.folderLevelPermissions;
|
|
63
|
+
const filterEntriesByFolder = filterEntriesByFolderFactory(context, folderLevelPermissions);
|
|
64
|
+
const originalCmsListEntries = context.cms.listEntries.bind(context.cms);
|
|
65
|
+
context.cms.listEntries = async (model, params) => {
|
|
66
|
+
const folderType = createFolderType(model);
|
|
67
|
+
const folders = await folderLevelPermissions.listAllFoldersWithPermissions(folderType);
|
|
68
|
+
const where = (0, _where.createWhere)({
|
|
69
|
+
where: params.where,
|
|
70
|
+
folders
|
|
71
|
+
});
|
|
72
|
+
return originalCmsListEntries(model, {
|
|
73
|
+
...params,
|
|
74
|
+
where
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
const originalCmsGetEntry = context.cms.getEntry.bind(context.cms);
|
|
78
|
+
context.cms.getEntry = async (model, params) => {
|
|
79
|
+
const entry = await originalCmsGetEntry(model, params);
|
|
80
|
+
const folderId = entry?.location?.folderId;
|
|
81
|
+
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
82
|
+
return entry;
|
|
83
|
+
}
|
|
84
|
+
const folder = await context.aco.folder.get(folderId);
|
|
85
|
+
await folderLevelPermissions.ensureCanAccessFolderContent({
|
|
86
|
+
folder,
|
|
87
|
+
rwd: "r"
|
|
88
|
+
});
|
|
89
|
+
return entry;
|
|
90
|
+
};
|
|
91
|
+
const originalCmsGetEntryById = context.cms.getEntryById.bind(context.cms);
|
|
92
|
+
context.cms.getEntryById = async (model, params) => {
|
|
93
|
+
const entry = await originalCmsGetEntryById(model, params);
|
|
94
|
+
const folderId = entry?.location?.folderId;
|
|
95
|
+
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
96
|
+
return entry;
|
|
97
|
+
}
|
|
98
|
+
const folder = await context.aco.folder.get(folderId);
|
|
99
|
+
await folderLevelPermissions.ensureCanAccessFolderContent({
|
|
100
|
+
folder,
|
|
101
|
+
rwd: "r"
|
|
102
|
+
});
|
|
103
|
+
return entry;
|
|
104
|
+
};
|
|
105
|
+
const originalGetLatestEntriesByIds = context.cms.getLatestEntriesByIds.bind(context.cms);
|
|
106
|
+
context.cms.getLatestEntriesByIds = async (model, ids) => {
|
|
107
|
+
const entries = await originalGetLatestEntriesByIds(model, ids);
|
|
108
|
+
return filterEntriesByFolder(model, entries);
|
|
109
|
+
};
|
|
110
|
+
const originalGetPublishedEntriesByIds = context.cms.getPublishedEntriesByIds.bind(context.cms);
|
|
111
|
+
context.cms.getPublishedEntriesByIds = async (model, ids) => {
|
|
112
|
+
const entries = await originalGetPublishedEntriesByIds(model, ids);
|
|
113
|
+
return filterEntriesByFolder(model, entries);
|
|
114
|
+
};
|
|
115
|
+
const originalCmsCreateEntry = context.cms.createEntry.bind(context.cms);
|
|
116
|
+
context.cms.createEntry = async (model, params, options) => {
|
|
117
|
+
const folderId = params.wbyAco_location?.folderId || params.location?.folderId;
|
|
118
|
+
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
119
|
+
return originalCmsCreateEntry(model, params, options);
|
|
120
|
+
}
|
|
121
|
+
const folder = await context.aco.folder.get(folderId);
|
|
122
|
+
await folderLevelPermissions.ensureCanAccessFolderContent({
|
|
123
|
+
folder,
|
|
124
|
+
rwd: "w"
|
|
125
|
+
});
|
|
126
|
+
return originalCmsCreateEntry(model, params, options);
|
|
127
|
+
};
|
|
128
|
+
const originalCmsCreateFromEntry = context.cms.createEntryRevisionFrom.bind(context.cms);
|
|
129
|
+
context.cms.createEntryRevisionFrom = async (model, id, input, options) => {
|
|
130
|
+
const entry = await context.cms.storageOperations.entries.getRevisionById(model, {
|
|
131
|
+
id
|
|
132
|
+
});
|
|
133
|
+
const folderId = entry?.location?.folderId;
|
|
134
|
+
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
135
|
+
return originalCmsCreateFromEntry(model, id, input, options);
|
|
136
|
+
}
|
|
137
|
+
const folder = await context.aco.folder.get(folderId);
|
|
138
|
+
await folderLevelPermissions.ensureCanAccessFolderContent({
|
|
139
|
+
folder,
|
|
140
|
+
rwd: "w"
|
|
141
|
+
});
|
|
142
|
+
return originalCmsCreateFromEntry(model, id, input, options);
|
|
143
|
+
};
|
|
144
|
+
const originalCmsUpdateEntry = context.cms.updateEntry.bind(context.cms);
|
|
145
|
+
context.cms.updateEntry = async (model, id, input, meta, options) => {
|
|
146
|
+
const entry = await context.cms.storageOperations.entries.getRevisionById(model, {
|
|
147
|
+
id
|
|
148
|
+
});
|
|
149
|
+
const folderId = entry?.location?.folderId;
|
|
150
|
+
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
151
|
+
return originalCmsUpdateEntry(model, id, input, meta, options);
|
|
152
|
+
}
|
|
153
|
+
const folder = await context.aco.folder.get(folderId);
|
|
154
|
+
await folderLevelPermissions.ensureCanAccessFolderContent({
|
|
155
|
+
folder,
|
|
156
|
+
rwd: "w"
|
|
157
|
+
});
|
|
158
|
+
return originalCmsUpdateEntry(model, id, input, meta, options);
|
|
159
|
+
};
|
|
160
|
+
const originalCmsDeleteEntry = context.cms.deleteEntry.bind(context.cms);
|
|
161
|
+
context.cms.deleteEntry = async (model, id, options) => {
|
|
162
|
+
const entry = await context.cms.storageOperations.entries.getLatestRevisionByEntryId(model, {
|
|
163
|
+
id
|
|
164
|
+
});
|
|
165
|
+
const folderId = entry?.location?.folderId;
|
|
166
|
+
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
167
|
+
return originalCmsDeleteEntry(model, id, options);
|
|
168
|
+
}
|
|
169
|
+
const folder = await context.aco.folder.get(folderId);
|
|
170
|
+
await folderLevelPermissions.ensureCanAccessFolderContent({
|
|
171
|
+
folder,
|
|
172
|
+
rwd: "d"
|
|
173
|
+
});
|
|
174
|
+
return originalCmsDeleteEntry(model, id, options);
|
|
175
|
+
};
|
|
176
|
+
const originalCmsDeleteEntryRevision = context.cms.deleteEntryRevision.bind(context.cms);
|
|
177
|
+
context.cms.deleteEntryRevision = async (model, id) => {
|
|
178
|
+
const entry = await context.cms.storageOperations.entries.getRevisionById(model, {
|
|
179
|
+
id
|
|
180
|
+
});
|
|
181
|
+
const folderId = entry?.location?.folderId;
|
|
182
|
+
if (!folderId || folderId === _constants.ROOT_FOLDER) {
|
|
183
|
+
return originalCmsDeleteEntryRevision(model, id);
|
|
184
|
+
}
|
|
185
|
+
const folder = await context.aco.folder.get(folderId);
|
|
186
|
+
await folderLevelPermissions.ensureCanAccessFolderContent({
|
|
187
|
+
folder,
|
|
188
|
+
rwd: "d"
|
|
189
|
+
});
|
|
190
|
+
return originalCmsDeleteEntryRevision(model, id);
|
|
191
|
+
};
|
|
192
|
+
const originalCmsMoveEntry = context.cms.moveEntry.bind(context.cms);
|
|
193
|
+
context.cms.moveEntry = async (model, id, targetFolderId) => {
|
|
194
|
+
/**
|
|
195
|
+
* First we need to check if user has access to the entries existing folder.
|
|
196
|
+
*/
|
|
197
|
+
const entry = await context.cms.storageOperations.entries.getRevisionById(model, {
|
|
198
|
+
id
|
|
199
|
+
});
|
|
200
|
+
const folderId = entry?.location?.folderId || _constants.ROOT_FOLDER;
|
|
201
|
+
/**
|
|
202
|
+
* If the entry is in the same folder we are trying to move it to, just continue.
|
|
203
|
+
*/
|
|
204
|
+
if (folderId === targetFolderId) {
|
|
205
|
+
return originalCmsMoveEntry(model, id, targetFolderId);
|
|
206
|
+
} else if (folderId !== _constants.ROOT_FOLDER) {
|
|
207
|
+
/**
|
|
208
|
+
* If entry current folder is not a root, check for access
|
|
209
|
+
*/
|
|
210
|
+
const folder = await context.aco.folder.get(folderId);
|
|
211
|
+
await folderLevelPermissions.ensureCanAccessFolderContent({
|
|
212
|
+
folder,
|
|
213
|
+
rwd: "w"
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* If target folder is not a ROOT_FOLDER, check for access.
|
|
218
|
+
*/
|
|
219
|
+
if (targetFolderId !== _constants.ROOT_FOLDER) {
|
|
220
|
+
const folder = await context.aco.folder.get(targetFolderId);
|
|
221
|
+
await folderLevelPermissions.ensureCanAccessFolderContent({
|
|
222
|
+
folder,
|
|
223
|
+
rwd: "w"
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
return originalCmsMoveEntry(model, id, targetFolderId);
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
exports.CmsEntriesCrudDecorators = CmsEntriesCrudDecorators;
|
|
231
|
+
|
|
232
|
+
//# sourceMappingURL=CmsEntriesCrudDecorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_handlerGraphql","require","_where","_constants","isPageModel","model","modelId","createFolderType","filterEntriesByFolderFactory","context","permissions","entries","folders","aco","folder","listAll","where","type","results","Promise","all","map","entry","folderId","location","ROOT_FOLDER","find","id","NotFoundError","result","canAccessFolderContent","rwd","filter","CmsEntriesCrudDecorators","constructor","decorate","folderLevelPermissions","filterEntriesByFolder","originalCmsListEntries","cms","listEntries","bind","params","folderType","listAllFoldersWithPermissions","createWhere","originalCmsGetEntry","getEntry","get","ensureCanAccessFolderContent","originalCmsGetEntryById","getEntryById","originalGetLatestEntriesByIds","getLatestEntriesByIds","ids","originalGetPublishedEntriesByIds","getPublishedEntriesByIds","originalCmsCreateEntry","createEntry","options","wbyAco_location","originalCmsCreateFromEntry","createEntryRevisionFrom","input","storageOperations","getRevisionById","originalCmsUpdateEntry","updateEntry","meta","originalCmsDeleteEntry","deleteEntry","getLatestRevisionByEntryId","originalCmsDeleteEntryRevision","deleteEntryRevision","originalCmsMoveEntry","moveEntry","targetFolderId","exports"],"sources":["CmsEntriesCrudDecorators.ts"],"sourcesContent":["import { AcoContext } from \"~/types\";\nimport { CmsEntry, CmsModel } from \"@webiny/api-headless-cms/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { FolderLevelPermissions } from \"~/utils/FolderLevelPermissions\";\nimport { createWhere } from \"./where\";\nimport { ROOT_FOLDER } from \"./constants\";\n\ntype Context = Pick<AcoContext, \"aco\" | \"cms\">;\n/**\n * Keep this until we figure out how to fetch the folders.\n */\nconst isPageModel = (model: CmsModel): boolean => {\n if (model.modelId === \"pbPage\") {\n return true;\n } else if (model.modelId === \"acoSearchRecord-pbpage\") {\n return true;\n }\n return false;\n};\n\nconst createFolderType = (model: CmsModel): \"FmFile\" | \"PbPage\" | `cms:${string}` => {\n if (model.modelId === \"fmFile\") {\n return \"FmFile\";\n } else if (isPageModel(model)) {\n return \"PbPage\";\n }\n return `cms:${model.modelId}`;\n};\n\nconst filterEntriesByFolderFactory = (context: Context, permissions: FolderLevelPermissions) => {\n return async (model: CmsModel, entries: CmsEntry[]) => {\n const [folders] = await context.aco.folder.listAll({\n where: {\n type: createFolderType(model)\n }\n });\n\n const results = await Promise.all(\n entries.map(async entry => {\n const folderId = entry.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return entry;\n }\n\n const folder = folders.find(folder => folder.id === folderId);\n if (!folder) {\n throw new NotFoundError(`Folder \"${folderId}\" not found.`);\n }\n const result = await permissions.canAccessFolderContent({\n folder,\n rwd: \"r\"\n });\n return result ? entry : null;\n })\n );\n\n return results.filter((entry): entry is CmsEntry => !!entry);\n };\n};\n\ninterface EntryManagerCrudDecoratorsParams {\n context: Context;\n}\n\nexport class CmsEntriesCrudDecorators {\n private readonly context: Context;\n\n public constructor({ context }: EntryManagerCrudDecoratorsParams) {\n this.context = context;\n }\n\n public decorate() {\n const context = this.context;\n const folderLevelPermissions = context.aco.folderLevelPermissions;\n\n const filterEntriesByFolder = filterEntriesByFolderFactory(context, folderLevelPermissions);\n\n const originalCmsListEntries = context.cms.listEntries.bind(context.cms);\n context.cms.listEntries = async (model, params) => {\n const folderType = createFolderType(model);\n const folders = await folderLevelPermissions.listAllFoldersWithPermissions(folderType);\n\n const where = createWhere({\n where: params.where,\n folders\n });\n return originalCmsListEntries(model, {\n ...params,\n where\n });\n };\n\n const originalCmsGetEntry = context.cms.getEntry.bind(context.cms);\n context.cms.getEntry = async (model, params) => {\n const entry = await originalCmsGetEntry(model, params);\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return entry;\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"r\"\n });\n\n return entry;\n };\n\n const originalCmsGetEntryById = context.cms.getEntryById.bind(context.cms);\n context.cms.getEntryById = async (model, params) => {\n const entry = await originalCmsGetEntryById(model, params);\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return entry;\n }\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"r\"\n });\n return entry;\n };\n\n const originalGetLatestEntriesByIds = context.cms.getLatestEntriesByIds.bind(context.cms);\n context.cms.getLatestEntriesByIds = async (model, ids) => {\n const entries = await originalGetLatestEntriesByIds(model, ids);\n\n return filterEntriesByFolder(model, entries);\n };\n\n const originalGetPublishedEntriesByIds = context.cms.getPublishedEntriesByIds.bind(\n context.cms\n );\n context.cms.getPublishedEntriesByIds = async (model, ids) => {\n const entries = await originalGetPublishedEntriesByIds(model, ids);\n return filterEntriesByFolder(model, entries);\n };\n\n const originalCmsCreateEntry = context.cms.createEntry.bind(context.cms);\n context.cms.createEntry = async (model, params, options) => {\n const folderId = params.wbyAco_location?.folderId || params.location?.folderId;\n\n if (!folderId || folderId === ROOT_FOLDER) {\n return originalCmsCreateEntry(model, params, options);\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"w\"\n });\n\n return originalCmsCreateEntry(model, params, options);\n };\n\n const originalCmsCreateFromEntry = context.cms.createEntryRevisionFrom.bind(context.cms);\n context.cms.createEntryRevisionFrom = async (model, id, input, options) => {\n const entry = await context.cms.storageOperations.entries.getRevisionById(model, {\n id\n });\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return originalCmsCreateFromEntry(model, id, input, options);\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"w\"\n });\n\n return originalCmsCreateFromEntry(model, id, input, options);\n };\n\n const originalCmsUpdateEntry = context.cms.updateEntry.bind(context.cms);\n context.cms.updateEntry = async (model, id, input, meta, options) => {\n const entry = await context.cms.storageOperations.entries.getRevisionById(model, {\n id\n });\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return originalCmsUpdateEntry(model, id, input, meta, options);\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"w\"\n });\n\n return originalCmsUpdateEntry(model, id, input, meta, options);\n };\n\n const originalCmsDeleteEntry = context.cms.deleteEntry.bind(context.cms);\n context.cms.deleteEntry = async (model, id, options) => {\n const entry = await context.cms.storageOperations.entries.getLatestRevisionByEntryId(\n model,\n {\n id\n }\n );\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return originalCmsDeleteEntry(model, id, options);\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"d\"\n });\n\n return originalCmsDeleteEntry(model, id, options);\n };\n\n const originalCmsDeleteEntryRevision = context.cms.deleteEntryRevision.bind(context.cms);\n context.cms.deleteEntryRevision = async (model, id) => {\n const entry = await context.cms.storageOperations.entries.getRevisionById(model, {\n id\n });\n\n const folderId = entry?.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return originalCmsDeleteEntryRevision(model, id);\n }\n\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"d\"\n });\n\n return originalCmsDeleteEntryRevision(model, id);\n };\n\n const originalCmsMoveEntry = context.cms.moveEntry.bind(context.cms);\n context.cms.moveEntry = async (model, id, targetFolderId) => {\n /**\n * First we need to check if user has access to the entries existing folder.\n */\n const entry = await context.cms.storageOperations.entries.getRevisionById(model, {\n id\n });\n const folderId = entry?.location?.folderId || ROOT_FOLDER;\n /**\n * If the entry is in the same folder we are trying to move it to, just continue.\n */\n if (folderId === targetFolderId) {\n return originalCmsMoveEntry(model, id, targetFolderId);\n } else if (folderId !== ROOT_FOLDER) {\n /**\n * If entry current folder is not a root, check for access\n */\n const folder = await context.aco.folder.get(folderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"w\"\n });\n }\n /**\n * If target folder is not a ROOT_FOLDER, check for access.\n */\n if (targetFolderId !== ROOT_FOLDER) {\n const folder = await context.aco.folder.get(targetFolderId);\n await folderLevelPermissions.ensureCanAccessFolderContent({\n folder,\n rwd: \"w\"\n });\n }\n\n return originalCmsMoveEntry(model, id, targetFolderId);\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ROOT_FOLDER = "root";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ROOT_FOLDER","exports"],"sources":["constants.ts"],"sourcesContent":["export const ROOT_FOLDER = \"root\";\n"],"mappings":";;;;;;AAAO,MAAMA,WAAW,GAAG,MAAM;AAACC,OAAA,CAAAD,WAAA,GAAAA,WAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CmsEntryListWhere } from "@webiny/api-headless-cms/types";
|
|
2
|
+
import { Folder } from "../../folder/folder.types";
|
|
3
|
+
interface Params {
|
|
4
|
+
where: CmsEntryListWhere | undefined;
|
|
5
|
+
folders: Folder[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* There are multiple cases that we need to handle:
|
|
9
|
+
* * existing location with no AND conditional
|
|
10
|
+
* * existing location with AND conditional
|
|
11
|
+
* * no existing location with no AND conditional + with AND conditional
|
|
12
|
+
*/
|
|
13
|
+
export declare const createWhere: (params: Params) => CmsEntryListWhere | undefined;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createWhere = void 0;
|
|
7
|
+
var _constants = require("./constants");
|
|
8
|
+
/**
|
|
9
|
+
* There are multiple cases that we need to handle:
|
|
10
|
+
* * existing location with no AND conditional
|
|
11
|
+
* * existing location with AND conditional
|
|
12
|
+
* * no existing location with no AND conditional + with AND conditional
|
|
13
|
+
*/
|
|
14
|
+
const createWhere = params => {
|
|
15
|
+
const {
|
|
16
|
+
where,
|
|
17
|
+
folders
|
|
18
|
+
} = params;
|
|
19
|
+
if (!where) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
const whereLocation = {
|
|
23
|
+
wbyAco_location: {
|
|
24
|
+
// At the moment, all users can access entries in the root folder.
|
|
25
|
+
// Root folder level permissions cannot be set yet.
|
|
26
|
+
folderId_in: [_constants.ROOT_FOLDER, ...folders.map(folder => folder.id)]
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const whereAnd = where.AND;
|
|
30
|
+
if (where.wbyAco_location && !whereAnd) {
|
|
31
|
+
return {
|
|
32
|
+
...where,
|
|
33
|
+
AND: [{
|
|
34
|
+
...whereLocation
|
|
35
|
+
}]
|
|
36
|
+
};
|
|
37
|
+
} else if (where.wbyAco_location && whereAnd) {
|
|
38
|
+
return {
|
|
39
|
+
...where,
|
|
40
|
+
AND: [{
|
|
41
|
+
...whereLocation
|
|
42
|
+
}, ...whereAnd]
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
...where,
|
|
47
|
+
...whereLocation
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
exports.createWhere = createWhere;
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=where.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_constants","require","createWhere","params","where","folders","undefined","whereLocation","wbyAco_location","folderId_in","ROOT_FOLDER","map","folder","id","whereAnd","AND","exports"],"sources":["where.ts"],"sourcesContent":["import { CmsEntryListWhere } from \"@webiny/api-headless-cms/types\";\nimport { Folder } from \"~/folder/folder.types\";\nimport { ROOT_FOLDER } from \"./constants\";\n\ninterface Params {\n where: CmsEntryListWhere | undefined;\n folders: Folder[];\n}\n\n/**\n * There are multiple cases that we need to handle:\n * * existing location with no AND conditional\n * * existing location with AND conditional\n * * no existing location with no AND conditional + with AND conditional\n */\nexport const createWhere = (params: Params): CmsEntryListWhere | undefined => {\n const { where, folders } = params;\n if (!where) {\n return undefined;\n }\n const whereLocation = {\n wbyAco_location: {\n // At the moment, all users can access entries in the root folder.\n // Root folder level permissions cannot be set yet.\n folderId_in: [ROOT_FOLDER, ...folders.map(folder => folder.id)]\n }\n };\n const whereAnd = where.AND;\n if (where.wbyAco_location && !whereAnd) {\n return {\n ...where,\n AND: [\n {\n ...whereLocation\n }\n ]\n };\n } else if (where.wbyAco_location && whereAnd) {\n return {\n ...where,\n AND: [\n {\n ...whereLocation\n },\n ...whereAnd\n ]\n };\n }\n return {\n ...where,\n ...whereLocation\n };\n};\n"],"mappings":";;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AAOA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,WAAW,GAAIC,MAAc,IAAoC;EAC1E,MAAM;IAAEC,KAAK;IAAEC;EAAQ,CAAC,GAAGF,MAAM;EACjC,IAAI,CAACC,KAAK,EAAE;IACR,OAAOE,SAAS;EACpB;EACA,MAAMC,aAAa,GAAG;IAClBC,eAAe,EAAE;MACb;MACA;MACAC,WAAW,EAAE,CAACC,sBAAW,EAAE,GAAGL,OAAO,CAACM,GAAG,CAACC,MAAM,IAAIA,MAAM,CAACC,EAAE,CAAC;IAClE;EACJ,CAAC;EACD,MAAMC,QAAQ,GAAGV,KAAK,CAACW,GAAG;EAC1B,IAAIX,KAAK,CAACI,eAAe,IAAI,CAACM,QAAQ,EAAE;IACpC,OAAO;MACH,GAAGV,KAAK;MACRW,GAAG,EAAE,CACD;QACI,GAAGR;MACP,CAAC;IAET,CAAC;EACL,CAAC,MAAM,IAAIH,KAAK,CAACI,eAAe,IAAIM,QAAQ,EAAE;IAC1C,OAAO;MACH,GAAGV,KAAK;MACRW,GAAG,EAAE,CACD;QACI,GAAGR;MACP,CAAC,EACD,GAAGO,QAAQ;IAEnB,CAAC;EACL;EACA,OAAO;IACH,GAAGV,KAAK;IACR,GAAGG;EACP,CAAC;AACL,CAAC;AAACS,OAAA,CAAAd,WAAA,GAAAA,WAAA"}
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.ensureAuthentication = void 0;
|
|
7
7
|
var _apiSecurity = require("@webiny/api-security");
|
|
8
|
-
const
|
|
8
|
+
const ensureAuthentication = context => {
|
|
9
9
|
const identity = context.security.getIdentity();
|
|
10
10
|
if (!identity) {
|
|
11
11
|
throw new _apiSecurity.NotAuthorizedError();
|
|
12
12
|
}
|
|
13
13
|
};
|
|
14
|
-
exports.
|
|
14
|
+
exports.ensureAuthentication = ensureAuthentication;
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=ensureAuthentication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_apiSecurity","require","ensureAuthentication","context","identity","security","getIdentity","NotAuthorizedError","exports"],"sources":["ensureAuthentication.ts"],"sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport { AcoContext } from \"~/types\";\n\nexport const ensureAuthentication = (context: AcoContext) => {\n const identity = context.security.getIdentity();\n if (!identity) {\n throw new NotAuthorizedError();\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAGO,MAAMC,oBAAoB,GAAIC,OAAmB,IAAK;EACzD,MAAMC,QAAQ,GAAGD,OAAO,CAACE,QAAQ,CAACC,WAAW,CAAC,CAAC;EAC/C,IAAI,CAACF,QAAQ,EAAE;IACX,MAAM,IAAIG,+BAAkB,CAAC,CAAC;EAClC;AACJ,CAAC;AAACC,OAAA,CAAAN,oBAAA,GAAAA,oBAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Folder } from "../folder/folder.types";
|
|
2
2
|
interface GetFolderAndItsAncestorsParams {
|
|
3
|
-
|
|
3
|
+
folder: Folder;
|
|
4
4
|
folders: Folder[];
|
|
5
5
|
}
|
|
6
|
-
export declare const getFolderAndItsAncestors: ({
|
|
6
|
+
export declare const getFolderAndItsAncestors: ({ folder, folders }: GetFolderAndItsAncestorsParams) => Folder[];
|
|
7
7
|
export {};
|
|
@@ -5,32 +5,35 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.getFolderAndItsAncestors = void 0;
|
|
7
7
|
const getFolderAndItsAncestors = ({
|
|
8
|
-
|
|
8
|
+
folder,
|
|
9
9
|
folders
|
|
10
10
|
}) => {
|
|
11
11
|
// Create a Map with folders, using folder.id as key
|
|
12
12
|
const folderMap = new Map();
|
|
13
13
|
folders.forEach(folder => folderMap.set(folder.id, folder));
|
|
14
|
-
const findParents = (next,
|
|
15
|
-
const folder = folderMap.get(id);
|
|
16
|
-
|
|
14
|
+
const findParents = (next, current) => {
|
|
17
15
|
// No folder found: return the result
|
|
18
|
-
if (!
|
|
16
|
+
if (!current) {
|
|
19
17
|
return next;
|
|
20
18
|
}
|
|
21
19
|
|
|
22
20
|
// Push the current folder into the accumulator array
|
|
23
|
-
next.push(
|
|
21
|
+
next.push(current);
|
|
24
22
|
|
|
25
23
|
// No parentId found: return the result
|
|
26
|
-
if (!
|
|
24
|
+
if (!current.parentId) {
|
|
25
|
+
return next;
|
|
26
|
+
}
|
|
27
|
+
const parent = folderMap.get(current.parentId);
|
|
28
|
+
|
|
29
|
+
// No parent found: return the result
|
|
30
|
+
if (!parent) {
|
|
27
31
|
return next;
|
|
28
32
|
}
|
|
29
33
|
|
|
30
34
|
// Go ahead and find parent for the current parent
|
|
31
|
-
return findParents(next,
|
|
35
|
+
return findParents(next, parent);
|
|
32
36
|
};
|
|
33
|
-
const folder = folderMap.get(id);
|
|
34
37
|
|
|
35
38
|
// No folder found: return an empty array
|
|
36
39
|
if (!folder) {
|
|
@@ -43,6 +46,8 @@ const getFolderAndItsAncestors = ({
|
|
|
43
46
|
}
|
|
44
47
|
|
|
45
48
|
// Recursively find parents for a given folder id
|
|
46
|
-
return findParents([],
|
|
49
|
+
return findParents([], folder);
|
|
47
50
|
};
|
|
48
|
-
exports.getFolderAndItsAncestors = getFolderAndItsAncestors;
|
|
51
|
+
exports.getFolderAndItsAncestors = getFolderAndItsAncestors;
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=getFolderAndItsAncestors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getFolderAndItsAncestors","
|
|
1
|
+
{"version":3,"names":["getFolderAndItsAncestors","folder","folders","folderMap","Map","forEach","set","id","findParents","next","current","push","parentId","parent","get","exports"],"sources":["getFolderAndItsAncestors.ts"],"sourcesContent":["import { Folder } from \"~/folder/folder.types\";\n\ninterface GetFolderAndItsAncestorsParams {\n folder: Folder;\n folders: Folder[];\n}\n\nexport const getFolderAndItsAncestors = ({\n folder,\n folders\n}: GetFolderAndItsAncestorsParams): Folder[] => {\n // Create a Map with folders, using folder.id as key\n const folderMap = new Map<string, Folder>();\n folders.forEach(folder => folderMap.set(folder.id, folder));\n\n const findParents = (next: Folder[], current: Folder): Folder[] => {\n // No folder found: return the result\n if (!current) {\n return next;\n }\n\n // Push the current folder into the accumulator array\n next.push(current);\n\n // No parentId found: return the result\n if (!current.parentId) {\n return next;\n }\n\n const parent = folderMap.get(current.parentId);\n\n // No parent found: return the result\n if (!parent) {\n return next;\n }\n\n // Go ahead and find parent for the current parent\n return findParents(next, parent);\n };\n\n // No folder found: return an empty array\n if (!folder) {\n return [];\n }\n\n // The folder has no parent (it's at root level): return an array with the folder\n if (!folder.parentId) {\n return [folder];\n }\n\n // Recursively find parents for a given folder id\n return findParents([], folder);\n};\n"],"mappings":";;;;;;AAOO,MAAMA,wBAAwB,GAAGA,CAAC;EACrCC,MAAM;EACNC;AAC4B,CAAC,KAAe;EAC5C;EACA,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAiB,CAAC;EAC3CF,OAAO,CAACG,OAAO,CAACJ,MAAM,IAAIE,SAAS,CAACG,GAAG,CAACL,MAAM,CAACM,EAAE,EAAEN,MAAM,CAAC,CAAC;EAE3D,MAAMO,WAAW,GAAGA,CAACC,IAAc,EAAEC,OAAe,KAAe;IAC/D;IACA,IAAI,CAACA,OAAO,EAAE;MACV,OAAOD,IAAI;IACf;;IAEA;IACAA,IAAI,CAACE,IAAI,CAACD,OAAO,CAAC;;IAElB;IACA,IAAI,CAACA,OAAO,CAACE,QAAQ,EAAE;MACnB,OAAOH,IAAI;IACf;IAEA,MAAMI,MAAM,GAAGV,SAAS,CAACW,GAAG,CAACJ,OAAO,CAACE,QAAQ,CAAC;;IAE9C;IACA,IAAI,CAACC,MAAM,EAAE;MACT,OAAOJ,IAAI;IACf;;IAEA;IACA,OAAOD,WAAW,CAACC,IAAI,EAAEI,MAAM,CAAC;EACpC,CAAC;;EAED;EACA,IAAI,CAACZ,MAAM,EAAE;IACT,OAAO,EAAE;EACb;;EAEA;EACA,IAAI,CAACA,MAAM,CAACW,QAAQ,EAAE;IAClB,OAAO,CAACX,MAAM,CAAC;EACnB;;EAEA;EACA,OAAOO,WAAW,CAAC,EAAE,EAAEP,MAAM,CAAC;AAClC,CAAC;AAACc,OAAA,CAAAf,wBAAA,GAAAA,wBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isInstallationPending","tenancy","i18n","tenant","getCurrentTenant","getContentLocale"],"sources":["isInstallationPending.ts"],"sourcesContent":["import { AcoContext } from \"~/types\";\n\ntype CheckInstallationParams = Pick<AcoContext, \"tenancy\" | \"i18n\">;\nexport const isInstallationPending = ({ tenancy, i18n }: CheckInstallationParams): boolean => {\n /**\n * In case of a fresh webiny project \"tenant\" and \"locale\" won't be there until\n * installation is completed. So, we need to skip \"ACO\" creation till then.\n */\n const tenant = tenancy.getCurrentTenant();\n if (!tenant) {\n return true;\n }\n\n return !i18n.getContentLocale();\n};\n"],"mappings":";;;;;;AAGO,MAAMA,qBAAqB,
|
|
1
|
+
{"version":3,"names":["isInstallationPending","tenancy","i18n","tenant","getCurrentTenant","getContentLocale","exports"],"sources":["isInstallationPending.ts"],"sourcesContent":["import { AcoContext } from \"~/types\";\n\ntype CheckInstallationParams = Pick<AcoContext, \"tenancy\" | \"i18n\">;\nexport const isInstallationPending = ({ tenancy, i18n }: CheckInstallationParams): boolean => {\n /**\n * In case of a fresh webiny project \"tenant\" and \"locale\" won't be there until\n * installation is completed. So, we need to skip \"ACO\" creation till then.\n */\n const tenant = tenancy.getCurrentTenant();\n if (!tenant) {\n return true;\n }\n\n return !i18n.getContentLocale();\n};\n"],"mappings":";;;;;;AAGO,MAAMA,qBAAqB,GAAGA,CAAC;EAAEC,OAAO;EAAEC;AAA8B,CAAC,KAAc;EAC1F;AACJ;AACA;AACA;EACI,MAAMC,MAAM,GAAGF,OAAO,CAACG,gBAAgB,CAAC,CAAC;EACzC,IAAI,CAACD,MAAM,EAAE;IACT,OAAO,IAAI;EACf;EAEA,OAAO,CAACD,IAAI,CAACG,gBAAgB,CAAC,CAAC;AACnC,CAAC;AAACC,OAAA,CAAAN,qBAAA,GAAAA,qBAAA"}
|
package/utils/modelFactory.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { CmsModelPlugin, CmsPrivateModelFull } from "@webiny/api-headless-cms";
|
|
2
|
-
import { CmsGroup } from "@webiny/api-headless-cms/types";
|
|
3
2
|
interface Params {
|
|
4
|
-
group: Pick<CmsGroup, "id" | "name">;
|
|
5
3
|
/**
|
|
6
4
|
* Locale and tenant do not need to be defined.
|
|
7
5
|
* In that case model is not bound to any locale or tenant.
|
|
@@ -9,7 +7,7 @@ interface Params {
|
|
|
9
7
|
*/
|
|
10
8
|
locale?: string;
|
|
11
9
|
tenant?: string;
|
|
12
|
-
modelDefinition:
|
|
10
|
+
modelDefinition: CmsPrivateModelFull;
|
|
13
11
|
}
|
|
14
12
|
export declare const modelFactory: (params: Params) => CmsModelPlugin;
|
|
15
13
|
export {};
|
package/utils/modelFactory.js
CHANGED
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports.modelFactory = void 0;
|
|
8
|
-
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
7
|
var _apiHeadlessCms = require("@webiny/api-headless-cms");
|
|
10
8
|
const modelFactory = params => {
|
|
11
9
|
const {
|
|
12
|
-
group,
|
|
13
10
|
locale,
|
|
14
11
|
tenant,
|
|
15
12
|
modelDefinition
|
|
16
13
|
} = params;
|
|
17
|
-
return (0, _apiHeadlessCms.createCmsModel)(
|
|
18
|
-
group,
|
|
14
|
+
return (0, _apiHeadlessCms.createCmsModel)({
|
|
19
15
|
locale,
|
|
20
|
-
tenant
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}));
|
|
16
|
+
tenant,
|
|
17
|
+
...modelDefinition
|
|
18
|
+
});
|
|
24
19
|
};
|
|
25
|
-
exports.modelFactory = modelFactory;
|
|
20
|
+
exports.modelFactory = modelFactory;
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=modelFactory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_apiHeadlessCms","require","modelFactory","params","locale","tenant","modelDefinition","createCmsModel","exports"],"sources":["modelFactory.ts"],"sourcesContent":["import { CmsModelPlugin, CmsPrivateModelFull, createCmsModel } from \"@webiny/api-headless-cms\";\n\ninterface Params {\n /**\n * Locale and tenant do not need to be defined.\n * In that case model is not bound to any locale or tenant.\n * You can bind it to locale, tenant, both or none.\n */\n locale?: string;\n tenant?: string;\n modelDefinition: CmsPrivateModelFull;\n}\n\nexport const modelFactory = (params: Params): CmsModelPlugin => {\n const { locale, tenant, modelDefinition } = params;\n\n return createCmsModel({\n locale,\n tenant,\n ...modelDefinition\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAaO,MAAMC,YAAY,GAAIC,MAAc,IAAqB;EAC5D,MAAM;IAAEC,MAAM;IAAEC,MAAM;IAAEC;EAAgB,CAAC,GAAGH,MAAM;EAElD,OAAO,IAAAI,8BAAc,EAAC;IAClBH,MAAM;IACNC,MAAM;IACN,GAAGC;EACP,CAAC,CAAC;AACN,CAAC;AAACE,OAAA,CAAAN,YAAA,GAAAA,YAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.baseFields = void 0;
|
|
7
|
+
exports.pickEntryFieldValues = pickEntryFieldValues;
|
|
8
|
+
const baseFields = [
|
|
9
|
+
// Entry ID is mapped to "id" (we don't use revisions with ACO entities).
|
|
10
|
+
"id", "createdOn", "modifiedOn", "savedOn", "createdBy", "modifiedBy", "savedBy"];
|
|
11
|
+
exports.baseFields = baseFields;
|
|
12
|
+
const pickBaseEntryFieldValues = entry => {
|
|
13
|
+
const pickedValues = {};
|
|
14
|
+
for (const fieldName of baseFields) {
|
|
15
|
+
const [srcFieldName, targetFieldName = srcFieldName] = fieldName.split(":");
|
|
16
|
+
if (srcFieldName in entry) {
|
|
17
|
+
Object.assign(pickedValues, {
|
|
18
|
+
[targetFieldName]: entry[srcFieldName]
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return pickedValues;
|
|
23
|
+
};
|
|
24
|
+
function pickEntryFieldValues(entry) {
|
|
25
|
+
return {
|
|
26
|
+
...pickBaseEntryFieldValues(entry),
|
|
27
|
+
...entry.values
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=pickEntryFieldValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["baseFields","exports","pickBaseEntryFieldValues","entry","pickedValues","fieldName","srcFieldName","targetFieldName","split","Object","assign","pickEntryFieldValues","values"],"sources":["pickEntryFieldValues.ts"],"sourcesContent":["import { CmsEntry } from \"@webiny/api-headless-cms/types\";\n\nexport const baseFields = [\n // Entry ID is mapped to \"id\" (we don't use revisions with ACO entities).\n \"id\",\n\n \"createdOn\",\n \"modifiedOn\",\n \"savedOn\",\n \"createdBy\",\n \"modifiedBy\",\n \"savedBy\"\n];\n\nconst pickBaseEntryFieldValues = (entry: CmsEntry) => {\n const pickedValues: Partial<CmsEntry> = {};\n for (const fieldName of baseFields) {\n const [srcFieldName, targetFieldName = srcFieldName] = fieldName.split(\":\");\n if (srcFieldName in entry) {\n Object.assign(pickedValues, {\n [targetFieldName]: entry[srcFieldName as keyof CmsEntry]\n });\n }\n }\n\n return pickedValues;\n};\n\nexport function pickEntryFieldValues<T>(entry: CmsEntry): T {\n return {\n ...pickBaseEntryFieldValues(entry),\n ...entry.values\n } as T;\n}\n"],"mappings":";;;;;;;AAEO,MAAMA,UAAU,GAAG;AACtB;AACA,IAAI,EAEJ,WAAW,EACX,YAAY,EACZ,SAAS,EACT,WAAW,EACX,YAAY,EACZ,SAAS,CACZ;AAACC,OAAA,CAAAD,UAAA,GAAAA,UAAA;AAEF,MAAME,wBAAwB,GAAIC,KAAe,IAAK;EAClD,MAAMC,YAA+B,GAAG,CAAC,CAAC;EAC1C,KAAK,MAAMC,SAAS,IAAIL,UAAU,EAAE;IAChC,MAAM,CAACM,YAAY,EAAEC,eAAe,GAAGD,YAAY,CAAC,GAAGD,SAAS,CAACG,KAAK,CAAC,GAAG,CAAC;IAC3E,IAAIF,YAAY,IAAIH,KAAK,EAAE;MACvBM,MAAM,CAACC,MAAM,CAACN,YAAY,EAAE;QACxB,CAACG,eAAe,GAAGJ,KAAK,CAACG,YAAY;MACzC,CAAC,CAAC;IACN;EACJ;EAEA,OAAOF,YAAY;AACvB,CAAC;AAEM,SAASO,oBAAoBA,CAAIR,KAAe,EAAK;EACxD,OAAO;IACH,GAAGD,wBAAwB,CAACC,KAAK,CAAC;IAClC,GAAGA,KAAK,CAACS;EACb,CAAC;AACL"}
|
package/utils/resolve.js
CHANGED
package/utils/resolve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["resolve","fn","Response","e","ErrorResponse","resolveList","items","meta","ListResponse"],"sources":["resolve.ts"],"sourcesContent":["import { ErrorResponse, ListResponse, Response } from \"@webiny/handler-graphql\";\n\nexport const resolve = async (fn: () => Promise<any>) => {\n try {\n return new Response(await fn());\n } catch (e) {\n return new ErrorResponse(e);\n }\n};\nexport const resolveList = async (fn: () => Promise<any>) => {\n try {\n const [items, meta] = await fn();\n return new ListResponse(items, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n};\n"],"mappings":";;;;;;AAAA;AAEO,
|
|
1
|
+
{"version":3,"names":["_handlerGraphql","require","resolve","fn","Response","e","ErrorResponse","exports","resolveList","items","meta","ListResponse"],"sources":["resolve.ts"],"sourcesContent":["import { ErrorResponse, ListResponse, Response } from \"@webiny/handler-graphql\";\n\nexport const resolve = async (fn: () => Promise<any>) => {\n try {\n return new Response(await fn());\n } catch (e) {\n return new ErrorResponse(e);\n }\n};\nexport const resolveList = async (fn: () => Promise<any>) => {\n try {\n const [items, meta] = await fn();\n return new ListResponse(items, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAEO,MAAMC,OAAO,GAAG,MAAOC,EAAsB,IAAK;EACrD,IAAI;IACA,OAAO,IAAIC,wBAAQ,CAAC,MAAMD,EAAE,CAAC,CAAC,CAAC;EACnC,CAAC,CAAC,OAAOE,CAAC,EAAE;IACR,OAAO,IAAIC,6BAAa,CAACD,CAAC,CAAC;EAC/B;AACJ,CAAC;AAACE,OAAA,CAAAL,OAAA,GAAAA,OAAA;AACK,MAAMM,WAAW,GAAG,MAAOL,EAAsB,IAAK;EACzD,IAAI;IACA,MAAM,CAACM,KAAK,EAAEC,IAAI,CAAC,GAAG,MAAMP,EAAE,CAAC,CAAC;IAChC,OAAO,IAAIQ,4BAAY,CAACF,KAAK,EAAEC,IAAI,CAAC;EACxC,CAAC,CAAC,OAAOL,CAAC,EAAE;IACR,OAAO,IAAIC,6BAAa,CAACD,CAAC,CAAC;EAC/B;AACJ,CAAC;AAACE,OAAA,CAAAC,WAAA,GAAAA,WAAA"}
|