@strapi/core 5.55.1 → 5.57.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 (350) hide show
  1. package/dist/Strapi.d.ts +1 -0
  2. package/dist/Strapi.d.ts.map +1 -1
  3. package/dist/Strapi.js +6 -3
  4. package/dist/Strapi.js.map +1 -1
  5. package/dist/Strapi.mjs +6 -3
  6. package/dist/Strapi.mjs.map +1 -1
  7. package/dist/configuration/get-dirs.js +2 -2
  8. package/dist/configuration/get-dirs.js.map +1 -1
  9. package/dist/configuration/get-dirs.mjs +2 -2
  10. package/dist/configuration/get-dirs.mjs.map +1 -1
  11. package/dist/configuration/index.d.ts +1 -2
  12. package/dist/configuration/index.d.ts.map +1 -1
  13. package/dist/configuration/index.js +1 -2
  14. package/dist/configuration/index.js.map +1 -1
  15. package/dist/configuration/index.mjs +2 -3
  16. package/dist/configuration/index.mjs.map +1 -1
  17. package/dist/core-api/controller/collection-type.js +3 -3
  18. package/dist/core-api/controller/collection-type.js.map +1 -1
  19. package/dist/core-api/controller/collection-type.mjs +1 -1
  20. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  21. package/dist/core-api/controller/index.js +2 -2
  22. package/dist/core-api/controller/index.js.map +1 -1
  23. package/dist/core-api/controller/index.mjs +2 -2
  24. package/dist/core-api/controller/index.mjs.map +1 -1
  25. package/dist/core-api/controller/single-type.js +2 -2
  26. package/dist/core-api/controller/single-type.js.map +1 -1
  27. package/dist/core-api/controller/single-type.mjs +1 -1
  28. package/dist/core-api/controller/single-type.mjs.map +1 -1
  29. package/dist/core-api/controller/transform.d.ts +1 -4
  30. package/dist/core-api/controller/transform.d.ts.map +1 -1
  31. package/dist/core-api/controller/transform.js +8 -8
  32. package/dist/core-api/controller/transform.js.map +1 -1
  33. package/dist/core-api/controller/transform.mjs +5 -5
  34. package/dist/core-api/controller/transform.mjs.map +1 -1
  35. package/dist/core-api/routes/index.js +1 -1
  36. package/dist/core-api/routes/index.js.map +1 -1
  37. package/dist/core-api/routes/index.mjs +1 -1
  38. package/dist/core-api/routes/index.mjs.map +1 -1
  39. package/dist/core-api/service/pagination.js +9 -9
  40. package/dist/core-api/service/pagination.js.map +1 -1
  41. package/dist/core-api/service/pagination.mjs +7 -7
  42. package/dist/core-api/service/pagination.mjs.map +1 -1
  43. package/dist/domain/content-type/index.d.ts.map +1 -1
  44. package/dist/domain/content-type/index.js +1 -2
  45. package/dist/domain/content-type/index.js.map +1 -1
  46. package/dist/domain/content-type/index.mjs +1 -2
  47. package/dist/domain/content-type/index.mjs.map +1 -1
  48. package/dist/ee/index.js +4 -4
  49. package/dist/ee/index.js.map +1 -1
  50. package/dist/ee/index.mjs +3 -3
  51. package/dist/ee/index.mjs.map +1 -1
  52. package/dist/factories.d.ts.map +1 -1
  53. package/dist/factories.js +3 -2
  54. package/dist/factories.js.map +1 -1
  55. package/dist/factories.mjs +3 -2
  56. package/dist/factories.mjs.map +1 -1
  57. package/dist/index.js +1 -1
  58. package/dist/index.mjs +1 -1
  59. package/dist/loaders/apis.d.ts.map +1 -1
  60. package/dist/loaders/apis.js +1 -2
  61. package/dist/loaders/apis.js.map +1 -1
  62. package/dist/loaders/apis.mjs +1 -2
  63. package/dist/loaders/apis.mjs.map +1 -1
  64. package/dist/loaders/plugins/get-enabled-plugins.d.ts +1 -1
  65. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  66. package/dist/loaders/plugins/get-enabled-plugins.js +6 -5
  67. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  68. package/dist/loaders/plugins/get-enabled-plugins.mjs +6 -5
  69. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  70. package/dist/loaders/plugins/get-user-plugins-config.js +2 -2
  71. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  72. package/dist/loaders/plugins/get-user-plugins-config.mjs +2 -2
  73. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  74. package/dist/loaders/plugins/index.js +9 -12
  75. package/dist/loaders/plugins/index.js.map +1 -1
  76. package/dist/loaders/plugins/index.mjs +9 -12
  77. package/dist/loaders/plugins/index.mjs.map +1 -1
  78. package/dist/middlewares/body.js +2 -2
  79. package/dist/middlewares/body.js.map +1 -1
  80. package/dist/middlewares/body.mjs +2 -2
  81. package/dist/middlewares/body.mjs.map +1 -1
  82. package/dist/middlewares/public.js +2 -2
  83. package/dist/middlewares/public.js.map +1 -1
  84. package/dist/middlewares/public.mjs +2 -2
  85. package/dist/middlewares/public.mjs.map +1 -1
  86. package/dist/middlewares/responses.d.ts.map +1 -1
  87. package/dist/middlewares/responses.js +1 -3
  88. package/dist/middlewares/responses.js.map +1 -1
  89. package/dist/middlewares/responses.mjs +1 -3
  90. package/dist/middlewares/responses.mjs.map +1 -1
  91. package/dist/middlewares/security.d.ts.map +1 -1
  92. package/dist/middlewares/security.js +3 -3
  93. package/dist/middlewares/security.js.map +1 -1
  94. package/dist/middlewares/security.mjs +3 -3
  95. package/dist/middlewares/security.mjs.map +1 -1
  96. package/dist/middlewares/session.js +2 -2
  97. package/dist/middlewares/session.js.map +1 -1
  98. package/dist/middlewares/session.mjs +2 -2
  99. package/dist/middlewares/session.mjs.map +1 -1
  100. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  101. package/dist/migrations/database/5.0.0-discard-drafts.js +1 -2
  102. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
  103. package/dist/migrations/database/5.0.0-discard-drafts.mjs +1 -2
  104. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
  105. package/dist/migrations/i18n.d.ts.map +1 -1
  106. package/dist/migrations/i18n.js +6 -4
  107. package/dist/migrations/i18n.js.map +1 -1
  108. package/dist/migrations/i18n.mjs +6 -4
  109. package/dist/migrations/i18n.mjs.map +1 -1
  110. package/dist/package.json.js +15 -15
  111. package/dist/package.json.mjs +15 -15
  112. package/dist/registries/apis.js +2 -2
  113. package/dist/registries/apis.js.map +1 -1
  114. package/dist/registries/apis.mjs +2 -2
  115. package/dist/registries/apis.mjs.map +1 -1
  116. package/dist/registries/components.js +2 -2
  117. package/dist/registries/components.js.map +1 -1
  118. package/dist/registries/components.mjs +2 -2
  119. package/dist/registries/components.mjs.map +1 -1
  120. package/dist/registries/content-types.d.ts +1 -1
  121. package/dist/registries/content-types.js +3 -3
  122. package/dist/registries/content-types.js.map +1 -1
  123. package/dist/registries/content-types.mjs +3 -3
  124. package/dist/registries/content-types.mjs.map +1 -1
  125. package/dist/registries/controllers.js +3 -3
  126. package/dist/registries/controllers.js.map +1 -1
  127. package/dist/registries/controllers.mjs +3 -3
  128. package/dist/registries/controllers.mjs.map +1 -1
  129. package/dist/registries/custom-fields.js +4 -4
  130. package/dist/registries/custom-fields.js.map +1 -1
  131. package/dist/registries/custom-fields.mjs +4 -4
  132. package/dist/registries/custom-fields.mjs.map +1 -1
  133. package/dist/registries/hooks.d.ts +1 -1
  134. package/dist/registries/hooks.js +2 -2
  135. package/dist/registries/hooks.js.map +1 -1
  136. package/dist/registries/hooks.mjs +2 -2
  137. package/dist/registries/hooks.mjs.map +1 -1
  138. package/dist/registries/middlewares.d.ts +1 -1
  139. package/dist/registries/middlewares.js +3 -3
  140. package/dist/registries/middlewares.js.map +1 -1
  141. package/dist/registries/middlewares.mjs +3 -3
  142. package/dist/registries/middlewares.mjs.map +1 -1
  143. package/dist/registries/modules.d.ts +1 -4
  144. package/dist/registries/modules.d.ts.map +1 -1
  145. package/dist/registries/modules.js +3 -3
  146. package/dist/registries/modules.js.map +1 -1
  147. package/dist/registries/modules.mjs +3 -3
  148. package/dist/registries/modules.mjs.map +1 -1
  149. package/dist/registries/plugins.js +2 -2
  150. package/dist/registries/plugins.js.map +1 -1
  151. package/dist/registries/plugins.mjs +2 -2
  152. package/dist/registries/plugins.mjs.map +1 -1
  153. package/dist/registries/policies.d.ts +1 -1
  154. package/dist/registries/policies.js +4 -4
  155. package/dist/registries/policies.js.map +1 -1
  156. package/dist/registries/policies.mjs +3 -3
  157. package/dist/registries/policies.mjs.map +1 -1
  158. package/dist/registries/services.js +3 -3
  159. package/dist/registries/services.js.map +1 -1
  160. package/dist/registries/services.mjs +3 -3
  161. package/dist/registries/services.mjs.map +1 -1
  162. package/dist/services/auth/index.js +3 -3
  163. package/dist/services/auth/index.js.map +1 -1
  164. package/dist/services/auth/index.mjs +3 -3
  165. package/dist/services/auth/index.mjs.map +1 -1
  166. package/dist/services/content-structure/index.js +1 -1
  167. package/dist/services/content-structure/index.js.map +1 -1
  168. package/dist/services/content-structure/index.mjs +1 -1
  169. package/dist/services/content-structure/index.mjs.map +1 -1
  170. package/dist/services/core-store.js +3 -3
  171. package/dist/services/core-store.js.map +1 -1
  172. package/dist/services/core-store.mjs +1 -1
  173. package/dist/services/core-store.mjs.map +1 -1
  174. package/dist/services/cron.d.ts.map +1 -1
  175. package/dist/services/cron.js +2 -4
  176. package/dist/services/cron.js.map +1 -1
  177. package/dist/services/cron.mjs +2 -4
  178. package/dist/services/cron.mjs.map +1 -1
  179. package/dist/services/document-service/attributes/index.js +2 -2
  180. package/dist/services/document-service/attributes/index.js.map +1 -1
  181. package/dist/services/document-service/attributes/index.mjs +1 -1
  182. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  183. package/dist/services/document-service/attributes/transforms.js +3 -3
  184. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  185. package/dist/services/document-service/attributes/transforms.mjs +2 -2
  186. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  187. package/dist/services/document-service/components.d.ts.map +1 -1
  188. package/dist/services/document-service/components.js +13 -14
  189. package/dist/services/document-service/components.js.map +1 -1
  190. package/dist/services/document-service/components.mjs +12 -13
  191. package/dist/services/document-service/components.mjs.map +1 -1
  192. package/dist/services/document-service/draft-and-publish.js +65 -38
  193. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  194. package/dist/services/document-service/draft-and-publish.mjs +59 -32
  195. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  196. package/dist/services/document-service/entries.d.ts +2 -2
  197. package/dist/services/document-service/entries.d.ts.map +1 -1
  198. package/dist/services/document-service/entries.js +16 -8
  199. package/dist/services/document-service/entries.js.map +1 -1
  200. package/dist/services/document-service/entries.mjs +17 -9
  201. package/dist/services/document-service/entries.mjs.map +1 -1
  202. package/dist/services/document-service/first-published-at.js +7 -5
  203. package/dist/services/document-service/first-published-at.js.map +1 -1
  204. package/dist/services/document-service/first-published-at.mjs +7 -5
  205. package/dist/services/document-service/first-published-at.mjs.map +1 -1
  206. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  207. package/dist/services/document-service/internationalization.js +37 -28
  208. package/dist/services/document-service/internationalization.js.map +1 -1
  209. package/dist/services/document-service/internationalization.mjs +33 -24
  210. package/dist/services/document-service/internationalization.mjs.map +1 -1
  211. package/dist/services/document-service/params.d.ts +1 -0
  212. package/dist/services/document-service/params.d.ts.map +1 -1
  213. package/dist/services/document-service/params.js +6 -4
  214. package/dist/services/document-service/params.js.map +1 -1
  215. package/dist/services/document-service/params.mjs +6 -5
  216. package/dist/services/document-service/params.mjs.map +1 -1
  217. package/dist/services/document-service/repository.d.ts.map +1 -1
  218. package/dist/services/document-service/repository.js +84 -61
  219. package/dist/services/document-service/repository.js.map +1 -1
  220. package/dist/services/document-service/repository.mjs +47 -24
  221. package/dist/services/document-service/repository.mjs.map +1 -1
  222. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  223. package/dist/services/document-service/transform/id-map.js +2 -1
  224. package/dist/services/document-service/transform/id-map.js.map +1 -1
  225. package/dist/services/document-service/transform/id-map.mjs +2 -1
  226. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  227. package/dist/services/document-service/transform/id-transform.js +2 -2
  228. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  229. package/dist/services/document-service/transform/id-transform.mjs +1 -1
  230. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  231. package/dist/services/document-service/transform/query.d.ts +3 -1
  232. package/dist/services/document-service/transform/query.d.ts.map +1 -1
  233. package/dist/services/document-service/transform/query.js +12 -6
  234. package/dist/services/document-service/transform/query.js.map +1 -1
  235. package/dist/services/document-service/transform/query.mjs +11 -5
  236. package/dist/services/document-service/transform/query.mjs.map +1 -1
  237. package/dist/services/document-service/transform/relations/extract/data-ids.js +2 -2
  238. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  239. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +1 -1
  240. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  241. package/dist/services/document-service/transform/relations/transform/data-ids.js +2 -2
  242. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  243. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +1 -1
  244. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  245. package/dist/services/document-service/transform/relations/transform/default-locale.js +1 -1
  246. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  247. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +1 -1
  248. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  249. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  250. package/dist/services/document-service/transform/relations/utils/dp.js +1 -2
  251. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  252. package/dist/services/document-service/transform/relations/utils/dp.mjs +1 -2
  253. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  254. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +2 -2
  255. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  256. package/dist/services/document-service/transform/relations/utils/i18n.js +2 -2
  257. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  258. package/dist/services/document-service/transform/relations/utils/i18n.mjs +2 -2
  259. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  260. package/dist/services/document-service/transform/relations/utils/map-relation.js +6 -6
  261. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  262. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +3 -3
  263. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  264. package/dist/services/document-service/transform/relations/utils/xto-one.js +3 -3
  265. package/dist/services/document-service/transform/relations/utils/xto-one.js.map +1 -1
  266. package/dist/services/document-service/transform/relations/utils/xto-one.mjs +2 -2
  267. package/dist/services/document-service/transform/relations/utils/xto-one.mjs.map +1 -1
  268. package/dist/services/document-service/utils/bidirectional-relations.js +3 -3
  269. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -1
  270. package/dist/services/document-service/utils/bidirectional-relations.mjs +3 -3
  271. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -1
  272. package/dist/services/document-service/utils/clone-relations.js +3 -3
  273. package/dist/services/document-service/utils/clone-relations.js.map +1 -1
  274. package/dist/services/document-service/utils/clone-relations.mjs +3 -3
  275. package/dist/services/document-service/utils/clone-relations.mjs.map +1 -1
  276. package/dist/services/document-service/utils/self-referential-relations.js +4 -4
  277. package/dist/services/document-service/utils/self-referential-relations.js.map +1 -1
  278. package/dist/services/document-service/utils/self-referential-relations.mjs +4 -4
  279. package/dist/services/document-service/utils/self-referential-relations.mjs.map +1 -1
  280. package/dist/services/document-service/utils/unidirectional-relations.js +3 -3
  281. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -1
  282. package/dist/services/document-service/utils/unidirectional-relations.mjs +3 -3
  283. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -1
  284. package/dist/services/entity-validator/index.d.ts.map +1 -1
  285. package/dist/services/entity-validator/index.js +9 -10
  286. package/dist/services/entity-validator/index.js.map +1 -1
  287. package/dist/services/entity-validator/index.mjs +4 -5
  288. package/dist/services/entity-validator/index.mjs.map +1 -1
  289. package/dist/services/localization.d.ts +4 -0
  290. package/dist/services/localization.d.ts.map +1 -0
  291. package/dist/services/localization.js +51 -0
  292. package/dist/services/localization.js.map +1 -0
  293. package/dist/services/localization.mjs +49 -0
  294. package/dist/services/localization.mjs.map +1 -0
  295. package/dist/services/server/compose-endpoint.js +7 -7
  296. package/dist/services/server/compose-endpoint.js.map +1 -1
  297. package/dist/services/server/compose-endpoint.mjs +3 -3
  298. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  299. package/dist/services/server/koa-methods.js +2 -2
  300. package/dist/services/server/koa-methods.js.map +1 -1
  301. package/dist/services/server/koa-methods.mjs +1 -1
  302. package/dist/services/server/koa-methods.mjs.map +1 -1
  303. package/dist/services/server/koa.d.ts.map +1 -1
  304. package/dist/services/server/koa.js +1 -2
  305. package/dist/services/server/koa.js.map +1 -1
  306. package/dist/services/server/koa.mjs +1 -2
  307. package/dist/services/server/koa.mjs.map +1 -1
  308. package/dist/services/server/middleware.d.ts.map +1 -1
  309. package/dist/services/server/middleware.js +1 -2
  310. package/dist/services/server/middleware.js.map +1 -1
  311. package/dist/services/server/middleware.mjs +1 -2
  312. package/dist/services/server/middleware.mjs.map +1 -1
  313. package/dist/services/server/routing.js +2 -2
  314. package/dist/services/server/routing.js.map +1 -1
  315. package/dist/services/server/routing.mjs +2 -2
  316. package/dist/services/server/routing.mjs.map +1 -1
  317. package/dist/services/utils/conditional-fields.d.ts +1 -1
  318. package/dist/services/utils/conditional-fields.d.ts.map +1 -1
  319. package/dist/services/utils/conditional-fields.js +2 -8
  320. package/dist/services/utils/conditional-fields.js.map +1 -1
  321. package/dist/services/utils/conditional-fields.mjs +2 -8
  322. package/dist/services/utils/conditional-fields.mjs.map +1 -1
  323. package/dist/services/utils/dynamic-zones.d.ts.map +1 -1
  324. package/dist/services/utils/dynamic-zones.js +2 -8
  325. package/dist/services/utils/dynamic-zones.js.map +1 -1
  326. package/dist/services/utils/dynamic-zones.mjs +2 -8
  327. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  328. package/dist/utils/cron.js +2 -2
  329. package/dist/utils/cron.js.map +1 -1
  330. package/dist/utils/cron.mjs +1 -1
  331. package/dist/utils/cron.mjs.map +1 -1
  332. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  333. package/dist/utils/filepath-to-prop-path.js +5 -12
  334. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  335. package/dist/utils/filepath-to-prop-path.mjs +5 -11
  336. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  337. package/dist/utils/is-initialized.js +3 -3
  338. package/dist/utils/is-initialized.js.map +1 -1
  339. package/dist/utils/is-initialized.mjs +2 -2
  340. package/dist/utils/is-initialized.mjs.map +1 -1
  341. package/dist/utils/startup-logger.d.ts.map +1 -1
  342. package/dist/utils/startup-logger.js +2 -4
  343. package/dist/utils/startup-logger.js.map +1 -1
  344. package/dist/utils/startup-logger.mjs +2 -3
  345. package/dist/utils/startup-logger.mjs.map +1 -1
  346. package/dist/utils/transform-content-types-to-models.js +4 -4
  347. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  348. package/dist/utils/transform-content-types-to-models.mjs +3 -3
  349. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  350. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"core-store.js","sources":["../../src/services/core-store.ts"],"sourcesContent":["import { toString } from 'lodash/fp';\nimport type { Database, Model } from '@strapi/database';\n\nconst coreStoreModel: Model = {\n uid: 'strapi::core-store',\n singularName: 'strapi_core_store_settings',\n tableName: 'strapi_core_store_settings',\n attributes: {\n id: {\n type: 'increments',\n },\n key: {\n type: 'string',\n },\n value: {\n type: 'text',\n },\n type: {\n type: 'string',\n },\n environment: {\n type: 'string',\n },\n tag: {\n type: 'string',\n },\n },\n};\n\ntype SetParams = {\n key: string;\n value: unknown;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype GetParams = {\n key: string;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype Params = SetParams & GetParams;\n\ninterface CoreStore {\n (defaultParams: Partial<Params>): {\n get<T = unknown>(params: Partial<GetParams>): Promise<T>;\n set(params: Partial<SetParams>): Promise<void>;\n delete(params: Partial<GetParams>): Promise<void>;\n };\n get<T = unknown>(params: GetParams): Promise<T>;\n set(params: SetParams): Promise<void>;\n delete(params: GetParams): Promise<void>;\n}\n\nconst createCoreStore = ({ db }: { db: Database }) => {\n const mergeParams = (defaultParams: Partial<Params>, params: Params): Params => {\n return {\n ...defaultParams,\n ...params,\n };\n };\n\n const store: CoreStore = function createScopedCoreStore(defaultParams: Partial<Params>) {\n return {\n get: (params: Params) => store.get(mergeParams(defaultParams, params)),\n set: (params: Params) => store.set(mergeParams(defaultParams, params)),\n delete: (params: Params) => store.delete(mergeParams(defaultParams, params)),\n };\n };\n\n /**\n * Get value from the core store\n */\n store.get = async (params) => {\n const { key, type = 'core', environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (!data) {\n return null;\n }\n\n if (\n data.type === 'object' ||\n data.type === 'array' ||\n data.type === 'boolean' ||\n data.type === 'string'\n ) {\n try {\n return JSON.parse(data.value);\n } catch {\n return new Date(data.value);\n }\n } else if (data.type === 'number') {\n return Number(data.value);\n } else {\n return null;\n }\n };\n\n /**\n * Set value in the core store\n * @param {Object} params\n * @returns {*}\n */\n store.set = async (params) => {\n const { key, value, type, environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (data) {\n return db.query('strapi::core-store').update({\n where: { id: data.id },\n data: {\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n }\n\n return db.query('strapi::core-store').create({\n data: {\n ...where,\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n };\n\n /**\n * Deletes a value from the core store\n * @param {Object} params\n * @returns {*}\n */\n store.delete = async (params) => {\n const { key, environment, type, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n return db.query('strapi::core-store').delete({ where });\n };\n\n return store;\n};\n\nexport { coreStoreModel, createCoreStore };\n"],"names":["coreStoreModel","uid","singularName","tableName","attributes","id","type","key","value","environment","tag","createCoreStore","db","mergeParams","defaultParams","params","store","createScopedCoreStore","get","set","delete","name","prefix","where","data","query","findOne","JSON","parse","Date","Number","update","stringify","toString","create"],"mappings":"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"}
