@webiny/api-file-manager 0.0.0-unstable.c2780f51fe → 0.0.0-unstable.c7dec08bb0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/FileManagerContextSetup.d.ts +13 -0
  2. package/FileManagerContextSetup.js +113 -0
  3. package/FileManagerContextSetup.js.map +1 -0
  4. package/cmsFileStorage/CmsFilesStorage.d.ts +27 -0
  5. package/cmsFileStorage/CmsFilesStorage.js +173 -0
  6. package/cmsFileStorage/CmsFilesStorage.js.map +1 -0
  7. package/cmsFileStorage/ListFilesWhereProcessor.d.ts +7 -0
  8. package/cmsFileStorage/ListFilesWhereProcessor.js +35 -0
  9. package/cmsFileStorage/ListFilesWhereProcessor.js.map +1 -0
  10. package/cmsFileStorage/ListTagsWhereProcessor.d.ts +7 -0
  11. package/cmsFileStorage/ListTagsWhereProcessor.js +35 -0
  12. package/cmsFileStorage/ListTagsWhereProcessor.js.map +1 -0
  13. package/cmsFileStorage/createFileManagerPlugins.d.ts +5 -0
  14. package/cmsFileStorage/createFileManagerPlugins.js +34 -0
  15. package/cmsFileStorage/createFileManagerPlugins.js.map +1 -0
  16. package/cmsFileStorage/createModelField.d.ts +5 -0
  17. package/cmsFileStorage/createModelField.js +37 -0
  18. package/cmsFileStorage/createModelField.js.map +1 -0
  19. package/cmsFileStorage/file.model.d.ts +4 -0
  20. package/cmsFileStorage/file.model.js +118 -0
  21. package/cmsFileStorage/file.model.js.map +1 -0
  22. package/cmsFileStorage/isInstallationPending.d.ts +4 -0
  23. package/cmsFileStorage/isInstallationPending.js +21 -0
  24. package/cmsFileStorage/isInstallationPending.js.map +1 -0
  25. package/contants.d.ts +1 -0
  26. package/contants.js +8 -0
  27. package/contants.js.map +1 -0
  28. package/createFileManager/files.crud.js +51 -76
  29. package/createFileManager/files.crud.js.map +1 -1
  30. package/createFileManager/index.d.ts +4 -2
  31. package/createFileManager/index.js.map +1 -1
  32. package/createFileManager/permissions/FilesPermissions.d.ts +4 -0
  33. package/createFileManager/permissions/FilesPermissions.js +9 -0
  34. package/createFileManager/permissions/FilesPermissions.js.map +1 -0
  35. package/createFileManager/settings.crud.js +1 -1
  36. package/createFileManager/settings.crud.js.map +1 -1
  37. package/graphql/baseSchema.d.ts +3 -0
  38. package/graphql/baseSchema.js +117 -0
  39. package/graphql/baseSchema.js.map +1 -0
  40. package/graphql/createFilesTypeDefs.d.ts +7 -0
  41. package/graphql/createFilesTypeDefs.js +162 -0
  42. package/graphql/createFilesTypeDefs.js.map +1 -0
  43. package/graphql/filesSchema.d.ts +4 -0
  44. package/graphql/filesSchema.js +83 -0
  45. package/graphql/filesSchema.js.map +1 -0
  46. package/graphql/index.d.ts +2 -2
  47. package/graphql/index.js +23 -267
  48. package/graphql/index.js.map +1 -1
  49. package/graphql/utils.d.ts +11 -0
  50. package/graphql/utils.js +22 -0
  51. package/graphql/utils.js.map +1 -0
  52. package/handlers/download/byAlias.js +9 -9
  53. package/handlers/download/byAlias.js.map +1 -1
  54. package/handlers/download/byExactKey.js +9 -9
  55. package/handlers/download/byExactKey.js.map +1 -1
  56. package/handlers/download/getS3Object.d.ts +2 -0
  57. package/handlers/download/getS3Object.js +39 -24
  58. package/handlers/download/getS3Object.js.map +1 -1
  59. package/handlers/transform/index.js +5 -2
  60. package/handlers/transform/index.js.map +1 -1
  61. package/handlers/transform/transformImage.d.ts +5 -2
  62. package/handlers/transform/transformImage.js +7 -4
  63. package/handlers/transform/transformImage.js.map +1 -1
  64. package/handlers/transform/utils.js +2 -2
  65. package/handlers/transform/utils.js.map +1 -1
  66. package/index.d.ts +3 -2
  67. package/index.js +20 -36
  68. package/index.js.map +1 -1
  69. package/modelModifier/CmsModelModifier.d.ts +24 -0
  70. package/modelModifier/CmsModelModifier.js +59 -0
  71. package/modelModifier/CmsModelModifier.js.map +1 -0
  72. package/package.json +28 -27
  73. package/types/file.d.ts +5 -1
  74. package/types/file.js.map +1 -1
  75. package/types/file.lifecycle.d.ts +4 -0
  76. package/types/file.lifecycle.js.map +1 -1
  77. package/types.d.ts +28 -34
  78. package/types.js.map +1 -1
  79. package/createFileManager/checkBasePermissions.d.ts +0 -5
  80. package/createFileManager/checkBasePermissions.js +0 -24
  81. package/createFileManager/checkBasePermissions.js.map +0 -1
  82. package/plugins/crud/files/validation.d.ts +0 -3
  83. package/plugins/crud/files/validation.js +0 -41
  84. package/plugins/crud/files/validation.js.map +0 -1
  85. package/plugins/crud/files.crud.d.ts +0 -4
  86. package/plugins/crud/files.crud.js +0 -431
  87. package/plugins/crud/files.crud.js.map +0 -1
  88. package/plugins/crud/settings.crud.d.ts +0 -5
  89. package/plugins/crud/settings.crud.js +0 -116
  90. package/plugins/crud/settings.crud.js.map +0 -1
  91. package/plugins/crud/system.crud.d.ts +0 -4
  92. package/plugins/crud/system.crud.js +0 -153
  93. package/plugins/crud/system.crud.js.map +0 -1
  94. package/plugins/crud/utils/checkBasePermissions.d.ts +0 -5
  95. package/plugins/crud/utils/checkBasePermissions.js +0 -33
  96. package/plugins/crud/utils/checkBasePermissions.js.map +0 -1
  97. package/plugins/crud/utils/createFileModel.d.ts +0 -5
  98. package/plugins/crud/utils/createFileModel.js +0 -77
  99. package/plugins/crud/utils/createFileModel.js.map +0 -1
  100. package/plugins/crud/utils/lifecycleEvents.d.ts +0 -6
  101. package/plugins/crud/utils/lifecycleEvents.js +0 -38
  102. package/plugins/crud/utils/lifecycleEvents.js.map +0 -1
  103. package/plugins/definitions/FilePhysicalStoragePlugin.d.ts +0 -21
  104. package/plugins/definitions/FilePhysicalStoragePlugin.js +0 -42
  105. package/plugins/definitions/FilePhysicalStoragePlugin.js.map +0 -1
  106. package/plugins/definitions/FilePlugin.d.ts +0 -136
  107. package/plugins/definitions/FilePlugin.js +0 -70
  108. package/plugins/definitions/FilePlugin.js.map +0 -1
  109. package/plugins/definitions/FileStorageTransformPlugin.d.ts +0 -34
  110. package/plugins/definitions/FileStorageTransformPlugin.js +0 -51
  111. package/plugins/definitions/FileStorageTransformPlugin.js.map +0 -1
  112. package/plugins/definitions/FilesStorageOperationsProviderPlugin.d.ts +0 -9
  113. package/plugins/definitions/FilesStorageOperationsProviderPlugin.js +0 -17
  114. package/plugins/definitions/FilesStorageOperationsProviderPlugin.js.map +0 -1
  115. package/plugins/definitions/InstallationPlugin.d.ts +0 -19
  116. package/plugins/definitions/InstallationPlugin.js +0 -42
  117. package/plugins/definitions/InstallationPlugin.js.map +0 -1
  118. package/plugins/definitions/SettingsStorageOperationsProviderPlugin.d.ts +0 -9
  119. package/plugins/definitions/SettingsStorageOperationsProviderPlugin.js +0 -17
  120. package/plugins/definitions/SettingsStorageOperationsProviderPlugin.js.map +0 -1
  121. package/plugins/definitions/SystemStorageOperationsProviderPlugin.d.ts +0 -9
  122. package/plugins/definitions/SystemStorageOperationsProviderPlugin.js +0 -17
  123. package/plugins/definitions/SystemStorageOperationsProviderPlugin.js.map +0 -1
  124. package/plugins/graphql.d.ts +0 -4
  125. package/plugins/graphql.js +0 -290
  126. package/plugins/graphql.js.map +0 -1
  127. package/plugins/storage/FileStorage.d.ts +0 -30
  128. package/plugins/storage/FileStorage.js +0 -103
  129. package/plugins/storage/FileStorage.js.map +0 -1
  130. package/plugins/storage/index.d.ts +0 -4
  131. package/plugins/storage/index.js +0 -26
  132. package/plugins/storage/index.js.map +0 -1
  133. package/utils.d.ts +0 -4
  134. package/utils.js +0 -16
  135. package/utils.js.map +0 -1
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.createTransformFilePlugins = void 0;
9
9
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
10
  var _s = _interopRequireDefault(require("aws-sdk/clients/s3"));
11
- var _transformImage = _interopRequireDefault(require("./transformImage"));
11
+ var _transformImage = require("./transformImage");
12
12
  var _optimizeImage = _interopRequireDefault(require("./optimizeImage"));
13
13
  var _utils = require("../utils");
