@webiny/api-aco 5.43.0-beta.2 → 5.43.0-beta.4
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/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.d.ts +6 -0
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.js +77 -0
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.js.map +1 -0
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.d.ts +0 -1
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js +3 -35
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js.map +1 -1
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.d.ts +1 -1
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js +3 -1
- package/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js.map +1 -1
- package/flp/useCases/CreateFlp.js +1 -1
- package/flp/useCases/CreateFlp.js.map +1 -1
- package/flp/useCases/Permissions.d.ts +2 -2
- package/flp/useCases/Permissions.js +31 -22
- package/flp/useCases/Permissions.js.map +1 -1
- package/flp/useCases/UpdateFlp.d.ts +1 -0
- package/flp/useCases/UpdateFlp.js +18 -1
- package/flp/useCases/UpdateFlp.js.map +1 -1
- package/folder/createFolderTypeDefs.js +11 -0
- package/folder/createFolderTypeDefs.js.map +1 -1
- package/folder/folder.crud.js +4 -8
- package/folder/folder.crud.js.map +1 -1
- package/folder/folder.model.js +5 -1
- package/folder/folder.model.js.map +1 -1
- package/folder/folder.so.js +23 -2
- package/folder/folder.so.js.map +1 -1
- package/folder/folder.types.d.ts +9 -0
- package/folder/folder.types.js.map +1 -1
- package/folder/useCases/CreateFolder/CreateFolderWithFolderLevelPermissions.d.ts +1 -0
- package/folder/useCases/GetAncestors/GetAncestors.d.ts +4 -0
- package/folder/useCases/GetAncestors/GetAncestors.js +22 -2
- package/folder/useCases/GetAncestors/GetAncestors.js.map +1 -1
- package/folder/useCases/GetAncestors/IGetAncestors.d.ts +0 -1
- package/folder/useCases/GetAncestors/IGetAncestors.js.map +1 -1
- package/folder/useCases/GetAncestors/index.d.ts +6 -1
- package/folder/useCases/GetAncestors/index.js +2 -2
- package/folder/useCases/GetAncestors/index.js.map +1 -1
- package/folder/useCases/GetFolder/GetFolderWithFolderLevelPermissions.d.ts +1 -0
- package/folder/useCases/UpdateFolder/UpdateFolderWithFolderLevelPermissions.d.ts +1 -0
- package/package.json +27 -27
- package/record/record.so.js +25 -2
- package/record/record.so.js.map +1 -1
- package/{flp/useCases → utils}/Path.js +1 -1
- /package/{flp/useCases → utils}/Path.d.ts +0 -0
- /package/{flp/useCases → utils}/Path.js.map +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_pubsub","require","_useCases","FIXED_FOLDER_LISTING_LIMIT","createFolderCrudMethods","storageOperations","folderLevelPermissions","context","onFolderBeforeCreate","createTopic","onFolderAfterCreate","onFolderBeforeUpdate","onFolderAfterUpdate","onFolderBeforeDelete","onFolderAfterDelete","getFolderUseCase","getFolderUseCaseWithoutPermissions","getGetFolderUseCase","getOperation","folder","getFolder","listFoldersUseCase","listFoldersUseCaseWithoutPermissions","getListFoldersUseCases","listOperation","listFolders","getFolderHierarchyUseCase","getGetFolderHierarchyUseCases","createFolderUseCase","getCreateFolderUseCases","createOperation","createFolder","topics","updateFolderUseCase","getUpdateFolderUseCase","updateOperation","updateFolder","deleteFolderUseCase","getDeleteFolderUseCases","deleteOperation","deleteFolder","getAncestorsUseCase","getGetAncestors","listFolderLevelPermissionsTargetsUseCase","getListFolderLevelPermissionsTargets","get","id","disablePermissions","execute","list","params","listAll","limit","getFolderHierarchy","create","data","delete","update","getAncestors","folders","where","type","getFolderWithAncestors","listFolderLevelPermissionsTargets","exports"],"sources":["folder.crud.ts"],"sourcesContent":["import { createTopic } from \"@webiny/pubsub\";\nimport {\n AcoFolderCrud,\n type ListFoldersParams,\n OnFolderAfterCreateTopicParams,\n OnFolderAfterDeleteTopicParams,\n OnFolderAfterUpdateTopicParams,\n OnFolderBeforeCreateTopicParams,\n OnFolderBeforeDeleteTopicParams,\n OnFolderBeforeUpdateTopicParams\n} from \"./folder.types\";\nimport {\n getCreateFolderUseCases,\n getDeleteFolderUseCases,\n getGetAncestors,\n getGetFolderUseCase,\n getListFolderLevelPermissionsTargets,\n getListFoldersUseCases,\n getUpdateFolderUseCase,\n getGetFolderHierarchyUseCases\n} from \"~/folder/useCases\";\nimport { type AcoContext, CreateAcoParams, Folder } from \"~/types\";\n\nconst FIXED_FOLDER_LISTING_LIMIT = 10_000;\n\ninterface CreateFolderCrudMethodsParams extends CreateAcoParams {\n context: AcoContext;\n}\n\nexport const createFolderCrudMethods = ({\n storageOperations,\n folderLevelPermissions,\n context\n}: CreateFolderCrudMethodsParams): AcoFolderCrud => {\n // create\n const onFolderBeforeCreate = createTopic<OnFolderBeforeCreateTopicParams>(\n \"aco.onFolderBeforeCreate\"\n );\n const onFolderAfterCreate =\n createTopic<OnFolderAfterCreateTopicParams>(\"aco.onFolderAfterCreate\");\n // update\n const onFolderBeforeUpdate = createTopic<OnFolderBeforeUpdateTopicParams>(\n \"aco.onFolderBeforeUpdate\"\n );\n const onFolderAfterUpdate =\n createTopic<OnFolderAfterUpdateTopicParams>(\"aco.onFolderAfterUpdate\");\n // delete\n const onFolderBeforeDelete = createTopic<OnFolderBeforeDeleteTopicParams>(\n \"aco.onFolderBeforeDelete\"\n );\n const onFolderAfterDelete =\n createTopic<OnFolderAfterDeleteTopicParams>(\"aco.onFolderAfterDelete\");\n\n const { getFolderUseCase, getFolderUseCaseWithoutPermissions } = getGetFolderUseCase({\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions\n });\n\n const { listFoldersUseCase, listFoldersUseCaseWithoutPermissions } = getListFoldersUseCases({\n listOperation: storageOperations.folder.listFolders,\n folderLevelPermissions\n });\n\n const { getFolderHierarchyUseCase } = getGetFolderHierarchyUseCases({\n listOperation: storageOperations.folder.listFolders,\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions\n });\n\n const { createFolderUseCase } = getCreateFolderUseCases({\n createOperation: storageOperations.folder.createFolder,\n folderLevelPermissions,\n topics: {\n onFolderAfterCreate,\n onFolderBeforeCreate\n }\n });\n\n const { updateFolderUseCase } = getUpdateFolderUseCase({\n updateOperation: storageOperations.folder.updateFolder,\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions,\n topics: {\n onFolderAfterUpdate,\n onFolderBeforeUpdate\n }\n });\n\n const { deleteFolderUseCase } = getDeleteFolderUseCases({\n deleteOperation: storageOperations.folder.deleteFolder,\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions,\n topics: {\n onFolderBeforeDelete,\n onFolderAfterDelete\n }\n });\n\n const { getAncestorsUseCase } = getGetAncestors();\n\n const { listFolderLevelPermissionsTargetsUseCase } = getListFolderLevelPermissionsTargets({\n context\n });\n\n return {\n /**\n * Lifecycle events\n */\n onFolderBeforeCreate,\n onFolderAfterCreate,\n onFolderBeforeUpdate,\n onFolderAfterUpdate,\n onFolderBeforeDelete,\n onFolderAfterDelete,\n\n async get(id, disablePermissions) {\n // If permissions are disabled, execute the use case without applying folder-level permissions logic, returning the raw folder data from the database.\n if (disablePermissions) {\n return await getFolderUseCaseWithoutPermissions.execute({ id });\n }\n return await getFolderUseCase.execute({ id });\n },\n\n async list({ disablePermissions, ...params }: ListFoldersParams) {\n // If permissions are disabled, execute the use case without applying folder-level permissions logic, returning the raw folder data from the database.\n if (disablePermissions) {\n return await listFoldersUseCaseWithoutPermissions.execute(params);\n }\n return await listFoldersUseCase.execute(params);\n },\n\n async listAll(params) {\n return await this.list({\n ...params,\n limit: FIXED_FOLDER_LISTING_LIMIT\n });\n },\n\n async getFolderHierarchy(params) {\n return await getFolderHierarchyUseCase.execute(params);\n },\n\n async create(data) {\n return await createFolderUseCase.execute(data);\n },\n\n async delete(id) {\n return await deleteFolderUseCase.execute({ id });\n },\n\n async update(id, data) {\n return await updateFolderUseCase.execute(id, data);\n },\n\n async getAncestors(folder: Folder) {\n const [folders] = await this.listAll({ where: { type: folder.type } });\n return getAncestorsUseCase.execute({ folder, folders });\n },\n\n /**\n * @deprecated use `getAncestors` instead\n */\n async getFolderWithAncestors(id: string) {\n const folder = await this.get(id);\n return this.getAncestors(folder);\n },\n\n async listFolderLevelPermissionsTargets() {\n return await listFolderLevelPermissionsTargetsUseCase.execute();\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_pubsub","require","_useCases","FIXED_FOLDER_LISTING_LIMIT","createFolderCrudMethods","storageOperations","folderLevelPermissions","context","onFolderBeforeCreate","createTopic","onFolderAfterCreate","onFolderBeforeUpdate","onFolderAfterUpdate","onFolderBeforeDelete","onFolderAfterDelete","getFolderUseCase","getFolderUseCaseWithoutPermissions","getGetFolderUseCase","getOperation","folder","getFolder","listFoldersUseCase","listFoldersUseCaseWithoutPermissions","getListFoldersUseCases","listOperation","listFolders","getFolderHierarchyUseCase","getGetFolderHierarchyUseCases","createFolderUseCase","getCreateFolderUseCases","createOperation","createFolder","topics","updateFolderUseCase","getUpdateFolderUseCase","updateOperation","updateFolder","deleteFolderUseCase","getDeleteFolderUseCases","deleteOperation","deleteFolder","getAncestorsUseCase","getGetAncestors","listFolderLevelPermissionsTargetsUseCase","getListFolderLevelPermissionsTargets","get","id","disablePermissions","execute","list","params","listAll","limit","getFolderHierarchy","create","data","delete","update","getAncestors","getFolderWithAncestors","listFolderLevelPermissionsTargets","exports"],"sources":["folder.crud.ts"],"sourcesContent":["import { createTopic } from \"@webiny/pubsub\";\nimport {\n AcoFolderCrud,\n type ListFoldersParams,\n OnFolderAfterCreateTopicParams,\n OnFolderAfterDeleteTopicParams,\n OnFolderAfterUpdateTopicParams,\n OnFolderBeforeCreateTopicParams,\n OnFolderBeforeDeleteTopicParams,\n OnFolderBeforeUpdateTopicParams\n} from \"./folder.types\";\nimport {\n getCreateFolderUseCases,\n getDeleteFolderUseCases,\n getGetAncestors,\n getGetFolderUseCase,\n getListFolderLevelPermissionsTargets,\n getListFoldersUseCases,\n getUpdateFolderUseCase,\n getGetFolderHierarchyUseCases\n} from \"~/folder/useCases\";\nimport { type AcoContext, CreateAcoParams, Folder } from \"~/types\";\n\nconst FIXED_FOLDER_LISTING_LIMIT = 10_000;\n\ninterface CreateFolderCrudMethodsParams extends CreateAcoParams {\n context: AcoContext;\n}\n\nexport const createFolderCrudMethods = ({\n storageOperations,\n folderLevelPermissions,\n context\n}: CreateFolderCrudMethodsParams): AcoFolderCrud => {\n // create\n const onFolderBeforeCreate = createTopic<OnFolderBeforeCreateTopicParams>(\n \"aco.onFolderBeforeCreate\"\n );\n const onFolderAfterCreate =\n createTopic<OnFolderAfterCreateTopicParams>(\"aco.onFolderAfterCreate\");\n // update\n const onFolderBeforeUpdate = createTopic<OnFolderBeforeUpdateTopicParams>(\n \"aco.onFolderBeforeUpdate\"\n );\n const onFolderAfterUpdate =\n createTopic<OnFolderAfterUpdateTopicParams>(\"aco.onFolderAfterUpdate\");\n // delete\n const onFolderBeforeDelete = createTopic<OnFolderBeforeDeleteTopicParams>(\n \"aco.onFolderBeforeDelete\"\n );\n const onFolderAfterDelete =\n createTopic<OnFolderAfterDeleteTopicParams>(\"aco.onFolderAfterDelete\");\n\n const { getFolderUseCase, getFolderUseCaseWithoutPermissions } = getGetFolderUseCase({\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions\n });\n\n const { listFoldersUseCase, listFoldersUseCaseWithoutPermissions } = getListFoldersUseCases({\n listOperation: storageOperations.folder.listFolders,\n folderLevelPermissions\n });\n\n const { getFolderHierarchyUseCase } = getGetFolderHierarchyUseCases({\n listOperation: storageOperations.folder.listFolders,\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions\n });\n\n const { createFolderUseCase } = getCreateFolderUseCases({\n createOperation: storageOperations.folder.createFolder,\n folderLevelPermissions,\n topics: {\n onFolderAfterCreate,\n onFolderBeforeCreate\n }\n });\n\n const { updateFolderUseCase } = getUpdateFolderUseCase({\n updateOperation: storageOperations.folder.updateFolder,\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions,\n topics: {\n onFolderAfterUpdate,\n onFolderBeforeUpdate\n }\n });\n\n const { deleteFolderUseCase } = getDeleteFolderUseCases({\n deleteOperation: storageOperations.folder.deleteFolder,\n getOperation: storageOperations.folder.getFolder,\n folderLevelPermissions,\n topics: {\n onFolderBeforeDelete,\n onFolderAfterDelete\n }\n });\n\n const { getAncestorsUseCase } = getGetAncestors({\n listFoldersUseCase: listFoldersUseCase\n });\n\n const { listFolderLevelPermissionsTargetsUseCase } = getListFolderLevelPermissionsTargets({\n context\n });\n\n return {\n /**\n * Lifecycle events\n */\n onFolderBeforeCreate,\n onFolderAfterCreate,\n onFolderBeforeUpdate,\n onFolderAfterUpdate,\n onFolderBeforeDelete,\n onFolderAfterDelete,\n\n async get(id, disablePermissions) {\n // If permissions are disabled, execute the use case without applying folder-level permissions logic, returning the raw folder data from the database.\n if (disablePermissions) {\n return await getFolderUseCaseWithoutPermissions.execute({ id });\n }\n return await getFolderUseCase.execute({ id });\n },\n\n async list({ disablePermissions, ...params }: ListFoldersParams) {\n // If permissions are disabled, execute the use case without applying folder-level permissions logic, returning the raw folder data from the database.\n if (disablePermissions) {\n return await listFoldersUseCaseWithoutPermissions.execute(params);\n }\n return await listFoldersUseCase.execute(params);\n },\n\n async listAll(params) {\n return await this.list({\n ...params,\n limit: FIXED_FOLDER_LISTING_LIMIT\n });\n },\n\n async getFolderHierarchy(params) {\n return await getFolderHierarchyUseCase.execute(params);\n },\n\n async create(data) {\n return await createFolderUseCase.execute(data);\n },\n\n async delete(id) {\n return await deleteFolderUseCase.execute({ id });\n },\n\n async update(id, data) {\n return await updateFolderUseCase.execute(id, data);\n },\n\n async getAncestors(folder: Folder) {\n return getAncestorsUseCase.execute({ folder });\n },\n\n /**\n * @deprecated use `getAncestors` instead\n */\n async getFolderWithAncestors(id: string) {\n const folder = await this.get(id);\n return this.getAncestors(folder);\n },\n\n async listFolderLevelPermissionsTargets() {\n return await listFolderLevelPermissionsTargetsUseCase.execute();\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
package/folder/folder.model.js
CHANGED
|
@@ -42,6 +42,10 @@ const parentIdField = () => (0, _createModelField.createModelField)({
|
|
|
42
42
|
label: "Parent Id",
|
|
43
43
|
type: "text"
|
|
44
44
|
});
|
|
45
|
+
const pathField = () => (0, _createModelField.createModelField)({
|
|
46
|
+
label: "Path",
|
|
47
|
+
type: "text"
|
|
48
|
+
});
|
|
45
49
|
const permissionsField = () => (0, _createModelField.createModelField)({
|
|
46
50
|
label: "Permissions",
|
|
47
51
|
fieldId: "permissions",
|
|
@@ -114,7 +118,7 @@ const createFolderModel = () => {
|
|
|
114
118
|
// flp: true
|
|
115
119
|
},
|
|
116
120
|
titleFieldId: "title",
|
|
117
|
-
fields: [titleField(), slugField(), typeField(), parentIdField(), permissionsField(), extensionsField()]
|
|
121
|
+
fields: [titleField(), slugField(), typeField(), parentIdField(), pathField(), permissionsField(), extensionsField()]
|
|
118
122
|
});
|
|
119
123
|
};
|
|
120
124
|
exports.createFolderModel = createFolderModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_createModelField","require","_apiHeadlessCms","titleField","createModelField","label","type","validation","name","message","slugField","settings","preset","regex","flags","typeField","parentIdField","permissionsField","fieldId","multipleValues","listValidation","fields","id","storageId","predefinedValues","enabled","values","value","layout","extensionsField","FOLDER_MODEL_ID","exports","createFolderModel","createPrivateModel","modelId","authorization","permissions","titleFieldId"],"sources":["folder.model.ts"],"sourcesContent":["import { createModelField } from \"~/utils/createModelField\";\nimport { createPrivateModel } from \"@webiny/api-headless-cms\";\n\nconst titleField = () =>\n createModelField({\n label: \"Title\",\n type: \"text\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst slugField = () =>\n createModelField({\n label: \"Slug\",\n type: \"text\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n },\n {\n name: \"pattern\",\n settings: {\n preset: \"custom\",\n regex: \"^[a-z0-9]+(-[a-z0-9]+)*$\",\n flags: \"g\"\n },\n message: \"Value must consist of only 'a-z', '0-9' and '-'.\"\n }\n ]\n });\n\nconst typeField = () =>\n createModelField({\n label: \"Type\",\n type: \"text\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst parentIdField = () =>\n createModelField({\n label: \"Parent Id\",\n type: \"text\"\n });\n\nconst permissionsField = () =>\n createModelField({\n label: \"Permissions\",\n fieldId: \"permissions\",\n type: \"object\",\n multipleValues: true,\n listValidation: [],\n settings: {\n fields: [\n {\n id: \"target\",\n type: \"text\",\n storageId: \"text@target\",\n fieldId: \"target\",\n label: \"Target\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n },\n {\n id: \"level\",\n type: \"text\",\n storageId: \"text@level\",\n fieldId: \"level\",\n label: \"Level\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ],\n predefinedValues: {\n enabled: true,\n values: [\n {\n label: \"Viewer\",\n value: \"viewer\"\n },\n {\n label: \"Editor\",\n value: \"editor\"\n },\n {\n label: \"Owner\",\n value: \"owner\"\n },\n {\n label: \"Public\",\n value: \"public\"\n },\n {\n label: \"No Access\",\n value: \"no-access\"\n }\n ]\n }\n }\n ],\n layout: [[\"target\"], [\"level\"]]\n }\n });\n\nconst extensionsField = () =>\n createModelField({\n label: \"Extensions\",\n fieldId: \"extensions\",\n type: \"object\",\n settings: {\n layout: [],\n fields: []\n }\n });\n\nexport const FOLDER_MODEL_ID = \"acoFolder\";\n\nexport const createFolderModel = () => {\n return createPrivateModel({\n name: \"ACO - Folder\",\n modelId: FOLDER_MODEL_ID,\n authorization: {\n // Disables base permission checks, but leaves FLP checks enabled.\n permissions: false\n\n // We're leaving FLP enabled (no need to set `flp: true`).\n // flp: true\n },\n titleFieldId: \"title\",\n fields: [\n titleField(),\n slugField(),\n typeField(),\n parentIdField(),\n permissionsField(),\n extensionsField()\n ]\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAEA,MAAME,UAAU,GAAGA,CAAA,KACf,IAAAC,kCAAgB,EAAC;EACbC,KAAK,EAAE,OAAO;EACdC,IAAI,EAAE,MAAM;EACZC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAMC,SAAS,GAAGA,CAAA,KACd,IAAAN,kCAAgB,EAAC;EACbC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EACZC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC,EACD;IACID,IAAI,EAAE,SAAS;IACfG,QAAQ,EAAE;MACNC,MAAM,EAAE,QAAQ;MAChBC,KAAK,EAAE,0BAA0B;MACjCC,KAAK,EAAE;IACX,CAAC;IACDL,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAMM,SAAS,GAAGA,CAAA,KACd,IAAAX,kCAAgB,EAAC;EACbC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EACZC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAMO,aAAa,GAAGA,CAAA,KAClB,IAAAZ,kCAAgB,EAAC;EACbC,KAAK,EAAE,WAAW;EAClBC,IAAI,EAAE;AACV,CAAC,CAAC;AAEN,MAAMW,gBAAgB,GAAGA,CAAA,KACrB,
|
|
1
|
+
{"version":3,"names":["_createModelField","require","_apiHeadlessCms","titleField","createModelField","label","type","validation","name","message","slugField","settings","preset","regex","flags","typeField","parentIdField","pathField","permissionsField","fieldId","multipleValues","listValidation","fields","id","storageId","predefinedValues","enabled","values","value","layout","extensionsField","FOLDER_MODEL_ID","exports","createFolderModel","createPrivateModel","modelId","authorization","permissions","titleFieldId"],"sources":["folder.model.ts"],"sourcesContent":["import { createModelField } from \"~/utils/createModelField\";\nimport { createPrivateModel } from \"@webiny/api-headless-cms\";\n\nconst titleField = () =>\n createModelField({\n label: \"Title\",\n type: \"text\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst slugField = () =>\n createModelField({\n label: \"Slug\",\n type: \"text\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n },\n {\n name: \"pattern\",\n settings: {\n preset: \"custom\",\n regex: \"^[a-z0-9]+(-[a-z0-9]+)*$\",\n flags: \"g\"\n },\n message: \"Value must consist of only 'a-z', '0-9' and '-'.\"\n }\n ]\n });\n\nconst typeField = () =>\n createModelField({\n label: \"Type\",\n type: \"text\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n });\n\nconst parentIdField = () =>\n createModelField({\n label: \"Parent Id\",\n type: \"text\"\n });\n\nconst pathField = () =>\n createModelField({\n label: \"Path\",\n type: \"text\"\n });\n\nconst permissionsField = () =>\n createModelField({\n label: \"Permissions\",\n fieldId: \"permissions\",\n type: \"object\",\n multipleValues: true,\n listValidation: [],\n settings: {\n fields: [\n {\n id: \"target\",\n type: \"text\",\n storageId: \"text@target\",\n fieldId: \"target\",\n label: \"Target\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ]\n },\n {\n id: \"level\",\n type: \"text\",\n storageId: \"text@level\",\n fieldId: \"level\",\n label: \"Level\",\n validation: [\n {\n name: \"required\",\n message: \"Value is required.\"\n }\n ],\n predefinedValues: {\n enabled: true,\n values: [\n {\n label: \"Viewer\",\n value: \"viewer\"\n },\n {\n label: \"Editor\",\n value: \"editor\"\n },\n {\n label: \"Owner\",\n value: \"owner\"\n },\n {\n label: \"Public\",\n value: \"public\"\n },\n {\n label: \"No Access\",\n value: \"no-access\"\n }\n ]\n }\n }\n ],\n layout: [[\"target\"], [\"level\"]]\n }\n });\n\nconst extensionsField = () =>\n createModelField({\n label: \"Extensions\",\n fieldId: \"extensions\",\n type: \"object\",\n settings: {\n layout: [],\n fields: []\n }\n });\n\nexport const FOLDER_MODEL_ID = \"acoFolder\";\n\nexport const createFolderModel = () => {\n return createPrivateModel({\n name: \"ACO - Folder\",\n modelId: FOLDER_MODEL_ID,\n authorization: {\n // Disables base permission checks, but leaves FLP checks enabled.\n permissions: false\n\n // We're leaving FLP enabled (no need to set `flp: true`).\n // flp: true\n },\n titleFieldId: \"title\",\n fields: [\n titleField(),\n slugField(),\n typeField(),\n parentIdField(),\n pathField(),\n permissionsField(),\n extensionsField()\n ]\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,iBAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAEA,MAAME,UAAU,GAAGA,CAAA,KACf,IAAAC,kCAAgB,EAAC;EACbC,KAAK,EAAE,OAAO;EACdC,IAAI,EAAE,MAAM;EACZC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAMC,SAAS,GAAGA,CAAA,KACd,IAAAN,kCAAgB,EAAC;EACbC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EACZC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC,EACD;IACID,IAAI,EAAE,SAAS;IACfG,QAAQ,EAAE;MACNC,MAAM,EAAE,QAAQ;MAChBC,KAAK,EAAE,0BAA0B;MACjCC,KAAK,EAAE;IACX,CAAC;IACDL,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAMM,SAAS,GAAGA,CAAA,KACd,IAAAX,kCAAgB,EAAC;EACbC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EACZC,UAAU,EAAE,CACR;IACIC,IAAI,EAAE,UAAU;IAChBC,OAAO,EAAE;EACb,CAAC;AAET,CAAC,CAAC;AAEN,MAAMO,aAAa,GAAGA,CAAA,KAClB,IAAAZ,kCAAgB,EAAC;EACbC,KAAK,EAAE,WAAW;EAClBC,IAAI,EAAE;AACV,CAAC,CAAC;AAEN,MAAMW,SAAS,GAAGA,CAAA,KACd,IAAAb,kCAAgB,EAAC;EACbC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE;AACV,CAAC,CAAC;AAEN,MAAMY,gBAAgB,GAAGA,CAAA,KACrB,IAAAd,kCAAgB,EAAC;EACbC,KAAK,EAAE,aAAa;EACpBc,OAAO,EAAE,aAAa;EACtBb,IAAI,EAAE,QAAQ;EACdc,cAAc,EAAE,IAAI;EACpBC,cAAc,EAAE,EAAE;EAClBV,QAAQ,EAAE;IACNW,MAAM,EAAE,CACJ;MACIC,EAAE,EAAE,QAAQ;MACZjB,IAAI,EAAE,MAAM;MACZkB,SAAS,EAAE,aAAa;MACxBL,OAAO,EAAE,QAAQ;MACjBd,KAAK,EAAE,QAAQ;MACfE,UAAU,EAAE,CACR;QACIC,IAAI,EAAE,UAAU;QAChBC,OAAO,EAAE;MACb,CAAC;IAET,CAAC,EACD;MACIc,EAAE,EAAE,OAAO;MACXjB,IAAI,EAAE,MAAM;MACZkB,SAAS,EAAE,YAAY;MACvBL,OAAO,EAAE,OAAO;MAChBd,KAAK,EAAE,OAAO;MACdE,UAAU,EAAE,CACR;QACIC,IAAI,EAAE,UAAU;QAChBC,OAAO,EAAE;MACb,CAAC,CACJ;MACDgB,gBAAgB,EAAE;QACdC,OAAO,EAAE,IAAI;QACbC,MAAM,EAAE,CACJ;UACItB,KAAK,EAAE,QAAQ;UACfuB,KAAK,EAAE;QACX,CAAC,EACD;UACIvB,KAAK,EAAE,QAAQ;UACfuB,KAAK,EAAE;QACX,CAAC,EACD;UACIvB,KAAK,EAAE,OAAO;UACduB,KAAK,EAAE;QACX,CAAC,EACD;UACIvB,KAAK,EAAE,QAAQ;UACfuB,KAAK,EAAE;QACX,CAAC,EACD;UACIvB,KAAK,EAAE,WAAW;UAClBuB,KAAK,EAAE;QACX,CAAC;MAET;IACJ,CAAC,CACJ;IACDC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC;EAClC;AACJ,CAAC,CAAC;AAEN,MAAMC,eAAe,GAAGA,CAAA,KACpB,IAAA1B,kCAAgB,EAAC;EACbC,KAAK,EAAE,YAAY;EACnBc,OAAO,EAAE,YAAY;EACrBb,IAAI,EAAE,QAAQ;EACdK,QAAQ,EAAE;IACNkB,MAAM,EAAE,EAAE;IACVP,MAAM,EAAE;EACZ;AACJ,CAAC,CAAC;AAEC,MAAMS,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,WAAW;AAEnC,MAAME,iBAAiB,GAAGA,CAAA,KAAM;EACnC,OAAO,IAAAC,kCAAkB,EAAC;IACtB1B,IAAI,EAAE,cAAc;IACpB2B,OAAO,EAAEJ,eAAe;IACxBK,aAAa,EAAE;MACX;MACAC,WAAW,EAAE;;MAEb;MACA;IACJ,CAAC;IACDC,YAAY,EAAE,OAAO;IACrBhB,MAAM,EAAE,CACJnB,UAAU,CAAC,CAAC,EACZO,SAAS,CAAC,CAAC,EACXK,SAAS,CAAC,CAAC,EACXC,aAAa,CAAC,CAAC,EACfC,SAAS,CAAC,CAAC,EACXC,gBAAgB,CAAC,CAAC,EAClBY,eAAe,CAAC,CAAC;EAEzB,CAAC,CAAC;AACN,CAAC;AAACE,OAAA,CAAAC,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|
package/folder/folder.so.js
CHANGED
|
@@ -11,6 +11,7 @@ var _folder = require("./folder.model");
|
|
|
11
11
|
var _createListSort = require("../utils/createListSort");
|
|
12
12
|
var _createOperationsWrapper = require("../utils/createOperationsWrapper");
|
|
13
13
|
var _pickEntryFieldValues = require("../utils/pickEntryFieldValues");
|
|
14
|
+
var _Path = require("../utils/Path");
|
|
14
15
|
var _constants = require("@webiny/api-headless-cms/constants");
|
|
15
16
|
const createFolderOperations = params => {
|
|
16
17
|
const {
|
|
@@ -87,6 +88,21 @@ const createFolderOperations = params => {
|
|
|
87
88
|
return;
|
|
88
89
|
});
|
|
89
90
|
};
|
|
91
|
+
const createFolderPath = async ({
|
|
92
|
+
slug,
|
|
93
|
+
parentId
|
|
94
|
+
}) => {
|
|
95
|
+
let parentFolder = null;
|
|
96
|
+
if (parentId) {
|
|
97
|
+
parentFolder = await getFolder({
|
|
98
|
+
id: parentId
|
|
99
|
+
});
|
|
100
|
+
if (!parentFolder) {
|
|
101
|
+
throw new _error.default("Parent folder not found. Unable to create the folder `path`", "ERROR_CREATE_FOLDER_PATH_PARENT_FOLDER_NOT_FOUND");
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return _Path.Path.create(slug, parentFolder?.path);
|
|
105
|
+
};
|
|
90
106
|
return {
|
|
91
107
|
getFolder,
|
|
92
108
|
listFolders(params) {
|
|
@@ -121,7 +137,8 @@ const createFolderOperations = params => {
|
|
|
121
137
|
});
|
|
122
138
|
const entry = await cms.createEntry(model, {
|
|
123
139
|
...data,
|
|
124
|
-
parentId: data.parentId || null
|
|
140
|
+
parentId: data.parentId || null,
|
|
141
|
+
path: await createFolderPath(data)
|
|
125
142
|
});
|
|
126
143
|
return (0, _pickEntryFieldValues.pickEntryFieldValues)(entry);
|
|
127
144
|
});
|
|
@@ -152,7 +169,11 @@ const createFolderOperations = params => {
|
|
|
152
169
|
* we don't want to override them with the ones coming from the `original` entry.
|
|
153
170
|
*/
|
|
154
171
|
...(0, _omit.default)(original, _constants.ENTRY_META_FIELDS),
|
|
155
|
-
...data
|
|
172
|
+
...data,
|
|
173
|
+
path: await createFolderPath({
|
|
174
|
+
slug: slug || original.slug,
|
|
175
|
+
parentId: parentId !== undefined ? parentId : original.parentId // parentId can be `null`
|
|
176
|
+
})
|
|
156
177
|
};
|
|
157
178
|
const entry = await cms.updateEntry(model, id, input);
|
|
158
179
|
return (0, _pickEntryFieldValues.pickEntryFieldValues)(entry);
|
package/folder/folder.so.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_omit","_interopRequireDefault","require","_error","_folder","_createListSort","_createOperationsWrapper","_pickEntryFieldValues","_constants","createFolderOperations","params","cms","withModel","createOperationsWrapper","modelName","FOLDER_MODEL_ID","getFolder","id","slug","type","parentId","model","entry","getEntryById","getEntry","where","latest","WebinyError","pickEntryFieldValues","checkExistingFolder","listResult","storageOperations","entries","list","id_not","limit","items","length","listFolders","sort","listSort","title","meta","listLatestEntries","createListSort","map","createFolder","data","createEntry","updateFolder","original","undefined","input","omit","ENTRY_META_FIELDS","updateEntry","deleteFolder","deleteEntry","permanently","force","exports"],"sources":["folder.so.ts"],"sourcesContent":["import omit from \"lodash/omit\";\nimport WebinyError from \"@webiny/error\";\nimport { FOLDER_MODEL_ID } from \"./folder.model\";\nimport { CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { createListSort } from \"~/utils/createListSort\";\nimport { createOperationsWrapper } from \"~/utils/createOperationsWrapper\";\nimport { pickEntryFieldValues } from \"~/utils/pickEntryFieldValues\";\nimport { AcoFolderStorageOperations, Folder } from \"./folder.types\";\nimport { ENTRY_META_FIELDS } from \"@webiny/api-headless-cms/constants\";\nimport { ListSort } from \"~/types\";\n\ninterface AcoCheckExistingFolderParams {\n params: {\n type: string;\n slug: string;\n parentId?: string | null;\n };\n id?: string;\n}\n\nexport const createFolderOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoFolderStorageOperations => {\n const { cms } = params;\n\n const { withModel } = createOperationsWrapper({\n ...params,\n modelName: FOLDER_MODEL_ID\n });\n\n const getFolder: AcoFolderStorageOperations[\"getFolder\"] = ({ id, slug, type, parentId }) => {\n return withModel(async model => {\n let entry;\n\n if (id) {\n entry = await cms.getEntryById(model, id);\n } else if (slug && type) {\n entry = await cms.getEntry(model, {\n where: { slug, type, parentId, latest: true }\n });\n }\n\n if (!entry) {\n throw new WebinyError(\"Could not load folder.\", \"GET_FOLDER_ERROR\", {\n id,\n slug,\n type,\n parentId\n });\n }\n\n return pickEntryFieldValues(entry);\n });\n };\n\n const checkExistingFolder = ({ id, params }: AcoCheckExistingFolderParams) => {\n return withModel(async model => {\n const { type, slug, parentId } = params;\n\n // We don't need to perform any kind of authorization or checks here. We just need to check\n // if the folder already exists in the database. Hence the direct storage operations access.\n const listResult = await cms.storageOperations.entries.list(model, {\n ...params,\n where: {\n // Folders always work with latest entries. We never publish them.\n latest: true,\n type,\n slug,\n parentId,\n id_not: id\n },\n limit: 1\n });\n\n if (listResult?.items?.length > 0) {\n throw new WebinyError(\n `Folder with slug \"${slug}\" already exists at this level.`,\n \"FOLDER_ALREADY_EXISTS\",\n {\n id,\n params\n }\n );\n }\n\n return;\n });\n };\n\n return {\n getFolder,\n listFolders(params) {\n return withModel(async model => {\n const { sort, where } = params;\n\n const listSort =\n sort ||\n ({\n title: \"ASC\"\n } as unknown as ListSort);\n\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n sort: createListSort(listSort),\n where: {\n ...(where || {})\n }\n });\n\n return [entries.map(pickEntryFieldValues<Folder>), meta];\n });\n },\n createFolder({ data }) {\n return withModel(async model => {\n await checkExistingFolder({\n params: {\n type: data.type,\n slug: data.slug,\n parentId: data.parentId\n }\n });\n\n const entry = await cms.createEntry(model, {\n ...data,\n parentId: data.parentId || null\n });\n\n return pickEntryFieldValues(entry);\n });\n },\n updateFolder({ id, data }) {\n return withModel(async model => {\n const { slug, parentId } = data;\n\n const original = await getFolder({ id });\n\n await checkExistingFolder({\n id,\n params: {\n type: original.type,\n slug: slug || original.slug,\n parentId: parentId !== undefined ? parentId : original.parentId // parentId can be `null`\n }\n });\n\n const input = {\n /**\n * We are omitting the standard entry meta fields:\n * we don't want to override them with the ones coming from the `original` entry.\n */\n ...omit(original, ENTRY_META_FIELDS),\n ...data\n };\n\n const entry = await cms.updateEntry(model, id, input);\n return pickEntryFieldValues(entry);\n });\n },\n deleteFolder({ id }) {\n return withModel(async model => {\n await cms.deleteEntry(model, id, {\n permanently: true,\n force: true\n });\n return true;\n });\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_omit","_interopRequireDefault","require","_error","_folder","_createListSort","_createOperationsWrapper","_pickEntryFieldValues","_Path","_constants","createFolderOperations","params","cms","withModel","createOperationsWrapper","modelName","FOLDER_MODEL_ID","getFolder","id","slug","type","parentId","model","entry","getEntryById","getEntry","where","latest","WebinyError","pickEntryFieldValues","checkExistingFolder","listResult","storageOperations","entries","list","id_not","limit","items","length","createFolderPath","parentFolder","Path","create","path","listFolders","sort","listSort","title","meta","listLatestEntries","createListSort","map","createFolder","data","createEntry","updateFolder","original","undefined","input","omit","ENTRY_META_FIELDS","updateEntry","deleteFolder","deleteEntry","permanently","force","exports"],"sources":["folder.so.ts"],"sourcesContent":["import omit from \"lodash/omit\";\nimport WebinyError from \"@webiny/error\";\nimport { FOLDER_MODEL_ID } from \"./folder.model\";\nimport { CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { createListSort } from \"~/utils/createListSort\";\nimport { createOperationsWrapper } from \"~/utils/createOperationsWrapper\";\nimport { pickEntryFieldValues } from \"~/utils/pickEntryFieldValues\";\nimport { Path } from \"~/utils/Path\";\nimport { AcoFolderStorageOperations, Folder } from \"./folder.types\";\nimport { ENTRY_META_FIELDS } from \"@webiny/api-headless-cms/constants\";\nimport { ListSort } from \"~/types\";\n\ninterface AcoCheckExistingFolderParams {\n params: {\n type: string;\n slug: string;\n parentId?: string | null;\n };\n id?: string;\n}\n\nexport const createFolderOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoFolderStorageOperations => {\n const { cms } = params;\n\n const { withModel } = createOperationsWrapper({\n ...params,\n modelName: FOLDER_MODEL_ID\n });\n\n const getFolder: AcoFolderStorageOperations[\"getFolder\"] = ({ id, slug, type, parentId }) => {\n return withModel(async model => {\n let entry;\n\n if (id) {\n entry = await cms.getEntryById(model, id);\n } else if (slug && type) {\n entry = await cms.getEntry(model, {\n where: { slug, type, parentId, latest: true }\n });\n }\n\n if (!entry) {\n throw new WebinyError(\"Could not load folder.\", \"GET_FOLDER_ERROR\", {\n id,\n slug,\n type,\n parentId\n });\n }\n\n return pickEntryFieldValues(entry);\n });\n };\n\n const checkExistingFolder = ({ id, params }: AcoCheckExistingFolderParams) => {\n return withModel(async model => {\n const { type, slug, parentId } = params;\n\n // We don't need to perform any kind of authorization or checks here. We just need to check\n // if the folder already exists in the database. Hence the direct storage operations access.\n const listResult = await cms.storageOperations.entries.list(model, {\n ...params,\n where: {\n // Folders always work with latest entries. We never publish them.\n latest: true,\n type,\n slug,\n parentId,\n id_not: id\n },\n limit: 1\n });\n\n if (listResult?.items?.length > 0) {\n throw new WebinyError(\n `Folder with slug \"${slug}\" already exists at this level.`,\n \"FOLDER_ALREADY_EXISTS\",\n {\n id,\n params\n }\n );\n }\n\n return;\n });\n };\n\n const createFolderPath = async ({\n slug,\n parentId\n }: Pick<Folder, \"slug\" | \"parentId\">): Promise<string> => {\n let parentFolder: Folder | null = null;\n\n if (parentId) {\n parentFolder = await getFolder({ id: parentId });\n\n if (!parentFolder) {\n throw new WebinyError(\n \"Parent folder not found. Unable to create the folder `path`\",\n \"ERROR_CREATE_FOLDER_PATH_PARENT_FOLDER_NOT_FOUND\"\n );\n }\n }\n\n return Path.create(slug, parentFolder?.path);\n };\n\n return {\n getFolder,\n listFolders(params) {\n return withModel(async model => {\n const { sort, where } = params;\n\n const listSort =\n sort ||\n ({\n title: \"ASC\"\n } as unknown as ListSort);\n\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n sort: createListSort(listSort),\n where: {\n ...(where || {})\n }\n });\n\n return [entries.map(pickEntryFieldValues<Folder>), meta];\n });\n },\n createFolder({ data }) {\n return withModel(async model => {\n await checkExistingFolder({\n params: {\n type: data.type,\n slug: data.slug,\n parentId: data.parentId\n }\n });\n\n const entry = await cms.createEntry(model, {\n ...data,\n parentId: data.parentId || null,\n path: await createFolderPath(data)\n });\n\n return pickEntryFieldValues(entry);\n });\n },\n updateFolder({ id, data }) {\n return withModel(async model => {\n const { slug, parentId } = data;\n\n const original = await getFolder({ id });\n\n await checkExistingFolder({\n id,\n params: {\n type: original.type,\n slug: slug || original.slug,\n parentId: parentId !== undefined ? parentId : original.parentId // parentId can be `null`\n }\n });\n\n const input = {\n /**\n * We are omitting the standard entry meta fields:\n * we don't want to override them with the ones coming from the `original` entry.\n */\n ...omit(original, ENTRY_META_FIELDS),\n ...data,\n path: await createFolderPath({\n slug: slug || original.slug,\n parentId: parentId !== undefined ? parentId : original.parentId // parentId can be `null`\n })\n };\n\n const entry = await cms.updateEntry(model, id, input);\n return pickEntryFieldValues(entry);\n });\n },\n deleteFolder({ id }) {\n return withModel(async model => {\n await cms.deleteEntry(model, id, {\n permanently: true,\n force: true\n });\n return true;\n });\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
package/folder/folder.types.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export interface Folder {
|
|
|
14
14
|
permissions?: FolderPermission[];
|
|
15
15
|
type: string;
|
|
16
16
|
parentId?: string | null;
|
|
17
|
+
path: string;
|
|
17
18
|
extensions?: Record<string, any>;
|
|
18
19
|
}
|
|
19
20
|
export interface ListFoldersWhere {
|
|
@@ -21,6 +22,14 @@ export interface ListFoldersWhere {
|
|
|
21
22
|
id_not_in?: string[];
|
|
22
23
|
parentId?: string | null;
|
|
23
24
|
parentId_in?: string[];
|
|
25
|
+
path?: string;
|
|
26
|
+
path_not?: string;
|
|
27
|
+
path_contains?: string;
|
|
28
|
+
path_not_contains?: string;
|
|
29
|
+
path_in?: string[];
|
|
30
|
+
path_not_in?: string[];
|
|
31
|
+
path_startsWith?: string;
|
|
32
|
+
path_not_startsWith?: string;
|
|
24
33
|
}
|
|
25
34
|
export interface ListFoldersParams {
|
|
26
35
|
where: ListFoldersWhere;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["folder.types.ts"],"sourcesContent":["import { type FolderPermission, ListMeta, ListSort, User } from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\n\nexport interface Folder {\n id: string;\n entryId: string;\n createdOn: string;\n modifiedOn: string | null;\n savedOn: string;\n createdBy: User;\n modifiedBy: User | null;\n savedBy: User;\n title: string;\n slug: string;\n permissions?: FolderPermission[];\n type: string;\n parentId?: string | null;\n extensions?: Record<string, any>;\n}\n\nexport interface ListFoldersWhere {\n type: string;\n id_not_in?: string[];\n parentId?: string | null;\n parentId_in?: string[];\n}\n\nexport interface ListFoldersParams {\n where: ListFoldersWhere;\n sort?: ListSort;\n limit?: number;\n after?: string | null;\n disablePermissions?: boolean;\n}\n\nexport type ListAllFoldersParams = Omit<ListFoldersParams, \"limit\" | \"after\">;\n\nexport interface GetFolderHierarchyParams {\n type: string;\n id: string;\n}\n\nexport interface GetFolderHierarchyResponse {\n parents: Folder[];\n siblings: Folder[];\n}\n\nexport type CreateFolderParams = Pick<Folder, \"title\" | \"slug\" | \"type\" | \"parentId\">;\n\nexport interface UpdateFolderParams {\n title?: string;\n slug?: string;\n permissions?: FolderPermission[];\n parentId?: string;\n}\n\nexport interface DeleteFolderParams {\n id: string;\n}\n\nexport interface FolderLevelPermissionsTarget<TMeta = Record<string, any>> {\n id: string;\n target: string;\n name: string;\n type: string;\n meta: TMeta;\n}\n\nexport interface FolderLevelPermissionsTargetListMeta {\n totalCount: number;\n}\n\nexport interface StorageOperationsGetFolderParams {\n id?: string;\n slug?: string;\n type?: string;\n parentId?: string | null;\n}\n\nexport interface GetFolderParams {\n id: string;\n}\n\nexport type StorageOperationsListFoldersParams = ListFoldersParams;\n\nexport interface StorageOperationsCreateFolderParams {\n data: CreateFolderParams;\n}\n\nexport interface StorageOperationsUpdateFolderParams {\n id: string;\n data: UpdateFolderParams;\n}\n\nexport type StorageOperationsDeleteFolderParams = DeleteFolderParams;\n\nexport interface OnFolderBeforeCreateTopicParams {\n input: CreateFolderParams;\n}\n\nexport interface OnFolderAfterCreateTopicParams {\n folder: Folder;\n}\n\nexport interface OnFolderBeforeUpdateTopicParams {\n original: Folder;\n input: Record<string, any>;\n}\n\nexport interface OnFolderAfterUpdateTopicParams {\n original: Folder;\n folder: Folder;\n input: Record<string, any>;\n}\n\nexport interface OnFolderBeforeDeleteTopicParams {\n folder: Folder;\n}\n\nexport interface OnFolderAfterDeleteTopicParams {\n folder: Folder;\n}\n\nexport interface AcoFolderCrud {\n get(id: string, disablePermissions?: boolean): Promise<Folder>;\n\n list(params: ListFoldersParams): Promise<[Folder[], ListMeta]>;\n\n listFolderLevelPermissionsTargets(): Promise<\n [FolderLevelPermissionsTarget[], FolderLevelPermissionsTargetListMeta]\n >;\n\n listAll(params: ListAllFoldersParams): Promise<[Folder[], ListMeta]>;\n\n create(data: CreateFolderParams): Promise<Folder>;\n\n update(id: string, data: UpdateFolderParams): Promise<Folder>;\n\n delete(id: string): Promise<boolean>;\n\n getAncestors(folder: Folder): Promise<Folder[]>;\n\n getFolderHierarchy(params: GetFolderHierarchyParams): Promise<GetFolderHierarchyResponse>;\n\n /**\n * @deprecated use `getAncestors` instead\n */\n getFolderWithAncestors(id: string): Promise<Folder[]>;\n\n onFolderBeforeCreate: Topic<OnFolderBeforeCreateTopicParams>;\n onFolderAfterCreate: Topic<OnFolderAfterCreateTopicParams>;\n onFolderBeforeUpdate: Topic<OnFolderBeforeUpdateTopicParams>;\n onFolderAfterUpdate: Topic<OnFolderAfterUpdateTopicParams>;\n onFolderBeforeDelete: Topic<OnFolderBeforeDeleteTopicParams>;\n onFolderAfterDelete: Topic<OnFolderAfterDeleteTopicParams>;\n}\n\nexport interface AcoFolderStorageOperations {\n getFolder(params: StorageOperationsGetFolderParams): Promise<Folder>;\n\n listFolders(params: StorageOperationsListFoldersParams): Promise<[Folder[], ListMeta]>;\n\n createFolder(params: StorageOperationsCreateFolderParams): Promise<Folder>;\n\n updateFolder(params: StorageOperationsUpdateFolderParams): Promise<Folder>;\n\n deleteFolder(params: StorageOperationsDeleteFolderParams): Promise<boolean>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["folder.types.ts"],"sourcesContent":["import { type FolderPermission, ListMeta, ListSort, User } from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\n\nexport interface Folder {\n id: string;\n entryId: string;\n createdOn: string;\n modifiedOn: string | null;\n savedOn: string;\n createdBy: User;\n modifiedBy: User | null;\n savedBy: User;\n title: string;\n slug: string;\n permissions?: FolderPermission[];\n type: string;\n parentId?: string | null;\n path: string;\n extensions?: Record<string, any>;\n}\n\nexport interface ListFoldersWhere {\n type: string;\n id_not_in?: string[];\n parentId?: string | null;\n parentId_in?: string[];\n path?: string;\n path_not?: string;\n path_contains?: string;\n path_not_contains?: string;\n path_in?: string[];\n path_not_in?: string[];\n path_startsWith?: string;\n path_not_startsWith?: string;\n}\n\nexport interface ListFoldersParams {\n where: ListFoldersWhere;\n sort?: ListSort;\n limit?: number;\n after?: string | null;\n disablePermissions?: boolean;\n}\n\nexport type ListAllFoldersParams = Omit<ListFoldersParams, \"limit\" | \"after\">;\n\nexport interface GetFolderHierarchyParams {\n type: string;\n id: string;\n}\n\nexport interface GetFolderHierarchyResponse {\n parents: Folder[];\n siblings: Folder[];\n}\n\nexport type CreateFolderParams = Pick<Folder, \"title\" | \"slug\" | \"type\" | \"parentId\">;\n\nexport interface UpdateFolderParams {\n title?: string;\n slug?: string;\n permissions?: FolderPermission[];\n parentId?: string;\n}\n\nexport interface DeleteFolderParams {\n id: string;\n}\n\nexport interface FolderLevelPermissionsTarget<TMeta = Record<string, any>> {\n id: string;\n target: string;\n name: string;\n type: string;\n meta: TMeta;\n}\n\nexport interface FolderLevelPermissionsTargetListMeta {\n totalCount: number;\n}\n\nexport interface StorageOperationsGetFolderParams {\n id?: string;\n slug?: string;\n type?: string;\n parentId?: string | null;\n}\n\nexport interface GetFolderParams {\n id: string;\n}\n\nexport type StorageOperationsListFoldersParams = ListFoldersParams;\n\nexport interface StorageOperationsCreateFolderParams {\n data: CreateFolderParams;\n}\n\nexport interface StorageOperationsUpdateFolderParams {\n id: string;\n data: UpdateFolderParams;\n}\n\nexport type StorageOperationsDeleteFolderParams = DeleteFolderParams;\n\nexport interface OnFolderBeforeCreateTopicParams {\n input: CreateFolderParams;\n}\n\nexport interface OnFolderAfterCreateTopicParams {\n folder: Folder;\n}\n\nexport interface OnFolderBeforeUpdateTopicParams {\n original: Folder;\n input: Record<string, any>;\n}\n\nexport interface OnFolderAfterUpdateTopicParams {\n original: Folder;\n folder: Folder;\n input: Record<string, any>;\n}\n\nexport interface OnFolderBeforeDeleteTopicParams {\n folder: Folder;\n}\n\nexport interface OnFolderAfterDeleteTopicParams {\n folder: Folder;\n}\n\nexport interface AcoFolderCrud {\n get(id: string, disablePermissions?: boolean): Promise<Folder>;\n\n list(params: ListFoldersParams): Promise<[Folder[], ListMeta]>;\n\n listFolderLevelPermissionsTargets(): Promise<\n [FolderLevelPermissionsTarget[], FolderLevelPermissionsTargetListMeta]\n >;\n\n listAll(params: ListAllFoldersParams): Promise<[Folder[], ListMeta]>;\n\n create(data: CreateFolderParams): Promise<Folder>;\n\n update(id: string, data: UpdateFolderParams): Promise<Folder>;\n\n delete(id: string): Promise<boolean>;\n\n getAncestors(folder: Folder): Promise<Folder[]>;\n\n getFolderHierarchy(params: GetFolderHierarchyParams): Promise<GetFolderHierarchyResponse>;\n\n /**\n * @deprecated use `getAncestors` instead\n */\n getFolderWithAncestors(id: string): Promise<Folder[]>;\n\n onFolderBeforeCreate: Topic<OnFolderBeforeCreateTopicParams>;\n onFolderAfterCreate: Topic<OnFolderAfterCreateTopicParams>;\n onFolderBeforeUpdate: Topic<OnFolderBeforeUpdateTopicParams>;\n onFolderAfterUpdate: Topic<OnFolderAfterUpdateTopicParams>;\n onFolderBeforeDelete: Topic<OnFolderBeforeDeleteTopicParams>;\n onFolderAfterDelete: Topic<OnFolderAfterDeleteTopicParams>;\n}\n\nexport interface AcoFolderStorageOperations {\n getFolder(params: StorageOperationsGetFolderParams): Promise<Folder>;\n\n listFolders(params: StorageOperationsListFoldersParams): Promise<[Folder[], ListMeta]>;\n\n createFolder(params: StorageOperationsCreateFolderParams): Promise<Folder>;\n\n updateFolder(params: StorageOperationsUpdateFolderParams): Promise<Folder>;\n\n deleteFolder(params: StorageOperationsDeleteFolderParams): Promise<boolean>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { GetAncestorsParams, IGetAncestors } from "./IGetAncestors";
|
|
2
2
|
import type { Folder } from "../../folder.types";
|
|
3
|
+
import type { IListFolders } from "../ListFolders/IListFolders";
|
|
3
4
|
export declare class GetAncestors implements IGetAncestors {
|
|
5
|
+
private listFoldersUseCase;
|
|
6
|
+
constructor(listFoldersUseCase: IListFolders);
|
|
4
7
|
execute(params: GetAncestorsParams): Promise<Folder[]>;
|
|
8
|
+
private listFolders;
|
|
5
9
|
}
|
|
@@ -4,12 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.GetAncestors = void 0;
|
|
7
|
+
var _constants = require("../../../constants");
|
|
7
8
|
class GetAncestors {
|
|
9
|
+
constructor(listFoldersUseCase) {
|
|
10
|
+
this.listFoldersUseCase = listFoldersUseCase;
|
|
11
|
+
}
|
|
8
12
|
async execute(params) {
|
|
9
13
|
const {
|
|
10
|
-
folder
|
|
11
|
-
folders
|
|
14
|
+
folder
|
|
12
15
|
} = params;
|
|
16
|
+
const folders = await this.listFolders(folder);
|
|
13
17
|
|
|
14
18
|
// Create a Map with folders, using folder.id as key
|
|
15
19
|
const folderMap = new Map();
|
|
@@ -51,6 +55,22 @@ class GetAncestors {
|
|
|
51
55
|
// Recursively find parents for a given folder id
|
|
52
56
|
return findParents([], folder);
|
|
53
57
|
}
|
|
58
|
+
async listFolders(folder) {
|
|
59
|
+
// Construct paths for all ancestors of the folder
|
|
60
|
+
const parts = folder.path.split("/").slice(1);
|
|
61
|
+
const paths = parts.map((_, index) => {
|
|
62
|
+
return [_constants.ROOT_FOLDER, ...parts.slice(0, index + 1)].join("/");
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
// Retrieve all folders that match the specified type and any of the constructed paths
|
|
66
|
+
const [folders] = await this.listFoldersUseCase.execute({
|
|
67
|
+
where: {
|
|
68
|
+
type: folder.type,
|
|
69
|
+
path_in: paths
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
return folders;
|
|
73
|
+
}
|
|
54
74
|
}
|
|
55
75
|
exports.GetAncestors = GetAncestors;
|
|
56
76
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["GetAncestors","execute","params","folder","folders","folderMap","Map","forEach","set","id","findParents","next","current","push","parentId","parent","get","exports"],"sources":["GetAncestors.ts"],"sourcesContent":["import type { GetAncestorsParams, IGetAncestors } from \"./IGetAncestors\";\nimport type { Folder } from \"~/folder/folder.types\";\n\nexport class GetAncestors implements IGetAncestors {\n public async execute(params: GetAncestorsParams) {\n const { folder
|
|
1
|
+
{"version":3,"names":["_constants","require","GetAncestors","constructor","listFoldersUseCase","execute","params","folder","folders","listFolders","folderMap","Map","forEach","set","id","findParents","next","current","push","parentId","parent","get","parts","path","split","slice","paths","map","_","index","ROOT_FOLDER","join","where","type","path_in","exports"],"sources":["GetAncestors.ts"],"sourcesContent":["import type { GetAncestorsParams, IGetAncestors } from \"./IGetAncestors\";\nimport type { Folder } from \"~/folder/folder.types\";\nimport type { IListFolders } from \"~/folder/useCases/ListFolders/IListFolders\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport class GetAncestors implements IGetAncestors {\n private listFoldersUseCase: IListFolders;\n\n constructor(listFoldersUseCase: IListFolders) {\n this.listFoldersUseCase = listFoldersUseCase;\n }\n\n public async execute(params: GetAncestorsParams) {\n const { folder } = params;\n\n const folders = await this.listFolders(folder);\n\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\n private async listFolders(folder: Folder) {\n // Construct paths for all ancestors of the folder\n const parts = folder.path.split(\"/\").slice(1);\n const paths = parts.map((_, index) => {\n return [ROOT_FOLDER, ...parts.slice(0, index + 1)].join(\"/\");\n });\n\n // Retrieve all folders that match the specified type and any of the constructed paths\n const [folders] = await this.listFoldersUseCase.execute({\n where: {\n type: folder.type,\n path_in: paths\n }\n });\n\n return folders;\n }\n}\n"],"mappings":";;;;;;AAGA,IAAAA,UAAA,GAAAC,OAAA;AAEO,MAAMC,YAAY,CAA0B;EAG/CC,WAAWA,CAACC,kBAAgC,EAAE;IAC1C,IAAI,CAACA,kBAAkB,GAAGA,kBAAkB;EAChD;EAEA,MAAaC,OAAOA,CAACC,MAA0B,EAAE;IAC7C,MAAM;MAAEC;IAAO,CAAC,GAAGD,MAAM;IAEzB,MAAME,OAAO,GAAG,MAAM,IAAI,CAACC,WAAW,CAACF,MAAM,CAAC;;IAE9C;IACA,MAAMG,SAAS,GAAG,IAAIC,GAAG,CAAiB,CAAC;IAC3CH,OAAO,CAACI,OAAO,CAACL,MAAM,IAAIG,SAAS,CAACG,GAAG,CAACN,MAAM,CAACO,EAAE,EAAEP,MAAM,CAAC,CAAC;IAE3D,MAAMQ,WAAW,GAAGA,CAACC,IAAc,EAAEC,OAAe,KAAe;MAC/D;MACA,IAAI,CAACA,OAAO,EAAE;QACV,OAAOD,IAAI;MACf;;MAEA;MACAA,IAAI,CAACE,IAAI,CAACD,OAAO,CAAC;;MAElB;MACA,IAAI,CAACA,OAAO,CAACE,QAAQ,EAAE;QACnB,OAAOH,IAAI;MACf;MAEA,MAAMI,MAAM,GAAGV,SAAS,CAACW,GAAG,CAACJ,OAAO,CAACE,QAAQ,CAAC;;MAE9C;MACA,IAAI,CAACC,MAAM,EAAE;QACT,OAAOJ,IAAI;MACf;;MAEA;MACA,OAAOD,WAAW,CAACC,IAAI,EAAEI,MAAM,CAAC;IACpC,CAAC;;IAED;IACA,IAAI,CAACb,MAAM,EAAE;MACT,OAAO,EAAE;IACb;;IAEA;IACA,IAAI,CAACA,MAAM,CAACY,QAAQ,EAAE;MAClB,OAAO,CAACZ,MAAM,CAAC;IACnB;;IAEA;IACA,OAAOQ,WAAW,CAAC,EAAE,EAAER,MAAM,CAAC;EAClC;EAEA,MAAcE,WAAWA,CAACF,MAAc,EAAE;IACtC;IACA,MAAMe,KAAK,GAAGf,MAAM,CAACgB,IAAI,CAACC,KAAK,CAAC,GAAG,CAAC,CAACC,KAAK,CAAC,CAAC,CAAC;IAC7C,MAAMC,KAAK,GAAGJ,KAAK,CAACK,GAAG,CAAC,CAACC,CAAC,EAAEC,KAAK,KAAK;MAClC,OAAO,CAACC,sBAAW,EAAE,GAAGR,KAAK,CAACG,KAAK,CAAC,CAAC,EAAEI,KAAK,GAAG,CAAC,CAAC,CAAC,CAACE,IAAI,CAAC,GAAG,CAAC;IAChE,CAAC,CAAC;;IAEF;IACA,MAAM,CAACvB,OAAO,CAAC,GAAG,MAAM,IAAI,CAACJ,kBAAkB,CAACC,OAAO,CAAC;MACpD2B,KAAK,EAAE;QACHC,IAAI,EAAE1B,MAAM,CAAC0B,IAAI;QACjBC,OAAO,EAAER;MACb;IACJ,CAAC,CAAC;IAEF,OAAOlB,OAAO;EAClB;AACJ;AAAC2B,OAAA,CAAAjC,YAAA,GAAAA,YAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["IGetAncestors.ts"],"sourcesContent":["import { Folder } from \"~/folder/folder.types\";\n\nexport interface GetAncestorsParams {\n folder: Folder;\n
|
|
1
|
+
{"version":3,"names":[],"sources":["IGetAncestors.ts"],"sourcesContent":["import { Folder } from \"~/folder/folder.types\";\n\nexport interface GetAncestorsParams {\n folder: Folder;\n}\n\nexport interface IGetAncestors {\n execute: (params: GetAncestorsParams) => Promise<Folder[]>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { GetAncestors } from "./GetAncestors";
|
|
2
|
-
|
|
2
|
+
import type { IListFolders } from "../ListFolders/IListFolders";
|
|
3
|
+
interface GetAncestorsUseCasesParams {
|
|
4
|
+
listFoldersUseCase: IListFolders;
|
|
5
|
+
}
|
|
6
|
+
export declare const getGetAncestors: (params: GetAncestorsUseCasesParams) => {
|
|
3
7
|
getAncestorsUseCase: GetAncestors;
|
|
4
8
|
};
|
|
9
|
+
export {};
|
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.getGetAncestors = void 0;
|
|
7
7
|
var _GetAncestors = require("./GetAncestors");
|
|
8
|
-
const getGetAncestors =
|
|
9
|
-
const getAncestorsUseCase = new _GetAncestors.GetAncestors();
|
|
8
|
+
const getGetAncestors = params => {
|
|
9
|
+
const getAncestorsUseCase = new _GetAncestors.GetAncestors(params.listFoldersUseCase);
|
|
10
10
|
return {
|
|
11
11
|
getAncestorsUseCase
|
|
12
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_GetAncestors","require","getGetAncestors","getAncestorsUseCase","GetAncestors","exports"],"sources":["index.ts"],"sourcesContent":["import { GetAncestors } from \"./GetAncestors\";\n\nexport const getGetAncestors = () => {\n const getAncestorsUseCase = new GetAncestors();\n\n return {\n getAncestorsUseCase\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;
|
|
1
|
+
{"version":3,"names":["_GetAncestors","require","getGetAncestors","params","getAncestorsUseCase","GetAncestors","listFoldersUseCase","exports"],"sources":["index.ts"],"sourcesContent":["import { GetAncestors } from \"./GetAncestors\";\nimport type { IListFolders } from \"~/folder/useCases/ListFolders/IListFolders\";\n\ninterface GetAncestorsUseCasesParams {\n listFoldersUseCase: IListFolders;\n}\n\nexport const getGetAncestors = (params: GetAncestorsUseCasesParams) => {\n const getAncestorsUseCase = new GetAncestors(params.listFoldersUseCase);\n\n return {\n getAncestorsUseCase\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAOO,MAAMC,eAAe,GAAIC,MAAkC,IAAK;EACnE,MAAMC,mBAAmB,GAAG,IAAIC,0BAAY,CAACF,MAAM,CAACG,kBAAkB,CAAC;EAEvE,OAAO;IACHF;EACJ,CAAC;AACL,CAAC;AAACG,OAAA,CAAAL,eAAA,GAAAA,eAAA","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-aco",
|
|
3
|
-
"version": "5.43.0-beta.
|
|
3
|
+
"version": "5.43.0-beta.4",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"aco:base"
|
|
@@ -22,38 +22,38 @@
|
|
|
22
22
|
"directory": "dist"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@webiny/api": "5.43.0-beta.
|
|
26
|
-
"@webiny/api-authentication": "5.43.0-beta.
|
|
27
|
-
"@webiny/api-headless-cms": "5.43.0-beta.
|
|
28
|
-
"@webiny/api-i18n": "5.43.0-beta.
|
|
29
|
-
"@webiny/api-security": "5.43.0-beta.
|
|
30
|
-
"@webiny/api-tenancy": "5.43.0-beta.
|
|
31
|
-
"@webiny/aws-sdk": "5.43.0-beta.
|
|
32
|
-
"@webiny/db-dynamodb": "5.43.0-beta.
|
|
33
|
-
"@webiny/error": "5.43.0-beta.
|
|
34
|
-
"@webiny/handler": "5.43.0-beta.
|
|
35
|
-
"@webiny/handler-graphql": "5.43.0-beta.
|
|
36
|
-
"@webiny/pubsub": "5.43.0-beta.
|
|
37
|
-
"@webiny/tasks": "5.43.0-beta.
|
|
38
|
-
"@webiny/utils": "5.43.0-beta.
|
|
39
|
-
"@webiny/validation": "5.43.0-beta.
|
|
25
|
+
"@webiny/api": "5.43.0-beta.4",
|
|
26
|
+
"@webiny/api-authentication": "5.43.0-beta.4",
|
|
27
|
+
"@webiny/api-headless-cms": "5.43.0-beta.4",
|
|
28
|
+
"@webiny/api-i18n": "5.43.0-beta.4",
|
|
29
|
+
"@webiny/api-security": "5.43.0-beta.4",
|
|
30
|
+
"@webiny/api-tenancy": "5.43.0-beta.4",
|
|
31
|
+
"@webiny/aws-sdk": "5.43.0-beta.4",
|
|
32
|
+
"@webiny/db-dynamodb": "5.43.0-beta.4",
|
|
33
|
+
"@webiny/error": "5.43.0-beta.4",
|
|
34
|
+
"@webiny/handler": "5.43.0-beta.4",
|
|
35
|
+
"@webiny/handler-graphql": "5.43.0-beta.4",
|
|
36
|
+
"@webiny/pubsub": "5.43.0-beta.4",
|
|
37
|
+
"@webiny/tasks": "5.43.0-beta.4",
|
|
38
|
+
"@webiny/utils": "5.43.0-beta.4",
|
|
39
|
+
"@webiny/validation": "5.43.0-beta.4",
|
|
40
40
|
"lodash": "4.17.21"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@webiny/api-admin-users": "5.43.0-beta.
|
|
44
|
-
"@webiny/api-file-manager": "5.43.0-beta.
|
|
45
|
-
"@webiny/api-i18n-ddb": "5.43.0-beta.
|
|
46
|
-
"@webiny/api-security-so-ddb": "5.43.0-beta.
|
|
47
|
-
"@webiny/api-tenancy-so-ddb": "5.43.0-beta.
|
|
48
|
-
"@webiny/api-wcp": "5.43.0-beta.
|
|
49
|
-
"@webiny/handler-aws": "5.43.0-beta.
|
|
50
|
-
"@webiny/plugins": "5.43.0-beta.
|
|
51
|
-
"@webiny/project-utils": "5.43.0-beta.
|
|
52
|
-
"@webiny/wcp": "5.43.0-beta.
|
|
43
|
+
"@webiny/api-admin-users": "5.43.0-beta.4",
|
|
44
|
+
"@webiny/api-file-manager": "5.43.0-beta.4",
|
|
45
|
+
"@webiny/api-i18n-ddb": "5.43.0-beta.4",
|
|
46
|
+
"@webiny/api-security-so-ddb": "5.43.0-beta.4",
|
|
47
|
+
"@webiny/api-tenancy-so-ddb": "5.43.0-beta.4",
|
|
48
|
+
"@webiny/api-wcp": "5.43.0-beta.4",
|
|
49
|
+
"@webiny/handler-aws": "5.43.0-beta.4",
|
|
50
|
+
"@webiny/plugins": "5.43.0-beta.4",
|
|
51
|
+
"@webiny/project-utils": "5.43.0-beta.4",
|
|
52
|
+
"@webiny/wcp": "5.43.0-beta.4",
|
|
53
53
|
"graphql": "15.9.0",
|
|
54
54
|
"prettier": "2.8.8",
|
|
55
55
|
"rimraf": "6.0.1",
|
|
56
56
|
"typescript": "5.3.3"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "e603e8424527889681407f3ebfcdf6fa4dfc3089"
|
|
59
59
|
}
|
package/record/record.so.js
CHANGED
|
@@ -77,17 +77,40 @@ const createSearchRecordOperations = params => {
|
|
|
77
77
|
return [tags, meta];
|
|
78
78
|
},
|
|
79
79
|
async createRecord(model, {
|
|
80
|
-
data:
|
|
80
|
+
data: searchRecordData
|
|
81
81
|
}) {
|
|
82
82
|
const {
|
|
83
83
|
tags = [],
|
|
84
84
|
data = {},
|
|
85
85
|
...rest
|
|
86
|
-
} =
|
|
86
|
+
} = searchRecordData;
|
|
87
|
+
|
|
88
|
+
// We added this so that if the main record has its meta fields set with
|
|
89
|
+
// custom values, we can propagate them to the search record as well.
|
|
90
|
+
const {
|
|
91
|
+
createdBy,
|
|
92
|
+
createdOn,
|
|
93
|
+
modifiedBy,
|
|
94
|
+
modifiedOn,
|
|
95
|
+
savedBy,
|
|
96
|
+
savedOn
|
|
97
|
+
} = (0, _constants.pickEntryMetaFields)(data);
|
|
87
98
|
const entry = await cms.createEntry(model, {
|
|
88
99
|
tags,
|
|
89
100
|
data,
|
|
90
101
|
...rest,
|
|
102
|
+
createdBy,
|
|
103
|
+
createdOn,
|
|
104
|
+
modifiedBy,
|
|
105
|
+
modifiedOn,
|
|
106
|
+
savedBy,
|
|
107
|
+
savedOn,
|
|
108
|
+
revisionCreatedBy: createdBy,
|
|
109
|
+
revisionCreatedOn: createdOn,
|
|
110
|
+
revisionModifiedBy: modifiedBy,
|
|
111
|
+
revisionModifiedOn: modifiedOn,
|
|
112
|
+
revisionSavedBy: savedBy,
|
|
113
|
+
revisionSavedOn: savedOn,
|
|
91
114
|
id: (0, _acoRecordId.attachAcoRecordPrefix)(rest.id)
|
|
92
115
|
});
|
|
93
116
|
return (0, _pickEntryFieldValues.pickEntryFieldValues)(entry);
|
package/record/record.so.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_omit","_interopRequireDefault","require","_error","_pickEntryFieldValues","_acoRecordId","_record","_constants","createSearchRecordOperations","params","cms","getRecord","model","id","revisions","storageOperations","entries","getLatestByIds","ids","attachAcoRecordPrefix","length","WebinyError","record","pickEntryFieldValues","listRecords","sort","where","meta","listLatestEntries","items","map","listTags","getUniqueFieldValues","latest","fieldId","hasMoreItems","totalCount","cursor","tags","item","tag","value","count","createRecord","data","SearchRecordData","rest","entry","createEntry","updateRecord","original","input","omit","ENTRY_META_FIELDS","updateEntry","moveRecord","folderId","wbyAco_location","lookFor","SEARCH_RECORD_MODEL_ID","modelId","substring","location","deleteRecord","deleteEntry","exports"],"sources":["record.so.ts"],"sourcesContent":["import omit from \"lodash/omit\";\nimport WebinyError from \"@webiny/error\";\nimport { CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { pickEntryFieldValues } from \"~/utils/pickEntryFieldValues\";\nimport { AcoSearchRecordStorageOperations, SearchRecord } 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\";\nimport { ENTRY_META_FIELDS } from \"@webiny/api-headless-cms/constants\";\n\nexport const createSearchRecordOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoSearchRecordStorageOperations => {\n const { cms } = 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 const record = await getRecord(model, id);\n return pickEntryFieldValues<SearchRecord<any>>(record);\n },\n async listRecords(model, params) {\n const { sort, where } = params;\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n sort,\n where: {\n ...(where || {})\n }\n });\n\n const items = entries.map(pickEntryFieldValues<SearchRecord<any>>);\n\n return [items, meta];\n },\n async listTags(model, params) {\n const { where } = params;\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 async createRecord(model, { data: SearchRecordData }) {\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 pickEntryFieldValues<SearchRecord<any>>(entry);\n },\n async updateRecord(this: AcoSearchRecordStorageOperations, model, { id, data }) {\n const original = await this.getRecord(model, { id });\n const input = {\n /**\n * We are omitting the standard entry meta fields:\n * we don't want to override them with the ones coming from the `original` entry.\n */\n ...omit(original, ENTRY_META_FIELDS),\n ...data\n };\n\n const entry = await cms.updateEntry(model, attachAcoRecordPrefix(original.id), input);\n\n return pickEntryFieldValues<SearchRecord<any>>(entry);\n },\n async moveRecord(this: AcoSearchRecordStorageOperations, model, params) {\n const { id, folderId } = params;\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 async deleteRecord(model, { id }) {\n await cms.deleteEntry(model, attachAcoRecordPrefix(id));\n return true;\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_omit","_interopRequireDefault","require","_error","_pickEntryFieldValues","_acoRecordId","_record","_constants","createSearchRecordOperations","params","cms","getRecord","model","id","revisions","storageOperations","entries","getLatestByIds","ids","attachAcoRecordPrefix","length","WebinyError","record","pickEntryFieldValues","listRecords","sort","where","meta","listLatestEntries","items","map","listTags","getUniqueFieldValues","latest","fieldId","hasMoreItems","totalCount","cursor","tags","item","tag","value","count","createRecord","data","searchRecordData","rest","createdBy","createdOn","modifiedBy","modifiedOn","savedBy","savedOn","pickEntryMetaFields","entry","createEntry","revisionCreatedBy","revisionCreatedOn","revisionModifiedBy","revisionModifiedOn","revisionSavedBy","revisionSavedOn","updateRecord","original","input","omit","ENTRY_META_FIELDS","updateEntry","moveRecord","folderId","wbyAco_location","lookFor","SEARCH_RECORD_MODEL_ID","modelId","substring","location","deleteRecord","deleteEntry","exports"],"sources":["record.so.ts"],"sourcesContent":["import omit from \"lodash/omit\";\nimport WebinyError from \"@webiny/error\";\nimport { CreateAcoStorageOperationsParams } from \"~/createAcoStorageOperations\";\nimport { pickEntryFieldValues } from \"~/utils/pickEntryFieldValues\";\nimport { AcoSearchRecordStorageOperations, SearchRecord } 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\";\nimport { ENTRY_META_FIELDS, pickEntryMetaFields } from \"@webiny/api-headless-cms/constants\";\n\nexport const createSearchRecordOperations = (\n params: CreateAcoStorageOperationsParams\n): AcoSearchRecordStorageOperations => {\n const { cms } = 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 const record = await getRecord(model, id);\n return pickEntryFieldValues<SearchRecord<any>>(record);\n },\n async listRecords(model, params) {\n const { sort, where } = params;\n const [entries, meta] = await cms.listLatestEntries(model, {\n ...params,\n sort,\n where: {\n ...(where || {})\n }\n });\n\n const items = entries.map(pickEntryFieldValues<SearchRecord<any>>);\n\n return [items, meta];\n },\n async listTags(model, params) {\n const { where } = params;\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 async createRecord(model, { data: searchRecordData }) {\n const { tags = [], data = {}, ...rest } = searchRecordData;\n\n // We added this so that if the main record has its meta fields set with\n // custom values, we can propagate them to the search record as well.\n const { createdBy, createdOn, modifiedBy, modifiedOn, savedBy, savedOn } =\n pickEntryMetaFields(data);\n\n const entry = await cms.createEntry(model, {\n tags,\n data,\n ...rest,\n createdBy,\n createdOn,\n modifiedBy,\n modifiedOn,\n savedBy,\n savedOn,\n revisionCreatedBy: createdBy,\n revisionCreatedOn: createdOn,\n revisionModifiedBy: modifiedBy,\n revisionModifiedOn: modifiedOn,\n revisionSavedBy: savedBy,\n revisionSavedOn: savedOn,\n id: attachAcoRecordPrefix(rest.id)\n });\n\n return pickEntryFieldValues<SearchRecord<any>>(entry);\n },\n async updateRecord(this: AcoSearchRecordStorageOperations, model, { id, data }) {\n const original = await this.getRecord(model, { id });\n const input = {\n /**\n * We are omitting the standard entry meta fields:\n * we don't want to override them with the ones coming from the `original` entry.\n */\n ...omit(original, ENTRY_META_FIELDS),\n ...data\n };\n\n const entry = await cms.updateEntry(model, attachAcoRecordPrefix(original.id), input);\n\n return pickEntryFieldValues<SearchRecord<any>>(entry);\n },\n async moveRecord(this: AcoSearchRecordStorageOperations, model, params) {\n const { id, folderId } = params;\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 async deleteRecord(model, { id }) {\n await cms.deleteEntry(model, attachAcoRecordPrefix(id));\n return true;\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
File without changes
|
|
File without changes
|