@rakun-kit/core 1.5.0 → 1.5.2

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 (264) hide show
  1. package/README.md +33 -24
  2. package/dist/cjs/api/operations/manager-contract.js +13 -5
  3. package/dist/cjs/api/operations/manager-contract.js.map +1 -1
  4. package/dist/cjs/api/operations/manager-manifest.js +7 -2
  5. package/dist/cjs/api/operations/manager-manifest.js.map +1 -1
  6. package/dist/cjs/api/operations/manager.js +6 -3
  7. package/dist/cjs/api/operations/manager.js.map +1 -1
  8. package/dist/cjs/api/routes/manager/create.js +3 -78
  9. package/dist/cjs/api/routes/manager/create.js.map +1 -1
  10. package/dist/cjs/api/routes/manager/delete.js +2 -2
  11. package/dist/cjs/api/routes/manager/delete.js.map +1 -1
  12. package/dist/cjs/api/routes/manager/duplicate.js +2 -2
  13. package/dist/cjs/api/routes/manager/duplicate.js.map +1 -1
  14. package/dist/cjs/api/routes/manager/get.js +3 -4
  15. package/dist/cjs/api/routes/manager/get.js.map +1 -1
  16. package/dist/cjs/api/routes/manager/list.js +2 -2
  17. package/dist/cjs/api/routes/manager/list.js.map +1 -1
  18. package/dist/cjs/api/routes/manager/preview/create.js +21 -0
  19. package/dist/cjs/api/routes/manager/preview/create.js.map +1 -1
  20. package/dist/cjs/api/routes/manager/template.js +111 -0
  21. package/dist/cjs/api/routes/manager/template.js.map +1 -0
  22. package/dist/cjs/api/routes/manager/translateDocument.js +2 -45
  23. package/dist/cjs/api/routes/manager/translateDocument.js.map +1 -1
  24. package/dist/cjs/api/routes/manager/trash.js +2 -2
  25. package/dist/cjs/api/routes/manager/trash.js.map +1 -1
  26. package/dist/cjs/api/routes/manager/update.js +3 -73
  27. package/dist/cjs/api/routes/manager/update.js.map +1 -1
  28. package/dist/cjs/api/routes/web/page.js +80 -29
  29. package/dist/cjs/api/routes/web/page.js.map +1 -1
  30. package/dist/cjs/api/routes/web/previewPage.js +3 -1
  31. package/dist/cjs/api/routes/web/previewPage.js.map +1 -1
  32. package/dist/cjs/api/utils/contentTemplate.js +205 -0
  33. package/dist/cjs/api/utils/contentTemplate.js.map +1 -0
  34. package/dist/cjs/client.js +2 -2
  35. package/dist/cjs/client.js.map +1 -1
  36. package/dist/cjs/contracts.js +1 -0
  37. package/dist/cjs/contracts.js.map +1 -1
  38. package/dist/cjs/index.js +6 -2
  39. package/dist/cjs/index.js.map +1 -1
  40. package/dist/cjs/internal-content-types/{LinkedIteratorTemplate.js → ContentTemplate.js} +5 -5
  41. package/dist/cjs/internal-content-types/ContentTemplate.js.map +1 -0
  42. package/dist/cjs/internal-content-types/PreviewSnapshot.js +1 -0
  43. package/dist/cjs/internal-content-types/PreviewSnapshot.js.map +1 -1
  44. package/dist/cjs/internal-content-types/TemplateContent.js +18 -0
  45. package/dist/cjs/internal-content-types/TemplateContent.js.map +1 -0
  46. package/dist/cjs/internal-content-types/index.js +2 -1
  47. package/dist/cjs/internal-content-types/index.js.map +1 -1
  48. package/dist/cjs/lib/ContentType.js +15 -24
  49. package/dist/cjs/lib/ContentType.js.map +1 -1
  50. package/dist/cjs/lib/Registry.js +26 -10
  51. package/dist/cjs/lib/Registry.js.map +1 -1
  52. package/dist/cjs/lib/systemFields.js +2 -2
  53. package/dist/cjs/lib/systemFields.js.map +1 -1
  54. package/dist/cjs/schemas/manager/create.js +0 -2
  55. package/dist/cjs/schemas/manager/create.js.map +1 -1
  56. package/dist/cjs/schemas/manager/preview.js +1 -0
  57. package/dist/cjs/schemas/manager/preview.js.map +1 -1
  58. package/dist/cjs/schemas/manager/template.js +24 -0
  59. package/dist/cjs/schemas/manager/template.js.map +1 -0
  60. package/dist/cjs/schemas/manager/update.js +0 -2
  61. package/dist/cjs/schemas/manager/update.js.map +1 -1
  62. package/dist/cjs/schemas/web/page.js +1 -0
  63. package/dist/cjs/schemas/web/page.js.map +1 -1
  64. package/dist/docs/index.md +17 -4
  65. package/dist/esm/api/operations/index.d.ts +21 -16
  66. package/dist/esm/api/operations/index.d.ts.map +1 -1
  67. package/dist/esm/api/operations/manager-contract.d.ts +19 -16
  68. package/dist/esm/api/operations/manager-contract.d.ts.map +1 -1
  69. package/dist/esm/api/operations/manager-contract.js +13 -5
  70. package/dist/esm/api/operations/manager-contract.js.map +1 -1
  71. package/dist/esm/api/operations/manager-manifest.d.ts +6 -1
  72. package/dist/esm/api/operations/manager-manifest.d.ts.map +1 -1
  73. package/dist/esm/api/operations/manager-manifest.js +7 -2
  74. package/dist/esm/api/operations/manager-manifest.js.map +1 -1
  75. package/dist/esm/api/operations/manager.d.ts +19 -16
  76. package/dist/esm/api/operations/manager.d.ts.map +1 -1
  77. package/dist/esm/api/operations/manager.js +6 -3
  78. package/dist/esm/api/operations/manager.js.map +1 -1
  79. package/dist/esm/api/operations/web-contract.d.ts +2 -0
  80. package/dist/esm/api/operations/web-contract.d.ts.map +1 -1
  81. package/dist/esm/api/operations/web.d.ts +2 -0
  82. package/dist/esm/api/operations/web.d.ts.map +1 -1
  83. package/dist/esm/api/routes/manager/auth/markTourSeen.d.ts +0 -2
  84. package/dist/esm/api/routes/manager/auth/markTourSeen.d.ts.map +1 -1
  85. package/dist/esm/api/routes/manager/auth/updateAccount.d.ts +0 -2
  86. package/dist/esm/api/routes/manager/auth/updateAccount.d.ts.map +1 -1
  87. package/dist/esm/api/routes/manager/auth/updateTutorialPreferences.d.ts +0 -2
  88. package/dist/esm/api/routes/manager/auth/updateTutorialPreferences.d.ts.map +1 -1
  89. package/dist/esm/api/routes/manager/contentType.d.ts +10 -1
  90. package/dist/esm/api/routes/manager/contentType.d.ts.map +1 -1
  91. package/dist/esm/api/routes/manager/contentTypes.d.ts +10 -1
  92. package/dist/esm/api/routes/manager/contentTypes.d.ts.map +1 -1
  93. package/dist/esm/api/routes/manager/create.d.ts +0 -1
  94. package/dist/esm/api/routes/manager/create.d.ts.map +1 -1
  95. package/dist/esm/api/routes/manager/create.js +3 -78
  96. package/dist/esm/api/routes/manager/create.js.map +1 -1
  97. package/dist/esm/api/routes/manager/delete.js +2 -2
  98. package/dist/esm/api/routes/manager/delete.js.map +1 -1
  99. package/dist/esm/api/routes/manager/duplicate.d.ts +0 -1
  100. package/dist/esm/api/routes/manager/duplicate.d.ts.map +1 -1
  101. package/dist/esm/api/routes/manager/duplicate.js +2 -2
  102. package/dist/esm/api/routes/manager/duplicate.js.map +1 -1
  103. package/dist/esm/api/routes/manager/get.d.ts.map +1 -1
  104. package/dist/esm/api/routes/manager/get.js +3 -4
  105. package/dist/esm/api/routes/manager/get.js.map +1 -1
  106. package/dist/esm/api/routes/manager/languages.d.ts +0 -1
  107. package/dist/esm/api/routes/manager/languages.d.ts.map +1 -1
  108. package/dist/esm/api/routes/manager/list.js +2 -2
  109. package/dist/esm/api/routes/manager/list.js.map +1 -1
  110. package/dist/esm/api/routes/manager/localeVariants.d.ts +0 -5
  111. package/dist/esm/api/routes/manager/localeVariants.d.ts.map +1 -1
  112. package/dist/esm/api/routes/manager/preview/create.d.ts.map +1 -1
  113. package/dist/esm/api/routes/manager/preview/create.js +21 -0
  114. package/dist/esm/api/routes/manager/preview/create.js.map +1 -1
  115. package/dist/esm/api/routes/manager/template.d.ts +13 -0
  116. package/dist/esm/api/routes/manager/template.d.ts.map +1 -0
  117. package/dist/esm/api/routes/manager/template.js +105 -0
  118. package/dist/esm/api/routes/manager/template.js.map +1 -0
  119. package/dist/esm/api/routes/manager/translateDocument.d.ts.map +1 -1
  120. package/dist/esm/api/routes/manager/translateDocument.js +2 -45
  121. package/dist/esm/api/routes/manager/translateDocument.js.map +1 -1
  122. package/dist/esm/api/routes/manager/trash.js +2 -2
  123. package/dist/esm/api/routes/manager/trash.js.map +1 -1
  124. package/dist/esm/api/routes/manager/update.d.ts +0 -1
  125. package/dist/esm/api/routes/manager/update.d.ts.map +1 -1
  126. package/dist/esm/api/routes/manager/update.js +3 -73
  127. package/dist/esm/api/routes/manager/update.js.map +1 -1
  128. package/dist/esm/api/routes/web/page.d.ts +2 -2
  129. package/dist/esm/api/routes/web/page.d.ts.map +1 -1
  130. package/dist/esm/api/routes/web/page.js +80 -29
  131. package/dist/esm/api/routes/web/page.js.map +1 -1
  132. package/dist/esm/api/routes/web/previewPage.d.ts +1 -0
  133. package/dist/esm/api/routes/web/previewPage.d.ts.map +1 -1
  134. package/dist/esm/api/routes/web/previewPage.js +3 -1
  135. package/dist/esm/api/routes/web/previewPage.js.map +1 -1
  136. package/dist/esm/api/utils/contentTemplate.d.ts +31 -0
  137. package/dist/esm/api/utils/contentTemplate.d.ts.map +1 -0
  138. package/dist/esm/api/utils/contentTemplate.js +194 -0
  139. package/dist/esm/api/utils/contentTemplate.js.map +1 -0
  140. package/dist/esm/api/utils/getUser.d.ts +0 -2
  141. package/dist/esm/api/utils/getUser.d.ts.map +1 -1
  142. package/dist/esm/api/utils/managerNotifications.d.ts +0 -1
  143. package/dist/esm/api/utils/managerNotifications.d.ts.map +1 -1
  144. package/dist/esm/api/utils/reviews.d.ts +0 -2
  145. package/dist/esm/api/utils/reviews.d.ts.map +1 -1
  146. package/dist/esm/api/utils/routes/routeMapHelpers.d.ts +0 -1
  147. package/dist/esm/api/utils/routes/routeMapHelpers.d.ts.map +1 -1
  148. package/dist/esm/client.d.ts +2 -2
  149. package/dist/esm/client.d.ts.map +1 -1
  150. package/dist/esm/client.js +1 -1
  151. package/dist/esm/client.js.map +1 -1
  152. package/dist/esm/contracts.d.ts +1 -0
  153. package/dist/esm/contracts.d.ts.map +1 -1
  154. package/dist/esm/contracts.js +1 -0
  155. package/dist/esm/contracts.js.map +1 -1
  156. package/dist/esm/index.d.ts +1 -1
  157. package/dist/esm/index.d.ts.map +1 -1
  158. package/dist/esm/index.js +5 -1
  159. package/dist/esm/index.js.map +1 -1
  160. package/dist/esm/internal-content-types/ContentComment.d.ts +0 -5
  161. package/dist/esm/internal-content-types/ContentComment.d.ts.map +1 -1
  162. package/dist/esm/internal-content-types/ContentCommentReadState.d.ts +0 -4
  163. package/dist/esm/internal-content-types/ContentCommentReadState.d.ts.map +1 -1
  164. package/dist/esm/internal-content-types/ContentReview.d.ts +0 -13
  165. package/dist/esm/internal-content-types/ContentReview.d.ts.map +1 -1
  166. package/dist/esm/internal-content-types/ContentReviewDecision.d.ts +0 -4
  167. package/dist/esm/internal-content-types/ContentReviewDecision.d.ts.map +1 -1
  168. package/dist/esm/internal-content-types/ContentReviewPolicy.d.ts +0 -2
  169. package/dist/esm/internal-content-types/ContentReviewPolicy.d.ts.map +1 -1
  170. package/dist/esm/internal-content-types/{LinkedIteratorTemplate.d.ts → ContentTemplate.d.ts} +5 -5
  171. package/dist/esm/internal-content-types/ContentTemplate.d.ts.map +1 -0
  172. package/dist/esm/internal-content-types/{LinkedIteratorTemplate.js → ContentTemplate.js} +4 -4
  173. package/dist/esm/internal-content-types/ContentTemplate.js.map +1 -0
  174. package/dist/esm/internal-content-types/ManagerFavorite.d.ts +0 -4
  175. package/dist/esm/internal-content-types/ManagerFavorite.d.ts.map +1 -1
  176. package/dist/esm/internal-content-types/ManagerNotification.d.ts +0 -8
  177. package/dist/esm/internal-content-types/ManagerNotification.d.ts.map +1 -1
  178. package/dist/esm/internal-content-types/ManagerUser.d.ts +0 -1
  179. package/dist/esm/internal-content-types/ManagerUser.d.ts.map +1 -1
  180. package/dist/esm/internal-content-types/MfaChallenge.d.ts +0 -4
  181. package/dist/esm/internal-content-types/MfaChallenge.d.ts.map +1 -1
  182. package/dist/esm/internal-content-types/PasswordResetToken.d.ts +0 -4
  183. package/dist/esm/internal-content-types/PasswordResetToken.d.ts.map +1 -1
  184. package/dist/esm/internal-content-types/PreviewSnapshot.d.ts +1 -0
  185. package/dist/esm/internal-content-types/PreviewSnapshot.d.ts.map +1 -1
  186. package/dist/esm/internal-content-types/PreviewSnapshot.js +1 -0
  187. package/dist/esm/internal-content-types/PreviewSnapshot.js.map +1 -1
  188. package/dist/esm/internal-content-types/Session.d.ts +0 -4
  189. package/dist/esm/internal-content-types/Session.d.ts.map +1 -1
  190. package/dist/esm/internal-content-types/TemplateContent.d.ts +5 -0
  191. package/dist/esm/internal-content-types/TemplateContent.d.ts.map +1 -0
  192. package/dist/esm/internal-content-types/TemplateContent.js +12 -0
  193. package/dist/esm/internal-content-types/TemplateContent.js.map +1 -0
  194. package/dist/esm/internal-content-types/UserMfa.d.ts +0 -4
  195. package/dist/esm/internal-content-types/UserMfa.d.ts.map +1 -1
  196. package/dist/esm/internal-content-types/WebAuthnCredential.d.ts +0 -4
  197. package/dist/esm/internal-content-types/WebAuthnCredential.d.ts.map +1 -1
  198. package/dist/esm/internal-content-types/WebAuthnRegChallenge.d.ts +0 -4
  199. package/dist/esm/internal-content-types/WebAuthnRegChallenge.d.ts.map +1 -1
  200. package/dist/esm/internal-content-types/index.d.ts +2 -1
  201. package/dist/esm/internal-content-types/index.d.ts.map +1 -1
  202. package/dist/esm/internal-content-types/index.js +2 -1
  203. package/dist/esm/internal-content-types/index.js.map +1 -1
  204. package/dist/esm/internal-content-types/syncAdminRole.d.ts +0 -1
  205. package/dist/esm/internal-content-types/syncAdminRole.d.ts.map +1 -1
  206. package/dist/esm/lib/ContentType.d.ts +12 -19
  207. package/dist/esm/lib/ContentType.d.ts.map +1 -1
  208. package/dist/esm/lib/ContentType.js +16 -25
  209. package/dist/esm/lib/ContentType.js.map +1 -1
  210. package/dist/esm/lib/Registry.d.ts +5 -3
  211. package/dist/esm/lib/Registry.d.ts.map +1 -1
  212. package/dist/esm/lib/Registry.js +26 -10
  213. package/dist/esm/lib/Registry.js.map +1 -1
  214. package/dist/esm/lib/systemFields.d.ts +1 -1
  215. package/dist/esm/lib/systemFields.d.ts.map +1 -1
  216. package/dist/esm/lib/systemFields.js +1 -1
  217. package/dist/esm/lib/systemFields.js.map +1 -1
  218. package/dist/esm/manager.d.ts +6 -1
  219. package/dist/esm/manager.d.ts.map +1 -1
  220. package/dist/esm/schemas/manager/create.d.ts +0 -11
  221. package/dist/esm/schemas/manager/create.d.ts.map +1 -1
  222. package/dist/esm/schemas/manager/create.js +0 -2
  223. package/dist/esm/schemas/manager/create.js.map +1 -1
  224. package/dist/esm/schemas/manager/preview.d.ts +1 -0
  225. package/dist/esm/schemas/manager/preview.d.ts.map +1 -1
  226. package/dist/esm/schemas/manager/preview.js +1 -0
  227. package/dist/esm/schemas/manager/preview.js.map +1 -1
  228. package/dist/esm/schemas/manager/template.d.ts +21 -0
  229. package/dist/esm/schemas/manager/template.d.ts.map +1 -0
  230. package/dist/esm/schemas/manager/template.js +18 -0
  231. package/dist/esm/schemas/manager/template.js.map +1 -0
  232. package/dist/esm/schemas/manager/update.d.ts +0 -11
  233. package/dist/esm/schemas/manager/update.d.ts.map +1 -1
  234. package/dist/esm/schemas/manager/update.js +0 -2
  235. package/dist/esm/schemas/manager/update.js.map +1 -1
  236. package/dist/esm/schemas/web/page.d.ts +1 -0
  237. package/dist/esm/schemas/web/page.d.ts.map +1 -1
  238. package/dist/esm/schemas/web/page.js +1 -0
  239. package/dist/esm/schemas/web/page.js.map +1 -1
  240. package/dist/esm/schemas/web/previewPage.d.ts +1 -0
  241. package/dist/esm/schemas/web/previewPage.d.ts.map +1 -1
  242. package/dist/tsconfig.build.tsbuildinfo +1 -1
  243. package/package.json +1 -1
  244. package/dist/cjs/api/routes/manager/linkedIterator.js +0 -69
  245. package/dist/cjs/api/routes/manager/linkedIterator.js.map +0 -1
  246. package/dist/cjs/api/utils/linkedIterator.js +0 -167
  247. package/dist/cjs/api/utils/linkedIterator.js.map +0 -1
  248. package/dist/cjs/internal-content-types/LinkedIteratorTemplate.js.map +0 -1
  249. package/dist/cjs/schemas/manager/linkedIterator.js +0 -27
  250. package/dist/cjs/schemas/manager/linkedIterator.js.map +0 -1
  251. package/dist/esm/api/routes/manager/linkedIterator.d.ts +0 -11
  252. package/dist/esm/api/routes/manager/linkedIterator.d.ts.map +0 -1
  253. package/dist/esm/api/routes/manager/linkedIterator.js +0 -62
  254. package/dist/esm/api/routes/manager/linkedIterator.js.map +0 -1
  255. package/dist/esm/api/utils/linkedIterator.d.ts +0 -41
  256. package/dist/esm/api/utils/linkedIterator.d.ts.map +0 -1
  257. package/dist/esm/api/utils/linkedIterator.js +0 -157
  258. package/dist/esm/api/utils/linkedIterator.js.map +0 -1
  259. package/dist/esm/internal-content-types/LinkedIteratorTemplate.d.ts.map +0 -1
  260. package/dist/esm/internal-content-types/LinkedIteratorTemplate.js.map +0 -1
  261. package/dist/esm/schemas/manager/linkedIterator.d.ts +0 -41
  262. package/dist/esm/schemas/manager/linkedIterator.d.ts.map +0 -1
  263. package/dist/esm/schemas/manager/linkedIterator.js +0 -21
  264. package/dist/esm/schemas/manager/linkedIterator.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rakun-kit/core",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "description": "Core Rakun content, routing, media, mail, auth, and manager APIs.",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -1,69 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.linkedIteratorGetHandler = exports.requireLinkedIteratorUpdate = exports.canUpdateLinkedIterator = exports.forbidLinkedIteratorTemplateAccess = void 0;