14
14
  var newUtils = _interopRequireWildcard(require("./utils"));
@@ -65,9 +65,12 @@ const createTransformFilePlugins = () => {
65
65
  }
66
66
 
67
67
  // 3. If transformations requested, apply them in save it into the bucket.
68
+ const isAnimated = key.endsWith(".gif") || key.endsWith(".webp");
68
69
  await s3.putObject((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params.optimizedTransformed), {}, {
69
70
  ContentType: optimizedImageObject.ContentType,
70
- Body: await (0, _transformImage.default)(optimizedImageObject.Body, transformations)
71
+ Body: await (0, _transformImage.transformImage)(optimizedImageObject.Body, transformations, {
72
+ animated: isAnimated
73
+ })
71
74
  })).promise();
72
75
  return {
73
76
  error: false,
@@ -1 +1 @@
1
- {"version":3,"names":["createTransformFilePlugins","createEvent","payload","body","key","transformations","env","getEnvironment","s3","S3","region","optimizedImageObject","utils","includes","newUtils","legacyUtils","params","initial","getObjectParams","optimized","getImageKey","optimizedTransformed","getObject","promise","e","putObject","ContentType","Body","optimizeImage","error","message","transformImage","ex","console","JSON","stringify","code","data"],"sources":["index.ts"],"sourcesContent":["import S3 from \"aws-sdk/clients/s3\";\nimport transformImage from \"./transformImage\";\nimport optimizeImage from \"./optimizeImage\";\nimport { getEnvironment, getObjectParams } from \"../utils\";\nimport * as newUtils from \"./utils\";\nimport * as legacyUtils from \"./legacyUtils\";\nimport { TransformHandlerEventPayload } from \"~/handlers/types\";\nimport { createEvent } from \"@webiny/handler\";\n\nexport const createTransformFilePlugins = () => {\n return [\n createEvent<TransformHandlerEventPayload>(async ({ payload }) => {\n const { body } = payload;\n const { key, transformations } = body;\n try {\n const env = getEnvironment();\n const s3 = new S3({ region: env.region });\n\n let optimizedImageObject: S3.Types.GetObjectOutput;\n\n const utils = key.includes(\"/\") ? newUtils : legacyUtils;\n\n const params = {\n initial: getObjectParams(key),\n optimized: getObjectParams(utils.getImageKey({ key })),\n optimizedTransformed: getObjectParams(\n utils.getImageKey({ key, transformations })\n )\n };\n\n // 1. Get optimized image.\n try {\n optimizedImageObject = await s3.getObject(params.optimized).promise();\n } catch (e) {\n // If not found, try to create it by loading the initially uploaded image.\n optimizedImageObject = await s3.getObject(params.initial).promise();\n\n await s3\n .putObject({\n ...params.optimized,\n ContentType: optimizedImageObject.ContentType,\n Body: await optimizeImage(\n optimizedImageObject.Body as Buffer,\n optimizedImageObject.ContentType as string\n )\n })\n .promise();\n\n optimizedImageObject = await s3.getObject(params.optimized).promise();\n }\n\n // 2. If no transformations requested, just exit.\n if (!transformations) {\n return {\n error: false,\n message: \"\"\n };\n }\n\n // 3. If transformations requested, apply them in save it into the bucket.\n await s3\n .putObject({\n ...params.optimizedTransformed,\n ContentType: optimizedImageObject.ContentType,\n Body: await transformImage(\n optimizedImageObject.Body as Buffer,\n transformations\n )\n })\n .promise();\n\n return {\n error: false,\n message: \"\"\n };\n } catch (ex) {\n console.error(\n JSON.stringify({\n message: ex.message,\n code: ex.code,\n data: ex.data\n })\n );\n return {\n error: true,\n message: ex.message\n };\n }\n })\n ];\n};\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEO,MAAMA,0BAA0B,GAAG,MAAM;EAC5C,OAAO,CACH,IAAAC,oBAAW,EAA+B,OAAO;IAAEC;EAAQ,CAAC,KAAK;IAC7D,MAAM;MAAEC;IAAK,CAAC,GAAGD,OAAO;IACxB,MAAM;MAAEE,GAAG;MAAEC;IAAgB,CAAC,GAAGF,IAAI;IACrC,IAAI;MACA,MAAMG,GAAG,GAAG,IAAAC,qBAAc,GAAE;MAC5B,MAAMC,EAAE,GAAG,IAAIC,UAAE,CAAC;QAAEC,MAAM,EAAEJ,GAAG,CAACI;MAAO,CAAC,CAAC;MAEzC,IAAIC,oBAA8C;MAElD,MAAMC,KAAK,GAAGR,GAAG,CAACS,QAAQ,CAAC,GAAG,CAAC,GAAGC,QAAQ,GAAGC,WAAW;MAExD,MAAMC,MAAM,GAAG;QACXC,OAAO,EAAE,IAAAC,sBAAe,EAACd,GAAG,CAAC;QAC7Be,SAAS,EAAE,IAAAD,sBAAe,EAACN,KAAK,CAACQ,WAAW,CAAC;UAAEhB;QAAI,CAAC,CAAC,CAAC;QACtDiB,oBAAoB,EAAE,IAAAH,sBAAe,EACjCN,KAAK,CAACQ,WAAW,CAAC;UAAEhB,GAAG;UAAEC;QAAgB,CAAC,CAAC;MAEnD,CAAC;;MAED;MACA,IAAI;QACAM,oBAAoB,GAAG,MAAMH,EAAE,CAACc,SAAS,CAACN,MAAM,CAACG,SAAS,CAAC,CAACI,OAAO,EAAE;MACzE,CAAC,CAAC,OAAOC,CAAC,EAAE;QACR;QACAb,oBAAoB,GAAG,MAAMH,EAAE,CAACc,SAAS,CAACN,MAAM,CAACC,OAAO,CAAC,CAACM,OAAO,EAAE;QAEnE,MAAMf,EAAE,CACHiB,SAAS,6DACHT,MAAM,CAACG,SAAS;UACnBO,WAAW,EAAEf,oBAAoB,CAACe,WAAW;UAC7CC,IAAI,EAAE,MAAM,IAAAC,sBAAa,EACrBjB,oBAAoB,CAACgB,IAAI,EACzBhB,oBAAoB,CAACe,WAAW;QACnC,GACH,CACDH,OAAO,EAAE;QAEdZ,oBAAoB,GAAG,MAAMH,EAAE,CAACc,SAAS,CAACN,MAAM,CAACG,SAAS,CAAC,CAACI,OAAO,EAAE;MACzE;;MAEA;MACA,IAAI,CAAClB,eAAe,EAAE;QAClB,OAAO;UACHwB,KAAK,EAAE,KAAK;UACZC,OAAO,EAAE;QACb,CAAC;MACL;;MAEA;MACA,MAAMtB,EAAE,CACHiB,SAAS,6DACHT,MAAM,CAACK,oBAAoB;QAC9BK,WAAW,EAAEf,oBAAoB,CAACe,WAAW;QAC7CC,IAAI,EAAE,MAAM,IAAAI,uBAAc,EACtBpB,oBAAoB,CAACgB,IAAI,EACzBtB,eAAe;MAClB,GACH,CACDkB,OAAO,EAAE;MAEd,OAAO;QACHM,KAAK,EAAE,KAAK;QACZC,OAAO,EAAE;MACb,CAAC;IACL,CAAC,CAAC,OAAOE,EAAE,EAAE;MACTC,OAAO,CAACJ,KAAK,CACTK,IAAI,CAACC,SAAS,CAAC;QACXL,OAAO,EAAEE,EAAE,CAACF,OAAO;QACnBM,IAAI,EAAEJ,EAAE,CAACI,IAAI;QACbC,IAAI,EAAEL,EAAE,CAACK;MACb,CAAC,CAAC,CACL;MACD,OAAO;QACHR,KAAK,EAAE,IAAI;QACXC,OAAO,EAAEE,EAAE,CAACF;MAChB,CAAC;IACL;EACJ,CAAC,CAAC,CACL;AACL,CAAC;AAAC"}
1
+ {"version":3,"names":["createTransformFilePlugins","createEvent","payload","body","key","transformations","env","getEnvironment","s3","S3","region","optimizedImageObject","utils","includes","newUtils","legacyUtils","params","initial","getObjectParams","optimized","getImageKey","optimizedTransformed","getObject","promise","e","putObject","ContentType","Body","optimizeImage","error","message","isAnimated","endsWith","transformImage","animated","ex","console","JSON","stringify","code","data"],"sources":["index.ts"],"sourcesContent":["import S3 from \"aws-sdk/clients/s3\";\nimport { transformImage } from \"./transformImage\";\nimport optimizeImage from \"./optimizeImage\";\nimport { getEnvironment, getObjectParams } from \"../utils\";\nimport * as newUtils from \"./utils\";\nimport * as legacyUtils from \"./legacyUtils\";\nimport { TransformHandlerEventPayload } from \"~/handlers/types\";\nimport { createEvent } from \"@webiny/handler\";\n\nexport const createTransformFilePlugins = () => {\n return [\n createEvent<TransformHandlerEventPayload>(async ({ payload }) => {\n const { body } = payload;\n const { key, transformations } = body;\n try {\n const env = getEnvironment();\n const s3 = new S3({ region: env.region });\n\n let optimizedImageObject: S3.Types.GetObjectOutput;\n\n const utils = key.includes(\"/\") ? newUtils : legacyUtils;\n\n const params = {\n initial: getObjectParams(key),\n optimized: getObjectParams(utils.getImageKey({ key })),\n optimizedTransformed: getObjectParams(\n utils.getImageKey({ key, transformations })\n )\n };\n\n // 1. Get optimized image.\n try {\n optimizedImageObject = await s3.getObject(params.optimized).promise();\n } catch (e) {\n // If not found, try to create it by loading the initially uploaded image.\n optimizedImageObject = await s3.getObject(params.initial).promise();\n\n await s3\n .putObject({\n ...params.optimized,\n ContentType: optimizedImageObject.ContentType,\n Body: await optimizeImage(\n optimizedImageObject.Body as Buffer,\n optimizedImageObject.ContentType as string\n )\n })\n .promise();\n\n optimizedImageObject = await s3.getObject(params.optimized).promise();\n }\n\n // 2. If no transformations requested, just exit.\n if (!transformations) {\n return {\n error: false,\n message: \"\"\n };\n }\n\n // 3. If transformations requested, apply them in save it into the bucket.\n const isAnimated = key.endsWith(\".gif\") || key.endsWith(\".webp\");\n\n await s3\n .putObject({\n ...params.optimizedTransformed,\n ContentType: optimizedImageObject.ContentType,\n Body: await transformImage(\n optimizedImageObject.Body as Buffer,\n transformations,\n { animated: isAnimated }\n )\n })\n .promise();\n\n return {\n error: false,\n message: \"\"\n };\n } catch (ex) {\n console.error(\n JSON.stringify({\n message: ex.message,\n code: ex.code,\n data: ex.data\n })\n );\n return {\n error: true,\n message: ex.message\n };\n }\n })\n ];\n};\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEO,MAAMA,0BAA0B,GAAG,MAAM;EAC5C,OAAO,CACH,IAAAC,oBAAW,EAA+B,OAAO;IAAEC;EAAQ,CAAC,KAAK;IAC7D,MAAM;MAAEC;IAAK,CAAC,GAAGD,OAAO;IACxB,MAAM;MAAEE,GAAG;MAAEC;IAAgB,CAAC,GAAGF,IAAI;IACrC,IAAI;MACA,MAAMG,GAAG,GAAG,IAAAC,qBAAc,GAAE;MAC5B,MAAMC,EAAE,GAAG,IAAIC,UAAE,CAAC;QAAEC,MAAM,EAAEJ,GAAG,CAACI;MAAO,CAAC,CAAC;MAEzC,IAAIC,oBAA8C;MAElD,MAAMC,KAAK,GAAGR,GAAG,CAACS,QAAQ,CAAC,GAAG,CAAC,GAAGC,QAAQ,GAAGC,WAAW;MAExD,MAAMC,MAAM,GAAG;QACXC,OAAO,EAAE,IAAAC,sBAAe,EAACd,GAAG,CAAC;QAC7Be,SAAS,EAAE,IAAAD,sBAAe,EAACN,KAAK,CAACQ,WAAW,CAAC;UAAEhB;QAAI,CAAC,CAAC,CAAC;QACtDiB,oBAAoB,EAAE,IAAAH,sBAAe,EACjCN,KAAK,CAACQ,WAAW,CAAC;UAAEhB,GAAG;UAAEC;QAAgB,CAAC,CAAC;MAEnD,CAAC;;MAED;MACA,IAAI;QACAM,oBAAoB,GAAG,MAAMH,EAAE,CAACc,SAAS,CAACN,MAAM,CAACG,SAAS,CAAC,CAACI,OAAO,EAAE;MACzE,CAAC,CAAC,OAAOC,CAAC,EAAE;QACR;QACAb,oBAAoB,GAAG,MAAMH,EAAE,CAACc,SAAS,CAACN,MAAM,CAACC,OAAO,CAAC,CAACM,OAAO,EAAE;QAEnE,MAAMf,EAAE,CACHiB,SAAS,6DACHT,MAAM,CAACG,SAAS;UACnBO,WAAW,EAAEf,oBAAoB,CAACe,WAAW;UAC7CC,IAAI,EAAE,MAAM,IAAAC,sBAAa,EACrBjB,oBAAoB,CAACgB,IAAI,EACzBhB,oBAAoB,CAACe,WAAW;QACnC,GACH,CACDH,OAAO,EAAE;QAEdZ,oBAAoB,GAAG,MAAMH,EAAE,CAACc,SAAS,CAACN,MAAM,CAACG,SAAS,CAAC,CAACI,OAAO,EAAE;MACzE;;MAEA;MACA,IAAI,CAAClB,eAAe,EAAE;QAClB,OAAO;UACHwB,KAAK,EAAE,KAAK;UACZC,OAAO,EAAE;QACb,CAAC;MACL;;MAEA;MACA,MAAMC,UAAU,GAAG3B,GAAG,CAAC4B,QAAQ,CAAC,MAAM,CAAC,IAAI5B,GAAG,CAAC4B,QAAQ,CAAC,OAAO,CAAC;MAEhE,MAAMxB,EAAE,CACHiB,SAAS,6DACHT,MAAM,CAACK,oBAAoB;QAC9BK,WAAW,EAAEf,oBAAoB,CAACe,WAAW;QAC7CC,IAAI,EAAE,MAAM,IAAAM,8BAAc,EACtBtB,oBAAoB,CAACgB,IAAI,EACzBtB,eAAe,EACf;UAAE6B,QAAQ,EAAEH;QAAW,CAAC;MAC3B,GACH,CACDR,OAAO,EAAE;MAEd,OAAO;QACHM,KAAK,EAAE,KAAK;QACZC,OAAO,EAAE;MACb,CAAC;IACL,CAAC,CAAC,OAAOK,EAAE,EAAE;MACTC,OAAO,CAACP,KAAK,CACTQ,IAAI,CAACC,SAAS,CAAC;QACXR,OAAO,EAAEK,EAAE,CAACL,OAAO;QACnBS,IAAI,EAAEJ,EAAE,CAACI,IAAI;QACbC,IAAI,EAAEL,EAAE,CAACK;MACb,CAAC,CAAC,CACL;MACD,OAAO;QACHX,KAAK,EAAE,IAAI;QACXC,OAAO,EAAEK,EAAE,CAACL;MAChB,CAAC;IACL;EACJ,CAAC,CAAC,CACL;AACL,CAAC;AAAC"}
@@ -2,9 +2,12 @@ import { Body } from "aws-sdk/clients/s3";
2
2
  interface Transformation {
3
3
  width: string;
4
4
  }
5
+ export interface TransformOptions {
6
+ animated?: boolean;
7
+ }
5
8
  /**
6
9
  * Only processing "width" at the moment.
7
10
  * Check "sanitizeImageTransformations.js" to allow additional image processing transformations.
8
11
  */
9
- declare const _default: (buffer: Body, transformations: Transformation) => Promise<Body>;
10
- export default _default;
12
+ export declare const transformImage: (buffer: Body, transformations: Transformation, options?: TransformOptions) => Promise<Body>;
13
+ export {};
@@ -4,22 +4,25 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = void 0;
7
+ exports.transformImage = void 0;
8
8
  var _sharp = _interopRequireDefault(require("sharp"));
9
9
  /**
10
10
  * Sharp is included in the AWS Lambda layer
11
11
  */
12
12
  // @ts-ignore
13
+
13
14
  /**
14
15
  * Only processing "width" at the moment.
15
16
  * Check "sanitizeImageTransformations.js" to allow additional image processing transformations.
16
17
  */
17
- var _default = async (buffer, transformations) => {
18
+ const transformImage = async (buffer, transformations, options = {}) => {
18
19
  const {
19
20
  width
20
21
  } = transformations;
21
- return await (0, _sharp.default)(buffer).resize({
22
+ return await (0, _sharp.default)(buffer, {
23
+ animated: options.animated ?? false
24
+ }).resize({
22
25
  width
23
26
  }).toBuffer();
24
27
  };
25
- exports.default = _default;
28
+ exports.transformImage = transformImage;
@@ -1 +1 @@
1
- {"version":3,"names":["buffer","transformations","width","sharp","resize","toBuffer"],"sources":["transformImage.ts"],"sourcesContent":["/**\n * Sharp is included in the AWS Lambda layer\n */\n// @ts-ignore\nimport sharp from \"sharp\";\nimport { Body } from \"aws-sdk/clients/s3\";\n\ninterface Transformation {\n width: string;\n}\n/**\n * Only processing \"width\" at the moment.\n * Check \"sanitizeImageTransformations.js\" to allow additional image processing transformations.\n */\nexport default async (buffer: Body, transformations: Transformation): Promise<Body> => {\n const { width } = transformations;\n return await sharp(buffer).resize({ width }).toBuffer();\n};\n"],"mappings":";;;;;;;AAIA;AAJA;AACA;AACA;AACA;AAOA;AACA;AACA;AACA;AAHA,eAIe,OAAOA,MAAY,EAAEC,eAA+B,KAAoB;EACnF,MAAM;IAAEC;EAAM,CAAC,GAAGD,eAAe;EACjC,OAAO,MAAM,IAAAE,cAAK,EAACH,MAAM,CAAC,CAACI,MAAM,CAAC;IAAEF;EAAM,CAAC,CAAC,CAACG,QAAQ,EAAE;AAC3D,CAAC;AAAA"}
1
+ {"version":3,"names":["transformImage","buffer","transformations","options","width","sharp","animated","resize","toBuffer"],"sources":["transformImage.ts"],"sourcesContent":["/**\n * Sharp is included in the AWS Lambda layer\n */\n// @ts-ignore\nimport sharp from \"sharp\";\nimport { Body } from \"aws-sdk/clients/s3\";\n\ninterface Transformation {\n width: string;\n}\n\nexport interface TransformOptions {\n animated?: boolean;\n}\n\n/**\n * Only processing \"width\" at the moment.\n * Check \"sanitizeImageTransformations.js\" to allow additional image processing transformations.\n */\nexport const transformImage = async (\n buffer: Body,\n transformations: Transformation,\n options: TransformOptions = {}\n): Promise<Body> => {\n const { width } = transformations;\n return await sharp(buffer, { animated: options.animated ?? false })\n .resize({ width })\n .toBuffer();\n};\n"],"mappings":";;;;;;;AAIA;AAJA;AACA;AACA;AACA;;AAYA;AACA;AACA;AACA;AACO,MAAMA,cAAc,GAAG,OAC1BC,MAAY,EACZC,eAA+B,EAC/BC,OAAyB,GAAG,CAAC,CAAC,KACd;EAChB,MAAM;IAAEC;EAAM,CAAC,GAAGF,eAAe;EACjC,OAAO,MAAM,IAAAG,cAAK,EAACJ,MAAM,EAAE;IAAEK,QAAQ,EAAEH,OAAO,CAACG,QAAQ,IAAI;EAAM,CAAC,CAAC,CAC9DC,MAAM,CAAC;IAAEH;EAAM,CAAC,CAAC,CACjBI,QAAQ,EAAE;AACnB,CAAC;AAAC"}
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.getOptimizedTransformedImageKeyPrefix = exports.getOptimizedImageKeyPrefix = exports.getImageKey = exports.SUPPORTED_TRANSFORMABLE_IMAGES = exports.SUPPORTED_IMAGES = exports.OPTIMIZED_TRANSFORMED_IMAGE_PREFIX = exports.OPTIMIZED_IMAGE_PREFIX = void 0;
8
8
  var _objectHash = _interopRequireDefault(require("object-hash"));
9
- const SUPPORTED_IMAGES = [".jpg", ".jpeg", ".png", ".svg", ".gif"];
9
+ const SUPPORTED_IMAGES = [".jpg", ".jpeg", ".png", ".svg", ".gif", ".webp"];
10
10
  exports.SUPPORTED_IMAGES = SUPPORTED_IMAGES;
11
- const SUPPORTED_TRANSFORMABLE_IMAGES = [".jpg", ".jpeg", ".png"];
11
+ const SUPPORTED_TRANSFORMABLE_IMAGES = [".jpg", ".jpeg", ".png", ".gif", ".webp"];
12
12
  exports.SUPPORTED_TRANSFORMABLE_IMAGES = SUPPORTED_TRANSFORMABLE_IMAGES;
13
13
  const OPTIMIZED_TRANSFORMED_IMAGE_PREFIX = "img-o-t-";
14
14
  exports.OPTIMIZED_TRANSFORMED_IMAGE_PREFIX = OPTIMIZED_TRANSFORMED_IMAGE_PREFIX;
@@ -1 +1 @@
1
- {"version":3,"names":["SUPPORTED_IMAGES","SUPPORTED_TRANSFORMABLE_IMAGES","OPTIMIZED_TRANSFORMED_IMAGE_PREFIX","OPTIMIZED_IMAGE_PREFIX","getOptimizedImageKeyPrefix","key","id","name","split","getOptimizedTransformedImageKeyPrefix","transformationsHash","getImageKey","transformations","objectHash"],"sources":["utils.ts"],"sourcesContent":["import objectHash from \"object-hash\";\n\nconst SUPPORTED_IMAGES = [\".jpg\", \".jpeg\", \".png\", \".svg\", \".gif\"];\nconst SUPPORTED_TRANSFORMABLE_IMAGES = [\".jpg\", \".jpeg\", \".png\"];\n\nconst OPTIMIZED_TRANSFORMED_IMAGE_PREFIX = \"img-o-t-\";\nconst OPTIMIZED_IMAGE_PREFIX = \"img-o-\";\n\nconst getOptimizedImageKeyPrefix = (key: string): string => {\n const [id, name] = key.split(\"/\");\n return `${id}/${OPTIMIZED_IMAGE_PREFIX}${name}`;\n};\n\nconst getOptimizedTransformedImageKeyPrefix = (\n key: string,\n transformationsHash: string\n): string => {\n const [id, name] = key.split(\"/\");\n return `${id}/${OPTIMIZED_TRANSFORMED_IMAGE_PREFIX}${transformationsHash}-${name}`;\n};\n\ninterface GetImageKeyParams {\n key: string;\n transformations?: any;\n}\n\nconst getImageKey = ({ key, transformations }: GetImageKeyParams): string => {\n if (!transformations) {\n return getOptimizedImageKeyPrefix(key);\n }\n\n return getOptimizedTransformedImageKeyPrefix(key, objectHash(transformations));\n};\n\nexport {\n SUPPORTED_IMAGES,\n SUPPORTED_TRANSFORMABLE_IMAGES,\n OPTIMIZED_TRANSFORMED_IMAGE_PREFIX,\n OPTIMIZED_IMAGE_PREFIX,\n getImageKey,\n getOptimizedImageKeyPrefix,\n getOptimizedTransformedImageKeyPrefix\n};\n"],"mappings":";;;;;;;AAAA;AAEA,MAAMA,gBAAgB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AAAC;AACnE,MAAMC,8BAA8B,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;AAAC;AAEjE,MAAMC,kCAAkC,GAAG,UAAU;AAAC;AACtD,MAAMC,sBAAsB,GAAG,QAAQ;AAAC;AAExC,MAAMC,0BAA0B,GAAIC,GAAW,IAAa;EACxD,MAAM,CAACC,EAAE,EAAEC,IAAI,CAAC,GAAGF,GAAG,CAACG,KAAK,CAAC,GAAG,CAAC;EACjC,OAAQ,GAAEF,EAAG,IAAGH,sBAAuB,GAAEI,IAAK,EAAC;AACnD,CAAC;AAAC;AAEF,MAAME,qCAAqC,GAAG,CAC1CJ,GAAW,EACXK,mBAA2B,KAClB;EACT,MAAM,CAACJ,EAAE,EAAEC,IAAI,CAAC,GAAGF,GAAG,CAACG,KAAK,CAAC,GAAG,CAAC;EACjC,OAAQ,GAAEF,EAAG,IAAGJ,kCAAmC,GAAEQ,mBAAoB,IAAGH,IAAK,EAAC;AACtF,CAAC;AAAC;AAOF,MAAMI,WAAW,GAAG,CAAC;EAAEN,GAAG;EAAEO;AAAmC,CAAC,KAAa;EACzE,IAAI,CAACA,eAAe,EAAE;IAClB,OAAOR,0BAA0B,CAACC,GAAG,CAAC;EAC1C;EAEA,OAAOI,qCAAqC,CAACJ,GAAG,EAAE,IAAAQ,mBAAU,EAACD,eAAe,CAAC,CAAC;AAClF,CAAC;AAAC"}
1
+ {"version":3,"names":["SUPPORTED_IMAGES","SUPPORTED_TRANSFORMABLE_IMAGES","OPTIMIZED_TRANSFORMED_IMAGE_PREFIX","OPTIMIZED_IMAGE_PREFIX","getOptimizedImageKeyPrefix","key","id","name","split","getOptimizedTransformedImageKeyPrefix","transformationsHash","getImageKey","transformations","objectHash"],"sources":["utils.ts"],"sourcesContent":["import objectHash from \"object-hash\";\n\nconst SUPPORTED_IMAGES = [\".jpg\", \".jpeg\", \".png\", \".svg\", \".gif\", \".webp\"];\nconst SUPPORTED_TRANSFORMABLE_IMAGES = [\".jpg\", \".jpeg\", \".png\", \".gif\", \".webp\"];\n\nconst OPTIMIZED_TRANSFORMED_IMAGE_PREFIX = \"img-o-t-\";\nconst OPTIMIZED_IMAGE_PREFIX = \"img-o-\";\n\nconst getOptimizedImageKeyPrefix = (key: string): string => {\n const [id, name] = key.split(\"/\");\n return `${id}/${OPTIMIZED_IMAGE_PREFIX}${name}`;\n};\n\nconst getOptimizedTransformedImageKeyPrefix = (\n key: string,\n transformationsHash: string\n): string => {\n const [id, name] = key.split(\"/\");\n return `${id}/${OPTIMIZED_TRANSFORMED_IMAGE_PREFIX}${transformationsHash}-${name}`;\n};\n\ninterface GetImageKeyParams {\n key: string;\n transformations?: any;\n}\n\nconst getImageKey = ({ key, transformations }: GetImageKeyParams): string => {\n if (!transformations) {\n return getOptimizedImageKeyPrefix(key);\n }\n\n return getOptimizedTransformedImageKeyPrefix(key, objectHash(transformations));\n};\n\nexport {\n SUPPORTED_IMAGES,\n SUPPORTED_TRANSFORMABLE_IMAGES,\n OPTIMIZED_TRANSFORMED_IMAGE_PREFIX,\n OPTIMIZED_IMAGE_PREFIX,\n getImageKey,\n getOptimizedImageKeyPrefix,\n getOptimizedTransformedImageKeyPrefix\n};\n"],"mappings":";;;;;;;AAAA;AAEA,MAAMA,gBAAgB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;AAAC;AAC5E,MAAMC,8BAA8B,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;AAAC;AAElF,MAAMC,kCAAkC,GAAG,UAAU;AAAC;AACtD,MAAMC,sBAAsB,GAAG,QAAQ;AAAC;AAExC,MAAMC,0BAA0B,GAAIC,GAAW,IAAa;EACxD,MAAM,CAACC,EAAE,EAAEC,IAAI,CAAC,GAAGF,GAAG,CAACG,KAAK,CAAC,GAAG,CAAC;EACjC,OAAQ,GAAEF,EAAG,IAAGH,sBAAuB,GAAEI,IAAK,EAAC;AACnD,CAAC;AAAC;AAEF,MAAME,qCAAqC,GAAG,CAC1CJ,GAAW,EACXK,mBAA2B,KAClB;EACT,MAAM,CAACJ,EAAE,EAAEC,IAAI,CAAC,GAAGF,GAAG,CAACG,KAAK,CAAC,GAAG,CAAC;EACjC,OAAQ,GAAEF,EAAG,IAAGJ,kCAAmC,GAAEQ,mBAAoB,IAAGH,IAAK,EAAC;AACtF,CAAC;AAAC;AAOF,MAAMI,WAAW,GAAG,CAAC;EAAEN,GAAG;EAAEO;AAAmC,CAAC,KAAa;EACzE,IAAI,CAACA,eAAe,EAAE;IAClB,OAAOR,0BAA0B,CAACC,GAAG,CAAC;EAC1C;EAEA,OAAOI,qCAAqC,CAACJ,GAAG,EAAE,IAAAQ,mBAAU,EAACD,eAAe,CAAC,CAAC;AAClF,CAAC;AAAC"}
package/index.d.ts CHANGED
@@ -2,5 +2,6 @@ import { ContextPlugin } from "@webiny/api";
2
2
  import { FileManagerConfig } from "./createFileManager";
3
3
  import { FileManagerContext } from "./types";
4
4
  export * from "./plugins";
5
- export declare const createFileManagerContext: (config: Pick<FileManagerConfig, "storageOperations">) => ContextPlugin<FileManagerContext>;
6
- export declare const createFileManagerGraphQL: () => import("@webiny/handler-graphql").GraphQLSchemaPlugin<FileManagerContext>;
5
+ export declare const createFileManagerContext: ({ storageOperations }: Pick<FileManagerConfig, "storageOperations">) => ContextPlugin<FileManagerContext>;
6
+ export declare const createFileManagerGraphQL: () => (import("@webiny/handler-graphql").GraphQLSchemaPlugin<FileManagerContext> | ContextPlugin<FileManagerContext>)[];
7
+ export * from "./modelModifier/CmsModelModifier";
package/index.js CHANGED
@@ -1,6 +1,5 @@
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
  });
@@ -9,11 +8,9 @@ var _exportNames = {
9
8
  createFileManagerGraphQL: true
10
9
  };
11
10
  exports.createFileManagerGraphQL = exports.createFileManagerContext = void 0;
12
- var _error = _interopRequireDefault(require("@webiny/error"));
13
11
  var _api = require("@webiny/api");
14
- var _createFileManager = require("./createFileManager");
12
+ var _FileManagerContextSetup = require("./FileManagerContextSetup");
15
13
  var _graphql = require("./graphql");
16
- var _FileStorage = require("./storage/FileStorage");
17
14
  var _plugins = require("./plugins");
18
15
  Object.keys(_plugins).forEach(function (key) {
19
16
  if (key === "default" || key === "__esModule") return;
@@ -26,40 +23,27 @@ Object.keys(_plugins).forEach(function (key) {
26
23
  }
27
24
  });
28
25
  });
29
- const createFileManagerContext = config => {
30
- return new _api.ContextPlugin(async context => {
31
- const getLocaleCode = () => {
32
- const locale = context.i18n.getContentLocale();
33
- if (!locale) {
34
- throw new _error.default("Missing locale on context.i18n locale in File Manager API.", "LOCALE_ERROR");
35
- }
36
- return locale.code;
37
- };
38
- const getIdentity = () => {
39
- return context.security.getIdentity();
40
- };
41
- const getTenantId = () => {
42
- return context.tenancy.getCurrentTenant().id;
43
- };
44
- const getPermission = async name => {
45
- await context.i18n.checkI18NContentPermission();
46
- return context.security.getPermission(name);
47
- };
48
- if (config.storageOperations.beforeInit) {
49
- await config.storageOperations.beforeInit(context);
26
+ var _CmsModelModifier = require("./modelModifier/CmsModelModifier");
27
+ Object.keys(_CmsModelModifier).forEach(function (key) {
28
+ if (key === "default" || key === "__esModule") return;
29
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
30
+ if (key in exports && exports[key] === _CmsModelModifier[key]) return;
31
+ Object.defineProperty(exports, key, {
32
+ enumerable: true,
33
+ get: function () {
34
+ return _CmsModelModifier[key];
50
35
  }
51
- context.fileManager = (0, _createFileManager.createFileManager)({
52
- storageOperations: config.storageOperations,
53
- getTenantId,
54
- getLocaleCode,
55
- getIdentity,
56
- getPermission,
57
- storage: new _FileStorage.FileStorage({
58
- context
59
- }),
60
- WEBINY_VERSION: context.WEBINY_VERSION
61
- });
62
36
  });
37
+ });
38
+ const createFileManagerContext = ({
39
+ storageOperations
40
+ }) => {
41
+ const plugin = new _api.ContextPlugin(async context => {
42
+ const fmContext = new _FileManagerContextSetup.FileManagerContextSetup(context);
43
+ context.fileManager = await fmContext.setupContext(storageOperations);
44
+ });
45
+ plugin.name = "file-manager.createContext";
46
+ return plugin;
63
47
  };
64
48
  exports.createFileManagerContext = createFileManagerContext;
65
49
  const createFileManagerGraphQL = () => {
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["createFileManagerContext","config","ContextPlugin","context","getLocaleCode","locale","i18n","getContentLocale","WebinyError","code","getIdentity","security","getTenantId","tenancy","getCurrentTenant","id","getPermission","name","checkI18NContentPermission","storageOperations","beforeInit","fileManager","createFileManager","storage","FileStorage","WEBINY_VERSION","createFileManagerGraphQL","createGraphQLSchemaPlugin"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { SecurityPermission } from \"@webiny/api-security/types\";\nimport { FileManagerConfig, createFileManager } from \"~/createFileManager\";\nimport { FileManagerContext } from \"~/types\";\nimport { createGraphQLSchemaPlugin } from \"./graphql\";\nimport { FileStorage } from \"~/storage/FileStorage\";\n\nexport * from \"./plugins\";\n\nexport const createFileManagerContext = (config: Pick<FileManagerConfig, \"storageOperations\">) => {\n return new ContextPlugin<FileManagerContext>(async context => {\n const getLocaleCode = () => {\n const locale = context.i18n.getContentLocale();\n if (!locale) {\n throw new WebinyError(\n \"Missing locale on context.i18n locale in File Manager API.\",\n \"LOCALE_ERROR\"\n );\n }\n return locale.code;\n };\n\n const getIdentity = () => {\n return context.security.getIdentity();\n };\n\n const getTenantId = () => {\n return context.tenancy.getCurrentTenant().id;\n };\n\n const getPermission = async <T extends SecurityPermission = SecurityPermission>(\n name: string\n ): Promise<T | null> => {\n await context.i18n.checkI18NContentPermission();\n\n return context.security.getPermission(name);\n };\n\n if (config.storageOperations.beforeInit) {\n await config.storageOperations.beforeInit(context);\n }\n\n context.fileManager = createFileManager({\n storageOperations: config.storageOperations,\n getTenantId,\n getLocaleCode,\n getIdentity,\n getPermission,\n storage: new FileStorage({\n context\n }),\n WEBINY_VERSION: context.WEBINY_VERSION\n });\n });\n};\n\nexport const createFileManagerGraphQL = () => {\n return createGraphQLSchemaPlugin();\n};\n"],"mappings":";;;;;;;;;;;AAAA;AACA;AAEA;AAEA;AACA;AAEA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAEO,MAAMA,wBAAwB,GAAIC,MAAoD,IAAK;EAC9F,OAAO,IAAIC,kBAAa,CAAqB,MAAMC,OAAO,IAAI;IAC1D,MAAMC,aAAa,GAAG,MAAM;MACxB,MAAMC,MAAM,GAAGF,OAAO,CAACG,IAAI,CAACC,gBAAgB,EAAE;MAC9C,IAAI,CAACF,MAAM,EAAE;QACT,MAAM,IAAIG,cAAW,CACjB,4DAA4D,EAC5D,cAAc,CACjB;MACL;MACA,OAAOH,MAAM,CAACI,IAAI;IACtB,CAAC;IAED,MAAMC,WAAW,GAAG,MAAM;MACtB,OAAOP,OAAO,CAACQ,QAAQ,CAACD,WAAW,EAAE;IACzC,CAAC;IAED,MAAME,WAAW,GAAG,MAAM;MACtB,OAAOT,OAAO,CAACU,OAAO,CAACC,gBAAgB,EAAE,CAACC,EAAE;IAChD,CAAC;IAED,MAAMC,aAAa,GAAG,MAClBC,IAAY,IACQ;MACpB,MAAMd,OAAO,CAACG,IAAI,CAACY,0BAA0B,EAAE;MAE/C,OAAOf,OAAO,CAACQ,QAAQ,CAACK,aAAa,CAACC,IAAI,CAAC;IAC/C,CAAC;IAED,IAAIhB,MAAM,CAACkB,iBAAiB,CAACC,UAAU,EAAE;MACrC,MAAMnB,MAAM,CAACkB,iBAAiB,CAACC,UAAU,CAACjB,OAAO,CAAC;IACtD;IAEAA,OAAO,CAACkB,WAAW,GAAG,IAAAC,oCAAiB,EAAC;MACpCH,iBAAiB,EAAElB,MAAM,CAACkB,iBAAiB;MAC3CP,WAAW;MACXR,aAAa;MACbM,WAAW;MACXM,aAAa;MACbO,OAAO,EAAE,IAAIC,wBAAW,CAAC;QACrBrB;MACJ,CAAC,CAAC;MACFsB,cAAc,EAAEtB,OAAO,CAACsB;IAC5B,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAAC;AAEK,MAAMC,wBAAwB,GAAG,MAAM;EAC1C,OAAO,IAAAC,kCAAyB,GAAE;AACtC,CAAC;AAAC"}
1
+ {"version":3,"names":["createFileManagerContext","storageOperations","plugin","ContextPlugin","context","fmContext","FileManagerContextSetup","fileManager","setupContext","name","createFileManagerGraphQL","createGraphQLSchemaPlugin"],"sources":["index.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport { FileManagerConfig } from \"~/createFileManager\";\nimport { FileManagerContext } from \"~/types\";\nimport { FileManagerContextSetup } from \"./FileManagerContextSetup\";\nimport { createGraphQLSchemaPlugin } from \"./graphql\";\n\nexport * from \"./plugins\";\n\nexport const createFileManagerContext = ({\n storageOperations\n}: Pick<FileManagerConfig, \"storageOperations\">) => {\n const plugin = new ContextPlugin<FileManagerContext>(async context => {\n const fmContext = new FileManagerContextSetup(context);\n context.fileManager = await fmContext.setupContext(storageOperations);\n });\n\n plugin.name = \"file-manager.createContext\";\n\n return plugin;\n};\n\nexport const createFileManagerGraphQL = () => {\n return createGraphQLSchemaPlugin();\n};\n\nexport * from \"./modelModifier/CmsModelModifier\";\n"],"mappings":";;;;;;;;;;AAAA;AAGA;AACA;AAEA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAmBA;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AAjBO,MAAMA,wBAAwB,GAAG,CAAC;EACrCC;AAC0C,CAAC,KAAK;EAChD,MAAMC,MAAM,GAAG,IAAIC,kBAAa,CAAqB,MAAMC,OAAO,IAAI;IAClE,MAAMC,SAAS,GAAG,IAAIC,gDAAuB,CAACF,OAAO,CAAC;IACtDA,OAAO,CAACG,WAAW,GAAG,MAAMF,SAAS,CAACG,YAAY,CAACP,iBAAiB,CAAC;EACzE,CAAC,CAAC;EAEFC,MAAM,CAACO,IAAI,GAAG,4BAA4B;EAE1C,OAAOP,MAAM;AACjB,CAAC;AAAC;AAEK,MAAMQ,wBAAwB,GAAG,MAAM;EAC1C,OAAO,IAAAC,kCAAyB,GAAE;AACtC,CAAC;AAAC"}
@@ -0,0 +1,24 @@
1
+ import { Plugin } from "@webiny/plugins";
2
+ import { CmsModelField as BaseModelField } from "@webiny/api-headless-cms/types";
3
+ import { CmsPrivateModelFull } from "@webiny/api-headless-cms";
4
+ declare type CmsModelField = Omit<BaseModelField, "storageId">;
5
+ declare class CmsModelFieldsModifier {
6
+ private fields;
7
+ constructor(fields: BaseModelField[]);
8
+ addField(field: CmsModelField): void;
9
+ }
10
+ interface CmsModelModifierCallableParams {
11
+ modifier: CmsModelFieldsModifier;
12
+ }
13
+ interface CmsModelModifierCallable {
14
+ (params: CmsModelModifierCallableParams): Promise<void> | void;
15
+ }
16
+ export declare class CmsModelModifierPlugin extends Plugin {
17
+ static type: string;
18
+ private readonly modelId;
19
+ private readonly cb;
20
+ constructor(modelId: string, cb: CmsModelModifierCallable);
21
+ modifyModel(model: CmsPrivateModelFull): Promise<void>;
22
+ }
23
+ export declare const createFileModelModifier: (cb: CmsModelModifierCallable) => CmsModelModifierPlugin;
24
+ export {};
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createFileModelModifier = exports.CmsModelModifierPlugin = void 0;
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _plugins = require("@webiny/plugins");
11
+ var _file = require("../cmsFileStorage/file.model");
12
+ var _createModelField = require("../cmsFileStorage/createModelField");
13
+ class CmsModelFieldsModifier {
14
+ constructor(fields) {
15
+ (0, _defineProperty2.default)(this, "fields", void 0);
16
+ this.fields = fields;
17
+ }
18
+ addField(field) {
19
+ this.fields.push((0, _objectSpread2.default)((0, _objectSpread2.default)({}, field), {}, {
20
+ storageId: `${field.type}@${field.id}`
21
+ }));
22
+ }
23
+ }
24
+ class CmsModelModifierPlugin extends _plugins.Plugin {
25
+ constructor(modelId, cb) {
26
+ super();
27
+ (0, _defineProperty2.default)(this, "modelId", void 0);
28
+ (0, _defineProperty2.default)(this, "cb", void 0);
29
+ this.modelId = modelId;
30
+ this.cb = cb;
31
+ }
32
+ async modifyModel(model) {
33
+ if (model.modelId !== this.modelId) {
34
+ return;
35
+ }
36
+ let extensionsField = model.fields.find(field => field.fieldId === "extensions");
37
+ if (!extensionsField) {
38
+ extensionsField = (0, _createModelField.createModelField)({
39
+ label: "Extensions",
40
+ type: "object",
41
+ settings: {
42
+ layout: [],
43
+ fields: []
44
+ }
45
+ });
46
+ model.fields.push(extensionsField);
47
+ }
48
+ const modifier = new CmsModelFieldsModifier(extensionsField.settings.fields);
49
+ await this.cb({
50
+ modifier
51
+ });
52
+ }
53
+ }
54
+ exports.CmsModelModifierPlugin = CmsModelModifierPlugin;
55
+ (0, _defineProperty2.default)(CmsModelModifierPlugin, "type", "fm.cms-model-modifier");
56
+ const createFileModelModifier = cb => {
57
+ return new CmsModelModifierPlugin(_file.FILE_MODEL_ID, cb);
58
+ };
59
+ exports.createFileModelModifier = createFileModelModifier;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CmsModelFieldsModifier","constructor","fields","addField","field","push","storageId","type","id","CmsModelModifierPlugin","Plugin","modelId","cb","modifyModel","model","extensionsField","find","fieldId","createModelField","label","settings","layout","modifier","createFileModelModifier","FILE_MODEL_ID"],"sources":["CmsModelModifier.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { CmsModelField as BaseModelField } from \"@webiny/api-headless-cms/types\";\nimport { FILE_MODEL_ID } from \"~/cmsFileStorage/file.model\";\nimport { createModelField } from \"~/cmsFileStorage/createModelField\";\nimport { CmsPrivateModelFull } from \"@webiny/api-headless-cms\";\n\ntype CmsModelField = Omit<BaseModelField, \"storageId\">;\n\nclass CmsModelFieldsModifier {\n private fields: BaseModelField[];\n\n constructor(fields: BaseModelField[]) {\n this.fields = fields;\n }\n\n addField(field: CmsModelField) {\n this.fields.push({\n ...field,\n storageId: `${field.type}@${field.id}`\n });\n }\n}\n\ninterface CmsModelModifierCallableParams {\n modifier: CmsModelFieldsModifier;\n}\n\ninterface CmsModelModifierCallable {\n (params: CmsModelModifierCallableParams): Promise<void> | void;\n}\n\nexport class CmsModelModifierPlugin extends Plugin {\n public static override type = \"fm.cms-model-modifier\";\n private readonly modelId: string;\n private readonly cb: CmsModelModifierCallable;\n\n constructor(modelId: string, cb: CmsModelModifierCallable) {\n super();\n this.modelId = modelId;\n this.cb = cb;\n }\n\n async modifyModel(model: CmsPrivateModelFull): Promise<void> {\n if (model.modelId !== this.modelId) {\n return;\n }\n\n let extensionsField = model.fields.find(field => field.fieldId === \"extensions\");\n if (!extensionsField) {\n extensionsField = createModelField({\n label: \"Extensions\",\n type: \"object\",\n settings: {\n layout: [],\n fields: []\n }\n });\n model.fields.push(extensionsField);\n }\n\n const modifier = new CmsModelFieldsModifier(extensionsField.settings!.fields!);\n await this.cb({ modifier });\n }\n}\n\nexport const createFileModelModifier = (cb: CmsModelModifierCallable) => {\n return new CmsModelModifierPlugin(FILE_MODEL_ID, cb);\n};\n"],"mappings":";;;;;;;;;AAAA;AAEA;AACA;AAKA,MAAMA,sBAAsB,CAAC;EAGzBC,WAAW,CAACC,MAAwB,EAAE;IAAA;IAClC,IAAI,CAACA,MAAM,GAAGA,MAAM;EACxB;EAEAC,QAAQ,CAACC,KAAoB,EAAE;IAC3B,IAAI,CAACF,MAAM,CAACG,IAAI,6DACTD,KAAK;MACRE,SAAS,EAAG,GAAEF,KAAK,CAACG,IAAK,IAAGH,KAAK,CAACI,EAAG;IAAC,GACxC;EACN;AACJ;AAUO,MAAMC,sBAAsB,SAASC,eAAM,CAAC;EAK/CT,WAAW,CAACU,OAAe,EAAEC,EAA4B,EAAE;IACvD,KAAK,EAAE;IAAC;IAAA;IACR,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,EAAE,GAAGA,EAAE;EAChB;EAEA,MAAMC,WAAW,CAACC,KAA0B,EAAiB;IACzD,IAAIA,KAAK,CAACH,OAAO,KAAK,IAAI,CAACA,OAAO,EAAE;MAChC;IACJ;IAEA,IAAII,eAAe,GAAGD,KAAK,CAACZ,MAAM,CAACc,IAAI,CAACZ,KAAK,IAAIA,KAAK,CAACa,OAAO,KAAK,YAAY,CAAC;IAChF,IAAI,CAACF,eAAe,EAAE;MAClBA,eAAe,GAAG,IAAAG,kCAAgB,EAAC;QAC/BC,KAAK,EAAE,YAAY;QACnBZ,IAAI,EAAE,QAAQ;QACda,QAAQ,EAAE;UACNC,MAAM,EAAE,EAAE;UACVnB,MAAM,EAAE;QACZ;MACJ,CAAC,CAAC;MACFY,KAAK,CAACZ,MAAM,CAACG,IAAI,CAACU,eAAe,CAAC;IACtC;IAEA,MAAMO,QAAQ,GAAG,IAAItB,sBAAsB,CAACe,eAAe,CAACK,QAAQ,CAAElB,MAAM,CAAE;IAC9E,MAAM,IAAI,CAACU,EAAE,CAAC;MAAEU;IAAS,CAAC,CAAC;EAC/B;AACJ;AAAC;AAAA,8BAhCYb,sBAAsB,UACD,uBAAuB;AAiClD,MAAMc,uBAAuB,GAAIX,EAA4B,IAAK;EACrE,OAAO,IAAIH,sBAAsB,CAACe,mBAAa,EAAEZ,EAAE,CAAC;AACxD,CAAC;AAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-file-manager",
3
- "version": "0.0.0-unstable.c2780f51fe",
3
+ "version": "0.0.0-unstable.c7dec08bb0",
4
4
  "main": "index.js",
5
5
  "keywords": [
6
6
  "fm:base"
@@ -20,35 +20,36 @@
20
20
  "dependencies": {
21
21
  "@babel/runtime": "7.20.13",
22
22
  "@commodo/fields": "1.1.2-beta.20",
23
- "@webiny/api": "0.0.0-unstable.c2780f51fe",
24
- "@webiny/api-security": "0.0.0-unstable.c2780f51fe",
25
- "@webiny/api-tenancy": "0.0.0-unstable.c2780f51fe",
26
- "@webiny/error": "0.0.0-unstable.c2780f51fe",
27
- "@webiny/handler": "0.0.0-unstable.c2780f51fe",
28
- "@webiny/handler-aws": "0.0.0-unstable.c2780f51fe",
29
- "@webiny/handler-client": "0.0.0-unstable.c2780f51fe",
30
- "@webiny/handler-graphql": "0.0.0-unstable.c2780f51fe",
31
- "@webiny/plugins": "0.0.0-unstable.c2780f51fe",
32
- "@webiny/project-utils": "0.0.0-unstable.c2780f51fe",
33
- "@webiny/pubsub": "0.0.0-unstable.c2780f51fe",
34
- "@webiny/validation": "0.0.0-unstable.c2780f51fe",
23
+ "@webiny/api": "0.0.0-unstable.c7dec08bb0",
24
+ "@webiny/api-headless-cms": "0.0.0-unstable.c7dec08bb0",
25
+ "@webiny/api-security": "0.0.0-unstable.c7dec08bb0",
26
+ "@webiny/api-tenancy": "0.0.0-unstable.c7dec08bb0",
27
+ "@webiny/error": "0.0.0-unstable.c7dec08bb0",
28
+ "@webiny/handler": "0.0.0-unstable.c7dec08bb0",
29
+ "@webiny/handler-aws": "0.0.0-unstable.c7dec08bb0",
30
+ "@webiny/handler-client": "0.0.0-unstable.c7dec08bb0",
31
+ "@webiny/handler-graphql": "0.0.0-unstable.c7dec08bb0",
32
+ "@webiny/plugins": "0.0.0-unstable.c7dec08bb0",
33
+ "@webiny/project-utils": "0.0.0-unstable.c7dec08bb0",
34
+ "@webiny/pubsub": "0.0.0-unstable.c7dec08bb0",
35
+ "@webiny/validation": "0.0.0-unstable.c7dec08bb0",
35
36
  "aws-sdk": "2.1310.0",
37
+ "lodash": "4.17.21",
36
38
  "object-hash": "2.2.0"
37
39
  },
38
40
  "devDependencies": {
39
- "@babel/cli": "^7.19.3",
40
- "@babel/core": "^7.19.3",
41
- "@babel/plugin-proposal-object-rest-spread": "^7.16.0",
42
- "@babel/plugin-transform-runtime": "^7.16.4",
43
- "@babel/preset-env": "^7.19.4",
44
- "@babel/preset-typescript": "^7.18.6",
45
- "@webiny/api-i18n": "^0.0.0-unstable.c2780f51fe",
46
- "@webiny/api-i18n-ddb": "^0.0.0-unstable.c2780f51fe",
47
- "@webiny/cli": "^0.0.0-unstable.c2780f51fe",
48
- "jest": "^28.1.0",
49
- "mdbid": "^1.0.0",
50
- "rimraf": "^3.0.2",
51
- "ttypescript": "^1.5.12",
41
+ "@babel/cli": "7.20.7",
42
+ "@babel/core": "7.20.12",
43
+ "@babel/plugin-proposal-object-rest-spread": "7.20.7",
44
+ "@babel/plugin-transform-runtime": "7.19.6",
45
+ "@babel/preset-env": "7.20.2",
46
+ "@babel/preset-typescript": "7.18.6",
47
+ "@webiny/api-i18n": "0.0.0-unstable.c7dec08bb0",
48
+ "@webiny/cli": "0.0.0-unstable.c7dec08bb0",
49
+ "@webiny/utils": "0.0.0-unstable.c7dec08bb0",
50
+ "jest": "29.5.0",
51
+ "rimraf": "3.0.2",
52
+ "ttypescript": "1.5.15",
52
53
  "typescript": "4.7.4"
53
54
  },
54
55
  "publishConfig": {
@@ -70,5 +71,5 @@
70
71
  ]
71
72
  }
72
73
  },
73
- "gitHead": "c2780f51fe628e1ef0f6b55c2bce9b74d3470d79"
74
+ "gitHead": "c7dec08bb095467cca6a61381bd399d66b7bb147"
74
75
  }
package/types/file.d.ts CHANGED
@@ -5,9 +5,13 @@ export interface File {
5
5
  type: string;
6
6
  name: string;
7
7
  meta: Record<string, any>;
8
+ location: {
9
+ folderId: string;
10
+ };
8
11
  tags: string[];
9
12
  aliases: string[];
10
13
  createdOn: string;
14
+ savedOn: string;
11
15
  createdBy: CreatedBy;
12
16
  /**
13
17
  * Added with new storage operations refactoring.
@@ -16,7 +20,7 @@ export interface File {
16
20
  locale: string;
17
21
  webinyVersion: string;
18
22
  /**
19
- * User can add new fields to the File object so we must allow it in the types.
23
+ * User can add new fields to the File object, so we must allow it in the types.
20
24
  */
21
25
  [key: string]: any;
22
26
  }
package/types/file.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["file.ts"],"sourcesContent":["export interface File {\n id: string;\n key: string;\n size: number;\n type: string;\n name: string;\n meta: Record<string, any>;\n tags: string[];\n aliases: string[];\n createdOn: string;\n createdBy: CreatedBy;\n /**\n * Added with new storage operations refactoring.\n */\n tenant: string;\n locale: string;\n webinyVersion: string;\n /**\n * User can add new fields to the File object so we must allow it in the types.\n */\n [key: string]: any;\n}\n\nexport interface FileAlias {\n tenant: string;\n locale: string;\n fileId: string;\n alias: string;\n}\n\nexport interface CreatedBy {\n id: string;\n displayName: string | null;\n type: string;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["file.ts"],"sourcesContent":["export interface File {\n id: string;\n key: string;\n size: number;\n type: string;\n name: string;\n meta: Record<string, any>;\n location: {\n folderId: string;\n };\n tags: string[];\n aliases: string[];\n createdOn: string;\n savedOn: string;\n createdBy: CreatedBy;\n /**\n * Added with new storage operations refactoring.\n */\n tenant: string;\n locale: string;\n webinyVersion: string;\n /**\n * User can add new fields to the File object, so we must allow it in the types.\n */\n [key: string]: any;\n}\n\nexport interface FileAlias {\n tenant: string;\n locale: string;\n fileId: string;\n alias: string;\n}\n\nexport interface CreatedBy {\n id: string;\n displayName: string | null;\n type: string;\n}\n"],"mappings":""}
@@ -2,15 +2,19 @@ import { Topic } from "@webiny/pubsub/types";
2
2
  import { File } from "./file";
3
3
  export interface OnFileBeforeCreateTopicParams<TFile extends File = File> {
4
4
  file: TFile;
5
+ meta?: Record<string, any>;
5
6
  }
6
7
  export interface OnFileAfterCreateTopicParams<TFile extends File = File> {
7
8
  file: TFile;
9
+ meta?: Record<string, any>;
8
10
  }
9
11
  export interface OnFileBeforeBatchCreateTopicParams<TFile extends File = File> {
10
12
  files: TFile[];
13
+ meta?: Record<string, any>;
11
14
  }
12
15
  export interface OnFileAfterBatchCreateTopicParams<TFile extends File = File> {
13
16
  files: TFile[];
17
+ meta?: Record<string, any>;
14
18
  }
15
19
  export interface OnFileBeforeUpdateTopicParams<TFile extends File = File> {
16
20
  original: TFile;
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["file.lifecycle.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { File } from \"./file\";\n\nexport interface OnFileBeforeCreateTopicParams<TFile extends File = File> {\n file: TFile;\n}\n\nexport interface OnFileAfterCreateTopicParams<TFile extends File = File> {\n file: TFile;\n}\n\nexport interface OnFileBeforeBatchCreateTopicParams<TFile extends File = File> {\n files: TFile[];\n}\n\nexport interface OnFileAfterBatchCreateTopicParams<TFile extends File = File> {\n files: TFile[];\n}\n\nexport interface OnFileBeforeUpdateTopicParams<TFile extends File = File> {\n original: TFile;\n file: TFile;\n input: Record<string, any>;\n}\n\nexport interface OnFileAfterUpdateTopicParams<TFile extends File = File> {\n original: TFile;\n file: TFile;\n input: Record<string, any>;\n}\n\nexport interface OnFileBeforeDeleteTopicParams<TFile extends File = File> {\n file: TFile;\n}\n\nexport interface OnFileAfterDeleteTopicParams<TFile extends File = File> {\n file: TFile;\n}\n\nexport interface FileLifecycleEvents {\n onFileBeforeCreate: Topic<OnFileBeforeCreateTopicParams>;\n onFileAfterCreate: Topic<OnFileAfterCreateTopicParams>;\n onFileBeforeBatchCreate: Topic<OnFileBeforeBatchCreateTopicParams>;\n onFileAfterBatchCreate: Topic<OnFileAfterBatchCreateTopicParams>;\n onFileBeforeUpdate: Topic<OnFileBeforeUpdateTopicParams>;\n onFileAfterUpdate: Topic<OnFileAfterUpdateTopicParams>;\n onFileBeforeDelete: Topic<OnFileBeforeDeleteTopicParams>;\n onFileAfterDelete: Topic<OnFileAfterDeleteTopicParams>;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["file.lifecycle.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { File } from \"./file\";\n\nexport interface OnFileBeforeCreateTopicParams<TFile extends File = File> {\n file: TFile;\n meta?: Record<string, any>;\n}\n\nexport interface OnFileAfterCreateTopicParams<TFile extends File = File> {\n file: TFile;\n meta?: Record<string, any>;\n}\n\nexport interface OnFileBeforeBatchCreateTopicParams<TFile extends File = File> {\n files: TFile[];\n meta?: Record<string, any>;\n}\n\nexport interface OnFileAfterBatchCreateTopicParams<TFile extends File = File> {\n files: TFile[];\n meta?: Record<string, any>;\n}\n\nexport interface OnFileBeforeUpdateTopicParams<TFile extends File = File> {\n original: TFile;\n file: TFile;\n input: Record<string, any>;\n}\n\nexport interface OnFileAfterUpdateTopicParams<TFile extends File = File> {\n original: TFile;\n file: TFile;\n input: Record<string, any>;\n}\n\nexport interface OnFileBeforeDeleteTopicParams<TFile extends File = File> {\n file: TFile;\n}\n\nexport interface OnFileAfterDeleteTopicParams<TFile extends File = File> {\n file: TFile;\n}\n\nexport interface FileLifecycleEvents {\n onFileBeforeCreate: Topic<OnFileBeforeCreateTopicParams>;\n onFileAfterCreate: Topic<OnFileAfterCreateTopicParams>;\n onFileBeforeBatchCreate: Topic<OnFileBeforeBatchCreateTopicParams>;\n onFileAfterBatchCreate: Topic<OnFileAfterBatchCreateTopicParams>;\n onFileBeforeUpdate: Topic<OnFileBeforeUpdateTopicParams>;\n onFileAfterUpdate: Topic<OnFileAfterUpdateTopicParams>;\n onFileBeforeDelete: Topic<OnFileBeforeDeleteTopicParams>;\n onFileAfterDelete: Topic<OnFileAfterDeleteTopicParams>;\n}\n"],"mappings":""}
package/types.d.ts CHANGED
@@ -6,12 +6,13 @@ import { Context } from "@webiny/api/types";
6
6
  import { FileLifecycleEvents } from "./types/file.lifecycle";
7
7
  import { File } from "./types/file";
8
8
  import { Topic } from "@webiny/pubsub/types";
9
+ import { CmsContext } from "@webiny/api-headless-cms/types";
9
10
  export * from "./types/file.lifecycle";
10
11
  export * from "./types/file";
11
12
  export interface FileManagerContextObject extends FilesCRUD, SettingsCRUD, SystemCRUD {
12
13
  storage: FileStorage;
13
14
  }
14
- export interface FileManagerContext extends Context, SecurityContext, TenancyContext, I18NContext {
15
+ export interface FileManagerContext extends Context, SecurityContext, TenancyContext, I18NContext, CmsContext {
15
16
  fileManager: FileManagerContextObject;
16
17
  }
17
18
  export interface FilePermission extends SecurityPermission {
@@ -26,24 +27,20 @@ export interface FileInput {
26
27
  size: number;
27
28
  type: string;
28
29
  meta: Record<string, any>;
30
+ location?: {
31
+ folderId: string;
32
+ };
29
33
  tags: string[];
30
34
  aliases: string[];
35
+ extensions?: Record<string, any>;
31
36
  }
32
37
  export interface FileListWhereParams {
33
- search?: string;
34
- type?: string;
35
- type_in?: string[];
36
- tag?: string;
37
- tag_in?: string[];
38
- tag_and_in?: string[];
39
- id_in?: string[];
40
- id?: string;
38
+ AND?: FileListWhereParams[];
39
+ OR?: FileListWhereParams[];
40
+ [key: string]: any;
41
41
  }
42
42
  export interface FilesListOpts {
43
43
  search?: string;
44
- types?: string[];
45
- tags?: string[];
46
- ids?: string[];
47
44
  limit?: number;
48
45
  after?: string;
49
46
  where?: FileListWhereParams;
@@ -66,14 +63,18 @@ interface FilesCrudListTagsParams {
66
63
  limit?: number;
67
64
  after?: string;
68
65
  }
66
+ export interface ListTagsResponse {
67
+ tag: string;
68
+ count: number;
69
+ }
69
70
  export interface FilesCRUD extends FileLifecycleEvents {
70
71
  getFile(id: string): Promise<File>;
71
72
  listFiles(opts?: FilesListOpts): Promise<[File[], FileListMeta]>;
72
- listTags(params: FilesCrudListTagsParams): Promise<string[]>;
73
- createFile(data: FileInput): Promise<File>;
73
+ listTags(params: FilesCrudListTagsParams): Promise<ListTagsResponse[]>;
74
+ createFile(data: FileInput, meta?: Record<string, any>): Promise<File>;
74
75
  updateFile(id: string, data: Partial<FileInput>): Promise<File>;
75
76
  deleteFile(id: string): Promise<boolean>;
76
- createFilesInBatch(data: FileInput[]): Promise<File[]>;
77
+ createFilesInBatch(data: FileInput[], meta?: Record<string, any>): Promise<File[]>;
77
78
  }
78
79
  export interface SystemCRUD {
79
80
  onSystemBeforeInstall: Topic;
@@ -256,20 +257,7 @@ export interface FileManagerFilesStorageOperationsCreateBatchParams {
256
257
  * @category FilesStorageOperationsParams
257
258
  */
258
259
  export interface FileManagerFilesStorageOperationsListParamsWhere {
259
- id?: string;
260
- id_in?: string[];
261
- name?: string;
262
- name_contains?: string;
263
- tag?: string;
264
- tag_contains?: string;
265
- tag_in?: string[];
266
- createdBy?: string;
267
- locale: string;
268
- tenant: string;
269
- private?: boolean;
270
- type?: string;
271
- type_in?: string[];
272
- search?: string;
260
+ [key: string]: any;
273
261
  }
274
262
  /**
275
263
  * @category StorageOperations
@@ -281,6 +269,7 @@ export interface FileManagerFilesStorageOperationsListParams {
281
269
  sort: string[];
282
270
  limit: number;
283
271
  after: string | null;
272
+ search?: string;
284
273
  }
285
274
  /**
286
275
  * @category StorageOperations
@@ -296,10 +285,10 @@ export declare type FileManagerFilesStorageOperationsListResponse = [
296
285
  File[],
297
286
  FileManagerFilesStorageOperationsListResponseMeta
298
287
  ];
299
- export declare type FileManagerFilesStorageOperationsTagsResponse = [
300
- string[],
301
- FileManagerFilesStorageOperationsListResponseMeta
302
- ];
288
+ export interface FileManagerFilesStorageOperationsTagsResponse {
289
+ tag: string;
290
+ count: number;
291
+ }
303
292
  export interface FileManagerFilesStorageOperationsTagsParamsWhere extends FilesCrudListTagsWhere {
304
293
  locale: string;
305
294
  tenant: string;
@@ -346,11 +335,16 @@ export interface FileManagerFilesStorageOperations {
346
335
  /**
347
336
  * Get a list of all file tags filtered by given parameters.
348
337
  */
349
- tags: (params: FileManagerFilesStorageOperationsTagsParams) => Promise<FileManagerFilesStorageOperationsTagsResponse>;
338
+ tags: (params: FileManagerFilesStorageOperationsTagsParams) => Promise<FileManagerFilesStorageOperationsTagsResponse[]>;
339
+ }
340
+ export interface FileManagerAliasesStorageOperations {
341
+ storeAliases(file: File): Promise<void>;
342
+ deleteAliases(file: File): Promise<void>;
350
343
  }
351
344
  export interface FileManagerStorageOperations<TContext = FileManagerContext> {
352
345
  beforeInit?: (context: TContext) => Promise<void>;
353
346
  files: FileManagerFilesStorageOperations;
347
+ aliases: FileManagerAliasesStorageOperations;
354
348
  settings: FileManagerSettingsStorageOperations;
355
349
  system: FileManagerSystemStorageOperations;
356
350
  }