@strapi/content-manager 5.56.0 → 5.58.0

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 (220) hide show
  1. package/dist/admin/components/ConfigurationForm/Form.js +3 -3
  2. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Form.mjs +2 -2
  4. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  5. package/dist/admin/components/RelativeTime.js +9 -0
  6. package/dist/admin/components/RelativeTime.js.map +1 -1
  7. package/dist/admin/components/RelativeTime.mjs +10 -1
  8. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  9. package/dist/admin/features/DocumentRBAC.js +0 -3
  10. package/dist/admin/features/DocumentRBAC.js.map +1 -1
  11. package/dist/admin/features/DocumentRBAC.mjs +1 -4
  12. package/dist/admin/features/DocumentRBAC.mjs.map +1 -1
  13. package/dist/admin/history/components/VersionContent.js +3 -3
  14. package/dist/admin/history/components/VersionContent.js.map +1 -1
  15. package/dist/admin/history/components/VersionContent.mjs +2 -2
  16. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  17. package/dist/admin/history/pages/History.js +2 -1
  18. package/dist/admin/history/pages/History.js.map +1 -1
  19. package/dist/admin/history/pages/History.mjs +3 -2
  20. package/dist/admin/history/pages/History.mjs.map +1 -1
  21. package/dist/admin/pages/EditView/EditViewPage.js +2 -2
  22. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  23. package/dist/admin/pages/EditView/EditViewPage.mjs +2 -2
  24. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  25. package/dist/admin/pages/EditView/components/DocumentActions.js +37 -2
  26. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  27. package/dist/admin/pages/EditView/components/DocumentActions.mjs +37 -3
  28. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  29. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +1 -0
  30. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  31. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +1 -0
  32. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +3 -3
  34. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -2
  36. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +30 -2
  38. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +31 -4
  40. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +40 -8
  42. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +41 -9
  44. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/utils/data.js +3 -3
  46. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  47. package/dist/admin/pages/EditView/utils/data.mjs +2 -2
  48. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  49. package/dist/admin/pages/ListView/ListViewPage.js +4 -3
  50. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  51. package/dist/admin/pages/ListView/ListViewPage.mjs +4 -3
  52. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  53. package/dist/admin/preview/pages/Preview.js +2 -1
  54. package/dist/admin/preview/pages/Preview.js.map +1 -1
  55. package/dist/admin/preview/pages/Preview.mjs +3 -2
  56. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  57. package/dist/admin/services/documents.js +3 -2
  58. package/dist/admin/services/documents.js.map +1 -1
  59. package/dist/admin/services/documents.mjs +2 -2
  60. package/dist/admin/services/documents.mjs.map +1 -1
  61. package/dist/admin/services/relations.js +3 -0
  62. package/dist/admin/services/relations.js.map +1 -1
  63. package/dist/admin/services/relations.mjs +3 -0
  64. package/dist/admin/services/relations.mjs.map +1 -1
  65. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +2 -1
  66. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +19 -2
  67. package/dist/admin/src/services/documents.d.ts +10 -2
  68. package/dist/admin/translations/en.json.js +2 -0
  69. package/dist/admin/translations/en.json.js.map +1 -1
  70. package/dist/admin/translations/en.json.mjs +2 -0
  71. package/dist/admin/translations/en.json.mjs.map +1 -1
  72. package/dist/admin/utils/validation.js +3 -3
  73. package/dist/admin/utils/validation.js.map +1 -1
  74. package/dist/admin/utils/validation.mjs +2 -2
  75. package/dist/admin/utils/validation.mjs.map +1 -1
  76. package/dist/server/controllers/collection-types.js +4 -4
  77. package/dist/server/controllers/collection-types.js.map +1 -1
  78. package/dist/server/controllers/collection-types.mjs +4 -4
  79. package/dist/server/controllers/collection-types.mjs.map +1 -1
  80. package/dist/server/controllers/content-types.js +5 -7
  81. package/dist/server/controllers/content-types.js.map +1 -1
  82. package/dist/server/controllers/content-types.mjs +5 -7
  83. package/dist/server/controllers/content-types.mjs.map +1 -1
  84. package/dist/server/controllers/relations.js +19 -15
  85. package/dist/server/controllers/relations.js.map +1 -1
  86. package/dist/server/controllers/relations.mjs +17 -13
  87. package/dist/server/controllers/relations.mjs.map +1 -1
  88. package/dist/server/controllers/utils/clone.js +3 -4
  89. package/dist/server/controllers/utils/clone.js.map +1 -1
  90. package/dist/server/controllers/utils/clone.mjs +4 -5
  91. package/dist/server/controllers/utils/clone.mjs.map +1 -1
  92. package/dist/server/controllers/validation/index.js +1 -1
  93. package/dist/server/controllers/validation/index.mjs +1 -1
  94. package/dist/server/history/controllers/history-version.js +3 -3
  95. package/dist/server/history/controllers/history-version.js.map +1 -1
  96. package/dist/server/history/controllers/history-version.mjs +3 -3
  97. package/dist/server/history/controllers/history-version.mjs.map +1 -1
  98. package/dist/server/history/entitlements.js +26 -0
  99. package/dist/server/history/entitlements.js.map +1 -0
  100. package/dist/server/history/entitlements.mjs +24 -0
  101. package/dist/server/history/entitlements.mjs.map +1 -0
  102. package/dist/server/history/index.js +3 -0
  103. package/dist/server/history/index.js.map +1 -1
  104. package/dist/server/history/index.mjs +3 -0
  105. package/dist/server/history/index.mjs.map +1 -1
  106. package/dist/server/history/services/history.js +4 -4
  107. package/dist/server/history/services/history.js.map +1 -1
  108. package/dist/server/history/services/history.mjs +4 -4
  109. package/dist/server/history/services/history.mjs.map +1 -1
  110. package/dist/server/history/services/lifecycles.js +8 -8
  111. package/dist/server/history/services/lifecycles.js.map +1 -1
  112. package/dist/server/history/services/lifecycles.mjs +3 -3
  113. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  114. package/dist/server/history/services/utils.js +26 -18
  115. package/dist/server/history/services/utils.js.map +1 -1
  116. package/dist/server/history/services/utils.mjs +23 -17
  117. package/dist/server/history/services/utils.mjs.map +1 -1
  118. package/dist/server/mcp/permissions.js +2 -2
  119. package/dist/server/mcp/permissions.js.map +1 -1
  120. package/dist/server/mcp/permissions.mjs +2 -2
  121. package/dist/server/mcp/permissions.mjs.map +1 -1
  122. package/dist/server/mcp/register-content-manager-mcp-tools.js +7 -5
  123. package/dist/server/mcp/register-content-manager-mcp-tools.js.map +1 -1
  124. package/dist/server/mcp/register-content-manager-mcp-tools.mjs +7 -5
  125. package/dist/server/mcp/register-content-manager-mcp-tools.mjs.map +1 -1
  126. package/dist/server/preview/controllers/previewScript.js +30 -15
  127. package/dist/server/preview/controllers/validation/preview.js +3 -3
  128. package/dist/server/preview/controllers/validation/preview.js.map +1 -1
  129. package/dist/server/preview/controllers/validation/preview.mjs +3 -3
  130. package/dist/server/preview/controllers/validation/preview.mjs.map +1 -1
  131. package/dist/server/services/components.js +3 -3
  132. package/dist/server/services/components.js.map +1 -1
  133. package/dist/server/services/components.mjs +3 -3
  134. package/dist/server/services/components.mjs.map +1 -1
  135. package/dist/server/services/content-structure.js +2 -2
  136. package/dist/server/services/content-structure.js.map +1 -1
  137. package/dist/server/services/content-structure.mjs +2 -2
  138. package/dist/server/services/content-structure.mjs.map +1 -1
  139. package/dist/server/services/content-types.js +3 -3
  140. package/dist/server/services/content-types.js.map +1 -1
  141. package/dist/server/services/content-types.mjs +3 -3
  142. package/dist/server/services/content-types.mjs.map +1 -1
  143. package/dist/server/services/data-mapper.js +3 -3
  144. package/dist/server/services/data-mapper.js.map +1 -1
  145. package/dist/server/services/data-mapper.mjs +3 -3
  146. package/dist/server/services/data-mapper.mjs.map +1 -1
  147. package/dist/server/services/document-manager.js +6 -6
  148. package/dist/server/services/document-manager.js.map +1 -1
  149. package/dist/server/services/document-manager.mjs +6 -6
  150. package/dist/server/services/document-manager.mjs.map +1 -1
  151. package/dist/server/services/document-metadata.js +29 -31
  152. package/dist/server/services/document-metadata.js.map +1 -1
  153. package/dist/server/services/document-metadata.mjs +29 -31
  154. package/dist/server/services/document-metadata.mjs.map +1 -1
  155. package/dist/server/services/metrics.js +3 -3
  156. package/dist/server/services/metrics.js.map +1 -1
  157. package/dist/server/services/metrics.mjs +3 -3
  158. package/dist/server/services/metrics.mjs.map +1 -1
  159. package/dist/server/services/permission-checker.js +2 -2
  160. package/dist/server/services/permission-checker.js.map +1 -1
  161. package/dist/server/services/permission-checker.mjs +1 -1
  162. package/dist/server/services/permission-checker.mjs.map +1 -1
  163. package/dist/server/services/permission.js +2 -3
  164. package/dist/server/services/permission.js.map +1 -1
  165. package/dist/server/services/permission.mjs +2 -3
  166. package/dist/server/services/permission.mjs.map +1 -1
  167. package/dist/server/services/populate-builder.js +4 -4
  168. package/dist/server/services/populate-builder.js.map +1 -1
  169. package/dist/server/services/populate-builder.mjs +4 -4
  170. package/dist/server/services/populate-builder.mjs.map +1 -1
  171. package/dist/server/services/utils/configuration/attributes.js +1 -2
  172. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  173. package/dist/server/services/utils/configuration/attributes.mjs +2 -3
  174. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  175. package/dist/server/services/utils/configuration/settings.js +4 -7
  176. package/dist/server/services/utils/configuration/settings.js.map +1 -1
  177. package/dist/server/services/utils/configuration/settings.mjs +2 -5
  178. package/dist/server/services/utils/configuration/settings.mjs.map +1 -1
  179. package/dist/server/services/utils/draft.js +8 -7
  180. package/dist/server/services/utils/draft.js.map +1 -1
  181. package/dist/server/services/utils/draft.mjs +6 -5
  182. package/dist/server/services/utils/draft.mjs.map +1 -1
  183. package/dist/server/services/utils/populate.js +10 -11
  184. package/dist/server/services/utils/populate.js.map +1 -1
  185. package/dist/server/services/utils/populate.mjs +9 -10
  186. package/dist/server/services/utils/populate.mjs.map +1 -1
  187. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  188. package/dist/server/src/history/controllers/history-version.d.ts.map +1 -1
  189. package/dist/server/src/history/entitlements.d.ts +9 -0
  190. package/dist/server/src/history/entitlements.d.ts.map +1 -0
  191. package/dist/server/src/history/index.d.ts.map +1 -1
  192. package/dist/server/src/history/services/utils.d.ts +8 -2
  193. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  194. package/dist/server/src/index.d.ts +1 -1
  195. package/dist/server/src/index.d.ts.map +1 -1
  196. package/dist/server/src/mcp/permissions.d.ts +1 -1
  197. package/dist/server/src/mcp/permissions.d.ts.map +1 -1
  198. package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts +3 -1
  199. package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts.map +1 -1
  200. package/dist/server/src/mcp/types.d.ts +2 -2
  201. package/dist/server/src/services/content-types.d.ts.map +1 -1
  202. package/dist/server/src/services/data-mapper.d.ts +1 -1
  203. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  204. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  205. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  206. package/dist/server/src/services/index.d.ts +1 -1
  207. package/dist/server/src/services/index.d.ts.map +1 -1
  208. package/dist/server/src/services/metrics.d.ts.map +1 -1
  209. package/dist/server/src/services/permission-checker.d.ts.map +1 -1
  210. package/dist/server/src/services/permission.d.ts.map +1 -1
  211. package/dist/server/src/services/populate-builder.d.ts.map +1 -1
  212. package/dist/server/src/services/utils/configuration/index.d.ts +10 -1
  213. package/dist/server/src/services/utils/configuration/index.d.ts.map +1 -1
  214. package/dist/server/src/services/utils/configuration/settings.d.ts +10 -1
  215. package/dist/server/src/services/utils/configuration/settings.d.ts.map +1 -1
  216. package/dist/server/src/services/utils/draft.d.ts.map +1 -1
  217. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  218. package/dist/shared/contracts/relations.d.ts +1 -0
  219. package/dist/shared/contracts/relations.d.ts.map +1 -1
  220. package/package.json +7 -7
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var _ = require('lodash');
4
4
 