1
+ {"version":3,"file":"core-store.js","sources":["../../src/services/core-store.ts"],"sourcesContent":["import { toString } from 'lodash';\nimport type { Database, Model } from '@strapi/database';\n\nconst coreStoreModel: Model = {\n uid: 'strapi::core-store',\n singularName: 'strapi_core_store_settings',\n tableName: 'strapi_core_store_settings',\n attributes: {\n id: {\n type: 'increments',\n },\n key: {\n type: 'string',\n },\n value: {\n type: 'text',\n },\n type: {\n type: 'string',\n },\n environment: {\n type: 'string',\n },\n tag: {\n type: 'string',\n },\n },\n};\n\ntype SetParams = {\n key: string;\n value: unknown;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype GetParams = {\n key: string;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype Params = SetParams & GetParams;\n\ninterface CoreStore {\n (defaultParams: Partial<Params>): {\n get<T = unknown>(params: Partial<GetParams>): Promise<T>;\n set(params: Partial<SetParams>): Promise<void>;\n delete(params: Partial<GetParams>): Promise<void>;\n };\n get<T = unknown>(params: GetParams): Promise<T>;\n set(params: SetParams): Promise<void>;\n delete(params: GetParams): Promise<void>;\n}\n\nconst createCoreStore = ({ db }: { db: Database }) => {\n const mergeParams = (defaultParams: Partial<Params>, params: Params): Params => {\n return {\n ...defaultParams,\n ...params,\n };\n };\n\n const store: CoreStore = function createScopedCoreStore(defaultParams: Partial<Params>) {\n return {\n get: (params: Params) => store.get(mergeParams(defaultParams, params)),\n set: (params: Params) => store.set(mergeParams(defaultParams, params)),\n delete: (params: Params) => store.delete(mergeParams(defaultParams, params)),\n };\n };\n\n /**\n * Get value from the core store\n */\n store.get = async (params) => {\n const { key, type = 'core', environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (!data) {\n return null;\n }\n\n if (\n data.type === 'object' ||\n data.type === 'array' ||\n data.type === 'boolean' ||\n data.type === 'string'\n ) {\n try {\n return JSON.parse(data.value);\n } catch {\n return new Date(data.value);\n }\n } else if (data.type === 'number') {\n return Number(data.value);\n } else {\n return null;\n }\n };\n\n /**\n * Set value in the core store\n * @param {Object} params\n * @returns {*}\n */\n store.set = async (params) => {\n const { key, value, type, environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (data) {\n return db.query('strapi::core-store').update({\n where: { id: data.id },\n data: {\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n }\n\n return db.query('strapi::core-store').create({\n data: {\n ...where,\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n };\n\n /**\n * Deletes a value from the core store\n * @param {Object} params\n * @returns {*}\n */\n store.delete = async (params) => {\n const { key, environment, type, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n return db.query('strapi::core-store').delete({ where });\n };\n\n return store;\n};\n\nexport { coreStoreModel, createCoreStore };\n"],"names":["coreStoreModel","uid","singularName","tableName","attributes","id","type","key","value","environment","tag","createCoreStore","db","mergeParams","defaultParams","params","store","createScopedCoreStore","get","set","delete","name","prefix","where","data","query","findOne","JSON","parse","Date","Number","update","stringify","toString","create"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { toString } from 'lodash/fp';
1
+ import { toString } from 'lodash';
2
2
 
3
3
  const coreStoreModel = {
4
4
  uid: 'strapi::core-store',
@@ -1 +1 @@
1
- {"version":3,"file":"core-store.mjs","sources":["../../src/services/core-store.ts"],"sourcesContent":["import { toString } from 'lodash/fp';\nimport type { Database, Model } from '@strapi/database';\n\nconst coreStoreModel: Model = {\n uid: 'strapi::core-store',\n singularName: 'strapi_core_store_settings',\n tableName: 'strapi_core_store_settings',\n attributes: {\n id: {\n type: 'increments',\n },\n key: {\n type: 'string',\n },\n value: {\n type: 'text',\n },\n type: {\n type: 'string',\n },\n environment: {\n type: 'string',\n },\n tag: {\n type: 'string',\n },\n },\n};\n\ntype SetParams = {\n key: string;\n value: unknown;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype GetParams = {\n key: string;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype Params = SetParams & GetParams;\n\ninterface CoreStore {\n (defaultParams: Partial<Params>): {\n get<T = unknown>(params: Partial<GetParams>): Promise<T>;\n set(params: Partial<SetParams>): Promise<void>;\n delete(params: Partial<GetParams>): Promise<void>;\n };\n get<T = unknown>(params: GetParams): Promise<T>;\n set(params: SetParams): Promise<void>;\n delete(params: GetParams): Promise<void>;\n}\n\nconst createCoreStore = ({ db }: { db: Database }) => {\n const mergeParams = (defaultParams: Partial<Params>, params: Params): Params => {\n return {\n ...defaultParams,\n ...params,\n };\n };\n\n const store: CoreStore = function createScopedCoreStore(defaultParams: Partial<Params>) {\n return {\n get: (params: Params) => store.get(mergeParams(defaultParams, params)),\n set: (params: Params) => store.set(mergeParams(defaultParams, params)),\n delete: (params: Params) => store.delete(mergeParams(defaultParams, params)),\n };\n };\n\n /**\n * Get value from the core store\n */\n store.get = async (params) => {\n const { key, type = 'core', environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (!data) {\n return null;\n }\n\n if (\n data.type === 'object' ||\n data.type === 'array' ||\n data.type === 'boolean' ||\n data.type === 'string'\n ) {\n try {\n return JSON.parse(data.value);\n } catch {\n return new Date(data.value);\n }\n } else if (data.type === 'number') {\n return Number(data.value);\n } else {\n return null;\n }\n };\n\n /**\n * Set value in the core store\n * @param {Object} params\n * @returns {*}\n */\n store.set = async (params) => {\n const { key, value, type, environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (data) {\n return db.query('strapi::core-store').update({\n where: { id: data.id },\n data: {\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n }\n\n return db.query('strapi::core-store').create({\n data: {\n ...where,\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n };\n\n /**\n * Deletes a value from the core store\n * @param {Object} params\n * @returns {*}\n */\n store.delete = async (params) => {\n const { key, environment, type, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n return db.query('strapi::core-store').delete({ where });\n };\n\n return store;\n};\n\nexport { coreStoreModel, createCoreStore };\n"],"names":["coreStoreModel","uid","singularName","tableName","attributes","id","type","key","value","environment","tag","createCoreStore","db","mergeParams","defaultParams","params","store","createScopedCoreStore","get","set","delete","name","prefix","where","data","query","findOne","JSON","parse","Date","Number","update","stringify","toString","create"],"mappings":"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"}
1
+ {"version":3,"file":"core-store.mjs","sources":["../../src/services/core-store.ts"],"sourcesContent":["import { toString } from 'lodash';\nimport type { Database, Model } from '@strapi/database';\n\nconst coreStoreModel: Model = {\n uid: 'strapi::core-store',\n singularName: 'strapi_core_store_settings',\n tableName: 'strapi_core_store_settings',\n attributes: {\n id: {\n type: 'increments',\n },\n key: {\n type: 'string',\n },\n value: {\n type: 'text',\n },\n type: {\n type: 'string',\n },\n environment: {\n type: 'string',\n },\n tag: {\n type: 'string',\n },\n },\n};\n\ntype SetParams = {\n key: string;\n value: unknown;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype GetParams = {\n key: string;\n type?: string;\n environment?: string;\n name?: string;\n tag?: string;\n};\n\ntype Params = SetParams & GetParams;\n\ninterface CoreStore {\n (defaultParams: Partial<Params>): {\n get<T = unknown>(params: Partial<GetParams>): Promise<T>;\n set(params: Partial<SetParams>): Promise<void>;\n delete(params: Partial<GetParams>): Promise<void>;\n };\n get<T = unknown>(params: GetParams): Promise<T>;\n set(params: SetParams): Promise<void>;\n delete(params: GetParams): Promise<void>;\n}\n\nconst createCoreStore = ({ db }: { db: Database }) => {\n const mergeParams = (defaultParams: Partial<Params>, params: Params): Params => {\n return {\n ...defaultParams,\n ...params,\n };\n };\n\n const store: CoreStore = function createScopedCoreStore(defaultParams: Partial<Params>) {\n return {\n get: (params: Params) => store.get(mergeParams(defaultParams, params)),\n set: (params: Params) => store.set(mergeParams(defaultParams, params)),\n delete: (params: Params) => store.delete(mergeParams(defaultParams, params)),\n };\n };\n\n /**\n * Get value from the core store\n */\n store.get = async (params) => {\n const { key, type = 'core', environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (!data) {\n return null;\n }\n\n if (\n data.type === 'object' ||\n data.type === 'array' ||\n data.type === 'boolean' ||\n data.type === 'string'\n ) {\n try {\n return JSON.parse(data.value);\n } catch {\n return new Date(data.value);\n }\n } else if (data.type === 'number') {\n return Number(data.value);\n } else {\n return null;\n }\n };\n\n /**\n * Set value in the core store\n * @param {Object} params\n * @returns {*}\n */\n store.set = async (params) => {\n const { key, value, type, environment, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n const data = await db.query('strapi::core-store').findOne({ where });\n\n if (data) {\n return db.query('strapi::core-store').update({\n where: { id: data.id },\n data: {\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n }\n\n return db.query('strapi::core-store').create({\n data: {\n ...where,\n value: JSON.stringify(value) || toString(value),\n type: typeof value,\n },\n });\n };\n\n /**\n * Deletes a value from the core store\n * @param {Object} params\n * @returns {*}\n */\n store.delete = async (params) => {\n const { key, environment, type, name, tag } = params;\n\n const prefix = `${type}${name ? `_${name}` : ''}`;\n\n const where = {\n key: `${prefix}_${key}`,\n environment: environment || null,\n tag: tag || null,\n };\n\n return db.query('strapi::core-store').delete({ where });\n };\n\n return store;\n};\n\nexport { coreStoreModel, createCoreStore };\n"],"names":["coreStoreModel","uid","singularName","tableName","attributes","id","type","key","value","environment","tag","createCoreStore","db","mergeParams","defaultParams","params","store","createScopedCoreStore","get","set","delete","name","prefix","where","data","query","findOne","JSON","parse","Date","Number","update","stringify","toString","create"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/services/cron.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAS7C,KAAK,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AA2JpC,QAAA,MAAM,iBAAiB;gBAoGR,KAAK;iBAuCH,MAAM;;;;;CAqCtB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/services/cron.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAS7C,KAAK,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AA2JpC,QAAA,MAAM,iBAAiB;gBAoGR,KAAK;iBAuCH,MAAM;;;;;CAqCtB,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -1,7 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
4
-
5
3
  let lazyCroner;
6
4
  const getCroner = ()=>{
7
5
  if (!lazyCroner) {
@@ -231,11 +229,11 @@ const createCronService = ()=>{
231
229
  let fn;
232
230
  let options;
233
231
  let taskName;
234
- if (fp.isFunction(taskValue)) {
232
+ if (typeof taskValue === 'function') {
235
233
  taskName = null;
236
234
  fn = taskValue.bind(tasks);
237
235
  options = taskExpression;
238
- } else if (fp.isFunction(taskValue.task)) {
236
+ } else if (typeof taskValue.task === 'function') {
239
237
  taskName = taskExpression;
240
238
  fn = taskValue.task.bind(taskValue);
241
239
  options = taskValue.options;
@@ -1 +1 @@
1
- {"version":3,"file":"cron.js","sources":["../../src/services/cron.ts"],"sourcesContent":["import { isFunction } from 'lodash/fp';\nimport type { Modules } from '@strapi/types';\nimport type { Cron } from 'croner';\n\ntype RecurrenceSpecObjLit = Modules.Cron.RecurrenceSpecObjLit;\ntype CronRuleOptions = Modules.Cron.CronRuleOptions;\ntype CronSchedule = Modules.Cron.CronSchedule;\ntype CronJob = Modules.Cron.CronJob;\ntype JobSpec = Modules.Cron.JobSpec;\ntype TaskFn = Modules.Cron.CronTaskFn;\ntype Tasks = Modules.Cron.CronTasks;\n\nlet lazyCroner: typeof import('croner') | undefined;\nconst getCroner = (): typeof import('croner') => {\n if (!lazyCroner) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyCroner = require('croner');\n }\n return lazyCroner as typeof import('croner');\n};\n\nconst RECURRENCE_KEYS = [\n 'date',\n 'dayOfWeek',\n 'hour',\n 'minute',\n 'month',\n 'second',\n 'year',\n 'recurs',\n] as const;\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !(value instanceof Date);\n\nconst isRuleOptions = (value: unknown): value is CronRuleOptions =>\n isPlainObject(value) && 'rule' in value;\n\nconst isRecurrenceSpec = (value: unknown): value is RecurrenceSpecObjLit =>\n isPlainObject(value) && !('rule' in value) && RECURRENCE_KEYS.some((key) => key in value);\n\nconst toDate = (value: Date | number | string): Date =>\n value instanceof Date ? value : new Date(value);\n\nconst toSegmentPart = (value: unknown, offset = 0): string | null => {\n if (typeof value === 'number') {\n return String(value + offset);\n }\n return typeof value === 'string' ? value : null;\n};\n\nconst segmentToField = (segment: unknown, fallback = '*', offset = 0): string => {\n if (segment == null) {\n return fallback;\n }\n\n const part = toSegmentPart(segment, offset);\n if (part !== null) {\n return part;\n }\n\n if (Array.isArray(segment)) {\n return segment.map((item) => segmentToField(item, fallback, offset)).join(',');\n }\n\n if (isPlainObject(segment)) {\n const start = toSegmentPart(segment.start ?? segment.from, offset);\n const end = toSegmentPart(segment.end ?? segment.to, offset);\n if (start !== null && end !== null) {\n const range = `${start}-${end}`;\n const step = toSegmentPart(segment.step);\n return step === null ? range : `${range}/${step}`;\n }\n }\n\n return fallback;\n};\n\nconst recurrenceToCron = (spec: RecurrenceSpecObjLit): string => {\n const second = segmentToField(spec.second, '0');\n const minute = segmentToField(spec.minute);\n const hour = segmentToField(spec.hour);\n const date = segmentToField(spec.date);\n const month = segmentToField(spec.month, '*', 1);\n const dayOfWeek = segmentToField(spec.dayOfWeek);\n const fields = `${second} ${minute} ${hour} ${date} ${month} ${dayOfWeek}`;\n\n return spec.year == null ? fields : `${fields} ${segmentToField(spec.year)}`;\n};\n\ntype ScheduleWindow = {\n tz?: string;\n start?: Date | number | string;\n end?: Date | number | string;\n};\n\nconst toCronerOptions = ({ tz, start, end }: ScheduleWindow): Record<string, unknown> => {\n const cronerOptions: Record<string, unknown> = {};\n\n if (tz) {\n cronerOptions.timezone = tz;\n }\n if (start != null) {\n cronerOptions.startAt = toDate(start);\n }\n if (end != null) {\n cronerOptions.stopAt = toDate(end);\n }\n\n return cronerOptions;\n};\n\nconst ruleToPattern = (\n rule: CronRuleOptions['rule']\n): { pattern: string | Date; oneShot: boolean } => {\n if (typeof rule === 'number') {\n return { pattern: new Date(rule), oneShot: true };\n }\n if (rule instanceof Date) {\n return { pattern: rule, oneShot: true };\n }\n if (typeof rule === 'string') {\n return { pattern: rule, oneShot: false };\n }\n if (isRecurrenceSpec(rule)) {\n return { pattern: recurrenceToCron(rule), oneShot: false };\n }\n throw new Error('Unsupported cron rule');\n};\n\nconst toCronerArgs = (\n options: CronSchedule\n): { pattern: string | Date; cronerOptions: Record<string, unknown> } => {\n if (typeof options === 'number') {\n return { pattern: new Date(options), cronerOptions: { maxRuns: 1 } };\n }\n\n if (options instanceof Date) {\n return { pattern: options, cronerOptions: { maxRuns: 1 } };\n }\n\n if (typeof options === 'string') {\n return { pattern: options, cronerOptions: {} };\n }\n\n if (isRecurrenceSpec(options)) {\n return {\n pattern: recurrenceToCron(options),\n cronerOptions: toCronerOptions(options),\n };\n }\n\n if (isRuleOptions(options)) {\n const cronerOptions = toCronerOptions(options);\n const { pattern, oneShot } = ruleToPattern(options.rule);\n if (oneShot) {\n cronerOptions.maxRuns = 1;\n }\n\n return { pattern, cronerOptions };\n }\n\n throw new Error('Unsupported cron schedule');\n};\n\nconst createCronService = () => {\n let jobsSpecs: JobSpec[] = [];\n let running = false;\n\n const createRunner = (fn: TaskFn) => {\n let nextFireDate: Date | null = null;\n\n return {\n async run(self?: Cron): Promise<void> {\n const fireDate = nextFireDate ?? self?.currentRun() ?? new Date();\n nextFireDate = self?.nextRun(fireDate) ?? null;\n await fn({ strapi }, fireDate);\n },\n setNextRun(date: Date | null) {\n nextFireDate = date;\n },\n };\n };\n\n const createCronJob = (\n pattern: string | Date,\n cronerOptions: Record<string, unknown>,\n fn: TaskFn,\n jobLabel: string\n ) => {\n const { Cron: CronCtor } = getCroner();\n const runner = createRunner(fn);\n const job = new CronCtor(\n pattern,\n {\n paused: !running,\n // cron-parser (via node-schedule) accepted numeric-prefix stepping\n // like `5/15` as `5-59/15`. Croner 10 rejects it unless this is set.\n sloppyRanges: true,\n ...cronerOptions,\n catch(error: unknown) {\n strapi.log.error(`Cron job \"${jobLabel}\" failed`, error);\n },\n },\n runner.run\n );\n runner.setNextRun(job.nextRun());\n return job;\n };\n\n const attachHandle = (job: Cron, fn: TaskFn, jobLabel: string): CronJob => {\n let current = job;\n let handle: CronJob;\n\n const invoke = async () => {\n const fireDate = current.currentRun() ?? new Date();\n return fn({ strapi }, fireDate);\n };\n\n const cancel = () => {\n current.stop();\n return true;\n };\n\n const nextInvocation = () => current.nextRun();\n\n const reschedule = (spec: CronSchedule) => {\n try {\n const idx = jobsSpecs.findIndex((jobSpec) => jobSpec.job === handle);\n if (idx === -1) {\n return false;\n }\n\n const { pattern, cronerOptions } = toCronerArgs(spec);\n const next = createCronJob(pattern, cronerOptions, fn, jobLabel);\n\n current.stop();\n current = next;\n jobsSpecs[idx] = {\n ...jobsSpecs[idx],\n options: spec,\n };\n return true;\n } catch (error) {\n strapi.log.error(`Could not reschedule cron job \"${jobLabel}\"`, error);\n return false;\n }\n };\n\n handle = new Proxy(job as CronJob, {\n get(_target, property) {\n if (property === 'invoke') return invoke;\n if (property === 'cancel') return cancel;\n if (property === 'nextInvocation') return nextInvocation;\n if (property === 'reschedule') return reschedule;\n\n const value = Reflect.get(current, property, current);\n return typeof value === 'function' ? value.bind(current) : value;\n },\n });\n\n return handle;\n };\n\n return {\n add(tasks: Tasks = {}) {\n for (const taskExpression of Object.keys(tasks)) {\n const taskValue = tasks[taskExpression];\n\n let fn: TaskFn;\n let options: CronSchedule;\n let taskName: string | null;\n if (isFunction(taskValue)) {\n taskName = null;\n fn = taskValue.bind(tasks);\n options = taskExpression;\n } else if (isFunction(taskValue.task)) {\n taskName = taskExpression;\n fn = taskValue.task.bind(taskValue);\n options = taskValue.options;\n } else {\n throw new Error(\n `Could not schedule a cron job for \"${taskExpression}\": no function found.`\n );\n }\n\n const jobLabel = taskName ?? taskExpression;\n\n try {\n const { pattern, cronerOptions } = toCronerArgs(options);\n const job = createCronJob(pattern, cronerOptions, fn, jobLabel);\n\n jobsSpecs.push({\n job: attachHandle(job, fn, jobLabel),\n options,\n name: taskName,\n });\n } catch (error) {\n strapi.log.error(`Could not schedule cron job \"${jobLabel}\": invalid schedule`, error);\n }\n }\n return this;\n },\n\n remove(name: string) {\n if (!name) throw new Error('You must provide a name to remove a cron job.');\n const remaining: JobSpec[] = [];\n for (const jobSpec of jobsSpecs) {\n if (jobSpec.name === name) {\n jobSpec.job.stop();\n } else {\n remaining.push(jobSpec);\n }\n }\n jobsSpecs = remaining;\n return this;\n },\n\n start() {\n jobsSpecs.forEach(({ job }) => job.resume());\n running = true;\n return this;\n },\n\n stop() {\n jobsSpecs.forEach(({ job }) => job.pause());\n running = false;\n return this;\n },\n\n destroy() {\n this.stop();\n jobsSpecs.forEach(({ job }) => job.stop());\n jobsSpecs = [];\n return this;\n },\n\n get jobs() {\n return jobsSpecs;\n },\n };\n};\n\nexport default createCronService;\n"],"names":["lazyCroner","getCroner","require","RECURRENCE_KEYS","isPlainObject","value","Date","isRuleOptions","isRecurrenceSpec","some","key","toDate","toSegmentPart","offset","String","segmentToField","segment","fallback","part","Array","isArray","map","item","join","start","from","end","to","range","step","recurrenceToCron","spec","second","minute","hour","date","month","dayOfWeek","fields","year","toCronerOptions","tz","cronerOptions","timezone","startAt","stopAt","ruleToPattern","rule","pattern","oneShot","Error","toCronerArgs","options","maxRuns","createCronService","jobsSpecs","running","createRunner","fn","nextFireDate","run","self","fireDate","currentRun","nextRun","strapi","setNextRun","createCronJob","jobLabel","Cron","CronCtor","runner","job","paused","sloppyRanges","catch","error","log","attachHandle","current","handle","invoke","cancel","stop","nextInvocation","reschedule","idx","findIndex","jobSpec","next","Proxy","get","_target","property","Reflect","bind","add","tasks","taskExpression","Object","keys","taskValue","taskName","isFunction","task","push","name","remove","remaining","forEach","resume","pause","destroy","jobs"],"mappings":"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"}
1
+ {"version":3,"file":"cron.js","sources":["../../src/services/cron.ts"],"sourcesContent":["import type { Modules } from '@strapi/types';\nimport type { Cron } from 'croner';\n\ntype RecurrenceSpecObjLit = Modules.Cron.RecurrenceSpecObjLit;\ntype CronRuleOptions = Modules.Cron.CronRuleOptions;\ntype CronSchedule = Modules.Cron.CronSchedule;\ntype CronJob = Modules.Cron.CronJob;\ntype JobSpec = Modules.Cron.JobSpec;\ntype TaskFn = Modules.Cron.CronTaskFn;\ntype Tasks = Modules.Cron.CronTasks;\n\nlet lazyCroner: typeof import('croner') | undefined;\nconst getCroner = (): typeof import('croner') => {\n if (!lazyCroner) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyCroner = require('croner');\n }\n return lazyCroner as typeof import('croner');\n};\n\nconst RECURRENCE_KEYS = [\n 'date',\n 'dayOfWeek',\n 'hour',\n 'minute',\n 'month',\n 'second',\n 'year',\n 'recurs',\n] as const;\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !(value instanceof Date);\n\nconst isRuleOptions = (value: unknown): value is CronRuleOptions =>\n isPlainObject(value) && 'rule' in value;\n\nconst isRecurrenceSpec = (value: unknown): value is RecurrenceSpecObjLit =>\n isPlainObject(value) && !('rule' in value) && RECURRENCE_KEYS.some((key) => key in value);\n\nconst toDate = (value: Date | number | string): Date =>\n value instanceof Date ? value : new Date(value);\n\nconst toSegmentPart = (value: unknown, offset = 0): string | null => {\n if (typeof value === 'number') {\n return String(value + offset);\n }\n return typeof value === 'string' ? value : null;\n};\n\nconst segmentToField = (segment: unknown, fallback = '*', offset = 0): string => {\n if (segment == null) {\n return fallback;\n }\n\n const part = toSegmentPart(segment, offset);\n if (part !== null) {\n return part;\n }\n\n if (Array.isArray(segment)) {\n return segment.map((item) => segmentToField(item, fallback, offset)).join(',');\n }\n\n if (isPlainObject(segment)) {\n const start = toSegmentPart(segment.start ?? segment.from, offset);\n const end = toSegmentPart(segment.end ?? segment.to, offset);\n if (start !== null && end !== null) {\n const range = `${start}-${end}`;\n const step = toSegmentPart(segment.step);\n return step === null ? range : `${range}/${step}`;\n }\n }\n\n return fallback;\n};\n\nconst recurrenceToCron = (spec: RecurrenceSpecObjLit): string => {\n const second = segmentToField(spec.second, '0');\n const minute = segmentToField(spec.minute);\n const hour = segmentToField(spec.hour);\n const date = segmentToField(spec.date);\n const month = segmentToField(spec.month, '*', 1);\n const dayOfWeek = segmentToField(spec.dayOfWeek);\n const fields = `${second} ${minute} ${hour} ${date} ${month} ${dayOfWeek}`;\n\n return spec.year == null ? fields : `${fields} ${segmentToField(spec.year)}`;\n};\n\ntype ScheduleWindow = {\n tz?: string;\n start?: Date | number | string;\n end?: Date | number | string;\n};\n\nconst toCronerOptions = ({ tz, start, end }: ScheduleWindow): Record<string, unknown> => {\n const cronerOptions: Record<string, unknown> = {};\n\n if (tz) {\n cronerOptions.timezone = tz;\n }\n if (start != null) {\n cronerOptions.startAt = toDate(start);\n }\n if (end != null) {\n cronerOptions.stopAt = toDate(end);\n }\n\n return cronerOptions;\n};\n\nconst ruleToPattern = (\n rule: CronRuleOptions['rule']\n): { pattern: string | Date; oneShot: boolean } => {\n if (typeof rule === 'number') {\n return { pattern: new Date(rule), oneShot: true };\n }\n if (rule instanceof Date) {\n return { pattern: rule, oneShot: true };\n }\n if (typeof rule === 'string') {\n return { pattern: rule, oneShot: false };\n }\n if (isRecurrenceSpec(rule)) {\n return { pattern: recurrenceToCron(rule), oneShot: false };\n }\n throw new Error('Unsupported cron rule');\n};\n\nconst toCronerArgs = (\n options: CronSchedule\n): { pattern: string | Date; cronerOptions: Record<string, unknown> } => {\n if (typeof options === 'number') {\n return { pattern: new Date(options), cronerOptions: { maxRuns: 1 } };\n }\n\n if (options instanceof Date) {\n return { pattern: options, cronerOptions: { maxRuns: 1 } };\n }\n\n if (typeof options === 'string') {\n return { pattern: options, cronerOptions: {} };\n }\n\n if (isRecurrenceSpec(options)) {\n return {\n pattern: recurrenceToCron(options),\n cronerOptions: toCronerOptions(options),\n };\n }\n\n if (isRuleOptions(options)) {\n const cronerOptions = toCronerOptions(options);\n const { pattern, oneShot } = ruleToPattern(options.rule);\n if (oneShot) {\n cronerOptions.maxRuns = 1;\n }\n\n return { pattern, cronerOptions };\n }\n\n throw new Error('Unsupported cron schedule');\n};\n\nconst createCronService = () => {\n let jobsSpecs: JobSpec[] = [];\n let running = false;\n\n const createRunner = (fn: TaskFn) => {\n let nextFireDate: Date | null = null;\n\n return {\n async run(self?: Cron): Promise<void> {\n const fireDate = nextFireDate ?? self?.currentRun() ?? new Date();\n nextFireDate = self?.nextRun(fireDate) ?? null;\n await fn({ strapi }, fireDate);\n },\n setNextRun(date: Date | null) {\n nextFireDate = date;\n },\n };\n };\n\n const createCronJob = (\n pattern: string | Date,\n cronerOptions: Record<string, unknown>,\n fn: TaskFn,\n jobLabel: string\n ) => {\n const { Cron: CronCtor } = getCroner();\n const runner = createRunner(fn);\n const job = new CronCtor(\n pattern,\n {\n paused: !running,\n // cron-parser (via node-schedule) accepted numeric-prefix stepping\n // like `5/15` as `5-59/15`. Croner 10 rejects it unless this is set.\n sloppyRanges: true,\n ...cronerOptions,\n catch(error: unknown) {\n strapi.log.error(`Cron job \"${jobLabel}\" failed`, error);\n },\n },\n runner.run\n );\n runner.setNextRun(job.nextRun());\n return job;\n };\n\n const attachHandle = (job: Cron, fn: TaskFn, jobLabel: string): CronJob => {\n let current = job;\n let handle: CronJob;\n\n const invoke = async () => {\n const fireDate = current.currentRun() ?? new Date();\n return fn({ strapi }, fireDate);\n };\n\n const cancel = () => {\n current.stop();\n return true;\n };\n\n const nextInvocation = () => current.nextRun();\n\n const reschedule = (spec: CronSchedule) => {\n try {\n const idx = jobsSpecs.findIndex((jobSpec) => jobSpec.job === handle);\n if (idx === -1) {\n return false;\n }\n\n const { pattern, cronerOptions } = toCronerArgs(spec);\n const next = createCronJob(pattern, cronerOptions, fn, jobLabel);\n\n current.stop();\n current = next;\n jobsSpecs[idx] = {\n ...jobsSpecs[idx],\n options: spec,\n };\n return true;\n } catch (error) {\n strapi.log.error(`Could not reschedule cron job \"${jobLabel}\"`, error);\n return false;\n }\n };\n\n handle = new Proxy(job as CronJob, {\n get(_target, property) {\n if (property === 'invoke') return invoke;\n if (property === 'cancel') return cancel;\n if (property === 'nextInvocation') return nextInvocation;\n if (property === 'reschedule') return reschedule;\n\n const value = Reflect.get(current, property, current);\n return typeof value === 'function' ? value.bind(current) : value;\n },\n });\n\n return handle;\n };\n\n return {\n add(tasks: Tasks = {}) {\n for (const taskExpression of Object.keys(tasks)) {\n const taskValue = tasks[taskExpression];\n\n let fn: TaskFn;\n let options: CronSchedule;\n let taskName: string | null;\n if (typeof taskValue === 'function') {\n taskName = null;\n fn = taskValue.bind(tasks);\n options = taskExpression;\n } else if (typeof taskValue.task === 'function') {\n taskName = taskExpression;\n fn = taskValue.task.bind(taskValue);\n options = taskValue.options;\n } else {\n throw new Error(\n `Could not schedule a cron job for \"${taskExpression}\": no function found.`\n );\n }\n\n const jobLabel = taskName ?? taskExpression;\n\n try {\n const { pattern, cronerOptions } = toCronerArgs(options);\n const job = createCronJob(pattern, cronerOptions, fn, jobLabel);\n\n jobsSpecs.push({\n job: attachHandle(job, fn, jobLabel),\n options,\n name: taskName,\n });\n } catch (error) {\n strapi.log.error(`Could not schedule cron job \"${jobLabel}\": invalid schedule`, error);\n }\n }\n return this;\n },\n\n remove(name: string) {\n if (!name) throw new Error('You must provide a name to remove a cron job.');\n const remaining: JobSpec[] = [];\n for (const jobSpec of jobsSpecs) {\n if (jobSpec.name === name) {\n jobSpec.job.stop();\n } else {\n remaining.push(jobSpec);\n }\n }\n jobsSpecs = remaining;\n return this;\n },\n\n start() {\n jobsSpecs.forEach(({ job }) => job.resume());\n running = true;\n return this;\n },\n\n stop() {\n jobsSpecs.forEach(({ job }) => job.pause());\n running = false;\n return this;\n },\n\n destroy() {\n this.stop();\n jobsSpecs.forEach(({ job }) => job.stop());\n jobsSpecs = [];\n return this;\n },\n\n get jobs() {\n return jobsSpecs;\n },\n };\n};\n\nexport default createCronService;\n"],"names":["lazyCroner","getCroner","require","RECURRENCE_KEYS","isPlainObject","value","Date","isRuleOptions","isRecurrenceSpec","some","key","toDate","toSegmentPart","offset","String","segmentToField","segment","fallback","part","Array","isArray","map","item","join","start","from","end","to","range","step","recurrenceToCron","spec","second","minute","hour","date","month","dayOfWeek","fields","year","toCronerOptions","tz","cronerOptions","timezone","startAt","stopAt","ruleToPattern","rule","pattern","oneShot","Error","toCronerArgs","options","maxRuns","createCronService","jobsSpecs","running","createRunner","fn","nextFireDate","run","self","fireDate","currentRun","nextRun","strapi","setNextRun","createCronJob","jobLabel","Cron","CronCtor","runner","job","paused","sloppyRanges","catch","error","log","attachHandle","current","handle","invoke","cancel","stop","nextInvocation","reschedule","idx","findIndex","jobSpec","next","Proxy","get","_target","property","Reflect","bind","add","tasks","taskExpression","Object","keys","taskValue","taskName","task","push","name","remove","remaining","forEach","resume","pause","destroy","jobs"],"mappings":"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"}
@@ -1,5 +1,3 @@
1
- import { isFunction } from 'lodash/fp';
2
-
3
1
  let lazyCroner;
4
2
  const getCroner = ()=>{
5
3
  if (!lazyCroner) {
@@ -229,11 +227,11 @@ const createCronService = ()=>{
229
227
  let fn;
230
228
  let options;
231
229
  let taskName;
232
- if (isFunction(taskValue)) {
230
+ if (typeof taskValue === 'function') {
233
231
  taskName = null;
234
232
  fn = taskValue.bind(tasks);
235
233
  options = taskExpression;
236
- } else if (isFunction(taskValue.task)) {
234
+ } else if (typeof taskValue.task === 'function') {
237
235
  taskName = taskExpression;
238
236
  fn = taskValue.task.bind(taskValue);
239
237
  options = taskValue.options;
@@ -1 +1 @@
1
- {"version":3,"file":"cron.mjs","sources":["../../src/services/cron.ts"],"sourcesContent":["import { isFunction } from 'lodash/fp';\nimport type { Modules } from '@strapi/types';\nimport type { Cron } from 'croner';\n\ntype RecurrenceSpecObjLit = Modules.Cron.RecurrenceSpecObjLit;\ntype CronRuleOptions = Modules.Cron.CronRuleOptions;\ntype CronSchedule = Modules.Cron.CronSchedule;\ntype CronJob = Modules.Cron.CronJob;\ntype JobSpec = Modules.Cron.JobSpec;\ntype TaskFn = Modules.Cron.CronTaskFn;\ntype Tasks = Modules.Cron.CronTasks;\n\nlet lazyCroner: typeof import('croner') | undefined;\nconst getCroner = (): typeof import('croner') => {\n if (!lazyCroner) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyCroner = require('croner');\n }\n return lazyCroner as typeof import('croner');\n};\n\nconst RECURRENCE_KEYS = [\n 'date',\n 'dayOfWeek',\n 'hour',\n 'minute',\n 'month',\n 'second',\n 'year',\n 'recurs',\n] as const;\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !(value instanceof Date);\n\nconst isRuleOptions = (value: unknown): value is CronRuleOptions =>\n isPlainObject(value) && 'rule' in value;\n\nconst isRecurrenceSpec = (value: unknown): value is RecurrenceSpecObjLit =>\n isPlainObject(value) && !('rule' in value) && RECURRENCE_KEYS.some((key) => key in value);\n\nconst toDate = (value: Date | number | string): Date =>\n value instanceof Date ? value : new Date(value);\n\nconst toSegmentPart = (value: unknown, offset = 0): string | null => {\n if (typeof value === 'number') {\n return String(value + offset);\n }\n return typeof value === 'string' ? value : null;\n};\n\nconst segmentToField = (segment: unknown, fallback = '*', offset = 0): string => {\n if (segment == null) {\n return fallback;\n }\n\n const part = toSegmentPart(segment, offset);\n if (part !== null) {\n return part;\n }\n\n if (Array.isArray(segment)) {\n return segment.map((item) => segmentToField(item, fallback, offset)).join(',');\n }\n\n if (isPlainObject(segment)) {\n const start = toSegmentPart(segment.start ?? segment.from, offset);\n const end = toSegmentPart(segment.end ?? segment.to, offset);\n if (start !== null && end !== null) {\n const range = `${start}-${end}`;\n const step = toSegmentPart(segment.step);\n return step === null ? range : `${range}/${step}`;\n }\n }\n\n return fallback;\n};\n\nconst recurrenceToCron = (spec: RecurrenceSpecObjLit): string => {\n const second = segmentToField(spec.second, '0');\n const minute = segmentToField(spec.minute);\n const hour = segmentToField(spec.hour);\n const date = segmentToField(spec.date);\n const month = segmentToField(spec.month, '*', 1);\n const dayOfWeek = segmentToField(spec.dayOfWeek);\n const fields = `${second} ${minute} ${hour} ${date} ${month} ${dayOfWeek}`;\n\n return spec.year == null ? fields : `${fields} ${segmentToField(spec.year)}`;\n};\n\ntype ScheduleWindow = {\n tz?: string;\n start?: Date | number | string;\n end?: Date | number | string;\n};\n\nconst toCronerOptions = ({ tz, start, end }: ScheduleWindow): Record<string, unknown> => {\n const cronerOptions: Record<string, unknown> = {};\n\n if (tz) {\n cronerOptions.timezone = tz;\n }\n if (start != null) {\n cronerOptions.startAt = toDate(start);\n }\n if (end != null) {\n cronerOptions.stopAt = toDate(end);\n }\n\n return cronerOptions;\n};\n\nconst ruleToPattern = (\n rule: CronRuleOptions['rule']\n): { pattern: string | Date; oneShot: boolean } => {\n if (typeof rule === 'number') {\n return { pattern: new Date(rule), oneShot: true };\n }\n if (rule instanceof Date) {\n return { pattern: rule, oneShot: true };\n }\n if (typeof rule === 'string') {\n return { pattern: rule, oneShot: false };\n }\n if (isRecurrenceSpec(rule)) {\n return { pattern: recurrenceToCron(rule), oneShot: false };\n }\n throw new Error('Unsupported cron rule');\n};\n\nconst toCronerArgs = (\n options: CronSchedule\n): { pattern: string | Date; cronerOptions: Record<string, unknown> } => {\n if (typeof options === 'number') {\n return { pattern: new Date(options), cronerOptions: { maxRuns: 1 } };\n }\n\n if (options instanceof Date) {\n return { pattern: options, cronerOptions: { maxRuns: 1 } };\n }\n\n if (typeof options === 'string') {\n return { pattern: options, cronerOptions: {} };\n }\n\n if (isRecurrenceSpec(options)) {\n return {\n pattern: recurrenceToCron(options),\n cronerOptions: toCronerOptions(options),\n };\n }\n\n if (isRuleOptions(options)) {\n const cronerOptions = toCronerOptions(options);\n const { pattern, oneShot } = ruleToPattern(options.rule);\n if (oneShot) {\n cronerOptions.maxRuns = 1;\n }\n\n return { pattern, cronerOptions };\n }\n\n throw new Error('Unsupported cron schedule');\n};\n\nconst createCronService = () => {\n let jobsSpecs: JobSpec[] = [];\n let running = false;\n\n const createRunner = (fn: TaskFn) => {\n let nextFireDate: Date | null = null;\n\n return {\n async run(self?: Cron): Promise<void> {\n const fireDate = nextFireDate ?? self?.currentRun() ?? new Date();\n nextFireDate = self?.nextRun(fireDate) ?? null;\n await fn({ strapi }, fireDate);\n },\n setNextRun(date: Date | null) {\n nextFireDate = date;\n },\n };\n };\n\n const createCronJob = (\n pattern: string | Date,\n cronerOptions: Record<string, unknown>,\n fn: TaskFn,\n jobLabel: string\n ) => {\n const { Cron: CronCtor } = getCroner();\n const runner = createRunner(fn);\n const job = new CronCtor(\n pattern,\n {\n paused: !running,\n // cron-parser (via node-schedule) accepted numeric-prefix stepping\n // like `5/15` as `5-59/15`. Croner 10 rejects it unless this is set.\n sloppyRanges: true,\n ...cronerOptions,\n catch(error: unknown) {\n strapi.log.error(`Cron job \"${jobLabel}\" failed`, error);\n },\n },\n runner.run\n );\n runner.setNextRun(job.nextRun());\n return job;\n };\n\n const attachHandle = (job: Cron, fn: TaskFn, jobLabel: string): CronJob => {\n let current = job;\n let handle: CronJob;\n\n const invoke = async () => {\n const fireDate = current.currentRun() ?? new Date();\n return fn({ strapi }, fireDate);\n };\n\n const cancel = () => {\n current.stop();\n return true;\n };\n\n const nextInvocation = () => current.nextRun();\n\n const reschedule = (spec: CronSchedule) => {\n try {\n const idx = jobsSpecs.findIndex((jobSpec) => jobSpec.job === handle);\n if (idx === -1) {\n return false;\n }\n\n const { pattern, cronerOptions } = toCronerArgs(spec);\n const next = createCronJob(pattern, cronerOptions, fn, jobLabel);\n\n current.stop();\n current = next;\n jobsSpecs[idx] = {\n ...jobsSpecs[idx],\n options: spec,\n };\n return true;\n } catch (error) {\n strapi.log.error(`Could not reschedule cron job \"${jobLabel}\"`, error);\n return false;\n }\n };\n\n handle = new Proxy(job as CronJob, {\n get(_target, property) {\n if (property === 'invoke') return invoke;\n if (property === 'cancel') return cancel;\n if (property === 'nextInvocation') return nextInvocation;\n if (property === 'reschedule') return reschedule;\n\n const value = Reflect.get(current, property, current);\n return typeof value === 'function' ? value.bind(current) : value;\n },\n });\n\n return handle;\n };\n\n return {\n add(tasks: Tasks = {}) {\n for (const taskExpression of Object.keys(tasks)) {\n const taskValue = tasks[taskExpression];\n\n let fn: TaskFn;\n let options: CronSchedule;\n let taskName: string | null;\n if (isFunction(taskValue)) {\n taskName = null;\n fn = taskValue.bind(tasks);\n options = taskExpression;\n } else if (isFunction(taskValue.task)) {\n taskName = taskExpression;\n fn = taskValue.task.bind(taskValue);\n options = taskValue.options;\n } else {\n throw new Error(\n `Could not schedule a cron job for \"${taskExpression}\": no function found.`\n );\n }\n\n const jobLabel = taskName ?? taskExpression;\n\n try {\n const { pattern, cronerOptions } = toCronerArgs(options);\n const job = createCronJob(pattern, cronerOptions, fn, jobLabel);\n\n jobsSpecs.push({\n job: attachHandle(job, fn, jobLabel),\n options,\n name: taskName,\n });\n } catch (error) {\n strapi.log.error(`Could not schedule cron job \"${jobLabel}\": invalid schedule`, error);\n }\n }\n return this;\n },\n\n remove(name: string) {\n if (!name) throw new Error('You must provide a name to remove a cron job.');\n const remaining: JobSpec[] = [];\n for (const jobSpec of jobsSpecs) {\n if (jobSpec.name === name) {\n jobSpec.job.stop();\n } else {\n remaining.push(jobSpec);\n }\n }\n jobsSpecs = remaining;\n return this;\n },\n\n start() {\n jobsSpecs.forEach(({ job }) => job.resume());\n running = true;\n return this;\n },\n\n stop() {\n jobsSpecs.forEach(({ job }) => job.pause());\n running = false;\n return this;\n },\n\n destroy() {\n this.stop();\n jobsSpecs.forEach(({ job }) => job.stop());\n jobsSpecs = [];\n return this;\n },\n\n get jobs() {\n return jobsSpecs;\n },\n };\n};\n\nexport default createCronService;\n"],"names":["lazyCroner","getCroner","require","RECURRENCE_KEYS","isPlainObject","value","Date","isRuleOptions","isRecurrenceSpec","some","key","toDate","toSegmentPart","offset","String","segmentToField","segment","fallback","part","Array","isArray","map","item","join","start","from","end","to","range","step","recurrenceToCron","spec","second","minute","hour","date","month","dayOfWeek","fields","year","toCronerOptions","tz","cronerOptions","timezone","startAt","stopAt","ruleToPattern","rule","pattern","oneShot","Error","toCronerArgs","options","maxRuns","createCronService","jobsSpecs","running","createRunner","fn","nextFireDate","run","self","fireDate","currentRun","nextRun","strapi","setNextRun","createCronJob","jobLabel","Cron","CronCtor","runner","job","paused","sloppyRanges","catch","error","log","attachHandle","current","handle","invoke","cancel","stop","nextInvocation","reschedule","idx","findIndex","jobSpec","next","Proxy","get","_target","property","Reflect","bind","add","tasks","taskExpression","Object","keys","taskValue","taskName","isFunction","task","push","name","remove","remaining","forEach","resume","pause","destroy","jobs"],"mappings":"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"}
1
+ {"version":3,"file":"cron.mjs","sources":["../../src/services/cron.ts"],"sourcesContent":["import type { Modules } from '@strapi/types';\nimport type { Cron } from 'croner';\n\ntype RecurrenceSpecObjLit = Modules.Cron.RecurrenceSpecObjLit;\ntype CronRuleOptions = Modules.Cron.CronRuleOptions;\ntype CronSchedule = Modules.Cron.CronSchedule;\ntype CronJob = Modules.Cron.CronJob;\ntype JobSpec = Modules.Cron.JobSpec;\ntype TaskFn = Modules.Cron.CronTaskFn;\ntype Tasks = Modules.Cron.CronTasks;\n\nlet lazyCroner: typeof import('croner') | undefined;\nconst getCroner = (): typeof import('croner') => {\n if (!lazyCroner) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n lazyCroner = require('croner');\n }\n return lazyCroner as typeof import('croner');\n};\n\nconst RECURRENCE_KEYS = [\n 'date',\n 'dayOfWeek',\n 'hour',\n 'minute',\n 'month',\n 'second',\n 'year',\n 'recurs',\n] as const;\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !(value instanceof Date);\n\nconst isRuleOptions = (value: unknown): value is CronRuleOptions =>\n isPlainObject(value) && 'rule' in value;\n\nconst isRecurrenceSpec = (value: unknown): value is RecurrenceSpecObjLit =>\n isPlainObject(value) && !('rule' in value) && RECURRENCE_KEYS.some((key) => key in value);\n\nconst toDate = (value: Date | number | string): Date =>\n value instanceof Date ? value : new Date(value);\n\nconst toSegmentPart = (value: unknown, offset = 0): string | null => {\n if (typeof value === 'number') {\n return String(value + offset);\n }\n return typeof value === 'string' ? value : null;\n};\n\nconst segmentToField = (segment: unknown, fallback = '*', offset = 0): string => {\n if (segment == null) {\n return fallback;\n }\n\n const part = toSegmentPart(segment, offset);\n if (part !== null) {\n return part;\n }\n\n if (Array.isArray(segment)) {\n return segment.map((item) => segmentToField(item, fallback, offset)).join(',');\n }\n\n if (isPlainObject(segment)) {\n const start = toSegmentPart(segment.start ?? segment.from, offset);\n const end = toSegmentPart(segment.end ?? segment.to, offset);\n if (start !== null && end !== null) {\n const range = `${start}-${end}`;\n const step = toSegmentPart(segment.step);\n return step === null ? range : `${range}/${step}`;\n }\n }\n\n return fallback;\n};\n\nconst recurrenceToCron = (spec: RecurrenceSpecObjLit): string => {\n const second = segmentToField(spec.second, '0');\n const minute = segmentToField(spec.minute);\n const hour = segmentToField(spec.hour);\n const date = segmentToField(spec.date);\n const month = segmentToField(spec.month, '*', 1);\n const dayOfWeek = segmentToField(spec.dayOfWeek);\n const fields = `${second} ${minute} ${hour} ${date} ${month} ${dayOfWeek}`;\n\n return spec.year == null ? fields : `${fields} ${segmentToField(spec.year)}`;\n};\n\ntype ScheduleWindow = {\n tz?: string;\n start?: Date | number | string;\n end?: Date | number | string;\n};\n\nconst toCronerOptions = ({ tz, start, end }: ScheduleWindow): Record<string, unknown> => {\n const cronerOptions: Record<string, unknown> = {};\n\n if (tz) {\n cronerOptions.timezone = tz;\n }\n if (start != null) {\n cronerOptions.startAt = toDate(start);\n }\n if (end != null) {\n cronerOptions.stopAt = toDate(end);\n }\n\n return cronerOptions;\n};\n\nconst ruleToPattern = (\n rule: CronRuleOptions['rule']\n): { pattern: string | Date; oneShot: boolean } => {\n if (typeof rule === 'number') {\n return { pattern: new Date(rule), oneShot: true };\n }\n if (rule instanceof Date) {\n return { pattern: rule, oneShot: true };\n }\n if (typeof rule === 'string') {\n return { pattern: rule, oneShot: false };\n }\n if (isRecurrenceSpec(rule)) {\n return { pattern: recurrenceToCron(rule), oneShot: false };\n }\n throw new Error('Unsupported cron rule');\n};\n\nconst toCronerArgs = (\n options: CronSchedule\n): { pattern: string | Date; cronerOptions: Record<string, unknown> } => {\n if (typeof options === 'number') {\n return { pattern: new Date(options), cronerOptions: { maxRuns: 1 } };\n }\n\n if (options instanceof Date) {\n return { pattern: options, cronerOptions: { maxRuns: 1 } };\n }\n\n if (typeof options === 'string') {\n return { pattern: options, cronerOptions: {} };\n }\n\n if (isRecurrenceSpec(options)) {\n return {\n pattern: recurrenceToCron(options),\n cronerOptions: toCronerOptions(options),\n };\n }\n\n if (isRuleOptions(options)) {\n const cronerOptions = toCronerOptions(options);\n const { pattern, oneShot } = ruleToPattern(options.rule);\n if (oneShot) {\n cronerOptions.maxRuns = 1;\n }\n\n return { pattern, cronerOptions };\n }\n\n throw new Error('Unsupported cron schedule');\n};\n\nconst createCronService = () => {\n let jobsSpecs: JobSpec[] = [];\n let running = false;\n\n const createRunner = (fn: TaskFn) => {\n let nextFireDate: Date | null = null;\n\n return {\n async run(self?: Cron): Promise<void> {\n const fireDate = nextFireDate ?? self?.currentRun() ?? new Date();\n nextFireDate = self?.nextRun(fireDate) ?? null;\n await fn({ strapi }, fireDate);\n },\n setNextRun(date: Date | null) {\n nextFireDate = date;\n },\n };\n };\n\n const createCronJob = (\n pattern: string | Date,\n cronerOptions: Record<string, unknown>,\n fn: TaskFn,\n jobLabel: string\n ) => {\n const { Cron: CronCtor } = getCroner();\n const runner = createRunner(fn);\n const job = new CronCtor(\n pattern,\n {\n paused: !running,\n // cron-parser (via node-schedule) accepted numeric-prefix stepping\n // like `5/15` as `5-59/15`. Croner 10 rejects it unless this is set.\n sloppyRanges: true,\n ...cronerOptions,\n catch(error: unknown) {\n strapi.log.error(`Cron job \"${jobLabel}\" failed`, error);\n },\n },\n runner.run\n );\n runner.setNextRun(job.nextRun());\n return job;\n };\n\n const attachHandle = (job: Cron, fn: TaskFn, jobLabel: string): CronJob => {\n let current = job;\n let handle: CronJob;\n\n const invoke = async () => {\n const fireDate = current.currentRun() ?? new Date();\n return fn({ strapi }, fireDate);\n };\n\n const cancel = () => {\n current.stop();\n return true;\n };\n\n const nextInvocation = () => current.nextRun();\n\n const reschedule = (spec: CronSchedule) => {\n try {\n const idx = jobsSpecs.findIndex((jobSpec) => jobSpec.job === handle);\n if (idx === -1) {\n return false;\n }\n\n const { pattern, cronerOptions } = toCronerArgs(spec);\n const next = createCronJob(pattern, cronerOptions, fn, jobLabel);\n\n current.stop();\n current = next;\n jobsSpecs[idx] = {\n ...jobsSpecs[idx],\n options: spec,\n };\n return true;\n } catch (error) {\n strapi.log.error(`Could not reschedule cron job \"${jobLabel}\"`, error);\n return false;\n }\n };\n\n handle = new Proxy(job as CronJob, {\n get(_target, property) {\n if (property === 'invoke') return invoke;\n if (property === 'cancel') return cancel;\n if (property === 'nextInvocation') return nextInvocation;\n if (property === 'reschedule') return reschedule;\n\n const value = Reflect.get(current, property, current);\n return typeof value === 'function' ? value.bind(current) : value;\n },\n });\n\n return handle;\n };\n\n return {\n add(tasks: Tasks = {}) {\n for (const taskExpression of Object.keys(tasks)) {\n const taskValue = tasks[taskExpression];\n\n let fn: TaskFn;\n let options: CronSchedule;\n let taskName: string | null;\n if (typeof taskValue === 'function') {\n taskName = null;\n fn = taskValue.bind(tasks);\n options = taskExpression;\n } else if (typeof taskValue.task === 'function') {\n taskName = taskExpression;\n fn = taskValue.task.bind(taskValue);\n options = taskValue.options;\n } else {\n throw new Error(\n `Could not schedule a cron job for \"${taskExpression}\": no function found.`\n );\n }\n\n const jobLabel = taskName ?? taskExpression;\n\n try {\n const { pattern, cronerOptions } = toCronerArgs(options);\n const job = createCronJob(pattern, cronerOptions, fn, jobLabel);\n\n jobsSpecs.push({\n job: attachHandle(job, fn, jobLabel),\n options,\n name: taskName,\n });\n } catch (error) {\n strapi.log.error(`Could not schedule cron job \"${jobLabel}\": invalid schedule`, error);\n }\n }\n return this;\n },\n\n remove(name: string) {\n if (!name) throw new Error('You must provide a name to remove a cron job.');\n const remaining: JobSpec[] = [];\n for (const jobSpec of jobsSpecs) {\n if (jobSpec.name === name) {\n jobSpec.job.stop();\n } else {\n remaining.push(jobSpec);\n }\n }\n jobsSpecs = remaining;\n return this;\n },\n\n start() {\n jobsSpecs.forEach(({ job }) => job.resume());\n running = true;\n return this;\n },\n\n stop() {\n jobsSpecs.forEach(({ job }) => job.pause());\n running = false;\n return this;\n },\n\n destroy() {\n this.stop();\n jobsSpecs.forEach(({ job }) => job.stop());\n jobsSpecs = [];\n return this;\n },\n\n get jobs() {\n return jobsSpecs;\n },\n };\n};\n\nexport default createCronService;\n"],"names":["lazyCroner","getCroner","require","RECURRENCE_KEYS","isPlainObject","value","Date","isRuleOptions","isRecurrenceSpec","some","key","toDate","toSegmentPart","offset","String","segmentToField","segment","fallback","part","Array","isArray","map","item","join","start","from","end","to","range","step","recurrenceToCron","spec","second","minute","hour","date","month","dayOfWeek","fields","year","toCronerOptions","tz","cronerOptions","timezone","startAt","stopAt","ruleToPattern","rule","pattern","oneShot","Error","toCronerArgs","options","maxRuns","createCronService","jobsSpecs","running","createRunner","fn","nextFireDate","run","self","fireDate","currentRun","nextRun","strapi","setNextRun","createCronJob","jobLabel","Cron","CronCtor","runner","job","paused","sloppyRanges","catch","error","log","attachHandle","current","handle","invoke","cancel","stop","nextInvocation","reschedule","idx","findIndex","jobSpec","next","Proxy","get","_target","property","Reflect","bind","add","tasks","taskExpression","Object","keys","taskValue","taskName","task","push","name","remove","remaining","forEach","resume","pause","destroy","jobs"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var _ = require('lodash');
4
4
  var transforms = require('./transforms.js');
5
5
 
6
- const applyTransforms = fp.curry((schema, data)=>{
6
+ const applyTransforms = _.curry((schema, data)=>{
7
7
  const attributeNames = Object.keys(data);
8
8
  for (const attributeName of attributeNames){
9
9
  const value = data[attributeName];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/services/document-service/attributes/index.ts"],"sourcesContent":["import { curry } from 'lodash/fp';\n\nimport type { UID, Modules, Schema } from '@strapi/types';\n\nimport transforms from './transforms';\n\n// aliasing the type to make it easier to read\ntype Data = Modules.Documents.Params.Data.Input<UID.Schema>;\n\nconst applyTransforms = curry((schema: Schema.Schema, data: Data) => {\n const attributeNames = Object.keys(data) as Array<keyof typeof data & string>;\n\n for (const attributeName of attributeNames) {\n const value = data[attributeName];\n\n const attribute = schema.attributes[attributeName];\n\n if (!attribute) {\n continue;\n }\n\n const transform = transforms[attribute.type];\n\n if (transform) {\n const attributeContext = { attributeName, attribute };\n\n data[attributeName] = transform(value, attributeContext);\n }\n }\n\n return data;\n});\n\nexport { applyTransforms };\n"],"names":["applyTransforms","curry","schema","data","attributeNames","Object","keys","attributeName","value","attribute","attributes","transform","transforms","type","attributeContext"],"mappings":";;;;;AASA,MAAMA,eAAAA,GAAkBC,QAAAA,CAAM,CAACC,MAAAA,EAAuBC,IAAAA,GAAAA;IACpD,MAAMC,cAAAA,GAAiBC,MAAAA,CAAOC,IAAI,CAACH,IAAAA,CAAAA;IAEnC,KAAK,MAAMI,iBAAiBH,cAAAA,CAAgB;QAC1C,MAAMI,KAAAA,GAAQL,IAAI,CAACI,aAAAA,CAAc;AAEjC,QAAA,MAAME,SAAAA,GAAYP,MAAAA,CAAOQ,UAAU,CAACH,aAAAA,CAAc;AAElD,QAAA,IAAI,CAACE,SAAAA,EAAW;AACd,YAAA;AACF,QAAA;AAEA,QAAA,MAAME,SAAAA,GAAYC,UAAU,CAACH,SAAAA,CAAUI,IAAI,CAAC;AAE5C,QAAA,IAAIF,SAAAA,EAAW;AACb,YAAA,MAAMG,gBAAAA,GAAmB;AAAEP,gBAAAA,aAAAA;AAAeE,gBAAAA;AAAU,aAAA;AAEpDN,YAAAA,IAAI,CAACI,aAAAA,CAAc,GAAGI,SAAAA,CAAUH,KAAAA,EAAOM,gBAAAA,CAAAA;AACzC,QAAA;AACF,IAAA;IAEA,OAAOX,IAAAA;AACT,CAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/services/document-service/attributes/index.ts"],"sourcesContent":["import { curry } from 'lodash';\n\nimport type { UID, Modules, Schema } from '@strapi/types';\n\nimport transforms from './transforms';\n\n// aliasing the type to make it easier to read\ntype Data = Modules.Documents.Params.Data.Input<UID.Schema>;\n\nconst applyTransforms = curry((schema: Schema.Schema, data: Data) => {\n const attributeNames = Object.keys(data) as Array<keyof typeof data & string>;\n\n for (const attributeName of attributeNames) {\n const value = data[attributeName];\n\n const attribute = schema.attributes[attributeName];\n\n if (!attribute) {\n continue;\n }\n\n const transform = transforms[attribute.type];\n\n if (transform) {\n const attributeContext = { attributeName, attribute };\n\n data[attributeName] = transform(value, attributeContext);\n }\n }\n\n return data;\n});\n\nexport { applyTransforms };\n"],"names":["applyTransforms","curry","schema","data","attributeNames","Object","keys","attributeName","value","attribute","attributes","transform","transforms","type","attributeContext"],"mappings":";;;;;AASA,MAAMA,eAAAA,GAAkBC,OAAAA,CAAM,CAACC,MAAAA,EAAuBC,IAAAA,GAAAA;IACpD,MAAMC,cAAAA,GAAiBC,MAAAA,CAAOC,IAAI,CAACH,IAAAA,CAAAA;IAEnC,KAAK,MAAMI,iBAAiBH,cAAAA,CAAgB;QAC1C,MAAMI,KAAAA,GAAQL,IAAI,CAACI,aAAAA,CAAc;AAEjC,QAAA,MAAME,SAAAA,GAAYP,MAAAA,CAAOQ,UAAU,CAACH,aAAAA,CAAc;AAElD,QAAA,IAAI,CAACE,SAAAA,EAAW;AACd,YAAA;AACF,QAAA;AAEA,QAAA,MAAME,SAAAA,GAAYC,UAAU,CAACH,SAAAA,CAAUI,IAAI,CAAC;AAE5C,QAAA,IAAIF,SAAAA,EAAW;AACb,YAAA,MAAMG,gBAAAA,GAAmB;AAAEP,gBAAAA,aAAAA;AAAeE,gBAAAA;AAAU,aAAA;AAEpDN,YAAAA,IAAI,CAACI,aAAAA,CAAc,GAAGI,SAAAA,CAAUH,KAAAA,EAAOM,gBAAAA,CAAAA;AACzC,QAAA;AACF,IAAA;IAEA,OAAOX,IAAAA;AACT,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import { curry } from 'lodash/fp';
1
+ import { curry } from 'lodash';
2
2
  import transforms from './transforms.mjs';
3
3
 
4
4
  const applyTransforms = curry((schema, data)=>{
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/services/document-service/attributes/index.ts"],"sourcesContent":["import { curry } from 'lodash/fp';\n\nimport type { UID, Modules, Schema } from '@strapi/types';\n\nimport transforms from './transforms';\n\n// aliasing the type to make it easier to read\ntype Data = Modules.Documents.Params.Data.Input<UID.Schema>;\n\nconst applyTransforms = curry((schema: Schema.Schema, data: Data) => {\n const attributeNames = Object.keys(data) as Array<keyof typeof data & string>;\n\n for (const attributeName of attributeNames) {\n const value = data[attributeName];\n\n const attribute = schema.attributes[attributeName];\n\n if (!attribute) {\n continue;\n }\n\n const transform = transforms[attribute.type];\n\n if (transform) {\n const attributeContext = { attributeName, attribute };\n\n data[attributeName] = transform(value, attributeContext);\n }\n }\n\n return data;\n});\n\nexport { applyTransforms };\n"],"names":["applyTransforms","curry","schema","data","attributeNames","Object","keys","attributeName","value","attribute","attributes","transform","transforms","type","attributeContext"],"mappings":";;;AASA,MAAMA,eAAAA,GAAkBC,KAAAA,CAAM,CAACC,MAAAA,EAAuBC,IAAAA,GAAAA;IACpD,MAAMC,cAAAA,GAAiBC,MAAAA,CAAOC,IAAI,CAACH,IAAAA,CAAAA;IAEnC,KAAK,MAAMI,iBAAiBH,cAAAA,CAAgB;QAC1C,MAAMI,KAAAA,GAAQL,IAAI,CAACI,aAAAA,CAAc;AAEjC,QAAA,MAAME,SAAAA,GAAYP,MAAAA,CAAOQ,UAAU,CAACH,aAAAA,CAAc;AAElD,QAAA,IAAI,CAACE,SAAAA,EAAW;AACd,YAAA;AACF,QAAA;AAEA,QAAA,MAAME,SAAAA,GAAYC,UAAU,CAACH,SAAAA,CAAUI,IAAI,CAAC;AAE5C,QAAA,IAAIF,SAAAA,EAAW;AACb,YAAA,MAAMG,gBAAAA,GAAmB;AAAEP,gBAAAA,aAAAA;AAAeE,gBAAAA;AAAU,aAAA;AAEpDN,YAAAA,IAAI,CAACI,aAAAA,CAAc,GAAGI,SAAAA,CAAUH,KAAAA,EAAOM,gBAAAA,CAAAA;AACzC,QAAA;AACF,IAAA;IAEA,OAAOX,IAAAA;AACT,CAAA;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/services/document-service/attributes/index.ts"],"sourcesContent":["import { curry } from 'lodash';\n\nimport type { UID, Modules, Schema } from '@strapi/types';\n\nimport transforms from './transforms';\n\n// aliasing the type to make it easier to read\ntype Data = Modules.Documents.Params.Data.Input<UID.Schema>;\n\nconst applyTransforms = curry((schema: Schema.Schema, data: Data) => {\n const attributeNames = Object.keys(data) as Array<keyof typeof data & string>;\n\n for (const attributeName of attributeNames) {\n const value = data[attributeName];\n\n const attribute = schema.attributes[attributeName];\n\n if (!attribute) {\n continue;\n }\n\n const transform = transforms[attribute.type];\n\n if (transform) {\n const attributeContext = { attributeName, attribute };\n\n data[attributeName] = transform(value, attributeContext);\n }\n }\n\n return data;\n});\n\nexport { applyTransforms };\n"],"names":["applyTransforms","curry","schema","data","attributeNames","Object","keys","attributeName","value","attribute","attributes","transform","transforms","type","attributeContext"],"mappings":";;;AASA,MAAMA,eAAAA,GAAkBC,KAAAA,CAAM,CAACC,MAAAA,EAAuBC,IAAAA,GAAAA;IACpD,MAAMC,cAAAA,GAAiBC,MAAAA,CAAOC,IAAI,CAACH,IAAAA,CAAAA;IAEnC,KAAK,MAAMI,iBAAiBH,cAAAA,CAAgB;QAC1C,MAAMI,KAAAA,GAAQL,IAAI,CAACI,aAAAA,CAAc;AAEjC,QAAA,MAAME,SAAAA,GAAYP,MAAAA,CAAOQ,UAAU,CAACH,aAAAA,CAAc;AAElD,QAAA,IAAI,CAACE,SAAAA,EAAW;AACd,YAAA;AACF,QAAA;AAEA,QAAA,MAAME,SAAAA,GAAYC,UAAU,CAACH,SAAAA,CAAUI,IAAI,CAAC;AAE5C,QAAA,IAAIF,SAAAA,EAAW;AACb,YAAA,MAAMG,gBAAAA,GAAmB;AAAEP,gBAAAA,aAAAA;AAAeE,gBAAAA;AAAU,aAAA;AAEpDN,YAAAA,IAAI,CAACI,aAAAA,CAAc,GAAGI,SAAAA,CAAUH,KAAAA,EAAOM,gBAAAA,CAAAA;AACzC,QAAA;AACF,IAAA;IAEA,OAAOX,IAAAA;AACT,CAAA;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var _ = require('lodash');
4
4
  var bcrypt = require('bcryptjs');
5
5
 
6
6
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -13,10 +13,10 @@ const transforms = {
13
13
  if (attribute.type !== 'password') {
14
14
  throw new Error('Invalid attribute type');
15
15
  }
16
- if (!fp.isString(value) && !(value instanceof Buffer)) {
16
+ if (!_.isString(value) && !(value instanceof Buffer)) {
17
17
  return value;
18
18
  }
19
- const rounds = fp.toNumber(fp.getOr(10, 'encryption.rounds', attribute));
19
+ const rounds = _.toNumber(_.get(attribute, 'encryption.rounds', 10));
20
20
  return bcrypt__default.default.hashSync(value.toString(), rounds);
21
21
  }
22
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"transforms.js","sources":["../../../../src/services/document-service/attributes/transforms.ts"],"sourcesContent":["import { getOr, toNumber, isString } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport bcrypt from 'bcryptjs';\n\ntype Transforms = {\n [TKind in Schema.Attribute.Kind]?: (\n value: unknown,\n context: {\n attribute: Schema.Attribute.AnyAttribute;\n attributeName: string;\n }\n ) => any;\n};\n\nconst transforms: Transforms = {\n password(value, context) {\n const { attribute } = context;\n\n if (attribute.type !== 'password') {\n throw new Error('Invalid attribute type');\n }\n\n if (!isString(value) && !(value instanceof Buffer)) {\n return value;\n }\n\n const rounds = toNumber(getOr(10, 'encryption.rounds', attribute));\n\n return bcrypt.hashSync(value.toString(), rounds);\n },\n};\n\nexport default transforms;\n"],"names":["transforms","password","value","context","attribute","type","Error","isString","Buffer","rounds","toNumber","getOr","bcrypt","hashSync","toString"],"mappings":";;;;;;;;;AAcA,MAAMA,UAAAA,GAAyB;IAC7BC,QAAAA,CAAAA,CAASC,KAAK,EAAEC,OAAO,EAAA;QACrB,MAAM,EAAEC,SAAS,EAAE,GAAGD,OAAAA;QAEtB,IAAIC,SAAAA,CAAUC,IAAI,KAAK,UAAA,EAAY;AACjC,YAAA,MAAM,IAAIC,KAAAA,CAAM,wBAAA,CAAA;AAClB,QAAA;AAEA,QAAA,IAAI,CAACC,WAAAA,CAASL,KAAAA,CAAAA,IAAU,EAAEA,KAAAA,YAAiBM,MAAK,CAAA,EAAI;YAClD,OAAON,KAAAA;AACT,QAAA;AAEA,QAAA,MAAMO,MAAAA,GAASC,WAAAA,CAASC,QAAAA,CAAM,EAAA,EAAI,mBAAA,EAAqBP,SAAAA,CAAAA,CAAAA;AAEvD,QAAA,OAAOQ,uBAAAA,CAAOC,QAAQ,CAACX,KAAAA,CAAMY,QAAQ,EAAA,EAAIL,MAAAA,CAAAA;AAC3C,IAAA;AACF;;;;"}
1
+ {"version":3,"file":"transforms.js","sources":["../../../../src/services/document-service/attributes/transforms.ts"],"sourcesContent":["import { get, isString, toNumber } from 'lodash';\nimport type { Schema } from '@strapi/types';\nimport bcrypt from 'bcryptjs';\n\ntype Transforms = {\n [TKind in Schema.Attribute.Kind]?: (\n value: unknown,\n context: {\n attribute: Schema.Attribute.AnyAttribute;\n attributeName: string;\n }\n ) => any;\n};\n\nconst transforms: Transforms = {\n password(value, context) {\n const { attribute } = context;\n\n if (attribute.type !== 'password') {\n throw new Error('Invalid attribute type');\n }\n\n if (!isString(value) && !(value instanceof Buffer)) {\n return value;\n }\n\n const rounds = toNumber(get(attribute, 'encryption.rounds', 10));\n\n return bcrypt.hashSync(value.toString(), rounds);\n },\n};\n\nexport default transforms;\n"],"names":["transforms","password","value","context","attribute","type","Error","isString","Buffer","rounds","toNumber","get","bcrypt","hashSync","toString"],"mappings":";;;;;;;;;AAcA,MAAMA,UAAAA,GAAyB;IAC7BC,QAAAA,CAAAA,CAASC,KAAK,EAAEC,OAAO,EAAA;QACrB,MAAM,EAAEC,SAAS,EAAE,GAAGD,OAAAA;QAEtB,IAAIC,SAAAA,CAAUC,IAAI,KAAK,UAAA,EAAY;AACjC,YAAA,MAAM,IAAIC,KAAAA,CAAM,wBAAA,CAAA;AAClB,QAAA;AAEA,QAAA,IAAI,CAACC,UAAAA,CAASL,KAAAA,CAAAA,IAAU,EAAEA,KAAAA,YAAiBM,MAAK,CAAA,EAAI;YAClD,OAAON,KAAAA;AACT,QAAA;AAEA,QAAA,MAAMO,MAAAA,GAASC,UAAAA,CAASC,KAAAA,CAAIP,SAAAA,EAAW,mBAAA,EAAqB,EAAA,CAAA,CAAA;AAE5D,QAAA,OAAOQ,uBAAAA,CAAOC,QAAQ,CAACX,KAAAA,CAAMY,QAAQ,EAAA,EAAIL,MAAAA,CAAAA;AAC3C,IAAA;AACF;;;;"}
@@ -1,4 +1,4 @@
1
- import { isString, toNumber, getOr } from 'lodash/fp';
1
+ import { isString, toNumber, get } from 'lodash';
2
2
  import bcrypt from 'bcryptjs';
3
3
 
4
4
  const transforms = {
@@ -10,7 +10,7 @@ const transforms = {
10
10
  if (!isString(value) && !(value instanceof Buffer)) {
11
11
  return value;
12
12
  }
13
- const rounds = toNumber(getOr(10, 'encryption.rounds', attribute));
13
+ const rounds = toNumber(get(attribute, 'encryption.rounds', 10));
14
14
  return bcrypt.hashSync(value.toString(), rounds);
15
15
  }
16
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"transforms.mjs","sources":["../../../../src/services/document-service/attributes/transforms.ts"],"sourcesContent":["import { getOr, toNumber, isString } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport bcrypt from 'bcryptjs';\n\ntype Transforms = {\n [TKind in Schema.Attribute.Kind]?: (\n value: unknown,\n context: {\n attribute: Schema.Attribute.AnyAttribute;\n attributeName: string;\n }\n ) => any;\n};\n\nconst transforms: Transforms = {\n password(value, context) {\n const { attribute } = context;\n\n if (attribute.type !== 'password') {\n throw new Error('Invalid attribute type');\n }\n\n if (!isString(value) && !(value instanceof Buffer)) {\n return value;\n }\n\n const rounds = toNumber(getOr(10, 'encryption.rounds', attribute));\n\n return bcrypt.hashSync(value.toString(), rounds);\n },\n};\n\nexport default transforms;\n"],"names":["transforms","password","value","context","attribute","type","Error","isString","Buffer","rounds","toNumber","getOr","bcrypt","hashSync","toString"],"mappings":";;;AAcA,MAAMA,UAAAA,GAAyB;IAC7BC,QAAAA,CAAAA,CAASC,KAAK,EAAEC,OAAO,EAAA;QACrB,MAAM,EAAEC,SAAS,EAAE,GAAGD,OAAAA;QAEtB,IAAIC,SAAAA,CAAUC,IAAI,KAAK,UAAA,EAAY;AACjC,YAAA,MAAM,IAAIC,KAAAA,CAAM,wBAAA,CAAA;AAClB,QAAA;AAEA,QAAA,IAAI,CAACC,QAAAA,CAASL,KAAAA,CAAAA,IAAU,EAAEA,KAAAA,YAAiBM,MAAK,CAAA,EAAI;YAClD,OAAON,KAAAA;AACT,QAAA;AAEA,QAAA,MAAMO,MAAAA,GAASC,QAAAA,CAASC,KAAAA,CAAM,EAAA,EAAI,mBAAA,EAAqBP,SAAAA,CAAAA,CAAAA;AAEvD,QAAA,OAAOQ,MAAAA,CAAOC,QAAQ,CAACX,KAAAA,CAAMY,QAAQ,EAAA,EAAIL,MAAAA,CAAAA;AAC3C,IAAA;AACF;;;;"}
1
+ {"version":3,"file":"transforms.mjs","sources":["../../../../src/services/document-service/attributes/transforms.ts"],"sourcesContent":["import { get, isString, toNumber } from 'lodash';\nimport type { Schema } from '@strapi/types';\nimport bcrypt from 'bcryptjs';\n\ntype Transforms = {\n [TKind in Schema.Attribute.Kind]?: (\n value: unknown,\n context: {\n attribute: Schema.Attribute.AnyAttribute;\n attributeName: string;\n }\n ) => any;\n};\n\nconst transforms: Transforms = {\n password(value, context) {\n const { attribute } = context;\n\n if (attribute.type !== 'password') {\n throw new Error('Invalid attribute type');\n }\n\n if (!isString(value) && !(value instanceof Buffer)) {\n return value;\n }\n\n const rounds = toNumber(get(attribute, 'encryption.rounds', 10));\n\n return bcrypt.hashSync(value.toString(), rounds);\n },\n};\n\nexport default transforms;\n"],"names":["transforms","password","value","context","attribute","type","Error","isString","Buffer","rounds","toNumber","get","bcrypt","hashSync","toString"],"mappings":";;;AAcA,MAAMA,UAAAA,GAAyB;IAC7BC,QAAAA,CAAAA,CAASC,KAAK,EAAEC,OAAO,EAAA;QACrB,MAAM,EAAEC,SAAS,EAAE,GAAGD,OAAAA;QAEtB,IAAIC,SAAAA,CAAUC,IAAI,KAAK,UAAA,EAAY;AACjC,YAAA,MAAM,IAAIC,KAAAA,CAAM,wBAAA,CAAA;AAClB,QAAA;AAEA,QAAA,IAAI,CAACC,QAAAA,CAASL,KAAAA,CAAAA,IAAU,EAAEA,KAAAA,YAAiBM,MAAK,CAAA,EAAI;YAClD,OAAON,KAAAA;AACT,QAAA;AAEA,QAAA,MAAMO,MAAAA,GAASC,QAAAA,CAASC,GAAAA,CAAIP,SAAAA,EAAW,mBAAA,EAAqB,EAAA,CAAA,CAAA;AAE5D,QAAA,OAAOQ,MAAAA,CAAOC,QAAQ,CAACX,KAAAA,CAAMY,QAAQ,EAAA,EAAIL,MAAAA,CAAAA;AAC3C,IAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/components.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/services/document-service/components.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var _ = require('lodash');
4
- var fp = require('lodash/fp');
5
4
  var strapiUtils = require('@strapi/utils');
6
5
  var transformContentTypesToModels = require('../../utils/transform-content-types-to-models.js');
7
6
 
@@ -9,10 +8,10 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
8
 
10
9
  var ___default = /*#__PURE__*/_interopDefault(_);
11
10
 
12
- const omitComponentData = fp.curry((schema, data)=>{
11
+ const omitComponentData = _.curry((schema, data)=>{
13
12
  const { attributes } = schema;
14
13
  const componentAttributes = Object.keys(attributes).filter((attributeName)=>strapiUtils.contentTypes.isComponentAttribute(attributes[attributeName]));
15
- return fp.omit(componentAttributes, data);
14
+ return _.omit(data, componentAttributes);
16
15
  });
17
16
  // NOTE: we could generalize the logic to allow CRUD of relation directly in the DB layer
18
17
  const createComponents = async (uid, data)=>{
@@ -21,7 +20,7 @@ const createComponents = async (uid, data)=>{
21
20
  const attributeNames = Object.keys(attributes);
22
21
  for (const attributeName of attributeNames){
23
22
  const attribute = attributes[attributeName];
24
- if (!fp.has(attributeName, data) || !strapiUtils.contentTypes.isComponentAttribute(attribute)) {
23
+ if (!_.has(data, attributeName) || !strapiUtils.contentTypes.isComponentAttribute(attribute)) {
25
24
  continue;
26
25
  }
27
26
  if (attribute.type === 'component') {
@@ -93,7 +92,7 @@ const getComponents = async (uid, entity)=>{
93
92
  const componentBody = {};
94
93
  for (const attributeName of Object.keys(attributes)){
95
94
  const attribute = attributes[attributeName];
96
- if (!fp.has(attributeName, data)) {
95
+ if (!_.has(data, attributeName)) {
97
96
  continue;
98
97
  }
99
98
  if (attribute.type === 'component') {
@@ -154,8 +153,8 @@ const pickStringifiedId = ({ id })=>{
154
153
  };
155
154
  const deleteOldComponents = async (uid, componentUID, entityToUpdate, attributeName, componentValue)=>{
156
155
  const previousValue = await strapi.db.query(uid).load(entityToUpdate, attributeName);
157
- const idsToKeep = ___default.default.castArray(componentValue).filter(fp.has('id')).map(pickStringifiedId);
158
- const allIds = ___default.default.castArray(previousValue).filter(fp.has('id')).map(pickStringifiedId);
156
+ const idsToKeep = ___default.default.castArray(componentValue).filter((value)=>_.has(value, 'id')).map(pickStringifiedId);
157
+ const allIds = ___default.default.castArray(previousValue).filter((value)=>_.has(value, 'id')).map(pickStringifiedId);
159
158
  idsToKeep.forEach((id)=>{
160
159
  if (!allIds.includes(id)) {
161
160
  throw new strapiUtils.errors.ApplicationError(`Some of the provided components in ${attributeName} are not related to the entity`);
@@ -172,11 +171,11 @@ const deleteOldComponents = async (uid, componentUID, entityToUpdate, attributeN
172
171
  };
173
172
  const deleteOldDZComponents = async (uid, entityToUpdate, attributeName, dynamiczoneValues)=>{
174
173
  const previousValue = await strapi.db.query(uid).load(entityToUpdate, attributeName);
175
- const idsToKeep = ___default.default.castArray(dynamiczoneValues).filter(fp.has('id')).map((v)=>({
174
+ const idsToKeep = ___default.default.castArray(dynamiczoneValues).filter((value)=>_.has(value, 'id')).map((v)=>({
176
175
  id: pickStringifiedId(v),
177
176
  __component: v.__component
178
177
  }));
179
- const allIds = ___default.default.castArray(previousValue).filter(fp.has('id')).map((v)=>({
178
+ const allIds = ___default.default.castArray(previousValue).filter((value)=>_.has(value, 'id')).map((v)=>({
180
179
  id: pickStringifiedId(v),
181
180
  __component: v.__component
182
181
  }));
@@ -238,10 +237,10 @@ const deleteComponents = async (uid, entityToDelete, { loadComponents = true } =
238
237
  const createComponent = async (uid, data)=>{
239
238
  const schema = strapi.getModel(uid);
240
239
  const componentData = await createComponents(uid, data);
241
- const transform = fp.pipe(// Make sure we don't save the component with a pre-defined ID
242
- fp.omit('id'), assignComponentData(schema, componentData));
240
+ // Make sure we don't save the component with a pre-defined ID.
241
+ const entryData = assignComponentData(schema, componentData, _.omit(data, 'id'));
243
242
  return strapi.db.query(uid).create({
244
- data: transform(data)
243
+ data: entryData
245
244
  });
246
245
  };
247
246
  // components can have nested compos so this must be recursive
@@ -277,8 +276,8 @@ const deleteComponent = async (uid, componentToDelete)=>{
277
276
  }
278
277
  });
279
278
  };
280
- const assignComponentData = fp.curry((schema, componentData, data)=>{
281
- return fp.pipe(omitComponentData(schema), fp.assign(componentData))(data);
279
+ const assignComponentData = _.curry((schema, componentData, data)=>{
280
+ return _.assign({}, componentData, omitComponentData(schema, data));
282
281
  });
283
282
  /** *************************
284
283
  Component relation handling for document operations