4
- const Permissions_1 = require("../../../lib/Permissions");
5
- const orm_1 = require("../../../orm");
6
- const checkPermissions_1 = require("../../utils/checkPermissions");
7
- const checkOwnership_1 = require("../../utils/checkOwnership");
8
- const linkedIterator_1 = require("../../utils/linkedIterator");
9
- const requireContentType_1 = require("../../utils/requireContentType");
10
- const internal_content_types_1 = require("../../../internal-content-types");
11
- const errors_1 = require("../../../lib/errors");
12
- const forbidLinkedIteratorTemplateAccess = (contentType) => {
13
- if (contentType.name === internal_content_types_1.LinkedIteratorTemplate.name) {
14
- (0, errors_1.throwAppError)("FORBIDDEN", {
15
- reason: "Linked iterator templates can only be changed through linked iterator operations",
16
- });
17
- }
18
- };
19
- exports.forbidLinkedIteratorTemplateAccess = forbidLinkedIteratorTemplateAccess;
20
- const canUpdateLinkedIterator = (contentType, ctx) => {
21
- const permission = (0, Permissions_1.getContentPermission)(contentType, "updateAny");
22
- return !permission || (0, Permissions_1.hasPermissions)(ctx.getUser(), [permission]);
23
- };
24
- exports.canUpdateLinkedIterator = canUpdateLinkedIterator;
25
- const requireLinkedIteratorUpdate = (contentType, ctx) => {
26
- const permission = (0, Permissions_1.getContentPermission)(contentType, "updateAny");
27
- if (permission)
28
- (0, checkPermissions_1.checkPermissions)(ctx.getUser(), [permission]);
29
- };
30
- exports.requireLinkedIteratorUpdate = requireLinkedIteratorUpdate;
31
- const linkedIteratorGetHandler = async ({ input, ctx, }) => {
32
- const contentType = (0, requireContentType_1.requireContentType)(input.contentType);
33
- const db = await (0, orm_1.getMongoService)();
34
- if (!contentType.linkedIterator) {
35
- return {
36
- enabled: false,
37
- configured: false,
38
- mode: "linked",
39
- canUpdateShared: false,
40
- };
41
- }
42
- let document;
43
- if (input.documentId) {
44
- await (0, checkOwnership_1.checkOwnership)({
45
- ctx,
46
- contentType,
47
- id: input.documentId,
48
- permission: "readAny",
49
- });
50
- document = await db.get(contentType, input.documentId);
51
- }
52
- else {
53
- const createPermission = (0, Permissions_1.getContentPermission)(contentType, "own");
54
- if (createPermission)
55
- (0, checkPermissions_1.checkPermissions)(ctx.getUser(), [createPermission]);
56
- }
57
- const template = await (0, linkedIterator_1.getLinkedIteratorTemplate)(db, contentType);
58
- const mode = document && (0, linkedIterator_1.isIteratorUnlinked)(document) ? "unlinked" : "linked";
59
- return {
60
- enabled: true,
61
- configured: template.configured,
62
- mode,
63
- iterator: template.iterator,
64
- revision: template.revision,
65
- canUpdateShared: (0, exports.canUpdateLinkedIterator)(contentType, ctx),
66
- };
67
- };
68
- exports.linkedIteratorGetHandler = linkedIteratorGetHandler;
69
- //# sourceMappingURL=linkedIterator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linkedIterator.js","sourceRoot":"","sources":["../../../../../src/api/routes/manager/linkedIterator.ts"],"names":[],"mappings":"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"}
@@ -1,167 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isIteratorUnlinked = exports.materializeLinkedIterator = exports.saveLinkedIteratorTemplate = exports.applyEffectiveIterator = exports.getEffectiveIterator = exports.getLinkedIteratorTemplate = exports.validateLinkedIterator = void 0;
4
- const dbService_1 = require("../../orm/dbService");
5
- const internal_content_types_1 = require("../../internal-content-types");
6
- const Logger_1 = require("../../lib/Logger");
7
- const systemFields_1 = require("../../lib/systemFields");
8
- const previewData_1 = require("./previewData");
9
- const parseId_1 = require("../../orm/utils/parseId");
10
- const transformStringToObjectIds_1 = require("../../orm/utils/transformStringToObjectIds");
11
- const getIteratorField = (contentType) => contentType.fields[systemFields_1.ITERATOR_FIELD_NAME];
12
- const validateLinkedIterator = (contentType, value) => {
13
- if (!contentType.linkedIterator || !contentType.hasIterator) {
14
- throw new Error(`Content type "${contentType.name}" does not have a linked iterator.`);
15
- }
16
- const parsed = getIteratorField(contentType)?.toZod().parse(value);
17
- if (!Array.isArray(parsed)) {
18
- throw new Error(`Invalid iterator for content type "${contentType.name}".`);
19
- }
20
- return parsed;
21
- };
22
- exports.validateLinkedIterator = validateLinkedIterator;
23
- const getLinkedIteratorTemplate = async (db, contentType) => {
24
- if (!contentType.linkedIterator) {
25
- return { configured: false };
26
- }
27
- const template = await db.find(internal_content_types_1.LinkedIteratorTemplate, {
28
- contentType: contentType.name,
29
- });
30
- if (!template)
31
- return { configured: false };
32
- try {
33
- return {
34
- configured: true,
35
- iterator: (0, exports.validateLinkedIterator)(contentType, (0, previewData_1.parsePreviewData)(template.payload)),
36
- revision: template.revision,
37
- };
38
- }
39
- catch (error) {
40
- Logger_1.Logger.error(`linkedIterator: invalid template for ${contentType.name}`, error);
41
- return { configured: false };
42
- }
43
- };
44
- exports.getLinkedIteratorTemplate = getLinkedIteratorTemplate;
45
- const getEffectiveIterator = async ({ db, contentType, document, preferDocument = false, }) => {
46
- const local = Array.isArray(document[systemFields_1.ITERATOR_FIELD_NAME])
47
- ? document[systemFields_1.ITERATOR_FIELD_NAME]
48
- : [];
49
- if (!contentType.linkedIterator ||
50
- document[systemFields_1.ITERATOR_UNLINKED_FIELD_NAME] === true ||
51
- preferDocument) {
52
- return local;
53
- }
54
- const template = await (0, exports.getLinkedIteratorTemplate)(db, contentType);
55
- return template.iterator ?? local;
56
- };
57
- exports.getEffectiveIterator = getEffectiveIterator;
58
- const applyEffectiveIterator = async ({ db, contentType, document, preferDocument, }) => {
59
- if (!contentType.linkedIterator)
60
- return document;
61
- return {
62
- ...document,
63
- [systemFields_1.ITERATOR_FIELD_NAME]: await (0, exports.getEffectiveIterator)({
64
- db,
65
- contentType,
66
- document,
67
- preferDocument,
68
- }),
69
- };
70
- };
71
- exports.applyEffectiveIterator = applyEffectiveIterator;
72
- const saveLinkedIteratorTemplate = async ({ action, contentType, db, expectedRevision, iterator, options, }) => {
73
- const value = (0, exports.validateLinkedIterator)(contentType, iterator);
74
- const current = await db.find(internal_content_types_1.LinkedIteratorTemplate, {
75
- contentType: contentType.name,
76
- });
77
- if (action === "initialize") {
78
- if (current) {
79
- throw new dbService_1.DbErrorConflict(`The linked iterator for "${contentType.name}" is already initialized.`);
80
- }
81
- const created = await db.create(internal_content_types_1.LinkedIteratorTemplate, {
82
- _type: internal_content_types_1.LinkedIteratorTemplate.name,
83
- contentType: contentType.name,
84
- payload: (0, previewData_1.serializePreviewData)(value),
85
- revision: 1,
86
- createdBy: options?.actorId,
87
- updatedBy: options?.actorId,
88
- }, options);
89
- await tryMaterializeLinkedIterator({
90
- contentType,
91
- db,
92
- iterator: value,
93
- options,
94
- });
95
- return {
96
- configured: true,
97
- iterator: value,
98
- revision: created.revision,
99
- };
100
- }
101
- if (!current) {
102
- throw new dbService_1.DbErrorConflict(`The linked iterator for "${contentType.name}" has not been initialized.`);
103
- }
104
- if (expectedRevision === undefined ||
105
- current.revision !== expectedRevision) {
106
- throw new dbService_1.DbErrorConflict(`The linked iterator for "${contentType.name}" was modified by another user.`);
107
- }
108
- const revision = current.revision + 1;
109
- const rawDb = db.rawDB;
110
- if (rawDb?.collection) {
111
- const updated = await rawDb
112
- .collection(internal_content_types_1.LinkedIteratorTemplate.name)
113
- .findOneAndUpdate({
114
- _id: (0, parseId_1.parseId)(current._id),
115
- revision: expectedRevision,
116
- }, {
117
- $set: (0, transformStringToObjectIds_1.transformStringToObjectIds)({
118
- payload: (0, previewData_1.serializePreviewData)(value),
119
- revision,
120
- updatedBy: options?.actorId,
121
- updatedAt: new Date(),
122
- }),
123
- }, { returnDocument: "after" });
124
- if (!updated) {
125
- throw new dbService_1.DbErrorConflict(`The linked iterator for "${contentType.name}" was modified by another user.`);
126
- }
127
- }
128
- else {
129
- await db.update(internal_content_types_1.LinkedIteratorTemplate, current._id, {
130
- payload: (0, previewData_1.serializePreviewData)(value),
131
- revision,
132
- updatedBy: options?.actorId,
133
- }, options);
134
- }
135
- await tryMaterializeLinkedIterator({
136
- contentType,
137
- db,
138
- iterator: value,
139
- options,
140
- });
141
- return { configured: true, iterator: value, revision };
142
- };
143
- exports.saveLinkedIteratorTemplate = saveLinkedIteratorTemplate;
144
- const materializeLinkedIterator = async ({ contentType, db, iterator, options, }) => {
145
- await db.updateMany(contentType, {
146
- [systemFields_1.ITERATOR_UNLINKED_FIELD_NAME]: { $ne: true },
147
- }, {
148
- [systemFields_1.ITERATOR_FIELD_NAME]: iterator,
149
- updatedBy: options?.actorId,
150
- }, {
151
- ...options,
152
- reason: options?.reason ?? "linked iterator synchronization",
153
- skipVersioning: true,
154
- });
155
- };
156
- exports.materializeLinkedIterator = materializeLinkedIterator;
157
- const tryMaterializeLinkedIterator = async (args) => {
158
- try {
159
- await (0, exports.materializeLinkedIterator)(args);
160
- }
161
- catch (error) {
162
- Logger_1.Logger.error(`linkedIterator: could not materialize ${args.contentType.name}`, error);
163
- }
164
- };
165
- const isIteratorUnlinked = (document) => document[systemFields_1.ITERATOR_UNLINKED_FIELD_NAME] === true;
166
- exports.isIteratorUnlinked = isIteratorUnlinked;
167
- //# sourceMappingURL=linkedIterator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linkedIterator.js","sourceRoot":"","sources":["../../../../src/api/utils/linkedIterator.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinkedIteratorTemplate.js","sourceRoot":"","sources":["../../../src/internal-content-types/LinkedIteratorTemplate.ts"],"names":[],"mappings":";;;;;;AAAA,qEAA6C;AAC7C,0CAAuC;AAG1B,QAAA,sBAAsB,GAAG,IAAI,qBAAW,CAAC;IACpD,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,wBAAwB;IACrC,MAAM,EAAE;QACN,WAAW,EAAE,eAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACvC,OAAO,EAAE,eAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,QAAQ,EAAE,eAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACrC;IACD,OAAO,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;IAC1B,UAAU,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC;CACxC,CAAC,CAAC,eAAe,EAAE,CAAC"}
@@ -1,27 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.linkedIteratorStateOutput = exports.linkedIteratorGetInput = exports.linkedIteratorControl = exports.linkedIteratorAction = exports.linkedIteratorMode = void 0;
7
- const zod_1 = __importDefault(require("zod"));
8
- exports.linkedIteratorMode = zod_1.default.enum(["linked", "unlinked"]);
9
- exports.linkedIteratorAction = zod_1.default.enum(["initialize", "update"]);
10
- exports.linkedIteratorControl = zod_1.default.object({
11
- mode: exports.linkedIteratorMode,
12
- action: exports.linkedIteratorAction.optional(),
13
- revision: zod_1.default.number().int().nonnegative().optional(),
14
- });
15
- exports.linkedIteratorGetInput = zod_1.default.object({
16
- contentType: zod_1.default.string(),
17
- documentId: zod_1.default.string().optional(),
18
- });
19
- exports.linkedIteratorStateOutput = zod_1.default.object({
20
- enabled: zod_1.default.boolean(),
21
- configured: zod_1.default.boolean(),
22
- mode: exports.linkedIteratorMode,
23
- iterator: zod_1.default.any().optional(),
24
- revision: zod_1.default.number().int().nonnegative().optional(),
25
- canUpdateShared: zod_1.default.boolean(),
26
- });
27
- //# sourceMappingURL=linkedIterator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linkedIterator.js","sourceRoot":"","sources":["../../../../src/schemas/manager/linkedIterator.ts"],"names":[],"mappings":";;;;;;AAAA,8CAAoB;AAEP,QAAA,kBAAkB,GAAG,aAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;AAGpD,QAAA,oBAAoB,GAAG,aAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGxD,QAAA,qBAAqB,GAAG,aAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,0BAAkB;IACxB,MAAM,EAAE,4BAAoB,CAAC,QAAQ,EAAE;IACvC,QAAQ,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC;AAGU,QAAA,sBAAsB,GAAG,aAAC,CAAC,MAAM,CAAC;IAC7C,WAAW,EAAE,aAAC,CAAC,MAAM,EAAE;IACvB,UAAU,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAGU,QAAA,yBAAyB,GAAG,aAAC,CAAC,MAAM,CAAC;IAChD,OAAO,EAAE,aAAC,CAAC,OAAO,EAAE;IACpB,UAAU,EAAE,aAAC,CAAC,OAAO,EAAE;IACvB,IAAI,EAAE,0BAAkB;IACxB,QAAQ,EAAE,aAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACnD,eAAe,EAAE,aAAC,CAAC,OAAO,EAAE;CAC7B,CAAC,CAAC"}
@@ -1,11 +0,0 @@
1
- import type { LinkedIteratorGetInput, LinkedIteratorStateOutput } from "../../../schemas/manager/linkedIterator.js";
2
- import type { RakunRequestContext } from "../../context.js";
3
- import { requireContentType } from "../../utils/requireContentType.js";
4
- export declare const forbidLinkedIteratorTemplateAccess: (contentType: ReturnType<typeof requireContentType>) => void;
5
- export declare const canUpdateLinkedIterator: (contentType: ReturnType<typeof requireContentType>, ctx: RakunRequestContext) => boolean;
6
- export declare const requireLinkedIteratorUpdate: (contentType: ReturnType<typeof requireContentType>, ctx: RakunRequestContext) => void;
7
- export declare const linkedIteratorGetHandler: ({ input, ctx, }: {
8
- input: LinkedIteratorGetInput;
9
- ctx: RakunRequestContext;
10
- }) => Promise<LinkedIteratorStateOutput>;
11
- //# sourceMappingURL=linkedIterator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linkedIterator.d.ts","sourceRoot":"","sources":["../../../../../src/api/routes/manager/linkedIterator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EACtB,yBAAyB,EAC1B,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAOzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAIpE,eAAO,MAAM,kCAAkC,GAC7C,aAAa,UAAU,CAAC,OAAO,kBAAkB,CAAC,SAQnD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,aAAa,UAAU,CAAC,OAAO,kBAAkB,CAAC,EAClD,KAAK,mBAAmB,YAIzB,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,aAAa,UAAU,CAAC,OAAO,kBAAkB,CAAC,EAClD,KAAK,mBAAmB,SAIzB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAU,iBAG5C;IACD,KAAK,EAAE,sBAAsB,CAAC;IAC9B,GAAG,EAAE,mBAAmB,CAAC;CAC1B,KAAG,OAAO,CAAC,yBAAyB,CAqCpC,CAAC"}
@@ -1,62 +0,0 @@
1
- import { getContentPermission, hasPermissions } from "../../../lib/Permissions.js";
2
- import { getMongoService } from "../../../orm/index.js";
3
- import { checkPermissions } from "../../utils/checkPermissions.js";
4
- import { checkOwnership } from "../../utils/checkOwnership.js";
5
- import { getLinkedIteratorTemplate, isIteratorUnlinked, } from "../../utils/linkedIterator.js";
6
- import { requireContentType } from "../../utils/requireContentType.js";
7
- import { LinkedIteratorTemplate } from "../../../internal-content-types/index.js";
8
- import { throwAppError } from "../../../lib/errors/index.js";
9
- export const forbidLinkedIteratorTemplateAccess = (contentType) => {
10
- if (contentType.name === LinkedIteratorTemplate.name) {
11
- throwAppError("FORBIDDEN", {
12
- reason: "Linked iterator templates can only be changed through linked iterator operations",
13
- });
14
- }
15
- };
16
- export const canUpdateLinkedIterator = (contentType, ctx) => {
17
- const permission = getContentPermission(contentType, "updateAny");
18
- return !permission || hasPermissions(ctx.getUser(), [permission]);
19
- };
20
- export const requireLinkedIteratorUpdate = (contentType, ctx) => {
21
- const permission = getContentPermission(contentType, "updateAny");
22
- if (permission)
23
- checkPermissions(ctx.getUser(), [permission]);
24
- };
25
- export const linkedIteratorGetHandler = async ({ input, ctx, }) => {
26
- const contentType = requireContentType(input.contentType);
27
- const db = await getMongoService();
28
- if (!contentType.linkedIterator) {
29
- return {
30
- enabled: false,
31
- configured: false,
32
- mode: "linked",
33
- canUpdateShared: false,
34
- };
35
- }
36
- let document;
37
- if (input.documentId) {
38
- await checkOwnership({
39
- ctx,
40
- contentType,
41
- id: input.documentId,
42
- permission: "readAny",
43
- });
44
- document = await db.get(contentType, input.documentId);
45
- }
46
- else {
47
- const createPermission = getContentPermission(contentType, "own");
48
- if (createPermission)
49
- checkPermissions(ctx.getUser(), [createPermission]);
50
- }
51
- const template = await getLinkedIteratorTemplate(db, contentType);
52
- const mode = document && isIteratorUnlinked(document) ? "unlinked" : "linked";
53
- return {
54
- enabled: true,
55
- configured: template.configured,
56
- mode,
57
- iterator: template.iterator,
58
- revision: template.revision,
59
- canUpdateShared: canUpdateLinkedIterator(contentType, ctx),
60
- };
61
- };
62
- //# sourceMappingURL=linkedIterator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linkedIterator.js","sourceRoot":"","sources":["../../../../../src/api/routes/manager/linkedIterator.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- import type { DBMutationOptions, DBService } from "../../orm/dbService.js";
2
- import type ContentType from "../../lib/ContentType.js";
3
- import type { LinkedIteratorAction } from "../../schemas/manager/linkedIterator.js";
4
- export type LinkedIteratorDocument = Record<string, unknown> & {
5
- _id?: string;
6
- };
7
- export type LinkedIteratorTemplateState = {
8
- configured: boolean;
9
- iterator?: unknown[];
10
- revision?: number;
11
- };
12
- export declare const validateLinkedIterator: (contentType: ContentType, value: unknown) => unknown[];
13
- export declare const getLinkedIteratorTemplate: (db: DBService, contentType: ContentType) => Promise<LinkedIteratorTemplateState>;
14
- export declare const getEffectiveIterator: ({ db, contentType, document, preferDocument, }: {
15
- db: DBService;
16
- contentType: ContentType;
17
- document: LinkedIteratorDocument;
18
- preferDocument?: boolean;
19
- }) => Promise<unknown[]>;
20
- export declare const applyEffectiveIterator: <T extends LinkedIteratorDocument>({ db, contentType, document, preferDocument, }: {
21
- db: DBService;
22
- contentType: ContentType;
23
- document: T;
24
- preferDocument?: boolean;
25
- }) => Promise<T>;
26
- export declare const saveLinkedIteratorTemplate: ({ action, contentType, db, expectedRevision, iterator, options, }: {
27
- action: LinkedIteratorAction;
28
- contentType: ContentType;
29
- db: DBService;
30
- expectedRevision?: number;
31
- iterator: unknown;
32
- options?: DBMutationOptions;
33
- }) => Promise<LinkedIteratorTemplateState>;
34
- export declare const materializeLinkedIterator: ({ contentType, db, iterator, options, }: {
35
- contentType: ContentType;
36
- db: DBService;
37
- iterator: unknown[];
38
- options?: DBMutationOptions;
39
- }) => Promise<void>;
40
- export declare const isIteratorUnlinked: (document: LinkedIteratorDocument) => boolean;
41
- //# sourceMappingURL=linkedIterator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linkedIterator.d.ts","sourceRoot":"","sources":["../../../../src/api/utils/linkedIterator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAC;AAMrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAMjF,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAKF,eAAO,MAAM,sBAAsB,GACjC,aAAa,WAAW,EACxB,OAAO,OAAO,KACb,OAAO,EAaT,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,IAAI,SAAS,EACb,aAAa,WAAW,KACvB,OAAO,CAAC,2BAA2B,CA0BrC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,gDAKxC;IACD,EAAE,EAAE,SAAS,CAAC;IACd,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,KAAG,OAAO,CAAC,OAAO,EAAE,CAepB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAU,CAAC,SAAS,sBAAsB,EAAE,gDAK5E;IACD,EAAE,EAAE,SAAS,CAAC;IACd,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,CAAC,CAAC;IACZ,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,KAAG,OAAO,CAAC,CAAC,CAYZ,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAU,mEAO9C;IACD,MAAM,EAAE,oBAAoB,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,EAAE,EAAE,SAAS,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,KAAG,OAAO,CAAC,2BAA2B,CAsGtC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAU,yCAK7C;IACD,WAAW,EAAE,WAAW,CAAC;IACzB,EAAE,EAAE,SAAS,CAAC;IACd,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,kBAgBA,CAAC;AAeF,eAAO,MAAM,kBAAkB,GAAI,UAAU,sBAAsB,YAClB,CAAC"}
@@ -1,157 +0,0 @@
1
- import { DbErrorConflict } from "../../orm/dbService.js";
2
- import { LinkedIteratorTemplate } from "../../internal-content-types/index.js";
3
- import { Logger } from "../../lib/Logger.js";
4
- import { ITERATOR_FIELD_NAME, ITERATOR_UNLINKED_FIELD_NAME, } from "../../lib/systemFields.js";
5
- import { parsePreviewData, serializePreviewData } from "./previewData.js";
6
- import { parseId } from "../../orm/utils/parseId.js";
7
- import { transformStringToObjectIds } from "../../orm/utils/transformStringToObjectIds.js";
8
- const getIteratorField = (contentType) => contentType.fields[ITERATOR_FIELD_NAME];
9
- export const validateLinkedIterator = (contentType, value) => {
10
- if (!contentType.linkedIterator || !contentType.hasIterator) {
11
- throw new Error(`Content type "${contentType.name}" does not have a linked iterator.`);
12
- }
13
- const parsed = getIteratorField(contentType)?.toZod().parse(value);
14
- if (!Array.isArray(parsed)) {
15
- throw new Error(`Invalid iterator for content type "${contentType.name}".`);
16
- }
17
- return parsed;
18
- };
19
- export const getLinkedIteratorTemplate = async (db, contentType) => {
20
- if (!contentType.linkedIterator) {
21
- return { configured: false };
22
- }
23
- const template = await db.find(LinkedIteratorTemplate, {
24
- contentType: contentType.name,
25
- });
26
- if (!template)
27
- return { configured: false };
28
- try {
29
- return {
30
- configured: true,
31
- iterator: validateLinkedIterator(contentType, parsePreviewData(template.payload)),
32
- revision: template.revision,
33
- };
34
- }
35
- catch (error) {
36
- Logger.error(`linkedIterator: invalid template for ${contentType.name}`, error);
37
- return { configured: false };
38
- }
39
- };
40
- export const getEffectiveIterator = async ({ db, contentType, document, preferDocument = false, }) => {
41
- const local = Array.isArray(document[ITERATOR_FIELD_NAME])
42
- ? document[ITERATOR_FIELD_NAME]
43
- : [];
44
- if (!contentType.linkedIterator ||
45
- document[ITERATOR_UNLINKED_FIELD_NAME] === true ||
46
- preferDocument) {
47
- return local;
48
- }
49
- const template = await getLinkedIteratorTemplate(db, contentType);
50
- return template.iterator ?? local;
51
- };
52
- export const applyEffectiveIterator = async ({ db, contentType, document, preferDocument, }) => {
53
- if (!contentType.linkedIterator)
54
- return document;
55
- return {
56
- ...document,
57
- [ITERATOR_FIELD_NAME]: await getEffectiveIterator({
58
- db,
59
- contentType,
60
- document,
61
- preferDocument,
62
- }),
63
- };
64
- };
65
- export const saveLinkedIteratorTemplate = async ({ action, contentType, db, expectedRevision, iterator, options, }) => {
66
- const value = validateLinkedIterator(contentType, iterator);
67
- const current = await db.find(LinkedIteratorTemplate, {
68
- contentType: contentType.name,
69
- });
70
- if (action === "initialize") {
71
- if (current) {
72
- throw new DbErrorConflict(`The linked iterator for "${contentType.name}" is already initialized.`);
73
- }
74
- const created = await db.create(LinkedIteratorTemplate, {
75
- _type: LinkedIteratorTemplate.name,
76
- contentType: contentType.name,
77
- payload: serializePreviewData(value),
78
- revision: 1,
79
- createdBy: options?.actorId,
80
- updatedBy: options?.actorId,
81
- }, options);
82
- await tryMaterializeLinkedIterator({
83
- contentType,
84
- db,
85
- iterator: value,
86
- options,
87
- });
88
- return {
89
- configured: true,
90
- iterator: value,
91
- revision: created.revision,
92
- };
93
- }
94
- if (!current) {
95
- throw new DbErrorConflict(`The linked iterator for "${contentType.name}" has not been initialized.`);
96
- }
97
- if (expectedRevision === undefined ||
98
- current.revision !== expectedRevision) {
99
- throw new DbErrorConflict(`The linked iterator for "${contentType.name}" was modified by another user.`);
100
- }
101
- const revision = current.revision + 1;
102
- const rawDb = db.rawDB;
103
- if (rawDb?.collection) {
104
- const updated = await rawDb
105
- .collection(LinkedIteratorTemplate.name)
106
- .findOneAndUpdate({
107
- _id: parseId(current._id),
108
- revision: expectedRevision,
109
- }, {
110
- $set: transformStringToObjectIds({
111
- payload: serializePreviewData(value),
112
- revision,
113
- updatedBy: options?.actorId,
114
- updatedAt: new Date(),
115
- }),
116
- }, { returnDocument: "after" });
117
- if (!updated) {
118
- throw new DbErrorConflict(`The linked iterator for "${contentType.name}" was modified by another user.`);
119
- }
120
- }
121
- else {
122
- await db.update(LinkedIteratorTemplate, current._id, {
123
- payload: serializePreviewData(value),
124
- revision,
125
- updatedBy: options?.actorId,
126
- }, options);
127
- }
128
- await tryMaterializeLinkedIterator({
129
- contentType,
130
- db,
131
- iterator: value,
132
- options,
133
- });
134
- return { configured: true, iterator: value, revision };
135
- };
136
- export const materializeLinkedIterator = async ({ contentType, db, iterator, options, }) => {
137
- await db.updateMany(contentType, {
138
- [ITERATOR_UNLINKED_FIELD_NAME]: { $ne: true },
139
- }, {
140
- [ITERATOR_FIELD_NAME]: iterator,
141
- updatedBy: options?.actorId,
142
- }, {
143
- ...options,
144
- reason: options?.reason ?? "linked iterator synchronization",
145
- skipVersioning: true,
146
- });
147
- };
148
- const tryMaterializeLinkedIterator = async (args) => {
149
- try {
150
- await materializeLinkedIterator(args);
151
- }
152
- catch (error) {
153
- Logger.error(`linkedIterator: could not materialize ${args.contentType.name}`, error);
154
- }
155
- };
156
- export const isIteratorUnlinked = (document) => document[ITERATOR_UNLINKED_FIELD_NAME] === true;
157
- //# sourceMappingURL=linkedIterator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linkedIterator.js","sourceRoot":"","sources":["../../../../src/api/utils/linkedIterator.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinkedIteratorTemplate.d.ts","sourceRoot":"","sources":["../../../src/internal-content-types/LinkedIteratorTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAcyO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CAA2J,CAAC;;uCAJrZ,CAAC;AAErB,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAC;AACnE,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC,sBAAsB,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LinkedIteratorTemplate.js","sourceRoot":"","sources":["../../../src/internal-content-types/LinkedIteratorTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,WAAW,CAAC;IACpD,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,wBAAwB;IACrC,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACrC;IACD,OAAO,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;IAC1B,UAAU,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC;CACxC,CAAC,CAAC,eAAe,EAAE,CAAC"}