@strapi/core 5.56.0 → 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 (346) 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 +13 -13
  111. package/dist/package.json.mjs +13 -13
  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/core-store.js +3 -3
  167. package/dist/services/core-store.js.map +1 -1
  168. package/dist/services/core-store.mjs +1 -1
  169. package/dist/services/core-store.mjs.map +1 -1
  170. package/dist/services/cron.d.ts.map +1 -1
  171. package/dist/services/cron.js +2 -4
  172. package/dist/services/cron.js.map +1 -1
  173. package/dist/services/cron.mjs +2 -4
  174. package/dist/services/cron.mjs.map +1 -1
  175. package/dist/services/document-service/attributes/index.js +2 -2
  176. package/dist/services/document-service/attributes/index.js.map +1 -1
  177. package/dist/services/document-service/attributes/index.mjs +1 -1
  178. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  179. package/dist/services/document-service/attributes/transforms.js +3 -3
  180. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  181. package/dist/services/document-service/attributes/transforms.mjs +2 -2
  182. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  183. package/dist/services/document-service/components.d.ts.map +1 -1
  184. package/dist/services/document-service/components.js +13 -14
  185. package/dist/services/document-service/components.js.map +1 -1
  186. package/dist/services/document-service/components.mjs +12 -13
  187. package/dist/services/document-service/components.mjs.map +1 -1
  188. package/dist/services/document-service/draft-and-publish.js +65 -38
  189. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  190. package/dist/services/document-service/draft-and-publish.mjs +59 -32
  191. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  192. package/dist/services/document-service/entries.d.ts +2 -2
  193. package/dist/services/document-service/entries.d.ts.map +1 -1
  194. package/dist/services/document-service/entries.js +16 -8
  195. package/dist/services/document-service/entries.js.map +1 -1
  196. package/dist/services/document-service/entries.mjs +17 -9
  197. package/dist/services/document-service/entries.mjs.map +1 -1
  198. package/dist/services/document-service/first-published-at.js +7 -5
  199. package/dist/services/document-service/first-published-at.js.map +1 -1
  200. package/dist/services/document-service/first-published-at.mjs +7 -5
  201. package/dist/services/document-service/first-published-at.mjs.map +1 -1
  202. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  203. package/dist/services/document-service/internationalization.js +37 -28
  204. package/dist/services/document-service/internationalization.js.map +1 -1
  205. package/dist/services/document-service/internationalization.mjs +33 -24
  206. package/dist/services/document-service/internationalization.mjs.map +1 -1
  207. package/dist/services/document-service/params.d.ts +1 -0
  208. package/dist/services/document-service/params.d.ts.map +1 -1
  209. package/dist/services/document-service/params.js +6 -4
  210. package/dist/services/document-service/params.js.map +1 -1
  211. package/dist/services/document-service/params.mjs +6 -5
  212. package/dist/services/document-service/params.mjs.map +1 -1
  213. package/dist/services/document-service/repository.d.ts.map +1 -1
  214. package/dist/services/document-service/repository.js +84 -61
  215. package/dist/services/document-service/repository.js.map +1 -1
  216. package/dist/services/document-service/repository.mjs +47 -24
  217. package/dist/services/document-service/repository.mjs.map +1 -1
  218. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  219. package/dist/services/document-service/transform/id-map.js +2 -1
  220. package/dist/services/document-service/transform/id-map.js.map +1 -1
  221. package/dist/services/document-service/transform/id-map.mjs +2 -1
  222. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  223. package/dist/services/document-service/transform/id-transform.js +2 -2
  224. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  225. package/dist/services/document-service/transform/id-transform.mjs +1 -1
  226. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  227. package/dist/services/document-service/transform/query.d.ts +3 -1
  228. package/dist/services/document-service/transform/query.d.ts.map +1 -1
  229. package/dist/services/document-service/transform/query.js +12 -6
  230. package/dist/services/document-service/transform/query.js.map +1 -1
  231. package/dist/services/document-service/transform/query.mjs +11 -5
  232. package/dist/services/document-service/transform/query.mjs.map +1 -1
  233. package/dist/services/document-service/transform/relations/extract/data-ids.js +2 -2
  234. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  235. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +1 -1
  236. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  237. package/dist/services/document-service/transform/relations/transform/data-ids.js +2 -2
  238. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  239. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +1 -1
  240. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  241. package/dist/services/document-service/transform/relations/transform/default-locale.js +1 -1
  242. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  243. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +1 -1
  244. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  245. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  246. package/dist/services/document-service/transform/relations/utils/dp.js +1 -2
  247. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  248. package/dist/services/document-service/transform/relations/utils/dp.mjs +1 -2
  249. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  250. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +2 -2
  251. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  252. package/dist/services/document-service/transform/relations/utils/i18n.js +2 -2
  253. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  254. package/dist/services/document-service/transform/relations/utils/i18n.mjs +2 -2
  255. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  256. package/dist/services/document-service/transform/relations/utils/map-relation.js +6 -6
  257. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  258. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +3 -3
  259. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  260. package/dist/services/document-service/transform/relations/utils/xto-one.js +3 -3
  261. package/dist/services/document-service/transform/relations/utils/xto-one.js.map +1 -1
  262. package/dist/services/document-service/transform/relations/utils/xto-one.mjs +2 -2
  263. package/dist/services/document-service/transform/relations/utils/xto-one.mjs.map +1 -1
  264. package/dist/services/document-service/utils/bidirectional-relations.js +3 -3
  265. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -1
  266. package/dist/services/document-service/utils/bidirectional-relations.mjs +3 -3
  267. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -1
  268. package/dist/services/document-service/utils/clone-relations.js +3 -3
  269. package/dist/services/document-service/utils/clone-relations.js.map +1 -1
  270. package/dist/services/document-service/utils/clone-relations.mjs +3 -3
  271. package/dist/services/document-service/utils/clone-relations.mjs.map +1 -1
  272. package/dist/services/document-service/utils/self-referential-relations.js +4 -4
  273. package/dist/services/document-service/utils/self-referential-relations.js.map +1 -1
  274. package/dist/services/document-service/utils/self-referential-relations.mjs +4 -4
  275. package/dist/services/document-service/utils/self-referential-relations.mjs.map +1 -1
  276. package/dist/services/document-service/utils/unidirectional-relations.js +3 -3
  277. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -1
  278. package/dist/services/document-service/utils/unidirectional-relations.mjs +3 -3
  279. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -1
  280. package/dist/services/entity-validator/index.d.ts.map +1 -1
  281. package/dist/services/entity-validator/index.js +9 -10
  282. package/dist/services/entity-validator/index.js.map +1 -1
  283. package/dist/services/entity-validator/index.mjs +4 -5
  284. package/dist/services/entity-validator/index.mjs.map +1 -1
  285. package/dist/services/localization.d.ts +4 -0
  286. package/dist/services/localization.d.ts.map +1 -0
  287. package/dist/services/localization.js +51 -0
  288. package/dist/services/localization.js.map +1 -0
  289. package/dist/services/localization.mjs +49 -0
  290. package/dist/services/localization.mjs.map +1 -0
  291. package/dist/services/server/compose-endpoint.js +7 -7
  292. package/dist/services/server/compose-endpoint.js.map +1 -1
  293. package/dist/services/server/compose-endpoint.mjs +3 -3
  294. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  295. package/dist/services/server/koa-methods.js +2 -2
  296. package/dist/services/server/koa-methods.js.map +1 -1
  297. package/dist/services/server/koa-methods.mjs +1 -1
  298. package/dist/services/server/koa-methods.mjs.map +1 -1
  299. package/dist/services/server/koa.d.ts.map +1 -1
  300. package/dist/services/server/koa.js +1 -2
  301. package/dist/services/server/koa.js.map +1 -1
  302. package/dist/services/server/koa.mjs +1 -2
  303. package/dist/services/server/koa.mjs.map +1 -1
  304. package/dist/services/server/middleware.d.ts.map +1 -1
  305. package/dist/services/server/middleware.js +1 -2
  306. package/dist/services/server/middleware.js.map +1 -1
  307. package/dist/services/server/middleware.mjs +1 -2
  308. package/dist/services/server/middleware.mjs.map +1 -1
  309. package/dist/services/server/routing.js +2 -2
  310. package/dist/services/server/routing.js.map +1 -1
  311. package/dist/services/server/routing.mjs +2 -2
  312. package/dist/services/server/routing.mjs.map +1 -1
  313. package/dist/services/utils/conditional-fields.d.ts +1 -1
  314. package/dist/services/utils/conditional-fields.d.ts.map +1 -1
  315. package/dist/services/utils/conditional-fields.js +2 -8
  316. package/dist/services/utils/conditional-fields.js.map +1 -1
  317. package/dist/services/utils/conditional-fields.mjs +2 -8
  318. package/dist/services/utils/conditional-fields.mjs.map +1 -1
  319. package/dist/services/utils/dynamic-zones.d.ts.map +1 -1
  320. package/dist/services/utils/dynamic-zones.js +2 -8
  321. package/dist/services/utils/dynamic-zones.js.map +1 -1
  322. package/dist/services/utils/dynamic-zones.mjs +2 -8
  323. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  324. package/dist/utils/cron.js +2 -2
  325. package/dist/utils/cron.js.map +1 -1
  326. package/dist/utils/cron.mjs +1 -1
  327. package/dist/utils/cron.mjs.map +1 -1
  328. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  329. package/dist/utils/filepath-to-prop-path.js +5 -12
  330. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  331. package/dist/utils/filepath-to-prop-path.mjs +5 -11
  332. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  333. package/dist/utils/is-initialized.js +3 -3
  334. package/dist/utils/is-initialized.js.map +1 -1
  335. package/dist/utils/is-initialized.mjs +2 -2
  336. package/dist/utils/is-initialized.mjs.map +1 -1
  337. package/dist/utils/startup-logger.d.ts.map +1 -1
  338. package/dist/utils/startup-logger.js +2 -4
  339. package/dist/utils/startup-logger.js.map +1 -1
  340. package/dist/utils/startup-logger.mjs +2 -3
  341. package/dist/utils/startup-logger.mjs.map +1 -1
  342. package/dist/utils/transform-content-types-to-models.js +4 -4
  343. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  344. package/dist/utils/transform-content-types-to-models.mjs +3 -3
  345. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  346. package/package.json +13 -13
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.mjs","sources":["../../../src/services/server/middleware.ts"],"sourcesContent":["import path from 'path';\nimport { isArray } from 'lodash/fp';\nimport { importDefault } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nconst instantiateMiddleware = (\n middlewareFactory: Core.MiddlewareFactory,\n name: string,\n config: unknown,\n strapi: Core.Strapi\n) => {\n try {\n return middlewareFactory(config, { strapi });\n } catch (e) {\n if (e instanceof Error) {\n throw new Error(`Middleware \"${name}\": ${e.message}`);\n }\n }\n};\n\nconst resolveRouteMiddlewares = (route: Core.Route, strapi: Core.Strapi) => {\n const middlewaresConfig = route?.config?.middlewares ?? [];\n\n if (!isArray(middlewaresConfig)) {\n throw new Error('Route middlewares config must be an array');\n }\n\n const middlewares = resolveMiddlewares(middlewaresConfig, strapi);\n\n return middlewares.map(({ handler }) => handler);\n};\n\nconst dummyMiddleware: Core.MiddlewareHandler = (_, next) => next();\n\n/**\n * Initialize every configured middlewares\n */\nconst resolveMiddlewares = (\n config: Array<Core.MiddlewareName | Core.MiddlewareConfig | Core.MiddlewareHandler>,\n strapi: Core.Strapi\n) => {\n const middlewares: {\n name: string | null;\n handler: Core.MiddlewareHandler;\n }[] = [];\n\n for (const item of config) {\n if (typeof item === 'function') {\n middlewares.push({\n name: null,\n handler: item,\n });\n\n continue;\n }\n\n if (typeof item === 'string') {\n const middlewareFactory = strapi.middleware(item);\n\n if (!middlewareFactory) {\n throw new Error(`Middleware ${item} not found.`);\n }\n\n middlewares.push({\n name: item,\n handler: instantiateMiddleware(middlewareFactory, item, {}, strapi) ?? dummyMiddleware,\n });\n\n continue;\n }\n\n if (typeof item === 'object' && item !== null) {\n const { name, resolve, config = {} } = item;\n\n if (name) {\n const middlewareFactory = strapi.middleware(name);\n middlewares.push({\n name,\n handler:\n instantiateMiddleware(middlewareFactory, name, config, strapi) ?? dummyMiddleware,\n });\n\n continue;\n }\n\n if (resolve) {\n const resolvedMiddlewareFactory = resolveCustomMiddleware(resolve, strapi);\n middlewares.push({\n name: resolve,\n handler:\n instantiateMiddleware(resolvedMiddlewareFactory, resolve, config, strapi) ??\n dummyMiddleware,\n });\n\n continue;\n }\n\n throw new Error('Invalid middleware configuration. Missing name or resolve properties.');\n }\n\n throw new Error(\n 'Middleware config must either be a string or an object {name?: string, resolve?: string, config: any}.'\n );\n }\n\n return middlewares;\n};\n\n/**\n * Resolve middleware from package name or path\n */\nconst resolveCustomMiddleware = (resolve: string, strapi: Core.Strapi) => {\n let modulePath;\n\n try {\n modulePath = require.resolve(resolve);\n } catch (error) {\n if (error instanceof Error && 'code' in error && error.code === 'MODULE_NOT_FOUND') {\n modulePath = path.resolve(strapi.dirs.dist.root, resolve);\n } else {\n throw error;\n }\n }\n\n try {\n return importDefault(modulePath);\n } catch {\n throw new Error(`Could not load middleware \"${modulePath}\".`);\n }\n};\n\nexport { resolveRouteMiddlewares, resolveMiddlewares };\n"],"names":["instantiateMiddleware","middlewareFactory","name","config","strapi","e","Error","message","resolveRouteMiddlewares","route","middlewaresConfig","middlewares","isArray","resolveMiddlewares","map","handler","dummyMiddleware","_","next","item","push","middleware","resolve","resolvedMiddlewareFactory","resolveCustomMiddleware","modulePath","require","error","code","path","dirs","dist","root","importDefault"],"mappings":"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"}
1
+ {"version":3,"file":"middleware.mjs","sources":["../../../src/services/server/middleware.ts"],"sourcesContent":["import path from 'path';\nimport { importDefault } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nconst instantiateMiddleware = (\n middlewareFactory: Core.MiddlewareFactory,\n name: string,\n config: unknown,\n strapi: Core.Strapi\n) => {\n try {\n return middlewareFactory(config, { strapi });\n } catch (e) {\n if (e instanceof Error) {\n throw new Error(`Middleware \"${name}\": ${e.message}`);\n }\n }\n};\n\nconst resolveRouteMiddlewares = (route: Core.Route, strapi: Core.Strapi) => {\n const middlewaresConfig = route?.config?.middlewares ?? [];\n\n if (!Array.isArray(middlewaresConfig)) {\n throw new Error('Route middlewares config must be an array');\n }\n\n const middlewares = resolveMiddlewares(middlewaresConfig, strapi);\n\n return middlewares.map(({ handler }) => handler);\n};\n\nconst dummyMiddleware: Core.MiddlewareHandler = (_, next) => next();\n\n/**\n * Initialize every configured middlewares\n */\nconst resolveMiddlewares = (\n config: Array<Core.MiddlewareName | Core.MiddlewareConfig | Core.MiddlewareHandler>,\n strapi: Core.Strapi\n) => {\n const middlewares: {\n name: string | null;\n handler: Core.MiddlewareHandler;\n }[] = [];\n\n for (const item of config) {\n if (typeof item === 'function') {\n middlewares.push({\n name: null,\n handler: item,\n });\n\n continue;\n }\n\n if (typeof item === 'string') {\n const middlewareFactory = strapi.middleware(item);\n\n if (!middlewareFactory) {\n throw new Error(`Middleware ${item} not found.`);\n }\n\n middlewares.push({\n name: item,\n handler: instantiateMiddleware(middlewareFactory, item, {}, strapi) ?? dummyMiddleware,\n });\n\n continue;\n }\n\n if (typeof item === 'object' && item !== null) {\n const { name, resolve, config = {} } = item;\n\n if (name) {\n const middlewareFactory = strapi.middleware(name);\n middlewares.push({\n name,\n handler:\n instantiateMiddleware(middlewareFactory, name, config, strapi) ?? dummyMiddleware,\n });\n\n continue;\n }\n\n if (resolve) {\n const resolvedMiddlewareFactory = resolveCustomMiddleware(resolve, strapi);\n middlewares.push({\n name: resolve,\n handler:\n instantiateMiddleware(resolvedMiddlewareFactory, resolve, config, strapi) ??\n dummyMiddleware,\n });\n\n continue;\n }\n\n throw new Error('Invalid middleware configuration. Missing name or resolve properties.');\n }\n\n throw new Error(\n 'Middleware config must either be a string or an object {name?: string, resolve?: string, config: any}.'\n );\n }\n\n return middlewares;\n};\n\n/**\n * Resolve middleware from package name or path\n */\nconst resolveCustomMiddleware = (resolve: string, strapi: Core.Strapi) => {\n let modulePath;\n\n try {\n modulePath = require.resolve(resolve);\n } catch (error) {\n if (error instanceof Error && 'code' in error && error.code === 'MODULE_NOT_FOUND') {\n modulePath = path.resolve(strapi.dirs.dist.root, resolve);\n } else {\n throw error;\n }\n }\n\n try {\n return importDefault(modulePath);\n } catch {\n throw new Error(`Could not load middleware \"${modulePath}\".`);\n }\n};\n\nexport { resolveRouteMiddlewares, resolveMiddlewares };\n"],"names":["instantiateMiddleware","middlewareFactory","name","config","strapi","e","Error","message","resolveRouteMiddlewares","route","middlewaresConfig","middlewares","Array","isArray","resolveMiddlewares","map","handler","dummyMiddleware","_","next","item","push","middleware","resolve","resolvedMiddlewareFactory","resolveCustomMiddleware","modulePath","require","error","code","path","dirs","dist","root","importDefault"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var Router = require('@koa/router');
4
- var fp = require('lodash/fp');
4
+ var _ = require('lodash');
5
5
  var strapiUtils = require('@strapi/utils');
6
6
  var composeEndpoint = require('./compose-endpoint.js');
7
7
 
@@ -98,7 +98,7 @@ const createRouteManager = (strapi, opts = {})=>{
98
98
  prefix: routes.prefix
99
99
  });
100
100
  routes.routes.forEach((route)=>{
101
- const hasPrefix = fp.has('prefix', route.config);
101
+ const hasPrefix = _.has(route.config, 'prefix');
102
102
  createRoute(route, hasPrefix ? router : subRouter);
103
103
  });
104
104
  return router.use(subRouter.routes(), subRouter.allowedMethods());
@@ -1 +1 @@
1
- {"version":3,"file":"routing.js","sources":["../../../src/services/server/routing.ts"],"sourcesContent":["import Router from '@koa/router';\nimport { has } from 'lodash/fp';\nimport { yup } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nimport createEndpointComposer from './compose-endpoint';\n\nconst policyOrMiddlewareSchema = yup.lazy((value) => {\n if (typeof value === 'string') {\n return yup.string().required();\n }\n\n if (typeof value === 'function') {\n return yup.mixed().isFunction();\n }\n\n return yup.object({\n name: yup.string().required(),\n options: yup.object().notRequired(), // any options\n });\n});\n\nconst routeSchema = yup.object({\n method: yup.string().oneOf(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'ALL']).required(),\n path: yup.string().required(),\n handler: yup.lazy((value) => {\n if (typeof value === 'string') {\n return yup.string().required();\n }\n\n if (Array.isArray(value)) {\n return yup.array().required();\n }\n\n return yup.mixed().isFunction().required();\n }),\n request: yup\n .object({\n params: yup.object().notRequired(),\n query: yup.object().notRequired(),\n body: yup.object().notRequired(),\n })\n .notRequired(),\n response: yup.object().notRequired(),\n config: yup\n .object({\n auth: yup.lazy((value) => {\n if (value === false) {\n return yup.boolean().required();\n }\n\n return yup.object({\n scope: yup.array().of(yup.string()).required(),\n });\n }),\n policies: yup\n .array()\n // FIXME: fixed in yup v1\n .of(policyOrMiddlewareSchema as any)\n .notRequired(),\n middlewares: yup\n .array()\n // FIXME: fixed in yup v1\n .of(policyOrMiddlewareSchema as any)\n .notRequired(),\n })\n .notRequired(),\n});\n\nconst validateRouteConfig = (routeConfig: Core.RouteInput) => {\n try {\n return routeSchema.validateSync(routeConfig, {\n strict: true,\n abortEarly: false,\n stripUnknown: true,\n });\n } catch (error) {\n if (error instanceof yup.ValidationError) {\n throw new Error(`Invalid route config ${error.message}`);\n }\n }\n};\n\nconst createRouteManager = (strapi: Core.Strapi, opts: { type?: string } = {}) => {\n const { type } = opts;\n\n const composeEndpoint = createEndpointComposer(strapi);\n\n const createRoute = (route: Core.RouteInput, router: Router) => {\n validateRouteConfig(route);\n\n // NOTE: the router type is used to tag controller actions and for authentication / authorization so we need to pass this info down to the route level\n const routeWithInfo = Object.assign(route, {\n info: {\n ...route.info,\n type: type ?? 'api',\n },\n });\n\n composeEndpoint(routeWithInfo, { router });\n };\n\n const addRoutes = (routes: Core.Router | Core.RouteInput[], router: Router) => {\n if (Array.isArray(routes)) {\n routes.forEach((route) => createRoute(route, router));\n } else if (routes.routes) {\n const subRouter = new Router({ prefix: routes.prefix });\n\n routes.routes.forEach((route) => {\n const hasPrefix = has('prefix', route.config);\n createRoute(route, hasPrefix ? router : subRouter);\n });\n\n return router.use(subRouter.routes(), subRouter.allowedMethods());\n }\n };\n\n return {\n addRoutes,\n };\n};\n\nexport { validateRouteConfig, createRouteManager };\n"],"names":["policyOrMiddlewareSchema","yup","lazy","value","string","required","mixed","isFunction","object","name","options","notRequired","routeSchema","method","oneOf","path","handler","Array","isArray","array","request","params","query","body","response","config","auth","boolean","scope","of","policies","middlewares","validateRouteConfig","routeConfig","validateSync","strict","abortEarly","stripUnknown","error","ValidationError","Error","message","createRouteManager","strapi","opts","type","composeEndpoint","createEndpointComposer","createRoute","route","router","routeWithInfo","Object","assign","info","addRoutes","routes","forEach","subRouter","Router","prefix","hasPrefix","has","use","allowedMethods"],"mappings":"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"}
1
+ {"version":3,"file":"routing.js","sources":["../../../src/services/server/routing.ts"],"sourcesContent":["import Router from '@koa/router';\nimport { has } from 'lodash';\nimport { yup } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nimport createEndpointComposer from './compose-endpoint';\n\nconst policyOrMiddlewareSchema = yup.lazy((value) => {\n if (typeof value === 'string') {\n return yup.string().required();\n }\n\n if (typeof value === 'function') {\n return yup.mixed().isFunction();\n }\n\n return yup.object({\n name: yup.string().required(),\n options: yup.object().notRequired(), // any options\n });\n});\n\nconst routeSchema = yup.object({\n method: yup.string().oneOf(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'ALL']).required(),\n path: yup.string().required(),\n handler: yup.lazy((value) => {\n if (typeof value === 'string') {\n return yup.string().required();\n }\n\n if (Array.isArray(value)) {\n return yup.array().required();\n }\n\n return yup.mixed().isFunction().required();\n }),\n request: yup\n .object({\n params: yup.object().notRequired(),\n query: yup.object().notRequired(),\n body: yup.object().notRequired(),\n })\n .notRequired(),\n response: yup.object().notRequired(),\n config: yup\n .object({\n auth: yup.lazy((value) => {\n if (value === false) {\n return yup.boolean().required();\n }\n\n return yup.object({\n scope: yup.array().of(yup.string()).required(),\n });\n }),\n policies: yup\n .array()\n // FIXME: fixed in yup v1\n .of(policyOrMiddlewareSchema as any)\n .notRequired(),\n middlewares: yup\n .array()\n // FIXME: fixed in yup v1\n .of(policyOrMiddlewareSchema as any)\n .notRequired(),\n })\n .notRequired(),\n});\n\nconst validateRouteConfig = (routeConfig: Core.RouteInput) => {\n try {\n return routeSchema.validateSync(routeConfig, {\n strict: true,\n abortEarly: false,\n stripUnknown: true,\n });\n } catch (error) {\n if (error instanceof yup.ValidationError) {\n throw new Error(`Invalid route config ${error.message}`);\n }\n }\n};\n\nconst createRouteManager = (strapi: Core.Strapi, opts: { type?: string } = {}) => {\n const { type } = opts;\n\n const composeEndpoint = createEndpointComposer(strapi);\n\n const createRoute = (route: Core.RouteInput, router: Router) => {\n validateRouteConfig(route);\n\n // NOTE: the router type is used to tag controller actions and for authentication / authorization so we need to pass this info down to the route level\n const routeWithInfo = Object.assign(route, {\n info: {\n ...route.info,\n type: type ?? 'api',\n },\n });\n\n composeEndpoint(routeWithInfo, { router });\n };\n\n const addRoutes = (routes: Core.Router | Core.RouteInput[], router: Router) => {\n if (Array.isArray(routes)) {\n routes.forEach((route) => createRoute(route, router));\n } else if (routes.routes) {\n const subRouter = new Router({ prefix: routes.prefix });\n\n routes.routes.forEach((route) => {\n const hasPrefix = has(route.config, 'prefix');\n createRoute(route, hasPrefix ? router : subRouter);\n });\n\n return router.use(subRouter.routes(), subRouter.allowedMethods());\n }\n };\n\n return {\n addRoutes,\n };\n};\n\nexport { validateRouteConfig, createRouteManager };\n"],"names":["policyOrMiddlewareSchema","yup","lazy","value","string","required","mixed","isFunction","object","name","options","notRequired","routeSchema","method","oneOf","path","handler","Array","isArray","array","request","params","query","body","response","config","auth","boolean","scope","of","policies","middlewares","validateRouteConfig","routeConfig","validateSync","strict","abortEarly","stripUnknown","error","ValidationError","Error","message","createRouteManager","strapi","opts","type","composeEndpoint","createEndpointComposer","createRoute","route","router","routeWithInfo","Object","assign","info","addRoutes","routes","forEach","subRouter","Router","prefix","hasPrefix","has","use","allowedMethods"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import Router from '@koa/router';
2
- import { has } from 'lodash/fp';
2
+ import { has } from 'lodash';
3
3
  import { yup } from '@strapi/utils';
4
4
  import createEndpointComposer from './compose-endpoint.mjs';
5
5
 
@@ -92,7 +92,7 @@ const createRouteManager = (strapi, opts = {})=>{
92
92
  prefix: routes.prefix
93
93
  });
94
94
  routes.routes.forEach((route)=>{
95
- const hasPrefix = has('prefix', route.config);
95
+ const hasPrefix = has(route.config, 'prefix');
96
96
  createRoute(route, hasPrefix ? router : subRouter);
97
97
  });
98
98
  return router.use(subRouter.routes(), subRouter.allowedMethods());
@@ -1 +1 @@
1
- {"version":3,"file":"routing.mjs","sources":["../../../src/services/server/routing.ts"],"sourcesContent":["import Router from '@koa/router';\nimport { has } from 'lodash/fp';\nimport { yup } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nimport createEndpointComposer from './compose-endpoint';\n\nconst policyOrMiddlewareSchema = yup.lazy((value) => {\n if (typeof value === 'string') {\n return yup.string().required();\n }\n\n if (typeof value === 'function') {\n return yup.mixed().isFunction();\n }\n\n return yup.object({\n name: yup.string().required(),\n options: yup.object().notRequired(), // any options\n });\n});\n\nconst routeSchema = yup.object({\n method: yup.string().oneOf(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'ALL']).required(),\n path: yup.string().required(),\n handler: yup.lazy((value) => {\n if (typeof value === 'string') {\n return yup.string().required();\n }\n\n if (Array.isArray(value)) {\n return yup.array().required();\n }\n\n return yup.mixed().isFunction().required();\n }),\n request: yup\n .object({\n params: yup.object().notRequired(),\n query: yup.object().notRequired(),\n body: yup.object().notRequired(),\n })\n .notRequired(),\n response: yup.object().notRequired(),\n config: yup\n .object({\n auth: yup.lazy((value) => {\n if (value === false) {\n return yup.boolean().required();\n }\n\n return yup.object({\n scope: yup.array().of(yup.string()).required(),\n });\n }),\n policies: yup\n .array()\n // FIXME: fixed in yup v1\n .of(policyOrMiddlewareSchema as any)\n .notRequired(),\n middlewares: yup\n .array()\n // FIXME: fixed in yup v1\n .of(policyOrMiddlewareSchema as any)\n .notRequired(),\n })\n .notRequired(),\n});\n\nconst validateRouteConfig = (routeConfig: Core.RouteInput) => {\n try {\n return routeSchema.validateSync(routeConfig, {\n strict: true,\n abortEarly: false,\n stripUnknown: true,\n });\n } catch (error) {\n if (error instanceof yup.ValidationError) {\n throw new Error(`Invalid route config ${error.message}`);\n }\n }\n};\n\nconst createRouteManager = (strapi: Core.Strapi, opts: { type?: string } = {}) => {\n const { type } = opts;\n\n const composeEndpoint = createEndpointComposer(strapi);\n\n const createRoute = (route: Core.RouteInput, router: Router) => {\n validateRouteConfig(route);\n\n // NOTE: the router type is used to tag controller actions and for authentication / authorization so we need to pass this info down to the route level\n const routeWithInfo = Object.assign(route, {\n info: {\n ...route.info,\n type: type ?? 'api',\n },\n });\n\n composeEndpoint(routeWithInfo, { router });\n };\n\n const addRoutes = (routes: Core.Router | Core.RouteInput[], router: Router) => {\n if (Array.isArray(routes)) {\n routes.forEach((route) => createRoute(route, router));\n } else if (routes.routes) {\n const subRouter = new Router({ prefix: routes.prefix });\n\n routes.routes.forEach((route) => {\n const hasPrefix = has('prefix', route.config);\n createRoute(route, hasPrefix ? router : subRouter);\n });\n\n return router.use(subRouter.routes(), subRouter.allowedMethods());\n }\n };\n\n return {\n addRoutes,\n };\n};\n\nexport { validateRouteConfig, createRouteManager };\n"],"names":["policyOrMiddlewareSchema","yup","lazy","value","string","required","mixed","isFunction","object","name","options","notRequired","routeSchema","method","oneOf","path","handler","Array","isArray","array","request","params","query","body","response","config","auth","boolean","scope","of","policies","middlewares","validateRouteConfig","routeConfig","validateSync","strict","abortEarly","stripUnknown","error","ValidationError","Error","message","createRouteManager","strapi","opts","type","composeEndpoint","createEndpointComposer","createRoute","route","router","routeWithInfo","Object","assign","info","addRoutes","routes","forEach","subRouter","Router","prefix","hasPrefix","has","use","allowedMethods"],"mappings":"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"}
1
+ {"version":3,"file":"routing.mjs","sources":["../../../src/services/server/routing.ts"],"sourcesContent":["import Router from '@koa/router';\nimport { has } from 'lodash';\nimport { yup } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nimport createEndpointComposer from './compose-endpoint';\n\nconst policyOrMiddlewareSchema = yup.lazy((value) => {\n if (typeof value === 'string') {\n return yup.string().required();\n }\n\n if (typeof value === 'function') {\n return yup.mixed().isFunction();\n }\n\n return yup.object({\n name: yup.string().required(),\n options: yup.object().notRequired(), // any options\n });\n});\n\nconst routeSchema = yup.object({\n method: yup.string().oneOf(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'ALL']).required(),\n path: yup.string().required(),\n handler: yup.lazy((value) => {\n if (typeof value === 'string') {\n return yup.string().required();\n }\n\n if (Array.isArray(value)) {\n return yup.array().required();\n }\n\n return yup.mixed().isFunction().required();\n }),\n request: yup\n .object({\n params: yup.object().notRequired(),\n query: yup.object().notRequired(),\n body: yup.object().notRequired(),\n })\n .notRequired(),\n response: yup.object().notRequired(),\n config: yup\n .object({\n auth: yup.lazy((value) => {\n if (value === false) {\n return yup.boolean().required();\n }\n\n return yup.object({\n scope: yup.array().of(yup.string()).required(),\n });\n }),\n policies: yup\n .array()\n // FIXME: fixed in yup v1\n .of(policyOrMiddlewareSchema as any)\n .notRequired(),\n middlewares: yup\n .array()\n // FIXME: fixed in yup v1\n .of(policyOrMiddlewareSchema as any)\n .notRequired(),\n })\n .notRequired(),\n});\n\nconst validateRouteConfig = (routeConfig: Core.RouteInput) => {\n try {\n return routeSchema.validateSync(routeConfig, {\n strict: true,\n abortEarly: false,\n stripUnknown: true,\n });\n } catch (error) {\n if (error instanceof yup.ValidationError) {\n throw new Error(`Invalid route config ${error.message}`);\n }\n }\n};\n\nconst createRouteManager = (strapi: Core.Strapi, opts: { type?: string } = {}) => {\n const { type } = opts;\n\n const composeEndpoint = createEndpointComposer(strapi);\n\n const createRoute = (route: Core.RouteInput, router: Router) => {\n validateRouteConfig(route);\n\n // NOTE: the router type is used to tag controller actions and for authentication / authorization so we need to pass this info down to the route level\n const routeWithInfo = Object.assign(route, {\n info: {\n ...route.info,\n type: type ?? 'api',\n },\n });\n\n composeEndpoint(routeWithInfo, { router });\n };\n\n const addRoutes = (routes: Core.Router | Core.RouteInput[], router: Router) => {\n if (Array.isArray(routes)) {\n routes.forEach((route) => createRoute(route, router));\n } else if (routes.routes) {\n const subRouter = new Router({ prefix: routes.prefix });\n\n routes.routes.forEach((route) => {\n const hasPrefix = has(route.config, 'prefix');\n createRoute(route, hasPrefix ? router : subRouter);\n });\n\n return router.use(subRouter.routes(), subRouter.allowedMethods());\n }\n };\n\n return {\n addRoutes,\n };\n};\n\nexport { validateRouteConfig, createRouteManager };\n"],"names":["policyOrMiddlewareSchema","yup","lazy","value","string","required","mixed","isFunction","object","name","options","notRequired","routeSchema","method","oneOf","path","handler","Array","isArray","array","request","params","query","body","response","config","auth","boolean","scope","of","policies","middlewares","validateRouteConfig","routeConfig","validateSync","strict","abortEarly","stripUnknown","error","ValidationError","Error","message","createRouteManager","strapi","opts","type","composeEndpoint","createEndpointComposer","createRoute","route","router","routeWithInfo","Object","assign","info","addRoutes","routes","forEach","subRouter","Router","prefix","hasPrefix","has","use","allowedMethods"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- declare const getNumberOfConditionalFields: () => any;
1
+ declare const getNumberOfConditionalFields: () => number;
2
2
  export default getNumberOfConditionalFields;
3
3
  //# sourceMappingURL=conditional-fields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conditional-fields.d.ts","sourceRoot":"","sources":["../../../src/services/utils/conditional-fields.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,4BAA4B,WAuBjC,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"conditional-fields.d.ts","sourceRoot":"","sources":["../../../src/services/utils/conditional-fields.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,4BAA4B,cAmBjC,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
@@ -1,17 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
4
-
5
3
  const getNumberOfConditionalFields = ()=>{
6
4
  const contentTypes = strapi.contentTypes;
7
5
  const components = strapi.components;
8
6
  const countConditionalFieldsInSchema = (schema)=>{
9
- return fp.pipe(fp.map('attributes'), fp.flatMap(fp.values), fp.sumBy((attribute)=>{
10
- if (attribute.conditions && typeof attribute.conditions === 'object') {
11
- return 1;
12
- }
13
- return 0;
14
- }))(schema);
7
+ const attributes = Object.values(schema ?? {}).flatMap((model)=>Object.values(model.attributes ?? {}));
8
+ return attributes.filter((attribute)=>attribute.conditions && typeof attribute.conditions === 'object').length;
15
9
  };
16
10
  const contentTypeCount = countConditionalFieldsInSchema(contentTypes);
17
11
  const componentCount = countConditionalFieldsInSchema(components);
@@ -1 +1 @@
1
- {"version":3,"file":"conditional-fields.js","sources":["../../../src/services/utils/conditional-fields.ts"],"sourcesContent":["import { map, values, sumBy, pipe, flatMap } from 'lodash/fp';\nimport type { Schema, UID } from '@strapi/types';\n\nconst getNumberOfConditionalFields = () => {\n const contentTypes: Record<UID.ContentType, Schema.ContentType> = strapi.contentTypes;\n const components: Record<UID.Component, Schema.Component> = strapi.components;\n\n const countConditionalFieldsInSchema = (\n schema: Record<string, Schema.ContentType | Schema.Component>\n ) => {\n return pipe(\n map('attributes'),\n flatMap(values),\n sumBy((attribute: Schema.Attribute.AnyAttribute) => {\n if (attribute.conditions && typeof attribute.conditions === 'object') {\n return 1;\n }\n return 0;\n })\n )(schema);\n };\n\n const contentTypeCount = countConditionalFieldsInSchema(contentTypes);\n const componentCount = countConditionalFieldsInSchema(components);\n\n return contentTypeCount + componentCount;\n};\n\nexport default getNumberOfConditionalFields;\n"],"names":["getNumberOfConditionalFields","contentTypes","strapi","components","countConditionalFieldsInSchema","schema","pipe","map","flatMap","values","sumBy","attribute","conditions","contentTypeCount","componentCount"],"mappings":";;;;AAGA,MAAMA,4BAAAA,GAA+B,IAAA;IACnC,MAAMC,YAAAA,GAA4DC,OAAOD,YAAY;IACrF,MAAME,UAAAA,GAAsDD,OAAOC,UAAU;AAE7E,IAAA,MAAMC,iCAAiC,CACrCC,MAAAA,GAAAA;AAEA,QAAA,OAAOC,QACLC,MAAAA,CAAI,YAAA,CAAA,EACJC,UAAAA,CAAQC,SAAAA,CAAAA,EACRC,SAAM,CAACC,SAAAA,GAAAA;AACL,YAAA,IAAIA,UAAUC,UAAU,IAAI,OAAOD,SAAAA,CAAUC,UAAU,KAAK,QAAA,EAAU;gBACpE,OAAO,CAAA;AACT,YAAA;YACA,OAAO,CAAA;QACT,CAAA,CAAA,CAAA,CACAP,MAAAA,CAAAA;AACJ,IAAA,CAAA;AAEA,IAAA,MAAMQ,mBAAmBT,8BAAAA,CAA+BH,YAAAA,CAAAA;AACxD,IAAA,MAAMa,iBAAiBV,8BAAAA,CAA+BD,UAAAA,CAAAA;AAEtD,IAAA,OAAOU,gBAAAA,GAAmBC,cAAAA;AAC5B;;;;"}
1
+ {"version":3,"file":"conditional-fields.js","sources":["../../../src/services/utils/conditional-fields.ts"],"sourcesContent":["import type { Schema, UID } from '@strapi/types';\n\nconst getNumberOfConditionalFields = () => {\n const contentTypes: Record<UID.ContentType, Schema.ContentType> = strapi.contentTypes;\n const components: Record<UID.Component, Schema.Component> = strapi.components;\n\n const countConditionalFieldsInSchema = (\n schema: Record<string, Schema.ContentType | Schema.Component>\n ) => {\n const attributes = Object.values(schema ?? {}).flatMap((model) =>\n Object.values(model.attributes ?? {})\n );\n return attributes.filter(\n (attribute) => attribute.conditions && typeof attribute.conditions === 'object'\n ).length;\n };\n\n const contentTypeCount = countConditionalFieldsInSchema(contentTypes);\n const componentCount = countConditionalFieldsInSchema(components);\n\n return contentTypeCount + componentCount;\n};\n\nexport default getNumberOfConditionalFields;\n"],"names":["getNumberOfConditionalFields","contentTypes","strapi","components","countConditionalFieldsInSchema","schema","attributes","Object","values","flatMap","model","filter","attribute","conditions","length","contentTypeCount","componentCount"],"mappings":";;AAEA,MAAMA,4BAAAA,GAA+B,IAAA;IACnC,MAAMC,YAAAA,GAA4DC,OAAOD,YAAY;IACrF,MAAME,UAAAA,GAAsDD,OAAOC,UAAU;AAE7E,IAAA,MAAMC,iCAAiC,CACrCC,MAAAA,GAAAA;AAEA,QAAA,MAAMC,aAAaC,MAAAA,CAAOC,MAAM,CAACH,MAAAA,IAAU,EAAC,CAAA,CAAGI,OAAO,CAAC,CAACC,QACtDH,MAAAA,CAAOC,MAAM,CAACE,KAAAA,CAAMJ,UAAU,IAAI,EAAC,CAAA,CAAA;AAErC,QAAA,OAAOA,UAAAA,CAAWK,MAAM,CACtB,CAACC,SAAAA,GAAcA,SAAAA,CAAUC,UAAU,IAAI,OAAOD,SAAAA,CAAUC,UAAU,KAAK,UACvEC,MAAM;AACV,IAAA,CAAA;AAEA,IAAA,MAAMC,mBAAmBX,8BAAAA,CAA+BH,YAAAA,CAAAA;AACxD,IAAA,MAAMe,iBAAiBZ,8BAAAA,CAA+BD,UAAAA,CAAAA;AAEtD,IAAA,OAAOY,gBAAAA,GAAmBC,cAAAA;AAC5B;;;;"}
@@ -1,15 +1,9 @@
1
- import { pipe, map, flatMap, values, sumBy } from 'lodash/fp';
2
-
3
1
  const getNumberOfConditionalFields = ()=>{
4
2
  const contentTypes = strapi.contentTypes;
5
3
  const components = strapi.components;
6
4
  const countConditionalFieldsInSchema = (schema)=>{
7
- return pipe(map('attributes'), flatMap(values), sumBy((attribute)=>{
8
- if (attribute.conditions && typeof attribute.conditions === 'object') {
9
- return 1;
10
- }
11
- return 0;
12
- }))(schema);
5
+ const attributes = Object.values(schema ?? {}).flatMap((model)=>Object.values(model.attributes ?? {}));
6
+ return attributes.filter((attribute)=>attribute.conditions && typeof attribute.conditions === 'object').length;
13
7
  };
14
8
  const contentTypeCount = countConditionalFieldsInSchema(contentTypes);
15
9
  const componentCount = countConditionalFieldsInSchema(components);
@@ -1 +1 @@
1
- {"version":3,"file":"conditional-fields.mjs","sources":["../../../src/services/utils/conditional-fields.ts"],"sourcesContent":["import { map, values, sumBy, pipe, flatMap } from 'lodash/fp';\nimport type { Schema, UID } from '@strapi/types';\n\nconst getNumberOfConditionalFields = () => {\n const contentTypes: Record<UID.ContentType, Schema.ContentType> = strapi.contentTypes;\n const components: Record<UID.Component, Schema.Component> = strapi.components;\n\n const countConditionalFieldsInSchema = (\n schema: Record<string, Schema.ContentType | Schema.Component>\n ) => {\n return pipe(\n map('attributes'),\n flatMap(values),\n sumBy((attribute: Schema.Attribute.AnyAttribute) => {\n if (attribute.conditions && typeof attribute.conditions === 'object') {\n return 1;\n }\n return 0;\n })\n )(schema);\n };\n\n const contentTypeCount = countConditionalFieldsInSchema(contentTypes);\n const componentCount = countConditionalFieldsInSchema(components);\n\n return contentTypeCount + componentCount;\n};\n\nexport default getNumberOfConditionalFields;\n"],"names":["getNumberOfConditionalFields","contentTypes","strapi","components","countConditionalFieldsInSchema","schema","pipe","map","flatMap","values","sumBy","attribute","conditions","contentTypeCount","componentCount"],"mappings":";;AAGA,MAAMA,4BAAAA,GAA+B,IAAA;IACnC,MAAMC,YAAAA,GAA4DC,OAAOD,YAAY;IACrF,MAAME,UAAAA,GAAsDD,OAAOC,UAAU;AAE7E,IAAA,MAAMC,iCAAiC,CACrCC,MAAAA,GAAAA;AAEA,QAAA,OAAOC,KACLC,GAAAA,CAAI,YAAA,CAAA,EACJC,OAAAA,CAAQC,MAAAA,CAAAA,EACRC,MAAM,CAACC,SAAAA,GAAAA;AACL,YAAA,IAAIA,UAAUC,UAAU,IAAI,OAAOD,SAAAA,CAAUC,UAAU,KAAK,QAAA,EAAU;gBACpE,OAAO,CAAA;AACT,YAAA;YACA,OAAO,CAAA;QACT,CAAA,CAAA,CAAA,CACAP,MAAAA,CAAAA;AACJ,IAAA,CAAA;AAEA,IAAA,MAAMQ,mBAAmBT,8BAAAA,CAA+BH,YAAAA,CAAAA;AACxD,IAAA,MAAMa,iBAAiBV,8BAAAA,CAA+BD,UAAAA,CAAAA;AAEtD,IAAA,OAAOU,gBAAAA,GAAmBC,cAAAA;AAC5B;;;;"}
1
+ {"version":3,"file":"conditional-fields.mjs","sources":["../../../src/services/utils/conditional-fields.ts"],"sourcesContent":["import type { Schema, UID } from '@strapi/types';\n\nconst getNumberOfConditionalFields = () => {\n const contentTypes: Record<UID.ContentType, Schema.ContentType> = strapi.contentTypes;\n const components: Record<UID.Component, Schema.Component> = strapi.components;\n\n const countConditionalFieldsInSchema = (\n schema: Record<string, Schema.ContentType | Schema.Component>\n ) => {\n const attributes = Object.values(schema ?? {}).flatMap((model) =>\n Object.values(model.attributes ?? {})\n );\n return attributes.filter(\n (attribute) => attribute.conditions && typeof attribute.conditions === 'object'\n ).length;\n };\n\n const contentTypeCount = countConditionalFieldsInSchema(contentTypes);\n const componentCount = countConditionalFieldsInSchema(components);\n\n return contentTypeCount + componentCount;\n};\n\nexport default getNumberOfConditionalFields;\n"],"names":["getNumberOfConditionalFields","contentTypes","strapi","components","countConditionalFieldsInSchema","schema","attributes","Object","values","flatMap","model","filter","attribute","conditions","length","contentTypeCount","componentCount"],"mappings":"AAEA,MAAMA,4BAAAA,GAA+B,IAAA;IACnC,MAAMC,YAAAA,GAA4DC,OAAOD,YAAY;IACrF,MAAME,UAAAA,GAAsDD,OAAOC,UAAU;AAE7E,IAAA,MAAMC,iCAAiC,CACrCC,MAAAA,GAAAA;AAEA,QAAA,MAAMC,aAAaC,MAAAA,CAAOC,MAAM,CAACH,MAAAA,IAAU,EAAC,CAAA,CAAGI,OAAO,CAAC,CAACC,QACtDH,MAAAA,CAAOC,MAAM,CAACE,KAAAA,CAAMJ,UAAU,IAAI,EAAC,CAAA,CAAA;AAErC,QAAA,OAAOA,UAAAA,CAAWK,MAAM,CACtB,CAACC,SAAAA,GAAcA,SAAAA,CAAUC,UAAU,IAAI,OAAOD,SAAAA,CAAUC,UAAU,KAAK,UACvEC,MAAM;AACV,IAAA,CAAA;AAEA,IAAA,MAAMC,mBAAmBX,8BAAAA,CAA+BH,YAAAA,CAAAA;AACxD,IAAA,MAAMe,iBAAiBZ,8BAAAA,CAA+BD,UAAAA,CAAAA;AAEtD,IAAA,OAAOY,gBAAAA,GAAmBC,cAAAA;AAC5B;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-zones.d.ts","sourceRoot":"","sources":["../../../src/services/utils/dynamic-zones.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,uBAAuB,cAa5B,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"dynamic-zones.d.ts","sourceRoot":"","sources":["../../../src/services/utils/dynamic-zones.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,uBAAuB,cAO5B,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -1,15 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
4
-
5
3
  const getNumberOfDynamicZones = ()=>{
6
4
  const contentTypes = strapi.contentTypes;
7
- return fp.pipe(fp.map('attributes'), fp.flatMap(fp.values), fp.sumBy((item)=>{
8
- if (item.type === 'dynamiczone') {
9
- return 1;
10
- }
11
- return 0;
12
- }))(contentTypes);
5
+ const attributes = Object.values(contentTypes ?? {}).flatMap((contentType)=>Object.values(contentType.attributes ?? {}));
6
+ return attributes.filter((attribute)=>attribute.type === 'dynamiczone').length;
13
7
  };
14
8
 
15
9
  module.exports = getNumberOfDynamicZones;
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-zones.js","sources":["../../../src/services/utils/dynamic-zones.ts"],"sourcesContent":["import { map, values, sumBy, pipe, flatMap } from 'lodash/fp';\nimport type { Schema, UID } from '@strapi/types';\n\nconst getNumberOfDynamicZones = () => {\n const contentTypes: Record<UID.ContentType, Schema.ContentType> = strapi.contentTypes;\n\n return pipe(\n map('attributes'),\n flatMap(values),\n sumBy((item) => {\n if (item.type === 'dynamiczone') {\n return 1;\n }\n return 0;\n })\n )(contentTypes);\n};\n\nexport default getNumberOfDynamicZones;\n"],"names":["getNumberOfDynamicZones","contentTypes","strapi","pipe","map","flatMap","values","sumBy","item","type"],"mappings":";;;;AAGA,MAAMA,uBAAAA,GAA0B,IAAA;IAC9B,MAAMC,YAAAA,GAA4DC,OAAOD,YAAY;AAErF,IAAA,OAAOE,QACLC,MAAAA,CAAI,YAAA,CAAA,EACJC,UAAAA,CAAQC,SAAAA,CAAAA,EACRC,SAAM,CAACC,IAAAA,GAAAA;QACL,IAAIA,IAAAA,CAAKC,IAAI,KAAK,aAAA,EAAe;YAC/B,OAAO,CAAA;AACT,QAAA;QACA,OAAO,CAAA;IACT,CAAA,CAAA,CAAA,CACAR,YAAAA,CAAAA;AACJ;;;;"}
1
+ {"version":3,"file":"dynamic-zones.js","sources":["../../../src/services/utils/dynamic-zones.ts"],"sourcesContent":["import type { Schema, UID } from '@strapi/types';\n\nconst getNumberOfDynamicZones = () => {\n const contentTypes: Record<UID.ContentType, Schema.ContentType> = strapi.contentTypes;\n\n const attributes = Object.values(contentTypes ?? {}).flatMap((contentType) =>\n Object.values(contentType.attributes ?? {})\n );\n return attributes.filter((attribute) => attribute.type === 'dynamiczone').length;\n};\n\nexport default getNumberOfDynamicZones;\n"],"names":["getNumberOfDynamicZones","contentTypes","strapi","attributes","Object","values","flatMap","contentType","filter","attribute","type","length"],"mappings":";;AAEA,MAAMA,uBAAAA,GAA0B,IAAA;IAC9B,MAAMC,YAAAA,GAA4DC,OAAOD,YAAY;AAErF,IAAA,MAAME,aAAaC,MAAAA,CAAOC,MAAM,CAACJ,YAAAA,IAAgB,EAAC,CAAA,CAAGK,OAAO,CAAC,CAACC,cAC5DH,MAAAA,CAAOC,MAAM,CAACE,WAAAA,CAAYJ,UAAU,IAAI,EAAC,CAAA,CAAA;IAE3C,OAAOA,UAAAA,CAAWK,MAAM,CAAC,CAACC,YAAcA,SAAAA,CAAUC,IAAI,KAAK,aAAA,CAAA,CAAeC,MAAM;AAClF;;;;"}
@@ -1,13 +1,7 @@
1
- import { pipe, map, flatMap, values, sumBy } from 'lodash/fp';
2
-
3
1
  const getNumberOfDynamicZones = ()=>{
4
2
  const contentTypes = strapi.contentTypes;
5
- return pipe(map('attributes'), flatMap(values), sumBy((item)=>{
6
- if (item.type === 'dynamiczone') {
7
- return 1;
8
- }
9
- return 0;
10
- }))(contentTypes);
3
+ const attributes = Object.values(contentTypes ?? {}).flatMap((contentType)=>Object.values(contentType.attributes ?? {}));
4
+ return attributes.filter((attribute)=>attribute.type === 'dynamiczone').length;
11
5
  };
12
6
 
13
7
  export { getNumberOfDynamicZones as default };
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-zones.mjs","sources":["../../../src/services/utils/dynamic-zones.ts"],"sourcesContent":["import { map, values, sumBy, pipe, flatMap } from 'lodash/fp';\nimport type { Schema, UID } from '@strapi/types';\n\nconst getNumberOfDynamicZones = () => {\n const contentTypes: Record<UID.ContentType, Schema.ContentType> = strapi.contentTypes;\n\n return pipe(\n map('attributes'),\n flatMap(values),\n sumBy((item) => {\n if (item.type === 'dynamiczone') {\n return 1;\n }\n return 0;\n })\n )(contentTypes);\n};\n\nexport default getNumberOfDynamicZones;\n"],"names":["getNumberOfDynamicZones","contentTypes","strapi","pipe","map","flatMap","values","sumBy","item","type"],"mappings":";;AAGA,MAAMA,uBAAAA,GAA0B,IAAA;IAC9B,MAAMC,YAAAA,GAA4DC,OAAOD,YAAY;AAErF,IAAA,OAAOE,KACLC,GAAAA,CAAI,YAAA,CAAA,EACJC,OAAAA,CAAQC,MAAAA,CAAAA,EACRC,MAAM,CAACC,IAAAA,GAAAA;QACL,IAAIA,IAAAA,CAAKC,IAAI,KAAK,aAAA,EAAe;YAC/B,OAAO,CAAA;AACT,QAAA;QACA,OAAO,CAAA;IACT,CAAA,CAAA,CAAA,CACAR,YAAAA,CAAAA;AACJ;;;;"}
1
+ {"version":3,"file":"dynamic-zones.mjs","sources":["../../../src/services/utils/dynamic-zones.ts"],"sourcesContent":["import type { Schema, UID } from '@strapi/types';\n\nconst getNumberOfDynamicZones = () => {\n const contentTypes: Record<UID.ContentType, Schema.ContentType> = strapi.contentTypes;\n\n const attributes = Object.values(contentTypes ?? {}).flatMap((contentType) =>\n Object.values(contentType.attributes ?? {})\n );\n return attributes.filter((attribute) => attribute.type === 'dynamiczone').length;\n};\n\nexport default getNumberOfDynamicZones;\n"],"names":["getNumberOfDynamicZones","contentTypes","strapi","attributes","Object","values","flatMap","contentType","filter","attribute","type","length"],"mappings":"AAEA,MAAMA,uBAAAA,GAA0B,IAAA;IAC9B,MAAMC,YAAAA,GAA4DC,OAAOD,YAAY;AAErF,IAAA,MAAME,aAAaC,MAAAA,CAAOC,MAAM,CAACJ,YAAAA,IAAgB,EAAC,CAAA,CAAGK,OAAO,CAAC,CAACC,cAC5DH,MAAAA,CAAOC,MAAM,CAACE,WAAAA,CAAYJ,UAAU,IAAI,EAAC,CAAA,CAAA;IAE3C,OAAOA,UAAAA,CAAWK,MAAM,CAAC,CAACC,YAAcA,SAAAA,CAAUC,IAAI,KAAK,aAAA,CAAA,CAAeC,MAAM;AAClF;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var _ = require('lodash');
4
4
 
5
5
  const INTEGER_REGEX = /^\d+$/;
6
6
  const STEP_REGEX = /^\*\/\d+$/;
@@ -63,7 +63,7 @@ const shift = (component, index, date)=>{
63
63
  * @param {Date} date The date that's gonna be used as the start of the "interval", it defaults to now.
64
64
  * @returns The shifted cron expression.
65
65
  */ const shiftCronExpression = (rule, date = new Date())=>{
66
- const components = rule.trim().split(' ').filter(fp.negate(fp.isEmpty));
66
+ const components = rule.trim().split(' ').filter(_.negate(_.isEmpty));
67
67
  const secondsIncluded = components.length === 6;
68
68
  return components.map((component, index)=>shift(component, secondsIncluded ? index : index + 1, date)).join(' ');
69
69
  };
@@ -1 +1 @@
1
- {"version":3,"file":"cron.js","sources":["../../src/utils/cron.ts"],"sourcesContent":["import { isEmpty, negate } from 'lodash/fp';\n\nconst DATE_FUNCTIONS = [\n 'getSeconds',\n 'getMinutes',\n 'getHours',\n 'getDate',\n 'getMonth',\n 'getDay',\n] as const;\n\nconst INTEGER_REGEX = /^\\d+$/;\nconst STEP_REGEX = /^\\*\\/\\d+$/;\nconst COMPONENTS: {\n limit: number;\n zeroBasedIndices: boolean;\n functionName: (typeof DATE_FUNCTIONS)[number];\n}[] = [\n { limit: 60, zeroBasedIndices: true, functionName: 'getSeconds' },\n { limit: 60, zeroBasedIndices: true, functionName: 'getMinutes' },\n { limit: 24, zeroBasedIndices: true, functionName: 'getHours' },\n { limit: 31, zeroBasedIndices: false, functionName: 'getDate' },\n { limit: 12, zeroBasedIndices: false, functionName: 'getMonth' },\n { limit: 7, zeroBasedIndices: true, functionName: 'getDay' },\n];\n\nconst shift = (component: string, index: number, date: Date) => {\n if (component === '*') {\n return '*';\n }\n\n const { limit, zeroBasedIndices, functionName } = COMPONENTS[index];\n const offset = +!zeroBasedIndices;\n const currentValue = date[functionName]();\n\n if (INTEGER_REGEX.test(component)) {\n return ((Number.parseInt(component, 10) + currentValue) % limit) + offset;\n }\n\n if (STEP_REGEX.test(component)) {\n const [, step] = component.split('/');\n const frequency = Math.floor(limit / Number(step));\n const list = Array.from({ length: frequency }, (_, index) => index * Number(step));\n return list.map((value) => ((value + currentValue) % limit) + offset).sort((a, b) => a - b);\n }\n\n // Unsupported syntax\n return component;\n};\n\n/**\n * Simulate an interval by shifting a cron expression using the specified date.\n * @param {string} rule A cron expression you want to shift.\n * @param {Date} date The date that's gonna be used as the start of the \"interval\", it defaults to now.\n * @returns The shifted cron expression.\n */\nexport const shiftCronExpression = (rule: string, date = new Date()) => {\n const components = rule.trim().split(' ').filter(negate(isEmpty));\n const secondsIncluded = components.length === 6;\n return components\n .map((component, index) => shift(component, secondsIncluded ? index : index + 1, date))\n .join(' ');\n};\n"],"names":["INTEGER_REGEX","STEP_REGEX","COMPONENTS","limit","zeroBasedIndices","functionName","shift","component","index","date","offset","currentValue","test","Number","parseInt","step","split","frequency","Math","floor","list","Array","from","length","_","map","value","sort","a","b","shiftCronExpression","rule","Date","components","trim","filter","negate","isEmpty","secondsIncluded","join"],"mappings":"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"}
1
+ {"version":3,"file":"cron.js","sources":["../../src/utils/cron.ts"],"sourcesContent":["import { isEmpty, negate } from 'lodash';\n\nconst DATE_FUNCTIONS = [\n 'getSeconds',\n 'getMinutes',\n 'getHours',\n 'getDate',\n 'getMonth',\n 'getDay',\n] as const;\n\nconst INTEGER_REGEX = /^\\d+$/;\nconst STEP_REGEX = /^\\*\\/\\d+$/;\nconst COMPONENTS: {\n limit: number;\n zeroBasedIndices: boolean;\n functionName: (typeof DATE_FUNCTIONS)[number];\n}[] = [\n { limit: 60, zeroBasedIndices: true, functionName: 'getSeconds' },\n { limit: 60, zeroBasedIndices: true, functionName: 'getMinutes' },\n { limit: 24, zeroBasedIndices: true, functionName: 'getHours' },\n { limit: 31, zeroBasedIndices: false, functionName: 'getDate' },\n { limit: 12, zeroBasedIndices: false, functionName: 'getMonth' },\n { limit: 7, zeroBasedIndices: true, functionName: 'getDay' },\n];\n\nconst shift = (component: string, index: number, date: Date) => {\n if (component === '*') {\n return '*';\n }\n\n const { limit, zeroBasedIndices, functionName } = COMPONENTS[index];\n const offset = +!zeroBasedIndices;\n const currentValue = date[functionName]();\n\n if (INTEGER_REGEX.test(component)) {\n return ((Number.parseInt(component, 10) + currentValue) % limit) + offset;\n }\n\n if (STEP_REGEX.test(component)) {\n const [, step] = component.split('/');\n const frequency = Math.floor(limit / Number(step));\n const list = Array.from({ length: frequency }, (_, index) => index * Number(step));\n return list.map((value) => ((value + currentValue) % limit) + offset).sort((a, b) => a - b);\n }\n\n // Unsupported syntax\n return component;\n};\n\n/**\n * Simulate an interval by shifting a cron expression using the specified date.\n * @param {string} rule A cron expression you want to shift.\n * @param {Date} date The date that's gonna be used as the start of the \"interval\", it defaults to now.\n * @returns The shifted cron expression.\n */\nexport const shiftCronExpression = (rule: string, date = new Date()) => {\n const components = rule.trim().split(' ').filter(negate(isEmpty));\n const secondsIncluded = components.length === 6;\n return components\n .map((component, index) => shift(component, secondsIncluded ? index : index + 1, date))\n .join(' ');\n};\n"],"names":["INTEGER_REGEX","STEP_REGEX","COMPONENTS","limit","zeroBasedIndices","functionName","shift","component","index","date","offset","currentValue","test","Number","parseInt","step","split","frequency","Math","floor","list","Array","from","length","_","map","value","sort","a","b","shiftCronExpression","rule","Date","components","trim","filter","negate","isEmpty","secondsIncluded","join"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { negate, isEmpty } from 'lodash/fp';
1
+ import { negate, isEmpty } from 'lodash';
2
2
 
3
3
  const INTEGER_REGEX = /^\d+$/;
4
4
  const STEP_REGEX = /^\*\/\d+$/;
@@ -1 +1 @@
1
- {"version":3,"file":"cron.mjs","sources":["../../src/utils/cron.ts"],"sourcesContent":["import { isEmpty, negate } from 'lodash/fp';\n\nconst DATE_FUNCTIONS = [\n 'getSeconds',\n 'getMinutes',\n 'getHours',\n 'getDate',\n 'getMonth',\n 'getDay',\n] as const;\n\nconst INTEGER_REGEX = /^\\d+$/;\nconst STEP_REGEX = /^\\*\\/\\d+$/;\nconst COMPONENTS: {\n limit: number;\n zeroBasedIndices: boolean;\n functionName: (typeof DATE_FUNCTIONS)[number];\n}[] = [\n { limit: 60, zeroBasedIndices: true, functionName: 'getSeconds' },\n { limit: 60, zeroBasedIndices: true, functionName: 'getMinutes' },\n { limit: 24, zeroBasedIndices: true, functionName: 'getHours' },\n { limit: 31, zeroBasedIndices: false, functionName: 'getDate' },\n { limit: 12, zeroBasedIndices: false, functionName: 'getMonth' },\n { limit: 7, zeroBasedIndices: true, functionName: 'getDay' },\n];\n\nconst shift = (component: string, index: number, date: Date) => {\n if (component === '*') {\n return '*';\n }\n\n const { limit, zeroBasedIndices, functionName } = COMPONENTS[index];\n const offset = +!zeroBasedIndices;\n const currentValue = date[functionName]();\n\n if (INTEGER_REGEX.test(component)) {\n return ((Number.parseInt(component, 10) + currentValue) % limit) + offset;\n }\n\n if (STEP_REGEX.test(component)) {\n const [, step] = component.split('/');\n const frequency = Math.floor(limit / Number(step));\n const list = Array.from({ length: frequency }, (_, index) => index * Number(step));\n return list.map((value) => ((value + currentValue) % limit) + offset).sort((a, b) => a - b);\n }\n\n // Unsupported syntax\n return component;\n};\n\n/**\n * Simulate an interval by shifting a cron expression using the specified date.\n * @param {string} rule A cron expression you want to shift.\n * @param {Date} date The date that's gonna be used as the start of the \"interval\", it defaults to now.\n * @returns The shifted cron expression.\n */\nexport const shiftCronExpression = (rule: string, date = new Date()) => {\n const components = rule.trim().split(' ').filter(negate(isEmpty));\n const secondsIncluded = components.length === 6;\n return components\n .map((component, index) => shift(component, secondsIncluded ? index : index + 1, date))\n .join(' ');\n};\n"],"names":["INTEGER_REGEX","STEP_REGEX","COMPONENTS","limit","zeroBasedIndices","functionName","shift","component","index","date","offset","currentValue","test","Number","parseInt","step","split","frequency","Math","floor","list","Array","from","length","_","map","value","sort","a","b","shiftCronExpression","rule","Date","components","trim","filter","negate","isEmpty","secondsIncluded","join"],"mappings":"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"}
1
+ {"version":3,"file":"cron.mjs","sources":["../../src/utils/cron.ts"],"sourcesContent":["import { isEmpty, negate } from 'lodash';\n\nconst DATE_FUNCTIONS = [\n 'getSeconds',\n 'getMinutes',\n 'getHours',\n 'getDate',\n 'getMonth',\n 'getDay',\n] as const;\n\nconst INTEGER_REGEX = /^\\d+$/;\nconst STEP_REGEX = /^\\*\\/\\d+$/;\nconst COMPONENTS: {\n limit: number;\n zeroBasedIndices: boolean;\n functionName: (typeof DATE_FUNCTIONS)[number];\n}[] = [\n { limit: 60, zeroBasedIndices: true, functionName: 'getSeconds' },\n { limit: 60, zeroBasedIndices: true, functionName: 'getMinutes' },\n { limit: 24, zeroBasedIndices: true, functionName: 'getHours' },\n { limit: 31, zeroBasedIndices: false, functionName: 'getDate' },\n { limit: 12, zeroBasedIndices: false, functionName: 'getMonth' },\n { limit: 7, zeroBasedIndices: true, functionName: 'getDay' },\n];\n\nconst shift = (component: string, index: number, date: Date) => {\n if (component === '*') {\n return '*';\n }\n\n const { limit, zeroBasedIndices, functionName } = COMPONENTS[index];\n const offset = +!zeroBasedIndices;\n const currentValue = date[functionName]();\n\n if (INTEGER_REGEX.test(component)) {\n return ((Number.parseInt(component, 10) + currentValue) % limit) + offset;\n }\n\n if (STEP_REGEX.test(component)) {\n const [, step] = component.split('/');\n const frequency = Math.floor(limit / Number(step));\n const list = Array.from({ length: frequency }, (_, index) => index * Number(step));\n return list.map((value) => ((value + currentValue) % limit) + offset).sort((a, b) => a - b);\n }\n\n // Unsupported syntax\n return component;\n};\n\n/**\n * Simulate an interval by shifting a cron expression using the specified date.\n * @param {string} rule A cron expression you want to shift.\n * @param {Date} date The date that's gonna be used as the start of the \"interval\", it defaults to now.\n * @returns The shifted cron expression.\n */\nexport const shiftCronExpression = (rule: string, date = new Date()) => {\n const components = rule.trim().split(' ').filter(negate(isEmpty));\n const secondsIncluded = components.length === 6;\n return components\n .map((component, index) => shift(component, secondsIncluded ? index : index + 1, date))\n .join(' ');\n};\n"],"names":["INTEGER_REGEX","STEP_REGEX","COMPONENTS","limit","zeroBasedIndices","functionName","shift","component","index","date","offset","currentValue","test","Number","parseInt","step","split","frequency","Math","floor","list","Array","from","length","_","map","value","sort","a","b","shiftCronExpression","rule","Date","components","trim","filter","negate","isEmpty","secondsIncluded","join"],"mappings":";;AAWA,MAAMA,aAAAA,GAAgB,OAAA;AACtB,MAAMC,UAAAA,GAAa,WAAA;AACnB,MAAMC,UAAAA,GAIA;AACJ,IAAA;QAAEC,KAAAA,EAAO,EAAA;QAAIC,gBAAAA,EAAkB,IAAA;QAAMC,YAAAA,EAAc;AAAa,KAAA;AAChE,IAAA;QAAEF,KAAAA,EAAO,EAAA;QAAIC,gBAAAA,EAAkB,IAAA;QAAMC,YAAAA,EAAc;AAAa,KAAA;AAChE,IAAA;QAAEF,KAAAA,EAAO,EAAA;QAAIC,gBAAAA,EAAkB,IAAA;QAAMC,YAAAA,EAAc;AAAW,KAAA;AAC9D,IAAA;QAAEF,KAAAA,EAAO,EAAA;QAAIC,gBAAAA,EAAkB,KAAA;QAAOC,YAAAA,EAAc;AAAU,KAAA;AAC9D,IAAA;QAAEF,KAAAA,EAAO,EAAA;QAAIC,gBAAAA,EAAkB,KAAA;QAAOC,YAAAA,EAAc;AAAW,KAAA;AAC/D,IAAA;QAAEF,KAAAA,EAAO,CAAA;QAAGC,gBAAAA,EAAkB,IAAA;QAAMC,YAAAA,EAAc;AAAS;AAC5D,CAAA;AAED,MAAMC,KAAAA,GAAQ,CAACC,SAAAA,EAAmBC,KAAAA,EAAeC,IAAAA,GAAAA;AAC/C,IAAA,IAAIF,cAAc,GAAA,EAAK;QACrB,OAAO,GAAA;AACT,IAAA;IAEA,MAAM,EAAEJ,KAAK,EAAEC,gBAAgB,EAAEC,YAAY,EAAE,GAAGH,UAAU,CAACM,KAAAA,CAAM;IACnE,MAAME,MAAAA,GAAS,CAAC,CAACN,gBAAAA;IACjB,MAAMO,YAAAA,GAAeF,IAAI,CAACJ,YAAAA,CAAa,EAAA;IAEvC,IAAIL,aAAAA,CAAcY,IAAI,CAACL,SAAAA,CAAAA,EAAY;QACjC,OAASM,CAAAA,MAAAA,CAAOC,QAAQ,CAACP,SAAAA,EAAW,EAAA,CAAA,GAAMI,YAAW,IAAKR,KAAAA,GAASO,MAAAA;AACrE,IAAA;IAEA,IAAIT,UAAAA,CAAWW,IAAI,CAACL,SAAAA,CAAAA,EAAY;AAC9B,QAAA,MAAM,GAAGQ,IAAAA,CAAK,GAAGR,SAAAA,CAAUS,KAAK,CAAC,GAAA,CAAA;AACjC,QAAA,MAAMC,SAAAA,GAAYC,IAAAA,CAAKC,KAAK,CAAChB,QAAQU,MAAAA,CAAOE,IAAAA,CAAAA,CAAAA;QAC5C,MAAMK,IAAAA,GAAOC,KAAAA,CAAMC,IAAI,CAAC;YAAEC,MAAAA,EAAQN;AAAU,SAAA,EAAG,CAACO,CAAAA,EAAGhB,KAAAA,GAAUA,KAAAA,GAAQK,MAAAA,CAAOE,IAAAA,CAAAA,CAAAA;AAC5E,QAAA,OAAOK,KAAKK,GAAG,CAAC,CAACC,KAAAA,GAAU,CAAEA,KAAAA,GAAQf,YAAW,IAAKR,QAASO,MAAAA,CAAAA,CAAQiB,IAAI,CAAC,CAACC,CAAAA,EAAGC,IAAMD,CAAAA,GAAIC,CAAAA,CAAAA;AAC3F,IAAA;;IAGA,OAAOtB,SAAAA;AACT,CAAA;AAEA;;;;;AAKC,IACM,MAAMuB,mBAAAA,GAAsB,CAACC,IAAAA,EAActB,IAAAA,GAAO,IAAIuB,IAAAA,EAAM,GAAA;IACjE,MAAMC,UAAAA,GAAaF,KAAKG,IAAI,EAAA,CAAGlB,KAAK,CAAC,GAAA,CAAA,CAAKmB,MAAM,CAACC,MAAAA,CAAOC,OAAAA,CAAAA,CAAAA;IACxD,MAAMC,eAAAA,GAAkBL,UAAAA,CAAWV,MAAM,KAAK,CAAA;AAC9C,IAAA,OAAOU,UAAAA,CACJR,GAAG,CAAC,CAAClB,WAAWC,KAAAA,GAAUF,KAAAA,CAAMC,SAAAA,EAAW+B,eAAAA,GAAkB9B,KAAAA,GAAQA,KAAAA,GAAQ,CAAA,EAAGC,IAAAA,CAAAA,CAAAA,CAChF8B,IAAI,CAAC,GAAA,CAAA;AACV;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"filepath-to-prop-path.d.ts","sourceRoot":"","sources":["../../src/utils/filepath-to-prop-path.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,WAAW,MAAM,EACjB,mBAAkB,OAAc,KAC/B,MAAM,EAqBR,CAAC"}
1
+ {"version":3,"file":"filepath-to-prop-path.d.ts","sourceRoot":"","sources":["../../src/utils/filepath-to-prop-path.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,WAAW,MAAM,EACjB,mBAAkB,OAAc,KAC/B,MAAM,EAaR,CAAC"}
@@ -1,26 +1,19 @@
1
1
  'use strict';
2
2
 
3
3
  var path = require('node:path');
4
- var fp = require('lodash/fp');
4
+ var _ = require('lodash');
5
5
 
6
6
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
7
 
8
8
  var path__default = /*#__PURE__*/_interopDefault(path);
9
- var fp__default = /*#__PURE__*/_interopDefault(fp);
10
9
 
11
10
  /**
12
11
  * Returns a path (as an array) from a file path
13
12
  */ const filePathToPropPath = (entryPath, useFileNameAsKey = true)=>{
14
- const transform = fp__default.default.pipe(// Remove the relative path prefixes: './' for posix (and some win32) and ".\" for win32
15
- removeRelativePrefix, // Remove the path metadata and extensions
16
- fp__default.default.replace(/(\.settings|\.json|\.js)/g, ''), // Transform to lowercase
17
- // Note: We're using fp.toLower instead of fp.lowercase as the latest removes special characters such as "/"
18
- fp__default.default.toLower, // Split the cleaned path by matching every possible separator (either "/" or "\" depending on the OS)
19
- fp__default.default.split(new RegExp(`[\\${path__default.default.win32.sep}|${path__default.default.posix.sep}]`, 'g')), // Make sure to remove leading '.' from the different path parts
20
- fp__default.default.map(fp__default.default.trimCharsStart('.')), // join + split in case some '.' characters are still present in different parts of the path
21
- fp__default.default.join('.'), fp__default.default.split('.'), // Remove the last portion of the path array if the file name shouldn't be used as a key
22
- useFileNameAsKey ? fp__default.default.identity : fp__default.default.slice(0, -1));
23
- return transform(entryPath);
13
+ const cleanPath = removeRelativePrefix(entryPath).replace(/(\.settings|\.json|\.js)/g, '').toLowerCase();
14
+ const parts = cleanPath.split(new RegExp(`[\\${path__default.default.win32.sep}|${path__default.default.posix.sep}]`, 'g')).map((part)=>_.trimStart(part, '.'))// Dots can also delimit properties within a path segment.
15
+ .join('.').split('.');
16
+ return useFileNameAsKey ? parts : parts.slice(0, -1);
24
17
  };
25
18
  const removeRelativePrefix = (filePath)=>{
26
19
  return filePath.startsWith(`.${path__default.default.win32.sep}`) || filePath.startsWith(`.${path__default.default.posix.sep}`) ? filePath.slice(2) : filePath;
@@ -1 +1 @@
1
- {"version":3,"file":"filepath-to-prop-path.js","sources":["../../src/utils/filepath-to-prop-path.ts"],"sourcesContent":["import path from 'node:path';\nimport fp from 'lodash/fp';\n\n/**\n * Returns a path (as an array) from a file path\n */\nexport const filePathToPropPath = (\n entryPath: string,\n useFileNameAsKey: boolean = true\n): string[] => {\n const transform = fp.pipe(\n // Remove the relative path prefixes: './' for posix (and some win32) and \".\\\" for win32\n removeRelativePrefix,\n // Remove the path metadata and extensions\n fp.replace(/(\\.settings|\\.json|\\.js)/g, ''),\n // Transform to lowercase\n // Note: We're using fp.toLower instead of fp.lowercase as the latest removes special characters such as \"/\"\n fp.toLower,\n // Split the cleaned path by matching every possible separator (either \"/\" or \"\\\" depending on the OS)\n fp.split(new RegExp(`[\\\\${path.win32.sep}|${path.posix.sep}]`, 'g')),\n // Make sure to remove leading '.' from the different path parts\n fp.map(fp.trimCharsStart('.')),\n // join + split in case some '.' characters are still present in different parts of the path\n fp.join('.'),\n fp.split('.'),\n // Remove the last portion of the path array if the file name shouldn't be used as a key\n useFileNameAsKey ? fp.identity : fp.slice(0, -1)\n );\n\n return transform(entryPath) as string[];\n};\n\nconst removeRelativePrefix = (filePath: string) => {\n return filePath.startsWith(`.${path.win32.sep}`) || filePath.startsWith(`.${path.posix.sep}`)\n ? filePath.slice(2)\n : filePath;\n};\n"],"names":["filePathToPropPath","entryPath","useFileNameAsKey","transform","fp","pipe","removeRelativePrefix","replace","toLower","split","RegExp","path","win32","sep","posix","map","trimCharsStart","join","identity","slice","filePath","startsWith"],"mappings":";;;;;;;;;;AAGA;;AAEC,IACM,MAAMA,kBAAAA,GAAqB,CAChCC,SAAAA,EACAC,mBAA4B,IAAI,GAAA;AAEhC,IAAA,MAAMC,SAAAA,GAAYC,mBAAAA,CAAGC,IAAI;AAEvBC,IAAAA,oBAAAA;AAEAF,IAAAA,mBAAAA,CAAGG,OAAO,CAAC,2BAAA,EAA6B,EAAA,CAAA;;IAGxCH,mBAAAA,CAAGI,OAAO;IAEVJ,mBAAAA,CAAGK,KAAK,CAAC,IAAIC,MAAAA,CAAO,CAAC,GAAG,EAAEC,qBAAAA,CAAKC,KAAK,CAACC,GAAG,CAAC,CAAC,EAAEF,qBAAAA,CAAKG,KAAK,CAACD,GAAG,CAAC,CAAC,CAAC,EAAE,GAAA,CAAA,CAAA;AAE/DT,IAAAA,mBAAAA,CAAGW,GAAG,CAACX,mBAAAA,CAAGY,cAAc,CAAC;AAEzBZ,IAAAA,mBAAAA,CAAGa,IAAI,CAAC,GAAA,CAAA,EACRb,oBAAGK,KAAK,CAAC;AAETP,IAAAA,gBAAAA,GAAmBE,oBAAGc,QAAQ,GAAGd,oBAAGe,KAAK,CAAC,GAAG,EAAC,CAAA,CAAA;AAGhD,IAAA,OAAOhB,SAAAA,CAAUF,SAAAA,CAAAA;AACnB;AAEA,MAAMK,uBAAuB,CAACc,QAAAA,GAAAA;IAC5B,OAAOA,QAAAA,CAASC,UAAU,CAAC,CAAC,CAAC,EAAEV,qBAAAA,CAAKC,KAAK,CAACC,GAAG,CAAA,CAAE,CAAA,IAAKO,QAAAA,CAASC,UAAU,CAAC,CAAC,CAAC,EAAEV,qBAAAA,CAAKG,KAAK,CAACD,GAAG,CAAA,CAAE,CAAA,GACxFO,QAAAA,CAASD,KAAK,CAAC,CAAA,CAAA,GACfC,QAAAA;AACN,CAAA;;;;"}
1
+ {"version":3,"file":"filepath-to-prop-path.js","sources":["../../src/utils/filepath-to-prop-path.ts"],"sourcesContent":["import path from 'node:path';\nimport { trimStart } from 'lodash';\n\n/**\n * Returns a path (as an array) from a file path\n */\nexport const filePathToPropPath = (\n entryPath: string,\n useFileNameAsKey: boolean = true\n): string[] => {\n const cleanPath = removeRelativePrefix(entryPath)\n .replace(/(\\.settings|\\.json|\\.js)/g, '')\n .toLowerCase();\n\n const parts = cleanPath\n .split(new RegExp(`[\\\\${path.win32.sep}|${path.posix.sep}]`, 'g'))\n .map((part) => trimStart(part, '.'))\n // Dots can also delimit properties within a path segment.\n .join('.')\n .split('.');\n\n return useFileNameAsKey ? parts : parts.slice(0, -1);\n};\n\nconst removeRelativePrefix = (filePath: string) => {\n return filePath.startsWith(`.${path.win32.sep}`) || filePath.startsWith(`.${path.posix.sep}`)\n ? filePath.slice(2)\n : filePath;\n};\n"],"names":["filePathToPropPath","entryPath","useFileNameAsKey","cleanPath","removeRelativePrefix","replace","toLowerCase","parts","split","RegExp","path","win32","sep","posix","map","part","trimStart","join","slice","filePath","startsWith"],"mappings":";;;;;;;;;AAGA;;AAEC,IACM,MAAMA,kBAAAA,GAAqB,CAChCC,SAAAA,EACAC,mBAA4B,IAAI,GAAA;AAEhC,IAAA,MAAMC,YAAYC,oBAAAA,CAAqBH,SAAAA,CAAAA,CACpCI,OAAO,CAAC,2BAAA,EAA6B,IACrCC,WAAW,EAAA;AAEd,IAAA,MAAMC,KAAAA,GAAQJ,SAAAA,CACXK,KAAK,CAAC,IAAIC,MAAAA,CAAO,CAAC,GAAG,EAAEC,qBAAAA,CAAKC,KAAK,CAACC,GAAG,CAAC,CAAC,EAAEF,qBAAAA,CAAKG,KAAK,CAACD,GAAG,CAAC,CAAC,CAAC,EAAE,GAAA,CAAA,CAAA,CAC5DE,GAAG,CAAC,CAACC,IAAAA,GAASC,WAAAA,CAAUD,IAAAA,EAAM,KAC/B;KACCE,IAAI,CAAC,GAAA,CAAA,CACLT,KAAK,CAAC,GAAA,CAAA;AAET,IAAA,OAAON,mBAAmBK,KAAAA,GAAQA,KAAAA,CAAMW,KAAK,CAAC,GAAG,EAAC,CAAA;AACpD;AAEA,MAAMd,uBAAuB,CAACe,QAAAA,GAAAA;IAC5B,OAAOA,QAAAA,CAASC,UAAU,CAAC,CAAC,CAAC,EAAEV,qBAAAA,CAAKC,KAAK,CAACC,GAAG,CAAA,CAAE,CAAA,IAAKO,QAAAA,CAASC,UAAU,CAAC,CAAC,CAAC,EAAEV,qBAAAA,CAAKG,KAAK,CAACD,GAAG,CAAA,CAAE,CAAA,GACxFO,QAAAA,CAASD,KAAK,CAAC,CAAA,CAAA,GACfC,QAAAA;AACN,CAAA;;;;"}
@@ -1,19 +1,13 @@
1
1
  import path from 'node:path';
2
- import fp from 'lodash/fp';
2
+ import { trimStart } from 'lodash';
3
3
 
4
4
  /**
5
5
  * Returns a path (as an array) from a file path
6
6
  */ const filePathToPropPath = (entryPath, useFileNameAsKey = true)=>{
7
- const transform = fp.pipe(// Remove the relative path prefixes: './' for posix (and some win32) and ".\" for win32
8
- removeRelativePrefix, // Remove the path metadata and extensions
9
- fp.replace(/(\.settings|\.json|\.js)/g, ''), // Transform to lowercase
10
- // Note: We're using fp.toLower instead of fp.lowercase as the latest removes special characters such as "/"
11
- fp.toLower, // Split the cleaned path by matching every possible separator (either "/" or "\" depending on the OS)
12
- fp.split(new RegExp(`[\\${path.win32.sep}|${path.posix.sep}]`, 'g')), // Make sure to remove leading '.' from the different path parts
13
- fp.map(fp.trimCharsStart('.')), // join + split in case some '.' characters are still present in different parts of the path
14
- fp.join('.'), fp.split('.'), // Remove the last portion of the path array if the file name shouldn't be used as a key
15
- useFileNameAsKey ? fp.identity : fp.slice(0, -1));
16
- return transform(entryPath);
7
+ const cleanPath = removeRelativePrefix(entryPath).replace(/(\.settings|\.json|\.js)/g, '').toLowerCase();
8
+ const parts = cleanPath.split(new RegExp(`[\\${path.win32.sep}|${path.posix.sep}]`, 'g')).map((part)=>trimStart(part, '.'))// Dots can also delimit properties within a path segment.
9
+ .join('.').split('.');
10
+ return useFileNameAsKey ? parts : parts.slice(0, -1);
17
11
  };
18
12
  const removeRelativePrefix = (filePath)=>{
19
13
  return filePath.startsWith(`.${path.win32.sep}`) || filePath.startsWith(`.${path.posix.sep}`) ? filePath.slice(2) : filePath;
@@ -1 +1 @@
1
- {"version":3,"file":"filepath-to-prop-path.mjs","sources":["../../src/utils/filepath-to-prop-path.ts"],"sourcesContent":["import path from 'node:path';\nimport fp from 'lodash/fp';\n\n/**\n * Returns a path (as an array) from a file path\n */\nexport const filePathToPropPath = (\n entryPath: string,\n useFileNameAsKey: boolean = true\n): string[] => {\n const transform = fp.pipe(\n // Remove the relative path prefixes: './' for posix (and some win32) and \".\\\" for win32\n removeRelativePrefix,\n // Remove the path metadata and extensions\n fp.replace(/(\\.settings|\\.json|\\.js)/g, ''),\n // Transform to lowercase\n // Note: We're using fp.toLower instead of fp.lowercase as the latest removes special characters such as \"/\"\n fp.toLower,\n // Split the cleaned path by matching every possible separator (either \"/\" or \"\\\" depending on the OS)\n fp.split(new RegExp(`[\\\\${path.win32.sep}|${path.posix.sep}]`, 'g')),\n // Make sure to remove leading '.' from the different path parts\n fp.map(fp.trimCharsStart('.')),\n // join + split in case some '.' characters are still present in different parts of the path\n fp.join('.'),\n fp.split('.'),\n // Remove the last portion of the path array if the file name shouldn't be used as a key\n useFileNameAsKey ? fp.identity : fp.slice(0, -1)\n );\n\n return transform(entryPath) as string[];\n};\n\nconst removeRelativePrefix = (filePath: string) => {\n return filePath.startsWith(`.${path.win32.sep}`) || filePath.startsWith(`.${path.posix.sep}`)\n ? filePath.slice(2)\n : filePath;\n};\n"],"names":["filePathToPropPath","entryPath","useFileNameAsKey","transform","fp","pipe","removeRelativePrefix","replace","toLower","split","RegExp","path","win32","sep","posix","map","trimCharsStart","join","identity","slice","filePath","startsWith"],"mappings":";;;AAGA;;AAEC,IACM,MAAMA,kBAAAA,GAAqB,CAChCC,SAAAA,EACAC,mBAA4B,IAAI,GAAA;AAEhC,IAAA,MAAMC,SAAAA,GAAYC,EAAAA,CAAGC,IAAI;AAEvBC,IAAAA,oBAAAA;AAEAF,IAAAA,EAAAA,CAAGG,OAAO,CAAC,2BAAA,EAA6B,EAAA,CAAA;;IAGxCH,EAAAA,CAAGI,OAAO;IAEVJ,EAAAA,CAAGK,KAAK,CAAC,IAAIC,MAAAA,CAAO,CAAC,GAAG,EAAEC,IAAAA,CAAKC,KAAK,CAACC,GAAG,CAAC,CAAC,EAAEF,IAAAA,CAAKG,KAAK,CAACD,GAAG,CAAC,CAAC,CAAC,EAAE,GAAA,CAAA,CAAA;AAE/DT,IAAAA,EAAAA,CAAGW,GAAG,CAACX,EAAAA,CAAGY,cAAc,CAAC;AAEzBZ,IAAAA,EAAAA,CAAGa,IAAI,CAAC,GAAA,CAAA,EACRb,GAAGK,KAAK,CAAC;AAETP,IAAAA,gBAAAA,GAAmBE,GAAGc,QAAQ,GAAGd,GAAGe,KAAK,CAAC,GAAG,EAAC,CAAA,CAAA;AAGhD,IAAA,OAAOhB,SAAAA,CAAUF,SAAAA,CAAAA;AACnB;AAEA,MAAMK,uBAAuB,CAACc,QAAAA,GAAAA;IAC5B,OAAOA,QAAAA,CAASC,UAAU,CAAC,CAAC,CAAC,EAAEV,IAAAA,CAAKC,KAAK,CAACC,GAAG,CAAA,CAAE,CAAA,IAAKO,QAAAA,CAASC,UAAU,CAAC,CAAC,CAAC,EAAEV,IAAAA,CAAKG,KAAK,CAACD,GAAG,CAAA,CAAE,CAAA,GACxFO,QAAAA,CAASD,KAAK,CAAC,CAAA,CAAA,GACfC,QAAAA;AACN,CAAA;;;;"}
1
+ {"version":3,"file":"filepath-to-prop-path.mjs","sources":["../../src/utils/filepath-to-prop-path.ts"],"sourcesContent":["import path from 'node:path';\nimport { trimStart } from 'lodash';\n\n/**\n * Returns a path (as an array) from a file path\n */\nexport const filePathToPropPath = (\n entryPath: string,\n useFileNameAsKey: boolean = true\n): string[] => {\n const cleanPath = removeRelativePrefix(entryPath)\n .replace(/(\\.settings|\\.json|\\.js)/g, '')\n .toLowerCase();\n\n const parts = cleanPath\n .split(new RegExp(`[\\\\${path.win32.sep}|${path.posix.sep}]`, 'g'))\n .map((part) => trimStart(part, '.'))\n // Dots can also delimit properties within a path segment.\n .join('.')\n .split('.');\n\n return useFileNameAsKey ? parts : parts.slice(0, -1);\n};\n\nconst removeRelativePrefix = (filePath: string) => {\n return filePath.startsWith(`.${path.win32.sep}`) || filePath.startsWith(`.${path.posix.sep}`)\n ? filePath.slice(2)\n : filePath;\n};\n"],"names":["filePathToPropPath","entryPath","useFileNameAsKey","cleanPath","removeRelativePrefix","replace","toLowerCase","parts","split","RegExp","path","win32","sep","posix","map","part","trimStart","join","slice","filePath","startsWith"],"mappings":";;;AAGA;;AAEC,IACM,MAAMA,kBAAAA,GAAqB,CAChCC,SAAAA,EACAC,mBAA4B,IAAI,GAAA;AAEhC,IAAA,MAAMC,YAAYC,oBAAAA,CAAqBH,SAAAA,CAAAA,CACpCI,OAAO,CAAC,2BAAA,EAA6B,IACrCC,WAAW,EAAA;AAEd,IAAA,MAAMC,KAAAA,GAAQJ,SAAAA,CACXK,KAAK,CAAC,IAAIC,MAAAA,CAAO,CAAC,GAAG,EAAEC,IAAAA,CAAKC,KAAK,CAACC,GAAG,CAAC,CAAC,EAAEF,IAAAA,CAAKG,KAAK,CAACD,GAAG,CAAC,CAAC,CAAC,EAAE,GAAA,CAAA,CAAA,CAC5DE,GAAG,CAAC,CAACC,IAAAA,GAASC,SAAAA,CAAUD,IAAAA,EAAM,KAC/B;KACCE,IAAI,CAAC,GAAA,CAAA,CACLT,KAAK,CAAC,GAAA,CAAA;AAET,IAAA,OAAON,mBAAmBK,KAAAA,GAAQA,KAAAA,CAAMW,KAAK,CAAC,GAAG,EAAC,CAAA;AACpD;AAEA,MAAMd,uBAAuB,CAACe,QAAAA,GAAAA;IAC5B,OAAOA,QAAAA,CAASC,UAAU,CAAC,CAAC,CAAC,EAAEV,IAAAA,CAAKC,KAAK,CAACC,GAAG,CAAA,CAAE,CAAA,IAAKO,QAAAA,CAASC,UAAU,CAAC,CAAC,CAAC,EAAEV,IAAAA,CAAKG,KAAK,CAACD,GAAG,CAAA,CAAE,CAAA,GACxFO,QAAAA,CAASD,KAAK,CAAC,CAAA,CAAA,GACfC,QAAAA;AACN,CAAA;;;;"}
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var _ = require('lodash');
4
4
 
5
5
  /**
6
6
  * Test if the strapi application is considered as initialized (1st user has been created)
7
7
  */ const isInitialized = async (strapi)=>{
8
8
  try {
9
- if (fp.isEmpty(strapi.admin)) {
9
+ if (_.isEmpty(strapi.admin)) {
10
10
  return true;
11
11
  }
12
12
  // test if there is at least one admin
@@ -15,7 +15,7 @@ var fp = require('lodash/fp');
15
15
  'id'
16
16
  ]
17
17
  });
18
- return !fp.isNil(anyAdministrator);
18
+ return anyAdministrator != null;
19
19
  } catch (err) {
20
20
  strapi.stopWithError(err);
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"is-initialized.js","sources":["../../src/utils/is-initialized.ts"],"sourcesContent":["import { isEmpty, isNil } from 'lodash/fp';\n\nimport type { Core } from '@strapi/types';\n\n/**\n * Test if the strapi application is considered as initialized (1st user has been created)\n */\nexport const isInitialized = async (strapi: Core.Strapi): Promise<boolean> => {\n try {\n if (isEmpty(strapi.admin)) {\n return true;\n }\n\n // test if there is at least one admin\n const anyAdministrator = await strapi.db.query('admin::user').findOne({ select: ['id'] });\n\n return !isNil(anyAdministrator);\n } catch (err) {\n strapi.stopWithError(err);\n }\n};\n"],"names":["isInitialized","strapi","isEmpty","admin","anyAdministrator","db","query","findOne","select","isNil","err","stopWithError"],"mappings":";;;;AAIA;;IAGO,MAAMA,aAAAA,GAAgB,OAAOC,MAAAA,GAAAA;IAClC,IAAI;QACF,IAAIC,UAAAA,CAAQD,MAAAA,CAAOE,KAAK,CAAA,EAAG;YACzB,OAAO,IAAA;AACT,QAAA;;QAGA,MAAMC,gBAAAA,GAAmB,MAAMH,MAAAA,CAAOI,EAAE,CAACC,KAAK,CAAC,aAAA,CAAA,CAAeC,OAAO,CAAC;YAAEC,MAAAA,EAAQ;AAAC,gBAAA;AAAK;AAAC,SAAA,CAAA;AAEvF,QAAA,OAAO,CAACC,QAAAA,CAAML,gBAAAA,CAAAA;AAChB,IAAA,CAAA,CAAE,OAAOM,GAAAA,EAAK;AACZT,QAAAA,MAAAA,CAAOU,aAAa,CAACD,GAAAA,CAAAA;AACvB,IAAA;AACF;;;;"}
1
+ {"version":3,"file":"is-initialized.js","sources":["../../src/utils/is-initialized.ts"],"sourcesContent":["import { isEmpty } from 'lodash';\n\nimport type { Core } from '@strapi/types';\n\n/**\n * Test if the strapi application is considered as initialized (1st user has been created)\n */\nexport const isInitialized = async (strapi: Core.Strapi): Promise<boolean> => {\n try {\n if (isEmpty(strapi.admin)) {\n return true;\n }\n\n // test if there is at least one admin\n const anyAdministrator = await strapi.db.query('admin::user').findOne({ select: ['id'] });\n\n return anyAdministrator != null;\n } catch (err) {\n strapi.stopWithError(err);\n }\n};\n"],"names":["isInitialized","strapi","isEmpty","admin","anyAdministrator","db","query","findOne","select","err","stopWithError"],"mappings":";;;;AAIA;;IAGO,MAAMA,aAAAA,GAAgB,OAAOC,MAAAA,GAAAA;IAClC,IAAI;QACF,IAAIC,SAAAA,CAAQD,MAAAA,CAAOE,KAAK,CAAA,EAAG;YACzB,OAAO,IAAA;AACT,QAAA;;QAGA,MAAMC,gBAAAA,GAAmB,MAAMH,MAAAA,CAAOI,EAAE,CAACC,KAAK,CAAC,aAAA,CAAA,CAAeC,OAAO,CAAC;YAAEC,MAAAA,EAAQ;AAAC,gBAAA;AAAK;AAAC,SAAA,CAAA;AAEvF,QAAA,OAAOJ,gBAAAA,IAAoB,IAAA;AAC7B,IAAA,CAAA,CAAE,OAAOK,GAAAA,EAAK;AACZR,QAAAA,MAAAA,CAAOS,aAAa,CAACD,GAAAA,CAAAA;AACvB,IAAA;AACF;;;;"}
@@ -1,4 +1,4 @@
1
- import { isEmpty, isNil } from 'lodash/fp';
1
+ import { isEmpty } from 'lodash';
2
2
 
3
3
  /**
4
4
  * Test if the strapi application is considered as initialized (1st user has been created)
@@ -13,7 +13,7 @@ import { isEmpty, isNil } from 'lodash/fp';
13
13
  'id'
14
14
  ]
15
15
  });
16
- return !isNil(anyAdministrator);
16
+ return anyAdministrator != null;
17
17
  } catch (err) {
18
18
  strapi.stopWithError(err);
19
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"is-initialized.mjs","sources":["../../src/utils/is-initialized.ts"],"sourcesContent":["import { isEmpty, isNil } from 'lodash/fp';\n\nimport type { Core } from '@strapi/types';\n\n/**\n * Test if the strapi application is considered as initialized (1st user has been created)\n */\nexport const isInitialized = async (strapi: Core.Strapi): Promise<boolean> => {\n try {\n if (isEmpty(strapi.admin)) {\n return true;\n }\n\n // test if there is at least one admin\n const anyAdministrator = await strapi.db.query('admin::user').findOne({ select: ['id'] });\n\n return !isNil(anyAdministrator);\n } catch (err) {\n strapi.stopWithError(err);\n }\n};\n"],"names":["isInitialized","strapi","isEmpty","admin","anyAdministrator","db","query","findOne","select","isNil","err","stopWithError"],"mappings":";;AAIA;;IAGO,MAAMA,aAAAA,GAAgB,OAAOC,MAAAA,GAAAA;IAClC,IAAI;QACF,IAAIC,OAAAA,CAAQD,MAAAA,CAAOE,KAAK,CAAA,EAAG;YACzB,OAAO,IAAA;AACT,QAAA;;QAGA,MAAMC,gBAAAA,GAAmB,MAAMH,MAAAA,CAAOI,EAAE,CAACC,KAAK,CAAC,aAAA,CAAA,CAAeC,OAAO,CAAC;YAAEC,MAAAA,EAAQ;AAAC,gBAAA;AAAK;AAAC,SAAA,CAAA;AAEvF,QAAA,OAAO,CAACC,KAAAA,CAAML,gBAAAA,CAAAA;AAChB,IAAA,CAAA,CAAE,OAAOM,GAAAA,EAAK;AACZT,QAAAA,MAAAA,CAAOU,aAAa,CAACD,GAAAA,CAAAA;AACvB,IAAA;AACF;;;;"}
1
+ {"version":3,"file":"is-initialized.mjs","sources":["../../src/utils/is-initialized.ts"],"sourcesContent":["import { isEmpty } from 'lodash';\n\nimport type { Core } from '@strapi/types';\n\n/**\n * Test if the strapi application is considered as initialized (1st user has been created)\n */\nexport const isInitialized = async (strapi: Core.Strapi): Promise<boolean> => {\n try {\n if (isEmpty(strapi.admin)) {\n return true;\n }\n\n // test if there is at least one admin\n const anyAdministrator = await strapi.db.query('admin::user').findOne({ select: ['id'] });\n\n return anyAdministrator != null;\n } catch (err) {\n strapi.stopWithError(err);\n }\n};\n"],"names":["isInitialized","strapi","isEmpty","admin","anyAdministrator","db","query","findOne","select","err","stopWithError"],"mappings":";;AAIA;;IAGO,MAAMA,aAAAA,GAAgB,OAAOC,MAAAA,GAAAA;IAClC,IAAI;QACF,IAAIC,OAAAA,CAAQD,MAAAA,CAAOE,KAAK,CAAA,EAAG;YACzB,OAAO,IAAA;AACT,QAAA;;QAGA,MAAMC,gBAAAA,GAAmB,MAAMH,MAAAA,CAAOI,EAAE,CAACC,KAAK,CAAC,aAAA,CAAA,CAAeC,OAAO,CAAC;YAAEC,MAAAA,EAAQ;AAAC,gBAAA;AAAK;AAAC,SAAA,CAAA;AAEvF,QAAA,OAAOJ,gBAAAA,IAAoB,IAAA;AAC7B,IAAA,CAAA,CAAE,OAAOK,GAAAA,EAAK;AACZR,QAAAA,MAAAA,CAAOS,aAAa,CAACD,GAAAA,CAAAA;AACvB,IAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"startup-logger.d.ts","sourceRoot":"","sources":["../../src/utils/startup-logger.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAoB1C,eAAO,MAAM,mBAAmB,GAAI,KAAK,IAAI,CAAC,MAAM;;;;yCAuFX;QAAE,aAAa,EAAE,OAAO,CAAA;KAAE;CAWlE,CAAC"}
1
+ {"version":3,"file":"startup-logger.d.ts","sourceRoot":"","sources":["../../src/utils/startup-logger.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAoB1C,eAAO,MAAM,mBAAmB,GAAI,KAAK,IAAI,CAAC,MAAM;;;;yCAuFX;QAAE,aAAa,EAAE,OAAO,CAAA;KAAE;CAWlE,CAAC"}