5
5
  const isInternalUid = (uid)=>{
6
6
  return uid.startsWith('admin::') || uid.startsWith('strapi::');
@@ -8,7 +8,7 @@ const isInternalUid = (uid)=>{
8
8
  const createContentStructureService = ({ strapi })=>{
9
9
  const coreContentStructure = strapi.get('content-structure');
10
10
  const isContentTypeVisible = (model)=>{
11
- return fp.getOr(true, 'pluginOptions.content-manager.visible', model) === true;
11
+ return _.get(model, 'pluginOptions.content-manager.visible', true) === true;
12
12
  };
13
13
  /**
14
14
  * Whether a content type may appear in the folder nav: a known, user-facing type
@@ -1 +1 @@
1
- {"version":3,"file":"content-structure.js","sources":["../../../server/src/services/content-structure.ts"],"sourcesContent":["import type { Core, Modules, UID, Struct } from '@strapi/types';\nimport { getOr } from 'lodash/fp';\n\ninterface CoreContentStructureService {\n getCleanedFile(): Promise<Modules.ContentStructure.ContentStructureFile | null>;\n resolve(): Promise<Modules.ContentStructure.ResolvedContentStructure>;\n}\n\ntype ResolvedGroupNode = Modules.ContentStructure.ResolvedGroupNode;\n\nconst isInternalUid = (uid: string): boolean => {\n return uid.startsWith('admin::') || uid.startsWith('strapi::');\n};\n\nconst createContentStructureService = ({ strapi }: { strapi: Core.Strapi }) => {\n const coreContentStructure: CoreContentStructureService = strapi.get('content-structure');\n\n const isContentTypeVisible = (model: Struct.ContentTypeSchema) => {\n return getOr(true, 'pluginOptions.content-manager.visible', model) === true;\n };\n\n /**\n * Whether a content type may appear in the folder nav: a known, user-facing type\n * that is neither internal nor hidden via pluginOptions.\n */\n const isFileableContentType = (uid: UID.ContentType): boolean => {\n const schema = strapi.contentTypes[uid];\n\n if (!schema) {\n return false;\n }\n\n if (isInternalUid(uid)) {\n return false;\n }\n\n return isContentTypeVisible(schema);\n };\n\n const pruneNode = (node: ResolvedGroupNode): ResolvedGroupNode => {\n const children = node.children\n .filter((child) => {\n return child.type !== 'contentType' || isFileableContentType(child.uid);\n })\n .map((child) => {\n return child.type === 'group' ? pruneNode(child) : child;\n });\n\n return { ...node, children };\n };\n\n return {\n async getContentStructure(): Promise<Modules.ContentStructure.ResolvedContentStructure | null> {\n const cleaned = await coreContentStructure.getCleanedFile();\n\n if (!cleaned) {\n return null;\n }\n\n const resolved = await coreContentStructure.resolve();\n\n return {\n collectionTypes: resolved.collectionTypes.map(pruneNode),\n singleTypes: resolved.singleTypes.map(pruneNode),\n };\n },\n };\n};\n\nexport default createContentStructureService;\n"],"names":["isInternalUid","uid","startsWith","createContentStructureService","strapi","coreContentStructure","get","isContentTypeVisible","model","getOr","isFileableContentType","schema","contentTypes","pruneNode","node","children","filter","child","type","map","getContentStructure","cleaned","getCleanedFile","resolved","resolve","collectionTypes","singleTypes"],"mappings":";;;;AAUA,MAAMA,gBAAgB,CAACC,GAAAA,GAAAA;AACrB,IAAA,OAAOA,IAAIC,UAAU,CAAC,SAAA,CAAA,IAAcD,GAAAA,CAAIC,UAAU,CAAC,UAAA,CAAA;AACrD,CAAA;AAEA,MAAMC,6BAAAA,GAAgC,CAAC,EAAEC,MAAM,EAA2B,GAAA;IACxE,MAAMC,oBAAAA,GAAoDD,MAAAA,CAAOE,GAAG,CAAC,mBAAA,CAAA;AAErE,IAAA,MAAMC,uBAAuB,CAACC,KAAAA,GAAAA;QAC5B,OAAOC,QAAAA,CAAM,IAAA,EAAM,uCAAA,EAAyCD,KAAAA,CAAAA,KAAW,IAAA;AACzE,IAAA,CAAA;AAEA;;;MAIA,MAAME,wBAAwB,CAACT,GAAAA,GAAAA;AAC7B,QAAA,MAAMU,MAAAA,GAASP,MAAAA,CAAOQ,YAAY,CAACX,GAAAA,CAAI;AAEvC,QAAA,IAAI,CAACU,MAAAA,EAAQ;YACX,OAAO,KAAA;AACT,QAAA;AAEA,QAAA,IAAIX,cAAcC,GAAAA,CAAAA,EAAM;YACtB,OAAO,KAAA;AACT,QAAA;AAEA,QAAA,OAAOM,oBAAAA,CAAqBI,MAAAA,CAAAA;AAC9B,IAAA,CAAA;AAEA,IAAA,MAAME,YAAY,CAACC,IAAAA,GAAAA;AACjB,QAAA,MAAMC,WAAWD,IAAAA,CAAKC,QAAQ,CAC3BC,MAAM,CAAC,CAACC,KAAAA,GAAAA;AACP,YAAA,OAAOA,MAAMC,IAAI,KAAK,aAAA,IAAiBR,qBAAAA,CAAsBO,MAAMhB,GAAG,CAAA;QACxE,CAAA,CAAA,CACCkB,GAAG,CAAC,CAACF,KAAAA,GAAAA;AACJ,YAAA,OAAOA,KAAAA,CAAMC,IAAI,KAAK,OAAA,GAAUL,UAAUI,KAAAA,CAAAA,GAASA,KAAAA;AACrD,QAAA,CAAA,CAAA;QAEF,OAAO;AAAE,YAAA,GAAGH,IAAI;AAAEC,YAAAA;AAAS,SAAA;AAC7B,IAAA,CAAA;IAEA,OAAO;QACL,MAAMK,mBAAAA,CAAAA,GAAAA;YACJ,MAAMC,OAAAA,GAAU,MAAMhB,oBAAAA,CAAqBiB,cAAc,EAAA;AAEzD,YAAA,IAAI,CAACD,OAAAA,EAAS;gBACZ,OAAO,IAAA;AACT,YAAA;YAEA,MAAME,QAAAA,GAAW,MAAMlB,oBAAAA,CAAqBmB,OAAO,EAAA;YAEnD,OAAO;AACLC,gBAAAA,eAAAA,EAAiBF,QAAAA,CAASE,eAAe,CAACN,GAAG,CAACN,SAAAA,CAAAA;AAC9Ca,gBAAAA,WAAAA,EAAaH,QAAAA,CAASG,WAAW,CAACP,GAAG,CAACN,SAAAA;AACxC,aAAA;AACF,QAAA;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"content-structure.js","sources":["../../../server/src/services/content-structure.ts"],"sourcesContent":["import type { Core, Modules, UID, Struct } from '@strapi/types';\nimport { get } from 'lodash';\n\ninterface CoreContentStructureService {\n getCleanedFile(): Promise<Modules.ContentStructure.ContentStructureFile | null>;\n resolve(): Promise<Modules.ContentStructure.ResolvedContentStructure>;\n}\n\ntype ResolvedGroupNode = Modules.ContentStructure.ResolvedGroupNode;\n\nconst isInternalUid = (uid: string): boolean => {\n return uid.startsWith('admin::') || uid.startsWith('strapi::');\n};\n\nconst createContentStructureService = ({ strapi }: { strapi: Core.Strapi }) => {\n const coreContentStructure: CoreContentStructureService = strapi.get('content-structure');\n\n const isContentTypeVisible = (model: Struct.ContentTypeSchema) => {\n return get(model, 'pluginOptions.content-manager.visible', true) === true;\n };\n\n /**\n * Whether a content type may appear in the folder nav: a known, user-facing type\n * that is neither internal nor hidden via pluginOptions.\n */\n const isFileableContentType = (uid: UID.ContentType): boolean => {\n const schema = strapi.contentTypes[uid];\n\n if (!schema) {\n return false;\n }\n\n if (isInternalUid(uid)) {\n return false;\n }\n\n return isContentTypeVisible(schema);\n };\n\n const pruneNode = (node: ResolvedGroupNode): ResolvedGroupNode => {\n const children = node.children\n .filter((child) => {\n return child.type !== 'contentType' || isFileableContentType(child.uid);\n })\n .map((child) => {\n return child.type === 'group' ? pruneNode(child) : child;\n });\n\n return { ...node, children };\n };\n\n return {\n async getContentStructure(): Promise<Modules.ContentStructure.ResolvedContentStructure | null> {\n const cleaned = await coreContentStructure.getCleanedFile();\n\n if (!cleaned) {\n return null;\n }\n\n const resolved = await coreContentStructure.resolve();\n\n return {\n collectionTypes: resolved.collectionTypes.map(pruneNode),\n singleTypes: resolved.singleTypes.map(pruneNode),\n };\n },\n };\n};\n\nexport default createContentStructureService;\n"],"names":["isInternalUid","uid","startsWith","createContentStructureService","strapi","coreContentStructure","get","isContentTypeVisible","model","isFileableContentType","schema","contentTypes","pruneNode","node","children","filter","child","type","map","getContentStructure","cleaned","getCleanedFile","resolved","resolve","collectionTypes","singleTypes"],"mappings":";;;;AAUA,MAAMA,gBAAgB,CAACC,GAAAA,GAAAA;AACrB,IAAA,OAAOA,IAAIC,UAAU,CAAC,SAAA,CAAA,IAAcD,GAAAA,CAAIC,UAAU,CAAC,UAAA,CAAA;AACrD,CAAA;AAEA,MAAMC,6BAAAA,GAAgC,CAAC,EAAEC,MAAM,EAA2B,GAAA;IACxE,MAAMC,oBAAAA,GAAoDD,MAAAA,CAAOE,GAAG,CAAC,mBAAA,CAAA;AAErE,IAAA,MAAMC,uBAAuB,CAACC,KAAAA,GAAAA;QAC5B,OAAOF,KAAAA,CAAIE,KAAAA,EAAO,uCAAA,EAAyC,IAAA,CAAA,KAAU,IAAA;AACvE,IAAA,CAAA;AAEA;;;MAIA,MAAMC,wBAAwB,CAACR,GAAAA,GAAAA;AAC7B,QAAA,MAAMS,MAAAA,GAASN,MAAAA,CAAOO,YAAY,CAACV,GAAAA,CAAI;AAEvC,QAAA,IAAI,CAACS,MAAAA,EAAQ;YACX,OAAO,KAAA;AACT,QAAA;AAEA,QAAA,IAAIV,cAAcC,GAAAA,CAAAA,EAAM;YACtB,OAAO,KAAA;AACT,QAAA;AAEA,QAAA,OAAOM,oBAAAA,CAAqBG,MAAAA,CAAAA;AAC9B,IAAA,CAAA;AAEA,IAAA,MAAME,YAAY,CAACC,IAAAA,GAAAA;AACjB,QAAA,MAAMC,WAAWD,IAAAA,CAAKC,QAAQ,CAC3BC,MAAM,CAAC,CAACC,KAAAA,GAAAA;AACP,YAAA,OAAOA,MAAMC,IAAI,KAAK,aAAA,IAAiBR,qBAAAA,CAAsBO,MAAMf,GAAG,CAAA;QACxE,CAAA,CAAA,CACCiB,GAAG,CAAC,CAACF,KAAAA,GAAAA;AACJ,YAAA,OAAOA,KAAAA,CAAMC,IAAI,KAAK,OAAA,GAAUL,UAAUI,KAAAA,CAAAA,GAASA,KAAAA;AACrD,QAAA,CAAA,CAAA;QAEF,OAAO;AAAE,YAAA,GAAGH,IAAI;AAAEC,YAAAA;AAAS,SAAA;AAC7B,IAAA,CAAA;IAEA,OAAO;QACL,MAAMK,mBAAAA,CAAAA,GAAAA;YACJ,MAAMC,OAAAA,GAAU,MAAMf,oBAAAA,CAAqBgB,cAAc,EAAA;AAEzD,YAAA,IAAI,CAACD,OAAAA,EAAS;gBACZ,OAAO,IAAA;AACT,YAAA;YAEA,MAAME,QAAAA,GAAW,MAAMjB,oBAAAA,CAAqBkB,OAAO,EAAA;YAEnD,OAAO;AACLC,gBAAAA,eAAAA,EAAiBF,QAAAA,CAASE,eAAe,CAACN,GAAG,CAACN,SAAAA,CAAAA;AAC9Ca,gBAAAA,WAAAA,EAAaH,QAAAA,CAASG,WAAW,CAACP,GAAG,CAACN,SAAAA;AACxC,aAAA;AACF,QAAA;AACF,KAAA;AACF;;;;"}
@@ -1,4 +1,4 @@
1
- import { getOr } from 'lodash/fp';
1
+ import { get } from 'lodash';
2
2
 
3
3
  const isInternalUid = (uid)=>{
4
4
  return uid.startsWith('admin::') || uid.startsWith('strapi::');
@@ -6,7 +6,7 @@ const isInternalUid = (uid)=>{
6
6
  const createContentStructureService = ({ strapi })=>{
7
7
  const coreContentStructure = strapi.get('content-structure');
8
8
  const isContentTypeVisible = (model)=>{
9
- return getOr(true, 'pluginOptions.content-manager.visible', model) === true;
9
+ return get(model, 'pluginOptions.content-manager.visible', true) === true;
10
10
  };
11
11
  /**
12
12
  * Whether a content type may appear in the folder nav: a known, user-facing type
@@ -1 +1 @@
1
- {"version":3,"file":"content-structure.mjs","sources":["../../../server/src/services/content-structure.ts"],"sourcesContent":["import type { Core, Modules, UID, Struct } from '@strapi/types';\nimport { getOr } from 'lodash/fp';\n\ninterface CoreContentStructureService {\n getCleanedFile(): Promise<Modules.ContentStructure.ContentStructureFile | null>;\n resolve(): Promise<Modules.ContentStructure.ResolvedContentStructure>;\n}\n\ntype ResolvedGroupNode = Modules.ContentStructure.ResolvedGroupNode;\n\nconst isInternalUid = (uid: string): boolean => {\n return uid.startsWith('admin::') || uid.startsWith('strapi::');\n};\n\nconst createContentStructureService = ({ strapi }: { strapi: Core.Strapi }) => {\n const coreContentStructure: CoreContentStructureService = strapi.get('content-structure');\n\n const isContentTypeVisible = (model: Struct.ContentTypeSchema) => {\n return getOr(true, 'pluginOptions.content-manager.visible', model) === true;\n };\n\n /**\n * Whether a content type may appear in the folder nav: a known, user-facing type\n * that is neither internal nor hidden via pluginOptions.\n */\n const isFileableContentType = (uid: UID.ContentType): boolean => {\n const schema = strapi.contentTypes[uid];\n\n if (!schema) {\n return false;\n }\n\n if (isInternalUid(uid)) {\n return false;\n }\n\n return isContentTypeVisible(schema);\n };\n\n const pruneNode = (node: ResolvedGroupNode): ResolvedGroupNode => {\n const children = node.children\n .filter((child) => {\n return child.type !== 'contentType' || isFileableContentType(child.uid);\n })\n .map((child) => {\n return child.type === 'group' ? pruneNode(child) : child;\n });\n\n return { ...node, children };\n };\n\n return {\n async getContentStructure(): Promise<Modules.ContentStructure.ResolvedContentStructure | null> {\n const cleaned = await coreContentStructure.getCleanedFile();\n\n if (!cleaned) {\n return null;\n }\n\n const resolved = await coreContentStructure.resolve();\n\n return {\n collectionTypes: resolved.collectionTypes.map(pruneNode),\n singleTypes: resolved.singleTypes.map(pruneNode),\n };\n },\n };\n};\n\nexport default createContentStructureService;\n"],"names":["isInternalUid","uid","startsWith","createContentStructureService","strapi","coreContentStructure","get","isContentTypeVisible","model","getOr","isFileableContentType","schema","contentTypes","pruneNode","node","children","filter","child","type","map","getContentStructure","cleaned","getCleanedFile","resolved","resolve","collectionTypes","singleTypes"],"mappings":";;AAUA,MAAMA,gBAAgB,CAACC,GAAAA,GAAAA;AACrB,IAAA,OAAOA,IAAIC,UAAU,CAAC,SAAA,CAAA,IAAcD,GAAAA,CAAIC,UAAU,CAAC,UAAA,CAAA;AACrD,CAAA;AAEA,MAAMC,6BAAAA,GAAgC,CAAC,EAAEC,MAAM,EAA2B,GAAA;IACxE,MAAMC,oBAAAA,GAAoDD,MAAAA,CAAOE,GAAG,CAAC,mBAAA,CAAA;AAErE,IAAA,MAAMC,uBAAuB,CAACC,KAAAA,GAAAA;QAC5B,OAAOC,KAAAA,CAAM,IAAA,EAAM,uCAAA,EAAyCD,KAAAA,CAAAA,KAAW,IAAA;AACzE,IAAA,CAAA;AAEA;;;MAIA,MAAME,wBAAwB,CAACT,GAAAA,GAAAA;AAC7B,QAAA,MAAMU,MAAAA,GAASP,MAAAA,CAAOQ,YAAY,CAACX,GAAAA,CAAI;AAEvC,QAAA,IAAI,CAACU,MAAAA,EAAQ;YACX,OAAO,KAAA;AACT,QAAA;AAEA,QAAA,IAAIX,cAAcC,GAAAA,CAAAA,EAAM;YACtB,OAAO,KAAA;AACT,QAAA;AAEA,QAAA,OAAOM,oBAAAA,CAAqBI,MAAAA,CAAAA;AAC9B,IAAA,CAAA;AAEA,IAAA,MAAME,YAAY,CAACC,IAAAA,GAAAA;AACjB,QAAA,MAAMC,WAAWD,IAAAA,CAAKC,QAAQ,CAC3BC,MAAM,CAAC,CAACC,KAAAA,GAAAA;AACP,YAAA,OAAOA,MAAMC,IAAI,KAAK,aAAA,IAAiBR,qBAAAA,CAAsBO,MAAMhB,GAAG,CAAA;QACxE,CAAA,CAAA,CACCkB,GAAG,CAAC,CAACF,KAAAA,GAAAA;AACJ,YAAA,OAAOA,KAAAA,CAAMC,IAAI,KAAK,OAAA,GAAUL,UAAUI,KAAAA,CAAAA,GAASA,KAAAA;AACrD,QAAA,CAAA,CAAA;QAEF,OAAO;AAAE,YAAA,GAAGH,IAAI;AAAEC,YAAAA;AAAS,SAAA;AAC7B,IAAA,CAAA;IAEA,OAAO;QACL,MAAMK,mBAAAA,CAAAA,GAAAA;YACJ,MAAMC,OAAAA,GAAU,MAAMhB,oBAAAA,CAAqBiB,cAAc,EAAA;AAEzD,YAAA,IAAI,CAACD,OAAAA,EAAS;gBACZ,OAAO,IAAA;AACT,YAAA;YAEA,MAAME,QAAAA,GAAW,MAAMlB,oBAAAA,CAAqBmB,OAAO,EAAA;YAEnD,OAAO;AACLC,gBAAAA,eAAAA,EAAiBF,QAAAA,CAASE,eAAe,CAACN,GAAG,CAACN,SAAAA,CAAAA;AAC9Ca,gBAAAA,WAAAA,EAAaH,QAAAA,CAASG,WAAW,CAACP,GAAG,CAACN,SAAAA;AACxC,aAAA;AACF,QAAA;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"content-structure.mjs","sources":["../../../server/src/services/content-structure.ts"],"sourcesContent":["import type { Core, Modules, UID, Struct } from '@strapi/types';\nimport { get } from 'lodash';\n\ninterface CoreContentStructureService {\n getCleanedFile(): Promise<Modules.ContentStructure.ContentStructureFile | null>;\n resolve(): Promise<Modules.ContentStructure.ResolvedContentStructure>;\n}\n\ntype ResolvedGroupNode = Modules.ContentStructure.ResolvedGroupNode;\n\nconst isInternalUid = (uid: string): boolean => {\n return uid.startsWith('admin::') || uid.startsWith('strapi::');\n};\n\nconst createContentStructureService = ({ strapi }: { strapi: Core.Strapi }) => {\n const coreContentStructure: CoreContentStructureService = strapi.get('content-structure');\n\n const isContentTypeVisible = (model: Struct.ContentTypeSchema) => {\n return get(model, 'pluginOptions.content-manager.visible', true) === true;\n };\n\n /**\n * Whether a content type may appear in the folder nav: a known, user-facing type\n * that is neither internal nor hidden via pluginOptions.\n */\n const isFileableContentType = (uid: UID.ContentType): boolean => {\n const schema = strapi.contentTypes[uid];\n\n if (!schema) {\n return false;\n }\n\n if (isInternalUid(uid)) {\n return false;\n }\n\n return isContentTypeVisible(schema);\n };\n\n const pruneNode = (node: ResolvedGroupNode): ResolvedGroupNode => {\n const children = node.children\n .filter((child) => {\n return child.type !== 'contentType' || isFileableContentType(child.uid);\n })\n .map((child) => {\n return child.type === 'group' ? pruneNode(child) : child;\n });\n\n return { ...node, children };\n };\n\n return {\n async getContentStructure(): Promise<Modules.ContentStructure.ResolvedContentStructure | null> {\n const cleaned = await coreContentStructure.getCleanedFile();\n\n if (!cleaned) {\n return null;\n }\n\n const resolved = await coreContentStructure.resolve();\n\n return {\n collectionTypes: resolved.collectionTypes.map(pruneNode),\n singleTypes: resolved.singleTypes.map(pruneNode),\n };\n },\n };\n};\n\nexport default createContentStructureService;\n"],"names":["isInternalUid","uid","startsWith","createContentStructureService","strapi","coreContentStructure","get","isContentTypeVisible","model","isFileableContentType","schema","contentTypes","pruneNode","node","children","filter","child","type","map","getContentStructure","cleaned","getCleanedFile","resolved","resolve","collectionTypes","singleTypes"],"mappings":";;AAUA,MAAMA,gBAAgB,CAACC,GAAAA,GAAAA;AACrB,IAAA,OAAOA,IAAIC,UAAU,CAAC,SAAA,CAAA,IAAcD,GAAAA,CAAIC,UAAU,CAAC,UAAA,CAAA;AACrD,CAAA;AAEA,MAAMC,6BAAAA,GAAgC,CAAC,EAAEC,MAAM,EAA2B,GAAA;IACxE,MAAMC,oBAAAA,GAAoDD,MAAAA,CAAOE,GAAG,CAAC,mBAAA,CAAA;AAErE,IAAA,MAAMC,uBAAuB,CAACC,KAAAA,GAAAA;QAC5B,OAAOF,GAAAA,CAAIE,KAAAA,EAAO,uCAAA,EAAyC,IAAA,CAAA,KAAU,IAAA;AACvE,IAAA,CAAA;AAEA;;;MAIA,MAAMC,wBAAwB,CAACR,GAAAA,GAAAA;AAC7B,QAAA,MAAMS,MAAAA,GAASN,MAAAA,CAAOO,YAAY,CAACV,GAAAA,CAAI;AAEvC,QAAA,IAAI,CAACS,MAAAA,EAAQ;YACX,OAAO,KAAA;AACT,QAAA;AAEA,QAAA,IAAIV,cAAcC,GAAAA,CAAAA,EAAM;YACtB,OAAO,KAAA;AACT,QAAA;AAEA,QAAA,OAAOM,oBAAAA,CAAqBG,MAAAA,CAAAA;AAC9B,IAAA,CAAA;AAEA,IAAA,MAAME,YAAY,CAACC,IAAAA,GAAAA;AACjB,QAAA,MAAMC,WAAWD,IAAAA,CAAKC,QAAQ,CAC3BC,MAAM,CAAC,CAACC,KAAAA,GAAAA;AACP,YAAA,OAAOA,MAAMC,IAAI,KAAK,aAAA,IAAiBR,qBAAAA,CAAsBO,MAAMf,GAAG,CAAA;QACxE,CAAA,CAAA,CACCiB,GAAG,CAAC,CAACF,KAAAA,GAAAA;AACJ,YAAA,OAAOA,KAAAA,CAAMC,IAAI,KAAK,OAAA,GAAUL,UAAUI,KAAAA,CAAAA,GAASA,KAAAA;AACrD,QAAA,CAAA,CAAA;QAEF,OAAO;AAAE,YAAA,GAAGH,IAAI;AAAEC,YAAAA;AAAS,SAAA;AAC7B,IAAA,CAAA;IAEA,OAAO;QACL,MAAMK,mBAAAA,CAAAA,GAAAA;YACJ,MAAMC,OAAAA,GAAU,MAAMf,oBAAAA,CAAqBgB,cAAc,EAAA;AAEzD,YAAA,IAAI,CAACD,OAAAA,EAAS;gBACZ,OAAO,IAAA;AACT,YAAA;YAEA,MAAME,QAAAA,GAAW,MAAMjB,oBAAAA,CAAqBkB,OAAO,EAAA;YAEnD,OAAO;AACLC,gBAAAA,eAAAA,EAAiBF,QAAAA,CAASE,eAAe,CAACN,GAAG,CAACN,SAAAA,CAAAA;AAC9Ca,gBAAAA,WAAAA,EAAaH,QAAAA,CAASG,WAAW,CAACP,GAAG,CAACN,SAAAA;AACxC,aAAA;AACF,QAAA;AACF,KAAA;AACF;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var _ = require('lodash');
4
4
  var strapiUtils = require('@strapi/utils');
5
5
  var index = require('../utils/index.js');
6
6
  var store = require('./utils/store.js');
@@ -11,7 +11,7 @@ const configurationService = configuration({
11
11
  prefix: 'content_types',
12
12
  getModels () {
13
13
  const { toContentManagerModel } = index.getService('data-mapper');
14
- return fp.mapValues(toContentManagerModel, strapi.contentTypes);
14
+ return _.mapValues(strapi.contentTypes, (value)=>toContentManagerModel(value));
15
15
  }
16
16
  });
17
17
  const service = ({ strapi: strapi1 })=>({
@@ -22,7 +22,7 @@ const service = ({ strapi: strapi1 })=>({
22
22
  findContentType (uid) {
23
23
  const { toContentManagerModel } = index.getService('data-mapper');
24
24
  const contentType = strapi1.contentTypes[uid];
25
- return fp.isNil(contentType) ? contentType : toContentManagerModel(contentType);
25
+ return contentType == null ? contentType : toContentManagerModel(contentType);
26
26
  },
27
27
  findDisplayedContentTypes () {
28
28
  return this.findAllContentTypes().filter(// TODO
@@ -1 +1 @@
1
- {"version":3,"file":"content-types.js","sources":["../../../server/src/services/content-types.ts"],"sourcesContent":["import { isNil, mapValues } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport type { UID, Struct, Core } from '@strapi/types';\n\nimport type { ConfigurationUpdate } from './configuration';\n\nimport { getService } from '../utils';\nimport storeUtils from './utils/store';\nimport createConfigurationService from './configuration';\n\nconst configurationService = createConfigurationService({\n storeUtils,\n prefix: 'content_types',\n getModels() {\n const { toContentManagerModel } = getService('data-mapper');\n\n return mapValues(toContentManagerModel, strapi.contentTypes);\n },\n});\n\nconst service = ({ strapi }: { strapi: Core.Strapi }) => ({\n findAllContentTypes() {\n const { toContentManagerModel } = getService('data-mapper');\n\n return Object.values(strapi.contentTypes).map(toContentManagerModel);\n },\n\n findContentType(uid: UID.ContentType) {\n const { toContentManagerModel } = getService('data-mapper');\n\n const contentType = strapi.contentTypes[uid];\n\n return isNil(contentType) ? contentType : toContentManagerModel(contentType);\n },\n\n findDisplayedContentTypes() {\n return this.findAllContentTypes().filter(\n // TODO\n // @ts-expect-error should be resolved from data-mapper types\n ({ isDisplayed }: { isDisplayed: boolean }) => isDisplayed === true\n );\n },\n\n findContentTypesByKind(kind: { kind: Struct.ContentTypeKind | undefined }) {\n if (!kind) {\n return this.findAllContentTypes();\n }\n\n // @ts-expect-error TODO when adding types\n return this.findAllContentTypes().filter(contentTypesUtils.isKind(kind));\n },\n\n async findConfiguration(contentType: Struct.ContentTypeSchema) {\n const configuration = await configurationService.getConfiguration(contentType.uid);\n\n return {\n uid: contentType.uid,\n ...configuration,\n };\n },\n\n async updateConfiguration(\n contentType: Struct.ContentTypeSchema,\n newConfiguration: ConfigurationUpdate\n ) {\n await configurationService.setConfiguration(contentType.uid, newConfiguration);\n\n return this.findConfiguration(contentType);\n },\n\n findComponentsConfigurations(contentType: Struct.ContentTypeSchema) {\n // delegate to componentService\n return getService('components').findComponentsConfigurations(contentType);\n },\n\n syncConfigurations() {\n return configurationService.syncConfigurations();\n },\n});\n\nexport default service;\n"],"names":["configurationService","createConfigurationService","storeUtils","prefix","getModels","toContentManagerModel","getService","mapValues","strapi","contentTypes","service","findAllContentTypes","Object","values","map","findContentType","uid","contentType","isNil","findDisplayedContentTypes","filter","isDisplayed","findContentTypesByKind","kind","contentTypesUtils","isKind","findConfiguration","configuration","getConfiguration","updateConfiguration","newConfiguration","setConfiguration","findComponentsConfigurations","syncConfigurations"],"mappings":";;;;;;;;AAWA,MAAMA,uBAAuBC,aAAAA,CAA2B;AACtDC,gBAAAA,KAAAA;IACAC,MAAAA,EAAQ,eAAA;AACRC,IAAAA,SAAAA,CAAAA,GAAAA;AACE,QAAA,MAAM,EAAEC,qBAAqB,EAAE,GAAGC,gBAAAA,CAAW,aAAA,CAAA;QAE7C,OAAOC,YAAAA,CAAUF,qBAAAA,EAAuBG,MAAAA,CAAOC,YAAY,CAAA;AAC7D,IAAA;AACF,CAAA,CAAA;AAEA,MAAMC,UAAU,CAAC,EAAEF,QAAAA,OAAM,EAA2B,IAAM;AACxDG,QAAAA,mBAAAA,CAAAA,GAAAA;AACE,YAAA,MAAM,EAAEN,qBAAqB,EAAE,GAAGC,gBAAAA,CAAW,aAAA,CAAA;AAE7C,YAAA,OAAOM,OAAOC,MAAM,CAACL,QAAOC,YAAY,CAAA,CAAEK,GAAG,CAACT,qBAAAA,CAAAA;AAChD,QAAA,CAAA;AAEAU,QAAAA,eAAAA,CAAAA,CAAgBC,GAAoB,EAAA;AAClC,YAAA,MAAM,EAAEX,qBAAqB,EAAE,GAAGC,gBAAAA,CAAW,aAAA,CAAA;AAE7C,YAAA,MAAMW,WAAAA,GAAcT,OAAAA,CAAOC,YAAY,CAACO,GAAAA,CAAI;YAE5C,OAAOE,QAAAA,CAAMD,WAAAA,CAAAA,GAAeA,WAAAA,GAAcZ,qBAAAA,CAAsBY,WAAAA,CAAAA;AAClE,QAAA,CAAA;AAEAE,QAAAA,yBAAAA,CAAAA,GAAAA;AACE,YAAA,OAAO,IAAI,CAACR,mBAAmB,EAAA,CAAGS,MAAM;;AAGtC,YAAA,CAAC,EAAEC,WAAW,EAA4B,GAAKA,WAAAA,KAAgB,IAAA,CAAA;AAEnE,QAAA,CAAA;AAEAC,QAAAA,sBAAAA,CAAAA,CAAuBC,IAAkD,EAAA;AACvE,YAAA,IAAI,CAACA,IAAAA,EAAM;gBACT,OAAO,IAAI,CAACZ,mBAAmB,EAAA;AACjC,YAAA;;YAGA,OAAO,IAAI,CAACA,mBAAmB,EAAA,CAAGS,MAAM,CAACI,wBAAAA,CAAkBC,MAAM,CAACF,IAAAA,CAAAA,CAAAA;AACpE,QAAA,CAAA;AAEA,QAAA,MAAMG,mBAAkBT,WAAqC,EAAA;AAC3D,YAAA,MAAMU,gBAAgB,MAAM3B,oBAAAA,CAAqB4B,gBAAgB,CAACX,YAAYD,GAAG,CAAA;YAEjF,OAAO;AACLA,gBAAAA,GAAAA,EAAKC,YAAYD,GAAG;AACpB,gBAAA,GAAGW;AACL,aAAA;AACF,QAAA,CAAA;QAEA,MAAME,mBAAAA,CAAAA,CACJZ,WAAqC,EACrCa,gBAAqC,EAAA;AAErC,YAAA,MAAM9B,oBAAAA,CAAqB+B,gBAAgB,CAACd,WAAAA,CAAYD,GAAG,EAAEc,gBAAAA,CAAAA;YAE7D,OAAO,IAAI,CAACJ,iBAAiB,CAACT,WAAAA,CAAAA;AAChC,QAAA,CAAA;AAEAe,QAAAA,4BAAAA,CAAAA,CAA6Bf,WAAqC,EAAA;;YAEhE,OAAOX,gBAAAA,CAAW,YAAA,CAAA,CAAc0B,4BAA4B,CAACf,WAAAA,CAAAA;AAC/D,QAAA,CAAA;AAEAgB,QAAAA,kBAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOjC,qBAAqBiC,kBAAkB,EAAA;AAChD,QAAA;KACF;;;;"}
1
+ {"version":3,"file":"content-types.js","sources":["../../../server/src/services/content-types.ts"],"sourcesContent":["import { mapValues } from 'lodash';\n\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport type { UID, Struct, Core } from '@strapi/types';\n\nimport type { ConfigurationUpdate } from './configuration';\n\nimport { getService } from '../utils';\nimport storeUtils from './utils/store';\nimport createConfigurationService from './configuration';\n\nconst configurationService = createConfigurationService({\n storeUtils,\n prefix: 'content_types',\n getModels() {\n const { toContentManagerModel } = getService('data-mapper');\n\n return mapValues(strapi.contentTypes, (value) => toContentManagerModel(value));\n },\n});\n\nconst service = ({ strapi }: { strapi: Core.Strapi }) => ({\n findAllContentTypes() {\n const { toContentManagerModel } = getService('data-mapper');\n\n return Object.values(strapi.contentTypes).map(toContentManagerModel);\n },\n\n findContentType(uid: UID.ContentType) {\n const { toContentManagerModel } = getService('data-mapper');\n\n const contentType = strapi.contentTypes[uid];\n\n return contentType == null ? contentType : toContentManagerModel(contentType);\n },\n\n findDisplayedContentTypes() {\n return this.findAllContentTypes().filter(\n // TODO\n // @ts-expect-error should be resolved from data-mapper types\n ({ isDisplayed }: { isDisplayed: boolean }) => isDisplayed === true\n );\n },\n\n findContentTypesByKind(kind: { kind: Struct.ContentTypeKind | undefined }) {\n if (!kind) {\n return this.findAllContentTypes();\n }\n\n // @ts-expect-error TODO when adding types\n return this.findAllContentTypes().filter(contentTypesUtils.isKind(kind));\n },\n\n async findConfiguration(contentType: Struct.ContentTypeSchema) {\n const configuration = await configurationService.getConfiguration(contentType.uid);\n\n return {\n uid: contentType.uid,\n ...configuration,\n };\n },\n\n async updateConfiguration(\n contentType: Struct.ContentTypeSchema,\n newConfiguration: ConfigurationUpdate\n ) {\n await configurationService.setConfiguration(contentType.uid, newConfiguration);\n\n return this.findConfiguration(contentType);\n },\n\n findComponentsConfigurations(contentType: Struct.ContentTypeSchema) {\n // delegate to componentService\n return getService('components').findComponentsConfigurations(contentType);\n },\n\n syncConfigurations() {\n return configurationService.syncConfigurations();\n },\n});\n\nexport default service;\n"],"names":["configurationService","createConfigurationService","storeUtils","prefix","getModels","toContentManagerModel","getService","mapValues","strapi","contentTypes","value","service","findAllContentTypes","Object","values","map","findContentType","uid","contentType","findDisplayedContentTypes","filter","isDisplayed","findContentTypesByKind","kind","contentTypesUtils","isKind","findConfiguration","configuration","getConfiguration","updateConfiguration","newConfiguration","setConfiguration","findComponentsConfigurations","syncConfigurations"],"mappings":";;;;;;;;AAYA,MAAMA,uBAAuBC,aAAAA,CAA2B;AACtDC,gBAAAA,KAAAA;IACAC,MAAAA,EAAQ,eAAA;AACRC,IAAAA,SAAAA,CAAAA,GAAAA;AACE,QAAA,MAAM,EAAEC,qBAAqB,EAAE,GAAGC,gBAAAA,CAAW,aAAA,CAAA;AAE7C,QAAA,OAAOC,YAAUC,MAAAA,CAAOC,YAAY,EAAE,CAACC,QAAUL,qBAAAA,CAAsBK,KAAAA,CAAAA,CAAAA;AACzE,IAAA;AACF,CAAA,CAAA;AAEA,MAAMC,UAAU,CAAC,EAAEH,QAAAA,OAAM,EAA2B,IAAM;AACxDI,QAAAA,mBAAAA,CAAAA,GAAAA;AACE,YAAA,MAAM,EAAEP,qBAAqB,EAAE,GAAGC,gBAAAA,CAAW,aAAA,CAAA;AAE7C,YAAA,OAAOO,OAAOC,MAAM,CAACN,QAAOC,YAAY,CAAA,CAAEM,GAAG,CAACV,qBAAAA,CAAAA;AAChD,QAAA,CAAA;AAEAW,QAAAA,eAAAA,CAAAA,CAAgBC,GAAoB,EAAA;AAClC,YAAA,MAAM,EAAEZ,qBAAqB,EAAE,GAAGC,gBAAAA,CAAW,aAAA,CAAA;AAE7C,YAAA,MAAMY,WAAAA,GAAcV,OAAAA,CAAOC,YAAY,CAACQ,GAAAA,CAAI;YAE5C,OAAOC,WAAAA,IAAe,IAAA,GAAOA,WAAAA,GAAcb,qBAAAA,CAAsBa,WAAAA,CAAAA;AACnE,QAAA,CAAA;AAEAC,QAAAA,yBAAAA,CAAAA,GAAAA;AACE,YAAA,OAAO,IAAI,CAACP,mBAAmB,EAAA,CAAGQ,MAAM;;AAGtC,YAAA,CAAC,EAAEC,WAAW,EAA4B,GAAKA,WAAAA,KAAgB,IAAA,CAAA;AAEnE,QAAA,CAAA;AAEAC,QAAAA,sBAAAA,CAAAA,CAAuBC,IAAkD,EAAA;AACvE,YAAA,IAAI,CAACA,IAAAA,EAAM;gBACT,OAAO,IAAI,CAACX,mBAAmB,EAAA;AACjC,YAAA;;YAGA,OAAO,IAAI,CAACA,mBAAmB,EAAA,CAAGQ,MAAM,CAACI,wBAAAA,CAAkBC,MAAM,CAACF,IAAAA,CAAAA,CAAAA;AACpE,QAAA,CAAA;AAEA,QAAA,MAAMG,mBAAkBR,WAAqC,EAAA;AAC3D,YAAA,MAAMS,gBAAgB,MAAM3B,oBAAAA,CAAqB4B,gBAAgB,CAACV,YAAYD,GAAG,CAAA;YAEjF,OAAO;AACLA,gBAAAA,GAAAA,EAAKC,YAAYD,GAAG;AACpB,gBAAA,GAAGU;AACL,aAAA;AACF,QAAA,CAAA;QAEA,MAAME,mBAAAA,CAAAA,CACJX,WAAqC,EACrCY,gBAAqC,EAAA;AAErC,YAAA,MAAM9B,oBAAAA,CAAqB+B,gBAAgB,CAACb,WAAAA,CAAYD,GAAG,EAAEa,gBAAAA,CAAAA;YAE7D,OAAO,IAAI,CAACJ,iBAAiB,CAACR,WAAAA,CAAAA;AAChC,QAAA,CAAA;AAEAc,QAAAA,4BAAAA,CAAAA,CAA6Bd,WAAqC,EAAA;;YAEhE,OAAOZ,gBAAAA,CAAW,YAAA,CAAA,CAAc0B,4BAA4B,CAACd,WAAAA,CAAAA;AAC/D,QAAA,CAAA;AAEAe,QAAAA,kBAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOjC,qBAAqBiC,kBAAkB,EAAA;AAChD,QAAA;KACF;;;;"}
@@ -1,4 +1,4 @@
1
- import { isNil, mapValues } from 'lodash/fp';
1
+ import { mapValues } from 'lodash';
2
2
  import { contentTypes } from '@strapi/utils';
3
3
  import { getService } from '../utils/index.mjs';
4
4
  import storeUtils from './utils/store.mjs';
@@ -9,7 +9,7 @@ const configurationService = createConfigurationService({
9
9
  prefix: 'content_types',
10
10
  getModels () {
11
11
  const { toContentManagerModel } = getService('data-mapper');
12
- return mapValues(toContentManagerModel, strapi.contentTypes);
12
+ return mapValues(strapi.contentTypes, (value)=>toContentManagerModel(value));
13
13
  }
14
14
  });
15
15
  const service = ({ strapi: strapi1 })=>({
@@ -20,7 +20,7 @@ const service = ({ strapi: strapi1 })=>({
20
20
  findContentType (uid) {
21
21
  const { toContentManagerModel } = getService('data-mapper');
22
22
  const contentType = strapi1.contentTypes[uid];
23
- return isNil(contentType) ? contentType : toContentManagerModel(contentType);
23
+ return contentType == null ? contentType : toContentManagerModel(contentType);
24
24
  },
25
25
  findDisplayedContentTypes () {
26
26
  return this.findAllContentTypes().filter(// TODO
@@ -1 +1 @@
1
- {"version":3,"file":"content-types.mjs","sources":["../../../server/src/services/content-types.ts"],"sourcesContent":["import { isNil, mapValues } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport type { UID, Struct, Core } from '@strapi/types';\n\nimport type { ConfigurationUpdate } from './configuration';\n\nimport { getService } from '../utils';\nimport storeUtils from './utils/store';\nimport createConfigurationService from './configuration';\n\nconst configurationService = createConfigurationService({\n storeUtils,\n prefix: 'content_types',\n getModels() {\n const { toContentManagerModel } = getService('data-mapper');\n\n return mapValues(toContentManagerModel, strapi.contentTypes);\n },\n});\n\nconst service = ({ strapi }: { strapi: Core.Strapi }) => ({\n findAllContentTypes() {\n const { toContentManagerModel } = getService('data-mapper');\n\n return Object.values(strapi.contentTypes).map(toContentManagerModel);\n },\n\n findContentType(uid: UID.ContentType) {\n const { toContentManagerModel } = getService('data-mapper');\n\n const contentType = strapi.contentTypes[uid];\n\n return isNil(contentType) ? contentType : toContentManagerModel(contentType);\n },\n\n findDisplayedContentTypes() {\n return this.findAllContentTypes().filter(\n // TODO\n // @ts-expect-error should be resolved from data-mapper types\n ({ isDisplayed }: { isDisplayed: boolean }) => isDisplayed === true\n );\n },\n\n findContentTypesByKind(kind: { kind: Struct.ContentTypeKind | undefined }) {\n if (!kind) {\n return this.findAllContentTypes();\n }\n\n // @ts-expect-error TODO when adding types\n return this.findAllContentTypes().filter(contentTypesUtils.isKind(kind));\n },\n\n async findConfiguration(contentType: Struct.ContentTypeSchema) {\n const configuration = await configurationService.getConfiguration(contentType.uid);\n\n return {\n uid: contentType.uid,\n ...configuration,\n };\n },\n\n async updateConfiguration(\n contentType: Struct.ContentTypeSchema,\n newConfiguration: ConfigurationUpdate\n ) {\n await configurationService.setConfiguration(contentType.uid, newConfiguration);\n\n return this.findConfiguration(contentType);\n },\n\n findComponentsConfigurations(contentType: Struct.ContentTypeSchema) {\n // delegate to componentService\n return getService('components').findComponentsConfigurations(contentType);\n },\n\n syncConfigurations() {\n return configurationService.syncConfigurations();\n },\n});\n\nexport default service;\n"],"names":["configurationService","createConfigurationService","storeUtils","prefix","getModels","toContentManagerModel","getService","mapValues","strapi","contentTypes","service","findAllContentTypes","Object","values","map","findContentType","uid","contentType","isNil","findDisplayedContentTypes","filter","isDisplayed","findContentTypesByKind","kind","contentTypesUtils","isKind","findConfiguration","configuration","getConfiguration","updateConfiguration","newConfiguration","setConfiguration","findComponentsConfigurations","syncConfigurations"],"mappings":";;;;;;AAWA,MAAMA,uBAAuBC,0BAAAA,CAA2B;AACtDC,IAAAA,UAAAA;IACAC,MAAAA,EAAQ,eAAA;AACRC,IAAAA,SAAAA,CAAAA,GAAAA;AACE,QAAA,MAAM,EAAEC,qBAAqB,EAAE,GAAGC,UAAAA,CAAW,aAAA,CAAA;QAE7C,OAAOC,SAAAA,CAAUF,qBAAAA,EAAuBG,MAAAA,CAAOC,YAAY,CAAA;AAC7D,IAAA;AACF,CAAA,CAAA;AAEA,MAAMC,UAAU,CAAC,EAAEF,QAAAA,OAAM,EAA2B,IAAM;AACxDG,QAAAA,mBAAAA,CAAAA,GAAAA;AACE,YAAA,MAAM,EAAEN,qBAAqB,EAAE,GAAGC,UAAAA,CAAW,aAAA,CAAA;AAE7C,YAAA,OAAOM,OAAOC,MAAM,CAACL,QAAOC,YAAY,CAAA,CAAEK,GAAG,CAACT,qBAAAA,CAAAA;AAChD,QAAA,CAAA;AAEAU,QAAAA,eAAAA,CAAAA,CAAgBC,GAAoB,EAAA;AAClC,YAAA,MAAM,EAAEX,qBAAqB,EAAE,GAAGC,UAAAA,CAAW,aAAA,CAAA;AAE7C,YAAA,MAAMW,WAAAA,GAAcT,OAAAA,CAAOC,YAAY,CAACO,GAAAA,CAAI;YAE5C,OAAOE,KAAAA,CAAMD,WAAAA,CAAAA,GAAeA,WAAAA,GAAcZ,qBAAAA,CAAsBY,WAAAA,CAAAA;AAClE,QAAA,CAAA;AAEAE,QAAAA,yBAAAA,CAAAA,GAAAA;AACE,YAAA,OAAO,IAAI,CAACR,mBAAmB,EAAA,CAAGS,MAAM;;AAGtC,YAAA,CAAC,EAAEC,WAAW,EAA4B,GAAKA,WAAAA,KAAgB,IAAA,CAAA;AAEnE,QAAA,CAAA;AAEAC,QAAAA,sBAAAA,CAAAA,CAAuBC,IAAkD,EAAA;AACvE,YAAA,IAAI,CAACA,IAAAA,EAAM;gBACT,OAAO,IAAI,CAACZ,mBAAmB,EAAA;AACjC,YAAA;;YAGA,OAAO,IAAI,CAACA,mBAAmB,EAAA,CAAGS,MAAM,CAACI,YAAAA,CAAkBC,MAAM,CAACF,IAAAA,CAAAA,CAAAA;AACpE,QAAA,CAAA;AAEA,QAAA,MAAMG,mBAAkBT,WAAqC,EAAA;AAC3D,YAAA,MAAMU,gBAAgB,MAAM3B,oBAAAA,CAAqB4B,gBAAgB,CAACX,YAAYD,GAAG,CAAA;YAEjF,OAAO;AACLA,gBAAAA,GAAAA,EAAKC,YAAYD,GAAG;AACpB,gBAAA,GAAGW;AACL,aAAA;AACF,QAAA,CAAA;QAEA,MAAME,mBAAAA,CAAAA,CACJZ,WAAqC,EACrCa,gBAAqC,EAAA;AAErC,YAAA,MAAM9B,oBAAAA,CAAqB+B,gBAAgB,CAACd,WAAAA,CAAYD,GAAG,EAAEc,gBAAAA,CAAAA;YAE7D,OAAO,IAAI,CAACJ,iBAAiB,CAACT,WAAAA,CAAAA;AAChC,QAAA,CAAA;AAEAe,QAAAA,4BAAAA,CAAAA,CAA6Bf,WAAqC,EAAA;;YAEhE,OAAOX,UAAAA,CAAW,YAAA,CAAA,CAAc0B,4BAA4B,CAACf,WAAAA,CAAAA;AAC/D,QAAA,CAAA;AAEAgB,QAAAA,kBAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOjC,qBAAqBiC,kBAAkB,EAAA;AAChD,QAAA;KACF;;;;"}
1
+ {"version":3,"file":"content-types.mjs","sources":["../../../server/src/services/content-types.ts"],"sourcesContent":["import { mapValues } from 'lodash';\n\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport type { UID, Struct, Core } from '@strapi/types';\n\nimport type { ConfigurationUpdate } from './configuration';\n\nimport { getService } from '../utils';\nimport storeUtils from './utils/store';\nimport createConfigurationService from './configuration';\n\nconst configurationService = createConfigurationService({\n storeUtils,\n prefix: 'content_types',\n getModels() {\n const { toContentManagerModel } = getService('data-mapper');\n\n return mapValues(strapi.contentTypes, (value) => toContentManagerModel(value));\n },\n});\n\nconst service = ({ strapi }: { strapi: Core.Strapi }) => ({\n findAllContentTypes() {\n const { toContentManagerModel } = getService('data-mapper');\n\n return Object.values(strapi.contentTypes).map(toContentManagerModel);\n },\n\n findContentType(uid: UID.ContentType) {\n const { toContentManagerModel } = getService('data-mapper');\n\n const contentType = strapi.contentTypes[uid];\n\n return contentType == null ? contentType : toContentManagerModel(contentType);\n },\n\n findDisplayedContentTypes() {\n return this.findAllContentTypes().filter(\n // TODO\n // @ts-expect-error should be resolved from data-mapper types\n ({ isDisplayed }: { isDisplayed: boolean }) => isDisplayed === true\n );\n },\n\n findContentTypesByKind(kind: { kind: Struct.ContentTypeKind | undefined }) {\n if (!kind) {\n return this.findAllContentTypes();\n }\n\n // @ts-expect-error TODO when adding types\n return this.findAllContentTypes().filter(contentTypesUtils.isKind(kind));\n },\n\n async findConfiguration(contentType: Struct.ContentTypeSchema) {\n const configuration = await configurationService.getConfiguration(contentType.uid);\n\n return {\n uid: contentType.uid,\n ...configuration,\n };\n },\n\n async updateConfiguration(\n contentType: Struct.ContentTypeSchema,\n newConfiguration: ConfigurationUpdate\n ) {\n await configurationService.setConfiguration(contentType.uid, newConfiguration);\n\n return this.findConfiguration(contentType);\n },\n\n findComponentsConfigurations(contentType: Struct.ContentTypeSchema) {\n // delegate to componentService\n return getService('components').findComponentsConfigurations(contentType);\n },\n\n syncConfigurations() {\n return configurationService.syncConfigurations();\n },\n});\n\nexport default service;\n"],"names":["configurationService","createConfigurationService","storeUtils","prefix","getModels","toContentManagerModel","getService","mapValues","strapi","contentTypes","value","service","findAllContentTypes","Object","values","map","findContentType","uid","contentType","findDisplayedContentTypes","filter","isDisplayed","findContentTypesByKind","kind","contentTypesUtils","isKind","findConfiguration","configuration","getConfiguration","updateConfiguration","newConfiguration","setConfiguration","findComponentsConfigurations","syncConfigurations"],"mappings":";;;;;;AAYA,MAAMA,uBAAuBC,0BAAAA,CAA2B;AACtDC,IAAAA,UAAAA;IACAC,MAAAA,EAAQ,eAAA;AACRC,IAAAA,SAAAA,CAAAA,GAAAA;AACE,QAAA,MAAM,EAAEC,qBAAqB,EAAE,GAAGC,UAAAA,CAAW,aAAA,CAAA;AAE7C,QAAA,OAAOC,UAAUC,MAAAA,CAAOC,YAAY,EAAE,CAACC,QAAUL,qBAAAA,CAAsBK,KAAAA,CAAAA,CAAAA;AACzE,IAAA;AACF,CAAA,CAAA;AAEA,MAAMC,UAAU,CAAC,EAAEH,QAAAA,OAAM,EAA2B,IAAM;AACxDI,QAAAA,mBAAAA,CAAAA,GAAAA;AACE,YAAA,MAAM,EAAEP,qBAAqB,EAAE,GAAGC,UAAAA,CAAW,aAAA,CAAA;AAE7C,YAAA,OAAOO,OAAOC,MAAM,CAACN,QAAOC,YAAY,CAAA,CAAEM,GAAG,CAACV,qBAAAA,CAAAA;AAChD,QAAA,CAAA;AAEAW,QAAAA,eAAAA,CAAAA,CAAgBC,GAAoB,EAAA;AAClC,YAAA,MAAM,EAAEZ,qBAAqB,EAAE,GAAGC,UAAAA,CAAW,aAAA,CAAA;AAE7C,YAAA,MAAMY,WAAAA,GAAcV,OAAAA,CAAOC,YAAY,CAACQ,GAAAA,CAAI;YAE5C,OAAOC,WAAAA,IAAe,IAAA,GAAOA,WAAAA,GAAcb,qBAAAA,CAAsBa,WAAAA,CAAAA;AACnE,QAAA,CAAA;AAEAC,QAAAA,yBAAAA,CAAAA,GAAAA;AACE,YAAA,OAAO,IAAI,CAACP,mBAAmB,EAAA,CAAGQ,MAAM;;AAGtC,YAAA,CAAC,EAAEC,WAAW,EAA4B,GAAKA,WAAAA,KAAgB,IAAA,CAAA;AAEnE,QAAA,CAAA;AAEAC,QAAAA,sBAAAA,CAAAA,CAAuBC,IAAkD,EAAA;AACvE,YAAA,IAAI,CAACA,IAAAA,EAAM;gBACT,OAAO,IAAI,CAACX,mBAAmB,EAAA;AACjC,YAAA;;YAGA,OAAO,IAAI,CAACA,mBAAmB,EAAA,CAAGQ,MAAM,CAACI,YAAAA,CAAkBC,MAAM,CAACF,IAAAA,CAAAA,CAAAA;AACpE,QAAA,CAAA;AAEA,QAAA,MAAMG,mBAAkBR,WAAqC,EAAA;AAC3D,YAAA,MAAMS,gBAAgB,MAAM3B,oBAAAA,CAAqB4B,gBAAgB,CAACV,YAAYD,GAAG,CAAA;YAEjF,OAAO;AACLA,gBAAAA,GAAAA,EAAKC,YAAYD,GAAG;AACpB,gBAAA,GAAGU;AACL,aAAA;AACF,QAAA,CAAA;QAEA,MAAME,mBAAAA,CAAAA,CACJX,WAAqC,EACrCY,gBAAqC,EAAA;AAErC,YAAA,MAAM9B,oBAAAA,CAAqB+B,gBAAgB,CAACb,WAAAA,CAAYD,GAAG,EAAEa,gBAAAA,CAAAA;YAE7D,OAAO,IAAI,CAACJ,iBAAiB,CAACR,WAAAA,CAAAA;AAChC,QAAA,CAAA;AAEAc,QAAAA,4BAAAA,CAAAA,CAA6Bd,WAAqC,EAAA;;YAEhE,OAAOZ,UAAAA,CAAW,YAAA,CAAA,CAAc0B,4BAA4B,CAACd,WAAAA,CAAAA;AAC/D,QAAA,CAAA;AAEAe,QAAAA,kBAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOjC,qBAAqBiC,kBAAkB,EAAA;AAChD,QAAA;KACF;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var _ = require('lodash');
4
4
  var strapiUtils = require('@strapi/utils');
5
5
 
6
6
  const dtoFields = [
@@ -32,7 +32,7 @@ var dataMapper = (()=>({
32
32
  }
33
33
  };
34
34
  },
35
- toDto: fp.pick(dtoFields)
35
+ toDto: (model)=>_.pick(model, dtoFields)
36
36
  }));
37
37
  const formatAttributes = (contentType)=>{
38
38
  const { getVisibleAttributes, getTimestamps, getCreatorFields } = strapiUtils.contentTypes;
@@ -63,7 +63,7 @@ const toRelation = (attribute)=>{
63
63
  relationType: attribute.relation
64
64
  };
65
65
  };
66
- const isVisible = (model)=>fp.getOr(true, 'pluginOptions.content-manager.visible', model) === true;
66
+ const isVisible = (model)=>_.get(model, 'pluginOptions.content-manager.visible', true) === true;
67
67
 
68
68
  module.exports = dataMapper;
69
69
  //# sourceMappingURL=data-mapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-mapper.js","sources":["../../../server/src/services/data-mapper.ts"],"sourcesContent":["import { pick, getOr } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport type { Schema, Struct } from '@strapi/types';\n\nconst dtoFields = [\n 'uid',\n 'isDisplayed',\n 'apiID',\n 'kind',\n 'category',\n 'info',\n 'options',\n 'pluginOptions',\n 'attributes',\n 'pluginOptions',\n];\n\nexport default () => ({\n toContentManagerModel(contentType: Struct.ComponentSchema) {\n return {\n ...contentType,\n apiID: contentType.modelName,\n isDisplayed: isVisible(contentType),\n attributes: {\n id: {\n type: 'integer',\n },\n ...formatAttributes(contentType),\n documentId: {\n type: 'string',\n },\n },\n };\n },\n\n toDto: pick(dtoFields),\n});\n\nconst formatAttributes = (contentType: Struct.ComponentSchema) => {\n const { getVisibleAttributes, getTimestamps, getCreatorFields } = contentTypesUtils;\n\n // only get attributes that can be seen in the auto generated Edit view or List view\n return getVisibleAttributes(contentType)\n .concat(getTimestamps(contentType))\n .concat(getCreatorFields(contentType))\n .reduce((acc: any, key: string) => {\n const attribute = contentType.attributes[key];\n\n // ignore morph until they are handled in the front\n if (attribute.type === 'relation' && attribute.relation.toLowerCase().includes('morph')) {\n return acc;\n }\n\n acc[key] = formatAttribute(key, attribute);\n return acc;\n }, {});\n};\n\n// FIXME: not needed\nconst formatAttribute = (key: any, attribute: Schema.Attribute.AnyAttribute) => {\n if (attribute.type === 'relation') {\n return toRelation(attribute);\n }\n\n return attribute;\n};\n\n// FIXME: not needed\nconst toRelation = (attribute: Schema.Attribute.Relation) => {\n return {\n ...attribute,\n type: 'relation',\n targetModel: 'target' in attribute ? attribute.target : undefined,\n relationType: attribute.relation,\n };\n};\n\nconst isVisible = (model: Struct.ComponentSchema): boolean =>\n getOr(true, 'pluginOptions.content-manager.visible', model) === true;\n"],"names":["dtoFields","toContentManagerModel","contentType","apiID","modelName","isDisplayed","isVisible","attributes","id","type","formatAttributes","documentId","toDto","pick","getVisibleAttributes","getTimestamps","getCreatorFields","contentTypesUtils","concat","reduce","acc","key","attribute","relation","toLowerCase","includes","formatAttribute","toRelation","targetModel","target","undefined","relationType","model","getOr"],"mappings":";;;;;AAKA,MAAMA,SAAAA,GAAY;AAChB,IAAA,KAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,MAAA;AACA,IAAA,SAAA;AACA,IAAA,eAAA;AACA,IAAA,YAAA;AACA,IAAA;AACD,CAAA;AAED,iBAAe,CAAA,KAAO;AACpBC,QAAAA,qBAAAA,CAAAA,CAAsBC,WAAmC,EAAA;YACvD,OAAO;AACL,gBAAA,GAAGA,WAAW;AACdC,gBAAAA,KAAAA,EAAOD,YAAYE,SAAS;AAC5BC,gBAAAA,WAAAA,EAAaC,SAAAA,CAAUJ,WAAAA,CAAAA;gBACvBK,UAAAA,EAAY;oBACVC,EAAAA,EAAI;wBACFC,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA,GAAGC,iBAAiBR,WAAAA,CAAY;oBAChCS,UAAAA,EAAY;wBACVF,IAAAA,EAAM;AACR;AACF;AACF,aAAA;AACF,QAAA,CAAA;AAEAG,QAAAA,KAAAA,EAAOC,OAAAA,CAAKb,SAAAA;AACd,KAAA,CAAC;AAED,MAAMU,mBAAmB,CAACR,WAAAA,GAAAA;AACxB,IAAA,MAAM,EAAEY,oBAAoB,EAAEC,aAAa,EAAEC,gBAAgB,EAAE,GAAGC,wBAAAA;;AAGlE,IAAA,OAAOH,oBAAAA,CAAqBZ,WAAAA,CAAAA,CACzBgB,MAAM,CAACH,aAAAA,CAAcb,WAAAA,CAAAA,CAAAA,CACrBgB,MAAM,CAACF,gBAAAA,CAAiBd,WAAAA,CAAAA,CAAAA,CACxBiB,MAAM,CAAC,CAACC,GAAAA,EAAUC,GAAAA,GAAAA;AACjB,QAAA,MAAMC,SAAAA,GAAYpB,WAAAA,CAAYK,UAAU,CAACc,GAAAA,CAAI;;QAG7C,IAAIC,SAAAA,CAAUb,IAAI,KAAK,UAAA,IAAca,SAAAA,CAAUC,QAAQ,CAACC,WAAW,EAAA,CAAGC,QAAQ,CAAC,OAAA,CAAA,EAAU;YACvF,OAAOL,GAAAA;AACT,QAAA;AAEAA,QAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGK,eAAAA,CAAgBL,GAAAA,EAAKC,SAAAA,CAAAA;QAChC,OAAOF,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AACR,CAAA;AAEA;AACA,MAAMM,eAAAA,GAAkB,CAACL,GAAAA,EAAUC,SAAAA,GAAAA;IACjC,IAAIA,SAAAA,CAAUb,IAAI,KAAK,UAAA,EAAY;AACjC,QAAA,OAAOkB,UAAAA,CAAWL,SAAAA,CAAAA;AACpB,IAAA;IAEA,OAAOA,SAAAA;AACT,CAAA;AAEA;AACA,MAAMK,aAAa,CAACL,SAAAA,GAAAA;IAClB,OAAO;AACL,QAAA,GAAGA,SAAS;QACZb,IAAAA,EAAM,UAAA;AACNmB,QAAAA,WAAAA,EAAa,QAAA,IAAYN,SAAAA,GAAYA,SAAAA,CAAUO,MAAM,GAAGC,SAAAA;AACxDC,QAAAA,YAAAA,EAAcT,UAAUC;AAC1B,KAAA;AACF,CAAA;AAEA,MAAMjB,YAAY,CAAC0B,KAAAA,GACjBC,QAAAA,CAAM,IAAA,EAAM,yCAAyCD,KAAAA,CAAAA,KAAW,IAAA;;;;"}
1
+ {"version":3,"file":"data-mapper.js","sources":["../../../server/src/services/data-mapper.ts"],"sourcesContent":["import { pick, get } from 'lodash';\n\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport type { Schema, Struct } from '@strapi/types';\n\nconst dtoFields = [\n 'uid',\n 'isDisplayed',\n 'apiID',\n 'kind',\n 'category',\n 'info',\n 'options',\n 'pluginOptions',\n 'attributes',\n 'pluginOptions',\n];\n\nexport default () => ({\n toContentManagerModel(contentType: Struct.ComponentSchema) {\n return {\n ...contentType,\n apiID: contentType.modelName,\n isDisplayed: isVisible(contentType),\n attributes: {\n id: {\n type: 'integer',\n },\n ...formatAttributes(contentType),\n documentId: {\n type: 'string',\n },\n },\n };\n },\n\n toDto: <T extends object>(model: T) => pick(model, dtoFields),\n});\n\nconst formatAttributes = (contentType: Struct.ComponentSchema) => {\n const { getVisibleAttributes, getTimestamps, getCreatorFields } = contentTypesUtils;\n\n // only get attributes that can be seen in the auto generated Edit view or List view\n return getVisibleAttributes(contentType)\n .concat(getTimestamps(contentType))\n .concat(getCreatorFields(contentType))\n .reduce((acc: any, key: string) => {\n const attribute = contentType.attributes[key];\n\n // ignore morph until they are handled in the front\n if (attribute.type === 'relation' && attribute.relation.toLowerCase().includes('morph')) {\n return acc;\n }\n\n acc[key] = formatAttribute(key, attribute);\n return acc;\n }, {});\n};\n\n// FIXME: not needed\nconst formatAttribute = (key: any, attribute: Schema.Attribute.AnyAttribute) => {\n if (attribute.type === 'relation') {\n return toRelation(attribute);\n }\n\n return attribute;\n};\n\n// FIXME: not needed\nconst toRelation = (attribute: Schema.Attribute.Relation) => {\n return {\n ...attribute,\n type: 'relation',\n targetModel: 'target' in attribute ? attribute.target : undefined,\n relationType: attribute.relation,\n };\n};\n\nconst isVisible = (model: Struct.ComponentSchema): boolean =>\n get(model, 'pluginOptions.content-manager.visible', true) === true;\n"],"names":["dtoFields","toContentManagerModel","contentType","apiID","modelName","isDisplayed","isVisible","attributes","id","type","formatAttributes","documentId","toDto","model","pick","getVisibleAttributes","getTimestamps","getCreatorFields","contentTypesUtils","concat","reduce","acc","key","attribute","relation","toLowerCase","includes","formatAttribute","toRelation","targetModel","target","undefined","relationType","get"],"mappings":";;;;;AAMA,MAAMA,SAAAA,GAAY;AAChB,IAAA,KAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,MAAA;AACA,IAAA,SAAA;AACA,IAAA,eAAA;AACA,IAAA,YAAA;AACA,IAAA;AACD,CAAA;AAED,iBAAe,CAAA,KAAO;AACpBC,QAAAA,qBAAAA,CAAAA,CAAsBC,WAAmC,EAAA;YACvD,OAAO;AACL,gBAAA,GAAGA,WAAW;AACdC,gBAAAA,KAAAA,EAAOD,YAAYE,SAAS;AAC5BC,gBAAAA,WAAAA,EAAaC,SAAAA,CAAUJ,WAAAA,CAAAA;gBACvBK,UAAAA,EAAY;oBACVC,EAAAA,EAAI;wBACFC,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA,GAAGC,iBAAiBR,WAAAA,CAAY;oBAChCS,UAAAA,EAAY;wBACVF,IAAAA,EAAM;AACR;AACF;AACF,aAAA;AACF,QAAA,CAAA;QAEAG,KAAAA,EAAO,CAAmBC,KAAAA,GAAaC,MAAAA,CAAKD,KAAAA,EAAOb,SAAAA;AACrD,KAAA,CAAC;AAED,MAAMU,mBAAmB,CAACR,WAAAA,GAAAA;AACxB,IAAA,MAAM,EAAEa,oBAAoB,EAAEC,aAAa,EAAEC,gBAAgB,EAAE,GAAGC,wBAAAA;;AAGlE,IAAA,OAAOH,oBAAAA,CAAqBb,WAAAA,CAAAA,CACzBiB,MAAM,CAACH,aAAAA,CAAcd,WAAAA,CAAAA,CAAAA,CACrBiB,MAAM,CAACF,gBAAAA,CAAiBf,WAAAA,CAAAA,CAAAA,CACxBkB,MAAM,CAAC,CAACC,GAAAA,EAAUC,GAAAA,GAAAA;AACjB,QAAA,MAAMC,SAAAA,GAAYrB,WAAAA,CAAYK,UAAU,CAACe,GAAAA,CAAI;;QAG7C,IAAIC,SAAAA,CAAUd,IAAI,KAAK,UAAA,IAAcc,SAAAA,CAAUC,QAAQ,CAACC,WAAW,EAAA,CAAGC,QAAQ,CAAC,OAAA,CAAA,EAAU;YACvF,OAAOL,GAAAA;AACT,QAAA;AAEAA,QAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGK,eAAAA,CAAgBL,GAAAA,EAAKC,SAAAA,CAAAA;QAChC,OAAOF,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AACR,CAAA;AAEA;AACA,MAAMM,eAAAA,GAAkB,CAACL,GAAAA,EAAUC,SAAAA,GAAAA;IACjC,IAAIA,SAAAA,CAAUd,IAAI,KAAK,UAAA,EAAY;AACjC,QAAA,OAAOmB,UAAAA,CAAWL,SAAAA,CAAAA;AACpB,IAAA;IAEA,OAAOA,SAAAA;AACT,CAAA;AAEA;AACA,MAAMK,aAAa,CAACL,SAAAA,GAAAA;IAClB,OAAO;AACL,QAAA,GAAGA,SAAS;QACZd,IAAAA,EAAM,UAAA;AACNoB,QAAAA,WAAAA,EAAa,QAAA,IAAYN,SAAAA,GAAYA,SAAAA,CAAUO,MAAM,GAAGC,SAAAA;AACxDC,QAAAA,YAAAA,EAAcT,UAAUC;AAC1B,KAAA;AACF,CAAA;AAEA,MAAMlB,YAAY,CAACO,KAAAA,GACjBoB,KAAAA,CAAIpB,KAAAA,EAAO,yCAAyC,IAAA,CAAA,KAAU,IAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import { pick, getOr } from 'lodash/fp';
1
+ import { pick, get } from 'lodash';
2
2
  import { contentTypes } from '@strapi/utils';
3
3
 
4
4
  const dtoFields = [
@@ -30,7 +30,7 @@ var dataMapper = (()=>({
30
30
  }
31
31
  };
32
32
  },
33
- toDto: pick(dtoFields)
33
+ toDto: (model)=>pick(model, dtoFields)
34
34
  }));
35
35
  const formatAttributes = (contentType)=>{
36
36
  const { getVisibleAttributes, getTimestamps, getCreatorFields } = contentTypes;
@@ -61,7 +61,7 @@ const toRelation = (attribute)=>{
61
61
  relationType: attribute.relation
62
62
  };
63
63
  };
64
- const isVisible = (model)=>getOr(true, 'pluginOptions.content-manager.visible', model) === true;
64
+ const isVisible = (model)=>get(model, 'pluginOptions.content-manager.visible', true) === true;
65
65
 
66
66
  export { dataMapper as default };
67
67
  //# sourceMappingURL=data-mapper.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-mapper.mjs","sources":["../../../server/src/services/data-mapper.ts"],"sourcesContent":["import { pick, getOr } from 'lodash/fp';\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport type { Schema, Struct } from '@strapi/types';\n\nconst dtoFields = [\n 'uid',\n 'isDisplayed',\n 'apiID',\n 'kind',\n 'category',\n 'info',\n 'options',\n 'pluginOptions',\n 'attributes',\n 'pluginOptions',\n];\n\nexport default () => ({\n toContentManagerModel(contentType: Struct.ComponentSchema) {\n return {\n ...contentType,\n apiID: contentType.modelName,\n isDisplayed: isVisible(contentType),\n attributes: {\n id: {\n type: 'integer',\n },\n ...formatAttributes(contentType),\n documentId: {\n type: 'string',\n },\n },\n };\n },\n\n toDto: pick(dtoFields),\n});\n\nconst formatAttributes = (contentType: Struct.ComponentSchema) => {\n const { getVisibleAttributes, getTimestamps, getCreatorFields } = contentTypesUtils;\n\n // only get attributes that can be seen in the auto generated Edit view or List view\n return getVisibleAttributes(contentType)\n .concat(getTimestamps(contentType))\n .concat(getCreatorFields(contentType))\n .reduce((acc: any, key: string) => {\n const attribute = contentType.attributes[key];\n\n // ignore morph until they are handled in the front\n if (attribute.type === 'relation' && attribute.relation.toLowerCase().includes('morph')) {\n return acc;\n }\n\n acc[key] = formatAttribute(key, attribute);\n return acc;\n }, {});\n};\n\n// FIXME: not needed\nconst formatAttribute = (key: any, attribute: Schema.Attribute.AnyAttribute) => {\n if (attribute.type === 'relation') {\n return toRelation(attribute);\n }\n\n return attribute;\n};\n\n// FIXME: not needed\nconst toRelation = (attribute: Schema.Attribute.Relation) => {\n return {\n ...attribute,\n type: 'relation',\n targetModel: 'target' in attribute ? attribute.target : undefined,\n relationType: attribute.relation,\n };\n};\n\nconst isVisible = (model: Struct.ComponentSchema): boolean =>\n getOr(true, 'pluginOptions.content-manager.visible', model) === true;\n"],"names":["dtoFields","toContentManagerModel","contentType","apiID","modelName","isDisplayed","isVisible","attributes","id","type","formatAttributes","documentId","toDto","pick","getVisibleAttributes","getTimestamps","getCreatorFields","contentTypesUtils","concat","reduce","acc","key","attribute","relation","toLowerCase","includes","formatAttribute","toRelation","targetModel","target","undefined","relationType","model","getOr"],"mappings":";;;AAKA,MAAMA,SAAAA,GAAY;AAChB,IAAA,KAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,MAAA;AACA,IAAA,SAAA;AACA,IAAA,eAAA;AACA,IAAA,YAAA;AACA,IAAA;AACD,CAAA;AAED,iBAAe,CAAA,KAAO;AACpBC,QAAAA,qBAAAA,CAAAA,CAAsBC,WAAmC,EAAA;YACvD,OAAO;AACL,gBAAA,GAAGA,WAAW;AACdC,gBAAAA,KAAAA,EAAOD,YAAYE,SAAS;AAC5BC,gBAAAA,WAAAA,EAAaC,SAAAA,CAAUJ,WAAAA,CAAAA;gBACvBK,UAAAA,EAAY;oBACVC,EAAAA,EAAI;wBACFC,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA,GAAGC,iBAAiBR,WAAAA,CAAY;oBAChCS,UAAAA,EAAY;wBACVF,IAAAA,EAAM;AACR;AACF;AACF,aAAA;AACF,QAAA,CAAA;AAEAG,QAAAA,KAAAA,EAAOC,IAAAA,CAAKb,SAAAA;AACd,KAAA,CAAC;AAED,MAAMU,mBAAmB,CAACR,WAAAA,GAAAA;AACxB,IAAA,MAAM,EAAEY,oBAAoB,EAAEC,aAAa,EAAEC,gBAAgB,EAAE,GAAGC,YAAAA;;AAGlE,IAAA,OAAOH,oBAAAA,CAAqBZ,WAAAA,CAAAA,CACzBgB,MAAM,CAACH,aAAAA,CAAcb,WAAAA,CAAAA,CAAAA,CACrBgB,MAAM,CAACF,gBAAAA,CAAiBd,WAAAA,CAAAA,CAAAA,CACxBiB,MAAM,CAAC,CAACC,GAAAA,EAAUC,GAAAA,GAAAA;AACjB,QAAA,MAAMC,SAAAA,GAAYpB,WAAAA,CAAYK,UAAU,CAACc,GAAAA,CAAI;;QAG7C,IAAIC,SAAAA,CAAUb,IAAI,KAAK,UAAA,IAAca,SAAAA,CAAUC,QAAQ,CAACC,WAAW,EAAA,CAAGC,QAAQ,CAAC,OAAA,CAAA,EAAU;YACvF,OAAOL,GAAAA;AACT,QAAA;AAEAA,QAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGK,eAAAA,CAAgBL,GAAAA,EAAKC,SAAAA,CAAAA;QAChC,OAAOF,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AACR,CAAA;AAEA;AACA,MAAMM,eAAAA,GAAkB,CAACL,GAAAA,EAAUC,SAAAA,GAAAA;IACjC,IAAIA,SAAAA,CAAUb,IAAI,KAAK,UAAA,EAAY;AACjC,QAAA,OAAOkB,UAAAA,CAAWL,SAAAA,CAAAA;AACpB,IAAA;IAEA,OAAOA,SAAAA;AACT,CAAA;AAEA;AACA,MAAMK,aAAa,CAACL,SAAAA,GAAAA;IAClB,OAAO;AACL,QAAA,GAAGA,SAAS;QACZb,IAAAA,EAAM,UAAA;AACNmB,QAAAA,WAAAA,EAAa,QAAA,IAAYN,SAAAA,GAAYA,SAAAA,CAAUO,MAAM,GAAGC,SAAAA;AACxDC,QAAAA,YAAAA,EAAcT,UAAUC;AAC1B,KAAA;AACF,CAAA;AAEA,MAAMjB,YAAY,CAAC0B,KAAAA,GACjBC,KAAAA,CAAM,IAAA,EAAM,yCAAyCD,KAAAA,CAAAA,KAAW,IAAA;;;;"}
1
+ {"version":3,"file":"data-mapper.mjs","sources":["../../../server/src/services/data-mapper.ts"],"sourcesContent":["import { pick, get } from 'lodash';\n\nimport { contentTypes as contentTypesUtils } from '@strapi/utils';\n\nimport type { Schema, Struct } from '@strapi/types';\n\nconst dtoFields = [\n 'uid',\n 'isDisplayed',\n 'apiID',\n 'kind',\n 'category',\n 'info',\n 'options',\n 'pluginOptions',\n 'attributes',\n 'pluginOptions',\n];\n\nexport default () => ({\n toContentManagerModel(contentType: Struct.ComponentSchema) {\n return {\n ...contentType,\n apiID: contentType.modelName,\n isDisplayed: isVisible(contentType),\n attributes: {\n id: {\n type: 'integer',\n },\n ...formatAttributes(contentType),\n documentId: {\n type: 'string',\n },\n },\n };\n },\n\n toDto: <T extends object>(model: T) => pick(model, dtoFields),\n});\n\nconst formatAttributes = (contentType: Struct.ComponentSchema) => {\n const { getVisibleAttributes, getTimestamps, getCreatorFields } = contentTypesUtils;\n\n // only get attributes that can be seen in the auto generated Edit view or List view\n return getVisibleAttributes(contentType)\n .concat(getTimestamps(contentType))\n .concat(getCreatorFields(contentType))\n .reduce((acc: any, key: string) => {\n const attribute = contentType.attributes[key];\n\n // ignore morph until they are handled in the front\n if (attribute.type === 'relation' && attribute.relation.toLowerCase().includes('morph')) {\n return acc;\n }\n\n acc[key] = formatAttribute(key, attribute);\n return acc;\n }, {});\n};\n\n// FIXME: not needed\nconst formatAttribute = (key: any, attribute: Schema.Attribute.AnyAttribute) => {\n if (attribute.type === 'relation') {\n return toRelation(attribute);\n }\n\n return attribute;\n};\n\n// FIXME: not needed\nconst toRelation = (attribute: Schema.Attribute.Relation) => {\n return {\n ...attribute,\n type: 'relation',\n targetModel: 'target' in attribute ? attribute.target : undefined,\n relationType: attribute.relation,\n };\n};\n\nconst isVisible = (model: Struct.ComponentSchema): boolean =>\n get(model, 'pluginOptions.content-manager.visible', true) === true;\n"],"names":["dtoFields","toContentManagerModel","contentType","apiID","modelName","isDisplayed","isVisible","attributes","id","type","formatAttributes","documentId","toDto","model","pick","getVisibleAttributes","getTimestamps","getCreatorFields","contentTypesUtils","concat","reduce","acc","key","attribute","relation","toLowerCase","includes","formatAttribute","toRelation","targetModel","target","undefined","relationType","get"],"mappings":";;;AAMA,MAAMA,SAAAA,GAAY;AAChB,IAAA,KAAA;AACA,IAAA,aAAA;AACA,IAAA,OAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,MAAA;AACA,IAAA,SAAA;AACA,IAAA,eAAA;AACA,IAAA,YAAA;AACA,IAAA;AACD,CAAA;AAED,iBAAe,CAAA,KAAO;AACpBC,QAAAA,qBAAAA,CAAAA,CAAsBC,WAAmC,EAAA;YACvD,OAAO;AACL,gBAAA,GAAGA,WAAW;AACdC,gBAAAA,KAAAA,EAAOD,YAAYE,SAAS;AAC5BC,gBAAAA,WAAAA,EAAaC,SAAAA,CAAUJ,WAAAA,CAAAA;gBACvBK,UAAAA,EAAY;oBACVC,EAAAA,EAAI;wBACFC,IAAAA,EAAM;AACR,qBAAA;AACA,oBAAA,GAAGC,iBAAiBR,WAAAA,CAAY;oBAChCS,UAAAA,EAAY;wBACVF,IAAAA,EAAM;AACR;AACF;AACF,aAAA;AACF,QAAA,CAAA;QAEAG,KAAAA,EAAO,CAAmBC,KAAAA,GAAaC,IAAAA,CAAKD,KAAAA,EAAOb,SAAAA;AACrD,KAAA,CAAC;AAED,MAAMU,mBAAmB,CAACR,WAAAA,GAAAA;AACxB,IAAA,MAAM,EAAEa,oBAAoB,EAAEC,aAAa,EAAEC,gBAAgB,EAAE,GAAGC,YAAAA;;AAGlE,IAAA,OAAOH,oBAAAA,CAAqBb,WAAAA,CAAAA,CACzBiB,MAAM,CAACH,aAAAA,CAAcd,WAAAA,CAAAA,CAAAA,CACrBiB,MAAM,CAACF,gBAAAA,CAAiBf,WAAAA,CAAAA,CAAAA,CACxBkB,MAAM,CAAC,CAACC,GAAAA,EAAUC,GAAAA,GAAAA;AACjB,QAAA,MAAMC,SAAAA,GAAYrB,WAAAA,CAAYK,UAAU,CAACe,GAAAA,CAAI;;QAG7C,IAAIC,SAAAA,CAAUd,IAAI,KAAK,UAAA,IAAcc,SAAAA,CAAUC,QAAQ,CAACC,WAAW,EAAA,CAAGC,QAAQ,CAAC,OAAA,CAAA,EAAU;YACvF,OAAOL,GAAAA;AACT,QAAA;AAEAA,QAAAA,GAAG,CAACC,GAAAA,CAAI,GAAGK,eAAAA,CAAgBL,GAAAA,EAAKC,SAAAA,CAAAA;QAChC,OAAOF,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;AACR,CAAA;AAEA;AACA,MAAMM,eAAAA,GAAkB,CAACL,GAAAA,EAAUC,SAAAA,GAAAA;IACjC,IAAIA,SAAAA,CAAUd,IAAI,KAAK,UAAA,EAAY;AACjC,QAAA,OAAOmB,UAAAA,CAAWL,SAAAA,CAAAA;AACpB,IAAA;IAEA,OAAOA,SAAAA;AACT,CAAA;AAEA;AACA,MAAMK,aAAa,CAACL,SAAAA,GAAAA;IAClB,OAAO;AACL,QAAA,GAAGA,SAAS;QACZd,IAAAA,EAAM,UAAA;AACNoB,QAAAA,WAAAA,EAAa,QAAA,IAAYN,SAAAA,GAAYA,SAAAA,CAAUO,MAAM,GAAGC,SAAAA;AACxDC,QAAAA,YAAAA,EAAcT,UAAUC;AAC1B,KAAA;AACF,CAAA;AAEA,MAAMlB,YAAY,CAACO,KAAAA,GACjBoB,GAAAA,CAAIpB,KAAAA,EAAO,yCAAyC,IAAA,CAAA,KAAU,IAAA;;;;"}
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var _ = require('lodash');
4
4
  var strapiUtils = require('@strapi/utils');
5
5
  var populate = require('./utils/populate.js');
6
6
  var draftRelations = require('./utils/draft-relations.js');
7
7
  var draft = require('./utils/draft.js');
8
8
 
9
9
  const { PUBLISHED_AT_ATTRIBUTE } = strapiUtils.contentTypes.constants;
10
- const omitPublishedAtField = fp.omit(PUBLISHED_AT_ATTRIBUTE);
11
- const omitIdField = fp.omit('id');
10
+ const omitPublishedAtField = (document)=>_.omit(document, PUBLISHED_AT_ATTRIBUTE);
11
+ const omitIdField = (document)=>_.omit(document, 'id');
12
12
  const documentManager = ({ strapi })=>{
13
13
  return {
14
14
  async findOne (id, uid, opts = {}) {
@@ -77,7 +77,7 @@ const documentManager = ({ strapi })=>{
77
77
  return strapi.documents(uid).create(params);
78
78
  },
79
79
  async update (id, uid, opts = {}) {
80
- const publishData = fp.pipe(omitPublishedAtField, omitIdField)(opts.data || {});
80
+ const publishData = _.flow(omitPublishedAtField, omitIdField)(opts.data || {});
81
81
  const populate$1 = opts.populate ?? await populate.buildDeepPopulate(uid);
82
82
  const params = {
83
83
  ...opts,
@@ -96,10 +96,10 @@ const documentManager = ({ strapi })=>{
96
96
  const locale = body?.locale;
97
97
  const params = {
98
98
  // Ensure id and documentId are not copied to the clone
99
- data: fp.omit([
99
+ data: _.omit(body, [
100
100
  'id',
101
101
  'documentId'
102
- ], body),
102
+ ]),
103
103
  locale,
104
104
  populate: populate$1
105
105
  };
@@ -1 +1 @@
1
- {"version":3,"file":"document-manager.js","sources":["../../../server/src/services/document-manager.ts"],"sourcesContent":["import { omit, pipe } from 'lodash/fp';\n\nimport { contentTypes, pagination } from '@strapi/utils';\nimport type { Core, Modules, UID } from '@strapi/types';\n\nimport { buildDeepPopulate, getDeepPopulate, getDeepPopulateDraftCount } from './utils/populate';\nimport { EMPTY_DRAFT_RELATION_COUNTS } from './utils/draft-relations';\nimport { sumDraftCounts } from './utils/draft';\n\ntype DocService = Modules.Documents.ServiceInstance;\ntype DocServiceParams<TAction extends keyof DocService> = Parameters<DocService[TAction]>[0];\nexport type Document = Modules.Documents.Result<UID.ContentType>;\n\nconst { PUBLISHED_AT_ATTRIBUTE } = contentTypes.constants;\n\nconst omitPublishedAtField = omit(PUBLISHED_AT_ATTRIBUTE);\nconst omitIdField = omit('id');\n\nconst documentManager = ({ strapi }: { strapi: Core.Strapi }) => {\n return {\n async findOne(\n id: string,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'findOne'>, 'documentId'> = {}\n ) {\n return strapi.documents(uid).findOne({ ...opts, documentId: id });\n },\n\n /**\n * Find multiple (or all) locales for a document\n */\n async findLocales(\n id: string | string[] | undefined,\n uid: UID.CollectionType,\n opts: {\n populate?: Modules.Documents.Params.Pick<any, 'populate'>;\n locale?: string | string[] | '*';\n isPublished?: boolean;\n }\n ) {\n // Will look for a specific locale by default\n const where: any = {};\n\n // Might not have an id if querying a single type\n if (id) {\n where.documentId = id;\n }\n\n // Search in array of locales\n if (Array.isArray(opts.locale)) {\n where.locale = { $in: opts.locale };\n } else if (opts.locale && opts.locale !== '*') {\n // Look for a specific locale, ignore if looking for all locales\n where.locale = opts.locale;\n }\n\n // Published is passed, so we filter on it, otherwise we don't filter\n if (typeof opts.isPublished === 'boolean') {\n where.publishedAt = { $notNull: opts.isPublished };\n }\n\n return strapi.db.query(uid).findMany({ populate: opts.populate, where });\n },\n\n async findMany(opts: DocServiceParams<'findMany'>, uid: UID.CollectionType) {\n const params = { ...opts, populate: getDeepPopulate(uid) } as typeof opts;\n return strapi.documents(uid).findMany(params);\n },\n\n async findPage(opts: DocServiceParams<'findMany'>, uid: UID.CollectionType) {\n const params = pagination.withDefaultPagination(opts || {}, {\n maxLimit: 1000,\n });\n\n const { populate: _populate, sort: _sort, ...countParams } = params;\n const [documents, total = 0] = await Promise.all([\n strapi.documents(uid).findMany(params),\n strapi.documents(uid).count(countParams),\n ]);\n\n return {\n results: documents,\n pagination: pagination.transformPagedPaginationInfo(params, total),\n };\n },\n\n async create(uid: UID.CollectionType, opts: DocServiceParams<'create'> = {} as any) {\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, status: 'draft' as const, populate };\n\n return strapi.documents(uid).create(params);\n },\n\n async update(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'update'>, 'documentId'> = {} as any\n ) {\n const publishData = pipe(omitPublishedAtField, omitIdField)(opts.data || {});\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, data: publishData, populate, status: 'draft' };\n\n return strapi.documents(uid).update({ ...params, documentId: id });\n },\n\n async clone(\n id: Modules.Documents.ID,\n body: Partial<Modules.Documents.Params.Data.Input<UID.CollectionType>>,\n uid: UID.CollectionType\n ) {\n const populate = await buildDeepPopulate(uid);\n\n // Extract the locale to pass it as a plain param\n const locale = body?.locale;\n const params = {\n // Ensure id and documentId are not copied to the clone\n data: omit(['id', 'documentId'], body),\n locale,\n populate,\n };\n\n return strapi\n .documents(uid)\n .clone({ ...params, documentId: id })\n .then((result) => result?.entries.at(0));\n },\n\n /**\n * Check if a document exists\n */\n async exists(uid: UID.CollectionType, id?: string) {\n // Collection type\n if (id) {\n const count = await strapi.db.query(uid).count({ where: { documentId: id } });\n return count > 0;\n }\n\n // Single type\n const count = await strapi.db.query(uid).count();\n return count > 0;\n },\n\n async delete(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'delete'>, 'documentId'> = {} as any\n ) {\n await strapi.documents(uid).delete({\n ...opts,\n documentId: id,\n });\n return {};\n },\n\n // FIXME: handle relations\n async deleteMany(\n documentIds: Modules.Documents.ID[],\n uid: UID.CollectionType,\n opts: DocServiceParams<'findMany'> & { locale?: string } = {}\n ) {\n const deletedEntries = await strapi.db.transaction(async () => {\n return Promise.all(documentIds.map(async (id) => this.delete(id, uid, opts)));\n });\n\n return { count: deletedEntries.length };\n },\n\n async publish(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'publish'>, 'documentId'> & { populate?: object } = {} as any\n ) {\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, populate };\n\n return strapi\n .documents(uid)\n .publish({ ...params, documentId: id })\n .then((result) => result?.entries);\n },\n\n async publishMany(uid: UID.ContentType, documentIds: string[], locale?: string | string[]) {\n return strapi.db.transaction(async () => {\n const results = await Promise.all(\n documentIds.map((documentId) => this.publish(documentId, uid, { locale, populate: {} }))\n );\n\n const publishedEntitiesCount = results.flat().filter(Boolean).length;\n return publishedEntitiesCount;\n });\n },\n\n async unpublishMany(\n documentIds: Modules.Documents.ID[],\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'unpublish'>, 'documentId'> = {} as any\n ) {\n const unpublishedEntries = await strapi.db.transaction(async () => {\n return Promise.all(\n documentIds.map((id) =>\n strapi\n .documents(uid)\n .unpublish({ ...opts, documentId: id, populate: {} })\n .then((result) => result?.entries)\n )\n );\n });\n\n const unpublishedEntitiesCount = unpublishedEntries.flat().filter(Boolean).length;\n\n // Return the number of unpublished entities\n return { count: unpublishedEntitiesCount };\n },\n\n async unpublish(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'unpublish'>, 'documentId'> & { populate?: object } = {} as any\n ) {\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, populate };\n\n return strapi\n .documents(uid)\n .unpublish({ ...params, documentId: id })\n .then((result) => result?.entries.at(0));\n },\n\n async discardDraft(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'discardDraft'>, 'documentId'> & { populate?: object } = {} as any\n ) {\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, populate };\n\n return strapi\n .documents(uid)\n .discardDraft({ ...params, documentId: id })\n .then((result) => result?.entries.at(0));\n },\n\n async countDraftRelations(id: string, uid: UID.ContentType, locale: string) {\n const { populate, hasRelations } = getDeepPopulateDraftCount(uid);\n\n if (!hasRelations) {\n return EMPTY_DRAFT_RELATION_COUNTS;\n }\n\n const document = await strapi.documents(uid).findOne({ documentId: id, populate, locale });\n if (!document) {\n return EMPTY_DRAFT_RELATION_COUNTS;\n }\n\n return sumDraftCounts(strapi, document, uid);\n },\n\n async countManyEntriesDraftRelations(\n documentIds: Modules.Documents.ID[],\n uid: UID.CollectionType,\n locale: string | string[]\n ) {\n const { populate, hasRelations } = getDeepPopulateDraftCount(uid);\n\n if (!hasRelations) {\n return 0;\n }\n\n const entities = await strapi.documents(uid).findMany({\n populate,\n filters: { documentId: { $in: documentIds } } as any,\n locale,\n status: 'draft',\n });\n\n const counts = await Promise.all(\n entities.map((entity: Document) => sumDraftCounts(strapi, entity, uid))\n );\n\n return counts.reduce(\n (total, entityCounts) =>\n total + entityCounts.unpublishedRelations + entityCounts.draftM2mLinks,\n 0\n );\n },\n };\n};\n\nexport type DocumentManagerService = typeof documentManager;\n\nexport default documentManager;\n"],"names":["PUBLISHED_AT_ATTRIBUTE","contentTypes","constants","omitPublishedAtField","omit","omitIdField","documentManager","strapi","findOne","id","uid","opts","documents","documentId","findLocales","where","Array","isArray","locale","$in","isPublished","publishedAt","$notNull","db","query","findMany","populate","params","getDeepPopulate","findPage","pagination","withDefaultPagination","maxLimit","_populate","sort","_sort","countParams","total","Promise","all","count","results","transformPagedPaginationInfo","create","buildDeepPopulate","status","update","publishData","pipe","data","clone","body","then","result","entries","at","exists","delete","deleteMany","documentIds","deletedEntries","transaction","map","length","publish","publishMany","publishedEntitiesCount","flat","filter","Boolean","unpublishMany","unpublishedEntries","unpublish","unpublishedEntitiesCount","discardDraft","countDraftRelations","hasRelations","getDeepPopulateDraftCount","EMPTY_DRAFT_RELATION_COUNTS","document","sumDraftCounts","countManyEntriesDraftRelations","entities","filters","counts","entity","reduce","entityCounts","unpublishedRelations","draftM2mLinks"],"mappings":"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"}
1
+ {"version":3,"file":"document-manager.js","sources":["../../../server/src/services/document-manager.ts"],"sourcesContent":["import { omit, flow } from 'lodash';\n\nimport { contentTypes, pagination } from '@strapi/utils';\nimport type { Core, Modules, UID } from '@strapi/types';\n\nimport { buildDeepPopulate, getDeepPopulate, getDeepPopulateDraftCount } from './utils/populate';\nimport { EMPTY_DRAFT_RELATION_COUNTS } from './utils/draft-relations';\nimport { sumDraftCounts } from './utils/draft';\n\ntype DocService = Modules.Documents.ServiceInstance;\ntype DocServiceParams<TAction extends keyof DocService> = Parameters<DocService[TAction]>[0];\nexport type Document = Modules.Documents.Result<UID.ContentType>;\n\nconst { PUBLISHED_AT_ATTRIBUTE } = contentTypes.constants;\n\nconst omitPublishedAtField = <T extends object>(document: T) =>\n omit(document, PUBLISHED_AT_ATTRIBUTE);\nconst omitIdField = <T extends object>(document: T) => omit(document, 'id');\n\nconst documentManager = ({ strapi }: { strapi: Core.Strapi }) => {\n return {\n async findOne(\n id: string,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'findOne'>, 'documentId'> = {}\n ) {\n return strapi.documents(uid).findOne({ ...opts, documentId: id });\n },\n\n /**\n * Find multiple (or all) locales for a document\n */\n async findLocales(\n id: string | string[] | undefined,\n uid: UID.CollectionType,\n opts: {\n populate?: Modules.Documents.Params.Pick<any, 'populate'>;\n locale?: string | string[] | '*';\n isPublished?: boolean;\n }\n ) {\n // Will look for a specific locale by default\n const where: any = {};\n\n // Might not have an id if querying a single type\n if (id) {\n where.documentId = id;\n }\n\n // Search in array of locales\n if (Array.isArray(opts.locale)) {\n where.locale = { $in: opts.locale };\n } else if (opts.locale && opts.locale !== '*') {\n // Look for a specific locale, ignore if looking for all locales\n where.locale = opts.locale;\n }\n\n // Published is passed, so we filter on it, otherwise we don't filter\n if (typeof opts.isPublished === 'boolean') {\n where.publishedAt = { $notNull: opts.isPublished };\n }\n\n return strapi.db.query(uid).findMany({ populate: opts.populate, where });\n },\n\n async findMany(opts: DocServiceParams<'findMany'>, uid: UID.CollectionType) {\n const params = { ...opts, populate: getDeepPopulate(uid) } as typeof opts;\n return strapi.documents(uid).findMany(params);\n },\n\n async findPage(opts: DocServiceParams<'findMany'>, uid: UID.CollectionType) {\n const params = pagination.withDefaultPagination(opts || {}, {\n maxLimit: 1000,\n });\n\n const { populate: _populate, sort: _sort, ...countParams } = params;\n const [documents, total = 0] = await Promise.all([\n strapi.documents(uid).findMany(params),\n strapi.documents(uid).count(countParams),\n ]);\n\n return {\n results: documents,\n pagination: pagination.transformPagedPaginationInfo(params, total),\n };\n },\n\n async create(uid: UID.CollectionType, opts: DocServiceParams<'create'> = {} as any) {\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, status: 'draft' as const, populate };\n\n return strapi.documents(uid).create(params);\n },\n\n async update(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'update'>, 'documentId'> = {} as any\n ) {\n const publishData = flow(omitPublishedAtField, omitIdField)(opts.data || {});\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, data: publishData, populate, status: 'draft' };\n\n return strapi.documents(uid).update({ ...params, documentId: id });\n },\n\n async clone(\n id: Modules.Documents.ID,\n body: Partial<Modules.Documents.Params.Data.Input<UID.CollectionType>>,\n uid: UID.CollectionType\n ) {\n const populate = await buildDeepPopulate(uid);\n\n // Extract the locale to pass it as a plain param\n const locale = body?.locale;\n const params = {\n // Ensure id and documentId are not copied to the clone\n data: omit(body, ['id', 'documentId']),\n locale,\n populate,\n };\n\n return strapi\n .documents(uid)\n .clone({ ...params, documentId: id })\n .then((result) => result?.entries.at(0));\n },\n\n /**\n * Check if a document exists\n */\n async exists(uid: UID.CollectionType, id?: string) {\n // Collection type\n if (id) {\n const count = await strapi.db.query(uid).count({ where: { documentId: id } });\n return count > 0;\n }\n\n // Single type\n const count = await strapi.db.query(uid).count();\n return count > 0;\n },\n\n async delete(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'delete'>, 'documentId'> = {} as any\n ) {\n await strapi.documents(uid).delete({\n ...opts,\n documentId: id,\n });\n return {};\n },\n\n // FIXME: handle relations\n async deleteMany(\n documentIds: Modules.Documents.ID[],\n uid: UID.CollectionType,\n opts: DocServiceParams<'findMany'> & { locale?: string } = {}\n ) {\n const deletedEntries = await strapi.db.transaction(async () => {\n return Promise.all(documentIds.map(async (id) => this.delete(id, uid, opts)));\n });\n\n return { count: deletedEntries.length };\n },\n\n async publish(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'publish'>, 'documentId'> & { populate?: object } = {} as any\n ) {\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, populate };\n\n return strapi\n .documents(uid)\n .publish({ ...params, documentId: id })\n .then((result) => result?.entries);\n },\n\n async publishMany(uid: UID.ContentType, documentIds: string[], locale?: string | string[]) {\n return strapi.db.transaction(async () => {\n const results = await Promise.all(\n documentIds.map((documentId) => this.publish(documentId, uid, { locale, populate: {} }))\n );\n\n const publishedEntitiesCount = results.flat().filter(Boolean).length;\n return publishedEntitiesCount;\n });\n },\n\n async unpublishMany(\n documentIds: Modules.Documents.ID[],\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'unpublish'>, 'documentId'> = {} as any\n ) {\n const unpublishedEntries = await strapi.db.transaction(async () => {\n return Promise.all(\n documentIds.map((id) =>\n strapi\n .documents(uid)\n .unpublish({ ...opts, documentId: id, populate: {} })\n .then((result) => result?.entries)\n )\n );\n });\n\n const unpublishedEntitiesCount = unpublishedEntries.flat().filter(Boolean).length;\n\n // Return the number of unpublished entities\n return { count: unpublishedEntitiesCount };\n },\n\n async unpublish(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'unpublish'>, 'documentId'> & { populate?: object } = {} as any\n ) {\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, populate };\n\n return strapi\n .documents(uid)\n .unpublish({ ...params, documentId: id })\n .then((result) => result?.entries.at(0));\n },\n\n async discardDraft(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'discardDraft'>, 'documentId'> & { populate?: object } = {} as any\n ) {\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, populate };\n\n return strapi\n .documents(uid)\n .discardDraft({ ...params, documentId: id })\n .then((result) => result?.entries.at(0));\n },\n\n async countDraftRelations(id: string, uid: UID.ContentType, locale: string) {\n const { populate, hasRelations } = getDeepPopulateDraftCount(uid);\n\n if (!hasRelations) {\n return EMPTY_DRAFT_RELATION_COUNTS;\n }\n\n const document = await strapi.documents(uid).findOne({ documentId: id, populate, locale });\n if (!document) {\n return EMPTY_DRAFT_RELATION_COUNTS;\n }\n\n return sumDraftCounts(strapi, document, uid);\n },\n\n async countManyEntriesDraftRelations(\n documentIds: Modules.Documents.ID[],\n uid: UID.CollectionType,\n locale: string | string[]\n ) {\n const { populate, hasRelations } = getDeepPopulateDraftCount(uid);\n\n if (!hasRelations) {\n return 0;\n }\n\n const entities = await strapi.documents(uid).findMany({\n populate,\n filters: { documentId: { $in: documentIds } } as any,\n locale,\n status: 'draft',\n });\n\n const counts = await Promise.all(\n entities.map((entity: Document) => sumDraftCounts(strapi, entity, uid))\n );\n\n return counts.reduce(\n (total, entityCounts) =>\n total + entityCounts.unpublishedRelations + entityCounts.draftM2mLinks,\n 0\n );\n },\n };\n};\n\nexport type DocumentManagerService = typeof documentManager;\n\nexport default documentManager;\n"],"names":["PUBLISHED_AT_ATTRIBUTE","contentTypes","constants","omitPublishedAtField","document","omit","omitIdField","documentManager","strapi","findOne","id","uid","opts","documents","documentId","findLocales","where","Array","isArray","locale","$in","isPublished","publishedAt","$notNull","db","query","findMany","populate","params","getDeepPopulate","findPage","pagination","withDefaultPagination","maxLimit","_populate","sort","_sort","countParams","total","Promise","all","count","results","transformPagedPaginationInfo","create","buildDeepPopulate","status","update","publishData","flow","data","clone","body","then","result","entries","at","exists","delete","deleteMany","documentIds","deletedEntries","transaction","map","length","publish","publishMany","publishedEntitiesCount","flat","filter","Boolean","unpublishMany","unpublishedEntries","unpublish","unpublishedEntitiesCount","discardDraft","countDraftRelations","hasRelations","getDeepPopulateDraftCount","EMPTY_DRAFT_RELATION_COUNTS","sumDraftCounts","countManyEntriesDraftRelations","entities","filters","counts","entity","reduce","entityCounts","unpublishedRelations","draftM2mLinks"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { omit, pipe } from 'lodash/fp';
1
+ import { omit, flow } from 'lodash';
2
2
  import { contentTypes, pagination } from '@strapi/utils';
3
3
  import { getDeepPopulateDraftCount, buildDeepPopulate, getDeepPopulate } from './utils/populate.mjs';
4
4
  import { EMPTY_DRAFT_RELATION_COUNTS } from './utils/draft-relations.mjs';
5
5
  import { sumDraftCounts } from './utils/draft.mjs';
6
6
 
7
7
  const { PUBLISHED_AT_ATTRIBUTE } = contentTypes.constants;
8
- const omitPublishedAtField = omit(PUBLISHED_AT_ATTRIBUTE);
9
- const omitIdField = omit('id');
8
+ const omitPublishedAtField = (document)=>omit(document, PUBLISHED_AT_ATTRIBUTE);
9
+ const omitIdField = (document)=>omit(document, 'id');
10
10
  const documentManager = ({ strapi })=>{
11
11
  return {
12
12
  async findOne (id, uid, opts = {}) {
@@ -75,7 +75,7 @@ const documentManager = ({ strapi })=>{
75
75
  return strapi.documents(uid).create(params);
76
76
  },
77
77
  async update (id, uid, opts = {}) {
78
- const publishData = pipe(omitPublishedAtField, omitIdField)(opts.data || {});
78
+ const publishData = flow(omitPublishedAtField, omitIdField)(opts.data || {});
79
79
  const populate = opts.populate ?? await buildDeepPopulate(uid);
80
80
  const params = {
81
81
  ...opts,
@@ -94,10 +94,10 @@ const documentManager = ({ strapi })=>{
94
94
  const locale = body?.locale;
95
95
  const params = {
96
96
  // Ensure id and documentId are not copied to the clone
97
- data: omit([
97
+ data: omit(body, [
98
98
  'id',
99
99
  'documentId'
100
- ], body),
100
+ ]),
101
101
  locale,
102
102
  populate
103
103
  };
@@ -1 +1 @@
1
- {"version":3,"file":"document-manager.mjs","sources":["../../../server/src/services/document-manager.ts"],"sourcesContent":["import { omit, pipe } from 'lodash/fp';\n\nimport { contentTypes, pagination } from '@strapi/utils';\nimport type { Core, Modules, UID } from '@strapi/types';\n\nimport { buildDeepPopulate, getDeepPopulate, getDeepPopulateDraftCount } from './utils/populate';\nimport { EMPTY_DRAFT_RELATION_COUNTS } from './utils/draft-relations';\nimport { sumDraftCounts } from './utils/draft';\n\ntype DocService = Modules.Documents.ServiceInstance;\ntype DocServiceParams<TAction extends keyof DocService> = Parameters<DocService[TAction]>[0];\nexport type Document = Modules.Documents.Result<UID.ContentType>;\n\nconst { PUBLISHED_AT_ATTRIBUTE } = contentTypes.constants;\n\nconst omitPublishedAtField = omit(PUBLISHED_AT_ATTRIBUTE);\nconst omitIdField = omit('id');\n\nconst documentManager = ({ strapi }: { strapi: Core.Strapi }) => {\n return {\n async findOne(\n id: string,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'findOne'>, 'documentId'> = {}\n ) {\n return strapi.documents(uid).findOne({ ...opts, documentId: id });\n },\n\n /**\n * Find multiple (or all) locales for a document\n */\n async findLocales(\n id: string | string[] | undefined,\n uid: UID.CollectionType,\n opts: {\n populate?: Modules.Documents.Params.Pick<any, 'populate'>;\n locale?: string | string[] | '*';\n isPublished?: boolean;\n }\n ) {\n // Will look for a specific locale by default\n const where: any = {};\n\n // Might not have an id if querying a single type\n if (id) {\n where.documentId = id;\n }\n\n // Search in array of locales\n if (Array.isArray(opts.locale)) {\n where.locale = { $in: opts.locale };\n } else if (opts.locale && opts.locale !== '*') {\n // Look for a specific locale, ignore if looking for all locales\n where.locale = opts.locale;\n }\n\n // Published is passed, so we filter on it, otherwise we don't filter\n if (typeof opts.isPublished === 'boolean') {\n where.publishedAt = { $notNull: opts.isPublished };\n }\n\n return strapi.db.query(uid).findMany({ populate: opts.populate, where });\n },\n\n async findMany(opts: DocServiceParams<'findMany'>, uid: UID.CollectionType) {\n const params = { ...opts, populate: getDeepPopulate(uid) } as typeof opts;\n return strapi.documents(uid).findMany(params);\n },\n\n async findPage(opts: DocServiceParams<'findMany'>, uid: UID.CollectionType) {\n const params = pagination.withDefaultPagination(opts || {}, {\n maxLimit: 1000,\n });\n\n const { populate: _populate, sort: _sort, ...countParams } = params;\n const [documents, total = 0] = await Promise.all([\n strapi.documents(uid).findMany(params),\n strapi.documents(uid).count(countParams),\n ]);\n\n return {\n results: documents,\n pagination: pagination.transformPagedPaginationInfo(params, total),\n };\n },\n\n async create(uid: UID.CollectionType, opts: DocServiceParams<'create'> = {} as any) {\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, status: 'draft' as const, populate };\n\n return strapi.documents(uid).create(params);\n },\n\n async update(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'update'>, 'documentId'> = {} as any\n ) {\n const publishData = pipe(omitPublishedAtField, omitIdField)(opts.data || {});\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, data: publishData, populate, status: 'draft' };\n\n return strapi.documents(uid).update({ ...params, documentId: id });\n },\n\n async clone(\n id: Modules.Documents.ID,\n body: Partial<Modules.Documents.Params.Data.Input<UID.CollectionType>>,\n uid: UID.CollectionType\n ) {\n const populate = await buildDeepPopulate(uid);\n\n // Extract the locale to pass it as a plain param\n const locale = body?.locale;\n const params = {\n // Ensure id and documentId are not copied to the clone\n data: omit(['id', 'documentId'], body),\n locale,\n populate,\n };\n\n return strapi\n .documents(uid)\n .clone({ ...params, documentId: id })\n .then((result) => result?.entries.at(0));\n },\n\n /**\n * Check if a document exists\n */\n async exists(uid: UID.CollectionType, id?: string) {\n // Collection type\n if (id) {\n const count = await strapi.db.query(uid).count({ where: { documentId: id } });\n return count > 0;\n }\n\n // Single type\n const count = await strapi.db.query(uid).count();\n return count > 0;\n },\n\n async delete(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'delete'>, 'documentId'> = {} as any\n ) {\n await strapi.documents(uid).delete({\n ...opts,\n documentId: id,\n });\n return {};\n },\n\n // FIXME: handle relations\n async deleteMany(\n documentIds: Modules.Documents.ID[],\n uid: UID.CollectionType,\n opts: DocServiceParams<'findMany'> & { locale?: string } = {}\n ) {\n const deletedEntries = await strapi.db.transaction(async () => {\n return Promise.all(documentIds.map(async (id) => this.delete(id, uid, opts)));\n });\n\n return { count: deletedEntries.length };\n },\n\n async publish(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'publish'>, 'documentId'> & { populate?: object } = {} as any\n ) {\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, populate };\n\n return strapi\n .documents(uid)\n .publish({ ...params, documentId: id })\n .then((result) => result?.entries);\n },\n\n async publishMany(uid: UID.ContentType, documentIds: string[], locale?: string | string[]) {\n return strapi.db.transaction(async () => {\n const results = await Promise.all(\n documentIds.map((documentId) => this.publish(documentId, uid, { locale, populate: {} }))\n );\n\n const publishedEntitiesCount = results.flat().filter(Boolean).length;\n return publishedEntitiesCount;\n });\n },\n\n async unpublishMany(\n documentIds: Modules.Documents.ID[],\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'unpublish'>, 'documentId'> = {} as any\n ) {\n const unpublishedEntries = await strapi.db.transaction(async () => {\n return Promise.all(\n documentIds.map((id) =>\n strapi\n .documents(uid)\n .unpublish({ ...opts, documentId: id, populate: {} })\n .then((result) => result?.entries)\n )\n );\n });\n\n const unpublishedEntitiesCount = unpublishedEntries.flat().filter(Boolean).length;\n\n // Return the number of unpublished entities\n return { count: unpublishedEntitiesCount };\n },\n\n async unpublish(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'unpublish'>, 'documentId'> & { populate?: object } = {} as any\n ) {\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, populate };\n\n return strapi\n .documents(uid)\n .unpublish({ ...params, documentId: id })\n .then((result) => result?.entries.at(0));\n },\n\n async discardDraft(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'discardDraft'>, 'documentId'> & { populate?: object } = {} as any\n ) {\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, populate };\n\n return strapi\n .documents(uid)\n .discardDraft({ ...params, documentId: id })\n .then((result) => result?.entries.at(0));\n },\n\n async countDraftRelations(id: string, uid: UID.ContentType, locale: string) {\n const { populate, hasRelations } = getDeepPopulateDraftCount(uid);\n\n if (!hasRelations) {\n return EMPTY_DRAFT_RELATION_COUNTS;\n }\n\n const document = await strapi.documents(uid).findOne({ documentId: id, populate, locale });\n if (!document) {\n return EMPTY_DRAFT_RELATION_COUNTS;\n }\n\n return sumDraftCounts(strapi, document, uid);\n },\n\n async countManyEntriesDraftRelations(\n documentIds: Modules.Documents.ID[],\n uid: UID.CollectionType,\n locale: string | string[]\n ) {\n const { populate, hasRelations } = getDeepPopulateDraftCount(uid);\n\n if (!hasRelations) {\n return 0;\n }\n\n const entities = await strapi.documents(uid).findMany({\n populate,\n filters: { documentId: { $in: documentIds } } as any,\n locale,\n status: 'draft',\n });\n\n const counts = await Promise.all(\n entities.map((entity: Document) => sumDraftCounts(strapi, entity, uid))\n );\n\n return counts.reduce(\n (total, entityCounts) =>\n total + entityCounts.unpublishedRelations + entityCounts.draftM2mLinks,\n 0\n );\n },\n };\n};\n\nexport type DocumentManagerService = typeof documentManager;\n\nexport default documentManager;\n"],"names":["PUBLISHED_AT_ATTRIBUTE","contentTypes","constants","omitPublishedAtField","omit","omitIdField","documentManager","strapi","findOne","id","uid","opts","documents","documentId","findLocales","where","Array","isArray","locale","$in","isPublished","publishedAt","$notNull","db","query","findMany","populate","params","getDeepPopulate","findPage","pagination","withDefaultPagination","maxLimit","_populate","sort","_sort","countParams","total","Promise","all","count","results","transformPagedPaginationInfo","create","buildDeepPopulate","status","update","publishData","pipe","data","clone","body","then","result","entries","at","exists","delete","deleteMany","documentIds","deletedEntries","transaction","map","length","publish","publishMany","publishedEntitiesCount","flat","filter","Boolean","unpublishMany","unpublishedEntries","unpublish","unpublishedEntitiesCount","discardDraft","countDraftRelations","hasRelations","getDeepPopulateDraftCount","EMPTY_DRAFT_RELATION_COUNTS","document","sumDraftCounts","countManyEntriesDraftRelations","entities","filters","counts","entity","reduce","entityCounts","unpublishedRelations","draftM2mLinks"],"mappings":"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"}
1
+ {"version":3,"file":"document-manager.mjs","sources":["../../../server/src/services/document-manager.ts"],"sourcesContent":["import { omit, flow } from 'lodash';\n\nimport { contentTypes, pagination } from '@strapi/utils';\nimport type { Core, Modules, UID } from '@strapi/types';\n\nimport { buildDeepPopulate, getDeepPopulate, getDeepPopulateDraftCount } from './utils/populate';\nimport { EMPTY_DRAFT_RELATION_COUNTS } from './utils/draft-relations';\nimport { sumDraftCounts } from './utils/draft';\n\ntype DocService = Modules.Documents.ServiceInstance;\ntype DocServiceParams<TAction extends keyof DocService> = Parameters<DocService[TAction]>[0];\nexport type Document = Modules.Documents.Result<UID.ContentType>;\n\nconst { PUBLISHED_AT_ATTRIBUTE } = contentTypes.constants;\n\nconst omitPublishedAtField = <T extends object>(document: T) =>\n omit(document, PUBLISHED_AT_ATTRIBUTE);\nconst omitIdField = <T extends object>(document: T) => omit(document, 'id');\n\nconst documentManager = ({ strapi }: { strapi: Core.Strapi }) => {\n return {\n async findOne(\n id: string,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'findOne'>, 'documentId'> = {}\n ) {\n return strapi.documents(uid).findOne({ ...opts, documentId: id });\n },\n\n /**\n * Find multiple (or all) locales for a document\n */\n async findLocales(\n id: string | string[] | undefined,\n uid: UID.CollectionType,\n opts: {\n populate?: Modules.Documents.Params.Pick<any, 'populate'>;\n locale?: string | string[] | '*';\n isPublished?: boolean;\n }\n ) {\n // Will look for a specific locale by default\n const where: any = {};\n\n // Might not have an id if querying a single type\n if (id) {\n where.documentId = id;\n }\n\n // Search in array of locales\n if (Array.isArray(opts.locale)) {\n where.locale = { $in: opts.locale };\n } else if (opts.locale && opts.locale !== '*') {\n // Look for a specific locale, ignore if looking for all locales\n where.locale = opts.locale;\n }\n\n // Published is passed, so we filter on it, otherwise we don't filter\n if (typeof opts.isPublished === 'boolean') {\n where.publishedAt = { $notNull: opts.isPublished };\n }\n\n return strapi.db.query(uid).findMany({ populate: opts.populate, where });\n },\n\n async findMany(opts: DocServiceParams<'findMany'>, uid: UID.CollectionType) {\n const params = { ...opts, populate: getDeepPopulate(uid) } as typeof opts;\n return strapi.documents(uid).findMany(params);\n },\n\n async findPage(opts: DocServiceParams<'findMany'>, uid: UID.CollectionType) {\n const params = pagination.withDefaultPagination(opts || {}, {\n maxLimit: 1000,\n });\n\n const { populate: _populate, sort: _sort, ...countParams } = params;\n const [documents, total = 0] = await Promise.all([\n strapi.documents(uid).findMany(params),\n strapi.documents(uid).count(countParams),\n ]);\n\n return {\n results: documents,\n pagination: pagination.transformPagedPaginationInfo(params, total),\n };\n },\n\n async create(uid: UID.CollectionType, opts: DocServiceParams<'create'> = {} as any) {\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, status: 'draft' as const, populate };\n\n return strapi.documents(uid).create(params);\n },\n\n async update(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'update'>, 'documentId'> = {} as any\n ) {\n const publishData = flow(omitPublishedAtField, omitIdField)(opts.data || {});\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, data: publishData, populate, status: 'draft' };\n\n return strapi.documents(uid).update({ ...params, documentId: id });\n },\n\n async clone(\n id: Modules.Documents.ID,\n body: Partial<Modules.Documents.Params.Data.Input<UID.CollectionType>>,\n uid: UID.CollectionType\n ) {\n const populate = await buildDeepPopulate(uid);\n\n // Extract the locale to pass it as a plain param\n const locale = body?.locale;\n const params = {\n // Ensure id and documentId are not copied to the clone\n data: omit(body, ['id', 'documentId']),\n locale,\n populate,\n };\n\n return strapi\n .documents(uid)\n .clone({ ...params, documentId: id })\n .then((result) => result?.entries.at(0));\n },\n\n /**\n * Check if a document exists\n */\n async exists(uid: UID.CollectionType, id?: string) {\n // Collection type\n if (id) {\n const count = await strapi.db.query(uid).count({ where: { documentId: id } });\n return count > 0;\n }\n\n // Single type\n const count = await strapi.db.query(uid).count();\n return count > 0;\n },\n\n async delete(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'delete'>, 'documentId'> = {} as any\n ) {\n await strapi.documents(uid).delete({\n ...opts,\n documentId: id,\n });\n return {};\n },\n\n // FIXME: handle relations\n async deleteMany(\n documentIds: Modules.Documents.ID[],\n uid: UID.CollectionType,\n opts: DocServiceParams<'findMany'> & { locale?: string } = {}\n ) {\n const deletedEntries = await strapi.db.transaction(async () => {\n return Promise.all(documentIds.map(async (id) => this.delete(id, uid, opts)));\n });\n\n return { count: deletedEntries.length };\n },\n\n async publish(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'publish'>, 'documentId'> & { populate?: object } = {} as any\n ) {\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, populate };\n\n return strapi\n .documents(uid)\n .publish({ ...params, documentId: id })\n .then((result) => result?.entries);\n },\n\n async publishMany(uid: UID.ContentType, documentIds: string[], locale?: string | string[]) {\n return strapi.db.transaction(async () => {\n const results = await Promise.all(\n documentIds.map((documentId) => this.publish(documentId, uid, { locale, populate: {} }))\n );\n\n const publishedEntitiesCount = results.flat().filter(Boolean).length;\n return publishedEntitiesCount;\n });\n },\n\n async unpublishMany(\n documentIds: Modules.Documents.ID[],\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'unpublish'>, 'documentId'> = {} as any\n ) {\n const unpublishedEntries = await strapi.db.transaction(async () => {\n return Promise.all(\n documentIds.map((id) =>\n strapi\n .documents(uid)\n .unpublish({ ...opts, documentId: id, populate: {} })\n .then((result) => result?.entries)\n )\n );\n });\n\n const unpublishedEntitiesCount = unpublishedEntries.flat().filter(Boolean).length;\n\n // Return the number of unpublished entities\n return { count: unpublishedEntitiesCount };\n },\n\n async unpublish(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'unpublish'>, 'documentId'> & { populate?: object } = {} as any\n ) {\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, populate };\n\n return strapi\n .documents(uid)\n .unpublish({ ...params, documentId: id })\n .then((result) => result?.entries.at(0));\n },\n\n async discardDraft(\n id: Modules.Documents.ID,\n uid: UID.CollectionType,\n opts: Omit<DocServiceParams<'discardDraft'>, 'documentId'> & { populate?: object } = {} as any\n ) {\n const populate = opts.populate ?? (await buildDeepPopulate(uid));\n const params = { ...opts, populate };\n\n return strapi\n .documents(uid)\n .discardDraft({ ...params, documentId: id })\n .then((result) => result?.entries.at(0));\n },\n\n async countDraftRelations(id: string, uid: UID.ContentType, locale: string) {\n const { populate, hasRelations } = getDeepPopulateDraftCount(uid);\n\n if (!hasRelations) {\n return EMPTY_DRAFT_RELATION_COUNTS;\n }\n\n const document = await strapi.documents(uid).findOne({ documentId: id, populate, locale });\n if (!document) {\n return EMPTY_DRAFT_RELATION_COUNTS;\n }\n\n return sumDraftCounts(strapi, document, uid);\n },\n\n async countManyEntriesDraftRelations(\n documentIds: Modules.Documents.ID[],\n uid: UID.CollectionType,\n locale: string | string[]\n ) {\n const { populate, hasRelations } = getDeepPopulateDraftCount(uid);\n\n if (!hasRelations) {\n return 0;\n }\n\n const entities = await strapi.documents(uid).findMany({\n populate,\n filters: { documentId: { $in: documentIds } } as any,\n locale,\n status: 'draft',\n });\n\n const counts = await Promise.all(\n entities.map((entity: Document) => sumDraftCounts(strapi, entity, uid))\n );\n\n return counts.reduce(\n (total, entityCounts) =>\n total + entityCounts.unpublishedRelations + entityCounts.draftM2mLinks,\n 0\n );\n },\n };\n};\n\nexport type DocumentManagerService = typeof documentManager;\n\nexport default documentManager;\n"],"names":["PUBLISHED_AT_ATTRIBUTE","contentTypes","constants","omitPublishedAtField","document","omit","omitIdField","documentManager","strapi","findOne","id","uid","opts","documents","documentId","findLocales","where","Array","isArray","locale","$in","isPublished","publishedAt","$notNull","db","query","findMany","populate","params","getDeepPopulate","findPage","pagination","withDefaultPagination","maxLimit","_populate","sort","_sort","countParams","total","Promise","all","count","results","transformPagedPaginationInfo","create","buildDeepPopulate","status","update","publishData","flow","data","clone","body","then","result","entries","at","exists","delete","deleteMany","documentIds","deletedEntries","transaction","map","length","publish","publishMany","publishedEntitiesCount","flat","filter","Boolean","unpublishMany","unpublishedEntries","unpublish","unpublishedEntitiesCount","discardDraft","countDraftRelations","hasRelations","getDeepPopulateDraftCount","EMPTY_DRAFT_RELATION_COUNTS","sumDraftCounts","countManyEntriesDraftRelations","entities","filters","counts","entity","reduce","entityCounts","unpublishedRelations","draftM2mLinks"],"mappings":"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"}